# gm后端

## 项目介绍
- 为游戏提供GM指令、玩家信息查询和修改
- 为策划提供运营数据统计分析，数据报表
- 为游戏服务器提供数据库修改工具和一些后台相关的定时任务
- 和游戏版本保持跟进，保证GM指令和数据统计能够正常稳定使用


## 项目入口说明
- 后台主服务直接通过go run main.go启动即可，以下是相关的子服务
```
cmd
├── cron.go                 // 定时任务
├── generate.go                 // gen生成model和query代码
├── queue.go                       // 队列服务
├── jsonc.go                     // json转换工具
└── root.go                     
```

## 主要的定时任务
```
	go run cmd.go last 					// 执行上次的定时任务
	go run cmd.go cron redis 			// 执行redis历史key删除，并记录数据日志
	go run cmd.go cron downloadBackup 	// 执行下载备份数据到obs
	go run cmd.go cron order			// 同步订单列表
	go run cmd.go cron rolesCount 		// 统计各个角色等级
	go run cmd.go cron haveRoles        // 统计拥有角色数据
	go run cmd.go cron chapter			// 同步章节进度
	go run cmd.go cron email 			// 备份email.db
	go run cmd.go cron notice 			// 备份notices.json
	go run cmd.go cron changed		    // 统计玩家消费
	go run cmd.go cron still		    // 返还所有玩家装备材料
	go run cmd.go cron roleStill        // 转换角色结构体
	go run cmd.go cron channel		    // 同步渠道玩家
	go run cmd.go cron oldGuide		    // 更新老玩家新手引导屏蔽
	go run cmd.go cron filterInitDps	// 过滤战斗数据中的初始dps值
	go run cmd.go cron joinChannel		// 导入渠道ID
	go run cmd.go cron exchangePray		// 新年礼包祈福道具返还金币
	go run cmd.go cron logins		    // 过滤最近连续登录的玩家
	go run cmd.go cron convPvpKey		// 转换pvp玩家key  hash -> string.
	go run cmd.go cron repay38		    // 38活动补偿
	go run cmd.go cron maxTalents		// 最大天赋统计
	go run cmd.go cron levelOutput		// 同步等级产出
	go run cmd.go cron gameAlarm		// 游戏进程监控报警
	go run cmd.go cron suppleOrderAt	// 追加安卓订单创建时间
	go run cmd.go cron migrateZoneBonus	// 迁移地下城活动难度加成
```

### 项目结构说明
```
├─cmd           // 服务启动入口文件          
├─config                   // 配置初始化加载
├─internal                 // 项目核心业务
│  ├─admin                // 后台api相关
│  ├─cron // 定时任务
│  │  └─jobs
│  │      └─types
│  ├─elastic  // es的索引建立和一些常用dsl
│  │  ├─docs
│  │  └─eapi
│  ├─generate  // 生成的orm文件
│  ├─gorm
│  │  ├─model
│  │  └─query
│  ├─jsonc  // json转换工具
│  │  └─conv
│  └─queues // 队列
│      └─subscribes
├─logs // 日志
├─manifest // 一些本地化配置
│  ├─graveserver
│  └─locales
├─package  // 一些依赖包
│  ├─gmdata
│  ├─gmmodule
│  ├─graveserver
│  │  └─leafstalk
│  └─wxpay
├─resource  // 静态资源
│  └─public
│      ├─gadmin // 前端编译后文件路径
│      │  └─assets
│      ├─json
│      └─serverjson
├─storage
│  └─local
└─utility  // 一些常用的工具包
    ├─character
    ├─compress
    ├─player
    ├─serializer
    ├─snowflake
    └─token
```


## 项目部署步骤
1. 先将前端编译好，放到`server/resource/public/gadmin/`
2. go build -o gadmin main.go && go build -o console cmd.go
3. 将编译后的gadmin、console可执行文件，以及resource目录覆盖到需要部署的服务器对应目录即可

## 配置选项
1. 数据库: 主要是由后台(MYSQL_DSN)、登录(MYSQL_LOGIN_DSN)及游戏(MYSQL_GRAVE_DSN、MYSQL_GRAVE1_DSN..) 三个部分组成
2. Redis: 后台(LOG_REDIS_ADDR)一个及游戏服(REDIS_ADDR)有几个就配置几个
3. 部署脚本: 
   DEPLOY_SH_URL="https://gravedygate1.mg.xhgame.com/sh/"  脚本地址
   DEPLOY_ORIGIN_URL="https://gravedygate1.mg.xhgame.com/serverupgrade" 远程地址
   DEPLOY_NOTIFY_URL="http://120.53.242.156:7002/api/deploy/notify" 部署后通知地址
   DEPLOY_MODE="4" #抖音4 微信3 测试1 美团5
   DEPLOY_GRAVE_GATE="gate1,gate2,gate3" #gate1,gate2,gate3


