From c4692470b9df5399e0e2ebe76d687220243a4548 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期三, 02 四月 2025 18:35:34 +0800
Subject: [PATCH] 优化登陆跳转bug

---
 service-user/src/main/java/com/java110/user/cmd/login/AdminLoginPropertyCmd.java |  100 ++++++++++++++++++++++++++++---------------------
 1 files changed, 57 insertions(+), 43 deletions(-)

diff --git a/service-user/src/main/java/com/java110/user/cmd/login/AdminLoginPropertyCmd.java b/service-user/src/main/java/com/java110/user/cmd/login/AdminLoginPropertyCmd.java
index 597be5d..46e3479 100644
--- a/service-user/src/main/java/com/java110/user/cmd/login/AdminLoginPropertyCmd.java
+++ b/service-user/src/main/java/com/java110/user/cmd/login/AdminLoginPropertyCmd.java
@@ -1,7 +1,10 @@
 package com.java110.user.cmd.login;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.cache.Java110RedisConfig;
+import com.java110.core.context.CmdContextUtils;
 import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
@@ -15,12 +18,12 @@
 import com.java110.intf.user.IUserInnerServiceSMO;
 import com.java110.intf.user.IUserLoginInnerServiceSMO;
 import com.java110.po.user.UserLoginPo;
+import com.java110.utils.cache.CommonCache;
 import com.java110.utils.constant.CommonConstant;
 import com.java110.utils.constant.ResponseConstant;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.exception.SMOException;
-import com.java110.utils.util.Assert;
-import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.*;
 import com.java110.vo.ResultVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
@@ -53,14 +56,14 @@
                 @Java110ParamDoc(name = "code", type = "int", length = 11, defaultValue = "0", remark = "杩斿洖缂栧彿锛�0 鎴愬姛 鍏朵粬澶辫触"),
                 @Java110ParamDoc(name = "msg", type = "String", length = 250, defaultValue = "鎴愬姛", remark = "鎻忚堪"),
                 @Java110ParamDoc(name = "data", type = "Object", remark = "鏈夋晥鏁版嵁"),
-                @Java110ParamDoc(parentNodeName = "data",name = "userId", type = "String", remark = "鐢ㄦ埛ID"),
-                @Java110ParamDoc(parentNodeName = "data",name = "token", type = "String", remark = "涓存椂绁ㄦ嵁"),
+                @Java110ParamDoc(parentNodeName = "data", name = "userId", type = "String", remark = "鐢ㄦ埛ID"),
+                @Java110ParamDoc(parentNodeName = "data", name = "token", type = "String", remark = "涓存椂绁ㄦ嵁"),
         }
 )
 
 @Java110ExampleDoc(
-        reqBody="{'username':'admin','userId':'123','curPassWd':'admin','curUserName':'18909711443'}",
-        resBody="{'code':0,'msg':'鎴愬姛','data':{'userId':'123123','token':'123213'}}"
+        reqBody = "{'username':'admin','userId':'123','curPassWd':'admin','curUserName':'18909711443'}",
+        resBody = "{'code':0,'msg':'鎴愬姛','data':{'userId':'123123','token':'123213'}}"
 )
 
 @Java110Cmd(serviceCode = "login.adminLoginProperty")
@@ -81,30 +84,22 @@
         Assert.hasKeyAndValue(reqJson, "userId", "鏈寘鍚渶瑕佺櫥褰曠殑鐢ㄦ埛ID");
         Assert.hasKeyAndValue(reqJson, "curPasswd", "鏈寘鍚綋鍓嶇敤鎴风殑瀵嗙爜");
         Assert.hasKeyAndValue(reqJson, "curUserName", "鏈寘鍚綋鍓嶇敤鎴风殑鐢ㄦ埛鍚�");
+        reqJson.put("curPasswd", AuthenticationFactory.passwdMd5(reqJson.getString("curPasswd")));
+        super.validateAdmin(context);
     }
 
     @Override
     public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
+        String userId = CmdContextUtils.getUserId(context);
         ResponseEntity<String> responseEntity = null;
         UserDto userDto = new UserDto();
         userDto.setUserName(reqJson.getString("curUserName"));
         userDto.setPassword(reqJson.getString("curPasswd"));
         List<UserDto> userDtos = userInnerServiceSMOImpl.getUsers(userDto);
 
-        if (userDtos == null || userDtos.size() < 1) {
-            context.setResponseEntity(ResultVo.createResponseEntity(ResultVo.CODE_UNAUTHORIZED, "鐢ㄦ埛鎴栧瘑鐮侀敊璇�"));
-            return;
-        }
+        if (ListUtil.isNull(userDtos)) {
+            throw new CmdException("鐢ㄦ埛鎴栧瘑鐮侀敊璇�");
 
-        //鏍¢獙褰撳墠璐︽埛鍟嗘埛鏄笉鏄� 绠$悊鍛樺晢鎴�
-        StoreUserDto storeUserDto = new StoreUserDto();
-        storeUserDto.setStoreTypeCd("800900000001");
-        storeUserDto.setUserId(userDtos.get(0).getUserId());
-        List<StoreUserDto> storeUserDtos = storeInnerServiceSMOImpl.getStoreUserInfo(storeUserDto);
-
-        if (storeUserDtos == null || storeUserDtos.size() < 1) {
-            context.setResponseEntity(ResultVo.createResponseEntity(ResultVo.CODE_UNAUTHORIZED, "褰撳墠鐢ㄦ埛涓嶆槸杩愯惀鍥㈤槦 涓嶈兘鍏嶇櫥褰�"));
-            return;
         }
 
         // 鏍¢獙 闇�瑕佺櫥褰曠殑鐗╀笟璐﹀彿鏄惁瀛樺湪
@@ -116,39 +111,58 @@
         Assert.listOnlyOne(userDtos, "鐗╀笟璐﹀彿涓嶅瓨鍦�");
 
         //鏍¢獙褰撳墠璐︽埛鍟嗘埛鏄笉鏄� 绠$悊鍛樺晢鎴�
-        storeUserDto = new StoreUserDto();
-        storeUserDto.setStoreTypeCd("800900000003"); //鐗╀笟璐﹀彿
-        storeUserDto.setUserId(userDtos.get(0).getUserId());
-        storeUserDtos = storeInnerServiceSMOImpl.getStoreUserInfo(storeUserDto);
-
-        if (storeUserDtos == null || storeUserDtos.size() < 1) {
-            context.setResponseEntity(ResultVo.createResponseEntity(ResultVo.CODE_UNAUTHORIZED, "闇�瑕佸厤瀵嗙櫥褰曠殑璐﹀彿涓嶆槸鐗╀笟璐﹀彿"));
-            return;
-        }
 
         userDto = userDtos.get(0);
-        JSONObject userInfo = JSONObject.parseObject(JSONObject.toJSONString(userDto));
+        JSONArray data = new JSONArray();
+        JSONObject userInfo = null;
         try {
             Map userMap = new HashMap();
             userMap.put(CommonConstant.LOGIN_USER_ID, userDto.getUserId());
-            userMap.put(CommonConstant.LOGIN_USER_NAME, userDto.getUserName());
+            userMap.put(CommonConstant.LOGIN_USER_NAME, userDto.getName());
             String token = AuthenticationFactory.createAndSaveToken(userMap);
-            userInfo.remove("password");
+            userInfo = BeanConvertUtil.beanCovertJson(userDto);
+            userInfo.remove("userPwd");
             userInfo.put("token", token);
-            //璁板綍鐧诲綍鏃ュ織
-            UserLoginPo userLoginPo = new UserLoginPo();
-            userLoginPo.setLoginId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_loginId));
-            userLoginPo.setLoginTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
-            userLoginPo.setPassword(userDto.getPassword());
-            userLoginPo.setSource(UserLoginDto.SOURCE_WEB);
-            userLoginPo.setToken(token);
-            userLoginPo.setUserId(userInfo.getString("userId"));
-            userLoginPo.setUserName(userInfo.getString("userName"));
-            userLoginInnerServiceSMOImpl.saveUserLogin(userLoginPo);
-            responseEntity = new ResponseEntity<String>(userInfo.toJSONString(), HttpStatus.OK);
-            context.setResponseEntity(responseEntity);
+            data.add(userInfo);
         } catch (Exception e) {
+            e.printStackTrace();
             throw new SMOException(ResponseConstant.RESULT_CODE_INNER_ERROR, "绯荤粺鍐呴儴閿欒锛岃鑱旂郴绠$悊鍛�");
         }
+
+
+        //璁板綍鐧诲綍鏃ュ織
+        UserLoginPo userLoginPo = new UserLoginPo();
+        userLoginPo.setLoginId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_loginId));
+        userLoginPo.setLoginTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        userLoginPo.setPassword("******");
+        userLoginPo.setSource(UserLoginDto.SOURCE_WEB);
+        userLoginPo.setToken(userInfo.getString("token"));
+        userLoginPo.setUserId(userInfo.getString("userId"));
+        userLoginPo.setUserName(userInfo.getString("userName"));
+        userLoginInnerServiceSMOImpl.saveUserLogin(userLoginPo);
+
+        responseEntity = ResultVo.createResponseEntity(data);
+        context.setResponseEntity(responseEntity);
+    }
+
+
+    /**
+     * 娓呯悊鐢ㄦ埛缂撳瓨
+     *
+     * @param userId
+     */
+    private void clearUserCache(String userId) {
+        //鍛樺伐鍟嗘埛缂撳瓨 getStoreInfo
+        String storeId = "";
+
+        String storeInfo = CommonCache.getValue("getStoreInfo" + Java110RedisConfig.GET_STORE_INFO_EXPIRE_TIME_KEY + "::" + userId);
+        if (!StringUtil.isEmpty(storeInfo)) {
+            CommonCache.removeValue("getStoreInfo" + Java110RedisConfig.GET_STORE_INFO_EXPIRE_TIME_KEY + "::" + userId);
+            JSONObject storeObj = JSONObject.parseObject(storeInfo);
+            storeId = storeObj.getJSONObject("msg").getString("storeId");
+            CommonCache.removeValue("getStoreEnterCommunitys" + Java110RedisConfig.GET_STORE_ENTER_COMMUNITYS_EXPIRE_TIME_KEY + "::" + storeId);
+        }
+        //鍛樺伐鏉冮檺
+        CommonCache.removeValue("getUserPrivileges" + Java110RedisConfig.DEFAULT_EXPIRE_TIME_KEY + "::" + userId);
     }
 }

--
Gitblit v1.8.0