diff --git a/epmet-auth/src/main/java/com/epmet/feign/EpmetUserFeignClient.java b/epmet-auth/src/main/java/com/epmet/feign/EpmetUserFeignClient.java index 0610da1880..6d2d5f48f4 100644 --- a/epmet-auth/src/main/java/com/epmet/feign/EpmetUserFeignClient.java +++ b/epmet-auth/src/main/java/com/epmet/feign/EpmetUserFeignClient.java @@ -38,8 +38,8 @@ public interface EpmetUserFeignClient { * @author yinzuomei * @date 2020/3/16 14:48 */ - @PostMapping(value = "epmetuser/customeruser/saveCustomerUser", consumes = MediaType.APPLICATION_JSON_VALUE) - Result saveCustomerUser(CustomerUserDTO customerUserDTO); + @PostMapping(value = "epmetuser/customeruser/saveOrUpdateCustomerUser", consumes = MediaType.APPLICATION_JSON_VALUE) + Result saveOrUpdateCustomerUser(CustomerUserDTO customerUserDTO); /** * @param passwordLoginUserInfoFormDTO diff --git a/epmet-auth/src/main/java/com/epmet/feign/fallback/EpmetUserFeignClientFallback.java b/epmet-auth/src/main/java/com/epmet/feign/fallback/EpmetUserFeignClientFallback.java index bf3b41d5cf..35fd0c2847 100644 --- a/epmet-auth/src/main/java/com/epmet/feign/fallback/EpmetUserFeignClientFallback.java +++ b/epmet-auth/src/main/java/com/epmet/feign/fallback/EpmetUserFeignClientFallback.java @@ -24,8 +24,8 @@ public class EpmetUserFeignClientFallback implements EpmetUserFeignClient { } @Override - public Result saveCustomerUser(CustomerUserDTO customerUserDTO) { - return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "saveCustomerUser", customerUserDTO); + public Result saveOrUpdateCustomerUser(CustomerUserDTO customerUserDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "saveOrUpdateCustomerUser", customerUserDTO); } @Override diff --git a/epmet-auth/src/main/java/com/epmet/service/impl/LoginServiceImpl.java b/epmet-auth/src/main/java/com/epmet/service/impl/LoginServiceImpl.java index ab79c52b24..a6207597ed 100644 --- a/epmet-auth/src/main/java/com/epmet/service/impl/LoginServiceImpl.java +++ b/epmet-auth/src/main/java/com/epmet/service/impl/LoginServiceImpl.java @@ -127,17 +127,68 @@ public class LoginServiceImpl implements LoginService { WxLoginUserInfoFormDTO wxLoginUserInfoFormDTO = new WxLoginUserInfoFormDTO(); wxLoginUserInfoFormDTO.setApp(formDTO.getApp()); wxLoginUserInfoFormDTO.setOpenId(wxMaJscode2SessionResult.getOpenid()); + //1、先根据app、client、openId查询 Result userResult = epmetUserFeignClient.selecWxLoginUserInfo(wxLoginUserInfoFormDTO); String userId = ""; if (!userResult.success()) { throw new RenException("获取用户信息失败" + userResult.getMsg()); } - userId = (String) userResult.getData(); - if (StringUtils.isBlank(userId) && LoginConstant.APP_GOV.equals(formDTO.getApp())) { + userId = userResult.getData(); + //2、如果已经存在userId,则更新微信信息 + if (StringUtils.isNotBlank(userId) && StringUtils.isNotBlank(formDTO.getEncryptedData()) && StringUtils.isNotBlank(formDTO.getIv())) { + this.updateWxInfO(userId,formDTO,wxMaJscode2SessionResult); + } + //3、数据库不存在此用户则创建此用户 + if (StringUtils.isBlank(userId)) { + userId = createEpmtUser(formDTO, wxMaJscode2SessionResult); + } + return userId; + } + + /** + * @return com.epmet.commons.tools.utils.Result + * @param userId + * @param wxMaJscode2SessionResult + * @Author yinzuomei + * @Description 获取用户微信基本信息更新到本地 + * @Date 2020/3/20 19:51 + **/ + private Result updateWxInfO(String userId, + LoginByWxCodeFormDTO formDTO, + WxMaJscode2SessionResult wxMaJscode2SessionResult) { + if (LoginConstant.APP_GOV.equals(formDTO.getApp())) { + //查询customer_staff待完善 + + } else if (LoginConstant.APP_OPER.equals(formDTO.getApp())) { + //查询oper_user待完善 + + } else if (LoginConstant.APP_RESI.equals(formDTO.getApp())) { + WxMaUserInfo wxMaUserInfo = wxMaServiceUtils.resiWxMaService().getUserService() + .getUserInfo(wxMaJscode2SessionResult.getSessionKey(), + formDTO.getEncryptedData(), + formDTO.getIv()); + CustomerUserDTO customerUserDTO = this.packageCustomerUserDTO(wxMaUserInfo); + customerUserDTO.setId(userId); + epmetUserFeignClient.saveOrUpdateCustomerUser(customerUserDTO); + } + return new Result(); + } + + /** + * @param formDTO + * @param wxMaJscode2SessionResult + * @return java.lang.String + * @Author yinzuomei + * @Description 陌生人首次授权,创建用户信息 + * @Date 2020/3/20 19:42 + **/ + private String createEpmtUser(LoginByWxCodeFormDTO formDTO, WxMaJscode2SessionResult wxMaJscode2SessionResult) { + String userId = ""; + if (LoginConstant.APP_GOV.equals(formDTO.getApp())) { //查询customer_staff待完善 - } else if (StringUtils.isBlank(userId) && LoginConstant.APP_OPER.equals(formDTO.getApp())) { + } else if (LoginConstant.APP_OPER.equals(formDTO.getApp())) { //查询oper_user待完善 - } else if (StringUtils.isBlank(userId) && LoginConstant.APP_RESI.equals(formDTO.getApp())) { + } else if (LoginConstant.APP_RESI.equals(formDTO.getApp())) { //查询customer_user CustomerUserDTO customerUserDTO = new CustomerUserDTO(); if (StringUtils.isNotBlank(formDTO.getIv()) && StringUtils.isNotBlank(formDTO.getEncryptedData())) { @@ -150,9 +201,9 @@ public class LoginServiceImpl implements LoginService { customerUserDTO.setWxOpenId(wxMaJscode2SessionResult.getOpenid()); customerUserDTO.setUnionId(wxMaJscode2SessionResult.getUnionid()); } - Result saveCustomerUserResult = epmetUserFeignClient.saveCustomerUser(customerUserDTO); + Result saveCustomerUserResult = epmetUserFeignClient.saveOrUpdateCustomerUser(customerUserDTO); if (!saveCustomerUserResult.success()) { - throw new RenException("创建用户失败" + userResult.getMsg()); + throw new RenException("创建用户失败" + saveCustomerUserResult.getMsg()); } userId = saveCustomerUserResult.getData(); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/CustomerUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/CustomerUserController.java index b7661e6243..a0c1dbf677 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/CustomerUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/CustomerUserController.java @@ -114,11 +114,11 @@ public class CustomerUserController { * @Description * @Date 2020/3/16 15:49 **/ - @PostMapping("saveCustomerUser") - public Result saveCustomerUser(@RequestBody CustomerUserDTO customerUserDTO) { + @PostMapping("saveOrUpdateCustomerUser") + public Result saveOrUpdateCustomerUser(@RequestBody CustomerUserDTO customerUserDTO) { //效验数据 ValidatorUtils.validateEntity(customerUserDTO, AddGroup.class, DefaultGroup.class); - return customerUserService.saveCustomerUser(customerUserDTO); + return customerUserService.saveOrUpdateCustomerUser(customerUserDTO); } /** diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/CustomerUserService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/CustomerUserService.java index a8a4950b2b..ae6d9e8613 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/CustomerUserService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/CustomerUserService.java @@ -114,7 +114,7 @@ public interface CustomerUserService extends BaseService { * @Description * @Date 2020/3/16 15:49 **/ - Result saveCustomerUser(CustomerUserDTO customerUserDTO); + Result saveOrUpdateCustomerUser(CustomerUserDTO customerUserDTO); /** * @param passwordLoginUserInfoFormDTO diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerUserServiceImpl.java index c25314656e..c9ffb85093 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerUserServiceImpl.java @@ -136,9 +136,13 @@ public class CustomerUserServiceImpl extends BaseServiceImpl saveCustomerUser(CustomerUserDTO customerUserDTO) { + public Result saveOrUpdateCustomerUser(CustomerUserDTO customerUserDTO) { CustomerUserEntity entity = ConvertUtils.sourceToTarget(customerUserDTO, CustomerUserEntity.class); - insert(entity); + if (StringUtils.isNotBlank(customerUserDTO.getId())) { + insert(entity); + } else { + updateById(entity); + } return new Result().ok(entity.getId()); }