You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
2.9 KiB
136 lines
2.9 KiB
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/%s%s", ossConf.Domain, ossConf.ObjectName, req.Folder, file.Filename) |
|
}
|
|
|