perf(task): 调整定时任务执行频率以优化性能
- 将经销商佣金解冻任务执行频率从每分钟调整为每30秒一次 - 将经销商订单结算任务执行频率从每20秒调整为每10秒一次 - 将GLT套票发放任务执行频率从每分钟调整为每15秒一次 - 将GLT票券订单自动确认任务执行频率从每分钟调整为每33秒一次 - 将GLT用户票券自动释放任务执行频率从每分钟调整为每10分钟一次 - 在票券订单完成时同步更新商城订单状态为已完成
This commit is contained in:
@@ -407,6 +407,8 @@ public class GltTicketOrderServiceImpl extends ServiceImpl<GltTicketOrderMapper,
|
|||||||
if (ok) {
|
if (ok) {
|
||||||
// 配送员拍照上传送达后可触发提成结算(幂等,重复调用不会重复入账)
|
// 配送员拍照上传送达后可触发提成结算(幂等,重复调用不会重复入账)
|
||||||
settleRiderCommissionIfEligible(id, tenantId, true);
|
settleRiderCommissionIfEligible(id, tenantId, true);
|
||||||
|
// 配送员确认送达后,同步商城订单为“已完成”(orderStatus=1)
|
||||||
|
updateShopOrderOrderStatusAfterTicketFinished(id, tenantId, now);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -426,6 +428,7 @@ public class GltTicketOrderServiceImpl extends ServiceImpl<GltTicketOrderMapper,
|
|||||||
|| order.getDeliveryStatus() == DELIVERY_STATUS_FINISHED)) {
|
|| order.getDeliveryStatus() == DELIVERY_STATUS_FINISHED)) {
|
||||||
// 幂等:重复送达视为成功
|
// 幂等:重复送达视为成功
|
||||||
settleRiderCommissionIfEligible(id, tenantId, true);
|
settleRiderCommissionIfEligible(id, tenantId, true);
|
||||||
|
updateShopOrderOrderStatusAfterTicketFinished(id, tenantId, LocalDateTime.now());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
throw new BusinessException("订单状态不允许确认送达");
|
throw new BusinessException("订单状态不允许确认送达");
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ public class DealerCommissionUnfreeze10584Task {
|
|||||||
|
|
||||||
private final AtomicBoolean running = new AtomicBoolean(false);
|
private final AtomicBoolean running = new AtomicBoolean(false);
|
||||||
|
|
||||||
@Scheduled(cron = "${dealer.commission.unfreeze10584.cron:0 */1 * * * ?}")
|
@Scheduled(cron = "${dealer.commission.unfreeze10584.cron:0/30 * * * * ?}")
|
||||||
@IgnoreTenant("定时任务无登录态,需忽略租户隔离;内部使用 tenantId=10584 精确过滤")
|
@IgnoreTenant("定时任务无登录态,需忽略租户隔离;内部使用 tenantId=10584 精确过滤")
|
||||||
public void run() {
|
public void run() {
|
||||||
if (!running.compareAndSet(false, true)) {
|
if (!running.compareAndSet(false, true)) {
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ import java.util.*;
|
|||||||
/**
|
/**
|
||||||
* 租户10584:分销订单结算任务
|
* 租户10584:分销订单结算任务
|
||||||
* <p>
|
* <p>
|
||||||
* 每20秒执行一次,查询“已付款且未结算”的订单,按指定规则计算佣金并先计入分销商冻结金额(freezeMoney),并将订单置为已结算。
|
* 每10秒执行一次,查询“已付款且未结算”的订单,按指定规则计算佣金并先计入分销商冻结金额(freezeMoney),并将订单置为已结算。
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
@@ -88,9 +88,9 @@ public class DealerOrderSettlement10584Task {
|
|||||||
private UserMapper userMapper;
|
private UserMapper userMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 每30秒执行一次。
|
* 每10秒执行一次。
|
||||||
*/
|
*/
|
||||||
@Scheduled(cron = "0/20 * * * * ?")
|
@Scheduled(cron = "0/10 * * * * ?")
|
||||||
@IgnoreTenant("该定时任务仅处理租户10584,但需要显式按tenantId过滤,避免定时任务线程无租户上下文导致查询异常")
|
@IgnoreTenant("该定时任务仅处理租户10584,但需要显式按tenantId过滤,避免定时任务线程无租户上下文导致查询异常")
|
||||||
public void settleTenant10584Orders() {
|
public void settleTenant10584Orders() {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* GLT 套票发放任务:
|
* GLT 套票发放任务:
|
||||||
* - 每分钟扫描一次今日订单(tenantId=10584, formId in 套票模板 goodsId, payStatus=1, orderStatus=0)
|
* - 每30秒扫描一次今日订单(tenantId=10584, formId in 套票模板 goodsId, payStatus=1, orderStatus=0)
|
||||||
* - 为订单生成用户套票账户 + 释放计划(幂等)
|
* - 为订单生成用户套票账户 + 释放计划(幂等)
|
||||||
* - 若模板配置了 startSendQty,则发放时自动核销对应数量(用于“第一次送水”场景)
|
* - 若模板配置了 startSendQty,则发放时自动核销对应数量(用于“第一次送水”场景)
|
||||||
*/
|
*/
|
||||||
@@ -33,7 +33,7 @@ public class GltTicketIssue10584Task {
|
|||||||
|
|
||||||
private final AtomicBoolean running = new AtomicBoolean(false);
|
private final AtomicBoolean running = new AtomicBoolean(false);
|
||||||
|
|
||||||
@Scheduled(cron = "${glt.ticket.issue10584.cron:0 */1 * * * ?}")
|
@Scheduled(cron = "${glt.ticket.issue10584.cron:0/15 * * * * ?}")
|
||||||
@IgnoreTenant("定时任务无登录态,需忽略租户隔离;内部使用 tenantId=10584 精确过滤")
|
@IgnoreTenant("定时任务无登录态,需忽略租户隔离;内部使用 tenantId=10584 精确过滤")
|
||||||
public void run() {
|
public void run() {
|
||||||
if (!running.compareAndSet(false, true)) {
|
if (!running.compareAndSet(false, true)) {
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ public class GltTicketOrderAutoConfirm10584Task {
|
|||||||
|
|
||||||
private final AtomicBoolean running = new AtomicBoolean(false);
|
private final AtomicBoolean running = new AtomicBoolean(false);
|
||||||
|
|
||||||
@Scheduled(cron = "${glt.ticket-order.auto-confirm10584.cron:0 */1 * * * ?}")
|
@Scheduled(cron = "${glt.ticket-order.auto-confirm10584.cron:0/33 * * * * ?}")
|
||||||
@IgnoreTenant("定时任务无登录态,需忽略租户隔离;内部使用 tenantId=10584 精确过滤")
|
@IgnoreTenant("定时任务无登录态,需忽略租户隔离;内部使用 tenantId=10584 精确过滤")
|
||||||
public void run() {
|
public void run() {
|
||||||
if (!running.compareAndSet(false, true)) {
|
if (!running.compareAndSet(false, true)) {
|
||||||
@@ -53,4 +53,3 @@ public class GltTicketOrderAutoConfirm10584Task {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ public class GltUserTicketAutoReleaseTask {
|
|||||||
|
|
||||||
private final AtomicBoolean running = new AtomicBoolean(false);
|
private final AtomicBoolean running = new AtomicBoolean(false);
|
||||||
|
|
||||||
@Scheduled(cron = "${glt.ticket.auto-release.cron:0 */1 * * * ?}")
|
@Scheduled(cron = "${glt.ticket.auto-release.cron:0 */10 * * * ?}")
|
||||||
@IgnoreTenant("定时任务无登录态,需忽略租户隔离;释放记录自带 tenantId,更新时会校验 tenantId")
|
@IgnoreTenant("定时任务无登录态,需忽略租户隔离;释放记录自带 tenantId,更新时会校验 tenantId")
|
||||||
public void run() {
|
public void run() {
|
||||||
if (!running.compareAndSet(false, true)) {
|
if (!running.compareAndSet(false, true)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user