123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307 |
- package service
- import (
- "context"
- "time"
- "go-common/app/admin/main/activity/model"
- articlemodel "go-common/app/interface/openplatform/article/model"
- "go-common/library/log"
- "go-common/library/net/metadata"
- "github.com/jinzhu/gorm"
- )
- // GetArticleMetas from rpc .
- func (s *Service) GetArticleMetas(c context.Context, aids []int64) (res map[int64]*articlemodel.Meta, err error) {
- if res, err = s.artRPC.ArticleMetas(c, &articlemodel.ArgAids{Aids: aids}); err != nil {
- log.Error("s.ArticleMetas(%v) error(%v)", aids, err)
- }
- return
- }
- // SubjectList get subject list .
- func (s *Service) SubjectList(c context.Context, listParams *model.ListSub) (listRes *model.SubListRes, err error) {
- var (
- count int64
- list []*model.ActSubject
- )
- db := s.DB
- if listParams.Keyword != "" {
- names := listParams.Keyword + "%"
- db = db.Where("`id` = ? or `name` like ? or `author` like ?", listParams.Keyword, names, names)
- }
- if listParams.Sctime != 0 {
- parseScime := time.Unix(listParams.Sctime, 0)
- db = db.Where("ctime >= ?", parseScime.Format("2006-01-02 15:04:05"))
- }
- if listParams.Ectime != 0 {
- parseEcime := time.Unix(listParams.Ectime, 0)
- db = db.Where("etime <= ?", parseEcime.Format("2006-01-02 15:04:05"))
- }
- if len(listParams.States) > 0 {
- db = db.Where("state in (?)", listParams.States)
- }
- if len(listParams.Types) > 0 {
- db = db.Where("type in (?)", listParams.Types)
- }
- if err = db.Offset((listParams.Page - 1) * listParams.PageSize).Limit(listParams.PageSize).Order("id desc").Find(&list).Error; err != nil && err != gorm.ErrRecordNotFound {
- log.Error(" db.Model(&model.ActSubject{}).Find() args(%v) error(%v)", listParams, err)
- return
- }
- if err = db.Model(&model.ActSubject{}).Count(&count).Error; err != nil {
- log.Error("db.Model(&model.ActSubject{}).Count() args(%v) error(%v)", listParams, err)
- return
- }
- listRes = &model.SubListRes{
- List: list,
- Page: &model.PageRes{
- Num: listParams.Page,
- Size: listParams.PageSize,
- Total: count,
- },
- }
- return
- }
- // VideoList .
- func (s *Service) VideoList(c context.Context) (res []*model.ActSubjectResult, err error) {
- var (
- types = []int{1, 4}
- list []*model.ActSubject
- likeList []*model.Like
- )
- db := s.DB
- if err = db.Where("state = ?", 1).Where("type in (?)", types).Find(&list).Error; err != nil && err != gorm.ErrRecordNotFound {
- log.Error("db.Model(&model.ActSubject{}).Where(state = ?, 1).Where(type in (?), %v).Find() error(%v)", types, err)
- return
- }
- listCount := len(list)
- if listCount == 0 {
- return
- }
- sids := make([]int64, 0, listCount)
- for _, value := range list {
- sids = append(sids, value.ID)
- }
- if err = db.Where("sid in (?)", sids).Where("wid > ?", 0).Find(&likeList).Error; err != nil && err != gorm.ErrRecordNotFound {
- log.Error("db.Model(&model.Like{}).Where(sid in (?), %v).Find() error(%v)", sids, err)
- return
- }
- hashList := make(map[int64][]int64)
- for _, value := range likeList {
- hashList[value.Sid] = append(hashList[value.Sid], value.Wid)
- }
- res = make([]*model.ActSubjectResult, 0, len(list))
- for _, value := range list {
- rs := &model.ActSubjectResult{
- ActSubject: value,
- }
- if v, ok := hashList[value.ID]; ok {
- rs.Aids = v
- }
- res = append(res, rs)
- }
- return
- }
- // AddActSubject .
- func (s *Service) AddActSubject(c context.Context, params *model.AddList) (res int64, err error) {
- if params.ScreenSet != 2 {
- params.ScreenSet = 1
- }
- protect := &model.ActSubjectProtocol{
- Protocol: params.Protocol,
- Types: params.Types,
- Pubtime: params.Pubtime,
- Deltime: params.Deltime,
- Editime: params.Editime,
- Tags: params.Tags,
- Hot: params.Hot,
- BgmID: params.BgmID,
- Oids: params.Oids,
- ScreenSet: params.ScreenSet,
- PasterID: params.PasterID,
- }
- actTime := &model.ActTimeConfig{
- Interval: params.Interval,
- Tlimit: params.Tlimit,
- Ltime: params.Ltime,
- }
- if params.Tags != "" {
- if err = s.dao.AddTags(c, params.Tags, metadata.String(c, metadata.RemoteIP)); err != nil {
- log.Error("s.AddTags(%s,) error(%v)", params.Tags, err)
- return
- }
- }
- actSub := &model.ActSubject{
- Oid: params.ActSubject.Oid,
- Type: params.ActSubject.Type,
- State: params.ActSubject.State,
- Level: params.ActSubject.Level,
- Flag: params.ActSubject.Flag,
- Rank: params.ActSubject.Rank,
- Stime: params.ActSubject.Stime,
- Etime: params.ActSubject.Etime,
- Lstime: params.ActSubject.Lstime,
- Letime: params.ActSubject.Letime,
- Uetime: params.ActSubject.Uetime,
- Ustime: params.ActSubject.Ustime,
- Name: params.ActSubject.Name,
- Author: params.ActSubject.Author,
- ActURL: params.ActSubject.ActURL,
- Cover: params.ActSubject.Cover,
- Dic: params.ActSubject.Dic,
- H5Cover: params.ActSubject.H5Cover,
- LikeLimit: params.ActSubject.LikeLimit,
- AndroidURL: params.ActSubject.AndroidURL,
- IosURL: params.ActSubject.IosURL,
- }
- if err = s.DB.Create(actSub).Error; err != nil {
- log.Error("s.DB.Create(%v) error(%v)", actSub, err)
- return
- }
- protect.Sid = actSub.ID
- if err = s.DB.Create(protect).Error; err != nil {
- log.Error("s.DB.Create(%v) error(%v)", protect, err)
- return
- }
- if params.Type == model.ONLINEVOTE {
- actTime.Sid = actSub.ID
- if err = s.DB.Create(actTime).Error; err != nil {
- log.Error("s.DB.Create(%v) error(%v)", actTime, err)
- return
- }
- }
- res = actSub.ID
- return
- }
- // UpActSubject .
- func (s *Service) UpActSubject(c context.Context, params *model.AddList, sid int64) (res int64, err error) {
- if params.ScreenSet != 2 {
- params.ScreenSet = 1
- }
- onlineData := &model.ActTimeConfig{
- Interval: params.Interval,
- Tlimit: params.Tlimit,
- Ltime: params.Ltime,
- }
- actSubject := new(model.ActSubject)
- if err = s.DB.Where("id = ?", sid).Last(actSubject).Error; err != nil {
- log.Error("s.DB.Where(id = ?, %d).Last(%v) error(%v)", sid, actSubject, err)
- return
- }
- data := map[string]interface{}{
- "Oid": params.Oid,
- "Type": params.Type,
- "State": params.State,
- "Level": params.Level,
- "Flag": params.Flag,
- "Rank": params.Rank,
- "Stime": params.Stime,
- "Etime": params.Etime,
- "Lstime": params.Lstime,
- "Uetime": params.Uetime,
- "Ustime": params.Ustime,
- "Name": params.Name,
- "Author": params.Author,
- "ActURL": params.ActURL,
- "Cover": params.Cover,
- "Dic": params.Dic,
- "H5Cover": params.H5Cover,
- "LikeLimit": params.LikeLimit,
- "AndroidURL": params.AndroidURL,
- "IosURL": params.IosURL,
- }
- if err = s.DB.Model(&model.ActSubject{}).Where("id = ?", sid).Update(data).Error; err != nil {
- log.Error("s.DB.Model(&model.ActSubject{}).Where(id = ?, %d).Update(%v) error(%v)", sid, data, err)
- return
- }
- item := new(model.ActSubjectProtocol)
- if err = s.DB.Where("sid = ? ", sid).Last(item).Error; err != nil && err != gorm.ErrRecordNotFound {
- log.Error("s.DB.Where(sid = ? , %d).Last(%v) error(%v)", sid, item, err)
- return
- }
- //item有值
- if item.ID > 0 {
- if params.Tags != "" {
- if item.Tags != params.Tags {
- if err = s.dao.AddTags(c, params.Tags, metadata.String(c, metadata.RemoteIP)); err != nil {
- log.Error("s.AddTags(%s) error(%v)", params.Tags, err)
- return
- }
- }
- }
- upProtectData := map[string]interface{}{
- "Protocol": params.Protocol,
- "Types": params.Types,
- "Pubtime": params.Pubtime,
- "Deltime": params.Deltime,
- "Editime": params.Editime,
- "Hot": params.Hot,
- "BgmID": params.BgmID,
- "Oids": params.Oids,
- "ScreenSet": params.ScreenSet,
- "PasterID": params.PasterID,
- "Tags": params.Tags,
- }
- if err = s.DB.Model(&model.ActSubjectProtocol{}).Where("id = ?", item.ID).Update(upProtectData).Error; err != nil {
- log.Error("s.DB.Model(&model.ActSubjectProtocol{}).Where(id = ?, %d).Update(%v) error(%v)", item.ID, upProtectData, err)
- return
- }
- } else {
- protectDtata := &model.ActSubjectProtocol{
- Protocol: params.Protocol,
- Types: params.Types,
- Pubtime: params.Pubtime,
- Deltime: params.Deltime,
- Editime: params.Editime,
- Hot: params.Hot,
- BgmID: params.BgmID,
- Oids: params.Oids,
- ScreenSet: params.ScreenSet,
- PasterID: params.PasterID,
- Sid: sid,
- }
- if err = s.DB.Create(protectDtata).Error; err != nil {
- log.Error("s.DB.Create(%v) error(%v)", protectDtata, err)
- return
- }
- }
- if actSubject.Type == model.ONLINEVOTE {
- onlineData.Sid = sid
- output := new(model.ActTimeConfig)
- if err = s.DB.Where("sid = ?", sid).Last(output).Error; err != nil && err != gorm.ErrRecordNotFound {
- log.Error("s.DB.Where(sid = ?, %d).Last(%v) error(%v)", sid, output, err)
- return
- }
- if output.ID > 0 {
- if err = s.DB.Model(&model.ActTimeConfig{}).Where("id = ?", output.ID).Update(onlineData).Error; err != nil {
- log.Error("s.DB.Model(&model.ActTimeConfig{}).Where(id = ?, %d).Update(%v) error(%v)", output.ID, onlineData, err)
- return
- }
- }
- }
- res = sid
- return
- }
- // SubProtocol .
- func (s *Service) SubProtocol(c context.Context, sid int64) (res *model.ActSubjectProtocol, err error) {
- res = &model.ActSubjectProtocol{}
- if err = s.DB.Where("sid = ?", sid).First(res).Error; err != nil && err != gorm.ErrRecordNotFound {
- log.Error("s.DB.Where(sid = %d ) error(%v)", sid, err)
- }
- return
- }
- // TimeConf .
- func (s *Service) TimeConf(c context.Context, sid int64) (res *model.ActTimeConfig, err error) {
- res = new(model.ActTimeConfig)
- if err = s.DB.Where("sid = ?", sid).First(res).Error; err != nil && err != gorm.ErrRecordNotFound {
- log.Error("actSrv.DB.Where(sid = ?, %d) error(%v)", sid, err)
- }
- return
- }
|