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;