36 lines
2.6 KiB
Plaintext
36 lines
2.6 KiB
Plaintext
---
|
||
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/` 与对应页面的使用处
|