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>
</exclusions>
</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>
<build>

View File

@ -4,10 +4,10 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class StuserverApplication {
public class SduServerApplication {
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 java.util.Map;
@Component
public class ErrJson {
private String errCode;
private String errMsg;
private String result;
private Map<String,Object> result;
public String getErrCode() {
return errCode;
@ -24,11 +26,11 @@ public class ErrJson {
this.errMsg = errMsg;
}
public String getResult() {
public Map<String, Object> getResult() {
return result;
}
public void setResult(String result) {
public void setResult(Map<String, Object> result) {
this.result = result;
}
}

View File

@ -12,6 +12,7 @@ public class User implements Serializable {
private String password;
private Date createdTime;
private Date updatedTime;
private String nickname;
public Integer getId() {
return userId;
@ -52,4 +53,12 @@ public class User implements Serializable {
public void setUpdatedTime(Date 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 {
@Autowired
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);
int getUserId(User user);
int getUserId(String userName);
void updateTokenStatus(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 {
List<User> findAll();
public ErrJson addUser(String userName, String password);
public int isExistsUser(String userName);
public String getPsd(String userName);
public ErrJson login(String userName,String password);
ErrJson addUser(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;
import com.yuxihan.bean.ErrJson;
import com.yuxihan.bean.Token;
import com.yuxihan.bean.User;
import com.yuxihan.mapper.UserMapper;
import com.yuxihan.servies.UserServies;
@ -9,13 +10,15 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.UUID;
import java.util.*;
@Service
public class UserServiesImpl implements UserServies {
private static String SUCCESS = "0";
private static String FAIL = "1";
private static Integer ENABLE = 0;
private static Integer STOP = 1;
//注入接口代理对象
@Autowired
private UserMapper userMapper;
@ -25,10 +28,48 @@ public class UserServiesImpl implements UserServies {
private MD5Util md5Util;
@Autowired
private User user;
@Autowired
private Token token;
public List<User> 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;
}
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.setResult(ticket);
return errJson;
} else {
errJson.setErrMsg("密码错误");
@ -52,6 +96,7 @@ public class UserServiesImpl implements UserServies {
}
}
/**
* 注册用户
* @param userName,password
@ -60,6 +105,8 @@ public class UserServiesImpl implements UserServies {
if (isNotEmpty(userName,password)) return errJson;
user.setPassword( md5Util.string2MD5(password));
user.setName(userName);
//默认昵称
user.setNickname("小胖猪"+Calendar.getInstance().getTimeInMillis());
if (0 == userMapper.isExistsUser(user)) {
userMapper.addUser(user);
errJson.setErrCode(SUCCESS);
@ -80,6 +127,26 @@ public class UserServiesImpl implements UserServies {
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
@ -99,7 +166,6 @@ public class UserServiesImpl implements UserServies {
private boolean isNotEmpty(@RequestParam("userName") String userName, @RequestParam("password") String password) {
errJson.setErrCode(FAIL);
errJson.setErrMsg("");
errJson.setResult("");
if (userName.isEmpty()) {
errJson.setErrMsg("用户名不能为空");
return true;
@ -111,6 +177,13 @@ public class UserServiesImpl implements UserServies {
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:
datasource:
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
username: root
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>
<!-- 根据用户id查对应token -->
<select id="getToken" resultType="String" parameterMap="BaseTokenMap">
<select id="getToken" resultType="String" parameterType="INTEGER">
select
user_token
from user_ticket where user_id=#{userId}
</select>
<!-- 根据用户token状态 -->
<select id="getTokenStatus" resultType="INTEGER" parameterMap="BaseTokenMap">
<!-- 根据用户id获取token状态 -->
<select id="getTokenStatus" resultType="INTEGER" parameterType="INTEGER">
select
token_status
from user_ticket where user_id=#{userId}
@ -40,13 +40,16 @@
<!-- user_info 用户信息表 -->
<parameterMap id="BaseUserMap" type="com.yuxihan.bean.User"/>
<sql id="Base_Column_List">user_name,user_id,password,created_time</sql>
<sql id="User_Column_List">user_name,password</sql>
<resultMap id="BaseResultMap" type="com.yuxihan.bean.User">
<sql id="User_Column_List">user_name,password,nickname</sql>
<resultMap id="BaseUserMap" type="com.yuxihan.bean.User">
<result column="user_name" property="userName"/>
<result column="user_id" property="userId"/>
<result column="password" property="password"/>
<result column="created_time" property="createdTime"/>
<result column="nickname" property="nickname"/>
</resultMap>
<!--查询全部用户-->
<select id="findAll" resultMap="BaseUserMap">
@ -55,7 +58,7 @@
from user_info
</select>
<!--查询指定用户-->
<select id="findUser" resultMap="BaseResultMap" parameterMap="BaseUserMap">
<select id="findUser" resultMap="BaseUserMap" parameterType="String">
select
<include refid="Base_Column_List"/>
from user_info where user_name=#{userName}
@ -67,7 +70,7 @@
from user_info where user_name=#{userName}
</select>
<!-- 查询用户id -->
<select id="getUserId" resultType="INTEGER" parameterMap="BaseUserMap">
<select id="getUserId" resultType="INTEGER" parameterType="String">
select
user_id
from user_info where user_name=#{userName}
@ -80,6 +83,9 @@
</select>
<!-- 新增用户 -->
<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>
<update id="updateName" parameterMap="BaseUserMap">
update user_info set nickname=#{nickname} where user_name=#{userName}
</update>
</mapper>

View File

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