2026-06-30 10:52:52 +08:00
..
2026-06-30 10:47:21 +08:00
2026-06-15 23:53:30 +08:00
2026-06-24 19:49:01 +08:00
2026-06-30 10:52:52 +08:00
2026-06-28 23:24:57 +08:00
2026-05-02 13:02:38 +08:00
2026-06-16 17:00:06 +08:00
2026-05-16 08:12:42 +08:00
2026-06-25 17:00:11 +08:00
2026-06-25 17:00:11 +08:00
2026-06-16 17:00:06 +08:00

hyapp-admin-server

HYApp 管理后台 API基于 Gin、GORM 和 MySQL。

当前后台后端位于 hyapp-server/server/admin,是 hyapp-server/go.work 内的独立 Go module。它只依赖 hyapp.local/api 这个 protobuf 契约 module不直接依赖 app 后端服务实现包。

Local Run

go mod tidy
go run ./cmd/server -config configs/config.yaml

hyapp-server 根目录可以用 Makefile 启动:

make admin-up

依赖已经启动时,可以只启动后台进程:

make admin

默认端口:13100。本地 MySQL 对齐 app 后端,使用 127.0.0.1:23306mysql_dsn 指向后台库 hyapp_adminuser_mysql_dsn 只读访问用户库 hyapp_user。本地 bootstrap 由 configs/config.yamlbootstrap 控制,首次启动如果没有用户,会创建配置里的管理员账号。

依赖:

  • MySQL127.0.0.1:23306
  • Redis127.0.0.1:13379
  • user-service127.0.0.1:13005

显式执行 bootstrap

go run ./cmd/server -config configs/config.yaml -bootstrap

Structure

后台后端按模块化单体组织。业务代码按模块收口,每个模块内按功能拆文件:

  • internal/modules/<module>/routes.go:模块路由。
  • internal/modules/<module>/handler.goHTTP 参数和响应适配,不直接访问 repository。
  • internal/modules/<module>/service.go:模块业务 Service。
  • internal/modules/<module>/request.go:模块请求结构。
  • internal/modules/<module>/response.go:模块响应 DTO 或展示转换。
  • internal/modules/shared:跨模块的当前用户、分页参数、审计事件和少量通用 DTO。
  • internal/service:只保留 JWT/AuthService 这类跨模块基础能力。
  • internal/platform:后台服务自有基础设施适配,避免 import app 后端 pkg
  • internal/response:通用响应协议,按 body、codes、page、success、error 拆分。
  • internal/repository/*:后台库读写,按 auth、rbac、menu、audit、job 等拆分。
  • internal/integration/*:访问 app 后端服务的 client。
  • internal/migration:版本化 SQL migration。
  • internal/cacheRedis 健康检查和分布式锁。
  • internal/jobDB 租约、Redis 锁、重试和导出产物任务执行器。
  • internal/security:密码和 token 安全工具。

关键运行策略:

  • environmentjwt_secretmysql_auto_migratebootstrap 都只来自 config.yaml
  • local/dev 环境禁止默认 JWT secret、默认 bootstrap 密码和 mysql_auto_migrate
  • 数据权限通过角色的 data-scopes 保存,并在后台用户列表/导出查询中执行。
  • 任务产物默认写入 storage/exports,通过 /api/v1/jobs/:id/artifact 下载。

Full Server Notice

菜单入口:运营管理 / 全服通知,菜单 code 为 operation-full-server-notice,页面路径为 /operations/full-server-notices

接口:

POST /api/v1/admin/operations/full-server-notices/fanout

参数只传后台需要的命令字段:message_typesystemactivitytarget_scope 支持 all_active_userssingle_useruser_idsregioncountry,内容字段为 titlesummarybody,跳转字段为 action_typeaction_param,扩展字段为 metadata_jsoncommand_id 是幂等键,不传时由 admin-server 按管理员和当前时间生成。

返回值包含 job_idstatuscreatedcommand_idmessage_typetarget_scope。接口只创建 activity-service 的 message_fanout_jobs,实际逐用户写入由 message fanout worker 分批完成。

权限:

  • 查看菜单:full-server-notice:view
  • 发送通知:full-server-notice:send

相关 IMFlutter 消息页的系统/活动标签读取后端 inbox当前客户端只展示标题、摘要/正文和时间。腾讯云 IM 单聊和房间群消息不走这个后台入口。

Verify

go test ./...