Ver Fonte

Merge branch 'huangyuan-user' of lift-manager/lift-server into develop

huangyuan há 5 anos atrás
pai
commit
d6d3727b88

+ 0 - 5
lift-common/src/main/java/cn.com.ty.lift.common/constants/WebSocketConstants.java

@@ -12,11 +12,6 @@ public class WebSocketConstants {
      */
     public static final String PUSH_MESSAGE_TO_PC = "pushMessageToPC";
 
-    /**
-     * 推送当前用户信息
-     */
-    public static final String CURRENT_TIMEY_USER = "currentTimeyUser";
-
     /**
      * 查看标识 已经查看
      */

+ 0 - 25
lift-common/src/main/java/cn.com.ty.lift.common/model/TimeyUser.java

@@ -1,25 +0,0 @@
-package cn.com.ty.lift.common.model;
-
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * @author huangyuan
- * @date 2019-12-22
- * @description 实时消息用户信息类
- */
-@Data
-public class TimeyUser implements Serializable {
-
-    private static final long serialVersionUID = 4125096758372084309L;
-
-    /**
-     * 用户id
-     */
-    private Long userId;
-    /**
-     * 用户昵称
-     */
-    private String userName;
-}

+ 2 - 18
lift-push/src/main/java/cn/com/ty/lift/push/websocket/config/WebSocketInterceptor.java

@@ -1,15 +1,11 @@
 package cn.com.ty.lift.push.websocket.config;
 
-import cn.com.ty.lift.common.constants.ApiConstants;
-import cn.com.ty.lift.common.constants.WebSocketConstants;
-import cn.com.ty.lift.common.model.TimeyUser;
 import org.springframework.http.server.ServerHttpRequest;
 import org.springframework.http.server.ServerHttpResponse;
 import org.springframework.http.server.ServletServerHttpRequest;
 import org.springframework.web.socket.WebSocketHandler;
 import org.springframework.web.socket.server.HandshakeInterceptor;
 
-import javax.servlet.http.HttpSession;
 import java.util.Map;
 
 public class WebSocketInterceptor implements HandshakeInterceptor {
@@ -22,12 +18,7 @@ public class WebSocketInterceptor implements HandshakeInterceptor {
                                    WebSocketHandler wsHandler, Map<String, Object> map) {
 
         if (request instanceof ServletServerHttpRequest) {
-            ServletServerHttpRequest serverHttpRequest = (ServletServerHttpRequest) request;
-            HttpSession session = serverHttpRequest.getServletRequest().getSession();
-            TimeyUser timeyUser = (TimeyUser) session.getAttribute(WebSocketConstants.CURRENT_TIMEY_USER);
-            if (timeyUser != null) {
-                map.put(ApiConstants.CURRENT_USER_ID, timeyUser.getUserId());
-            }
+            System.out.println("进入成功");
         }
         return true;
     }
@@ -35,14 +26,7 @@ public class WebSocketInterceptor implements HandshakeInterceptor {
     @Override
     public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler,
                                Exception exception) {
-        ServletServerHttpRequest serverHttpRequest = (ServletServerHttpRequest) request;
-        HttpSession session = serverHttpRequest.getServletRequest().getSession();
-        TimeyUser timeyUser = (TimeyUser) session.getAttribute(WebSocketConstants.CURRENT_TIMEY_USER);
-        if (timeyUser != null) {
-            System.out.println("用户" + timeyUser.getUserName() + "连接进入系统");
-        } else {
-            System.out.println("当前连接为空");
-        }
+        System.out.println("进入成功");
     }
 
 }

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

@@ -73,6 +73,22 @@ public class LoginController {
         return restResponse;
     }
 
+    /**
+     * @param userRequest mobile 用户手机号
+     * @return
+     * @description app 卫星登录绑定用户手机号
+     * @date 2020/5/7 10:43 上午
+     */
+    @PostMapping("/appBindMobile")
+    public RestResponse appBindMobile(HttpServletRequest request, @RequestBody UserRequest userRequest) {
+        RestResponse restResponse = judgeAuthCode(userRequest, WxConstants.APP_LOGIN);
+        if (restResponse == null) {
+            //校验通过,用户绑定手机号
+            return loginService.appBindMobile(request, userRequest);
+        }
+        return restResponse;
+    }
+
     /**
      * @param
      * @return

+ 8 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/ILoginService.java

@@ -81,4 +81,12 @@ public interface ILoginService {
      * @date 2020/4/27 2:39 下午
      */
     RestResponse bindMobile(HttpServletRequest request, UserRequest userRequest);
+
+    /**
+     * @param userRequest mobile 用户手机号
+     * @return
+     * @description app 卫星登录绑定用户手机号
+     * @date 2020/5/7 10:43 上午
+     */
+    RestResponse appBindMobile(HttpServletRequest request, UserRequest userRequest);
 }

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

@@ -2,8 +2,6 @@ package cn.com.ty.lift.system.user.service.impl;
 
 import cn.com.ty.lift.common.aliservice.constants.AliConstants;
 import cn.com.ty.lift.common.constants.ApiConstants;
-import cn.com.ty.lift.common.constants.WebSocketConstants;
-import cn.com.ty.lift.common.model.TimeyUser;
 import cn.com.ty.lift.common.utils.ProjectUtils;
 import cn.com.ty.lift.system.settings.dao.entity.MaintenanceCompany;
 import cn.com.ty.lift.system.settings.service.IMaintenanceCompanyService;
@@ -184,8 +182,7 @@ public class LoginService implements ILoginService {
         String newPassword = PasswordUtils.generatePassword(userRequest.getPassword(), salt);
         userAccount.setPassword(newPassword);
         userAccountService.updateById(userAccount);
-        redisTemplate.delete(userRequest.getToken());
-        this.blankingUserInfoIntoRedis(userRequest.getMobile(), userRequest.getToken(),session);
+        this.blankingUserInfoIntoRedis(userRequest.getMobile(), userRequest.getToken(), session);
         return RestResponse.success(null, ApiConstants.RESULT_SUCCESS, "重置密码成功");
     }
 
@@ -210,7 +207,7 @@ public class LoginService implements ILoginService {
     @Override
     public RestResponse wxLogin(HttpServletRequest request, UserRequest userRequest) {
         //通过授权码获取用户openId
-        String openId = userRequest.getAuthCode();
+        String openId = userRequest.getWeChatOpenId();
         UserAccount userAccount = userAccountService.getOne(new QueryWrapper<UserAccount>()
                 .eq("wechat_open_id", openId)
         );
@@ -228,7 +225,7 @@ public class LoginService implements ILoginService {
     @Override
     public RestResponse appletLogin(HttpServletRequest request, UserRequest userRequest) {
         //通过授权码获取用户openId
-        String openId = userRequest.getAuthCode();
+        String openId = userRequest.getWeChatOpenId();
         UserAccount userAccount = userAccountService.getOne(new QueryWrapper<UserAccount>()
                 .eq("applet_open_id", openId)
         );
@@ -246,10 +243,8 @@ public class LoginService implements ILoginService {
 
     @Override
     public RestResponse bindMobile(HttpServletRequest request, UserRequest userRequest) {
-        if (StringUtils.isBlank(userRequest.getMobile())) {
-            return RestResponse.fail(ApiConstants.RESULT_ERROR, "手机号为空无法绑定");
-        }
-        RestResponse restResponse = verifySmsCode(userRequest.getMobile(), userRequest.getInputSmsCode());
+        //校验手机号和短信验证码
+        RestResponse restResponse = checkMobileAndSmsCode(userRequest);
         if (restResponse != null) {
             return restResponse;
         }
@@ -267,6 +262,32 @@ public class LoginService implements ILoginService {
         return RestResponse.success(userResponse, ApiConstants.RESULT_SUCCESS, "绑定成功");
     }
 
+    @Override
+    public RestResponse appBindMobile(HttpServletRequest request, UserRequest userRequest) {
+        //校验手机号和短信验证码
+        RestResponse restResponse = checkMobileAndSmsCode(userRequest);
+        if (restResponse != null) {
+            return restResponse;
+        }
+        UserAccount userAccount = userAccountService.getByMobile(userRequest.getMobile());
+        if (userAccount == null) {
+            return RestResponse.fail(ApiConstants.RESULT_ERROR, "当前手机号尚未注册,请先注册再绑定");
+        }
+        //通过授权码获取用户openId
+        String openId = userRequest.getWeChatOpenId();
+        userAccount.setWechatOpenId(openId);
+        userAccountService.save(userAccount);
+        UserResponse userResponse = initLoginInfo(request, userRequest);
+        return RestResponse.success(userResponse, ApiConstants.RESULT_SUCCESS, "绑定手机号成功");
+    }
+
+    private RestResponse checkMobileAndSmsCode(UserRequest userRequest) {
+        if (StringUtils.isBlank(userRequest.getMobile())) {
+            return RestResponse.fail(ApiConstants.RESULT_ERROR, "手机号为空无法绑定");
+        }
+        return verifySmsCode(userRequest.getMobile(), userRequest.getInputSmsCode());
+    }
+
     @Override
     public RestResponse verifySmsCode(String mobile, String inputSmsCode) {
         Object smsCode = redisTemplate.opsForValue().get(mobile + AliConstants.SmsConstants.SMS_CODE_FIELD);
@@ -284,7 +305,9 @@ public class LoginService implements ILoginService {
     public void blankingUserInfoIntoRedis(String mobile, String token, HttpSession session) {
         String mobileUserInfo = mobile + ApiConstants.UserConstants.USER_INFO_MOBILE;
         sessionRepository.deleteById(session.getId());
-        redisTemplate.delete(token);
+        if (StringUtils.isNotBlank(token)) {
+            redisTemplate.delete(token);
+        }
         redisTemplate.delete(mobileUserInfo + ApiConstants.ACCESS_TYPE_PC);
         redisTemplate.delete(mobileUserInfo + ApiConstants.ACCESS_TYPE_APP);
         redisTemplate.delete(mobileUserInfo + ApiConstants.ACCESS_TYPE_PUBLIC);
@@ -301,11 +324,6 @@ public class LoginService implements ILoginService {
         HttpSession session = request.getSession();
         //获取用户信息
         UserResponse userResponse = userService.getLoginUserInfo(userRequest.getUserId());
-        //将消息推送信息放入session中
-        TimeyUser timeyUser = new TimeyUser();
-        timeyUser.setUserId(userResponse.getUserId());
-        timeyUser.setUserName(userResponse.getName());
-        session.setAttribute(WebSocketConstants.CURRENT_TIMEY_USER, timeyUser);
         //将当前用户id放入session中
         session.setAttribute(ApiConstants.CURRENT_USER_ID, userResponse.getUserId());
         //将当前公司id放入session中
@@ -465,6 +483,8 @@ public class LoginService implements ILoginService {
         setUserInfoToSession(request, userResponse);
         //添加登录记录
         userLoginService.saveLoginInfo(request, userAccount.getUserId());
+        //更新用户信息
+        userAccountService.save(userAccount);
     }
 
     /**