From b98363420db796eec5ea884f2b42a7b6a8868924 Mon Sep 17 00:00:00 2001
From: phpcjl <phpcjl@gmail.com>
Date: 星期四, 19 十二月 2024 18:56:37 +0800
Subject: [PATCH] 1
---
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java | 104 +++++++++++++---------------------
ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml | 10 ---
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/PointSettingServiceImpl.java | 9 +++
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java | 16 ++++-
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/PointSettingService.java | 2
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/UserPointMapper.java | 2
6 files changed, 62 insertions(+), 81 deletions(-)
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java
index 9499843..ca3ea33 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java
@@ -179,6 +179,14 @@
@TableField("total_register_point")
private Integer totalRegisterPoint;
+ @ApiModelProperty(value = "门店业绩积分")
+ @TableField("shop_achievement_point")
+ private Integer shopAchievementPoint;
+
+ @ApiModelProperty(value = "门店返佣积分")
+ @TableField("shop_share_point")
+ private Integer shopSharePoint;
+
// @ApiModelProperty(value = "做工积分总数")
// @TableField("total_work_point")
// private Integer totalWorkPoint;
@@ -200,13 +208,13 @@
private Integer totalPerformancePoint;
- @ApiModelProperty(value = "剩余积分")
- @TableField("lave_point")
- private Integer lavePoint;
-
@ApiModelProperty(value = "总积分")
@TableField("total_point")
private Integer totalPoint;
+
+ @ApiModelProperty(value = "剩余积分(可用于消费的积分)")
+ @TableField("lave_point")
+ private Integer lavePoint;
@ApiModelProperty(value = "是否可更换推广人(0=否,1=是)")
@TableField("change_promoter")
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/UserPointMapper.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/UserPointMapper.java
index 8daeb5c..d8af26a 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/UserPointMapper.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/UserPointMapper.java
@@ -17,8 +17,6 @@
*/
public interface UserPointMapper extends BaseMapper<UserPoint> {
- List<UserPoint> findLatestUserPointByTypeForUser(Long userId);
-
IPage<UserPoint> queryUserPointPage(@Param("page") IPage<UserPoint> page,@Param("userPoint") UserPoint userPoint);
List<UserPoint> selectUserPoint(@Param("userPoint") UserPoint userPoint);
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/PointSettingService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/PointSettingService.java
index 064686f..13a6a9a 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/PointSettingService.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/PointSettingService.java
@@ -5,4 +5,6 @@
public interface PointSettingService {
PointSetting getPointSettingByAppUserId(Long appUserId);
+
+ PointSetting getPointSettingById(Integer id);
}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/PointSettingServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/PointSettingServiceImpl.java
index 50fdd69..42de2ab 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/PointSettingServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/PointSettingServiceImpl.java
@@ -26,4 +26,13 @@
}
return r.getData();
}
+
+ @Override
+ public PointSetting getPointSettingById(Integer id) {
+ R<PointSetting> r = pointSettingClient.getPointSetting(id);
+ if (!R.isSuccess(r)){
+ throw new RuntimeException("获取积分设置失败");
+ }
+ return r.getData();
+ }
}
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..71267e7 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,24 @@
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.enums.PointChangeType;
import com.ruoyi.other.api.feignClient.ShopClient;
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;
/**
@@ -56,16 +55,11 @@
@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 +67,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 +121,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 +137,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());
}
@@ -152,63 +151,38 @@
* @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) {
diff --git a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml
index d054e5e..74192fd 100644
--- a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml
+++ b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml
@@ -17,16 +17,6 @@
<sql id="Base_Column_List">
id, type, historical_point, variable_point, create_time, app_user_id, object_id
</sql>
- <select id="findLatestUserPointByTypeForUser" resultType="com.ruoyi.account.api.model.UserPoint">
- SELECT
- t1.*
- FROM
- t_user_point t1
- INNER JOIN ( SELECT type, MAX( create_time ) AS max_create_time FROM t_user_point WHERE app_user_id = #{userId} GROUP BY type ) t2 ON t1.type = t2.type
- AND t1.create_time = t2.max_create_time
- WHERE
- t1.app_user_id = #{userId}
- </select>
<sql id="userPointList">
SELECT
--
Gitblit v1.7.1