From 9c791d431038fe79a111805762ee2f42c96b51c5 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Mon, 08 Nov 2021 17:03:15 +0800
Subject: [PATCH] fix

---
 zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java |   55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 54 insertions(+), 1 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java b/zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java
index 5adb150..8e53584 100644
--- a/zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java
@@ -16,6 +16,7 @@
 import com.matrix.system.common.constance.AppConstance;
 import com.matrix.system.common.dao.BusParameterSettingsDao;
 import com.matrix.system.common.init.LocalCache;
+import com.matrix.system.common.init.UserCacheManager;
 import com.matrix.system.common.interceptor.HostInterceptor;
 import com.matrix.system.common.service.SysCompanyService;
 import com.matrix.system.common.service.SysUsersService;
@@ -77,6 +78,8 @@
     @Autowired
     WeChatApiTools weChatApiTools;
 
+    @Autowired
+    private UserCacheManager userCacheManager;
 
     @Value("${file_storage_path}")
     private String fileStoragePath;
@@ -303,7 +306,57 @@
         }
 
         String openId = json.getString("openid");
-        return null;
+        res.setStatus(AjaxResult.STATUS_SUCCESS);
+        res.putInMap("openId", openId);
+        SysUsers hasBind = sysUsersService.findByOpenId(openId, HostInterceptor.getCompanyId());
+        if (hasBind == null) {
+            res.setInfo("未绑定用户");
+            return res;
+        }
+
+        String token = userCacheManager.saveUserInfo(hasBind);
+        LogUtil.info("用户token={}", token);
+        res.putInMap("token", token);
+        res.putInMap("userInfo", hasBind);
+        return res;
+    }
+
+    @ApiOperation(value = "绑定用户")
+    @PostMapping(value = "/bindUser")
+    public AjaxResult bindUser(@RequestBody @Validated LoginDto loginDto) {
+        SysUsers user = new SysUsers();
+        user.setSuAccount(loginDto.getUsername());
+        user.setSuPassword(loginDto.getPassword());
+        LoginStrategy apLogin = new AccountPasswordLogin(user, sysUsersService);
+        user = authorityManager.login(apLogin);
+        user.setSuPassword(null);
+        user.setOpenIds(null);
+        String token = userCacheManager.saveUserInfo(user);
+
+        AjaxResult result = AjaxResult.buildSuccessInstance("登陆成功");
+        authorityManager.initUserPower(result, user);
+        result.putInMap("token", token);
+        result.putInMap("userInfo", user);
+
+        synchronized (this) {
+            SysUsers hasBind = sysUsersService.findByOpenId(loginDto.getOpenId(), HostInterceptor.getCompanyId());
+            if (hasBind != null) {
+                if(StrUtil.isNotBlank(hasBind.getOpenIds())) {
+                    List<String> openIds = StrUtil.split(hasBind.getOpenIds(), ',');
+                    openIds.remove(loginDto.getOpenId());
+
+                    hasBind.setOpenIds(CollUtil.join(openIds, ","));
+                    sysUsersService.modifyByModel(hasBind);
+                }
+            }
+
+            List<String> openIds = StrUtil.split(user.getOpenIds(), ',');
+            openIds.add(loginDto.getOpenId());
+            user.setOpenIds(CollUtil.join(openIds, ","));
+            sysUsersService.modifyByModel(user);
+        }
+
+        return result;
     }
 
 }

--
Gitblit v1.9.1