From 844bbf85e83d13b8085c01f7656a720eeb88833b Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Wed, 16 Oct 2019 14:39:05 +0800 Subject: [PATCH] =?UTF-8?q?[b=E7=AB=AF][=E4=BF=AE=E6=94=B9]:b=E7=AB=AF?= =?UTF-8?q?=E6=8E=88=E6=9D=83=E6=89=8B=E6=9C=BA=E5=8F=B7=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/controller/WxInfoController.java | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) 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 {