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,41 @@
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"card_setup.go",
"tab.go",
],
importpath = "go-common/app/admin/main/feed/service/channel",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/admin/main/feed/conf:go_default_library",
"//app/admin/main/feed/dao/account:go_default_library",
"//app/admin/main/feed/dao/archive:go_default_library",
"//app/admin/main/feed/dao/pgc:go_default_library",
"//app/admin/main/feed/dao/show: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/show:go_default_library",
"//app/admin/main/feed/util:go_default_library",
"//library/log: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,229 @@
package channel
import (
"encoding/json"
"fmt"
"strconv"
"go-common/app/admin/main/feed/conf"
accdao "go-common/app/admin/main/feed/dao/account"
arcdao "go-common/app/admin/main/feed/dao/archive"
pgcdao "go-common/app/admin/main/feed/dao/pgc"
showdao "go-common/app/admin/main/feed/dao/show"
cardmodel "go-common/app/admin/main/feed/model/channel"
"go-common/app/admin/main/feed/model/common"
"go-common/app/admin/main/feed/util"
"go-common/library/log"
)
// Service is search service
type Service struct {
showDao *showdao.Dao
pgcDao *pgcdao.Dao
accDao *accdao.Dao
arcDao *arcdao.Dao
}
// New new a search service
func New(c *conf.Config) (s *Service) {
var (
pgc *pgcdao.Dao
err error
)
if pgc, err = pgcdao.New(c); err != nil {
log.Error("pgcdao.New error(%v)", err)
return
}
s = &Service{
showDao: showdao.New(c),
pgcDao: pgc,
accDao: accdao.New(c),
arcDao: arcdao.New(c),
}
return
}
//parseConten parse string type id to int type id
func parseConten(content string) (s string, err error) {
type Content struct {
ID string `json:"id"`
Title string `json:"title"`
}
var contents []Content
if err = json.Unmarshal([]byte(content), &contents); err != nil {
return
}
type ContentTrans struct {
ID int64 `json:"id"`
Title string `json:"title"`
}
var cTrans []ContentTrans
for _, v := range contents {
var s int64
if s, err = strconv.ParseInt(v.ID, 10, 64); err != nil {
return "", err
}
v := ContentTrans{
ID: s,
Title: v.Title,
}
cTrans = append(cTrans, v)
}
var b []byte
if b, err = json.Marshal(cTrans); err != nil {
return "", err
}
return string(b), nil
}
//AddCardSetup card set up
func (s *Service) AddCardSetup(card *cardmodel.AddCardSetup, person string, uid int64) (err error) {
var (
flag bool
e error
)
flag, e = isDup(card.Content)
if e != nil {
return e
}
if flag {
return fmt.Errorf("ID重复")
}
card.Person = person
card.UID = uid
if card.Content, err = parseConten(card.Content); err != nil {
return
}
if err = s.showDao.DB.Model(&cardmodel.AddCardSetup{}).
Create(card).Error; err != nil {
log.Error("chanelSvc.AddCardSetup Create error(%v)", err)
return
}
if card.Type == common.CardPgcsRcmd {
if err = util.AddLog(cardmodel.LogBusPgcsRcmd, person, uid, 0, cardmodel.ActAddCsPgcRcmd, card); err != nil {
log.Error("chanelSvc.UpdateCardSetup AddLog error(%v)", err)
return
}
} else if card.Type == common.CardUpRcmdNew {
if err = util.AddLog(cardmodel.LogBusRcmdNew, person, uid, 0, cardmodel.ActAddCsRcmdNew, card); err != nil {
log.Error("chanelSvc.UpdateCardSetup AddLog error(%v)", err)
return
}
}
return
}
//CardSetupList card set up
func (s *Service) CardSetupList(id int, t string, person string, title string, pn int, ps int) (cPager *cardmodel.SetupPager, err error) {
cPager = &cardmodel.SetupPager{
Page: common.Page{
Num: pn,
Size: ps,
},
}
w := map[string]interface{}{
"deleted": cardmodel.NotDelete,
"type": t,
}
query := s.showDao.DB.Model(&cardmodel.Setup{})
if id != 0 {
w["id"] = id
}
if person != "" {
query = query.Where("person like ?", "%"+person+"%")
}
if title != "" {
if t == "up_rcmd_new" {
query = query.Where("long_title like ?", "%"+title+"%")
} else {
query = query.Where("title like ?", "%"+title+"%")
}
}
if err = query.Where(w).Count(&cPager.Page.Total).Error; err != nil {
log.Error("chanelSvc.CardSetupList Index count error(%v)", err)
return
}
cards := []*cardmodel.Setup{}
if err = query.Where(w).Order("`id` DESC").Offset((pn - 1) * ps).Limit(ps).Find(&cards).Error; err != nil {
log.Error("chanelSvc.CardSetupList First error(%v)", err)
return
}
cPager.Item = cards
return
}
//DelCardSetup card set up
func (s *Service) DelCardSetup(id int, t string, person string, uid int64) (err error) {
dbModel := s.showDao.DB.Model(&cardmodel.Setup{})
dbModel = dbModel.Where("id = ?", id).Where("type = ?", t)
if err = dbModel.Update("deleted", cardmodel.Delete).Error; err != nil {
log.Error("chanelSvc.CardSetupList First error(%v)", err)
return
}
if t == common.CardPgcsRcmd {
if err = util.AddLog(cardmodel.LogBusPgcsRcmd, person, uid, int64(id), cardmodel.ActDelCsPgcRcmd, ""); err != nil {
log.Error("chanelSvc.UpdateCardSetup AddLog error(%v)", err)
return
}
} else if t == common.CardUpRcmdNew {
if err = util.AddLog(cardmodel.LogBusRcmdNew, person, uid, int64(id), cardmodel.ActDelCsRcmdNew, ""); err != nil {
log.Error("chanelSvc.UpdateCardSetup AddLog error(%v)", err)
return
}
}
return
}
func isDup(con string) (flag bool, err error) {
type Content struct {
ID string `json:"id"`
}
value := []Content{}
if err := json.Unmarshal([]byte(con), &value); err != nil {
return false, err
}
s := make(map[string]bool)
for _, v := range value {
if s[v.ID] {
return true, nil
}
s[v.ID] = true
}
return false, nil
}
//UpdateCardSetup card set up
func (s *Service) UpdateCardSetup(id int, card *cardmodel.AddCardSetup, person string, uid int64) (err error) {
var (
flag bool
e error
)
flag, e = isDup(card.Content)
if e != nil {
return e
}
if flag {
return fmt.Errorf("ID重复")
}
if card.Content, err = parseConten(card.Content); err != nil {
return
}
dbModel := s.showDao.DB.Model(&cardmodel.Setup{})
dbModel = dbModel.Where("id = ?", id).Where("type = ?", card.Type)
if err = dbModel.Update(card).Error; err != nil {
log.Error("chanelSvc.CardSetupList First error(%v)", err)
return
}
if card.Type == common.CardPgcsRcmd {
if err = util.AddLog(cardmodel.LogBusPgcsRcmd, person, uid, int64(id), cardmodel.ActUpCsPgcRcmd, card); err != nil {
log.Error("chanelSvc.UpdateCardSetup AddLog error(%v)", err)
return
}
} else if card.Type == common.CardUpRcmdNew {
if err = util.AddLog(cardmodel.LogBusRcmdNew, person, uid, int64(id), cardmodel.ActUpCsRcmdNew, card); err != nil {
log.Error("chanelSvc.UpdateCardSetup AddLog error(%v)", err)
return
}
}
return
}

View File

@@ -0,0 +1,223 @@
package channel
import (
"context"
"fmt"
"time"
"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/log"
)
const (
//TabOnline channel tab online
TabOnline = 1
//TabDownline channel tab down line
TabDownline = 2
//TabWaitOnline channel tab wait to line
TabWaitOnline = 3
//OrderTimeDown channel tab oder by stime desc
OrderTimeDown = 1
//OrderTimeUp channel tab oder by stime asc
OrderTimeUp = 2
//ActionAddCTab log action
ActionAddCTab = "ActAddChannelTab"
//ActionUpCTab log action
ActionUpCTab = "ActUpChannelTab"
//ActionDelCTab log action
ActionDelCTab = "ActDelChannelTab"
//ActionOfflineCTab log action
ActionOfflineCTab = "ActOfflineChannelTab"
)
//TabList channel tab list
func (s *Service) TabList(lp *show.ChannelTabLP) (pager *show.ChannelTabPager, err error) {
var (
eTime int64
sTime int64
)
pager = &show.ChannelTabPager{
Page: common.Page{
Num: lp.Pn,
Size: lp.Ps,
},
}
w := map[string]interface{}{
"is_delete": common.NotDeleted,
}
query := s.showDao.DB.Model(&show.ChannelTab{})
if lp.TagID > 0 {
w["tag_id"] = lp.TagID
}
if lp.TabID > 0 {
w["tab_id"] = lp.TabID
}
if lp.Stime > 0 {
query = query.Where("stime >= ?", lp.Stime)
}
if lp.Etime > 0 {
query = query.Where("etime <= ?", lp.Etime)
}
if lp.Person != "" {
query = query.Where("person like ?", "%"+lp.Person+"%")
}
if lp.Status == TabWaitOnline {
if lp.Stime != 0 {
if lp.Stime < time.Now().Unix() {
sTime = time.Now().Unix()
} else {
sTime = lp.Stime
}
} else {
sTime = time.Now().Unix()
}
query = query.Where("stime >= ?", sTime)
} else if lp.Status == TabOnline {
if lp.Stime != 0 {
if lp.Stime < time.Now().Unix() {
sTime = time.Now().Unix()
} else {
sTime = lp.Stime
}
} else {
sTime = time.Now().Unix()
}
if lp.Etime != 0 {
if lp.Etime > time.Now().Unix() {
eTime = time.Now().Unix()
} else {
eTime = lp.Etime
}
} else {
eTime = time.Now().Unix()
}
query = query.Where("stime < ?", sTime).Where("etime >= ?", eTime)
} else if lp.Status == TabDownline {
if lp.Etime != 0 {
if lp.Etime < time.Now().Unix() {
eTime = lp.Etime
} else {
eTime = time.Now().Unix()
}
} else {
eTime = time.Now().Unix()
}
query = query.Where("etime < ?", eTime)
}
if lp.Order == OrderTimeDown {
query = query.Order("`stime` ASC")
} else if lp.Order == OrderTimeUp {
query = query.Order("`stime` DESC")
}
if err = query.Where(w).Count(&pager.Page.Total).Error; err != nil {
log.Error("chanelSvc.CardSetupList Index count error(%v)", err)
return
}
tabs := []*show.ChannelTab{}
if err = query.Where(w).Order("`id` DESC").Offset((lp.Pn - 1) * lp.Ps).Limit(lp.Ps).Find(&tabs).Error; err != nil {
log.Error("chanelSvc.CardSetupList First error(%v)", err)
return
}
for k, v := range tabs {
//online for fe
if time.Now().Unix() < v.Stime {
tabs[k].Status = TabWaitOnline
} else if time.Now().Unix() >= v.Etime {
tabs[k].Status = TabDownline
} else {
tabs[k].Status = TabOnline
}
}
pager.Item = tabs
return
}
//AddTab add channel tab
func (s *Service) AddTab(c context.Context, param *show.ChannelTabAP, name string, uid int64) (err error) {
if err = s.IsValid(0, param.TagID, param.Stime, param.Etime, param.Priority); err != nil {
return
}
if err = s.showDao.ChannelTabAdd(param); err != nil {
return
}
if err = util.AddLogs(common.LogChannelTab, name, uid, 0, ActionAddCTab, param); err != nil {
log.Error("chanelSvc.AddTab AddLog error(%v)", err)
return
}
return
}
//IsValid validate data
func (s *Service) IsValid(id, tagID, sTime int64, eTime int64, priority int) (err error) {
var (
count int
)
if sTime > eTime {
err = fmt.Errorf("开始时间不能大于结束时间")
return
}
if sTime < time.Now().Unix() {
err = fmt.Errorf("生效时间需要大于当前时间")
return
}
if count, err = s.showDao.ChannelTabValid(id, tagID, sTime, eTime, priority); err != nil {
return
}
if count > 0 {
err = fmt.Errorf("已有该排序无法创建,请重新选择")
return
}
if count, err = s.showDao.ChannelTabValid(id, tagID, sTime, eTime, 0); err != nil {
return
}
if count >= 3 {
stimeStr := time.Unix(sTime, 0).Format("2006-01-02 15:04:05")
etimeStr := time.Unix(eTime, 0).Format("2006-01-02 15:04:05")
str := "频道在" + stimeStr + " 至 " + etimeStr + " 时间段内已有3个运营tab无法创建"
err = fmt.Errorf(str)
return
}
return
}
//UpdateTab update channel tab
func (s *Service) UpdateTab(c context.Context, param *show.ChannelTabUP, name string, uid int64) (err error) {
if err = s.IsValid(param.ID, param.TagID, param.Stime, param.Etime, param.Priority); err != nil {
return
}
if err = s.showDao.ChannelTabUpdate(param); err != nil {
return
}
if err = util.AddLogs(common.LogChannelTab, name, uid, 0, ActionUpCTab, param); err != nil {
log.Error("chanelSvc.UpdateTab AddLog error(%v)", err)
return
}
return
}
//DeleteTab delete channel tab
func (s *Service) DeleteTab(id int64, name string, uid int64) (err error) {
if err = s.showDao.ChannelTabDelete(id); err != nil {
return
}
if err = util.AddLogs(common.LogChannelTab, name, uid, id, ActionDelCTab, id); err != nil {
log.Error("chanelSvc.DeleteTab AddLog error(%v)", err)
return
}
return
}
//OfflineTab offline channel tab
func (s *Service) OfflineTab(id int64, name string, uid int64) (err error) {
if err = s.showDao.ChannelTabOffline(id); err != nil {
return
}
if err = util.AddLogs(common.LogChannelTab, name, uid, id, ActionOfflineCTab, id); err != nil {
log.Error("chanelSvc.DeleteTab AddLog error(%v)", err)
return
}
return
}