phpcjl
2024-12-03 3eaa323545e3d4f781bfeb16c68a30cc610a69b9
1.分佣延迟队列
6个文件已修改
1个文件已添加
71 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/model/Order.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/BaseSetting.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/AfterSalesTask.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderGoodsVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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")
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;
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;
ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/AfterSalesTask.java
New file
@@ -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);
        }
    }
}
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);
    }
}
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;
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;