Преглед на файлове

刷新token绑定设备信息

zhouxianguang преди 6 години
родител
ревизия
ae2088719f

+ 8 - 7
rankin-api-web/src/main/java/cn/rankin/apiweb/controller/LoginController.java

@@ -39,16 +39,12 @@ public class LoginController
 
         String terminal = request.getHeader("terminal");
         String merchant = request.getHeader("merchant");
-        String userAgent = request.getHeader("User-Agent");
 
         String ip = HttpUtil.getClientIp(request);
         loginInfoDTO.setIp(ip);
         loginInfoDTO.setTerminal(terminal);
         loginInfoDTO.setMerchant(merchant);
 
-        //填充设备信息
-        fillDeviceInfo(userAgent, loginInfoDTO);
-
         log.info("login request header : ip={},terminal={},merchant={},user-agent={}", ip, terminal, merchant);
 
 
@@ -60,8 +56,13 @@ public class LoginController
     {
         String deviceCode = deviceLoginDTO.getDeviceCode();
         String merchant = request.getHeader("merchant");
-        log.info("refresh request header : deviceCode={}, merchant={}", deviceCode, merchant);
-        return userService.refresh(deviceCode, merchant, Boolean.TRUE);
+        String userAgent = request.getHeader("User-Agent");
+        log.info("refresh request header : deviceCode={}, merchant={},userAgent={}", deviceCode, merchant,userAgent);
+
+        //填充设备信息
+        fillDeviceInfo(userAgent, deviceLoginDTO);
+
+        return userService.refresh(deviceCode, merchant, Boolean.TRUE,deviceLoginDTO);
     }
 
     @RequestMapping(method = RequestMethod.DELETE)
@@ -76,7 +77,7 @@ public class LoginController
      * @param userAgentStr the string of user agent
      * @param loginInfoDTO the login info
      */
-    private void fillDeviceInfo(String userAgentStr, LoginInfoDTO loginInfoDTO)
+    private void fillDeviceInfo(String userAgentStr, DeviceLoginDTO loginInfoDTO)
     {
         if (userAgentStr == "" || userAgentStr == null)
         {

+ 28 - 21
rankin-api-web/src/main/java/cn/rankin/apiweb/service/user/UserService.java

@@ -9,6 +9,7 @@ import cn.rankin.common.utils.api.page.Page;
 import cn.rankin.common.utils.constant.PlatForm;
 import cn.rankin.common.utils.constant.RedisKey;
 import cn.rankin.common.utils.service.RedisService;
+import cn.rankin.data.api.app.dto.DeviceLoginDTO;
 import cn.rankin.data.api.app.dto.LoginInfoDTO;
 import cn.rankin.data.api.app.vo.DeviceUserVo;
 import cn.rankin.data.api.app.vo.ItemVo;
@@ -79,27 +80,7 @@ public class UserService
             return APIResult.error(ApiWebCode.LOGIN_ERROR);
         }
 
-        //操作用户登录设备信息
-        if (deviceName != null && !"".equals(deviceName.trim()))
-        {
-            String uid = userVo.getId();
-            UserDeviceDTO dto = new UserDeviceDTO();
-            dto.setDeviceCode(deviceCode);
-            dto.setDeviceModel(deviceModel);
-            dto.setDeviceType(deviceType);
-            dto.setDeviceMfrs(deviceMfrs);
-            dto.setDeviceName(deviceName);
 
-            int opRet = userClient.opUserDevice(uid,dto);
-            if (opRet == 0)
-            {
-                log.error("Failed to operated user device with[uid={},deviceCode={},deviceModel={},deviceName={}]", uid, deviceCode, deviceModel, deviceName);
-            }
-            else
-            {
-                log.info("Succeed to operating user device with[uid={},deviceCode={},deviceModel={},deviceName={}]", uid, deviceCode, deviceModel, deviceName);
-            }
-        }
 
         String storePassword = userVo.getPassword();
         if (!SecurityManager.validate(loginPassword, storePassword))
@@ -230,7 +211,7 @@ public class UserService
         return toDeviceUserVo(userVo, deviceVo);
     }
 
-    public APIResult<UserInfoVo> refresh(String deviceCode, String merchant, Boolean force)
+    public APIResult<UserInfoVo> refresh(String deviceCode, String merchant, Boolean force, DeviceLoginDTO deviceLoginDTO)
     {
 
         List<TerminalDeviceVo> deviceVoList = userClient.findByDeviceCode(deviceCode);
@@ -301,6 +282,32 @@ public class UserService
         refreshToken(deviceUserVo);
         save(deviceUserVo);
 
+        //获取设备台账
+        String deviceModel = deviceLoginDTO.getDeviceModel();
+        String deviceMfrs = deviceLoginDTO.getDeviceMfrs();
+        String deviceName = deviceLoginDTO.getDeviceName();
+        String deviceType = deviceLoginDTO.getDeviceType();
+        //操作用户登录设备信息
+        if (deviceName != null && !"".equals(deviceName.trim()))
+        {
+            UserDeviceDTO dto = new UserDeviceDTO();
+            dto.setDeviceCode(deviceCode);
+            dto.setDeviceModel(deviceModel);
+            dto.setDeviceType(deviceType);
+            dto.setDeviceMfrs(deviceMfrs);
+            dto.setDeviceName(deviceName);
+
+            int opRet = userClient.opUserDevice(uid,dto);
+            if (opRet == 0)
+            {
+                log.error("Failed to operated user device with[uid={},deviceCode={},deviceModel={},deviceName={}]", uid, deviceCode, deviceModel, deviceName);
+            }
+            else
+            {
+                log.info("Succeed to operating user device with[uid={},deviceCode={},deviceModel={},deviceName={}]", uid, deviceCode, deviceModel, deviceName);
+            }
+        }
+
         UserInfoVo userInfoVo = toUserInfoVo(deviceUserVo, true);
         return APIResult.ok(userInfoVo);
     }

+ 12 - 0
rankin-data-api/src/main/java/cn/rankin/data/api/app/dto/DeviceLoginDTO.java

@@ -12,4 +12,16 @@ public class DeviceLoginDTO implements Serializable{
     private String deviceCode;
 
     private String merchant;
+
+    //设备名称
+    private String deviceName;
+
+    //设备型号
+    private String deviceModel;
+
+    //设备厂商
+    private String deviceMfrs;
+
+    //设备类型
+    private String deviceType;
 }