550 lines
9.8 KiB
Go
550 lines
9.8 KiB
Go
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)
|
|
}
|