训练营系统,单 git 仓库(远程 origin = http://git.iwintrue.com/liaoxg/train.git,分支 master),三个子项目:
train-backend/ — Spring Boot 2.7.18 / Java 8 / MyBatis-Plus 3.5.3.1,端口 9083,JWTtrain-frontend/ — uni-app Vue2 小程序(学员端)train-web/ — Vue2 + Element UI 管理后台(vue-cli 5)zxyj(192.168.16.251:3306,账号 zxyj,密码 zxyj@123,可用 TRAIN_DB_URL/USERNAME/PASSWORD 环境变量覆盖)。train_* 运营表与 cfc 表(users、activities、user_platform_balance、tianpan_member_annual_energy…)建在同一 schema。cfc-prod-jwt-secret-2026-keep-it-safe!),营员 token 与 cfc 体系互通。不要改回独立密钥。com.train.cfc 包是跨库实体的"方言":CfcUser/CfcActivity + mapper 映射 cfc 的 users/activities 表。改字段必须与 cfc 侧表结构对齐(cfc 参考在 E:\cfc)。E:\cfc 是只读参考(cfc-backend 端口 9082,同库 zxyj)。绝不修改该目录任何文件。application.yml),跳过真实微信 API,openid 为 test_<code>。mvn clean compile(在 train-backend/ 下)。测试被 surefire skipTests=true 跳过;mvn clean compile 成功即当前唯一可靠的验收门槛。npm run dev:h5 / build:h5(train-frontend H5 端);npm run dev / build(train-web)。train-frontend/ → 运行到微信开发者工具,产物在 unpackage/dist/dev/mp-weixin/。npm run build:mp-weixin 的 dist/ 产物不完整,勿依赖。改代码后必须在 HBuilderX 重新打包,否则白板。DatabaseInitializer 启动时执行 schema.sql,逐条容错(失败仅 warn)。建表语句幂等;存量库补列的 ALTER TABLE ADD COLUMN 重复执行会报错但被吞掉,属预期。@PostMapping,禁止 @GetMapping/@PutMapping/@DeleteMapping。@Resource 不用 @Autowired,字段名 = 类名首字母小写(匹配默认 Bean Name)。Result<T>(com.train.common.Result,code/message/data)。as any、@ts-ignore 不应出现。ensureColumn() 辅助方法;每次迁移后同步更新 schema.sql 的 CREATE TABLE 完整定义。int/Long),单位分(对齐 cfc 的 price/memberPrice/totalConsumption 等字段)。禁止用 double/float 存金额。后端金额以"分"为单位的整数返回,前端显示时除以 100 转成"元"再展示,禁止把后端 int 值原样渲染成金额:
// 分 → 元(保留两位小数)
function fenToYuan(fen) {
return (fen / 100).toFixed(2)
}
2026-08-15T14:30:00)。yyyy-MM-dd HH:mm:ss(截前 19 位 + T 替换空格)。yyyy-MM-dd(截前 10 位)。new Date(str).toLocaleString() / toLocaleTimeString()(iOS/浏览器输出不一致)。小程序侧用 utils/format.js 的 parseDate() 解析。?.(用 && 替代)。:key 带运算符表达式(如 :key="item.id || item.circleId",改用方法调用 :key="getItemKey(item)")。:class 绑定中调用方法。new Date(string)(iOS 部分格式解析失败,用 parseDate())。git diff/终端输出的中文会显示为乱码——是假乱码。判断文件编码/JSON 合法性用 Node 或 read/grep 工具,不要信 PowerShell 的显示。git status/git diff 确认改动范围,只 stage 意图内的文件;.gitignore 已排除 node_modules/dist/unpackage/target 等。git diff --cached --stat 检查 staged 内容是否仅含目标文件;git checkout -- file 会丢弃 staged 改动,慎用。Phase1: ...),一次提交一个逻辑单元。TrainUser 等既有实体/控制器保持兼容,不推翻重写)。