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