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>
40 lines
1.7 KiB
Go
40 lines
1.7 KiB
Go
package packagesilence
|
|
|
|
import (
|
|
"time"
|
|
|
|
packagedomain "github.com/break/junhong_cmp_fiber/internal/domain/package"
|
|
"github.com/break/junhong_cmp_fiber/internal/model"
|
|
"github.com/break/junhong_cmp_fiber/internal/model/dto"
|
|
"github.com/break/junhong_cmp_fiber/pkg/constants"
|
|
)
|
|
|
|
// BuildView 构造套餐记录的沉默期展示信息;不适用沉默期时返回 nil。
|
|
// 待实名但已过截止、还没被扫描到的记录直接显示"沉默期已过期"(技术方案 §5.4)。
|
|
// 调用方只在总开关打开时调用。
|
|
func BuildView(usage *model.PackageUsage, now time.Time) *dto.PackageSilenceView {
|
|
if usage == nil || usage.SilenceStatus == nil || *usage.SilenceStatus == "" {
|
|
return nil
|
|
}
|
|
status := *usage.SilenceStatus
|
|
effectiveExpired := usage.Status == constants.PackageUsageStatusPending &&
|
|
packagedomain.IsSilenceEffectivelyExpired(status, usage.SilenceDeadlineAt, usage.SilenceAdjustPending, now)
|
|
if effectiveExpired {
|
|
status = constants.SilenceStatusExpired
|
|
}
|
|
return &dto.PackageSilenceView{
|
|
SilenceStatus: status,
|
|
SilenceStatusName: constants.SilenceStatusName(status, usage.SilenceExtendedDays > 0),
|
|
SilenceStartAt: usage.SilenceStartAt,
|
|
SilencePeriodDays: usage.SilencePeriodDays,
|
|
SilenceDeadlineAt: usage.SilenceDeadlineAt,
|
|
SilenceExtendedDays: usage.SilenceExtendedDays,
|
|
SilencePaidExtendedDays: usage.SilencePaidExtendedDays,
|
|
SilenceExtensionCount: usage.SilenceExtensionCount,
|
|
SilenceFreeExtensionUsed: usage.SilenceFreeExtensionUsed,
|
|
SilenceExpiredAt: usage.SilenceExpiredAt,
|
|
SilenceAdjustPending: usage.SilenceAdjustPending,
|
|
Extendable: effectiveExpired,
|
|
}
|
|
}
|