service.xpcool.com/README.MD
夏犀麟 4b3c00270f
Some checks failed
Build and Deploy (service.xpcool.com) / build-and-deploy (push) Failing after 31s
feat(i18n): 中文化校验提示与服务层错误信息
将 api 层校验规则提示语、service 层 gerror.Wrap 与 response.Error
错误信息、panic 未注册提示统一改为中文,并同步中文化 cmd 路由注释
与变更记录。仅涉及注释、文档与字符串改动,无业务逻辑变更。
2026-09-13 23:22:46 +08:00

65 lines
2.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# service.xpcool.com 个人多客户端后端服务
GoFrame v2 单体应用 mini / h5 / app 多端提供后端服务并附带完整的后台管理体系
核心业务用户认证JWT看房数据小区/房源/成交/预售证招聘考试聚合
站内通知服务器安全日志后台管理RBAC 菜单权限 + 操作审计
> 面向 AI 助手的项目上下文见 [`AGENTS.md`](./AGENTS.md)每次变更的结构化记录见
> [`docs/change-log/`](./docs/change-log/)目录树见 [`PROJECT_STRUCTURE.md`](./PROJECT_STRUCTURE.md)
## 分层约定
调用链强制为 `api → internal/controller → internal/service → internal/dao → internal/model(entity/do)`
- `controller` 只做 API service 的适配**不碰 dao**
- 跨层出入参走 `internal/model/dto` `internal/model/vo`API 类型与 entity 不得越界
- 数据库操作必须用 DO 对象`internal/model/do`禁止 `g.Map`
- 错误一律用 `gerror`保留堆栈响应统一走 `internal/library/response`
## 路由分组
三组路由在 `internal/cmd/cmd.go` 中注册
| 前缀 | 用途 | 鉴权 |
|---|---|---|
| `/api/service/open` | 开放接口前端直接调用 | 公开无鉴权 |
| `/api/service/user` | 用户端接口 | 登录公开其余走 `UserAuth` |
| `/api/service/admin` | 管理端接口 | `AdminAuth` + 方法+路径自动匹配权限码 |
管理端权限由后端从 `admin_menu`type=2 `path` `"METHOD /路径"`反查
**前端无需传 `X-Permission`**未配置映射的接口一律拒绝
## 数据库模型生成
先在 MySQL 上执行 `manifest/sql/` 下的迁移脚本再设置 `DB_DSN`然后运行
```powershell
gf gen dao -p internal -g default -gt -c
```
该命令是 `internal/dao``internal/model/do``internal/model/entity` **唯一来源**生成物禁止手改
注意部分模块招聘通知自动任务服务器安全日志的表结构为**手写** entity/do/dao
未走 `gf gen`改动时请勿用生成命令覆盖
## 本地启动
环境变量按 `GF_GCFG_FILE` 切换配置文件`config.dev.yaml` / `config.test.yaml` / `config.prod.yaml`
- **终端**`source .env.dev && go run main.go`
`.env.dev` 不入库保存本地 DSN 与密钥
- **GoLand**运行配置 `.run/service-dev.run.xml`项目级重载项目后自动识别
已注入 `GF_GCFG_FILE` / `DB_DSN` / `JWT_SECRET`在运行下拉框中选择即可
该文件含数据库口令已加入 `.gitignore`
开发环境下 `${DB_DSN}` / `${RECRUITMENT_DB_DSN}` / `${JWT_SECRET}` 占位符未被环境变量注入
`injectEnv` 会回填本地默认值保证零配置可启动生产`GF_GCFG_ENV=prod`不兜底配置缺失显性报错
## 构建与测试
```powershell
go build ./...
go test ./...
```