Bladeren bron

roll房,增加房间结算信息

neo 1 jaar geleden
bovenliggende
commit
4cccb2901a

+ 2 - 1
dev/modules/roll.lua

@@ -25,7 +25,8 @@ function root:mysql_get_init_columns()
25
 		awardTime = "int(11) DEFAULT 0 COMMENT '开奖时间'",
25
 		awardTime = "int(11) DEFAULT 0 COMMENT '开奖时间'",
26
 		conditions = "json COMMENT '参与条件列表'",
26
 		conditions = "json COMMENT '参与条件列表'",
27
 		itemIdList = "json COMMENT '奖励物品ID列表'",
27
 		itemIdList = "json COMMENT '奖励物品ID列表'",
28
-		signupUidList = "json COMMENT '报名玩家ID列表列表'"
28
+		signupUidList = "json COMMENT '报名玩家ID列表列表'",
29
+		settle = "json COMMENT '结算信息'"
29
 	}
30
 	}
30
 end
31
 end
31
 
32
 

+ 0 - 1
dev/utils/util_order.lua

@@ -76,7 +76,6 @@ function root:is_order_exist(orderId)
76
         return false
76
         return false
77
     end
77
     end
78
     local sql = string.format("SELECT 1 FROM `mdl_order` WHERE orderNo = '%s';", orderId)
78
     local sql = string.format("SELECT 1 FROM `mdl_order` WHERE orderNo = '%s';", orderId)
79
-    lib_game_mysql:query(sql)
80
     local ok, ret = mysqlUtil:select(sql)
79
     local ok, ret = mysqlUtil:select(sql)
81
     if not ok or is_empty(ret) then
80
     if not ok or is_empty(ret) then
82
         return false
81
         return false

+ 71 - 1
dev/utils/util_roll.lua

@@ -12,6 +12,7 @@ local redisUtil = require("utils.redisUtil")
12
 local util_player = require("utils.util_player")
12
 local util_player = require("utils.util_player")
13
 local timeUtil = require("utils.timeUtil")
13
 local timeUtil = require("utils.timeUtil")
14
 local nodeMgr = require("nodeMgr")
14
 local nodeMgr = require("nodeMgr")
15
+local mysqlUtil = require("utils.mysqlUtil")
15
 
16
 
16
 local userData = require("data.user")
17
 local userData = require("data.user")
17
 local payData = require("data.pay")
18
 local payData = require("data.pay")
@@ -44,7 +45,8 @@ function root:pack_roll_room_info(rid)
44
         signupEndTime = redisUtil.hget_int(key, "signupEndTime"),
45
         signupEndTime = redisUtil.hget_int(key, "signupEndTime"),
45
         awardTime = redisUtil.hget_int(key, "awardTime"),
46
         awardTime = redisUtil.hget_int(key, "awardTime"),
46
         conditions = redisUtil.hget_json(key, "conditions"),
47
         conditions = redisUtil.hget_json(key, "conditions"),
47
-        itemIdList = redisUtil.hget_json(key, "itemIdList")
48
+        itemIdList = redisUtil.hget_json(key, "itemIdList"),
49
+        settleList = redisUtil.hget_json(key, "settle")
48
     }
50
     }
49
     -- 玩家信息
51
     -- 玩家信息
50
     local signupUidList = redisUtil.hget_json(key, "signupUidList")
52
     local signupUidList = redisUtil.hget_json(key, "signupUidList")
@@ -59,6 +61,7 @@ function root:pack_roll_room_info(rid)
59
             end
61
             end
60
         end
62
         end
61
     end
63
     end
64
+    -- 结算
62
 
65
 
63
     return info
66
     return info
64
 end
67
 end
@@ -78,6 +81,56 @@ function root:pack_roll_room_info_list()
78
     end
81
     end
79
     return roomInfoList
82
     return roomInfoList
80
 end
83
 end
84
+-- 打包 - 玩家房间信息
85
+function root:pack_player_roll_room_info_list(uid)
86
+    if is_empty(uid) then
87
+        return
88
+    end
89
+    local sql = string.format("SELECT * FROM `mdl_roll` WHERE signupUidList like '%%s%';", tostring(uid))
90
+    local ok, ret = mysqlUtil:select(sql)
91
+    log.info("pack_player_roll_room_info_list sql[%s] ret[%s]", sql, tostring(ret))
92
+    if not ok or is_empty(ret) then
93
+        return
94
+    end
95
+    local roomInfoList = {}
96
+    for _, v in ipairs(ret) do
97
+        local id = tonumber(v.id)
98
+        local info = self:pack_roll_room_info(id)
99
+        if is_empty(info) then
100
+            info = {
101
+                roomId = id,
102
+                name = v.name,
103
+                bandShareCode = v.bandShareCode,
104
+                createTime = tonumber(v.createTime),
105
+                showStartTime = tonumber(v.showStartTime),
106
+                signupStartTime = tonumber(v.signupStartTime),
107
+                signupEndTime = tonumber(v.signupEndTime),
108
+                awardTime = tonumber(v.awardTime),
109
+                conditions = cjson_decode(v.conditions),
110
+                itemIdList = cjson_decode(v.itemIdList),
111
+                settleList = cjson_decode(v.settle)
112
+            }
113
+            -- 玩家信息
114
+            local signupUidList = nil
115
+            if not is_empty(v.signupUidList) then
116
+                signupUidList = cjson_decode(v.signupUidList)
117
+            end
118
+            if not is_empty(signupUidList) then
119
+                for _, uid in ipairs(signupUidList) do
120
+                    local playerInfo = util_player:get_base_info(uid)
121
+                    if not is_empty(playerInfo) then
122
+                        if info.signupPlayerList == nil then
123
+                            info.signupPlayerList = {}
124
+                        end
125
+                        table.insert(info.signupPlayerList, playerInfo)
126
+                    end
127
+                end
128
+            end
129
+        end
130
+        table.insert(roomInfoList, info)
131
+    end
132
+    return roomInfoList
133
+end
81
 
134
 
82
 -- 报名
135
 -- 报名
83
 function root:sign_up(uid, roomId)
136
 function root:sign_up(uid, roomId)
@@ -143,4 +196,21 @@ function root:sign_up(uid, roomId)
143
     return code.OK
196
     return code.OK
144
 end
197
 end
145
 
198
 
199
+-- 备份房间信息
200
+function root:backup_roll_room_info(rid)
201
+    if is_empty(rid) then
202
+        return
203
+    end
204
+    local key = _get_roll_room_key(rid)
205
+    local isExist = lib_game_redis:exists(key)
206
+    if not isExist then
207
+        -- 房间已不存在
208
+        return
209
+    end
210
+    local rollModule = require("modules.roll").new(rid)
211
+    rollModule:backup_to_db()
212
+
213
+    lib_game_redis:del(key)
214
+end
215
+
146
 return root
216
 return root

+ 6 - 0
nodes/game/interface/roll.lua

@@ -23,4 +23,10 @@ function root:roll_sign_up(role, msg)
23
     return util_roll:sign_up(role.uid, roomId)
23
     return util_roll:sign_up(role.uid, roomId)
24
 end
24
 end
25
 
25
 
26
+-- 我参与的房间
27
+function root:roll_get_self_room_list(role, msg)
28
+    local roomInfoList = util_roll:pack_player_roll_room_info_list(role.uid)
29
+    return code.OK, {roomList = roomInfoList}
30
+end
31
+
26
 return root
32
 return root

+ 1 - 0
nodes/game/lib/role.lua

@@ -57,6 +57,7 @@ end
57
 function root:logout_modules()
57
 function root:logout_modules()
58
     for _, cname in pairs(self.moduleList) do
58
     for _, cname in pairs(self.moduleList) do
59
         self[cname]:do_logout()
59
         self[cname]:do_logout()
60
+        self[cname]:backup_to_db()
60
     end
61
     end
61
     -- 删除玩家session信息
62
     -- 删除玩家session信息
62
     sessionData:user_update_cluster_info(self.uid, "gate")
63
     sessionData:user_update_cluster_info(self.uid, "gate")

+ 8 - 2
nodes/global/service/rollSrv.lua

@@ -55,9 +55,7 @@ local function _roll_award(rid)
55
 	end
55
 	end
56
 	local key = _get_room_key(rid)
56
 	local key = _get_room_key(rid)
57
 	-- 删除roll信息
57
 	-- 删除roll信息
58
-	lib_game_redis:del(key)
59
 	lib_game_redis:srem(MAIN_KEY, rid)
58
 	lib_game_redis:srem(MAIN_KEY, rid)
60
-	lib_game_redis:sismember(_get_room_award_key(), rid)
61
 
59
 
62
 	local signupUidList = redisUtil.hget_json(key, "signupUidList")
60
 	local signupUidList = redisUtil.hget_json(key, "signupUidList")
63
 	if is_empty(signupUidList) then
61
 	if is_empty(signupUidList) then
@@ -80,6 +78,7 @@ local function _roll_award(rid)
80
 		table.insert(mapUidItems[uid], {id = id, count = 1})
78
 		table.insert(mapUidItems[uid], {id = id, count = 1})
81
 	end
79
 	end
82
 	log.info("_roll_award mapUidItems[%s]", tostring(mapUidItems))
80
 	log.info("_roll_award mapUidItems[%s]", tostring(mapUidItems))
81
+	local settle = {}
83
 	local name = redisUtil.hget(key, "name")
82
 	local name = redisUtil.hget(key, "name")
84
 	local title = "roll房结算"
83
 	local title = "roll房结算"
85
 	-- 中奖玩家发奖
84
 	-- 中奖玩家发奖
@@ -92,6 +91,8 @@ local function _roll_award(rid)
92
 			cnt = cnt + string.format("\n%s", resAdapt:get_item_name(v.id))
91
 			cnt = cnt + string.format("\n%s", resAdapt:get_item_name(v.id))
93
 		end
92
 		end
94
 		util_mail:add_mail(uid, 0, title, cnt, {}, 0, nil, nil, "system")
93
 		util_mail:add_mail(uid, 0, title, cnt, {}, 0, nil, nil, "system")
94
+
95
+		table.insert(settle, {uid = uid, items = items})
95
 	end
96
 	end
96
 	-- 未中奖玩家邮件
97
 	-- 未中奖玩家邮件
97
 	for _, uid in ipairs(signupUidList) do
98
 	for _, uid in ipairs(signupUidList) do
@@ -100,6 +101,11 @@ local function _roll_award(rid)
100
 			util_mail:add_mail(uid, 0, title, cnt, {}, 0, nil, nil, "system")
101
 			util_mail:add_mail(uid, 0, title, cnt, {}, 0, nil, nil, "system")
101
 		end
102
 		end
102
 	end
103
 	end
104
+	-- 保存结算
105
+	redisUtil.hset(key, "settle", settle)
106
+
107
+	-- 保存记录
108
+	util_roll:backup_roll_room_info(rid)
103
 end
109
 end
104
 -- 定时器结束
110
 -- 定时器结束
105
 local function _timeout_award()
111
 local function _timeout_award()