# hilo游戏中心 + 接入SudMGP # 项目架构 + .env 项目环境配置,正服/测服会用服务器上的配置覆盖 + run.sh 守护脚本 + Makefile 构建文件 + main.go 入口文件 + *.ini 配置文件,测服用debug.ini,正服用release.ini + 目录分层说明(`着重注意命名规则`,下划线_分割职责) + test: 单元测试目录 + _const: 常量 + 子目录 enum,放业务定义常量 + 命名规则 `*_e`,如game_e + 子目录 redis_key,放redis的key + 命名规则 `*_k`,如game_k + cron: 定时任务 + 统一入口cron.go + 子目录命名规则 `*_cron`,如game_cron + mycontext: 上下文 + myerr: 错误码 + 子目录 bizerr,放业务错误 + mylogrus: 日志包 + req: 请求参数 + request.go: 定义一些常用方法 + 子目录jwt: 鉴权相关 + 子目录 + 命名规则 `*_req`,如game_req + resp: 返回结构体,通用结构体 + cv: 客户端需要结构体 + 子目录 + 命名规则 `*_cv`,如game_cv + route: 路由定义 + 根目录 + errorHandler.go 错误处理 + middleHandle.go 中间件 + router.go 路由定义 + util.go 工具包 + 子目录,业务路由定义 + 命名规则 `*_r`,如game_r + resource: 资源层 + config: 配置相关 + consul: 注册中心 + mysql: 数据库 + redisCli: 缓存 + domain: 领域层 + ctx.go: 定义ctxAndDb + model.go: 通用model + event.go: 抽象定义event + cache: 缓存层 + moduleRedis.go 带有model的通用redis方法 + 子目录 + 命名规则 `*_c`,如user_c + event: 事件层 + base.go: 定义事件base + 子目录 + 命名规则 `*_ev`,如game_ev + model: 模型层 + repo.go 持久化 + 子目录 + 命名规则 `*_m`,如game_m/user_m + service: 服务层,主要是开启事务和发事件 + service.go: 事务/事件封装 + 子目录 + 命名规则 `*_s`,如game_s # 交互流程 1. 给App一个登录获取code的接口 2. 给GameServer获取sstoken的接口 1. get_sstoken 2. update_sstoken 3. get_userinfo 3. 给GameServer同步游戏状态接口 1. report_game_info