一键登录接口兼容支付宝

This commit is contained in:
Guoqs
2024-06-14 17:15:36 +08:00
parent 0c74b24210
commit 93706fab1d
9 changed files with 79 additions and 25 deletions

View File

@@ -16,6 +16,7 @@ import com.jsowell.common.util.wxplatform.WXXmlToMapUtil;
import com.jsowell.pile.domain.agentDev.AuditItem;
import com.jsowell.pile.domain.agentDev.CategoryInfo;
import com.jsowell.pile.domain.agentDev.UserInfoSetting;
import com.jsowell.pile.dto.MemberRegisterAndLoginDTO;
import com.jsowell.pile.dto.agentDev.*;
import com.jsowell.pile.service.PileMerchantInfoService;
import com.jsowell.pile.vo.agentDev.AuthInfoVO;
@@ -639,7 +640,13 @@ public class AgentDevService {
String firstLevelMerchantId = pileMerchantInfoService.getFirstLevelMerchantIdByWxAppId(appId);
logger.info("微信一键登录 获取merchantId:{}", firstLevelMerchantId);
// 下面方法有判断 merchantId 是否为空,因此可直接传值
return memberService.memberRegisterAndLogin(phoneNumber, firstLevelMerchantId, openId);
MemberRegisterAndLoginDTO loginDTO = MemberRegisterAndLoginDTO.builder()
.openId(openId)
.firstLevelMerchantId(firstLevelMerchantId)
.mobileNumber(phoneNumber)
.requestSource(dto.getRequestSource())
.build();
return memberService.memberRegisterAndLogin(loginDTO); // 其他一级运营商,微信一键登录
}
/**

View File

@@ -21,6 +21,7 @@ import com.jsowell.common.constant.UserConstants;
import com.jsowell.common.core.page.PageResponse;
import com.jsowell.common.core.redis.RedisCache;
import com.jsowell.common.enums.TitleTypeEnum;
import com.jsowell.common.enums.adapay.AdapayPayChannelEnum;
import com.jsowell.common.enums.adapay.MerchantDelayModeEnum;
import com.jsowell.common.enums.uniapp.BalanceChangesEnum;
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
@@ -132,19 +133,21 @@ public class MemberService {
* @param dto
* @return
*/
public String memberRegisterAndLogin(MemberRegisterAndLoginDTO dto) {
public String memberRegisterAndLoginBySMS(MemberRegisterAndLoginDTO dto) {
// 校验短信验证码 两种情况不能通过校验1-验证码错误2-超时 验证码10分钟有效
checkVerificationCode(dto);
return memberRegisterAndLogin(dto.getMobileNumber(), dto.getMerchantId(), dto.getOpenId());
return memberRegisterAndLogin(dto); // 短信验证码登录
}
/**
* 公共登录注册方法
* @param phoneNumber 手机号
* @param firstLevelMerchantId 商户id
* @return token返给前端
*/
protected String memberRegisterAndLogin(String phoneNumber, String firstLevelMerchantId, String openId) {
protected String memberRegisterAndLogin(MemberRegisterAndLoginDTO dto) {
String phoneNumber = dto.getMobileNumber();
String firstLevelMerchantId = dto.getFirstLevelMerchantId();
String openId = dto.getOpenId();
log.info("公共登录注册方法, phoneNumber:{}, firstLevelMerchantId:{}, openId:{}", phoneNumber, firstLevelMerchantId, openId);
if (StringUtils.isBlank(phoneNumber)) {
throw new BusinessException(ReturnCodeEnum.CODE_GET_MOBILE_NUMBER_BY_CODE_ERROR);
@@ -154,9 +157,10 @@ public class MemberService {
}
// 2024年6月11日15点37分 支付宝没有openid改为不校验openid
// if (StringUtils.isBlank(openId)) {
// throw new BusinessException(ReturnCodeEnum.CODE_OPEN_ID_IS_NULL_ERROR);
// }
// 2024年6月14日17点03分请求来源为微信校验openId
if (AdapayPayChannelEnum.WX_LITE.getValue().equals(dto.getRequestSource()) && StringUtils.isBlank(openId)) {
throw new BusinessException(ReturnCodeEnum.CODE_OPEN_ID_IS_NULL_ERROR);
}
// 查询手机号码是否注册过
MemberBasicInfo memberBasicInfo = memberBasicInfoService.selectInfoByMobileNumber(phoneNumber, firstLevelMerchantId);
@@ -169,7 +173,7 @@ public class MemberService {
memberBasicInfo.setNickName("会员" + memberId);
memberBasicInfo.setMobileNumber(phoneNumber);
memberBasicInfo.setMerchantId(Long.valueOf(firstLevelMerchantId));
if (StringUtils.isBlank(openId)) {
if (AdapayPayChannelEnum.WX_LITE.getValue().equals(dto.getRequestSource()) && StringUtils.isNotBlank(openId)) {
memberBasicInfo.setOpenId(openId);
}
@@ -186,7 +190,7 @@ public class MemberService {
}
transactionService.createMember(memberTransactionDTO);
} else {
if (!StringUtils.equals(memberBasicInfo.getOpenId(), openId)) {
if (AdapayPayChannelEnum.WX_LITE.getValue().equals(dto.getRequestSource()) && !StringUtils.equals(memberBasicInfo.getOpenId(), openId)) {
// openId变化就更新
memberBasicInfo.setOpenId(openId);
memberBasicInfoService.updateMemberBasicInfo(memberBasicInfo);
@@ -229,7 +233,13 @@ public class MemberService {
// 根据appid查询merchantId
String firstLevelMerchantId = pileMerchantInfoService.getFirstLevelMerchantIdByWxAppId(dto.getAppId());
// 查询手机号码是否注册过
return memberRegisterAndLogin(mobileNumber, firstLevelMerchantId, openId);
MemberRegisterAndLoginDTO loginDTO = MemberRegisterAndLoginDTO.builder()
.openId(openId)
.firstLevelMerchantId(firstLevelMerchantId)
.mobileNumber(mobileNumber)
.requestSource(dto.getRequestSource())
.build();
return memberRegisterAndLogin(loginDTO); // 微信小程序一键登录
}
public String alipayLogin(AlipayLoginDTO dto) throws Exception {
@@ -242,7 +252,12 @@ public class MemberService {
firstLevelMerchantId = "1";
// 查询手机号码是否注册过
return memberRegisterAndLogin(mobileNumber, firstLevelMerchantId, "");
MemberRegisterAndLoginDTO loginDTO = MemberRegisterAndLoginDTO.builder()
.requestSource(dto.getRequestSource())
.firstLevelMerchantId(firstLevelMerchantId)
.mobileNumber(mobileNumber)
.build();
return memberRegisterAndLogin(loginDTO); // 支付宝小程序一键登录
}
/**