瀏覽代碼

用户注册登录

黄远 5 年之前
父節點
當前提交
c84e1aa003

+ 5 - 0
lift-common/src/main/java/cn.com.ty.lift.common/Constants/ApiConstants.java

@@ -19,4 +19,9 @@ public class ApiConstants {
      * 没有数据 9:更新0件、没数据
      */
     public static final String RESULT_NO_DATA = "9";
+
+    /**
+     * 当前用户
+     */
+    public static final String CURRENT_USER = "currentUser";
 }

+ 8 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/mapper/UserAccountMapper.java

@@ -20,4 +20,12 @@ public interface UserAccountMapper {
 	int updateByPrimaryKeySelective(UserAccount record);
 
 	int updateByPrimaryKey(UserAccount record);
+
+	/**
+	 * @description 通过账户对象多维度查询用户账户心
+	 * @date 2019/11/27 10:03 AM
+	 * @param userAccount 用户账户对象
+	 * @return
+	 */
+    UserAccount getByUserAccount(UserAccount userAccount);
 }

+ 17 - 2
lift-system-service/src/main/java/cn/com/ty/lift/system/user/controller/LoginController.java

@@ -7,6 +7,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletRequest;
+
 /**
  * @author huangyuan
  * @date 2019-11-29
@@ -23,11 +25,24 @@ public class LoginController {
      * @description 用户注册
      * @date 2019/11/27 10:03 AM
      * @param userRequest 用户参数对象
+     * @param request http请求对象
      * @return
      */
     @RequestMapping("/register")
-    public RestResponse register(UserRequest userRequest){
-        return loginService.register(userRequest);
+    public RestResponse register(HttpServletRequest request, UserRequest userRequest){
+        return loginService.register(request, userRequest);
+    }
+
+    /**
+     * @description
+     * @date 2019/11/27 10:03 AM
+     * @param userRequest 用户参数对象
+     * @param request http请求对象
+     * @return
+     */
+    @RequestMapping("/login")
+    public RestResponse login(HttpServletRequest request, UserRequest userRequest){
+        return loginService.login(request, userRequest);
     }
 
 

+ 13 - 1
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/ILoginService.java

@@ -3,13 +3,25 @@ package cn.com.ty.lift.system.user.service;
 import cn.com.ty.lift.system.entity.model.UserRequest;
 import cn.com.xwy.boot.web.dto.RestResponse;
 
+import javax.servlet.http.HttpServletRequest;
+
 public interface ILoginService {
 
     /**
      * @description 用户注册
      * @date 2019/11/27 10:03 AM
      * @param userRequest  用户请求参数
+     * @param request 请求对象
+     * @return
+     */
+    RestResponse register(HttpServletRequest request, UserRequest userRequest);
+
+    /**
+     * @description
+     * @date 2019/11/27 10:03 AM
+     * @param request http请求参数
+     * @param userRequest 用户请求参数,包括用户手机号,用户密码。
      * @return
      */
-    RestResponse register(UserRequest userRequest);
+    RestResponse login(HttpServletRequest request, UserRequest userRequest);
 }

+ 7 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/IUserAccountService.java

@@ -17,4 +17,11 @@ public interface IUserAccountService {
      */
     int add(UserAccount userAccount);
 
+    /**
+     * @description 通过用户手机号获取用户信息
+     * @date 2019/11/27 10:03 AM
+     * @param mobile 手机号
+     * @return
+     */
+    UserAccount getByMobile(String mobile);
 }

+ 55 - 4
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/impl/LoginService.java

@@ -5,10 +5,15 @@ import cn.com.ty.lift.system.entity.UserAccount;
 import cn.com.ty.lift.system.entity.UserInfo;
 import cn.com.ty.lift.system.entity.model.UserRequest;
 import cn.com.ty.lift.system.user.service.ILoginService;
+import cn.com.ty.lift.system.user.service.IUserAccountService;
+import cn.com.ty.lift.system.user.service.IUserService;
+import cn.com.ty.lift.system.utils.PasswordUtils;
 import cn.com.xwy.boot.web.dto.RestResponse;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.Date;
 
 /**
@@ -20,22 +25,68 @@ import java.util.Date;
 public class LoginService implements ILoginService {
 
     @Autowired
-    private UserService userService;
+    private IUserService userService;
+
+    @Autowired
+    private IUserAccountService userAccountService;
 
     @Override
-    public RestResponse register(UserRequest userRequest) {
+    public RestResponse register(HttpServletRequest request, UserRequest userRequest) {
+        String password = userRequest.getPassword();
+        //判断手机号是否为空
+        if(StringUtils.isBlank(userRequest.getMobile())){
+            return RestResponse.error(ApiConstants.RESULT_ERROR, "手机号为空");
+        }
+        //判断密码是否为空
+        if(StringUtils.isBlank(password)){
+            return RestResponse.error(ApiConstants.RESULT_ERROR, "密码为空");
+        }
         UserAccount userAccount = new UserAccount();
         userAccount.setMobile(userRequest.getMobile());
         userAccount.setCreateDate(new Date());
         UserInfo userInfo = new UserInfo();
         userInfo.setName(userRequest.getName());
-        //密码加密
+
+        //前端传递MD5加密密码,然后进行密码加密
+        //1.生成16位随机码
+        String salt = PasswordUtils.randomCode();
+        //2.对密码进行加盐处理,并对加盐的密码进行哈希加密
+        password = PasswordUtils.generatePassword(password, salt);
+        userAccount.setSalt(salt);
+        userAccount.setPassword(password);
 
         //保存用户信息
         boolean registerFlag = userService.register(userInfo, userAccount);
         if(registerFlag){
-            return RestResponse.ok(null, ApiConstants.RESULT_SUCCESS, "注册成功");
+            //注册成功,将用户信息放入session中
+            request.getSession().setAttribute(ApiConstants.CURRENT_USER, userAccount);
+            return RestResponse.ok(userAccount, ApiConstants.RESULT_SUCCESS, "注册成功");
         }
         return RestResponse.error(ApiConstants.RESULT_ERROR, "注册失败");
     }
+
+    @Override
+    public RestResponse login(HttpServletRequest request, UserRequest userRequest) {
+        String password = userRequest.getPassword();
+        if(StringUtils.isBlank(userRequest.getMobile())){
+            RestResponse.error(ApiConstants.RESULT_ERROR, "手机号为空无法注册");
+        }
+        if(StringUtils.isBlank(password)){
+            RestResponse.error(ApiConstants.RESULT_ERROR, "用户密码为空无法注册");
+        }
+        //通过手机号获取用户账户信息
+        UserAccount userAccount = userAccountService.getByMobile(userRequest.getMobile());
+        //验证手机号是否存在
+        if(userAccount == null){
+            return RestResponse.error(ApiConstants.RESULT_ERROR, "用户名不存在");
+        }
+        //校验密码是否正确
+        String inputPassword = PasswordUtils.generatePassword(password, userAccount.getSalt());
+        if(!inputPassword.equals(userAccount.getPassword())){
+            return RestResponse.error(ApiConstants.RESULT_ERROR, "密码输入有误");
+        }
+        //验证通过登录成功,将用户信息放入到session中
+        request.getSession().setAttribute(ApiConstants.CURRENT_USER, userAccount);
+        return RestResponse.ok(userAccount, "登录成功");
+    }
 }

+ 7 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/impl/UserAccountService.java

@@ -23,4 +23,11 @@ public class UserAccountService implements IUserAccountService {
     public int add(UserAccount userAccount) {
         return userAccountMapper.insert(userAccount);
     }
+
+    @Override
+    public UserAccount getByMobile(String mobile) {
+        UserAccount userAccount = new UserAccount();
+        userAccount.setMobile(mobile);
+        return userAccountMapper.getByUserAccount(userAccount);
+    }
 }

+ 44 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/utils/PasswordUtils.java

@@ -0,0 +1,44 @@
+package cn.com.ty.lift.system.utils;
+
+import cn.hutool.crypto.SecureUtil;
+
+import java.util.Random;
+
+/**
+ * @author huangyuan
+ * @date 2019-11-30
+ * @description 密码工具
+ */
+public class PasswordUtils {
+
+    /**
+     * @description 生成随机码-盐(salt)
+     * @date 2019/11/27 10:03 AM
+     * @param
+     * @return 返回随机码
+     */
+    public static String randomCode() {
+        String checkCode = "";
+        char[] character = { '0', '1', '2', '3', '4', '5', '6', '8', '9' };
+        Random random = new Random();
+        //生成验证码字符串
+        for (int i = 0; i < 16; i++)
+        {
+            checkCode += character[random.nextInt(character.length)];
+        }
+        return checkCode;
+    }
+
+    /**
+     * @description 对密码进行加盐并进行hash加密
+     * @date 2019/11/27 10:03 AM
+     * @param password 密码
+     * @param salt 盐
+     * @return
+     */
+    public static String generatePassword(String password, String salt){
+        password = String.format(password, salt);
+        return SecureUtil.sha1(password);
+    }
+
+}

+ 11 - 0
lift-system-service/src/main/resources/mapper/UserAccountMapper.xml

@@ -193,4 +193,15 @@
 		where user_id = #{userId,jdbcType=BIGINT}
 	</update>
 
+	<!--通过账户对象,多维度查询用户账户信息 -->
+	<select id="getByUserAccount" parameterType="cn.com.ty.lift.system.entity.UserAccount" resultType="cn.com.ty.lift.system.entity.UserAccount">
+		select
+		<include refid="Base_Column_List" />
+		from user_account
+		where 1 = 1
+		<if test="mobile != null">
+			and mobile = #{mobile,jdbcType=VARCHAR}
+		</if>
+	</select>
+
 </mapper>