You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
218 lines
6.1 KiB
218 lines
6.1 KiB
package popular |
|
|
|
import ( |
|
"context" |
|
"fmt" |
|
|
|
"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" |
|
|
|
"github.com/jinzhu/gorm" |
|
) |
|
|
|
const ( |
|
//ActionAddCPopular . |
|
ActionAddCPopular = "ActAddPopularStars" |
|
//ActionUpCPopular . |
|
ActionUpCPopular = "ActUpPopularStars" |
|
//ActionDelCPopular . |
|
ActionDelCPopular = "ActDelPopularStars" |
|
//ActionRejCPopular . |
|
ActionRejCPopular = "ActRejPopularStars" |
|
//_CardTypeUpRcmdNew 热门新星卡片 |
|
_CardTypeUpRcmdNew = "up_rcmd_new" |
|
//ActionAIAddCPopular . |
|
ActionAIAddCPopular = "ActAIAddPopularStars" |
|
//_CardSourceOperate popular stars build by operate |
|
_CardSourceOperate = 0 |
|
//_CardSourceAI popular stars build by ai |
|
_CardSourceAI = 1 |
|
) |
|
|
|
//PopularStarsList channel Popular list |
|
func (s *Service) PopularStarsList(lp *show.PopularStarsLP) (pager *show.PopularStarsPager, err error) { |
|
pager = &show.PopularStarsPager{ |
|
Page: common.Page{ |
|
Num: lp.Pn, |
|
Size: lp.Ps, |
|
}, |
|
} |
|
w := map[string]interface{}{ |
|
"deleted": common.NotDeleted, |
|
"type": _CardTypeUpRcmdNew, |
|
} |
|
query := s.showDao.DB.Model(&show.PopularStars{}) |
|
if lp.ID > 0 { |
|
w["id"] = lp.ID |
|
} |
|
if lp.Status > 0 { |
|
w["status"] = lp.Status |
|
} |
|
if lp.Source >= 0 { |
|
if lp.Source == 0 { |
|
query = query.Where(map[string]interface{}{"source": _CardSourceOperate}) |
|
} else { |
|
w["source"] = lp.Source |
|
} |
|
} |
|
if lp.Person != "" { |
|
query = query.Where("person like ?", "%"+lp.Person+"%") |
|
} |
|
if lp.LongTitle != "" { |
|
query = query.Where("long_title like ?", "%"+lp.LongTitle+"%") |
|
} |
|
if err = query.Where(w).Count(&pager.Page.Total).Error; err != nil { |
|
log.Error("popularSvc.PopularStarsList Index count error(%v)", err) |
|
return |
|
} |
|
Populars := make([]*show.PopularStars, 0) |
|
if err = query.Where(w).Order("`id` DESC").Offset((lp.Pn - 1) * lp.Ps).Limit(lp.Ps).Find(&Populars).Error; err != nil { |
|
log.Error("popularSvc.PopularStarsList First error(%v)", err) |
|
return |
|
} |
|
pager.Item = Populars |
|
return |
|
} |
|
|
|
//AddPopularStars add popular stars |
|
func (s *Service) AddPopularStars(c context.Context, param *show.PopularStarsAP, name string, uid int64) (err error) { |
|
var ( |
|
popStars *show.PopularStars |
|
) |
|
if popStars, err = s.ValidMid(param.Value); err != nil { |
|
fmt.Println("error") |
|
return |
|
} |
|
if popStars.ID != 0 { |
|
err = fmt.Errorf("up主ID 已存在") |
|
return |
|
} |
|
param.Type = _CardTypeUpRcmdNew |
|
param.Source = _CardSourceOperate |
|
param.Status = common.Pass |
|
if err = s.showDao.PopularStarsAdd(param); err != nil { |
|
return |
|
} |
|
if err = util.AddLogs(common.LogPopularStars, name, uid, 0, ActionAddCPopular, param); err != nil { |
|
log.Error("popularSvc.AddPopularStars AddLog error(%v)", err) |
|
return |
|
} |
|
return |
|
} |
|
|
|
//UpdatePopularStars update channel Popular |
|
func (s *Service) UpdatePopularStars(c context.Context, param *show.PopularStarsUP, name string, uid int64) (err error) { |
|
var ( |
|
popStars *show.PopularStars |
|
) |
|
if popStars, err = s.ValidMid(param.Value); err != nil { |
|
return |
|
} |
|
if popStars.ID != 0 && popStars.ID != param.ID { |
|
err = fmt.Errorf("up主ID 已存在") |
|
return |
|
} |
|
param.Type = _CardTypeUpRcmdNew |
|
param.Status = common.Pass |
|
if err = s.showDao.PopularStarsUpdate(param); err != nil { |
|
return |
|
} |
|
if err = util.AddLogs(common.LogPopularStars, name, uid, 0, ActionUpCPopular, param); err != nil { |
|
log.Error("popularSvc.UpdatePopularStars AddLog error(%v)", err) |
|
return |
|
} |
|
return |
|
} |
|
|
|
//DeletePopularStars delete channel Popular |
|
func (s *Service) DeletePopularStars(id int64, name string, uid int64) (err error) { |
|
if err = s.showDao.PopularStarsDelete(id, _CardTypeUpRcmdNew); err != nil { |
|
return |
|
} |
|
if err = util.AddLogs(common.LogPopularStars, name, uid, id, ActionDelCPopular, id); err != nil { |
|
log.Error("popularSvc.DeletePopularStars AddLog error(%v)", err) |
|
return |
|
} |
|
return |
|
} |
|
|
|
//RejectPopularStars reject channel Popular |
|
func (s *Service) RejectPopularStars(id int64, name string, uid int64) (err error) { |
|
if err = s.showDao.PopularStarsReject(id, _CardTypeUpRcmdNew); err != nil { |
|
return |
|
} |
|
if err = util.AddLogs(common.LogPopularStars, name, uid, id, ActionRejCPopular, id); err != nil { |
|
log.Error("popularSvc.DeletePopularStars AddLog error(%v)", err) |
|
return |
|
} |
|
return |
|
} |
|
|
|
//ValidMid mid must unique |
|
func (s *Service) ValidMid(mid string) (popStars *show.PopularStars, err error) { |
|
w := map[string]interface{}{ |
|
"value": mid, |
|
"deleted": common.NotDeleted, |
|
"type": _CardTypeUpRcmdNew, |
|
} |
|
popStars = &show.PopularStars{} |
|
if err = s.showDao.DB.Model(&show.PopularStars{}).Where(w).Find(&popStars).Error; err != nil { |
|
if err == gorm.ErrRecordNotFound { |
|
err = nil |
|
return |
|
} |
|
log.Error("popularSvc.ValidMid Find error(%v)", err) |
|
return |
|
} |
|
return |
|
} |
|
|
|
//AIAddPopularStars add popular stars |
|
func (s *Service) AIAddPopularStars(c context.Context, values []*show.PopularStarsAP) (err error) { |
|
if err = util.AddLogs(common.LogPopularStars, "AI", 0, 0, ActionAIAddCPopular, values); err != nil { |
|
log.Error("popularSvc.AIAddPopularStars AddLog error(%v)", err) |
|
return |
|
} |
|
for _, v := range values { |
|
var popStars *show.PopularStars |
|
if popStars, err = s.ValidMid(v.Value); err != nil { |
|
log.Error("popularSvc.AIAddPopularStars ValidMid value(%v) error(%v)", v, err) |
|
continue |
|
} |
|
if popStars.ID != 0 { |
|
//运营创建的优先级最高 |
|
if popStars.Source == _CardSourceOperate { |
|
continue |
|
} |
|
//已通过的优先级较高 |
|
if popStars.Status == common.Pass { |
|
continue |
|
} |
|
tmp := &show.PopularStarsUP{ |
|
ID: popStars.ID, |
|
Content: v.Content, |
|
LongTitle: v.LongTitle, |
|
} |
|
if err = s.showDao.PopularStarsUpdate(tmp); err != nil { |
|
log.Error("popularSvc.AIAddPopularStars PopularStarsUpdate value(%v) error(%v)", tmp, err) |
|
continue |
|
} |
|
} else { |
|
tmp := &show.PopularStarsAP{ |
|
Type: _CardTypeUpRcmdNew, |
|
Source: _CardSourceAI, |
|
Status: common.Verify, |
|
Value: v.Value, |
|
Content: v.Content, |
|
LongTitle: v.LongTitle, |
|
} |
|
if err = s.showDao.PopularStarsAdd(tmp); err != nil { |
|
log.Error("popularSvc.AIAddPopularStars PopularStarsAdd value(%v) error(%v)", tmp, err) |
|
continue |
|
} |
|
} |
|
} |
|
return |
|
}
|
|
|