116 lines
6.2 KiB
Go
116 lines
6.2 KiB
Go
package model
|
||
|
||
import (
|
||
"github.com/gogf/gf/v2/os/gtime"
|
||
)
|
||
|
||
// 卡基础信息查询 / 月历史用量查询 共用的输入模式。
|
||
const (
|
||
SimCardQueryModeExcel = "excel" // Excel 模板导入
|
||
SimCardQueryModeInput = "input" // 多行文本批量输入
|
||
SimCardQueryModeRange = "range" // 连号(起止号段)
|
||
SimCardQueryModeDept = "dept" // 按所属公司查询(仅月历史用量查询支持)
|
||
)
|
||
|
||
// 单次查询的号码条数上限。
|
||
//
|
||
// 取值依据:
|
||
// - 与现有批量卡操作上限 20000 保持一致,避免用户对「批量」能力的容量认知分裂;
|
||
// - t_export_task.query_params 是 JSON 列,20000 条号码快照约 1MB,仍在可控范围;
|
||
// - 20000 行 xlsx 约 3~5MB,导出中心单任务 10 分钟超时内可以写完。
|
||
const SimCardQueryMaxRows = 20000
|
||
|
||
// SimCardQueryExportParam 卡基础信息查询导出参数。
|
||
// Excel 模式用 File,批量输入用 BatchInput,连号模式用 Dimension/StartNum/EndNum。
|
||
type SimCardQueryExportParam struct {
|
||
Mode string `json:"mode" dc:"输入方式 excel/input/range"`
|
||
BatchInput string `json:"batchInput" dc:"批量输入内容,每行 ICCID 或 ICCID MSISDN IMSI"`
|
||
Dimension string `json:"dimension" dc:"连号维度 iccid/msisdn/imsi"`
|
||
StartNum string `json:"startNum" dc:"起始号段"`
|
||
EndNum string `json:"endNum" dc:"结束号段"`
|
||
Iccid string `json:"iccid" dc:"仅按 ICCID 精确查询"`
|
||
ExportColumnsJson string `json:"exportColumnsJson" dc:"导出列(JSON字符串)"`
|
||
ExportColumns []ExportColumn `json:"exportColumns" dc:"导出列"`
|
||
}
|
||
|
||
// SimCardUsageHistoryExportParam 月历史用量查询导出参数。
|
||
// 在卡基础信息查询的基础上增加「按所属公司」模式。
|
||
type SimCardUsageHistoryExportParam struct {
|
||
SimCardQueryExportParam
|
||
DeptId int64 `json:"deptId" dc:"所属公司部门ID,mode=dept 时必填"`
|
||
// 到期日期区间,仅 dept 模式生效;为空表示不限。
|
||
ExpireStartTime string `json:"expireStartTime" dc:"到期日期起(含)"`
|
||
ExpireEndTime string `json:"expireEndTime" dc:"到期日期止(含)"`
|
||
}
|
||
|
||
// SimCardQuerySubmitRes 提交导出后的回执。
|
||
// 文件不在本次响应里返回,用户到「下载中心」下载;执行日志里看汇总结果。
|
||
type SimCardQuerySubmitRes struct {
|
||
TaskId int64 `json:"taskId" dc:"任务ID"`
|
||
TaskNo string `json:"taskNo" dc:"任务编号"`
|
||
Total int `json:"total" dc:"预计导出行数"`
|
||
}
|
||
|
||
// SimCardQueryResolveResult 输入解析结果。
|
||
// Rows 为按输入顺序展开的待导出行,未命中的行同样保留,用于在文件里写明失败原因。
|
||
type SimCardQueryResolveResult struct {
|
||
Rows []*SimCardBaseQueryRow
|
||
HitCount int
|
||
MissCount int
|
||
// Summaries 输入侧的错误(如某行格式错误),按行记录,最终汇总进执行日志。
|
||
Summaries []string
|
||
}
|
||
|
||
// SimCardBaseQueryRow 卡基础信息查询的导出行。
|
||
// 字段顺序即无列清单时的默认导出顺序;Field 名与前端列配置的 field 一一对应。
|
||
type SimCardBaseQueryRow struct {
|
||
Iccid string `json:"iccid" dc:"ICCID"`
|
||
Msisdn string `json:"msisdn" dc:"MSISDN"`
|
||
Imsi string `json:"imsi" dc:"IMSI"`
|
||
Imei string `json:"imei" dc:"IMEI"`
|
||
UsedFlowMb float64 `json:"usedFlowMb" dc:"当月用量(MB)"`
|
||
RemainFlowMb float64 `json:"remainFlowMb" dc:"当月剩余用量(MB)"`
|
||
PackageTotalMb float64 `json:"packageTotalMb" dc:"套餐总流量(MB)"`
|
||
CardStatus int `json:"cardStatus" dc:"卡状态"`
|
||
NetModel int `json:"netModel" dc:"网络类型"`
|
||
Operators string `json:"operators" dc:"运营商"`
|
||
ActivateAt *gtime.Time `json:"activateAt" dc:"激活时间"`
|
||
OutStockTime *gtime.Time `json:"outStockTime" dc:"出库时间"`
|
||
ExpireAt *gtime.Time `json:"expireAt" dc:"到期时间"`
|
||
OutboundBatch string `json:"outboundBatch" dc:"出库批次"`
|
||
InboundBatch string `json:"inboundBatch" dc:"入库批次"`
|
||
PackageName string `json:"packageName" dc:"当前套餐名称"`
|
||
DeptName string `json:"deptName" dc:"所属企业"`
|
||
Remark string `json:"remark" dc:"备注"`
|
||
ExtraRemark string `json:"extraRemark" dc:"其他备注"`
|
||
// QueryResult / FailReason 固定在文件末尾两列,保证「部分成功」时失败原因可追溯到具体输入。
|
||
QueryResult string `json:"queryResult" dc:"查询结果"`
|
||
FailReason string `json:"failReason" dc:"失败原因"`
|
||
}
|
||
|
||
// SimCardUsageHistoryRow 月历史用量查询的导出行。
|
||
// 近 12 个月的用量按月份动态列展开,MonthValues 与请求里的月份顺序一致。
|
||
type SimCardUsageHistoryRow struct {
|
||
Iccid string `json:"iccid" dc:"ICCID"`
|
||
Msisdn string `json:"msisdn" dc:"MSISDN"`
|
||
Imsi string `json:"imsi" dc:"IMSI"`
|
||
OutStockTime *gtime.Time `json:"outStockTime" dc:"出库时间"`
|
||
ExpireAt *gtime.Time `json:"expireAt" dc:"到期时间"`
|
||
// MonthValues 由调用方按月份顺序拼成 "2026-09" 这样的键,导出时逐列取值。
|
||
// 键不存在表示「查询成功但该月没有流量记录」,导出为 "-"。
|
||
MonthValues map[string]float64 `json:"monthValues" dc:"近12个月用量(MB)"`
|
||
// UsageQueryFailed 该卡的流量数据整体查询失败(服务抖动),导出时月份列写「查询失败」,
|
||
// 与「无记录(-)」「零用量(0)」区分开,避免客户误解。
|
||
UsageQueryFailed bool `json:"usageQueryFailed" dc:"流量数据是否查询失败"`
|
||
QueryResult string `json:"queryResult" dc:"查询结果"`
|
||
FailReason string `json:"failReason" dc:"失败原因"`
|
||
}
|
||
|
||
// SimCardQueryDeptOption 所属公司下拉项。
|
||
type SimCardQueryDeptOption struct {
|
||
DeptId int64 `json:"deptId" dc:"部门ID"`
|
||
DeptName string `json:"deptName" dc:"公司名称"`
|
||
CardCount int64 `json:"cardCount" dc:"名下卡数量"`
|
||
ParentId int64 `json:"parentId" dc:"上级部门ID"`
|
||
}
|