Files
code-bang/.cursor/rules/project-overview.mdc
T
2026-10-14 18:00:26 +08:00

36 lines
2.6 KiB
Plaintext
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.
---
description: 代码邦项目总览、目录边界与前后端接口契约(全局生效)
alwaysApply: true
---
# 代码邦(code-bang)项目总览
软件商城 + 定制开发撮合平台。后端 `backend/`:FastAdmin(ThinkPHP 5.x,PHP >= 7.4,MySQL,表前缀 `fa_`);前端 `frontend/miniapp/`:微信原生小程序 + TDesign(基于零售模板二次开发)。
## 目录边界
- 业务代码只写在:`backend/application/{api,admin,common}`、`backend/public/assets/js/backend`、`frontend/miniapp/{pages,components,services,config,utils,custom-tab-bar}`
- 禁止修改:`backend/vendor`、`backend/thinkphp`、`backend/addons/*`(第三方插件)、`frontend/miniapp/node_modules`、`miniprogram_npm`
- FastAdmin 框架基类(`common/controller/*`、`admin/library/traits/Backend.php`、`common/library/*`)非必要不改,需要定制时在子类覆盖
- 零售模板遗留的 mock(`model/`、`config.useMock`)不再扩展,新功能直接对接真实接口
## 接口契约(前后端必须一致)
- 地址:`{ApiRoot}/api/{controller}/{action}`,前端统一登记在 `frontend/miniapp/config/api.js`
- 鉴权:请求头 `token`(来自 `wx.getStorageSync('token')`),由 `auth/wxLogin` 签发
- 响应:`{ code, msg, time, data }`,`code === 1` 成功,`code === 0` 失败,`msg` 为可直接展示给用户的中文提示
- 分页:后端 `paginate()` 返回 `{ total, per_page, current_page, last_page, data }`,前端用 `current_page < last_page` 判断是否还有更多;请求参数 `page`、`pageSize`
- 字段命名:新接口统一 `snake_case`(与数据库一致);仅对接 TDesign 模板页面(商品/订单/购物车)时才用 `convert_keys_to_camelcase()` 转驼峰
- 状态驱动的按钮由后端下发 `button: { key, name, theme }`,前端只按 `key` 判断动作,不按中文文案判断
- 金额:数据库 `decimal(10,2)`,单位为元;价格、应付金额一律以服务端查库计算为准,不信任前端传入的价格
## 业务术语
需求 demand(招标 → 签约 → 工作 → 验收 → 收货 → 完成)、投标 bidding、合同 contract、开发者 developer、账户 account(余额/冻结/积分/信誉分)、激活码 soft code、设备 soft device(每码最多绑定 2 台)、订阅消息 subscribe message。
## 通用约定
- 注释、提示文案、提交说明使用中文;标识符使用英文
- 不提交密钥:AppSecret、商户密钥、OSS AccessKey 等只放 `backend/.env` 或后台配置(`config('site.xxx')`)
- 改动接口字段时,同步检查前端 `services/` 与对应页面的使用处