Initial commit

This commit is contained in:
Donny
2019-04-22 20:46:32 +08:00
commit 49ab8aadd1
25441 changed files with 4055000 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"bangumi.go",
"bfs.go",
"channel.go",
"common.go",
"egg.go",
"http.go",
"popular.go",
"search.go",
],
importpath = "go-common/app/admin/main/feed/http",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/admin/main/feed/conf:go_default_library",
"//app/admin/main/feed/model/channel:go_default_library",
"//app/admin/main/feed/model/common:go_default_library",
"//app/admin/main/feed/model/egg:go_default_library",
"//app/admin/main/feed/model/search:go_default_library",
"//app/admin/main/feed/model/show:go_default_library",
"//app/admin/main/feed/service/bfs:go_default_library",
"//app/admin/main/feed/service/channel:go_default_library",
"//app/admin/main/feed/service/common:go_default_library",
"//app/admin/main/feed/service/egg:go_default_library",
"//app/admin/main/feed/service/pgc:go_default_library",
"//app/admin/main/feed/service/popular:go_default_library",
"//app/admin/main/feed/service/search:go_default_library",
"//app/admin/main/feed/util:go_default_library",
"//app/service/openplatform/pgc-season/api/grpc/episode/v1:go_default_library",
"//app/service/openplatform/pgc-season/api/grpc/season/v1:go_default_library",
"//library/ecode:go_default_library",
"//library/log:go_default_library",
"//library/net/http/blademaster:go_default_library",
"//library/net/http/blademaster/middleware/permit:go_default_library",
"//library/net/http/blademaster/render:go_default_library",
"//library/time:go_default_library",
"//vendor/github.com/jinzhu/gorm:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@@ -0,0 +1,72 @@
package http
import (
epgrpc "go-common/app/service/openplatform/pgc-season/api/grpc/episode/v1"
seasongrpc "go-common/app/service/openplatform/pgc-season/api/grpc/season/v1"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
//getPgcSeason GetSeason get season from pgc with grpc
func getPgcSeason(c *bm.Context) {
var (
err error
seasonCards map[int32]*seasongrpc.CardInfoProto
)
res := map[string]interface{}{}
param := &struct {
ID int32 `form:"id" validate:"required"`
}{}
if err = c.Bind(param); err != nil {
return
}
v := []int32{param.ID}
if seasonCards, err = pgcSvr.GetSeason(c, v); err != nil {
res["message"] = "获取失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(seasonCards, nil)
}
//getPgcSeasons GetSeasons get season from pgc with grpc
func getPgcSeasons(c *bm.Context) {
var (
err error
seasonCards map[int32]*seasongrpc.CardInfoProto
)
res := map[string]interface{}{}
param := &struct {
IDs []int32 `form:"ids,split" validate:"required,dive,gt=0"`
}{}
if err = c.Bind(param); err != nil {
return
}
if seasonCards, err = pgcSvr.GetSeason(c, param.IDs); err != nil {
res["message"] = "获取失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(seasonCards, nil)
}
//getPgcEp GetSeasons get ep from pgc with grpc
func getPgcEp(c *bm.Context) {
var (
err error
epCards map[int32]*epgrpc.EpisodeCardsProto
)
res := map[string]interface{}{}
param := &struct {
IDs []int32 `form:"ids,split" validate:"required,dive,gt=0"`
}{}
if err = c.Bind(param); err != nil {
return
}
if epCards, err = pgcSvr.GetEp(c, param.IDs); err != nil {
res["message"] = "获取失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(epCards, nil)
}

View File

@@ -0,0 +1,55 @@
package http
import (
"io/ioutil"
"net/http"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/render"
)
func clientUpload(c *bm.Context) {
var (
req = c.Request
md5 string
url string
)
req.ParseMultipartForm(int64(bfsSvc.BfsMaxSize))
file, _, err := req.FormFile("file")
if err != nil {
log.Error("c.Request().FormFile(\"file\") error(%v) | ", err)
c.JSON(nil, ecode.RequestErr)
return
}
bs, err := ioutil.ReadAll(file)
file.Close()
if err != nil {
log.Error("ioutil.ReadAll(c.Request().Body) error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
if md5, err = bfsSvc.FileMd5(bs); err != nil {
log.Error("bfsSvc.FileMd5 error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
ftype := http.DetectContentType(bs)
//if model.IsCoverType(ftype) {
// log.Error("filetype not allow file type(%s)", ftype)
// renderErrMsg(c, ecode.RequestErr.Code(), "文件上传错误:图片类型错误")
// return
//}
if url, err = bfsSvc.ClientUpCover(c, ftype, bs); err != nil {
log.Error("bfsSvc.ClientUpCover error(%v)", err)
c.JSON("文件上传错误:"+err.Error(), ecode.RequestErr)
return
}
data := map[string]interface{}{
"url": url,
"md5": md5,
"size": len(bs),
}
c.Render(http.StatusOK, render.MapJSON(data))
}

View File

@@ -0,0 +1,264 @@
package http
import (
"strings"
"go-common/app/admin/main/feed/model/channel"
cardmodel "go-common/app/admin/main/feed/model/channel"
"go-common/app/admin/main/feed/model/common"
"go-common/app/admin/main/feed/model/show"
"go-common/app/admin/main/feed/util"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
func trimSpace(v string) string {
return strings.TrimSpace(v)
}
func addCardSetup(c *bm.Context) {
var (
err error
)
res := map[string]interface{}{}
req := &channel.AddCardSetup{}
if err = c.Bind(req); err != nil {
return
}
uid, name := util.UserInfo(c)
if name == "" {
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized)
c.Abort()
return
}
req.Value = trimSpace(req.Value)
if err = chanelSvc.AddCardSetup(req, name, uid); err != nil {
res["message"] = "卡片创建失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func cardSetupList(c *bm.Context) {
var (
err error
cPager *cardmodel.SetupPager
)
res := map[string]interface{}{}
req := &struct {
ID int `form:"id"`
Type string `form:"type" validate:"required"`
Person string `form:"person"`
Title string `form:"title"`
Ps int `json:"ps" form:"ps" default:"20"` // 分页大小
Pn int `json:"pn" form:"pn" default:"1"` // 第几个分页
}{}
if err = c.Bind(req); err != nil {
return
}
if cPager, err = chanelSvc.CardSetupList(req.ID, req.Type, req.Person, req.Title, req.Pn, req.Ps); err != nil {
res["message"] = "卡片获取失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(cPager, nil)
}
func delCardSetup(c *bm.Context) {
var (
err error
)
res := map[string]interface{}{}
req := &struct {
ID int `form:"id" validate:"required"`
Type string `form:"type" validate:"required"`
}{}
if err = c.Bind(req); err != nil {
return
}
uid, name := util.UserInfo(c)
if name == "" {
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized)
c.Abort()
return
}
if err = chanelSvc.DelCardSetup(req.ID, req.Type, name, uid); err != nil {
res["message"] = "卡片删除失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func updateCardSetup(c *bm.Context) {
var (
err error
)
res := map[string]interface{}{}
req := &cardmodel.UpdateCardSetup{}
if err = c.Bind(req); err != nil {
return
}
req.Value = trimSpace(req.Value)
card := &cardmodel.AddCardSetup{
Type: req.Type,
Value: req.Value,
Title: req.Title,
LongTitle: req.LongTitle,
Content: req.Content,
}
uid, name := util.UserInfo(c)
if name == "" {
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized)
c.Abort()
return
}
if err = chanelSvc.UpdateCardSetup(req.ID, card, name, uid); err != nil {
res["message"] = "卡片更新失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func tabList(c *bm.Context) {
var (
err error
pager *show.ChannelTabPager
)
res := map[string]interface{}{}
req := &show.ChannelTabLP{}
if err = c.Bind(req); err != nil {
return
}
if pager, err = chanelSvc.TabList(req); err != nil {
res["message"] = "列表获取失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(pager, nil)
}
func addTab(c *bm.Context) {
var (
err error
//title string
)
res := map[string]interface{}{}
req := &show.ChannelTabAP{}
if err = c.Bind(req); err != nil {
return
}
uid, name := util.UserInfo(c)
if name == "" {
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized)
c.Abort()
return
}
req.Person = name
req.UID = uid
if _, err = commonSvc.CardPreview(c, common.CardChannelTab, req.TabID); err != nil {
return
}
if err = chanelSvc.AddTab(c, req, name, uid); err != nil {
res["message"] = "卡片创建失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func updateTab(c *bm.Context) {
var (
err error
//title string
)
res := map[string]interface{}{}
req := &show.ChannelTabUP{}
if err = c.Bind(req); err != nil {
return
}
uid, name := util.UserInfo(c)
if name == "" {
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized)
c.Abort()
return
}
if req.ID <= 0 {
c.JSONMap(map[string]interface{}{"message": "ID 参数不合法"}, ecode.RequestErr)
c.Abort()
return
}
req.Person = name
req.UID = uid
if _, err = commonSvc.CardPreview(c, common.CardChannelTab, req.TabID); err != nil {
return
}
if err = chanelSvc.UpdateTab(c, req, name, uid); err != nil {
res["message"] = "卡片创建失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func deleteTab(c *bm.Context) {
var (
err error
)
res := map[string]interface{}{}
req := &struct {
ID int64 `form:"id" validate:"required"`
}{}
if err = c.Bind(req); err != nil {
return
}
uid, name := util.UserInfo(c)
if name == "" {
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized)
c.Abort()
return
}
if req.ID <= 0 {
c.JSONMap(map[string]interface{}{"message": "ID 参数不合法"}, ecode.RequestErr)
c.Abort()
return
}
if err = chanelSvc.DeleteTab(req.ID, name, uid); err != nil {
res["message"] = "卡片创建失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func offlineTab(c *bm.Context) {
var (
err error
)
res := map[string]interface{}{}
req := &struct {
ID int64 `form:"id" validate:"required"`
}{}
if err = c.Bind(req); err != nil {
return
}
uid, name := util.UserInfo(c)
if name == "" {
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized)
c.Abort()
return
}
if req.ID <= 0 {
c.JSONMap(map[string]interface{}{"message": "ID 参数不合法"}, ecode.RequestErr)
c.Abort()
return
}
if err = chanelSvc.OfflineTab(req.ID, name, uid); err != nil {
res["message"] = "卡片下线失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}

View File

@@ -0,0 +1,95 @@
package http
import (
"strconv"
"go-common/app/admin/main/feed/model/common"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
func managerInfo(c *bm.Context) (uid int64, username string) {
if nameInter, ok := c.Get("username"); ok {
username = nameInter.(string)
}
if uidInter, ok := c.Get("uid"); ok {
uid = uidInter.(int64)
}
if username == "" {
cookie, err := c.Request.Cookie("username")
if err != nil {
log.Error("managerInfo get cookie error (%v)", err)
return
}
username = cookie.Value
c, err := c.Request.Cookie("uid")
if err != nil {
log.Error("managerInfo get cookie error (%v)", err)
return
}
uidInt, _ := strconv.Atoi(c.Value)
uid = int64(uidInt)
}
return
}
func cardPreview2(c *bm.Context) {
var (
err error
title string
res = map[string]interface{}{}
)
type Card struct {
Type string `form:"type" validate:"required"`
ID int64 `form:"id" validate:"required"`
}
card := &Card{}
if err = c.Bind(card); err != nil {
return
}
if title, err = commonSvc.CardPreview(c, card.Type, card.ID); err != nil {
res["message"] = err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
titleReturn := common.CardPreview{
Title: title,
}
c.JSON(titleReturn, nil)
}
func actionLog(c *bm.Context) {
var (
res = map[string]interface{}{}
)
type Log struct {
Type int64 `form:"module" validate:"required"`
Uame string `form:"uname"`
CtimeFrom string `form:"ctime_from"`
CtimeTo string `form:"ctime_to"`
Ps int64 `form:"ps" default:"20"`
Pn int64 `form:"pn" default:"1"`
}
log := &Log{}
if err := c.Bind(log); err != nil {
return
}
searchRes, err := commonSvc.LogAction(c, log.Type, log.Ps, log.Pn, log.CtimeFrom, log.CtimeTo, log.Uame)
if err != nil {
res["message"] = err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
res["data"] = searchRes.Item
res["pager"] = searchRes.Page
c.JSONMap(res, nil)
}
func cardType(c *bm.Context) {
var (
res = map[string]interface{}{}
)
res["data"] = commonSvc.CardType()
c.JSONMap(res, nil)
}

View File

@@ -0,0 +1,224 @@
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)
}

View File

@@ -0,0 +1,164 @@
package http
import (
"go-common/app/admin/main/feed/conf"
bfssvr "go-common/app/admin/main/feed/service/bfs"
"go-common/app/admin/main/feed/service/channel"
"go-common/app/admin/main/feed/service/common"
"go-common/app/admin/main/feed/service/egg"
pgcsvr "go-common/app/admin/main/feed/service/pgc"
"go-common/app/admin/main/feed/service/popular"
"go-common/app/admin/main/feed/service/search"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/permit"
)
var (
authSvc *permit.Permit
eggSvc *egg.Service
bfsSvc *bfssvr.Service
searchSvc *search.Service
pgcSvr *pgcsvr.Service
chanelSvc *channel.Service
popularSvc *popular.Service
cardSvc *channel.Service
commonSvc *common.Service
)
// initService init service
func initService(c *conf.Config) {
authSvc = permit.New(c.Auth)
eggSvc = egg.New(c)
bfsSvc = bfssvr.New(c)
searchSvc = search.New(c)
pgcSvr = pgcsvr.New(c)
chanelSvc = channel.New(c)
cardSvc = channel.New(c)
popularSvc = popular.New(c)
commonSvc = common.New(c)
}
// Init init http sever instance.
func Init(c *conf.Config) {
initService(c)
engine := bm.DefaultServer(c.HTTPServer)
innerRouter(engine)
// init internal server
if err := engine.Start(); err != nil {
log.Error("httpx.Serve error(%v)", err)
panic(err)
}
}
// innerRouter
func innerRouter(e *bm.Engine) {
// ping monitor
e.GET("/monitor/ping", ping)
//modules color eggs
feed := e.Group("/x/admin/feed")
{
feed.POST("/upload", clientUpload)
//对外 搜索
feed.GET("/eggSearch", searchEgg)
//对外 web
feed.GET("/eggSearchWeb", SearchEggWeb)
common := feed.Group("/common")
{
common.GET("/card/titlePreview", cardPreview2)
common.GET("/log/action", actionLog)
common.GET("/pgc/season", getPgcSeason)
common.GET("/pgc/seasons", getPgcSeasons)
common.GET("/pgc/ep", getPgcEp)
common.GET("/card/type", cardType)
}
egg := feed.Group("/egg")
{
egg.POST("/add", addEgg)
egg.GET("/index", indexEgg)
egg.POST("/update", updateEgg)
egg.POST("/publish", pubEgg)
egg.POST("/delete", delEgg)
}
//对外
open := feed.Group("/open")
{
//search
open.POST("/search/addHotword", openAddHotword) //搜索 添加热词
open.POST("/search/addDarkword", openAddDarkword) //搜索 添加黑马词
open.GET("/search/blackList", openBlacklist) //搜索 黑名单
open.GET("/search/hotwords", openHotList) //搜索 热词
open.GET("/search/darkword", openDarkword) //搜索 获取黑马词
open.GET("/search/webSearch", openSearchWeb) //web 搜索
open.POST("/ai/addPopStars", aiAddPopularStars) //AI 添加新星卡片
}
search := feed.Group("/search", authSvc.Permit("SEARCH_HOTWORD"))
{
search.GET("/blackList", blackList)
search.POST("/addBlack", addBlack)
search.POST("/delBlack", delBlack)
search.GET("/hot", HotList)
search.POST("/addInter", addInter)
search.POST("/updateInter", updateInter)
search.POST("/deleteHot", deleteHot)
search.POST("/updateSearch", updateSearch)
search.POST("/publishHot", publishHotWord)
search.POST("/publishDark", publishDarkWord)
search.GET("/dark", darkList)
search.POST("/delDark", deleteDark)
}
searchWeb := feed.Group("/search/web")
{
searchWeb.GET("/card/list", searchWebCardList)
searchWeb.POST("/card/add", addSearchWebCard)
searchWeb.POST("/card/update", upSearchWebCard)
searchWeb.POST("/card/delete", delSearchWebCard)
searchWeb.GET("/list", searchWebList)
searchWeb.POST("/add", addSearchWeb)
searchWeb.POST("/update", upSearchWeb)
searchWeb.POST("/delete", delSearchWeb)
searchWeb.POST("/opt", optSearchWeb)
}
cardsetup := feed.Group("/cardsetup")
{
cardsetup.POST("/add", addCardSetup)
cardsetup.GET("/list", cardSetupList)
cardsetup.POST("/delete", delCardSetup)
cardsetup.POST("/update", updateCardSetup)
}
channel := feed.Group("/channel")
{
tab := channel.Group("/tab")
{
tab.GET("/list", tabList)
tab.POST("/add", addTab)
tab.POST("/update", updateTab)
tab.POST("/delete", deleteTab)
tab.POST("/offline", offlineTab)
}
}
popular := feed.Group("/popular")
{
eventTopic := popular.Group("/event_topic")
{
eventTopic.GET("/list", eventTopicList)
eventTopic.POST("/add", addEventTopic)
eventTopic.POST("/update", upEventTopic)
eventTopic.GET("/delete", delEventTopic)
}
stars := popular.Group("/stars")
{
stars.GET("/list", popularStarsList)
stars.POST("/add", addPopularStars)
stars.POST("/update", updatePopularStars)
stars.POST("/delete", deletePopularStars)
stars.POST("/reject", rejectPopularStars)
}
}
}
}
// ping check server ok.
func ping(c *bm.Context) {
}

View File

@@ -0,0 +1,377 @@
package http
import (
"context"
"encoding/json"
"fmt"
"strconv"
"go-common/app/admin/main/feed/model/common"
"go-common/app/admin/main/feed/model/show"
"go-common/app/admin/main/feed/util"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
func eventTopicList(c *bm.Context) {
var (
err error
pager *show.EventTopicPager
)
res := map[string]interface{}{}
req := &show.EventTopicLP{}
if err = c.Bind(req); err != nil {
return
}
if pager, err = popularSvc.EventTopicList(req); err != nil {
res["message"] = "列表获取失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(pager, nil)
}
func addEventTopic(c *bm.Context) {
var (
err error
//title string
)
res := map[string]interface{}{}
req := &show.EventTopicAP{}
if err = c.Bind(req); err != nil {
return
}
uid, name := util.UserInfo(c)
if name == "" {
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized)
c.Abort()
return
}
req.Person = name
if err = popularSvc.AddEventTopic(c, req, name, uid); err != nil {
res["message"] = "卡片创建失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func upEventTopic(c *bm.Context) {
var (
err error
)
res := map[string]interface{}{}
req := &show.EventTopicUP{}
if err = c.Bind(req); err != nil {
return
}
uid, name := util.UserInfo(c)
if name == "" {
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized)
c.Abort()
return
}
if req.ID <= 0 {
c.JSONMap(map[string]interface{}{"message": "ID 参数不合法"}, ecode.RequestErr)
c.Abort()
return
}
if err = popularSvc.UpdateEventTopic(c, req, name, uid); err != nil {
res["message"] = "卡片创建失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func delEventTopic(c *bm.Context) {
var (
err error
)
res := map[string]interface{}{}
req := &struct {
ID int64 `form:"id" validate:"required"`
}{}
if err = c.Bind(req); err != nil {
return
}
uid, name := util.UserInfo(c)
if name == "" {
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized)
c.Abort()
return
}
if req.ID <= 0 {
c.JSONMap(map[string]interface{}{"message": "ID 参数不合法"}, ecode.RequestErr)
c.Abort()
return
}
if err = popularSvc.DeleteEventTopic(req.ID, name, uid); err != nil {
res["message"] = "卡片创建失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func popularStarsList(c *bm.Context) {
var (
err error
pager *show.PopularStarsPager
)
res := map[string]interface{}{}
req := &show.PopularStarsLP{}
if err = c.Bind(req); err != nil {
return
}
if pager, err = popularSvc.PopularStarsList(req); err != nil {
res["message"] = "列表获取失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(pager, nil)
}
//ValidateUpid .
func ValidateUpid(c context.Context, idStr string) (name string, err error) {
var (
id int64
)
if id, err = strconv.ParseInt(idStr, 10, 64); err != nil {
return
}
if name, err = commonSvc.CardPreview(c, common.CardUp, id); err != nil {
return
}
return
}
//ValidateAvid .
func ValidateAvid(c context.Context, values string) (err error) {
type Content struct {
ID int64 `json:"id"`
Title string `json:"title"`
}
var contents []*Content
if err = json.Unmarshal([]byte(values), &contents); err != nil {
return
}
dup := make(map[int64]bool)
for _, v := range contents {
if v == nil {
return fmt.Errorf("不能提交空数据!")
}
if dup[v.ID] {
return fmt.Errorf("重复视频ID (%d)", v.ID)
}
dup[v.ID] = true
if _, err = commonSvc.CardPreview(c, common.CardAv, v.ID); err != nil {
return
}
}
if len(contents) < 3 {
return fmt.Errorf("视频组成最少三个")
}
if len(contents) > 5 {
return fmt.Errorf("视频组成不能超过5个")
}
return
}
func addPopularStars(c *bm.Context) {
var (
err error
upName string
)
res := map[string]interface{}{}
req := &show.PopularStarsAP{}
if err = c.Bind(req); err != nil {
return
}
uid, name := util.UserInfo(c)
if name == "" {
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized)
c.Abort()
return
}
if err = ValidateAvid(c, req.Content); err != nil {
c.JSONMap(map[string]interface{}{"message": "视频ID 校验失败:" + err.Error()}, ecode.RequestErr)
c.Abort()
return
}
req.Value = util.TrimStrSpace(req.Value)
if upName, err = ValidateUpid(c, req.Value); err != nil {
c.JSONMap(map[string]interface{}{"message": "up主ID 校验失败:" + err.Error()}, ecode.RequestErr)
c.Abort()
return
}
req.Person = name
req.UID = uid
req.LongTitle = upName
if err = popularSvc.AddPopularStars(c, req, name, uid); err != nil {
res["message"] = "卡片创建失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func updatePopularStars(c *bm.Context) {
var (
err error
upName string
)
res := map[string]interface{}{}
req := &show.PopularStarsUP{}
if err = c.Bind(req); err != nil {
return
}
uid, name := util.UserInfo(c)
if name == "" {
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized)
c.Abort()
return
}
if req.ID <= 0 {
c.JSONMap(map[string]interface{}{"message": "ID 参数不合法"}, ecode.RequestErr)
c.Abort()
return
}
if err = ValidateAvid(c, req.Content); err != nil {
c.JSONMap(map[string]interface{}{"message": err.Error()}, ecode.RequestErr)
c.Abort()
return
}
req.Value = util.TrimStrSpace(req.Value)
if upName, err = ValidateUpid(c, req.Value); err != nil {
c.JSONMap(map[string]interface{}{"message": err.Error()}, ecode.RequestErr)
c.Abort()
return
}
req.LongTitle = upName
if err = popularSvc.UpdatePopularStars(c, req, name, uid); err != nil {
res["message"] = "卡片创建失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func deletePopularStars(c *bm.Context) {
var (
err error
)
res := map[string]interface{}{}
req := &struct {
ID int64 `form:"id" validate:"required"`
}{}
if err = c.Bind(req); err != nil {
return
}
uid, name := util.UserInfo(c)
if name == "" {
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized)
c.Abort()
return
}
if req.ID <= 0 {
c.JSONMap(map[string]interface{}{"message": "ID 参数不合法"}, ecode.RequestErr)
c.Abort()
return
}
if err = popularSvc.DeletePopularStars(req.ID, name, uid); err != nil {
res["message"] = "卡片创建失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func rejectPopularStars(c *bm.Context) {
var (
err error
)
res := map[string]interface{}{}
req := &struct {
ID int64 `form:"id" validate:"required"`
}{}
if err = c.Bind(req); err != nil {
return
}
uid, name := util.UserInfo(c)
if name == "" {
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized)
c.Abort()
return
}
if req.ID <= 0 {
c.JSONMap(map[string]interface{}{"message": "ID 参数不合法"}, ecode.RequestErr)
c.Abort()
return
}
if err = popularSvc.RejectPopularStars(req.ID, name, uid); err != nil {
res["message"] = "卡片创建失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func aiAddPopularStars(c *bm.Context) {
var (
err error
aids []byte
addPopStar []*show.PopularStarsAP
)
res := map[string]interface{}{}
req := &struct {
Data string `form:"data" validate:"required"`
}{}
if err = c.Bind(req); err != nil {
return
}
log.Info("aiAddPopularStars value(%v)", req.Data)
values := make([]*show.PopularStarsAIAP, 0)
if err = json.Unmarshal([]byte(req.Data), &values); err != nil {
log.Error("aiAddPopularStars.Unmarshal value(%v) error(%v)", req.Data, err)
res["message"] = "数据解析失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
for _, v := range values {
var (
AiValues []*show.AiValue
upName string
)
for _, aid := range v.Aids {
aiValue := &show.AiValue{
ID: aid,
}
AiValues = append(AiValues, aiValue)
}
if aids, err = json.Marshal(AiValues); err != nil {
log.Error("aiAddPopularStars.Marshal value(%v) error(%v)", v.Aids, err)
res["message"] = "数据encode失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
}
mid := strconv.FormatInt(v.Mid, 10)
if upName, err = ValidateUpid(c, mid); err != nil {
c.JSONMap(map[string]interface{}{"message": "up主ID 校验失败:" + err.Error()}, ecode.RequestErr)
c.Abort()
return
}
tmp := &show.PopularStarsAP{
LongTitle: upName,
Value: strconv.FormatInt(v.Mid, 10),
Content: string(aids),
}
addPopStar = append(addPopStar, tmp)
}
if err = popularSvc.AIAddPopularStars(c, addPopStar); err != nil {
res["message"] = "卡片创建失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}

View File

@@ -0,0 +1,593 @@
package http
import (
"encoding/json"
searchModel "go-common/app/admin/main/feed/model/search"
"go-common/app/admin/main/feed/model/show"
"go-common/app/admin/main/feed/util"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"go-common/library/time"
)
//Black 黑名单
func blackList(c *bm.Context) {
var (
err error
black []searchModel.Black
)
res := map[string]interface{}{}
if black, err = searchSvc.BlackList(); err != nil {
res["message"] = "获取失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(black, nil)
}
//addBlack 添加黑名单
func addBlack(c *bm.Context) {
var (
err error
)
res := map[string]interface{}{}
param := new(searchModel.Black)
if err = c.Bind(param); err != nil {
return
}
uid, name := managerInfo(c)
if err = searchSvc.AddBlack(c, param.Searchword, name, uid); err != nil {
res["message"] = "获取失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
//delBlack 删除黑名单
func delBlack(c *bm.Context) {
var (
err error
)
res := map[string]interface{}{}
param := new(struct {
ID int `form:"id" validate:"required"`
})
if err = c.Bind(param); err != nil {
return
}
uid, name := managerInfo(c)
if err = searchSvc.DelBlack(c, param.ID, name, uid); err != nil {
res["message"] = "获取失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
//openAddDarkword 对外 添加黑马词
func openAddDarkword(c *bm.Context) {
var (
err error
dark searchModel.OpenDark
)
res := map[string]interface{}{}
param := &struct {
Data string `form:"data" validate:"required"`
}{}
if err = c.Bind(param); err != nil {
return
}
if err = json.Unmarshal([]byte(param.Data), &dark); err != nil {
res["message"] = "参数有误:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
if err = searchSvc.OpenAddDarkword(c, dark); err != nil {
res["message"] = "添加失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
//openBlacklist 对外 黑名单列表
func openBlacklist(c *bm.Context) {
var (
err error
black []searchModel.Black
)
res := map[string]interface{}{}
if black, err = searchSvc.BlackList(); err != nil {
res["message"] = "获取失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(black, nil)
}
//OpenHotList 对外 黑名单列表
func openHotList(c *bm.Context) {
var (
err error
hot []searchModel.Intervene
)
res := map[string]interface{}{}
if hot, err = searchSvc.OpenHotList(c); err != nil {
res["message"] = "获取失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(hot, nil)
}
//openDarkword 对外 获取黑马词
func openDarkword(c *bm.Context) {
var (
err error
dark []searchModel.Dark
)
res := map[string]interface{}{}
if dark, err = searchSvc.GetDarkPub(c); err != nil {
res["message"] = "获取失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(dark, nil)
}
//openAddHotword 对外 添加搜索热词
func openAddHotword(c *bm.Context) {
var (
err error
hot searchModel.OpenHot
)
res := map[string]interface{}{}
param := &struct {
Data string `form:"data" validate:"required"`
}{}
if err = c.Bind(param); err != nil {
return
}
if err = json.Unmarshal([]byte(param.Data), &hot); err != nil {
res["message"] = "参数有误:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
if err = searchSvc.OpenAddHotword(c, hot); err != nil {
res["message"] = "添加失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
//publishHotWord publish hot word
func publishHotWord(c *bm.Context) {
var (
err error
res = map[string]interface{}{}
)
uid, name := managerInfo(c)
if err = searchSvc.SetHotPub(c, name, uid); err != nil {
res["message"] = "发布失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
//publishDark publish dark word
func publishDarkWord(c *bm.Context) {
var (
err error
res = map[string]interface{}{}
)
uid, name := managerInfo(c)
if err = searchSvc.SetDarkPub(c, name, uid); err != nil {
res["message"] = "发布失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
//addInter 添加干预
func addInter(c *bm.Context) {
var (
err error
res = map[string]interface{}{}
)
param := searchModel.InterveneAdd{}
if err = c.Bind(&param); err != nil {
return
}
uid, name := managerInfo(c)
if err = searchSvc.AddInter(c, param, name, uid); err != nil {
res["message"] = "添加失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
//updateInter 更新干预
func updateInter(c *bm.Context) {
var (
err error
res = map[string]interface{}{}
)
param := struct {
ID int `form:"id" validate:"required"`
Searchword string `form:"searchword" validate:"required"`
Rank int `form:"position" validate:"required"`
Tag string `form:"tag"`
Stime time.Time `form:"stime" validate:"required"`
Etime time.Time `form:"etime" validate:"required"`
}{}
if err = c.Bind(&param); err != nil {
return
}
inter := searchModel.InterveneAdd{
Searchword: param.Searchword,
Rank: param.Rank,
Tag: param.Tag,
Stime: param.Stime,
Etime: param.Etime,
}
uid, name := managerInfo(c)
if err = searchSvc.UpdateInter(c, inter, param.ID, name, uid); err != nil {
res["message"] = "更新失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
//deleteHot 删除热词
func deleteHot(c *bm.Context) {
var (
err error
res = map[string]interface{}{}
)
param := struct {
ID int `form:"id" validate:"required"`
Type uint8 `form:"type" validate:"required"`
}{}
if err = c.Bind(&param); err != nil {
return
}
uid, name := managerInfo(c)
if err = searchSvc.DeleteHot(c, param.ID, param.Type, name, uid); err != nil {
res["message"] = "删除失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
//deleteDark 删除黑马词
func deleteDark(c *bm.Context) {
var (
err error
res = map[string]interface{}{}
)
param := struct {
ID int `form:"id" validate:"required"`
}{}
if err = c.Bind(&param); err != nil {
return
}
uid, name := managerInfo(c)
if err = searchSvc.DeleteDark(c, param.ID, name, uid); err != nil {
res["message"] = "删除失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
//updateSearch 更新搜索推过来的词
func updateSearch(c *bm.Context) {
var (
err error
res = map[string]interface{}{}
)
param := struct {
ID int `form:"id" validate:"required"`
Tag string `form:"tag"`
}{}
if err = c.Bind(&param); err != nil {
return
}
uid, name := managerInfo(c)
if err = searchSvc.UpdateSearch(c, param.Tag, param.ID, name, uid); err != nil {
res["message"] = "更新失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
//HotList 搜索热词
func HotList(c *bm.Context) {
var (
err error
hotout searchModel.HotwordOut
)
res := map[string]interface{}{}
param := struct {
Date string `form:"date" validate:"required"`
}{}
if err = c.Bind(&param); err != nil {
return
}
if hotout, err = searchSvc.HotList(c, param.Date); err != nil {
res["message"] = "获取热词失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(hotout, nil)
}
//darkList 黑马词
func darkList(c *bm.Context) {
var (
err error
darkout searchModel.DarkwordOut
)
res := map[string]interface{}{}
param := struct {
Date string `form:"date" validate:"required"`
}{}
if err = c.Bind(&param); err != nil {
return
}
if darkout, err = searchSvc.DarkList(c, param.Date); err != nil {
res["message"] = "获取黑马词失败:" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(darkout, nil)
}
func searchWebCardList(c *bm.Context) {
var (
err error
pager *show.SearchWebCardPager
)
res := map[string]interface{}{}
req := &show.SearchWebCardLP{}
if err = c.Bind(req); err != nil {
return
}
if pager, err = searchSvc.SearchWebCardList(req); err != nil {
res["message"] = "列表获取失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(pager, nil)
}
func addSearchWebCard(c *bm.Context) {
var (
err error
)
res := map[string]interface{}{}
req := &show.SearchWebCardAP{}
if err = c.Bind(req); err != nil {
return
}
uid, name := util.UserInfo(c)
if name == "" {
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized)
c.Abort()
return
}
req.Person = name
if err = searchSvc.AddSearchWebCard(c, req, name, uid); err != nil {
res["message"] = "卡片创建失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func upSearchWebCard(c *bm.Context) {
var (
err error
)
res := map[string]interface{}{}
req := &show.SearchWebCardUP{}
if err = c.Bind(req); err != nil {
return
}
uid, name := util.UserInfo(c)
if name == "" {
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized)
c.Abort()
return
}
if req.ID <= 0 {
c.JSONMap(map[string]interface{}{"message": "ID 参数不合法"}, ecode.RequestErr)
c.Abort()
return
}
if err = searchSvc.UpdateSearchWebCard(c, req, name, uid); err != nil {
res["message"] = "卡片创建失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func delSearchWebCard(c *bm.Context) {
var (
err error
)
res := map[string]interface{}{}
req := &struct {
ID int64 `form:"id" validate:"required"`
}{}
if err = c.Bind(req); err != nil {
return
}
uid, name := util.UserInfo(c)
if name == "" {
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized)
c.Abort()
return
}
if req.ID <= 0 {
c.JSONMap(map[string]interface{}{"message": "ID 参数不合法"}, ecode.RequestErr)
c.Abort()
return
}
if err = searchSvc.DeleteSearchWebCard(req.ID, name, uid); err != nil {
res["message"] = "卡片创建失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func searchWebList(c *bm.Context) {
var (
err error
pager *show.SearchWebPager
)
res := map[string]interface{}{}
req := &show.SearchWebLP{}
if err = c.Bind(req); err != nil {
return
}
if pager, err = searchSvc.SearchWebList(req); err != nil {
res["message"] = "列表获取失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(pager, nil)
}
func openSearchWeb(c *bm.Context) {
var (
err error
pager []*show.SearchWeb
)
res := map[string]interface{}{}
if pager, err = searchSvc.OpenSearchWebList(); err != nil {
res["message"] = "列表获取失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(pager, nil)
}
func addSearchWeb(c *bm.Context) {
var (
err error
)
res := map[string]interface{}{}
req := &show.SearchWebAP{}
if err = c.Bind(req); err != nil {
return
}
uid, name := util.UserInfo(c)
if name == "" {
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized)
c.Abort()
return
}
req.Person = name
if err = searchSvc.AddSearchWeb(c, req, name, uid); err != nil {
res["message"] = "卡片创建失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func upSearchWeb(c *bm.Context) {
var (
err error
)
res := map[string]interface{}{}
req := &show.SearchWebUP{}
if err = c.Bind(req); err != nil {
return
}
uid, name := util.UserInfo(c)
if name == "" {
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized)
c.Abort()
return
}
if req.ID <= 0 {
c.JSONMap(map[string]interface{}{"message": "ID 参数不合法"}, ecode.RequestErr)
c.Abort()
return
}
if err = searchSvc.UpdateSearchWeb(c, req, name, uid); err != nil {
res["message"] = "卡片创建失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func delSearchWeb(c *bm.Context) {
var (
err error
)
res := map[string]interface{}{}
req := &struct {
ID int64 `form:"id" validate:"required"`
}{}
if err = c.Bind(req); err != nil {
return
}
uid, name := util.UserInfo(c)
if name == "" {
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized)
c.Abort()
return
}
if req.ID <= 0 {
c.JSONMap(map[string]interface{}{"message": "ID 参数不合法"}, ecode.RequestErr)
c.Abort()
return
}
if err = searchSvc.DeleteSearchWeb(req.ID, name, uid); err != nil {
res["message"] = "卡片删除失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func optSearchWeb(c *bm.Context) {
var (
err error
)
res := map[string]interface{}{}
req := &struct {
ID int64 `form:"id" validate:"required"`
Opt string `form:"opt" validate:"required"`
}{}
if err = c.Bind(req); err != nil {
return
}
uid, name := util.UserInfo(c)
if name == "" {
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized)
c.Abort()
return
}
if err = searchSvc.OptionSearchWeb(req.ID, req.Opt, name, uid); err != nil {
res["message"] = "修改失败 " + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}