修复排行榜bug

dev_aagame_provider
zhora 2 months ago
parent e1181b6207
commit a99f2bcee0
  1. 8
      call/config.go
  2. 14
      call/rank.go
  3. 1
      common/activity.go
  4. 2
      common/pop.go
  5. 1
      common/rank.go
  6. 3
      modules/web/handler/luckyWheel.go
  7. 16
      modules/web/handler/rank.go
  8. 2
      modules/web/handler/updatePop.go
  9. 1
      modules/web/values/luckyWheel.go

@ -1801,6 +1801,7 @@ func LoadConfigRank() (err error) {
if rank.RankAwards != "" {
var tmpRankAwards map[string]string
rank.RankAwardsMap = make(map[string][]common.RankAward)
rank.RankAwardsOneMap = make(map[string]map[int]common.RankAward)
err = jsoniter.UnmarshalFromString(rank.RankAwards, &tmpRankAwards)
if err != nil {
log.Error("unmarshal RankAwards err, %+v, %s", *rank, err.Error())
@ -1817,6 +1818,13 @@ func LoadConfigRank() (err error) {
log.Error("unmarshal awards details err, %+v, %s", *rank, err.Error())
return
}
tmpAwardOne := make(map[int]common.RankAward)
for _, v := range tmpAwards {
for index := v.SmallRank; index <= v.LargeRank; index++ {
tmpAwardOne[index] = v
}
}
rank.RankAwardsOneMap[rankCycle] = tmpAwardOne
rank.RankAwardsMap[rankCycle] = tmpAwards
}
}

@ -209,7 +209,7 @@ func rankAward(ticker *rankTicker) {
// UpdateRankValue 更新玩家数值(mode:1打码,2充值)
// todo 接入打码
func UpdateRankValue(mode int, uid int, updateValue int64) {
func UpdateRankValue(mode int, uid int, updateValue int64, isRobot int) {
configRanks := GetConfigRank(mode)
if len(configRanks) == 0 {
return
@ -226,8 +226,9 @@ func UpdateRankValue(mode int, uid int, updateValue int64) {
rankData := common.RankData{
UID: uid,
RankType: rank.RankType,
RankCycle: util.ToInt(rank.RankCycle),
RankCycle: util.ToInt(rankCycle),
RankAt: rankAt.Unix(),
IsRobot: isRobot,
RankValue: updateValueReal,
UpdatedAt: now.Unix(),
}
@ -288,7 +289,8 @@ func rankUserRefresh(rankType int, must bool) {
robotCfg := rankCfg.RobotCfgValue
rankAt, _, _, _ := getRankJackpotKey(rankType, rankCycle)
var rankRobots []common.RankData
err = db.Mysql().C().Model(&common.RankData{}).Where("is_robot = 1").Order("rank_value desc").Find(&rankRobots).Error
err = db.Mysql().C().Model(&common.RankData{}).Where("rank_type = ? and rank_cycle = ? and rank_at = ? and is_robot = 1", rankType, util.ToInt(rankCycle), rankAt.Unix()).
Order("rank_value desc").Find(&rankRobots).Error
if err != nil {
log.Error("get robot data err, %s", err.Error())
continue
@ -343,7 +345,7 @@ func rankUserRefresh(rankType int, must bool) {
addValue := rand.Intn(100) + 1
updateValue := addValue * 10000 / freeRate
if rankRobot.RankValue == 0 {
UpdateRankValue(rankType, rankRobot.UID, int64(updateValue))
UpdateRankValue(rankType, rankRobot.UID, int64(updateValue), 1)
}
}
} else {
@ -363,7 +365,7 @@ func rankUserRefresh(rankType int, must bool) {
addValue := rankValueFinal - robot.RankValue
updateValue := addValue * 10000 / int64(freeRate)
if updateValue > 0 {
UpdateRankValue(rankType, robot.UID, updateValue)
UpdateRankValue(rankType, robot.UID, updateValue, 1)
delete(rankRobotsMap, rankUser.UID)
}
_, ok := rankUserMap[robot.UID]
@ -420,7 +422,7 @@ func rankUsersGet(rankType int, rankCycle string, rankAt time.Time, page, pageSi
// RankUsersGet 获取当前排行榜用户
func RankUsersGet(rankType int, rankCycle string, page, pageSize int) (rankUsers []*common.RankDataWithUser, count int64, err error) {
rankAt, _, _, _ := getRankJackpotKey(rankType, rankCycle)
if rankAt.Sub(time.Now()).Minutes() > 5 {
if time.Now().Sub(rankAt).Minutes() > 5 {
rankUserRefresh(rankType, false)
}
return rankUsersGet(rankType, rankCycle, rankAt, page, pageSize)

@ -49,6 +49,7 @@ type ConfigBanner struct {
Pic string `gorm:"column:pic;type:varchar(255);comment:活动图片" json:"Pic" web:"pic"`
Data string `gorm:"column:data;type:varchar(255);comment:跳转数据" json:"Data" web:"data"`
TagId int `gorm:"column:tag_id;type:int(11);default:0;comment:标签id(0表示首页展示)" json:"TagId" web:"tag_id"`
Scene int `gorm:"column:scene;type:int(11);default:0;comment:场景(1:游戏,2:)" json:"Scene" web:"scene"`
}
func (c *ConfigBanner) TableName() string {

@ -13,7 +13,7 @@ type ConfigPopUp struct {
// 弹窗名称
PopName string `gorm:"column:pop_name;type:varchar(258);default:'';comment:弹窗名称" json:"PopName" web:"pop_name"`
// 活动id
ActivityId int `gorm:"column:activity_id;type:int(11);default:0;comment:活动id" json:"ActivityId" web:"activity_id"`
Action int `gorm:"column:action;type:int(11);default:0;comment:跳转id" json:"Action" web:"action"`
// 跳转链接
JumpUrl string `gorm:"column:jump_url;type:varchar(258);default:'';comment:跳转链接" json:"JumpUrl" web:"jump_url"`
// 用户标签(0:全部用户,1:充值用户,2:充值区间用户)

@ -38,6 +38,7 @@ type ConfigRank struct {
RankCycleMap map[string]struct{} `gorm:"-"`
FreeRatesMap map[string]int `gorm:"-"`
RankAwardsMap map[string][]RankAward `gorm:"-"`
RankAwardsOneMap map[string]map[int]RankAward `gorm:"-"`
RobotCfgValue *RobotCfg `gorm:"-"`
}

@ -144,10 +144,11 @@ func LuckyWheelLottery(c *gin.Context) {
valueRand := rand.Intn(luckyWheelCfg.WeightsSum)
value := 0
var award *common.LuckyAward
for _, luckyAward := range luckyWheelCfg.LuckyAwards {
for index, luckyAward := range luckyWheelCfg.LuckyAwards {
value += luckyAward.Weights
if valueRand <= value {
award = &luckyAward
resp.AwardIndex = index
break
}
}

@ -102,14 +102,22 @@ func RankInfo(c *gin.Context) {
return
}
resp.RankData.RankUsersCount = count
for _, rankUser := range rankUsers {
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
}
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,
UserRank: rank,
UserAward: userAward,
UserAwardExpected: userAwardExpected,
})
}
}

@ -97,7 +97,7 @@ func PopUpList(c *gin.Context) {
}
for index, v := range resp.List {
_ = index
if v.ActivityId == 10000 && v.JumpUrl != "" {
if v.Action == 10000 && v.JumpUrl != "" {
// todo
}
}

@ -20,5 +20,6 @@ type LuckyWheelLotteryReq struct {
type LuckWheelLotteryResp struct {
LessTimes int `json:"lessTimes"` // 转盘剩余次数
AwardIndex int `json:"awardIndex"` // 奖励下标
Award common.LuckyAward `json:"award"` // 奖励类型
}

Loading…
Cancel
Save