README.md 2.43 KB
Newer Older
chenweijian's avatar
chenweijian committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 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
# 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