Browse Source

修改后台用户积分统计列表

zhangxin 14 hours ago
parent
commit
13f60b2b27

+ 27 - 6
yami-shop-service/src/main/resources/mapper/UserMapper.xml

@@ -107,12 +107,33 @@
     <select id="enterpriseUserList" resultType="com.yami.shop.bean.vo.EnterpriseUserVo">
         SELECT a.user_id,a.`status`,a.real_name,a.user_mobile,a.channel_id,
         (SELECT channel_name FROM tz_channel WHERE id= a.channel_id) channelName,
-        IFNULL((SELECT SUM(points) FROM tz_points_recharge WHERE user_id=a.user_id),0) total,
-        IFNULL((SELECT SUM(points) FROM tz_points_recharge WHERE user_id=a.user_id and recharge_status=1),0) available,
-        IFNULL((SELECT SUM(points) FROM tz_points_recharge WHERE user_id=a.user_id and recharge_status=2),0) expired,
-        (SELECT(IFNULL((SELECT SUM(points) FROM tz_points_record WHERE user_id = a.user_id AND points_type = 2 AND
-        points_audit IN (2,3)), 0)-
-        IFNULL((SELECT SUM(points) FROM tz_points_record WHERE user_id = a.user_id AND points_type = 3), 0))) used
+        IFNULL((SELECT SUM(points) FROM tz_points_recharge WHERE user_id=a.user_id),0) total, -- 总积分
+
+        IFNULL(( select (
+        SUM(CASE WHEN points_type = 1 OR points_type = 3 THEN points ELSE 0 END) -- 充值和退款的总积分
+        -
+        GREATEST(
+        SUM( CASE WHEN expiry_date &lt;= NOW() THEN
+        CASE WHEN points_type = 1 OR points_type = 3 THEN points
+        WHEN points_type = 2 THEN -variable_points
+        ELSE 0 END
+        ELSE 0 END ), 0) -- 所以情况的过期积分
+        -
+        SUM(CASE WHEN points_type = 2 THEN variable_points ELSE 0 END) -- 下单的所有积分  未使用 -过期的 = 可用的
+        )  from tz_points_record where user_id =  a.user_id  and channel_id = a.channel_id ),0) available, -- 当前可用积分
+
+        IFNULL(( select  GREATEST(
+        SUM(
+        CASE WHEN expiry_date &lt;= NOW() THEN
+        CASE  WHEN points_type = 1 OR points_type = 3 THEN points
+        WHEN points_type = 2 THEN -variable_points
+        ELSE 0 END
+        ELSE 0 END ), 0 ) from tz_points_record where user_id =  a.user_id  and channel_id = a.channel_id),0) expired, -- 已过期积分
+
+        IFNULL((select  (
+        SUM(CASE WHEN points_type = 2 THEN variable_points ELSE 0 END)
+        -
+        SUM(CASE WHEN points_type = 3 THEN points ELSE 0 END))  from tz_points_record 	where user_id =  a.user_id  and channel_id = a.channel_id),0) used -- 已消耗积分
         FROM tz_user a
         <where>
             a.channel_id in(SELECT id FROM tz_channel)

+ 24 - 0
yami-shop-user/yami-shop-user-comment/src/main/java/com/yami/shop/user/comment/service/impl/UserScoreDetailServiceImpl.java

@@ -202,6 +202,30 @@ public class UserScoreDetailServiceImpl extends ServiceImpl<UserScoreDetailMappe
                                     pointsRecord.getVariablePoints() : "0"));
                     break;
                 case 3:
+                    if (isExpiredToday(pointsRecord.getExpiryDate())&&pointsRecord.getPointsAudit()!=3) {
+                        PointsRecord expiredRecord = new PointsRecord();
+                        // 复制关键属性(根据实际属性补充)
+                        expiredRecord.setId(pointsRecord.getId()); // 若ID唯一需注意业务逻辑
+                        expiredRecord.setCreationDate(pointsRecord.getCreationDate());
+                        expiredRecord.setPointsType(pointsRecord.getPointsType());
+                        expiredRecord.setPoints(pointsRecord.getPoints());
+                        expiredRecord.setVariablePoints(pointsRecord.getVariablePoints());
+                        expiredRecord.setExpiryDate(pointsRecord.getExpiryDate());
+                        expiredRecord.setCurrentlyAvailablePoints(pointsRecord.getCurrentlyAvailablePoints());
+
+                        // 设置复制对象的显示属性
+                        expiredRecord.setCreationDateStr(pointsRecord.getCreationDateStr()); // 复用已格式化的日期
+                        expiredRecord.setPointsTypeStr("过期扣减"); // 示例:区分类型
+                        if (pointsRecord.getPointsAudit()==1){
+                            expiredRecord.setVariablePointsStr("-" + pointsRecord.getPoints()); // 示例:显示过期数量
+                        } else if (pointsRecord.getPointsAudit()==2) {
+                            expiredRecord.setVariablePointsStr("-" + (pointsRecord.getPoints().intValue()-pointsRecord.getVariablePoints().intValue())); // 示例:显示过期数量
+                        }
+
+                        // 设置原对象为过期记录
+                        expiredRecord.setPointsTypeStr("过期");
+                        recordsToAdd.add(expiredRecord); // 添加复制对象
+                    }
                     pointsRecord.setPointsTypeStr("退款");
                     mark = "+";
                     pointsRecord.setVariablePointsStr(mark + pointsRecord.getPoints());