Blame view

src/services/dbseed.lua 4.25 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   测试   创建游戏数据库,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   测试   创建游戏数据库,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
92
93
94
95
  -- 初始化服务器数据库以及服务器信息表
  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()
  		local role = require("models.Role").new({key = "key"})
  		role:checkTableSchema()
  end
  
314bc5df   zhengshouren   提交服务器初始代码
96
97
98
99
  local steps = {
  	[1] = {
  		handler = initRedisDb,
  		desc = "initialize redis database "
0de80321   测试   创建游戏数据库,role对应mys...
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
  	},
  	[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   提交服务器初始代码
116
117
118
119
  	}
  }
  
  skynet.start(function ()
314bc5df   zhengshouren   提交服务器初始代码
120
  	redisproxy = require("shared.redisproxy")
0de80321   测试   创建游戏数据库,role对应mys...
121
122
123
124
125
126
  	--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...
127
128
  	csvdb = require "shared.csvdata"
  	globalCsv = csvdb["GlobalDefineCsv"]
314bc5df   zhengshouren   提交服务器初始代码
129
130
131
132
133
134
135
136
  
  	for _, action in ipairs(steps) do
  		print(action.desc .. "start ...")
  		action.handler()
  		print(action.desc .. "finished ...")
  	end
  	skynet.exit()
  end)