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 |   99 +++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 87 insertions(+), 12 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 879af4e..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())) {
@@ -649,6 +656,7 @@
                     mallMember.setAccountType(MallMember.ACCOUNT_TYPE_NORMAL);
                     mallMember.setOpenId(openId);
                     mallMember.setSessionKey(sessionKey);
+                    mallMember.setTradePassword(SecureUtil.md5("123456"));
 
                     if (StrUtil.isNotBlank(apiXcxLoginDto.getInviteId())) {
                         MallMember member = this.baseMapper.selectInfoByInviteId(apiXcxLoginDto.getInviteId());
@@ -693,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("账号已停用");
@@ -762,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()
@@ -918,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();
@@ -1568,25 +1585,83 @@
 
     @Override
     public FebsResponse newGiftEvent() {
+        // 获取当前登录用户的ID
+        Long memberId = LoginUserUtil.getLoginUser().getId();
+
+        ApiMemberNewGiftSettingVo apiMemberNewGiftSettingVo = new ApiMemberNewGiftSettingVo();
+
+        MallMember mallMember = this.baseMapper.selectById(memberId);
+
+        Integer newGift = mallMember.getNewGift();
+        if(newGift == 0){
+            apiMemberNewGiftSettingVo.setOpenState(1);
+        }else{
+            apiMemberNewGiftSettingVo.setOpenState(0);
+        }
+
         DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                 CommonDictionaryEnum.NEW_GIFT_SETTING.getType(),
                 CommonDictionaryEnum.NEW_GIFT_SETTING.getCode()
         );
         ApiNewGiftSettingDto apiNewGiftSettingDto = JSONObject.parseObject(dic.getValue(), ApiNewGiftSettingDto.class);
-
-        ApiMemberNewGiftSettingVo apiMemberNewGiftSettingVo = new ApiMemberNewGiftSettingVo();
         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