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