瀏覽代碼

新增明细,资源变化

neo 1 年之前
父節點
當前提交
3172e37a29
共有 5 個文件被更改,包括 83 次插入3 次删除
  1. 3 1
      dev/base/baseModule.lua
  2. 12 2
      dev/modules.lua
  3. 30 0
      dev/modules/itemrecord.lua
  4. 1 0
      nodes/global/main.lua
  5. 37 0
      nodes/global/service/itemrecordSrv.lua

+ 3 - 1
dev/base/baseModule.lua

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

+ 12 - 2
dev/modules.lua

@@ -30,7 +30,7 @@ local function l_is_module_table_exist(mdlName)
30
     return false
30
     return false
31
 end
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
     local tbName = string.format("mdl_%s", tostring(mdlName))
34
     local tbName = string.format("mdl_%s", tostring(mdlName))
35
     local columns = ""
35
     local columns = ""
36
     for k, v in pairs(columnNameOptions) do
36
     for k, v in pairs(columnNameOptions) do
@@ -43,6 +43,16 @@ local function l_create_module_table(mdlName, columnNameOptions, keyName)
43
         columns,
43
         columns,
44
         keyName
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
     local ret = lib_game_mysql:query(sql)
56
     local ret = lib_game_mysql:query(sql)
47
     log.info("l_create_module_table sql[%s] ret[%s]", sql, tostring(ret))
57
     log.info("l_create_module_table sql[%s] ret[%s]", sql, tostring(ret))
48
     return true
58
     return true
@@ -90,7 +100,7 @@ function root:init_db_tables()
90
         local data = obj:mysql_get_table_info()
100
         local data = obj:mysql_get_table_info()
91
         if data and not is_empty(data.mdlName) then
101
         if data and not is_empty(data.mdlName) then
92
             if not l_is_module_table_exist(data.mdlName) then
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
             else
104
             else
95
                 l_modify_module_table(data.mdlName, data.columnNameOptions)
105
                 l_modify_module_table(data.mdlName, data.columnNameOptions)
96
             end
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
         skynet.uniqueservice("dreamSrv")
29
         skynet.uniqueservice("dreamSrv")
30
         skynet.uniqueservice("battlerecordSrv")
30
         skynet.uniqueservice("battlerecordSrv")
31
         skynet.uniqueservice("rollSrv")
31
         skynet.uniqueservice("rollSrv")
32
+        skynet.uniqueservice("itemrecordSrv")
32
 
33
 
33
         -- 集群
34
         -- 集群
34
         init_nodes:init_cluster()
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)