From 0e5b2ecfb6448728f9418fb0ddd673edc1b52632 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Mon, 10 Mar 2025 13:38:23 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=89=8B=E6=9C=BA=E5=8F=B7=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/user/UserAuthorizationController.java | 7 ++++++- .../java/com/czg/account/dto/auth/GetPhoneDTO.java | 12 ++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/cash-api/account-server/src/main/java/com/czg/controller/user/UserAuthorizationController.java b/cash-api/account-server/src/main/java/com/czg/controller/user/UserAuthorizationController.java index bb25a8fe..c45fe799 100644 --- a/cash-api/account-server/src/main/java/com/czg/controller/user/UserAuthorizationController.java +++ b/cash-api/account-server/src/main/java/com/czg/controller/user/UserAuthorizationController.java @@ -37,7 +37,12 @@ public class UserAuthorizationController { return CzgResult.success(userAuthorizationService.login(userAuthorizationLoginDTO)); } - @PostMapping + /** + * 获取手机号 + * @param getPhoneDTO 获取手机号信息 + * @return 手机号 + */ + @PostMapping("/phone") public CzgResult getPhone(@RequestBody @Validated GetPhoneDTO getPhoneDTO) { return CzgResult.success(userAuthorizationService.getPhone(getPhoneDTO)); } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/auth/GetPhoneDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/auth/GetPhoneDTO.java index 43e3f453..b906071c 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/auth/GetPhoneDTO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/auth/GetPhoneDTO.java @@ -1,5 +1,6 @@ package com.czg.account.dto.auth; +import jakarta.validation.constraints.NotBlank; import lombok.Data; /** @@ -10,8 +11,19 @@ public class GetPhoneDTO { /** * 来源 alipay支付宝 wechat微信 */ + @NotBlank(message = "来源不能为空") private String source; + /** + * 数据 + */ + @NotBlank(message = "数据不能为空") private String encryptedData; + /** + * 获取到的凭证code + */ private String code; + /** + * 仅微信传递 + */ private String iv; } From 79e0163e6855af041934558b9051e00c58bff4ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Mon, 10 Mar 2025 13:40:42 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=89=8B=E6=9C=BA=E5=8F=B7=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/UserAuthorizationServiceImpl.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/UserAuthorizationServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/UserAuthorizationServiceImpl.java index 15b7aa3d..470afc65 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/UserAuthorizationServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/UserAuthorizationServiceImpl.java @@ -2,10 +2,8 @@ package com.czg.service.account.service.impl; import cn.binarywang.wx.miniapp.util.crypt.WxMaCryptUtils; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson2.JSONObject; -import com.alipay.api.AlipayApiException; import com.czg.account.dto.auth.GetPhoneDTO; import com.czg.account.dto.auth.LoginTokenDTO; import com.czg.account.dto.auth.UserAuthorizationLoginDTO; @@ -22,7 +20,6 @@ import com.czg.sa.StpKit; import com.czg.service.account.util.AlipayUtil; import com.czg.service.account.util.WechatAuthUtil; import lombok.extern.slf4j.Slf4j; -import org.checkerframework.checker.units.qual.C; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -56,16 +53,20 @@ public class UserAuthorizationServiceImpl implements UserAuthorizationService { public String getPhone(GetPhoneDTO phoneDTO) { String mobile; String openId; - UserInfo userInfo; + UserInfo userInfo = null; if (UserAuthSourceEnum.ALIPAY.getValue().equals(phoneDTO.getSource())) { openId = alipayUtil.getOpenId(phoneDTO.getCode(), true); mobile = alipayUtil.getMobile(phoneDTO.getEncryptedData()); - userInfo = userInfoService.queryChain().eq(UserInfo::getWechatOpenId, openId).one(); + if (StrUtil.isNotBlank(openId)) { + userInfo = userInfoService.queryChain().eq(UserInfo::getWechatOpenId, openId).one(); + } } else { JSONObject session = wechatAuthUtil.getSession(phoneDTO.getCode()); String sessionKey = session.getString("session_key"); openId = session.getString("openid"); - userInfo = userInfoService.queryChain().eq(UserInfo::getAlipayOpenId, openId).one(); + if (StrUtil.isNotBlank(openId)) { + userInfo = userInfoService.queryChain().eq(UserInfo::getAlipayOpenId, openId).one(); + } String data = WxMaCryptUtils.decrypt(sessionKey, phoneDTO.getEncryptedData(), phoneDTO.getIv()); JSONObject jsonObject = JSONObject.parseObject(data); if (jsonObject.containsKey("phoneNumber")) { @@ -74,6 +75,11 @@ public class UserAuthorizationServiceImpl implements UserAuthorizationService { throw new ApiNotPrintException("手机号获取失败"); } } + + if (userInfo != null) { + userInfo.setPhone(mobile); + userInfoService.updateById(userInfo); + } return mobile; }