瀏覽代碼

fix import

windows-pc 4 天之前
父節點
當前提交
307dd69549
共有 3 個文件被更改,包括 53 次插入10 次删除
  1. 48 10
      sku3d/sku3d/api/a-excel.go
  2. 2 0
      sku3d/sku3d/go.mod
  3. 3 0
      sku3d/sku3d/go.sum

+ 48 - 10
sku3d/sku3d/api/a-excel.go

@@ -21,6 +21,8 @@ import (
 	"github.com/gin-gonic/gin"
 	excelize "github.com/xuri/excelize/v2"
 	"go.mongodb.org/mongo-driver/bson/primitive"
+
+	"github.com/aliyun/aliyun-oss-go-sdk/oss"
 )
 
 // 固定Excel模板表头
@@ -73,12 +75,12 @@ func ExcelImportWithImages(c *gin.Context, apictx *ApiSession, file io.Reader, g
 
 	// 获取分类配置
 	cat := []*model.Category{}
-	found, err := repo.RepoSeachDoc(apictx.CreateRepoCtx(), &repo.DocSearchOptions{
+	err = repo.RepoSeachDocs(apictx.CreateRepoCtx(), &repo.DocSearchOptions{
 		CollectName: repo.CollectionCategory,
 		Query:       repo.Map{},
 		Project:     []string{"name", "type", "children", "createTime"},
-	}, cat)
-	if err != nil || !found {
+	}, &cat)
+	if err != nil {
 		return nil, NewError("获取分类配置失败")
 	}
 	cates := cat[0].Children
@@ -508,7 +510,7 @@ func ZipImport(c *gin.Context, apictx *ApiSession) (interface{}, error) {
 	defer file.Close()
 
 	// 检查文件大小
-	if header.Size > 100*1024*1024 { // 限制100MB
+	if header.Size > 500*1024*1024 { // 限制100MB
 		return nil, NewError("上传文件过大,请控制在100MB以内")
 	}
 
@@ -690,17 +692,52 @@ func findImageFile(dir, originalName string) string {
 
 // 上传本地图片到OSS
 func uploadLocalImage(filePath string, prefix string, apictx *ApiSession) (*model.OssType, error) {
-	// 获取ObsClient
-	obsClient, err := CreateObsClient()
+	// 获取Alibaba Cloud OSS Client
+	accessKeyID := apictx.Svc.Conf.Obs.AccessKeyId
+	secretKey := apictx.Svc.Conf.Obs.SecrateKey
+	endpoint := apictx.Svc.Conf.Obs.Endpoint
+
+	// 创建Alibaba Cloud OSS Client
+	client, err := oss.New(endpoint, accessKeyID, secretKey)
 	if err != nil {
-		return nil, fmt.Errorf("创建ObsClient失败: %v", err)
+		return nil, fmt.Errorf("创建OSS Client失败: %v", err)
 	}
-	defer obsClient.Close()
 
-	// 上传图片到OSS
+	// 获取Bucket
 	bucketName := apictx.Svc.Conf.Obs.Bucket
+	bucket, err := client.Bucket(bucketName)
+	if err != nil {
+		return nil, fmt.Errorf("获取Bucket失败: %v", err)
+	}
+
+	// 上传图片到OSS
 	ossPath := fmt.Sprintf("u/%s/%s", apictx.User.ID, prefix)
-	return UploadFile(obsClient, bucketName, filePath, ossPath), nil
+	ossPath = strings.TrimRight(strings.ReplaceAll(ossPath, "\\", "/"), "/")
+	_, fileName := filepath.Split(filePath)
+	objectKey := ossPath + "/" + fileName
+
+	// 上传文件
+	err = bucket.PutObjectFromFile(objectKey, filePath)
+	if err != nil {
+		// 重试一次
+		err = bucket.PutObjectFromFile(objectKey, filePath)
+		if err != nil {
+			return nil, fmt.Errorf("上传文件到OSS失败: %v", err)
+		}
+	}
+
+	// 获取文件大小
+	fi, err := os.Stat(filePath)
+	size := int64(1)
+	if err == nil {
+		size = fi.Size()
+	}
+
+	// 返回OSS文件信息
+	return &model.OssType{
+		Url:  fmt.Sprintf("https://%s.%s/%s", bucketName, endpoint, objectKey),
+		Size: size,
+	}, nil
 }
 
 // 工具函数 - 获取图片URL
@@ -948,6 +985,7 @@ func ZipExport(c *gin.Context, apictx *ApiSession) (interface{}, error) {
 		staffId := ""
 		if img.From != "" {
 			staff := model.StaffUser{}
+			// 验证样品收集人是否预设
 			found, _ := repo.RepoSeachDoc(apictx.CreateRepoCtx(), &repo.DocSearchOptions{
 				CollectName: repo.CollectionStaffUser,
 				Query:       repo.Map{"name": img.From},

+ 2 - 0
sku3d/sku3d/go.mod

@@ -13,6 +13,7 @@ require (
 	github.com/alibabacloud-go/sts-20150401/v2 v2.0.2
 	github.com/alibabacloud-go/tea v1.2.2
 	github.com/alibabacloud-go/tea-utils/v2 v2.0.7
+	github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible
 	github.com/appleboy/gin-jwt/v2 v2.7.0
 	github.com/gin-contrib/cors v1.3.1
 	github.com/gin-contrib/sessions v0.0.3
@@ -121,6 +122,7 @@ require (
 	golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 // indirect
 	golang.org/x/sync v0.12.0 // indirect
 	golang.org/x/text v0.23.0 // indirect
+	golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 // indirect
 	google.golang.org/api v0.70.0 // indirect
 	google.golang.org/appengine v1.6.7 // indirect
 	google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf // indirect

+ 3 - 0
sku3d/sku3d/go.sum

@@ -127,6 +127,8 @@ github.com/alibabacloud-go/tea-utils/v2 v2.0.7/go.mod h1:qxn986l+q33J5VkialKMqT/
 github.com/alibabacloud-go/tea-xml v1.1.2/go.mod h1:Rq08vgCcCAjHyRi/M7xlHKUykZCEtyBy9+DPF6GgEu8=
 github.com/alibabacloud-go/tea-xml v1.1.3 h1:7LYnm+JbOq2B+T/B0fHC4Ies4/FofC4zHzYtqw7dgt0=
 github.com/alibabacloud-go/tea-xml v1.1.3/go.mod h1:Rq08vgCcCAjHyRi/M7xlHKUykZCEtyBy9+DPF6GgEu8=
+github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible h1:8psS8a+wKfiLt1iVDX79F7Y6wUM49Lcha2FMXt4UM8g=
+github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8=
 github.com/aliyun/credentials-go v1.1.2/go.mod h1:ozcZaMR5kLM7pwtCMEpVmQ242suV6qTJya2bDq4X1Tw=
 github.com/aliyun/credentials-go v1.3.1/go.mod h1:8jKYhQuDawt8x2+fusqa1Y6mPxemTsBEN04dgcAcYz0=
 github.com/aliyun/credentials-go v1.3.6/go.mod h1:1LxUuX7L5YrZUWzBrRyk0SwSdH4OmPrib8NVePL3fxM=
@@ -908,6 +910,7 @@ golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
 golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 h1:Hir2P/De0WpUhtrKGGjvSb2YxUgyZ7EFOSLIcSSpiwE=
 golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=