初始化
缺陷:主题配色需要优化整体的同风格
This commit is contained in:
@@ -19,6 +19,15 @@ alwaysApply: true
|
||||
4. 小程序端的抽屉全部需要用 page-container 来防止用户意外退出页面(本仓库为 API,此项约束 uniapp)
|
||||
5. 数据库的(created_at、updated_at、deleted_at)统一使用时间戳,不要使用字符串,并且我在查询器中一级格式化成字符串了,无需再次格式化
|
||||
|
||||
# 数据库变更(强制 SQL,禁止新建 PHP Migration)
|
||||
|
||||
- **禁止**为业务/系统表 DDL 新建 `database/migrations/*.php`(Laravel migrate 不作变更载体)
|
||||
- **一律**写到 `database/sql/<YYYY-MM-DD>/`,文件名:`01_简短英文名.sql`、`02_...`(当天序号递增)
|
||||
- 例:`database/sql/2026-08-14/01_cc_carousel_add_status.sql`
|
||||
- 脚本尽量幂等(`information_schema` + `PREPARE`,风格对齐已有 `rbac_migrate_ddl.sql`)
|
||||
- 系统表结构若影响全新安装,同步回写 `public/nl_admin.sql`;业务表 `cc_*` 只放 `database/sql/`,不进 `nl_admin.sql`
|
||||
- 运维在目标库手动执行对应日期目录下的 SQL;不要指望 `php artisan migrate` 补列/补表
|
||||
|
||||
# 全局架构规范
|
||||
|
||||
## 分层架构(Controller → Service → Model,禁止跨层)
|
||||
|
||||
40
.cursor/rules/lgp-pitfalls.mdc
Normal file
40
.cursor/rules/lgp-pitfalls.mdc
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
description: LGP 新后端开发约定与全项目群已知陷阱
|
||||
alwaysApply: true
|
||||
---
|
||||
|
||||
# 开发约定与已知陷阱
|
||||
|
||||
## 新后端 lgp-admin-plus-api
|
||||
|
||||
- 路由由 `UtilsService::autoRouteRegister()` **反射注册**,继承自 `BaseController` 的方法也会被注册成路由。不需要暴露的继承方法必须用 `@Method NO` 覆盖,否则每个控制器白送一套 `create/update/delete`
|
||||
- 方法名 camelCase 会转成 kebab-case 路径:`myInfo` → `my-info`
|
||||
- 缺 `@Method` 注解会注册成 `ANY`,务必显式写 `@Method GET` 或 `@Method POST`
|
||||
- 响应统一走 `jok` / `jerr`,结构固定 `{code, message, result}`,成功 `code=0`。前端拦截器按 `result` 取数据,**不要用 `data`**
|
||||
- 业务表 Model 覆盖 `$connection = 'business'`;系统表沿用默认 `mysql`
|
||||
- 免鉴权 Service 继承 `BaseNotAuthService`,不要像老项目那样硬编码路径白名单
|
||||
- 鉴权真正发生在 `BaseService::__construct`,绕过 BaseService 的方法就没有鉴权。新代码一律走 BaseService
|
||||
- `nl_menu` 的 `keep_alive` 与 `affix_tab` 输出到 meta 时是**取反**的,插数据别弄反
|
||||
- 第三方凭据用 `FieldEncryptService` 加密入库,不回显明文
|
||||
- **库表变更禁止新建 PHP Migration**:写 `database/sql/<YYYY-MM-DD>/01_名字.sql`(当天序号递增、尽量幂等);系统表同步 `public/nl_admin.sql`,业务表 `cc_*` 只放 sql 目录
|
||||
|
||||
## 老项目只读
|
||||
|
||||
`lgp-api` / `lgp-wx-api` / `lgp-vben` / `lgp-vben-new` 处于迁移期,除安全修复外不要改动。
|
||||
查业务逻辑可以读,新功能一律写在 `lgp-admin-plus-api` + `lgp-admin-plus`。
|
||||
|
||||
## 已知陷阱
|
||||
|
||||
- 老 `lgp-wx-api` 把微信 `session_key` 当 token 直接返回客户端,且 `AuthMiddleware` 先执行控制器再检查 token、只判空不验签。归并时必须改成服务端自签 token
|
||||
- 老 `lgp-api` 密码是**无盐 sha1**,新后端是 bcrypt,靠 `nl_admin.legacy_password` 惰性升级,遗留列有过期时间
|
||||
- 老 `cc_role.id=1` 不是超管,而新 `nl_role.id=1` 是超管且代码硬判断全量放行。角色迁移必须做 ID 偏移
|
||||
- 老前端 10 个模块的批量删除在静默 404(后端只有 `template` 注册了 `delete-batch`)
|
||||
- `cc_price_sheet` 的 6 个材质列是死 schema,`create()` 从不赋值、前端已注释,实际只有 `routine` 在用
|
||||
- 图片水印不是后端接口,是前端拼 OSS URL 参数 `?watermark/2/text/...`
|
||||
- 小程序 `baseURL` 硬编码在 `api/interceptor.js` 且靠注释切换,极易把测试地址发上线
|
||||
- 小程序无分包配置,uview-plus 全量进主包
|
||||
|
||||
## 安全红线
|
||||
|
||||
不要把任何密钥写进源码。老项目里七牛 AK/SK(`UploadService.php`)、微信 AppSecret(`WeChatService.php`)明文硬编码,
|
||||
`.env.example` 里还提交了真实数据库密码——这些是待清理的历史欠账,不要照抄这个做法。
|
||||
46
.cursor/rules/lgp-project-map.mdc
Normal file
46
.cursor/rules/lgp-project-map.mdc
Normal file
@@ -0,0 +1,46 @@
|
||||
---
|
||||
description: LGP 项目群架构、各仓库角色与双品牌对应关系
|
||||
alwaysApply: true
|
||||
---
|
||||
|
||||
# LGP 项目地图
|
||||
|
||||
两个家具品牌共用一套代码,正从老架构迁往新架构。
|
||||
|
||||
## 新架构(开发主战场)
|
||||
|
||||
- `lgp-admin-plus` — 后台前端,vben **5.7.0** monorepo,主应用 `apps/web-antd`,上游是自研 `nl-admin-view`
|
||||
- `lgp-admin-plus-api` — 后端,**Laravel 13**,位于 `sites/lgp-api/index/lgp-admin-plus-api`
|
||||
|
||||
## 老架构(迁移期只读,迁完归档)
|
||||
|
||||
- `lgp-vben` — 老后台前端,vben 2.11.5
|
||||
- `lgp-api` — 老后台后端,Laravel 10
|
||||
- `lgp-wx-api` — 老小程序后端,Laravel 12,本期归并进新后端的 `wx` 路由组
|
||||
- `lgp-vben-new` — **已弃用**,与 `lgp-vben` 同源克隆,不要在里面做任何改动
|
||||
|
||||
## 小程序(uni-app + Vue3 + uview-plus)
|
||||
|
||||
- `lgp-wx` — 佛山铂尔曼,AppID `wx679d36842570cea7`,API `brm.wx.api.borman.top`
|
||||
- `lgp-wx-new` — 维伦家具,AppID `wx57b54060a579c31a`,API `wx.api.borman.top`
|
||||
|
||||
两者页面与业务代码基本一致,差异只有 AppID、`baseURL` 与首页视觉。改一边通常要同步另一边。
|
||||
|
||||
## 双品牌
|
||||
|
||||
同一套后台代码部署两份,靠构建模式区分:`build:brm`(佛山铂尔曼)/ `build:wl`(维伦家具)。
|
||||
两个品牌共用一套代码与数据库,任何业务改动会同时影响两家客户,上线前按品牌分别回归。
|
||||
|
||||
## 数据库
|
||||
|
||||
同一个库、两个连接(`config/database.php`):
|
||||
|
||||
- `mysql`,前缀 `nl_` — 脚手架系统表(admin / role / menu / oss_config / file / api_endpoint 等)
|
||||
- `business`,前缀 `cc_` — 业务表(catalogue / category / image / price_sheet / list / wx_user / enterprise 等)
|
||||
|
||||
业务数据零迁移,只迁账号与角色。业务 Model 必须覆盖 `protected $connection = 'business'`。
|
||||
|
||||
## 迁移范围
|
||||
|
||||
老后端注册 171 条路由但前端只调用 **79** 条;老小程序后端注册 35 条但小程序只调用 **14** 条。
|
||||
迁移目标是这 93 条,其余是反射自动注册出来的死路由,不要跟着迁。
|
||||
Reference in New Issue
Block a user