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