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 c7b33fa9..89aefe60 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 @@ -603,5 +603,13 @@ public interface UserFeignClient { */ @GetMapping("app-user/epdc-app/volunteerinfo/tags") Result> getVolunteerTags(); - + /** + * @Description 检查用户重复信息 + * @Author songyunpeng + * @Date 2021/4/9 + * @Param [wxMaUserInfo] + * @return java.lang.String + **/ + @PostMapping("app-user/user/checkRepeatUser") + Result checkRepeatUser(CheckRepeatUserFormDTO checkRepeatUserFormDTO); } 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 e49cd132..43f22f76 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 @@ -10,7 +10,6 @@ import com.elink.esua.epdc.dto.epdc.form.v2.EpdcCompleteVolunteerInfoV2FormDTO; import com.elink.esua.epdc.dto.epdc.result.*; import com.elink.esua.epdc.feign.UserFeignClient; import org.springframework.stereotype.Component; -import org.springframework.web.bind.annotation.PathVariable; import java.util.List; @@ -293,4 +292,9 @@ public class UserFeignClientFallback implements UserFeignClient { public Result> getVolunteerTags() { return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "getVolunteerTags", null); } + + @Override + public Result checkRepeatUser(CheckRepeatUserFormDTO checkRepeatUserFormDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "checkRepeatUser", checkRepeatUserFormDTO); + } } 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 b0f3bd34..04c43c32 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 @@ -815,6 +815,11 @@ public class AppUserServiceImpl implements AppUserService { return new Result().error("解析微信开放平台ID失败"); } userDto.setWxUnionId(wxMaUserInfo.getUnionId()); + //检验志愿者去哪儿 和 居民端 用户重复问题 + String userId = this.checkRepeatUser(wxMaUserInfo); + if(StringUtils.isNotBlank(userId)){ + userDto.setId(userId); + } } // 党员提交,验证身份证号 @@ -898,6 +903,28 @@ public class AppUserServiceImpl implements AppUserService { //获取用户认证网格ID - 积分使用 - end return new Result().ok(authorizationDto); } + /** + * @Description 检验用户重复问题,并返回合并后的userId + * @Author songyunpeng + * @Date 2021/4/9 + * @Param [wxMaUserInfo] + * @return void + **/ + private String checkRepeatUser(WxMaUserInfo wxMaUserInfo) { + String unionId = wxMaUserInfo.getUnionId(); + String openId = wxMaUserInfo.getOpenId(); + if(StringUtils.isBlank(unionId) || StringUtils.isBlank(openId)){ + return ""; + } + CheckRepeatUserFormDTO checkRepeatUserFormDTO = new CheckRepeatUserFormDTO(); + checkRepeatUserFormDTO.setOpenId(openId); + checkRepeatUserFormDTO.setUnionId(unionId); + Result userIdResult = userFeignClient.checkRepeatUser(checkRepeatUserFormDTO); + if(userIdResult.success()){ + userIdResult.getData(); + } + return ""; + } @Override public Result prepareCompleteUserInfo(TokenDto tokenDto) { @@ -1378,6 +1405,11 @@ public class AppUserServiceImpl implements AppUserService { } userDto.setWxUnionId(wxMaUserInfo.getUnionId()); userDto.setFaceImg(wxMaUserInfo.getAvatarUrl()); + //检验志愿者去哪儿 和 居民端 用户重复问题 + String unionUserId = this.checkRepeatUser(wxMaUserInfo); + if(StringUtils.isNotBlank(unionUserId)){ + userDto.setId(unionUserId); + } } } EpdcCompleteAppUserDTO completeAppUserDto = ConvertUtils.sourceToTarget(userDto, EpdcCompleteAppUserDTO.class); @@ -1419,7 +1451,12 @@ public class AppUserServiceImpl implements AppUserService { @Override public Result getUserWxPhone(EpdcAppUserMaInfoFormDTO formDto) { try { - WxMaService wxMaService = wxMaServiceUtils.normalWxMaService(); + WxMaService wxMaService; + if(StringUtils.isNotBlank(formDto.getType()) && "volunteer".equals(formDto.getType())){ + wxMaService = wxMaServiceUtils.volunteerWxMaService(); + } else { + wxMaService = wxMaServiceUtils.normalWxMaService(); + } WxMaJscode2SessionResult wxMaJscode2SessionResult = wxMaService.jsCode2SessionInfo(formDto.getWxCode()); WxMaPhoneNumberInfo phoneNoInfo = wxMaService.getUserService().getPhoneNoInfo(wxMaJscode2SessionResult.getSessionKey(), formDto.getEncryptedData(), formDto.getIv()); if (null != phoneNoInfo) { diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/CheckRepeatUserFormDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/CheckRepeatUserFormDTO.java new file mode 100644 index 00000000..ccf1a9ff --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/CheckRepeatUserFormDTO.java @@ -0,0 +1,19 @@ +package com.elink.esua.epdc.dto.epdc.form; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description + * @Author syp + * @Date 2019/11/22 13:54 + */ +@Data +public class CheckRepeatUserFormDTO implements Serializable { + private static final long serialVersionUID = -4267811821756082365L; + + private String openId; + + private String unionId; +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/UserController.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/UserController.java index 95814a60..333159ce 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/UserController.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/UserController.java @@ -31,6 +31,7 @@ import com.elink.esua.epdc.dto.PartyMemberModifyFormDTO; import com.elink.esua.epdc.dto.UserDTO; import com.elink.esua.epdc.dto.UserPointResultDTO; import com.elink.esua.epdc.dto.UserPointsDTO; +import com.elink.esua.epdc.dto.epdc.form.CheckRepeatUserFormDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcUserPointsFormDTO; import com.elink.esua.epdc.enums.AppUserStatesEnum; import com.elink.esua.epdc.excel.UserExcel; @@ -340,4 +341,17 @@ public class UserController { return userService.updateUserPoints(epdcUserPointsFormDTO); } + /** + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @Description 更新用户积分信息 + * @Author songyunpeng + * @Date 2020/4/29 + * @Param [dto] + **/ + @PostMapping(value = "checkRepeatUser") + Result checkRepeatUser(@RequestBody CheckRepeatUserFormDTO checkRepeatUserFormDTO){ + return userService.checkRepeatUser(checkRepeatUserFormDTO); + } + + } 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 5f13e93c..239d8a52 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 @@ -417,4 +417,12 @@ public interface UserService extends BaseService { * @return com.elink.esua.epdc.commons.tools.utils.Result **/ Result getUserGridIdByUserId(String userId); + /** + * @Description 检查完善信息 合并重复用户 + * @Author songyunpeng + * @Date 2021/4/9 + * @Param [checkRepeatUserFormDTO] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + Result checkRepeatUser(CheckRepeatUserFormDTO checkRepeatUserFormDTO); } 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 72c7689a..6b9b911a 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 @@ -1465,4 +1465,26 @@ public class UserServiceImpl extends BaseServiceImpl implem public Result getUserGridIdByUserId(String userId) { return new Result().ok(baseDao.getUserGridIdByUserId(userId)); } + + @Override + public Result checkRepeatUser(CheckRepeatUserFormDTO checkRepeatUserFormDTO) { + String unionId = checkRepeatUserFormDTO.getUnionId(); + String openId = checkRepeatUserFormDTO.getOpenId(); + //根据unionId获取用户 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("UNION_ID", unionId); + UserEntity unionIdUserEntity = baseDao.selectOne(wrapper); + //根据openId获取用户 + QueryWrapper wrapper2 = new QueryWrapper<>(); + wrapper2.eq("OPEN_ID", openId); + UserEntity openIdUserEntity = baseDao.selectOne(wrapper2); + //代表两条用户记录 + if(unionIdUserEntity!=null && openIdUserEntity!=null && !unionIdUserEntity.getId().equals(openIdUserEntity.getIdentityNo())){ + CachingUserInfoDTO oIdUser = ConvertUtils.sourceToTarget(openIdUserEntity,CachingUserInfoDTO.class); + CachingUserInfoDTO uIdUser = ConvertUtils.sourceToTarget(unionIdUserEntity,CachingUserInfoDTO.class); + this.combineUsers(oIdUser,uIdUser,openId); + return new Result().ok(unionIdUserEntity.getId()); + } + return new Result().ok(""); + } }