package comm import ( "applet/app/db" "applet/app/e" "applet/app/utils/cache" "code.fnuoos.com/EggPlanet/egg_models.git/src/implement" enum2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/enum" "github.com/aliyun/aliyun-oss-go-sdk/oss" "github.com/gin-gonic/gin" ) // GetOssUrl // @Summary 通用请求-对象存储-上传许可链接(获取) // @Tags 对象存储 // @Description 上传许可链接(获取) // @Accept json // @Produce json // @param Authorization header string true "验证参数Bearer和token空格拼接" // @Success 200 {string} "许可链接" // @Failure 400 {object} md.Response "具体错误" // @Router /api/comm/getOssUrl [get] func GetOssUrl(c *gin.Context) { redisConn := cache.GetPool().Get() sysCfgDb := implement.NewSysCfgDb(db.Db, redisConn) sysCfgs, err := sysCfgDb.SysCfgGetAll() if err != nil { e.OutErr(c, e.ERR_DB_ORM, err.Error()) return } if sysCfgs == nil { e.OutErr(c, e.ERR_CFG_CACHE, nil) return } cfgMap := make(map[string]string, len(*sysCfgs)) for _, cfg := range *sysCfgs { cfgMap[cfg.Key] = cfg.Val } endpoint := cfgMap[enum2.AliyunOss(enum2.AliyunOssEndpoint).String()] bucketName := cfgMap[enum2.AliyunOss(enum2.AliyunOssBucketName).String()] objectName := cfgMap[enum2.AliyunOss(enum2.AliyunOssBucketScheme).String()] accessKeyID := cfgMap[enum2.AliyunOss(enum2.AliyunOssAccessKeyID).String()] accessKeySecret := cfgMap[enum2.AliyunOss(enum2.AliyunOssAccessKeySecret).String()] client, err := oss.New(endpoint, accessKeyID, accessKeySecret) if err != nil { e.OutErr(c, e.ERR_AES_ENCODE, err.Error()) return } bucket, err := client.Bucket(bucketName) if err != nil { e.OutErr(c, e.ERR_AES_ENCODE, err.Error()) return } signedURL, err := bucket.SignURL(objectName, oss.HTTPPut, 60*5) if err != nil { e.OutErr(c, e.ERR_AES_ENCODE, err.Error()) return } e.OutSuc(c, signedURL, nil) }