This commit is contained in:
BA7LZD 2020-05-25 16:56:17 +08:00
parent fe1d0809ee
commit 02ed697b71
12 changed files with 222 additions and 25 deletions

13
pom.xml
View File

@ -66,6 +66,19 @@
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>com.tencentcloudapi</groupId>
<artifactId>tencentcloud-sdk-java</artifactId>
<!-- 请到https://search.maven.org/search?q=tencentcloud-sdk-java查询最新版本 -->
<version>3.1.37</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -4,10 +4,10 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication @SpringBootApplication
public class StuserverApplication { public class SduServerApplication {
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(StuserverApplication.class, args); SpringApplication.run(SduServerApplication.class, args);
} }
} }

View File

@ -0,0 +1,55 @@
package com.yuxihan;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.sms.v20190711.SmsClient;
import com.tencentcloudapi.sms.v20190711.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20190711.models.SendSmsResponse;
/**
* 发送验证码
*/
public class SendSms {
public static final String SECRET_ID = "AKIDwfARTHDAE4e4GE7XrwnOltlPr54rJgjW";
public static final String SECRET_KEY = "jGZfbJn34qQmuoTu75oNioeHfplSwCDy";
public static void main(String[] args) {
try {
Credential cred = new Credential(SECRET_ID, SECRET_KEY);
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint("sms.tencentcloudapi.com");
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
SmsClient client = new SmsClient(cred, "ap-guangzhou-open", clientProfile);
/* String params = "{\"PhoneNumberSet\":[\"+8613262911437\"],\"TemplateID\":\"574746\",\"Sign\":\"yuxihan网\",\"TemplateParamSet\":[\"987654\",\"30\"],\"SmsSdkAppid\":\"1400349431\"}";
SendSmsRequest req = SendSmsRequest.fromJsonString(params, SendSmsRequest.class);
SendSmsResponse resp = client.SendSms(req);
*/
SendSmsRequest sendSmsRequest = new SendSmsRequest();
sendSmsRequest.setTemplateID("574746");
sendSmsRequest.setSign("yuxihan网");
sendSmsRequest.setSmsSdkAppid("1400349431");
sendSmsRequest.setPhoneNumberSet(new String[]{"+8613262911437"});
sendSmsRequest.setTemplateParamSet(new String[]{"123456","31"});
SendSmsResponse resp = client.SendSms(sendSmsRequest);
System.out.println(SendSmsRequest.toJsonString(resp));
} catch (TencentCloudSDKException e) {
System.out.println(e.toString());
}
}
}

View File

@ -2,11 +2,13 @@ package com.yuxihan.bean;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Map;
@Component @Component
public class ErrJson { public class ErrJson {
private String errCode; private String errCode;
private String errMsg; private String errMsg;
private String result; private Map<String,Object> result;
public String getErrCode() { public String getErrCode() {
return errCode; return errCode;
@ -24,11 +26,11 @@ public class ErrJson {
this.errMsg = errMsg; this.errMsg = errMsg;
} }
public String getResult() { public Map<String, Object> getResult() {
return result; return result;
} }
public void setResult(String result) { public void setResult(Map<String, Object> result) {
this.result = result; this.result = result;
} }
} }

View File

@ -12,6 +12,7 @@ public class User implements Serializable {
private String password; private String password;
private Date createdTime; private Date createdTime;
private Date updatedTime; private Date updatedTime;
private String nickname;
public Integer getId() { public Integer getId() {
return userId; return userId;
@ -52,4 +53,12 @@ public class User implements Serializable {
public void setUpdatedTime(Date updatedTime) { public void setUpdatedTime(Date updatedTime) {
this.updatedTime = updatedTime; this.updatedTime = updatedTime;
} }
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
} }

View File

@ -15,7 +15,27 @@ import java.util.List;
public class UserController { public class UserController {
@Autowired @Autowired
private UserServies userServies; private UserServies userServies;
@Autowired
private ErrJson errJson;
/**
* 修改昵称
* @param userName
* @param nickname
* @return
*/
@RequestMapping(value = "/updateName", produces = {"application/json; charset=UTF-8"}, method = RequestMethod.POST)
public ErrJson updateName(@RequestParam(value = "userName") String userName, @RequestParam(value = "nickname") String nickname,@RequestParam(value = "token") String token){
if (token.isEmpty()) {
return errJson;
}
if (1 == userServies.getTokenStatus(userName)) {
return errJson;
}
if (token.equals(userServies.getToken(userName))) {
return userServies.updateName(userName,nickname);
}
return errJson;
}
/** /**
* 登录 * 登录
* *

View File

@ -19,14 +19,18 @@ public interface UserMapper {
String getPsd(User user); String getPsd(User user);
int getUserId(User user); int getUserId(String userName);
void updateTokenStatus(Token token); void updateTokenStatus(Token token);
void insertToken(Token token); void insertToken(Token token);
String getToken(Token token); String getToken(Integer userId);
String getTokenStatus(Token token); int getTokenStatus(Integer userId);
User findUser(String userName);
void updateName(User user);
} }

View File

@ -8,8 +8,20 @@ import java.util.List;
public interface UserServies { public interface UserServies {
List<User> findAll(); List<User> findAll();
public ErrJson addUser(String userName, String password);
public int isExistsUser(String userName); ErrJson addUser(String userName, String password);
public String getPsd(String userName);
public ErrJson login(String userName,String password); int isExistsUser(String userName);
String getPsd(String userName);
ErrJson login(String userName, String password);
String getToken(String userName);
int getTokenStatus(String userName);
ErrJson updateName(String userName, String nickname);
int getUserId(String userName);
} }

View File

@ -1,6 +1,7 @@
package com.yuxihan.servies.impl; package com.yuxihan.servies.impl;
import com.yuxihan.bean.ErrJson; import com.yuxihan.bean.ErrJson;
import com.yuxihan.bean.Token;
import com.yuxihan.bean.User; import com.yuxihan.bean.User;
import com.yuxihan.mapper.UserMapper; import com.yuxihan.mapper.UserMapper;
import com.yuxihan.servies.UserServies; import com.yuxihan.servies.UserServies;
@ -9,13 +10,15 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import java.util.List; import java.util.*;
import java.util.UUID;
@Service @Service
public class UserServiesImpl implements UserServies { public class UserServiesImpl implements UserServies {
private static String SUCCESS = "0"; private static String SUCCESS = "0";
private static String FAIL = "1"; private static String FAIL = "1";
private static Integer ENABLE = 0;
private static Integer STOP = 1;
//注入接口代理对象 //注入接口代理对象
@Autowired @Autowired
private UserMapper userMapper; private UserMapper userMapper;
@ -25,10 +28,48 @@ public class UserServiesImpl implements UserServies {
private MD5Util md5Util; private MD5Util md5Util;
@Autowired @Autowired
private User user; private User user;
@Autowired
private Token token;
public List<User> findAll(){ public List<User> findAll(){
return userMapper.findAll(); return userMapper.findAll();
} }
/**
* 获取用户id
* @param userName
* @return
*/
@Override
public int getUserId(String userName) {
return userMapper.getUserId(userName);
}
/**
* 修改昵称
* @param userName
* @param nickname
* @return
*/
@Override
public ErrJson updateName(String userName, String nickname) {
errJson.setErrCode(FAIL);
errJson.setErrMsg("");
if (userName.isEmpty()) {
errJson.setErrMsg("用户名不能为空");
return errJson;
}
if (nickname.isEmpty()) {
errJson.setErrMsg("昵称不能为空");
return errJson;
}
user.setNickname(nickname);
user.setName(userName);
userMapper.updateName(user);
errJson.setErrCode(SUCCESS);
return errJson;
}
/** /**
* 登录 * 登录
* *
@ -44,7 +85,10 @@ public class UserServiesImpl implements UserServies {
return errJson; return errJson;
} }
if (userMapper.getPsd(user).equals(md5Util.string2MD5(password))) { if (userMapper.getPsd(user).equals(md5Util.string2MD5(password))) {
Map<String, Object> ticket = new HashMap<>();
ticket.put("token",addLoginTicket(userMapper.getUserId(userName)));
errJson.setErrCode(SUCCESS); errJson.setErrCode(SUCCESS);
errJson.setResult(ticket);
return errJson; return errJson;
} else { } else {
errJson.setErrMsg("密码错误"); errJson.setErrMsg("密码错误");
@ -52,6 +96,7 @@ public class UserServiesImpl implements UserServies {
} }
} }
/** /**
* 注册用户 * 注册用户
* @param userName,password * @param userName,password
@ -60,6 +105,8 @@ public class UserServiesImpl implements UserServies {
if (isNotEmpty(userName,password)) return errJson; if (isNotEmpty(userName,password)) return errJson;
user.setPassword( md5Util.string2MD5(password)); user.setPassword( md5Util.string2MD5(password));
user.setName(userName); user.setName(userName);
//默认昵称
user.setNickname("小胖猪"+Calendar.getInstance().getTimeInMillis());
if (0 == userMapper.isExistsUser(user)) { if (0 == userMapper.isExistsUser(user)) {
userMapper.addUser(user); userMapper.addUser(user);
errJson.setErrCode(SUCCESS); errJson.setErrCode(SUCCESS);
@ -80,6 +127,26 @@ public class UserServiesImpl implements UserServies {
return userMapper.isExistsUser(user); return userMapper.isExistsUser(user);
} }
/**
* 获取用户token状态
* @param userName
* @return
*/
@Override
public int getTokenStatus(String userName) {
return userMapper.getTokenStatus(userMapper.getUserId(userName));
}
/**
* 获取用户token
* @param userName
* @return
*/
@Override
public String getToken(String userName) {
return userMapper.getToken(userMapper.getUserId(userName));
}
/** /**
* 获取用户密码 * 获取用户密码
* @param userName * @param userName
@ -99,7 +166,6 @@ public class UserServiesImpl implements UserServies {
private boolean isNotEmpty(@RequestParam("userName") String userName, @RequestParam("password") String password) { private boolean isNotEmpty(@RequestParam("userName") String userName, @RequestParam("password") String password) {
errJson.setErrCode(FAIL); errJson.setErrCode(FAIL);
errJson.setErrMsg(""); errJson.setErrMsg("");
errJson.setResult("");
if (userName.isEmpty()) { if (userName.isEmpty()) {
errJson.setErrMsg("用户名不能为空"); errJson.setErrMsg("用户名不能为空");
return true; return true;
@ -111,6 +177,13 @@ public class UserServiesImpl implements UserServies {
return false; return false;
} }
private String addLoginTicket(int userId){
token.setUserToken(UUID.randomUUID().toString().replaceAll("_",""));
token.setUserId(userId);
token.setTokenStatus(ENABLE);
userMapper.insertToken(token);
return token.getUserToken();
}
} }

View File

@ -8,6 +8,9 @@ mybatis:
spring: spring:
datasource: datasource:
url: jdbc:mysql://localhost:3305/test?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 url: jdbc:mysql://localhost:3305/test?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
# url: jdbc:mysql://sdu.yuxihan.com:3306/test?useUnicode=true&amp;characterEncoding=utf-8
driver-class-name: com.mysql.jdbc.Driver driver-class-name: com.mysql.jdbc.Driver
username: root username: root
password: 20190914 password: 20190914
#show variables like 'char%';

View File

@ -24,13 +24,13 @@
insert into user_ticket (user_id,user_token,token_status) values(#{userId},#{userToken},#{tokenStatus}) on duplicate key update token_status=#{tokenStatus}; insert into user_ticket (user_id,user_token,token_status) values(#{userId},#{userToken},#{tokenStatus}) on duplicate key update token_status=#{tokenStatus};
</insert> </insert>
<!-- 根据用户id查对应token --> <!-- 根据用户id查对应token -->
<select id="getToken" resultType="String" parameterMap="BaseTokenMap"> <select id="getToken" resultType="String" parameterType="INTEGER">
select select
user_token user_token
from user_ticket where user_id=#{userId} from user_ticket where user_id=#{userId}
</select> </select>
<!-- 根据用户token状态 --> <!-- 根据用户id获取token状态 -->
<select id="getTokenStatus" resultType="INTEGER" parameterMap="BaseTokenMap"> <select id="getTokenStatus" resultType="INTEGER" parameterType="INTEGER">
select select
token_status token_status
from user_ticket where user_id=#{userId} from user_ticket where user_id=#{userId}
@ -40,13 +40,16 @@
<!-- user_info 用户信息表 --> <!-- user_info 用户信息表 -->
<parameterMap id="BaseUserMap" type="com.yuxihan.bean.User"/> <parameterMap id="BaseUserMap" type="com.yuxihan.bean.User"/>
<sql id="Base_Column_List">user_name,user_id,password,created_time</sql> <sql id="Base_Column_List">user_name,user_id,password,created_time</sql>
<sql id="User_Column_List">user_name,password</sql> <sql id="User_Column_List">user_name,password,nickname</sql>
<resultMap id="BaseResultMap" type="com.yuxihan.bean.User"> <resultMap id="BaseUserMap" type="com.yuxihan.bean.User">
<result column="user_name" property="userName"/> <result column="user_name" property="userName"/>
<result column="user_id" property="userId"/> <result column="user_id" property="userId"/>
<result column="password" property="password"/> <result column="password" property="password"/>
<result column="created_time" property="createdTime"/> <result column="created_time" property="createdTime"/>
<result column="nickname" property="nickname"/>
</resultMap> </resultMap>
<!--查询全部用户--> <!--查询全部用户-->
<select id="findAll" resultMap="BaseUserMap"> <select id="findAll" resultMap="BaseUserMap">
@ -55,7 +58,7 @@
from user_info from user_info
</select> </select>
<!--查询指定用户--> <!--查询指定用户-->
<select id="findUser" resultMap="BaseResultMap" parameterMap="BaseUserMap"> <select id="findUser" resultMap="BaseUserMap" parameterType="String">
select select
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
from user_info where user_name=#{userName} from user_info where user_name=#{userName}
@ -67,7 +70,7 @@
from user_info where user_name=#{userName} from user_info where user_name=#{userName}
</select> </select>
<!-- 查询用户id --> <!-- 查询用户id -->
<select id="getUserId" resultType="INTEGER" parameterMap="BaseUserMap"> <select id="getUserId" resultType="INTEGER" parameterType="String">
select select
user_id user_id
from user_info where user_name=#{userName} from user_info where user_name=#{userName}
@ -80,6 +83,9 @@
</select> </select>
<!-- 新增用户 --> <!-- 新增用户 -->
<insert id="addUser" parameterMap="BaseUserMap" keyProperty="user_id"> <insert id="addUser" parameterMap="BaseUserMap" keyProperty="user_id">
insert into user_info (<include refid="User_Column_List"/>) values (#{userName},#{password}) insert into user_info (<include refid="User_Column_List"/>) values (#{userName},#{password},#{nickname})
</insert> </insert>
<update id="updateName" parameterMap="BaseUserMap">
update user_info set nickname=#{nickname} where user_name=#{userName}
</update>
</mapper> </mapper>

View File

@ -5,7 +5,7 @@ import org.junit.Test;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest @SpringBootTest
public class StuserverApplicationTests { public class SduServerApplicationTests {
@Test @Test
public void contextLoads() { public void contextLoads() {