package handler import ( "fmt" "server/call" "server/common" "server/config" "server/modules/backend/app" "server/modules/backend/bdb" "server/modules/backend/values" "server/util" "strings" "github.com/aliyun/aliyun-oss-go-sdk/oss" "github.com/gin-gonic/gin" "github.com/liangdas/mqant/log" ) var ( bucket *oss.Bucket ) func ProductList(c *gin.Context) { a := app.NewApp(c) defer func() { a.Response() }() products := call.GetConfigPayProduct() resp := &values.ProductListResp{List: products} a.Data = resp } func ChannelList(c *gin.Context) { a := app.NewApp(c) defer func() { a.Response() }() ret := call.GetChannelList() if ret == nil { a.Code = values.CodeRetry return } resp := values.ChannelListResp{} resp.List = make([]*common.Channel, 0) for _, v := range ret { if len(a.User.SChannels) > 0 { if !util.SliceContain(a.User.SChannels, v.ChannelID) { continue } } resp.List = append(resp.List, v) } a.Data = resp } func UserInfo(c *gin.Context) { a := app.NewApp(c) defer func() { a.Response() }() resp := values.UserInfoResp{Name: a.User.Name, Role: a.User.Role, Power: a.User.Power} a.Data = resp } func AccountList(c *gin.Context) { a := app.NewApp(c) defer func() { a.Response() }() ret := call.GetChannelList() if ret == nil { a.Code = values.CodeRetry return } resp := &values.AccountListResp{} a.Data = resp var list []values.User if err := bdb.BackDB.C().Find(&list).Error; err != nil { log.Error("err:%v", err) a.Code = values.CodeRetry return } for _, v := range list { resp.List = append(resp.List, v.Account) } } func UploadOSS(c *gin.Context) { a := app.NewApp(c) defer func() { a.Response() }() ossConf := config.GetConfig().Backend.Oss req := new(values.UploadOSSReq) req.ObjectName = c.PostForm("ObjectName") req.Folder = c.PostForm("folder") if req.Folder != "" && !strings.HasSuffix(req.Folder, "/") { req.Folder += "/" } rsp := new(values.UploadOSSResp) a.Data = rsp file, err := c.FormFile("file") if err != nil { a.Code = values.CodeRetry log.Error("UploadOSS err:%v", err) return } f, err := file.Open() if err != nil { a.Code = values.CodeRetry log.Error("UploadOSS err:%v", err) return } defer f.Close() if bucket == nil { client, err := oss.New(ossConf.Endpoint, ossConf.AccessKeyId, ossConf.AccessKeySecret) if err != nil { a.Code = values.CodeRetry log.Error("UploadOSS New err:%v", err) return } bucket, err = client.Bucket(ossConf.BucketName) if err != nil { a.Code = values.CodeRetry log.Error("UploadOSS Bucket err:%v", err) return } } err = bucket.PutObject(ossConf.ObjectName+req.Folder+file.Filename, f) if err != nil { a.Code = values.CodeRetry log.Error("UploadOSS PutObject err:%v", err) return } rsp.Url = fmt.Sprintf("https://%s/%s", ossConf.Domain, ossConf.ObjectName+req.Folder+file.Filename) }