|
@@ -0,0 +1,146 @@
|
|
1
|
+--[[
|
|
2
|
+Descripttion:roll房
|
|
3
|
+version:
|
|
4
|
+Author: Neo,Huang
|
|
5
|
+Date: 2023-11-21 23:01:45
|
|
6
|
+LastEditors: Neo,Huang
|
|
7
|
+LastEditTime: 2023-11-21 23:01:59
|
|
8
|
+--]]
|
|
9
|
+local code = require("code")
|
|
10
|
+local lib_game_redis = require("lib_game_redis")
|
|
11
|
+local redisUtil = require("utils.redisUtil")
|
|
12
|
+local util_player = require("utils.util_player")
|
|
13
|
+local timeUtil = require("utils.timeUtil")
|
|
14
|
+local nodeMgr = require("nodeMgr")
|
|
15
|
+
|
|
16
|
+local userData = require("data.user")
|
|
17
|
+local payData = require("data.pay")
|
|
18
|
+
|
|
19
|
+local ROLL_MAIN_KEY = "roll:room"
|
|
20
|
+
|
|
21
|
+local root = {}
|
|
22
|
+
|
|
23
|
+local function _get_roll_room_key(rid)
|
|
24
|
+ return string.format("%s:%s", ROLL_MAIN_KEY, tostring(rid))
|
|
25
|
+end
|
|
26
|
+-- 打包 - 房间信息
|
|
27
|
+function root:pack_roll_room_info(rid)
|
|
28
|
+ if is_empty(rid) then
|
|
29
|
+ return
|
|
30
|
+ end
|
|
31
|
+ local key = _get_roll_room_key(rid)
|
|
32
|
+ local isExist = lib_game_redis:exists(key)
|
|
33
|
+ if not isExist then
|
|
34
|
+ -- 房间已不存在
|
|
35
|
+ return
|
|
36
|
+ end
|
|
37
|
+ local info = {
|
|
38
|
+ roomId = rid,
|
|
39
|
+ name = redisUtil.hget(key, "name"),
|
|
40
|
+ bandShareCode = redisUtil.hget(key, "bandShareCode"),
|
|
41
|
+ createTime = redisUtil.hget_int(key, "createTime"),
|
|
42
|
+ showStartTime = redisUtil.hget_int(key, "showStartTime"),
|
|
43
|
+ signupStartTime = redisUtil.hget_int(key, "signupStartTime"),
|
|
44
|
+ signupEndTime = redisUtil.hget_int(key, "signupEndTime"),
|
|
45
|
+ awardTime = redisUtil.hget_int(key, "awardTime"),
|
|
46
|
+ conditions = redisUtil.hget_json(key, "conditions"),
|
|
47
|
+ itemIdList = redisUtil.hget_json(key, "itemIdList")
|
|
48
|
+ }
|
|
49
|
+ -- 玩家信息
|
|
50
|
+ local signupUidList = redisUtil.hget_json(key, "signupUidList")
|
|
51
|
+ if not is_empty(signupUidList) then
|
|
52
|
+ for _, uid in ipairs(signupUidList) do
|
|
53
|
+ local playerInfo = util_player:get_base_info(uid)
|
|
54
|
+ if not is_empty(playerInfo) then
|
|
55
|
+ if info.signupPlayerList == nil then
|
|
56
|
+ info.signupPlayerList = {}
|
|
57
|
+ end
|
|
58
|
+ table.insert(info.signupPlayerList, playerInfo)
|
|
59
|
+ end
|
|
60
|
+ end
|
|
61
|
+ end
|
|
62
|
+
|
|
63
|
+ return info
|
|
64
|
+end
|
|
65
|
+-- 打包 - 所有活跃房间
|
|
66
|
+function root:pack_roll_room_info_list()
|
|
67
|
+ local roomIdList = lib_game_redis:smembers(ROLL_MAIN_KEY)
|
|
68
|
+ if is_empty(roomIdList) then
|
|
69
|
+ return
|
|
70
|
+ end
|
|
71
|
+ local roomInfoList = {}
|
|
72
|
+ for _, v in ipairs(roomIdList) do
|
|
73
|
+ local rid = tonumber(v)
|
|
74
|
+ local roomInfo = self:pack_roll_room_info(rid)
|
|
75
|
+ if not is_empty(roomInfo) then
|
|
76
|
+ table.insert(roomInfoList, roomInfo)
|
|
77
|
+ end
|
|
78
|
+ end
|
|
79
|
+ return roomInfoList
|
|
80
|
+end
|
|
81
|
+
|
|
82
|
+-- 报名
|
|
83
|
+function root:sign_up(uid, roomId)
|
|
84
|
+ if is_empty(uid) or is_empty(roomId) then
|
|
85
|
+ return code.PARAMTER_ERROR
|
|
86
|
+ end
|
|
87
|
+ local key = _get_roll_room_key(roomId)
|
|
88
|
+ local isExist = lib_game_redis:exists(key)
|
|
89
|
+ if not isExist then
|
|
90
|
+ -- 房间已不存在
|
|
91
|
+ return code.UNKNOWN
|
|
92
|
+ end
|
|
93
|
+ -- 是否已报名
|
|
94
|
+ local signupUidList = redisUtil.hget_json(key, "signupUidList")
|
|
95
|
+ if table.include(signupUidList, uid) then
|
|
96
|
+ return code.UNKNOWN
|
|
97
|
+ end
|
|
98
|
+ -- 是否绑定推广码
|
|
99
|
+ local bandShareCode = redisUtil.hget(key, "bandShareCode")
|
|
100
|
+ if not is_empty(bandShareCode) then
|
|
101
|
+ local _bandShareCode = userData:get_key_info(uid, "bandShareCode")
|
|
102
|
+ if bandShareCode ~= _bandShareCode then
|
|
103
|
+ return code.UNKNOWN
|
|
104
|
+ end
|
|
105
|
+ end
|
|
106
|
+ -- 报名时间
|
|
107
|
+ local currTime = timeUtil.now(uid)
|
|
108
|
+ local signupStartTime = redisUtil.hget_int(key, "signupStartTime")
|
|
109
|
+ if signupStartTime > currTime then
|
|
110
|
+ -- 未开始报名
|
|
111
|
+ return code.UNKNOWN
|
|
112
|
+ end
|
|
113
|
+ local signupEndTime = redisUtil.hget_int(key, "signupEndTime")
|
|
114
|
+ if currTime > signupEndTime then
|
|
115
|
+ -- 报名已结束
|
|
116
|
+ return code.UNKNOWN
|
|
117
|
+ end
|
|
118
|
+ -- 报名条件
|
|
119
|
+ local conditions = redisUtil.hget_json(key, "conditions")
|
|
120
|
+ if not is_empty(conditions) then
|
|
121
|
+ for _, v in ipairs(conditions) do
|
|
122
|
+ local playerValue = nil
|
|
123
|
+ if v.c == "pay_day_totalAmount" then
|
|
124
|
+ -- 今日充值
|
|
125
|
+ playerValue = payData:get_day_total_amount(uid)
|
|
126
|
+ end
|
|
127
|
+ if v.cv > playerValue then
|
|
128
|
+ return code.UNKNOWN
|
|
129
|
+ end
|
|
130
|
+ end
|
|
131
|
+ end
|
|
132
|
+ -- 报名成功
|
|
133
|
+ table.insert(signupUidList, uid)
|
|
134
|
+ redisUtil.hset(key, "signupUidList", signupUidList)
|
|
135
|
+
|
|
136
|
+ -- 广播
|
|
137
|
+ local pack = {
|
|
138
|
+ roomId = roomId,
|
|
139
|
+ playerInfo = util_player:get_base_info(uid)
|
|
140
|
+ }
|
|
141
|
+ nodeMgr.broadcast_proto_notify("on_roll_player", pack)
|
|
142
|
+
|
|
143
|
+ return code.OK
|
|
144
|
+end
|
|
145
|
+
|
|
146
|
+return root
|