package change 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/database/gdb" "github.com/gogf/gf/v2/encoding/gjson" "github.com/gogf/gf/v2/frame/g" ) // PrepareProcessor 描述 batch_type=4 的卡变更预处理批次。 type PrepareProcessor struct { inner *Processor repo *Repository config batchimport.ProcessorConfig } func NewPrepareProcessor() *PrepareProcessor { inner := NewProcessor() cfg := inner.config cfg.Code = "sim_card_change_prepare" cfg.BatchType = consts.BatchTypePrepare cfg.BatchNoPrefix = consts.BatchNoPrefixChange return &PrepareProcessor{ inner: inner, repo: inner.repo, config: cfg, } } func (p *PrepareProcessor) Config() batchimport.ProcessorConfig { return p.config } func (p *PrepareProcessor) ParseRows(ctx context.Context, filePath string) ([]batchimport.Row, error) { return nil, nil } func (p *PrepareProcessor) ValidateRows(ctx context.Context, rows []batchimport.Row) error { return p.inner.ValidateRows(ctx, rows) } func (p *PrepareProcessor) Execute(ctx context.Context, tx gdb.TX, req *batchimport.SubmitRequest, rows []batchimport.Row) error { return nil } func (p *PrepareProcessor) BuildBatchInfo(ctx context.Context, req batchimport.SubmitRequest, result *batchimport.Result, importOss *model.SysOssSaveContentModel, resultOss *model.SysOssSaveContentModel, downloadId int64) *gjson.Json { info := g.Map{} if result != nil && result.ImportFileOssId > 0 { info["importFileOssId"] = result.ImportFileOssId } else if importOss != nil && importOss.OssId > 0 { info["importFileOssId"] = importOss.OssId } if resultOss != nil { info["resultFileOssId"] = resultOss.OssId } if downloadId > 0 { info["resultDownloadId"] = downloadId } info["targetBatchType"] = consts.BatchTypeChange info["targetBatchName"] = "卡变更" if in, ok := req.BizParams.(*model.TSimCardChangeBatchPrepareParam); ok && in != nil { if sourceBatchNo := strings.TrimSpace(in.SourceBatchNo); sourceBatchNo != "" { info["sourceBatchNo"] = sourceBatchNo } } if in, ok := req.BizParams.(*model.TSimCardChangeBatchSubmitParam); ok && in != nil { if newPackageCode := strings.TrimSpace(in.NewPackageCode); newPackageCode != "" { info["newPackageCode"] = newPackageCode } if in.DurationMonths > 0 { info["durationMonths"] = in.DurationMonths } if in.GiftDurationMonths >= 0 { info["giftDurationMonths"] = in.GiftDurationMonths } if effectiveMode := strings.TrimSpace(in.EffectiveMode); effectiveMode != "" { info["effectiveMode"] = effectiveMode } info["offlineContractCompleted"] = in.OfflineContractCompleted } if snapshot, ok := req.ExecutionResult.(*model.TSimCardChangePrepareSnapshot); ok && snapshot != nil { if snapshot.SourceBatchNo != "" { info["sourceBatchNo"] = snapshot.SourceBatchNo } info["customerAgentId"] = snapshot.CustomerAgentId info["customerName"] = snapshot.CustomerName info["oldPackageCode"] = snapshot.OldPackageCode info["oldPackageName"] = snapshot.OldPackageName info["oldPackageType"] = snapshot.OldPackageType info["oldPackageFlowMb"] = snapshot.OldPackageFlowMb if result != nil { info["quantity"] = result.ValidRows } } return gjson.New(info) } func (p *PrepareProcessor) ValidatePrepareContext(ctx context.Context, tx gdb.TX, in *model.TSimCardChangeBatchPrepareParam, operator batchimport.OperatorContext, rows []*Row) (*PrepareContext, error) { return p.inner.ValidatePrepareContext(ctx, tx, in, operator, rows) }