rk
7 小时以前 55642c818f14bf8cf52c98e6858014bd8dc3d3a7
server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -12,15 +12,22 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.IdentityInfoMapper;
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.OrdersMapper;
import com.doumee.dao.business.model.IdentityInfo;
import com.doumee.dao.business.ShopInfoMapper;
import com.doumee.dao.business.SmsrecordMapper;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.MemberRevenue;
import com.doumee.dao.business.model.Orders;
import com.doumee.dao.business.model.ShopInfo;
import com.doumee.dao.business.model.MemberRevenue;
import com.doumee.dao.business.model.Smsrecord;
import com.doumee.dao.dto.MemberListQueryDTO;
import com.doumee.dao.dto.UpdMobileRequest;
import com.doumee.dao.dto.WxPhoneRequest;
import com.doumee.dao.vo.AccountResponse;
import com.doumee.dao.vo.MemberDetailVO;
import com.doumee.dao.vo.MemberListVO;
import com.doumee.dao.vo.PlatformAboutVO;
import com.doumee.dao.vo.UserCenterVO;
import com.doumee.service.business.MemberService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -39,6 +46,7 @@
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@@ -58,16 +66,23 @@
    private MemberMapper memberMapper;
    @Autowired
    private IdentityInfoMapper identityInfoMapper;
    @Autowired
    private OrdersMapper ordersMapper;
    private SmsrecordMapper smsrecordMapper;
    @Autowired
    private JwtTokenUtil jwtTokenUtil;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private RedisTemplate<String,Object> redisTemplate;
    @Autowired
    private ShopInfoMapper shopInfoMapper;
    @Autowired
    private OrdersMapper ordersMapper;
    @Override
    public Integer create(Member member) {
@@ -116,8 +131,8 @@
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(StringUtils.isNotBlank(member.getCoverImage())){
            String path  = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode()
                    +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MEMBER_FILES).getCode();
            String path  = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()
                    +systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILES).getCode();
            member.setFullCoverImage(path + member.getCoverImage());
        }
        return member;
@@ -179,15 +194,6 @@
        if (pageWrap.getModel().getName() != null) {
            queryWrapper.lambda().like(Member::getName, pageWrap.getModel().getName());
        }
        if (pageWrap.getModel().getWorkerIdentity() != null) {
            queryWrapper.lambda().eq(Member::getWorkerIdentity, pageWrap.getModel().getWorkerIdentity());
        }
        if (pageWrap.getModel().getDriverIdentity() != null) {
            queryWrapper.lambda().eq(Member::getDriverIdentity, pageWrap.getModel().getDriverIdentity());
        }
        if (pageWrap.getModel().getChefIdentity() != null) {
            queryWrapper.lambda().eq(Member::getChefIdentity, pageWrap.getModel().getChefIdentity());
        }
        if (pageWrap.getModel().getAmount() != null) {
            queryWrapper.lambda().eq(Member::getAmount, pageWrap.getModel().getAmount());
        }
@@ -225,12 +231,6 @@
        if (pageWrap.getModel().getArea() != null) {
            queryWrapper.lambda().eq(Member::getArea, pageWrap.getModel().getArea());
        }
        //如果查询接单方
        queryWrapper.lambda().and(Constants.equalsInteger(pageWrap.getModel().getType(),Constants.ONE ),w1->{
            w1.eq(Member::getWorkerIdentity,Constants.TWO )
                    .or().eq(Member::getChefIdentity,Constants.TWO )
                    .or().eq(Member::getDriverIdentity,Constants.TWO );
        });
        queryWrapper.lambda().ge(pageWrap.getModel().getStartTime()!=null, Member::getCreateTime,pageWrap.getModel().getStartTime());
        queryWrapper.lambda().le(pageWrap.getModel().getEndTime()!=null,Member::getCreateTime,pageWrap.getModel().getEndTime());
@@ -271,21 +271,28 @@
            if (StringUtils.isBlank(openId)) {
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "获取openid失败!请联系管理员");
            }
            Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("openid", openId).eq("DELETED", Constants.ZERO).last("limit 1"));
            Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getOpenid, openId)
                    .ne(Member::getUserType,Constants.ONE)
                    .eq(Member::getDeleted, Constants.ZERO)
                    .ne(Member::getStatus, Constants.TWO).last("limit 1"));
            AccountResponse accountResponse = new AccountResponse();
            accountResponse.setOpenid(openId);
            if(Objects.isNull(member)){
                return accountResponse;
            }
            accountResponse.setToken(jwtTokenUtil.generateToken(member));
            if(!Constants.equalsInteger(member.getStatus(),Constants.ZERO)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,账号已禁用,请联系管理员!");
            }
            String token = JwtTokenUtil.generateTokenForRedis(member.getId(), Constants.ZERO, JSONObject.toJSONString(member), redisTemplate);
            accountResponse.setToken(token);
            accountResponse.setMember(member);
            // 门店用户身份时,返回申请的门店状态
            fillShopInfo(accountResponse, member);
            return accountResponse;
        } catch (WxErrorException e) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "微信登录异常!请联系管理员");
        }
    }
    @Override
@@ -301,8 +308,14 @@
            if(Objects.isNull(mobile)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未获取到手机号");
            }
            Member member =  memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getTelephone,mobile).last("limit 1"));
            Member member =  memberMapper.selectOne(new QueryWrapper<Member>().lambda()
                    .eq(Member::getTelephone,mobile)
                    .ne(Member::getUserType,Constants.ONE)
                    .ne(Member::getStatus, Constants.TWO).last("limit 1"));
            if(Objects.nonNull(member)){
                if(!Constants.equalsInteger(member.getStatus(),Constants.ZERO)){
                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,账号已禁用,请联系管理员!");
                }
                memberMapper.update(new UpdateWrapper<Member>().lambda().set(Member::getTelephone,mobile)
                        .set(Member::getOpenid,wxPhoneRequest.getOpenid()).set(Member::getUpdateTime,new Date()).eq(Member::getId,member.getId()));
            }else{
@@ -312,11 +325,7 @@
                member.setDeleted(Constants.ZERO);
                member.setOpenid(wxPhoneRequest.getOpenid());
                member.setTelephone(mobile);
                member.setNickName(mobile);
//                member.setCoverImage("1.png");
                member.setWorkerIdentity(Constants.ZERO);
                member.setDriverIdentity(Constants.ZERO);
                member.setChefIdentity(Constants.ZERO);
                member.setNickName(mobile.substring(0, 3) + "****" + mobile.substring(7));
                member.setAmount(Constants.ZERO.longValue());
                member.setTotalAmount(Constants.ZERO.longValue());
                member.setStatus(Constants.ZERO);
@@ -328,9 +337,12 @@
                member.setUseIdentity(Constants.ZERO);
                memberMapper.insert(member);
            }
            String token = JwtTokenUtil.generateTokenForRedis(member.getId(), Constants.ZERO, JSONObject.toJSONString(member), redisTemplate);
            AccountResponse accountResponse = new AccountResponse();
            accountResponse.setToken(jwtTokenUtil.generateToken(member));
            accountResponse.setToken(token);
            accountResponse.setMember(member);
            // 门店用户身份时,返回申请的门店状态
            fillShopInfo(accountResponse, member);
            return accountResponse;
        } catch (Exception e) {
            e.printStackTrace();
@@ -338,6 +350,21 @@
        }
    }
    /**
     * 门店用户身份时,填充门店审核状态
     */
    private void fillShopInfo(AccountResponse response, Member member) {
        if (Constants.TWO.equals(member.getUserType())) {
            ShopInfo shopInfo = shopInfoMapper.selectOne(new QueryWrapper<ShopInfo>().lambda()
                    .eq(ShopInfo::getRegionMemberId, member.getId())
                    .eq(ShopInfo::getDeleted, Constants.ZERO)
                    .last("limit 1"));
            if (shopInfo != null) {
                response.setShopId(shopInfo.getId());
                response.setShopAuditStatus(shopInfo.getAuditStatus());
            }
        }
    }
    @Override
@@ -360,84 +387,222 @@
    @Override
    public void editUseIdentity(Member member){
        if(Objects.isNull(member)
                || Objects.isNull(member.getUseIdentity())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        if(Constants.equalsInteger(member.getUseIdentity(),Constants.ZERO)){
            member.setUseIdentity(Constants.ZERO);
            memberMapper.update(new UpdateWrapper<Member>().lambda().set(Member::getUseIdentity,Constants.ZERO).eq(Member::getId,member.getId()));
        }else{
            if(identityInfoMapper.selectCount(new QueryWrapper<IdentityInfo>().lambda().eq(IdentityInfo::getDeleted,Constants.ZERO)
                    .eq(IdentityInfo::getMemberId,member.getId())
                    .eq(IdentityInfo::getAuditStatus,Constants.TWO))>Constants.ZERO){
                memberMapper.update(new UpdateWrapper<Member>().lambda().set(Member::getUseIdentity,Constants.ONE).eq(Member::getId,member.getId()));
            }else{
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前无可用接单身份!");
            }
        }
    }
    @Override
    public Member getMemberInfo(Integer memberId){
        Member member  = this.findById(memberId);
    public UserCenterVO getMemberInfo(Integer memberId){
        Member member  = memberMapper.selectById(memberId);
        if(Objects.isNull(member)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        // 用户中心数据
        UserCenterVO userCenterVO = new UserCenterVO();
        userCenterVO.setNickName(member.getNickName());
        userCenterVO.setName(member.getName());
        userCenterVO.setTelephone(member.getTelephone());
        userCenterVO.setCoverImage(member.getCoverImage());
        if(StringUtils.isNotBlank(member.getCoverImage())){
            String path  = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode()
                    +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MEMBER_FILES).getCode();
            member.setFullCoverImage(path + member.getCoverImage());
            String path  = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()
                    +systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILES).getCode();
            userCenterVO.setFullCoverImage(path + member.getCoverImage());
        }
        UserCenterVO userCenterVO = new UserCenterVO();
        userCenterVO.setReleaseTaskTotal(Constants.ZERO);
        userCenterVO.setWaitReceiveTotal(Constants.ZERO);
        userCenterVO.setDoingTotal(Constants.ZERO);
        userCenterVO.setWaitCommentTotal(Constants.ZERO);
        userCenterVO.setTaskingTotal(Constants.ZERO);
        userCenterVO.setDoneTotal(Constants.ZERO);
        userCenterVO.setReceiveTotal(Constants.ZERO);
        List<Orders> releaseOrders = ordersMapper.selectList(new QueryWrapper<Orders>().lambda().eq(Orders::getDeleted,Constants.ZERO)
                .eq(Orders::getReleaseMemberId,member.getId()));
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(releaseOrders)){
            userCenterVO.setReleaseTaskTotal(releaseOrders.size());
            userCenterVO.setWaitCommentTotal(releaseOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ordersStatus.done.getKey())&&Constants.equalsInteger(i.getCommentStatus(),Constants.ZERO)).collect(Collectors.toList()).size());
            userCenterVO.setDoingTotal(releaseOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ordersStatus.doing.getKey())).collect(Collectors.toList()).size());
            userCenterVO.setWaitReceiveTotal(releaseOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ordersStatus.wait.getKey())).collect(Collectors.toList()).size());
        }
        List<Orders> acceptOrders = ordersMapper.selectList(new QueryWrapper<Orders>().lambda().eq(Orders::getDeleted,Constants.ZERO).eq(Orders::getAcceptMemberId,member.getId()));
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(acceptOrders)){
            userCenterVO.setReceiveTotal(acceptOrders.size());
            userCenterVO.setTaskingTotal(acceptOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ordersStatus.doing.getKey())).collect(Collectors.toList()).size());
            userCenterVO.setDoneTotal(acceptOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ordersStatus.done.getKey())).collect(Collectors.toList()).size());
        }
        member.setUserCenterVO(userCenterVO);
        return member;
    }
    @Override
    public UserCenterVO getPlatformAboutUs(){
        UserCenterVO userCenterVO = new UserCenterVO();
        userCenterVO.setAboutUs(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ABOUT_US).getCode()));
        userCenterVO.setFeeStandards(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.FEE_STANDARDS).getCode()));
        userCenterVO.setServerIntroduce(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SERVER_INTRODUCE).getCode()));
        userCenterVO.setServerPhone(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SERVER_PHONE).getCode()));
        userCenterVO.setUserAgreement(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.USER_AGREEMENT).getCode()));
        userCenterVO.setPrivacyAgreement(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PRIVACY_AGREEMENT).getCode()));
        userCenterVO.setHasMessage(false);
        // 待支付订单数量
        Long waitPayCount = ordersMapper.selectCount(new QueryWrapper<Orders>().lambda()
                .eq(Orders::getMemberId, memberId)
                .eq(Orders::getDeleted, Constants.ZERO)
                .eq(Orders::getStatus, Constants.OrderStatus.waitPay.getStatus()));
        userCenterVO.setWaitPayCount(waitPayCount.intValue());
        // 待收货订单数量
        int[] waitReceiveStatuses = Constants.OrderCombinedStatus.waitReceive.getStatuses();
        Long waitReceiveCount = ordersMapper.selectCount(new QueryWrapper<Orders>().lambda()
                .eq(Orders::getMemberId, memberId)
                .eq(Orders::getDeleted, Constants.ZERO)
                .in(Orders::getStatus, Arrays.stream(waitReceiveStatuses).boxed().collect(Collectors.toList())));
        userCenterVO.setWaitReceiveCount(waitReceiveCount.intValue());
        return userCenterVO;
    }
    @Override
    public void logOff(String token,Integer memberId){
    public PlatformAboutVO getPlatformAboutUs(){
        PlatformAboutVO vo = new PlatformAboutVO();
        vo.setAboutUs(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ABOUT_US).getCode()));
        vo.setUserAgreement(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.USER_AGREEMENT).getCode()));
        vo.setPrivacyAgreement(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PRIVACY_AGREEMENT).getCode()));
        vo.setServerIntroduce(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SERVER_INTRODUCE).getCode()));
        return vo;
    }
    @Override
    public void logOut(String token,Integer memberId){
        memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" openid = null ").eq(Member::getId,memberId));
        jwtTokenUtil.logoutForH5(token);
    }
    @Override
    public void logOff(String token,Integer memberId){
        Member  member = memberMapper.selectById(memberId);
        if(Objects.nonNull(member)){
            memberMapper.update(new UpdateWrapper<Member>().lambda()
//                    .set(Member::getOpenId,null)
                            .set(Member::getStatus,Constants.TWO)
                            .eq(Member::getId,member.getId())
            );
        }
        redisTemplate.delete(token);
    }
    /***************管理端会员列表接口*************/
    @Override
    public PageData<MemberListVO> findMemberListPage(PageWrap<MemberListQueryDTO> pageWrap) {
        IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MemberListQueryDTO query = pageWrap.getModel();
        QueryWrapper<Member> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().eq(Member::getDeleted, Constants.ZERO);
        queryWrapper.lambda().eq(Member::getUserType, Constants.ZERO);
        if (query != null) {
            if (StringUtils.isNotBlank(query.getKeyword())) {
                queryWrapper.lambda().and(w -> w
                        .like(Member::getName, query.getKeyword())
                        .or().like(Member::getTelephone, query.getKeyword()));
            }
            if (query.getStatus() != null) {
                queryWrapper.lambda().eq(Member::getStatus, query.getStatus());
            }
            if (query.getStartTime() != null) {
                queryWrapper.lambda().ge(Member::getCreateTime, query.getStartTime());
            }
            if (query.getEndTime() != null) {
                queryWrapper.lambda().le(Member::getCreateTime, Utils.Date.getEnd(query.getEndTime()));
            }
        }
        for (PageWrap.SortData sortData : pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        IPage<Member> memberPage = memberMapper.selectPage(page, queryWrapper);
        IPage<MemberListVO> voPage = memberPage.convert(this::toListVO);
        return PageData.from(voPage);
    }
    @Override
    public MemberDetailVO findMemberDetail(Integer id) {
        Member member = memberMapper.selectById(id);
        if (Objects.isNull(member) || Constants.equalsInteger(member.getDeleted(), Constants.ONE)) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        MemberDetailVO detail = new MemberDetailVO();
        detail.setId(member.getId());
        detail.setNickName(member.getNickName());
        detail.setName(member.getName());
        detail.setTelephone(member.getTelephone());
        detail.setAmount(member.getAmount());
        detail.setTotalAmount(member.getTotalAmount());
        detail.setStatus(member.getStatus());
        detail.setUseIdentity(member.getUseIdentity());
        detail.setOpenid(member.getOpenid());
        detail.setUserType(member.getUserType());
        detail.setBusinessStatus(member.getBusinessStatus());
        detail.setScore(member.getScore());
        detail.setReceiveNum(member.getReceiveNum());
        detail.setPublishNum(member.getPublishNum());
        detail.setCreateTime(member.getCreateTime());
        detail.setLoginTime(member.getLoginTime());
        detail.setLoginTimes(member.getLoginTimes());
        detail.setProvince(member.getProvince());
        detail.setCity(member.getCity());
        detail.setArea(member.getArea());
        detail.setAutoReceiveStatus(member.getAutoReceiveStatus());
        if (StringUtils.isNotBlank(member.getCoverImage())) {
            String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
                    + systemDictDataBiz.queryByCode(Constants.OSS, Constants.MEMBER_FILES).getCode();
            detail.setFullCoverImage(path + member.getCoverImage());
        }
        return detail;
    }
    private MemberListVO toListVO(Member member) {
        MemberListVO vo = new MemberListVO();
        vo.setId(member.getId());
        vo.setNickName(member.getNickName());
        vo.setName(member.getName());
        vo.setTelephone(member.getTelephone());
        vo.setCreateTime(member.getCreateTime());
        vo.setStatus(member.getStatus());
        return vo;
    }
    @Override
    public void verifyUserPhone(UpdMobileRequest request){
        if(Objects.isNull(request)
                || Objects.isNull(request.getMemberId())
                || StringUtils.isBlank(request.getPhone())
                || StringUtils.isBlank(request.getCode())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        Member member = memberMapper.selectById(request.getMemberId());
        if(StringUtils.isNotBlank(member.getTelephone())&&!member.getTelephone().equals(request.getPhone())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"手机号错误");
        }
        this.verifyPhoneCode(request.getCode(),request.getPhone());
    }
    public void verifyPhoneCode(String code,String phone){
        //验证码
        Smsrecord smsrecord = smsrecordMapper.selectOne(new QueryWrapper<Smsrecord>().lambda()
                .eq(Smsrecord::getDeleted,Constants.ZERO)
                .eq(Smsrecord::getCode,code)
                .eq(Smsrecord::getPhone,phone)
                .last(" limit 1")
        );
        if(Objects.isNull(smsrecord)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"验证码错误!");
        }
        if(!Constants.equalsInteger(smsrecord.getStatus(),Constants.ZERO)){
            if(Constants.equalsInteger(smsrecord.getStatus(),Constants.ONE)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"验证码已使用");
            }else{
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"验证码已过期");
            }
        }
        smsrecordMapper.update(new UpdateWrapper<Smsrecord>().lambda()
                .set(Smsrecord::getStatus,Constants.ONE)
                .eq(Smsrecord::getId,smsrecord.getId())
        );
    }
    @Override
    public void updateUserPhone(UpdMobileRequest request){
        if(Objects.isNull(request)
                || Objects.isNull(request.getMemberId())
                || StringUtils.isBlank(request.getPhone())
                || StringUtils.isBlank(request.getCode())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        //判断新手机号是否已被使用
        if(memberMapper.selectCount(new QueryWrapper<Member>().lambda().eq(Member::getTelephone,request.getPhone()))>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,新手机号已被绑定,无法进行换绑!");
        }
        Member member = memberMapper.selectById(request.getMemberId());
        if(StringUtils.isNotBlank(member.getTelephone())&&member.getTelephone().equals(request.getPhone())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"无法更换相同手机号");
        }
        this.verifyPhoneCode(request.getCode(),request.getPhone());
        memberMapper.update(new UpdateWrapper<Member>().lambda()
                .set(Member::getTelephone,request.getPhone())
                .eq(Member::getId,request.getMemberId())
        );
    }
}