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

339 lines
8.3 KiB
Go

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)
}