提交 95d367c7 编写于 作者: IIIllI's avatar IIIllI

注册接口

上级 60e59882
......@@ -12,6 +12,7 @@ public enum ResultCode implements IErrorCode {
VALIDATE_FAILED(404, "参数检验失败"),
UNAUTHORIZED(401, "暂未登录或token已经过期"),
FORBIDDEN(403, "没有相关权限");
private long code;
private String message;
......
......@@ -16,17 +16,21 @@ import org.springframework.web.bind.annotation.*;
*/
@RestController
@RequestMapping("login")
@CrossOrigin(origins = "*")
public class LoginController {
@Autowired
private LoginService loginService;
@PostMapping
@RequestMapping(path = "/login",method = RequestMethod.POST)
public CommonResult login(@RequestBody LoginParam loginParam) {
System.out.println(JSON.toJSONString(loginParam));
System.out.println(JSON.toJSONString(loginService.login(loginParam)));
return loginService.login(loginParam);
}
@RequestMapping(path = "/register",method = RequestMethod.POST)
public CommonResult register(@RequestBody LoginParam loginParam) {
return loginService.register(loginParam);
}
}
......@@ -15,36 +15,40 @@ import org.springframework.stereotype.Repository;
@Mapper
public interface UserDao {
/**
* 拆入新用户
*
* @param user
* @return
/* *
* @Description:插入新用户
* @Param: [user 用户实体类]
* @Return: int
* @Author: Lyc
* @Date: 2022/4/29 19:45
*/
public int insertUser(User user);
/**
* 根据id查找用户
*
* @param id
* @return
* @Description:根据id查找用户
* @Param: [id 用户id]
* @Return: int
* @Author: Lyc
* @Date: 2022/4/29 19:45
*/
public User selectUserByID(long id);
/**
* 根据手机号、密码查找用户
*
* @param phoneNum
* @param password
* @return
/* *
* @Description: 根据手机号、密码查找用户
* @Param: [phoneNum 手机号, password 密码]
* @Return: com.nav.pojo.User
* @Author: Lyc
* @Date: 2022/4/29 19:46
*/
public User selectUser(@Param("phoneNum") String phoneNum, @Param("password") String password);
public User selectUserByPhoneAndPwd(@Param("phoneNum") String phoneNum, @Param("password") String password);
/**
* 根据id获取加密盐
*
* @param phoneNum
* @return
/* *
* @Description:根据手机号获取加密盐
* @Param: [phoneNum 手机号]
* @Return: com.nav.pojo.User
* @Author: Lyc
* @Date: 2022/4/29 19:47
*/
public User selectUserByPhoneNum(String phoneNum);
}
......@@ -14,8 +14,17 @@ public interface LoginService {
/**
* 登录接口
*
* @param loginParam
* @return
*/
public CommonResult login(LoginParam loginParam);
/**
* 出注册接口
*
* @param loginParam
* @return
*/
public CommonResult register(LoginParam loginParam);
}
......@@ -4,6 +4,7 @@ import com.nav.common.api.CommonResult;
import com.nav.dao.UserDao;
import com.nav.pojo.User;
import com.nav.utils.JwtUtils;
import com.nav.utils.PhoneNumUtils;
import com.nav.vo.params.LoginParam;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -11,6 +12,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
......@@ -24,8 +27,10 @@ import java.util.Map;
@Service
public class LoginServiceImp implements LoginService {
private final String SALT = "EfO59d-lwgdZj@qkF52zm9IDDn9wd=1e";
@Autowired
private UserDao userDao;
private UserService userService;
@Autowired
private RedisTemplate redisTemplate;
......@@ -44,7 +49,7 @@ public class LoginServiceImp implements LoginService {
return CommonResult.failed();
}
User user = userDao.selectUserByPhoneNum(phoneNum);
User user = userService.getUserByPhoneNum(phoneNum);
//用户不存在
if (user == null) {
return CommonResult.failed("用户未注册");
......@@ -69,4 +74,41 @@ public class LoginServiceImp implements LoginService {
return CommonResult.success(result);
}
@Override
public CommonResult register(LoginParam loginParam) {
String phoneNum = loginParam.getPhoneNum();
String password = loginParam.getPassword();
if (StringUtils.isBlank(phoneNum)
|| StringUtils.isBlank(password)
|| !PhoneNumUtils.verifyPhoneNum(phoneNum)) {
return CommonResult.failed("用户名或密码格式错误");
}
if (userService.getUserByPhoneNum(phoneNum) != null) {
return CommonResult.failed("账户已存在");
}
String salt = DigestUtils.md5Hex(phoneNum + SALT);
Date now = new Date();
User user = new User();
user.setPhoneNum(phoneNum);
user.setNickname("nickname");
user.setProfilePicture("profilePictureUrl");
user.setPassword(DigestUtils.md5Hex(password + salt));
user.setSalt(salt);
user.setGmtCreate(now);
user.setGmtModified(now);
user.setUserState(1);
userService.addUser(user);
String token = JwtUtils.generateToken(user.getId());
Map<String, Object> result = new HashMap<>();
result.put("userId", user.getId());
result.put("token", token);
return CommonResult.success(result);
}
}
......@@ -7,4 +7,8 @@ public interface UserService {
User getUser(long userID);
User getUser(String phoneNum,String password);
int addUser(User user);
User getUserByPhoneNum(String phoneNum);
}
......@@ -18,12 +18,24 @@ public class UserServiceImp implements UserService {
@Autowired
private UserDao userDao;
@Override
public User getUser(long userID) {
return userDao.selectUserByID(userID);
}
@Override
public User getUser(String phoneNum, String password) {
return userDao.selectUser(phoneNum,password);
return userDao.selectUserByPhoneAndPwd(phoneNum, password);
}
@Override
public int addUser(User user) {
return userDao.insertUser(user);
}
@Override
public User getUserByPhoneNum(String phoneNum) {
return userDao.selectUserByPhoneNum(phoneNum);
}
}
package com.nav.utils;
import java.util.regex.Pattern;
/**
* @ClassName PhoneNumUtils
* @Description: 手机号工具类
* @Author lyc
* @Date 2022/4/29 19:09
*/
public class PhoneNumUtils {
public static boolean verifyPhoneNum(String phoneNum) {
if (Pattern.matches("^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$", phoneNum)) {
return true;
}
return false;
}
}
......@@ -3,10 +3,10 @@
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nav.dao.UserDao">
<insert id="insertUser" parameterType="com.nav.pojo.User">
<insert id="insertUser" parameterType="com.nav.pojo.User" useGeneratedKeys="true" keyProperty="id">
insert into `user` (`phone_num`, `nickname`, `profile_picture`, `password`, `salt`, `gmt_create`,
`gmt_modified`, `user_state`)
values (#{phoneNum}, 'nickname', 'profile_picture_url', #{password}, #{salt}, #{gmtCreate}, #{gmtModified},
values (#{phoneNum}, #{nickname}, #{profilePicture}, #{password}, #{salt}, #{gmtCreate}, #{gmtModified},
#{userState})
</insert>
......@@ -14,18 +14,21 @@
select *
from `user`
where `user_id` = #{id}
limit 1
</select>
<select id="selectUser" resultType="com.nav.pojo.User">
<select id="selectUserByPhoneAndPwd" resultType="com.nav.pojo.User">
select *
from `user`
where `phone_num` = #{phoneNum}
and `password` = #{password} limit 1
and `password` = #{password}
limit 1
</select>
<select id="selectUserByPhoneNum" parameterType="string" resultType="com.nav.pojo.User">
select *
from `user`
where `phone_num` = #{phoneNum} limit 1
where `phone_num` = #{phoneNum}
limit 1
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册