From 4c8e67fe64b347e43b9ddd4c436448bb62cde1ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Tue, 10 Feb 2026 10:46:05 +0800 Subject: [PATCH] =?UTF-8?q?feat(task):=20=E5=AE=8C=E5=96=84=E7=BB=8F?= =?UTF-8?q?=E9=94=80=E5=95=86=E4=BD=A3=E9=87=91=E8=A7=A3=E5=86=BB=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 ShopDealerOrderService 服务注入用于订单状态更新 - 添加 isUnfreeze 和 unfreezeTime 字段到 ShopDealerOrder 实体 - 实现佣金解冻完成后自动更新分销订单状态为"已解冻" - 添加解冻时间记录功能 - 通过统计 flowType 判断佣金解冻完成度避免提前更新状态 - 增加解冻状态更新失败的日志警告 --- .../DealerCommissionUnfreeze10584Task.java | 50 +++++++++++++++++++ .../shop/entity/ShopDealerOrder.java | 6 +++ 2 files changed, 56 insertions(+) diff --git a/src/main/java/com/gxwebsoft/glt/task/DealerCommissionUnfreeze10584Task.java b/src/main/java/com/gxwebsoft/glt/task/DealerCommissionUnfreeze10584Task.java index 7fc6d1f..081a25a 100644 --- a/src/main/java/com/gxwebsoft/glt/task/DealerCommissionUnfreeze10584Task.java +++ b/src/main/java/com/gxwebsoft/glt/task/DealerCommissionUnfreeze10584Task.java @@ -1,6 +1,7 @@ package com.gxwebsoft.glt.task; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.gxwebsoft.common.core.annotation.IgnoreTenant; import com.gxwebsoft.glt.entity.GltTicketOrder; import com.gxwebsoft.glt.entity.GltTicketTemplate; @@ -9,9 +10,11 @@ import com.gxwebsoft.glt.service.GltTicketOrderService; import com.gxwebsoft.glt.service.GltTicketTemplateService; import com.gxwebsoft.glt.service.GltUserTicketService; import com.gxwebsoft.shop.entity.ShopDealerCapital; +import com.gxwebsoft.shop.entity.ShopDealerOrder; import com.gxwebsoft.shop.entity.ShopDealerUser; import com.gxwebsoft.shop.entity.ShopOrder; import com.gxwebsoft.shop.service.ShopDealerCapitalService; +import com.gxwebsoft.shop.service.ShopDealerOrderService; import com.gxwebsoft.shop.service.ShopDealerUserService; import com.gxwebsoft.shop.service.ShopOrderService; import lombok.extern.slf4j.Slf4j; @@ -65,6 +68,9 @@ public class DealerCommissionUnfreeze10584Task { @Resource private ShopDealerCapitalService shopDealerCapitalService; + @Resource + private ShopDealerOrderService shopDealerOrderService; + @Resource private ShopDealerUserService shopDealerUserService; @@ -355,12 +361,56 @@ public class DealerCommissionUnfreeze10584Task { marker.setUpdateTime(now); shopDealerCapitalService.save(marker); + // 佣金全部解冻完成后,将分销订单状态置为“已解冻”(0)。 + // 以当前任务生成的 flowType=50 marker 数量作为完成度判断,避免提前将订单置为已解冻。 + setDealerOrderUnfrozenIfCompleted(orderNo, now); + log.info("佣金解冻成功 - tenantId={}, orderNo={}, dealerUserId={}, amount={}, capitalId={}", TENANT_ID, orderNo, dealerUserId, amount, capitalId); return true; })); } + private void setDealerOrderUnfrozenIfCompleted(String orderNo, LocalDateTime now) { + if (orderNo == null || orderNo.isBlank()) { + return; + } + + long totalCommissions = shopDealerCapitalService.count( + new LambdaQueryWrapper() + .eq(ShopDealerCapital::getTenantId, TENANT_ID) + .eq(ShopDealerCapital::getFlowType, 10) + .eq(ShopDealerCapital::getOrderNo, orderNo) + ); + if (totalCommissions <= 0) { + return; + } + + long unfrozenMarkers = shopDealerCapitalService.count( + new LambdaQueryWrapper() + .eq(ShopDealerCapital::getTenantId, TENANT_ID) + .eq(ShopDealerCapital::getFlowType, 50) + .eq(ShopDealerCapital::getOrderNo, orderNo) + .like(ShopDealerCapital::getComments, "佣金解冻(capitalId=") + ); + + if (unfrozenMarkers < totalCommissions) { + return; + } + + boolean updated = shopDealerOrderService.update( + new LambdaUpdateWrapper() + .eq(ShopDealerOrder::getTenantId, TENANT_ID) + .eq(ShopDealerOrder::getOrderNo, orderNo) + .set(ShopDealerOrder::getIsUnfreeze, 1) + .set(ShopDealerOrder::getUnfreezeTime, now) + .set(ShopDealerOrder::getUpdateTime, now) + ); + if (!updated) { + log.warn("已完成佣金解冻,但更新分销订单isUnfreeze失败/无记录 - tenantId={}, orderNo={}", TENANT_ID, orderNo); + } + } + private String buildUnfreezeMarkerComment(Integer capitalId) { return "佣金解冻(capitalId=" + capitalId + ")"; } diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopDealerOrder.java b/src/main/java/com/gxwebsoft/shop/entity/ShopDealerOrder.java index 32be34d..e3c0c74 100644 --- a/src/main/java/com/gxwebsoft/shop/entity/ShopDealerOrder.java +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopDealerOrder.java @@ -120,9 +120,15 @@ public class ShopDealerOrder implements Serializable { @Schema(description = "佣金结算(0未结算 1已结算)") private Integer isSettled; + @Schema(description = "佣金冻结(1解冻中 0已解冻)") + private Integer isUnfreeze; + @Schema(description = "结算时间") private LocalDateTime settleTime; + @Schema(description = "解冻时间") + private LocalDateTime unfreezeTime; + @Schema(description = "备注") private String comments;