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}) }