package batchimport import ( "context" "strings" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/consts" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/dao" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/library/contexts" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/model" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/model/do" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/model/entity" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/service" "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/net/ghttp" "github.com/gogf/gf/v2/os/gtime" ) func SaveUpload(ctx context.Context, file *ghttp.UploadFile, fileName, subDirName string) (*model.SysOssSaveContentModel, error) { if file == nil { return nil, gerror.New("upload file is required") } result, err := service.SysOss().UploadLocalWithFileName( ctx, file, consts.SysUploadNewFileTypeUserFile, strings.TrimSpace(fileName), subDirName, 0, ) if err != nil { return nil, err } now := gtime.Now() id, err := g.DB().Model(dao.SysOss.Table()).Data(do.SysOss{ TenantId: contexts.GetTenantId(ctx), FileName: result.Name, OriginalName: result.OriginalName, FileSuffix: result.Ext, Path: result.Path, Url: result.FullPath, CreatedDept: contexts.GetDeptId(ctx), CreatedAt: now, CreatedBy: contexts.GetUserId(ctx), UpdatedAt: now, UpdatedBy: contexts.GetUserId(ctx), Service: "local", Md5: result.Md5, FileSize: result.Size, FileCrc16: result.Crc16, FileSum: result.Sum16, }).InsertAndGetId() if err != nil { return nil, gerror.Wrap(err, "save uploaded file metadata failed") } oss := &entity.SysOss{} if err = g.DB().Model(dao.SysOss.Table()).Where(dao.SysOss.Columns().OssId, id).Scan(oss); err != nil { return nil, gerror.Wrap(err, "load uploaded file metadata failed") } return &model.SysOssSaveContentModel{SysOss: oss}, nil }