Files
junhong_cmp_fiber/internal/infrastructure/carrierthreshold/commander.go
break 59b3df868a
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 12m59s
feat(通道流量阈值): AUG26-011 运营商通道流量阈值达量停机与周期复机
2026-09-16 15:54:49 +08:00

71 lines
3.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Package carrierthreshold 提供运营商通道流量阈值的停复机执行适配与计划任务处理。
//
// 本包只做两件事:把通道阈值的执行需求转发到既有停复机服务(不新增任何网关调用层实现、
// 不复制既有判定规则),以及把两个计划任务入口转换成对通道阈值用例的调用。
package carrierthreshold
import (
"context"
carrierthresholdapp "github.com/break/junhong_cmp_fiber/internal/application/carrierthreshold"
carrierthresholddomain "github.com/break/junhong_cmp_fiber/internal/domain/carrierthreshold"
iotcardsvc "github.com/break/junhong_cmp_fiber/internal/service/iot_card"
"github.com/break/junhong_cmp_fiber/pkg/errors"
)
// CardCommander 把通道阈值的停复机执行需求转发到既有停复机服务。
//
// 复用点:停机/复机的 3 次重试、Integration Log、统一审计、卡状态观测序列以及有效主套餐、
// 流量耗尽、实名、风险网关扩展等判定;本适配器不包含任何业务规则。
type CardCommander struct {
service *iotcardsvc.StopResumeService
}
// 编译期断言:适配器满足通道阈值停复机执行端口。
var _ carrierthresholdapp.CardCommander = (*CardCommander)(nil)
// NewCardCommander 创建通道阈值停复机执行适配器。
func NewCardCommander(service *iotcardsvc.StopResumeService) *CardCommander {
return &CardCommander{service: service}
}
// StopCardForThreshold 执行通道阈值达量停机。
func (c *CardCommander) StopCardForThreshold(ctx context.Context, cardID uint) (carrierthresholddomain.CommandOutcome, error) {
if c == nil || c.service == nil {
return carrierthresholddomain.CommandOutcome{}, errors.New(errors.CodeServiceUnavailable, "通道流量阈值停机执行能力未配置")
}
return c.service.StopCardForChannelThreshold(ctx, cardID)
}
// ResumeCardForThreshold 执行通道阈值新周期复机。
func (c *CardCommander) ResumeCardForThreshold(ctx context.Context, cardID uint) (carrierthresholddomain.CommandOutcome, error) {
if c == nil || c.service == nil {
return carrierthresholddomain.CommandOutcome{}, errors.New(errors.CodeServiceUnavailable, "通道流量阈值复机执行能力未配置")
}
return c.service.ResumeCardForChannelThreshold(ctx, cardID)
}
// ResumeReady 判断解锁后的卡是否满足自动复机条件。
func (c *CardCommander) ResumeReady(ctx context.Context, cardID uint) (bool, string, error) {
if c == nil || c.service == nil {
return false, "", errors.New(errors.CodeServiceUnavailable, "通道流量阈值复机判定能力未配置")
}
return c.service.ChannelThresholdResumeReady(ctx, cardID)
}
// CardNetworkStatus 只查询运营商卡状态并映射为本地网络状态。
func (c *CardCommander) CardNetworkStatus(ctx context.Context, cardID uint) (int, bool, string, error) {
if c == nil || c.service == nil {
return 0, false, "", errors.New(errors.CodeServiceUnavailable, "通道流量阈值状态查询能力未配置")
}
return c.service.QueryChannelThresholdCardStatus(ctx, cardID)
}
// ConfirmCardState 按已确认的运营商结果补写卡状态。
func (c *CardCommander) ConfirmCardState(ctx context.Context, cardID uint, offline bool) error {
if c == nil || c.service == nil {
return errors.New(errors.CodeServiceUnavailable, "通道流量阈值卡状态确认能力未配置")
}
return c.service.ConfirmChannelThresholdCardState(ctx, cardID, offline)
}