From da3ab1c3089b89913b420cf8532d86e199693114 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 25 八月 2023 13:41:20 +0800
Subject: [PATCH] 修复bug
---
server/src/main/java/doumeemes/service/system/impl/WxLoginServiceImpl.java | 47 +++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 43 insertions(+), 4 deletions(-)
diff --git a/server/src/main/java/doumeemes/service/system/impl/WxLoginServiceImpl.java b/server/src/main/java/doumeemes/service/system/impl/WxLoginServiceImpl.java
index 8a1ca5c..2990382 100644
--- a/server/src/main/java/doumeemes/service/system/impl/WxLoginServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/system/impl/WxLoginServiceImpl.java
@@ -11,6 +11,7 @@
import doumeemes.core.utils.Constants;
import doumeemes.core.utils.HttpsUtil;
import doumeemes.core.utils.Utils;
+import doumeemes.dao.business.model.Company;
import doumeemes.dao.business.model.CompanyUser;
import doumeemes.dao.business.model.Department;
import doumeemes.dao.ext.CompanyExtMapper;
@@ -18,6 +19,7 @@
import doumeemes.dao.ext.DepartmentExtMapper;
import doumeemes.dao.ext.dto.QueryCompanyUserExtDTO;
import doumeemes.dao.ext.dto.WxLoginDTO;
+import doumeemes.dao.ext.dto.WxLoginOutDTO;
import doumeemes.dao.ext.vo.CompanyUserExtListVO;
import doumeemes.dao.ext.vo.WxLoginVO;
import doumeemes.dao.system.SystemUserMapper;
@@ -69,6 +71,8 @@
@Autowired
private SystemLoginLogService systemLoginLogService;
+ @Autowired
+ private CompanyExtMapper companyExtMapper;
/**
@@ -84,7 +88,7 @@
@Override
public WxLoginVO wxLogin(String code, HttpServletRequest request) {
- WxLoginVO wxLoginVO = new WxLoginVO();
+
String appId = systemDictDataBiz.queryByCode(Constants.WX_CONFIG,Constants.APPID).getCode();
String appSecret = systemDictDataBiz.queryByCode(Constants.WX_CONFIG,Constants.APPSECRET).getCode();
String getTokenUrl = GET_ACCESS_TOKEN_URL.replace("CODE", code).replace("APPID", appId).replace("SECRET", appSecret);
@@ -96,9 +100,19 @@
String openId = tokenJson.getString("openid");
String getUserInfoUrl = GET_USER_INFO_URL.replace("ACCESS_TOKEN", accessToken).replace("OPENID", openId);
JSONObject userInfoJson = JSONObject.parseObject(HttpsUtil.get(getUserInfoUrl,true));
+ return loginByUnionIdAndReturn(userInfoJson.getString("unionid"),openId,request);
+
+ }
+
+ private WxLoginVO loginByUnionIdAndReturn(String unionid,String openId,HttpServletRequest request) {
+ WxLoginVO wxLoginVO = new WxLoginVO();
wxLoginVO.setOpenid(openId);
- wxLoginVO.setUnionid(userInfoJson.getString("unionid"));
- CompanyUser companyUser = companyUserExtMapper.selectOne(new QueryWrapper<CompanyUser>().eq("openid",openId).last(" limit 1 "));
+ wxLoginVO.setUnionid(unionid);
+ CompanyUser companyUser = companyUserExtMapper.selectOne(new QueryWrapper<CompanyUser>().lambda()
+ .eq(CompanyUser::getUnionid,wxLoginVO.getUnionid())
+ .eq(CompanyUser::getDeleted,Constants.ZERO)
+ .last(" limit 1 "));
+// CompanyUser companyUser = companyUserExtMapper.selectOne(new QueryWrapper<CompanyUser>().eq("openid",openId).last(" limit 1 "));
if(Objects.isNull(companyUser)){
wxLoginVO.setLoginStatus(Constants.ONE);
return wxLoginVO;
@@ -106,6 +120,11 @@
Department department = departmentExtMapper.selectById(companyUser.getRootDepartId());
if(Objects.isNull(department)){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌缁戝畾閮ㄩ棬淇℃伅");
+ }
+ Company company = companyExtMapper.selectById(department.getCompanyId());
+ if(Objects.isNull(company)||company.getStatus().equals(Constants.ZERO)){
+ wxLoginVO.setLoginStatus(Constants.ONE);
+ return wxLoginVO;
}
SystemUser systemUser = systemUserMapper.selectById(companyUser.getUserId());
//鏌ヨ鐢ㄦ埛鏁版嵁
@@ -134,8 +153,11 @@
loginLog.setSuccess(Boolean.TRUE);
systemLoginLogService.create(loginLog);
String session = (String)subject.getSession().getId();
- wxLoginVO.setLoginStatus(Constants.ONE);
+ wxLoginVO.setLoginStatus(Constants.ZERO);
wxLoginVO.setSession(session);
+ return wxLoginVO;
+ }catch (BusinessException e) {
+ wxLoginVO.setLoginStatus(Constants.ONE);
return wxLoginVO;
}catch (AuthenticationException e) {
BusinessException ee = null;
@@ -152,6 +174,13 @@
systemLoginLogService.create(loginLog);
throw ee;
}
+ return wxLoginVO;
+ }
+
+ @Override
+ public WxLoginVO wxProgramLogin(String unionId,String openId, HttpServletRequest request) {
+ return loginByUnionIdAndReturn(unionId,openId,request);
+
}
@@ -212,4 +241,14 @@
}
}
+ @Override
+ public void wxLoginOut(WxLoginOutDTO wxLoginOutDTO) {
+ if(!Objects.isNull(wxLoginOutDTO)&&!Objects.isNull(wxLoginOutDTO.getCompanyUserId())){
+ companyUserExtMapper.update(null,new UpdateWrapper<CompanyUser>()
+ .set("UNIONID","").set("OPENID","")
+ .eq("id",wxLoginOutDTO.getCompanyUserId())
+ );
+ }
+ }
+
}
--
Gitblit v1.9.3