diff --git a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/ErrorCodeConstants.java b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/ErrorCodeConstants.java index d4814a4..c302b20 100644 --- a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/ErrorCodeConstants.java +++ b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/ErrorCodeConstants.java @@ -19,7 +19,7 @@ public interface ErrorCodeConstants { ErrorCode ORDER_PAY_FINISH = new ErrorCode(1008007010, "该订单已支付"); ErrorCode USER_NOT_BINDING_WX_APPLET = new ErrorCode(1008007011, "该用户未绑定微信小程序!openid为空!"); - ErrorCode USER_NOT_BINDING_WX = new ErrorCode(1008007011, "该用户未绑定微信手机号无法调起支付"); + ErrorCode USER_NOT_BINDING_WX = new ErrorCode(1008007011, "该用户未支持支付,请使用小程序或其他浏览器登录"); ErrorCode PAY_YUE_NOT = new ErrorCode(1008007011, "余额不足"); ErrorCode ORDER_STATUS_ERROR = new ErrorCode(1008007012, "订单状态错误"); ErrorCode COMMENT_PRODUCT_NOT_EXISTS = new ErrorCode(1008007013, "评价产品不存在"); diff --git a/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/controller/app/auth/vo/AppAuthSmsLoginReqVO.java b/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/controller/app/auth/vo/AppAuthSmsLoginReqVO.java index 3e14f9a..f2c46f4 100644 --- a/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/controller/app/auth/vo/AppAuthSmsLoginReqVO.java +++ b/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/controller/app/auth/vo/AppAuthSmsLoginReqVO.java @@ -61,4 +61,7 @@ public class AppAuthSmsLoginReqVO { return socialType == null || StrUtil.isNotEmpty(socialState); } + @Schema(description = "登录 code,小程序通过 wx.login 方法获得", requiredMode = Schema.RequiredMode.REQUIRED, example = "word") + private String loginCode; + } diff --git a/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/service/auth/MemberAuthServiceImpl.java b/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/service/auth/MemberAuthServiceImpl.java index 7654a24..3644905 100644 --- a/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/service/auth/MemberAuthServiceImpl.java +++ b/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/service/auth/MemberAuthServiceImpl.java @@ -106,7 +106,8 @@ public class MemberAuthServiceImpl implements MemberAuthService { } // 获得获得注册用户 - MemberUserDO user = userService.createUserIfAbsent(reqVO.getMobile(), userIp, reqVO.getFrom(), reqVO.getInvitationCode()); + MemberUserDO user = userService.createUserIfAbsent(reqVO.getMobile(), userIp, reqVO.getFrom(), + reqVO.getInvitationCode(), reqVO.getLoginCode()); Assert.notNull(user, "获取用户失败,结果为空"); // 如果 socialType 非空,说明需要绑定社交用户 @@ -166,7 +167,7 @@ public class MemberAuthServiceImpl implements MemberAuthService { if (memberUserDO == null) { // 获得获得注册用户 memberUserDO = userService.createUserIfAbsent(phoneNumberInfo.getPhoneNumber(), getClientIP(), - LoginTypeEnum.WXAPP.getValue(), reqVO.getInvitationCode()); + LoginTypeEnum.WXAPP.getValue(), reqVO.getInvitationCode(), null); memberUserDO.setNickname("用户_" + memberUserDO.getId()); } memberUserDO.setRoutineOpenId(session.getOpenid()); diff --git a/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/service/user/MemberUserService.java b/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/service/user/MemberUserService.java index 5b930bc..50bd7a8 100644 --- a/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/service/user/MemberUserService.java +++ b/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/service/user/MemberUserService.java @@ -43,9 +43,10 @@ public interface MemberUserService extends IService { * @param mobile 手机号 * @param registerIp 注册 IP * @param invitationCode 邀请码 + * @param loginCode 登录 code * @return 用户对象 */ - MemberUserDO createUserIfAbsent(@Mobile String mobile, String registerIp, String from, String invitationCode); + MemberUserDO createUserIfAbsent(@Mobile String mobile, String registerIp, String from, String invitationCode, String loginCode); /** * 更新用户的最后登陆信息 diff --git a/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/service/user/MemberUserServiceImpl.java b/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/service/user/MemberUserServiceImpl.java index 34d8ea3..c14c3f8 100644 --- a/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/service/user/MemberUserServiceImpl.java +++ b/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/service/user/MemberUserServiceImpl.java @@ -1,5 +1,7 @@ package co.yixiang.yshop.module.member.service.user; +import cn.binarywang.wx.miniapp.api.WxMaService; +import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.NumberUtil; @@ -29,6 +31,8 @@ import co.yixiang.yshop.module.system.service.dict.DictDataService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.annotations.VisibleForTesting; import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.common.error.WxErrorException; +import org.apache.commons.lang3.StringUtils; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -46,8 +50,7 @@ import java.util.Objects; import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception; import static co.yixiang.yshop.framework.common.util.servlet.ServletUtils.getClientIP; -import static co.yixiang.yshop.module.member.enums.ErrorCodeConstants.NOT_ENOUGH_INTEGRAL; -import static co.yixiang.yshop.module.member.enums.ErrorCodeConstants.USER_NOT_EXISTS; +import static co.yixiang.yshop.module.member.enums.ErrorCodeConstants.*; /** * 会员 User Service 实现类 @@ -82,6 +85,8 @@ public class MemberUserServiceImpl extends ServiceImpl