bilibili-backup/app/admin/main/feed/http/egg.go

225 lines
4.9 KiB
Go
Raw Normal View History

2019-04-22 10:59:20 +08:00
package http
import (
"encoding/json"
"fmt"
eggModel "go-common/app/admin/main/feed/model/egg"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"github.com/jinzhu/gorm"
)
func addEgg(c *bm.Context) {
var (
err error
p []eggModel.Plat
)
res := map[string]interface{}{}
param := new(eggModel.Obj)
if err = c.Bind(param); err != nil {
return
}
uid, name := managerInfo(c)
e := &eggModel.Egg{
Stime: param.Stime,
Etime: param.Etime,
ShowCount: param.ShowCount,
UID: uid,
Publish: eggModel.NotPublish,
Person: name,
Delete: eggModel.NotDelete,
}
if err = json.Unmarshal([]byte(param.Plat), &p); err != nil {
res["message"] = "参数有误:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
if err = checkEgg(param.Query, e); err != nil {
res["message"] = err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
if err = eggSvc.AddEgg(e, p, param.Query); err != nil {
res["message"] = "添加失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
//delEgg delete egg
func delEgg(c *bm.Context) {
var (
err error
egg *eggModel.Egg
)
res := map[string]interface{}{}
param := &struct {
ID uint `form:"id" validate:"required"`
}{}
if err = c.Bind(param); err != nil {
return
}
if egg, err = eggSvc.EggWithID(param.ID); err != nil {
if err == gorm.ErrRecordNotFound {
res["message"] = "找不到数据:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
res["message"] = "删除失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
if egg.Publish == eggModel.Publish {
res["message"] = "已发布彩蛋不能删除"
c.JSONMap(res, ecode.RequestErr)
return
}
uid, name := managerInfo(c)
if err = eggSvc.DelEgg(param.ID, name, uid); err != nil {
res["message"] = "删除失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
//pubEgg publish egg
func pubEgg(c *bm.Context) {
var (
err error
)
res := map[string]interface{}{}
param := &struct {
ID uint `form:"id" validate:"required"`
Publish uint8 `form:"publish"`
}{}
if err = c.Bind(param); err != nil {
return
}
uid, name := managerInfo(c)
if err = eggSvc.PubEgg(param.ID, param.Publish, name, uid); err != nil {
res["message"] = "发布失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
//updateEgg update egg
func updateEgg(c *bm.Context) {
var (
err error
p []eggModel.Plat
)
res := map[string]interface{}{}
param := new(eggModel.ObjUpdate)
if err = c.Bind(param); err != nil {
return
}
uid, name := managerInfo(c)
e := &eggModel.Egg{
ID: param.ID,
Stime: param.Stime,
Etime: param.Etime,
ShowCount: param.ShowCount,
UID: uid,
Publish: eggModel.NotPublish,
Person: name,
Delete: eggModel.NotDelete,
}
if err = json.Unmarshal([]byte(param.Plat), &p); err != nil {
res["message"] = "json解析失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
if err = checkEgg(param.Query, e); err != nil {
res["message"] = err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
if err = eggSvc.UpdateEgg(e, p, param.Query); err != nil {
res["message"] = "更新失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
//checkEgg check egg error
func checkEgg(w []string, e *eggModel.Egg) (err error) {
var (
flag bool
eW string
)
if len(w) > 20 {
err = fmt.Errorf("搜索词不能大于20个")
return
}
if e.ShowCount > 10 {
err = fmt.Errorf("彩蛋展示次数不能大于10")
return
}
if flag, eW, err = eggSvc.IsWdExist(w, e.Stime, e.Etime, e.ID); err != nil {
log.Error("eggSrv.checkEgg IsWdExist error(%v)", err)
return
}
if flag {
err = fmt.Errorf("搜索词 (%v) 已有彩蛋,请勿重复添加", eW)
return
}
return
}
//indexEgg get egg list
func indexEgg(c *bm.Context) {
var (
err error
eggs *eggModel.IndexPager
)
res := map[string]interface{}{}
param := &eggModel.IndexParam{}
if err = c.Bind(param); err != nil {
return
}
if eggs, err = eggSvc.IndexEgg(param); err != nil {
res["message"] = "查询失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(eggs, nil)
}
//searchEgg search api for search
func searchEgg(c *bm.Context) {
var (
err error
eggs []eggModel.SearchEgg
)
res := map[string]interface{}{}
if eggs, err = eggSvc.SearchEgg(); err != nil {
res["message"] = "搜索查询失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(eggs, nil)
}
//SearchEggWeb search api for web
func SearchEggWeb(c *bm.Context) {
var (
err error
eggs []eggModel.SearchEggWeb
)
res := map[string]interface{}{}
if eggs, err = eggSvc.SearchEggWeb(); err != nil {
res["message"] = "Web搜索查询失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(eggs, nil)
}