| @@ -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<String, String> 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<String, String> 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 { | |||