印度包网
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.

198 lines
5.2 KiB

3 months ago
package handler
import (
"fmt"
"github.com/gin-gonic/gin"
"github.com/liangdas/mqant/log"
"server/call"
"server/modules/web/app"
"server/modules/web/values"
"server/util"
)
func RankCfg(c *gin.Context) {
a := app.NewApp(c)
defer func() {
a.Response()
}()
req := &values.RankCfgReq{}
if !a.S(req) {
return
}
if req.RankType == 0 {
req.RankType = 1
}
a.GetUID()
resp := &values.RankCfgResp{}
a.Data = resp
configRanks := call.GetConfigRank(req.RankType)
for _, configRank := range configRanks {
for rankCycle := range configRank.RankCycleMap {
jackpot, rankLess := call.RankJackpotGet(req.RankType, rankCycle)
rankData := values.RankData{
RankCycle: util.ToInt(rankCycle),
Pumping: configRank.FreeRatesMap[rankCycle],
JackPot: jackpot,
JackPotLast: call.RankJackpotPreGet(req.RankType, rankCycle),
AwardAtLess: rankLess,
}
if rankAwards, ok := configRank.RankAwardsMap[rankCycle]; ok {
rankData.RankAwards = make([]values.RankAward, 0, len(rankAwards))
for _, rankAward := range rankAwards {
rankData.RankAwards = append(rankData.RankAwards, values.RankAward{
MinRank: rankAward.SmallRank,
MaxRank: rankAward.LargeRank,
Award: rankAward.AwardRate,
})
}
}
resp.RankData = append(resp.RankData, rankData)
}
}
}
// RankInfo 排行榜信息
func RankInfo(c *gin.Context) {
a := app.NewApp(c)
defer func() {
a.Response()
}()
req := &values.RankInfoReq{}
if !a.S(req) {
return
}
if req.RankType == 0 {
req.RankType = 1
}
a.GetUID()
resp := &values.RankInfoResp{
RankData: new(values.RankData),
Exist: true,
}
a.Data = resp
cycleMark := fmt.Sprintf("%d", req.RankCycle)
configRank := call.GetConfigRankByCycle(req.RankType, cycleMark)
if configRank == nil {
resp.Exist = false
return
}
resp.RankData.RankCycle = req.RankCycle
resp.RankData.Pumping = configRank.FreeRatesMap[cycleMark]
resp.RankData.JackPotLast = call.RankJackpotPreGet(req.RankType, cycleMark)
jackpot, rankLess := call.RankJackpotGet(req.RankType, cycleMark)
resp.RankData.JackPot = jackpot
resp.RankData.AwardAtLess = rankLess
if rankAwards, ok := configRank.RankAwardsMap[cycleMark]; ok {
resp.RankData.RankAwards = make([]values.RankAward, 0, len(rankAwards))
for _, rankAward := range rankAwards {
resp.RankData.RankAwards = append(resp.RankData.RankAwards, values.RankAward{
MinRank: rankAward.SmallRank,
MaxRank: rankAward.LargeRank,
Award: rankAward.AwardRate,
})
}
}
// todo 补充排行榜数据
rankUsers, count, err := call.RankUsersGet(req.RankType, cycleMark, req.Page, req.PageSize)
if err != nil {
log.Error(err.Error())
a.Code = values.CodeRetry
return
}
resp.RankData.RankUsersCount = count
for index, rankUser := range rankUsers {
rank := (req.Page-1)*req.PageSize + index + 1
var userAward int
var userAwardExpected int64
award, ok := configRank.RankAwardsOneMap[cycleMark][rank]
if ok {
userAward = award.AwardRate
userAwardExpected = int64(userAward) * jackpot / 10000
}
3 months ago
resp.RankData.RankUsers = append(resp.RankData.RankUsers, values.RankUser{
UserName: rankUser.UserInfo.Nick,
UserCount: rankUser.RankValue,
UserIcon: rankUser.UserInfo.Avatar,
UserRank: rank,
UserAward: userAward,
UserAwardExpected: userAwardExpected,
3 months ago
})
}
}
// RankHistory 排行榜历史记录
func RankHistory(c *gin.Context) {
a := app.NewApp(c)
defer func() {
a.Response()
}()
req := &values.RankHistoryReq{}
if !a.S(req) {
return
}
if req.RankType == 0 {
req.RankType = 1
}
a.GetUID()
resp := &values.RankHistoryResp{
RankData: new(values.RankData),
}
a.Data = resp
cycleMark := fmt.Sprintf("%d", req.RankCycle)
resp.RankData.JackPotLast = call.RankJackpotPreGet(req.RankType, cycleMark)
resp.RankData.RankCycle = req.RankCycle
rankUsers, count, err := call.RankUsersPreGet(req.RankType, cycleMark, req.Page, req.PageSize)
if err != nil {
log.Error(err.Error())
a.Code = values.CodeRetry
return
}
resp.RankData.RankUsersCount = count
for _, rankUser := range rankUsers {
resp.RankData.RankUsers = append(resp.RankData.RankUsers, values.RankUser{
UserName: rankUser.UserInfo.Nick,
UserCount: rankUser.RankValue,
UserIcon: rankUser.UserInfo.Avatar,
UserRank: rankUser.Rank,
UserAward: rankUser.UserAward,
UserAwardExpected: rankUser.UserAwardCount,
})
}
}
// RankReward 玩家中奖记录
func RankReward(c *gin.Context) {
a := app.NewApp(c)
defer func() {
a.Response()
}()
req := &values.RankRewardReq{}
if !a.S(req) {
return
}
a.GetUID()
resp := &values.RankRewardResp{}
a.Data = resp
rankAwards, count, err := call.UserRankAwardRecord(a.UID, req.Page, req.PageSize)
if err != nil {
log.Error(err.Error())
a.Code = values.CodeRetry
return
}
resp.Count = count
resp.RankRewardDetails = make([]values.RankRewardDetails, 0, len(rankAwards))
for _, rankAward := range rankAwards {
resp.RankRewardDetails = append(resp.RankRewardDetails, values.RankRewardDetails{
Rank: rankAward.Rank,
RankCycle: rankAward.RankCycle,
RewardAt: rankAward.RankAt,
RewardCount: rankAward.UserAwardCount,
})
}
}