--[[ Descripttion:基础模块类 version: Author: Neo,Huang Date: 2022-07-04 19:07:54 LastEditors: Neo,Huang LastEditTime: 2022-07-04 19:13:19 --]] local lib_game_redis = require("lib_game_redis") local lib_game_mysql = require("lib_game_mysql") local root = class("base") function root:ctor(uid, mdlName, keyName) self.uid = uid self.mdlName = mdlName self.keyName = keyName end -- 模块sql属性 function root:mysql_get_init_columns() return {} end -- 初始化模块表 function root:mysql_get_table_info() return { mdlName = self.mdlName, keyName = self.keyName, columnNameOptions = self:mysql_get_init_columns() } end -- 字段类型 - json function root:is_json(column) return string.match(string.upper(column), "JSON") end -- 字段类型 - int function root:is_number(column) return string.match(string.upper(column), "INT") end -- 字段值 function root:get_column_db_value(column) if is_empty(column) then return end local key = string.format("mdl:%s:%s", tostring(self.mdlName), tostring(self.uid)) local val = lib_game_redis:hget(key, column) if self:is_json(column) then val = string.format("'%s'", cjson_encode(val)) elseif self:is_number(column) then val = tonumber(val or 0) else val = string.format("'%s'", val) end return val end -- 备份模块数据 function root:backup_to_db() local options = self:mysql_get_init_columns() if is_empty(options) then return false end local colums = {} local values = {} for k, v in ipairs(options) do table.insert(colums, k) table.include(values, self:get_column_db_value(k)) end local tbName = string.format("mdl_%s", tostring(self.mdlName)) local sql = string.format("replace into %s (%s) value (%s);", tbName, table.concat(colums, ","), table.concat(values, ",")) lib_game_mysql:query(sql) end return root