diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcAppUserMaInfoFormDTO.java b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcAppUserMaInfoFormDTO.java new file mode 100644 index 000000000..47ecf25c3 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcAppUserMaInfoFormDTO.java @@ -0,0 +1,36 @@ +package com.elink.esua.epdc.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * + * 更新用户微信信息Form DTO + * + * @Author:liuchuang + * @Date:2019/10/25 15:55 + */ +@Data +public class EpdcAppUserMaInfoFormDTO implements Serializable { + private static final long serialVersionUID = 201029992792275120L; + + /** + * 微信code + */ + @NotBlank(message = "微信code不能为空") + private String wxCode; + + /** + * 用户信息 + */ + @NotBlank(message = "用户信息不能为空") + private String encryptedData; + + /** + * 加密算法的初始向量 + */ + @NotBlank(message = "初始向量不能为空") + private String iv; +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAppUserController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAppUserController.java index ad69bfdbb..ab3fdf050 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAppUserController.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAppUserController.java @@ -198,6 +198,21 @@ public class ApiAppUserController { return appUserService.getMaV2Token(formDto); }*/ + /** + * + * 更新用户微信信息 + * + * @params [tokenDto, formDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2019/10/28 9:58 + */ + @PostMapping("user/ma/updateWxInfo") + public Result updateWxInfo(@LoginUser TokenDto tokenDto, EpdcAppUserMaInfoFormDTO formDto) { + ValidatorUtils.validateEntity(formDto); + return appUserService.updateWxInfo(tokenDto, formDto); + } + /** * 用户完善个人信息-保存 * diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java index d09a9e8ca..75880b88c 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java @@ -238,4 +238,16 @@ public interface UserFeignClient { */ @PostMapping("app-user/epdc-app/user/registerOrBindGrid") Result registerOrBindGrid(EpdcUserRegisterBindGridFormDTO formDto); + + /** + * + * 更新用户微信信息 + * + * @params [userDTO] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2019/10/25 17:07 + */ + @PostMapping("app-user/epdc-app/user/updateWxInfo") + Result updateWxInfo(UserDTO userDTO); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java index b594d29d1..46213c7c8 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java @@ -115,4 +115,9 @@ public class UserFeignClientFallback implements UserFeignClient { public Result registerOrBindGrid(EpdcUserRegisterBindGridFormDTO formDto) { return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "registerOrBindGrid", formDto); } + + @Override + public Result updateWxInfo(UserDTO userDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "updateWxInfo", userDTO); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java index c879d3b0d..f395812c1 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java @@ -81,7 +81,6 @@ public interface AppUserService { * @author yujintao * @date 2019/9/10 20:34 */ - @Deprecated Result getMaToken(EpdcAppUserMaTokenFormDTO formDto); /** @@ -155,6 +154,17 @@ public interface AppUserService { */ Result getMaV2Token(EpdcAppUserRegisterFormDTO formDto); + /** + * + * 更新用户微信信息 + * + * @params [userDetail, formDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2019/10/25 16:26 + */ + Result updateWxInfo(TokenDto userDetail, EpdcAppUserMaInfoFormDTO formDto); + /** * 用户完善个人信息-保存 * diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java index 8665aa599..f215274b9 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java @@ -645,7 +645,6 @@ public class AppUserServiceImpl implements AppUserService { TokenDto tokenDto = ConvertUtils.sourceToTarget(userResult.getUserDTO(), TokenDto.class); tokenDto.setUserId(userResult.getUserDTO().getId()); EpdcAppAuthorizationDTO authorization = this.packageEpdcAppAuthorization(tokenDto, userResult.getGrid(), userResult.getUserDTO().getState()); - authorization.setUserState(userResult.getUserDTO().getState()); return new Result().ok(authorization); } @@ -796,7 +795,61 @@ public class AppUserServiceImpl implements AppUserService { gridRelationDTO.setGrid(completeDept.getGrid()); gridRelationDTO.setGridId(completeDept.getGridId()); gridRelationDTO.setSwitchedTime(new Date()); + gridRelationDTO.setLeaderFlag(NumConstant.ZERO_STR); return gridRelationDTO; } + + @Override + public Result updateWxInfo(TokenDto userDetail, EpdcAppUserMaInfoFormDTO formDto) { + if (null == userDetail || StringUtils.isEmpty(userDetail.getUserId())) { + return new Result().error("获取用户信息失败"); + } + String sessionKey = this.getUserSessionKey(formDto.getWxCode()); + WxMaUserInfo wxMaUserInfo = wxMaService.getUserService().getUserInfo(sessionKey, formDto.getEncryptedData(), formDto.getIv()); + UserDTO userDTO = new UserDTO(); + userDTO.setId(userDetail.getUserId()); + userDTO.setNickname(wxMaUserInfo.getNickName()); + userDTO.setFaceImg(wxMaUserInfo.getAvatarUrl()); + userDTO.setSex(wxMaUserInfo.getGender()); + Result updateWxInfoResult = userFeignClient.updateWxInfo(userDTO); + if (!updateWxInfoResult.success()) { + return new Result().error("更新用户信息失败"); + } + + // 更新用户缓存信息 + TokenDto tokenDto = ConvertUtils.sourceToTarget(userDTO, TokenDto.class); + tokenDto.setUserId(userDetail.getUserId()); + tokenDto.setGridId(userDetail.getGridId()); + tokenDto.setMobile(userDetail.getMobile()); + tokenDto.setPartyFlag(userDetail.getPartyFlag()); + tokenDto.setRealName(userDetail.getRealName()); + long expire = cpUserDetailRedis.getExpire(userDetail.getUserId()); + cpUserDetailRedis.logout(userDetail.getUserId()); + cpUserDetailRedis.set(tokenDto, expire); + + return new Result(); + } + + /** + * + * 根据微信code获取session_key + * + * @params [code] + * @return java.lang.String + * @author liuchuang + * @since 2019/10/25 16:31 + */ + private String getUserSessionKey(String code) { + try { + WxMaJscode2SessionResult wxMaJscode2SessionResult = wxMaService.jsCode2SessionInfo(code); + if (wxMaJscode2SessionResult != null) { + return wxMaJscode2SessionResult.getSessionKey(); + } + } catch (WxErrorException e) { + e.printStackTrace(); + throw new RenException(e.getError().getErrorMsg()); + } + return null; + } } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserController.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserController.java index 2e3dfc0d1..fdc149aff 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserController.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserController.java @@ -185,6 +185,21 @@ public class EpdcAppUserController { return userService.saveUserOrBindGrid(fromDto); } + /** + * + * 更新用户微信信息 + * + * @params [userDTO] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2019/10/25 17:10 + */ + @PostMapping("updateWxInfo") + public Result updateWxInfo(@RequestBody UserDTO userDTO) { + userService.update(userDTO); + return new Result(); + } + /** * 验证用户完善个人信息时提交的数据 *