|
|
@ -154,32 +154,21 @@ public class AppUserServiceImpl implements AppUserService { |
|
|
|
EpdcAppAuthorizationDTO authorization = new EpdcAppAuthorizationDTO(); |
|
|
|
// 用户未注册
|
|
|
|
if (null == userDto) { |
|
|
|
authorization.setUserState(AppUserStateEnum.UNREGISTERED.value()); |
|
|
|
authorization.setUserState(AppUserStatesEnum.STATE_NOT_REGISTERED.value()); |
|
|
|
return new Result().ok(authorization); |
|
|
|
} |
|
|
|
String state = userDto.getState(); |
|
|
|
// 用户注册审核失败
|
|
|
|
if (AppUserAuditStateEnum.AUDIT_FAILURE.value().equals(state)) { |
|
|
|
authorization.setUserState(AppUserStateEnum.AUDIT_FAILURE.value()); |
|
|
|
Result result = new Result().ok(authorization); |
|
|
|
result.setMsg(userDto.getRemark()); |
|
|
|
return result; |
|
|
|
} |
|
|
|
// 用户提交注册、正在等待审核
|
|
|
|
else if (AppUserAuditStateEnum.UNDER_AUDIT.value().equals(state)) { |
|
|
|
authorization.setUserState(AppUserStateEnum.UNDER_AUDIT.value()); |
|
|
|
return new Result().ok(authorization); |
|
|
|
} |
|
|
|
// 用户已注册且审核通过,正常登录系统
|
|
|
|
else if (AppUserAuditStateEnum.AUDIT_SUCCESS.value().equals(state)) { |
|
|
|
TokenDto tokenDto = ConvertUtils.sourceToTarget(userDto, TokenDto.class); |
|
|
|
tokenDto.setUserId(userDto.getId()); |
|
|
|
authorization = this.packageEpdcAppAuthorization(tokenDto, userDto.getGrid(), AppUserStateEnum.REGISTERED.value()); |
|
|
|
|
|
|
|
return new Result().ok(authorization); |
|
|
|
} else { |
|
|
|
return new Result().error("Login failed"); |
|
|
|
String state = userDto.getState(); |
|
|
|
authorization = this.packageEpdcAppAuthorization(tokenDto, userDto.getGrid(), userDto.getState()); |
|
|
|
|
|
|
|
Result result = new Result().ok(authorization); |
|
|
|
// 已注册,未完善信息
|
|
|
|
if (AppUserStatesEnum.STATE_INFORMATION_NOT_PASSED.value().equals(state)) { |
|
|
|
result.setMsg(userDto.getRemark()); |
|
|
|
} |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -603,7 +592,10 @@ public class AppUserServiceImpl implements AppUserService { |
|
|
|
return new Result<EpdcAppAuthorizationDTO>().error(userResult.getMsg()); |
|
|
|
} |
|
|
|
|
|
|
|
return this.dealWithUserRegisterState(userResult.getData(), openId, unionId); |
|
|
|
// IP地址
|
|
|
|
HttpServletRequest request = HttpContextUtils.getHttpServletRequest(); |
|
|
|
|
|
|
|
return this.dealWithUserRegisterState(userResult.getData(), openId, unionId, IpUtils.getIpAddr(request)); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -614,37 +606,41 @@ public class AppUserServiceImpl implements AppUserService { |
|
|
|
* @author liuchuang |
|
|
|
* @since 2019/10/25 12:49 |
|
|
|
*/ |
|
|
|
private Result<EpdcAppAuthorizationDTO> dealWithUserRegisterState(EpdcUserRegisterInfoResultDTO userResult, |
|
|
|
String openId, String unionId) { |
|
|
|
private Result<EpdcAppAuthorizationDTO> dealWithUserRegisterState(EpdcUserRegisterInfoResultDTO userResult, String openId, String unionId, String ipAddress) { |
|
|
|
EpdcUserRegisterBindGridFormDTO registerBindGridFormDto = new EpdcUserRegisterBindGridFormDTO(); |
|
|
|
// 用户注册状态 0-未注册未绑定网格,1-已注册未绑定当前网格,2-已注册已绑定当前网格
|
|
|
|
Integer registerState = userResult.getRegisterState(); |
|
|
|
UserDTO registeredUser = userResult.getUserDTO(); |
|
|
|
Long gridId = userResult.getGridId(); |
|
|
|
// 未注册
|
|
|
|
if (NumConstant.ZERO == userResult.getRegisterState()) { |
|
|
|
if (NumConstant.ZERO == registerState) { |
|
|
|
// 组装用户注册信息
|
|
|
|
registerBindGridFormDto.setRegisterState(NumConstant.ZERO); |
|
|
|
registerBindGridFormDto.setUserDTO(this.packageUserInfo(openId, unionId)); |
|
|
|
registerBindGridFormDto.setUserDTO(this.packageUserInfo(openId, unionId, ipAddress)); |
|
|
|
} |
|
|
|
// 已注册未绑定当前网格
|
|
|
|
else if (NumConstant.ONE == userResult.getRegisterState()) { |
|
|
|
else if (NumConstant.ONE == registerState) { |
|
|
|
registerBindGridFormDto.setRegisterState(NumConstant.ONE); |
|
|
|
registerBindGridFormDto.setUserDTO(userResult.getUserDTO()); |
|
|
|
registerBindGridFormDto.setUserDTO(registeredUser); |
|
|
|
} |
|
|
|
|
|
|
|
// 用户注册或绑定网格
|
|
|
|
if (NumConstant.TWO != userResult.getRegisterState()) { |
|
|
|
if (NumConstant.TWO != registerState) { |
|
|
|
// 组装用户关联网格信息
|
|
|
|
registerBindGridFormDto.setGridRelationDTO(this.packageUserGridRelationInfo(userResult.getGridId())); |
|
|
|
registerBindGridFormDto.setGridRelationDTO(this.packageUserGridRelationInfo(gridId)); |
|
|
|
// 用户并绑定网格
|
|
|
|
Result<EpdcUserRegisterInfoResultDTO> registerBindGridResultDto = userFeignClient.registerOrBindGrid(registerBindGridFormDto); |
|
|
|
if (!registerBindGridResultDto.success()) { |
|
|
|
return new Result<EpdcAppAuthorizationDTO>().error(registerBindGridResultDto.getMsg()); |
|
|
|
} |
|
|
|
userResult = registerBindGridResultDto.getData(); |
|
|
|
registeredUser = userResult.getUserDTO(); |
|
|
|
} |
|
|
|
|
|
|
|
// 已注册已绑定当前网格
|
|
|
|
TokenDto tokenDto = ConvertUtils.sourceToTarget(userResult.getUserDTO(), TokenDto.class); |
|
|
|
tokenDto.setUserId(userResult.getUserDTO().getId()); |
|
|
|
EpdcAppAuthorizationDTO authorization = this.packageEpdcAppAuthorization(tokenDto, userResult.getGrid(), userResult.getUserDTO().getState()); |
|
|
|
TokenDto tokenDto = ConvertUtils.sourceToTarget(registeredUser, TokenDto.class); |
|
|
|
tokenDto.setUserId(registeredUser.getId()); |
|
|
|
tokenDto.setGridId(gridId); |
|
|
|
EpdcAppAuthorizationDTO authorization = this.packageEpdcAppAuthorization(tokenDto, userResult.getGrid(), registeredUser.getState()); |
|
|
|
|
|
|
|
return new Result<EpdcAppAuthorizationDTO>().ok(authorization); |
|
|
|
} |
|
|
@ -657,7 +653,7 @@ public class AppUserServiceImpl implements AppUserService { |
|
|
|
* @author liuchuang |
|
|
|
* @since 2019/10/24 18:16 |
|
|
|
*/ |
|
|
|
private UserDTO packageUserInfo(String openId, String unionId) { |
|
|
|
private UserDTO packageUserInfo(String openId, String unionId, String ipAddress) { |
|
|
|
UserDTO userDto = new UserDTO(); |
|
|
|
userDto.setWxOpenId(openId); |
|
|
|
userDto.setWxUnionId(unionId); |
|
|
@ -665,25 +661,25 @@ public class AppUserServiceImpl implements AppUserService { |
|
|
|
userDto.setFaceImg(USER_FACE); |
|
|
|
userDto.setState(AppUserStatesEnum.STATE_REGISTERED.value()); |
|
|
|
userDto.setPartyFlag(YesOrNoEnum.NO.value()); |
|
|
|
userDto.setLastLoginIp(ipAddress); |
|
|
|
|
|
|
|
Date now = new Date(); |
|
|
|
userDto.setRegisterTime(now); |
|
|
|
userDto.setLastLoginTime(now); |
|
|
|
userDto.setRegisterWay(AppUserRegisterWayEnum.WX.value()); |
|
|
|
userDto.setRegisterSource(AppUserRegisterSourceEnum.WP.value()); |
|
|
|
|
|
|
|
// IP地址
|
|
|
|
HttpServletRequest request = HttpContextUtils.getHttpServletRequest(); |
|
|
|
userDto.setLastLoginIp(IpUtils.getIpAddr(request)); |
|
|
|
userDto.setRegisterSource(AppUserRegisterSourceEnum.WA.value()); |
|
|
|
|
|
|
|
return userDto; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public Result<EpdcAppAuthorizationDTO> completeUserInfo(TokenDto tokenDto, EpdcCompleteUserInfoFormDTO formDto) { |
|
|
|
public Result<EpdcAppAuthorizationDTO> completeUserInfo(TokenDto tokenDto, EpdcCompleteUserInfoFormDTO infoDto) { |
|
|
|
|
|
|
|
UserDTO userDto = ConvertUtils.sourceToTarget(infoDto, UserDTO.class); |
|
|
|
|
|
|
|
// 党员提交,验证身份证号
|
|
|
|
if (YesOrNoEnum.YES.value().equals(formDto.getPartyFlag())) { |
|
|
|
String identityNo = formDto.getIdentityNo(); |
|
|
|
if (YesOrNoEnum.YES.value().equals(userDto.getPartyFlag())) { |
|
|
|
String identityNo = userDto.getIdentityNo(); |
|
|
|
if (StringUtils.isBlank(identityNo)) { |
|
|
|
return new Result().error("身份证号不能为空"); |
|
|
|
} else { |
|
|
@ -694,9 +690,9 @@ public class AppUserServiceImpl implements AppUserService { |
|
|
|
} |
|
|
|
} |
|
|
|
// 验证手机号
|
|
|
|
this.checkSmsCode(formDto.getMobile(), formDto.getSmsCode()); |
|
|
|
this.checkSmsCode(userDto.getMobile(), infoDto.getSmsCode()); |
|
|
|
|
|
|
|
|
|
|
|
UserDTO userDto = ConvertUtils.sourceToTarget(formDto, UserDTO.class); |
|
|
|
userDto.setId(tokenDto.getUserId()); |
|
|
|
// 验证用户提交的信息
|
|
|
|
Result verifyResult = userFeignClient.verifyUserCompleteData(userDto); |
|
|
@ -708,19 +704,20 @@ public class AppUserServiceImpl implements AppUserService { |
|
|
|
EpdcAppUserCompleteInfoFormDTO dto = new EpdcAppUserCompleteInfoFormDTO(); |
|
|
|
|
|
|
|
UserGridRelationDTO userGrid = this.packageUserGridRelationInfo(tokenDto.getGridId()); |
|
|
|
userDto = this.packageUserCompleteInfo(formDto, userDto); |
|
|
|
userDto = this.packageUserCompleteInfo(userDto); |
|
|
|
|
|
|
|
dto.setUserDto(userDto); |
|
|
|
dto.setUserGridRelation(userGrid); |
|
|
|
|
|
|
|
Result completeResult = userFeignClient.completeUserInfo(dto); |
|
|
|
Result<UserDTO> completeResult = userFeignClient.completeUserInfo(dto); |
|
|
|
if (!completeResult.success()) { |
|
|
|
return new Result().error(completeResult.getMsg()); |
|
|
|
} |
|
|
|
|
|
|
|
tokenDto.setRealName(userDto.getRealName()); |
|
|
|
tokenDto.setFaceImg(userDto.getFaceImg()); |
|
|
|
tokenDto.setNickname(userDto.getNickname()); |
|
|
|
UserDTO user = completeResult.getData(); |
|
|
|
tokenDto.setRealName(user.getRealName()); |
|
|
|
tokenDto.setNickname(user.getNickname()); |
|
|
|
tokenDto.setMobile(user.getMobile()); |
|
|
|
tokenDto.setPartyFlag(user.getPartyFlag()); |
|
|
|
EpdcAppAuthorizationDTO authorizationDto = this.packageEpdcAppAuthorization(tokenDto, userGrid.getGrid(), userDto.getState()); |
|
|
|
|
|
|
|
return new Result().ok(authorizationDto); |
|
|
@ -738,27 +735,18 @@ public class AppUserServiceImpl implements AppUserService { |
|
|
|
return new Result().error("获取用户信息失败"); |
|
|
|
} |
|
|
|
|
|
|
|
private UserDTO packageUserCompleteInfo(EpdcCompleteUserInfoFormDTO formDto, UserDTO userDto) { |
|
|
|
WxMaJscode2SessionResult wxMaUser = this.getWxMaUser(formDto.getWxCode()); |
|
|
|
|
|
|
|
WxMaUserInfo wxMaUserInfo = wxMaService.getUserService() |
|
|
|
.getUserInfo(wxMaUser.getSessionKey(), formDto.getEncryptedData(), formDto.getIv()); |
|
|
|
|
|
|
|
private UserDTO packageUserCompleteInfo(UserDTO userDto) { |
|
|
|
|
|
|
|
if (YesOrNoEnum.YES.value().equals(userDto.getPartyFlag())) { |
|
|
|
userDto.setState(AppUserStatesEnum.STATE_INFORMATION_PASSED.value()); |
|
|
|
userDto.setSex(IdentityNoUtils.getSex(userDto.getIdentityNo())); |
|
|
|
userDto.setNickname( |
|
|
|
userDto.getRoad().concat("-").concat(userDto.getRealName().substring(NumConstant.ZERO, NumConstant.ONE)) |
|
|
|
.concat(NumConstant.ZERO_STR.equals(userDto.getSex()) ? "女士" : "先生")); |
|
|
|
userDto.setBirthday(DateUtils.parse(IdentityNoUtils.getBirthday(userDto.getIdentityNo()), DateUtils.DATE_PATTERN)); |
|
|
|
userDto.setState(AppUserStatesEnum.STATE_INFORMATION_PASSED.value()); |
|
|
|
} else { |
|
|
|
userDto.setSex(wxMaUserInfo.getGender()); |
|
|
|
userDto.setState(AppUserStatesEnum.STATE_COMPLETED_INFORMATION_PENDING_REVIEW.value()); |
|
|
|
} |
|
|
|
userDto.setNickname( |
|
|
|
formDto.getRoad().concat("-").concat(formDto.getRealName().substring(NumConstant.ZERO, NumConstant.ONE)) |
|
|
|
.concat(NumConstant.ZERO_STR.equals(userDto.getSex()) ? "女士" : "先生") |
|
|
|
); |
|
|
|
userDto.setFaceImg(wxMaUserInfo.getAvatarUrl()); |
|
|
|
userDto.setWxUnionId(wxMaUserInfo.getUnionId()); |
|
|
|
|
|
|
|
PhoneDto phoneDto = PhoneUtil.getPhoneDto(userDto.getMobile()); |
|
|
|
if (phoneDto != null) { |
|
|
@ -832,11 +820,10 @@ public class AppUserServiceImpl implements AppUserService { |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* |
|
|
|
* 根据微信code获取session_key |
|
|
|
* |
|
|
|
* @params [code] |
|
|
|
* @return java.lang.String |
|
|
|
* @params [code] |
|
|
|
* @author liuchuang |
|
|
|
* @since 2019/10/25 16:31 |
|
|
|
*/ |
|
|
|