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 74eb17466..e1c9aa809 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 @@ -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); } 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 64a6ddd90..bc9a208c8 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 @@ -648,16 +648,18 @@ public class UserServiceImpl extends BaseServiceImpl implem // 数据库已有的用户信息 // 查询此用户是否已经注册并且完善了用户信息 - UserDTO findUser = this.selectUserByWxInfo(completeAppUser.getWxOpenId(), completeAppUser.getWxUnionId()); + UserEntity findUser = baseDao.selectById(completeAppUser.getId()); + + /*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); + userEntity.setWxOpenId(StringUtils.isBlank(userEntity.getWxOpenId()) ? null : userEntity.getWxOpenId()); userEntity.setWxUnionId(StringUtils.isBlank(userEntity.getWxUnionId()) ? null : userEntity.getWxUnionId()); userEntity.setFaceImg(StringUtils.isBlank(userEntity.getFaceImg()) ? null : userEntity.getFaceImg()); if (findUser.getState().equals(AppUserStatesEnum.STATE_INFORMATION_NOT_PASSED.value())) {