diff --git a/epmet-auth/src/main/java/com/epmet/service/impl/PublicUserLoginServiceImpl.java b/epmet-auth/src/main/java/com/epmet/service/impl/PublicUserLoginServiceImpl.java index 21c0bc8c53..af889dd306 100644 --- a/epmet-auth/src/main/java/com/epmet/service/impl/PublicUserLoginServiceImpl.java +++ b/epmet-auth/src/main/java/com/epmet/service/impl/PublicUserLoginServiceImpl.java @@ -12,6 +12,7 @@ import com.epmet.constant.PublicUserLoginConstant; import com.epmet.constant.SmsTemplateConstant; import com.epmet.dto.PaCustomerDTO; import com.epmet.dto.PaUserDTO; +import com.epmet.dto.PaUserWechatDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.CustomerUserResultDTO; import com.epmet.dto.result.SaveUserResultDTO; @@ -77,7 +78,9 @@ public class PublicUserLoginServiceImpl implements PublicUserLoginService { //3.获取用户token String token = this.generateGovWxmpToken(resultDTO.getUserId()); //4.保存到redis - this.saveLatestGovTokenDto(resultDTO, wxMpUser, token); + String openid = wxMpUser.getOpenId(); + String unionId = (null == wxMpUser.getUnionId() ? "" : wxMpUser.getUnionId()); + this.saveLatestGovTokenDto("", resultDTO.getUserId(), openid, unionId, token); UserTokenResultDTO userTokenResultDTO = new UserTokenResultDTO(); userTokenResultDTO.setToken(token); return userTokenResultDTO; @@ -118,17 +121,17 @@ public class PublicUserLoginServiceImpl implements PublicUserLoginService { } //保存tokenDto到redis - private void saveLatestGovTokenDto(SaveUserResultDTO resultDTO, WxMpUser wxMpUser, String token) { + private void saveLatestGovTokenDto(String customerId, String userId, String openId, String unionId, String token) { TokenDto tokenDTO = new TokenDto(); int expire = jwtTokenProperties.getExpire(); tokenDTO.setApp(LoginConstant.APP_PUBLIC); tokenDTO.setClient(LoginConstant.CLIENT_MP); - tokenDTO.setOpenId(wxMpUser.getOpenId()); - tokenDTO.setUnionId(null == wxMpUser.getUnionId() ? "" : wxMpUser.getUnionId()); + tokenDTO.setOpenId(openId); + tokenDTO.setUnionId(unionId); tokenDTO.setToken(token); //首次初始化时还没有客户 - tokenDTO.setCustomerId(""); - tokenDTO.setUserId(resultDTO.getUserId()); + tokenDTO.setCustomerId(customerId); + tokenDTO.setUserId(userId); tokenDTO.setExpireTime(jwtTokenUtils.getExpiration(token).getTime()); tokenDTO.setUpdateTime(System.currentTimeMillis()); cpUserDetailRedis.set(tokenDTO, expire); @@ -206,19 +209,27 @@ public class PublicUserLoginServiceImpl implements PublicUserLoginService { logger.error(String.format("验证码错误code[%s],msg[%s]", EpmetErrorCode.MOBILE_CODE_ERROR.getCode(), EpmetErrorCode.MOBILE_CODE_ERROR.getMsg())); throw new RenException(EpmetErrorCode.MOBILE_CODE_ERROR.getCode()); } + //获取缓存中的token TokenDto redisTokenDTO = cpUserDetailRedis.get(LoginConstant.APP_PUBLIC, LoginConstant.CLIENT_MP, userDTO.getId(), TokenDto.class); if (redisTokenDTO == null) { return null; } - //4.判断是否存在客户信息,是否需要生成新的token + //4.直接生成一个新的token放入缓存中(不管缓存中是否存在旧的token,都重新生成) + //4-1.生成token + String token = this.generateGovWxmpToken(userDTO.getId()); + //4-2.判断是否存在信息,给customerId赋值 PaCustomerDTO customerDTO = resultDTO.getPaCustomerResult(); + String customerId = ""; if (null != customerDTO && !StringUtils.isBlank(customerDTO.getId())) { - redisTokenDTO.setCustomerId(customerDTO.getId()); - int expire = jwtTokenProperties.getExpire(); - cpUserDetailRedis.set(redisTokenDTO, expire); + customerId = customerDTO.getId(); } + //4-3.token存入redis + PaUserWechatDTO wechatDTO = resultDTO.getPaUserWechatResult(); + String openid = wechatDTO.getWxOpenId(); + String unionId = (null == wechatDTO.getUnionId() ? "" : wechatDTO.getUnionId()); + this.saveLatestGovTokenDto(customerId, userDTO.getId(), openid, unionId, token); //5.登陆成功,访问记录表新增访问记录(访问记录新增失败不应影响用户登陆) SaveUserVisitedFormDTO visited = new SaveUserVisitedFormDTO(); @@ -232,7 +243,7 @@ public class PublicUserLoginServiceImpl implements PublicUserLoginService { //6.返回token UserTokenResultDTO userTokenResultDTO = new UserTokenResultDTO(); - userTokenResultDTO.setToken(redisTokenDTO.getToken()); + userTokenResultDTO.setToken(token); return userTokenResultDTO; } diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CreateAgencyResultDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CreateAgencyResultDTO.java index 285b662e40..f344e5c062 100644 --- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CreateAgencyResultDTO.java +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CreateAgencyResultDTO.java @@ -19,9 +19,5 @@ public class CreateAgencyResultDTO implements Serializable { * 新增客户Id */ private String customerId; - /** - * 包含customerId的token - */ - private String token; } diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CustomerUserResultDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CustomerUserResultDTO.java index 3b8d20f9e9..d0090c3fa7 100644 --- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CustomerUserResultDTO.java +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CustomerUserResultDTO.java @@ -2,6 +2,7 @@ package com.epmet.dto.result; import com.epmet.dto.PaCustomerDTO; import com.epmet.dto.PaUserDTO; +import com.epmet.dto.PaUserWechatDTO; import lombok.Data; import java.io.Serializable; @@ -22,4 +23,8 @@ public class CustomerUserResultDTO implements Serializable { * 用户对应的客户信息 */ private PaCustomerDTO paCustomerResult; + /** + * 用户对应的微信基本信息 + */ + private PaUserWechatDTO paUserWechatResult; } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java index acfe7a2d8f..20866695f2 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java @@ -289,11 +289,11 @@ public class PaCustomerServiceImpl extends BaseServiceImpl private PaUserWechatService paUserWechatService; @Autowired private PaCustomerDao paCustomerDao; + @Autowired + private PaUserWechatDao paUserWechatDao; @Override public PageData page(Map params) { @@ -175,17 +178,25 @@ public class PaUserServiceImpl extends BaseServiceImpl @Override public CustomerUserResultDTO checkPaUser(String phone) { CustomerUserResultDTO resultDTO = new CustomerUserResultDTO(); + //1.根据手机号查询用户信息 List userList = baseDao.selectUserByPhone(phone); if (null == userList || userList.size() < NumConstant.ONE) { resultDTO.setPaUserResult(null); resultDTO.setPaCustomerResult(null); + resultDTO.setPaUserWechatResult(null); return resultDTO; } PaUserDTO dto = userList.get(NumConstant.ZERO); + //2.根据用户Id查询对应的客户信息 List customerList = paCustomerDao.selectCustomerByUserId(dto.getId()); + //3.根据用户Id查询对应的微信基本信息 + PaUserWechatDTO wechatDTO = new PaUserWechatDTO(); + wechatDTO.setUserId(dto.getId()); + PaUserWechatEntity wechatEntity = paUserWechatDao.selectWechatByUserId(wechatDTO); resultDTO.setPaUserResult(dto); resultDTO.setPaCustomerResult(customerList.size() > NumConstant.ZERO ? customerList.get(NumConstant.ZERO) : null); + resultDTO.setPaUserWechatResult(ConvertUtils.sourceToTarget(wechatEntity, PaUserWechatDTO.class)); return resultDTO; }