From 9b51a95fa8bc9b3a86108c6900e17fc55f8db467 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 19 May 2025 17:02:07 +0800
Subject: [PATCH] refactor(vip): 优化积分和返佣计算逻辑

---
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java |   46 +++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 41 insertions(+), 5 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..7761620 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
@@ -275,12 +275,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 +655,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 +700,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 +776,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 +932,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,13 +1584,31 @@
 
     @Override
     public FebsResponse newGiftEvent() {
+        // 获取当前登录用户的ID
+        Long memberId = LoginUserUtil.getLoginUser().getId();
+
+        ApiMemberNewGiftSettingVo apiMemberNewGiftSettingVo = new ApiMemberNewGiftSettingVo();
+
+        MallMember mallMember = this.baseMapper.selectById(memberId);
+        Date lastLoginTime = mallMember.getLastLoginTime();
+        if(lastLoginTime == null){
+            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);
+            }
+        }
+
         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());
 
@@ -1587,6 +1621,8 @@
             apiMemberNewGiftSettingVo.setCouponName(coupons.get(0).getName());
         }
 
+        this.baseMapper.updateLastLoginTime(memberId,new Date());
+
         return new FebsResponse().success().data(apiMemberNewGiftSettingVo);
     }
 

--
Gitblit v1.9.1