Browse Source

优化代码及部分异常判断

dev
yujintao 6 years ago
parent
commit
cf6f12c5f2
  1. 46
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java

46
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java

@ -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前端不会再上送encryptedDatawxCodeiv这三个参数
*/
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前端不会再上送encryptedDatawxCodeiv这三个参数</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;
}

Loading…
Cancel
Save