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/common/service/impl/SysUsersServiceImpl.java | 5 ++ zq-erp/src/main/java/com/matrix/system/common/bean/SysUsers.java | 10 +++++ zq-erp/src/main/java/com/matrix/system/common/service/SysUsersService.java | 1 zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java | 55 +++++++++++++++++++++++++++ zq-erp/src/main/java/com/matrix/system/common/dao/SysUsersDao.java | 1 zq-erp/src/main/java/com/matrix/system/app/dto/LoginDto.java | 10 +++++ zq-erp/src/main/resources/mybatis/mapper/common/SysUsersDao.xml | 7 +++ 7 files changed, 88 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; } } diff --git a/zq-erp/src/main/java/com/matrix/system/app/dto/LoginDto.java b/zq-erp/src/main/java/com/matrix/system/app/dto/LoginDto.java index a06332d..a919a3e 100644 --- a/zq-erp/src/main/java/com/matrix/system/app/dto/LoginDto.java +++ b/zq-erp/src/main/java/com/matrix/system/app/dto/LoginDto.java @@ -20,6 +20,16 @@ @NotBlank(message = "用户名或密码错误") private String password; + private String openId; + + public String getOpenId() { + return openId; + } + + public void setOpenId(String openId) { + this.openId = openId; + } + public String getUsername() { return username; } diff --git a/zq-erp/src/main/java/com/matrix/system/common/bean/SysUsers.java b/zq-erp/src/main/java/com/matrix/system/common/bean/SysUsers.java index dcadb31..a68a8d5 100644 --- a/zq-erp/src/main/java/com/matrix/system/common/bean/SysUsers.java +++ b/zq-erp/src/main/java/com/matrix/system/common/bean/SysUsers.java @@ -288,6 +288,16 @@ @Extend private SysCompany company; + private String openIds; + + public String getOpenIds() { + return openIds; + } + + public void setOpenIds(String openIds) { + this.openIds = openIds; + } + public String getAllCustomer() { return allCustomer; } diff --git a/zq-erp/src/main/java/com/matrix/system/common/dao/SysUsersDao.java b/zq-erp/src/main/java/com/matrix/system/common/dao/SysUsersDao.java index fcb8f9a..daadc33 100644 --- a/zq-erp/src/main/java/com/matrix/system/common/dao/SysUsersDao.java +++ b/zq-erp/src/main/java/com/matrix/system/common/dao/SysUsersDao.java @@ -125,4 +125,5 @@ public List<AppVersion> selectAppVersion(); + SysUsers selectUserByOpenId(@Param("openId") String openId, @Param("companyId") Long companyId); } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/common/service/SysUsersService.java b/zq-erp/src/main/java/com/matrix/system/common/service/SysUsersService.java index b41f466..905a0ff 100644 --- a/zq-erp/src/main/java/com/matrix/system/common/service/SysUsersService.java +++ b/zq-erp/src/main/java/com/matrix/system/common/service/SysUsersService.java @@ -173,4 +173,5 @@ public List<AppVersion> findAppVersion(); + SysUsers findByOpenId(String openId, Long companyId); } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/common/service/impl/SysUsersServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/common/service/impl/SysUsersServiceImpl.java index 3771598..b348206 100644 --- a/zq-erp/src/main/java/com/matrix/system/common/service/impl/SysUsersServiceImpl.java +++ b/zq-erp/src/main/java/com/matrix/system/common/service/impl/SysUsersServiceImpl.java @@ -270,4 +270,9 @@ public List<AppVersion> findAppVersion() { return sysUsersDao.selectAppVersion(); } + + @Override + public SysUsers findByOpenId(String openId, Long companyId) { + return sysUsersDao.selectUserByOpenId(openId); + } } \ No newline at end of file diff --git a/zq-erp/src/main/resources/mybatis/mapper/common/SysUsersDao.xml b/zq-erp/src/main/resources/mybatis/mapper/common/SysUsersDao.xml index f21d2ca..4a16e92 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/common/SysUsersDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/common/SysUsersDao.xml @@ -1329,4 +1329,11 @@ select * from app_version </select> + <select id="selectUserByOpenId" resultMap="SysUsersMap"> + select * from sys_users where find_in_set(#{openId}, open_ids) + <if test="companyId != null"> + and company_id=#{companyId} + </if> + </select> + </mapper> \ No newline at end of file -- Gitblit v1.9.1