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/entity/MallMember.java | 2 + src/main/java/cc/mrbird/febs/mall/vo/ApiMemberNewGiftSettingVo.java | 4 + src/main/java/cc/mrbird/febs/mall/service/impl/ApiSaleServiceImpl.java | 4 +- src/main/java/cc/mrbird/febs/common/enumerates/ScoreFlowTypeEnum.java | 2 + src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 77 +++++++++++++++++++++++++++++--------- 5 files changed, 67 insertions(+), 22 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/ScoreFlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/ScoreFlowTypeEnum.java index bbd082a..791f49c 100644 --- a/src/main/java/cc/mrbird/febs/common/enumerates/ScoreFlowTypeEnum.java +++ b/src/main/java/cc/mrbird/febs/common/enumerates/ScoreFlowTypeEnum.java @@ -6,6 +6,8 @@ public enum ScoreFlowTypeEnum { + NEW_GIFT_COUPON(24,"新人礼,获得{}优惠卷"), + NEW_GIFT_PRIZE_SCORE(23,"新人礼,获得{}积分"), SYSTEM(22,"系统操作{}"), WITHDRAWAL(21,"用户余额提现{}"), COMMISSION_TO_PRIZE_SCORE(20,"划转{}佣金到积分"), diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java index a942f25..40e2e15 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java @@ -191,4 +191,6 @@ private Integer doctorState; //是否是核销员 0-否 1-是 private Integer checkOrder; + //是否领取新人礼 0-否 1-是 + private Integer newGift; } 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); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiSaleServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiSaleServiceImpl.java index f825857..2f8b711 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiSaleServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiSaleServiceImpl.java @@ -323,8 +323,8 @@ vo.setMemberCode(mallMember.getDirector()); vo.setMemberScore(mallMemberWallet.getScore()); vo.setUpgradeScore( - ObjectUtil.isEmpty(happyMemberLevelMap.get(happyMemberLevel.getCode() + 1)) ? - 0 : happyMemberLevelMap.get(happyMemberLevel.getCode() + 1).getUpgradeScore() + ObjectUtil.isEmpty(happyMemberLevelMap.get(happyMemberLevel.getCode())) ? + 0 : happyMemberLevelMap.get(happyMemberLevel.getCode()).getUpgradeScore() ); apiLevelListInfoVos.add(vo); } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiMemberNewGiftSettingVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiMemberNewGiftSettingVo.java index d06130a..baabe27 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/ApiMemberNewGiftSettingVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiMemberNewGiftSettingVo.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.math.BigDecimal; + @Data @ApiModel(value = "ApiMemberNewGiftSettingVo", description = "参数类") public class ApiMemberNewGiftSettingVo { @@ -22,7 +24,7 @@ * 积分 */ @ApiModelProperty(value = "赠送积分数量", example = "1") - private String prizeScore; + private BigDecimal prizeScore; /** * 优惠券ID */ -- Gitblit v1.9.1