Administrator
2025-05-27 32d38feada2a84606b14016abcddf34ec8fe9e3e
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -14,6 +14,8 @@
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.*;
import cc.mrbird.febs.mall.vo.*;
import cc.mrbird.febs.mall.vo.memberLevel.ApiLabelInfoVo;
import cc.mrbird.febs.mall.vo.memberLevel.ApiMemberLabelVo;
import cc.mrbird.febs.pay.model.BrandWCPayRequestData;
import cc.mrbird.febs.pay.service.IXcxPayService;
import cc.mrbird.febs.pay.util.MD5;
@@ -90,6 +92,8 @@
    private final MallDoctorMapper mallDoctorMapper;
    private final HappyMemberLevelMapper happyMemberLevelMapper;
    private final IApiMallMemberWalletService mallMemberWalletService;
    private final HappyMemberLabelRecordMapper happyMemberLabelRecordMapper;
    private final HappyMemberLabelMapper happyMemberLabelMapper;
    @Value("${spring.profiles.active}")
@@ -271,7 +275,7 @@
        HappyMemberLevel happyMemberLevel = happyMemberLevelMapper.selectOne(
                new LambdaQueryWrapper<HappyMemberLevel>()
                        .select(HappyMemberLevel::getName)
                        .select(HappyMemberLevel::getName,  HappyMemberLevel::getIconPng)
                        .eq(HappyMemberLevel::getCode, mallMember.getDirector())
        );
        if(happyMemberLevel != null){
@@ -323,6 +327,31 @@
        mallMemberVo.setScore(wallet.getScore());
        mallMemberVo.setPrizeScore(wallet.getPrizeScore());
//        mallMemberVo.setTotalCost(mallOrderInfoMapper.selectTotalAmount(id));
        List<HappyMemberLabelRecord> happyMemberLabelRecords = happyMemberLabelRecordMapper.selectList(
                new LambdaQueryWrapper<HappyMemberLabelRecord>()
                        .eq(HappyMemberLabelRecord::getMemberId, id)
                        .orderByDesc(HappyMemberLabelRecord::getId)
                .last("limit 5")
        );
        if(CollUtil.isNotEmpty(happyMemberLabelRecords)){
            Set<Long> collect = happyMemberLabelRecords.stream().map(HappyMemberLabelRecord::getLabelId).collect(Collectors.toSet());
            List<HappyMemberLabel> happyMemberLabels = happyMemberLabelMapper.selectList(
                    new LambdaQueryWrapper<HappyMemberLabel>()
                            .select(HappyMemberLabel::getIconPng,  HappyMemberLabel::getName)
                            .in(HappyMemberLabel::getId, collect)
            );
            if(CollUtil.isNotEmpty(happyMemberLabels)){
                ArrayList<ApiLabelInfoVo> apiMemberLabelVos = new ArrayList<>();
                for (HappyMemberLabel happyMemberLabel : happyMemberLabels) {
                    ApiLabelInfoVo apiLabelInfoVo = new ApiLabelInfoVo();
                    apiLabelInfoVo.setIconPng(happyMemberLabel.getIconPng());
                    apiLabelInfoVo.setName(happyMemberLabel.getName());
                    apiMemberLabelVos.add(apiLabelInfoVo);
                }
                mallMemberVo.setLabelList(apiMemberLabelVos);
            }
        }
        return new FebsResponse().success().data(mallMemberVo);
    }
@@ -704,9 +733,29 @@
                    //分销员的邀请码赠送优惠卷
                    if (StrUtil.isNotBlank(apiXcxLoginDto.getInviteId())) {
                        GetCouponDto getCouponDto = new GetCouponDto();
                        getCouponDto.setInviteId(apiXcxLoginDto.getInviteId());
                        scanCoupon(getCouponDto);
                        String couponUUID = IdUtil.simpleUUID();
                        //通过邀请人信息,获取能领取的优惠卷信息
                        MallMember refMember = this.baseMapper.selectInfoByInviteId(apiXcxLoginDto.getInviteId());
                        if(ObjectUtil.isNotEmpty(refMember)){
                            SalemanCoupon salemanCoupon = salemanCouponMapper.selectByMemberId(refMember.getId());
                            if(ObjectUtil.isNotEmpty(salemanCoupon)){
                                Long couponId = salemanCoupon.getCouponId();
                                List<MallMemberCoupon> mallMemberCoupons = mallMemberCouponMapper.selectListByMemberIdCouponIdWithOutInviteId(mallMember.getId(), couponId);
                                if(CollUtil.isEmpty(mallMemberCoupons)){
                                    //商品优惠卷如果绑定了,那么当前登陆者获取一张卷
                                    MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(couponId);
                                    MallMemberCoupon mallMemberCoupon = new MallMemberCoupon();
                                    mallMemberCoupon.setCouponId(couponId);
                                    mallMemberCoupon.setCouponName(mallGoodsCoupon.getName());
                                    mallMemberCoupon.setMemberId(mallMember.getId());
                                    mallMemberCoupon.setCouponUuid(couponUUID);
                                    mallMemberCoupon.setInviteId(refMember.getInviteId());
                                    mallMemberCoupon.setState(1);
                                    mallMemberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(),mallGoodsCoupon.getExpireDay()));
                                    mallMemberCouponMapper.insert(mallMemberCoupon);
                                }
                            }
                        }
                    }
                } else {
                    if (MallMember.ACCOUNT_STATUS_DISABLED.equals(mallMember.getAccountStatus())) {
@@ -776,46 +825,49 @@
        mallMember.setSex(1 == apiXcxSaveInfoDto.getGender() ? "女" : "男");
        this.baseMapper.updateById(mallMember);
        //完善信息赠送新人礼
        if (StrUtil.isNotBlank(mallMember.getPhone())) {
            DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                    CommonDictionaryEnum.NEW_GIFT_SETTING.getType(),
                    CommonDictionaryEnum.NEW_GIFT_SETTING.getCode()
            );
            ApiNewGiftSettingDto apiNewGiftSettingDto = JSONObject.parseObject(dic.getValue(), ApiNewGiftSettingDto.class);
            if (apiNewGiftSettingDto.getState() == 1) {
                String prizeScore = apiNewGiftSettingDto.getPrizeScore();
                BigDecimal bigDecimal = new BigDecimal(prizeScore).setScale(0, RoundingMode.HALF_DOWN);
                if (bigDecimal.compareTo(BigDecimal.ZERO) > 0) {
                    walletService.add(bigDecimal, mallMember.getId(), "prizeScore");
                    mallMoneyFlowService.addMoneyFlow(
                            mallMember.getId(),
                            bigDecimal,
                            ScoreFlowTypeEnum.MEMBER_INFO_GIFT.getValue(),
                            MallUtils.getOrderNum(),
                            FlowTypeEnum.PRIZE_SCORE.getValue(),
                            StrUtil.format(ScoreFlowTypeEnum.MEMBER_INFO_GIFT.getDesc(),bigDecimal),
                            2
                    );
                }
                if (apiNewGiftSettingDto.getCouponId() != null) {
                    MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(apiNewGiftSettingDto.getCouponId());
                    if(ObjectUtil.isNotEmpty(mallGoodsCoupon)){
                        MallMemberCoupon memberCoupon = new MallMemberCoupon();
                        memberCoupon.setCouponId(mallGoodsCoupon.getId());
                        memberCoupon.setCouponName(mallGoodsCoupon.getName());
                        memberCoupon.setInviteId(mallMember.getInviteId());
                        memberCoupon.setCouponUuid(IdUtil.simpleUUID());
                        memberCoupon.setState(1);
                        memberCoupon.setFromType(3);
                        memberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(), mallGoodsCoupon.getExpireDay()));
                        memberCoupon.setMemberId(mallMember.getId());
                        mallMemberCouponMapper.insert(memberCoupon);
                    }
                }
            }
        }
//        //完善信息赠送新人礼
//        if (StrUtil.isNotBlank(mallMember.getPhone()) && mallMember.getNewGift() == 0) {
//            DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
//                    CommonDictionaryEnum.NEW_GIFT_SETTING.getType(),
//                    CommonDictionaryEnum.NEW_GIFT_SETTING.getCode()
//            );
//            mallMember.setNewGift(1);
//            this.baseMapper.updateById(mallMember);
//
//            ApiNewGiftSettingDto apiNewGiftSettingDto = JSONObject.parseObject(dic.getValue(), ApiNewGiftSettingDto.class);
//            if (apiNewGiftSettingDto.getState() == 1) {
//                String prizeScore = apiNewGiftSettingDto.getPrizeScore();
//                BigDecimal bigDecimal = new BigDecimal(prizeScore).setScale(0, RoundingMode.HALF_DOWN);
//                if (bigDecimal.compareTo(BigDecimal.ZERO) > 0) {
//                    walletService.add(bigDecimal, mallMember.getId(), "prizeScore");
//                    mallMoneyFlowService.addMoneyFlow(
//                            mallMember.getId(),
//                            bigDecimal,
//                            ScoreFlowTypeEnum.MEMBER_INFO_GIFT.getValue(),
//                            MallUtils.getOrderNum(),
//                            FlowTypeEnum.PRIZE_SCORE.getValue(),
//                            StrUtil.format(ScoreFlowTypeEnum.MEMBER_INFO_GIFT.getDesc(),bigDecimal),
//                            2
//                    );
//                }
//                if (apiNewGiftSettingDto.getCouponId() != null) {
//                    MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(apiNewGiftSettingDto.getCouponId());
//                    if(ObjectUtil.isNotEmpty(mallGoodsCoupon)){
//                        MallMemberCoupon memberCoupon = new MallMemberCoupon();
//                        memberCoupon.setCouponId(mallGoodsCoupon.getId());
//                        memberCoupon.setCouponName(mallGoodsCoupon.getName());
//                        memberCoupon.setInviteId(mallMember.getInviteId());
//                        memberCoupon.setCouponUuid(IdUtil.simpleUUID());
//                        memberCoupon.setState(1);
//                        memberCoupon.setFromType(3);
//                        memberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(), mallGoodsCoupon.getExpireDay()));
//                        memberCoupon.setMemberId(mallMember.getId());
//                        mallMemberCouponMapper.insert(memberCoupon);
//                    }
//                }
//
//            }
//        }
        return new FebsResponse().success();
    }
@@ -1608,8 +1660,6 @@
        if(apiMemberNewGiftSettingVo.getState() == 1 && apiMemberNewGiftSettingVo.getOpenState() == 1){
            mallMember.setNewGift(1);
            mallMember.setLastLoginTime(new Date());
            this.baseMapper.updateById(mallMember);
            BigDecimal prizeScore = new BigDecimal(StrUtil.isBlank(apiNewGiftSettingDto.getPrizeScore()) ? "0" : apiNewGiftSettingDto.getPrizeScore())
                    .setScale(0, RoundingMode.HALF_DOWN);
@@ -1661,11 +1711,48 @@
            }
        }
        mallMember.setLastLoginTime(new Date());
        this.baseMapper.updateById(mallMember);
//        this.baseMapper.updateLastLoginTime(memberId,new Date());
        return new FebsResponse().success().data(apiMemberNewGiftSettingVo);
    }
    @Override
    public FebsResponse getLabelList() {
        // 获取当前登录用户的ID
        Long memberId = LoginUserUtil.getLoginUser().getId();
        ArrayList<ApiMemberLabelVo> apiMemberLabelVos = new ArrayList<>();
        List<HappyMemberLabelRecord> happyMemberLabelRecords = happyMemberLabelRecordMapper.selectList(
                new LambdaQueryWrapper<HappyMemberLabelRecord>()
                        .eq(HappyMemberLabelRecord::getMemberId,memberId)
        );
        if(CollUtil.isNotEmpty(happyMemberLabelRecords)){
            Set<Long> collect = happyMemberLabelRecords.stream().map(HappyMemberLabelRecord::getLabelId).collect(Collectors.toSet());
            List<HappyMemberLabel> happyMemberLabels = happyMemberLabelMapper.selectList(
                    new LambdaQueryWrapper<HappyMemberLabel>()
                            .select(HappyMemberLabel::getIconPng)
                            .in(HappyMemberLabel::getId, collect)
            );
            if(CollUtil.isNotEmpty(happyMemberLabels)){
                for (HappyMemberLabel happyMemberLabel : happyMemberLabels) {
                    ApiMemberLabelVo apiMemberLabelVo = new ApiMemberLabelVo();
                    apiMemberLabelVo.setName(happyMemberLabel.getName());
                    apiMemberLabelVo.setContent(happyMemberLabel.getContent());
                    apiMemberLabelVo.setHeaderPng(happyMemberLabel.getHeaderPng());
                    apiMemberLabelVo.setIconPng(happyMemberLabel.getIconPng());
                    apiMemberLabelVos.add(apiMemberLabelVo);
                }
            }
        }
        return new FebsResponse().success().data(apiMemberLabelVos);
    }
//    public static void main(String[] args) {
//        Long userld = 16425L;
//        String shopAccount = "爱和美医疗";