You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
162 lines
3.2 KiB
162 lines
3.2 KiB
package v1 |
|
|
|
import ( |
|
"go-common/app/interface/live/lottery-interface/internal/service" |
|
xlottery "go-common/app/service/live/xlottery/api/grpc/v1" |
|
"go-common/library/log" |
|
"go-common/library/log/infoc" |
|
bm "go-common/library/net/http/blademaster" |
|
"go-common/library/net/metadata" |
|
"net/http" |
|
"time" |
|
|
|
"go-common/library/net/http/blademaster/render" |
|
) |
|
|
|
//StormJoin StormJoin |
|
func StormJoin(c *bm.Context) { |
|
p := new(xlottery.JoinStormReq) |
|
if err := c.Bind(p); err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
// if p.GetRoomid() == 0 { |
|
// c.Render(http.StatusOK, render.MapJSON{ |
|
// "code": 400, |
|
// "msg": "参数错误", |
|
// }) |
|
// return |
|
// } |
|
mid, _ := c.Get("mid") |
|
platform := c.Request.URL.Query().Get("platform") |
|
if platform == "" { |
|
platform = "web" |
|
} |
|
if p.Platform == "" { |
|
p.Platform = platform |
|
} |
|
log.Info("mid:%s platform:%s", mid, platform) |
|
p.Mid = mid.(int64) |
|
|
|
//反作弊打点 |
|
lancer(c, p) |
|
resp, err := service.ServiceInstance.StormClient.Join(c, p) |
|
if err != nil { |
|
c.Render(http.StatusOK, render.MapJSON{ |
|
"code": 400, |
|
"msg": "没抢到", |
|
"data": []int{}, |
|
}) |
|
return |
|
} |
|
|
|
switch resp.GetCode() { |
|
case 1005002: |
|
c.Render(http.StatusOK, render.MapJSON{ |
|
"code": 429, |
|
"msg": resp.GetMsg(), |
|
}) |
|
return |
|
case 1005001: |
|
c.Render(http.StatusOK, render.MapJSON{ |
|
"code": 401, |
|
"msg": resp.GetMsg(), |
|
}) |
|
return |
|
case 1005003, 1005004, 1005005, 1005016: |
|
c.Render(http.StatusOK, render.MapJSON{ |
|
"code": 400, |
|
"msg": resp.GetMsg(), |
|
}) |
|
return |
|
case 0: |
|
c.JSON(resp.GetJoin(), nil) |
|
return |
|
default: |
|
c.Render(http.StatusOK, render.MapJSON{ |
|
"code": int(resp.GetCode()), |
|
"msg": resp.GetMsg(), |
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
// StormCheck StormCheck 检查 |
|
func StormCheck(c *bm.Context) { |
|
p := new(xlottery.CheckStormReq) |
|
if err := c.Bind(p); err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
mid, isexit := c.Get("mid") |
|
if isexit { |
|
p.Uid = mid.(int64) |
|
log.Info("StormCheck uid = %s", mid) |
|
} |
|
resp, err := service.ServiceInstance.StormClient.Check(c, p) |
|
if err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
if resp.GetCheck() != nil { |
|
c.JSON(resp.GetCheck(), nil) |
|
return |
|
} |
|
c.Render(http.StatusOK, render.MapJSON{ |
|
"code": 0, |
|
"msg": "", |
|
"data": []int{}, |
|
}) |
|
|
|
} |
|
|
|
var lacnertype = "rhythmic" |
|
|
|
func lancer(c *bm.Context, req *xlottery.JoinStormReq) { |
|
uid := req.GetMid() |
|
roomid := req.GetRoomid() |
|
lotteryid := req.GetId() |
|
action := "join" |
|
ip := metadata.String(c, metadata.RemoteIP) |
|
ts := time.Now().Unix() |
|
platform := req.GetPlatform() |
|
clientver := c.Request.URL.Query().Get("version") |
|
buvid := c.Request.Header.Get("Buvid") |
|
ua := c.Request.Header.Get("User-Agent") |
|
referer := c.Request.Header.Get("Referer") |
|
cookie := getCookie(c.Request) |
|
abnoormal := 0 |
|
requesturi := c.Request.RequestURI |
|
|
|
err := service.ServiceInstance.Infoc.Info( |
|
uid, |
|
roomid, |
|
lacnertype, |
|
lotteryid, |
|
action, |
|
ip, |
|
ts, |
|
platform, |
|
clientver, |
|
buvid, |
|
ua, |
|
referer, |
|
cookie, |
|
abnoormal, |
|
requesturi) |
|
if err != nil { |
|
if err != infoc.ErrFull { |
|
log.Error("Infoc.Info err: %s", err.Error()) |
|
} |
|
} |
|
} |
|
func getCookie(req *http.Request) string { |
|
var cookie string |
|
for _, v := range req.Cookies() { |
|
if v.Name != "SESSDATA" { |
|
cookie = cookie + v.Name + "=" + v.Value + "; " |
|
} |
|
} |
|
return cookie |
|
}
|
|
|