@@ -0,0 +1,124 @@
|
||||
package newactivityctrl
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand"
|
||||
"net/http"
|
||||
|
||||
"91porn-server/app/middleware/authuser"
|
||||
"91porn-server/app/service/productser"
|
||||
"91porn-server/common"
|
||||
"91porn-server/common/log"
|
||||
"91porn-server/common/stderr"
|
||||
"91porn-server/models/l/lotterylgmod"
|
||||
"91porn-server/models/v/walletmod"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// 常量配置
|
||||
const (
|
||||
MaxTimesOneDay = 3
|
||||
Zero = 0
|
||||
|
||||
ChanceLimit = 100
|
||||
WinChance = 20
|
||||
|
||||
CodeBegin = 1
|
||||
CodeEnd = 1000
|
||||
|
||||
Title = "每局游戏有20%机率获得抽奖号"
|
||||
SubTilte = "中奖后找到在线客服领取会员卡、金币、楼凤信息等福利哦!"
|
||||
)
|
||||
|
||||
// UserInfo 用户信息
|
||||
func UserInfo(ctx *gin.Context) {
|
||||
token := ctx.Request.Header.Get("X-Authorization") //为兼容H5带APP token
|
||||
if token == "" {
|
||||
ctx.AbortWithStatusJSON(http.StatusOK, stderr.ErrNoToken.Struct())
|
||||
return
|
||||
}
|
||||
claims, err := authuser.ParseWebClaims(token)
|
||||
if err != nil {
|
||||
log.Error("gameactivity UserInfo ParseWebClaims error", log.Any("token", fmt.Sprintf("%+v", token)), log.E(err))
|
||||
ctx.JSON(http.StatusBadRequest, stderr.InvalidToken.Struct())
|
||||
return
|
||||
}
|
||||
uid := claims.UID
|
||||
wal, err := walletmod.GetWallet(uid)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"data": err.Error(), "code": stderr.ErrServerUnavailable, "msg": stderr.ErrServerUnavailable.Msg()})
|
||||
return
|
||||
}
|
||||
nums, err := lotterylgmod.UserTodayNum(uid)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{
|
||||
"data": err.Error(), "code": stderr.ErrServerUnavailable, "msg": stderr.ErrServerUnavailable.Msg()})
|
||||
return
|
||||
}
|
||||
coins := wal.Amount + wal.Income
|
||||
dt := gin.H{"coins": coins, "nums": nums, "title": Title, "subTitle": SubTilte}
|
||||
ctx.JSON(int(stderr.Success), gin.H{"data": dt, "code": stderr.Success, "msg": stderr.Success.Msg()})
|
||||
}
|
||||
|
||||
// Deduct2Coins 固定每次接口调用扣除两金币
|
||||
func Deduct2Coins(ctx *gin.Context) {
|
||||
token := ctx.Request.Header.Get("X-Authorization") //为兼容H5带APP token
|
||||
if token == "" {
|
||||
ctx.AbortWithStatusJSON(http.StatusOK, stderr.ErrNoToken.Struct())
|
||||
return
|
||||
}
|
||||
claims, err := authuser.ParseWebClaims(token)
|
||||
if err != nil {
|
||||
log.Error("activity UserBalance ParseWebClaims error", log.Any("token", fmt.Sprintf("%+v", token)), log.E(err))
|
||||
ctx.JSON(http.StatusBadRequest, stderr.InvalidToken.Struct())
|
||||
return
|
||||
}
|
||||
code := productser.DeductGameCoins(claims.UID, 2)
|
||||
ctx.JSON(int(stderr.Success), gin.H{"data": nil, "code": code, "msg": code.Msg()})
|
||||
}
|
||||
|
||||
func genLotteryCode() int {
|
||||
if rand.Intn(ChanceLimit) >= WinChance {
|
||||
return Zero
|
||||
}
|
||||
return 1 + rand.Intn(1000)
|
||||
}
|
||||
|
||||
// RecordRewardCode 记录中奖号码
|
||||
func RecordRewardCode(ctx *gin.Context) {
|
||||
token := ctx.Request.Header.Get("X-Authorization") //为兼容H5带APP token
|
||||
if token == "" {
|
||||
common.ServeJSON(ctx, stderr.ErrNoToken, nil)
|
||||
return
|
||||
}
|
||||
claims, err := authuser.ParseWebClaims(token)
|
||||
if err != nil {
|
||||
log.Error("activity UserBalance ParseWebClaims error", log.Any("token", fmt.Sprintf("%+v", token)), log.E(err))
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
uid := claims.UID
|
||||
var arg struct {
|
||||
GateName string `form:"gateName" json:"gateName"` //关卡
|
||||
}
|
||||
if err = ctx.ShouldBind(&arg); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
times, err := lotterylgmod.UserTodayChances(uid)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbQueryError, "")
|
||||
return
|
||||
}
|
||||
if times >= MaxTimesOneDay {
|
||||
common.ServeJSON(ctx, stderr.ActLotteryNoTimes, "")
|
||||
return
|
||||
}
|
||||
code := genLotteryCode()
|
||||
if code > Zero {
|
||||
_ = lotterylgmod.InsertLog(uid, code, arg.GateName)
|
||||
}
|
||||
common.ServeJSON(ctx, stderr.Success, gin.H{"number": code})
|
||||
}
|
||||
Reference in New Issue
Block a user