doum
12 小时以前 417e33605dda0f28366a1d6e13c41198a156e3a7
server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -57,6 +57,7 @@
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@@ -120,6 +121,9 @@
    @Autowired
    private IntegralService integralService;
    @Autowired
    private RedisTemplate<String,Object> redisTemplate;
    @Override
    public Integer create(Member member) {
@@ -249,13 +253,13 @@
                 .or().like(Member::getName,pageWrap.getModel().getNickname())
                .or().like(Member::getPhone,pageWrap.getModel().getNickname())
        );
        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getShopName()),Shop::getStatus,pageWrap.getModel().getShopName());
        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getShopName()),Shop::getName,pageWrap.getModel().getShopName());
        queryWrapper.eq(pageWrap.getModel().getStatus()!=null,Member::getStatus,pageWrap.getModel().getStatus());
        queryWrapper.eq(Member::getIsdeleted,Constants.ZERO);
        queryWrapper.ge(pageWrap.getModel().getStarttime()!=null, Member::getCreateDate,pageWrap.getModel().getStarttime());
        queryWrapper.le(pageWrap.getModel().getEndtime()!=null,Member::getCreateDate, pageWrap.getModel().getEndtime());
        queryWrapper.orderByDesc(Member::getCreateDate);
        queryWrapper.orderByDesc(Member::getId);
        IPage<Member> result = memberJoinMapper.selectJoinPage(page, Member.class, queryWrapper);
@@ -265,6 +269,10 @@
            for(Member model:result.getRecords()){
                if(StringUtils.isNotBlank(model.getImgurl())){
                    model.setImgFullUrl(path);
                }
                model.setTotalReduceIntegral(Constants.formatBigdecimal(model.getTotalIntegral()).subtract(Constants.formatBigdecimal(model.getIntegral())));
                if(model.getTotalReduceIntegral().compareTo(new BigDecimal(0)) <=0){
                    model.setTotalReduceIntegral(new BigDecimal(0));
                }
            }
        }
@@ -308,18 +316,19 @@
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"获取openid失败!请联系管理员");
            }
            Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getOpenId, openId)
                            .eq(Member::getIsdeleted,Constants.ZERO)
                            .eq(Member::getIsdeleted,Constants.ZERO).eq(Member::getStatus,Constants.ZERO)
                    .last(" limit 1"));
            //创建token
            JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+member.getId());
            String token = JwtTokenUtil.generateToken(payLoad);
            AccountResponse accountResponse = new AccountResponse();
            accountResponse.setSessionKey(session.getSessionKey());
            if(Objects.nonNull(member)){
                memberMapper.updateById(member);
                member.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
                        systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+member.getImgurl());
                //创建token
//                JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+member.getId());
//                String token = JwtTokenUtil.generateToken(payLoad);
                String token = JwtTokenUtil.generateTokenForRedis(member.getId(), Constants.ZERO, JSONObject.toJSONString(member), redisTemplate);
                accountResponse.setToken(token);
                accountResponse.setOpenid(openId);
                accountResponse.setMember(member);
            }else{
                accountResponse.setOpenid(openId);
@@ -332,63 +341,63 @@
    }
    @Override
    public AccountResponse wxLoginTest( Integer memberId){
        //创建token
        JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+memberId);
        String token = JwtTokenUtil.generateToken(payLoad);
        AccountResponse accountResponse = new AccountResponse();
        accountResponse.setToken(token);
        return accountResponse;
    }
//    @Override
//    public AccountResponse wxLoginTest( Integer memberId){
//        //创建token
////        JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+memberId);
////        String token = JwtTokenUtil.generateToken(payLoad);
//        String token = JwtTokenUtil.generateTokenForRedis(memberId, Constants.ZERO, JSONObject.toJSONString(null), redisTemplate);
//        AccountResponse accountResponse = new AccountResponse();
//        accountResponse.setToken(token);
//        return accountResponse;
//    }
    @Override
    public AccountResponse wxPhone(WxPhoneRequest wxPhoneRequest){
        try {
            WxMaPhoneNumberInfo userPhoneInfo = WxMiniConfig.wxMaService.getUserService().getPhoneNoInfo(
                    wxPhoneRequest.getSessionKey(), wxPhoneRequest.getEncryptedData(), wxPhoneRequest.getIv());
            //获取手机号
            String phone= userPhoneInfo.getPurePhoneNumber();
            WxMaPhoneNumberInfo userPhoneInfo = WxMiniConfig.wxMaService.getUserService().getPhoneNumber(wxPhoneRequest.getCode());
            String phone = userPhoneInfo.getPhoneNumber();
            if(Objects.isNull(phone)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未获取到手机号");
            }
            Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getOpenId, wxPhoneRequest.getOpenid())
                    .eq(Member::getIsdeleted,Constants.ZERO)
            Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getPhone, phone)
                    .eq(Member::getIsdeleted,Constants.ZERO).eq(Member::getStatus,Constants.ZERO)
                    .last(" limit 1"));
            if (member == null) {
                member = new Member();
                member.setImgurl("20230410/4010b821-2137-4e6d-86e4-5ab9c06184a4.png");
                member.setNickname("微信用户"+ CodeVerifyUtils.createVerificationCode(4));
                member.setCreateDate(new Date());
                member.setIsdeleted(Constants.ZERO);
                member.setType(Constants.ZERO);
                member.setOrigin(Constants.ZERO);
                if(!this.checkIsCreateInvite(phone)){
                    member.setRecId(Constants.getInviteCode(wxPhoneRequest.getRecId()));
                    member.setRecId(wxPhoneRequest.getRecId());
                }
                member.setOpenId(wxPhoneRequest.getOpenid());
                member.setIntegral(BigDecimal.ZERO);
                member.setPhone(phone);
            }
            member.setPhone(phone);
            member.setOpenId(wxPhoneRequest.getOpenid());
            member.setEditDate(new Date());
            member.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
                    systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+member.getImgurl());
            if(Objects.isNull(member.getId())){
                memberMapper.insert(member);
                PlatformConfigDTO platformConfigDTO = systemDictDataService.getPlatformConfigDTO();
                this.createRegionReward(member,platformConfigDTO);
                //创建邀请记录
                this.createInviteRecord(member,platformConfigDTO);
                member.setSharingCode(this.createShareCode(member.getId()));
//                member.setSharingCode(this.createShareCode(member.getId()));
                memberMapper.updateById(member);
            }else{
                if(StringUtils.isBlank(member.getSharingCode())){
                    member.setSharingCode(this.createShareCode(member.getId()));
                }
//                if(StringUtils.isBlank(member.getSharingCode())){
//                    member.setSharingCode(this.createShareCode(member.getId()));
//                }
                memberMapper.updateById(member);
            }
            JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+member.getId());
            String token = JwtTokenUtil.generateToken(payLoad);
            if(Objects.nonNull(wxPhoneRequest.getShopId())){
                this.bindShopInfo(member.getId(),wxPhoneRequest.getShopId());
            }
            String token = JwtTokenUtil.generateTokenForRedis(member.getId(), Constants.ZERO, JSONObject.toJSONString(member), redisTemplate);
            AccountResponse accountResponse = new AccountResponse();
            accountResponse.setToken(token);
            accountResponse.setMember(member);
@@ -420,7 +429,7 @@
            dealIntegralRequest.setDealType(Constants.ZERO);
            dealIntegralRequest.setMemberId(member.getId());
            dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.REGISTER);
            integralService.dealIntegral(dealIntegralRequest);
            integralService.dealIntegral(dealIntegralRequest,null);
        }
        //开启注册送优惠券
        if(Constants.equalsInteger(platformConfigDTO.getRegCouponRewardStatus(),Constants.ZERO)){
@@ -466,6 +475,17 @@
                platformConfigDTO.getShareIntegralReward():BigDecimal.ZERO);
        inviteRecord.setFirstOrderStatus(Constants.ZERO);
        inviteRecordMapper.insert(inviteRecord);
        //赠送邀请积分
        //开启邀请注册送积分
        if(Constants.equalsInteger(platformConfigDTO.getShareIntegralRewardStatus(),Constants.ZERO)){
            DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
            dealIntegralRequest.setIntegralNum(platformConfigDTO.getShareIntegralReward());
            dealIntegralRequest.setDealType(Constants.ZERO);
            dealIntegralRequest.setMemberId(member.getRecId());
            dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.INVITENEWUSER);
            dealIntegralRequest.setParam1(member.getNickname());
            integralService.dealIntegral(dealIntegralRequest,null);
        }
    }
@@ -517,23 +537,20 @@
    @Override
    public Member updateMember(UpdateMemberRequest updateMemberRequest){
    public void updateMember(UpdateMemberRequest updateMemberRequest){
        if(StringUtils.isBlank(updateMemberRequest.getImgurl())
                && StringUtils.isBlank(updateMemberRequest.getNickname())
                && StringUtils.isBlank(updateMemberRequest.getName())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        Member member  = new Member();
        BeanUtils.copyProperties(updateMemberRequest,member);
        member.setId(updateMemberRequest.getMemberId());
        member.setEditor(updateMemberRequest.getMemberId());
        member.setEditDate(new Date());
        memberMapper.updateById(member);
        Member dbMember = memberMapper.selectById(updateMemberRequest.getMemberId());
        dbMember.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
                systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+dbMember.getImgurl());
        return dbMember;
        memberMapper.update(new UpdateWrapper<Member>().lambda()
                .set(StringUtils.isNotBlank(updateMemberRequest.getImgurl()),Member::getImgurl,updateMemberRequest.getImgurl())
                .set(StringUtils.isNotBlank(updateMemberRequest.getNickname()),Member::getNickname,updateMemberRequest.getNickname())
                .set(StringUtils.isNotBlank(updateMemberRequest.getName()),Member::getName,updateMemberRequest.getName())
                .set(Member::getEditDate,DateUtil.getCurrDateTime())
                .eq(Member::getId,updateMemberRequest.getMemberId())
        );
    }
@@ -617,15 +634,15 @@
        if(StringUtils.isNotBlank(member.getPhone())&&!member.getPhone().equals(request.getPhone())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"手机号错误");
        }
        this.verifyPhoneCode(request.getCode(),request.getMemberId());
        this.verifyPhoneCode(request.getCode(),request.getPhone());
    }
    public void verifyPhoneCode(String code,Integer memberId){
    public void verifyPhoneCode(String code,String phone){
        //验证码
        Smsrecord smsrecord = smsrecordMapper.selectOne(new QueryWrapper<Smsrecord>().lambda()
                .eq(Smsrecord::getIsdeleted,Constants.ZERO)
                .eq(Smsrecord::getCode,code)
                .eq(Smsrecord::getMemberId,memberId)
                .eq(Smsrecord::getPhone,phone)
                .last(" limit 1")
        );
        if(Objects.isNull(smsrecord)){
@@ -653,11 +670,15 @@
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        //判断新手机号是否已被使用
        if(memberMapper.selectCount(new QueryWrapper<Member>().lambda().eq(Member::getPhone,request.getPhone()))>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,新手机号已被绑定,无法进行换绑!");
        }
        Member member = memberMapper.selectById(request.getMemberId());
        if(StringUtils.isNotBlank(member.getPhone())&&member.getPhone().equals(request.getPhone())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"无法更换相同手机号");
        }
        this.verifyPhoneCode(request.getCode(),request.getMemberId());
        this.verifyPhoneCode(request.getCode(),request.getPhone());
        memberMapper.update(new UpdateWrapper<Member>().lambda()
                .eq(Member::getPhone,request.getPhone())
                .eq(Member::getId,request.getMemberId())
@@ -718,7 +739,7 @@
                dealIntegralRequest.setObjId(s.getId());
                dealIntegralRequest.setOrderCode(null);
                dealIntegralRequest.setDealType(memberRechargeDTO.getIntegralType());
                integralService.dealIntegral(dealIntegralRequest);
                integralService.dealIntegral(dealIntegralRequest,null);
            });
//            integralService.dealIntegral()
        } catch (Exception e) {
@@ -752,15 +773,57 @@
        dealIntegralRequest.setObjId(memberRechargeDTO.getMemberId());
        dealIntegralRequest.setOrderCode(null);
        dealIntegralRequest.setDealType(memberRechargeDTO.getIntegralType());
        Integer integer = integralService.dealIntegral(dealIntegralRequest);
        Integer integer = integralService.dealIntegral(dealIntegralRequest,null);
        return integer;
    }
    @Override
    public void logOut(String token,Integer memberId){
        Member  member = memberMapper.selectById(memberId);
        if(Objects.nonNull(member)&&StringUtils.isNotBlank(member.getOpenId())){
            memberMapper.update(new UpdateWrapper<Member>().lambda()
                    .set(Member::getOpenId,null)
                    .eq(Member::getId,member.getId())
            );
        }
        redisTemplate.delete(token);
    }
    @Override
    public void logOff(String token,Integer memberId){
        Member  member = memberMapper.selectById(memberId);
        if(Objects.nonNull(member)&&StringUtils.isNotBlank(member.getOpenId())){
            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 void bindShopInfo(Integer memberId,Integer recId){
        Member  member = memberMapper.selectById(memberId);
        if(Objects.isNull(member)){
            return;
        }
        if (Objects.nonNull(member.getBindShopId())) {
            return;
        }
        Shop shop = shopMapper.selectById(recId);
        if(Objects.nonNull(shop)){
            memberMapper.update(new UpdateWrapper<Member>().lambda()
                    .set(Member::getBindShopId,recId)
                    .set(Member::getBindShopDate,new Date())
                    .eq(Member::getId,member.getId())
            );
        }
    }