|
|
@ -793,20 +793,7 @@ public class AppUserServiceImpl implements AppUserService { |
|
|
|
return new Result().error(verifyResult.getMsg()); |
|
|
|
} |
|
|
|
String userState = verifyResult.getData(); |
|
|
|
/** |
|
|
|
* 代码说明: |
|
|
|
* 小程序端用户完善信息界面,提交数据前会调用{@link com.elink.esua.epdc.controller.ApiAppUserController#checkWxUnionId(TokenDto)} |
|
|
|
* 获取用户是否已绑定了微信unionId |
|
|
|
* 如果用户保存过unionId,前端不会再上送encryptedData,wxCode,iv这三个参数。 |
|
|
|
*/ |
|
|
|
if (StringUtils.isNotBlank(infoDto.getWxCode())) { |
|
|
|
String sessionKey = this.getUserSessionKey(infoDto.getWxCode()); |
|
|
|
WxMaUserInfo wxMaUserInfo = wxMaServiceUtils.normalWxMaService().getUserService().getUserInfo(sessionKey, infoDto.getEncryptedData(), infoDto.getIv()); |
|
|
|
if (StringUtils.isBlank(wxMaUserInfo.getUnionId())) { |
|
|
|
return new Result().error("解析微信开放平台ID失败"); |
|
|
|
} |
|
|
|
userDto.setWxUnionId(wxMaUserInfo.getUnionId()); |
|
|
|
} |
|
|
|
userDto.setWxUnionId(getWxUnionId(infoDto.getWxCode(), infoDto.getIv(), infoDto.getEncryptedData())); |
|
|
|
|
|
|
|
UserGridRelationDTO userGrid = this.packageUserGridRelationInfo(infoDto.getGridId()); |
|
|
|
EpdcCompleteAppUserDTO completeAppUserDto = ConvertUtils.sourceToTarget(userDto, EpdcCompleteAppUserDTO.class); |
|
|
@ -851,6 +838,32 @@ public class AppUserServiceImpl implements AppUserService { |
|
|
|
return new Result().ok(authorizationDto); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 解析微信用户unionid |
|
|
|
* <p>代码说明: |
|
|
|
* 小程序端用户完善信息界面,提交数据前会调用{@link com.elink.esua.epdc.controller.ApiAppUserController#checkWxUnionId(TokenDto)} |
|
|
|
* 获取用户是否已绑定了微信unionId |
|
|
|
* 如果用户保存过unionId,前端不会再上送encryptedData,wxCode,iv这三个参数。</p> |
|
|
|
* |
|
|
|
* @param wxCode |
|
|
|
* @param iv |
|
|
|
* @param encryptedData |
|
|
|
* @return java.lang.String |
|
|
|
* @author work@yujt.net.cn |
|
|
|
* @date 2020/2/28 14:51 |
|
|
|
*/ |
|
|
|
private String getWxUnionId(String wxCode, String iv, String encryptedData) { |
|
|
|
if (StringUtils.isBlank(wxCode) || StringUtils.isBlank(iv) || StringUtils.isBlank(encryptedData)) { |
|
|
|
return null; |
|
|
|
} |
|
|
|
String sessionKey = this.getUserSessionKey(wxCode); |
|
|
|
WxMaUserInfo wxMaUserInfo = wxMaServiceUtils.normalWxMaService().getUserService().getUserInfo(sessionKey, encryptedData, iv); |
|
|
|
if (null == wxMaUserInfo || StringUtils.isBlank(wxMaUserInfo.getUnionId())) { |
|
|
|
throw new RenException("解析微信数据失败,请刷新后重试"); |
|
|
|
} |
|
|
|
return wxMaUserInfo.getUnionId(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public Result<EpdcCompleteUserInfoDTO> prepareCompleteUserInfo(TokenDto tokenDto) { |
|
|
|
|
|
|
@ -1013,7 +1026,10 @@ public class AppUserServiceImpl implements AppUserService { |
|
|
|
} |
|
|
|
} catch (WxErrorException e) { |
|
|
|
e.printStackTrace(); |
|
|
|
throw new RenException("微信编码异常,请刷新页面后重试"); |
|
|
|
if (e.getError().getErrorCode() == 40163) { |
|
|
|
throw new RenException("禁止重复提交,请刷新页面后重试"); |
|
|
|
} |
|
|
|
throw new RenException(e.getError().getErrorMsg()); |
|
|
|
} |
|
|
|
return null; |
|
|
|
} |
|
|
|