go-common/app/admin/main/vip/http/welfare.go
2019-04-22 18:49:16 +08:00

148 lines
3.1 KiB
Go

package http
import (
"io/ioutil"
"mime/multipart"
"net/http"
"go-common/app/admin/main/vip/model"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
const (
_maxFileSize = 1048576
)
func welfareTypeSave(c *bm.Context) {
arg := new(struct {
ID int `form:"id"`
Name string `form:"name" validate:"required"`
})
if err := c.Bind(arg); err != nil {
return
}
username, _ := c.Get("username")
c.JSON(nil, vipSvc.WelfareTypeSave(arg.ID, arg.Name, username.(string)))
}
func welfareTypeState(c *bm.Context) {
arg := new(struct {
ID int `form:"id" validate:"required"`
})
if err := c.Bind(arg); err != nil {
return
}
username, _ := c.Get("username")
c.JSON(nil, vipSvc.WelfareTypeState(c, arg.ID, username.(string)))
}
func welfareTypeList(c *bm.Context) {
c.JSON(vipSvc.WelfareTypeList())
}
func welfareSave(c *bm.Context) {
const _redirectThridPage = 3
wfReq := new(model.WelfareReq)
if err := c.Bind(wfReq); err != nil {
return
}
if wfReq.UsageForm == _redirectThridPage && wfReq.ReceiveUri == "" {
c.JSON(nil, ecode.VipWelfareRequestErr)
return
}
username, _ := c.Get("username")
c.JSON(nil, vipSvc.WelfareSave(username.(string), wfReq))
}
func welfareState(c *bm.Context) {
arg := new(struct {
ID int `form:"id" validate:"required"`
})
if err := c.Bind(arg); err != nil {
return
}
username, _ := c.Get("username")
c.JSON(nil, vipSvc.WelfareState(arg.ID, username.(string)))
}
func welfareList(c *bm.Context) {
arg := new(struct {
TID int `form:"tid"`
})
if err := c.Bind(arg); err != nil {
return
}
c.JSON(vipSvc.WelfareList(arg.TID))
}
func welfareBatchUpload(c *bm.Context) {
arg := new(struct {
WID int `form:"wid"`
Filename string `form:"filename"`
Vtime int `form:"vtime"`
})
if err := c.Bind(arg); err != nil {
return
}
fileBody, _, err := getFileBody(c, "file")
if err != nil {
c.JSON(nil, err)
return
}
username, _ := c.Get("username")
c.JSON(nil, vipSvc.WelfareBatchUpload(fileBody, arg.Filename, username.(string), arg.WID, arg.Vtime))
}
func welfareBatchList(c *bm.Context) {
arg := new(struct {
WID int `form:"wid" validate:"required"`
})
if err := c.Bind(arg); err != nil {
return
}
c.JSON(vipSvc.WelfareBatchList(arg.WID))
}
func welfareBatchState(c *bm.Context) {
arg := new(struct {
ID int `form:"id" validate:"required"`
})
if err := c.Bind(arg); err != nil {
return
}
username, _ := c.Get("username")
c.JSON(nil, vipSvc.WelfareBatchState(c, arg.ID, username.(string)))
}
func getFileBody(c *bm.Context, name string) (body []byte, filetype string, err error) {
var file multipart.File
if file, _, err = c.Request.FormFile(name); err != nil {
if err == http.ErrMissingFile {
err = nil
return
}
err = ecode.RequestErr
return
}
if file == nil {
return
}
defer file.Close()
if body, err = ioutil.ReadAll(file); err != nil {
err = ecode.RequestErr
return
}
filetype = http.DetectContentType(body)
if filetype != "text/plain; charset=utf-8" {
err = ecode.VipFileTypeErr
return
}
if len(body) > _maxFileSize {
err = ecode.FileTooLarge
return
}
return
}