From c99b27b5d7f63b7c9ebe0ed682a82d28c238453a Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Tue, 20 May 2025 11:49:42 +0800 Subject: [PATCH] feat(mall): 新增新人礼功能 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 77 +++++++++++++++++++++++++++++--------- 1 files changed, 58 insertions(+), 19 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java index 7761620..84e81b0 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java @@ -89,6 +89,7 @@ private final MallStoreMemberMapper mallStoreMemberMapper; private final MallDoctorMapper mallDoctorMapper; private final HappyMemberLevelMapper happyMemberLevelMapper; + private final IApiMallMemberWalletService mallMemberWalletService; @Value("${spring.profiles.active}") @@ -1590,18 +1591,12 @@ ApiMemberNewGiftSettingVo apiMemberNewGiftSettingVo = new ApiMemberNewGiftSettingVo(); MallMember mallMember = this.baseMapper.selectById(memberId); - Date lastLoginTime = mallMember.getLastLoginTime(); - if(lastLoginTime == null){ + + Integer newGift = mallMember.getNewGift(); + if(newGift == 0){ apiMemberNewGiftSettingVo.setOpenState(1); - } - if(lastLoginTime != null){ - Date now = new Date(); - long between = DateUtil.between(lastLoginTime, now, DateUnit.DAY); - if(between > 0){ - apiMemberNewGiftSettingVo.setOpenState(1); - }else{ - apiMemberNewGiftSettingVo.setOpenState(0); - } + }else{ + apiMemberNewGiftSettingVo.setOpenState(0); } DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( @@ -1610,18 +1605,62 @@ ); ApiNewGiftSettingDto apiNewGiftSettingDto = JSONObject.parseObject(dic.getValue(), ApiNewGiftSettingDto.class); apiMemberNewGiftSettingVo.setState(apiNewGiftSettingDto.getState()); - apiMemberNewGiftSettingVo.setPrizeScore(apiNewGiftSettingDto.getPrizeScore()); + if(apiMemberNewGiftSettingVo.getState() == 1 && apiMemberNewGiftSettingVo.getOpenState() == 1){ + mallMember.setNewGift(1); + mallMember.setLastLoginTime(new Date()); + this.baseMapper.updateById(mallMember); - LambdaQueryWrapper<MallGoodsCoupon> query = new LambdaQueryWrapper<>(); - query.eq(MallGoodsCoupon::getId, apiNewGiftSettingDto.getCouponId()) - .eq(MallGoodsCoupon::getState, 2); - List<MallGoodsCoupon> coupons = mallGoodsCouponMapper.selectList(query); - if(CollUtil.isNotEmpty(coupons)){ - apiMemberNewGiftSettingVo.setCouponName(coupons.get(0).getName()); + BigDecimal prizeScore = new BigDecimal(StrUtil.isBlank(apiNewGiftSettingDto.getPrizeScore()) ? "0" : apiNewGiftSettingDto.getPrizeScore()) + .setScale(0, RoundingMode.HALF_DOWN); + + if(prizeScore.compareTo(BigDecimal.ZERO) > 0){ + mallMoneyFlowService.addMoneyFlow( + memberId, + prizeScore, + ScoreFlowTypeEnum.NEW_GIFT_PRIZE_SCORE.getValue(), + MallUtils.getOrderNum(), + FlowTypeEnum.PRIZE_SCORE.getValue(), + StrUtil.format( ScoreFlowTypeEnum.NEW_GIFT_PRIZE_SCORE.getDesc(),prizeScore), + 2); + mallMemberWalletService.add(prizeScore,memberId , "prizeScore"); + + apiMemberNewGiftSettingVo.setPrizeScore(prizeScore); + } + + String couponUUID = IdUtil.simpleUUID(); + if(ObjectUtil.isNotEmpty(apiNewGiftSettingDto.getCouponId())){ + Long couponId = apiNewGiftSettingDto.getCouponId(); + MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(couponId); + List<MallMemberCoupon> mallMemberCoupons = mallMemberCouponMapper.selectListByMemberIdCouponIdWithOutInviteId(memberId, couponId); + if(CollUtil.isEmpty(mallMemberCoupons)){ + //商品优惠卷如果绑定了,那么当前登陆者获取一张卷 + MallMemberCoupon mallMemberCoupon = new MallMemberCoupon(); + mallMemberCoupon.setCouponId(couponId); + mallMemberCoupon.setCouponName(mallGoodsCoupon.getName()); + mallMemberCoupon.setMemberId(memberId); + mallMemberCoupon.setCouponUuid(couponUUID); + mallMemberCoupon.setInviteId(mallMember.getInviteId()); + mallMemberCoupon.setState(1); + mallMemberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(),mallGoodsCoupon.getExpireDay())); + mallMemberCouponMapper.insert(mallMemberCoupon); + + mallMoneyFlowService.addMoneyFlow( + memberId, + BigDecimal.ONE, + ScoreFlowTypeEnum.NEW_GIFT_COUPON.getValue(), + MallUtils.getOrderNum(), + FlowTypeEnum.BALANCE.getValue(), + StrUtil.format( ScoreFlowTypeEnum.NEW_GIFT_COUPON.getDesc(),mallGoodsCoupon.getName()), + 2); + + apiMemberNewGiftSettingVo.setCouponName(mallGoodsCoupon.getName()); + } + } + } - this.baseMapper.updateLastLoginTime(memberId,new Date()); +// this.baseMapper.updateLastLoginTime(memberId,new Date()); return new FebsResponse().success().data(apiMemberNewGiftSettingVo); } -- Gitblit v1.9.1