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.
266 lines
8.0 KiB
266 lines
8.0 KiB
|
1 year ago
|
package statistics
|
||
|
|
|
||
|
|
import (
|
||
|
|
"server/common"
|
||
|
|
"server/modules/backend/app"
|
||
|
|
"server/modules/backend/models"
|
||
|
|
utils "server/modules/backend/util"
|
||
|
|
"server/modules/backend/values"
|
||
|
|
|
||
|
|
"github.com/gin-gonic/gin"
|
||
|
|
)
|
||
|
|
|
||
|
|
func RealDataBalanceRoomGame(c *gin.Context) {
|
||
|
|
a := app.NewApp(c)
|
||
|
|
defer func() {
|
||
|
|
a.Response()
|
||
|
|
}()
|
||
|
|
req := new(values.RealBalanceDataRoomGameReq)
|
||
|
|
if !a.S(req) {
|
||
|
|
return
|
||
|
|
}
|
||
|
|
resp := values.RealBalanceDataRoomGameResp{}
|
||
|
|
|
||
|
|
su, eu := utils.GetQueryUnix(req.Start, req.End)
|
||
|
|
// var oneDay int64 = 24 * 60 * 60
|
||
|
|
|
||
|
|
// res := make(map[string]values.RoomGameData)
|
||
|
|
res := GetRoomGameData2(&su, &eu, req.Channel)
|
||
|
|
// for i := su; i < eu; i += oneDay {
|
||
|
|
// s := i
|
||
|
|
// e := i + oneDay
|
||
|
|
// for j := 0; j < len(common.RoomGameIDs); j++ {
|
||
|
|
// res[strconv.Itoa(common.RoomGameIDs[j])] = GetRoomGameData(&s, &e, req.Channel, &common.RoomGameIDs[j])
|
||
|
|
// }
|
||
|
|
// }
|
||
|
|
resp.List = res
|
||
|
|
a.Data = resp
|
||
|
|
}
|
||
|
|
|
||
|
|
func GetRoomGameData2(start, end *int64, channel *int) map[string]values.RoomGameData {
|
||
|
|
res := make(map[string]values.RoomGameData)
|
||
|
|
// for _, v := range common.RoomGameIDs {
|
||
|
|
// one := values.RoomGameData{Date: *start, GameId: v}
|
||
|
|
// OnlineData := models.GetOnlineByGameId(v)
|
||
|
|
// for _, value := range OnlineData {
|
||
|
|
// one.Online += value.Total
|
||
|
|
// one.OnlineNew += value.New
|
||
|
|
// }
|
||
|
|
// roomData := map[string]values.RoomGameRealData{}
|
||
|
|
// for _, v := range common.RoomIDs {
|
||
|
|
// roomData[strconv.Itoa(v)] = values.RoomGameRealData{DropPer: "0%"}
|
||
|
|
// }
|
||
|
|
// one.RoomData = roomData
|
||
|
|
// res[strconv.Itoa(v)] = one
|
||
|
|
// }
|
||
|
|
|
||
|
|
// 聚合查询活跃人数
|
||
|
|
// act := models.GetRoomGamePlayerCountGroup(start, end, channel)
|
||
|
|
// for k, v := range act {
|
||
|
|
// one := res[k]
|
||
|
|
// one.Active = v
|
||
|
|
// res[k] = one
|
||
|
|
// }
|
||
|
|
|
||
|
|
// 按roomid聚合活跃人数
|
||
|
|
// actR := models.GetRoomGamePlayerCountGroup2(start, end, channel)
|
||
|
|
// for gid, v := range actR {
|
||
|
|
// oneG := res[gid]
|
||
|
|
// roomGameRealData := oneG.RoomData
|
||
|
|
// for rid, val := range v {
|
||
|
|
// roomGameRealData[rid] = values.RoomGameRealData{Active: val}
|
||
|
|
// }
|
||
|
|
// oneG.RoomData = roomGameRealData
|
||
|
|
// res[gid] = oneG
|
||
|
|
// }
|
||
|
|
// 聚合查询下注
|
||
|
|
// bet := models.GetBetGroup(start, end, channel, common.RoomGameIDs)
|
||
|
|
// for gid, v := range bet {
|
||
|
|
// oneG := res[gid]
|
||
|
|
// roomGameRealData := oneG.RoomData
|
||
|
|
// for rid, val := range v {
|
||
|
|
// oneR := roomGameRealData[rid]
|
||
|
|
// oneR.Bet = val
|
||
|
|
// roomGameRealData[rid] = oneR
|
||
|
|
// oneG.Bet += val
|
||
|
|
// }
|
||
|
|
// oneG.RoomData = roomGameRealData
|
||
|
|
// res[gid] = oneG
|
||
|
|
// }
|
||
|
|
|
||
|
|
// 聚合查询利润
|
||
|
|
// profit := models.GetProfitGroup(start, end, channel, nil, common.RoomGameIDs)
|
||
|
|
// for gid, v := range profit {
|
||
|
|
// oneG := res[gid]
|
||
|
|
// roomGameRealData := oneG.RoomData
|
||
|
|
// for rid, val := range v {
|
||
|
|
// oneR := roomGameRealData[rid]
|
||
|
|
// oneR.Profit = val
|
||
|
|
// roomGameRealData[rid] = oneR
|
||
|
|
// oneG.Profit += val
|
||
|
|
// }
|
||
|
|
// oneG.RoomData = roomGameRealData
|
||
|
|
// res[gid] = oneG
|
||
|
|
// }
|
||
|
|
|
||
|
|
// 聚合查询台费
|
||
|
|
// tableFee := models.GetTableFeeGroup(start, end, channel)
|
||
|
|
// for gid, v := range tableFee {
|
||
|
|
// oneG := res[gid]
|
||
|
|
// roomGameRealData := oneG.RoomData
|
||
|
|
// for rid, val := range v {
|
||
|
|
// oneR := roomGameRealData[rid]
|
||
|
|
// oneR.Fee = val
|
||
|
|
// roomGameRealData[rid] = oneR
|
||
|
|
// oneG.Fee += val
|
||
|
|
// }
|
||
|
|
// oneG.RoomData = roomGameRealData
|
||
|
|
// res[gid] = oneG
|
||
|
|
// }
|
||
|
|
|
||
|
|
// 聚合查询弃牌率
|
||
|
|
// all := models.GetGameTotalGroup(start, end, channel, false, common.RoomGameIDs)
|
||
|
|
// total := map[string]int64{}
|
||
|
|
// for gid, v := range all {
|
||
|
|
// oneG := res[gid]
|
||
|
|
// roomGameRealData := oneG.RoomData
|
||
|
|
// for rid, val := range v {
|
||
|
|
// oneR := roomGameRealData[rid]
|
||
|
|
// oneR.GameCount = val
|
||
|
|
// roomGameRealData[rid] = oneR
|
||
|
|
// total[gid] += val
|
||
|
|
// }
|
||
|
|
// oneG.RoomData = roomGameRealData
|
||
|
|
// res[gid] = oneG
|
||
|
|
// }
|
||
|
|
// dropTotal := map[string]int64{}
|
||
|
|
// drop := models.GetGameTotalGroup(start, end, channel, true, common.RoomGameIDs)
|
||
|
|
// for gid, v := range drop {
|
||
|
|
// oneG := res[gid]
|
||
|
|
// roomGameRealData := oneG.RoomData
|
||
|
|
// for rid, val := range v {
|
||
|
|
// oneR := roomGameRealData[rid]
|
||
|
|
// oneR.DropPer = utils.GetPer(val, oneR.GameCount)
|
||
|
|
// roomGameRealData[rid] = oneR
|
||
|
|
// dropTotal[gid] += val
|
||
|
|
// }
|
||
|
|
// oneG.RoomData = roomGameRealData
|
||
|
|
// res[gid] = oneG
|
||
|
|
// }
|
||
|
|
// for k := range res {
|
||
|
|
// one := res[k]
|
||
|
|
// one.DropPer = utils.GetPer(dropTotal[k], total[k])
|
||
|
|
// res[k] = one
|
||
|
|
// }
|
||
|
|
|
||
|
|
// 聚合查询控杀局数
|
||
|
|
// kills := models.GetControlTotalGroup(start, end, channel, false, common.RoomGameIDs)
|
||
|
|
// for gid, v := range kills {
|
||
|
|
// oneG := res[gid]
|
||
|
|
// roomGameRealData := oneG.RoomData
|
||
|
|
// for rid, val := range v {
|
||
|
|
// oneR := roomGameRealData[rid]
|
||
|
|
// oneR.ControlKillCount = val
|
||
|
|
// roomGameRealData[rid] = oneR
|
||
|
|
// }
|
||
|
|
// oneG.RoomData = roomGameRealData
|
||
|
|
// res[gid] = oneG
|
||
|
|
// }
|
||
|
|
// frees := models.GetControlTotalGroup(start, end, channel, true, common.RoomGameIDs)
|
||
|
|
// for gid, v := range frees {
|
||
|
|
// oneG := res[gid]
|
||
|
|
// roomGameRealData := oneG.RoomData
|
||
|
|
// for rid, val := range v {
|
||
|
|
// oneR := roomGameRealData[rid]
|
||
|
|
// oneR.ControlFreeCount = val
|
||
|
|
// roomGameRealData[rid] = oneR
|
||
|
|
// }
|
||
|
|
// oneG.RoomData = roomGameRealData
|
||
|
|
// res[gid] = oneG
|
||
|
|
// }
|
||
|
|
|
||
|
|
return res
|
||
|
|
}
|
||
|
|
|
||
|
|
func GetRoomGameData(start, end *int64, channel *int, gameId *int) values.RoomGameData {
|
||
|
|
var roomGameData values.RoomGameData
|
||
|
|
|
||
|
|
// 日期
|
||
|
|
roomGameData.Date = *start
|
||
|
|
|
||
|
|
// 游戏id
|
||
|
|
roomGameData.GameId = *gameId
|
||
|
|
|
||
|
|
//在线人数
|
||
|
|
OnlineData := models.GetOnlineByGameId(*gameId)
|
||
|
|
for _, value := range OnlineData {
|
||
|
|
roomGameData.Online += value.Total
|
||
|
|
roomGameData.OnlineNew += value.New
|
||
|
|
}
|
||
|
|
|
||
|
|
// 活跃人数
|
||
|
|
// roomGameData.Active = models.GetRoomGamePlayerCount(start, end, channel, gameId, nil)
|
||
|
|
|
||
|
|
// 下注
|
||
|
|
roomGameData.Bet = models.GetBet(start, end, channel, gameId, nil, nil)
|
||
|
|
|
||
|
|
// 利润
|
||
|
|
event := int(common.CurrencyEventGameSettle)
|
||
|
|
roomGameData.Profit = models.GetProfit(start, end, channel, gameId, nil, &event, nil)
|
||
|
|
|
||
|
|
// 台费
|
||
|
|
// roomGameData.Fee = models.GetTableFee(start, end, channel, gameId, nil)
|
||
|
|
|
||
|
|
// 放牌率
|
||
|
|
var dropValue = 0
|
||
|
|
total := models.GetGameTotal(start, end, channel, gameId, nil, nil)
|
||
|
|
dropTotal := models.GetGameTotal(start, end, channel, gameId, nil, &dropValue)
|
||
|
|
roomGameData.DropPer = utils.GetPer(dropTotal, total)
|
||
|
|
|
||
|
|
roomGameRealData := make(map[string]values.RoomGameRealData)
|
||
|
|
// for i := 0; i < len(common.RoomIDs); i++ {
|
||
|
|
// roomGameRealData[strconv.Itoa(common.RoomIDs[i])] = getRoomGameRealData(start, end, channel, gameId, &common.RoomIDs[i])
|
||
|
|
// }
|
||
|
|
roomGameData.RoomData = roomGameRealData
|
||
|
|
return roomGameData
|
||
|
|
}
|
||
|
|
|
||
|
|
func getRoomGameRealData(start, end *int64, channel *int, gameId *int, roomId *int) values.RoomGameRealData {
|
||
|
|
var roomGameRealData values.RoomGameRealData
|
||
|
|
|
||
|
|
// 活跃人数
|
||
|
|
// roomGameRealData.Active = models.GetRoomGamePlayerCount(start, end, channel, gameId, roomId)
|
||
|
|
|
||
|
|
// 下注额
|
||
|
|
roomGameRealData.Bet = models.GetBet(start, end, channel, gameId, roomId, nil)
|
||
|
|
|
||
|
|
// 利润
|
||
|
|
event := int(common.CurrencyEventGameSettle)
|
||
|
|
roomGameRealData.Profit = models.GetProfit(start, end, channel, gameId, roomId, &event, nil)
|
||
|
|
|
||
|
|
// roomGameRealData.Fee = models.GetTableFee(start, end, channel, gameId, roomId)
|
||
|
|
|
||
|
|
// 放牌率
|
||
|
|
var dropValue = 0
|
||
|
|
total := models.GetGameTotal(start, end, channel, gameId, roomId, nil)
|
||
|
|
dropTotal := models.GetGameTotal(start, end, channel, gameId, roomId, &dropValue)
|
||
|
|
roomGameRealData.DropPer = utils.GetPer(dropTotal, total)
|
||
|
|
|
||
|
|
// 游戏局数
|
||
|
|
roomGameRealData.GameCount = models.GetControlTotal(start, end, channel, gameId, roomId, nil, false)
|
||
|
|
|
||
|
|
// 控杀局数
|
||
|
|
// ControlKill := []int{common.ControlTypeNewKill, common.ControlTypePointKill, common.ControlTypeSingleKill, common.ControlTypeRoomKill}
|
||
|
|
// for i := 0; i < len(ControlKill); i++ {
|
||
|
|
// roomGameRealData.ControlKillCount += models.GetControlTotal(start, end, channel, gameId, roomId, &ControlKill[i], false)
|
||
|
|
// }
|
||
|
|
|
||
|
|
// 控放局数
|
||
|
|
// ControlFree := []int{common.ControlTypeNewFee, common.ControlTypePointFree, common.ControlTypeSingleFree, common.ControlTypeRoomFree}
|
||
|
|
// for i := 0; i < len(ControlFree); i++ {
|
||
|
|
// roomGameRealData.ControlFreeCount += models.GetControlTotal(start, end, channel, gameId, roomId, &ControlFree[i], false)
|
||
|
|
// }
|
||
|
|
|
||
|
|
return roomGameRealData
|
||
|
|
}
|