Create & Init Project...
This commit is contained in:
85
app/interface/main/account/http/BUILD
Normal file
85
app/interface/main/account/http/BUILD
Normal file
@ -0,0 +1,85 @@
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load(
|
||||
"@io_bazel_rules_go//go:def.bzl",
|
||||
"go_library",
|
||||
)
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"app_info.go",
|
||||
"card.go",
|
||||
"coupon.go",
|
||||
"geetest.go",
|
||||
"http.go",
|
||||
"invite.go",
|
||||
"medal.go",
|
||||
"member.go",
|
||||
"notice.go",
|
||||
"passport.go",
|
||||
"pendant.go",
|
||||
"pendant_new.go",
|
||||
"point.go",
|
||||
"realname.go",
|
||||
"relation.go",
|
||||
"remotelogin.go",
|
||||
"sudo.go",
|
||||
"vip.go",
|
||||
"vip_associate.go",
|
||||
"vip_third.go",
|
||||
"vip_welfare.go",
|
||||
"web_info.go",
|
||||
],
|
||||
importpath = "go-common/app/interface/main/account/http",
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//app/interface/main/account/conf:go_default_library",
|
||||
"//app/interface/main/account/model:go_default_library",
|
||||
"//app/interface/main/account/service/card:go_default_library",
|
||||
"//app/interface/main/account/service/coupon:go_default_library",
|
||||
"//app/interface/main/account/service/geetest:go_default_library",
|
||||
"//app/interface/main/account/service/member:go_default_library",
|
||||
"//app/interface/main/account/service/passport:go_default_library",
|
||||
"//app/interface/main/account/service/point:go_default_library",
|
||||
"//app/interface/main/account/service/realname:go_default_library",
|
||||
"//app/interface/main/account/service/relation:go_default_library",
|
||||
"//app/interface/main/account/service/usersuit:go_default_library",
|
||||
"//app/interface/main/account/service/vip:go_default_library",
|
||||
"//app/service/main/card/api/grpc/v1:go_default_library",
|
||||
"//app/service/main/coupon/api:go_default_library",
|
||||
"//app/service/main/coupon/model:go_default_library",
|
||||
"//app/service/main/identify/api/grpc:go_default_library",
|
||||
"//app/service/main/point/model:go_default_library",
|
||||
"//app/service/main/relation/model:go_default_library",
|
||||
"//app/service/main/usersuit/model:go_default_library",
|
||||
"//app/service/main/vip/api:go_default_library",
|
||||
"//app/service/main/vip/model:go_default_library",
|
||||
"//app/service/main/vip/verify: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/supervisor:go_default_library",
|
||||
"//library/net/http/blademaster/middleware/verify:go_default_library",
|
||||
"//library/net/metadata:go_default_library",
|
||||
"//library/xstr:go_default_library",
|
||||
"//vendor/github.com/pkg/errors: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"],
|
||||
)
|
173
app/interface/main/account/http/app_info.go
Normal file
173
app/interface/main/account/http/app_info.go
Normal file
@ -0,0 +1,173 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
usrmdl "go-common/app/service/main/usersuit/model"
|
||||
"go-common/library/ecode"
|
||||
"go-common/library/log"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
func updateFace(c *bm.Context) {
|
||||
var (
|
||||
//ip = c.RemoteIP()
|
||||
mid, ok = c.Get("mid")
|
||||
)
|
||||
defer c.Request.Form.Del("face") // 防止日志不出现
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
c.Request.ParseMultipartForm(32 << 20)
|
||||
face, err := func() ([]byte, error) {
|
||||
fs := c.Request.FormValue("face")
|
||||
if fs != "" {
|
||||
log.Info("Succeeded to parse face file from form value: mid: %d, length: %d", mid, len(fs))
|
||||
return []byte(fs), nil
|
||||
}
|
||||
log.Warn("Failed to parse face file from form value, fallback to form file: mid: %d", mid)
|
||||
f, _, err := c.Request.FormFile("face")
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "parse face form file: mid: %d", mid)
|
||||
}
|
||||
defer f.Close()
|
||||
data, err := ioutil.ReadAll(f)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "read face form file: mid: %d", mid)
|
||||
}
|
||||
if len(data) <= 0 {
|
||||
return nil, errors.Wrapf(err, "form file data: mid: %d, length: %d", mid, len(data))
|
||||
}
|
||||
log.Info("Succeeded to parse file from form file: mid: %d, length: %d", mid, len(data))
|
||||
return data, nil
|
||||
}()
|
||||
if err != nil {
|
||||
log.Error("Failed to parse face file: mid: %d: %+v", mid, err)
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
log.Info("Succeeded to parse face data: mid: %d, face-length: %d", mid, len(face))
|
||||
if len(face) > 2*1024*1024 {
|
||||
c.JSON(nil, ecode.UpdateFaceSize)
|
||||
return
|
||||
}
|
||||
ftype := http.DetectContentType(face)
|
||||
if ftype != "image/jpeg" && ftype != "image/png" && ftype != "image/jp2" {
|
||||
c.JSON(nil, ecode.UpdateFaceFormat)
|
||||
return
|
||||
}
|
||||
c.JSON(memberSvc.UpdateFace(c, mid.(int64), face, ftype))
|
||||
}
|
||||
|
||||
func updateSex(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
sex int64
|
||||
//ip = c.RemoteIP()
|
||||
params = c.Request.Form
|
||||
mid, ok = c.Get("mid")
|
||||
)
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
if sex, err = strconv.ParseInt(params.Get("sex"), 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, memberSvc.UpdateSex(c, mid.(int64), sex))
|
||||
}
|
||||
|
||||
func updateSign(c *bm.Context) {
|
||||
var (
|
||||
//ip = c.RemoteIP()
|
||||
params = c.Request.Form
|
||||
mid, ok = c.Get("mid")
|
||||
)
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
sign := params.Get("user_sign")
|
||||
c.JSON(nil, memberSvc.UpdateSign(c, mid.(int64), sign))
|
||||
}
|
||||
|
||||
func updateBirthday(c *bm.Context) {
|
||||
var (
|
||||
birthday string
|
||||
//ip = c.RemoteIP()
|
||||
params = c.Request.Form
|
||||
mid, ok = c.Get("mid")
|
||||
)
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
if birthday = params.Get("birthday"); len(birthday) == 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, memberSvc.UpdateBirthday(c, mid.(int64), birthday))
|
||||
}
|
||||
|
||||
func updateUname(c *bm.Context) {
|
||||
var (
|
||||
uname string
|
||||
//ip = c.RemoteIP()
|
||||
params = c.Request.Form
|
||||
mid, ok = c.Get("mid")
|
||||
)
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
if uname = params.Get("uname"); len(uname) == 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, memberSvc.UpdateName(c, mid.(int64), uname, params.Get("appkey")))
|
||||
}
|
||||
|
||||
func nickFree(c *bm.Context) {
|
||||
var (
|
||||
mid, ok = c.Get("mid")
|
||||
//ip = c.RemoteIP()
|
||||
)
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
c.JSON(memberSvc.NickFree(c, mid.(int64)))
|
||||
}
|
||||
|
||||
func pendantEquip(c *bm.Context) {
|
||||
var (
|
||||
mid, ok = c.Get("mid")
|
||||
params = c.Request.Form
|
||||
err error
|
||||
pid int64
|
||||
status int64
|
||||
source int64
|
||||
)
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
if pid, err = strconv.ParseInt(params.Get("pid"), 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if status, err = strconv.ParseInt(params.Get("status"), 10, 64); err != nil || (status != usrmdl.PendantPutOn && status != usrmdl.PendantPickOff) {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
// source 挂件来源 可选, 默认0, 0未知 1 背包挂件 2大会员挂件
|
||||
source = usrmdl.ParseSource(params.Get("source"))
|
||||
|
||||
c.JSON(nil, usSvc.Equip(c, mid.(int64), pid, int8(status), source))
|
||||
}
|
71
app/interface/main/account/http/card.go
Normal file
71
app/interface/main/account/http/card.go
Normal file
@ -0,0 +1,71 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/app/interface/main/account/model"
|
||||
cardv1 "go-common/app/service/main/card/api/grpc/v1"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func userCard(c *bm.Context) {
|
||||
mid, exists := c.Get("mid")
|
||||
if !exists {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
c.JSON(cardSvc.UserCard(c, mid.(int64)))
|
||||
}
|
||||
|
||||
func cardInfo(c *bm.Context) {
|
||||
var err error
|
||||
arg := new(model.ArgCardID)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(cardSvc.Card(c, arg.ID))
|
||||
}
|
||||
|
||||
func cardHots(c *bm.Context) {
|
||||
c.JSON(cardSvc.CardHots(c))
|
||||
}
|
||||
|
||||
func cardGroups(c *bm.Context) {
|
||||
var mid int64
|
||||
midi, exists := c.Get("mid")
|
||||
if exists {
|
||||
mid = midi.(int64)
|
||||
}
|
||||
c.JSON(cardSvc.AllGroup(c, mid))
|
||||
}
|
||||
|
||||
func cardsByGid(c *bm.Context) {
|
||||
var err error
|
||||
arg := new(model.ArgGroupID)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(cardSvc.CardsByGid(c, arg.ID))
|
||||
}
|
||||
|
||||
func equip(c *bm.Context) {
|
||||
var err error
|
||||
arg := new(model.ArgCardID)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
mid, exists := c.Get("mid")
|
||||
if !exists {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, cardSvc.Equip(c, &cardv1.ModelArgEquip{Mid: mid.(int64), CardId: arg.ID}))
|
||||
}
|
||||
|
||||
func demount(c *bm.Context) {
|
||||
mid, exists := c.Get("mid")
|
||||
if !exists {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, cardSvc.Demount(c, mid.(int64)))
|
||||
}
|
111
app/interface/main/account/http/coupon.go
Normal file
111
app/interface/main/account/http/coupon.go
Normal file
@ -0,0 +1,111 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/app/interface/main/account/model"
|
||||
v1 "go-common/app/service/main/coupon/api"
|
||||
col "go-common/app/service/main/coupon/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
"go-common/library/net/metadata"
|
||||
)
|
||||
|
||||
func allowanceList(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
)
|
||||
mid, exists := c.Get("mid")
|
||||
if !exists {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
arg := new(model.ArgAllowanceList)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(couponSvc.AllowanceList(c, mid.(int64), arg.State))
|
||||
}
|
||||
|
||||
func couponPage(c *bm.Context) {
|
||||
var err error
|
||||
mid, exists := c.Get("mid")
|
||||
if !exists {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
arg := new(model.ArgCouponPage)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(couponSvc.CouponPage(c, &col.ArgRPCPage{
|
||||
Mid: mid.(int64),
|
||||
State: arg.State,
|
||||
Pn: arg.Pn,
|
||||
Ps: arg.Ps,
|
||||
}))
|
||||
}
|
||||
|
||||
// func couponCartoonPage(c *bm.Context) {
|
||||
// var err error
|
||||
// mid, exists := c.Get("mid")
|
||||
// if !exists {
|
||||
// c.JSON(nil, ecode.AccountNotLogin)
|
||||
// return
|
||||
// }
|
||||
// arg := new(model.ArgCouponPage)
|
||||
// if err = c.Bind(arg); err != nil {
|
||||
// return
|
||||
// }
|
||||
// c.JSON(couponSvc.CouponCartoonPage(c, &col.ArgRPCPage{
|
||||
// Mid: mid.(int64),
|
||||
// State: arg.State,
|
||||
// Pn: arg.Pn,
|
||||
// Ps: arg.Ps,
|
||||
// }))
|
||||
// }
|
||||
|
||||
func prizeCards(c *bm.Context) {
|
||||
mid, exists := c.Get("mid")
|
||||
if !exists {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
c.JSON(couponSvc.PrizeCards(c, &col.ArgCount{Mid: mid.(int64)}))
|
||||
}
|
||||
|
||||
func prizeDraw(c *bm.Context) {
|
||||
var err error
|
||||
mid, exists := c.Get("mid")
|
||||
if !exists {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
arg := new(model.ArgPrizeDraw)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
if arg.CardType == -1 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(couponSvc.PrizeDraw(c, &col.ArgPrizeDraw{Mid: mid.(int64), CardType: arg.CardType}))
|
||||
}
|
||||
|
||||
func captchaToken(c *bm.Context) {
|
||||
c.JSON(couponSvc.CaptchaToken(c, &v1.CaptchaTokenReq{Ip: metadata.String(c, metadata.RemoteIP)}))
|
||||
}
|
||||
|
||||
func useCouponCode(c *bm.Context) {
|
||||
var err error
|
||||
mid, exists := c.Get("mid")
|
||||
if !exists {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
arg := new(col.ArgUseCouponCode)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
arg.IP = metadata.String(c, metadata.RemoteIP)
|
||||
arg.Mid = mid.(int64)
|
||||
c.JSON(couponSvc.UseCouponCode(c, arg))
|
||||
}
|
51
app/interface/main/account/http/geetest.go
Normal file
51
app/interface/main/account/http/geetest.go
Normal file
@ -0,0 +1,51 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"go-common/app/interface/main/account/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
// getChallenge get geetest params gt ,challenge
|
||||
func getChallenge(c *bm.Context) {
|
||||
params := new(model.GeeCaptchaRequest)
|
||||
var (
|
||||
mid, ok = c.Get("mid")
|
||||
mobile = strings.Contains(c.Request.UserAgent(), model.MobileUserAgentFlag)
|
||||
)
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if mobile {
|
||||
params.ClientType = model.PlatH5
|
||||
} else {
|
||||
params.ClientType = model.PlatPC
|
||||
}
|
||||
params.MID = mid.(int64)
|
||||
c.JSON(geetestSvr.PreProcess(c, params))
|
||||
}
|
||||
|
||||
func geetestValidate(c *bm.Context) {
|
||||
params := new(model.GeeCheckRequest)
|
||||
if err := c.Bind(params); err != nil {
|
||||
return
|
||||
}
|
||||
mid, ok := c.Get("mid")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
params.MID = mid.(int64)
|
||||
if params.MID == 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
}
|
||||
if strings.Contains(c.Request.UserAgent(), model.MobileUserAgentFlag) {
|
||||
params.ClientType = model.PlatH5
|
||||
} else {
|
||||
params.ClientType = model.PlatPC
|
||||
}
|
||||
c.JSON(geetestSvr.Validate(c, params), nil)
|
||||
}
|
355
app/interface/main/account/http/http.go
Normal file
355
app/interface/main/account/http/http.go
Normal file
@ -0,0 +1,355 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"go-common/app/interface/main/account/conf"
|
||||
"go-common/app/interface/main/account/service/card"
|
||||
"go-common/app/interface/main/account/service/coupon"
|
||||
"go-common/app/interface/main/account/service/geetest"
|
||||
"go-common/app/interface/main/account/service/member"
|
||||
"go-common/app/interface/main/account/service/passport"
|
||||
"go-common/app/interface/main/account/service/point"
|
||||
"go-common/app/interface/main/account/service/realname"
|
||||
rls "go-common/app/interface/main/account/service/relation"
|
||||
us "go-common/app/interface/main/account/service/usersuit"
|
||||
"go-common/app/interface/main/account/service/vip"
|
||||
vipverify "go-common/app/service/main/vip/verify"
|
||||
"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/supervisor"
|
||||
v "go-common/library/net/http/blademaster/middleware/verify"
|
||||
)
|
||||
|
||||
var (
|
||||
relationSvc *rls.Service
|
||||
memberSvc *member.Service
|
||||
passSvc *passport.Service
|
||||
vipSvc *vip.Service
|
||||
realnameSvc *realname.Service
|
||||
usSvc *us.Service
|
||||
couponSvc *coupon.Service
|
||||
pointSvc *point.Service
|
||||
cardSvc *card.Service
|
||||
geetestSvr *geetest.Service
|
||||
// api middleware
|
||||
authn *auth.Auth
|
||||
verify *v.Verify
|
||||
anti *antispam.Antispam
|
||||
batchRelAnti *antispam.Antispam
|
||||
smsAnti *antispam.Antispam
|
||||
faceAnti *antispam.Antispam
|
||||
vipAnti *antispam.Antispam
|
||||
spv *supervisor.Supervisor
|
||||
// vip third verify
|
||||
vipThirdVerify *vipverify.Verify
|
||||
)
|
||||
|
||||
// Init init http sever instance.
|
||||
func Init(c *conf.Config) {
|
||||
// service
|
||||
initService(c)
|
||||
vipThirdVerify = vipverify.NewThirdVerify(c.VipThirdVerifyConfig)
|
||||
// init outer router
|
||||
// innerEngine := bm.DefaultServer(c.BM.Inner)
|
||||
innerEngine := bm.NewServer(c.BM.Inner)
|
||||
innerEngine.Use(bm.Recovery(), bm.Trace(), bm.Logger(), bm.Mobile())
|
||||
setupInnerEngine(innerEngine)
|
||||
if err := innerEngine.Start(); err != nil {
|
||||
log.Error("innerEngine.Start() error(%v)", err)
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func setupInnerEngine(e *bm.Engine) {
|
||||
e.Ping(ping)
|
||||
e.Register(register)
|
||||
|
||||
// member
|
||||
mr := e.Group("/x/member", bm.CSRF())
|
||||
mr.GET("/notice", authn.User, notice)
|
||||
mr.POST("/notice/close", authn.User, closeNotice)
|
||||
|
||||
sec := mr.Group("/security", authn.User)
|
||||
sec.GET("/status", status)
|
||||
sec.POST("/feedback", feedback)
|
||||
sec.POST("/close", closeNotify)
|
||||
|
||||
app := mr.Group("/app", authn.UserMobile)
|
||||
app.GET("/nickfree", nickFree)
|
||||
app.POST("/uname/update", spv.ServeHTTP, updateUname)
|
||||
app.POST("/sign/update", spv.ServeHTTP, updateSign)
|
||||
app.POST("/sex/update", updateSex)
|
||||
app.POST("/birthday/update", updateBirthday)
|
||||
app.POST("/face/update", spv.ServeHTTP, faceAnti.ServeHTTP, updateFace)
|
||||
app.POST("/pendant/equip", pendantEquip)
|
||||
app.GET("/point/flag", pointFlagMobile)
|
||||
|
||||
web := mr.Group("/web", authn.User)
|
||||
web.POST("/update", spv.ServeHTTP, update)
|
||||
web.POST("/face/update", spv.ServeHTTP, faceAnti.ServeHTTP, updateFace)
|
||||
web.POST("/sign/update", spv.ServeHTTP, updateSign)
|
||||
web.POST("/uname/update", spv.ServeHTTP, updateUname)
|
||||
web.GET("/account", account)
|
||||
web.GET("/reply/list", replyHistoryList)
|
||||
web.GET("/coin/log", logCoin)
|
||||
web.GET("/moral/log", logMoral)
|
||||
web.GET("/exp/log", logExp)
|
||||
web.GET("/exp/reward", reward)
|
||||
web.GET("/login/log", logLogin)
|
||||
web.GET("/coin", coin)
|
||||
web.POST("/birthday/update", updateBirthday)
|
||||
web.POST("/pendant/equip", pendantEquip)
|
||||
web.GET("/point/flag", pointFlag)
|
||||
|
||||
sudo := mr.Group("/sudo", sudo)
|
||||
sudo.POST("/notify-purge-cache", notityPurgeCache)
|
||||
|
||||
// captcha 验证码
|
||||
cap := mr.Group("/captcha", authn.UserWeb)
|
||||
cap.GET("/geetest", getChallenge) //获取极验图形验证
|
||||
cap.POST("/geetest/check", geetestValidate) //校验极验验证码
|
||||
|
||||
// vip
|
||||
vip := e.Group("/x/vip", bm.CSRF())
|
||||
vip.GET("/code/verify", authn.User, codeVerify)
|
||||
vip.POST("/code/open", authn.User, codeOpen)
|
||||
vip.GET("/tips", authn.User, tips)
|
||||
vip.GET("/price/panel", authn.User, vipAnti.ServeHTTP, vipPanel)
|
||||
vip.GET("/coupon/list", authn.User, vipAnti.ServeHTTP, couponList)
|
||||
vip.GET("/coupon/usable", authn.User, vipAnti.ServeHTTP, couponUsable)
|
||||
vip.POST("/coupon/unlock", authn.User, vipAnti.ServeHTTP, couponUnlock)
|
||||
vip.GET("/privilege/bysid", vipAnti.ServeHTTP, privilegeBySid)
|
||||
vip.GET("/privilege/bytype", vipAnti.ServeHTTP, privilegeByType)
|
||||
vip.GET("/manager", authn.User, vipAnti.ServeHTTP, vipManagerInfo)
|
||||
vip.POST("/unfreeze", authn.UserWeb, vipAnti.ServeHTTP, unfrozen)
|
||||
vip.GET("/frozenTime", authn.UserWeb, vipAnti.ServeHTTP, frozenTime)
|
||||
vip.GET("/code/openeds", vipAnti.ServeHTTP, codeOpeneds)
|
||||
vip.GET("/public/panel", authn.Guest, vipAnti.ServeHTTP, publicPriceList)
|
||||
vip.POST("/batch/use", vipAnti.ServeHTTP, useBatch)
|
||||
vip.GET("/order/status", authn.UserWeb, orderStatus)
|
||||
vip.GET("/price/panel/v8", authn.Guest, vipAnti.ServeHTTP, vipPanelV8)
|
||||
vip.GET("/prize/cards", authn.UserWeb, vipAnti.ServeHTTP, prizeCards)
|
||||
vip.POST("/prize/draw", authn.UserWeb, vipAnti.ServeHTTP, prizeDraw)
|
||||
vip.GET("/resource/banner", authn.UserMobile, vipAnti.ServeHTTP, resourceBanner) // 大会员落地页
|
||||
vip.GET("/resource/buy", authn.UserMobile, vipAnti.ServeHTTP, resourceBuy) // 大会员购买页
|
||||
|
||||
vip.GET("/coupon/usable/v2", authn.Guest, vipAnti.ServeHTTP, couponBySuitIDV2)
|
||||
vip.GET("/price/panel/v9", authn.Guest, vipAnti.ServeHTTP, vipPanelV9)
|
||||
|
||||
// associate
|
||||
vip.GET("/associate/info", authn.User, bindInfoByMid)
|
||||
vip.GET("/associate/panel", authn.User, actlimit, associatePanel)
|
||||
vip.POST("/associate/create/order", authn.User, actlimit, createAssociateOrder)
|
||||
vip.GET("/associate/ele/oauth", authn.User, actlimit, eleOAuthURL)
|
||||
vip.GET("/associate/ele/redpackets", redpackets)
|
||||
vip.GET("/associate/ele/specailfoods", specailfoods)
|
||||
|
||||
//vip welfare
|
||||
vip.GET("/welfare/list", authn.Guest, welfareList)
|
||||
vip.GET("/welfare/type", authn.Guest, welfareTypeList)
|
||||
vip.GET("/welfare/info", authn.Guest, welfareInfo)
|
||||
vip.POST("/welfare", authn.User, vipAnti.ServeHTTP, receiveWelfare)
|
||||
vip.GET("/welfare/my", authn.User, myWelfare)
|
||||
|
||||
// vip third verify.
|
||||
|
||||
// ele oauth callback.
|
||||
e.GET("/x/oauth2/v1/callback", authn.User, actlimit, openAuthCallBack)
|
||||
|
||||
// bilibili third.
|
||||
oauth2 := e.Group("/x/oauth2/v1", iplimit, vipThirdVerify.Verify, bm.CSRF())
|
||||
oauth2.POST("/access_token", openIDByOAuth2Code)
|
||||
|
||||
// bilibili third vip.
|
||||
vipThird := oauth2.Group("/vip", iplimit, openlimit)
|
||||
vipThird.POST("/bind", openBindByOutOpenID)
|
||||
vipThird.GET("/account", userInfoByOpenID)
|
||||
vipThird.POST("/delivery", bilibiliVipGrant)
|
||||
vipThird.POST("/prize/grant", bilibiliPrizeGrant)
|
||||
|
||||
// vip app api
|
||||
vip.GET("/v1/order/status", authn.UserMobile, orderStatus)
|
||||
vip.GET("/v1/frozenTime", authn.UserMobile, vipAnti.ServeHTTP, frozenTime)
|
||||
vip.POST("/v1/unfrozen", authn.UserMobile, vipAnti.ServeHTTP, unfrozen)
|
||||
vip.GET("/v2/tips", authn.User, tipsv2)
|
||||
vip.GET("/v2/price/panel", authn.Guest, vipAnti.ServeHTTP, vipPanelV2)
|
||||
|
||||
invite := mr.Group("/invite", authn.UserWeb)
|
||||
invite.GET("/stat", inviteStat)
|
||||
invite.POST("/buy", buy)
|
||||
invite.POST("/apply", apply)
|
||||
|
||||
// medal 勋章
|
||||
medal := mr.Group("/medal")
|
||||
// medal.GET("/user/info", authn.User, medalHomeInfo)
|
||||
medal.GET("/user/info", authn.User, medalUserInfo)
|
||||
medal.POST("/install", authn.User, medalInstall)
|
||||
medal.GET("/popup", authn.User, medalPopup)
|
||||
medal.GET("/my/info", authn.User, medalMyInfo)
|
||||
medal.GET("/all/info", authn.User, medalAllInfo)
|
||||
|
||||
official := mr.Group("/official", bm.CSRF(), authn.User)
|
||||
official.POST("/submit", submitOffical)
|
||||
official.GET("/doc", officialDoc)
|
||||
official.GET("/conditions", officialConditions)
|
||||
official.POST("/upload/image", uploadImage)
|
||||
official.POST("/mobile/verify", smsAnti.ServeHTTP, mobileVerify)
|
||||
official.GET("/permission", officialPermission)
|
||||
official.GET("/auto/fill/doc", officialAutoFillDoc)
|
||||
official.GET("/monthly/times", monthlyOfficialSubmittedTimes)
|
||||
|
||||
identifyG := mr.Group("/identify", authn.UserWeb)
|
||||
identifyG.GET("/info", identifyInfo)
|
||||
|
||||
// realname
|
||||
realnameG := mr.Group("/realname", authn.User)
|
||||
realnameG.GET("/channel", realnameChannel)
|
||||
realnameG.GET("/status", realnameStatus)
|
||||
realnameG.GET("/apply/status", realnameApplyStatus)
|
||||
realnameG.POST("/apply", realnameApply)
|
||||
realnameG.POST("/upload", realnameUpload)
|
||||
realnameG.GET("/preview", realnamePreview)
|
||||
realnameG.GET("/countrylist", realnameCountryList)
|
||||
realnameG.GET("/card/types", realnameCardTypes)
|
||||
realnameG.GET("/v2/card/types", realnameCardTypesV2)
|
||||
realnameG.POST("/tel/capture", realnameTelCapture)
|
||||
realnameG.GET("/tel/info", realnameTelInfo)
|
||||
realnameG.GET("/captcha", realnameCaptcha)
|
||||
realnameG.GET("/captcha/refresh", realnameCaptchaRefresh)
|
||||
realnameG.GET("/captcha/confirm", realnameCaptchaConfirm)
|
||||
realnameG.POST("/alipay/apply", realnameAlipayApply)
|
||||
realnameG.GET("/alipay/confirm", realnameAlipayConfirm)
|
||||
|
||||
// passport
|
||||
passportR := mr.Group("/passport", authn.User)
|
||||
passportR.GET("/testUserName", testUserName)
|
||||
|
||||
// member v2
|
||||
memberV2 := e.Group("x/member/v2", bm.CSRF())
|
||||
memberV2.GET("/notice", authn.UserMobile, noticeV2)
|
||||
memberV2.POST("/notice/close", authn.UserMobile, closeNoticeV2)
|
||||
|
||||
// relation
|
||||
relationG := e.Group("/x/relation", bm.CSRF())
|
||||
relationG.GET("", authn.User, relation)
|
||||
relationG.GET("/relations", authn.User, relations)
|
||||
relationG.GET("/blacks", authn.User, blacks)
|
||||
relationG.GET("/whispers", authn.User, whispers)
|
||||
relationG.GET("/friends", authn.User, friends)
|
||||
relationG.POST("/modify", authn.User, anti.ServeHTTP, modify)
|
||||
relationG.POST("/batch/modify", authn.User, batchRelAnti.ServeHTTP, batchModify)
|
||||
relationG.GET("/followings", authn.Guest, followings)
|
||||
relationG.GET("/same/followings", authn.User, sameFollowings)
|
||||
relationG.GET("/followers", authn.Guest, followers)
|
||||
relationG.GET("/stat", authn.Guest, stat)
|
||||
relationG.GET("/stats", authn.Guest, stats)
|
||||
relationG.GET("/recommend", authn.User, recommend)
|
||||
relationG.GET("/recommend/followlist_empty", authn.User, bm.Mobile(), recommendFollowlistEmpty)
|
||||
relationG.GET("/recommend/answer_ok", authn.User, bm.Mobile(), recommendAnswerOK)
|
||||
relationG.GET("/recommend/tag_suggest", authn.User, bm.Mobile(), recommendTagSuggest)
|
||||
relationG.GET("/recommend/tag_suggest/detail", authn.User, bm.Mobile(), recommendTagSuggestDetail)
|
||||
// relation tag
|
||||
relationG.GET("/tag", authn.User, tag)
|
||||
relationG.GET("/tags", authn.User, tags)
|
||||
relationG.POST("/tag/special/add", authn.User, addSpecial)
|
||||
relationG.POST("/tag/special/del", authn.User, delSpecial)
|
||||
relationG.GET("/tag/special", authn.User, special)
|
||||
relationG.GET("/tag/user", authn.User, tagUser)
|
||||
relationG.POST("/tag/create", authn.User, tagCreate)
|
||||
relationG.POST("/tag/update", authn.User, tagUpdate)
|
||||
relationG.POST("/tag/del", authn.User, tagDel)
|
||||
relationG.POST("/tags/addUsers", authn.User, tagsAddUsers)
|
||||
relationG.POST("/tags/copyUsers", authn.User, tagsCopyUsers)
|
||||
relationG.POST("/tags/moveUsers", authn.User, tagsMoveUsers)
|
||||
// for mobile.
|
||||
relationG.GET("/tag/m/tags", authn.User, mobileTags)
|
||||
// 提示用户关注该up主
|
||||
relationG.POST("/prompt", authn.User, prompt)
|
||||
relationG.POST("/prompt/close", authn.User, closePrompt)
|
||||
// 粉丝提醒功能
|
||||
relationG.GET("/followers/unread", authn.User, unread)
|
||||
relationG.POST("/followers/unread/reset", authn.User, unreadReset)
|
||||
relationG.GET("/followers/unread/count", authn.User, unreadCount)
|
||||
relationG.POST("/followers/unread/count/reset", authn.User, unreadCountReset)
|
||||
relationG.GET("/followers/notify", authn.User, followerNotifySetting)
|
||||
relationG.POST("/followers/notify/enable", authn.User, enableFollowerNotify)
|
||||
relationG.POST("/followers/notify/disable", authn.User, disableFollowerNotify)
|
||||
// achieve
|
||||
relationG.POST("/achieve/award/get", authn.User, achieveGet)
|
||||
relationG.GET("/achieve/award", authn.Guest, achieve)
|
||||
|
||||
// pendant group
|
||||
pendant := e.Group("/x/pendant", bm.CSRF())
|
||||
// pendant with web
|
||||
pendant.GET("/current", authn.UserWeb, pendantCurrent)
|
||||
pendant.GET("/all", authn.UserWeb, pendantAll)
|
||||
pendant.GET("/my", authn.UserWeb, pendantMy)
|
||||
pendant.GET("/myHistory", authn.UserWeb, pendantMyHistory)
|
||||
pendant.GET("/bigEntry", authn.UserWeb, pendantEntry)
|
||||
pendant.GET("/vipRecommend", authn.UserWeb, pendantVIP)
|
||||
pendant.POST("/checkOrder", authn.UserWeb, pendantCheckOrder)
|
||||
pendant.POST("/vipGet", authn.UserWeb, pendantVIPGet)
|
||||
pendant.POST("/order", authn.UserWeb, pendantOrder)
|
||||
// pendant with app
|
||||
pendant.GET("/pointEntry", authn.UserMobile, pendantEntry)
|
||||
// pendent with vri
|
||||
pendant.GET("/single", verify.Verify, pendantSingle)
|
||||
|
||||
coupon := e.Group("/x/coupon", bm.CSRF(), authn.User)
|
||||
coupon.GET("/allowance/list", allowanceList)
|
||||
coupon.GET("/list", couponPage)
|
||||
coupon.GET("/code/verify", captchaToken)
|
||||
coupon.POST("/code/exchange", useCouponCode)
|
||||
|
||||
point := e.Group("/x/point", bm.CSRF(), authn.User)
|
||||
point.GET("/info", pointInfo)
|
||||
point.GET("/history", pointPage)
|
||||
|
||||
card := e.Group("/x/card", bm.CSRF())
|
||||
card.GET("/bymid", authn.User, userCard)
|
||||
card.GET("/info", cardInfo)
|
||||
card.GET("/hots", cardHots)
|
||||
card.GET("/groups", authn.Guest, cardGroups)
|
||||
card.GET("/bytype", cardsByGid)
|
||||
card.POST("/equip", authn.User, equip)
|
||||
card.POST("/demount", authn.User, demount)
|
||||
}
|
||||
|
||||
// ping check server ok.
|
||||
func ping(c *bm.Context) {
|
||||
var err error
|
||||
if err = memberSvc.Ping(c); err != nil {
|
||||
c.JSON(nil, err)
|
||||
log.Error("service ping error(%v)", err)
|
||||
c.Writer.WriteHeader(http.StatusServiceUnavailable)
|
||||
}
|
||||
}
|
||||
|
||||
func register(ctx *bm.Context) {
|
||||
ctx.JSON(nil, nil)
|
||||
}
|
||||
|
||||
func initService(c *conf.Config) {
|
||||
relationSvc = rls.New(c)
|
||||
memberSvc = member.New(c)
|
||||
realnameSvc = realname.New(c, conf.RsaPub(), conf.RsaPriv(), conf.AlipayPub(), conf.AlipayBiliPriv())
|
||||
passSvc = passport.New(c)
|
||||
cardSvc = card.New(c)
|
||||
vipSvc = vip.New(c)
|
||||
usSvc = us.New(c)
|
||||
geetestSvr = geetest.New(c)
|
||||
// api middleware
|
||||
authn = auth.New(c.AuthN)
|
||||
verify = v.New(c.Verify)
|
||||
anti = antispam.New(c.Antispam)
|
||||
batchRelAnti = antispam.New(c.BatchRelAntispam)
|
||||
smsAnti = antispam.New(c.SMSAntispam)
|
||||
faceAnti = antispam.New(c.FaceAntispam)
|
||||
vipAnti = antispam.New(c.VIPAntispam)
|
||||
spv = supervisor.New(c.Supervisor)
|
||||
couponSvc = coupon.New(c)
|
||||
pointSvc = point.New(c)
|
||||
}
|
70
app/interface/main/account/http/invite.go
Normal file
70
app/interface/main/account/http/invite.go
Normal file
@ -0,0 +1,70 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"go-common/app/interface/main/account/model"
|
||||
"go-common/library/ecode"
|
||||
"go-common/library/log"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
// stat get invite stat.
|
||||
func inviteStat(c *bm.Context) {
|
||||
mid, _ := c.Get("mid")
|
||||
var err error
|
||||
var stat *model.RichInviteStat
|
||||
if stat, err = usSvc.Stat(c, mid.(int64)); err != nil {
|
||||
log.Error("memberService.Stat(%d) error(%v)", mid, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(stat, nil)
|
||||
}
|
||||
|
||||
// buy buy invite code.
|
||||
func buy(c *bm.Context) {
|
||||
mid, _ := c.Get("mid")
|
||||
var err error
|
||||
var num int64
|
||||
req := c.Request.Form
|
||||
numStr := req.Get("num")
|
||||
if num, err = strconv.ParseInt(numStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
geeParam := new(model.GeeCheckRequest)
|
||||
if err = c.Bind(geeParam); err != nil {
|
||||
return
|
||||
}
|
||||
geeParam.MID = mid.(int64)
|
||||
if isPass := geetestSvr.Validate(c, geeParam); !isPass {
|
||||
c.JSON(nil, ecode.CaptchaErr)
|
||||
return
|
||||
}
|
||||
var invs []*model.RichInvite
|
||||
if invs, err = usSvc.Buy(c, mid.(int64), num); err != nil {
|
||||
log.Error("memberService.Buy(%d, %d) error(%v)", mid, num, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(invs, nil)
|
||||
}
|
||||
|
||||
// apply apply invite code.
|
||||
func apply(c *bm.Context) {
|
||||
mid, _ := c.Get("mid")
|
||||
var err error
|
||||
var num int64
|
||||
code := c.Request.Form.Get("invite_code")
|
||||
if code == "" {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if err = usSvc.Apply(c, mid.(int64), code, c.Request.Header.Get("Cookie")); err != nil {
|
||||
log.Error("memberService.Apply(%d, %d) error(%v)", mid, num, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, nil)
|
||||
}
|
84
app/interface/main/account/http/medal.go
Normal file
84
app/interface/main/account/http/medal.go
Normal file
@ -0,0 +1,84 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"go-common/app/service/main/usersuit/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func medalUserInfo(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, _ = c.Get("mid")
|
||||
//ip = c.RemoteIP()
|
||||
data *model.MedalUserInfo
|
||||
)
|
||||
if data, err = memberSvc.MedalUserInfo(c, mid.(int64)); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(data, nil)
|
||||
}
|
||||
|
||||
func medalInstall(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
nid, isActivated int64
|
||||
mid, _ = c.Get("mid")
|
||||
)
|
||||
nidStr := c.Request.Form.Get("nid")
|
||||
if nid, err = strconv.ParseInt(nidStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
isActivatedStr := c.Request.Form.Get("isActivated")
|
||||
if isActivated, err = strconv.ParseInt(isActivatedStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
err = memberSvc.MedalInstall(c, mid.(int64), nid, int8(isActivated))
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, nil)
|
||||
}
|
||||
|
||||
func medalPopup(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, _ = c.Get("mid")
|
||||
data *model.MedalPopup
|
||||
)
|
||||
if data, err = memberSvc.MedalPopup(c, mid.(int64)); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(data, nil)
|
||||
}
|
||||
|
||||
func medalMyInfo(c *bm.Context) {
|
||||
var (
|
||||
mid, _ = c.Get("mid")
|
||||
)
|
||||
data, err := memberSvc.MedalMyInfo(c, mid.(int64))
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(data, nil)
|
||||
}
|
||||
|
||||
func medalAllInfo(c *bm.Context) {
|
||||
var (
|
||||
mid, _ = c.Get("mid")
|
||||
)
|
||||
data, err := memberSvc.MedalAllInfo(c, mid.(int64))
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(data, nil)
|
||||
}
|
133
app/interface/main/account/http/member.go
Normal file
133
app/interface/main/account/http/member.go
Normal file
@ -0,0 +1,133 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
|
||||
"go-common/app/interface/main/account/model"
|
||||
"go-common/library/ecode"
|
||||
"go-common/library/log"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func identifyInfo(c *bm.Context) {
|
||||
mid, ok := c.Get("mid")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
var (
|
||||
resData struct {
|
||||
Status model.IdentifyStatus `json:"identification"`
|
||||
}
|
||||
status int8
|
||||
err error
|
||||
)
|
||||
if status, err = realnameSvc.Status(c, mid.(int64)); err != nil {
|
||||
log.Error("%+v", err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
switch status {
|
||||
case 1:
|
||||
resData.Status = model.IdentifyOK
|
||||
case 0:
|
||||
resData.Status = model.IdentifyNotOK
|
||||
}
|
||||
c.JSON(resData, nil)
|
||||
}
|
||||
|
||||
func submitOffical(c *bm.Context) {
|
||||
mid, ok := c.Get("mid")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
params := new(model.OfficialApply)
|
||||
if err := c.Bind(params); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(nil, memberSvc.SubmitOfficial(c, mid.(int64), params))
|
||||
}
|
||||
|
||||
func officialDoc(c *bm.Context) {
|
||||
mid, ok := c.Get("mid")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(memberSvc.OfficialDoc(c, mid.(int64)))
|
||||
}
|
||||
|
||||
func officialConditions(c *bm.Context) {
|
||||
mid, ok := c.Get("mid")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(memberSvc.OfficialConditions(c, mid.(int64)))
|
||||
}
|
||||
|
||||
func uploadImage(c *bm.Context) {
|
||||
midI, _ := c.Get("mid")
|
||||
mid := midI.(int64)
|
||||
log.Infov(c, log.KV("log", "account-interface: upload image"), log.KV("mid", mid))
|
||||
|
||||
file, _, err := c.Request.FormFile("file")
|
||||
if err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
bs, err := ioutil.ReadAll(file)
|
||||
if err != nil {
|
||||
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("account-interface: file type not allow file type(%s, mid: %v)", ftype, mid)
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
url, err := memberSvc.UploadImage(c, ftype, bs)
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(map[string]interface{}{
|
||||
"url": url,
|
||||
"size": len(bs),
|
||||
}, nil)
|
||||
}
|
||||
|
||||
func mobileVerify(c *bm.Context) {
|
||||
midI, _ := c.Get("mid")
|
||||
arg := &model.ArgMobileVerify{}
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
if arg.Country == 0 {
|
||||
arg.Country = 86
|
||||
}
|
||||
c.JSON(nil, memberSvc.MobileVerify(c, midI.(int64), arg.Mobile, arg.Country))
|
||||
}
|
||||
|
||||
func officialPermission(ctx *bm.Context) {
|
||||
resp := &model.OfficialPermissionResponse{
|
||||
DeniedRoles: []int8{},
|
||||
Metadata: map[string]interface{}{},
|
||||
}
|
||||
ctx.JSON(resp, nil)
|
||||
}
|
||||
|
||||
func monthlyOfficialSubmittedTimes(ctx *bm.Context) {
|
||||
midI, _ := ctx.Get("mid")
|
||||
ctx.JSON(memberSvc.MonthlyOfficialSubmittedTimes(ctx, midI.(int64)), nil)
|
||||
}
|
||||
|
||||
func officialAutoFillDoc(ctx *bm.Context) {
|
||||
midI, _ := ctx.Get("mid")
|
||||
ctx.JSON(memberSvc.OfficialAutoFillDoc(ctx, midI.(int64)))
|
||||
}
|
63
app/interface/main/account/http/notice.go
Normal file
63
app/interface/main/account/http/notice.go
Normal file
@ -0,0 +1,63 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"go-common/library/ecode"
|
||||
"go-common/library/log"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func notice(c *bm.Context) {
|
||||
c.JSON(struct{}{}, nil)
|
||||
}
|
||||
|
||||
func closeNotice(c *bm.Context) {
|
||||
c.JSON(struct{}{}, nil)
|
||||
}
|
||||
|
||||
func noticeV2(c *bm.Context) {
|
||||
var (
|
||||
params = c.Request.Form
|
||||
pf string
|
||||
build int64
|
||||
)
|
||||
mid, ok := c.Get("mid")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
uuid := params.Get("uuid")
|
||||
if uuid == "" {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
pf = params.Get("platform")
|
||||
build, _ = strconv.ParseInt(params.Get("build"), 10, 64)
|
||||
n, err := memberSvc.NoticeV2(c, mid.(int64), uuid, pf, build)
|
||||
if err != nil {
|
||||
log.Error("memberSvc.NoticeV2(%d, %s) error(%v)", mid, uuid, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(n, nil)
|
||||
}
|
||||
|
||||
func closeNoticeV2(c *bm.Context) {
|
||||
mid, ok := c.Get("mid")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
uuid := c.Request.Form.Get("uuid")
|
||||
if uuid == "" {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
err := memberSvc.CloseNoticeV2(c, mid.(int64), uuid)
|
||||
if err != nil {
|
||||
log.Error("memberSvc.CloseNoticeV2(%d, %s) error(%v)", mid, uuid, err)
|
||||
c.JSON(nil, err)
|
||||
}
|
||||
c.JSON(nil, nil)
|
||||
}
|
20
app/interface/main/account/http/passport.go
Normal file
20
app/interface/main/account/http/passport.go
Normal file
@ -0,0 +1,20 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func testUserName(c *bm.Context) {
|
||||
mid, ok := c.Get("mid")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
name := c.Request.Form.Get("name")
|
||||
if name == "" {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, passSvc.TestUserName(c, name, mid.(int64)))
|
||||
}
|
166
app/interface/main/account/http/pendant.go
Normal file
166
app/interface/main/account/http/pendant.go
Normal file
@ -0,0 +1,166 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func pendantAll(c *bm.Context) {
|
||||
mid, ok := c.Get("mid")
|
||||
//ip := c.RemoteIP()
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
c.JSON(usSvc.Group(c, mid.(int64)))
|
||||
}
|
||||
|
||||
func pendantMy(c *bm.Context) {
|
||||
mid, ok := c.Get("mid")
|
||||
//ip := c.RemoteIP()
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
c.JSON(usSvc.My(c, mid.(int64)))
|
||||
}
|
||||
|
||||
func pendantMyHistory(c *bm.Context) {
|
||||
//ip := c.RemoteIP()
|
||||
mid, ok := c.Get("mid")
|
||||
pageStr := c.Request.Form.Get("page")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
page, _ := strconv.ParseInt(pageStr, 10, 64)
|
||||
c.JSON(usSvc.MyHistory(c, mid.(int64), page))
|
||||
}
|
||||
|
||||
func pendantCurrent(c *bm.Context) {
|
||||
mid, ok := c.Get("mid")
|
||||
//ip := c.RemoteIP()
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
c.JSON(usSvc.Equipment(c, mid.(int64)))
|
||||
}
|
||||
|
||||
func pendantEntry(c *bm.Context) {
|
||||
mid, ok := c.Get("mid")
|
||||
//ip := c.RemoteIP()
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
c.JSON(usSvc.GroupEntry(c, mid.(int64)))
|
||||
}
|
||||
|
||||
func pendantSingle(c *bm.Context) {
|
||||
pidStr := c.Request.Form.Get("pid")
|
||||
//ip := c.RemoteIP()
|
||||
pid, err := strconv.ParseInt(pidStr, 10, 64)
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(usSvc.Pendant(c, pid))
|
||||
}
|
||||
|
||||
func pendantVIP(c *bm.Context) {
|
||||
mid, ok := c.Get("mid")
|
||||
//ip := c.RemoteIP()
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
c.JSON(usSvc.GroupVIP(c, mid.(int64)))
|
||||
}
|
||||
|
||||
func pendantCheckOrder(c *bm.Context) {
|
||||
mid, ok := c.Get("mid")
|
||||
//ip := c.RemoteIP()
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
orderID := c.Request.Form.Get("orderId")
|
||||
c.JSON(nil, usSvc.CheckOrder(c, mid.(int64), orderID))
|
||||
}
|
||||
|
||||
func pendantVIPGet(c *bm.Context) {
|
||||
params := c.Request.Form
|
||||
mid, ok := c.Get("mid")
|
||||
//ip := c.RemoteIP()
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
pidStr := params.Get("pid")
|
||||
pid, err := strconv.ParseInt(pidStr, 10, 64)
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
if pid == 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
activatedStr := params.Get("isActivated")
|
||||
activated, err := strconv.Atoi(activatedStr)
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
if activated == 0 {
|
||||
activated = 1
|
||||
} else {
|
||||
activated = 2
|
||||
}
|
||||
c.JSON(nil, usSvc.VipGet(c, mid.(int64), pid, int8(activated)))
|
||||
}
|
||||
|
||||
func pendantOrder(c *bm.Context) {
|
||||
params := c.Request.Form
|
||||
mid, ok := c.Get("mid")
|
||||
//ip := c.RemoteIP()
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
pidStr := params.Get("pid")
|
||||
pid, err := strconv.ParseInt(pidStr, 10, 64)
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
timeLengthStr := params.Get("timeLength")
|
||||
timeLength, err := strconv.ParseInt(timeLengthStr, 10, 64)
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
if pid <= 0 || timeLength <= 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
var (
|
||||
moneyType int8
|
||||
moneyTypeStr string
|
||||
)
|
||||
moneyTypeStr = params.Get("moneyType")
|
||||
switch moneyTypeStr {
|
||||
case "coin":
|
||||
moneyType = 0
|
||||
case "bcoin":
|
||||
moneyType = 1
|
||||
case "point":
|
||||
moneyType = 2
|
||||
default:
|
||||
c.JSON(nil, ecode.PendantPayTypeErr)
|
||||
return
|
||||
}
|
||||
c.JSON(usSvc.Order(c, mid.(int64), pid, timeLength, moneyType))
|
||||
}
|
42
app/interface/main/account/http/pendant_new.go
Normal file
42
app/interface/main/account/http/pendant_new.go
Normal file
@ -0,0 +1,42 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
usmdl "go-common/app/service/main/usersuit/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
const _mobilePendant = "http://account.bilibili.com/mobile/pendant/#/my"
|
||||
|
||||
func pointFlagMobile(c *bm.Context) {
|
||||
mid, ok := c.Get("mid")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
var (
|
||||
err error
|
||||
pointFlag struct {
|
||||
Link struct {
|
||||
PendantLink string `json:"pendant_link"`
|
||||
MedalLink string `json:"medal_link"`
|
||||
} `json:"link"`
|
||||
Flag *usmdl.PointFlag `json:"flag"`
|
||||
}
|
||||
)
|
||||
if pointFlag.Flag, err = usSvc.PointFlag(c, &usmdl.ArgMID{MID: mid.(int64)}); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
pointFlag.Link.PendantLink = _mobilePendant
|
||||
c.JSON(pointFlag, nil)
|
||||
}
|
||||
|
||||
func pointFlag(c *bm.Context) {
|
||||
mid, ok := c.Get("mid")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
c.JSON(usSvc.PointFlag(c, &usmdl.ArgMID{MID: mid.(int64)}))
|
||||
}
|
31
app/interface/main/account/http/point.go
Normal file
31
app/interface/main/account/http/point.go
Normal file
@ -0,0 +1,31 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/app/service/main/point/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func pointInfo(c *bm.Context) {
|
||||
mid, ok := c.Get("mid")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(pointSvc.PointInfo(c, mid.(int64)))
|
||||
}
|
||||
|
||||
func pointPage(c *bm.Context) {
|
||||
var err error
|
||||
mid, ok := c.Get("mid")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
arg := new(model.ArgRPCPointHistory)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
arg.Mid = mid.(int64)
|
||||
c.JSON(pointSvc.PointPage(c, arg))
|
||||
}
|
328
app/interface/main/account/http/realname.go
Normal file
328
app/interface/main/account/http/realname.go
Normal file
@ -0,0 +1,328 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"go-common/app/interface/main/account/model"
|
||||
"go-common/library/ecode"
|
||||
"go-common/library/log"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
"go-common/library/net/metadata"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
// modify modify user relation.
|
||||
func realnameStatus(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, _ = c.Get("mid")
|
||||
)
|
||||
var resData struct {
|
||||
Status int8 `json:"status"`
|
||||
}
|
||||
if resData.Status, err = realnameSvc.Status(c, mid.(int64)); err != nil {
|
||||
log.Error("%+v", err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(resData, nil)
|
||||
}
|
||||
|
||||
func realnameApplyStatus(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, _ = c.Get("mid")
|
||||
)
|
||||
var resData struct {
|
||||
Status int8 `json:"status"`
|
||||
Remark string `json:"remark"`
|
||||
Realname string `json:"realname"`
|
||||
Card string `json:"card"`
|
||||
}
|
||||
if resData.Status, resData.Remark, resData.Realname, resData.Card, err = realnameSvc.ApplyStatus(c, mid.(int64)); err != nil {
|
||||
log.Error("%+v", err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(resData, nil)
|
||||
}
|
||||
|
||||
func realnameCardTypes(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
params = c.Request.Form
|
||||
|
||||
platform = params.Get("platform")
|
||||
buildStr = params.Get("build")
|
||||
mobiapp = params.Get("mobi_app")
|
||||
device = params.Get("device")
|
||||
build int
|
||||
)
|
||||
if build, err = strconv.Atoi(buildStr); err != nil {
|
||||
log.Error("%+v", errors.WithStack(err))
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
var resData []*model.RealnameCardType
|
||||
if resData, err = realnameSvc.CardTypes(c, platform, mobiapp, device, build); err != nil {
|
||||
log.Error("%+v", err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(resData, nil)
|
||||
}
|
||||
|
||||
func realnameCardTypesV2(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
)
|
||||
var resData []*model.RealnameCardType
|
||||
if resData, err = realnameSvc.CardTypesV2(c); err != nil {
|
||||
log.Error("%+v", err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(resData, nil)
|
||||
}
|
||||
|
||||
func realnameCountryList(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
)
|
||||
var resData []*model.RealnameCountry
|
||||
if resData, err = realnameSvc.CountryList(c); err != nil {
|
||||
log.Error("%+v", err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(resData, nil)
|
||||
}
|
||||
|
||||
func realnameTelCapture(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, _ = c.Get("mid")
|
||||
)
|
||||
if err = realnameSvc.TelCapture(c, mid.(int64)); err != nil {
|
||||
log.Error("%+v", err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, nil)
|
||||
}
|
||||
|
||||
func realnameTelInfo(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, _ = c.Get("mid")
|
||||
)
|
||||
var resData struct {
|
||||
Tel string `json:"tel"`
|
||||
}
|
||||
if resData.Tel, err = realnameSvc.TelInfo(c, mid.(int64)); err != nil {
|
||||
log.Error("%+v", err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(resData, nil)
|
||||
}
|
||||
|
||||
func realnameApply(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, _ = c.Get("mid")
|
||||
params = c.Request.Form
|
||||
|
||||
realname = params.Get("real_name")
|
||||
cardTypeStr = params.Get("card_type")
|
||||
cardType int
|
||||
cardNum = params.Get("card_num")
|
||||
countryIDStr = params.Get("country")
|
||||
countryID int
|
||||
captureStr = params.Get("capture")
|
||||
capture int
|
||||
handIMGToken = params.Get("img1_token")
|
||||
frontIMGToken = params.Get("img2_token")
|
||||
backIMGToken = params.Get("img3_token")
|
||||
)
|
||||
if cardType, err = strconv.Atoi(cardTypeStr); err != nil {
|
||||
log.Error("%+v", errors.WithStack(err))
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if countryIDStr == "" {
|
||||
countryID = 0 // 默认0:中国
|
||||
} else {
|
||||
if countryID, err = strconv.Atoi(countryIDStr); err != nil {
|
||||
log.Error("%+v", errors.WithStack(err))
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
if countryID < 0 {
|
||||
countryID = 0
|
||||
}
|
||||
|
||||
if capture, err = strconv.Atoi(captureStr); err != nil {
|
||||
log.Error("%+v", errors.WithStack(err))
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if err = realnameSvc.Apply(c, mid.(int64), realname, cardType, cardNum, countryID, capture, handIMGToken, frontIMGToken, backIMGToken); err != nil {
|
||||
log.Error("%+v")
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, nil)
|
||||
}
|
||||
|
||||
func realnameUpload(c *bm.Context) {
|
||||
var (
|
||||
mid, _ = c.Get("mid")
|
||||
)
|
||||
defer c.Request.Form.Del("img") // 防止日志不出现
|
||||
c.Request.ParseMultipartForm(32 << 20)
|
||||
imgBytes, err := func() ([]byte, error) {
|
||||
img := c.Request.FormValue("img")
|
||||
if img != "" {
|
||||
log.Info("Succeeded to parse img file from form value: mid: %d, length: %d", mid, len(img))
|
||||
return []byte(img), nil
|
||||
}
|
||||
log.Warn("Failed to parse img file from form value, fallback to form file: mid: %d", mid)
|
||||
f, _, err := c.Request.FormFile("img")
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "parse img form file: mid: %d", mid)
|
||||
}
|
||||
defer f.Close()
|
||||
data, err := ioutil.ReadAll(f)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "read img form file: mid: %d", mid)
|
||||
}
|
||||
if len(data) <= 0 {
|
||||
return nil, errors.Wrapf(err, "form file data: mid: %d, length: %d", mid, len(data))
|
||||
}
|
||||
log.Info("Succeeded to parse file from form file: mid: %d, length: %d", mid, len(data))
|
||||
return data, nil
|
||||
}()
|
||||
if err != nil {
|
||||
log.Error("Failed to parse realname upload file: mid: %d: %+v", mid, err)
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
var resData struct {
|
||||
SRC string `json:"token"`
|
||||
}
|
||||
if resData.SRC, err = realnameSvc.Upload(c, mid.(int64), imgBytes); err != nil {
|
||||
log.Error("%+v", err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(resData, nil)
|
||||
}
|
||||
|
||||
func realnamePreview(c *bm.Context) {
|
||||
var (
|
||||
img []byte
|
||||
err error
|
||||
mid, _ = c.Get("mid")
|
||||
|
||||
params = c.Request.Form
|
||||
src = params.Get("src")
|
||||
)
|
||||
if img, err = realnameSvc.Preview(c, mid.(int64), src); err != nil {
|
||||
log.Error("%+v", err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.Writer.Header().Set("Content-Type", http.DetectContentType(img))
|
||||
c.JSON(img, err)
|
||||
}
|
||||
|
||||
// alipay api
|
||||
|
||||
func realnameChannel(c *bm.Context) {
|
||||
c.JSON(realnameSvc.Channel(c))
|
||||
}
|
||||
|
||||
func realnameCaptcha(c *bm.Context) {
|
||||
var (
|
||||
mid, _ = c.Get("mid")
|
||||
userAgent = c.Request.UserAgent()
|
||||
ip = metadata.String(c, metadata.RemoteIP)
|
||||
err error
|
||||
)
|
||||
var resp struct {
|
||||
URL string `json:"url"`
|
||||
Remote int `json:"remote"`
|
||||
}
|
||||
resp.URL, resp.Remote, err = realnameSvc.CaptchaGTRegister(c, mid.(int64), ip, geetestClientType(userAgent))
|
||||
c.JSON(resp, err)
|
||||
}
|
||||
|
||||
func realnameCaptchaRefresh(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, _ = c.Get("mid")
|
||||
userAgent = c.Request.UserAgent()
|
||||
ip = metadata.String(c, metadata.RemoteIP)
|
||||
v = &model.ParamRealnameCaptchaGTRefresh{}
|
||||
)
|
||||
if err = c.Bind(v); err != nil {
|
||||
return
|
||||
}
|
||||
var resp struct {
|
||||
CaptureType int `json:"captcha_type"`
|
||||
CaptureInfo struct {
|
||||
Success int `json:"success"`
|
||||
GT string `json:"gt"`
|
||||
Challenge string `json:"challenge"`
|
||||
} `json:"captcha_info"`
|
||||
}
|
||||
resp.CaptureType = 1
|
||||
resp.CaptureInfo.Challenge, resp.CaptureInfo.GT, resp.CaptureInfo.Success, err = realnameSvc.CaptchaGTRefresh(c, mid.(int64), ip, geetestClientType(userAgent), v.Hash)
|
||||
c.JSON(resp, err)
|
||||
}
|
||||
|
||||
func realnameCaptchaConfirm(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, _ = c.Get("mid")
|
||||
userAgent = c.Request.UserAgent()
|
||||
ip = metadata.String(c, metadata.RemoteIP)
|
||||
v = &model.ParamRealnameCaptchaGTCheck{}
|
||||
)
|
||||
if err = c.Bind(v); err != nil {
|
||||
return
|
||||
}
|
||||
if v.Remote == 1 && len(v.Challenge) != 34 {
|
||||
err = ecode.RequestErr
|
||||
return
|
||||
}
|
||||
c.JSON(realnameSvc.CaptchaGTValidate(c, mid.(int64), ip, geetestClientType(userAgent), v))
|
||||
}
|
||||
|
||||
func realnameAlipayApply(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, _ = c.Get("mid")
|
||||
v = &model.ParamRealnameAlipayApply{}
|
||||
)
|
||||
if err = c.Bind(v); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(realnameSvc.AlipayApply(c, mid.(int64), v))
|
||||
}
|
||||
|
||||
func realnameAlipayConfirm(c *bm.Context) {
|
||||
var (
|
||||
mid, _ = c.Get("mid")
|
||||
)
|
||||
c.JSON(realnameSvc.AlipayConfirm(c, mid.(int64)))
|
||||
}
|
||||
|
||||
func geetestClientType(userAgent string) string {
|
||||
return "h5"
|
||||
}
|
927
app/interface/main/account/http/relation.go
Normal file
927
app/interface/main/account/http/relation.go
Normal file
@ -0,0 +1,927 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"go-common/app/interface/main/account/model"
|
||||
mrl "go-common/app/service/main/relation/model"
|
||||
"go-common/library/ecode"
|
||||
"go-common/library/log"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
"go-common/library/net/metadata"
|
||||
"go-common/library/xstr"
|
||||
)
|
||||
|
||||
var (
|
||||
_defaultPS int64 = 50
|
||||
)
|
||||
|
||||
// modify modify user relation.
|
||||
func modify(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
act, fid int64
|
||||
src uint64
|
||||
params = c.Request.Form
|
||||
mid, _ = c.Get("mid")
|
||||
actStr = params.Get("act")
|
||||
fidStr = params.Get("fid")
|
||||
srcStr = params.Get("re_src")
|
||||
ua = c.Request.Header.Get("User-Agent")
|
||||
referer = c.Request.Header.Get("Referer")
|
||||
sid string
|
||||
realIP = metadata.String(c, metadata.RemoteIP)
|
||||
)
|
||||
if act, err = strconv.ParseInt(actStr, 10, 8); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if fid, err = strconv.ParseInt(fidStr, 10, 64); err != nil || fid <= 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if src, err = strconv.ParseUint(srcStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
sidCookie, err := c.Request.Cookie("sid")
|
||||
if err != nil {
|
||||
log.Warn("relation infoc get sid failed error(%v)", err)
|
||||
} else {
|
||||
sid = sidCookie.Value
|
||||
}
|
||||
buvid := c.Request.Header.Get("Buvid")
|
||||
if buvid == "" {
|
||||
buvidCookie, _ := c.Request.Cookie("buvid3")
|
||||
if buvidCookie != nil {
|
||||
buvid = buvidCookie.Value
|
||||
}
|
||||
}
|
||||
ric := map[string]string{
|
||||
"ip": realIP,
|
||||
"User-Agent": ua,
|
||||
"sid": sid,
|
||||
"buvid": buvid,
|
||||
"Referer": referer,
|
||||
}
|
||||
c.JSON(nil, relationSvc.Modify(c, mid.(int64), fid, int8(act), uint8(src), ric))
|
||||
}
|
||||
|
||||
func batchModify(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
act int64
|
||||
fids []int64
|
||||
src uint64
|
||||
params = c.Request.Form
|
||||
// res = c.Result()
|
||||
mid, _ = c.Get("mid")
|
||||
actStr = params.Get("act")
|
||||
fidsStr = params.Get("fids")
|
||||
srcStr = params.Get("re_src")
|
||||
ua = c.Request.Header.Get("User-Agent")
|
||||
referer = c.Request.Header.Get("Referer")
|
||||
sid string
|
||||
realIP = metadata.String(c, metadata.RemoteIP)
|
||||
)
|
||||
if act, err = strconv.ParseInt(actStr, 10, 8); err != nil {
|
||||
// res["code"] = ecode.RequestErr
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if fids, err = xstr.SplitInts(fidsStr); err != nil || len(fids) <= 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if src, err = strconv.ParseUint(srcStr, 10, 64); err != nil {
|
||||
// res["code"] = ecode.RequestErr
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
sidCookie, err := c.Request.Cookie("sid")
|
||||
if err != nil {
|
||||
log.Warn("relation infoc get sid failed error(%v)", err)
|
||||
} else {
|
||||
sid = sidCookie.Value
|
||||
}
|
||||
buvid := c.Request.Header.Get("Buvid")
|
||||
if buvid == "" {
|
||||
buvidCookie, _ := c.Request.Cookie("buvid3")
|
||||
if buvidCookie != nil {
|
||||
buvid = buvidCookie.Value
|
||||
}
|
||||
}
|
||||
ric := map[string]string{
|
||||
"ip": realIP,
|
||||
"User-Agent": ua,
|
||||
"sid": sid,
|
||||
"buvid": buvid,
|
||||
"Referer": referer,
|
||||
}
|
||||
// res["code"] = relationSvc.Modify(c, mid.(int64), fid, int8(act), uint8(src), ric)
|
||||
c.JSON(relationSvc.BatchModify(c, mid.(int64), fids, int8(act), uint8(src), ric))
|
||||
}
|
||||
|
||||
// relation get relation between mid and fid.
|
||||
func relation(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
fid int64
|
||||
f *mrl.Following
|
||||
params = c.Request.Form
|
||||
fidStr = params.Get("fid")
|
||||
mid, _ = c.Get("mid")
|
||||
)
|
||||
if fid, err = strconv.ParseInt(fidStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if f, err = relationSvc.Relation(c, mid.(int64), fid); err != nil {
|
||||
log.Error("relationSvc.Relation(%d, %d) error(%v)", mid, fid, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(f, nil)
|
||||
}
|
||||
|
||||
// relations get relations between mid and fids.
|
||||
func relations(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
fm map[int64]*mrl.Following
|
||||
fids []int64
|
||||
params = c.Request.Form
|
||||
fidsStr = params.Get("fids")
|
||||
mid, _ = c.Get("mid")
|
||||
)
|
||||
if fids, err = xstr.SplitInts(fidsStr); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
log.Error("xstr.SplitInts(fids %v) err(%v)", fidsStr, err)
|
||||
return
|
||||
}
|
||||
if fm, err = relationSvc.Relations(c, mid.(int64), fids); err != nil {
|
||||
log.Error("relationSvc.Relations(%d, %v) error(%v)", mid, fids, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(fm, nil)
|
||||
}
|
||||
|
||||
// followings get user's following list.
|
||||
func followings(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, vmid int64
|
||||
pn, ps int64
|
||||
self bool
|
||||
followings []*model.Following
|
||||
params = c.Request.Form
|
||||
vmidStr = params.Get("vmid")
|
||||
psStr = params.Get("ps")
|
||||
pnStr = params.Get("pn")
|
||||
order = params.Get("order")
|
||||
version uint64
|
||||
versionStr = params.Get("re_version")
|
||||
crc32v uint32
|
||||
total int
|
||||
)
|
||||
midS, ok := c.Get("mid")
|
||||
if ok {
|
||||
mid = midS.(int64)
|
||||
} else {
|
||||
mid = 0
|
||||
}
|
||||
if vmid, err = strconv.ParseInt(vmidStr, 10, 64); err != nil || vmid <= 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
self = mid == vmid
|
||||
if pnStr != "" {
|
||||
if pn, err = strconv.ParseInt(pnStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
if pn <= 0 {
|
||||
pn = 1
|
||||
}
|
||||
if !self && pn > 5 {
|
||||
c.JSON(nil, ecode.RelFollowingGuestLimit)
|
||||
return
|
||||
}
|
||||
if psStr != "" {
|
||||
if ps, err = strconv.ParseInt(psStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
if ps <= 0 || ps > _defaultPS {
|
||||
ps = _defaultPS
|
||||
}
|
||||
if versionStr != "" {
|
||||
if version, err = strconv.ParseUint(versionStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
if order != "asc" {
|
||||
order = "desc"
|
||||
}
|
||||
if followings, crc32v, total, err = relationSvc.Followings(c, vmid, mid, pn, ps, version, order); err != nil {
|
||||
log.Error("relationSvc.Followings(%d) error(%v)", vmid, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(map[string]interface{}{
|
||||
"re_version": uint64(crc32v),
|
||||
"list": followings,
|
||||
"total": total,
|
||||
}, nil)
|
||||
}
|
||||
|
||||
// followers get user's follower list.
|
||||
func followers(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, vmid int64
|
||||
pn, ps int64
|
||||
self bool
|
||||
fs []*model.Following
|
||||
params = c.Request.Form
|
||||
vmidStr = params.Get("vmid")
|
||||
psStr = params.Get("ps")
|
||||
pnStr = params.Get("pn")
|
||||
version uint64
|
||||
total int
|
||||
versionStr = params.Get("re_version")
|
||||
crc32v uint32
|
||||
)
|
||||
midS, ok := c.Get("mid")
|
||||
if ok {
|
||||
mid = midS.(int64)
|
||||
} else {
|
||||
mid = 0
|
||||
}
|
||||
if vmid, err = strconv.ParseInt(vmidStr, 10, 64); err != nil || vmid <= 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
self = mid == vmid
|
||||
if pnStr != "" {
|
||||
if pn, err = strconv.ParseInt(pnStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
if pn <= 0 {
|
||||
pn = 1
|
||||
}
|
||||
if !self && pn > 5 {
|
||||
c.JSON(nil, ecode.RelFollowingGuestLimit)
|
||||
return
|
||||
}
|
||||
if psStr != "" {
|
||||
if ps, err = strconv.ParseInt(psStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
if ps <= 0 || ps > _defaultPS {
|
||||
ps = _defaultPS
|
||||
}
|
||||
if versionStr != "" {
|
||||
if version, err = strconv.ParseUint(versionStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
if fs, crc32v, total, err = relationSvc.Followers(c, vmid, mid, pn, ps, version); err != nil {
|
||||
log.Error("relationSvc.Followers(%d) error(%v)", mid, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(map[string]interface{}{
|
||||
"re_version": uint64(crc32v),
|
||||
"list": fs,
|
||||
"total": total,
|
||||
}, nil)
|
||||
}
|
||||
|
||||
// friends get user's friends list: follow eachother.
|
||||
func friends(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, _ = c.Get("mid")
|
||||
followings []*model.Following
|
||||
params = c.Request.Form
|
||||
version uint64
|
||||
versionStr = params.Get("re_version")
|
||||
crc32v uint32
|
||||
)
|
||||
if versionStr != "" {
|
||||
if version, err = strconv.ParseUint(versionStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
if followings, crc32v, err = relationSvc.Friends(c, mid.(int64), version); err != nil {
|
||||
log.Error("relationSvc.Followings(%d) error(%v)", mid, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(map[string]interface{}{
|
||||
"re_version": uint64(crc32v),
|
||||
"list": followings,
|
||||
}, nil)
|
||||
}
|
||||
|
||||
// Blacks get user's black list.
|
||||
func blacks(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
blacks []*model.Following
|
||||
mid, _ = c.Get("mid")
|
||||
params = c.Request.Form
|
||||
version uint64
|
||||
pn, ps int64
|
||||
total int
|
||||
pnStr = params.Get("pn")
|
||||
psStr = params.Get("ps")
|
||||
versionStr = params.Get("re_version")
|
||||
crc32v uint32
|
||||
)
|
||||
if versionStr != "" {
|
||||
if version, err = strconv.ParseUint(versionStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
if pnStr != "" {
|
||||
if pn, err = strconv.ParseInt(pnStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
if pn <= 0 {
|
||||
pn = 1
|
||||
}
|
||||
if psStr != "" {
|
||||
if ps, err = strconv.ParseInt(psStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
if ps <= 0 || ps > _defaultPS {
|
||||
ps = _defaultPS
|
||||
}
|
||||
if blacks, crc32v, total, err = relationSvc.Blacks(c, mid.(int64), version, pn, ps); err != nil {
|
||||
log.Error("relationSvc.Blacks(%d) error(%v)", mid, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(map[string]interface{}{
|
||||
"re_version": uint64(crc32v),
|
||||
"list": blacks,
|
||||
"total": total,
|
||||
}, nil)
|
||||
}
|
||||
|
||||
// whispers get user's whisper list.
|
||||
func whispers(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
pn, ps int64
|
||||
version uint64
|
||||
crc32v uint32
|
||||
whispers []*model.Following
|
||||
mid, _ = c.Get("mid")
|
||||
params = c.Request.Form
|
||||
psStr = params.Get("ps")
|
||||
pnStr = params.Get("pn")
|
||||
versionStr = params.Get("re_version")
|
||||
)
|
||||
if versionStr != "" {
|
||||
if version, err = strconv.ParseUint(versionStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
if pnStr != "" {
|
||||
if pn, err = strconv.ParseInt(pnStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
if pn <= 0 {
|
||||
pn = 1
|
||||
}
|
||||
if psStr != "" {
|
||||
if ps, err = strconv.ParseInt(psStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
if ps <= 0 || ps > _defaultPS {
|
||||
ps = _defaultPS
|
||||
}
|
||||
if whispers, crc32v, err = relationSvc.Whispers(c, mid.(int64), pn, ps, version); err != nil {
|
||||
log.Error("relationSvc.Whispers(%d) error(%v)", mid, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(map[string]interface{}{
|
||||
"re_version": uint64(crc32v),
|
||||
"list": whispers,
|
||||
}, nil)
|
||||
}
|
||||
|
||||
// stat get user's follower list.
|
||||
func stat(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, vmid int64
|
||||
self bool
|
||||
st *mrl.Stat
|
||||
params = c.Request.Form
|
||||
vmidStr = params.Get("vmid")
|
||||
)
|
||||
midS, ok := c.Get("mid")
|
||||
if ok {
|
||||
mid = midS.(int64)
|
||||
} else {
|
||||
mid = 0
|
||||
}
|
||||
if vmid, err = strconv.ParseInt(vmidStr, 10, 64); err != nil || vmid <= 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
self = mid == vmid
|
||||
if st, err = relationSvc.Stat(c, vmid, self); err != nil {
|
||||
log.Error("relationSvc.Followers(%d) error(%v)", mid, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(st, nil)
|
||||
}
|
||||
|
||||
// stat get user's follower list.
|
||||
func stats(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
params = c.Request.Form
|
||||
midsStr = params.Get("mids")
|
||||
)
|
||||
mids, err := xstr.SplitInts(midsStr)
|
||||
if err != nil || len(mids) > 20 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
sts, err := relationSvc.Stats(c, mids)
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(sts, nil)
|
||||
}
|
||||
|
||||
// tag 单个标签
|
||||
func tag(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
pn, ps int64
|
||||
mid, _ = c.Get("mid")
|
||||
params = c.Request.Form
|
||||
tagIDStr = params.Get("tagid")
|
||||
tagid int64
|
||||
psStr = params.Get("ps")
|
||||
pnStr = params.Get("pn")
|
||||
ti []*model.Tag
|
||||
)
|
||||
if tagIDStr == "" {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if tagid, err = strconv.ParseInt(tagIDStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if pnStr != "" {
|
||||
if pn, err = strconv.ParseInt(pnStr, 10, 64); err != nil {
|
||||
log.Error("pn parse")
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
if pn <= 0 {
|
||||
pn = 1
|
||||
}
|
||||
if psStr != "" {
|
||||
if ps, err = strconv.ParseInt(psStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
if ps <= 0 || ps > _defaultPS {
|
||||
ps = _defaultPS
|
||||
}
|
||||
if ti, err = relationSvc.Tag(c, mid.(int64), tagid, pn, ps); err != nil {
|
||||
log.Error("relationSvc.Tag(%d).tag(%d) error(%v)", mid, tagid, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(ti, nil)
|
||||
}
|
||||
|
||||
// tags 列表:标签-计数
|
||||
func tags(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, _ = c.Get("mid")
|
||||
tc []*mrl.TagCount
|
||||
)
|
||||
if tc, err = relationSvc.Tags(c, mid.(int64)); err != nil {
|
||||
log.Error("relationSvc.Tags(%d). error(%v)", mid, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(tc, nil)
|
||||
}
|
||||
|
||||
// mobileTags 移动端 列表:标签-计数
|
||||
func mobileTags(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, _ = c.Get("mid")
|
||||
tc map[string][]*mrl.TagCount
|
||||
)
|
||||
if tc, err = relationSvc.MobileTags(c, mid.(int64)); err != nil {
|
||||
log.Error("relationSvc.Tags(%d). error(%v)", mid, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(tc, nil)
|
||||
}
|
||||
|
||||
// tagUser 用户-fid 标签列表
|
||||
func tagUser(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
fid int64
|
||||
mid, _ = c.Get("mid")
|
||||
params = c.Request.Form
|
||||
fidStr = params.Get("fid")
|
||||
tc map[int64]string
|
||||
)
|
||||
if fid, err = strconv.ParseInt(fidStr, 10, 64); err != nil || fid <= 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if tc, err = relationSvc.UserTag(c, mid.(int64), fid); err != nil {
|
||||
log.Error("relationSvc.UserTag(%d).fid(%d) error(%v)", mid, fid, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(tc, nil)
|
||||
}
|
||||
|
||||
// tagCreate create tag.
|
||||
func tagCreate(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, _ = c.Get("mid")
|
||||
params = c.Request.Form
|
||||
tagStr = params.Get("tag")
|
||||
cres int64
|
||||
)
|
||||
if tagStr == "" {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if cres, err = relationSvc.CreateTag(c, mid.(int64), tagStr); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(map[string]int64{
|
||||
"tagid": cres,
|
||||
}, nil)
|
||||
}
|
||||
|
||||
// tagUpdate update tag.
|
||||
func tagUpdate(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, _ = c.Get("mid")
|
||||
params = c.Request.Form
|
||||
tagIDStr = params.Get("tagid")
|
||||
tagID int64
|
||||
newStr = params.Get("name")
|
||||
)
|
||||
if tagIDStr == "" || newStr == "" {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if tagID, err = strconv.ParseInt(tagIDStr, 10, 64); err != nil || tagID <= 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, relationSvc.UpdateTag(c, mid.(int64), tagID, newStr))
|
||||
}
|
||||
|
||||
// tagDel del tag.
|
||||
func tagDel(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, _ = c.Get("mid")
|
||||
params = c.Request.Form
|
||||
tagIDStr = params.Get("tagid")
|
||||
tagID int64
|
||||
)
|
||||
if tagIDStr == "" {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if tagID, err = strconv.ParseInt(tagIDStr, 10, 64); err != nil || tagID <= 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, relationSvc.DelTag(c, mid.(int64), tagID))
|
||||
}
|
||||
|
||||
// tagsAddUsers tags add users.
|
||||
func tagsAddUsers(c *bm.Context) {
|
||||
var (
|
||||
mid, _ = c.Get("mid")
|
||||
params = c.Request.Form
|
||||
tagidsStr = params.Get("tagids")
|
||||
fidsStr = params.Get("fids")
|
||||
)
|
||||
if tagidsStr == "" || fidsStr == "" {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, relationSvc.TagsAddUsers(c, mid.(int64), tagidsStr, fidsStr))
|
||||
}
|
||||
|
||||
// tagsCopyUsers tags copy users.
|
||||
func tagsCopyUsers(c *bm.Context) {
|
||||
var (
|
||||
mid, _ = c.Get("mid")
|
||||
params = c.Request.Form
|
||||
tagidsStr = params.Get("tagids")
|
||||
fidsStr = params.Get("fids")
|
||||
)
|
||||
if tagidsStr == "" || fidsStr == "" {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, relationSvc.TagsCopyUsers(c, mid.(int64), tagidsStr, fidsStr))
|
||||
}
|
||||
|
||||
// tagsMoveUsers tags move users.
|
||||
func tagsMoveUsers(c *bm.Context) {
|
||||
var (
|
||||
mid, _ = c.Get("mid")
|
||||
params = c.Request.Form
|
||||
beforeTagIdsStr = params.Get("beforeTagids")
|
||||
afterTagIdsStr = params.Get("afterTagids")
|
||||
fidsStr = params.Get("fids")
|
||||
)
|
||||
if beforeTagIdsStr == "" || afterTagIdsStr == "" || fidsStr == "" {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
bid, err := strconv.ParseInt(beforeTagIdsStr, 10, 64)
|
||||
if err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, relationSvc.TagsMoveUsers(c, mid.(int64), bid, afterTagIdsStr, fidsStr))
|
||||
}
|
||||
|
||||
func prompt(c *bm.Context) {
|
||||
mid, _ := c.Get("mid")
|
||||
arg := new(mrl.ArgPrompt)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
arg.Mid = mid.(int64)
|
||||
b, err := relationSvc.Prompt(c, arg)
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(map[string]interface{}{
|
||||
"prompt": b,
|
||||
}, nil)
|
||||
}
|
||||
|
||||
func closePrompt(c *bm.Context) {
|
||||
mid, _ := c.Get("mid")
|
||||
arg := new(mrl.ArgPrompt)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
arg.Mid = mid.(int64)
|
||||
c.JSON(nil, relationSvc.ClosePrompt(c, arg))
|
||||
}
|
||||
|
||||
func addSpecial(c *bm.Context) {
|
||||
mid, _ := c.Get("mid")
|
||||
arg := new(mrl.ArgFollowing)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
arg.Mid = mid.(int64)
|
||||
c.JSON(nil, relationSvc.AddSpecial(c, arg))
|
||||
}
|
||||
func delSpecial(c *bm.Context) {
|
||||
mid, _ := c.Get("mid")
|
||||
arg := new(mrl.ArgFollowing)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
arg.Mid = mid.(int64)
|
||||
c.JSON(nil, relationSvc.DelSpecial(c, arg))
|
||||
}
|
||||
func special(c *bm.Context) {
|
||||
mid, _ := c.Get("mid")
|
||||
c.JSON(relationSvc.Special(c, mid.(int64)))
|
||||
}
|
||||
|
||||
// recommend get global recommend upper.
|
||||
// deprecated
|
||||
func recommend(c *bm.Context) {
|
||||
c.JSON([]interface{}{}, nil)
|
||||
}
|
||||
|
||||
func recommendFollowlistEmpty(c *bm.Context) {
|
||||
dev, _ := c.Get("device")
|
||||
mid, _ := c.Get("mid")
|
||||
arg := &model.ArgRecommend{}
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
arg.Device = dev.(*bm.Device)
|
||||
arg.Mid = mid.(int64)
|
||||
arg.RemoteIP = metadata.String(c, metadata.RemoteIP)
|
||||
c.JSON(relationSvc.RecommendFollowlistEmpty(c, arg))
|
||||
}
|
||||
|
||||
func recommendAnswerOK(c *bm.Context) {
|
||||
dev, _ := c.Get("device")
|
||||
mid, _ := c.Get("mid")
|
||||
arg := &model.ArgRecommend{}
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
arg.Device = dev.(*bm.Device)
|
||||
arg.Mid = mid.(int64)
|
||||
arg.RemoteIP = metadata.String(c, metadata.RemoteIP)
|
||||
c.JSON(relationSvc.RecommendAnswerOK(c, arg))
|
||||
}
|
||||
|
||||
func recommendTagSuggest(c *bm.Context) {
|
||||
dev, _ := c.Get("device")
|
||||
mid, _ := c.Get("mid")
|
||||
arg := &model.ArgTagSuggestRecommend{}
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
arg.Device = dev.(*bm.Device)
|
||||
arg.Mid = mid.(int64)
|
||||
arg.RemoteIP = metadata.String(c, metadata.RemoteIP)
|
||||
c.JSON(relationSvc.RecommendTagSuggest(c, arg))
|
||||
}
|
||||
|
||||
func recommendTagSuggestDetail(c *bm.Context) {
|
||||
dev, _ := c.Get("device")
|
||||
mid, _ := c.Get("mid")
|
||||
arg := &model.ArgTagSuggestRecommend{}
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
if arg.TagName == "" {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
arg.Device = dev.(*bm.Device)
|
||||
arg.Mid = mid.(int64)
|
||||
arg.RemoteIP = metadata.String(c, metadata.RemoteIP)
|
||||
c.JSON(relationSvc.RecommendTagSuggestDetail(c, arg))
|
||||
}
|
||||
|
||||
// unread check unread status, for the 'show red point' function.
|
||||
func unread(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, _ = c.Get("mid")
|
||||
show bool
|
||||
)
|
||||
disbaleAutoReset := c.Request.Form.Get("disableautoreset") == "1"
|
||||
if show, err = relationSvc.Unread(c, mid.(int64), disbaleAutoReset); err != nil {
|
||||
log.Error("relationSvc.Unread(%d) err(%v)", mid, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(map[string]interface{}{
|
||||
"show": show,
|
||||
}, nil)
|
||||
}
|
||||
|
||||
func unreadReset(c *bm.Context) {
|
||||
var (
|
||||
mid, _ = c.Get("mid")
|
||||
)
|
||||
c.JSON(nil, relationSvc.ResetUnread(c, mid.(int64)))
|
||||
}
|
||||
|
||||
func unreadCount(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, _ = c.Get("mid")
|
||||
count int64
|
||||
)
|
||||
disbaleAutoReset := c.Request.Form.Get("disableautoreset") == "1"
|
||||
if count, err = relationSvc.UnreadCount(c, mid.(int64), disbaleAutoReset); err != nil {
|
||||
log.Error("relationSvc.UnreadCount(%d) err(%v)", mid, err)
|
||||
return
|
||||
}
|
||||
c.JSON(map[string]interface{}{
|
||||
"count": count,
|
||||
}, nil)
|
||||
}
|
||||
|
||||
func unreadCountReset(c *bm.Context) {
|
||||
var (
|
||||
mid, _ = c.Get("mid")
|
||||
)
|
||||
c.JSON(nil, relationSvc.ResetUnreadCount(c, mid.(int64)))
|
||||
}
|
||||
|
||||
func achieveGet(ctx *bm.Context) {
|
||||
arg := new(model.ArgAchieveGet)
|
||||
if err := ctx.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
mid, _ := ctx.Get("mid")
|
||||
arg.Mid = mid.(int64)
|
||||
if arg.Award != "10k" {
|
||||
ctx.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
ctx.JSON(relationSvc.AchieveGet(ctx, arg))
|
||||
}
|
||||
|
||||
func achieve(ctx *bm.Context) {
|
||||
arg := new(model.ArgAchieve)
|
||||
if err := ctx.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
ctx.JSON(relationSvc.Achieve(ctx, arg))
|
||||
}
|
||||
|
||||
func followerNotifySetting(c *bm.Context) {
|
||||
var mid, _ = c.Get("mid")
|
||||
c.JSON(relationSvc.FollowerNotifySetting(c, mid.(int64)))
|
||||
}
|
||||
|
||||
func enableFollowerNotify(c *bm.Context) {
|
||||
var mid, _ = c.Get("mid")
|
||||
c.JSON(nil, relationSvc.EnableFollowerNotify(c, mid.(int64)))
|
||||
}
|
||||
|
||||
func disableFollowerNotify(c *bm.Context) {
|
||||
var mid, _ = c.Get("mid")
|
||||
c.JSON(nil, relationSvc.DisableFollowerNotify(c, mid.(int64)))
|
||||
}
|
||||
|
||||
func sameFollowings(c *bm.Context) {
|
||||
arg := new(model.ArgSameFollowing)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
mid, _ := c.Get("mid")
|
||||
arg.Mid = mid.(int64)
|
||||
if arg.Order != "asc" {
|
||||
arg.Order = "desc"
|
||||
}
|
||||
if arg.PN <= 0 {
|
||||
arg.PN = 1
|
||||
}
|
||||
if arg.PS <= 0 || arg.PS > _defaultPS {
|
||||
arg.PS = _defaultPS
|
||||
}
|
||||
|
||||
followings, crc32v, total, err := relationSvc.SameFollowings(c, arg)
|
||||
if err != nil {
|
||||
log.Error("relationSvc.SameFollowings(%+v) error(%v)", arg, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(map[string]interface{}{
|
||||
"re_version": uint64(crc32v),
|
||||
"list": followings,
|
||||
"total": total,
|
||||
}, nil)
|
||||
}
|
32
app/interface/main/account/http/remotelogin.go
Normal file
32
app/interface/main/account/http/remotelogin.go
Normal file
@ -0,0 +1,32 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func status(c *bm.Context) {
|
||||
var (
|
||||
params = c.Request.Form
|
||||
mid, ok = c.Get("mid")
|
||||
uuid = params.Get("uuid")
|
||||
)
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
msg, err := memberSvc.Status(c, mid.(int64), uuid)
|
||||
if err != nil {
|
||||
c.JSON(nil, ecode.RemoteLoginStatusQueryError)
|
||||
return
|
||||
}
|
||||
c.JSON(msg, nil)
|
||||
}
|
||||
|
||||
func closeNotify(c *bm.Context) {
|
||||
c.JSON(struct{}{}, nil)
|
||||
}
|
||||
|
||||
func feedback(c *bm.Context) {
|
||||
c.JSON(struct{}{}, nil)
|
||||
}
|
46
app/interface/main/account/http/sudo.go
Normal file
46
app/interface/main/account/http/sudo.go
Normal file
@ -0,0 +1,46 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func sudo(ctx *bm.Context) {
|
||||
cmd := ctx.Request.Form.Get("cmd")
|
||||
if cmd == "" {
|
||||
ctx.AbortWithStatus(400)
|
||||
return
|
||||
}
|
||||
ctx.Set("command", cmd)
|
||||
}
|
||||
|
||||
func notityPurgeCache(ctx *bm.Context) {
|
||||
cmd, ok := ctx.Get("command")
|
||||
if !ok {
|
||||
ctx.AbortWithStatus(400)
|
||||
return
|
||||
}
|
||||
plain, ok := cmd.(string)
|
||||
if !ok {
|
||||
ctx.AbortWithStatus(400)
|
||||
return
|
||||
}
|
||||
|
||||
var param struct {
|
||||
Mid int64 `json:"mid"`
|
||||
Action string `json:"action"`
|
||||
}
|
||||
if err := json.Unmarshal([]byte(plain), ¶m); err != nil {
|
||||
ctx.AbortWithStatus(400)
|
||||
return
|
||||
}
|
||||
if param.Mid <= 0 {
|
||||
ctx.AbortWithStatus(400)
|
||||
return
|
||||
}
|
||||
if param.Action == "" {
|
||||
param.Action = "updateByAdmin"
|
||||
}
|
||||
ctx.JSON(nil, memberSvc.NotityPurgeCache(ctx, param.Mid, param.Action))
|
||||
}
|
358
app/interface/main/account/http/vip.go
Normal file
358
app/interface/main/account/http/vip.go
Normal file
@ -0,0 +1,358 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"go-common/app/interface/main/account/model"
|
||||
col "go-common/app/service/main/coupon/model"
|
||||
vipmol "go-common/app/service/main/vip/model"
|
||||
"go-common/library/ecode"
|
||||
"go-common/library/log"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
"go-common/library/net/metadata"
|
||||
)
|
||||
|
||||
const (
|
||||
_headerBuvid = "Buvid"
|
||||
)
|
||||
|
||||
func codeVerify(c *bm.Context) {
|
||||
c.JSON(vipSvc.CodeVerify(c))
|
||||
}
|
||||
|
||||
func codeOpen(c *bm.Context) {
|
||||
mid, exists := c.Get("mid")
|
||||
if !exists {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
arg := new(struct {
|
||||
Token string `form:"token" validate:"required"`
|
||||
Code string `form:"code" validate:"required"`
|
||||
Verify string `form:"verify" validate:"required"`
|
||||
})
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
arg.Code = strings.Trim(arg.Code, " ")
|
||||
c.JSON(vipSvc.CodeOpen(c, mid.(int64), arg.Code, arg.Token, arg.Verify))
|
||||
}
|
||||
|
||||
// tips info.
|
||||
func tips(c *bm.Context) {
|
||||
var (
|
||||
res *vipmol.TipsResp
|
||||
arg = new(model.TipsReq)
|
||||
err error
|
||||
)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
log.Error("c.Bind err(%+v)", err)
|
||||
return
|
||||
}
|
||||
if res, err = vipSvc.Tips(c, arg); err != nil {
|
||||
log.Error("vipSvc.Tips(%+v) err(%v)", arg, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(res, nil)
|
||||
}
|
||||
|
||||
// tips info.
|
||||
func tipsv2(c *bm.Context) {
|
||||
var (
|
||||
res []*vipmol.TipsResp
|
||||
arg = new(model.TipsReq)
|
||||
err error
|
||||
)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
log.Error("c.Bind err(%+v)", err)
|
||||
return
|
||||
}
|
||||
if res, err = vipSvc.TipsV2(c, arg); err != nil {
|
||||
log.Error("vipSvc.Tips(%+v) err(%v)", arg, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(res, nil)
|
||||
}
|
||||
|
||||
func vipPanel(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
res *vipmol.VipPirceResp5
|
||||
)
|
||||
mid, exists := c.Get("mid")
|
||||
if !exists {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
arg := new(model.VipPanelRes)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
if res, err = vipSvc.VipPanel5(c, mid.(int64), arg); err != nil {
|
||||
log.Error("vipSvc.VipPanel(%+v) err(%v)", arg, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(res, nil)
|
||||
}
|
||||
|
||||
func couponUsable(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
res *col.CouponAllowancePanelInfo
|
||||
)
|
||||
mid, exists := c.Get("mid")
|
||||
if !exists {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
arg := new(model.ArgVipCoupon)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
if res, err = vipSvc.CouponBySuitID(c, mid.(int64), arg.ID); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(res, nil)
|
||||
}
|
||||
|
||||
func couponList(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
res *col.CouponAllowancePanelResp
|
||||
)
|
||||
mid, exists := c.Get("mid")
|
||||
if !exists {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
arg := new(model.ArgVipCoupon)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
if res, err = vipSvc.CouponsForPanelV2(c, mid.(int64), arg.ID); err != nil {
|
||||
log.Error("vipSvc.CouponsForPanelV2(%+v) err(%v)", arg, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(res, nil)
|
||||
}
|
||||
|
||||
func couponUnlock(c *bm.Context) {
|
||||
var err error
|
||||
mid, exists := c.Get("mid")
|
||||
if !exists {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
arg := new(model.ArgVipCancelPay)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
if err = vipSvc.CancelUseCoupon(c, &vipmol.ArgCancelUseCoupon{
|
||||
Mid: mid.(int64),
|
||||
CouponToken: arg.CouponToken,
|
||||
}); err != nil {
|
||||
log.Error("vipSvc.CancelUseCoupon(%+v) err(%v)", arg, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(model.CouponCancelExplain, nil)
|
||||
}
|
||||
|
||||
func vipPanelV2(c *bm.Context) {
|
||||
var err error
|
||||
arg := new(model.ArgVipPanel)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
mid, exists := c.Get("mid")
|
||||
if exists {
|
||||
arg.Mid = mid.(int64)
|
||||
}
|
||||
arg.IP = metadata.String(c, metadata.RemoteIP)
|
||||
c.JSON(vipSvc.VipPanelV2(c, arg))
|
||||
}
|
||||
|
||||
func vipPanelV8(c *bm.Context) {
|
||||
var err error
|
||||
arg := new(model.ArgVipPanel)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
mid, exists := c.Get("mid")
|
||||
if exists {
|
||||
arg.Mid = mid.(int64)
|
||||
}
|
||||
arg.IP = metadata.String(c, metadata.RemoteIP)
|
||||
c.JSON(vipSvc.VipPanelV8(c, arg))
|
||||
}
|
||||
|
||||
func privilegeBySid(c *bm.Context) {
|
||||
var err error
|
||||
arg := new(vipmol.ArgPrivilegeBySid)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.PrivilegebySid(c, arg))
|
||||
}
|
||||
|
||||
func privilegeByType(c *bm.Context) {
|
||||
var err error
|
||||
arg := new(vipmol.ArgPrivilegeDetail)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.PrivilegebyType(c, arg))
|
||||
}
|
||||
|
||||
func vipManagerInfo(c *bm.Context) {
|
||||
c.JSON(vipSvc.ManagerInfo(c))
|
||||
}
|
||||
|
||||
func codeOpeneds(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
)
|
||||
arg := new(model.CodeInfoReq)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.CodeOpeneds(c, arg, metadata.String(c, metadata.RemoteIP)))
|
||||
}
|
||||
|
||||
func unfrozen(c *bm.Context) {
|
||||
|
||||
mid, exists := c.Get("mid")
|
||||
if !exists {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(nil, vipSvc.Unfrozen(c, mid.(int64)))
|
||||
}
|
||||
|
||||
func frozenTime(c *bm.Context) {
|
||||
mid, exists := c.Get("mid")
|
||||
if !exists {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.FrozenTime(c, mid.(int64)))
|
||||
}
|
||||
|
||||
func publicPriceList(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
res *vipmol.VipPirceResp
|
||||
mid int64
|
||||
)
|
||||
midStr, exists := c.Get("mid")
|
||||
if exists {
|
||||
mid = midStr.(int64)
|
||||
}
|
||||
arg := new(model.VipPanelRes)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
if res, err = vipSvc.VipPanel(c, mid, arg); err != nil {
|
||||
log.Error("vipSvc.VipPanel(%+v) err(%v)", arg, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(res, nil)
|
||||
}
|
||||
|
||||
func useBatch(c *bm.Context) {
|
||||
var err error
|
||||
arg := new(vipmol.ArgUseBatch)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
log.Error("use batch bind err(%+v) arg(%+v)", err, arg)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, vipSvc.UseBatch(c, arg))
|
||||
}
|
||||
|
||||
func orderStatus(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
)
|
||||
midI, ok := c.Get("mid")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
arg := new(vipmol.ArgDialog)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
arg.Mid = midI.(int64)
|
||||
c.JSON(vipSvc.OrderStatus(c, arg))
|
||||
}
|
||||
|
||||
func resourceBanner(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
)
|
||||
midI, ok := c.Get("mid")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
arg := new(model.ArgResource)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
arg.MID = midI.(int64)
|
||||
arg.Buvid = c.Request.Header.Get(_headerBuvid)
|
||||
arg.Plat = model.Plat(arg.MobiApp, arg.Device)
|
||||
c.JSON(vipSvc.ResourceBanner(c, arg))
|
||||
}
|
||||
|
||||
func resourceBuy(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
)
|
||||
midI, ok := c.Get("mid")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
arg := new(model.ArgResource)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
arg.MID = midI.(int64)
|
||||
arg.Buvid = c.Request.Header.Get(_headerBuvid)
|
||||
arg.Plat = model.Plat(arg.MobiApp, arg.Device)
|
||||
c.JSON(vipSvc.ResourceBuy(c, arg))
|
||||
}
|
||||
func couponBySuitIDV2(c *bm.Context) {
|
||||
var err error
|
||||
arg := new(model.ArgCouponBySuitID)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
mid, exists := c.Get("mid")
|
||||
if exists {
|
||||
arg.Mid = mid.(int64)
|
||||
}
|
||||
c.JSON(vipSvc.CouponBySuitIDV2(c, arg))
|
||||
}
|
||||
|
||||
func vipPanelV9(c *bm.Context) {
|
||||
var err error
|
||||
arg := new(model.ArgVipPanel)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
mid, exists := c.Get("mid")
|
||||
if exists {
|
||||
arg.Mid = mid.(int64)
|
||||
}
|
||||
arg.IP = metadata.String(c, metadata.RemoteIP)
|
||||
c.JSON(vipSvc.VipPanelV9(c, arg))
|
||||
}
|
109
app/interface/main/account/http/vip_associate.go
Normal file
109
app/interface/main/account/http/vip_associate.go
Normal file
@ -0,0 +1,109 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/app/interface/main/account/model"
|
||||
v1 "go-common/app/service/main/vip/api"
|
||||
vipmol "go-common/app/service/main/vip/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
"go-common/library/net/metadata"
|
||||
)
|
||||
|
||||
func bindInfoByMid(c *bm.Context) {
|
||||
var err error
|
||||
mid, exists := c.Get("mid")
|
||||
if !exists {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
a := new(model.ArgBindInfo)
|
||||
if err = c.Bind(a); err != nil {
|
||||
return
|
||||
}
|
||||
a.Mid = mid.(int64)
|
||||
a.AppID = vipmol.EleAppID
|
||||
c.JSON(vipSvc.BindInfoByMid(c, a))
|
||||
}
|
||||
|
||||
func createAssociateOrder(c *bm.Context) {
|
||||
var err error
|
||||
mid, exists := c.Get("mid")
|
||||
if !exists {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
a := new(model.ArgCreateAssociateOrder)
|
||||
if err = c.Bind(a); err != nil {
|
||||
return
|
||||
}
|
||||
a.Mid = mid.(int64)
|
||||
a.IP = metadata.String(c, metadata.RemoteIP)
|
||||
c.JSON(vipSvc.CreateAssociateOrder(c, a))
|
||||
}
|
||||
|
||||
func associatePanel(c *bm.Context) {
|
||||
var err error
|
||||
mid, exists := c.Get("mid")
|
||||
if !exists {
|
||||
c.JSON(nil, ecode.AccountNotLogin)
|
||||
return
|
||||
}
|
||||
a := new(vipmol.ArgAssociatePanel)
|
||||
if err = c.Bind(a); err != nil {
|
||||
return
|
||||
}
|
||||
a.Mid = mid.(int64)
|
||||
a.IP = metadata.String(c, metadata.RemoteIP)
|
||||
res := new(struct {
|
||||
PriceList []*v1.AssociatePanelInfo `json:"price_list"`
|
||||
})
|
||||
res.PriceList, err = vipSvc.AssociatePanel(c, a)
|
||||
if res.PriceList == nil {
|
||||
res.PriceList = []*v1.AssociatePanelInfo{}
|
||||
}
|
||||
c.JSON(res, err)
|
||||
}
|
||||
|
||||
func redpackets(c *bm.Context) {
|
||||
c.JSON(vipSvc.EleRedPackages(c))
|
||||
}
|
||||
|
||||
func specailfoods(c *bm.Context) {
|
||||
c.JSON(vipSvc.EleSpecailFoods(c))
|
||||
}
|
||||
|
||||
func actlimit(ctx *bm.Context) {
|
||||
var mid int64
|
||||
midi, exists := ctx.Get("mid")
|
||||
if exists {
|
||||
mid = midi.(int64)
|
||||
}
|
||||
if err := vipSvc.ActivityTimeLimit(mid); err != nil {
|
||||
ctx.JSON(nil, err)
|
||||
ctx.Abort()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func iplimit(ctx *bm.Context) {
|
||||
req := ctx.Request
|
||||
params := req.Form
|
||||
sappkey := params.Get("appkey")
|
||||
ip := metadata.String(ctx, metadata.RemoteIP)
|
||||
if err := vipSvc.ActivityWhiteIPLimit(sappkey, ip); err != nil {
|
||||
ctx.JSON(nil, err)
|
||||
ctx.Abort()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func openlimit(ctx *bm.Context) {
|
||||
req := ctx.Request
|
||||
params := req.Form
|
||||
outOpenID := params.Get("out_open_id")
|
||||
if err := vipSvc.ActivityWhiteOutOpenIDLimit(outOpenID); err != nil {
|
||||
ctx.JSON(nil, err)
|
||||
ctx.Abort()
|
||||
return
|
||||
}
|
||||
}
|
122
app/interface/main/account/http/vip_third.go
Normal file
122
app/interface/main/account/http/vip_third.go
Normal file
@ -0,0 +1,122 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"go-common/app/interface/main/account/model"
|
||||
idtv1 "go-common/app/service/main/identify/api/grpc"
|
||||
vipmol "go-common/app/service/main/vip/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
"go-common/library/net/http/blademaster/middleware/auth"
|
||||
"go-common/library/net/metadata"
|
||||
)
|
||||
|
||||
//
|
||||
// vip 第三方[ele]接入gateway
|
||||
//
|
||||
|
||||
// openID
|
||||
func openIDByOAuth2Code(c *bm.Context) {
|
||||
var err error
|
||||
a := new(model.ArgAuthCode)
|
||||
if err = c.Bind(a); err != nil {
|
||||
return
|
||||
}
|
||||
a.IP = metadata.String(c, metadata.RemoteIP)
|
||||
a.APPID = vipmol.EleAppID
|
||||
c.JSON(vipSvc.OpenIDByAuthCode(c, a))
|
||||
}
|
||||
|
||||
func openBindByOutOpenID(c *bm.Context) {
|
||||
var err error
|
||||
a := new(model.ArgBind)
|
||||
if err = c.Bind(a); err != nil {
|
||||
return
|
||||
}
|
||||
a.AppID = vipmol.EleAppID
|
||||
c.JSON(nil, vipSvc.OpenBindByOutOpenID(c, a))
|
||||
}
|
||||
|
||||
func userInfoByOpenID(c *bm.Context) {
|
||||
var err error
|
||||
a := new(model.ArgUserInfoByOpenID)
|
||||
if err = c.Bind(a); err != nil {
|
||||
return
|
||||
}
|
||||
a.AppID = vipmol.EleAppID
|
||||
c.JSON(vipSvc.UserInfoByOpenID(c, a))
|
||||
}
|
||||
|
||||
func bilibiliVipGrant(c *bm.Context) {
|
||||
var err error
|
||||
a := new(model.ArgBilibiliVipGrant)
|
||||
if err = c.Bind(a); err != nil {
|
||||
return
|
||||
}
|
||||
a.AppID = vipmol.EleAppID
|
||||
c.JSON(nil, vipSvc.BilibiliVipGrant(c, a))
|
||||
}
|
||||
|
||||
func bilibiliPrizeGrant(c *bm.Context) {
|
||||
var err error
|
||||
a := new(model.ArgBilibiliPrizeGrant)
|
||||
if err = c.Bind(a); err != nil {
|
||||
return
|
||||
}
|
||||
a.AppID = vipmol.EleAppID
|
||||
c.JSON(vipSvc.BilibiliPrizeGrant(c, a))
|
||||
}
|
||||
|
||||
func openAuthCallBack(c *bm.Context) {
|
||||
var err error
|
||||
midI, ok := c.Get("mid")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
a := new(model.ArgOpenAuthCallBack)
|
||||
if err = c.Bind(a); err != nil {
|
||||
return
|
||||
}
|
||||
// verify csrf.
|
||||
verifyState(c, authn, a.State)
|
||||
a.AppID = vipmol.EleAppID
|
||||
a.Mid = midI.(int64)
|
||||
c.Redirect(http.StatusFound, vipSvc.OpenAuthCallBack(c, a))
|
||||
}
|
||||
|
||||
func eleOAuthURL(c *bm.Context) {
|
||||
var (
|
||||
state string
|
||||
err error
|
||||
)
|
||||
if state, err = csrf(c, authn); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.ElemeOAuthURI(c, state), nil)
|
||||
}
|
||||
|
||||
func verifyState(ctx *bm.Context, a *auth.Auth, state string) (err error) {
|
||||
var csrfStr string
|
||||
if csrfStr, err = csrf(ctx, a); err != nil {
|
||||
return
|
||||
}
|
||||
if csrfStr != state {
|
||||
return ecode.CsrfNotMatchErr
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func csrf(ctx *bm.Context, a *auth.Auth) (string, error) {
|
||||
req := ctx.Request
|
||||
cookie := req.Header.Get("Cookie")
|
||||
reply, err := a.GetCookieInfo(ctx, &idtv1.GetCookieInfoReq{Cookie: cookie})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if !reply.IsLogin {
|
||||
return "", ecode.NoLogin
|
||||
}
|
||||
return reply.Csrf, nil
|
||||
}
|
66
app/interface/main/account/http/vip_welfare.go
Normal file
66
app/interface/main/account/http/vip_welfare.go
Normal file
@ -0,0 +1,66 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/library/ecode"
|
||||
"go-common/library/log"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func welfareList(c *bm.Context) {
|
||||
arg := new(struct {
|
||||
Tid int64 `form:"tid"`
|
||||
Recommend int64 `form:"recommend"`
|
||||
Pn int64 `form:"pn"`
|
||||
Ps int64 `form:"ps"`
|
||||
})
|
||||
if err := c.Bind(arg); err != nil {
|
||||
log.Error("c.Bind err(%+v)", err)
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.WelfareList(c, arg.Tid, arg.Recommend, arg.Pn, arg.Ps))
|
||||
}
|
||||
|
||||
func welfareTypeList(c *bm.Context) {
|
||||
c.JSON(vipSvc.WelfareTypeList(c))
|
||||
}
|
||||
|
||||
func welfareInfo(c *bm.Context) {
|
||||
userId := int64(0)
|
||||
mid, exists := c.Get("mid")
|
||||
if exists {
|
||||
userId = mid.(int64)
|
||||
}
|
||||
arg := new(struct {
|
||||
Wid int64 `form:"id"`
|
||||
})
|
||||
if err := c.Bind(arg); err != nil {
|
||||
log.Error("c.Bind err(%+v)", err)
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.WelfareInfo(c, arg.Wid, userId))
|
||||
}
|
||||
|
||||
func receiveWelfare(c *bm.Context) {
|
||||
mid, exists := c.Get("mid")
|
||||
if !exists {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
arg := new(struct {
|
||||
Wid int64 `form:"id"`
|
||||
})
|
||||
if err := c.Bind(arg); err != nil {
|
||||
log.Error("c.Bind err(%+v)", err)
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.WelfareReceive(c, arg.Wid, mid.(int64)))
|
||||
}
|
||||
|
||||
func myWelfare(c *bm.Context) {
|
||||
mid, exists := c.Get("mid")
|
||||
if !exists {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.MyWelfare(c, mid.(int64)))
|
||||
}
|
155
app/interface/main/account/http/web_info.go
Normal file
155
app/interface/main/account/http/web_info.go
Normal file
@ -0,0 +1,155 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"go-common/app/interface/main/account/model"
|
||||
"go-common/library/ecode"
|
||||
"go-common/library/log"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
// replyHistoryList
|
||||
func replyHistoryList(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
//ip = c.RemoteIP()
|
||||
header = c.Request.Header
|
||||
params = c.Request.Form
|
||||
mid, _ = c.Get("mid")
|
||||
cookie = header.Get("Cookie")
|
||||
accessKey = params.Get("access_key")
|
||||
stime = params.Get("stime")
|
||||
etime = params.Get("etime")
|
||||
order = params.Get("order")
|
||||
sort = params.Get("sort")
|
||||
pnStr = params.Get("pn")
|
||||
psStr = params.Get("ps")
|
||||
pn, ps int64
|
||||
)
|
||||
if pnStr != "" {
|
||||
if pn, err = strconv.ParseInt(pnStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
if psStr != "" {
|
||||
if ps, err = strconv.ParseInt(psStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
c.JSON(memberSvc.ReplyHistoryList(c, mid.(int64), stime, etime, order, sort, pn, ps, accessKey, cookie))
|
||||
}
|
||||
|
||||
// updateSettings
|
||||
func update(c *bm.Context) {
|
||||
var (
|
||||
params = c.Request.Form
|
||||
mid, ok = c.Get("mid")
|
||||
//ip = c.RemoteIP()
|
||||
unameStr = params.Get("uname")
|
||||
signStr = params.Get("usersign")
|
||||
sexStr = params.Get("sex")
|
||||
birthdayStr = params.Get("birthday")
|
||||
)
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
settings := &model.Settings{
|
||||
Uname: unameStr,
|
||||
Sign: signStr,
|
||||
Sex: sexStr,
|
||||
Birthday: birthdayStr,
|
||||
}
|
||||
log.Error("request(%v)", settings)
|
||||
c.JSON(nil, memberSvc.UpdateSettings(c, mid.(int64), settings))
|
||||
}
|
||||
|
||||
func account(c *bm.Context) {
|
||||
var (
|
||||
//ip = c.RemoteIP()
|
||||
mid, ok = c.Get("mid")
|
||||
)
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
c.JSON(memberSvc.SettingsInfo(c, mid.(int64)))
|
||||
}
|
||||
|
||||
// logCoin
|
||||
func logCoin(c *bm.Context) {
|
||||
var (
|
||||
//ip = c.RemoteIP()
|
||||
mid, ok = c.Get("mid")
|
||||
)
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
c.JSON(memberSvc.LogCoin(c, mid.(int64)))
|
||||
}
|
||||
|
||||
// coin
|
||||
func coin(c *bm.Context) {
|
||||
var (
|
||||
//ip = c.RemoteIP()
|
||||
mid, ok = c.Get("mid")
|
||||
)
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
c.JSON(memberSvc.Coin(c, mid.(int64)))
|
||||
}
|
||||
|
||||
func logMoral(c *bm.Context) {
|
||||
var (
|
||||
//ip = c.RemoteIP()
|
||||
mid, ok = c.Get("mid")
|
||||
)
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
c.JSON(memberSvc.LogMoral(c, mid.(int64)))
|
||||
}
|
||||
|
||||
func logExp(c *bm.Context) {
|
||||
var (
|
||||
//ip = c.RemoteIP()
|
||||
mid, ok = c.Get("mid")
|
||||
)
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
c.JSON(memberSvc.LogExp(c, mid.(int64)))
|
||||
}
|
||||
|
||||
// logLogin
|
||||
func logLogin(c *bm.Context) {
|
||||
var (
|
||||
//ip = c.RemoteIP()
|
||||
mid, ok = c.Get("mid")
|
||||
)
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
c.JSON(memberSvc.LogLogin(c, mid.(int64)))
|
||||
}
|
||||
|
||||
func reward(c *bm.Context) {
|
||||
var (
|
||||
//ip = c.RemoteIP()
|
||||
mid, ok = c.Get("mid")
|
||||
)
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.NoLogin)
|
||||
return
|
||||
}
|
||||
c.JSON(memberSvc.Reward(c, mid.(int64)))
|
||||
}
|
Reference in New Issue
Block a user