KKSU
2024-11-20 364a1f1a7ff90259f64069863886b9cfd7093111
refactor(mall): 重构会员注册功能

- 移除了 AdminMallMemberController 中的多余代码
- 优化了 ApiMallMemberServiceImpl 中的 register 方法逻辑- 更新了 RegisterDto 中的字段和验证规则
- 改进了密码验证和邀请码验证的逻辑
- 优化了错误提示信息
3 files modified
80 ■■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java 16 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java 62 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
@@ -17,7 +17,6 @@
import cn.hutool.core.util.StrUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -401,7 +400,6 @@
        registerDto.setRegistType("admin");
        registerDto.setPassword("a123456");
        registerDto.setInviteId(member.getInviteId());
        registerDto.setName(member.getName());
        apiMallMemberService.register(registerDto);
        return new FebsResponse().success();
    }
src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java
@@ -18,14 +18,6 @@
    @ApiModelProperty(value = "手机号", example = "15773001234")
    private String account;
    @NotBlank(message = "姓名不能为空")
    @ApiModelProperty(value = "姓名", example = "王大洋")
    private String name;
    @NotBlank(message = "密码不能为空")
    @ApiModelProperty(value = "密码", example = "123456")
    private String password;
    @ApiModelProperty(value = "类型 1-手机号 2-邮箱", example = "1")
    private String type = "1";
@@ -33,6 +25,14 @@
    @ApiModelProperty(value = "验证码", example = "123456")
    private String code;
    @NotBlank(message = "密码不能为空")
    @ApiModelProperty(value = "密码", example = "123456")
    private String password;
    @NotBlank(message = "密码不能为空")
    @ApiModelProperty(value = "重复密码", example = "123456")
    private String passwordAgain;
//    @NotBlank(message = "邀请码不能为空")
    @ApiModelProperty(value = "邀请码")
    private String inviteId;
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -1,11 +1,16 @@
package cc.mrbird.febs.mall.service.impl;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.enumerates.*;
import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
import cc.mrbird.febs.common.enumerates.ScoreFlowTypeEnum;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.properties.XcxProperties;
import cc.mrbird.febs.common.utils.*;
import cc.mrbird.febs.mall.conversion.*;
import cc.mrbird.febs.mall.conversion.MallMemberConversion;
import cc.mrbird.febs.mall.conversion.MallShopApplyConversion;
import cc.mrbird.febs.mall.conversion.MallStoreConversion;
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
@@ -14,7 +19,6 @@
import cc.mrbird.febs.pay.model.BrandWCPayRequestData;
import cc.mrbird.febs.pay.service.IXcxPayService;
import cc.mrbird.febs.pay.util.MD5;
import cc.mrbird.febs.pay.util.Util;
import cc.mrbird.febs.vip.VipSettingUnAliveSettingBo;
import cc.mrbird.febs.vip.entity.MallVipConfig;
import cc.mrbird.febs.vip.mapper.MallVipConfigMapper;
@@ -38,19 +42,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.security.SecurityProperties;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -103,20 +95,21 @@
    @Transactional(rollbackFor = Exception.class)
    @Override
    public FebsResponse register(RegisterDto registerDto) {
        MallMember mallMember = this.baseMapper.selectInfoByAccount(registerDto.getAccount());
        if (mallMember != null) {
            throw new FebsException("该账号已被占用");
        }
        List<MallMember> mallMembers = this.baseMapper.selectMemberByName(registerDto.getName());
        if (CollUtil.isNotEmpty(mallMembers)) {
            MallRegisterAppeal registerAppeal = mallRegisterAppealMapper.selectByPhoneAndName(registerDto.getName(), registerDto.getAccount());
            if (registerAppeal == null || registerAppeal.getStatus() != 1) {
                return new FebsResponse().code(HttpStatus.ACCEPTED).message("用户名已存在");
            }
        }
        String account = registerDto.getAccount();
        MallMember mallMember = this.baseMapper.selectInfoByAccount(account);
        if (mallMember != null) {
            throw new FebsException("手机号已注册");
        }
        /**
         * 验证两次密码是否一致
         */
        String password = registerDto.getPassword();
        String passwordAgain = registerDto.getPasswordAgain();
        if(!password.equals(passwordAgain)){
            throw new FebsException("密码不一致");
        }
        //邀请码为admin的时候(后台添加用户),不需要验证验证码
        if (!"admin".equals(registerDto.getRegistType())) {
            String code = registerDto.getCode();
            boolean flags = commonService.verifyCode(account, code);
@@ -134,22 +127,23 @@
        } else {
            mallMember.setEmail(registerDto.getAccount());
        }
        //对于邀请码的验证和上级联系人的验证
        Integer count = this.baseMapper.selectCount(null);
        if (count != null && count != 0) {
            MallMember inviteMember = this.baseMapper.selectInfoByInviteId(registerDto.getInviteId());
            String inviteId = registerDto.getInviteId();
            if(StrUtil.isNotBlank(inviteId)){
                MallMember inviteMember = this.baseMapper.selectInfoByInviteId(inviteId);
            if (inviteMember == null) {
                throw new FebsException("邀请码不存在");
            }
            mallMember.setReferrerId(registerDto.getInviteId());
        }
        mallMember.setName(registerDto.getName());
        }
        mallMember.setName(account);
        mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_ENABLE);
        mallMember.setAccountType(MallMember.ACCOUNT_TYPE_NORMAL);
        mallMember.setSex("男");
        mallMember.setBindPhone(registerDto.getAccount());
        mallMember.setBindPhone(account);
        this.baseMapper.insert(mallMember);