chore: 并入 iotlcm-admin-svr 历史到 admin-svr/(原提交 49818c6)
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
package unsub
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
|
||||
"git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/consts"
|
||||
"git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/library/batchimport"
|
||||
"git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/model"
|
||||
|
||||
"github.com/gogf/gf/v2/encoding/gjson"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
type Processor struct {
|
||||
config batchimport.ProcessorConfig
|
||||
}
|
||||
|
||||
type submitOptions struct {
|
||||
SourceBatchNo string
|
||||
Remark string
|
||||
}
|
||||
|
||||
func NewProcessor() *Processor {
|
||||
return &Processor{
|
||||
config: batchimport.ProcessorConfig{
|
||||
Code: "sim_card_unsub",
|
||||
BatchType: consts.BatchTypeUnsub,
|
||||
BatchNoPrefix: consts.BatchNoPrefixUnsub,
|
||||
TaskName: consts.ResourceBatchDownloadTaskSimCardUnsub,
|
||||
ExportScene: consts.ResourceExportSceneUnsub,
|
||||
ImportDir: consts.SimCardUnsubSubDirImportExcel,
|
||||
ResultDir: consts.SimCardUnsubSubDirResultExcel,
|
||||
MaxFileSize: consts.SimCardUnsubMaxFileSize,
|
||||
TemplateHeaders: []string{"ICCID", "MSISDN", "IMSI"},
|
||||
RequiredHeaders: []string{"ICCID"},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Processor) Config() batchimport.ProcessorConfig {
|
||||
return p.config
|
||||
}
|
||||
|
||||
func (p *Processor) ParseRows(ctx context.Context, filePath string) ([]batchimport.Row, error) {
|
||||
return ParseExcelFileRows(ctx, filePath)
|
||||
}
|
||||
|
||||
func (p *Processor) ValidateRows(ctx context.Context, rows []batchimport.Row) error {
|
||||
unsubRows := make([]*Row, 0, len(rows))
|
||||
for _, item := range rows {
|
||||
row, ok := item.(*Row)
|
||||
if !ok || row == nil {
|
||||
item.AddErrorReason("退订行类型错误")
|
||||
continue
|
||||
}
|
||||
unsubRows = append(unsubRows, row)
|
||||
}
|
||||
return validateRows(unsubRows)
|
||||
}
|
||||
|
||||
func (p *Processor) BuildBatchInfo(ctx context.Context, req batchimport.SubmitRequest, result *batchimport.Result, importOss *model.SysOssSaveContentModel, resultOss *model.SysOssSaveContentModel, downloadId int64) *gjson.Json {
|
||||
info := g.Map{
|
||||
"operation": "unsub",
|
||||
"resultFile": g.Map{"status": "pending"},
|
||||
"submitScene": submitScene(req.BizParams),
|
||||
}
|
||||
if result != nil && result.ImportFileOssId > 0 {
|
||||
info["importFileOssId"] = result.ImportFileOssId
|
||||
} else if importOss != nil && importOss.OssId > 0 {
|
||||
info["importFileOssId"] = importOss.OssId
|
||||
}
|
||||
if opts, ok := maybeUnsubSubmitOptions(req.BizParams); ok {
|
||||
if opts.SourceBatchNo != "" {
|
||||
info["sourceBatchNo"] = opts.SourceBatchNo
|
||||
}
|
||||
if opts.Remark != "" {
|
||||
info["remark"] = opts.Remark
|
||||
}
|
||||
}
|
||||
return gjson.New(info)
|
||||
}
|
||||
|
||||
func submitScene(params any) string {
|
||||
switch params.(type) {
|
||||
case *model.TSimCardUnsubBatchSubmitParam:
|
||||
return "sourceBatch"
|
||||
case *model.TSimCardUnsubExcelSubmitParam:
|
||||
return "excel"
|
||||
case *model.TSimCardUnsubInputSubmitParam:
|
||||
return "input"
|
||||
case *model.TSimCardUnsubRangeSubmitParam:
|
||||
return "range"
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
func validateRows(rows []*Row) error {
|
||||
firstByIccid := make(map[string]*Row, len(rows))
|
||||
for _, row := range rows {
|
||||
if row == nil {
|
||||
continue
|
||||
}
|
||||
row.Iccid = strings.TrimSpace(row.Iccid)
|
||||
if row.Iccid == "" {
|
||||
row.AddReason("ICCID不能为空")
|
||||
continue
|
||||
}
|
||||
if first, ok := firstByIccid[row.Iccid]; ok {
|
||||
row.AddReason("ICCID重复")
|
||||
first.AddReason("ICCID重复")
|
||||
continue
|
||||
}
|
||||
firstByIccid[row.Iccid] = row
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func maybeUnsubSubmitOptions(params any) (submitOptions, bool) {
|
||||
switch in := params.(type) {
|
||||
case *model.TSimCardUnsubBatchSubmitParam:
|
||||
if in == nil {
|
||||
return submitOptions{}, false
|
||||
}
|
||||
return submitOptions{
|
||||
SourceBatchNo: strings.TrimSpace(in.SourceBatchNo),
|
||||
Remark: strings.TrimSpace(in.Remark),
|
||||
}, true
|
||||
case *model.TSimCardUnsubExcelSubmitParam:
|
||||
if in == nil {
|
||||
return submitOptions{}, false
|
||||
}
|
||||
return submitOptions{}, true
|
||||
case *model.TSimCardUnsubInputSubmitParam:
|
||||
if in == nil {
|
||||
return submitOptions{}, false
|
||||
}
|
||||
return submitOptions{Remark: strings.TrimSpace(in.Remark)}, true
|
||||
case *model.TSimCardUnsubRangeSubmitParam:
|
||||
if in == nil {
|
||||
return submitOptions{}, false
|
||||
}
|
||||
return submitOptions{Remark: strings.TrimSpace(in.Remark)}, true
|
||||
default:
|
||||
return submitOptions{}, false
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user