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.
377 lines
8.9 KiB
377 lines
8.9 KiB
package http |
|
|
|
import ( |
|
"context" |
|
"encoding/json" |
|
"fmt" |
|
"strconv" |
|
|
|
"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/ecode" |
|
"go-common/library/log" |
|
bm "go-common/library/net/http/blademaster" |
|
) |
|
|
|
func eventTopicList(c *bm.Context) { |
|
var ( |
|
err error |
|
pager *show.EventTopicPager |
|
) |
|
res := map[string]interface{}{} |
|
req := &show.EventTopicLP{} |
|
if err = c.Bind(req); err != nil { |
|
return |
|
} |
|
if pager, err = popularSvc.EventTopicList(req); err != nil { |
|
res["message"] = "列表获取失败 " + err.Error() |
|
c.JSONMap(res, ecode.RequestErr) |
|
return |
|
} |
|
c.JSON(pager, nil) |
|
} |
|
|
|
func addEventTopic(c *bm.Context) { |
|
var ( |
|
err error |
|
//title string |
|
) |
|
res := map[string]interface{}{} |
|
req := &show.EventTopicAP{} |
|
if err = c.Bind(req); err != nil { |
|
return |
|
} |
|
uid, name := util.UserInfo(c) |
|
if name == "" { |
|
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized) |
|
c.Abort() |
|
return |
|
} |
|
req.Person = name |
|
if err = popularSvc.AddEventTopic(c, req, name, uid); err != nil { |
|
res["message"] = "卡片创建失败 " + err.Error() |
|
c.JSONMap(res, ecode.RequestErr) |
|
return |
|
} |
|
c.JSON(nil, nil) |
|
} |
|
|
|
func upEventTopic(c *bm.Context) { |
|
var ( |
|
err error |
|
) |
|
res := map[string]interface{}{} |
|
req := &show.EventTopicUP{} |
|
if err = c.Bind(req); err != nil { |
|
return |
|
} |
|
uid, name := util.UserInfo(c) |
|
if name == "" { |
|
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized) |
|
c.Abort() |
|
return |
|
} |
|
if req.ID <= 0 { |
|
c.JSONMap(map[string]interface{}{"message": "ID 参数不合法"}, ecode.RequestErr) |
|
c.Abort() |
|
return |
|
} |
|
if err = popularSvc.UpdateEventTopic(c, req, name, uid); err != nil { |
|
res["message"] = "卡片创建失败 " + err.Error() |
|
c.JSONMap(res, ecode.RequestErr) |
|
return |
|
} |
|
c.JSON(nil, nil) |
|
} |
|
|
|
func delEventTopic(c *bm.Context) { |
|
var ( |
|
err error |
|
) |
|
res := map[string]interface{}{} |
|
req := &struct { |
|
ID int64 `form:"id" validate:"required"` |
|
}{} |
|
if err = c.Bind(req); err != nil { |
|
return |
|
} |
|
uid, name := util.UserInfo(c) |
|
if name == "" { |
|
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized) |
|
c.Abort() |
|
return |
|
} |
|
if req.ID <= 0 { |
|
c.JSONMap(map[string]interface{}{"message": "ID 参数不合法"}, ecode.RequestErr) |
|
c.Abort() |
|
return |
|
} |
|
if err = popularSvc.DeleteEventTopic(req.ID, name, uid); err != nil { |
|
res["message"] = "卡片创建失败 " + err.Error() |
|
c.JSONMap(res, ecode.RequestErr) |
|
return |
|
} |
|
c.JSON(nil, nil) |
|
} |
|
func popularStarsList(c *bm.Context) { |
|
var ( |
|
err error |
|
pager *show.PopularStarsPager |
|
) |
|
res := map[string]interface{}{} |
|
req := &show.PopularStarsLP{} |
|
if err = c.Bind(req); err != nil { |
|
return |
|
} |
|
if pager, err = popularSvc.PopularStarsList(req); err != nil { |
|
res["message"] = "列表获取失败 " + err.Error() |
|
c.JSONMap(res, ecode.RequestErr) |
|
return |
|
} |
|
c.JSON(pager, nil) |
|
} |
|
|
|
//ValidateUpid . |
|
func ValidateUpid(c context.Context, idStr string) (name string, err error) { |
|
var ( |
|
id int64 |
|
) |
|
if id, err = strconv.ParseInt(idStr, 10, 64); err != nil { |
|
return |
|
} |
|
if name, err = commonSvc.CardPreview(c, common.CardUp, id); err != nil { |
|
return |
|
} |
|
return |
|
} |
|
|
|
//ValidateAvid . |
|
func ValidateAvid(c context.Context, values string) (err error) { |
|
type Content struct { |
|
ID int64 `json:"id"` |
|
Title string `json:"title"` |
|
} |
|
var contents []*Content |
|
if err = json.Unmarshal([]byte(values), &contents); err != nil { |
|
return |
|
} |
|
dup := make(map[int64]bool) |
|
for _, v := range contents { |
|
if v == nil { |
|
return fmt.Errorf("不能提交空数据!") |
|
} |
|
if dup[v.ID] { |
|
return fmt.Errorf("重复视频ID (%d)", v.ID) |
|
} |
|
dup[v.ID] = true |
|
if _, err = commonSvc.CardPreview(c, common.CardAv, v.ID); err != nil { |
|
return |
|
} |
|
} |
|
if len(contents) < 3 { |
|
return fmt.Errorf("视频组成最少三个") |
|
} |
|
if len(contents) > 5 { |
|
return fmt.Errorf("视频组成不能超过5个") |
|
} |
|
return |
|
} |
|
|
|
func addPopularStars(c *bm.Context) { |
|
var ( |
|
err error |
|
upName string |
|
) |
|
res := map[string]interface{}{} |
|
req := &show.PopularStarsAP{} |
|
if err = c.Bind(req); err != nil { |
|
return |
|
} |
|
uid, name := util.UserInfo(c) |
|
if name == "" { |
|
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized) |
|
c.Abort() |
|
return |
|
} |
|
if err = ValidateAvid(c, req.Content); err != nil { |
|
c.JSONMap(map[string]interface{}{"message": "视频ID 校验失败:" + err.Error()}, ecode.RequestErr) |
|
c.Abort() |
|
return |
|
} |
|
req.Value = util.TrimStrSpace(req.Value) |
|
if upName, err = ValidateUpid(c, req.Value); err != nil { |
|
c.JSONMap(map[string]interface{}{"message": "up主ID 校验失败:" + err.Error()}, ecode.RequestErr) |
|
c.Abort() |
|
return |
|
} |
|
req.Person = name |
|
req.UID = uid |
|
req.LongTitle = upName |
|
if err = popularSvc.AddPopularStars(c, req, name, uid); err != nil { |
|
res["message"] = "卡片创建失败 " + err.Error() |
|
c.JSONMap(res, ecode.RequestErr) |
|
return |
|
} |
|
c.JSON(nil, nil) |
|
} |
|
|
|
func updatePopularStars(c *bm.Context) { |
|
var ( |
|
err error |
|
upName string |
|
) |
|
res := map[string]interface{}{} |
|
req := &show.PopularStarsUP{} |
|
if err = c.Bind(req); err != nil { |
|
return |
|
} |
|
uid, name := util.UserInfo(c) |
|
if name == "" { |
|
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized) |
|
c.Abort() |
|
return |
|
} |
|
if req.ID <= 0 { |
|
c.JSONMap(map[string]interface{}{"message": "ID 参数不合法"}, ecode.RequestErr) |
|
c.Abort() |
|
return |
|
} |
|
if err = ValidateAvid(c, req.Content); err != nil { |
|
c.JSONMap(map[string]interface{}{"message": err.Error()}, ecode.RequestErr) |
|
c.Abort() |
|
return |
|
} |
|
req.Value = util.TrimStrSpace(req.Value) |
|
if upName, err = ValidateUpid(c, req.Value); err != nil { |
|
c.JSONMap(map[string]interface{}{"message": err.Error()}, ecode.RequestErr) |
|
c.Abort() |
|
return |
|
} |
|
req.LongTitle = upName |
|
if err = popularSvc.UpdatePopularStars(c, req, name, uid); err != nil { |
|
res["message"] = "卡片创建失败 " + err.Error() |
|
c.JSONMap(res, ecode.RequestErr) |
|
return |
|
} |
|
c.JSON(nil, nil) |
|
} |
|
|
|
func deletePopularStars(c *bm.Context) { |
|
var ( |
|
err error |
|
) |
|
res := map[string]interface{}{} |
|
req := &struct { |
|
ID int64 `form:"id" validate:"required"` |
|
}{} |
|
if err = c.Bind(req); err != nil { |
|
return |
|
} |
|
uid, name := util.UserInfo(c) |
|
if name == "" { |
|
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized) |
|
c.Abort() |
|
return |
|
} |
|
if req.ID <= 0 { |
|
c.JSONMap(map[string]interface{}{"message": "ID 参数不合法"}, ecode.RequestErr) |
|
c.Abort() |
|
return |
|
} |
|
if err = popularSvc.DeletePopularStars(req.ID, name, uid); err != nil { |
|
res["message"] = "卡片创建失败 " + err.Error() |
|
c.JSONMap(res, ecode.RequestErr) |
|
return |
|
} |
|
c.JSON(nil, nil) |
|
} |
|
|
|
func rejectPopularStars(c *bm.Context) { |
|
var ( |
|
err error |
|
) |
|
res := map[string]interface{}{} |
|
req := &struct { |
|
ID int64 `form:"id" validate:"required"` |
|
}{} |
|
if err = c.Bind(req); err != nil { |
|
return |
|
} |
|
uid, name := util.UserInfo(c) |
|
if name == "" { |
|
c.JSONMap(map[string]interface{}{"message": "请重新登录"}, ecode.Unauthorized) |
|
c.Abort() |
|
return |
|
} |
|
if req.ID <= 0 { |
|
c.JSONMap(map[string]interface{}{"message": "ID 参数不合法"}, ecode.RequestErr) |
|
c.Abort() |
|
return |
|
} |
|
if err = popularSvc.RejectPopularStars(req.ID, name, uid); err != nil { |
|
res["message"] = "卡片创建失败 " + err.Error() |
|
c.JSONMap(res, ecode.RequestErr) |
|
return |
|
} |
|
c.JSON(nil, nil) |
|
} |
|
|
|
func aiAddPopularStars(c *bm.Context) { |
|
var ( |
|
err error |
|
aids []byte |
|
addPopStar []*show.PopularStarsAP |
|
) |
|
res := map[string]interface{}{} |
|
req := &struct { |
|
Data string `form:"data" validate:"required"` |
|
}{} |
|
if err = c.Bind(req); err != nil { |
|
return |
|
} |
|
log.Info("aiAddPopularStars value(%v)", req.Data) |
|
values := make([]*show.PopularStarsAIAP, 0) |
|
if err = json.Unmarshal([]byte(req.Data), &values); err != nil { |
|
log.Error("aiAddPopularStars.Unmarshal value(%v) error(%v)", req.Data, err) |
|
res["message"] = "数据解析失败 " + err.Error() |
|
c.JSONMap(res, ecode.RequestErr) |
|
return |
|
} |
|
for _, v := range values { |
|
var ( |
|
AiValues []*show.AiValue |
|
upName string |
|
) |
|
for _, aid := range v.Aids { |
|
aiValue := &show.AiValue{ |
|
ID: aid, |
|
} |
|
AiValues = append(AiValues, aiValue) |
|
} |
|
if aids, err = json.Marshal(AiValues); err != nil { |
|
log.Error("aiAddPopularStars.Marshal value(%v) error(%v)", v.Aids, err) |
|
res["message"] = "数据encode失败 " + err.Error() |
|
c.JSONMap(res, ecode.RequestErr) |
|
} |
|
mid := strconv.FormatInt(v.Mid, 10) |
|
if upName, err = ValidateUpid(c, mid); err != nil { |
|
c.JSONMap(map[string]interface{}{"message": "up主ID 校验失败:" + err.Error()}, ecode.RequestErr) |
|
c.Abort() |
|
return |
|
} |
|
|
|
tmp := &show.PopularStarsAP{ |
|
LongTitle: upName, |
|
Value: strconv.FormatInt(v.Mid, 10), |
|
Content: string(aids), |
|
} |
|
addPopStar = append(addPopStar, tmp) |
|
} |
|
if err = popularSvc.AIAddPopularStars(c, addPopStar); err != nil { |
|
res["message"] = "卡片创建失败 " + err.Error() |
|
c.JSONMap(res, ecode.RequestErr) |
|
return |
|
} |
|
c.JSON(nil, nil) |
|
}
|
|
|