package iot import ( "context" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/logic/iot/simcardbatch/lifecycle" "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 sIotTSimCardStop struct { submitter *lifecycle.Submitter } func NewIotTSimCardStop() *sIotTSimCardStop { return &sIotTSimCardStop{submitter: lifecycle.NewSubmitter(lifecycle.OperationSuspend)} } func init() { service.RegisterIotTSimCardStop(NewIotTSimCardStop()) } func (s *sIotTSimCardStop) DownloadExcelTemplate(ctx context.Context) error { return writeLifecycleTemplate(ctx, "sim_card_stop_template") } func (s *sIotTSimCardStop) SubmitExcel(ctx context.Context, in *model.TSimCardStopExcelSubmitParam) (*model.TSimCardStopExcelSubmitRes, error) { if in == nil { in = &model.TSimCardStopExcelSubmitParam{} } file, err := lifecycleUploadFile(ctx) if err != nil { return nil, err } result, err := s.submitter.SubmitExcel(ctx, file, in.Remark) if err != nil { return nil, err } return lifecycleSubmitResponse(result), nil } func (s *sIotTSimCardStop) SubmitInput(ctx context.Context, in *model.TSimCardStopInputSubmitParam) (*model.TSimCardStopInputSubmitRes, error) { if in == nil { in = &model.TSimCardStopInputSubmitParam{} } result, err := s.submitter.SubmitInput(ctx, in.Input, in.Remark) if err != nil { return nil, err } return lifecycleSubmitResponse(result), nil } func writeLifecycleTemplate(ctx context.Context, fileName string) 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, fileName) } func lifecycleUploadFile(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 lifecycleSubmitResponse(result *lifecycle.SubmitResult) *model.TSimCardLifecycleSubmitRes { res := &model.TSimCardLifecycleSubmitRes{} if result == nil { return res } res.BatchNo = result.BatchNo res.BatchType = result.BatchType res.BatchAsyncStatus = result.BatchAsyncStatus res.Total = result.Total return res }