From 49f2eff2cf52e0f1719dfad43cafff11b378252c Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 20 十二月 2024 18:14:26 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java |  108 +++++++++++++++++++----------------------------------
 1 files changed, 39 insertions(+), 69 deletions(-)

diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java
index f2fc4eb..05b2c91 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java
@@ -7,7 +7,6 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.account.api.model.AppUser;
 import com.ruoyi.account.api.model.UserPoint;
-import com.ruoyi.other.api.enums.PointChangeType;
 import com.ruoyi.account.mapper.UserPointMapper;
 import com.ruoyi.account.service.AppUserService;
 import com.ruoyi.account.service.PointSettingService;
@@ -16,24 +15,23 @@
 import com.ruoyi.account.vo.UserPointDetailVO;
 import com.ruoyi.account.vo.UserPointStatistics;
 import com.ruoyi.account.vo.UserPointVO;
-import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.PhoneNumberValidator;
 import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.other.api.domain.PointSetting;
-import com.ruoyi.other.api.domain.Shop;
 import com.ruoyi.other.api.domain.VipSetting;
-import com.ruoyi.other.api.feignClient.ShopClient;
+import com.ruoyi.other.api.enums.PointChangeType;
 import com.ruoyi.system.api.model.LoginUser;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.*;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -55,17 +53,10 @@
     private VipSettingService vipSettingService;
     @Resource
     private PointSettingService pointSettingService;
-    @Resource
-    private UserPointMapper userPointMapper;
-    @Resource
-    private ShopClient shopClient;
 
     @Override
     public UserPointVO getUserPoint(Long userId) {
         AppUser appUser = appUserService.getById(userId);
-        List<UserPoint> userPointList = this.baseMapper.findLatestUserPointByTypeForUser(userId);
-        Map<Integer, Integer> userBalanceMap = userPointList.stream()
-                .collect(Collectors.toMap(UserPoint::getType, UserPoint::getBalance));
         VipSetting vipSetting = vipSettingService.getVipSettingByUserId(userId);
 
         UserPointVO userPointVO = new UserPointVO();
@@ -73,10 +64,10 @@
         userPointVO.setConsumePoint(appUser.getLavePoint());
         userPointVO.setShopPoint(appUser.getShopPoint());
         userPointVO.setSharePoint(appUser.getSharePoint());
-        userPointVO.setPullNewPoint(userBalanceMap.get(PointChangeType.PULL_NEW.getCode()));
-        userPointVO.setShopAchievementPoint(userBalanceMap.get(PointChangeType.SHOP_ACHIEVEMENT.getCode()));
-        userPointVO.setShopSharePoint(userBalanceMap.get(PointChangeType.SHOP_REBATE.getCode()));
-        userPointVO.setGiftPoint(vipSetting.getVipGiftRole() == 1 && vipSetting.getId() == 1 ? 1 : 0);
+        userPointVO.setPullNewPoint(appUser.getTotalInvitePoint());
+        userPointVO.setShopAchievementPoint(appUser.getShopAchievementPoint());
+        userPointVO.setShopSharePoint(appUser.getShopSharePoint());
+        userPointVO.setGiftPoint(vipSetting.getVipGiftRole() == 1 ? 1 : 0);
         return userPointVO;
     }
 
@@ -127,7 +118,7 @@
             throw new ServiceException("积分设置未找到");
         }
         // 可转赠积分总数
-        int adjustedPoint = getAdjustedPoint(pointSetting, appUser);
+        long adjustedPoint = getAdjustedPoint(pointSetting, appUser);
 
         if (point.compareTo(new BigDecimal(adjustedPoint)) > 0) {
             throw new ServiceException("转赠积分不足");
@@ -143,6 +134,11 @@
         appUserForPhoe.setTotalPoint(appUserForPhoe.getTotalPoint() + point.intValue());
         appUserService.updateById(appUserForPhoe);
 
+        Integer lavePoint = appUser.getLavePoint();
+        appUser.setLavePoint(lavePoint - point.intValue());
+        Integer totalPoint = appUser.getTotalPoint();
+        appUser.setTotalPoint(totalPoint - point.intValue());
+        appUserService.updateById(appUser);
         log.info("积分转赠完成,用户ID: {}, 新积分: {}", appUserForPhoe.getId(), appUserForPhoe.getLavePoint());
     }
 
@@ -150,65 +146,39 @@
      * 获取可转赠积分
      * @param pointSetting 积分设置
      * @param appUser 用户
-     * @return
      */
-    private int getAdjustedPoint(PointSetting pointSetting, AppUser appUser) {
-        int transferPoint = 0;
-
-        // 消费积分数
-        Integer buyPointGift = pointSetting.getBuyPointGift();
-        if (buyPointGift == 1){
-            transferPoint += appUser.getShopPoint();
+    private long getAdjustedPoint(PointSetting pointSetting, AppUser appUser) {
+        if (pointSetting == null || appUser == null) {
+            throw new ServiceException("pointSetting和appUser不能为空");
         }
 
-        // 返佣积分
-        Integer sharePointOpen = pointSetting.getSharePointGift();
-        if (sharePointOpen == 1){
-            transferPoint += appUser.getSharePoint();
-        }
+        long transferPoint = 0;
 
-        // 门店返佣积分
-        Integer shopSharePointGift = pointSetting.getShopSharePointGift();
-        R<List<Shop>> shops = shopClient.getShopByUserIds(Collections.singletonList(appUser.getId()));
-        List<Shop> shopList = shops.getData();
-        if (CollectionUtils.isEmpty(shopList)) {
-            throw new ServiceException("未找到门店");
-        }
-        if (shopSharePointGift == 1){
-            transferPoint += shopList.stream().mapToInt(Shop::getSharePoint).sum();
-        }
-        // 门店业绩积分
-        Integer shopPointOpen = pointSetting.getShopPointGift();
-        if (shopPointOpen == 1){
-            transferPoint += shopList.stream().mapToInt(Shop::getShopPoint).sum();
-        }
+        transferPoint += calculatePoint(pointSetting.getBuyPointGift(), appUser.getShopPoint(), pointSetting.getBuyPoint());
+        transferPoint += calculatePoint(pointSetting.getSharePointGift(), appUser.getSharePoint(), pointSetting.getSharePoint());
+        transferPoint += calculatePoint(pointSetting.getShopSharePointGift(), appUser.getShopSharePoint(), pointSetting.getShopSharePoint());
+        transferPoint += calculatePoint(pointSetting.getShopPointGift(), appUser.getShopAchievementPoint(), pointSetting.getShopPoint());
+        transferPoint += calculatePoint(pointSetting.getPersonPointGift(), appUser.getTotalPerformancePoint(), pointSetting.getPersonPoint());
+        transferPoint += calculatePoint(pointSetting.getGetNewPointGift(), appUser.getTotalInvitePoint(), pointSetting.getGetNewPoint());
+        transferPoint += calculatePoint(pointSetting.getGetRegisPointGift(), appUser.getTotalRegisterPoint(), pointSetting.getRegisPoint());
+        transferPoint += calculatePoint(pointSetting.getWorkPointGift(), appUser.getTotalSharePoint() + appUser.getTotalSignPoint() + appUser.getTotalHourPoint(), pointSetting.getWorkPoint());
 
-        // 技师业绩积分
-        Integer personPointOpen = pointSetting.getPersonPointGift();
-        if (personPointOpen == 1){
-            transferPoint += appUser.getTotalPerformancePoint();
-        }
-
-        // 拉新积分
-        Integer getNewPointOpen = pointSetting.getGetNewPointGift();
-        if (getNewPointOpen == 1){
-            transferPoint += appUser.getTotalInvitePoint();
-        }
-
-        // 注册积分
-        Integer getRegisPointGift = pointSetting.getGetRegisPointGift();
-        if (getRegisPointGift == 1){
-            transferPoint += appUser.getTotalRegisterPoint();
-        }
-
-        // 做工积分
-        Integer workPointOpen = pointSetting.getWorkPointGift();
-        if (workPointOpen == 1){
-            transferPoint += appUser.getTotalSharePoint() + appUser.getTotalSignPoint() + appUser.getTotalHourPoint();
-        }
         return transferPoint;
     }
 
+    private long calculatePoint(Integer settingValue, double userValue, double pointValue) {
+        if (settingValue == 1) {
+            try {
+                double result = userValue * (pointValue / 100.0);
+                return Math.round(result);
+            } catch (ArithmeticException e) {
+                return 0;
+            }
+        }
+        return 0;
+    }
+
+
 
     @Override
     public UserPointStatistics getStatistics(UserPoint userPoint) {

--
Gitblit v1.7.1