Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"arc_audit.go",
"archive.go",
"audit_result.go",
"channel.go",
"content_repo.go",
"ep_content.go",
"http.go",
"intervs.go",
"label.go",
"mango.go",
"modules.go",
"order.go",
"panel.go",
"region.go",
"sear_inter.go",
"season_repo.go",
"upbfs.go",
"upper.go",
"user.go",
"version.go",
"version_update.go",
"video.go",
"watermark.go",
],
importpath = "go-common/app/admin/main/tv/http",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/admin/main/tv/conf:go_default_library",
"//app/admin/main/tv/model:go_default_library",
"//app/admin/main/tv/service:go_default_library",
"//library/cache/memcache: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/middleware/verify: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,16 @@
package http
import (
bm "go-common/library/net/http/blademaster"
)
//add archive
func arcAdd(c *bm.Context) {
v := new(struct {
Aids []int64 `form:"aids,split" validate:"required,min=1,dive,gt=0"`
})
if err := c.Bind(v); err != nil {
return
}
c.JSON(tvSrv.AddArcs(v.Aids))
}

View File

@@ -0,0 +1,98 @@
package http
import (
"go-common/app/admin/main/tv/model"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
//arcOnline archive online
func arcOnline(c *bm.Context) {
arcAction(c, 1)
}
func arcHidden(c *bm.Context) {
arcAction(c, 2)
}
func arcAction(c *bm.Context, action int) {
var (
err error
res = map[string]interface{}{}
)
param := new(struct {
IDs []int64 `form:"ids,split" validate:"required,min=1,dive,gt=0"`
})
if err = c.Bind(param); err != nil {
return
}
if err := tvSrv.ArcAction(param.IDs, action); err != nil {
res["message"] = "更新数据失败!" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON("成功", nil)
}
// archive list repository
func arcList(c *bm.Context) {
var (
res = make(map[string]interface{})
param = new(model.ArcListParam)
)
if err := c.Bind(param); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if pager, err := tvSrv.ArchiveList(c, param); err != nil {
res["message"] = "获取数据失败!" + err.Error()
c.JSONMap(res, ecode.RequestErr)
} else {
c.JSON(pager, nil)
}
}
//arcCategory archive category
func arcCategory(c *bm.Context) {
c.JSON(tvSrv.GetTps(c, true))
}
// auditCategory gets audit consult used categorys
func auditCategory(c *bm.Context) {
c.JSON(tvSrv.GetTps(c, false))
}
//arcTypeRPC get archive type from rpc
func arcTypeRPC(c *bm.Context) {
c.JSON(tvSrv.ArcTypes, nil)
}
func arcUpdate(c *bm.Context) {
param := new(struct {
ID int64 `form:"id" validate:"required"`
Cover string `form:"cover" validate:"required"`
Content string `form:"content" validate:"required"`
Title string `form:"title" validate:"required"`
})
if err := c.Bind(param); err != nil {
return
}
c.JSON(nil, tvSrv.ArcUpdate(param.ID, param.Cover, param.Content, param.Title))
}
func unShelve(c *bm.Context) {
var (
username string
param = new(model.ReqUnshelve)
)
if err := c.Bind(param); err != nil {
return
}
if un, ok := c.Get("username"); ok {
username = un.(string)
} else {
c.JSON(nil, ecode.Unauthorized)
return
}
c.JSON(tvSrv.Unshelve(c, param, username))
}

View File

@@ -0,0 +1,70 @@
package http
import (
"fmt"
"net/url"
"go-common/app/admin/main/tv/model"
bm "go-common/library/net/http/blademaster"
)
func epResult(c *bm.Context) {
var (
req = c.Request.Form
err error
page int
order int
)
if page, order, err = paramFilter(req); err != nil {
c.JSON(nil, err)
return
}
c.JSON(tvSrv.EpResult(req, page, order))
}
func seasonResult(c *bm.Context) {
var (
req = c.Request.Form
err error
page int
order int
)
if page, order, err = paramFilter(req); err != nil {
c.JSON(nil, err)
return
}
c.JSON(tvSrv.SeasonResult(req, page, order))
}
// filter the params: page & order
func paramFilter(req url.Values) (page int, order int, err error) {
page = atoi(req.Get("page"))
order = atoi(req.Get("order"))
if page == 0 {
page = 1
}
if order == 0 {
order = 1
}
if order != 1 && order != 2 {
err = fmt.Errorf("Param Order %d is incorrect", order)
return
}
return
}
func arcResult(c *bm.Context) {
v := new(model.ReqArcCons)
if err := c.Bind(v); err != nil {
return
}
c.JSON(tvSrv.ArcResult(c, v))
}
func videoResult(c *bm.Context) {
v := new(model.ReqVideoCons)
if err := c.Bind(v); err != nil {
return
}
c.JSON(tvSrv.VideoResult(c, v))
}

View File

@@ -0,0 +1,148 @@
package http
import (
"go-common/app/admin/main/tv/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"github.com/jinzhu/gorm"
)
func chlInfo(c *bm.Context) {
var (
req = c.Request.Form
vid = parseInt(req.Get("id"))
err error
)
exist := model.ChannelFmt{}
if err = tvSrv.DB.Where("id=?", vid).Where("deleted!=?", _isDeleted).First(&exist).Error; err != nil {
c.JSON(nil, err)
return
}
exist.MtimeFormat = tvSrv.TimeFormat(exist.Mtime)
exist.Mtime = 0
c.JSON(exist, nil)
}
func chlList(c *bm.Context) {
param := new(model.ReqChannel)
if err := c.Bind(param); err != nil {
return
}
c.JSON(tvSrv.ChlSplash(c, param))
}
func chlEdit(c *bm.Context) {
var (
req = c.Request.PostForm
vid = parseInt(req.Get("id"))
allowed bool
err error
)
exist := model.Channel{}
if err = tvSrv.DB.Where("id=?", vid).Where("deleted!=?", _isDeleted).First(&exist).Error; err != nil {
c.JSON(nil, err)
return
}
alert, simple := validateChl(c)
if alert != "" {
renderErrMsg(c, ecode.RequestErr.Code(), alert)
return
}
if allowed, _ = nameExist(simple.Title, int(vid)); !allowed {
renderErrMsg(c, ecode.RequestErr.Code(), "Title exists")
return
}
if err = tvSrv.DB.Model(&model.Channel{}).Where("id=?", vid).Update(simple).Error; err != nil {
log.Error("tvSrv.saveChannel error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func chlAdd(c *bm.Context) {
var (
err error
allowed bool
)
alert, simple := validateChl(c)
if alert != "" {
renderErrMsg(c, ecode.RequestErr.Code(), alert)
return
}
if allowed, _ = nameExist(simple.Title, 0); !allowed {
renderErrMsg(c, ecode.RequestErr.Code(), _errTitleExist)
return
}
if err = tvSrv.DB.Create(simple).Error; err != nil {
log.Error("tvSrv.addChannel error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func chlDel(c *bm.Context) {
var (
req = c.Request.PostForm
vid = parseInt(req.Get("id"))
err error
)
exist := model.Channel{}
if err = tvSrv.DB.Where("id=?", vid).Where("deleted!=?", _isDeleted).First(&exist).Error; err != nil {
c.JSON(nil, err)
return
}
if err = tvSrv.DB.Model(&model.Channel{}).Where("id=?", vid).Update(map[string]int{"deleted": _isDeleted}).Error; err != nil {
log.Error("tvSrv.chlDel error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
// avoid two same names in DB - conflict
func nameExist(name string, myID int) (allowed bool, err error) {
var (
exist = model.Channel{}
db = tvSrv.DB.Where("title = ?", name).Where("deleted!=?", _isDeleted)
)
if myID != 0 {
db = db.Where("id != ?", myID)
}
if err = db.First(&exist).Error; err != nil {
if err != gorm.ErrRecordNotFound {
log.Error("tvSrv.nameExist error(%v)", err)
return
}
return true, nil
}
return false, nil
}
// validate Channel params
func validateChl(c *bm.Context) (alert string, simple *model.Channel) {
var (
req = c.Request.PostForm
title = req.Get("title")
desc = req.Get("desc")
splash = req.Get("splash")
)
if title == "" {
alert = "Channel Title can't be empty"
return
}
if splash == "" {
alert = "Splash can't be empty"
return
}
return "", &model.Channel{
Title: title,
Desc: desc,
Splash: splash,
}
}

View File

@@ -0,0 +1,206 @@
package http
import (
"strings"
"go-common/app/admin/main/tv/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"github.com/jinzhu/gorm"
)
func contList(c *bm.Context) {
var (
req = c.Request.Form
err error
items []*model.ContentRepo
count int64
order = atoi(req.Get("order"))
page = atoi(req.Get("page"))
size = 20
)
if page == 0 {
page = 1
}
db := contWhere(c)
db.Model(&model.ContentRepo{}).Count(&count)
if order == 1 {
db = db.Order("tv_content.mtime ASC")
} else {
db = db.Order("tv_content.mtime DESC")
}
if err = db.Model(&model.ContentRepo{}).Offset((page - 1) * size).Limit(size).Find(&items).Error; err != nil {
log.Error("%v\n", err)
c.JSON(nil, err)
return
}
for _, v := range items {
v.MtimeFormat = tvSrv.TimeFormat(v.Mtime)
v.Mtime = 0
}
pager := &model.ContentRepoPager{
TotalCount: count,
Pn: page,
Ps: size,
Items: items,
}
c.JSON(pager, nil)
}
func contInfo(c *bm.Context) {
var (
req = c.Request.Form
epid = parseInt(req.Get("id"))
err error
)
exist := model.Content{}
if err = tvSrv.DB.Where("epid=?", epid).Where("is_deleted=?", 0).First(&exist).Error; err != nil {
c.JSON(nil, err)
return
}
c.JSON(exist, nil)
}
func saveCont(c *bm.Context) {
var (
req = c.Request.PostForm
epid = atoi(req.Get("id"))
err error
)
exist := model.Content{}
if err = tvSrv.DB.Where("epid=?", epid).Where("is_deleted=?", 0).First(&exist).Error; err != nil {
c.JSON(nil, err)
return
}
title := req.Get("title")
cover := req.Get("cover")
if cover == "" {
renderErrMsg(c, ecode.RequestErr.Code(), "封面不能为空")
return
}
if err := tvSrv.DB.Model(&model.Content{}).Where("epid = ?", epid).Update(map[string]string{"title": title, "cover": cover}).Error; err != nil {
log.Error("tvSrv.saveCont error(%v)", err)
c.JSON(nil, err)
return
}
if err := tvSrv.DB.Model(&model.TVEpContent{}).Where("id = ?", epid).Update(map[string]string{"long_title": title, "cover": cover}).Error; err != nil {
log.Error("tvSrv.saveCont error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func preview(c *bm.Context) {
var (
req = c.Request.Form
err error
epid = atoi(req.Get("id"))
)
exist := model.Content{}
if err = tvSrv.DB.Where("epid=?", epid).Where("is_deleted=?", 0).First(&exist).Error; err != nil {
c.JSON(nil, err)
return
}
url, err := tvSrv.Playurl(exist.CID)
if err != nil {
log.Error("tvSrv.Playurl error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(url, nil)
}
func contOptions(id string, valid int) (ret bool) {
var (
epid = atoi(id)
exist = model.Content{}
)
ret = false
if err := tvSrv.DB.Where("epid=?", epid).Where("is_deleted=?", 0).First(&exist).Error; err != nil {
log.Error("tvSrv.contOptions error(%v)", err)
return
}
if err := tvSrv.DB.Model(&model.Content{}).Where("epid=?", epid).Update(map[string]int{"valid": valid}).Error; err != nil {
log.Error("tvSrv.contOptions error(%v)", err)
return
}
return true
}
func contOnline(c *bm.Context) {
var (
req = c.Request.PostForm
ids = req.Get("ids")
)
idList := strings.Split(ids, ",")
if len(idList) == 0 {
renderErrMsg(c, ecode.RequestErr.Code(), _errIDNotFound)
return
}
for _, val := range idList {
if !contOptions(val, 1) {
renderErrMsg(c, ecode.RequestErr.Code(), "Online("+val+") fail")
return
}
}
c.JSON(nil, nil)
}
func contHidden(c *bm.Context) {
var (
req = c.Request.PostForm
ids = req.Get("ids")
)
idList := strings.Split(ids, ",")
if len(idList) == 0 {
renderErrMsg(c, ecode.RequestErr.Code(), _errIDNotFound)
return
}
for _, val := range idList {
if !contOptions(val, 0) {
renderErrMsg(c, ecode.RequestErr.Code(), "Hide ("+val+") fail")
return
}
}
c.JSON(nil, nil)
}
func contWhere(c *bm.Context) *gorm.DB {
var (
req = c.Request.Form
sid = atoi(req.Get("sid"))
cat = atoi(req.Get("category"))
epid = atoi(req.Get("epid"))
validStr = req.Get("valid")
)
db := tvSrv.DB.
Joins("LEFT OUTER JOIN tv_ep_season ON tv_content.season_id=tv_ep_season.id").
Select("tv_content.*, tv_ep_season.category, tv_ep_season.title AS season_title").
Where("tv_content.state=?", 3).
Where("tv_content.is_deleted=?", 0).
Where("tv_ep_season.check=?", 1).
Where("tv_ep_season.is_deleted=?", 0)
if sid != 0 {
db = db.Where("tv_content.season_id=?", sid)
}
if epid != 0 {
db = db.Where("tv_content.epid=?", epid)
}
if cat != 0 {
db = db.Where("tv_ep_season.category=?", cat)
}
if validStr == "" {
return db
}
if valid := atoi(validStr); valid == 0 {
db = db.Where("tv_content.valid=?", 0)
} else if valid == 1 {
db = db.Where("tv_content.valid=?", 1)
}
return db
}

View File

@@ -0,0 +1,143 @@
package http
import (
"go-common/app/admin/main/tv/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
func createEP(c *bm.Context) {
var (
err error
epc = &model.TVEpContent{}
)
if err = c.Bind(epc); err != nil {
return
}
exist := model.Content{}
tvSrv.DB.Where("epid=?", epc.ID).First(&exist)
if exist.ID <= 0 { // data not exist, brand new data
if err = tvSrv.DB.Create(epc.ToContent(true)).Error; err != nil {
log.Error("tvSrv.createEP error(%v)", err)
c.JSON(nil, err)
return
}
if err = tvSrv.DB.Create(epc).Error; err != nil {
log.Error("tvSrv.createEP error(%v)", err)
c.JSON(nil, err)
return
}
} else {
// data exists, but was deleted
if exist.IsDeleted == 1 {
if err = tvSrv.EpDel(epc.ID, 0); err != nil {
c.JSON(nil, err)
return
}
}
// data exist, so we update
if err := tvSrv.DB.Model(&model.TVEpContent{}).Where("id=?", epc.ID).Update(epc).Error; err != nil {
log.Error("tvSrv.modifyEP error(%v)", err)
c.JSON(nil, err)
return
}
if err := tvSrv.DB.Model(&model.TVEpContent{}).Where("id=?", epc.ID).Update(map[string]string{"long_title": epc.LongTitle, "title": epc.Title, "cover": epc.Cover}).Error; err != nil {
log.Error("tvSrv.modifyEP error(%v)", err)
c.JSON(nil, err)
return
}
lic := epc.ToContent(false)
if err := tvSrv.DB.Model(&model.Content{}).Where("epid=?", epc.ID).Update(lic).Error; err != nil {
log.Error("tvSrv.modifyEP error(%v)", err)
c.JSON(nil, err)
return
}
if err := tvSrv.DB.Model(&model.Content{}).Where("epid=?", epc.ID).Update(map[string]string{"title": lic.Title, "subtitle": lic.Subtitle, "desc": lic.Desc, "cover": lic.Cover}).Error; err != nil {
log.Error("tvSrv.modifyEP error(%v)", err)
c.JSON(nil, err)
return
}
if err := tvSrv.EpCheck(&exist); err != nil { // manage ep's check status
c.JSON(nil, err)
return
}
}
renderErrMsg(c, 0, "0")
log.Info("createEP success(%v)", epc)
}
func removeEP(c *bm.Context) {
var (
req = c.Request.PostForm
err error
id = parseInt(req.Get("id"))
)
exist := model.Content{}
if err = tvSrv.DB.Where("epid=?", id).Where("is_deleted=?", 0).First(&exist).Error; err != nil {
c.JSON(nil, err)
return
}
if err = tvSrv.EpDel(id, 1); err != nil {
c.JSON(nil, err)
return
}
if err = tvSrv.EpCheck(&exist); err != nil { // manage ep's check status
c.JSON(nil, err)
return
}
log.Info("removeEP success(%v)", exist)
renderErrMsg(c, 0, "0")
}
func createSeason(c *bm.Context) {
var (
err error
eps = &model.TVEpSeason{}
)
if err = c.Bind(eps); err != nil {
return
}
if err = tvSrv.SnUpdate(c, eps); err != nil {
c.JSON(nil, err)
return
}
renderErrMsg(c, 0, "0")
}
func removeSeason(c *bm.Context) {
var (
req = c.Request.PostForm
err error
id = parseInt(req.Get("id"))
)
exist := model.TVEpSeason{}
if err = tvSrv.DB.Where("id=?", id).Where("is_deleted=?", 0).First(&exist).Error; err != nil {
renderErrMsg(c, ecode.RequestErr.Code(), "Data not exist")
return
}
if err = tvSrv.SeasonRemove(&exist); err != nil {
c.JSON(nil, err)
return
}
log.Info("removeSeason success(%v)", exist)
renderErrMsg(c, 0, "0")
}
func act(c *bm.Context, action int) {
param := new(struct {
CID int64 `form:"cid" validate:"required"`
})
if err := c.Bind(param); err != nil {
return
}
c.JSON(nil, tvSrv.EpAct(c, param.CID, action))
}
func online(c *bm.Context) {
act(c, 1)
}
func hidden(c *bm.Context) {
act(c, 0)
}

View File

@@ -0,0 +1,298 @@
package http
import (
"net/http"
"strconv"
"go-common/app/admin/main/tv/conf"
"go-common/app/admin/main/tv/service"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/permit"
"go-common/library/net/http/blademaster/middleware/verify"
"go-common/library/net/http/blademaster/render"
)
var (
tvSrv *service.Service
vfySvc *verify.Verify
authSvc *permit.Permit
)
const (
_errIDNotFound = "ids not found"
_errTitleExist = "Title exists already"
)
// Init init http sever instance.
func Init(c *conf.Config, s *service.Service) {
initService(c, s)
engine := bm.DefaultServer(c.HTTPServer)
innerRouter(engine)
// init internal server
if err := engine.Start(); err != nil {
log.Error("engine.Start error(%v)", err)
panic(err)
}
}
// initService init service
func initService(c *conf.Config, s *service.Service) {
tvSrv = s
vfySvc = verify.New(nil)
authSvc = permit.New(c.Auth)
}
func parseInt(value string) int64 {
intval, err := strconv.ParseInt(value, 10, 64)
if err != nil {
intval = 0
}
return intval
}
func atoi(value string) (intval int) {
intval, err := strconv.Atoi(value)
if err != nil {
intval = 0
}
return intval
}
// innerRouter
func innerRouter(e *bm.Engine) {
// ping monitor
e.GET("/monitor/ping", ping)
// internal api
bg := e.Group("/x/admin/tv")
{
// cms content edit
cont := bg.Group("/cont", vfySvc.Verify)
{
cont.POST("/online", online)
cont.POST("/hidden", hidden)
}
// pgc ep inject
epIn := bg.Group("/ep", vfySvc.Verify)
{
epIn.POST("/create", createEP)
epIn.POST("/remove", removeEP)
}
// pgc season inject
snIn := bg.Group("/season", vfySvc.Verify)
{
snIn.POST("/create", createSeason)
snIn.POST("/remove", removeSeason)
}
// intervsRank edit
interv := bg.Group("/intervs", vfySvc.Verify)
{
rank := interv.Group("/rank")
{
rank.GET("/list", intervsRank)
rank.POST("/publish", rankPub)
}
module := interv.Group("/module")
{
module.GET("/list", intervsMod)
module.POST("/publish", modPub)
}
index := interv.Group("/index")
{
index.GET("/list", intervsIndex)
index.POST("/publish", indexPub)
}
}
// audit result
audit := bg.Group("/audit_result")
{
aud := audit.Group("")
{
aud.GET("/ep", epResult)
aud.GET("/season", seasonResult)
aud.GET("/archive", arcResult)
aud.GET("/video", videoResult)
aud.GET("/ugctypes", auditCategory)
audit.GET("/abnor_export", abnorExport)
audit.GET("/abnor_debug", abnorDebug)
}
audit.POST("/unshelve", authSvc.Permit("TV_MEDIA_DEL"), unShelve)
}
// content repository
crepo := bg.Group("/contrepo", vfySvc.Verify)
{
crepo.GET("/list", contList)
crepo.GET("/info", contInfo)
crepo.POST("/save", saveCont)
crepo.GET("/preview", preview)
crepo.POST("/online", contOnline)
crepo.POST("/hidden", contHidden)
crepo.POST("/upload", upbfs)
}
// season repo
srepo := bg.Group("/searepo", vfySvc.Verify)
{
srepo.GET("/list", seasonList)
srepo.GET("/info", seasonInfo)
srepo.POST("/save", saveSeason)
srepo.POST("/online", seasonOnline)
srepo.POST("/hidden", seasonHidden)
// ugc
crugc := srepo.Group("/ugc")
{
//archive
crugc.GET("/archive/lists", arcList)
crugc.GET("/archive/category", arcCategory)
crugc.POST("/archive/online", arcOnline)
crugc.POST("/archive/hidden", arcHidden)
crugc.GET("/archive/arcTypeRPC", arcTypeRPC)
crugc.POST("/archive/update", arcUpdate)
//video
crugc.GET("/video/lists", VideoList)
crugc.POST("/video/online", VideoOnline)
crugc.POST("/video/hidden", VideoHidden)
crugc.GET("/video/preview", VideoPreview)
crugc.POST("/video/update", videoUpdate)
}
}
// version mgt
ver := bg.Group("/version", vfySvc.Verify)
{
ver.GET("/list", versionList)
ver.GET("/info", versionInfo)
ver.POST("/save", saveVersion)
ver.POST("/add", addVersion)
ver.POST("/delete", versionDel)
}
// version update mgt
verup := bg.Group("/verupdate", vfySvc.Verify)
{
verup.GET("/list", verUpdateList)
verup.POST("/add", addVerUpdate)
verup.POST("/save", saveVerUpdate)
verup.POST("/enable", verUpdateEnable)
verup.GET("/full", fullPackageImport)
}
// channel mgt
chl := bg.Group("/channel", vfySvc.Verify)
{
chl.GET("/list", chlList)
chl.GET("/info", chlInfo)
chl.POST("/edit", chlEdit)
chl.POST("/add", chlAdd)
chl.POST("/delete", chlDel)
}
upper := bg.Group("/upper", authSvc.Permit("TV_AUDIT_MGT"))
{
upper.POST("/add", upAdd)
upper.POST("/import", upImport)
upper.POST("/del", upDel)
upper.GET("", upList)
}
upCMS := bg.Group("upcms", vfySvc.Verify)
{
upCMS.GET("/list", upcmsList)
upCMS.POST("/audit", upcmsAudit)
upCMS.POST("/edit", upcmsEdit)
}
//search intervene
si := bg.Group("/searchInter", vfySvc.Verify)
{
si.GET("/list", searInterList)
si.POST("/add", searInterAdd)
si.POST("/edit", searInterEdit)
si.POST("/delete", searInterDel)
si.POST("/rank", searInterRank)
si.POST("/publish", searInterPublish)
si.POST("/publishList", searInterPubList)
}
bg.POST("/archive/add", authSvc.Permit("TV_AUDIT_MGT"), arcAdd)
//modules manager
mod := bg.Group("/modules", vfySvc.Verify)
{
mod.POST("/add", modulesAdd)
mod.GET("/list", modulesList)
mod.GET("/editGet", modulesEditGet)
mod.POST("/editPost", modulesEditPost)
mod.POST("/publish", modulesPublish)
mod.GET("/sup_cat", supCat)
}
//watermark
wr := bg.Group("/watermark", authSvc.Permit("TV_AUDIT_MGT"))
{
wr.GET("/list", waterMarklist)
wr.POST("/add", waterMarkAdd)
wr.POST("/delete", waterMarkDelete)
}
mango := bg.Group("/mango", authSvc.Permit("TV_AUDIT_MGT"))
{
mango.GET("/list", mangoList)
mango.POST("/add", mangoAdd)
mango.POST("/edit", mangoEdit)
mango.POST("/delete", mangoDel)
mango.POST("/publish", mangoPub)
}
trans := bg.Group("/trans", authSvc.Permit("TV_AUDIT_MGT"))
{
trans.GET("/list", transList)
}
label := bg.Group("/label", vfySvc.Verify)
{
label.POST("/act", actLabels)
label.POST("/edit", editLabel)
label.POST("/publish", pubLabel)
ugcLabel := label.Group("/ugc")
{
ugcLabel.POST("/add_time", addTime)
ugcLabel.POST("/edit_time", editTime)
ugcLabel.POST("/del_time", delTmLabels)
ugcLabel.GET("/list", ugcLabels)
}
pgcLabel := label.Group("/pgc")
{
pgcLabel.GET("/list", pgcLabels)
pgcLabel.GET("/types", pgcLblTps)
}
}
// app manager
app := bg.Group("/app", vfySvc.Verify)
{
// region manager
reg := app.Group("/region")
{
reg.GET("/list", reglist)
reg.POST("/sort", regSort)
reg.POST("/save", saveReg)
reg.POST("/publish", upState)
}
}
// vip tv-vip
vip := bg.Group("/vip", authSvc.Permit("TV_VIP"))
{
// user info
vip.GET("/user/info", userInfo)
//order info
vip.GET("/order/list", orderList)
//panel info
panel := vip.Group("/panel")
{
panel.GET("/info", panelInfo)
panel.POST("/status", panelStatus)
panel.POST("/save", savePanel)
panel.GET("/list", panelList)
}
}
}
}
// ping check server ok.
func ping(c *bm.Context) {
}
func renderErrMsg(c *bm.Context, code int, msg string) {
data := map[string]interface{}{
"code": code,
"message": msg,
}
c.Render(http.StatusOK, render.MapJSON(data))
}

View File

@@ -0,0 +1,137 @@
package http
import (
"fmt"
"go-common/app/admin/main/tv/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
const (
_jsonErr = "Incorrect Json Format"
)
func intervsRank(c *bm.Context) {
var (
form = new(model.RankListReq)
request = new(model.IntervListReq)
)
if err := c.Bind(form); err != nil {
return
}
request.FromRank(form)
c.JSON(tvSrv.Intervs(request))
}
func intervsMod(c *bm.Context) {
var (
form = new(model.ModListReq)
request = new(model.IntervListReq)
)
if err := c.Bind(form); err != nil {
return
}
request.FromMod(form)
c.JSON(tvSrv.Intervs(request))
}
func intervsIndex(c *bm.Context) {
var (
form = new(model.IdxListReq)
request = new(model.IntervListReq)
)
if err := c.Bind(form); err != nil {
return
}
request.FromIndex(form)
c.JSON(tvSrv.Intervs(request))
}
func rankPub(c *bm.Context) {
var (
form = new(model.RankPubReq)
req = new(model.IntervPubReq)
)
if err := c.Bind(form); err != nil {
return
}
if err := req.FromRank(form); err != nil {
renderErrMsg(c, ecode.RequestErr.Code(), _jsonErr)
return
}
intervPublish(c, req)
}
func indexPub(c *bm.Context) {
var (
form = new(model.IdxPubReq)
req = new(model.IntervPubReq)
)
if err := c.Bind(form); err != nil {
return
}
if err := req.FromIndex(form); err != nil {
renderErrMsg(c, ecode.RequestErr.Code(), _jsonErr)
return
}
intervPublish(c, req)
}
func modPub(c *bm.Context) {
var (
form = new(model.ModPubReq)
req = new(model.IntervPubReq)
)
if err := c.Bind(form); err != nil {
return
}
if err := req.FromMod(form); err != nil {
renderErrMsg(c, ecode.RequestErr.Code(), _jsonErr)
return
}
intervPublish(c, req)
}
// combine the alert msg for too many interventions and cut the slice
func alertMsg(items []*model.SimpleRank, nbLimit int) (msg string, restItems []*model.SimpleRank) {
var (
length = len(items)
)
if length <= nbLimit {
return "", items
}
msg = "以下内容因超量未发布干预:"
for i := nbLimit; i < length; i++ {
if i+1 == length {
msg = msg + fmt.Sprintf("id%d", items[i].ContID)
continue
}
msg = msg + fmt.Sprintf("id%d,", items[i].ContID)
}
return msg, items[:nbLimit]
}
func intervPublish(c *bm.Context, req *model.IntervPubReq) {
var (
err error
invalid *model.RankError
alertInfo string // used when too many interventions published
)
alertInfo, req.Items = alertMsg(req.Items, tvSrv.IntervLimit) // too many intervention treatment
invalid, err = tvSrv.RefreshIntervs(req)
if err != nil {
log.Error("RefreshIntervs Error %v", err)
c.JSON(nil, err)
return
}
if invalid != nil {
renderErrMsg(c, ecode.RequestErr.Code(), fmt.Sprintf("发布失败以下内容状态错误id%d", invalid.SeasonID))
return
}
if alertInfo != "" {
renderErrMsg(c, ecode.OK.Code(), alertInfo)
return
}
renderErrMsg(c, ecode.OK.Code(), "发布成功")
}

View File

@@ -0,0 +1,95 @@
package http
import (
"go-common/app/admin/main/tv/model"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
func addTime(c *bm.Context) {
tm := new(model.UgcTime)
if err := c.Bind(tm); err != nil {
return
}
c.JSON(nil, tvSrv.AddUgcTm(tm))
}
func editTime(c *bm.Context) {
tm := new(model.EditUgcTime)
if err := c.Bind(tm); err != nil {
return
}
c.JSON(nil, tvSrv.EditUgcTm(tm))
}
func actLabels(c *bm.Context) {
param := new(struct {
IDs []int64 `form:"ids,split" validate:"required,min=1,dive,gt=0"`
Action string `form:"action" validate:"required"` // 0 = hide, 1 = recover
})
if err := c.Bind(param); err != nil {
return
}
c.JSON(nil, tvSrv.ActLabels(param.IDs, atoi(param.Action)))
}
func delTmLabels(c *bm.Context) {
param := new(struct {
IDs []int64 `form:"ids,split" validate:"required,min=1,dive,gt=0"`
})
if err := c.Bind(param); err != nil {
return
}
c.JSON(nil, tvSrv.DelLabels(param.IDs))
}
func ugcLabels(c *bm.Context) {
req := new(model.ReqLabel)
if err := c.Bind(req); err != nil {
return
}
if req.Param != model.ParamUgctime && req.Param != model.ParamTypeid {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(tvSrv.PickLabels(req, model.UgcLabel))
}
func pgcLabels(c *bm.Context) {
req := new(model.ReqLabel)
if err := c.Bind(req); err != nil {
return
}
c.JSON(tvSrv.PickLabels(req, model.PgcLabel))
}
func pgcLblTps(c *bm.Context) {
param := new(struct {
Category int `form:"category" validate:"required,min=1,gt=0"`
})
if err := c.Bind(param); err != nil {
return
}
c.JSON(tvSrv.LabelTp(param.Category))
}
func editLabel(c *bm.Context) {
param := new(struct {
ID int64 `form:"id" validate:"required"`
Name string `form:"name" validate:"required"`
})
if err := c.Bind(param); err != nil {
return
}
c.JSON(nil, tvSrv.EditLabel(param.ID, param.Name))
}
func pubLabel(c *bm.Context) {
param := new(struct {
IDs []int64 `form:"ids,split" validate:"required,min=1,dive,gt=0"`
})
if err := c.Bind(param); err != nil {
return
}
c.JSON(nil, tvSrv.PubLabel(param.IDs))
}

View File

@@ -0,0 +1,49 @@
package http
import (
"go-common/app/admin/main/tv/model"
bm "go-common/library/net/http/blademaster"
)
func mangoList(c *bm.Context) {
c.JSON(tvSrv.MangoList(c))
}
func mangoAdd(c *bm.Context) {
param := new(struct {
IDs []int64 `form:"rids,split" validate:"required,min=1,dive,gt=0"`
RType int `form:"rtype" validate:"required,min=1,max=2"` // 1=pgc, 2=ugc
})
if err := c.Bind(param); err != nil {
return
}
c.JSON(tvSrv.MangoAdd(c, param.RType, param.IDs))
}
func mangoEdit(c *bm.Context) {
param := new(model.ReqMangoEdit)
if err := c.Bind(param); err != nil {
return
}
c.JSON(nil, tvSrv.MangoEdit(c, param))
}
func mangoDel(c *bm.Context) {
param := new(struct {
ID int64 `form:"id" validate:"required,min=1,gt=0"`
})
if err := c.Bind(param); err != nil {
return
}
c.JSON(nil, tvSrv.MangoDel(c, param.ID))
}
func mangoPub(c *bm.Context) {
param := new(struct {
IDs []int64 `form:"ids,split" validate:"required,min=1,dive,gt=0"`
})
if err := c.Bind(param); err != nil {
return
}
c.JSON(nil, tvSrv.MangoPub(c, param.IDs))
}

View File

@@ -0,0 +1,193 @@
package http
import (
"strconv"
"time"
"go-common/app/admin/main/tv/model"
"go-common/library/cache/memcache"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
func modulesAdd(c *bm.Context) {
var (
err error
res = map[string]interface{}{}
)
param := new(model.Modules)
if err = c.Bind(param); err != nil {
return
}
if err = modValid(param.ModCore); err != nil {
c.JSON(nil, err)
return
}
if err = tvSrv.ModulesAdd(param); err != nil {
res["message"] = "添加模块列表失败!" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
pageID := strconv.Itoa(int(param.ID))
if err := tvSrv.SetPublish(c, pageID, model.ModulesPublishNo); err != nil {
res["message"] = "设置模块发布状态失败!"
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func modValid(core model.ModCore) (err error) {
var t int
if t, err = strconv.Atoi(core.Type); err != nil {
log.Error("atoi %s, Err %v", core.Type, err)
return
}
if t < 2 || t > 7 {
err = ecode.RequestErr
return
}
if sup := tvSrv.TypeSupport(core.SrcType, atoi(core.Source)); !sup {
err = ecode.RequestErr
}
return
}
func modulesEditPost(c *bm.Context) {
var (
err error
res = map[string]interface{}{}
)
param := new(model.ModulesAddParam)
if err = c.Bind(param); err != nil {
return
}
if err = modValid(param.ModCore); err != nil {
c.JSON(nil, err)
return
}
v := &model.Modules{
PageID: param.PageID,
Flexible: param.Flexible,
Icon: param.Icon,
Title: param.Title,
Capacity: param.Capacity,
More: param.More,
Order: param.Order,
Moretype: param.Moretype,
Morepage: param.Morepage,
ModCore: param.ModCore,
}
if err = tvSrv.ModulesEditPost(param.ID, v); err != nil {
res["message"] = "编辑数据失败!" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func modulesList(c *bm.Context) {
var (
err error
res = map[string]interface{}{}
v []*model.Modules
p model.ModPub
)
param := new(struct {
PageID string `form:"page_id" validate:"required"`
})
if err = c.Bind(param); err != nil {
return
}
if v, err = tvSrv.ModulesList(param.PageID); err != nil {
res["message"] = "获取模块列表失败!" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
if p, err = tvSrv.GetModPub(c, param.PageID); err != nil {
if err == memcache.ErrNotFound {
nowTime := time.Now()
t := nowTime.Format("2006-01-02 15:04:05")
p = model.ModPub{
Time: t,
State: 0,
}
} else {
res["message"] = "获取模块发布状态失败!" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
}
m := &model.ModulesList{
Items: v,
PubState: p.State,
PubTime: p.Time,
}
c.JSON(m, nil)
}
func modulesEditGet(c *bm.Context) {
var (
err error
res = map[string]interface{}{}
v = &model.Modules{}
)
param := new(struct {
ID uint64 `form:"id" validate:"required"`
})
if err = c.Bind(param); err != nil {
return
}
if v, err = tvSrv.ModulesEditGet(param.ID); err != nil {
res["message"] = "获取数据失败!" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(v, nil)
}
func modulesPublish(c *bm.Context) {
var (
err error
res = map[string]interface{}{}
tmp = &model.Param{}
tmpRes []*model.RegList
)
param := new(struct {
IDs []int `form:"ids,split" validate:"required,min=1,dive,gt=0"`
DeletedIDs []int `form:"deleted_ids,split" validate:"required,dive,gt=0"`
PageID string `form:"page_id" validate:"required"`
})
if err = c.Bind(param); err != nil {
return
}
if param.PageID != "0" {
tmp.PageID = param.PageID
if tmpRes, err = tvSrv.RegList(c, tmp); err != nil || len(tmpRes) != 1 {
log.Error("search region is publish count(%d) error(%v)", len(tmpRes), err)
c.JSON(nil, ecode.RequestErr)
return
}
if tmpRes[0].Valid == 0 {
log.Error("该分区region(%d)未上线 valid(%d)", param.PageID, tmpRes[0].Valid)
c.JSON(nil, ecode.RequestErr)
return
}
}
if err := tvSrv.ModulesPublish(c, param.PageID, model.ModulesPublishYes, param.IDs, param.DeletedIDs); err != nil {
res["message"] = "模块发布失败!" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func supCat(c *bm.Context) {
if len(tvSrv.SupCats) > 0 {
c.JSON(tvSrv.SupCats, nil)
return
}
log.Error("SupCats empty")
c.JSON(nil, ecode.ServiceUnavailable)
}

View File

@@ -0,0 +1,23 @@
package http
import (
bm "go-common/library/net/http/blademaster"
)
func orderList(c *bm.Context) {
args := new(struct {
Mid int64 `form:"mid"`
OrderNo string `form:"order_no"`
Status int8 `form:"status"`
PaymentStime int64 `form:"payment_stime"`
PaymentEtime int64 `form:"payment_etime"`
PageNum int64 `form:"pn" default:"1"`
PageSize int64 `form:"ps" default:"20"`
})
if err := c.Bind(args); err != nil {
return
}
c.JSON(tvSrv.OrderList(args.Mid, args.PageNum, args.PageSize, args.PaymentStime, args.PaymentEtime, args.Status, args.OrderNo))
}

View File

@@ -0,0 +1,77 @@
package http
import (
"go-common/app/admin/main/tv/model"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
func panelInfo(c *bm.Context) {
arg := new(struct {
ID int64 `form:"id" validate:"required"`
})
if err := c.Bind(arg); err != nil {
return
}
c.JSON(tvSrv.PanelInfo(arg.ID))
}
func panelStatus(c *bm.Context) {
args := new(struct {
ID int64 `form:"id" validate:"required"`
Status int64 `form:"status" default:"-1"`
})
if err := c.Bind(args); err != nil {
return
}
if args.Status == -1 {
renderErrMsg(c, ecode.RequestErr.Code(), "状态不能为空")
return
}
c.JSON(nil, tvSrv.PanelStatus(args.ID, args.Status))
}
func savePanel(c *bm.Context) {
panel := new(model.TvPriceConfig)
if err := c.Bind(panel); err != nil {
return
}
if panel.PID == 0 && panel.Price == 0 {
renderErrMsg(c, ecode.RequestErr.Code(), "价格不能为空")
return
}
if panel.PID == 0 && panel.Month == 0 {
renderErrMsg(c, ecode.RequestErr.Code(), "月份不能为空")
return
}
if panel.PID != 0 && panel.Stime >= panel.Etime {
renderErrMsg(c, ecode.RequestErr.Code(), "活动开始时间不能晚于结束时间")
return
}
c.JSON(nil, tvSrv.SavePanel(c, panel))
}
func panelList(c *bm.Context) {
args := new(struct {
Platform int64 `form:"platform"`
Month int64 `form:"month"`
SubType int64 `form:"sub_type" default:"-1"`
SuitType int64 `form:"suit_type" default:"-1"`
})
if err := c.Bind(args); err != nil {
return
}
c.JSON(tvSrv.PanelList(args.Platform, args.Month, args.SubType, args.SuitType))
}

View File

@@ -0,0 +1,72 @@
package http
import (
"go-common/app/admin/main/tv/model"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
const (
_stateup = "1"
_statedown = "0"
)
func reglist(c *bm.Context) {
var (
err error
v = &model.Param{}
)
if err = c.Bind(v); err != nil {
return
}
c.JSON(tvSrv.RegList(c, v))
}
func saveReg(c *bm.Context) {
var (
err error
v = new(struct {
IndexType string `form:"index_type"`
IndexTid string `form:"index_tid"`
Rank string `form:"rank"`
Title string `form:"title" validate:"required"`
PageId string `form:"page_id"`
})
)
if err = c.Bind(v); err != nil {
return
}
if v.PageId == "" {
c.JSON(nil, tvSrv.AddReg(c, v.Title, v.IndexType, v.IndexTid, v.Rank))
} else {
c.JSON(nil, tvSrv.EditReg(c, v.PageId, v.Title, v.IndexType, v.IndexTid))
}
}
func upState(c *bm.Context) {
var (
err error
v = new(struct {
Pids []int `form:"page_id,split" validate:"required,min=1,dive,gt=0"`
Valid string `form:"valid" validate:"required"`
})
)
if err = c.Bind(v); err != nil {
return
}
if !(v.Valid == _statedown || v.Valid == _stateup) {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, tvSrv.UpState(c, v.Pids, v.Valid))
}
func regSort(c *bm.Context) {
param := new(struct {
IDs []int `form:"ids,split" validate:"required,min=1,dive,gt=0"`
})
if err := c.Bind(param); err != nil {
return
}
c.JSON(nil, tvSrv.RegSort(c, param.IDs))
}

View File

@@ -0,0 +1,338 @@
package http
import (
"go-common/library/cache/memcache"
"strings"
"time"
"go-common/app/admin/main/tv/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
func searInterList(c *bm.Context) {
var (
req = c.Request.Form
items []*model.SearInter
total int
pn = atoi(req.Get("pn"))
ps = atoi(req.Get("ps"))
pubs *model.PublishStatus
err error
)
if pn == 0 {
pn = 1
}
if ps == 0 {
ps = 20
}
if items, total, err = tvSrv.GetSearInterList(c, pn, ps); err != nil {
log.Error("tvSrv.searInterList error(%v)", err)
c.JSON(nil, err)
return
}
//rank
for i := 0; i < len(items); i++ {
items[i].Rank = int64(i) + 1
}
if pubs, err = tvSrv.GetPublishState(c); err != nil {
if err == memcache.ErrNotFound {
nowTime := time.Now()
t := nowTime.Format("2006-01-02 15:04:05")
pubs = &model.PublishStatus{
Time: t,
State: 0,
}
} else {
log.Error("tvSrv.searInterList GetHotPubState error(%v)", err)
c.JSON("MC获取发布状态报错", ecode.RequestErr)
return
}
}
pager := &model.SearInterPager{
TotalCount: total,
Pn: pn,
Ps: ps,
Items: items,
PubState: pubs.State,
PubTime: pubs.Time,
}
c.JSON(pager, nil)
}
func searInterAdd(c *bm.Context) {
var (
req = c.Request.PostForm
searchword = req.Get("searchword")
err error
count int64
item model.SearInter
pubs *model.PublishStatus
)
if err = tvSrv.DB.Model(&model.SearInter{}).Where("deleted!=?", _isDeleted).Count(&count).Error; err != nil {
log.Error("tvSrv.searInterAdd err(%v)", err)
c.JSON(nil, err)
return
}
if count >= 20 {
c.JSON("热词数最多只能添加20条数据", ecode.RequestErr)
return
}
if searchword == "" {
c.JSON("searchword can not null", ecode.RequestErr)
return
}
exist := &model.SearInter{}
if err = tvSrv.DB.Where("searchword=?", searchword).Where("deleted!=?", _isDeleted).First(exist).Error; err != nil && err != ecode.NothingFound {
log.Error("tvSrv.searInterAdd error(%v)", err)
c.JSON("查找搜索词Mysql报错", ecode.RequestErr)
return
}
if exist.ID != 0 {
log.Error("searchword is existed, error(%v)", err)
c.JSON("搜索词已经存在", ecode.RequestErr)
return
}
if item, err = tvSrv.GetMaxRank(c); err != nil && err != ecode.NothingFound {
log.Error("tvSrv.searInterAdd GetMaxRank error(%v)", err)
c.JSON("查找最大的排序报错", ecode.RequestErr)
return
}
//default rank is last
rank := item.Rank + 1
searchInter := &model.SearInter{
Searchword: searchword,
Rank: rank,
}
if err = tvSrv.AddSearInter(c, searchInter); err != nil {
log.Error("tvSrv.searInterAdd error(%v)", err)
c.JSON("添加搜索词报错", ecode.RequestErr)
return
}
//get publish state
if pubs, err = tvSrv.GetPublishState(c); err != nil {
if err == memcache.ErrNotFound {
nowTime := time.Now()
t := nowTime.Format("2006-01-02 15:04:05")
pubs = &model.PublishStatus{
Time: t,
State: 0,
}
} else {
log.Error("tvSrv.searInterList GetHotPubState error(%v)", err)
c.JSON("MC获取发布状态报错", ecode.RequestErr)
return
}
}
//set publish state
s := &model.PublishStatus{
Time: pubs.Time,
State: 0,
}
if err = tvSrv.SetPublishState(c, s); err != nil {
log.Error("tvSrv.SetPubStat error(%v)", err)
c.JSON("设置发布状态到MC中报错", ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func searInterEdit(c *bm.Context) {
var (
req = c.Request.PostForm
id = parseInt(req.Get("id"))
searchword = req.Get("searchword")
err error
pubs *model.PublishStatus
)
if req.Get("id") == "" {
c.JSON("id can no null", ecode.RequestErr)
return
}
if req.Get("searchword") == "" {
c.JSON("searchword can no null", ecode.RequestErr)
return
}
exist := &model.SearInter{}
if err = tvSrv.DB.Where("id=?", id).Where("deleted!=?", _isDeleted).First(exist).Error; err != nil {
log.Error("tvSrv.searInterEdit error(%v)", err)
c.JSON("can not find value", err)
return
}
exist = &model.SearInter{}
if err = tvSrv.DB.Where("searchword=?", searchword).Where("deleted!=?", _isDeleted).First(exist).Error; err != nil && err != ecode.NothingFound {
log.Error("tvSrv.searInterEdit error(%v)", err)
c.JSON(err, ecode.RequestErr)
return
}
if exist.ID != 0 && exist.ID != id {
c.JSON("searchword existed", nil)
return
}
if err = tvSrv.UpdateSearInter(c, id, searchword); err != nil {
log.Error("tvSrv.searInterEdit err(%v)", err)
c.JSON(nil, err)
return
}
//get publish state
if pubs, err = tvSrv.GetPublishState(c); err != nil {
log.Error("tvSrv.searInterEdit GetHotPubState error(%v)", err)
c.JSON(nil, err)
return
}
//set publish state
s := &model.PublishStatus{
Time: pubs.Time,
State: 0,
}
if err = tvSrv.SetPublishState(c, s); err != nil {
log.Error("tvSrv.searInterEdit SetPubStat error(%v)", err)
c.JSON(err, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func searInterDel(c *bm.Context) {
var (
req = c.Request.PostForm
id = parseInt(req.Get("id"))
err error
pubs *model.PublishStatus
)
if req.Get("id") == "" {
c.JSON("id can not null", err)
return
}
exist := &model.SearInter{}
if err = tvSrv.DB.Where("id=?", id).Where("deleted!=?", _isDeleted).First(exist).Error; err != nil {
c.JSON("can not find value", err)
return
}
if err = tvSrv.DelSearInter(c, id); err != nil {
log.Error("tvSrv.searInterDel err(%v)", err)
c.JSON(nil, err)
return
}
//get publish state
if pubs, err = tvSrv.GetPublishState(c); err != nil {
log.Error("tvSrv.searInterDel GetHotPubState error(%v)", err)
c.JSON(nil, err)
return
}
//set publish state
s := &model.PublishStatus{
Time: pubs.Time,
State: 0,
}
if err = tvSrv.SetPublishState(c, s); err != nil {
log.Error("tvSrv.searInterDel error(%v)", err)
c.JSON(err, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func searInterRank(c *bm.Context) {
var (
req = c.Request.PostForm
ids = req.Get("ids")
err error
pubs *model.PublishStatus
total int
)
if ids == "" {
c.JSON("不能发布空数据", ecode.RequestErr)
return
}
idsArr := strings.Split(ids, ",")
if len(idsArr) <= 0 {
c.JSON("不能发布空数据", ecode.RequestErr)
return
}
if total, err = tvSrv.GetSearInterCount(c); err != nil {
log.Error("tvSrv.GetSearInterCount err ", err)
c.JSON("更新排序失败,GetSearInterCount error ", err)
return
}
if len((idsArr)) != total {
c.JSON("请提交全部数据", ecode.RequestErr)
return
}
if err = tvSrv.RankSearInter(c, idsArr); err != nil {
log.Error("tvSrv.searInterRank err(%v),idsArr(%v)", err, idsArr)
c.JSON("更新排序失败, RankSearIntererror error ", err)
return
}
//get publish state
if pubs, err = tvSrv.GetPublishState(c); err != nil {
log.Error("tvSrv.searInterDel GetHotPubState error(%v)", err)
c.JSON(nil, err)
return
}
//set publish state
s := &model.PublishStatus{
Time: pubs.Time,
State: 0,
}
if err = tvSrv.SetPublishState(c, s); err != nil {
log.Error("tvSrv.searInterDel error(%v)", err)
c.JSON(err, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func searInterPublish(c *bm.Context) {
var (
items []*model.SearInter
err error
)
if items, err = tvSrv.GetSearInterPublish(c); err != nil {
log.Error("tvSrv.searInterPublish GetSearInterPublish error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
if len(items) == 0 {
c.JSON("不能发布空数据", ecode.RequestErr)
return
}
var rank []*model.OutSearchInter
for _, v := range items {
out := &model.OutSearchInter{
Keyword: v.Searchword,
Status: v.Tag,
}
rank = append(rank, out)
}
if err = tvSrv.SetSearInterRank(c, rank); err != nil {
log.Error("tvSrv.searInterPublish SearInterRank error(%v)", err)
c.JSON(nil, err)
return
}
t := time.Now().Format("2006-01-02 15:04:05")
s := &model.PublishStatus{
Time: t,
State: 1,
}
if err = tvSrv.SetPublishState(c, s); err != nil {
log.Error("tvSrv.searInterPublish SetPubStat error(%v)", err)
c.JSON(err, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func searInterPubList(c *bm.Context) {
var (
items []*model.OutSearchInter
err error
)
if items, err = tvSrv.GetSearInterRank(c); err != nil {
log.Error("tvSrv.searInterListOut error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(items, nil)
}

View File

@@ -0,0 +1,191 @@
package http
import (
"strings"
"go-common/app/admin/main/tv/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"github.com/jinzhu/gorm"
)
func seasonList(c *bm.Context) {
var (
req = c.Request.Form
err error
items []*model.SeaRepoDB
count int64
order = atoi(req.Get("order"))
page = atoi(req.Get("page"))
size = 20
)
if page == 0 {
page = 1
}
db := seasonWhere(c)
db.Model(&model.SeaRepoDB{}).Count(&count)
if order == 1 {
db = db.Order("mtime ASC")
} else {
db = db.Order("mtime DESC")
}
if err = db.Model(&model.SeaRepoDB{}).Offset((page - 1) * size).Limit(size).Find(&items).Error; err != nil {
log.Error("%v\n", err)
c.JSON(nil, err)
return
}
pager := &model.SeasonRepoPager{
TotalCount: count,
Pn: page,
Ps: size,
}
for _, v := range items {
pager.Items = append(pager.Items, v.ToList())
}
c.JSON(pager, nil)
}
func seasonInfo(c *bm.Context) {
var (
req = c.Request.Form
sid = parseInt(req.Get("id"))
err error
)
exist := model.TVEpSeason{}
if err = tvSrv.DB.Where("id=?", sid).Where("is_deleted=?", 0).First(&exist).Error; err != nil {
c.JSON(nil, err)
return
}
c.JSON(exist, nil)
}
func saveSeason(c *bm.Context) {
var (
req = c.Request.PostForm
sid = parseInt(req.Get("id"))
err error
)
exist := model.TVEpSeason{}
if err = tvSrv.DB.Where("id=?", sid).Where("is_deleted=?", 0).First(&exist).Error; err != nil {
c.JSON(nil, err)
return
}
title := req.Get("title")
desc := req.Get("desc")
staff := req.Get("staff")
cover := req.Get("cover")
if title == "" {
renderErrMsg(c, ecode.RequestErr.Code(), "标题不能为空")
return
}
if desc == "" {
renderErrMsg(c, ecode.RequestErr.Code(), "简介不能为空")
return
}
if staff == "" {
renderErrMsg(c, ecode.RequestErr.Code(), "staff不能为空")
return
}
if cover == "" {
renderErrMsg(c, ecode.RequestErr.Code(), "封面不能为空")
return
}
if err := tvSrv.DB.Model(&model.TVEpSeason{}).Where("id = ?", sid).Update(map[string]string{"title": title, "desc": desc, "staff": staff, "cover": cover}).Error; err != nil {
log.Error("tvSrv.saveSeason error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func seasonOptions(id string, valid int) (ret bool) {
var (
sid = parseInt(id)
exist = model.TVEpSeason{}
)
ret = false
if err := tvSrv.DB.Where("id=?", sid).Where("is_deleted=?", 0).First(&exist).Error; err != nil {
log.Error("tvSrv.seasonOptions error(%v)", err)
return
}
if err := tvSrv.DB.Model(&model.TVEpSeason{}).Where("id=?", sid).Update(map[string]int{"valid": valid}).Error; err != nil {
log.Error("tvSrv.seasonOptions error(%v)", err)
return
}
return true
}
func seasonOnline(c *bm.Context) {
var (
req = c.Request.PostForm
ids = req.Get("ids")
)
idList := strings.Split(ids, ",")
if len(idList) == 0 {
renderErrMsg(c, ecode.RequestErr.Code(), _errIDNotFound)
return
}
for _, val := range idList {
if !seasonOptions(val, 1) {
renderErrMsg(c, ecode.RequestErr.Code(), "Online("+val+") fail")
return
}
}
c.JSON(nil, nil)
}
func seasonHidden(c *bm.Context) {
var (
req = c.Request.PostForm
ids = req.Get("ids")
)
idList := strings.Split(ids, ",")
if len(idList) == 0 {
renderErrMsg(c, ecode.RequestErr.Code(), _errIDNotFound)
return
}
for _, val := range idList {
if !seasonOptions(val, 0) {
renderErrMsg(c, ecode.RequestErr.Code(), "Hidden("+val+") fail")
return
}
}
c.JSON(nil, nil)
}
func seasonWhere(c *bm.Context) *gorm.DB {
var (
req = c.Request.Form
sid = atoi(req.Get("sid"))
cat = atoi(req.Get("category"))
validStr = req.Get("valid")
title = req.Get("title")
)
db := tvSrv.DB.Select("*").
Where("`check`=?", 1).
Where("is_deleted=?", 0)
if title != "" {
db = db.Where("title LIKE ?", "%"+title+"%")
}
if sid != 0 {
db = db.Where("id=?", sid)
}
if cat != 0 {
db = db.Where("category=?", cat)
}
if validStr == "" {
return db
}
if valid := atoi(validStr); valid == 0 {
db = db.Where("valid=?", 0)
} else if valid == 1 {
db = db.Where("valid=?", 1)
}
return db
}

View File

@@ -0,0 +1,45 @@
package http
import (
"io/ioutil"
"net/http"
"time"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
const maxSize = 1024 * 1024 * 20
func upbfs(c *bm.Context) {
var req = c.Request
// read the file
req.ParseMultipartForm(maxSize)
log.Info("Request Info: %v, %v, %v", req.PostForm, req.Form, req.MultipartForm)
file, _, err := req.FormFile("file")
if err != nil {
renderErrMsg(c, ecode.RequestErr.Code(), "文件为空")
return
}
defer file.Close()
content, err := ioutil.ReadAll(file)
if err != nil {
log.Error("resource uploadFile.ReadAll error(%v)", err)
return
}
// parse file, get type, size
ftype := http.DetectContentType(content)
if ftype != "image/jpeg" && ftype != "image/png" && ftype != "image/webp" && ftype != "image/gif" {
log.Error("filetype not allow file type(%s)", ftype)
renderErrMsg(c, ecode.RequestErr.Code(), "检查文件类型,需为图片")
return
}
fsize := len(content)
if fsize > maxSize {
renderErrMsg(c, ecode.RequestErr.Code(), "文件过大不支持超过20M的文件")
return
}
// upload file to BFS
c.JSON(tvSrv.Upload(c, "", ftype, time.Now().Unix(), content))
}

View File

@@ -0,0 +1,88 @@
package http
import (
"go-common/app/admin/main/tv/model"
bm "go-common/library/net/http/blademaster"
)
func upAdd(c *bm.Context) {
var (
err error
)
v := new(struct {
MIDs []int64 `form:"mids,split" validate:"required,min=1,dive,gt=0"`
})
if err = c.Bind(v); err != nil {
return
}
c.JSON(tvSrv.AddMids(v.MIDs))
}
func upImport(c *bm.Context) {
var (
err error
)
v := new(struct {
MIDs []int64 `form:"mids,split" validate:"required,min=1,dive,gt=0"`
})
if err = c.Bind(v); err != nil {
return
}
c.JSON(tvSrv.ImportMids(v.MIDs))
}
func upDel(c *bm.Context) {
var (
err error
)
v := new(struct {
MID int64 `form:"mid" validate:"required,min=1"`
})
if err = c.Bind(v); err != nil {
return
}
c.JSON(nil, tvSrv.DelMid(v.MID))
}
func upList(c *bm.Context) {
v := new(struct {
Order int `form:"order" validate:"required,min=1,max=4"`
Pn int `form:"pn"`
Name string `form:"name"`
ID int `form:"id"`
})
if err := c.Bind(v); err != nil {
return
}
if v.Pn == 0 {
v.Pn = 1
}
c.JSON(tvSrv.UpList(v.Order, v.Pn, v.Name, v.ID))
}
func upcmsList(c *bm.Context) {
v := new(model.ReqUpCms)
if err := c.Bind(v); err != nil {
return
}
c.JSON(tvSrv.CmsList(c, v))
}
func upcmsAudit(c *bm.Context) {
v := new(struct {
Action string `form:"action"`
MIDs []int64 `form:"mids,split" validate:"required,min=1,dive,gt=0"`
})
if err := c.Bind(v); err != nil {
return
}
c.JSON(tvSrv.CmsAudit(c, v.MIDs, v.Action))
}
func upcmsEdit(c *bm.Context) {
v := new(model.ReqUpEdit)
if err := c.Bind(v); err != nil {
return
}
c.JSON(nil, tvSrv.CmsEdit(c, v))
}

View File

@@ -0,0 +1,16 @@
package http
import (
bm "go-common/library/net/http/blademaster"
)
func userInfo(c *bm.Context) {
arg := new(struct {
MID int64 `form:"mid" validate:"required"`
})
if err := c.Bind(arg); err != nil {
return
}
c.JSON(tvSrv.UserInfo(c, arg.MID))
}

View File

@@ -0,0 +1,161 @@
package http
import (
"go-common/app/admin/main/tv/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/time"
)
const (
_platform = 12
_isDeleted = 1
)
func versionList(c *bm.Context) {
var (
req = c.Request.Form
err error
items []*model.Version
count int64
ver = req.Get("ver")
page = atoi(req.Get("page"))
size = 20
)
if page == 0 {
page = 1
}
db := tvSrv.DBShow.Where("plat=?", _platform).Where("state!=?", _isDeleted)
if ver != "" {
db = db.Where("version=?", ver)
}
db.Model(&model.Version{}).Count(&count)
if err = db.Model(&model.Version{}).Offset((page - 1) * size).Limit(size).Find(&items).Error; err != nil {
log.Error("%v\n", err)
c.JSON(nil, err)
return
}
pager := &model.VersionPager{
TotalCount: count,
Pn: page,
Ps: size,
Items: items,
}
c.JSON(pager, nil)
}
func versionInfo(c *bm.Context) {
var (
req = c.Request.Form
vid = parseInt(req.Get("id"))
err error
)
exist := model.Version{}
if err = tvSrv.DBShow.Where("id=?", vid).Where("state!=?", _isDeleted).First(&exist).Error; err != nil {
c.JSON(nil, err)
return
}
c.JSON(exist, nil)
}
func saveVersion(c *bm.Context) {
var (
req = c.Request.PostForm
vid = parseInt(req.Get("id"))
err error
)
exist := model.Version{}
if err = tvSrv.DBShow.Where("id=?", vid).Where("state!=?", _isDeleted).First(&exist).Error; err != nil {
c.JSON(nil, err)
return
}
alert, simple := validateVerPostData(c)
if alert != "" {
renderErrMsg(c, ecode.RequestErr.Code(), alert)
return
}
if err := tvSrv.DBShow.Model(&model.Version{}).Where("id=?", vid).Update(simple).Error; err != nil {
log.Error("tvSrv.saveVersion error(%v)", err)
c.JSON(nil, err)
return
}
if err := tvSrv.DBShow.Model(&model.Version{}).Where("id=?", vid).Update(map[string]int8{"state": simple.State}).Error; err != nil {
log.Error("tvSrv.saveVersion error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func addVersion(c *bm.Context) {
var (
err error
)
alert, simple := validateVerPostData(c)
if alert != "" {
renderErrMsg(c, ecode.RequestErr.Code(), alert)
return
}
if err = tvSrv.DBShow.Create(simple).Error; err != nil {
log.Error("tvSrv.addVersion error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func versionDel(c *bm.Context) {
var (
req = c.Request.PostForm
vid = parseInt(req.Get("id"))
err error
)
exist := model.Version{}
if err = tvSrv.DBShow.Where("id=?", vid).Where("state!=?", _isDeleted).First(&exist).Error; err != nil {
c.JSON(nil, err)
return
}
if err := tvSrv.DBShow.Model(&model.Version{}).Where("id=?", vid).Update(map[string]int{"state": _isDeleted}).Error; err != nil {
log.Error("tvSrv.versionDel error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func validateVerPostData(c *bm.Context) (alert string, simple *model.Version) {
var (
req = c.Request.PostForm
plat = atoi(req.Get("plat"))
version = req.Get("version")
build = atoi(req.Get("build"))
ptime = time.Time(parseInt(req.Get("ptime")))
state = atoi(req.Get("state"))
desc = req.Get("description")
)
if plat == 0 {
alert = "平台不能为空"
return
}
if version == "" {
alert = "版本号不能为空"
return
}
if build == 0 {
alert = "build号不能为空"
return
}
if int64(ptime) == 0 {
alert = "发布时间不能为空"
return
}
if desc == "" {
alert = "描述不能为空"
return
}
return "", &model.Version{Plat: int8(plat), Description: desc, Version: version, Build: build, State: int8(state), Ptime: ptime}
}

View File

@@ -0,0 +1,275 @@
package http
import (
"fmt"
"net/url"
"go-common/app/admin/main/tv/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
const (
_isVerDeleted = 2
)
func verUpdateList(c *bm.Context) {
var (
req = c.Request.Form
err error
items []*model.VersionUpdate
limit []*model.VersionUpdateLimit
rets []*model.VersionUpdateDetail
count int64
vid = atoi(req.Get("vid"))
page = atoi(req.Get("page"))
size = 20
)
if page == 0 {
page = 1
}
db := tvSrv.DBShow.Where("vid=?", vid).Where("state!=?", _isVerDeleted)
db.Model(&model.VersionUpdate{}).Count(&count)
if err = db.Model(&model.VersionUpdate{}).Offset((page - 1) * size).Limit(size).Find(&items).Error; err != nil {
log.Error("%v\n", err)
c.JSON(nil, err)
return
}
for _, val := range items {
if err = tvSrv.DBShow.Model(&model.VersionUpdateLimit{}).Where("up_id=?", val.ID).Find(&limit).Error; err != nil {
log.Error("%v\n", err)
c.JSON(nil, err)
return
}
rets = append(rets, &model.VersionUpdateDetail{VersionUpdate: val, VerLimit: limit})
}
version := model.Version{}
if err = tvSrv.DBShow.Where("id=?", vid).Where("state!=?", _isDeleted).First(&version).Error; err != nil {
log.Error("version info not exists-(%v)\n", err)
c.JSON(nil, err)
return
}
lists := map[string]interface{}{
"verUpdate": rets,
"version": version,
}
pager := &model.VersionUpdatePager{
TotalCount: count,
Pn: page,
Ps: size,
Items: lists,
}
c.JSON(pager, nil)
}
func saveVerUpdate(c *bm.Context) {
var (
req = c.Request.PostForm
id = parseInt(req.Get("id"))
err error
)
exist := model.VersionUpdate{}
if err = tvSrv.DBShow.Where("id=?", id).Where("state!=?", _isVerDeleted).First(&exist).Error; err != nil {
c.JSON(nil, err)
return
}
alert, simple := validateVerUpdatePostData(c)
if alert != "" {
renderErrMsg(c, ecode.RequestErr.Code(), alert)
return
}
if err = tvSrv.DBShow.Model(&model.VersionUpdate{}).Where("id = ?", id).Update(simple).Error; err != nil {
log.Error("tvSrv.saveVerUpdate error(%v)", err)
c.JSON(nil, err)
return
}
if err = tvSrv.DBShow.Model(&model.VersionUpdate{}).Where("id = ?", id).Update(map[string]int8{"is_push": simple.IsPush, "is_force": simple.IsForce}).Error; err != nil {
log.Error("tvSrv.saveVerUpdate error(%v)", err)
c.JSON(nil, err)
return
}
if err = tvSrv.DBShow.Model(&model.VersionUpdateLimit{}).Where("up_id=?", id).Delete(&model.VersionUpdateLimit{}).Error; err != nil {
log.Error("tvSrv.DeleteVerUpdateLimit error(%v)\n", err)
return
}
log.Info("saveVerUpdate exist.ID = %d", exist.ID)
if exist.ID > 0 {
addVerUpdateLimit(req, exist.ID)
}
c.JSON(nil, nil)
}
func addVerUpdate(c *bm.Context) {
var (
req = c.Request.PostForm
err error
)
alert, simple := validateVerUpdatePostData(c)
if alert != "" {
renderErrMsg(c, ecode.RequestErr.Code(), alert)
return
}
db := tvSrv.DBShow.Create(simple)
if err = db.Error; err != nil {
log.Error("tvSrv.addVerUpdate error(%v)", err)
c.JSON(nil, err)
return
}
insertID := (db.Value.(*model.VersionUpdate)).ID
if insertID > 0 {
addVerUpdateLimit(req, insertID)
}
c.JSON(nil, nil)
}
func addVerUpdateLimit(req url.Values, upid int64) (err error) {
var (
condi = req["condi[]"]
value = req["value[]"]
)
if len(condi) > 0 {
for key, val := range condi {
li := &model.VersionUpdateLimit{UPID: int32(upid)}
if key < len(condi) {
li.Condi = val
}
if key < len(value) {
li.Value = atoi(value[key])
}
if err = tvSrv.DBShow.Create(li).Error; err != nil {
log.Error("tvSrv.addVerUpdateLimit error(%v)", err)
break
}
}
}
return
}
func verUpdateEnable(c *bm.Context) {
var (
req = c.Request.PostForm
id = parseInt(req.Get("id"))
state = atoi(req.Get("state"))
err error
)
exist := model.VersionUpdate{}
if err = tvSrv.DBShow.Where("id=?", id).Where("state!=?", _isVerDeleted).First(&exist).Error; err != nil {
c.JSON(nil, err)
return
}
if err := tvSrv.DBShow.Model(&model.VersionUpdate{}).Where("id = ?", id).Update(map[string]int{"state": state}).Error; err != nil {
log.Error("tvSrv.verUpdateEnable error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func fullPackageImport(c *bm.Context) {
var (
req = c.Request.Form
vid = atoi(req.Get("vid"))
build = atoi(req.Get("build"))
err error
)
result, err := tvSrv.FullImport(c, build)
if err != nil {
log.Error("%v\n", err)
c.JSON(nil, err)
return
}
for _, val := range result {
if !createApk2Version(val, vid) {
renderErrMsg(c, ecode.RequestErr.Code(), fmt.Sprintf("fullPackageImport fail(%v)", val))
return
}
}
c.JSON(nil, nil)
}
func createApk2Version(val *model.APKInfo, vid int) (b bool) {
var (
err error
simple *model.VersionUpdate
limit *model.VersionUpdateLimit
)
b = false
simple = new(model.VersionUpdate)
simple.VID = vid
simple.PolicyName = "指定版本导入更新"
simple.IsForce = 0
simple.IsPush = 0
simple.Channel = "bili"
simple.URL = val.CDNAddr
simple.Size = val.Size
simple.Md5 = val.SignMd5
simple.Sdkint = 0
simple.Model = ""
simple.Policy = 0
simple.Coverage = 100
db := tvSrv.DBShow.Create(simple)
if err = db.Error; err != nil {
log.Error("tvSrv.createApk2Version error(%v)", err)
return
}
insertID := (db.Value.(*model.VersionUpdate)).ID
limit = &model.VersionUpdateLimit{UPID: int32(insertID), Condi: "", Value: 0}
if err = tvSrv.DBShow.Create(limit).Error; err != nil {
log.Error("tvSrv.createAPK2Version error(%v)", err)
return
}
return true
}
func validateVerUpdatePostData(c *bm.Context) (alert string, simple *model.VersionUpdate) {
var (
req = c.Request.PostForm
vid = atoi(req.Get("vid"))
isForce = atoi(req.Get("is_force"))
isPush = atoi(req.Get("is_push"))
channel = req.Get("channel")
url = req.Get("url")
size = atoi(req.Get("size"))
md5 = req.Get("md5")
sdkint = atoi(req.Get("sdkint"))
mod = req.Get("model")
policy = atoi(req.Get("policy"))
coverage = atoi(req.Get("coverage"))
policyName = req.Get("policy_name")
)
alert = string("")
simple = new(model.VersionUpdate)
simple.VID = vid
simple.PolicyName = policyName
simple.IsForce = int8(isForce)
simple.IsPush = int8(isPush)
simple.Channel = channel
simple.URL = url
simple.Size = size
simple.Md5 = md5
simple.Sdkint = sdkint
simple.Model = mod
simple.Policy = int8(policy)
simple.Coverage = int32(coverage)
if simple.Channel == "" {
alert = "渠道不能为空"
return
}
if simple.URL == "" {
alert = "安装包地址不能为空"
return
}
if simple.Size == 0 {
alert = "文件大小不能为0"
return
}
if simple.Md5 == "" {
alert = "文件hash值不能为空"
return
}
return
}

View File

@@ -0,0 +1,120 @@
package http
import (
"go-common/app/admin/main/tv/model"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
// VideoList get ugc video list
func VideoList(c *bm.Context) {
var (
res = map[string]interface{}{}
err error
pager *model.VideoListPager
)
param := new(model.VideoListParam)
if err = c.Bind(param); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if pager, err = tvSrv.VideoList(c, param); err != nil {
res["message"] = "获取数据失败!" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(pager, nil)
}
// VideoOnline online ugc video
func VideoOnline(c *bm.Context) {
var (
err error
res = map[string]interface{}{}
)
param := new(struct {
IDs []int64 `form:"ids,split" validate:"required,min=1,dive,gt=0"`
})
if err = c.Bind(param); err != nil {
return
}
if err := tvSrv.VideoOnline(param.IDs); err != nil {
res["message"] = "更新数据失败!" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON("成功", nil)
}
// VideoHidden hidden ugc video
func VideoHidden(c *bm.Context) {
var (
err error
res = map[string]interface{}{}
)
param := new(struct {
IDs []int64 `form:"ids,split" validate:"required,min=1,dive,gt=0"`
})
if err = c.Bind(param); err != nil {
return
}
if err := tvSrv.VideoHidden(param.IDs); err != nil {
res["message"] = "更新数据失败!" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON("成功", nil)
}
// VideoPreview ugc video preview
func VideoPreview(c *bm.Context) {
var (
playurl string
err error
res = map[string]interface{}{}
)
param := new(struct {
ID int `form:"id" validate:"required"`
})
if err = c.Bind(param); err != nil {
return
}
if playurl, err = tvSrv.UPlayurl(param.ID); err != nil {
res["message"] = "获取playurl失败" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(playurl, nil)
}
// videoUpdate ugc video update
func videoUpdate(c *bm.Context) {
var (
err error
res = map[string]interface{}{}
)
param := new(struct {
ID int `form:"id" validate:"required"`
Title string `form:"title" validate:"required"`
})
if err = c.Bind(param); err != nil {
return
}
if err = tvSrv.VideoUpdate(param.ID, param.Title); err != nil {
res["message"] = "更新失败" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func abnorExport(c *bm.Context) {
buf, fileName := tvSrv.AbnormExport()
c.Writer.Header().Set("Content-Type", "application/csv")
c.Writer.Header().Set("Content-Disposition", fileName)
c.Writer.Write(buf.Bytes())
}
func abnorDebug(c *bm.Context) {
c.JSON(tvSrv.AbnDebug(), nil)
}

View File

@@ -0,0 +1,87 @@
package http
import (
"go-common/app/admin/main/tv/model"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
func waterMarklist(c *bm.Context) {
var (
err error
res = map[string]interface{}{}
pagers *model.WaterMarkListPager
)
param := new(model.WaterMarkListParam)
if err = c.Bind(param); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if pagers, err = tvSrv.WaterMarkist(c, param); err != nil {
res["message"] = "获取数据失败!" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(pagers, nil)
}
func waterMarkAdd(c *bm.Context) {
var (
err error
res = map[string]interface{}{}
addRes *model.AddEpIDResp
)
param := new(struct {
IDs []int64 `form:"ids,split" validate:"required,min=1,dive,gt=0"`
Type string `form:"type" validate:"required"`
})
if err = c.Bind(param); err != nil {
return
}
if param.Type == "seasonid" {
if addRes, err = tvSrv.AddSeasonID(c, param.IDs); err != nil {
res["message"] = "添加数据失败!" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
} else if param.Type == "epid" {
if addRes, err = tvSrv.AddEpID(c, param.IDs); err != nil {
res["message"] = "添加数据失败!" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
}
c.JSON(addRes, nil)
}
func waterMarkDelete(c *bm.Context) {
var (
err error
res = map[string]interface{}{}
)
param := new(struct {
IDs []int64 `form:"ids,split" validate:"required,min=1,dive,gt=0"`
})
if err = c.Bind(param); err != nil {
return
}
if err = tvSrv.DeleteWatermark(param.IDs); err != nil {
res["message"] = "删除数据失败!" + err.Error()
c.JSONMap(res, ecode.RequestErr)
return
}
c.JSON(nil, nil)
}
func transList(c *bm.Context) {
var param = new(model.TransReq)
if err := c.Bind(param); err != nil {
return
}
if data, err := tvSrv.TransList(c, param); err == nil || err == ecode.NothingFound {
c.JSON(data, nil)
} else {
c.JSON(data, err)
}
}