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.
147 lines
3.1 KiB
147 lines
3.1 KiB
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 |
|
}
|
|
|