package iot import ( "context" "strings" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/logic/iot/simcardbatch/dataswitch" "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 sIotTSimCardDataStart struct { submitter *dataswitch.Submitter } func NewIotTSimCardDataStart() *sIotTSimCardDataStart { return &sIotTSimCardDataStart{submitter: dataswitch.NewSubmitter(dataswitch.OperationDataStart)} } func init() { service.RegisterIotTSimCardDataStart(NewIotTSimCardDataStart()) } func (s *sIotTSimCardDataStart) DownloadExcelTemplate(ctx context.Context) error { return writeDataTemplate(ctx, "sim_card_data_start_template") } func (s *sIotTSimCardDataStart) SubmitExcel(ctx context.Context, in *model.TSimCardDataStartExcelSubmitParam) (*model.TSimCardDataStartSubmitRes, error) { if in == nil { in = &model.TSimCardDataStartExcelSubmitParam{} } file, err := dataUploadFile(ctx) if err != nil { return nil, err } result, err := s.submitter.SubmitExcel(ctx, file, in.Remark) if err != nil { return nil, err } return dataSubmitResponse(result), nil } func (s *sIotTSimCardDataStart) SubmitInput(ctx context.Context, in *model.TSimCardDataStartInputSubmitParam) (*model.TSimCardDataStartSubmitRes, error) { if in == nil { in = &model.TSimCardDataStartInputSubmitParam{} } result, err := s.submitter.SubmitInput(ctx, in.Input, in.Remark) if err != nil { return nil, err } return dataSubmitResponse(result), nil } type sIotTSimCardDataStop struct { submitter *dataswitch.Submitter } func NewIotTSimCardDataStop() *sIotTSimCardDataStop { return &sIotTSimCardDataStop{submitter: dataswitch.NewSubmitter(dataswitch.OperationDataStop)} } func init() { service.RegisterIotTSimCardDataStop(NewIotTSimCardDataStop()) } func (s *sIotTSimCardDataStop) DownloadExcelTemplate(ctx context.Context) error { return writeDataTemplate(ctx, "sim_card_data_stop_template") } func (s *sIotTSimCardDataStop) SubmitExcel(ctx context.Context, in *model.TSimCardDataStopExcelSubmitParam) (*model.TSimCardDataStopSubmitRes, error) { if in == nil { in = &model.TSimCardDataStopExcelSubmitParam{} } file, err := dataUploadFile(ctx) if err != nil { return nil, err } result, err := s.submitter.SubmitExcel(ctx, file, in.Remark) if err != nil { return nil, err } return dataSubmitResponse(result), nil } func (s *sIotTSimCardDataStop) SubmitInput(ctx context.Context, in *model.TSimCardDataStopInputSubmitParam) (*model.TSimCardDataStopSubmitRes, error) { if in == nil { in = &model.TSimCardDataStopInputSubmitParam{} } input := strings.TrimSpace(in.Input) if input == "" { return nil, gerror.New("批量输入内容不能为空") } result, err := s.submitter.SubmitInput(ctx, in.Input, in.Remark) if err != nil { return nil, err } return dataSubmitResponse(result), nil } func writeDataTemplate(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 dataUploadFile(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 dataSubmitResponse(result *dataswitch.SubmitResult) *model.TSimCardDataStartSubmitRes { res := &model.TSimCardDataStartSubmitRes{} if result == nil { return res } res.BatchNo = result.BatchNo res.BatchType = result.BatchType res.BatchAsyncStatus = result.BatchAsyncStatus res.Total = result.Total return res }