package iot import ( "context" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/consts" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/logic/iot/simcardbatch/unsub" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/model" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/service" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/utility/iot_excelize" "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/net/ghttp" "github.com/xuri/excelize/v2" ) type sIotTSimCardUnsub struct{} func NewIotTSimCardUnsub() *sIotTSimCardUnsub { return &sIotTSimCardUnsub{} } func init() { service.RegisterIotTSimCardUnsub(NewIotTSimCardUnsub()) } func (s *sIotTSimCardUnsub) SubmitBatch(ctx context.Context, in *model.TSimCardUnsubBatchSubmitParam) (*model.TSimCardUnsubBatchSubmitRes, error) { if in == nil { in = &model.TSimCardUnsubBatchSubmitParam{} } result, err := unsub.CreatePendingBatch(ctx, in) if err != nil { return nil, err } return unsubSubmitResult(result), nil } func (s *sIotTSimCardUnsub) DownloadExcelTemplate(ctx context.Context) error { f := excelize.NewFile() defer func() { _ = f.Close() }() headers := []string{"ICCID", "MSISDN", "IMSI"} if err := f.SetSheetRow("Sheet1", "A1", &headers); err != nil { return err } if err := iot_excelize.ApplyHeaderColumnsTextStyle(f); err != nil { return err } return iot_excelize.WriteHTTP(ctx, f, "sim_card_unsub_template") } func (s *sIotTSimCardUnsub) SubmitExcel(ctx context.Context, in *model.TSimCardUnsubExcelSubmitParam) (*model.TSimCardUnsubExcelSubmitRes, error) { if in == nil { in = &model.TSimCardUnsubExcelSubmitParam{} } file, err := s.getUploadFile(ctx) if err != nil { return nil, err } result, err := unsub.CreatePendingExcel(ctx, file, in) if err != nil { return nil, err } return (*model.TSimCardUnsubExcelSubmitRes)(unsubSubmitResult(result)), nil } func (s *sIotTSimCardUnsub) SubmitInput(ctx context.Context, in *model.TSimCardUnsubInputSubmitParam) (*model.TSimCardUnsubInputSubmitRes, error) { if in == nil { in = &model.TSimCardUnsubInputSubmitParam{} } result, err := unsub.CreatePendingInput(ctx, in) if err != nil { return nil, err } return (*model.TSimCardUnsubInputSubmitRes)(unsubSubmitResult(result)), nil } func (s *sIotTSimCardUnsub) SubmitRange(ctx context.Context, in *model.TSimCardUnsubRangeSubmitParam) (*model.TSimCardUnsubRangeSubmitRes, error) { if in == nil { in = &model.TSimCardUnsubRangeSubmitParam{} } result, err := unsub.CreatePendingRange(ctx, in) if err != nil { return nil, err } return (*model.TSimCardUnsubRangeSubmitRes)(unsubSubmitResult(result)), nil } func (s *sIotTSimCardUnsub) getUploadFile(ctx context.Context) (*ghttp.UploadFile, error) { r := g.RequestFromCtx(ctx) if r == nil { return nil, gerror.New("当前上下文不是HTTP请求") } file := r.GetUploadFile("file") if file == nil { return nil, gerror.New("请选择上传文件") } return file, nil } func unsubSubmitResult(result *unsub.PendingResult) *model.TSimCardUnsubBatchSubmitRes { if result == nil { return &model.TSimCardUnsubBatchSubmitRes{ BatchType: consts.BatchTypeUnsub, BatchAsyncStatus: consts.BatchAsyncStatusPending, } } return &model.TSimCardUnsubBatchSubmitRes{ BatchNo: result.BatchNo, BatchType: result.BatchType, BatchAsyncStatus: result.BatchAsyncStatus, Total: result.Total, ValidCount: result.ValidCount, FailCount: result.FailCount, } }