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 | 98 ++++++++++++++++++++++++++++++++++++++----------
1 files changed, 77 insertions(+), 21 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 2dd08c5..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}")
@@ -275,12 +276,18 @@
);
if(happyMemberLevel != null){
mallMemberVo.setLevelName(happyMemberLevel.getName());
+ mallMemberVo.setLevelNamePng(happyMemberLevel.getIconPng());
}
if(StrUtil.isNotEmpty(mallMember.getReferrerId())){
MallMember referMember = this.baseMapper.selectInfoByInviteId(mallMember.getReferrerId());
if (referMember != null) {
mallMemberVo.setReferrerName(referMember.getName());
}
+ }
+ if(mallMember.getStoreMaster() == 0){
+ mallMemberVo.setIsTeamLeader(2);
+ }else{
+ mallMemberVo.setIsTeamLeader(1);
}
if (StrUtil.isNotBlank(mallMember.getTradePassword())) {
@@ -694,6 +701,13 @@
wallet.setBalance(BigDecimal.ZERO);
wallet.setMemberId(mallMember.getId());
mallMemberWalletMapper.insert(wallet);
+
+ //分销员的邀请码赠送优惠卷
+ if (StrUtil.isNotBlank(apiXcxLoginDto.getInviteId())) {
+ GetCouponDto getCouponDto = new GetCouponDto();
+ getCouponDto.setInviteId(apiXcxLoginDto.getInviteId());
+ scanCoupon(getCouponDto);
+ }
} else {
if (MallMember.ACCOUNT_STATUS_DISABLED.equals(mallMember.getAccountStatus())) {
throw new FebsException("账号已停用");
@@ -763,7 +777,7 @@
this.baseMapper.updateById(mallMember);
//完善信息赠送新人礼
- if (StrUtil.isBlank(mallMember.getLevel())) {
+ if (StrUtil.isNotBlank(mallMember.getPhone())) {
DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
CommonDictionaryEnum.NEW_GIFT_SETTING.getType(),
CommonDictionaryEnum.NEW_GIFT_SETTING.getCode()
@@ -919,10 +933,12 @@
mallMoneyFlowService.addMoneyFlow(
memberId,
amount,
- MoneyFlowTypeEnum.RECHARGE.getValue(),
+ ScoreFlowTypeEnum.RECHARGE_ING.getValue(),
rechargeNo,
FlowTypeEnum.BALANCE.getValue(),
- "余额充值",1);
+ StrUtil.format(ScoreFlowTypeEnum.RECHARGE_ING.getDesc(),amount),
+ 1
+ );
String wxResultStr = JSONUtil.toJsonStr(brandWCPayRequestData);
String payResultStr = brandWCPayRequestData.getPrepay_id();
@@ -1575,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(
@@ -1595,17 +1605,63 @@
);
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());
+
return new FebsResponse().success().data(apiMemberNewGiftSettingVo);
}
--
Gitblit v1.9.1