diff --git a/esua-epdc/epdc-commons/epdc-common-clienttoken/src/main/java/com/elink/esua/epdc/common/token/util/CpUserDetailRedis.java b/esua-epdc/epdc-commons/epdc-common-clienttoken/src/main/java/com/elink/esua/epdc/common/token/util/CpUserDetailRedis.java index 791e89b9c..178c4a29d 100644 --- a/esua-epdc/epdc-commons/epdc-common-clienttoken/src/main/java/com/elink/esua/epdc/common/token/util/CpUserDetailRedis.java +++ b/esua-epdc/epdc-commons/epdc-common-clienttoken/src/main/java/com/elink/esua/epdc/common/token/util/CpUserDetailRedis.java @@ -40,6 +40,26 @@ public class CpUserDetailRedis { redisUtils.hMSet(key, map, expire); } + /** + * 缓存用户信息,不同于{@link CpUserDetailRedis#set(TokenDto, long)}之处在于存放进redis时,拼接key的后缀可以自定义 + * + * @param user 用户信息 + * @param expire 超时时长 + * @param redisKeySuffix redis的key的后缀 + * @return void + * @author work@yujt.net.cn + * @date 2020/1/31 15:13 + */ + public void set(TokenDto user, long expire, String redisKeySuffix) { + if (user == null) { + return; + } + String key = RedisKeys.getCpUserKey(redisKeySuffix); + //bean to map + Map map = BeanUtil.beanToMap(user, false, true); + redisUtils.hMSet(key, map, expire); + } + /** * 获取token信息 * diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java index 9b41b246a..40a78e93e 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java @@ -60,11 +60,10 @@ public interface AdminFeignClient { Result listGridWhileLeaderRegister(@PathVariable("mobile") String mobile); /** - * * 根据openId获取用户信息 * - * @params [openId] * @return com.elink.esua.epdc.commons.tools.utils.Result + * @params [openId] * @author liuchuang * @since 2019/11/19 17:43 */ 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 4d71da925..08ede327f 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 @@ -222,13 +222,13 @@ public interface UserFeignClient { /** * 更新用户微信信息 * + * @param userDTO * @return com.elink.esua.epdc.commons.tools.utils.Result - * @params [userDTO] * @author liuchuang * @since 2019/10/25 17:07 */ @PostMapping("app-user/epdc-app/user/updateWxInfo") - Result updateWxInfo(UserDTO userDTO); + 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 6e29662d1..cd171b4d8 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 @@ -108,7 +108,7 @@ public class UserFeignClientFallback implements UserFeignClient { } @Override - public Result updateWxInfo(UserDTO userDTO) { + 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/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 3268a099b..ed401ff19 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 @@ -663,21 +663,7 @@ public class AppUserServiceImpl implements AppUserService { WxMaJscode2SessionResult wxMaResult = this.getWxMaUser(formDto.getWxCode()); String openId = wxMaResult.getOpenid(); String unionId = wxMaResult.getUnionid(); -// if (null == formDto.getGridId()) { -// // 获取用户绑定网格信息 -// Result dtoResult = userFeignClient.getUserLastSwitchGrid(openId); -// if (!dtoResult.success()) { -// return new Result().error(dtoResult.getMsg()); -// } -// EpdcUserRegisterInfoResultDTO userDto = dtoResult.getData(); -// if (userDto.getRegisterState() != NumConstant.TWO) { -// EpdcAppAuthorizationDTO resultDto = new EpdcAppAuthorizationDTO(); -// resultDto.setUserState(NumConstant.FIVE_STR); -// return new Result().ok(resultDto); -// } else { -// formDto.setGridId(userDto.getGridId()); -// } -// } + // 查询当前微信注册状态 EpdcCheckUserRegisterFromDTO checkFromDto = new EpdcCheckUserRegisterFromDTO(); checkFromDto.setOpenId(openId); @@ -790,6 +776,7 @@ public class AppUserServiceImpl implements AppUserService { return new Result().error("解析微信开放平台ID失败"); } userDto.setWxUnionId(wxMaUserInfo.getUnionId()); + userDto.setWxOpenId(wxMaUserInfo.getOpenId()); } // 党员提交,验证身份证号 @@ -834,6 +821,9 @@ public class AppUserServiceImpl implements AppUserService { } return new Result().error(completeResult.getMsg()); } + + tokenDto.setUserId(completeResult.getData().getId()); + //更新用户缓存信息 Result cachingUserResult = userFeignClient.needCachingUserInfoByUserId(tokenDto.getUserId()); CachingUserInfoDTO cachingUserInfoDTO = cachingUserResult.getData(); @@ -993,21 +983,28 @@ public class AppUserServiceImpl implements AppUserService { userDTO.setSex(""); } userDTO.setWxUnionId(wxMaUserInfo.getUnionId()); - Result updateWxInfoResult = userFeignClient.updateWxInfo(userDTO); + userDTO.setWxOpenId(wxMaUserInfo.getOpenId()); + Result updateWxInfoResult = userFeignClient.updateWxInfo(userDTO); if (!updateWxInfoResult.success()) { return new Result().error("更新用户信息失败"); } + UserDTO oldUser = updateWxInfoResult.getData(); + // 注销原来的登录信息 + cpUserDetailRedis.logout(userDetail.getUserId()); + // 更新用户缓存信息 TokenDto tokenDto = ConvertUtils.sourceToTarget(userDTO, TokenDto.class); - tokenDto.setUserId(userDetail.getUserId()); + // 在迁移小程序后,olduser的id和userDetail的id可能不一样。 + tokenDto.setUserId(oldUser.getId()); tokenDto.setGridId(userDetail.getGridId()); tokenDto.setMobile(userDetail.getMobile()); tokenDto.setUserTagInfos(userDetail.getUserTagInfos()); tokenDto.setRealName(userDetail.getRealName()); - long expire = cpUserDetailRedis.getExpire(userDetail.getUserId()); - cpUserDetailRedis.logout(userDetail.getUserId()); - cpUserDetailRedis.set(tokenDto, expire); + tokenDto.setMobile(oldUser.getMobile()); + tokenDto.setRealName(oldUser.getRealName()); + // 保证用户手机上的token仍然可用 + cpUserDetailRedis.set(tokenDto, jwtTokenProperties.getExpire(), userDetail.getUserId()); return new Result(); } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/EpdcCompleteAppUserDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/EpdcCompleteAppUserDTO.java index fc6f1734d..e5afc26b2 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/EpdcCompleteAppUserDTO.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/EpdcCompleteAppUserDTO.java @@ -99,6 +99,11 @@ public class EpdcCompleteAppUserDTO implements Serializable { */ private String wxUnionId; + /** + * 微信openId + */ + private String wxOpenId; + /** * 居住网格id */ 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 d33c1af3f..2b7ea3fbb 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 @@ -1,5 +1,6 @@ package com.elink.esua.epdc.controller; +import com.alibaba.fastjson.JSONObject; import com.elink.esua.epdc.commons.tools.constant.Constant; import com.elink.esua.epdc.commons.tools.security.user.SecurityUser; import com.elink.esua.epdc.commons.tools.utils.Result; @@ -220,27 +221,17 @@ public class EpdcAppUserController { /** * 更新用户微信信息 * + * @param userDTO * @return com.elink.esua.epdc.commons.tools.utils.Result - * @params [userDTO] * @author liuchuang * @since 2019/10/25 17:10 */ @PostMapping("updateWxInfo") - public Result updateWxInfo(@RequestBody UserDTO userDto) { - - UserDTO user = new UserDTO(); - // 查询此用户是否已经注册并且完善了用户信息 - UserDTO userDTO = userService.get(userDto.getId()); - // 除了注册之外的 几个状态都不需要更新Nickname - if(AppUserStatesEnum.STATE_REGISTERED.value().equals(userDTO.getState())){ - user.setNickname(userDto.getNickname()); - } - user.setId(userDto.getId()); - user.setFaceImg(userDto.getFaceImg()); - user.setSex(userDto.getSex()); - user.setWxUnionId(userDto.getWxUnionId()); - userService.update(user); - return new Result(); + public Result updateWxInfo(@RequestBody UserDTO userDto) { + // userDto 包含用户id,昵称,头像,性别,unionid,openid + UserDTO user = userService.updateWxInfo(userDto); + + return new Result().ok(user); } /** @@ -370,7 +361,7 @@ public class EpdcAppUserController { /** * @param gridIdList - * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @return com.elink.esua.epdc.commons.tools.utils.Result> * @Author yinzuomei * @Description 根据网格id查询网格下所有的用户 * @Date 2019/12/19 15:02 diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserService.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserService.java index 4e792a51a..174e30547 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserService.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserService.java @@ -257,12 +257,12 @@ public interface UserService extends BaseService { /** * @param gridIdList - * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @return com.elink.esua.epdc.commons.tools.utils.Result> * @Author yinzuomei * @Description 根据网格id查询网格下所有的用户 * @Date 2019/12/19 15:03 **/ - Result> listGridUserResultDTO(List gridIdList); + Result> listGridUserResultDTO(List gridIdList); /** * @param formDTO @@ -289,4 +289,6 @@ public interface UserService extends BaseService { * @Date 2020/1/15 17:40 **/ Result cachingUserInfoByUserId(String userId); + + UserDTO updateWxInfo(UserDTO userDto); } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java index e18703c06..57d2a9035 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java @@ -18,6 +18,7 @@ package com.elink.esua.epdc.service.impl; import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -26,6 +27,7 @@ import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; import com.elink.esua.epdc.commons.mybatis.utils.DeptEntityUtils; import com.elink.esua.epdc.commons.tools.constant.FieldConstant; import com.elink.esua.epdc.commons.tools.constant.NumConstant; +import com.elink.esua.epdc.commons.tools.constant.StrConstant; import com.elink.esua.epdc.commons.tools.enums.UserAuthTypeEnum; import com.elink.esua.epdc.commons.tools.enums.UserSexEnum; import com.elink.esua.epdc.commons.tools.enums.UserTagEnum; @@ -50,6 +52,7 @@ import com.elink.esua.epdc.dto.epdc.result.*; import com.elink.esua.epdc.entity.*; import com.elink.esua.epdc.enums.AppUserAuditStateEnum; import com.elink.esua.epdc.enums.AppUserStatesEnum; +import com.elink.esua.epdc.exception.UserModuleErrorCode; import com.elink.esua.epdc.feign.AdminFeignClient; import com.elink.esua.epdc.service.PartyMembersService; import com.elink.esua.epdc.service.UserGridRelationService; @@ -383,14 +386,6 @@ public class UserServiceImpl extends BaseServiceImpl implem UserDTO userDto = this.selectUserByWxInfo(fromDto.getOpenId(), fromDto.getWxUnionId()); -// QueryWrapper wrapper = new QueryWrapper<>(); -// wrapper.eq(UserFieldConsant.WX_OPEN_ID, fromDto.getOpenId()) -// .select(FieldConstant.ID, UserFieldConsant.NICKNAME, UserFieldConsant.FACE_IMG, -// FieldConstant.MOBILE, UserFieldConsant.REAL_NAME, -// FieldConstant.STATE, UserFieldConsant.PARTY_FLAG, UserFieldConsant.REMARK) -// .orderByDesc(FieldConstant.CREATED_TIME); -// List userEntityList = this.baseDao.selectList(wrapper); - EpdcUserRegisterInfoResultDTO resultDto = new EpdcUserRegisterInfoResultDTO(); resultDto.setGridId(fromDto.getGridId()); // 已注册 @@ -486,7 +481,8 @@ public class UserServiceImpl extends BaseServiceImpl implem QueryWrapper userWrapper = new QueryWrapper<>(); userWrapper.eq(FieldConstant.MOBILE, mobile) - .ne(FieldConstant.ID, userId); + .ne(FieldConstant.ID, userId) + .ne(StringUtils.isNotBlank(userDto.getWxUnionId()), UserFieldConsant.WX_UNION_ID, userDto.getWxUnionId()); Integer selectCount = this.baseDao.selectCount(userWrapper); if (selectCount > NumConstant.ZERO) { return new Result().error("手机号已被注册"); @@ -495,7 +491,8 @@ public class UserServiceImpl extends BaseServiceImpl implem if (YesOrNoEnum.YES.value().equals(userDto.getPartyFlag())) { userWrapper = new QueryWrapper<>(); userWrapper.eq(UserFieldConsant.IDENTITY_NO, userDto.getIdentityNo()) - .ne(FieldConstant.ID, userId); + .ne(FieldConstant.ID, userId) + .ne(StringUtils.isNotBlank(userDto.getWxUnionId()), UserFieldConsant.WX_UNION_ID, userDto.getWxUnionId()); selectCount = this.baseDao.selectCount(userWrapper); if (selectCount > NumConstant.ZERO) { return new Result().error("身份证号已被注册"); @@ -597,20 +594,31 @@ public class UserServiceImpl extends BaseServiceImpl implem * @author rongchao * @since 2019-12-19 */ - private UserEntity modifyResidentInfo(EpdcCompleteAppUserDTO completeAppUser, UserGridRelationDTO userGridRelation, ParentAndAllDeptDTO parentAndAllDeptDTO) { + private UserDTO modifyResidentInfo(EpdcCompleteAppUserDTO completeAppUser, UserGridRelationDTO userGridRelation, ParentAndAllDeptDTO parentAndAllDeptDTO) { + + // 数据库已有的用户信息 + // 查询此用户是否已经注册并且完善了用户信息 + UserDTO findUser = this.selectUserByWxInfo(completeAppUser.getWxOpenId(), completeAppUser.getWxUnionId()); + if (null == findUser) { + throw new RenException("无法匹配用户信息,请先注册"); + } + if (!findUser.getId().equals(completeAppUser.getId())) { + this.deleteById(completeAppUser.getId()); + completeAppUser.setId(findUser.getId()); + } + UserEntity userEntity = ConvertUtils.sourceToTarget(completeAppUser, UserEntity.class); if (StringUtils.isBlank(userEntity.getWxUnionId())) { userEntity.setWxUnionId(null); } - String userId = completeAppUser.getId(); - UserEntity oldEntity = this.baseDao.selectById(userId); - if (oldEntity.getState().equals(AppUserStatesEnum.STATE_INFORMATION_NOT_PASSED.value())) { + if (findUser.getState().equals(AppUserStatesEnum.STATE_INFORMATION_NOT_PASSED.value())) { userEntity.setState(AppUserStatesEnum.STATE_COMPLETED_INFORMATION_PENDING_REVIEW.value()); } //返回网格长标识信息 UserGridRelationDTO relationInfo = userGridRelationService.getUserRelationInfo(completeAppUser.getId(), userGridRelation.getGridId()); - String nicknamePrefix = completeAppUser.getRoad().concat("-"); - if (relationInfo != null && NumConstant.ZERO_STR.equals(relationInfo.getLeaderFlag())) { + String nicknamePrefix = completeAppUser.getRoad().concat(StrConstant.HYPHEN); + if (relationInfo != null && YesOrNoEnum.YES.value().equals(relationInfo.getLeaderFlag())) { + nicknamePrefix = "网格长-".concat(StrConstant.HYPHEN); } // 姓 String lastName = completeAppUser.getRealName().substring(NumConstant.ZERO, NumConstant.ONE); @@ -625,11 +633,12 @@ public class UserServiceImpl extends BaseServiceImpl implem if (!updateById(userEntity)) { throw new RenException("用户认证修改居民信息时失败!"); } - UserDTO userDTO = ConvertUtils.sourceToTarget(userEntity, UserDTO.class); - userDTO.setLeaderFlag(relationInfo.getLeaderFlag()); - return userEntity; + UserDTO userDto = ConvertUtils.sourceToTarget(userEntity, UserDTO.class); + userDto.setLeaderFlag(relationInfo.getLeaderFlag()); + return userDto; } + /** * 生成用户身份标签 * @@ -707,12 +716,9 @@ public class UserServiceImpl extends BaseServiceImpl implem ParentAndAllDeptDTO parentAndAllDeptDTO = getParentAndAllDeptDTO(userGridRelation.getGridId().toString()); //进行居民认证 - UserEntity userEntity = modifyResidentInfo(completeAppUser, userGridRelation, parentAndAllDeptDTO); + UserDTO userDTO = modifyResidentInfo(completeAppUser, userGridRelation, parentAndAllDeptDTO); - //返回网格长标识信息 - UserGridRelationDTO relationInfo = userGridRelationService.getUserRelationInfo(completeAppUser.getId(), userGridRelation.getGridId()); - UserDTO userDTO = ConvertUtils.sourceToTarget(userEntity, UserDTO.class); - userDTO.setLeaderFlag(relationInfo.getLeaderFlag()); + Result result = new Result(); if (YesOrNoEnum.YES.value().equals(completeAppUser.getPartyFlag())) { //进行党员认证 @@ -720,115 +726,35 @@ public class UserServiceImpl extends BaseServiceImpl implem //认证成功党员 信息审核通过 if (authFlag) { userDTO.setState(AppUserStatesEnum.STATE_INFORMATION_PASSED.value()); - userDTO.setRegisterTime(new Date());// 认证成功之后更新认证时间 + // 认证成功之后更新认证时间 + userDTO.setRegisterTime(new Date()); + // 更新用户表党员相关字段 + updateUserPartyMemberInfo(userDTO); + } else { + result = new Result().error(UserModuleErrorCode.AUTHENTICATION_CODE); } } - return new Result().ok(userDTO); + + return result.ok(userDTO); + } + + /** + * 党员认证成功后,更新用户表党员相关字段 + * + * @param userDto + * @return void + * @author work@yujt.net.cn + * @date 2020/2/3 09:40 + */ + private void updateUserPartyMemberInfo(UserDTO userDto) { + UserEntity entity = new UserEntity(); + entity.setId(userDto.getId()); + entity.setState(userDto.getState()); + entity.setRegisterTime(userDto.getRegisterTime()); + entity.setPartyFlag(YesOrNoEnum.YES.value()); + this.updateById(entity); } -// @Override -// @Transactional(rollbackFor = Exception.class) -// public Result completeUserInfo(EpdcAppUserCompleteInfoFormDTO formDto) { -// EpdcCompleteAppUserDTO completeAppUser = formDto.getCompleteAppUser(); -// -// UserDTO userDto = ConvertUtils.sourceToTarget(completeAppUser, UserDTO.class); -// if (StringUtils.isBlank(userDto.getWxUnionId())) { -// userDto.setWxUnionId(null); -// } -// UserGridRelationDTO userGridRelation = formDto.getUserGridRelation(); -// -// String userId = userDto.getId(); -// UserEntity oldEntity = this.baseDao.selectById(userId); -// -// // 身份证号 -// String identityNo = userDto.getIdentityNo(); -// -// Result parentAndAllDeptDTOResult = adminFeignClient.getParentAndAllDept(String.valueOf(userGridRelation.getGridId())); -// if (!parentAndAllDeptDTOResult.success()) { -// return new Result().error(parentAndAllDeptDTOResult.getMsg()); -// } -// if (YesOrNoEnum.YES.value().equals(userDto.getPartyFlag())) { -// PartyMembersEntity partyMembersEntity = new PartyMembersEntity(); -// partyMembersEntity.setAllDeptNames(parentAndAllDeptDTOResult.getData().getAllDeptNames()); -// partyMembersEntity.setAllDeptIds(parentAndAllDeptDTOResult.getData().getAllDeptIds()); -// partyMembersEntity.setParentDeptNames(parentAndAllDeptDTOResult.getData().getParentDeptNames()); -// partyMembersEntity.setParentDeptIds(parentAndAllDeptDTOResult.getData().getParentDeptIds()); -// partyMembersEntity.setGridId(userGridRelation.getGridId()); -// partyMembersEntity.setGridName(userGridRelation.getGrid()); -// partyMembersEntity.setRegistFlag(YesOrNoEnum.YES.value()); -// partyMembersEntity.setRegistTime(oldEntity.getRegisterTime()); -// QueryWrapper partyWrapper = new QueryWrapper<>(); -// partyWrapper.eq(UserFieldConsant.IDENTITY_NO, identityNo) -// .eq(UserFieldConsant.REAL_NAME, userDto.getRealName()); -// int selectCount = this.partyMembersDao.selectCount(partyWrapper); -// //用户认证历史 -// UserAuthenticateHistoryEntity userAuthenticateHistoryEntity = new UserAuthenticateHistoryEntity(); -// if (selectCount == NumConstant.ZERO) { -// // 党员库中没有,存进党员认证失败表 -// PartyAuthenticationFailedEntity authenticationFailedEntity = ConvertUtils.sourceToTarget(partyMembersEntity, PartyAuthenticationFailedEntity.class); -// authenticationFailedEntity.setUserId(userId); -// authenticationFailedEntity.setState(Integer.parseInt(YesOrNoEnum.NO.value())); -// authenticationFailedEntity.setAddress(userDto.getAddress()); -// authenticationFailedEntity.setRealName(userDto.getRealName()); -// authenticationFailedEntity.setMobile(userDto.getMobile()); -// authenticationFailedEntity.setIdentityNo(identityNo); -// authenticationFailedEntity.setRegistTime(oldEntity.getRegisterTime()); -// partyAuthenticationFailedDao.insert(authenticationFailedEntity); -// -// userDto.setState(AppUserStatesEnum.STATE_COMPLETED_INFORMATION_PENDING_REVIEW.value()); -// userDto.setPartyFlag(YesOrNoEnum.NO.value());//是否是党员(0-否,1-是) 认证失败:0 -// userAuthenticateHistoryEntity.setAuthenticatedFlag(YesOrNoEnum.NO.value()); -// } else { -// UpdateWrapper partyUpdate = new UpdateWrapper<>(); -// partyUpdate.eq(UserFieldConsant.IDENTITY_NO, identityNo) -// .eq(UserFieldConsant.REAL_NAME, userDto.getRealName()); -// this.partyMembersDao.update(partyMembersEntity, partyUpdate); -// userAuthenticateHistoryEntity.setAuthenticatedFlag(YesOrNoEnum.YES.value()); -// userDto.setPartyFlag(YesOrNoEnum.YES.value());//是否是党员(0-否,1-是) 认证失败:0 -// userDto.setRegisterTime(new Date());// 认证成功之后更新认证时间 -// //认证成功党员 信息审核通过 -// userDto.setState(AppUserStatesEnum.STATE_INFORMATION_PASSED.value()); -// } -// //插入用户认证历史表 -// userAuthenticateHistoryEntity.setUserId(userId); -// userAuthenticateHistoryEntity.setMobile(userDto.getMobile()); -// userAuthenticateHistoryEntity.setRealName(userDto.getRealName()); -// userAuthenticateHistoryEntity.setAddress(userDto.getAddress()); -// userAuthenticateHistoryEntity.setRemark(userDto.getRemark()); -// userAuthenticateHistoryEntity.setAuthenticatedType(AuthenticatedConsant.partyAuth); // 新维护的 认证类别(0-居民认证,1-党员认证,2-志愿者认证) -// userAuthenticateHistoryDao.insert(userAuthenticateHistoryEntity); -// } else { -// if (oldEntity.getState().equals(AppUserStatesEnum.STATE_INFORMATION_NOT_PASSED.value())) { -// userDto.setState(AppUserStatesEnum.STATE_COMPLETED_INFORMATION_PENDING_REVIEW.value()); -// } -// } -// // 昵称前缀 -// String nicknamePrefix = "网格长-"; -// if (!oldEntity.getNickname().startsWith(nicknamePrefix)) { -// nicknamePrefix = userDto.getRoad().concat("-"); -// } -// // 姓 -// String lastName = userDto.getRealName().substring(NumConstant.ZERO, NumConstant.ONE); -// userDto.setLastName(lastName); -// userDto.setNickname(nicknamePrefix.concat(lastName).concat(UserSexEnum.FEMALE.sex().equals(userDto.getSex()) ? "女士" : "先生")); -// -// //保存用户居住地所在网格,及其他冗余字段。 -// userDto.setAllDeptIds(parentAndAllDeptDTOResult.getData().getAllDeptIds()); -// userDto.setAllDeptNames(parentAndAllDeptDTOResult.getData().getAllDeptNames()); -// userDto.setParentDeptIds(parentAndAllDeptDTOResult.getData().getParentDeptIds()); -// userDto.setParentDeptNames(parentAndAllDeptDTOResult.getData().getParentDeptNames()); -// -// UserEntity userEntity = ConvertUtils.sourceToTarget(userDto, UserEntity.class); -// boolean updateUser = this.updateById(userEntity); -// if (!updateUser) { -// throw new RenException("保存用户信息异常"); -// } -// -// UserGridRelationDTO relationInfo = userGridRelationService.getUserRelationInfo(userEntity.getId(), userGridRelation.getGridId()); -// userDto.setLeaderFlag(relationInfo.getLeaderFlag()); -// userDto.setFaceImg(oldEntity.getFaceImg()); -// return result.ok(userDto); -// } /** * 获取居民详情(已认证或待认证(提交信息待审核)的居民用户) @@ -1011,6 +937,44 @@ public class UserServiceImpl extends BaseServiceImpl implem return new Result>().ok(baseDao.selectListGridUserResultDTO(gridIdList)); } + @Override + public UserDTO updateWxInfo(UserDTO userDto) { + + // 查询此用户是否已经注册并且完善了用户信息 + UserDTO findUser = this.selectUserByWxInfo(userDto.getWxOpenId(), userDto.getWxUnionId()); + if (null == findUser) { + throw new RenException("无法匹配用户信息,请先注册"); + } + // 新用户id + String userId = userDto.getId(); + String oldUserId = findUser.getId(); + + // ID相同 + if (oldUserId.equals(userId)) { + findUser.setFaceImg(userDto.getFaceImg()); + findUser.setNickname(userDto.getNickname()); + findUser.setSex(userDto.getSex()); + findUser.setWxOpenId(userDto.getWxOpenId()); + findUser.setWxUnionId(userDto.getWxUnionId()); + } else { + // 两个用户对象id不同,表示迁移小程序后,老用户的微信号生成了新的用户,需要删除新用户 + baseDao.deleteById(userId); + + if (findUser.getState().equals(AppUserStatesEnum.STATE_REGISTERED.value())) { + findUser.setFaceImg(userDto.getFaceImg()); + findUser.setSex(userDto.getSex()); + findUser.setNickname(userDto.getNickname()); + } + + findUser.setWxOpenId(userDto.getWxOpenId()); + + } + this.update(findUser); + + return findUser; + + } + /** * @param formDTO * @return com.elink.esua.epdc.commons.tools.utils.Result