From 3eaa323545e3d4f781bfeb16c68a30cc610a69b9 Mon Sep 17 00:00:00 2001
From: phpcjl <phpcjl@gmail.com>
Date: 星期二, 03 十二月 2024 11:13:58 +0800
Subject: [PATCH] 1.分佣延迟队列

---
 ruoyi-api/ruoyi-api-order/src/main/java/model/Order.java                                   |    4 ++
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/BaseSetting.java        |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java |   18 +++++++++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java              |    4 +-
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderGoodsVO.java               |    2 
 ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/AfterSalesTask.java               |   36 ++++++++++++++++++
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java         |    5 --
 7 files changed, 63 insertions(+), 8 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 63362a1..bf858fd 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
@@ -148,10 +148,7 @@
     @ApiModelProperty(value = "分销总金额")
     @TableField("total_distribution_amount")
     private BigDecimal totalDistributionAmount;
-    
-    @ApiModelProperty(value = "账户余额")
-    @TableField("balance")
-    private BigDecimal balance;
+
     
     @ApiModelProperty(value = "剩余积分")
     @TableField("lave_point")
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/model/Order.java b/ruoyi-api/ruoyi-api-order/src/main/java/model/Order.java
index 3497fd6..adccbf4 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/model/Order.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/model/Order.java
@@ -48,6 +48,10 @@
     @TableField("end_time")
     private LocalDateTime endTime;
 
+    @ApiModelProperty(value = "售后截止日期")
+    @TableField("after_sale_time")
+    private LocalDateTime afterSaleTime;
+
     @ApiModelProperty(value = "技师id")
     @TableField("technician_id")
     private Integer technicianId;
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/BaseSetting.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/BaseSetting.java
index 5fbef93..d8c2d8a 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/BaseSetting.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/BaseSetting.java
@@ -26,7 +26,7 @@
 
     private static final long serialVersionUID = 1L;
 
-    @ApiModelProperty(value = "1:合伙人积分设置一	2:合伙人积分设置二	3:会员说明设置	4:活动管理-活动设置 1开0关")
+    @ApiModelProperty(value = "1:合伙人积分设置一	2:合伙人积分设置二	3:会员说明设置	4:活动管理-活动设置 1开0关  5:售后设置")
     @TableId("id")
     private Integer id;
 
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/AfterSalesTask.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/AfterSalesTask.java
new file mode 100644
index 0000000..ab84d57
--- /dev/null
+++ b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/AfterSalesTask.java
@@ -0,0 +1,36 @@
+package com.ruoyi.job.task;
+
+import lombok.extern.log4j.Log4j2;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.Set;
+
+@Component("ryTask")
+@Log4j2
+public class AfterSalesTask {
+    @Resource
+    private RedisTemplate<String, String> redisTemplate;
+
+    /**
+     * 计算佣金
+     */
+    public void afterSales()
+    {
+        long now = System.currentTimeMillis() / 1000; // 获取当前时间戳(秒)
+        // 从延迟队列中获取需要处理的订单
+        Set<String> orderIds = redisTemplate.opsForZSet().rangeByScore("delay_queue:commission", 0, now);
+        if (orderIds != null && !orderIds.isEmpty()) {
+            for (String orderId : orderIds) {
+                try {
+                    Long id = Long.parseLong(orderId);
+                } catch (NumberFormatException e) {
+                    log.error("延迟队列中的订单ID无效: {}", orderId, e);
+                }
+            }
+            // 处理完后移除已处理的订单
+            redisTemplate.opsForZSet().removeRangeByScore("delay_queue:commission", 0, now);
+        }
+    }
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
index a59f576..d31cc5b 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -26,10 +26,13 @@
 import com.ruoyi.system.api.model.LoginUser;
 import model.Order;
 import model.OrderGood;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -54,6 +57,8 @@
     private TokenService tokenService;
     @Resource
     private TechnicianClient technicianClient;
+    @Resource
+    private RedisTemplate<String, String> redisTemplate;
 
     @Override
     public List<OrderVO> selectOrderListByUserId(Integer status, Long userId) {
@@ -184,4 +189,17 @@
             }
         }
     }
+
+
+    /**
+     * 返佣延迟队列
+     *
+     * @param orderId           订单ID
+     * @param afterSalesDeadline 售后截止日期(计算日期)
+     */
+    private void addToCommissionDelayQueue(Long orderId, LocalDateTime afterSalesDeadline) {
+        // 获取订单售后截止日期时间戳(秒)
+        long deadlineTimestamp = afterSalesDeadline.atZone(ZoneId.systemDefault()).toEpochSecond();
+        redisTemplate.opsForZSet().add("delay_queue:commission", orderId.toString(), deadlineTimestamp);
+    }
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java
index 2377c61..bf677d3 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java
@@ -18,7 +18,7 @@
     private List<OrderGoodsVO> goodsList;
 
     @ApiModelProperty(value = "使用积分")
-    private BigDecimal point;
+    private Integer point;
 
     @ApiModelProperty(value = "收货地址id")
     private Long addressId;
@@ -54,7 +54,7 @@
     private BigDecimal expressAmount;
 
     @ApiModelProperty(value = "可获得积分")
-    private BigDecimal pointAmount;
+    private Integer pointAmount;
 
     @ApiModelProperty(value = "实际支付价格")
     private BigDecimal paymentAmount;
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderGoodsVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderGoodsVO.java
index e19f665..f733df3 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderGoodsVO.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderGoodsVO.java
@@ -10,7 +10,7 @@
 @ApiModel(value = "订单商品")
 public class OrderGoodsVO {
     @ApiModelProperty(value = "商品id")
-    private Long goodsId;
+    private Integer goodsId;
 
     @ApiModelProperty(value = "商品名称")
     private String goodsName;

--
Gitblit v1.7.1