|
|
|
@ -612,11 +612,13 @@ public class AppUserServiceImpl implements AppUserService { |
|
|
|
try { |
|
|
|
wxMaJscode2SessionResult = wxMaServiceUtils.normalWxMaService().jsCode2SessionInfo(wxCode); |
|
|
|
} catch (WxErrorException e) { |
|
|
|
e.printStackTrace(); |
|
|
|
log.error("->[getMaOpenId]::error[{}]", "解析微信code失败"); |
|
|
|
if (e.getError().getErrorCode() == 40163) { |
|
|
|
throw new RenException("禁止重复提交,请刷新页面后重试"); |
|
|
|
} |
|
|
|
} |
|
|
|
if (null == wxMaJscode2SessionResult) { |
|
|
|
throw new RenException("解析微信用户信息失败"); |
|
|
|
} else if (StringUtils.isBlank(wxMaJscode2SessionResult.getOpenid())) { |
|
|
|
if (null == wxMaJscode2SessionResult || StringUtils.isBlank(wxMaJscode2SessionResult.getOpenid())) { |
|
|
|
throw new RenException("获取微信openid失败"); |
|
|
|
} |
|
|
|
return wxMaJscode2SessionResult; |
|
|
|
@ -900,26 +902,30 @@ public class AppUserServiceImpl implements AppUserService { |
|
|
|
String wxCode = infoDto.getWxCode(); |
|
|
|
String iv = infoDto.getIv(); |
|
|
|
String encryptedData = infoDto.getEncryptedData(); |
|
|
|
if (StringUtils.isNotBlank(wxCode) && StringUtils.isNotBlank(iv) && StringUtils.isNotBlank(encryptedData)) { |
|
|
|
WxMaUserInfo wxMaUserInfo = null; |
|
|
|
String decrypt = null; |
|
|
|
try { |
|
|
|
decrypt = WxMaCryptUtils.decrypt(this.getUserSessionKey(wxCode), encryptedData, iv); |
|
|
|
if (StringUtils.isNotBlank(decrypt)) { |
|
|
|
wxMaUserInfo = JSONObject.parseObject(decrypt, WxMaUserInfo.class); |
|
|
|
if (StringUtils.isNotBlank(wxCode)) { |
|
|
|
// 解析微信用户openid
|
|
|
|
WxMaJscode2SessionResult maJscode2SessionResult = getWxMaUser(wxCode); |
|
|
|
userDto.setWxOpenId(maJscode2SessionResult.getOpenid()); |
|
|
|
// 解析微信用户加密数据
|
|
|
|
if (StringUtils.isNotBlank(iv) && StringUtils.isNotBlank(encryptedData)) { |
|
|
|
WxMaUserInfo wxMaUserInfo = null; |
|
|
|
String decrypt = null; |
|
|
|
try { |
|
|
|
decrypt = WxMaCryptUtils.decrypt(maJscode2SessionResult.getSessionKey(), encryptedData, iv); |
|
|
|
if (StringUtils.isNotBlank(decrypt)) { |
|
|
|
wxMaUserInfo = JSONObject.parseObject(decrypt, WxMaUserInfo.class); |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
log.error("解析或组装用户微信信息失败,用户id:::::{},解密数据:::::{}", userId, decrypt); |
|
|
|
log.error(e.getMessage()); |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
log.error("解析或组装用户微信信息失败,用户id:::::{},解密数据:::::{}", userId, decrypt); |
|
|
|
log.error(e.getMessage()); |
|
|
|
} |
|
|
|
if (null == wxMaUserInfo || StringUtils.isBlank(wxMaUserInfo.getUnionId())) { |
|
|
|
throw new RenException("解析微信数据失败,请刷新后重试"); |
|
|
|
if (null == wxMaUserInfo || StringUtils.isBlank(wxMaUserInfo.getUnionId())) { |
|
|
|
throw new RenException("解析微信数据失败,请刷新后重试"); |
|
|
|
} |
|
|
|
userDto.setWxUnionId(wxMaUserInfo.getUnionId()); |
|
|
|
userDto.setFaceImg(wxMaUserInfo.getAvatarUrl()); |
|
|
|
} |
|
|
|
|
|
|
|
userDto.setWxUnionId(wxMaUserInfo.getUnionId()); |
|
|
|
userDto.setFaceImg(wxMaUserInfo.getAvatarUrl()); |
|
|
|
} |
|
|
|
|
|
|
|
EpdcCompleteAppUserDTO completeAppUserDto = ConvertUtils.sourceToTarget(userDto, EpdcCompleteAppUserDTO.class); |
|
|
|
return this.packageUserCompleteInfo(completeAppUserDto, userState); |
|
|
|
} |
|
|
|
|