feat: 实名即生效套餐沉默期、延期办理与资产出库时间
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 8m39s
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 8m39s
- 迁移 000259~000265:套餐记录沉默期字段与扫描索引、套餐默认沉默期、延期政策/流水/订单/批次/明细 5 张表、默认政策与系统配置(总开关默认关闭)、企微审批白名单、卡与设备出库时间及出库记录 - 沉默期设置(订单发放、自动购包、钱包续费)、后台购买时调整(超默认值按政策免审或企微审批)、统一判定与激活闸门、排队与孤儿扫描跳过过期套餐、过期套餐禁止退款、每 10 分钟扫描 - 总开关专用接口与打开前 4 项检查;延期政策;延期资格与计费;H5 自助与后台二维码在线支付(商户池路由)、支付回调与查单恢复、线下登记、特殊/批量延期、异常重试与原路退款;沉默期审批场景与终态处理 - 换货沉默期流水与出库时间;卡/设备列表、详情、导出与出库记录接口;延期订单与即将过期套餐列表及导出;财务流水纳入延期支付 - 沉默期与出库时间回填工具 cmd/silence-backfill;前端接口变更说明 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -3,6 +3,7 @@ package main
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
packagesilenceApp "github.com/break/junhong_cmp_fiber/internal/application/packagesilence"
|
||||
"os"
|
||||
"os/signal"
|
||||
"strconv"
|
||||
@@ -563,6 +564,8 @@ func registerWeComApprovalOutboxConsumer(runtime *workerRuntime, cfg *config.Con
|
||||
constants.ApprovalBusinessTypeCommissionWithdrawal: distributionwithdrawalApp.NewWithdrawalApprovalHandler(
|
||||
runtime.db, auditWriter,
|
||||
),
|
||||
// 沉默期审批(购买时调整、线下付费延期、特殊延期):总开关关闭时照常处理
|
||||
constants.ApprovalBusinessTypePackageSilence: packagesilenceApp.NewDecisionHandler(runtime.workerResult.Services.SilenceExtensions),
|
||||
},
|
||||
owner,
|
||||
appLogger,
|
||||
@@ -1083,6 +1086,28 @@ func registerAsynqScheduleTasks(asynqScheduler *asynq.Scheduler, auditArchiveEna
|
||||
)); err != nil {
|
||||
return fmt.Errorf("注册每日套餐临期提醒扫描定时任务失败: %w", err)
|
||||
}
|
||||
// 沉默期延期订单恢复:每 5 分钟查单、超时关闭、异常订单原路退款;不受总开关影响。
|
||||
if _, err := asynqScheduler.Register(constants.SilenceOrderRecoverCron, asynq.NewTask(
|
||||
constants.TaskTypePackageSilenceOrderRecover,
|
||||
nil,
|
||||
asynq.MaxRetry(3),
|
||||
asynq.Timeout(4*time.Minute),
|
||||
asynq.Unique(4*time.Minute),
|
||||
asynq.Queue(constants.QueueForTaskType(constants.TaskTypePackageSilenceOrderRecover)),
|
||||
)); err != nil {
|
||||
return fmt.Errorf("注册沉默期延期订单恢复定时任务失败: %w", err)
|
||||
}
|
||||
// 沉默期扫描:每 10 分钟;总开关关闭时任务直接返回(技术方案 §5.4)。
|
||||
if _, err := asynqScheduler.Register(constants.SilenceScanCron, asynq.NewTask(
|
||||
constants.TaskTypePackageSilenceScan,
|
||||
nil,
|
||||
asynq.MaxRetry(constants.SilenceScanMaxRetry),
|
||||
asynq.Timeout(constants.SilenceScanUniqueTTL),
|
||||
asynq.Unique(constants.SilenceScanUniqueTTL),
|
||||
asynq.Queue(constants.QueueForTaskType(constants.TaskTypePackageSilenceScan)),
|
||||
)); err != nil {
|
||||
return fmt.Errorf("注册沉默期扫描定时任务失败: %w", err)
|
||||
}
|
||||
if _, err := asynqScheduler.Register("CRON_TZ=Asia/Shanghai 0 6 * * *", asynq.NewTask(
|
||||
constants.TaskTypePackageTrafficAlertScan,
|
||||
nil,
|
||||
|
||||
Reference in New Issue
Block a user