Blame view

src/services/dbseed.lua 4.43 KB
314bc5df   zhengshouren   提交服务器初始代码
1
2
3
4
5
6
  require "shared.init"
  require "utils.init"
  require "GlobalVar"
  require "RedisKeys"
  require "ProtocolCode"
  require "skynet.manager"
314bc5df   zhengshouren   提交服务器初始代码
7
8
9
10
  
  skynet = require "skynet"
  
  redisproxy = require("shared.redisproxy")
0de80321   liuzujun   创建游戏数据库,role对应mys...
11
  mysqlproxy = require "shared.mysqlproxy"
314bc5df   zhengshouren   提交服务器初始代码
12
13
14
15
16
17
18
19
20
21
22
23
  
  SendPacket = function ( ... ) end
  
  local function initRedisDb( ... )
  	local servId = tonumber(skynet.getenv("servId"))
  	if servId then
  		redisproxy:hsetnx("autoincrement_set", "role", servId * MAX_ROLE_NUM)
  		redisproxy:hsetnx("autoincrement_set", "union", servId * MAX_ROLE_NUM)
  		redisproxy:hsetnx("autoincrement_set", "trade", servId * MAX_ROLE_NUM * 100)
  		redisproxy:hsetnx("autoincrement_set", "email", 0)
  		redisproxy:hsetnx("autoincrement_set", "emailTimestamp", 0)
  		redisproxy:hsetnx("autoincrement_set", "delay_email", 0)
1b20cfdb   zhouhaihai   赛季更新完善 无尽冒险排行榜
24
25
26
  		redisproxy:hsetnx("adv_season", "idx", 0)
  		redisproxy:hsetnx("adv_season", "chapter", globalCsv.adv_endless_default_chapter)
  		redisproxy:hsetnx("adv_season", "overTime", 0)
314bc5df   zhengshouren   提交服务器初始代码
27
28
29
  	end
  end
  
0de80321   liuzujun   创建游戏数据库,role对应mys...
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
  -- 初始化服务器数据库以及服务器信息表
  local function initServerDatabase()
  	local servId = skynet.getenv("servId")
  	mysqlproxy:query(string.format("CREATE DATABASE IF NOT EXISTS server_%s DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_general_ci;", servId))
  	mysqlproxy:query(string.format("use server_%s", servId))
  
  	-- 服务器信息表 开服时间
  	mysqlproxy:query [[
  		CREATE TABLE IF NOT EXISTS `server_info` (
  			`key` varchar(45) NOT NULL,
  			`int_value` int(11) DEFAULT NULL,
  			`str_value` varchar(128) DEFAULT NULL,
  			PRIMARY KEY (`key`)
  			) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
  	]]
  
  	local res = mysqlproxy:query("SELECT * FROM `server_info` where `key` = 'server_start';")
  	if not next(res) then
  		mysqlproxy:query(string.format("INSERT INTO `server_info`(`key`, `str_value`) VALUES('server_start', '%s');",
  			os.date("%Y%m%d", skynet.timex())))
  	end
  end
  
  local function initAutoIncreUidTable()
  	mysqlproxy:query [[
  		CREATE TABLE IF NOT EXISTS `auto_increment_uid` (
  			`key` varchar(45) NOT NULL,
  			`value` int(11) DEFAULT NULL,
  			PRIMARY KEY (`key`)
  			) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
  	]]
  	local servId = tonumber(skynet.getenv("servId"))
  	if servId then
  		local tpl = "INSERT INTO `auto_increment_uid`(`key`, `value`) values('%s', %d)"
  		mysqlproxy:query(string.format(tpl, "role", servId * MAX_ROLE_NUM))
  		mysqlproxy:query(string.format(tpl, "union", servId * MAX_ROLE_NUM))
  		mysqlproxy:query(string.format(tpl, "trade", servId * MAX_ROLE_NUM * 100))
  		mysqlproxy:query(string.format(tpl, "email", 0))
  		mysqlproxy:query(string.format(tpl, "emailTimestamp", 0))
  		mysqlproxy:query(string.format(tpl, "delay_email", 0))
  	end
  end
  
  local function initAdvSeasonTable()
  	mysqlproxy:query [[
  		CREATE TABLE IF NOT EXISTS `adv_season` (
  			`key` varchar(45) NOT NULL,
  			`value` int(11) DEFAULT NULL,
  			PRIMARY KEY (`key`)
  			) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
  	]]
  	local servId = tonumber(skynet.getenv("servId"))
  	if servId then
  		local tpl = "INSERT INTO `adv_season`(`key`, `value`) values('%s', %d)"
  
  		mysqlproxy:query(string.format(tpl, "idx", 0))
  		mysqlproxy:query(string.format(tpl, "chapter", globalCsv.adv_endless_default_chapter))
  		mysqlproxy:query(string.format(tpl, "overTime", 0))
  	end
  end
  
  local function checkRoleTables()
a12bfcce   liuzujun   添加英雄表
92
  	local list = {"Role", "Daily", "Activity", "Diner", "Store", "Hero", "RoleIncre", "Rune"}
fa992c94   liuzujun   添加daily,diner,act...
93
94
95
96
97
98
  	for _, name in ipairs(list) do
  		local obj = require("models."..name).new({key = "key"})
  		print("check table [" .. name .. "] begin.")
  		obj:checkTableSchema()
  		print("check table [" .. name .. "] end.")
  	end
0de80321   liuzujun   创建游戏数据库,role对应mys...
99
100
  end
  
314bc5df   zhengshouren   提交服务器初始代码
101
102
103
104
  local steps = {
  	[1] = {
  		handler = initRedisDb,
  		desc = "initialize redis database "
0de80321   liuzujun   创建游戏数据库,role对应mys...
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
  	},
  	[2] = {
  		handler = initServerDatabase,
  		desc = "initialize server database "
  	},
  	[3] = {
  		handler = initAutoIncreUidTable,
  		desc = "initialize auto_increment_uid table "
  	},
  	[4] = {
  		handler = initAdvSeasonTable,
  		desc = "initialize adv_season table "
  	},
  	[5] = {
  		handler = checkRoleTables,
  		desc = "check role tables "
314bc5df   zhengshouren   提交服务器初始代码
121
122
123
124
  	}
  }
  
  skynet.start(function ()
0de80321   liuzujun   创建游戏数据库,role对应mys...
125
126
127
128
129
130
  	--local new = redisproxy:hsetnx("autoincrement_set", "server_start", os.date("%Y%m%d", skynet.timex())) == 1
  	--if not new then
  	--	print("server has been initialized...")
  	--	skynet.exit()
  	--	return
  	--end
a5486ede   zhouhaihai   csvdata 修改为 share...
131
132
  	csvdb = require "shared.csvdata"
  	globalCsv = csvdb["GlobalDefineCsv"]
314bc5df   zhengshouren   提交服务器初始代码
133
134
135
136
137
138
139
140
  
  	for _, action in ipairs(steps) do
  		print(action.desc .. "start ...")
  		action.handler()
  		print(action.desc .. "finished ...")
  	end
  	skynet.exit()
  end)