diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java index 837049653..8ea879603 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java @@ -299,6 +299,7 @@ public class WxInfoController extends BaseController { * @param map * @return */ + @AuthIgnore @PostMapping("/getUserPhone") @ApiOperation(value = "授权后获取用户的手机号", notes="{\"appId\":\"string\",\"encryptedData\":\"string\",\"iv\":\"string\",\"openId\":\"string\",\"session_key\":\"string\"}") public ResultData getUserPhone(@RequestBody Map map) { @@ -321,6 +322,69 @@ public class WxInfoController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "openId 不能为空"); } + WxMaService wxMaService = getWeappService(appId); + + WxAppinfo wxAppinfo = getAppInfo(appId); + try { + // 解密 + WxMaPhoneNumberInfo phoneNoInfo = wxMaService.getUserService().getPhoneNoInfo(session_key, encryptedData, iv); + if (null != phoneNoInfo) { + logger.info(phoneNoInfo.toString()); + String phone = phoneNoInfo.getPhoneNumber(); + resultMap.put("phone", phone); + + MallUserInfo user = mallUserInfoService.getByPhone(phone, wxAppinfo.getTenantId()); + if(user == null) { + return new ResultData(ErrorCode.USER_NO_PERMISSION, resultMap); + } + if (mallUserRoleService.checkIsMobileAdmin(user)) { + resultMap.put("phone", user.getPhone()); + resultMap.put("admin", "1"); + + user.setBopenId(openId); + mallUserInfoService.saveOrUpdate(user); + + return new ResultData(resultMap); + } else { + return new ResultData(ErrorCode.USER_NO_PERMISSION, resultMap); + } + } else { + return new ResultData(ErrorCode.PHONE_DECODE_ERR, resultMap); + } + } catch (Exception e) { + this.logger.error(e.getMessage(), e); + return new ResultData(ErrorCode.DB_FAIL.getCode(), "解密并保存出错", resultMap); + } + } + + + /** + * 授权后获取用户的手机号等信息 + * @param map + * @return + */ + @PostMapping("/getUserPhoneForBuser") + @ApiOperation(value = "登录后授权获取用户的手机号", notes="{\"appId\":\"string\",\"encryptedData\":\"string\",\"iv\":\"string\",\"openId\":\"string\",\"session_key\":\"string\"}") + public ResultData getUserPhoneForBuser(@RequestBody Map map) { + logger.debug(map.toString()); + Map resultMap = new HashMap(); + String appId = map.get("appId"); + String encryptedData = map.get("encryptedData"); + String iv = map.get("iv"); + String openId = map.get("openId"); + String session_key = map.get("session_key"); + + //登录凭证不能为空 + if (StringUtils.isBlank(encryptedData)) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "encryptedData 不能为空"); + } + if (StringUtils.isBlank(iv)) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "iv 不能为空"); + } + if (StringUtils.isBlank(openId)) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "openId 不能为空"); + } + WxMaService wxMaService = getWeappService(appId); WxBuser buser = getBuser(); try {