Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@@ -0,0 +1,146 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"app.go",
"app_article.go",
"app_bgm.go",
"app_danmu.go",
"app_data.go",
"app_elec.go",
"app_faq.go",
"app_h5.go",
"app_medal.go",
"app_staff.go",
"app_submit.go",
"client.go",
"creator_arc.go",
"creator_article.go",
"creator_danmu.go",
"geetest.go",
"h5_task.go",
"http.go",
"local.go",
"staff.go",
"up.go",
"up_switch.go",
"video.go",
"viewpoint.go",
"watermark.go",
"web.go",
"web_academy.go",
"web_ad.go",
"web_appeal.go",
"web_archive.go",
"web_article.go",
"web_assist.go",
"web_cm.go",
"web_danmu.go",
"web_data.go",
"web_elec.go",
"web_feedback.go",
"web_history.go",
"web_index.go",
"web_internal.go",
"web_medal.go",
"web_netsafe.go",
"web_newcomer.go",
"web_reply.go",
"web_staff.go",
"web_tag.go",
"web_tpl.go",
],
importpath = "go-common/app/interface/main/creative/http",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/creative/conf:go_default_library",
"//app/interface/main/creative/model/academy:go_default_library",
"//app/interface/main/creative/model/account:go_default_library",
"//app/interface/main/creative/model/activity:go_default_library",
"//app/interface/main/creative/model/app:go_default_library",
"//app/interface/main/creative/model/appeal:go_default_library",
"//app/interface/main/creative/model/archive:go_default_library",
"//app/interface/main/creative/model/article:go_default_library",
"//app/interface/main/creative/model/danmu:go_default_library",
"//app/interface/main/creative/model/data:go_default_library",
"//app/interface/main/creative/model/elec:go_default_library",
"//app/interface/main/creative/model/faq:go_default_library",
"//app/interface/main/creative/model/medal:go_default_library",
"//app/interface/main/creative/model/message:go_default_library",
"//app/interface/main/creative/model/music:go_default_library",
"//app/interface/main/creative/model/newcomer:go_default_library",
"//app/interface/main/creative/model/operation:go_default_library",
"//app/interface/main/creative/model/order:go_default_library",
"//app/interface/main/creative/model/porder:go_default_library",
"//app/interface/main/creative/model/resource:go_default_library",
"//app/interface/main/creative/model/search:go_default_library",
"//app/interface/main/creative/model/tag:go_default_library",
"//app/interface/main/creative/model/watermark:go_default_library",
"//app/interface/main/creative/model/weeklyhonor:go_default_library",
"//app/interface/main/creative/server/grpc:go_default_library",
"//app/interface/main/creative/service:go_default_library",
"//app/interface/main/creative/service/academy:go_default_library",
"//app/interface/main/creative/service/account:go_default_library",
"//app/interface/main/creative/service/ad:go_default_library",
"//app/interface/main/creative/service/app:go_default_library",
"//app/interface/main/creative/service/appeal:go_default_library",
"//app/interface/main/creative/service/archive:go_default_library",
"//app/interface/main/creative/service/article:go_default_library",
"//app/interface/main/creative/service/assist:go_default_library",
"//app/interface/main/creative/service/danmu:go_default_library",
"//app/interface/main/creative/service/data:go_default_library",
"//app/interface/main/creative/service/dynamic:go_default_library",
"//app/interface/main/creative/service/elec:go_default_library",
"//app/interface/main/creative/service/faq:go_default_library",
"//app/interface/main/creative/service/feedback:go_default_library",
"//app/interface/main/creative/service/geetest:go_default_library",
"//app/interface/main/creative/service/medal:go_default_library",
"//app/interface/main/creative/service/music:go_default_library",
"//app/interface/main/creative/service/newcomer:go_default_library",
"//app/interface/main/creative/service/operation:go_default_library",
"//app/interface/main/creative/service/pay:go_default_library",
"//app/interface/main/creative/service/reply:go_default_library",
"//app/interface/main/creative/service/resource:go_default_library",
"//app/interface/main/creative/service/staff:go_default_library",
"//app/interface/main/creative/service/template:go_default_library",
"//app/interface/main/creative/service/up:go_default_library",
"//app/interface/main/creative/service/version:go_default_library",
"//app/interface/main/creative/service/watermark:go_default_library",
"//app/interface/main/creative/service/weeklyhonor:go_default_library",
"//app/interface/main/creative/service/whitelist:go_default_library",
"//app/interface/openplatform/article/model:go_default_library",
"//app/service/main/account/model:go_default_library",
"//app/service/main/resource/model:go_default_library",
"//library/ecode:go_default_library",
"//library/log:go_default_library",
"//library/net/http/blademaster:go_default_library",
"//library/net/http/blademaster/middleware/antispam:go_default_library",
"//library/net/http/blademaster/middleware/auth:go_default_library",
"//library/net/http/blademaster/middleware/verify:go_default_library",
"//library/net/metadata:go_default_library",
"//library/net/rpc/warden:go_default_library",
"//library/sync/errgroup:go_default_library",
"//library/xstr:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@@ -0,0 +1,724 @@
package http
import (
"context"
"fmt"
"go-common/app/interface/main/creative/model/account"
accmdl "go-common/app/interface/main/creative/model/account"
"go-common/app/interface/main/creative/model/activity"
"go-common/app/interface/main/creative/model/app"
"go-common/app/interface/main/creative/model/archive"
"go-common/app/interface/main/creative/model/data"
"go-common/app/interface/main/creative/model/elec"
"go-common/app/interface/main/creative/model/faq"
"go-common/app/interface/main/creative/model/message"
"go-common/app/interface/main/creative/model/newcomer"
resMdl "go-common/app/interface/main/creative/model/resource"
"go-common/app/interface/main/creative/model/search"
"go-common/app/interface/main/creative/model/watermark"
artmdl "go-common/app/interface/openplatform/article/model"
"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"
"strconv"
"strings"
"time"
)
func appIndex(c *bm.Context) {
var (
err error
rec *elec.RecentElecList
recList []*elec.RecentElec
stat *data.Stat
archives []*archive.OldArchiveVideoAudit
arcs *search.Result
replies *search.Replies
elecStat *elec.UserState
dataStat *data.AppStatList
topBanners, academyBanners []*resMdl.Banner
portal []*app.Portal
topMsgs []*message.Message
appTasks *newcomer.AppIndexNewcomer
artStat artmdl.UpStat
artAuthor, build, coop int
g = &errgroup.Group{}
ctx = context.TODO()
)
req := c.Request
header := c.Request.Header
params := req.Form
ip := metadata.String(c, metadata.RemoteIP)
mobiApp := params.Get("mobi_app")
device := params.Get("device")
platStr := params.Get("platform")
network := params.Get("network")
buvid := header.Get("Buvid")
adExtra := params.Get("ad_extra")
if coop, _ = strconv.Atoi(params.Get("coop")); coop > 0 {
coop = 1
}
if build, err = strconv.Atoi(params.Get("build")); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
resID, _ := strconv.Atoi(params.Get("resource_id"))
resMdlPlat := resMdl.Plat(mobiApp, device)
ck := c.Request.Header.Get("cookie")
ak := params.Get("access_key")
tmidStr := params.Get("tmid")
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
tmid, _ := strconv.ParseInt(tmidStr, 10, 64)
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
g.Go(func() error {
stat, _ = dataSvc.NewStat(ctx, mid, ip)
if stat != nil {
stat.Day30 = nil
stat.Arcs = nil
}
return nil
})
g.Go(func() error {
if arcs, err = arcSvc.Archives(ctx, mid, 0, "", "", "is_pubing,pubed,not_pubed", ip, 1, 2, coop); err == nil && arcs.OldArchives != nil {
archives = arcs.OldArchives
} else {
archives = make([]*archive.OldArchiveVideoAudit, 0)
}
return nil
})
g.Go(func() error {
replies, _ = replySvc.AppIndexReplies(ctx, ak, ck, mid, 0, 0, 0, search.All, resMdlPlat, "", "", "", ip, 1, 10)
if replies == nil {
replies = &search.Replies{}
}
return nil
})
g.Go(func() error {
elecStat, _ = elecSvc.UserState(ctx, mid, ip, ak, ck)
if elecStat != nil && elecStat.State == "2" {
rec, _ = elecSvc.RecentElec(ctx, mid, 1, 2, ip)
if rec != nil {
recList = rec.List
}
}
return nil
})
g.Go(func() error {
academyBanners, _ = resSvc.AcademyBanner(ctx, mobiApp, device, network, metadata.String(c, metadata.RemoteIP), buvid, adExtra, build, resID, resMdlPlat, mid, false)
return nil
})
g.Go(func() error {
topBanners, _ = resSvc.TopBanner(ctx, mobiApp, device, network, metadata.String(c, metadata.RemoteIP), buvid, adExtra, build, resID, resMdlPlat, mid, false)
isAuthor, _ := artSvc.IsAuthor(ctx, mid, ip)
if isAuthor {
artAuthor = 1
} else {
artAuthor = 0
}
portal, _ = appSvc.Portals(ctx, mid, artAuthor, build, app.PortalIntro, platStr, resMdlPlat)
dataStat, _ = dataSvc.AppStat(ctx, mid)
if platStr == "android" && build < 510007 {
dataStat.Show = 0 // android < 510007 close
}
return nil
})
g.Go(func() error {
artStat, _ = artSvc.ArticleStat(ctx, mid, ip)
return nil
})
g.Go(func() error {
topMsgs, _ = appSvc.TopMsg(ctx, mid, build, platStr, mobiApp, ak, ck, ip)
return nil
})
g.Go(func() error {
appTasks, _ = newcomerSvc.AppIndexNewcomer(ctx, mid, platStr)
return nil
})
g.Wait()
up := &app.Up{
Art: artAuthor,
}
if len(archives) > 0 {
up.Arc = 1
}
c.JSON(map[string]interface{}{
"stat": stat,
"tasks": appTasks,
"archives": archives,
"replies": replies,
"user_elec": elecStat,
"recent_elec_rank": recList,
"banner": topBanners,
"aca_banner": academyBanners,
"portal_list": portal,
"data_stat": dataStat,
"art_stat": artStat,
"up": up,
"tip": operSvc.NoticeStr,
"top_acts": arcSvc.TopAct(),
"top_msgs": topMsgs,
"block_intros": appSvc.BlockIntros(build, platStr),
}, nil)
}
func appArcView(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
lang := params.Get("lang")
ip := metadata.String(c, metadata.RemoteIP)
ck := c.Request.Header.Get("cookie")
ak := params.Get("access_key")
buildStr := params.Get("build")
build, _ := strconv.Atoi(buildStr)
mobiApp := params.Get("mobi_app")
plat := params.Get("platform")
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
// check params
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", aidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
var (
arc *archive.Archive
av *archive.ArcVideo
video []*archive.Video
white int
elecStat *elec.UserState
elecArc *elec.ArcState
activities []*activity.Activity
appFmt []*archive.AppFormat
mf *account.MyInfo
wm *watermark.Watermark
g = &errgroup.Group{}
ctx = context.TODO()
faqs = make(map[string]*faq.Faq)
lotteryCheck, lotteryBind bool
recFriends []*accmdl.Friend
)
g.Go(func() error {
if av, err = arcSvc.View(ctx, mid, aid, ip, plat); err == nil && av != nil {
arc = av.Archive
video = av.Videos
if (mobiApp == "android" && build < 511001) || (mobiApp == "ios" && build < 6011) {
av.Archive.Desc = archive.ShortDesc(av.Archive.Desc)
}
activities = arcSvc.Activities(ctx)
if arc.MissionID > 0 {
protectTagBeforeMission(ctx, arc, plat, build)
actInList := false
for _, v := range activities {
if v.ID == arc.MissionID {
actInList = true
break
}
}
if !actInList {
activities = append(activities, &activity.Activity{
ID: arc.MissionID,
Name: arc.MissionName,
})
}
}
}
return nil
})
g.Go(func() error {
elecStat, _ = elecSvc.UserState(ctx, mid, ip, ak, ck)
return nil
})
g.Go(func() error {
elecArc, _ = elecSvc.ArchiveState(ctx, aid, mid, ip)
if elecArc == nil {
elecArc = &elec.ArcState{}
}
return nil
})
g.Go(func() error {
appFmt, _ = arcSvc.AppFormats(ctx)
return nil
})
g.Go(func() error {
mf, _ = accSvc.MyInfo(ctx, mid, ip, time.Now())
_, white = whiteSvc.UploadInfoForMainApp(mf, plat, mid)
return nil
})
g.Go(func() error {
wm, _ = wmSvc.WaterMark(ctx, mid)
return nil
})
g.Go(func() error {
faqs = faqSvc.Pre(ctx)
return nil
})
g.Go(func() error {
lotteryCheck, _ = dymcSvc.LotteryUserCheck(ctx, mid)
return nil
})
g.Go(func() error {
lotteryBind, _ = dymcSvc.LotteryNotice(ctx, aid, mid)
return nil
})
g.Go(func() error {
recFriends, _ = accSvc.RecFollows(ctx, mid)
return nil
})
g.Wait()
if arc == nil {
c.JSON(nil, ecode.NothingFound)
return
}
c.JSON(map[string]interface{}{
"archive": arc,
"videos": video,
"user_elec": elecStat,
"arc_elec": elecArc,
"typelist": arcSvc.AppTypes(c, lang),
"activities": activities,
"desc_format": appFmt,
"dpub": arcSvc.Dpub(),
"rules": arcSvc.EditRules(c, white, arc.State, lotteryBind),
"watermark": wm,
"tip": vsSvc.AppManagerTip,
"cus_tip": vsSvc.CusManagerTip,
// common data
"camera_cfg": appSvc.CameraCfg,
"module_show": arcSvc.AppModuleShowMap(mid, lotteryCheck),
"icons": appSvc.Icons(),
"faqs": faqs,
"rec_friends": recFriends,
}, nil)
}
func appArcDel(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
// check params
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", aidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
// del
c.JSON(nil, arcSvc.Del(c, mid, aid, ip))
}
func appArchives(c *bm.Context) {
params := c.Request.Form
pageStr := params.Get("pn")
psStr := params.Get("ps")
order := params.Get("order")
tidStr := params.Get("tid")
kw := params.Get("keyword")
class := params.Get("class")
ip := metadata.String(c, metadata.RemoteIP)
var (
pn, ps, coop int
mid, tid int64
)
midStr, _ := c.Get("mid")
if mid = midStr.(int64); mid < 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
if pn, _ = strconv.Atoi(pageStr); pn <= 0 {
pn = 1
}
if ps, _ = strconv.Atoi(psStr); ps <= 0 || ps > 50 {
ps = 10
}
if tid, _ = strconv.ParseInt(tidStr, 10, 16); tid < 0 {
tid = 0
}
if coop, _ = strconv.Atoi(params.Get("coop")); coop > 0 {
coop = 1
}
arc, err := arcSvc.Archives(c, mid, int16(tid), kw, order, class, ip, pn, ps, coop)
if err != nil {
c.JSON(nil, err)
return
}
if arc != nil {
arc.Tip = operSvc.CreativeStr
}
c.JSON(arc, nil)
}
func appReplyList(c *bm.Context) {
req := c.Request
params := req.Form
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
isReport, err := strconv.Atoi(params.Get("is_report"))
if err != nil {
isReport = 0
}
tp, err := strconv.Atoi(params.Get("type"))
if err != nil {
tp = 1
}
oid, err := strconv.ParseInt(params.Get("oid"), 10, 64)
if err != nil {
oid = 0
}
pn, err := strconv.Atoi(params.Get("pn"))
if err != nil || pn < 1 {
pn = 1
}
ps, err := strconv.Atoi(params.Get("ps"))
if err != nil || ps <= 10 || ps > 100 {
ps = 10
}
resMdlPlat := resMdl.Plat(params.Get("mobi_app"), params.Get("device"))
p := &search.ReplyParam{
Ak: params.Get("access_key"),
Ck: c.Request.Header.Get("cookie"),
OMID: mid,
OID: oid,
Pn: pn,
Ps: ps,
IP: metadata.String(c, metadata.RemoteIP),
IsReport: int8(isReport),
Type: int8(tp),
FilterCtime: params.Get("filter"),
Kw: params.Get("keyword"),
Order: params.Get("order"),
ResMdlPlat: resMdlPlat,
}
replies, err := replySvc.Replies(c, p)
if err != nil {
c.JSON(nil, err)
return
}
c.JSONMap(map[string]interface{}{
"pager": map[string]int{
"current": pn,
"size": ps,
"total": replies.Total,
},
"data": replies.Result,
}, nil)
}
func appUpInfo(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
params := c.Request.Form
tmidStr := params.Get("tmid")
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
tmid, _ := strconv.ParseInt(tmidStr, 10, 64)
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
v, err := accSvc.UpInfo(c, mid, ip)
if err != nil {
log.Error("memberSvc.UpInfo(%d) error(%v)", mid, err)
c.JSON(nil, err)
return
}
c.JSON(v, nil)
}
func appPre(c *bm.Context) {
req := c.Request
params := req.Form
ip := metadata.String(c, metadata.RemoteIP)
buildStr := params.Get("build")
platStr := params.Get("platform")
tmidStr := params.Get("tmid")
device := params.Get("device")
mobiApp := params.Get("mobi_app")
resMdlPlat := resMdl.Plat(mobiApp, device)
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
tmid, _ := strconv.ParseInt(tmidStr, 10, 64)
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
var (
err error
up *account.UpInfo
portal []*app.Portal
build, artAuthor, showCre int
g = &errgroup.Group{}
ctx = context.TODO()
academyIntro = &app.AcademyIntro{}
actIntro = &app.ActIntro{}
mf *account.MyInfo
)
if buildStr != "" {
build, err = strconv.Atoi(buildStr)
if err != nil {
log.Error("strconv.Atoi(%s) error(%v)", buildStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
}
g.Go(func() error {
mf, err = accSvc.MyInfo(ctx, mid, ip, time.Now())
if err != nil {
log.Info("accSvc.MyInfo (%d) err(%v)", mid, err)
}
return nil
})
g.Go(func() error {
up, _ = accSvc.UpInfo(ctx, mid, ip)
if up != nil && account.IsUper(up) {
showCre = 1
}
if showCre != 1 {
if isAuthor, err := upSvc.ArcUpInfo(ctx, mid, ip); err == nil && isAuthor == 1 {
showCre = 1
}
}
return nil
})
g.Go(func() error {
isAuthor, _ := artSvc.IsAuthor(ctx, mid, ip)
if isAuthor {
artAuthor = 1
} else {
artAuthor = 0
}
portal, _ = appSvc.Portals(ctx, mid, artAuthor, build, app.PortalNotice, platStr, resMdlPlat)
return nil
})
g.Wait()
entranceGuidance := "成为UP主分享你的创作"
if platStr == "android" {
entranceGuidance = "投稿"
}
if showCre == 0 {
ccURL := appSvc.H5Page().CreativeCollege
if (build >= 5350000 && platStr == "android") || (build >= 8240 && platStr == "ios") {
ccURL = fmt.Sprintf("%s?from=my&navhide=1", ccURL)
} else {
ccURL = fmt.Sprintf("%s?from=my", ccURL)
}
academyIntro = &app.AcademyIntro{
Show: 1,
Title: "创作学院",
URL: ccURL,
}
}
uploadinfo, _ := whiteSvc.UploadInfoForMainApp(mf, platStr, mid)
if uploadinfo["info"] == 1 {
actIntro = &app.ActIntro{
Show: 1,
Title: "热门活动",
URL: appSvc.H5Page().HotAct,
}
}
c.JSON(map[string]interface{}{
"creative": map[string]interface{}{
"portal_list": portal,
"show": showCre,
},
"entrance": map[string]interface{}{
"guidance": entranceGuidance,
"show": 1,
},
"academy": academyIntro,
"act": actIntro,
}, nil)
}
func appBanner(c *bm.Context) {
params := c.Request.Form
psStr := params.Get("ps")
pnStr := params.Get("pn")
tp := params.Get("type")
_, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
pn, err := strconv.Atoi(pnStr)
if err != nil || pn <= 0 {
pn = 1
}
ps, err := strconv.Atoi(psStr)
if err != nil || ps <= 0 || ps > 20 {
ps = 20
}
oper, err := operSvc.AppOperationList(c, pn, ps, tp)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(oper, nil)
}
func appNewPre(c *bm.Context) {
req := c.Request
params := req.Form
ip := metadata.String(c, metadata.RemoteIP)
midStr := params.Get("mid")
tmidStr := params.Get("tmid")
var (
err error
mid, tmid int64
up *account.UpInfo
isUp, showCreative, showAcademy int
)
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
log.Error("strconv.ParseInt midStr(%s) error(%v)", midStr, err)
c.JSON(nil, err)
return
}
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
if tmidStr != "" {
if tmid, err = strconv.ParseInt(tmidStr, 10, 64); err != nil {
log.Error("strconv.ParseInt tmidStr(%s) error(%v)", tmidStr, err)
c.JSON(nil, err)
return
}
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
}
up, _ = accSvc.UpInfo(c, mid, ip)
if up != nil && account.IsUper(up) {
isUp = 1
}
if isUp != 1 {
if isAuthor, err := upSvc.ArcUpInfo(c, mid, ip); err == nil && isAuthor == 1 {
isUp = 1
}
}
if isUp == 0 {
showAcademy = 1
}
if dataSvc.IsForbidVideoup(mid) {
showCreative = 0
} else {
showCreative = 1
}
c.JSON(map[string]interface{}{
"academy": showAcademy,
"show": showCreative,
"is_up": isUp,
}, nil)
}
func protectTagBeforeMission(c context.Context, arc *archive.Archive, plat string, build int) {
if ((plat == "android" && build < 5260000) || (plat == "ios" && build <= 6680)) && len(arc.Tag) > 0 {
var mp *activity.Protocol
mp, _ = arcSvc.MissionProtocol(c, arc.MissionID)
if len(mp.Tags) > 0 {
sTags := strings.Split(mp.Tags, ",")
missionTagMap := make(map[string]int8)
for _, tag := range sTags {
missionTagMap[tag] = 0
}
arcTags := strings.Split(arc.Tag, ",")
var splitedArcTags []string
for _, arcTag := range arcTags {
if _, ok := missionTagMap[arcTag]; !ok {
splitedArcTags = append(splitedArcTags, arcTag)
}
}
arc.Tag = strings.Join(splitedArcTags, ",")
}
}
}
func appSimpleArcVideos(c *bm.Context) {
params := c.Request.Form
pageStr := params.Get("pn")
psStr := params.Get("ps")
order := params.Get("order")
kw := params.Get("keyword")
class := params.Get("class")
ip := metadata.String(c, metadata.RemoteIP)
var (
pn, ps, tid int
)
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
if pn, _ = strconv.Atoi(pageStr); pn <= 0 {
pn = 1
}
if ps, _ = strconv.Atoi(psStr); ps <= 0 || ps > 50 {
ps = 10
}
if tid, _ = strconv.Atoi(params.Get("tid")); tid <= 0 {
tid = 0
}
mid = converTmid(c, mid)
savs, err := arcSvc.SimpleArcVideos(c, mid, int16(tid), kw, order, class, ip, pn, ps, 0)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(savs, nil)
}
func appTaskBind(c *bm.Context) {
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
// check white list
//if task := whiteSvc.TaskWhiteList(mid); task != 1 {
// c.JSON(nil, ecode.RequestErr)
// return
//}
id, err := newcomerSvc.TaskBind(c, mid)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"id": id,
}, nil)
}

View File

@@ -0,0 +1,51 @@
package http
import (
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"strconv"
)
func appArticleList(c *bm.Context) {
params := c.Request.Form
pnStr := params.Get("pn")
psStr := params.Get("ps")
sortStr := params.Get("sort")
groupStr := params.Get("group")
categoryStr := params.Get("category")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
pn, err := strconv.Atoi(pnStr)
if err != nil || pn < 1 {
pn = 1
}
ps, err := strconv.Atoi(psStr)
if err != nil || ps <= 10 {
ps = 20
}
sort, err := strconv.Atoi(sortStr)
if err != nil || sort < 0 {
sort = 0
}
group, err := strconv.Atoi(groupStr)
if err != nil || group < 0 {
group = 0
}
category, err := strconv.Atoi(categoryStr)
if err != nil || category < 0 {
category = 0
}
arts, err := artSvc.Articles(c, mid, int(pn), int(ps), sort, group, category, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(arts, nil)
}

View File

@@ -0,0 +1,197 @@
package http
import (
"go-common/app/interface/main/creative/model/app"
mMdl "go-common/app/interface/main/creative/model/music"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"strconv"
)
// prepare ext data for bgm-detail pager
func appBgmExt(c *bm.Context) {
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
params := c.Request.Form
sidStr := params.Get("sid")
var (
sid int64
err error
ext *mMdl.BgmExt
)
sid, err = strconv.ParseInt(sidStr, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
ext, err = musicSvc.BgmExt(c, mid, sid)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(ext, nil)
}
func appBgmPre(c *bm.Context) {
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
params := c.Request.Form
fromStr := params.Get("from")
from, _ := strconv.Atoi(fromStr)
if _, ok := app.BgmFrom[from]; !ok {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(map[string]interface{}{
"typelist": musicSvc.PreByFrom(c, from),
"hotword": musicSvc.Hotwords,
}, nil)
}
func appBgmList(c *bm.Context) {
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
params := c.Request.Form
tidStr := params.Get("tid")
tid, err := strconv.Atoi(tidStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(musicSvc.BgmList(c, tid), nil)
}
func arcBgmList(c *bm.Context) {
v := new(struct {
AID int64 `form:"aid" validate:"required"`
CID int64 `form:"cid" validate:"required"`
Cache bool `form:"cache"`
})
if err := c.Bind(v); err != nil {
return
}
res, err := pubSvc.BgmBindList(c, v.AID, v.CID, 3, true)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(res, nil)
}
func appBgmSearch(c *bm.Context) {
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
params := c.Request.Form
pnStr := params.Get("pn")
psStr := params.Get("ps")
kw := params.Get("kw")
pn, _ := strconv.Atoi(pnStr)
if pn < 1 {
pn = 1
}
ps, _ := strconv.Atoi(psStr)
if ps > 20 || ps < 0 {
ps = 20
}
c.JSON(musicSvc.BgmSearch(c, kw, mid, pn, ps), nil)
}
func appBgmView(c *bm.Context) {
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
params := c.Request.Form
sidStr := params.Get("sid")
sid, err := strconv.ParseInt(sidStr, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(musicSvc.BgmView(c, sid), nil)
}
func appMaterialPre(c *bm.Context) {
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
params := c.Request.Form
buildStr := params.Get("build")
build, _ := strconv.Atoi(buildStr)
plat := params.Get("platform")
c.JSON(musicSvc.MaterialPre(c, mid, plat, build), nil)
}
func appMaterial(c *bm.Context) {
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
params := c.Request.Form
idStr := params.Get("id")
id, _ := strconv.ParseInt(idStr, 10, 64)
tpStr := params.Get("type")
tp, _ := strconv.Atoi(tpStr)
c.JSONMap(map[string]interface{}{
"data": musicSvc.Material(c, id, int8(tp), mid),
}, nil)
}
func appMissionByType(c *bm.Context) {
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
params := c.Request.Form
tidStr := params.Get("tid")
tid, _ := strconv.Atoi(tidStr)
actWithTP, _ := arcSvc.MissionOnlineByTid(c, int16(tid), 1)
c.JSON(actWithTP, nil)
}
func appH5BgmFeedback(c *bm.Context) {
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
var err error
v := new(struct {
Name string `form:"name"`
Musicians string `form:"musicians"`
})
if err = c.Bind(v); err != nil {
return
}
if len(v.Name) == 0 && len(v.Musicians) == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(musicSvc.AddBgmFeedBack(c, v.Name, v.Musicians, "h5", mid), nil)
}

View File

@@ -0,0 +1,145 @@
package http
import (
"strconv"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"go-common/library/xstr"
)
func appDmList(c *bm.Context) {
params := c.Request.Form
pnStr := params.Get("pn")
psStr := params.Get("ps")
idStr := params.Get("id")
pool := params.Get("pool")
aidStr := params.Get("aid")
midIStr := params.Get("mid")
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
id, err := strconv.ParseInt(idStr, 10, 64)
if err != nil || id <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
pn, err := strconv.Atoi(pnStr)
if err != nil || pn <= 0 {
pn = 1
}
ps, err := strconv.Atoi(psStr)
if err != nil || ps <= 0 || pn > 10 {
ps = 10
}
ip := metadata.String(c, metadata.RemoteIP)
order := "progress"
orderStr := params.Get("order")
if orderStr != order {
order = "ctime"
}
list, err := danmuSvc.List(c, mid, aid, id, pn, ps, order, pool, midIStr, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(list, nil)
}
func appDmEdit(c *bm.Context) {
params := c.Request.Form
idStr := params.Get("cid")
dmidsStr := params.Get("dmids")
stateStr := params.Get("state")
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
id, err := strconv.ParseInt(idStr, 10, 64)
if err != nil || id <= 0 {
err = ecode.RequestErr
return
}
state, err := strconv.Atoi(stateStr)
if err != nil {
err = ecode.RequestErr
return
}
var dmids []int64
if dmids, err = xstr.SplitInts(dmidsStr); err != nil {
c.JSON(nil, ecode.RequestErr)
log.Error("xstr.SplitInts(dmidsStr %v) err(%v)", dmidsStr, err)
return
}
for _, dmid := range dmids {
if dmid <= 0 {
c.JSON(nil, ecode.RequestErr)
log.Error("dmids range err (dmid %d) err(%v)", dmid, err)
return
}
}
ip := metadata.String(c, metadata.RemoteIP)
err = danmuSvc.Edit(c, mid, id, int8(state), dmids, ip)
if err != nil {
c.JSON(nil, err)
}
c.JSON(nil, nil)
}
func appDmRecent(c *bm.Context) {
params := c.Request.Form
pnStr := params.Get("pn")
psStr := params.Get("ps")
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
ip := metadata.String(c, metadata.RemoteIP)
var (
pn, ps int64
err error
)
if pn, err = strconv.ParseInt(pnStr, 10, 64); err != nil || pn < 1 {
pn = 1
}
if ps, err = strconv.ParseInt(psStr, 10, 64); err != nil || ps > 10 || ps < 1 {
ps = 10
}
recent, err := danmuSvc.Recent(c, mid, pn, ps, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(recent, nil)
}
func appDmEditBatch(c *bm.Context) {
params := c.Request.Form
paramsStr := params.Get("params")
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
ip := metadata.String(c, metadata.RemoteIP)
err := danmuSvc.EditBatch(c, mid, paramsStr, ip)
if err != nil {
c.JSON(nil, err)
}
c.JSON(nil, nil)
}

View File

@@ -0,0 +1,257 @@
package http
import (
"context"
"strconv"
"go-common/app/interface/main/creative/model/data"
artmdl "go-common/app/interface/openplatform/article/model"
"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"
)
func converTmid(c *bm.Context, mid int64) (retMid int64) {
tmidStr := c.Request.Form.Get("tmid")
tmid, _ := strconv.ParseInt(tmidStr, 10, 64)
if tmid > 0 && dataSvc.IsWhite(mid) {
retMid = tmid
} else {
retMid = mid
}
return
}
func appDataArc(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
ip := metadata.String(c, metadata.RemoteIP)
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
// check params
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", aidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
mid = converTmid(c, mid)
arcStat, err := dataSvc.ArchiveStat(c, aid, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
_, vds, _ := arcSvc.Videos(c, mid, aid, ip)
arcStat.Videos = vds
c.JSON(arcStat, nil)
}
func appDataVideoQuit(c *bm.Context) {
params := c.Request.Form
cidStr := params.Get("cid")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
// check params
cid, err := strconv.ParseInt(cidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", cidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
mid = converTmid(c, mid)
pts, err := dataSvc.AppVideoQuitPoints(c, cid, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(pts, nil)
}
func appFan(c *bm.Context) {
req := c.Request
params := req.Form
tyStr := params.Get("type")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
var (
err error
ty int
fan *data.AppFan
)
ty, err = strconv.Atoi(tyStr)
if err != nil {
log.Error("strconv.Atoi(%s) error(%v)", tyStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
mid = converTmid(c, mid)
fan, err = dataSvc.UpFansAnalysisForApp(c, mid, ty, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(fan, nil)
}
func appFanRank(c *bm.Context) {
req := c.Request
params := req.Form
tyStr := params.Get("type")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
var (
err error
ty int
rk map[string][]*data.RankInfo
)
ty, err = strconv.Atoi(tyStr)
if err != nil {
log.Error("strconv.Atoi(%s) error(%v)", tyStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
mid = converTmid(c, mid)
rk, err = dataSvc.FanRankApp(c, mid, ty, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(rk, nil)
}
func appOverView(c *bm.Context) {
req := c.Request
params := req.Form
tyStr := params.Get("type")
ip := metadata.String(c, metadata.RemoteIP)
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
var (
err error
ty int
ao *data.AppOverView
)
ty, err = strconv.Atoi(tyStr)
if err != nil {
log.Error("strconv.Atoi(%s) error(%v)", tyStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
mid = converTmid(c, mid)
ao, err = dataSvc.OverView(c, mid, int8(ty), ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(ao, nil)
}
func appArchiveAnalyze(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
ip := metadata.String(c, metadata.RemoteIP)
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", aidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
mid = converTmid(c, mid)
arcStat, err := dataSvc.ArchiveAnalyze(c, aid, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
_, vds, _ := arcSvc.Videos(c, mid, aid, ip)
arcStat.Videos = vds
c.JSON(arcStat, nil)
}
func appVideoRetention(c *bm.Context) {
params := c.Request.Form
cidStr := params.Get("cid")
ip := metadata.String(c, metadata.RemoteIP)
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
cid, err := strconv.ParseInt(cidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", cidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
mid = converTmid(c, mid)
pts, err := dataSvc.VideoRetention(c, cid, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(pts, nil)
}
func appDataArticle(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
var (
artStat artmdl.UpStat
artIncr []*artmdl.ThirtyDayArticle
g = &errgroup.Group{}
ctx = context.TODO()
)
mid = converTmid(c, mid)
g.Go(func() error {
artStat, _ = artSvc.ArticleStat(ctx, mid, ip)
return nil
})
g.Go(func() error {
artIncr, _ = dataSvc.ThirtyDayArticle(ctx, mid, ip)
return nil
})
g.Wait()
c.JSON(map[string]interface{}{
"stat": artStat,
"incr": artIncr,
}, nil)
}

View File

@@ -0,0 +1,88 @@
package http
import (
"go-common/app/interface/main/creative/model/elec"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"strconv"
)
var (
cb = &elec.ChargeBill{}
recl = &elec.RecentElecList{}
)
func appElecBill(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
req := c.Request
params := req.Form
ck := c.Request.Header.Get("cookie")
ak := params.Get("access_key")
pageStr := params.Get("pn")
psStr := params.Get("ps")
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
pn, _ := strconv.Atoi(pageStr)
if pn <= 0 {
pn = 1
}
ps, _ := strconv.Atoi(psStr)
if ps <= 0 || ps > 20 {
ps = 20
}
bal, err := elecSvc.Balance(c, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
var bil *elec.ChargeBill
elecStat, _ := elecSvc.UserState(c, mid, ip, ak, ck)
if elecStat != nil && elecStat.State == "2" {
bil, _ = elecSvc.AppDailyBill(c, mid, pn, ps, ip)
}
if bil == nil {
bil = cb
}
c.JSON(map[string]interface{}{
"balance": bal,
"bill": bil,
}, nil)
}
func appElecRecentRank(c *bm.Context) {
req := c.Request
params := req.Form
ip := metadata.String(c, metadata.RemoteIP)
ck := c.Request.Header.Get("cookie")
ak := params.Get("access_key")
pageStr := params.Get("pn")
psStr := params.Get("ps")
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
pn, _ := strconv.Atoi(pageStr)
if pn <= 0 {
pn = 1
}
ps, _ := strconv.Atoi(psStr)
if ps <= 0 || ps > 20 {
ps = 20
}
var rec *elec.RecentElecList
elecStat, _ := elecSvc.UserState(c, mid, ip, ak, ck)
if elecStat != nil && elecStat.State == "2" {
rec, _ = elecSvc.RecentElec(c, mid, pn, ps, ip)
}
if rec == nil {
rec = recl
}
c.JSON(rec, nil)
}

View File

@@ -0,0 +1,106 @@
package http
import (
"context"
"go-common/app/interface/main/creative/model/faq"
mMdl "go-common/app/interface/main/creative/model/music"
resMdl "go-common/app/interface/main/creative/model/resource"
resmdl "go-common/app/service/main/resource/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/sync/errgroup"
"strconv"
)
func appH5FaqEditor(c *bm.Context) {
var (
total int
items []*faq.Detail
err error
pn = 1
ps = 20
keyFlag = 1
faqQuesTypeID = faq.PhoneFaqQuesTypeID
)
params := c.Request.Form
device := params.Get("device")
if device == "ipad" || device == "pad" {
log.Warn("openpad faqSvc.Detail (%s,%s,%s)", faqQuesTypeID, device, faq.PadFaqQuesTypeID)
faqQuesTypeID = faq.PadFaqQuesTypeID
}
if items, total, err = faqSvc.Detail(c, faqQuesTypeID, keyFlag, pn, ps); err != nil {
log.Error("faqSvc.Detail(%s,%d,%d) error(%v)", faqQuesTypeID, pn, ps, err)
c.JSON(nil, err)
return
}
detail := map[string]interface{}{
"items": items,
"page": map[string]int{
"num": pn,
"size": ps,
"total": total,
},
}
c.JSON(map[string]interface{}{
"detail": detail,
}, nil)
}
func appCooperate(c *bm.Context) {
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
params := c.Request.Form
idStr := params.Get("id")
id, _ := strconv.ParseInt(idStr, 10, 64)
c.JSONMap(map[string]interface{}{
"data": musicSvc.Cooperate(c, id, mid),
}, nil)
}
func appCooperatePre(c *bm.Context) {
var (
banners []*resmdl.Assignment
coos []*mMdl.Cooperate
build int
err error
g = &errgroup.Group{}
ctx = context.TODO()
)
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
header := c.Request.Header
params := c.Request.Form
mobiApp := params.Get("mobi_app")
device := params.Get("device")
platStr := params.Get("platform")
network := params.Get("network")
buvid := header.Get("Buvid")
adExtra := params.Get("ad_extra")
if build, err = strconv.Atoi(params.Get("build")); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
plat := resMdl.Plat(mobiApp, device)
g.Go(func() error {
coos = musicSvc.CooperatePre(ctx, mid, platStr, build)
return nil
})
g.Go(func() error {
banners, _ = resSvc.CooperateBanner(ctx, mobiApp, device, network, buvid, adExtra, build, plat, mid, false)
return nil
})
g.Wait()
c.JSON(map[string]interface{}{
"coos": coos,
"banners": banners,
}, nil)
}

View File

@@ -0,0 +1,549 @@
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)
}

View File

@@ -0,0 +1,103 @@
package http
import (
mdMdl "go-common/app/interface/main/creative/model/medal"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"strconv"
)
func appMedalStatus(c *bm.Context) {
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
st, err := mdSvc.Medal(c, mid)
if err == ecode.Int(510002) {
st = &mdMdl.Medal{
UID: strconv.FormatInt(mid, 10),
LiveStatus: "0",
MasterStatus: "0",
Status: "0",
}
err = nil
}
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(st, nil)
}
func appMedalCheck(c *bm.Context) {
req := c.Request
params := req.Form
name := params.Get("medal_name")
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
if name == "" {
c.JSON(nil, ecode.RequestErr)
return
}
valid, err := mdSvc.CheckMedal(c, mid, name)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"valid": valid,
}, nil)
}
func appMedalOpen(c *bm.Context) {
req := c.Request
params := req.Form
name := params.Get("medal_name")
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
if name == "" {
c.JSON(nil, ecode.RequestErr)
return
}
err := mdSvc.OpenMedal(c, mid, name)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func appMedalRename(c *bm.Context) {
req := c.Request
params := c.Request.Form
name := params.Get("medal_name")
cookie := req.Header.Get("cookie")
ak := params.Get("access_key")
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
if name == "" {
c.JSON(nil, ecode.RequestErr)
return
}
code := mdSvc.Rename(c, mid, name, ak, cookie)
c.JSON(nil, code)
}

View File

@@ -0,0 +1,22 @@
package http
import (
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
func arcStaff(c *bm.Context) {
v := new(struct {
AID int64 `form:"aid" validate:"required"`
Cache bool `form:"cache"`
})
if err := c.Bind(v); err != nil {
return
}
res, err := pubSvc.StaffList(c, v.AID, v.Cache)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(res, nil)
}

View File

@@ -0,0 +1,127 @@
package http
import (
"context"
"strconv"
"time"
accmdl "go-common/app/interface/main/creative/model/account"
"go-common/app/interface/main/creative/model/archive"
"go-common/app/interface/main/creative/model/faq"
"go-common/app/interface/main/creative/model/watermark"
"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"
)
func appArcDescFormat(c *bm.Context) {
params := c.Request.Form
ip := metadata.String(c, metadata.RemoteIP)
typeidStr := params.Get("typeid")
cpStr := params.Get("copyright")
lang := params.Get("lang")
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
typeid, err := strconv.ParseInt(typeidStr, 10, 16)
if typeid < 0 || err != nil {
typeid = 0
}
copyright, err := strconv.ParseInt(cpStr, 10, 16)
if copyright <= 0 || err != nil {
copyright = archive.CopyrightReprint
}
desc, length, err := arcSvc.DescFormatForApp(c, typeid, copyright, lang, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"desc_length": length,
"desc_format": desc,
}, nil)
}
func appArchivePre(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
params := c.Request.Form
plat := params.Get("platform")
lang := params.Get("lang")
if lang != "en" {
lang = "ch"
}
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
var (
err error
mf *accmdl.MyInfo
wm *watermark.Watermark
g = &errgroup.Group{}
ctx = context.TODO()
faqs = make(map[string]*faq.Faq)
recFriends []*accmdl.Friend
lotteryCheck bool
)
g.Go(func() error {
mf, err = accSvc.MyInfo(ctx, mid, ip, time.Now())
if err != nil {
log.Info("accSvc.MyInfo (%d) err(%v)", mid, err)
}
if mf != nil {
mf.Commercial = arcSvc.AllowCommercial(c, mid)
}
return nil
})
g.Go(func() error {
wm, err = wmSvc.WaterMark(ctx, mid)
if err != nil {
log.Info("wmSvc.WaterMark (%d) err(%+v) WaterMark(%+v)", mid, err, wm)
}
if len(wm.URL) == 0 {
wm.State = 1
}
return nil
})
g.Go(func() error {
faqs = faqSvc.Pre(ctx)
return nil
})
g.Go(func() error {
lotteryCheck, _ = dymcSvc.LotteryUserCheck(ctx, mid)
return nil
})
g.Go(func() error {
recFriends, _ = accSvc.RecFollows(ctx, mid)
return nil
})
g.Wait()
uploadinfo, _ := whiteSvc.UploadInfoForMainApp(mf, plat, mid)
mf.DymcLottery = lotteryCheck
c.JSON(map[string]interface{}{
"uploadinfo": uploadinfo,
"typelist": arcSvc.AppTypes(c, lang),
"myinfo": mf,
"arctip": arcSvc.ArcTip,
"activities": arcSvc.Activities(c),
"watermark": wm,
"fav": arcSvc.Fav(c, mid),
"tip": vsSvc.AppManagerTip,
"cus_tip": vsSvc.CusManagerTip,
// common data
"camera_cfg": appSvc.CameraCfg,
"module_show": arcSvc.AppModuleShowMap(mid, lotteryCheck),
"icons": appSvc.Icons(),
"faqs": faqs,
"rec_friends": recFriends,
}, nil)
}

View File

@@ -0,0 +1,312 @@
package http
import (
"go-common/app/interface/main/creative/model/archive"
"go-common/app/interface/main/creative/model/order"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"strconv"
"time"
)
func clientViewArc(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
// check params
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", aidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
av, err := arcSvc.View(c, mid, aid, ip, archive.PlatformWindows)
if err != nil {
c.JSON(nil, err)
return
}
if av == nil {
c.JSON(nil, ecode.NothingFound)
return
}
av.Archive.Desc = archive.ShortDesc(av.Archive.Desc)
arcElec, err := elecSvc.ArchiveState(c, aid, mid, ip)
if err != nil {
log.Error("archive(%d) error(%v)", mid, err)
}
c.JSON(map[string]interface{}{
"archive": av.Archive,
"videos": av.Videos,
"archive_elec": arcElec,
}, nil)
}
func clientDelArc(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
// check params
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", aidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
// del
c.JSON(nil, arcSvc.Del(c, mid, aid, ip))
}
func clientArchives(c *bm.Context) {
params := c.Request.Form
class := params.Get("class")
order := params.Get("order")
tidStr := params.Get("tid")
keyword := params.Get("keyword")
pageStr := params.Get("pn")
psStr := params.Get("ps")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
// check params
pn, _ := strconv.Atoi(pageStr)
if pn <= 0 {
pn = 1
}
ps, _ := strconv.Atoi(psStr)
if ps <= 0 || ps > 50 {
ps = 10
}
tid, _ := strconv.ParseInt(tidStr, 10, 16)
if tid <= 0 {
tid = 0
}
arc, err := arcSvc.Archives(c, mid, int16(tid), keyword, order, class, ip, pn, ps, 0)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(arc, nil)
}
func clientArchiveSearch(c *bm.Context) {
params := c.Request.Form
class := params.Get("class")
order := params.Get("order")
tidStr := params.Get("tid")
keyword := params.Get("keyword")
pageStr := params.Get("pn")
psStr := params.Get("ps")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
// check params
pn, _ := strconv.Atoi(pageStr)
if pn <= 0 {
pn = 1
}
ps, _ := strconv.Atoi(psStr)
if ps <= 0 || ps > 50 {
ps = 10
}
tid, _ := strconv.ParseInt(tidStr, 10, 16)
if tid <= 0 {
tid = 0
}
arc, err := arcSvc.Search(c, mid, int16(tid), keyword, order, class, ip, pn, ps, 0)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(arc, nil)
}
func clientPre(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
mf, err := accSvc.MyInfo(c, mid, ip, time.Now())
if err != nil {
c.JSON(nil, err)
return
}
// commercial order
orders := make([]*order.Order, 0)
if arcSvc.AllowOrderUps(mid) {
orders, _ = arcSvc.ExecuteOrders(c, mid, metadata.String(c, metadata.RemoteIP))
}
mf.Commercial = arcSvc.AllowCommercial(c, mid)
c.JSON(map[string]interface{}{
"typelist": arcSvc.Types(c, "ch"),
"activities": arcSvc.Activities(c),
"myinfo": mf,
"orders": orders,
}, nil)
}
func clientTemplates(c *bm.Context) {
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
tps, err := tplSvc.Templates(c, mid)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(tps, nil)
}
func clientTags(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")
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
// check params
tid, _ := strconv.ParseInt(tidStr, 10, 16)
if tid <= 0 {
tid = 0
}
tags, err := dataSvc.Tags(c, mid, uint16(tid), title, filename, desc, cover, archive.TagPredictFromWindows)
if err != nil {
c.JSON(nil, err)
return
}
// del
c.JSON(tags, nil)
}
func clientAddTpl(c *bm.Context) {
params := c.Request.Form
typeidStr := params.Get("typeid")
copyright := params.Get("arctype")
name := params.Get("name")
title := params.Get("title")
tag := params.Get("keywords")
content := params.Get("description")
// check params
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
typeid, err := strconv.ParseInt(typeidStr, 10, 16)
if err != nil || typeid < 1 {
log.Error("strconv.ParseInt(%s) error(%v)", typeidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
if name == "" {
log.Error("name is empty error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
// add
err = tplSvc.AddTemplate(c, mid, int16(typeid), copyright, name, title, tag, content, time.Now())
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func clientUpdateTpl(c *bm.Context) {
params := c.Request.Form
idStr := params.Get("tid")
typeidStr := params.Get("typeid")
copyright := params.Get("arctype")
name := params.Get("name")
title := params.Get("title")
tag := params.Get("keywords")
content := params.Get("description")
// check params
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
id, err := strconv.ParseInt(idStr, 10, 64)
if err != nil || id < 1 {
log.Error("strconv.ParseInt(%s) error(%v)", idStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
typeid, err := strconv.ParseInt(typeidStr, 10, 16)
if err != nil || typeid < 1 {
log.Error("strconv.ParseInt(%s) error(%v)", typeidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
if name == "" {
log.Error("name is empty error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
// update
c.JSON(nil, tplSvc.UpdateTemplate(c, id, mid, int16(typeid), copyright, name, title, tag, content, time.Now()))
}
func clientDelTpl(c *bm.Context) {
params := c.Request.Form
idStr := params.Get("tid")
// check params
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
id, err := strconv.ParseInt(idStr, 10, 64)
if err != nil || id < 1 {
log.Error("strconv.ParseInt(%s) error(%v)", idStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
// del
c.JSON(nil, tplSvc.DelTemplate(c, id, mid, time.Now()))
}

View File

@@ -0,0 +1,655 @@
package http
import (
"context"
"strconv"
"time"
appMdl "go-common/app/interface/main/creative/model/app"
"go-common/app/interface/main/creative/model/archive"
"go-common/app/interface/main/creative/model/article"
"go-common/app/interface/main/creative/model/danmu"
"go-common/app/interface/main/creative/model/data"
"go-common/app/interface/main/creative/model/elec"
"go-common/app/interface/main/creative/model/operation"
"go-common/app/interface/main/creative/model/order"
"go-common/app/interface/main/creative/model/search"
artmdl "go-common/app/interface/openplatform/article/model"
"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"
)
func creatorMy(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mf, err := accSvc.MyInfo(c, mid, ip, time.Now())
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"myinfo": mf,
"viewinfo": whiteSvc.Viewinfo(mf),
}, nil)
}
func creatorIndex(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
req := c.Request
params := req.Form
ck := c.Request.Header.Get("cookie")
ak := params.Get("access_key")
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
// get data
var (
stat *data.Stat
elecStat *elec.UserState
elecBal *elec.Balance
elecEarnings *elec.Earnings
archives []*archive.ArcVideoAudit
banner []*operation.BannerCreator
replies *search.Replies
articles []*article.Meta
artStat artmdl.UpStat
dmRecent *danmu.DmRecent
creatorDataShow *data.CreatorDataShow
g = &errgroup.Group{}
ctx = context.TODO()
)
g.Go(func() error {
stat, _ = dataSvc.NewStat(ctx, mid, ip)
if stat != nil {
stat.Day30 = nil
stat.Arcs = nil
}
return nil
})
g.Go(func() error {
if arcs, err := arcSvc.WebArchives(ctx, mid, 0, "", "", "is_pubing,pubed,not_pubed", ip, 1, 2, 0); err == nil && arcs.Archives != nil {
archives = arcs.Archives
} else {
archives = make([]*archive.ArcVideoAudit, 0)
}
return nil
})
g.Go(func() error {
elecStat, _ = elecSvc.UserState(ctx, mid, ip, ak, ck)
elecEarnings = &elec.Earnings{}
if elecStat != nil && elecStat.State == "2" {
elecEarnings.State = 1
elecBal, _ = elecSvc.Balance(ctx, mid, ip)
if elecBal != nil && elecBal.Wallet != nil {
elecEarnings.Balance = elecBal.Wallet.SponsorBalance //充电数量
}
if elecBal != nil && elecBal.BpayAcc != nil {
elecEarnings.Brokerage = elecBal.BpayAcc.Brokerage //贝壳数量
}
}
return nil
})
g.Go(func() error {
_, banner, _ = operSvc.AppBanner(ctx)
return nil
})
g.Go(func() error {
if arts, err := artSvc.Articles(ctx, mid, 1, 2, 0, 0, 0, ip); err == nil && arts != nil && len(arts.Articles) != 0 {
articles = arts.Articles
} else {
articles = []*article.Meta{}
}
return nil
})
g.Go(func() error {
replies, _ = replySvc.AppIndexReplies(ctx, ak, ck, mid, 0, 0, 0, search.All, 0, "", "", "", ip, 1, 10)
if replies == nil {
replies = &search.Replies{}
}
return nil
})
g.Go(func() error {
artStat, _ = artSvc.ArticleStat(ctx, mid, ip)
return nil
})
g.Go(func() error {
dmRecent, _ = danmuSvc.Recent(ctx, mid, 1, 2, ip)
return nil
})
g.Wait()
creatorDataShow = &data.CreatorDataShow{}
if len(archives) > 0 {
creatorDataShow.Archive = 1
}
if len(articles) > 0 {
creatorDataShow.Article = 1
}
c.JSON(map[string]interface{}{
"archives": archives,
"archive_stat": stat,
"elec_earnings": elecEarnings,
"order_earnings": &order.OasisEarnings{},
"growth_earnings": &order.GrowthEarnings{},
"banner": banner,
"articles": articles,
"replies": replies,
"article_stat": artStat,
"data_show": creatorDataShow,
"danmu": dmRecent.List,
}, nil)
}
func creatorArchives(c *bm.Context) {
params := c.Request.Form
pageStr := params.Get("pn")
psStr := params.Get("ps")
order := params.Get("order")
tidStr := params.Get("tid")
keyword := params.Get("keyword")
class := params.Get("class")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
// check params
pn, _ := strconv.Atoi(pageStr)
if pn <= 0 {
pn = 1
}
ps, _ := strconv.Atoi(psStr)
if ps <= 0 || ps > 50 {
ps = 10
}
tid, _ := strconv.ParseInt(tidStr, 10, 16)
if tid <= 0 {
tid = 0
}
arc, err := arcSvc.WebArchives(c, mid, int16(tid), keyword, order, class, ip, pn, ps, 0)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(arc, nil)
}
func creatorEarnings(c *bm.Context) {
params := c.Request.Form
ip := metadata.String(c, metadata.RemoteIP)
ck := c.Request.Header.Get("cookie")
ak := params.Get("access_key")
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
var (
elecStat *elec.UserState
elecBal *elec.Balance
elecEarnings *elec.Earnings
g = &errgroup.Group{}
ctx = context.TODO()
)
g.Go(func() error {
elecStat, _ = elecSvc.UserState(ctx, mid, ip, ak, ck)
elecEarnings = &elec.Earnings{}
if elecStat != nil && elecStat.State == "2" {
elecEarnings.State = 1
elecBal, _ = elecSvc.Balance(c, mid, ip)
if elecBal != nil && elecBal.Wallet != nil {
elecEarnings.Balance = elecBal.Wallet.SponsorBalance //充电数量
}
if elecBal != nil && elecBal.BpayAcc != nil {
elecEarnings.Brokerage = elecBal.BpayAcc.Brokerage //贝壳数量
}
}
return nil
})
g.Wait()
cw := appMdl.EarningsCopyWriter{
Elec: "每月6日结算为贝壳6-10日可在PC上进行提现",
Growth: "每月1日结算为贝壳6-10日可在PC上进行提现",
Oasis: "请在PC上进行接单、投稿操作",
}
c.JSON(map[string]interface{}{
"elec_earnings": elecEarnings,
"order_earnings": &order.OasisEarnings{},
"growth_earnings": &order.GrowthEarnings{},
"copywriter": cw,
}, nil)
}
func creatorViewArc(c *bm.Context) {
req := c.Request
params := c.Request.Form
aidStr := params.Get("aid")
tidStr := params.Get("typeid")
title := params.Get("title")
filename := params.Get("filename")
desc := params.Get("desc")
cover := params.Get("cover")
ip := metadata.String(c, metadata.RemoteIP)
cookie := req.Header.Get("cookie")
ak := params.Get("access_key")
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", aidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
av, err := arcSvc.View(c, mid, aid, ip, archive.PlatformAndroid)
if err != nil {
c.JSON(nil, err)
return
}
if av == nil {
c.JSON(nil, ecode.NothingFound)
return
}
tid, _ := strconv.ParseInt(tidStr, 10, 16)
if tid < 0 {
tid = 0
}
ptags, _ := dataSvc.TagsWithChecked(c, mid, uint16(tid), title, filename, desc, cover, archive.TagPredictFromAPP)
elecArc, _ := elecSvc.ArchiveState(c, aid, mid, ip)
elecStat, _ := elecSvc.UserState(c, mid, ip, ak, cookie)
if elecArc == nil {
elecArc = &elec.ArcState{}
}
c.JSON(map[string]interface{}{
"archive": av.Archive,
"videos": av.Videos,
"predict_tag": ptags,
"arc_elec": elecArc,
"user_elec": elecStat,
}, nil)
}
func creatorVideoQuit(c *bm.Context) {
params := c.Request.Form
cidStr := params.Get("cid")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
cid, err := strconv.ParseInt(cidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", cidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
vq, err := dataSvc.AppVideoQuitPoints(c, cid, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(vq, nil)
}
func creatorBanner(c *bm.Context) {
params := c.Request.Form
pnStr := params.Get("pn")
psStr := params.Get("ps")
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
pn, err := strconv.Atoi(pnStr)
if err != nil || pn <= 0 {
pn = 1
}
ps, err := strconv.Atoi(psStr)
if err != nil || ps <= 0 || ps > 20 {
ps = 20
}
oper, err := operSvc.CreatorOperationList(c, pn, ps)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(oper, nil)
}
func creatorArchiveData(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", aidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
arcStat, err := dataSvc.ArchiveStat(c, aid, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
_, vds, _ := arcSvc.Videos(c, mid, aid, ip)
arcStat.Videos = vds
c.JSON(arcStat, nil)
}
func creatorDelArc(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", aidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, arcSvc.Del(c, mid, aid, ip))
}
func creatorArcTagInfo(c *bm.Context) {
params := c.Request.Form
tagNameStr := params.Get("tag_name")
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
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 creatorReplyList(c *bm.Context) {
req := c.Request
params := req.Form
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
isReport, err := strconv.Atoi(params.Get("is_report"))
if err != nil {
isReport = 0
}
tp, err := strconv.Atoi(params.Get("type"))
if err != nil {
tp = 1
}
oid, err := strconv.ParseInt(params.Get("oid"), 10, 64)
if err != nil {
oid = 0
}
pn, err := strconv.Atoi(params.Get("pn"))
if err != nil || pn < 1 {
pn = 1
}
ps, err := strconv.Atoi(params.Get("ps"))
if err != nil || ps <= 10 || ps > 100 {
ps = 10
}
p := &search.ReplyParam{
Ak: params.Get("access_key"),
Ck: c.Request.Header.Get("cookie"),
OMID: mid,
OID: oid,
Pn: pn,
Ps: ps,
IP: metadata.String(c, metadata.RemoteIP),
IsReport: int8(isReport),
Type: int8(tp),
FilterCtime: params.Get("filter"),
Kw: params.Get("keyword"),
Order: params.Get("order"),
}
replies, err := replySvc.Replies(c, p)
if err != nil {
c.JSON(nil, err)
return
}
c.JSONMap(map[string]interface{}{
"data": replies.Result,
"pager": map[string]int{
"pn": p.Pn,
"ps": p.Ps,
"total": replies.Total,
},
}, nil)
}
func creatorPre(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
params := c.Request.Form
lang := params.Get("lang")
if lang != "en" {
lang = "ch"
}
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mf, err := accSvc.MyInfo(c, mid, ip, time.Now())
if err != nil {
c.JSON(nil, err)
return
}
mf.Commercial = arcSvc.AllowCommercial(c, mid)
tpl, _ := tplSvc.Templates(c, mid)
c.JSON(map[string]interface{}{
"uploadinfo": whiteSvc.UploadInfoForCreator(mf, mid),
"typelist": arcSvc.AppTypes(c, lang),
"myinfo": mf,
"template": tpl,
}, nil)
}
func creatorPredictTag(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")
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
tid, _ := strconv.ParseInt(tidStr, 10, 16)
if tid < 0 {
tid = 0
}
ptags, _ := dataSvc.TagsWithChecked(c, mid, uint16(tid), title, filename, desc, cover, archive.TagPredictFromAPP)
c.JSON(ptags, nil)
}
func creatorDataArchive(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
req := c.Request
params := req.Form
tyStr := params.Get("type")
tmidStr := params.Get("tmid")
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
tmid, _ := strconv.ParseInt(tmidStr, 10, 64)
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
// check params
ty, err := strconv.Atoi(tyStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if _, ok := data.IncrTy(int8(ty)); !ok {
c.JSON(nil, ecode.RequestErr)
return
}
var (
arcStat []*data.ThirtyDay
archives []*archive.ArcVideoAudit
show int
g = &errgroup.Group{}
ctx = context.TODO()
)
log.Info("creatorDataArchive mid(%d) type(%d) access", mid, ty)
g.Go(func() error {
arcStat, err = dataSvc.ThirtyDayArchive(ctx, mid, int8(ty))
return nil
})
g.Go(func() error {
if arcs, err := arcSvc.WebArchives(ctx, mid, 0, "", "", "is_pubing,pubed,not_pubed", ip, 1, 2, 0); err == nil && arcs.Archives != nil {
archives = arcs.Archives
} else {
archives = make([]*archive.ArcVideoAudit, 0)
}
return nil
})
g.Wait()
if len(archives) > 0 {
show = 1
}
if arcStat == nil {
log.Info("creatorDataArchive mid(%d) type(%d) arcStat nil", mid, ty)
}
c.JSON(map[string]interface{}{
"archive_stat": arcStat,
"show": show,
}, nil)
}
func creatorDataArticle(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
req := c.Request
params := req.Form
tmidStr := params.Get("tmid")
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
tmid, _ := strconv.ParseInt(tmidStr, 10, 64)
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
var (
artStat []*artmdl.ThirtyDayArticle
articles []*article.Meta
show int
g = &errgroup.Group{}
ctx = context.TODO()
)
g.Go(func() error {
artStat, _ = dataSvc.ThirtyDayArticle(ctx, mid, ip)
return nil
})
g.Go(func() error {
if arts, err := artSvc.Articles(ctx, mid, 1, 2, 0, 0, 0, ip); err == nil && arts != nil && len(arts.Articles) != 0 {
articles = arts.Articles
} else {
articles = []*article.Meta{}
}
return nil
})
g.Wait()
if len(articles) > 0 {
show = 1
}
c.JSON(map[string]interface{}{
"article_stat": artStat,
"show": show,
}, nil)
}
func creatorDescFormat(c *bm.Context) {
params := c.Request.Form
ip := metadata.String(c, metadata.RemoteIP)
typeidStr := params.Get("typeid")
cpStr := params.Get("copyright")
lang := params.Get("lang")
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
typeid, err := strconv.ParseInt(typeidStr, 10, 16)
if typeid < 0 || err != nil {
typeid = 0
}
copyright, err := strconv.ParseInt(cpStr, 10, 16)
if copyright <= 0 || err != nil {
copyright = archive.CopyrightReprint
}
desc, length, err := arcSvc.DescFormatForApp(c, typeid, copyright, lang, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"desc_length": length,
"desc_format": desc,
}, nil)
}

View File

@@ -0,0 +1,194 @@
package http
import (
"strconv"
"go-common/app/interface/main/creative/model/article"
"go-common/app/interface/openplatform/article/model"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
)
func creatorArticlePre(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
var (
isAuthor int
reason string
)
ia, err := artSvc.IsAuthor(c, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
if ia {
isAuthor = 1
} else {
isAuthor = 0
reason = "您还未开通专栏权限请先在PC上进行申请"
}
c.JSON(map[string]interface{}{
"is_author": isAuthor,
"reason": reason,
"submit_url": "https://member.bilibili.com/article-text/mobile",
}, nil)
}
func creatorArticleList(c *bm.Context) {
params := c.Request.Form
pnStr := params.Get("pn")
psStr := params.Get("ps")
sortStr := params.Get("sort")
groupStr := params.Get("group")
categoryStr := params.Get("category")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
pn, err := strconv.Atoi(pnStr)
if err != nil || pn < 1 {
pn = 1
}
ps, err := strconv.Atoi(psStr)
if err != nil || ps <= 10 {
ps = 20
}
sort, err := strconv.Atoi(sortStr)
if err != nil || sort < 0 {
sort = 0
}
group, err := strconv.Atoi(groupStr)
if err != nil || group < 0 {
group = 0
}
category, err := strconv.Atoi(categoryStr)
if err != nil || category < 0 {
category = 0
}
arts, err := artSvc.Articles(c, mid, int(pn), int(ps), sort, group, category, ip)
if ecode.Cause(err) == ecode.ArtCreationNoPrivilege {
err = nil
}
if err != nil {
c.JSON(nil, err)
return
}
if arts == nil {
arts = &article.ArtList{
Articles: []*article.Meta{},
Type: &model.CreationArtsType{},
Page: &model.ArtPage{},
}
}
c.JSON(arts, nil)
}
func creatorArticle(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
art, err := artSvc.View(c, aid, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(art, nil)
}
func creatorDelArticle(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, artSvc.DelArticle(c, aid, mid, ip))
}
func creatorWithDrawArticle(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, artSvc.WithDrawArticle(c, aid, mid, ip))
}
func creatorDraftList(c *bm.Context) {
params := c.Request.Form
pnStr := params.Get("pn")
psStr := params.Get("ps")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
pn, err := strconv.Atoi(pnStr)
if err != nil || pn < 1 {
pn = 1
}
ps, err := strconv.Atoi(psStr)
if err != nil || ps <= 10 {
ps = 20
}
arts, err := artSvc.Drafts(c, mid, pn, ps, ip)
if ecode.Cause(err) == ecode.ArtCreationNoPrivilege {
err = nil
}
if err != nil {
c.JSON(nil, err)
return
}
if arts == nil {
arts = &article.DraftList{
Drafts: []*article.Meta{},
Page: &model.ArtPage{},
}
}
c.JSON(arts, nil)
}

View File

@@ -0,0 +1,152 @@
package http
import (
"strconv"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"go-common/library/xstr"
)
func creatorDmList(c *bm.Context) {
params := c.Request.Form
pnStr := params.Get("pn")
psStr := params.Get("ps")
idStr := params.Get("id")
pool := params.Get("pool")
midIStr := params.Get("mid")
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
aidStr := params.Get("aid")
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
id, err := strconv.ParseInt(idStr, 10, 64)
if err != nil || id <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
pn, err := strconv.Atoi(pnStr)
if err != nil || pn <= 0 {
pn = 1
}
ps, err := strconv.Atoi(psStr)
if err != nil || ps <= 0 {
ps = 20
}
ip := metadata.String(c, metadata.RemoteIP)
order := "progress"
orderStr := params.Get("order")
if orderStr != order {
order = "ctime"
}
list, err := danmuSvc.List(c, mid, aid, id, pn, ps, order, pool, midIStr, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(list, nil)
}
func creatorDmEdit(c *bm.Context) {
params := c.Request.Form
idStr := params.Get("cid")
dmidsStr := params.Get("dmids")
stateStr := params.Get("state")
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
id, err := strconv.ParseInt(idStr, 10, 64)
if err != nil || id <= 0 {
err = ecode.RequestErr
return
}
state, err := strconv.Atoi(stateStr)
if err != nil {
err = ecode.RequestErr
return
}
var dmids []int64
if dmids, err = xstr.SplitInts(dmidsStr); err != nil {
c.JSON(nil, ecode.RequestErr)
log.Error("xstr.SplitInts(dmidsStr %v) err(%v)", dmidsStr, err)
return
}
for _, dmid := range dmids {
if dmid <= 0 {
c.JSON(nil, ecode.RequestErr)
log.Error("dmids range err (dmid %d) err(%v)", dmid, err)
return
}
}
ip := metadata.String(c, metadata.RemoteIP)
err = danmuSvc.Edit(c, mid, id, int8(state), dmids, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func creatorDmRecent(c *bm.Context) {
params := c.Request.Form
pnStr := params.Get("pn")
psStr := params.Get("ps")
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
ip := metadata.String(c, metadata.RemoteIP)
var (
pn, ps int64
err error
)
if pn, err = strconv.ParseInt(pnStr, 10, 64); err != nil || pn < 1 {
pn = 1
}
if ps, err = strconv.ParseInt(psStr, 10, 64); err != nil || ps > 20 || ps < 1 {
ps = 20
}
order := "playtime"
orderStr := params.Get("order")
if orderStr != order {
order = "ctime"
}
recent, err := danmuSvc.Recent(c, mid, pn, ps, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(recent, nil)
}
func creatorDmEditBatch(c *bm.Context) {
params := c.Request.Form
paramsStr := params.Get("params")
midStr, _ := c.Get("mid")
mid := midStr.(int64)
if mid <= 0 {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
ip := metadata.String(c, metadata.RemoteIP)
err := danmuSvc.EditBatch(c, mid, paramsStr, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}

View File

@@ -0,0 +1,64 @@
package http
import (
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"strconv"
)
func gtPreProcessAdd(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
process, err := gtSvc.PreProcessAdd(c, mid, ip, "web", 1)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(process, nil)
}
func gtPreProcess(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
process, err := gtSvc.PreProcess(c, mid, ip, "web", 1)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(process, nil)
}
func gtValidate(c *bm.Context) {
req := c.Request
ip := metadata.String(c, metadata.RemoteIP)
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
challenge := req.Form.Get("geetest_challenge")
validate := req.Form.Get("geetest_validate")
seccode := req.Form.Get("geetest_seccode")
success := req.Form.Get("geetest_success")
successi, err := strconv.Atoi(success)
if err != nil {
successi = 1
}
status := gtSvc.Validate(c, challenge, validate, seccode, "web", ip, successi, mid)
if !status {
c.JSON(nil, ecode.CreativeGeetestErr)
}
c.JSON(nil, nil)
}

View File

@@ -0,0 +1,154 @@
package http
import (
"go-common/library/ecode"
"go-common/library/log"
"go-common/library/net/metadata"
bm "go-common/library/net/http/blademaster"
"strings"
)
func h5TaskBind(c *bm.Context) {
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
// check white list
if task := whiteSvc.TaskWhiteList(mid); task != 1 {
c.JSON(nil, ecode.RequestErr)
return
}
id, err := newcomerSvc.TaskBind(c, mid)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"id": id,
}, nil)
}
func h5TaskList(c *bm.Context) {
params := c.Request.Form
// check user
midStr, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid := midStr.(int64)
// check white list
if task := whiteSvc.TaskWhiteList(mid); task != 1 {
log.Warn("h5TaskList whiteSvc.TaskWhiteList mid(%d)", mid)
c.JSON(nil, ecode.RequestErr)
return
}
from := params.Get("from")
if !strings.EqualFold(from, "ios") && !strings.EqualFold(from, "android") {
c.JSON(nil, ecode.RequestErr)
return
}
tks, err := newcomerSvc.H5TaskList(c, mid, from)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(tks, nil)
}
func h5RewardReceive(c *bm.Context) {
params := c.Request.Form
ridStr := params.Get("reward_id")
rewardTypeStr := params.Get("reward_type")
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
ip := metadata.String(c, metadata.RemoteIP)
var (
err error
rewardID int64
rewardType int
)
rewardID, err = toInt64(ridStr)
if err != nil || rewardID <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
rewardType, err = toInt(rewardTypeStr)
if err != nil || rewardType < 0 {
c.JSON(nil, ecode.RequestErr)
return
}
msg, err := newcomerSvc.RewardReceive(c, mid, rewardID, int8(rewardType), ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"msg": msg,
}, nil)
}
func h5RewardActivate(c *bm.Context) {
params := c.Request.Form
idStr := params.Get("id")
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
id, err := toInt64(idStr)
if err != nil || id <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
ip := metadata.String(c, metadata.RemoteIP)
row, err := newcomerSvc.RewardActivate(c, mid, id, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"row": row,
}, nil)
}
func h5RewardReceiveList(c *bm.Context) {
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
recs, err := newcomerSvc.RewardReceives(c, mid)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(recs, nil)
}

View File

@@ -0,0 +1,567 @@
package http
import (
"context"
"go-common/app/interface/main/creative/conf"
"go-common/app/interface/main/creative/server/grpc"
"go-common/app/interface/main/creative/service"
"go-common/app/interface/main/creative/service/academy"
"go-common/app/interface/main/creative/service/account"
"go-common/app/interface/main/creative/service/ad"
"go-common/app/interface/main/creative/service/app"
"go-common/app/interface/main/creative/service/appeal"
"go-common/app/interface/main/creative/service/archive"
"go-common/app/interface/main/creative/service/article"
"go-common/app/interface/main/creative/service/assist"
"go-common/app/interface/main/creative/service/danmu"
"go-common/app/interface/main/creative/service/data"
"go-common/app/interface/main/creative/service/dynamic"
"go-common/app/interface/main/creative/service/elec"
"go-common/app/interface/main/creative/service/faq"
"go-common/app/interface/main/creative/service/feedback"
"go-common/app/interface/main/creative/service/geetest"
"go-common/app/interface/main/creative/service/medal"
"go-common/app/interface/main/creative/service/music"
"go-common/app/interface/main/creative/service/newcomer"
"go-common/app/interface/main/creative/service/operation"
"go-common/app/interface/main/creative/service/pay"
"go-common/app/interface/main/creative/service/reply"
"go-common/app/interface/main/creative/service/resource"
"go-common/app/interface/main/creative/service/staff"
"go-common/app/interface/main/creative/service/template"
"go-common/app/interface/main/creative/service/up"
"go-common/app/interface/main/creative/service/version"
"go-common/app/interface/main/creative/service/watermark"
"go-common/app/interface/main/creative/service/weeklyhonor"
"go-common/app/interface/main/creative/service/whitelist"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/antispam"
"go-common/library/net/http/blademaster/middleware/auth"
"go-common/library/net/http/blademaster/middleware/verify"
"go-common/library/net/rpc/warden"
)
var (
//app service
apSvc *appeal.Service
arcSvc *archive.Service
elecSvc *elec.Service
dataSvc *data.Service
accSvc *account.Service
tplSvc *template.Service
gtSvc *geetest.Service
replySvc *reply.Service
fdSvc *feedback.Service
operSvc *operation.Service
assistSvc *assist.Service
artSvc *article.Service
mdSvc *medal.Service
wmSvc *watermark.Service
appSvc *app.Service
danmuSvc *danmu.Service
vsSvc *version.Service
whiteSvc *whitelist.Service
adSvc *ad.Service
musicSvc *music.Service
resSvc *resource.Service
rpcdaos *service.RPCDaos
acaSvc *academy.Service
faqSvc *faq.Service
dymcSvc *dynamic.Service
honorSvc *weeklyhonor.Service
paySvc *pay.Service
// api middleware
verifySvc *verify.Verify
authSvc *auth.Auth
antispamSvc *antispam.Antispam
dmAnti *antispam.Antispam
//up service
upSvc *up.Service
// grpc TODO mv out http
grpcSvr *warden.Server
newcomerSvc *newcomer.Service
pubSvc *service.Public
staffSvc *staff.Service
)
// Init init account service.
func Init(c *conf.Config) {
// service
initService(c)
// init grpc
grpcSvr = grpc.New(nil, arcSvc, newcomerSvc)
engineOuter := bm.DefaultServer(c.BM.Outer)
// init outer router
outerRouter(engineOuter)
if err := engineOuter.Start(); err != nil {
log.Error("engineOuter.Start() error(%v) | config(%v)", err, c)
panic(err)
}
}
//Close for close server
func Close() {
grpcSvr.Shutdown(context.TODO())
}
func initService(c *conf.Config) {
verifySvc = verify.New(nil)
authSvc = auth.New(nil)
antispamSvc = antispam.New(c.RouterAntispam)
dmAnti = antispam.New(c.DmAntispam)
// public for injection
rpcdaos = service.NewRPCDaos(c)
pubSvc = service.New(c, rpcdaos)
// services
apSvc = appeal.New(c, rpcdaos)
arcSvc = archive.New(c, rpcdaos, pubSvc)
elecSvc = elec.New(c, rpcdaos)
dataSvc = data.New(c, rpcdaos, pubSvc)
accSvc = account.New(c, rpcdaos)
tplSvc = template.New(c, rpcdaos)
operSvc = operation.New(c, rpcdaos)
wmSvc = watermark.New(c, rpcdaos, pubSvc)
gtSvc = geetest.New(c, rpcdaos)
replySvc = reply.New(c, rpcdaos)
fdSvc = feedback.New(c, rpcdaos)
assistSvc = assist.New(c, rpcdaos)
artSvc = article.New(c, rpcdaos)
mdSvc = medal.New(c, rpcdaos, pubSvc)
appSvc = app.New(c, rpcdaos, pubSvc)
danmuSvc = danmu.New(c, rpcdaos)
vsSvc = version.New(c, rpcdaos)
whiteSvc = whitelist.New(c, rpcdaos)
adSvc = ad.New(c, rpcdaos)
musicSvc = music.New(c, rpcdaos, pubSvc)
resSvc = resource.New(c, rpcdaos)
acaSvc = academy.New(c, rpcdaos, pubSvc)
upSvc = up.New(c, rpcdaos)
faqSvc = faq.New(c, rpcdaos)
dymcSvc = dynamic.New(c, rpcdaos)
honorSvc = weeklyhonor.New(c, rpcdaos)
paySvc = pay.New(c, rpcdaos)
newcomerSvc = newcomer.New(c, rpcdaos)
staffSvc = staff.New(c, rpcdaos)
}
func webDanmuRouter(g *bm.RouterGroup) {
// manager
g.GET("/danmu/list", webDmList)
g.GET("/danmu/distri", webDmDistri)
g.POST("/danmu/edit", dmAnti.ServeHTTP, webDmEdit)
g.POST("/danmu/transfer", dmAnti.ServeHTTP, webDmTransfer)
g.POST("/danmu/pool", dmAnti.ServeHTTP, webDmUpPool)
// purchase
g.GET("/danmu/purchases", webListDmPurchases)
g.POST("/danmu/purchase/pass", dmAnti.ServeHTTP, webPassDmPurchase)
g.POST("/danmu/purchase/deny", dmAnti.ServeHTTP, webDenyDmPurchase)
g.POST("/danmu/purchase/cancel", dmAnti.ServeHTTP, webCancelDmPurchase)
// report
g.POST("/danmu/report/check", dmAnti.ServeHTTP, webDmReportCheck)
g.GET("/danmu/report", webDmReport)
// report
g.GET("/danmu/protect/archive", webDmProtectArchive)
g.GET("/danmu/protect/list", webDmProtectList)
g.POST("/danmu/protect/operation", dmAnti.ServeHTTP, webDmProtectOper)
}
func appDanmuRouter(g *bm.RouterGroup) {
g.GET("/danmu/list", authSvc.UserMobile, appDmList)
g.GET("/danmu/recent", authSvc.UserMobile, appDmRecent)
g.GET("/danmu/edit", authSvc.UserMobile, appDmEdit)
g.POST("/danmu/edit/batch", authSvc.UserMobile, appDmEditBatch)
}
func academyRouter(g *bm.RouterGroup) {
g.GET("/academy/archive/tags", webAcademyTags)
g.GET("/academy/archive/list", webAcademyArchives)
g.POST("/academy/feedback/add", webAddFeedBack)
}
//工单
func staffRouter(g *bm.RouterGroup) {
//申请单交互
g.POST("/staff/apply/submit", webApplySubmit)
//staff 申请解除
g.POST("/staff/apply/create", webApplyCreate)
}
func switchRouter(g *bm.RouterGroup) {
g.POST("/switch/set", setUpSwitch)
g.GET("/switch", upSwitch)
}
func webElecRouter(g *bm.RouterGroup) {
g.GET("/elec/user", webUserElec)
g.GET("/elec/notify", webElecNotify)
g.GET("/elec/status", webElecStatus)
g.GET("/elec/rank/recent", webElecRecentRank)
g.GET("/elec/rank/current", webElecCurrentRank)
g.GET("/elec/rank/toltal", webElecTotalRank)
g.GET("/elec/dailybill", webElecDailyBill)
g.GET("/elec/balance", webElecBalance)
g.POST("/elec/status/set", webElecUpStatus)
g.POST("/elec/user/update", webUserElecUpdate)
g.POST("/elec/arc/update", webArcElecUpdate)
g.GET("/elec/remark/list", webRemarkList)
g.GET("/elec/remark/detail", webRemarkDetail)
g.POST("/elec/remark/reply", webRemark)
g.GET("/elec/recent", webRecentElec)
}
func webAssistRouter(g *bm.RouterGroup) {
g.GET("/assist", webAssists)
g.GET("/assist/status", webAssistStatus)
g.GET("/assist/logs", webAssistLogs)
g.POST("/assist/add", webAssistAdd)
g.POST("/assist/del", webAssistDel)
g.POST("/assist/set", webAssistSet)
g.POST("/assist/log/revoc", webAssistLogRevoc)
}
func newcomerRouter(g *bm.RouterGroup) {
g.GET("/newcomer/task/list", webTaskList)
g.POST("/newcomer/reward/receive/add", webRewardReceive)
g.POST("/newcomer/reward/receive/activate", webRewardActivate)
g.GET("/newcomer/reward/receive/list", webRewardReceiveList)
g.POST("/newcomer/task/bind", webTaskBind)
g.GET("/newcomer/task/makeup", webTaskMakeup)
}
// outerRouter init inner router.
func outerRouter(e *bm.Engine) {
e.GET("/monitor/ping", ping)
g := e.Group("/x/web", authSvc.UserWeb)
{
webDanmuRouter(g)
academyRouter(g)
staffRouter(g)
switchRouter(g)
webElecRouter(g)
webAssistRouter(g)
newcomerRouter(g)
g.GET("/ugcpay/protocol", webUgcPayProtocol)
// mission
g.GET("/mission/protocol", webMissionProtocol)
// netsafe
g.POST("/ns/md5", webNsMd5)
//white
g.GET("/white", webWhite)
// archive.
g.GET("/archive/parts", webArchVideos)
g.GET("/archive/view", webViewArc)
g.GET("/archives", webArchives)
g.GET("/archive/staff/applies", webStaffApplies)
g.GET("/archive/pre", webViewPre)
g.GET("/archive/videos", webVideos)
g.POST("/archive/delete", webDelArc)
g.GET("/archive/tags", webTags)
g.GET("/archive/desc/format", webDescFormat)
// history
g.GET("/archive/history/list", webHistoryList)
g.GET("/archive/history/view", webHistoryView)
// ad
g.GET("/ad/game/list", webAdGameList)
// appeal.
g.GET("/appeal/list", webAppealList)
g.GET("/appeal/detail", webAppealDetail)
g.GET("/appeal/contact", webAppealContact)
g.POST("/appeal/add", webAppealAdd)
g.POST("/appeal/reply", antispamSvc.ServeHTTP, webAppealReply)
g.POST("/appeal/down", webAppealDown)
g.POST("/appeal/star", webAppealStar)
// cover list.
g.GET("/archive/covers", coverList)
g.GET("/archive/recovers", webRecommandCover)
// index.
g.GET("/index/stat", webIndexStat)
g.GET("/index/tool", webIndexTool)
g.GET("/index/full", webIndexFull) //collect_arc
g.GET("/index/notify", webIndexNotify)
g.GET("/index/operation", webIndexOper)
g.GET("/index/version", webIndexVersion)
g.GET("/index/newcomer", webIndexNewcomer)
// data
g.GET("/data/videoquit", webVideoQuitPoints)
g.GET("/data/archive", webArchive)
g.GET("/data/article", webArticleData)
g.GET("/data/base", base)
g.GET("/data/trend", trend)
g.GET("/data/action", action)
g.GET("/data/survey", survey)
g.GET("/data/pandect", pandect)
g.GET("/data/fan", webFan)
g.GET("/data/playsource", webPlaySource)
g.GET("/data/playanalysis", webArcPlayAnalysis)
g.GET("/data/article/thirty", webArtThirtyDay)
g.GET("/data/article/rank", webArtRank)
g.GET("/data/article/source", webArtReadAnalysis)
// water mark
g.GET("/watermark", waterMark)
g.POST("/watermark/set", waterMarkSet)
// feedback
g.GET("/feedbacks", webFeedbacks)
g.GET("/feedback/detail", webFeedbackDetail)
g.GET("/feedback/tags", webFeedbackTags)
g.GET("/feedback/newtags", webFeedbackNewTags)
g.POST("/feedback/add", webFeedbackAdd)
g.POST("/feedback/close", webFeedbackClose)
// reply
g.GET("/replies", replyList)
// template.
g.GET("/tpls", webTemplates)
g.POST("/tpl/add", webAddTpl)
g.POST("/tpl/update", webUpdateTpl)
g.POST("/tpl/delete", webDelTpl)
// fans medal
g.GET("/medal/status", webMedalStatus)
g.GET("/medal/recent", webRecentFans)
g.POST("/medal/open", webMedalOpen)
g.POST("/medal/check", webMedalCheck)
g.GET("/medal/rank", webMedalRank)
g.POST("/medal/rename", webMedalRename)
g.GET("/medal/fans", webFansMedal)
// article.
g.GET("/article/author", webAuthor)
g.GET("/article/view", webArticle)
g.GET("/article/list", webArticleList)
g.GET("/article/pre", webArticlePre)
g.POST("/article/submit", webSubArticle)
g.POST("/article/update", webUpdateArticle)
g.POST("/article/delete", webDelArticle)
g.POST("/article/withdraw", webWithDrawArticle)
g.POST("/article/upcover", antispamSvc.ServeHTTP, webArticleUpCover)
g.GET("/draft/view", webDraft)
g.GET("/draft/list", webDraftList)
g.POST("/draft/addupdate", webSubmitDraft)
g.POST("/draft/delete", webDeleteDraft)
g.POST("/article/capture", antispamSvc.ServeHTTP, webArticleCapture)
// cm
g.GET("/cm/oasis/stat", webCmOasisStat)
// common
g.GET("/user/mid", webUserMid)
g.GET("/user/search", webUserSearch)
//viewpoint
g.GET("/viewpoints", webViewPoints)
//g.POST("/viewpoints/edit", webViewPointsEdit)
}
h5 := e.Group("/x/h5")
{
// app h5 cooperate pager
h5.GET("/cooperate/pre", authSvc.User, appCooperatePre)
// bgm
h5.GET("/bgm/ext", authSvc.User, appBgmExt)
// faq
h5.GET("/faq/editor", authSvc.User, appH5FaqEditor)
h5.POST("/bgm/feedback", authSvc.User, appH5BgmFeedback)
h5.GET("/elec/bill", authSvc.User, appElecBill)
h5.GET("/elec/rank/recent", authSvc.User, appElecRecentRank)
h5.GET("/medal/status", authSvc.User, appMedalStatus)
h5.POST("/medal/check", authSvc.User, appMedalCheck)
h5.POST("/medal/open", authSvc.User, appMedalOpen)
h5.POST("/medal/rename", authSvc.User, appMedalRename)
//academy
h5.POST("/academy/play/add", authSvc.Guest, h5AddPlay) //添加播放
h5.POST("/academy/play/del", authSvc.Guest, h5DelPlay) //删除播放
h5.GET("/academy/play/list", authSvc.User, h5PlayList) //我的课程
h5.GET("/academy/play/view", authSvc.User, h5ViewPlay) //查看我的课程
h5.GET("/academy/theme/dir", h5ThemeDir) //主题课程目录 对应职业列表
h5.GET("/academy/newb/course", h5NewbCourse) //新人课程
h5.GET("/academy/tag", h5Tags) //标签目录
h5.GET("/academy/archive", h5Archive) //课程列表
h5.GET("/academy/feature", h5Feature) //精选课程
h5.GET("/academy/recommend/v2", authSvc.Guest, h5RecommendV2) //推荐课程v2
h5.GET("/academy/theme/course/v2", h5ThemeCousreV2) //技能树主题课程v2
h5.GET("/academy/keywords", h5Keywords) //搜索关键词提示
// data center
h5.GET("/data/archive", authSvc.User, appDataArc)
h5.GET("/data/videoquit", authSvc.User, appDataVideoQuit)
h5.GET("/data/fan", authSvc.User, appFan) //粉丝用户信息分析总览
h5.GET("/data/fan/rank", authSvc.User, appFanRank) //新粉丝排行榜
h5.GET("/data/overview", authSvc.User, appOverView) //新数据概览
h5.GET("/data/archive/analyze", authSvc.User, appArchiveAnalyze) //新稿件数据分析
h5.GET("/data/video/retention", authSvc.User, appVideoRetention) //新视频播放完成度
h5.GET("/data/article", authSvc.User, appDataArticle)
h5.GET("/archives/simple", authSvc.User, appSimpleArcVideos)
// watermark
h5.GET("/watermark", authSvc.User, waterMark)
h5.POST("/watermark/set", authSvc.User, waterMarkSet)
// up weekly honor
h5.GET("/weeklyhonor", authSvc.Guest, weeklyHonor)
// switch weekly honor subscribe
h5.POST("/weeklyhonor/subscribe", authSvc.User, weeklyHonorSubSwitch)
// task system
h5.POST("/task/bind", authSvc.User, h5TaskBind)
h5.GET("/task/list", authSvc.User, h5TaskList)
h5.POST("/task/reward/receive", authSvc.User, h5RewardReceive)
h5.POST("/task/reward/activate", authSvc.User, h5RewardActivate)
h5.GET("/task/reward/list", authSvc.User, h5RewardReceiveList)
h5.GET("/task/pub/list", authSvc.User, taskPubList) //其他业务方查看任务列表
}
app := e.Group("/x/app")
{
appDanmuRouter(app)
// h5
app.GET("/h5/pre", authSvc.User, appH5Pre)
app.GET("/h5/mission/type", authSvc.User, appH5MissionByType)
app.GET("/h5/archive/tags", authSvc.User, appH5ArcTags)
app.GET("/h5/archive/tag/info", authSvc.User, appH5ArcTagInfo)
app.GET("/banner", authSvc.User, appBanner)
// archive
app.GET("/mission/type", authSvc.UserMobile, appMissionByType)
app.GET("/index", authSvc.User, appIndex)
app.GET("/archives", authSvc.UserMobile, appArchives)
app.GET("/archives/simple", authSvc.UserMobile, appSimpleArcVideos)
app.GET("/up/info", authSvc.UserMobile, appUpInfo)
// main app features
app.GET("/pre", authSvc.User, appPre)
app.GET("/archive/pre", authSvc.User, appArchivePre)
app.GET("/archive/desc/format", authSvc.UserMobile, appArcDescFormat)
app.GET("/archive/view", authSvc.UserMobile, appArcView)
app.POST("/archive/delete", authSvc.UserMobile, appArcDel)
// reply.
app.GET("/replies", authSvc.UserMobile, appReplyList)
// data
app.GET("/data/archive", authSvc.UserMobile, appDataArc)
app.GET("/data/videoquit", authSvc.UserMobile, appDataVideoQuit)
app.GET("/data/fan", authSvc.UserMobile, appFan)
app.GET("/data/fan/rank", authSvc.UserMobile, appFanRank) //新粉丝排行榜
app.GET("/data/overview", authSvc.UserMobile, appOverView) //新数据概览
app.GET("/data/archive/analyze", authSvc.UserMobile, appArchiveAnalyze) //新稿件数据分析
app.GET("/data/video/retention", authSvc.UserMobile, appVideoRetention) //新视频播放完成度
app.GET("/data/article", authSvc.UserMobile, appDataArticle)
// elec
app.GET("/elec/bill", authSvc.UserMobile, appElecBill)
app.GET("/elec/rank/recent", authSvc.UserMobile, appElecRecentRank)
// fans medal
app.GET("/medal/status", authSvc.UserMobile, appMedalStatus)
app.POST("/medal/check", authSvc.UserMobile, appMedalCheck)
app.POST("/medal/open", authSvc.UserMobile, appMedalOpen)
app.POST("/medal/rename", authSvc.UserMobile, appMedalRename)
// article
app.GET("/article/list", authSvc.UserMobile, appArticleList)
// material
app.GET("/material/pre", authSvc.UserMobile, appMaterialPre)
app.GET("/material/view", authSvc.UserMobile, appMaterial)
// bgm
app.GET("/bgm/pre", authSvc.UserMobile, appBgmPre)
app.GET("/bgm/list", authSvc.UserMobile, appBgmList)
app.GET("/bgm/view", authSvc.UserMobile, appBgmView)
app.GET("/bgm/search", authSvc.UserMobile, appBgmSearch)
app.GET("/cooperate/view", authSvc.User, appCooperate)
// task
app.POST("/newcomer/task/bind", authSvc.UserMobile, appTaskBind)
}
cli := e.Group("/x/client", authSvc.User)
{
// archive.
cli.GET("/archives", clientArchives)
cli.GET("/archive/search", clientArchiveSearch)
cli.GET("/archive/view", clientViewArc)
cli.POST("/archive/delete", clientDelArc)
cli.GET("/archive/pre", clientPre)
cli.GET("/archive/tags", clientTags)
// template.
cli.GET("/tpls", clientTemplates)
cli.POST("/tpl/add", clientAddTpl)
cli.POST("/tpl/update", clientUpdateTpl)
cli.POST("/tpl/delete", clientDelTpl)
// cover list.
cli.GET("/archive/covers", coverList)
}
geeg := e.Group("/x/geetest", authSvc.UserWeb)
{
// geetest.
geeg.GET("/pre", gtPreProcess)
geeg.POST("/validate", gtValidate)
geeg.GET("/pre/add", gtPreProcessAdd)
}
creator := e.Group("/x/creator", authSvc.UserMobile)
{
// index
creator.GET("/my", creatorMy)
creator.GET("/index", creatorIndex)
creator.GET("/earnings", creatorEarnings)
creator.GET("/banner", creatorBanner)
creator.GET("/replies", creatorReplyList)
//archive
creator.GET("/archives", creatorArchives)
creator.GET("/archive/tag/info", creatorArcTagInfo)
creator.GET("/archive/view", creatorViewArc)
creator.GET("/archive/videoquit", creatorVideoQuit)
creator.GET("/archive/data", creatorArchiveData)
creator.POST("/archive/delete", creatorDelArc)
creator.GET("/archive/pre", creatorPre)
creator.GET("/archive/tags", creatorPredictTag)
creator.GET("/archive/desc/format", creatorDescFormat)
// article
creator.GET("/article/pre", creatorArticlePre)
creator.GET("/article/list", creatorArticleList)
creator.GET("/article/view", creatorArticle)
creator.POST("/article/delete", creatorDelArticle)
creator.POST("/article/withdraw", creatorWithDrawArticle)
creator.GET("/draft/list", creatorDraftList)
// danmu
creator.GET("/danmu/list", creatorDmList)
creator.GET("/danmu/recent", creatorDmRecent)
creator.POST("/danmu/edit", creatorDmEdit)
creator.POST("/danmu/edit/batch", creatorDmEditBatch)
//data
creator.GET("/data/archive", creatorDataArchive)
creator.GET("/data/article", creatorDataArticle)
}
i := e.Group("/x/internal/creative", verifySvc.Verify)
{
// TODO deprecated
i.GET("/porder", upPorder)
// for main app
i.GET("/app/pre", appNewPre)
// get order game info for app
i.GET("/arc/commercial", arcCommercial)
i.POST("/watermark/set", waterMarkSetInternal)
i.GET("/order/game", arcOrderGameInfo)
i.POST("/upload/material", uploadMaterial)
i.POST("/join/growup/account", growAccountStateInternal)
i.GET("/video/viewpoints", videoViewPoints)
i.GET("/archive/bgm", arcBgmList)
i.GET("/archive/staff", arcStaff)
i.GET("/archive/vote", voteAcsByTime)
//联合投稿配置
i.GET("/staff/config", staffConfig)
// data
i.GET("/data/videoquit", setContextMid, webVideoQuitPoints)
i.GET("/data/archive", setContextMid, webArchive)
i.GET("/data/article", setContextMid, webArticleData)
i.GET("/data/base", setContextMid, base)
i.GET("/data/trend", setContextMid, trend)
i.GET("/data/action", setContextMid, action)
i.GET("/data/survey", setContextMid, survey)
i.GET("/data/pandect", setContextMid, pandect)
i.GET("/data/fan", setContextMid, webFan)
i.GET("/data/playsource", setContextMid, webPlaySource)
i.GET("/data/playanalysis", setContextMid, webArcPlayAnalysis)
i.GET("/data/article/thirty", setContextMid, webArtThirtyDay)
i.GET("/data/article/rank", setContextMid, webArtRank)
i.GET("/data/article/source", setContextMid, webArtReadAnalysis)
// archive
i.GET("/archives", setContextMid, webArchives)
// videos
i.GET("/archive/videos", setContextMid, webVideos)
// history
i.GET("/archive/history/list", setContextMid, webHistoryList)
// danmu
i.GET("/danmu/distri", setContextMid, webDmDistri)
// up weekly honor
i.GET("/task/pub/list", setContextMid, taskPubList) //其他业务方查看任务列表
}
}

View File

@@ -0,0 +1,17 @@
package http
import (
"net/http"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
// ping check server ok.
func ping(c *bm.Context) {
var err error
if err = apSvc.Ping(c); err != nil {
log.Error("creative-interface ping error(%v)", err)
c.AbortWithStatus(http.StatusServiceUnavailable)
}
}

View File

@@ -0,0 +1,11 @@
package http
import (
bm "go-common/library/net/http/blademaster"
)
// staffConfig 获取联合投稿配置
func staffConfig(c *bm.Context) {
res := staffSvc.Config()
c.JSON(res, nil)
}

View File

@@ -0,0 +1,55 @@
package http
import (
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"strconv"
)
func upPorder(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
pd, err := arcSvc.Porder(c, aid)
if err != nil {
c.JSON(nil, err)
return
}
if pd == nil || pd.ID == 0 {
c.JSON(nil, ecode.NothingFound)
return
}
c.JSON(pd, nil)
}
func arcOrderGameInfo(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
platformStr := params.Get("platform")
platform, err := strconv.Atoi(platformStr)
if err != nil || platform <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
ip := metadata.String(c, metadata.RemoteIP)
gameInfo, err := arcSvc.ArcOrderGameInfo(c, aid, platform, ip)
if err != nil {
c.JSON(nil, err)
return
}
if gameInfo == nil {
c.JSON(nil, ecode.NothingFound)
return
}
c.JSON(gameInfo, nil)
}

View File

@@ -0,0 +1,60 @@
package http
import (
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"strconv"
)
func upSwitch(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
rs, err := upSvc.UpSwitch(c, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
rs.Show = 1 //播放开关全量
c.JSON(rs, nil)
}
func setUpSwitch(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
params := c.Request.Form
stateStr := params.Get("state")
fromStr := params.Get("from")
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
state, err := strconv.Atoi(stateStr)
if err != nil {
log.Error("strconv.Atoi(%s) error(%v)", stateStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
from, err := strconv.Atoi(fromStr)
if err != nil {
log.Error("strconv.Atoi(%s) error(%v)", fromStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
mid, _ := midI.(int64)
id, err := upSvc.SetUpSwitch(c, mid, state, from, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"id": id,
}, nil)
}

View File

@@ -0,0 +1,60 @@
package http
import (
"encoding/json"
"go-common/app/interface/main/creative/model/app"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"io/ioutil"
"strconv"
"strings"
)
func coverList(c *bm.Context) {
params := c.Request.Form
fnsStr := params.Get("fns")
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
cvs, err := dataSvc.Covers(c, mid, strings.Split(fnsStr, ","), metadata.String(c, metadata.RemoteIP))
if err != nil {
log.Error(" arcSvc.CoverList fnsStr(%s), mid(%d), ip(%s) error(%v)", fnsStr, mid, metadata.String(c, metadata.RemoteIP), err)
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(cvs, nil)
}
func uploadMaterial(c *bm.Context) {
req := c.Request
params := req.Form
var (
err error
aid int64
bs []byte
)
aidStr := params.Get("aid")
if aid, err = strconv.ParseInt(aidStr, 10, 64); err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", aidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
if bs, err = ioutil.ReadAll(req.Body); err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
req.Body.Close()
var editors = &[]*app.Editor{}
if err = json.Unmarshal(bs, editors); err != nil {
log.Error("uploadMaterial json.Unmarshal(%s) error(%v)", string(bs), err)
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(appSvc.UploadMaterial(c, aid, *editors), nil)
}

View File

@@ -0,0 +1,33 @@
package http
import (
"go-common/app/interface/main/creative/model/archive"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"strconv"
)
// videoViewPoints get video highlight viewpoints
func videoViewPoints(c *bm.Context) {
var (
aid, cid int64
err error
form = c.Request.Form
vp *archive.ViewPointRow
)
if aid, err = strconv.ParseInt(form.Get("aid"), 10, 64); err != nil || aid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
if cid, err = strconv.ParseInt(form.Get("cid"), 10, 64); err != nil || cid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
if vp, err = arcSvc.VideoPoints(c, aid, cid); err != nil {
log.Error("arcSvc.VideoPoints(%d,%d) error(%v)", aid, cid, err)
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(vp, nil)
}

View File

@@ -0,0 +1,129 @@
package http
import (
"strconv"
"go-common/app/interface/main/creative/model/watermark"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
)
func waterMark(c *bm.Context) {
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
wm, err := wmSvc.WaterMark(c, mid)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(wm, nil)
}
func waterMarkSet(c *bm.Context) {
params := c.Request.Form
stStr := params.Get("state")
tyStr := params.Get("type")
posStr := params.Get("position")
ip := metadata.String(c, metadata.RemoteIP)
var (
err error
wm *watermark.Watermark
ty, pos, st int64
)
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
if ty, err = strconv.ParseInt(tyStr, 10, 8); err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", tyStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
if pos, err = strconv.ParseInt(posStr, 10, 8); err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", posStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
if st, err = strconv.ParseInt(stStr, 10, 8); err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", stStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
wm, err = wmSvc.WaterMarkSet(c, &watermark.WatermarkParam{
MID: mid,
State: int8(st),
Ty: int8(ty),
Pos: int8(pos),
IP: ip,
})
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(wm, nil)
}
func waterMarkSetInternal(c *bm.Context) {
params := c.Request.Form
stStr := params.Get("state")
tyStr := params.Get("type")
posStr := params.Get("position")
midStr := params.Get("mid")
syncStr := params.Get("sync")
ip := metadata.String(c, metadata.RemoteIP)
var (
err error
mid, ty, pos, st int64
sync int
)
mid, err = strconv.ParseInt(midStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", midStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
ty, err = strconv.ParseInt(tyStr, 10, 8)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", tyStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
pos, err = strconv.ParseInt(posStr, 10, 8)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", posStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
st, err = strconv.ParseInt(stStr, 10, 8)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", stStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
if syncStr != "" {
sync, err = strconv.Atoi(syncStr)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", syncStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
}
wmSvc.AsyncWaterMarkSet(&watermark.WatermarkParam{
MID: mid,
State: int8(st),
Ty: int8(ty),
Pos: int8(pos),
Sync: int8(sync),
IP: ip,
})
c.JSON(nil, nil)
}

View File

@@ -0,0 +1,551 @@
package http
import (
"context"
"strconv"
"time"
"go-common/app/interface/main/creative/conf"
accmdl "go-common/app/interface/main/creative/model/account"
arcMdl "go-common/app/interface/main/creative/model/archive"
"go-common/app/interface/main/creative/model/danmu"
elecMdl "go-common/app/interface/main/creative/model/elec"
"go-common/app/interface/main/creative/model/order"
porderM "go-common/app/interface/main/creative/model/porder"
"go-common/app/interface/main/creative/model/tag"
"go-common/app/interface/main/creative/model/watermark"
accSvcModel "go-common/app/service/main/account/model"
"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"
)
func webViewArc(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
hidStr := params.Get("history")
ip := metadata.String(c, metadata.RemoteIP)
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", aidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
var (
elecArc *elecMdl.ArcState
archive *arcMdl.Archive
videos []*arcMdl.Video
staffs []*arcMdl.StaffView
sMids []int64
sMap map[int64]*accSvcModel.Info
wm *watermark.Watermark
g = &errgroup.Group{}
ctx = context.TODO()
subtitle *danmu.SubtitleSubjectReply
)
g.Go(func() error {
elecArc, _ = elecSvc.ArchiveState(ctx, aid, mid, ip)
return nil
})
g.Go(func() error {
var (
av *arcMdl.ArcVideo
)
if av, err = arcSvc.View(ctx, mid, aid, ip, arcMdl.PlatformWeb); err == nil && av != nil {
archive = av.Archive
videos = av.Videos
staffs = av.Archive.Staffs
} else {
archive = &arcMdl.Archive{}
videos = []*arcMdl.Video{}
staffs = []*arcMdl.StaffView{}
}
return err
})
g.Go(func() error {
wm, _ = wmSvc.WaterMark(c, mid)
return nil
})
g.Go(func() error {
subtitle, _ = danmuSvc.SubView(c, aid, ip)
return nil
})
if err = g.Wait(); err != nil {
c.JSON(nil, err)
return
}
for _, v := range staffs {
sMids = append(sMids, v.ApMID)
}
if sMap, err = accSvc.Infos(c, sMids, ip); err != nil {
log.Error("accSvc.Infos(%v) error(%v)", sMids, err)
err = nil
}
for k, v := range staffs {
if m, ok := sMap[v.ApMID]; ok {
staffs[k].ApName = m.Name
}
}
hid, err := strconv.ParseInt(hidStr, 10, 64)
if err == nil && hid > 0 {
history, err := arcSvc.HistoryView(c, mid, hid, ip)
if err == nil && history.Mid > 0 {
archive.Title = history.Title
archive.Desc = history.Content
archive.Cover = history.Cover
videos = history.Video
}
}
c.JSON(map[string]interface{}{
"archive": archive,
"videos": videos,
"staffs": staffs,
"arc_elec": elecArc,
"watermark": wm,
"tip": vsSvc.WebManagerTip,
"subtitle": subtitle,
}, nil)
}
func webArchives(c *bm.Context) {
params := c.Request.Form
pageStr := params.Get("pn")
psStr := params.Get("ps")
order := params.Get("order")
tidStr := params.Get("tid")
keyword := params.Get("keyword")
class := params.Get("status")
tmidStr := params.Get("tmid")
ip := metadata.String(c, metadata.RemoteIP)
var tmid int64
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, ok := midI.(int64)
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
if tmidStr != "" {
tmid, _ = strconv.ParseInt(tmidStr, 10, 64)
}
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
// check params
pn, _ := strconv.Atoi(pageStr)
if pn <= 0 {
pn = 1
}
ps, _ := strconv.Atoi(psStr)
if ps <= 0 || ps > 20 {
ps = 10
}
coop, _ := strconv.Atoi(params.Get("coop"))
if coop > 0 {
coop = 1
}
tid, _ := strconv.ParseInt(tidStr, 10, 16)
if tid <= 0 {
tid = 0
}
arc, err := arcSvc.WebArchives(c, mid, int16(tid), keyword, order, class, ip, pn, ps, coop)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(arc, nil)
}
func webStaffApplies(c *bm.Context) {
params := c.Request.Form
pageStr := params.Get("pn")
psStr := params.Get("ps")
tidStr := params.Get("tid")
keyword := params.Get("keyword")
state := params.Get("state")
tmidStr := params.Get("tmid")
//check user
var tmid int64
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
if tmidStr != "" {
tmid, _ = strconv.ParseInt(tmidStr, 10, 64)
}
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
// check params
pn, _ := strconv.Atoi(pageStr)
if pn <= 0 {
pn = 1
}
ps, _ := strconv.Atoi(psStr)
if ps <= 0 || ps > 20 {
ps = 10
}
tid, _ := strconv.ParseInt(tidStr, 10, 16)
if tid <= 0 {
tid = 0
}
arc, err := arcSvc.ApplySearch(c, mid, int16(tid), keyword, state, pn, ps)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(arc, nil)
}
func webViewPre(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
params := c.Request.Form
lang := params.Get("lang")
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
var (
err error
mf *accmdl.MyInfo
g = &errgroup.Group{}
ctx = context.TODO()
industryList, showtypeList []*porderM.Config
orders = make([]*order.Order, 0)
videoJam *arcMdl.VideoJam
dymcLottery bool
wm *watermark.Watermark
prePay map[string]interface{}
staffConf struct {
TypeList []*conf.StaffTypeConf `json:"typelist"`
Titles []*tag.StaffTitle `json:"titles"`
}
)
g.Go(func() error {
mf, err = accSvc.MyInfo(ctx, mid, ip, time.Now())
if err != nil {
log.Info("accSvc.MyInfo (%d) err(%v)", mid, err)
}
if mf != nil {
mf.Commercial = arcSvc.AllowCommercial(ctx, mid)
}
return nil
})
g.Go(func() error {
industryList, _ = adSvc.IndustryList(ctx)
showtypeList, _ = adSvc.ShowList(ctx)
return nil
})
g.Go(func() error {
if arcSvc.AllowOrderUps(mid) {
orders, _ = arcSvc.ExecuteOrders(ctx, mid, ip)
}
return nil
})
g.Go(func() error {
videoJam, _ = arcSvc.VideoJam(ctx, ip)
return nil
})
g.Go(func() error {
dymcLottery, _ = dymcSvc.LotteryUserCheck(ctx, mid)
return nil
})
g.Go(func() error {
wm, err = wmSvc.WaterMark(ctx, mid)
if err != nil {
log.Info("wmSvc.WaterMark (%d) err(%+v) WaterMark(%+v)", mid, err, wm)
}
if len(wm.URL) == 0 {
wm.State = 1
}
return nil
})
g.Go(func() error {
prePay, err = paySvc.Pre(ctx, mid)
return nil
})
g.Wait()
if mf != nil {
mf.DymcLottery = dymcLottery
}
staffConf.Titles = arcSvc.StaffTitles(ctx)
staffConf.TypeList = staffSvc.TypeConfig()
c.JSON(map[string]interface{}{
"prepay": prePay,
"video_jam": videoJam,
"typelist": arcSvc.Types(c, lang),
"activities": arcSvc.Activities(c),
"myinfo": mf,
"orders": orders,
"industry_list": industryList,
"showtype_list": showtypeList,
"watermark": wm,
"fav": arcSvc.Fav(c, mid),
"tip": vsSvc.WebManagerTip,
"staff_conf": staffConf,
}, nil)
}
func webDelArc(c *bm.Context) {
req := c.Request
ip := metadata.String(c, metadata.RemoteIP)
parmes := req.Form
challenge := parmes.Get("geetest_challenge")
validate := parmes.Get("geetest_validate")
seccode := parmes.Get("geetest_seccode")
success := req.Form.Get("geetest_success")
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
aid, err := strconv.ParseInt(parmes.Get("aid"), 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%d) error(%v)", aid, err)
c.JSON(nil, ecode.RequestErr)
return
}
successi, err := strconv.Atoi(success)
if err != nil {
successi = 1
}
if gtSvc.Validate(c, challenge, validate, seccode, "web", ip, successi, mid) {
c.JSON(nil, arcSvc.Del(c, mid, aid, ip))
} else {
c.JSON(nil, ecode.CreativeGeetestErr)
}
}
func webVideos(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
params := c.Request.Form
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
aidStr := params.Get("aid")
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", aidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
archive, videos, err := arcSvc.Videos(c, mid, aid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"archive": archive,
"videos": videos,
}, nil)
}
func webDescFormat(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
params := c.Request.Form
typeidStr := params.Get("typeid")
cpStr := params.Get("copyright")
lang := params.Get("lang")
_, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
typeid, err := strconv.ParseInt(typeidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", typeidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
copyright, err := strconv.ParseInt(cpStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", typeidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
if copyright != 1 && copyright != 2 {
log.Error("strconv.ParseInt(%s) error(%v)", typeidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
format, err := arcSvc.DescFormat(c, typeid, copyright, lang, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(format, nil)
}
func webViewPoints(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
params := c.Request.Form
aidStr := params.Get("aid")
cidStr := params.Get("cid")
midStr, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, ok := midStr.(int64)
if !ok {
log.Error("mid(%s) to int64 not ok", midStr)
c.JSON(nil, ecode.RequestErr)
return
}
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", aidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
cid, err := strconv.ParseInt(cidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", cidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
vps, err := arcSvc.WebViewPoints(c, aid, cid, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(vps, nil)
}
/*func webViewPointsEdit(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
params := c.Request.Form
aidStr := params.Get("aid")
cidStr := params.Get("cid")
midStr, ok := c.Get("mid")
pointStr := params.Get("points")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, ok := midStr.(int64)
if !ok {
log.Error("mid(%s) to int64 not ok", midStr)
c.JSON(nil, ecode.RequestErr)
return
}
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", aidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
cid, err := strconv.ParseInt(cidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", cidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
err := arcSvc.WebViewPointsEdit(c, aid, cid, mid, vp, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
*/
func webUserSearch(c *bm.Context) {
var (
err error
searchUp []*accmdl.SearchUp
accCards map[int64]*accSvcModel.Card
relas map[int64]int
mids []int64
g = &errgroup.Group{}
)
searchUp = make([]*accmdl.SearchUp, 0)
accCards = make(map[int64]*accSvcModel.Card)
relas = make(map[int64]int)
params := c.Request.Form
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
kw := params.Get("kw")
ip := metadata.String(c, metadata.RemoteIP)
inMid, _ := strconv.ParseInt(kw, 10, 64)
nickMid, err := danmuSvc.UserMid(c, kw, ip)
if err != nil {
c.JSON(nil, err)
return
}
if nickMid != 0 && nickMid != mid {
mids = append(mids, nickMid)
}
if inMid != 0 && inMid != nickMid && inMid != mid {
mids = append(mids, inMid)
}
if len(mids) == 0 {
c.JSON(map[string]interface{}{
"users": []*accmdl.SearchUp{},
}, nil)
return
}
g.Go(func() error {
if accCards, err = accSvc.Cards(c, mids, ip); err != nil {
log.Error("accSvc.Infos(%v) error(%v)", mids, err)
return err
}
return nil
})
g.Go(func() error {
if relas, err = accSvc.FRelations(c, mid, mids, ip); err != nil {
log.Error("accSvc.Relations(%d,%v) error(%v)", mid, mids, err)
return err
}
return nil
})
if err = g.Wait(); err != nil {
c.JSON(nil, err)
return
}
for _, v := range accCards {
up := &accmdl.SearchUp{
Mid: v.Mid,
Name: v.Name,
Face: v.Face,
Silence: v.Silence,
}
if rela, ok := relas[v.Mid]; ok {
up.Relation = rela
if rela >= 128 {
up.IsBlock = true
}
}
searchUp = append(searchUp, up)
}
c.JSON(map[string]interface{}{
"users": searchUp,
}, nil)
}

View File

@@ -0,0 +1,114 @@
package http
import (
"strconv"
"go-common/app/interface/main/creative/model/academy"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"go-common/library/xstr"
)
func webAcademyTags(c *bm.Context) {
// check user
_, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
// check params
tgs, _ := acaSvc.TagList(c)
c.JSON(tgs, nil)
}
func webAcademyArchives(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")
ip := metadata.String(c, metadata.RemoteIP)
// check user
_, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
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 := strconv.Atoi(bsStr)
if err != nil {
log.Error("strconv.Atoi(%s) error(%v)", bsStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
pn, err := strconv.Atoi(pageStr)
if err != nil {
log.Error("strconv.Atoi(%s) error(%v)", pageStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
ps, err := strconv.Atoi(psStr)
if err != nil {
log.Error("strconv.Atoi(%s) error(%v)", psStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
if pn == 0 {
pn = 1
}
if ps > 20 {
ps = 20
}
aca := &academy.EsParam{
Tid: tids,
Business: bs,
Pn: pn,
Ps: ps,
Keyword: keyword,
Order: order,
IP: ip,
}
arcs, err := acaSvc.ArchivesWithES(c, aca)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(arcs, nil)
}
func webAddFeedBack(c *bm.Context) {
params := c.Request.Form
category := params.Get("category")
course := params.Get("course")
suggest := params.Get("suggest")
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
id, err := acaSvc.AddFeedBack(c, category, course, suggest, mid)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"id": id,
}, nil)
}

View File

@@ -0,0 +1,37 @@
package http
import (
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"strconv"
)
// webAdGameList fn
func webAdGameList(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
params := c.Request.Form
_, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
pnStr := params.Get("pn")
psStr := params.Get("ps")
pn, err := strconv.Atoi(pnStr)
if err != nil || pn <= 0 {
pn = 1
}
ps, err := strconv.Atoi(psStr)
if err != nil || ps <= 0 || ps > 20 {
ps = 20
}
keywordStr := params.Get("keyword")
letterStr := params.Get("letter")
data, err := adSvc.GameList(c, keywordStr, letterStr, pn, ps, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}

View File

@@ -0,0 +1,284 @@
package http
import (
"go-common/app/interface/main/creative/model/appeal"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"strconv"
"strings"
)
func webAppealContact(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
cookie := c.Request.Header.Get("cookie")
// check user
_, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
ct, err := apSvc.PhoneEmail(c, cookie, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]string{
"phone": ct.TelPhone,
"email": ct.Email,
}, nil)
}
func webAppealList(c *bm.Context) {
params := c.Request.Form
state := params.Get("state")
pnStr := params.Get("pn")
psStr := params.Get("ps")
// check
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
pn, err := strconv.Atoi(pnStr)
if err != nil || pn < 1 {
pn = 1
}
ps, err := strconv.Atoi(psStr)
if err != nil || ps <= 10 {
ps = 10
}
all, open, closed, aps, err := apSvc.List(c, mid, pn, ps, state, metadata.String(c, metadata.RemoteIP))
if err != nil {
c.JSON(nil, err)
return
}
c.JSONMap(map[string]interface{}{
"pager": map[string]int{
"current": pn,
"size": ps,
"total": all,
"open_count": open,
"closed_count": closed,
},
"appeals": aps,
}, nil)
}
func webAppealDetail(c *bm.Context) {
params := c.Request.Form
apidStr := params.Get("apid")
// check params
apid, err := strconv.ParseInt(apidStr, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
ap, err := apSvc.Detail(c, mid, apid, metadata.String(c, metadata.RemoteIP))
if err != nil {
log.Error("apSvc.Detail error(%v)", err)
c.JSON(nil, err)
return
}
if ap == nil {
c.JSON(nil, ecode.NothingFound)
return
}
c.JSON(ap, nil)
}
func webAppealDown(c *bm.Context) {
params := c.Request.Form
apidStr := params.Get("apid")
ip := metadata.String(c, metadata.RemoteIP)
// check params
apid, err := strconv.ParseInt(apidStr, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
var is bool
if is, err = checkStateAndMID(c, mid, apid, ip); err != nil {
log.Error("checkStateAndMID error(%v)", err)
c.JSON(nil, err)
return
}
if !is {
log.Error("checkStateAndMID not your appeal (%v)", is)
c.JSON(nil, ecode.NothingFound)
return
}
c.JSON(nil, apSvc.State(c, mid, apid, appeal.StateUserClosed, ip))
}
func webAppealAdd(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
content := params.Get("content")
qq := params.Get("qq")
pics := params.Get("pics")
phone := params.Get("phone")
email := params.Get("email")
typeidStr := params.Get("typeid")
title := params.Get("title")
desc := params.Get("desc")
ip := metadata.String(c, metadata.RemoteIP)
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid < 1 {
log.Error("strconv.ParseInt(%s) error(%v)", aidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
tid, err := strconv.ParseInt(typeidStr, 10, 64)
if err != nil || tid < 1 {
log.Error("strconv.ParseInt(%s) error(%v)", typeidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
ap := &appeal.BusinessAppeal{
BusinessTypeID: tid,
BusinessMID: mid,
BusinessTitle: title,
BusinessContent: desc,
}
apid, err := apSvc.Add(c, mid, aid, qq, phone, email, content, strings.Replace(pics, ";", ",", -1), ip, ap)
if err != nil {
c.JSON(nil, err)
return
}
if apid > 0 {
var is bool
if is, err = checkStateAndMID(c, mid, apid, ip); err != nil {
log.Error("checkStateAndMID error(%v)", err)
c.JSON(nil, err)
return
}
if !is {
log.Error("checkStateAndMID not your appeal (%v)", is)
c.JSON(nil, ecode.NothingFound)
return
}
c.JSON(nil, apSvc.Reply(c, mid, apid, appeal.ReplySystemEvent, appeal.ReplyMsg, "", ip))
}
}
func webAppealReply(c *bm.Context) {
params := c.Request.Form
apidStr := params.Get("apid")
content := params.Get("content")
pics := params.Get("pics")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
apid, err := strconv.ParseInt(apidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", apidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
var is bool
if is, err = checkStateAndMID(c, mid, apid, ip); err != nil {
log.Error("checkStateAndMID error(%v)", err)
c.JSON(nil, err)
return
}
if !is {
log.Error("checkStateAndMID not your appeal (%v)", is)
c.JSON(nil, ecode.NothingFound)
return
}
c.JSON(nil, apSvc.Reply(c, mid, apid, appeal.ReplyUserEvent, content, pics, ip))
}
func webAppealStar(c *bm.Context) {
params := c.Request.Form
apidStr := params.Get("apid")
starStr := params.Get("star")
ip := metadata.String(c, metadata.RemoteIP)
// check params
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
apid, err := strconv.ParseInt(apidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", apidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
star, err := strconv.ParseInt(starStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", starStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
if star < 0 || star > 3 {
c.JSON(nil, ecode.RequestErr)
return
}
var is bool
if is, err = checkMID(c, mid, apid, ip); err != nil {
log.Error("star checkMID error(%v)", err)
c.JSON(nil, err)
return
}
if !is {
log.Error("star checkMID not your appeal (%v)", is)
c.JSON(nil, ecode.NothingFound)
return
}
c.JSON(nil, apSvc.Star(c, mid, apid, star, ip))
}
func checkStateAndMID(c *bm.Context, mid, apid int64, ip string) (is bool, err error) {
ap, err := apSvc.Detail(c, mid, apid, ip)
if err != nil || ap == nil {
return
}
if appeal.IsClosed(ap.State) {
err = ecode.NothingFound
return
}
if ap.Mid == mid {
is = true
}
return
}
func checkMID(c *bm.Context, mid, apid int64, ip string) (is bool, err error) {
ap, err := apSvc.Detail(c, mid, apid, ip)
if err != nil || ap == nil {
return
}
if ap.Mid == mid {
is = true
}
return
}

View File

@@ -0,0 +1,134 @@
package http
import (
"strconv"
"strings"
"time"
"go-common/app/interface/main/creative/model/archive"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
)
func webArchVideos(c *bm.Context) {
params := c.Request.Form
ck := c.Request.Header.Get("Cookie")
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
aidStr := params.Get("aid")
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
ip := metadata.String(c, metadata.RemoteIP)
ap, err := arcSvc.SimpleArchiveVideos(c, mid, aid, "", ck, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(ap, nil)
}
func webRecommandCover(c *bm.Context) {
params := c.Request.Form
fnsStr := params.Get("fns")
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
cvs, err := dataSvc.Covers(c, mid, strings.Split(fnsStr, ","), metadata.String(c, metadata.RemoteIP))
if err != nil {
log.Error(" arcSvc.CoverList fnsStr(%s), mid(%d), ip(%s) error(%v)", fnsStr, mid, metadata.String(c, metadata.RemoteIP), err)
c.JSON(nil, err)
return
}
c.JSON(cvs, nil)
}
func webMissionProtocol(c *bm.Context) {
params := c.Request.Form
missionIDStr := params.Get("msid")
missionID, err := strconv.ParseInt(missionIDStr, 10, 64)
if err != nil || missionID <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
missionProtocol, err := arcSvc.MissionProtocol(c, missionID)
if err != nil {
log.Error(" arcSvc.MissionProtocol missionID(%s), mid(%d), ip(%s) error(%v)", missionIDStr, mid, metadata.String(c, metadata.RemoteIP), err)
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"protocol": missionProtocol.Protocol,
}, nil)
}
func webUgcPayProtocol(c *bm.Context) {
params := c.Request.Form
protocolID := params.Get("protocol_id")
if len(protocolID) == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
_, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
payProtocol, err := paySvc.Protocol(c, protocolID)
if err != nil {
log.Error("paySvc.Protocol protocolID(%s) error(%v)", protocolID, err)
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"protocol": payProtocol,
}, nil)
}
func voteAcsByTime(c *bm.Context) {
params := c.Request.Form
startStr := params.Get("start")
endStr := params.Get("end")
start, err := getTimeFromSecStr(startStr)
if err != nil || start == nil || start.After(time.Now()) {
c.JSON(nil, ecode.RequestErr)
return
}
end, err := getTimeFromSecStr(endStr)
if err != nil || start == nil || !isInHalfYear(start, end) {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(arcSvc.BIZsByTime(c, start, end, archive.VoteType))
}
func getTimeFromSecStr(secStr string) (t *time.Time, err error) {
sec, err := strconv.ParseInt(secStr, 10, 64)
if err != nil || sec <= 0 {
return
}
ti := time.Unix(sec, 0)
t = &ti
return
}
func isInHalfYear(start, end *time.Time) bool {
return end.Unix() <= start.Add(6*31*24*time.Hour).Unix()
}

View File

@@ -0,0 +1,572 @@
package http
import (
"encoding/base64"
"net/http"
"net/url"
"strconv"
"strings"
"time"
"go-common/app/interface/main/creative/model/article"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
)
func webArticlePre(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, ok := midI.(int64)
if !ok || mid <= 0 {
c.JSON(nil, ecode.NoLogin)
return
}
mf, err := accSvc.MyInfo(c, mid, ip, time.Now())
if err != nil {
c.JSON(nil, err)
return
}
categories, err := artSvc.Categories(c)
if err != nil {
c.JSON(nil, err)
return
}
rc, _ := artSvc.RemainCount(c, mid, ip)
c.JSON(map[string]interface{}{
"categories": categories,
"myinfo": mf,
"toplimit": rc,
}, nil)
}
func webSubArticle(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
title := params.Get("title")
content := params.Get("content")
summary := params.Get("summary")
bannerURL := params.Get("banner_url")
tidStr := params.Get("tid")
categoryStr := params.Get("category")
reprintStr := params.Get("reprint")
tags := params.Get("tags")
imageURLs := params.Get("image_urls")
wordsStr := params.Get("words")
actIDStr := params.Get("act_id")
dynamicIntrosStr := params.Get("dynamic_intro")
originImageURLs := params.Get("origin_image_urls")
ip := metadata.String(c, metadata.RemoteIP)
ck := c.Request.Header.Get("cookie")
// check params
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, ok := midI.(int64)
if !ok || mid <= 0 {
c.JSON(nil, ecode.NoLogin)
return
}
var (
aid int64
actID int64
)
if aidStr != "" {
id, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || id <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
aid = id
}
if actIDStr != "" {
actid, err := strconv.ParseInt(actIDStr, 10, 64)
if err != nil || actid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
actID = actid
}
words, _ := strconv.ParseInt(wordsStr, 10, 64)
artParam, err := artSvc.ParseParam(c, categoryStr, reprintStr, tidStr, imageURLs, originImageURLs)
if err != nil {
c.JSON(nil, err)
return
}
// params
art := &article.ArtParam{
AID: aid,
MID: mid,
Title: title,
Content: content,
Summary: summary,
BannerURL: bannerURL,
Tags: tags,
ImageURLs: artParam.ImageURLs,
OriginImageURLs: artParam.OriginImageURLs,
RealIP: ip,
Category: artParam.Category,
TemplateID: artParam.TemplateID,
Reprint: artParam.Reprint,
Words: words,
DynamicIntro: dynamicIntrosStr,
ActivityID: actID,
}
// submit
id, err := artSvc.SubArticle(c, mid, art, "", ck, metadata.String(c, metadata.RemoteIP))
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]int64{
"aid": id,
}, nil)
}
func webUpdateArticle(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
title := params.Get("title")
content := params.Get("content")
summary := params.Get("summary")
bannerURL := params.Get("banner_url")
tidStr := params.Get("tid")
categoryStr := params.Get("category")
reprintStr := params.Get("reprint")
tags := params.Get("tags")
imageURLs := params.Get("image_urls")
wordsStr := params.Get("words")
dynamicIntrosStr := params.Get("dynamic_intro")
originImageURLs := params.Get("origin_image_urls")
ip := metadata.String(c, metadata.RemoteIP)
ck := c.Request.Header.Get("cookie")
// check params
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, ok := midI.(int64)
if !ok || mid <= 0 {
c.JSON(nil, ecode.NoLogin)
return
}
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
words, _ := strconv.ParseInt(wordsStr, 10, 64)
artParam, err := artSvc.ParseParam(c, categoryStr, reprintStr, tidStr, imageURLs, originImageURLs)
if err != nil {
c.JSON(nil, err)
return
}
// params
art := &article.ArtParam{
AID: aid,
MID: mid,
Title: title,
Content: content,
Summary: summary,
BannerURL: bannerURL,
Tags: tags,
ImageURLs: artParam.ImageURLs,
OriginImageURLs: artParam.OriginImageURLs,
RealIP: ip,
Category: artParam.Category,
TemplateID: artParam.TemplateID,
Reprint: artParam.Reprint,
Words: words,
DynamicIntro: dynamicIntrosStr,
}
c.JSON(nil, artSvc.UpdateArticle(c, mid, art, "", ck, ip))
}
func webDelArticle(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
ip := metadata.String(c, metadata.RemoteIP)
// check params
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, ok := midI.(int64)
if !ok || mid <= 0 {
c.JSON(nil, ecode.NoLogin)
return
}
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(artSvc.DelArticle(c, aid, mid, ip), nil)
}
func webArticle(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
ip := metadata.String(c, metadata.RemoteIP)
// check params
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, ok := midI.(int64)
if !ok || mid <= 0 {
c.JSON(nil, ecode.NoLogin)
return
}
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
art, err := artSvc.View(c, aid, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(art, nil)
}
func webArticleList(c *bm.Context) {
params := c.Request.Form
pnStr := params.Get("pn")
psStr := params.Get("ps")
sortStr := params.Get("sort")
groupStr := params.Get("group")
categoryStr := params.Get("category")
ip := metadata.String(c, metadata.RemoteIP)
// check
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, ok := midI.(int64)
if !ok || mid <= 0 {
c.JSON(nil, ecode.NoLogin)
return
}
pn, err := strconv.Atoi(pnStr)
if err != nil || pn < 1 {
pn = 1
}
ps, err := strconv.Atoi(psStr)
if err != nil || ps <= 10 {
ps = 20
}
sort, err := strconv.Atoi(sortStr)
if err != nil || sort < 0 {
sort = 0
}
group, err := strconv.Atoi(groupStr)
if err != nil || group < 0 {
group = 0
}
category, err := strconv.Atoi(categoryStr)
if err != nil || category < 0 {
category = 0
}
arts, err := artSvc.Articles(c, mid, int(pn), int(ps), sort, group, category, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSONMap(map[string]interface{}{
"artlist": arts,
}, nil)
}
func webWithDrawArticle(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
ip := metadata.String(c, metadata.RemoteIP)
// check params
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, ok := midI.(int64)
if !ok || mid <= 0 {
c.JSON(nil, ecode.NoLogin)
return
}
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, artSvc.WithDrawArticle(c, aid, mid, ip))
}
func webArticleUpCover(c *bm.Context) {
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, ok := midI.(int64)
if !ok || mid <= 0 {
c.JSON(nil, ecode.NoLogin)
return
}
log.Info("webArticleUpCover mid(%d)", mid)
cover := c.Request.Form.Get("cover")
c.Request.Form.Del("cover") // NOTE: make sure write log concise
ss := strings.Split(cover, ",")
if len(ss) != 2 || len(ss[1]) == 0 {
log.Error("webArticleUpCover format error mid(%d)|cover(%s)|coverSlice(%s)", mid, cover, ss)
c.JSON(nil, ecode.RequestErr)
return
}
bs, err := base64.StdEncoding.DecodeString(ss[1])
if err != nil {
log.Error("webArticleUpCover base64.StdEncoding.DecodeString(%s)|mid(%d)|error(%v)", ss[1], mid, err)
c.JSON(nil, ecode.RequestErr)
return
}
ftype := http.DetectContentType(bs)
if ftype != "image/jpeg" && ftype != "image/jpg" && ftype != "image/png" && ftype != "image/gif" {
log.Error("webArticleUpCover file type not allow file type(%s)|mid(%d)", ftype, mid)
c.JSON(nil, ecode.CreativeArticleImageTypeErr)
return
}
url, err := artSvc.ArticleUpCover(c, ftype, bs)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"url": url,
"size": len(bs),
}, nil)
}
func webSubmitDraft(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
title := params.Get("title")
content := params.Get("content")
summary := params.Get("summary")
bannerURL := params.Get("banner_url")
tidStr := params.Get("tid")
categoryStr := params.Get("category")
reprintStr := params.Get("reprint")
tags := params.Get("tags")
imageURLs := params.Get("image_urls")
wordsStr := params.Get("words")
dynamicIntrosStr := params.Get("dynamic_intro")
originImageURLs := params.Get("origin_image_urls")
ip := metadata.String(c, metadata.RemoteIP)
// check params
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, ok := midI.(int64)
if !ok || mid <= 0 {
c.JSON(nil, ecode.NoLogin)
return
}
var (
did int64
err error
)
if aidStr != "" {
did, err = strconv.ParseInt(aidStr, 10, 64)
if err != nil || did <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
}
words, _ := strconv.ParseInt(wordsStr, 10, 64)
artParam, err := artSvc.ParseDraftParam(c, categoryStr, reprintStr, tidStr, imageURLs, originImageURLs)
if err != nil {
c.JSON(nil, err)
return
}
// params
art := &article.ArtParam{
AID: did,
MID: mid,
Title: title,
Content: content,
Summary: summary,
BannerURL: bannerURL,
Tags: tags,
ImageURLs: artParam.ImageURLs,
OriginImageURLs: artParam.OriginImageURLs,
RealIP: ip,
Category: artParam.Category,
TemplateID: artParam.TemplateID,
Reprint: artParam.Reprint,
Words: words,
DynamicIntro: dynamicIntrosStr,
}
// add draft
id, err := artSvc.AddDraft(c, mid, art)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]int64{
"aid": id,
}, nil)
}
func webDeleteDraft(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
ip := metadata.String(c, metadata.RemoteIP)
// check params
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, ok := midI.(int64)
if !ok || mid <= 0 {
c.JSON(nil, ecode.NoLogin)
return
}
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, artSvc.DelDraft(c, aid, mid, ip))
}
func webDraft(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
ip := metadata.String(c, metadata.RemoteIP)
// check params
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, ok := midI.(int64)
if !ok || mid <= 0 {
c.JSON(nil, ecode.NoLogin)
return
}
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
art, err := artSvc.Draft(c, aid, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(art, nil)
}
func webDraftList(c *bm.Context) {
params := c.Request.Form
pnStr := params.Get("pn")
psStr := params.Get("ps")
ip := metadata.String(c, metadata.RemoteIP)
// check
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, ok := midI.(int64)
if !ok || mid <= 0 {
c.JSON(nil, ecode.NoLogin)
return
}
pn, err := strconv.Atoi(pnStr)
if err != nil || pn < 1 {
pn = 1
}
ps, err := strconv.Atoi(psStr)
if err != nil || ps <= 10 {
ps = 20
}
arts, err := artSvc.Drafts(c, mid, pn, ps, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSONMap(map[string]interface{}{
"artlist": arts,
}, nil)
}
func webAuthor(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
// check params
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, ok := midI.(int64)
if !ok || mid <= 0 {
c.JSON(nil, ecode.NoLogin)
return
}
isAuthor, _ := artSvc.IsAuthor(c, mid, ip)
c.JSON(map[string]interface{}{
"mid": mid,
"is_author": isAuthor,
}, nil)
}
func webArticleCapture(c *bm.Context) {
params := c.Request.Form
originURL := params.Get("url")
// check params
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, ok := midI.(int64)
if !ok || mid <= 0 {
c.JSON(nil, ecode.NoLogin)
return
}
if originURL == "" {
c.JSON(nil, ecode.RequestErr)
return
}
log.Info("capture mid(%d) origin imageURL (%s)", mid, originURL)
_, err := url.ParseRequestURI(originURL)
if err != nil {
log.Error("capture check url(%s) format error(%v)", originURL, err)
c.JSON(nil, ecode.RequestErr)
return
}
imgURL, size, err := artSvc.ArticleCapture(c, originURL)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"url": imgURL,
"size": size,
}, nil)
}

View File

@@ -0,0 +1,242 @@
package http
//assist 创作中心协管相关
import (
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"strconv"
"time"
)
func webAssists(c *bm.Context) {
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
ip := metadata.String(c, metadata.RemoteIP)
assists, err := assistSvc.Assists(c, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(assists, nil)
}
func webAssistLogs(c *bm.Context) {
req := c.Request
params := req.Form
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
ip := metadata.String(c, metadata.RemoteIP)
pnStr := params.Get("pn")
psStr := params.Get("ps")
pn, err := strconv.ParseInt(pnStr, 10, 64)
if err != nil || pn < 1 {
pn = 1
}
ps, err := strconv.ParseInt(psStr, 10, 64)
if err != nil || ps <= 10 {
ps = 10
}
assistMidStr := params.Get("assist_mid")
assistMid, err := strconv.ParseInt(assistMidStr, 10, 64)
if err != nil {
assistMid = 0
}
stimeStr := params.Get("stime")
stime, err := strconv.ParseInt(stimeStr, 10, 64)
if err != nil || stime <= 0 {
stime = time.Now().Add(-time.Hour * 72).Unix()
}
etimeStr := params.Get("etime")
etime, err := strconv.ParseInt(etimeStr, 10, 64)
if err != nil || etime <= 0 {
etime = time.Now().Unix()
}
assistLogs, pager, err := assistSvc.AssistLogs(c, mid, assistMid, pn, ps, stime, etime, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSONMap(map[string]interface{}{
"pager": pager,
"data": assistLogs,
}, nil)
}
func webAssistAdd(c *bm.Context) {
req := c.Request
params := req.Form
ck := c.Request.Header.Get("cookie")
ak := params.Get("access_key")
mainStr := params.Get("main")
liveStr := params.Get("live")
assistMidStr := params.Get("assist_mid")
main := 1
live := 0
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
var (
err error
assistMid int64
m, l int
)
assistMid, err = strconv.ParseInt(assistMidStr, 10, 64)
if err != nil || assistMid == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
if mainStr != "" {
m, err = strconv.Atoi(mainStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
main = m
}
if liveStr != "" {
l, err = strconv.Atoi(liveStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
live = l
}
ip := metadata.String(c, metadata.RemoteIP)
if err = assistSvc.AddAssist(c, mid, assistMid, int8(main), int8(live), ip, ak, ck); err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webAssistSet(c *bm.Context) {
req := c.Request
params := req.Form
ck := c.Request.Header.Get("cookie")
ak := params.Get("access_key")
mainStr := params.Get("main")
liveStr := params.Get("live")
midI, ok := c.Get("mid")
main := 1
live := 0
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
if mainStr != "" {
m, err := strconv.Atoi(mainStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
main = m
}
if liveStr != "" {
l, err := strconv.Atoi(liveStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
live = l
}
var (
err error
assistMid int64
)
assistMidStr := params.Get("assist_mid")
assistMid, err = strconv.ParseInt(assistMidStr, 10, 64)
if err != nil || assistMid == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
mid, _ := midI.(int64)
ip := metadata.String(c, metadata.RemoteIP)
if err = assistSvc.SetAssist(c, mid, assistMid, int8(main), int8(live), ip, ak, ck); err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webAssistDel(c *bm.Context) {
req := c.Request
params := req.Form
ck := c.Request.Header.Get("cookie")
ak := params.Get("access_key")
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
assistMidStr := params.Get("assist_mid")
assistMid, err := strconv.ParseInt(assistMidStr, 10, 64)
if err != nil || assistMid == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
mid, _ := midI.(int64)
ip := metadata.String(c, metadata.RemoteIP)
if err := assistSvc.DelAssist(c, mid, assistMid, ip, ak, ck); err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webAssistLogRevoc(c *bm.Context) {
req := c.Request
params := req.Form
ck := c.Request.Header.Get("cookie")
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
logIDStr := params.Get("log_id")
assistMidStr := params.Get("assist_mid")
logID, _ := strconv.ParseInt(logIDStr, 10, 64)
assistMid, _ := strconv.ParseInt(assistMidStr, 10, 64)
if assistMid < 1 || logID < 1 {
c.JSON(nil, ecode.RequestErr)
return
}
mid, _ := midI.(int64)
ip := metadata.String(c, metadata.RemoteIP)
if err := assistSvc.RevocAssistLog(c, mid, assistMid, logID, ck, ip); err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webAssistStatus(c *bm.Context) {
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
ip := metadata.String(c, metadata.RemoteIP)
status, err := assistSvc.LiveStatus(c, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]int8{
"live": status,
}, nil)
}

View File

@@ -0,0 +1,51 @@
package http
import (
"go-common/app/interface/main/creative/model/order"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"strconv"
)
func webCmOasisStat(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
var (
oasisEarnings *order.OasisEarnings
)
oa, _ := arcSvc.Oasis(c, mid, ip)
oasisEarnings = &order.OasisEarnings{}
if oa != nil {
oasisEarnings.State = oa.State
oasisEarnings.Realese = oa.RealeseOrder
oasisEarnings.Total = oa.TotalOrder
}
c.JSON(oasisEarnings, nil)
}
func arcCommercial(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
params := c.Request.Form
aidStr := params.Get("aid")
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
pd, err := arcSvc.ArcCommercial(c, aid, ip)
if err != nil {
c.JSON(nil, err)
return
}
if pd == nil || pd.GameID == 0 {
c.JSON(nil, ecode.NothingFound)
return
}
c.JSON(pd, nil)
}

View File

@@ -0,0 +1,459 @@
package http
import (
"strconv"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"go-common/library/xstr"
)
func webListDmPurchases(c *bm.Context) {
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
ip := metadata.String(c, metadata.RemoteIP)
danmus, err := danmuSvc.AdvDmPurchaseList(c, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(danmus, nil)
}
func webPassDmPurchase(c *bm.Context) {
params := c.Request.Form
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
danmuIDStr := params.Get("id")
danmuID, err := strconv.ParseInt(danmuIDStr, 10, 64)
if err != nil || danmuID == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
ip := metadata.String(c, metadata.RemoteIP)
err = danmuSvc.PassDmPurchase(c, mid, danmuID, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webDenyDmPurchase(c *bm.Context) {
params := c.Request.Form
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
danmuIDStr := params.Get("id")
danmuID, err := strconv.ParseInt(danmuIDStr, 10, 64)
if err != nil || danmuID == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
ip := metadata.String(c, metadata.RemoteIP)
err = danmuSvc.DenyDmPurchase(c, mid, danmuID, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webCancelDmPurchase(c *bm.Context) {
params := c.Request.Form
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
danmuIDStr := params.Get("id")
danmuID, err := strconv.ParseInt(danmuIDStr, 10, 64)
if err != nil || danmuID == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
ip := metadata.String(c, metadata.RemoteIP)
err = danmuSvc.CancelDmPurchase(c, mid, danmuID, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webDmList(c *bm.Context) {
params := c.Request.Form
pnStr := params.Get("pn")
psStr := params.Get("ps")
idStr := params.Get("id")
pool := params.Get("pool")
aidStr := params.Get("aid")
midStr := params.Get("mid")
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
id, err := strconv.ParseInt(idStr, 10, 64)
if err != nil || id <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
pn, err := strconv.Atoi(pnStr)
if err != nil || pn <= 0 {
pn = 1
}
ps, err := strconv.Atoi(psStr)
if err != nil || ps <= 0 {
ps = 20
}
ip := metadata.String(c, metadata.RemoteIP)
order := "progress"
orderStr := params.Get("order")
if orderStr != order {
order = "ctime"
}
list, err := danmuSvc.List(c, mid, aid, id, pn, ps, order, pool, midStr, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(list, nil)
}
func webDmEdit(c *bm.Context) {
params := c.Request.Form
idStr := params.Get("cid")
dmidsStr := params.Get("dmids")
stateStr := params.Get("state")
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
id, err := strconv.ParseInt(idStr, 10, 64)
if err != nil || id <= 0 {
err = ecode.RequestErr
return
}
state, err := strconv.Atoi(stateStr)
if err != nil {
err = ecode.RequestErr
return
}
var dmids []int64
if dmids, err = xstr.SplitInts(dmidsStr); err != nil {
c.JSON(nil, ecode.RequestErr)
log.Error("xstr.SplitInts(dmidsStr %v) err(%v)", dmidsStr, err)
return
}
for _, dmid := range dmids {
if dmid <= 0 {
c.JSON(nil, ecode.RequestErr)
log.Error("dmids range err (dmid %d) err(%v)", dmid, err)
return
}
}
ip := metadata.String(c, metadata.RemoteIP)
err = danmuSvc.Edit(c, mid, id, int8(state), dmids, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webDmDistri(c *bm.Context) {
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
params := c.Request.Form
cidStr := params.Get("cid")
cid, err := strconv.ParseInt(cidStr, 10, 64)
if err != nil || cid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
aidStr := params.Get("aid")
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
ip := metadata.String(c, metadata.RemoteIP)
v, err := arcSvc.Video(c, mid, aid, cid, ip)
if err != nil {
c.JSON(nil, err)
return
}
list := make(map[int64]int64)
if v.From == "vupload" {
list, err = danmuSvc.Distri(c, mid, cid, ip)
if err != nil {
c.JSON(nil, err)
return
}
}
c.JSON(map[string]interface{}{
"duration": v.Duration * 1000,
"type": v.From,
"list": list,
}, nil)
}
func webDmTransfer(c *bm.Context) {
params := c.Request.Form
fromCIDStr := params.Get("from_cid")
toCIDStr := params.Get("to_cid")
offsetStr := params.Get("offset")
offset, err := strconv.ParseFloat(offsetStr, 64)
if err != nil {
offset = float64(0)
}
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
fromCID, err := strconv.ParseInt(fromCIDStr, 10, 64)
if err != nil || fromCID <= 0 {
err = ecode.RequestErr
return
}
toCID, err := strconv.ParseInt(toCIDStr, 10, 64)
if err != nil || toCID <= 0 {
err = ecode.RequestErr
return
}
ip := metadata.String(c, metadata.RemoteIP)
ck := c.Request.Header.Get("cookie")
ak := params.Get("access_key")
err = danmuSvc.Transfer(c, mid, fromCID, toCID, offset, ak, ck, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webDmUpPool(c *bm.Context) {
params := c.Request.Form
idStr := params.Get("cid")
dmidsStr := params.Get("dmids")
poolStr := params.Get("pool")
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
id, err := strconv.ParseInt(idStr, 10, 64)
if err != nil || id <= 0 {
err = ecode.RequestErr
return
}
pool, err := strconv.Atoi(poolStr)
if err != nil {
err = ecode.RequestErr
return
}
var dmids []int64
if dmids, err = xstr.SplitInts(dmidsStr); err != nil {
c.JSON(nil, ecode.RequestErr)
log.Error("xstr.SplitInts(dmidsStr %v) err(%v)", dmidsStr, err)
return
}
for _, dmid := range dmids {
if dmid <= 0 {
c.JSON(nil, ecode.RequestErr)
log.Error("dmids range err (dmid %d) err(%v)", dmid, err)
return
}
}
ip := metadata.String(c, metadata.RemoteIP)
err = danmuSvc.UpPool(c, id, dmids, int8(pool), mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webDmReportCheck(c *bm.Context) {
var err error
params := c.Request.Form
cidStr := params.Get("cid")
cid, err := strconv.ParseInt(cidStr, 10, 64)
if err != nil {
err = ecode.RequestErr
return
}
dmidStr := params.Get("dmid")
dmid, err := strconv.ParseInt(dmidStr, 10, 64)
if err != nil {
err = ecode.RequestErr
return
}
opStr := params.Get("op")
op, err := strconv.ParseInt(opStr, 10, 64)
if err != nil {
err = ecode.RequestErr
return
}
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
ip := metadata.String(c, metadata.RemoteIP)
err = danmuSvc.DmReportCheck(c, mid, cid, dmid, op, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webDmProtectArchive(c *bm.Context) {
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
ip := metadata.String(c, metadata.RemoteIP)
data, err := danmuSvc.DmProtectArchive(c, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}
func webDmProtectList(c *bm.Context) {
params := c.Request.Form
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
sortStr := params.Get("sort")
if sortStr != "playtime" {
sortStr = "ctime"
}
pnStr := params.Get("page")
pn, err := strconv.ParseInt(pnStr, 10, 64)
if err != nil || pn <= 0 {
pn = 1
}
aidStr := params.Get("aid")
mid, _ := midI.(int64)
ip := metadata.String(c, metadata.RemoteIP)
vlist, err := danmuSvc.DmProtectList(c, mid, pn, aidStr, sortStr, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(vlist, nil)
}
func webDmProtectOper(c *bm.Context) {
params := c.Request.Form
statusStr := params.Get("status")
status, err := strconv.ParseInt(statusStr, 10, 64)
if err != nil || status != 1 {
status = 0
}
idsStr := params.Get("ids")
_, err = xstr.SplitInts(idsStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
ip := metadata.String(c, metadata.RemoteIP)
err = danmuSvc.DmProtectOper(c, mid, status, idsStr, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webDmReport(c *bm.Context) {
params := c.Request.Form
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
pnStr := params.Get("pn")
psStr := params.Get("ps")
pn, err := strconv.ParseInt(pnStr, 10, 64)
if err != nil || pn <= 0 {
pn = 1
}
ps, err := strconv.ParseInt(psStr, 10, 64)
if err != nil || ps <= 0 {
ps = 20
}
aidStr := params.Get("aid")
mid, _ := midI.(int64)
ip := metadata.String(c, metadata.RemoteIP)
data, err := danmuSvc.DmReportList(c, mid, pn, ps, aidStr, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}
func webUserMid(c *bm.Context) {
params := c.Request.Form
_, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
nameStr := params.Get("name")
ip := metadata.String(c, metadata.RemoteIP)
mid, err := danmuSvc.UserMid(c, nameStr, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSONMap(map[string]interface{}{
"mid": mid,
}, nil)
}

View File

@@ -0,0 +1,417 @@
package http
import (
"strconv"
"go-common/app/interface/main/creative/model/data"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
)
func webVideoQuitPoints(c *bm.Context) {
params := c.Request.Form
cidStr := params.Get("cid")
tmidStr := params.Get("tmid")
ip := metadata.String(c, metadata.RemoteIP)
// check params
cid, err := strconv.ParseInt(cidStr, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
tmid, _ := strconv.ParseInt(tmidStr, 10, 64)
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
data, err := dataSvc.VideoQuitPoints(c, cid, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}
func webArchive(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
ip := metadata.String(c, metadata.RemoteIP)
// check params
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
data, err := dataSvc.ArchiveStat(c, aid, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}
func webArticleData(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
// check params
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
data, err := artSvc.ArticleStat(c, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}
func base(c *bm.Context) {
params := c.Request.Form
tmidStr := params.Get("tmid")
// check params
tmid, _ := strconv.ParseInt(tmidStr, 10, 64)
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
// get data
uv, _ := dataSvc.ViewerBase(c, mid)
ua, _ := dataSvc.ViewerArea(c, mid)
if len(uv) == 0 {
uv = nil
}
if len(ua) == 0 {
ua = nil
}
c.JSON(map[string]interface{}{
"viewer_base": uv,
"viewer_area": ua,
"period": data.Tip(),
}, nil)
}
func trend(c *bm.Context) {
params := c.Request.Form
tmidStr := params.Get("tmid")
// check params
tmid, _ := strconv.ParseInt(tmidStr, 10, 64)
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
// get data
ut, _ := dataSvc.CacheTrend(c, mid)
if len(ut) == 0 {
ut = nil
}
c.JSON(ut, nil)
}
func action(c *bm.Context) {
params := c.Request.Form
month := params.Get("month")
tmidStr := params.Get("tmid")
// check params
tmid, _ := strconv.ParseInt(tmidStr, 10, 64)
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
// get data
rfd, _ := dataSvc.RelationFansDay(c, mid)
rfdh, _ := dataSvc.RelationFansHistory(c, mid, month)
rfm, _ := dataSvc.RelationFansMonth(c, mid)
uah, _ := dataSvc.ViewerActionHour(c, mid)
if len(rfd) == 0 {
rfd = nil
}
if len(rfdh) == 0 {
rfdh = nil
}
if len(rfm) == 0 {
rfm = nil
}
if len(uah) == 0 {
uah = nil
}
c.JSON(map[string]interface{}{
"relation_fans_day": rfd,
"relation_fans_history": rfdh,
"relation_fans_month": rfm,
"viewer_action_hour": uah,
}, nil)
}
func survey(c *bm.Context) {
params := c.Request.Form
tyStr := params.Get("type")
tmidStr := params.Get("tmid")
ip := metadata.String(c, metadata.RemoteIP)
// check params
tmid, _ := strconv.ParseInt(tmidStr, 10, 64)
ty, err := strconv.Atoi(tyStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if _, ok := data.IncrTy(int8(ty)); !ok {
c.JSON(nil, ecode.RequestErr)
return
}
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
data, _ := dataSvc.UpIncr(c, mid, int8(ty), ip)
if len(data) == 0 {
data = nil
}
c.JSON(data, nil)
}
func pandect(c *bm.Context) {
params := c.Request.Form
tyStr := params.Get("type")
tmidStr := params.Get("tmid")
// check params
tmid, _ := strconv.ParseInt(tmidStr, 10, 64)
ty, err := strconv.Atoi(tyStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if _, ok := data.IncrTy(int8(ty)); !ok {
c.JSON(nil, ecode.RequestErr)
return
}
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
data, _ := dataSvc.ThirtyDayArchive(c, mid, int8(ty))
if len(data) == 0 {
data = nil
}
c.JSON(data, nil)
}
func webFan(c *bm.Context) {
params := c.Request.Form
tmidStr := params.Get("tmid")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
// check params
tmid, _ := strconv.ParseInt(tmidStr, 10, 64)
mid, _ := midI.(int64)
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
data, err := dataSvc.UpFansAnalysisForWeb(c, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}
func webPlaySource(c *bm.Context) {
params := c.Request.Form
tmidStr := params.Get("tmid")
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
tmid, _ := strconv.ParseInt(tmidStr, 10, 64)
mid, _ := midI.(int64)
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
data, err := dataSvc.UpPlaySourceAnalysis(c, mid)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}
func webArcPlayAnalysis(c *bm.Context) {
params := c.Request.Form
tmidStr := params.Get("tmid")
cpStr := params.Get("copyright")
midI, ok := c.Get("mid")
ip := metadata.String(c, metadata.RemoteIP)
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
cp, err := strconv.Atoi(cpStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
tmid, _ := strconv.ParseInt(tmidStr, 10, 64)
mid, _ := midI.(int64)
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
data, err := dataSvc.UpArcPlayAnalysis(c, mid, cp, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}
func webArtThirtyDay(c *bm.Context) {
params := c.Request.Form
tmidStr := params.Get("tmid")
tyStr := params.Get("type")
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
ty, err := strconv.Atoi(tyStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if ok := data.CheckType(byte(ty)); !ok {
c.JSON(nil, ecode.RequestErr)
return
}
tmid, _ := strconv.ParseInt(tmidStr, 10, 64)
mid, _ := midI.(int64)
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
data, err := dataSvc.ArtThirtyDay(c, mid, byte(ty))
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}
func webArtRank(c *bm.Context) {
params := c.Request.Form
tmidStr := params.Get("tmid")
tyStr := params.Get("type")
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
ty, err := strconv.Atoi(tyStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if ok := data.CheckType(byte(ty)); !ok {
c.JSON(nil, ecode.RequestErr)
return
}
tmid, _ := strconv.ParseInt(tmidStr, 10, 64)
mid, _ := midI.(int64)
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
data, err := dataSvc.ArtRank(c, mid, byte(ty))
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}
func webArtReadAnalysis(c *bm.Context) {
params := c.Request.Form
tmidStr := params.Get("tmid")
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
tmid, _ := strconv.ParseInt(tmidStr, 10, 64)
mid, _ := midI.(int64)
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
data, err := dataSvc.ArtReadAnalysis(c, mid)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}

View File

@@ -0,0 +1,363 @@
package http
import (
"go-common/app/interface/main/creative/model/elec"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"strconv"
)
func webUserElec(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
elecUser, err := elecSvc.UserInfo(c, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(elecUser, nil)
}
func webUserElecUpdate(c *bm.Context) {
params := c.Request.Form
stateStr := params.Get("state")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
state, err := strconv.ParseInt(stateStr, 10, 8)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", stateStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
elecUser, err := elecSvc.UserUpdate(c, mid, int8(state), ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(elecUser, nil)
}
func webArcElecUpdate(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
stateStr := params.Get("state")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", aidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
state, err := strconv.ParseInt(stateStr, 10, 8)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", stateStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, elecSvc.ArcUpdate(c, mid, aid, int8(state), ip))
}
func webElecNotify(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
// check user
_, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
notify, err := elecSvc.Notify(c, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(notify, nil)
}
func webElecStatus(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
st, err := elecSvc.Status(c, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(st, nil)
}
func webElecUpStatus(c *bm.Context) {
params := c.Request.Form
spdayStr := params.Get("display_specialday")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
spday, err := strconv.ParseInt(spdayStr, 10, 8)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", spdayStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, elecSvc.UpStatus(c, mid, int(spday), ip))
}
func webElecRecentRank(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
params := c.Request.Form
sizeStr := params.Get("size")
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
size, err := strconv.ParseInt(sizeStr, 10, 8)
if err != nil || size == 0 || size > 100 { //返回条数 最大100不传默认50
size = 50
}
recRank, err := elecSvc.RecentRank(c, mid, size, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string][]*elec.Rank{
"list": recRank,
}, nil)
}
func webElecCurrentRank(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
curRank, err := elecSvc.CurrentRank(c, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string][]*elec.Rank{
"list": curRank,
}, nil)
}
func webElecTotalRank(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
tolRank, err := elecSvc.TotalRank(c, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string][]*elec.Rank{
"list": tolRank,
}, nil)
}
func webElecDailyBill(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
params := c.Request.Form
pageStr := params.Get("pn")
psStr := params.Get("ps")
bg := params.Get("begin")
end := params.Get("end")
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
pn, _ := strconv.Atoi(pageStr)
if pn <= 0 {
pn = 1
}
ps, _ := strconv.Atoi(psStr)
if ps <= 0 || ps > 100 {
ps = 100
}
bill, err := elecSvc.DailyBill(c, mid, pn, ps, bg, end, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(bill, nil)
}
func webElecBalance(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
bal, err := elecSvc.Balance(c, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(bal, nil)
}
func webRemarkList(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
params := c.Request.Form
pageStr := params.Get("pn")
psStr := params.Get("ps")
bg := params.Get("begin")
end := params.Get("end")
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
pn, _ := strconv.Atoi(pageStr)
if pn <= 0 {
pn = 1
}
ps, _ := strconv.Atoi(psStr)
if ps <= 0 || ps > 12 {
ps = 12
}
bill, err := elecSvc.RemarkList(c, mid, pn, ps, bg, end, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(bill, nil)
}
func webRemarkDetail(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
params := c.Request.Form
idStr := params.Get("id")
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
id, err := strconv.ParseInt(idStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", idStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
rm, err := elecSvc.RemarkDetail(c, mid, id, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(rm, nil)
}
func webRemark(c *bm.Context) {
params := c.Request.Form
idStr := params.Get("id")
msg := params.Get("msg")
ck := c.Request.Header.Get("cookie")
ak := params.Get("access_key")
ip := metadata.String(c, metadata.RemoteIP)
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
id, err := strconv.ParseInt(idStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", idStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
st, err := elecSvc.Remark(c, mid, id, msg, ak, ck, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(st, nil)
}
func webRecentElec(c *bm.Context) {
req := c.Request
params := req.Form
ip := metadata.String(c, metadata.RemoteIP)
ck := c.Request.Header.Get("cookie")
ak := params.Get("access_key")
pageStr := params.Get("pn")
psStr := params.Get("ps")
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
if mid == 0 {
c.JSON(nil, ecode.NoLogin)
return
}
pn, _ := strconv.Atoi(pageStr)
if pn <= 0 {
pn = 1
}
ps, _ := strconv.Atoi(psStr)
if ps <= 0 || ps > 20 {
ps = 20
}
var rec *elec.RecentElecList
elecStat, _ := elecSvc.UserState(c, mid, ip, ak, ck)
if elecStat != nil && elecStat.State == "2" {
rec, _ = elecSvc.RecentElec(c, mid, pn, ps, ip)
}
if rec == nil {
rec = recl
}
c.JSON(rec, nil)
}

View File

@@ -0,0 +1,177 @@
package http
import (
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"strconv"
)
func webFeedbacks(c *bm.Context) {
params := c.Request.Form
stateStr := params.Get("state")
tagIDStr := params.Get("tag_id")
pnStr := params.Get("pn")
psStr := params.Get("ps")
start := params.Get("start")
end := params.Get("end")
platform := params.Get("platform")
ip := metadata.String(c, metadata.RemoteIP)
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
tagID, err := strconv.ParseInt(tagIDStr, 10, 64)
if err != nil {
tagID = 0
}
pn, err := strconv.ParseInt(pnStr, 10, 64)
if err != nil || pn < 1 {
pn = 1
}
ps, err := strconv.ParseInt(psStr, 10, 64)
if err != nil || pn < 1 {
ps = 10
}
if platform == "" { //兼容老逻辑
platform = "ugc"
}
feedbacks, count, err := fdSvc.Feedbacks(c, mid, ps, pn, tagID, stateStr, start, end, platform, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSONMap(map[string]interface{}{
"data": feedbacks,
"pager": map[string]int64{
"pn": pn,
"ps": ps,
"count": count,
},
}, nil)
}
func webFeedbackAdd(c *bm.Context) {
params := c.Request.Form
tagIDStr := params.Get("tag_id")
aid := params.Get("aid")
title := params.Get("title")
browser := params.Get("browser")
content := params.Get("content")
sessionIDStr := params.Get("session_id")
qq := params.Get("qq")
imgURL := params.Get("img_url")
platform := params.Get("platform")
ip := metadata.String(c, metadata.RemoteIP)
tagID, err := strconv.ParseInt(tagIDStr, 10, 64)
if err != nil {
log.Error("tagID(%s) format error", tagIDStr)
tagID = 0
}
sessionID, err := strconv.ParseInt(sessionIDStr, 10, 64)
if err != nil {
log.Error("sessionID(%s) format error", sessionIDStr)
sessionID = 0
}
if content == "" {
log.Error("content empty")
c.JSON(nil, ecode.RequestErr)
return
}
if sessionID == 0 && tagID == 0 {
log.Error("add feedback session tag empty")
c.JSON(nil, ecode.RequestErr)
return
}
if sessionID == 0 {
// add feedback
content = title + "#p#" + content
}
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
if platform == "" { //兼容老逻辑
platform = "ugc"
}
c.JSON(nil, fdSvc.AddFeedback(c, mid, tagID, sessionID, qq, content, aid, imgURL, browser, platform, ip))
}
func webFeedbackDetail(c *bm.Context) {
params := c.Request.Form
sessionIDStr := params.Get("session_id")
ip := metadata.String(c, metadata.RemoteIP)
sessionID, err := strconv.ParseInt(sessionIDStr, 10, 64)
if err != nil {
log.Error("sessionID(%s) format error", sessionIDStr)
c.JSON(nil, ecode.RequestErr)
return
}
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
feedbacks, err := fdSvc.Detail(c, mid, sessionID, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(feedbacks, nil)
}
func webFeedbackTags(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
tags, err := fdSvc.Tags(c, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(tags, nil)
}
func webFeedbackClose(c *bm.Context) {
params := c.Request.Form
sessionIDStr := params.Get("session_id")
ip := metadata.String(c, metadata.RemoteIP)
_, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
sessionID, err := strconv.ParseInt(sessionIDStr, 10, 64)
if err != nil {
log.Error("sessionID(%s) format error", sessionIDStr)
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, fdSvc.CloseSession(c, sessionID, ip))
}
func webFeedbackNewTags(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
tags, err := fdSvc.NewTags(c, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(tags, nil)
}

View File

@@ -0,0 +1,58 @@
package http
import (
"strconv"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
)
func webHistoryList(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
ip := metadata.String(c, metadata.RemoteIP)
// check
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid < 1 {
c.JSON(nil, ecode.RequestErr)
return
}
history, err := arcSvc.HistoryList(c, mid, aid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(history, nil)
}
func webHistoryView(c *bm.Context) {
params := c.Request.Form
hidStr := params.Get("history")
ip := metadata.String(c, metadata.RemoteIP)
// check
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
hid, err := strconv.ParseInt(hidStr, 10, 64)
if err != nil || hid < 1 {
c.JSON(nil, ecode.RequestErr)
return
}
history, err := arcSvc.HistoryView(c, mid, hid, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(history, nil)
}

View File

@@ -0,0 +1,216 @@
package http
import (
"context"
"strconv"
"go-common/app/interface/main/creative/model/order"
"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"
)
func webIndexStat(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
params := c.Request.Form
// check user
midI, ok := c.Get("mid")
tmidStr := params.Get("tmid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
tmid, _ := strconv.ParseInt(tmidStr, 10, 64)
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
stat, err := dataSvc.NewStat(c, mid, ip)
if err != nil {
c.JSON(nil, err)
return
}
rfd, _ := dataSvc.RelationFansDay(c, mid)
log.Info("dataSvc.NewStat(%+v) mid(%d)", stat, mid)
c.JSON(map[string]interface{}{
"total_click": stat.Play,
"total_dm": stat.Dm,
"total_reply": stat.Comment,
"total_fans": stat.Fan,
"total_fav": stat.Fav,
"total_like": stat.Like,
"total_share": stat.Share,
"incr_click": stat.Play - stat.PlayLast,
"incr_dm": stat.Dm - stat.DmLast,
"incr_reply": stat.Comment - stat.CommentLast,
"incr_fans": stat.Fan - stat.FanLast,
"inc_fav": stat.Fav - stat.FavLast,
"inc_like": stat.Like - stat.LikeLast,
"inc_share": stat.Share - stat.ShareLast,
"fan_recent_thirty": rfd,
}, nil)
}
func webIndexTool(c *bm.Context) {
params := c.Request.Form
tyStr := params.Get("type")
// check user
_, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
// check params
ty, err := strconv.ParseInt(tyStr, 10, 8)
if err != nil || ty < 0 || ty > 2 {
ty = 0
}
tool, err := operSvc.Tool(c, int8(ty))
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(tool, nil)
}
func webIndexFull(c *bm.Context) {
// check user
_, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
opers, err := operSvc.WebOperations(c)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(opers, nil)
}
func webIndexNotify(c *bm.Context) {
// check user
_, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
opers, err := operSvc.WebOperations(c)
if err != nil {
c.JSON(nil, err)
return
}
if length := len(opers["creative"]); length > 0 {
c.JSON(opers["creative"][length-1], nil)
} else {
c.JSON(nil, nil)
}
}
func webIndexOper(c *bm.Context) {
_, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
c.JSON(operSvc.WebRelOperCache, nil)
}
func webIndexVersion(c *bm.Context) {
_, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
c.JSON(vsSvc.VersionMapCache, nil)
}
func webWhite(c *bm.Context) {
ip := metadata.String(c, metadata.RemoteIP)
params := c.Request.Form
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
tmidStr := params.Get("tmid")
var (
err error
tmid int64
orderAllow, orderUp int
cmAd *order.UpValidate
g = &errgroup.Group{}
ctx = context.TODO()
task int8
ugcpay, staff bool
staffCount int
)
mid, _ := midI.(int64)
if tmidStr != "" {
if tmid, err = strconv.ParseInt(tmidStr, 10, 64); err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", tmidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
}
g.Go(func() error { //商单
if ok = arcSvc.AllowOrderUps(mid); ok {
orderAllow = 1
}
return nil
})
g.Go(func() error { //商单广告
cmAd, _ = arcSvc.UpValidate(ctx, mid, ip)
return nil
})
g.Go(func() error { //任务系统 0-关闭 1-开启
task = whiteSvc.TaskWhiteList(mid)
return nil
})
g.Go(func() error { //ugc付费白名单校验
ugcpay, _ = paySvc.White(ctx, mid)
return nil
})
g.Go(func() error { //联合投稿白名单
staff, _ = upSvc.ShowStaff(ctx, mid)
return nil
})
g.Go(func() error { //联合投稿staff合作按钮
staffCount, _ = arcSvc.StaffValidate(ctx, mid)
return nil
})
g.Wait()
c.JSON(map[string]interface{}{
"order": map[string]interface{}{
"allow": orderAllow,
"up": orderUp,
},
"growup": nil,
"cm_ad": cmAd,
"task": task,
"ugcpay": ugcpay,
"staff": staff,
"staff_count": staffCount,
}, nil)
}
func webIndexNewcomer(c *bm.Context) {
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
res, err := newcomerSvc.IndexNewcomer(c, mid)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(res, nil)
}

View File

@@ -0,0 +1,28 @@
package http
import (
"strconv"
"go-common/library/log"
"go-common/library/net/http/blademaster"
)
// setContextMid 把form中的mid写入context中用以调用interface的http接口
func setContextMid(c *blademaster.Context) {
var _, ok = c.Get("mid")
if ok {
return
}
var midstr = c.Request.Form.Get("mid")
if midstr == "" {
return
}
var mid, err = strconv.ParseInt(midstr, 10, 64)
if err != nil {
log.Error("parse mid fail, midstr=%s, err=%v", midstr, err)
return
}
c.Set("mid", mid)
}

View File

@@ -0,0 +1,155 @@
package http
import (
"strconv"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
func webMedalStatus(c *bm.Context) {
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
st, err := mdSvc.Medal(c, mid)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(st, nil)
}
func webMedalOpen(c *bm.Context) {
params := c.Request.Form
name := params.Get("medal_name")
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
if name == "" {
c.JSON(nil, ecode.RequestErr)
return
}
mid, _ := midI.(int64)
err := mdSvc.OpenMedal(c, mid, name)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webRecentFans(c *bm.Context) {
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
fans, err := mdSvc.RecentFans(c, mid)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(fans, nil)
}
func webMedalCheck(c *bm.Context) {
params := c.Request.Form
name := params.Get("medal_name")
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
if name == "" {
c.JSON(nil, ecode.RequestErr)
return
}
mid, _ := midI.(int64)
valid, err := mdSvc.CheckMedal(c, mid, name)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"valid": valid,
}, nil)
}
func webMedalRank(c *bm.Context) {
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
ranks, err := mdSvc.Rank(c, mid)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(ranks, nil)
}
func webMedalRename(c *bm.Context) {
req := c.Request
params := c.Request.Form
name := params.Get("medal_name")
cookie := req.Header.Get("cookie")
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
if name == "" {
c.JSON(nil, ecode.RequestErr)
return
}
mid, _ := midI.(int64)
code := mdSvc.Rename(c, mid, name, "", cookie)
c.JSON(nil, code)
}
func webFansMedal(c *bm.Context) {
params := c.Request.Form
tmidStr := params.Get("tmid")
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
// check params
var (
tmid int64
err error
)
if tmidStr != "" {
tmid, err = strconv.ParseInt(tmidStr, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
mid, _ := midI.(int64)
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
data, err := dataSvc.UpFansMedal(c, mid)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}

View File

@@ -0,0 +1,44 @@
package http
import (
"strconv"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
func webNsMd5(c *bm.Context) {
params := c.Request.Form
nidStr := params.Get("nid")
nid, err := strconv.ParseInt(nidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", nidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
appkey := params.Get("appkey")
if appkey != "bilibili" {
log.Error("(%s) error(%v)", appkey, err)
c.JSON(nil, ecode.RequestErr)
return
}
md5 := params.Get("md5")
if len(md5) != 32 {
log.Error("len(%s) (%d) error(%v)", md5, len(md5), err)
c.JSON(nil, ecode.RequestErr)
return
}
companyID := 2
err = arcSvc.AddNetSafeMd5(c, nid, md5)
if err != nil {
c.JSON(nil, err)
}
c.JSONMap(map[string]interface{}{
"nid": nid,
"md5": md5,
"cid": companyID,
"companyId": companyID,
"response": "ok",
}, nil)
}

View File

@@ -0,0 +1,225 @@
package http
import (
"go-common/app/interface/main/creative/model/newcomer"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"go-common/library/xstr"
)
func webTaskList(c *bm.Context) {
params := c.Request.Form
tyStr := params.Get("type")
// check user
midStr, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid := midStr.(int64)
// check white list
if task := whiteSvc.TaskWhiteList(mid); task != 1 {
c.JSON(nil, ecode.RequestErr)
return
}
ty, err := toInt(tyStr)
if err != nil {
c.JSON(nil, err)
return
}
tks, err := newcomerSvc.TaskList(c, mid, int8(ty))
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(tks, nil)
}
func webRewardReceive(c *bm.Context) {
params := c.Request.Form
ridStr := params.Get("reward_id")
rewardTypeStr := params.Get("reward_type")
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
ip := metadata.String(c, metadata.RemoteIP)
var (
err error
rewardID int64
rewardType int
)
rewardID, err = toInt64(ridStr)
if err != nil || rewardID <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
rewardType, err = toInt(rewardTypeStr)
if err != nil || rewardType < 0 {
c.JSON(nil, ecode.RequestErr)
return
}
msg, err := newcomerSvc.RewardReceive(c, mid, rewardID, int8(rewardType), ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"msg": msg,
}, nil)
}
func webRewardActivate(c *bm.Context) {
params := c.Request.Form
idStr := params.Get("id")
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
id, err := toInt64(idStr)
if err != nil || id <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
ip := metadata.String(c, metadata.RemoteIP)
row, err := newcomerSvc.RewardActivate(c, mid, id, ip)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"row": row,
}, nil)
}
func webRewardReceiveList(c *bm.Context) {
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
recs, err := newcomerSvc.RewardReceives(c, mid)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(recs, nil)
}
func webTaskBind(c *bm.Context) {
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
// check white list
if task := whiteSvc.TaskWhiteList(mid); task != 1 {
c.JSON(nil, ecode.RequestErr)
return
}
id, err := newcomerSvc.TaskBind(c, mid)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"id": id,
}, nil)
}
func growAccountStateInternal(c *bm.Context) {
params := c.Request.Form
midsStr := params.Get("mids")
var (
err error
mids []int64
)
mids, err = xstr.SplitInts(midsStr)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", midsStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
for _, mid := range mids {
pubSvc.TaskPub(mid, newcomer.MsgForGrowAccount, newcomer.MsgFinishedCount)
}
c.JSON(nil, nil)
}
//webTaskMakeup to compensation update task status
func webTaskMakeup(c *bm.Context) {
params := c.Request.Form
// check user
midStr, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid := midStr.(int64)
if !dataSvc.IsWhite(mid) {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
tmid := params.Get("tmid")
tid, err := toInt64(tmid)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
// check white list
if task := whiteSvc.TaskWhiteList(tid); task != 1 {
c.JSON(nil, ecode.RequestErr)
return
}
if err := newcomerSvc.TaskMakeup(c, tid); err != nil {
c.JSON(nil, err)
return
}
c.JSON("ok", nil)
}
// taskPubList to apply task list
func taskPubList(c *bm.Context) {
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.CreativeNotLogin)
return
}
mid, _ := midI.(int64)
data, err := newcomerSvc.TaskPubList(c, mid)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}

View File

@@ -0,0 +1,97 @@
package http
import (
"strconv"
"go-common/app/interface/main/creative/model/search"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
)
func replyList(c *bm.Context) {
req := c.Request
params := req.Form
kw := params.Get("keyword")
order := params.Get("order")
pnStr := params.Get("pn")
psStr := params.Get("ps")
var (
err error
oid int64
isReport, tp int
)
isReportStr := params.Get("is_report")
if isReportStr != "" {
isReport, err = strconv.Atoi(isReportStr)
if err != nil {
log.Error("strconv.Atoi replyList isReportStr(%s)|error(%v)", isReportStr, err)
c.JSON(nil, ecode.RequestErr)
}
}
oidStr := params.Get("oid")
if oidStr != "" {
oid, err = strconv.ParseInt(oidStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt replyList oidStr(%s)|error(%v)", oidStr, err)
c.JSON(nil, ecode.RequestErr)
}
}
typeStr := params.Get("type")
if typeStr != "" {
tp, err = strconv.Atoi(typeStr)
if err != nil {
log.Error("strconv.ParseInt replyList typeStr(%s)|error(%v)", typeStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
}
filterStr := params.Get("filter")
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
pn, err := strconv.Atoi(pnStr)
if err != nil || pn < 1 {
pn = 1
}
ps, err := strconv.Atoi(psStr)
if err != nil || ps <= 0 || pn > 10 {
ps = 10
}
tmidStr := params.Get("tmid")
tmid, _ := strconv.ParseInt(tmidStr, 10, 64)
if tmid > 0 && dataSvc.IsWhite(mid) {
mid = tmid
}
p := &search.ReplyParam{
Ak: params.Get("access_key"),
Ck: c.Request.Header.Get("cookie"),
OMID: mid,
OID: oid,
Pn: pn,
Ps: ps,
IP: metadata.String(c, metadata.RemoteIP),
IsReport: int8(isReport),
Type: int8(tp),
FilterCtime: filterStr,
Kw: kw,
Order: order,
}
replies, err := replySvc.Replies(c, p)
if err != nil {
c.JSON(nil, err)
return
}
c.JSONMap(map[string]interface{}{
"data": replies.Result,
"pager": map[string]int{
"current": p.Pn,
"size": p.Ps,
"total": replies.Total,
},
}, nil)
}

View File

@@ -0,0 +1,48 @@
package http
import (
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
//staff only
func webApplySubmit(c *bm.Context) {
v := new(struct {
ID int64 `form:"id" validate:"required"`
AID int64 `form:"aid" validate:"required"`
Type int64 `form:"type" validate:"required"`
MID int64 `form:"mid" validate:"required"`
FlagAddBlack int `form:"flag_add_black" `
FlagRejuse int `form:"flag_rejuse"`
State int64 `form:"state" validate:"min=1,max=5"`
})
if err := c.Bind(v); err != nil {
return
}
// check user
_, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
c.JSON(nil, arcSvc.StaffApplySubmit(c, v.ID, v.AID, v.MID, v.State, v.Type, v.FlagAddBlack, v.FlagRejuse))
}
//staff only
func webApplyCreate(c *bm.Context) {
v := new(struct {
AID int64 `form:"aid" validate:"required"`
MID int64 `form:"mid" validate:"required"`
})
if err := c.Bind(v); err != nil {
return
}
// check user
_, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
c.JSON(nil, arcSvc.StaffApplySubmit(c, 0, v.AID, v.MID, 0, 4, 0, 0))
}

View File

@@ -0,0 +1,31 @@
package http
import (
"strconv"
"go-common/app/interface/main/creative/model/archive"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
func webTags(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")
// check user
midStr, ok := c.Get("mid")
mid := midStr.(int64)
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
tid, _ := strconv.ParseInt(tidStr, 10, 16)
if tid <= 0 {
tid = 0
}
tags, _ := dataSvc.TagsWithChecked(c, mid, uint16(tid), title, filename, desc, cover, archive.TagPredictFromWeb)
c.JSON(tags, nil)
}

View File

@@ -0,0 +1,118 @@
package http
import (
"strconv"
"time"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
func webTemplates(c *bm.Context) {
// check user
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
tps, err := tplSvc.Templates(c, mid)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(tps, nil)
}
func webAddTpl(c *bm.Context) {
params := c.Request.Form
typeidStr := params.Get("typeid")
copyright := params.Get("arctype")
name := params.Get("name")
title := params.Get("title")
tag := params.Get("keywords")
content := params.Get("description")
// check params
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
typeid, _ := strconv.Atoi(typeidStr)
if typeid < 0 {
typeid = 0
}
if name == "" {
log.Error("name can not be empty")
c.JSON(nil, ecode.RequestErr)
return
}
if copyright == "" {
copyright = "Original"
}
if err := tplSvc.AddTemplate(c, mid, int16(typeid), copyright, name, title, tag, content, time.Now()); err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func webUpdateTpl(c *bm.Context) {
params := c.Request.Form
idStr := params.Get("tid")
typeidStr := params.Get("typeid")
copyright := params.Get("arctype")
name := params.Get("name")
title := params.Get("title")
tag := params.Get("keywords")
content := params.Get("description")
// check params
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
id, err := strconv.ParseInt(idStr, 10, 64)
if err != nil || id < 1 {
log.Error("strconv.ParseInt(%s) error(%v)", idStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
typeid, _ := strconv.Atoi(typeidStr)
if typeid < 0 {
typeid = 0
}
if name == "" {
log.Error("name is empty error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
if copyright == "" {
copyright = "Original"
}
// update
c.JSON(nil, tplSvc.UpdateTemplate(c, id, mid, int16(typeid), copyright, name, title, tag, content, time.Now()))
}
func webDelTpl(c *bm.Context) {
params := c.Request.Form
idStr := params.Get("tid")
// check params
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
id, err := strconv.ParseInt(idStr, 10, 64)
if err != nil || id < 1 {
log.Error("strconv.ParseInt(%s) error(%v)", idStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
// del
c.JSON(nil, tplSvc.DelTemplate(c, id, mid, time.Now()))
}