Browse Source

新增明细,资源变化

neo 1 year ago
parent
commit
3172e37a29

+ 3 - 1
dev/base/baseModule.lua

@@ -13,7 +13,7 @@ local sqlUtil = require("utils.sqlUtil")
13 13
 
14 14
 local root = class("base")
15 15
 
16
-function root:ctor(uid, mdlName, keyName, isSaveDB, isPersonal)
16
+function root:ctor(uid, mdlName, keyName, isSaveDB, isPersonal, secondaryKeys)
17 17
     self.uid = uid
18 18
     self.mdlName = mdlName
19 19
     self.keyName = keyName
@@ -22,6 +22,7 @@ function root:ctor(uid, mdlName, keyName, isSaveDB, isPersonal)
22 22
     if isPersonal == nil then
23 23
         self.isPersonal = true
24 24
     end
25
+    self.secondaryKeys = secondaryKeys
25 26
 end
26 27
 
27 28
 -- 模块sql属性
@@ -35,6 +36,7 @@ function root:mysql_get_table_info()
35 36
         mdlName = self.mdlName,
36 37
         keyName = self.keyName,
37 38
         isSaveDB = self.isSaveDB,
39
+        secondaryKeys = self.secondaryKeys,
38 40
         columnNameOptions = self:mysql_get_init_columns()
39 41
     }
40 42
 end

+ 12 - 2
dev/modules.lua

@@ -30,7 +30,7 @@ local function l_is_module_table_exist(mdlName)
30 30
     return false
31 31
 end
32 32
 -- 创建模块表
33
-local function l_create_module_table(mdlName, columnNameOptions, keyName)
33
+local function l_create_module_table(mdlName, columnNameOptions, keyName, secondaryKeys)
34 34
     local tbName = string.format("mdl_%s", tostring(mdlName))
35 35
     local columns = ""
36 36
     for k, v in pairs(columnNameOptions) do
@@ -43,6 +43,16 @@ local function l_create_module_table(mdlName, columnNameOptions, keyName)
43 43
         columns,
44 44
         keyName
45 45
     )
46
+    if not is_empty(secondaryKeys) then
47
+        sql =
48
+            string.format(
49
+            "CREATE TABLE %s (%s PRIMARY KEY (%s), %s) DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_unicode_ci;",
50
+            tbName,
51
+            columns,
52
+            keyName,
53
+            secondaryKeys
54
+        )
55
+    end
46 56
     local ret = lib_game_mysql:query(sql)
47 57
     log.info("l_create_module_table sql[%s] ret[%s]", sql, tostring(ret))
48 58
     return true
@@ -90,7 +100,7 @@ function root:init_db_tables()
90 100
         local data = obj:mysql_get_table_info()
91 101
         if data and not is_empty(data.mdlName) then
92 102
             if not l_is_module_table_exist(data.mdlName) then
93
-                l_create_module_table(data.mdlName, data.columnNameOptions, data.keyName)
103
+                l_create_module_table(data.mdlName, data.columnNameOptions, data.keyName, data.secondaryKeys)
94 104
             else
95 105
                 l_modify_module_table(data.mdlName, data.columnNameOptions)
96 106
             end

+ 30 - 0
dev/modules/itemrecord.lua

@@ -0,0 +1,30 @@
1
+--[[
2
+Descripttion:资源记录
3
+version:
4
+Author: Neo,Huang
5
+Date: 2023-11-18 12:13:14
6
+LastEditors: Neo,Huang
7
+LastEditTime: 2023-11-18 12:13:46
8
+--]]
9
+local root = class("itemrecord", require("base.baseModule"))
10
+
11
+function root:ctor(id)
12
+	root.super.ctor(self, id, "itemrecord", "id", true, false, "index `uid` (`uid`)")
13
+	self.id = id
14
+end
15
+
16
+function root:mysql_get_init_columns()
17
+	return {
18
+		id = "bigint(20) NOT NULL AUTO_INCREMENT COMMENT '埋点ID'",
19
+		createTime = "int(11) DEFAULT 0 COMMENT '创建时间'",
20
+		uid = "bigint(20) DEFAULT 0 COMMENT '资源变化玩家'",
21
+		bandShareCode = "varchar(45) DEFAULT NULL COMMENT '绑定推广码'",
22
+		channel = "int(11) DEFAULT 0 COMMENT '玩家所属渠道'",
23
+		eventId = "varchar(255) COMMENT '变化原因'",
24
+		itemId = "int(11) DEFAULT 0 COMMENT '变化物品ID'",
25
+		delta = "int(11) DEFAULT 0 COMMENT '变化数量(有符号)'",
26
+		remainCount = "json COMMENT '变化后剩余物品数量'"
27
+	}
28
+end
29
+
30
+return root

+ 1 - 0
nodes/global/main.lua

@@ -29,6 +29,7 @@ skynet.start(
29 29
         skynet.uniqueservice("dreamSrv")
30 30
         skynet.uniqueservice("battlerecordSrv")
31 31
         skynet.uniqueservice("rollSrv")
32
+        skynet.uniqueservice("itemrecordSrv")
32 33
 
33 34
         -- 集群
34 35
         init_nodes:init_cluster()

+ 37 - 0
nodes/global/service/itemrecordSrv.lua

@@ -0,0 +1,37 @@
1
+--[[
2
+Descripttion:战斗记录
3
+version:
4
+Author: Neo,Huang
5
+Date: 2023-11-18 13:56:05
6
+LastEditors: Neo,Huang
7
+LastEditTime: 2023-11-18 13:57:08
8
+--]]
9
+local timer = require("timer")
10
+local baseService = require("baseService")
11
+local lib_game_mysql = require("lib_game_mysql")
12
+local timeUtil = require("utils.timeUtil")
13
+
14
+local timerDelExpire = nil
15
+
16
+local CMD = {}
17
+
18
+-- 清理明细记录
19
+local function l_del_expire_record()
20
+	local currTime = skynet_time()
21
+	local maxTime = timeUtil.getDayStartTime(currTime, -7)
22
+	local sql = string.format("delete from mdl_itemrecord where createTime < %s;", tostring(maxTime))
23
+	local ret = lib_game_mysql:query(sql)
24
+	log.info("l_del_expire_record sql[%s] ret[%s]", tostring(sql), tostring(ret))
25
+end
26
+
27
+function CMD.onStart()
28
+	-- 每天1点开始删除
29
+	timerDelExpire = timer.timeOfDay(5, 0, 0, l_del_expire_record)
30
+end
31
+
32
+function CMD.onStop()
33
+	-- 取消定时器
34
+	timerDelExpire.func = nil
35
+end
36
+
37
+baseService.start(CMD, ".itemrecordCenter", true)