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.
549 lines
9.8 KiB
549 lines
9.8 KiB
package http |
|
|
|
import ( |
|
"strconv" |
|
|
|
"go-common/app/interface/main/creative/model/academy" |
|
"go-common/app/interface/main/creative/model/archive" |
|
whmdl "go-common/app/interface/main/creative/model/weeklyhonor" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
bm "go-common/library/net/http/blademaster" |
|
"go-common/library/net/metadata" |
|
"go-common/library/sync/errgroup" |
|
"go-common/library/xstr" |
|
) |
|
|
|
func appH5ArcTags(c *bm.Context) { |
|
params := c.Request.Form |
|
tidStr := params.Get("typeid") |
|
title := params.Get("title") |
|
filename := params.Get("filename") |
|
desc := params.Get("desc") |
|
cover := params.Get("cover") |
|
midStr, ok := c.Get("mid") |
|
mid := midStr.(int64) |
|
if !ok { |
|
c.JSON(nil, ecode.CreativeNotLogin) |
|
return |
|
} |
|
tid, _ := strconv.ParseInt(tidStr, 10, 16) |
|
if tid <= 0 { |
|
tid = 0 |
|
} |
|
tags, _ := dataSvc.TagsWithChecked(c, mid, uint16(tid), title, filename, desc, cover, archive.TagPredictFromAPP) |
|
c.JSON(tags, nil) |
|
} |
|
|
|
func appH5ArcTagInfo(c *bm.Context) { |
|
params := c.Request.Form |
|
tagNameStr := params.Get("tag_name") |
|
midStr, ok := c.Get("mid") |
|
mid := midStr.(int64) |
|
if !ok { |
|
c.JSON(nil, ecode.CreativeNotLogin) |
|
return |
|
} |
|
if len(tagNameStr) == 0 { |
|
log.Error("tagNameStr len zero (%s)", tagNameStr) |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
code, msg := arcSvc.TagCheck(c, mid, tagNameStr) |
|
c.JSON(map[string]interface{}{ |
|
"code": code, |
|
"msg": msg, |
|
}, nil) |
|
} |
|
|
|
func appH5Pre(c *bm.Context) { |
|
midStr, ok := c.Get("mid") |
|
if !ok { |
|
c.JSON(nil, ecode.CreativeNotLogin) |
|
return |
|
} |
|
mid := midStr.(int64) |
|
c.JSON(map[string]interface{}{ |
|
"activities": arcSvc.Activities(c), |
|
"fav": arcSvc.Fav(c, mid), |
|
}, nil) |
|
} |
|
|
|
func appH5MissionByType(c *bm.Context) { |
|
params := c.Request.Form |
|
tidStr := params.Get("tid") |
|
_, ok := c.Get("mid") |
|
if !ok { |
|
c.JSON(nil, ecode.CreativeNotLogin) |
|
return |
|
} |
|
tid, _ := strconv.Atoi(tidStr) |
|
actWithTP, _ := arcSvc.MissionOnlineByTid(c, int16(tid), 1) |
|
c.JSON(actWithTP, nil) |
|
} |
|
|
|
func toInt(s string) (i int, err error) { |
|
if s == "" { |
|
return 0, nil |
|
} |
|
i, err = strconv.Atoi(s) |
|
if err != nil { |
|
log.Error("strconv.Atoi s(%s) error(%v)", s, err) |
|
err = ecode.RequestErr |
|
} |
|
return |
|
} |
|
|
|
func toInt64(s string) (i int64, err error) { |
|
if s == "" { |
|
return 0, nil |
|
} |
|
i, err = strconv.ParseInt(s, 10, 64) |
|
if err != nil { |
|
log.Error("strconv.Atoi s(%s) error(%v)", s, err) |
|
err = ecode.RequestErr |
|
|
|
} |
|
return |
|
} |
|
|
|
func h5ViewPlay(c *bm.Context) { |
|
params := c.Request.Form |
|
aidStr := params.Get("aid") |
|
busStr := params.Get("business") |
|
|
|
// check user |
|
midI, ok := c.Get("mid") |
|
if !ok { |
|
c.JSON(nil, ecode.CreativeNotLogin) |
|
return |
|
} |
|
mid, ok := midI.(int64) |
|
if !ok || mid == 0 { |
|
c.JSON(nil, ecode.CreativeNotLogin) |
|
return |
|
} |
|
|
|
aid, err := toInt64(aidStr) |
|
if err != nil || aid <= 0 { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
|
|
bus, err := toInt(busStr) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
|
|
if aid == 0 || bus == 0 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
|
|
pl, err := acaSvc.ViewPlay(c, mid, aid, int8(bus)) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
c.JSON(pl, nil) |
|
} |
|
|
|
func h5AddPlay(c *bm.Context) { |
|
params := c.Request.Form |
|
aidStr := params.Get("aid") |
|
busStr := params.Get("business") |
|
watchStr := params.Get("watch") |
|
|
|
// check user |
|
midI, ok := c.Get("mid") |
|
if !ok { |
|
c.JSON(nil, ecode.CreativeNotLogin) |
|
return |
|
} |
|
mid, ok := midI.(int64) |
|
if !ok || mid == 0 { |
|
c.JSON(nil, ecode.CreativeNotLogin) |
|
return |
|
} |
|
|
|
aid, err := toInt64(aidStr) |
|
if err != nil || aid <= 0 { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
|
|
bus, err := toInt(busStr) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
|
|
watch, err := toInt(watchStr) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
|
|
if aid == 0 || bus == 0 || watch == 0 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
|
|
id, err := acaSvc.PlayAdd(c, mid, aid, int8(bus), int8(watch)) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
c.JSON(map[string]interface{}{ |
|
"id": id, |
|
}, nil) |
|
} |
|
|
|
func h5DelPlay(c *bm.Context) { |
|
params := c.Request.Form |
|
aidStr := params.Get("aid") |
|
busStr := params.Get("business") |
|
|
|
// check user |
|
midI, ok := c.Get("mid") |
|
if !ok { |
|
c.JSON(nil, ecode.CreativeNotLogin) |
|
return |
|
} |
|
mid, ok := midI.(int64) |
|
if !ok || mid == 0 { |
|
c.JSON(nil, ecode.CreativeNotLogin) |
|
return |
|
} |
|
|
|
aid, err := toInt64(aidStr) |
|
if err != nil || aid <= 0 { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
|
|
bus, err := toInt(busStr) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
|
|
if aid == 0 || bus == 0 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
|
|
id, err := acaSvc.PlayDel(c, mid, aid, int8(bus)) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
c.JSON(map[string]interface{}{ |
|
"id": id, |
|
}, nil) |
|
} |
|
|
|
func h5PlayList(c *bm.Context) { |
|
params := c.Request.Form |
|
pnStr := params.Get("pn") |
|
psStr := params.Get("ps") |
|
|
|
// check user |
|
midStr, ok := c.Get("mid") |
|
if !ok { |
|
c.JSON(nil, ecode.CreativeNotLogin) |
|
return |
|
} |
|
mid, ok := midStr.(int64) |
|
if !ok || mid == 0 { |
|
c.JSON(nil, ecode.CreativeNotLogin) |
|
return |
|
} |
|
|
|
pn, err := toInt(pnStr) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
ps, err := toInt(psStr) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
if pn <= 0 { |
|
pn = 1 |
|
} |
|
if ps > 20 || ps <= 0 { |
|
ps = 20 |
|
} |
|
|
|
arcs, err := acaSvc.PlayList(c, mid, pn, ps) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
|
|
c.JSON(arcs, nil) |
|
} |
|
|
|
func h5ThemeDir(c *bm.Context) { |
|
occs, err := acaSvc.Occupations(c) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
c.JSON(occs, nil) |
|
} |
|
|
|
func h5NewbCourse(c *bm.Context) { |
|
nc, err := acaSvc.NewbCourse(c) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
c.JSON(nc, nil) |
|
} |
|
|
|
func h5Tags(c *bm.Context) { |
|
c.JSON(acaSvc.Tags(c), nil) |
|
} |
|
|
|
func h5Archive(c *bm.Context) { |
|
params := c.Request.Form |
|
tidsStr := params.Get("tids") |
|
bsStr := params.Get("business") |
|
pageStr := params.Get("pn") |
|
psStr := params.Get("ps") |
|
keyword := params.Get("keyword") |
|
order := params.Get("order") |
|
drStr := params.Get("duration") |
|
ip := metadata.String(c, metadata.RemoteIP) |
|
|
|
var ( |
|
tids []int64 |
|
err error |
|
) |
|
// check params |
|
if tidsStr != "" { |
|
if tids, err = xstr.SplitInts(tidsStr); err != nil { |
|
log.Error("strconv.ParseInt(%s) error(%v)", tidsStr, err) |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
} |
|
|
|
bs, err := toInt(bsStr) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
dr, err := toInt(drStr) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
|
|
pn, err := toInt(pageStr) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
ps, err := toInt(psStr) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
if pn <= 0 { |
|
pn = 1 |
|
} |
|
if ps > 20 || ps <= 0 { |
|
ps = 20 |
|
} |
|
|
|
aca := &academy.EsParam{ |
|
Tid: tids, |
|
Business: bs, |
|
Pn: pn, |
|
Ps: ps, |
|
Keyword: keyword, |
|
Order: order, |
|
IP: ip, |
|
Duration: dr, |
|
} |
|
|
|
var arcs *academy.ArchiveList |
|
arcs, err = acaSvc.Archives(c, aca) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
c.JSON(arcs, nil) |
|
} |
|
|
|
func h5Feature(c *bm.Context) { |
|
ip := metadata.String(c, metadata.RemoteIP) |
|
|
|
// check params |
|
aca := &academy.EsParam{ |
|
Pn: 1, |
|
Ps: 50, |
|
Keyword: "", |
|
Order: "", |
|
IP: ip, |
|
} |
|
|
|
aca2 := &academy.EsParam{ |
|
Pn: 1, |
|
Ps: 50, |
|
Keyword: "", |
|
Order: "", |
|
IP: ip, |
|
} |
|
|
|
var ( |
|
g = &errgroup.Group{} |
|
offArcs, chArcs *academy.ArchiveList |
|
) |
|
|
|
g.Go(func() error { |
|
aca.Tid = []int64{acaSvc.OfficialID} //官方课程 |
|
offArcs, _ = acaSvc.ArchivesWithES(c, aca) |
|
return nil |
|
}) |
|
|
|
g.Go(func() error { |
|
aca2.Tid = []int64{acaSvc.EditorChoiceID} //编辑精选 |
|
chArcs, _ = acaSvc.ArchivesWithES(c, aca2) |
|
return nil |
|
}) |
|
g.Wait() |
|
|
|
c.JSON(map[string]interface{}{ |
|
"official_course": offArcs, |
|
"editor_choice": chArcs, |
|
}, nil) |
|
} |
|
|
|
func weeklyHonor(c *bm.Context) { |
|
midStr, _ := c.Get("mid") |
|
var mid int64 |
|
uid, ok := midStr.(int64) |
|
if ok { |
|
mid = uid |
|
} |
|
arg := new(struct { |
|
UID int64 `form:"uid"` |
|
Token string `form:"token"` |
|
}) |
|
if err := c.Bind(arg); err != nil { |
|
return |
|
} |
|
if mid == 0 && arg.UID == 0 { |
|
c.JSON(nil, ecode.CreativeNotLogin) |
|
return |
|
} |
|
rec, err := honorSvc.WeeklyHonor(c, mid, arg.UID, arg.Token) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
c.JSON(rec, nil) |
|
} |
|
|
|
func weeklyHonorSubSwitch(c *bm.Context) { |
|
midStr, _ := c.Get("mid") |
|
mid := midStr.(int64) |
|
if mid <= 0 { |
|
c.JSON(nil, ecode.CreativeNotLogin) |
|
return |
|
} |
|
params := c.Request.Form |
|
stateStr := params.Get("state") |
|
st, err := strconv.Atoi(stateStr) |
|
state := uint8(st) |
|
if err != nil || (state != whmdl.HonorSub && state != whmdl.HonorUnSub) { |
|
c.JSON(nil, ecode.ReqParamErr) |
|
} |
|
err = honorSvc.ChangeSubState(c, mid, state) |
|
c.JSON(nil, err) |
|
} |
|
|
|
func h5RecommendV2(c *bm.Context) { |
|
midStr, _ := c.Get("mid") |
|
|
|
var mid int64 |
|
uid, ok := midStr.(int64) |
|
if ok { |
|
mid = uid |
|
} |
|
|
|
rec, err := acaSvc.RecommendV2(c, mid) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
c.JSON(rec, nil) |
|
} |
|
|
|
func h5ThemeCousreV2(c *bm.Context) { |
|
params := c.Request.Form |
|
pnStr := params.Get("pn") |
|
psStr := params.Get("ps") |
|
pidStr := params.Get("pid") |
|
skidStr := params.Get("skid") |
|
sidStr := params.Get("sid") |
|
|
|
pn, err := toInt(pnStr) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
ps, err := toInt(psStr) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
if pn <= 0 { |
|
pn = 1 |
|
} |
|
if ps > 20 || ps <= 0 { |
|
ps = 20 |
|
} |
|
|
|
var pids, skids, sids []int64 |
|
|
|
if pidStr != "" { |
|
if pids, err = xstr.SplitInts(pidStr); err != nil { |
|
log.Error("strconv.ParseInt pidStr(%s) error(%v)", pidStr, err) |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
} |
|
if skidStr != "" { |
|
if skids, err = xstr.SplitInts(skidStr); err != nil { |
|
log.Error("strconv.ParseInt skidStr(%s) error(%v)", skidStr, err) |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
} |
|
if sidStr != "" { |
|
if sids, err = xstr.SplitInts(sidStr); err != nil { |
|
log.Error("strconv.ParseInt sidStr(%s) error(%v)", sidStr, err) |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
} |
|
|
|
arcs, err := acaSvc.ProfessionSkill(c, pids, skids, sids, pn, ps, false) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
|
|
c.JSON(arcs, nil) |
|
} |
|
|
|
func h5Keywords(c *bm.Context) { |
|
c.JSON(acaSvc.Keywords(c), nil) |
|
}
|
|
|