shizhongqi 1 săptămână în urmă
părinte
comite
429ab7b428
39 a modificat fișierele cu 2526 adăugiri și 609 ștergeri
  1. 0 0
      2026-06-09.md
  2. 41 0
      AI/Codex/skill 创建与使用.md
  3. 154 0
      AI/Codex/skill 概念与运用.md
  4. 10 0
      AI/Codex/skill.md
  5. 22 0
      AI/Codex/任务 Prompt 模板.md
  6. 111 0
      AI/Git/Codex 自动分析改动及提交Commit.md
  7. BIN
      attachments/Pasted image 20260701170821.png
  8. 2 2
      server/rabbitmq/header x-delay 与 TTL+DLX 的区别.md
  9. 2 2
      server/帐号数据.md
  10. 1 1
      server/文档/给控制器方法添加表单验证.md
  11. 6 0
      任务小笔记/26年/05-26:hdApp 客户生日赠礼管理/birthday_gift.md
  12. 61 0
      任务小笔记/26年/06-01:拉卡拉进件/ghsApp 拉卡拉进件与收款账户管理.md
  13. 10 0
      任务小笔记/26年/06-01:拉卡拉进件/上线注意事项.md
  14. 63 3
      任务小笔记/26年/06-01:拉卡拉进件/功能需求.md
  15. 4 0
      任务小笔记/26年/06-01:拉卡拉进件/官方技术客服给的文档.md
  16. 348 0
      任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/1.1商户进件/EC015合同参数说明.md
  17. 3 7
      任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/1.1商户进件/OCR结果查询.md
  18. 61 61
      任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/1.1商户进件/新增商户进件.md
  19. 0 4
      任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/1.1商户进件/查看当前商户是否需要照片补充.md
  20. 135 0
      任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/1.1商户进件/电子合同接口.md
  21. 69 0
      任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/1.1商户进件/电子合同查询.md
  22. 15 14
      任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/1.3商户信息变更/增终进件.md
  23. 20 20
      任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/1.3商户信息查询/支付宝微信认证状态查询.md
  24. 10 10
      任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/1.3商户信息查询/获取商户信息.md
  25. 58 58
      任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/附录/业务类型表.md
  26. 15 15
      任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/附录/费率代码表.md
  27. 8 0
      任务小笔记/26年/06-01:拉卡拉进件/未完成工作项.md
  28. 29 0
      任务小笔记/26年/07-01:生日变更与优化/SQL.md
  29. 140 0
      任务小笔记/26年/07-01:生日变更与优化/状态回执.md
  30. 188 0
      任务小笔记/26年/07-01:生日变更与优化/短信发送.md
  31. 48 0
      任务小笔记/26年/07-13:花掌柜与花卉宝改版/1-hdApp 商品管理合并页.md
  32. 150 0
      任务小笔记/26年/07-13:花掌柜与花卉宝改版/2-门店首页配置页面(hdApp).md
  33. 132 0
      任务小笔记/26年/07-13:花掌柜与花卉宝改版/3-店铺首页预览 + mallApp 商城首页 实现计划.md
  34. 176 0
      任务小笔记/26年/07-13:花掌柜与花卉宝改版/4-首页模块商品展示数量与更多页.md
  35. 171 0
      任务小笔记/26年/07-13:花掌柜与花卉宝改版/5-购物车与结算优化.md
  36. 92 0
      任务小笔记/26年/07-13:花掌柜与花卉宝改版/实现后变动修改/hdApp首页商品区自动排列-1.md
  37. 117 0
      任务小笔记/26年/07-13:花掌柜与花卉宝改版/实现后变动修改/hdApp首页商品区自动排列-2.md
  38. 54 0
      任务小笔记/26年/07-13:花掌柜与花卉宝改版/问题.md
  39. 0 412
      获取银行地区信息.md

+ 0 - 0
2026-06-09.md


+ 41 - 0
AI/Codex/skill 创建与使用.md

@@ -0,0 +1,41 @@
+2026 年 6 月的重点更新包括:Record & Replay 可把演示过的工作流转成可复用 Skill
+
+
+### skill 触发
+后面有两种触发方式:
+
+1. **显式触发,最稳**
+   
+   直接在需求里写:
+
+   ```text
+   使用 $yii2-api-form-validation 为 XxxController 添加表单验证
+   ```
+
+   或:
+
+   ```text
+   Use $yii2-api-form-validation to refactor XxxController request validation.
+   ```
+
+2. **隐式触发**
+   
+   你描述类似需求时,Codex 可能会自动匹配,例如:
+
+   ```text
+   请为 app-ghs/controllers/OrderController.php 的 actionXxx 添加表单验证类
+   ```
+
+   ```text
+   把这个 Yii2 控制器里直接读取 Yii::$app->request 的参数改成 Form 验证
+   ```
+
+建议你在重要任务里显式写 `$yii2-api-form-validation`,这样最可靠。
+
+这个 Skill 已放在:
+
+```text
+/Users/shishao/.codex/skills/yii2-api-form-validation
+```
+
+一般不需要手动加载。新对话或后续任务中,只要 Codex 能发现本地 skills,提到 `$yii2-api-form-validation` 就会触发。

+ 154 - 0
AI/Codex/skill 概念与运用.md

@@ -0,0 +1,154 @@
+## 什么是 Skill?
+
+Skill 是 **Code X 的"外挂插件"** —— 一组封装好的工具、API 调用逻辑或工作流,让 Code X 能调用外部数据、执行特定任务。你可以把它理解为给 Code X 增加新能力的"技能卡片"。
+
+---
+
+## 什么时候需要创建 Skill?
+
+| 场景 | 示例 |
+|------|------|
+| **需要调用外部 API** | 查天气、查股票、发邮件、调用数据库 |
+| **需要复用复杂逻辑** | 每次都要写的数据处理流程、报告生成模板 |
+| **需要访问特定数据源** | 公司内部的接口、第三方服务(如天眼查、IMF、arXiv) |
+| **团队协作需要标准化** | 统一的数据获取方式,避免每个人重复写代码 |
+
+> 💡 简单来说:**如果你发现自己在不同任务中重复写相同的 API 调用代码,就该做成 Skill。**
+
+---
+
+## Skill 是怎么创建的?
+
+### 1. 找到 Skill 目录
+
+所有 Skill 文件都存放在:
+```
+/app/.agents/skills/
+```
+
+你可以在这个目录下创建新的 Skill 文件夹。
+
+### 2. Skill 的文件结构
+
+一个标准的 Skill 包含以下文件:
+
+```
+/app/.agents/skills/你的skill名称/
+├── SKILL.md          ← 核心!Skill 的说明书(必须)
+├── tool.py           ← 可选,自定义工具逻辑
+├── config.json       ← 可选,配置参数
+└── examples/         ← 可选,使用示例
+```
+
+### 3. 最关键的文件:SKILL.md
+
+这是 Skill 的"灵魂",Code X 通过阅读这个文件来学会怎么使用这个 Skill。
+
+**SKILL.md 的标准格式:**
+
+```markdown
+# Skill 名称
+
+## 功能描述
+这个 Skill 能做什么,解决什么问题。
+
+## 使用场景
+- 场景1:...
+- 场景2:...
+
+## 调用方式
+详细说明如何调用,包括:
+- 需要的参数
+- 参数类型和格式
+- 返回值格式
+
+## 示例
+给出具体的使用示例
+
+## 注意事项
+- 限制条件
+- 常见错误
+```
+
+---
+
+## 实际示例:创建一个"查天气"Skill
+
+### 步骤 1:创建目录和文件
+
+```bash
+mkdir -p /app/.agents/skills/weather_query
+```
+
+### 步骤 2:编写 SKILL.md
+
+```markdown
+# Weather Query Skill
+
+## 功能描述
+查询指定城市的实时天气信息。
+
+## 使用场景
+- 用户询问某城市天气时
+- 需要根据天气做决策时(如出行建议)
+
+## 调用方式
+
+### 工具
+使用 `web_search` 工具查询天气。
+
+### 参数
+- `city` (string, 必填): 城市名称,如"北京"、"上海"
+- `date` (string, 可选): 日期,格式"2026-07-01",默认当天
+
+### 调用示例
+```
+工具:web_search
+参数:{"queries": ["北京天气 2026年7月1日"]}
+```
+
+## 返回值处理
+从搜索结果中提取:
+- 温度
+- 天气状况(晴/雨/多云等)
+- 空气质量(如有)
+
+## 示例对话
+
+用户:北京今天天气怎么样?
+→ 调用 web_search 查询"北京天气"
+→ 整理结果回复用户
+
+## 注意事项
+- 如果查询不到具体天气,告知用户数据可能不准确
+- 天气信息具有时效性,建议标注数据来源时间
+```
+
+---
+
+## 创建 Skill 的最佳实践
+
+| ✅ 好的做法 | ❌ 避免的做法 |
+|-----------|-------------|
+| 描述清晰,让 Code X 一看就懂 | 写得含糊,Code X 不知道何时调用 |
+| 提供具体的调用示例 | 只有抽象描述,没有例子 |
+| 说明参数格式和必填项 | 参数说明缺失 |
+| 说明错误处理方式 | 不考虑异常情况 |
+| 保持简洁,聚焦核心功能 | 一个 Skill 做太多不相关的事 |
+
+---
+
+## 快速检查清单
+
+创建 Skill 前问自己:
+
+1. [ ] 这个功能是否会被**多次使用**?
+2. [ ] 逻辑是否**足够复杂**,值得封装?
+3. [ ] 是否涉及**外部 API 或数据源**?
+4. [ ] 是否能让**团队协作更高效**?
+
+如果以上有 1-2 个为"是",就值得做成 Skill。
+
+---
+
+如果你想,我可以帮你**实际创建一个具体的 Skill**(比如调用某个 API、处理某种数据),你告诉我需求,我带你一步步写!

+ 10 - 0
AI/Codex/skill.md

@@ -0,0 +1,10 @@
+- 默认的 `~/.codex/skills`
+- 
+  
+  
+已创建并安装 skill:`review-and-commit`。
+使用方式:
+```
+使用 $review-and-commit 分析当前改动并提交 Commit
+```
+包含完整差异审查、未跟踪文件检查、验证、Conventional Commit、API/数据库/Breaking Changes 说明及提交后确认。

+ 22 - 0
AI/Codex/任务 Prompt 模板.md

@@ -0,0 +1,22 @@
+高级程序员给 Codex 的任务最好像 issue + test plan:
+
+```
+Goal:
+实现/修复什么,用户可见行为是什么。
+
+Context:
+相关路径:@src/foo.ts @tests/foo.test.ts
+现象:...
+约束:不要改 public API / 不引入新依赖 / 保持 backward compatibility。
+
+Approach:
+先读相关代码,给出最小修改计划。实现前指出风险点。
+
+Done when:
+- 新增/更新测试覆盖该行为
+- npm test / npm run lint 通过
+- 解释修改点和未覆盖风险
+- 
+```
+
+官方最佳实践建议 prompt 至少包含 Goal、Context、Constraints、Done when,并强调可验证性会提高结果质量。([developers.openai.com](https://developers.openai.com/codex/learn/best-practices))

+ 111 - 0
AI/Git/Codex 自动分析改动及提交Commit.md

@@ -0,0 +1,111 @@
+### 我自己在 Codex 中常用的一套 Prompt(推荐)
+
+ #### Git 提交规范
+每当你创建 git 提交时:
+- 提交前务必检查完整的代码差异(git diff)。
+- 使用约定式提交(Conventional Commits)规范编写一句话简明主旨。
+- 留出一行空行。
+- 以列表形式概括关键的代码变动。
+- 着重阐述目的和意图,而不是单纯地罗列文件名。
+- 注明任何破坏性变更(Breaking Changes)。
+- 如果涉及,注明数据库/表结构/API 接口的变更。
+- 绝不使用模糊笼统的提交信息,例如 "update"、"fix"、"modify" 或 "changes"。
+- 提交信息应当能让人无需打开代码差异,就能直接理解本次提交的目的。
+    
+#### 示例:
+feat(user): 添加邮箱验证功能
+- 添加验证令牌(token)的生成逻辑
+- 用户注册后发送验证邮件
+- 添加邮箱验证接口
+- 在未验证状态下禁止登录
+- 更新用户状态的处理方式
+
+
+
+----
+
+基于修改内容生成提交信息,在提交(commit)之前:
+1. 运行 `git diff`
+2. 审查完整的代码差异(diff)
+3. 概括关键变更
+4. 生成一个能反映实际代码变动的提交信息(commit message)
+
+### Git 提交规范
+在进行 git 提交时:
+* **务必**编写有意义的提交信息。
+* 第一行应为简明扼要的摘要(最多 72 个字符)。
+* 空出一行后,详细说明:
+	* 变更了什么
+	* 变更的原因
+	* 任何重要的实现细节
+* 如果相关,注明受影响的模块或文件。
+* 使用祈使句。
+
+### 示例:
+feat(order): 支持部分退款
+* 添加部分退款工作流
+* 更新支付回调逻辑
+* 添加退款状态校验
+* 修改 OrderService 和 RefundService
+* 为 refund_records 添加数据库迁移
+
+### 推荐采用 Conventional Commits
+例如:
+feat(auth): 支持 GitHub OAuth 登录
+- 添加 OAuth 回调接口
+- 存储 GitHub 用户 ID
+- 支持账号绑定
+- 更新登录界面
+  
+或者:
+
+fix(payment): 防止重复回调处理
+- 引入 Redis 分布式锁
+- 忽略重复的支付通知
+- 完善回调日志记录
+
+
+----
+### 如果希望每个 commit 都像 PR 一样详细
+
+可以要求:
+```
+每个 git 提交必须包含:
+
+<type>(<scope>): <summary>
+
+Why:
+- 为什么需要此变更(变更原因)。  
+
+Changes:
+- ...
+- ...
+- ...
+
+Impact:
+- ...
+- ...
+  
+Testing:
+- ...
+ 
+
+例如:
+feat(order): 支持延迟发货
+
+Why:
+- 商家需要提前安排发货计划。
+  
+Changes:
+- 添加 shipment_time(发货时间)字段。
+- 更新订单创建接口。
+- 添加延迟发货定时任务。  
+
+Impact:
+- 订单模块
+- 调度器
+
+Testing:
+- 单元测试
+- 手动接口验证
+```

BIN
attachments/Pasted image 20260701170821.png


+ 2 - 2
server/rabbitmq/header x-delay 与 TTL+DLX 的区别.md

@@ -194,8 +194,8 @@ rabbitmq-plugins enable rabbitmq_delayed_message_exchange
 * 对时间**精度敏感**
 * 订单系统:
 
-  * 30分钟未支付取消
-  * 自动确认收货
+* 30分钟未支付取消
+* 自动确认收货
 * 定时任务替代
 
 👉 一句话:

+ 2 - 2
server/帐号数据.md

@@ -23,8 +23,8 @@ sensitive: true
 | 华为手机    | 17187822038             |       | 奥斯<br>36843     | 奥斯<br>36755     | 2038<br>97                  |
 | 荣耀手机    | 17187822032             |       | 京海鲜花批发<br>36957 | 京海鲜花批发<br>36956 | 尾号2032<br>253               |
 | 苹果XsMax | 17189512989<br>(此账号不能删) |       | 微升漫花<br>36846   | 微升漫花<br>36749   | 石头<br>113                   |
-| 新小米     | 18559200768             |       | 未注册             | 未注册             | 尾号0768<br>371               |
-| 小米手机    | 17189513228             |       | 台北鲜花批发<br>36959 | 台北鲜花批发<br>36958 | 大骨头<br>108                  |
+| 新小米     | 18559200768             |       | ~~未注册~~         | 新小米<br>37058    | 尾号0768<br>371               |
+| 旧小米     | 17189513228             |       | 台北鲜花批发<br>36959 | 台北鲜花批发<br>36958 | 大骨头<br>108                  |
 | 少华主号    | 15280215347             |       | 好运鲜花批发<br>36523 | 好运鲜花<br>36524   | 中华<br>301                   |
 
 

+ 1 - 1
server/文档/给控制器方法添加表单验证.md

@@ -13,7 +13,7 @@ sensitive: false
 
 @app-ghs/controllers/OrderController.php:1006-1024 请为 actionCreateOrder 控制器方法添加表单验证函数, 可查询 @Yii 里表单验证说明 ,另外也可参照 @app-ghs/controllers/DeliveryController.php:298-304 的实现,如果需要查询表结构,请根据以下信息来:
 
-1. @.cursor/rules/general-rules.mdc:118-119
+1. @.cursor/rules/general-rules.mdc:191
 
 2. 请运行 db_struct 脚本,查询某表的结构
 

+ 6 - 0
任务小笔记/26年/05-26:hdApp 客户生日赠礼管理/birthday_gift.md

@@ -60,4 +60,10 @@ CREATE TABLE `xhBirthdayGift` (
   KEY `idx_uid_year` (`userId`,`year`),
   KEY `idx_shop_year_status` (`shopId`,`year`,`status`)
 ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COMMENT='生日赠礼记录';
+```
+
+2026-07-03 更新
+```sql
+ALTER TABLE `xhBirthdayGift` 
+MODIFY COLUMN `smsSent` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '送达状态:0未送达 ,1已送达';
 ```

+ 61 - 0
任务小笔记/26年/06-01:拉卡拉进件/ghsApp 拉卡拉进件与收款账户管理.md

@@ -0,0 +1,61 @@
+## Summary
+- 在“门店设置”下新增“收款账户管理”,支持草稿继续/删除、历史申请、状态刷新、驳回修改重提、银行卡更换、设置当前收款账户。
+- 新增一个 Vue 页面承载五步进件表单;支持上一步修改、自动保存草稿、OCR 自动填充、电子合同签约及最终提交。
+- 本期不实现停用账户;`ghsApp` 固定使用批发费率 `0.33`。
+- 首次进件认证通过后,后端幂等自动提交 `WECHAT_PAY`、`B2B_SYT` 两个增终申请。
+
+## Backend And Data
+- 新增 `LakalaAccountController`、`biz-ghs/lakala` 业务模块及 SQL 建表脚本:
+  - `xhLakalaApplication`:申请主记录,关联 `mainId/shopId`,保存申请类型、当前步骤、草稿数据、远端编号、合同状态、审核状态、驳回原因。
+  - `xhLakalaApplicationVersion`:每次首次提交、驳回重提、银行卡变更提交时保存不可变表单快照、附件、请求结果和版本号。
+  - `xhLakalaAccount`:认证通过后的账户投影,保存拉卡拉商户号、客户号、网点号、结算摘要、两个终端号和当前账户标记。
+  - `xhLakalaOperation`:记录合同、首次进件、增终、结算变更等远端操作及 `review_related_id`,用于幂等和状态刷新。
+- 提供 `/lakala-account/*` API:
+  - 列表、详情、创建草稿、自动保存、删除草稿。
+  - 上传并 OCR、地区/银行选项查询。
+  - 电子合同申请和签约状态查询。
+  - 首次进件提交、驳回重提、状态刷新。
+  - 结算银行卡变更提交、设置当前收款账户。
+- 草稿在字段变更防抖、图片上传成功、步骤切换时保存;仅草稿允许删除。
+- 首次进件状态刷新使用 `open_merchant_info`;结算变更和增终使用 `customer_update_review`。首次进件驳回修改后重新调用 `merchant_encry` 并生成新版本。
+- 认证通过后自动提交两个增终申请;全部通过并查询到终端信息后,账户才允许设置为当前收款账户。设置时同步更新当前 `xhShop` 的 `lklSjNo`、`lklScanTermNo`、`lklB2BTermNo`。
+
+## Lakala Integration
+- 新增统一进件客户端,基于 `vendor/lakalasdk/openapi/v3`,集中处理环境、证书、SM4、接口加密模式、错误日志和响应映射。
+- 测试环境使用现有测试参数;生产从非版本控制配置读取 `app_id/serial_no/sm4_key/org_code/user_no`,证书路径参考现有 `Lakala.php`。缺少生产参数时明确拒绝生产调用。
+- 上传接口同时完成:
+  - OSS 备份至 `lakala-onboarding/{mainId}/{YYYYMMDD}/{applicationId}/`。
+  - 调用拉卡拉文件上传并保存 `batch_no/url/img_type/OCR` 结果。
+- 表单规则:
+  - 小微上传法人身份证正反面;企业额外上传营业执照。
+  - 结算默认对私,支持法人对私、非法人对私、对公三种模式。
+  - 门店仅上传门头照、内设照、收银台照。
+  - 商户固定默认值:MCC `5992`、联系人石少华、手机号 `15280215347`、邮箱 `479439056@qq.com`;活动编号默认 `37` 并配置化。
+  - 商户经营名称默认“地级市 + xhShop.merchantName”,地址和坐标从当前门店带入;按接口示例映射 `latitude=shopLong`、`longtude=shopLat`。
+  - `settle_type=D1`、`settlement_type=AUTOMATIC`。
+  - EC015 合同固定使用批发费率 `0.33` 覆盖需求指定的银联二维码、微信、支付宝费率,其余沿用批准的默认配置。
+  - 业务信息页展示签约手机号,默认带入门店/联系人手机号;最终提交前后端必须查询到合同状态 `COMPLETED` 和 `ec_no`。
+
+## Frontend
+- 将现有空页面 `admin/item/lakala.vue` 实现为收款账户管理页,并在 `admin/home/me.vue` 门店设置下方增加入口。
+- 新增一个进件 Vue 页面,支持 `create`、`resubmit`、`settlement-change` 模式:
+  - 创建/重提模式展示五步进件。
+  - 银行卡更换模式仅展示结算信息并将按钮改为“提交申请”。
+- 实现图片上传、OCR 处理中轮询、自动填充、可修改字段、步骤校验、草稿恢复、合同 H5 打开和返回后签约状态刷新。
+- 列表展示草稿、待审核、已驳回、认证通过、银行卡变更状态;提供对应的继续、删除、修改申请、刷新、银行卡更换和设置当前账户操作。
+
+## Test Plan
+- 验证小微与企业两条五步流程,上一步编辑和退出后恢复草稿。
+- 验证营业执照、身份证、银行卡 OCR 成功、处理中、失败及手动修正。
+- 验证三种结算模式的字段、附件和后端校验。
+- 验证未完成电子合同不能提交,签约完成后生成版本并提交。
+- 验证首次提交、驳回修改重提、认证通过、两个增终幂等提交及状态刷新。
+- 验证银行卡变更审核流程,以及设置当前账户后门店三个拉卡拉字段正确切换。
+- 验证跨 `mainId/shopId` 越权访问被拒绝,敏感远端错误不会泄露证书或密钥。
+- 执行 PHP 语法检查、相关接口联调、前端静态检查;不自动执行 `npm run build:mp-weixin`。结构变更完成后在知识项目运行 `npm run index` 和 `npm run validate`。
+
+## Assumptions
+- 本期不实现账户停用。
+- 一个 `mainId` 可以拥有多个申请和认证账户,但当前收款账户按当前 `shopId` 设置。
+- 生产进件参数由上线前补入环境配置。
+- 拉卡拉若拒绝对驳回申请再次调用 `merchant_encry`,系统记录并展示远端错误,不回滚本地新版本。

+ 10 - 0
任务小笔记/26年/06-01:拉卡拉进件/上线注意事项.md

@@ -0,0 +1,10 @@
+1. 数据库表变动
+
+2. .env 文件配置变动
+
+3. 
+
+4. 
+
+
+### 维护注意事项

+ 63 - 3
任务小笔记/26年/06-01:拉卡拉进件/功能需求.md

@@ -11,8 +11,68 @@ created: 2026-06-01
 updated: 2026-06-09
 sensitive: false
 ---
-前端页面与功能:
-产品: ghsApp 下,
 
+产品: ghsApp
+需求概括:
+	新增进件功能,它是由以下5步构成
+		1. 执照信息
+		2. 商户信息
+		3. 结算信息
+		4. 门店信息
+		5. 业务信息 
+	由以上5步把所有信息收集完毕后提交进行进件申请,它们其实是由一个 vue 文件组成,只要用户填写了信息,有切换到“上一步”,进而呈现原有的编辑信息与可修改(即填写完当前步骤的信息后,点击下一步后,随时可以点击上一步对原先信息进行修改)
+	
+需要后端支持提交的进件进行保存,请实现对应的后端保存机制(例如:用户填写到一半的进件,下一次用户进入到“收款账户管理”页面时,可以看到并点击继续(或删除))。进件数据使用 mainId 进行关联。如果需要图片资源的保存,请使用项目里的阿里云 OSS 实现,保存时请新建保存目录及按 mainId 加日期的来创建子目录,数据库在要有对应申请的版本数据。
+
+
+具体要实现的页面与细节:
+1. 在 admin/home/me.vue 下的门店设置下新增“收款账户管理”(如图: 收款账户管理.png) ----  “收款账户管理”页面的内容是:
+	   1. 获取历史上提交的进件(有不同状态:待审核、已驳回、认证通过)
+	   2. 更换当前门店的收款账户(或停用)
+	   3. 点击“收款银行卡更换”,则进入新页面进行变更银行卡信息,页面实现参照结算信息下的三种情况,下一步按钮变更为提交申请。
+	   4. 审核状态通过商户审核状态查询接口进行获取,然后在本项目数据库中保存起来(有刷新功能,即重新查询)
+	   5. 被驳回的,可以进行修改然后重新提交。
+
+2. 当点击“收款账户管理”页面下的“新增账户”按钮,就进入“执照信息”页面(如图: 执照信息(小微).png、 执照信息(小微).png )
+	- 商户类别是企业时,使用‘商户进件文件上传接口(对应测试用例是lakalasdk/openapi 包下的 example/jingjian_api/customer-file-upload.php)’上传营业执照(is_ocr 参数传 true, img_type 传 BUSINESS_LICENCE),接着‘OCR结果查询接口(对应测试用例是lakalasdk/openapi 包下的 example/jingjian_api/ocr-result.php)’使用‘商户进件文件上传接口’返回 batch_no 去获取营业执照的信息。然后,就同商户类别是小微一样的流程获取身份证信息。请根据表单信息从‘OCR结果查询接口’返回的数据自动获取对应数据进行填入。
+	- 商户类别是小微时,则只要法人的身份证信息,那么使用‘商户进件文件上传接口’分别上传身份证正反面,is_ocr 参数传 true,接着‘OCR结果查询接口’使用‘商户进件文件上传接口’返回 batch_no 去分别对应的信息。
+	
+3. 填写好“执照信息”点击下一步进入到“商户信息”,此页面继续使用上面 2 中获取的营业执照的信息按说明自动填入,具体细节如下:
+	- 商户经营名称,使用 地级市+商家名称(xhShop表的 merchantName),支持客户在修改
+	- 商户类型:花店( 5992)、联系人姓名: 石少华、手机号码:15280215347、 邮箱: 479439056@qq.com ,此四项不在页面展示出来,但在表单中默认提交。
+	- 没有说明的按图片中提示默认自动生成,且能让客户修改
+	
+4. 第三步:结算信息--分别有三种情况,初始化默认选中‘对私’
+	- 对私且是法人进件(如图:结算信息(对私).png),只需上传银行卡照片;使用‘商户进件文件上传接口(对应测试用例是lakalasdk/openapi 包下的 example/jingjian_api/customer-file-upload.php)’上传银行卡照片(is_ocr 参数传 true, img_type 传 BANK_CARD ),接着利用‘OCR结果查询接口(对应测试用例是lakalasdk/openapi 包下的 example/jingjian_api/ocr-result.php)’使用‘商户进件文件上传接口’返回 batch_no 去获取银行卡的信息。
+	- 对私但是非法人进件(如图:结算信息(对私--非法人).png),上传银行卡照片及上传身份证照片都是跟先前一样,只是这要多了上传法人授权函(上传的接口使用的都是‘商户进件文件上传接口‘,img_type 传 LETTER_OF_AUTHORIZATION)
+	- 对公(如图:结算信息(对公).png),只需上传开户许可证,使用‘商户进件文件上传接口(对应测试用例是lakalasdk/openapi 包下的 example/jingjian_api/customer-file-upload.php)’上传银行卡照片( img_type 传 OPENING_PERMIT )
+	
+5. 第四步:门店信息
+	主要是上传三张门店相关的照片:门头照、内设照、收银台照,使用‘商户进件文件上传接口(对应测试用例是lakalasdk/openapi 包下的 example/jingjian_api/customer-file-upload.php)’上传,对应的 img_type 分别是 SHOP_OUTSIDE_IMG、CHECKSTAND_IMG、SHOP_INSIDE_IMG;门店名称及门店地址、详细地址从之前的表单带入下,门店联系人与联系手机号需要让用户手动填写下。(其他补充照片先删除掉)
+	
+6. 第五步:业务信息
+	这是进件综合所有先前的信息进行提交页面,但还需要在这页面上执行请求以下接口:
+		1. 执行增终进件接口,分别用 bz_pos = WECHAT_PAY 与 bz_pos = B2B_SYT 请求创建。
+		2. 结算周期指的是 settle_type 使用 D1;结算类型批的是 settlement_type 使用 AUTOMATIC
+		3. 执行电子合同接口(生成电子协议)请求--获取 contract_no ,然后传递给’新增商户进件‘的表单。电子合同接口有着此页面需要设置的各费率项,请结合页面进行生成,默认不让用户对费率变更,具体情况如下 :
+			刷卡类
+			银联二维码贷记小额优惠  0.38 (零售)  0.33 (批发)
+			银联二维码借记费率  0.38 (零售)  0.33 (批发)
+			
+			扫码类
+			微信费率   0.38(零售)  0.33(批发)
+			支付宝费率    0.38(零售)  0.33(批发)
+			
+			其他默认配置费率不修改
+		4. 生成电子协议时,成功请求时会返回 {"code":"000000","msg":"成功","resp_data":{"order_no":"2026061208203432970480","ec_apply_id":1117850953870880768,"result_url":"https://jrt.wsmsd.cn/signature/s/yxkusph1inogzv2f?rdm=1781252444861"}},result_url 是待签约合同H5链接,要打开它,让客户签约,签约好后,才能点击页面最下边的提交。
+
+所有的接口文档在 "/Users/shishao/dnmp/www/huahuibao.wiki/任务小笔记/26年/06-01:拉卡拉进件" 目录下,请根据需要进行查阅
+
+
+注意点:
+1. 要区分测试与正式环境,因为证书不同。正式环境的证书获取与使用请参考 /Users/shishao/dnmp/www/huahuibao/common/components/lakala/Lakala.php,然后把融入到  lakalasdk/openapi 包中进行使用。
+2. 只需关注 lakalasdk/openapi 包中的 openapi/example/jingjian_api  与 openapi/v3 下的代码实现,其它的请忽略。
+
+
+3. 后期要实现客户文件上传文件在 oss 里备份一份
 
-后端现有的代码与要实现的类(或方法)

+ 4 - 0
任务小笔记/26年/06-01:拉卡拉进件/官方技术客服给的文档.md

@@ -0,0 +1,4 @@
+### 进件接口文档地址
+https://o.lakala.com/p/#/user/login
+登录名: 15221581207
+密码:     MQ6k1cAt

+ 348 - 0
任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/1.1商户进件/EC015合同参数说明.md

@@ -0,0 +1,348 @@
+# 电子合同参数集合说明(EC015)
+
+更新时间:2026-03-16 17:58:39作者:zhangyanran
+
+## 文本域填写规范
+
+| **文本域** | **值说明**                                 | **备注**                                                                            |
+| ------- | --------------------------------------- | --------------------------------------------------------------------------------- |
+| A1      | 签约商户的商户名称                               | 营业执照企业商户填写营业执照名称;个体工商户填写执照名称或法人姓名;商户无营业执照的,填写入网人姓名,应与结算人一致                        |
+| A2      | 业务功能:消费类                                | 【A2-A108】根据实际合作业务填写合作费率,不涉及的业务请在横线处“/”                                            |
+| A3      | 业务功能:预授权类                               |                                                                                   |
+| A4      | 业务功能:其他                                 |                                                                                   |
+| A5      | 业务功能(其他)填写信息                            |                                                                                   |
+| A6      | 收单手续费标准:借记卡选择                           |                                                                                   |
+| A7      | 收单手续费标准:借记卡费率                           |                                                                                   |
+| A8      | 收单手续费标准:借记卡封顶值                          |                                                                                   |
+| A9      | 收单手续费标准:贷记卡选择                           |                                                                                   |
+| A10     | 收单手续费标准:贷记卡费率                           |                                                                                   |
+| A11     | 收单手续费标准:银联二维码借记选择                       |                                                                                   |
+| A12     | 收单手续费标准:银联二维码借记费率                       |                                                                                   |
+| A13     | 收单手续费标准:银联二维码贷记选择                       |                                                                                   |
+| A14     | 收单手续费标准:交易金额1000元以下,银联二维码贷记费率           |                                                                                   |
+| A15     | 收单手续费标准:交易金额1000元以上,银联二维码贷记费率           |                                                                                   |
+| A16     | 业务功能:消费类                                |                                                                                   |
+| A17     | 业务功能:预授权类                               |                                                                                   |
+| A18     | 业务功能:其他                                 |                                                                                   |
+| A19     | 业务功能(其他)填写信息                            |                                                                                   |
+| A20     | 外卡VISA收单手续费标准:DCC费率                     |                                                                                   |
+| A21     | 外卡VISA收单手续费标准:非DCC费率                    |                                                                                   |
+| A22     | 外卡MasterCard收单手续费标准:DCC费率               |                                                                                   |
+| A23     | 外卡MasterCard收单手续费标准:非DCC费率              |                                                                                   |
+| A24     | 外卡American Express收单手续费标准:DCC费率         |                                                                                   |
+| A25     | 外卡American Express收单手续费标准:非DCC费率        |                                                                                   |
+| A26     | 外卡Diners收单手续费标准:DCC费率                   |                                                                                   |
+| A27     | 外卡Diners收单手续费标准:非DCC费率                  |                                                                                   |
+| A28     | 外卡Discover收单手续费标准:DCC费率                 |                                                                                   |
+| A29     | 外卡Discover收单手续费标准:非DCC费率                |                                                                                   |
+| A30     | 外卡JCB收单手续费标准:DCC费率                      |                                                                                   |
+| A31     | 外卡JCB收单手续费标准:非DCC费率                     |                                                                                   |
+| A32     | 外卡其他类收单手续费标准:DCC费率                      |                                                                                   |
+| A33     | 外卡其他类收单手续费标准:非DCC费率                     |                                                                                   |
+| A34     | 扫码支付业务:支付宝收单手续费率                        |                                                                                   |
+| A35     | 扫码支付业务:微信收单手续费率                         |                                                                                   |
+| A36     | 扫码支付业务:京东收单手续费率                         |                                                                                   |
+| A37     | 扫码支付业务:拉卡拉钱包收单手续费率                      |                                                                                   |
+| A38     | 扫码支付业务:数字人民币收单手续费率                      |                                                                                   |
+| A39     | 扫码支付业务:(其他)填写信息                         |                                                                                   |
+| A40     | 业务功能:单笔代付选择                             |                                                                                   |
+| A41     | 单笔代付:收单手续费费率                            |                                                                                   |
+| A42     | 单笔代付:收单手续费封顶值                           |                                                                                   |
+| A43     | 单笔代付:收单手续费下限阈值                          |                                                                                   |
+| A44     | 业务功能:批量代付选择                             |                                                                                   |
+| A45     | 批量代付:收单手续费费率                            |                                                                                   |
+| A46     | 批量代付:收单手续费封顶值                           |                                                                                   |
+| A47     | 批量代付:收单手续费下限阈值                          |                                                                                   |
+| A48     | 业务功能:银联线上统一收银台选择                        |                                                                                   |
+| A49     | 银联线上统一收银台:借记卡费率                         |                                                                                   |
+| A50     | 银联线上统一收银台:贷记卡费率                         |                                                                                   |
+| A51     | 业务功能:无跳转支付选择                            |                                                                                   |
+| A52     | 无跳转支付:借记卡费率                             |                                                                                   |
+| A53     | 无跳转支付:借记卡封顶手续费                          |                                                                                   |
+| A54     | 无跳转支付:贷记卡费率                             |                                                                                   |
+| A55     | 业务功能:云微小程序选择                            |                                                                                   |
+| A56     | 云微小程序:借记卡费率                             |                                                                                   |
+| A57     | 云微小程序:借记卡封顶手续费                          |                                                                                   |
+| A58     | 云微小程序:贷记卡费率                             |                                                                                   |
+| A59     | 业务功能:B2B 订单选择                           |                                                                                   |
+| A60     | B2B 订单:收单手续费费率                          |                                                                                   |
+| A61     | B2B订单:封顶手续费                             |                                                                                   |
+| A62     | B2B订单:手续费下限阈值                           |                                                                                   |
+| A63     | 业务功能:微信支付选择                             |                                                                                   |
+| A64     | 微信支付:手续费费率                              |                                                                                   |
+| A65     | 业务功能:支付宝支付选择                            |                                                                                   |
+| A66     | 支付宝支付:手续费费率                             |                                                                                   |
+| A67     | 业务功能:银联代收/网联商委选择                        |                                                                                   |
+| A68     | 银联代收/网联商委:借记卡费率                         |                                                                                   |
+| A69     | 银联代收/网联商委:借记卡封顶手续费                      |                                                                                   |
+| A70     | 银联代收/网联商委:借记卡手续费下限阈值                    |                                                                                   |
+| A71     | 银联代收/网联商委:贷记卡费率                         |                                                                                   |
+| A72     | 银联代收/网联商委:贷记卡封顶手续费                      |                                                                                   |
+| A73     | 银联代收/网联商委:贷记卡手续费下限阈值                    |                                                                                   |
+| A74     | 业务功能:快捷/协议支付选择                          |                                                                                   |
+| A75     | 快捷/协议支付:借记卡费率                           |                                                                                   |
+| A76     | 快捷/协议支付:借记卡封顶手续费                        |                                                                                   |
+| A77     | 快捷/协议支付:借记卡手续费下限阈值                      |                                                                                   |
+| A78     | 快捷/协议支付:贷记卡费率                           |                                                                                   |
+| A79     | 快捷/协议支付:贷记卡封顶手续费                        |                                                                                   |
+| A80     | 快捷/协议支付:贷记卡手续费下限阈值                      |                                                                                   |
+| A81     | 业务功能:网银 B2B选择                           |                                                                                   |
+| A82     | 网银B2B:单笔手续费                             |                                                                                   |
+| A83     | 网银B2B:收单手续费费率                           |                                                                                   |
+| A84     | 网银B2B:封顶手续费                             |                                                                                   |
+| A85     | 网银B2B:手续费下限阈值                           |                                                                                   |
+| A86     | 业务功能:网银 B2C选择                           |                                                                                   |
+| A87     | 网银B2C:借记卡费率                             |                                                                                   |
+| A88     | 网银B2C:借记卡封顶手续费                          |                                                                                   |
+| A89     | 网银B2C:借记卡手续费下限阈值                        |                                                                                   |
+| A90     | 网银B2C:贷记卡费率                             |                                                                                   |
+| A91     | 网银B2C:贷记卡封顶手续费                          |                                                                                   |
+| A92     | 网银B2C:贷记卡手续费下限阈值                        |                                                                                   |
+| A93     | 业务功能:签约支付选择                             |                                                                                   |
+| A94     | 签约支付:借记卡费率                              |                                                                                   |
+| A95     | 签约支付:借记卡封顶手续费                           |                                                                                   |
+| A96     | 签约支付:借记卡手续费下限阈值                         |                                                                                   |
+| A97     | 签约支付:贷记卡费率                              |                                                                                   |
+| A98     | 签约支付:贷记卡封顶手续费                           |                                                                                   |
+| A99     | 签约支付:贷记卡手续费下限阈值                         |                                                                                   |
+| A100    | 大额付款业务:收单手续费支付方式选择                      |                                                                                   |
+| A101    | 大额付款业务:手续费费率                            |                                                                                   |
+| A102    | 大额付款业务:封顶手续费                            |                                                                                   |
+| A103    | 大额付款业务:对私结算手续费费率                        |                                                                                   |
+| A104    | 大额付款业务:对私结算封顶手续费                        |                                                                                   |
+| A105    | 大额付款业务:对公结算单笔手续费                        |                                                                                   |
+| A106    | 快速结算业务:快速结算业务手续费费率                      |                                                                                   |
+| A107    | 定时结算业务:预计到账时间                           |                                                                                   |
+| A108    | 定时结算业务:定时结算手续费费率                        |                                                                                   |
+| A109    | 通讯服务:终端运营服务费金额                          | 【A109-A111】空格处根据实际情况填写,不涉及的费用请在横线处“/”                                             |
+| A110    | 通讯服务费支付方式:线上                            |                                                                                   |
+| A111    | 通讯服务费支付方式:线下                            |                                                                                   |
+| A112    | 平台系统服务:签订协议至收取平台接入费的限定天数                |                                                                                   |
+| A113    | 平台系统服务:平台接入费用                           |                                                                                   |
+| A114    | 平台系统服务:平台维护年费                           |                                                                                   |
+| A115    | 平台系统服务:一年期满后支付平台维护年费的限定天数               |                                                                                   |
+| A116    | 默认结算模式选择                                | 两种结算模式请选择其一                                                                       |
+| A117    | 退货业务:开通                                 | 【A117-A118】二选一                                                                    |
+| A118    | 退货业务:不开通                                |                                                                                   |
+| A119    | 数字人民币业务:开通                              | 【A119-A120】二选一                                                                    |
+| A120    | 数字人民币业务:不开通                             |                                                                                   |
+| A121    | 终端使用地区                                  | 请填写地区                                                                             |
+| A122    | 接入平台法律主体                                | 填写接入平台法律主体,接入平台方的营业执照名称,无平台对接的可不填写                                                |
+| A123    | 平台名称/APP名称                              | 填写平台名称/APP名称                                                                      |
+| A124    | 甲方签约的年                                  |                                                                                   |
+| A125    | 甲方签约的月                                  |                                                                                   |
+| A126    | 甲方签约的日                                  |                                                                                   |
+| A127    | 乙方签约的年                                  |                                                                                   |
+| A128    | 乙方签约的月                                  |                                                                                   |
+| A129    | 乙方签约的日                                  |                                                                                   |
+| A130    | 甲方电子签名/签字/盖章                            | 企业类商户盖章,非企业类商户签字及按手印                                                              |
+| B1      | 商户注册登记表的年                               |                                                                                   |
+| B2      | 商户注册登记表的月                               |                                                                                   |
+| B3      | 商户注册登记表登记类型增商选择                         |                                                                                   |
+| B4      | 商户注册登记表登记类型增终选择                         |                                                                                   |
+| B5      | 商户注册登记表登记类型续约选择                         |                                                                                   |
+| B6      | 商户注册登记表登记类型商户更名选择                       |                                                                                   |
+| B7      | 商户更名前的原名称                               |                                                                                   |
+| B8      | 基本信息:商户的工商注册名称(中英文)                     |                                                                                   |
+| B9      | 基本信息:主营业务                               |                                                                                   |
+| B10     | 基本信息:对外经营名称(中英文)                        |                                                                                   |
+| B11     | 基本信息:网站地址                               |                                                                                   |
+| B12     | 基本信息:商户简称(互联网支付)                        |                                                                                   |
+| B13     | 基本信息:办公地址                               |                                                                                   |
+| B14     | 基本信息:营业执照注册号                            |                                                                                   |
+| B15     | 基本信息:交易IP地址                             |                                                                                   |
+| B16     | 结算账户名称:同商户工商注册名称选择                      | 【B16-B23】账务信息如实填写                                                                 |
+| B17     | 结算账户名称:其他名称选择                           |                                                                                   |
+| B18     | 结算账户名称:其他名称填写                           |                                                                                   |
+| B19     | 开户行(含支行)                                |                                                                                   |
+| B20     | 结算账号                                    |                                                                                   |
+| B21     | 对账单投递邮箱                                 |                                                                                   |
+| B22     | 数字人民币开户行                                |                                                                                   |
+| B23     | 数字人民币钱包名称(如开通)                          |                                                                                   |
+| B24     | 法定代表人/负责人姓名                             | 【B24-B30】如实填写                                                                     |
+| B25     | 法定代表人/负责人证件类型及号码                        |                                                                                   |
+| B26     | 法定代表人/负责人手机                             |                                                                                   |
+| B27     | 联系人姓名                                   |                                                                                   |
+| B28     | 联系人邮箱                                   |                                                                                   |
+| B29     | 联系人证件类型及号码                              |                                                                                   |
+| B30     | 联系人手机号                                  |                                                                                   |
+| B31     | 分店营业名称(中英文)                             |                                                                                   |
+| B32     | 网点联系人姓名                                 |                                                                                   |
+| B33     | 终端布放地址(中英文)                             |                                                                                   |
+| B34     | 网点联系人手机号                                |                                                                                   |
+| B35     | 签约单名称(中英文)                              |                                                                                   |
+| B36     | 申请台数                                    |                                                                                   |
+| B37     | 终端类型:智能POS选择                            |                                                                                   |
+| B38     | 终端类型:传统POS选择                            |                                                                                   |
+| B39     | 终端类型:超级收款宝选择                            |                                                                                   |
+| B40     | 终端类型:微智能选择                              |                                                                                   |
+| B41     | 终端类型:一体化终端选择                            |                                                                                   |
+| B42     | 终端类型:蓝精灵选择                              |                                                                                   |
+| B43     | 终端类型:码牌音箱选择                             |                                                                                   |
+| B44     | 终端类型:自定义选择                              |                                                                                   |
+| B45     | 终端类型:自定义填写                              |                                                                                   |
+| B46     | 终端通讯方式:网络选择                             |                                                                                   |
+| B47     | 终端通讯方式:移动通讯卡选择                          |                                                                                   |
+| B48     | 终端通讯方式:自定义选择                            |                                                                                   |
+| B49     | 终端通讯方式:自定义填写                            |                                                                                   |
+| B50     | 拓展信息:直营拓展选择                             |                                                                                   |
+| B51     | 拓展信息:行业合作选择                             |                                                                                   |
+| B52     | 拓展信息:代理选择                               |                                                                                   |
+| B53     | 拓展信息:银行推荐选择                             |                                                                                   |
+| B54     | 拓展信息:其他选择                               |                                                                                   |
+| B55     | 拓展信息:其他填写                               |                                                                                   |
+| B56     | 拓展信息:发展方                                |                                                                                   |
+| B57     | 拓展信息:发展人                                |                                                                                   |
+| B58     | 终端型号填写                                  |                                                                                   |
+| C1      | 受益人1姓名                                  | 填写公司/姓名                                                                           |
+| C2      | 受益人1持股比例                                | 填写*%                                                                              |
+| C3      | 受益人1身份证件类型及号码                           | 填写身份证号/港澳台号码                                                                      |
+| C4      | 受益人1证件有效期                               |                                                                                   |
+| C5      | 受益人1居住地址/工作地址/户籍地址                      | 按实际填写                                                                             |
+| C6      | 受益人1是否为外国政要或国际组织的高级管理人员                 | 填写是或者否                                                                            |
+| C7      | 受益人2姓名                                  | 填写公司/姓名                                                                           |
+| C8      | 受益人2持股比例                                | 填写*%                                                                              |
+| C9      | 受益人2身份证件类型及号码                           | 填写身份证号/港澳台号码                                                                      |
+| C10     | 受益人2证件有效期                               |                                                                                   |
+| C11     | 受益人2居住地址/工作地址/户籍地址                      | 按实际填写                                                                             |
+| C12     | 受益人2是否为外国政要或国际组织的高级管理人员                 | 填写是或者否                                                                            |
+| C13     | 高级管理层成员1姓名                              | 填写姓名                                                                              |
+| C14     | 高级管理层成员1职位                              | 填写职务                                                                              |
+| C15     | 高级管理层成员1身份证件类型及号码                       | 填写身份证号/港澳台号码                                                                      |
+| C16     | 高级管理层成员1证件有效期                           |                                                                                   |
+| C17     | 高级管理层成员1居住地址/工作地址/户籍地址                  | 按实际填写                                                                             |
+| C18     | 高级管理层成员1是否为外国政要或国际组织的高级管理成员             | 填写是或者否                                                                            |
+| C19     | 高级管理层成员2姓名                              | 填写姓名                                                                              |
+| C20     | 高级管理层成员2职位                              | 填写职务                                                                              |
+| C21     | 高级管理层成员2身份证件类型及号码                       | 填写身份证号/港澳台号码                                                                      |
+| C22     | 高级管理层成员2证件有效期                           |                                                                                   |
+| C23     | 高级管理成员2居住地址/工作地址/户籍地址                   | 按实际填写                                                                             |
+| C24     | 高级管理层人员2是否为外国政要或国际组织的高级管理人员             | 填写是或者否                                                                            |
+| C25     | 董事会主要成员1姓名                              |                                                                                   |
+| C26     | 董事会主要成员1职位                              |                                                                                   |
+| C27     | 董事会主要成员1身份证件类型及号码                       |                                                                                   |
+| C28     | 董事会主要成员1证件有效期                           |                                                                                   |
+| C29     | 董事会主要成员1居住地址/工作地址/户籍地址                  |                                                                                   |
+| C30     | 董事会主要成员1是否为外国政要或国际组织的高级管理成员             |                                                                                   |
+| C31     | 董事会主要成员2姓名                              |                                                                                   |
+| C32     | 董事会主要成员2职位                              |                                                                                   |
+| C33     | 董事会主要成员2身份证件类型及号码                       |                                                                                   |
+| C34     | 董事会主要成员2证件有效期                           |                                                                                   |
+| C35     | 董事会主要成员2居住地址/工作地址/户籍地址                  |                                                                                   |
+| C36     | 董事会主要成员2是否为外国政要或国际组织的高级管理成员             |                                                                                   |
+| C37     | 通过人事或财务等其他方式进行控制的成员1姓名                  |                                                                                   |
+| C38     | 通过人事或财务等其他方式进行控制的成员1身份证件类型及号码           |                                                                                   |
+| C39     | 通过人事或财务等其他方式进行控制的成员1证件有效期               |                                                                                   |
+| C40     | 通过人事或财务等其他方式进行控制的成员1居住地址/工作地址/户籍地址      |                                                                                   |
+| C41     | 通过人事或财务等其他方式进行控制的成员1是否为外国政要或国际组织的高级管理人员 |                                                                                   |
+| C42     | 通过人事或财务等其他方式进行控制的成员2姓名                  |                                                                                   |
+| C43     | 通过人事或财务等其他方式进行控制的成员2身份证件类型及号码           |                                                                                   |
+| C44     | 通过人事或财务等其他方式进行控制的成员2证件有效期               |                                                                                   |
+| C45     | 通过人事或财务等其他方式进行控制的成员2居住地址/工作地址/户籍地址      |                                                                                   |
+| C46     | 通过人事或财务等其他方式进行控制的成员2是否为外国政要或国际组织的高级管理人员 |                                                                                   |
+| C47     | 超过25%的合伙权益的自然人1姓名                       |                                                                                   |
+| C48     | 超过25%的合伙权益的自然人1身份证件类型及号码                |                                                                                   |
+| C49     | 超过25%的合伙权益的自然人1证件有效期                    |                                                                                   |
+| C50     | 超过25%的合伙权益的自然人1居住地址/工作地址/户籍地址           |                                                                                   |
+| C51     | 超过25%的合伙权益的自然人1是否为外国政要或国际组织的高级管理人员      |                                                                                   |
+| C52     | 超过25%的合伙权益的自然人2姓名                       |                                                                                   |
+| C53     | 超过25%的合伙权益的自然人2身份证件类型及号码                |                                                                                   |
+| C54     | 超过25%的合伙权益的自然人2证件有效期                    |                                                                                   |
+| C55     | 超过25%的合伙权益的自然人2居住地址/工作地址/户籍地址           |                                                                                   |
+| C56     | 超过25%的合伙权益的自然人2是否为外国政要或国际组织的高级管理人员      |                                                                                   |
+| D1      | 授权书(银行):结算账户所属银行                        | 【D1-D2】授权书(银行)和授权书(邮政项目)二选一必选择,填写结算卡银行名称,后续不定期参加银行营销补贴活动所需的字段传输                   |
+| D2      | 授权书(银行):授权承诺方签字                         |                                                                                   |
+| D3      | 授权书(银行):签章/签字日期                         | 公司盖章;个体户或个人商户签字按手印                                                                |
+| D4      | 授权书(开通微信、支付宝收单):承诺授权方签名                 | 【D4-D5】日常所需业务,必填写,需商户同意该授权书 公司盖章;个体户或个人商户签字按手印                                    |
+| D5      | 授权书(开通微信、支付宝收单):盖章/签字日期                 |                                                                                   |
+| D6      | 授权书(数据处理方):数据处理方名称                      | 【D6-D9】必填写,需商户同意该授权书,填写代理商或平台方名称全称;分公司直拓商户可以不填写此份授权书 公司盖章;个体户或个人商户签字按手印           |
+| D7      | 授权书(数据处理方):数据处理方联系方式                    |                                                                                   |
+| D8      | 授权书(数据处理方):承诺授权方签名                      |                                                                                   |
+| D9      | 授权书(数据处理方):签章/签字日期                      |                                                                                   |
+| D10     | 授权书(外卡业务):承诺授权方签名                       | 【D10-D11】开通该业务需商户同意授权书; 公司盖章;个体户或个人商户签字按手印                                        |
+| D11     | 授权书(外卡业务):签章/签字日期                       |                                                                                   |
+| D12     | 授权书(开通MOSS产品):承诺授权方签名                   | 【D12-D13】按需填写,开通该业务需商户同意授权书 公司盖章;个体户或个人商户签字按手印                                    |
+| D13     | 授权书(开通MOSS产品):签章/签字日期                   |                                                                                   |
+| D14     | 授权书(开通青橙产品):承诺授权方签名                     | 【D14-D15】按需填写,开通该业务需要商户同意授权书 公司盖章;个体户或个人商户签字按手印                                   |
+| D15     | 授权书(开通青橙产品):签章/签字日期                     |                                                                                   |
+| D16     | 授权书(邮政项目):承诺授权方签名                       | 【D16-D17】授权书(银行)和授权书(邮政项目)二选一,填写结算卡银行名称,后续不定期参加银行营销补贴活动所需的字段传输 公司盖章;个体户或个人商户签字按手印 |
+| D17     | 授权书(邮政项目):签章/签字日期                       |                                                                                   |
+| E1      | 银联代收/网联商委借记卡:银行名称1                      | 【E1-E77】如果存在每家银行费率手续不一致时填写此附件表单,如一致填写第一条中4互联网支付业务中对应的费率                           |
+| E2      | 银联代收/网联商委借记卡:手续费费率1                     |                                                                                   |
+| E3      | 银联代收/网联商委借记卡:手续费上限金额1                   |                                                                                   |
+| E4      | 银联代收/网联商委借记卡:手续费下限金额1                   |                                                                                   |
+| E5      | 银联代收/网联商委借记卡:银行名称2                      |                                                                                   |
+| E6      | 银联代收/网联商委借记卡:手续费费率2                     |                                                                                   |
+| E7      | 银联代收/网联商委借记卡:手续费上限金额2                   |                                                                                   |
+| E8      | 银联代收/网联商委借记卡:手续费下限金额2                   |                                                                                   |
+| E9      | 银联代收/网联商委借记卡:其他银行名称1                    |                                                                                   |
+| E10     | 银联代收/网联商委借记卡:其他银行名称2                    |                                                                                   |
+| E11     | 银联代收/网联商委借记卡:其他银行名称3                    |                                                                                   |
+| E12     | 银联代收/网联商委贷记卡:银行名称1                      |                                                                                   |
+| E13     | 银联代收/网联商委贷记卡:手续费费率1                     |                                                                                   |
+| E14     | 银联代收/网联商委贷记卡:手续费上限金额1                   |                                                                                   |
+| E15     | 银联代收/网联商委贷记卡:手续费下限金额1                   |                                                                                   |
+| E16     | 银联代收/网联商委贷记卡:银行名称2                      |                                                                                   |
+| E17     | 银联代收/网联商委贷记卡:手续费费率2                     |                                                                                   |
+| E18     | 银联代收/网联商委贷记卡:手续费上限金额2                   |                                                                                   |
+| E19     | 银联代收/网联商委贷记卡:手续费下限金额2                   |                                                                                   |
+| E20     | 银联代收/网联商委贷记卡:其他银行名称1                    |                                                                                   |
+| E21     | 银联代收/网联商委贷记卡:其他银行名称2                    |                                                                                   |
+| E22     | 银联代收/网联商委贷记卡:其他银行名称3                    |                                                                                   |
+| E23     | 快捷/协议支付/签约支付借记卡:银行名称1                   |                                                                                   |
+| E24     | 快捷/协议支付/签约支付借记卡:手续费费率1                  |                                                                                   |
+| E25     | 快捷/协议支付/签约支付借记卡:手续费上限金额1                |                                                                                   |
+| E26     | 快捷/协议支付/签约支付借记卡:手续费下限金额1                |                                                                                   |
+| E27     | 快捷/协议支付/签约支付借记卡:银行卡名称2                  |                                                                                   |
+| E28     | 快捷/协议支付/签约支付借记卡:手续费费率2                  |                                                                                   |
+| E29     | 快捷/协议支付/签约支付借记卡:手续费上限金额2                |                                                                                   |
+| E30     | 快捷/协议支付/签约支付借记卡:手续费下限金额2                |                                                                                   |
+| E31     | 快捷/协议支付/签约支付借记卡:其他银行1                   |                                                                                   |
+| E32     | 快捷/协议支付/签约支付借记卡:其他银行2                   |                                                                                   |
+| E33     | 快捷/协议支付/签约支付借记卡:其他银行3                   |                                                                                   |
+| E34     | 快捷/协议支付/签约支付贷记卡:银行名称1                   |                                                                                   |
+| E35     | 快捷/协议支付/签约支付贷记卡:手续费费率1                  |                                                                                   |
+| E36     | 快捷/协议支付/签约支付贷记卡:手续费上限金额1                |                                                                                   |
+| E37     | 快捷/协议支付/签约支付贷记卡:手续费下限金额1                |                                                                                   |
+| E38     | 快捷/协议支付/签约支付贷记卡:银行卡名称2                  |                                                                                   |
+| E39     | 快捷/协议支付/签约支付贷记卡:手续费费率2                  |                                                                                   |
+| E40     | 快捷/协议支付/签约支付贷记卡:手续费上限金额2                |                                                                                   |
+| E41     | 快捷/协议支付/签约支付贷记卡:手续费下限金额2                |                                                                                   |
+| E42     | 快捷/协议支付/签约支付贷记卡:其他银行1                   |                                                                                   |
+| E43     | 快捷/协议支付/签约支付贷记卡:其他银行2                   |                                                                                   |
+| E44     | 快捷/协议支付/签约支付贷记卡:其他银行3                   |                                                                                   |
+| E45     | 网银支付B2B企业账户:银行名称1                       |                                                                                   |
+| E46     | 网银支付B2B企业账户:手续费费率1                      |                                                                                   |
+| E47     | 网银支付B2B企业账户:手续费上限金额1                    |                                                                                   |
+| E48     | 网银支付B2B企业账户:手续费下限金额1                    |                                                                                   |
+| E49     | 网银支付B2B企业账户:银行卡名称2                      |                                                                                   |
+| E50     | 网银支付B2B企业账户:手续费费率2                      |                                                                                   |
+| E51     | 网银支付B2B企业账户:手续费上限金额2                    |                                                                                   |
+| E52     | 网银支付B2B企业账户:手续费下限金额2                    |                                                                                   |
+| E53     | 网银支付B2B企业账户:其他银行1                       |                                                                                   |
+| E54     | 网银支付B2B企业账户:其他银行2                       |                                                                                   |
+| E55     | 网银支付B2B企业账户:其他银行3                       |                                                                                   |
+| E56     | 网银支付B2C借记卡:银行名称1                        |                                                                                   |
+| E57     | 网银支付B2C借记卡:手续费费率1                       |                                                                                   |
+| E58     | 网银支付B2C借记卡:手续费上限金额1                     |                                                                                   |
+| E59     | 网银支付B2C借记卡:手续费下限金额1                     |                                                                                   |
+| E60     | 网银支付B2C借记卡:银行卡名称2                       |                                                                                   |
+| E61     | 网银支付B2C借记卡:手续费费率2                       |                                                                                   |
+| E62     | 网银支付B2C借记卡:手续费上限金额2                     |                                                                                   |
+| E63     | 网银支付B2C借记卡:手续费下限金额2                     |                                                                                   |
+| E64     | 网银支付B2C借记卡:其他银行1                        |                                                                                   |
+| E65     | 网银支付B2C借记卡:其他银行2                        |                                                                                   |
+| E66     | 网银支付B2C借记卡:其他银行3                        |                                                                                   |
+| E67     | 网银支付B2C贷记卡:银行名称1                        |                                                                                   |
+| E68     | 网银支付B2C贷记卡:手续费费率1                       |                                                                                   |
+| E69     | 网银支付B2C贷记卡:手续费上限金额1                     |                                                                                   |
+| E70     | 网银支付B2C贷记卡:手续费下限金额1                     |                                                                                   |
+| E71     | 网银支付B2C贷记卡:银行卡名称2                       |                                                                                   |
+| E72     | 网银支付B2C贷记卡:手续费费率2                       |                                                                                   |
+| E73     | 网银支付B2C贷记卡:手续费上限金额2                     |                                                                                   |
+| E74     | 网银支付B2C贷记卡:手续费下限金额2                     |                                                                                   |
+| E75     | 网银支付B2C贷记卡:其他银行1                        |                                                                                   |
+| E76     | 网银支付B2C贷记卡:其他银行2                        |                                                                                   |
+| E77     | 网银支付B2C贷记卡:其他银行3                        |                                                                                   |
+| E78     | 电子签约服务授权委托书:承诺授权方签名                     |                                                                                   |
+| E79     | 电子签约服务授权委托书:承诺签名或盖章                     |                                                                                   |

+ 3 - 7
任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/1.1商户进件/OCR结果查询.md

@@ -3,7 +3,7 @@
 测试环境:[https://test.wsmsd.cn/sit](https://test.wsmsd.cn/sit)  
 生产环境:[https://s2.lakala.com](https://s2.lakala.com/)  
 接口:/api/v3/tkbs/ocr_result  
-请求加密:否  
+请求加密:否
 返回解密:否
 
 ## 请求接口业务参数说明(req_data)
@@ -30,8 +30,6 @@
 
 ## 请求报文参考
 
-  
-
 {
   "ver": "1.0",
   "timestamp": "1724842957000",
@@ -42,7 +40,7 @@
   }
 }
 
-复制
+
 
 ## 响应报文参考
 
@@ -67,6 +65,4 @@
   },
   "msg": "SUCCESS",
   "timestamp": 1747042808790
-}
-
-复制
+}

+ 61 - 61
任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/1.1商户进件/新增商户进件.md

@@ -7,57 +7,57 @@
 
 ## 接口说明(reqData)
 
-| 字段名称                    | 约束  | 字段类型    | 长度  | 字段描述       | 取值说明                                                                                |
-| ----------------------- | --- | ------- | --- | ---------- | ----------------------------------------------------------------------------------- |
-| org_code                | 必传  | Long    | 20  | 机构编号       | 鉴权机构                                                                                |
-| user_no                 | 必传  | Long    | 20  | 商户归属用户信息   | 合作机构信息 由拓客SAAS提供                                                                    |
-| email                   | 必传  | String  | 80  | 商户邮箱       |                                                                                     |
-| busi_code               | 必传  | String  | 20  | 业务类型       | 见附录-[[业务类型表]],如:WECHAT_PAY                                                          |
-| mer_reg_name            | 必传  | String  | 80  | 商户注册名称     | 与营业执照名称一致,超出20字可缩减至20字以内                                                            |
-| mer_type                | 必传  | String  | 80  | 商户注册类型     | TP_MERCHANT:企业 TP_PERSONAL:小微个人                                                     |
-| mer_name                | 必传  | String  | 80  | 商户名称(经营名称) | 不能少于7个中文                                                                            |
-| mer_addr                | 必传  | String  | 80  | 商户详细地址     | 去掉省,市区后的详细地址                                                                        |
-| province_code           | 必传  | String  | 16  | 省代码        | 通过[[获取地区信息]]接口获取 对应 code字段                                                          |
-| city_code               | 必传  | String  | 16  | 市代码        | 通过[[获取地区信息]]接口获取 对应 code字段                                                          |
-| county_code             | 必传  | String  | 16  | 区县代码       | 通过[[获取地区信息]]接口获取 对应 code字段                                                          |
-| license_name            | 可选  | String  | 80  | 营业执照名称     | 同营业执照附件名称一致                                                                         |
-| license_no              | 可选  | String  | 40  | 营业执照号码     | 小微商户可不传, 其他必传                                                                       |
-| license_dt_start        | 可选  | String  | 10  | 营业执照开始时间   | 小微商户可不传, 其他必传,格式yyyy-MM-dd                                                          |
-| license_dt_end          | 可选  | String  | 10  | 营业执照过期时间   | 小微商户可不传, 其他必传,格式yyyy-MM-dd 长期传:9999-12-31                                           |
-| latitude                | 必传  | String  | 20  | 经度         | 进件所在地址经度                                                                            |
-| longtude                | 必传  | String  | 20  | 纬度         | 进件所在地址纬度                                                                            |
-| source                  | 必传  | String  | 20  | 进件来源       | APP, H5 (2选1)                                                                       |
-| business_content        | 必传  | String  | 64  | 商户经营内容     | 营业执照上的经营内容,不可超长                                                                     |
-| is_legal_person         | 可选  | boolean |     | 是否法人进件     | 不传默认法人                                                                              |
-| lar_name                | 必传  | String  | 20  | 法人姓名       |                                                                                     |
-| lar_id_type             | 必传  | String  | 8   | 法人证件类型     | 01 身份证,02 护照,03 港澳通行证,04 台胞证,10 外国人永久居留身份证,11 港澳居民居住证,12 台湾居民居住证,13 执行事务合伙人,99 其它证件 |
-| lar_id_card             | 必传  | String  | 40  | 法人证件号码     |                                                                                     |
-| lar_id_card_start       | 必传  | String  | 10  | 法人证件开始日期   | 格式yyyy-MM-dd                                                                        |
-| lar_id_card_end         | 必传  | String  | 10  | 法人证件过期时间   | 格式yyyy-MM-dd 长期传:9999-12-31                                                         |
-| contact_mobile          | 必传  | String  | 20  | 商户联系人手机号码  |                                                                                     |
-| contact_name            | 必传  | String  | 32  | 商户联系人姓名    |                                                                                     |
-| openning_bank_code      | 必传  | String  | 20  | 结算账户开户行号   | 通过 [[银行列表查询]] 接口获取 对应 branchBankNo字段                                                |
-| openning_bank_name      | 必传  | String  | 40  | 结算账户开户行名称  | 通过 [[银行列表查询]] 接口获取 对应 branchBankName字段                                              |
-| clearing_bank_code      | 必传  | String  | 20  | 结算账户清算行号   | 通过 [[银行列表查询]] 接口获取 对应 clearNo字段                                                     |
-| settle_province_code    | 必传  | String  | 20  | 结算信息省份代码   | 通过 [[获取银行地区信息]] 接口获取 对应 code字段                                                      |
-| settle_province_name    | 必传  | String  | 20  | 结算信息省份名称   | 通过 [[获取银行地区信息]] 接口获取 对应 name字段                                                      |
-| settle_city_code        | 必传  | String  | 20  | 结算信息城市代码   | 通过 [[获取银行地区信息]] 接口获取 对应 code字段                                                      |
-| settle_city_name        | 必传  | String  | 20  | 结算信息城市名称   | 通过 [[获取银行地区信息]] 接口获取 对应 name字段                                                      |
-| account_no              | 必传  | String  | 40  | 结算人银行卡号    |                                                                                     |
-| account_name            | 必传  | String  | 40  | 结算人账户名称    |                                                                                     |
-| account_type            | 必传  | String  | 8   | 结算账户类型     | 57 对公,58 对私                                                                         |
-| account_id_type         | 可选  | String  | 8   | 结算人证件类型    | 为空同法人                                                                               |
-| account_id_card         | 必传  | String  | 8   | 结算人证件号码    |                                                                                     |
-| account_id_dt_start     | 可选  | String  | 8   | 结算人证件开始时间  | 为空同法人                                                                               |
-| account_id_dt_end       | 可选  | String  | 8   | 结算人证件过期时间  | 为空同法人                                                                               |
-| external_no             | 可选  | String  | 32  | 外部编号       | 外部编号                                                                                |
-| biz_content             | 必传  | Object  | 0   | 业务扩展信息     | 参见 业务扩展信息                                                                           |
-| attchments              | 必传  | Set     | 集合  | 附件信息集合     | 参见 附件信息                                                                             |
-| settle_type             | 必传  | String  | 10  | 结算类型       | D0秒到 D1次日结算                                                                         |
-| shop_id                 | 可选  | String  | 20  | 网点代码       | 非连锁店不填                                                                              |
-| settlement_type         | 必传  | String  | 20  | 结算方式       | MANUAL:手动结算(结算至拉卡拉APP钱包),AUTOMATIC:自动结算,REGULAR:定时结算(仅企业商户支持)                       |
-| regular_settlement_time | 可选  | int     | 20  | 定时结算时间     | 定时结算必传 格式为 HHmm 例如结算时间为下午3点 传入值为 1500                                               |
-| contract_no             | 可选  | String  | 80  | 电子合同编号     | 电子合同接口获取,跳转至电子合同接口文档 此编号和AGREE_MENT附件,二选一即可                                         |
+| 字段名称                    | 约束  | 字段类型    | 长度  | 字段描述         | 取值说明                                                                                |
+| ----------------------- | --- | ------- | --- | ------------ | ----------------------------------------------------------------------------------- |
+| org_code                | 必传  | Long    | 20  | 机构编号         | 鉴权机构                                                                                |
+| user_no                 | 必传  | Long    | 20  | 商户归属用户信息     | 合作机构信息 由拓客SAAS提供                                                                    |
+| email                   | 必传  | String  | 80  | 商户邮箱         |                                                                                     |
+| busi_code               | 必传  | String  | 20  | 业务类型         | 见附录-[[业务类型表]],如:WECHAT_PAY                                                          |
+| mer_reg_name            | 必传  | String  | 80  | 商户注册名称       | 与营业执照名称一致,超出20字可缩减至20字以内                                                            |
+| mer_type                | 必传  | String  | 80  | 商户注册类型(商户类别) | TP_MERCHANT:企业、 TP_PERSONAL:小微个人                                                    |
+| mer_name                | 必传  | String  | 80  | 商户名称(经营名称)   | 不能少于7个中文                                                                            |
+| mer_addr                | 必传  | String  | 80  | 商户详细地址       | 去掉省,市区后的详细地址                                                                        |
+| province_code           | 必传  | String  | 16  | 省代码          | 通过[[获取地区信息]]接口获取 对应 code字段                                                          |
+| city_code               | 必传  | String  | 16  | 市代码          | 通过[[获取地区信息]]接口获取 对应 code字段                                                          |
+| county_code             | 必传  | String  | 16  | 区县代码         | 通过[[获取地区信息]]接口获取 对应 code字段                                                          |
+| license_name            | 可选  | String  | 80  | 营业执照名称       | 同营业执照附件名称一致                                                                         |
+| license_no              | 可选  | String  | 40  | 营业执照号码       | 小微商户可不传, 其他必传                                                                       |
+| license_dt_start        | 可选  | String  | 10  | 营业执照开始时间     | 小微商户可不传, 其他必传,格式yyyy-MM-dd                                                          |
+| license_dt_end          | 可选  | String  | 10  | 营业执照过期时间     | 小微商户可不传, 其他必传,格式yyyy-MM-dd 长期传:9999-12-31                                           |
+| latitude                | 必传  | String  | 20  | 经度           | 进件所在地址经度                                                                            |
+| longtude                | 必传  | String  | 20  | 纬度           | 进件所在地址纬度                                                                            |
+| source                  | 必传  | String  | 20  | 进件来源         | APP, H5 (2选1)                                                                       |
+| business_content        | 必传  | String  | 64  | 商户经营内容       | 营业执照上的经营内容,不可超长                                                                     |
+| is_legal_person         | 可选  | boolean |     | 是否法人进件       | 不传默认法人                                                                              |
+| lar_name                | 必传  | String  | 20  | 法人姓名         |                                                                                     |
+| lar_id_type             | 必传  | String  | 8   | 法人证件类型       | 01 身份证,02 护照,03 港澳通行证,04 台胞证,10 外国人永久居留身份证,11 港澳居民居住证,12 台湾居民居住证,13 执行事务合伙人,99 其它证件 |
+| lar_id_card             | 必传  | String  | 40  | 法人证件号码       |                                                                                     |
+| lar_id_card_start       | 必传  | String  | 10  | 法人证件开始日期     | 格式yyyy-MM-dd                                                                        |
+| lar_id_card_end         | 必传  | String  | 10  | 法人证件过期时间     | 格式yyyy-MM-dd 长期传:9999-12-31                                                         |
+| contact_mobile          | 必传  | String  | 20  | 商户联系人手机号码    |                                                                                     |
+| contact_name            | 必传  | String  | 32  | 商户联系人姓名      |                                                                                     |
+| openning_bank_code      | 必传  | String  | 20  | 结算账户开户行号     | 通过 [[银行列表查询]] 接口获取 对应 branchBankNo字段                                                |
+| openning_bank_name      | 必传  | String  | 40  | 结算账户开户行名称    | 通过 [[银行列表查询]] 接口获取 对应 branchBankName字段                                              |
+| clearing_bank_code      | 必传  | String  | 20  | 结算账户清算行号     | 通过 [[银行列表查询]] 接口获取 对应 clearNo字段                                                     |
+| settle_province_code    | 必传  | String  | 20  | 结算信息省份代码     | 通过 [[获取银行地区信息]] 接口获取 对应 code字段                                                      |
+| settle_province_name    | 必传  | String  | 20  | 结算信息省份名称     | 通过 [[获取银行地区信息]] 接口获取 对应 name字段                                                      |
+| settle_city_code        | 必传  | String  | 20  | 结算信息城市代码     | 通过 [[获取银行地区信息]] 接口获取 对应 code字段                                                      |
+| settle_city_name        | 必传  | String  | 20  | 结算信息城市名称     | 通过 [[获取银行地区信息]] 接口获取 对应 name字段                                                      |
+| account_no              | 必传  | String  | 40  | 结算人银行卡号      |                                                                                     |
+| account_name            | 必传  | String  | 40  | 结算人账户名称      |                                                                                     |
+| account_type            | 必传  | String  | 8   | 结算账户类型       | 57 对公,58 对私                                                                         |
+| account_id_type         | 可选  | String  | 8   | 结算人证件类型      | 为空同法人                                                                               |
+| account_id_card         | 必传  | String  | 8   | 结算人证件号码      |                                                                                     |
+| account_id_dt_start     | 可选  | String  | 8   | 结算人证件开始时间    | 为空同法人                                                                               |
+| account_id_dt_end       | 可选  | String  | 8   | 结算人证件过期时间    | 为空同法人                                                                               |
+| external_no             | 可选  | String  | 32  | 外部编号         | 外部编号                                                                                |
+| biz_content             | 必传  | Object  | 0   | 业务扩展信息       | 参见 业务扩展信息                                                                           |
+| attchments              | 必传  | Set     | 集合  | 附件信息集合       | 参见 附件信息                                                                             |
+| settle_type             | 必传  | String  | 10  | 结算类型         | D0秒到 D1次日结算                                                                         |
+| shop_id                 | 可选  | String  | 20  | 网点代码         | 非连锁店不填                                                                              |
+| settlement_type         | 必传  | String  | 20  | 结算方式         | MANUAL:手动结算(结算至拉卡拉APP钱包),AUTOMATIC:自动结算,REGULAR:定时结算(仅企业商户支持)                       |
+| regular_settlement_time | 可选  | int     | 20  | 定时结算时间       | 定时结算必传 格式为 HHmm 例如结算时间为下午3点 传入值为 1500                                               |
+| contract_no             | 可选  | String  | 80  | 电子合同编号       | 电子合同接口获取,跳转至 [[电子合同接口]] 此编号和AGREE_MENT 附件,二选一即可                                     |
 
 ## 业务拓展信息
 
@@ -65,12 +65,12 @@
 | --------------- | --- | ------ | --- | ------- | -------------------------- |
 | term_num        | 必传  | String | 2   | 终端数量    | 1                          |
 | term_ver        | 可选  | String | 80  | 终端版本    |                            |
-| fees            | 必传  | Set    |     | 费率集合    | 费率集合                       |
+| fees            | 必传  | Set    |     | 费率集合    | 费率集合(请看下面 -- 费率集合详情)       |
 | mcc             | 必传  | String | 8   | 商户MCC编号 | 通过 [[获取小类]] 接口获取 对应 code字段 |
-| activity_id     | 必传  | Long   | 8   | 归属活动信息  | 由拓客SAAS分配,见附录-业务类型表本地文件    |
+| activity_id     | 必传  | Long   | 8   | 归属活动信息  | 由拓客SAAS分配,见附录-业务类型表        |
 | withdrawal_type | 可选  | string |     | 提款类型    | 可用值[SECOND:秒到;AMOUNT:秒提]   |
 
-## 费率信息
+## 费率集合详情
 
 | 字段名称      | 约束  | 字段类型   | 长度  | 字段描述 | 取值说明             |
 | --------- | --- | ------ | --- | ---- | ---------------- |
@@ -124,7 +124,7 @@
                 {
                     "top_fee": "20",
                     "fee_code": "DEBIT_CARD",
-                    "fee_value": "0.38"
+                    "fee_value": "0.50"
                 },
                 {
                     "fee_code": "CREDIT_CARD",
@@ -182,11 +182,11 @@
 
 返回参数
 
-| 字段名称 | 约束 | 字段类型 | 长度 | 字段描述 | 取值说明 |
-| ---- | --- | --- | --- | ---- | --------------------------- |
-| merchant_no | 必传 | String | 20 | 内部商户编号 | 拓客系统商户号,如:100130106 |
-| status | 必传 | String | 80 | 商户状态 | WAIT_AUDI:待审核 |
-| state | 必传 | String | 20 | 进件标志 | 无实际意义,可忽略 |
+| 字段名称        | 约束  | 字段类型   | 长度  | 字段描述   | 取值说明                                                                                                         |
+| ----------- | --- | ------ | --- | ------ | ------------------------------------------------------------------------------------------------------------ |
+| merchant_no | 必传  | String | 20  | 内部商户编号 | 拓客系统商户号,如:100130106                                                                                          |
+| status      | 必传  | String | 80  | 商户状态   | 商户状态 OPEN:开通,CLOSE:关闭,LOSS:流失, WAIT_AUDI:审核中, REJECT:审核拒绝, REVIEW_FAIL:复核失败, REVIEW_AUDIT:复核审核中, ACTIVITY:激活 |
+| state       | 必传  | String | 20  | 进件标志   | 无实际意义,可忽略                                                                                                    |
 ```
 {
     "code": "000000",
@@ -194,7 +194,7 @@
     "timestamp": 1726215256739,
     "resp_data": {
         "merchant_no": "100130106",
-        "status": "WAIT_AUDI",
+        "status": "WAIT_AUDI", //审核中
         "state": "1"
     }
 }

+ 0 - 4
任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/1.1商户进件/查看当前商户是否需要照片补充.md

@@ -35,8 +35,6 @@
     }
 }
 
-复制
-
 ## 响应报文参考
 
 {
@@ -49,5 +47,3 @@
         "is_shop_outside": "Y"
     }
 }
-
-复制

+ 135 - 0
任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/1.1商户进件/电子合同接口.md

@@ -0,0 +1,135 @@
+# 电子合同申请
+
+更新时间:2026-03-16 17:30:14作者:wangyuwei
+
+> 提供与拉卡拉进行电子签约的第四方进行电子合同申请,电子合同签约成功后不需要将其下载出来作为附件上传,只需将电子合同编号(ecNo),在“新增商户入网”接口中在(contractNo)字段中传入即可。
+
+## **合同类别适用业务场景说明:**
+
+| 合同类别编码 | 合同名称                       | 适用场景      | 使用指南           |
+| ------ | -------------------------- | --------- | -------------- |
+| EC001  | 特约商户支付服务合作协议V3.1           | 商户入网      | 历史存量,即将下架      |
+| EC002  | 特约商户支付服务合作协议V3.2+分账结算授权委托书 | 商户入网+分账业务 | 历史存量,即将下架      |
+| EC003  | 分账结算授权委托书                  | 分账        | 历史存量,即将下架      |
+| EC004  | 特约商户支付服务合作协议V3.3           | 商户入网      | 历史存量,即将下架      |
+| EC005  | 特约商户支付服务合作协议V3.3+分账结算授权委托书 | 商户入网+分账业务 | 历史存量,即将下架      |
+| EC007  | 特约商户支付服务合作协议V4.1+分账结算授权委托书 | 商户入网+分账业务 | 历史存量,推荐使用EC010 |
+| EC008  | 特约商户支付服务合作协议V4.1           | 商户入网      | 历史存量,推荐使用EC015 |
+| EC009  | 清分结算授权委托书                  | 分账业务      | 历史存量,推荐使用EC011 |
+| EC010  | 特约商户支付服务合作协议V4.1+清分结算授权委托书 | 商户入网+分账业务 | 当前最新版本         |
+| EC011  | 清分结算授权委托书                  | 分账业务      | 当前最新版本         |
+| EC013  | 清分结算授权委托书+增值服务合作协议         | 分账业务+分账计费 | 当前最新版本         |
+| EC014  | 增值服务合作协议                   | 分账计费      | 当前最新版本         |
+| EC015  | 特约商户支付服务合作协议V4.2           | 商户入网      | 当前最新版本         |
+
+## **请求URL**
+
+测试环境:[https://test.wsmsd.cn/sit/api/v3/mms/open_api/ec/apply](https://test.wsmsd.cn/sit/api/v3/mms/open_api/ec/apply)  
+生产环境:[https://s2.lakala.com/api/v3/mms/open_api/ec/apply](https://s2.lakala.com/api/v3/mms/open_api/ec/apply)[](https://s2.lakala.com/api/v2/mms/openApi/ec/apply)
+
+## **请求参数**
+
+| **属性**                | **说明**        | **必选** | **类型**      | **备注**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
+| --------------------- | ------------- | ------ | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| order_no              | 四方机构自定义订单编号   | M      | String(32)  | 建议:平台编号+14位年月日时(24小时制)分秒+8位的随机数(同一接入机构不重复)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
+| org_id                | 机构号           | M      | Integer     | 签约方所属拉卡拉机构                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
+| ec_type_code          | 合同类别          | M      | String(12)  | EC001 : 特约商户支付服务合作协议V3.1(商户入网)  <br>EC002 : 特约商户支付服务合作协议V3.2(商户入网+分账)  <br>EC003 : 分账结算授权委托书  <br>EC004 : 特约商户支付服务合作协议V3.3(商户入网)  <br><br>EC005 : 特约商户支付服务合作协议V3.3(商户入网+分账)<br><br>EC007 : 特约商户支付服务合作协议V4.1 + 结算授权委托书 (商户入网 + 分账 )  <br><br>EC008 : 特约商户支付服务合作协议V4.1 (商户入网)<br><br>EC009 : 结算授权委托书<br><br>EC010 : 特约商户支付服务合作协议V4.1+清分结算授权委托书<br><br>EC011 : 清分结算授权委托书<br><br>EC013:清分结算授权委托书+增值服务合作协议(分账+分账计费)  <br>EC014:增值服务合作协议(分账计费)  <br>EC015:特约商户支付服务合作协议V4.2(商户入网)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
+| cert_type             | 法人/经营者证件类型    | M      | String(16)  | RESIDENT_ID(身份证);  <br>PASSPORT(护照);  <br>HK_MACAO_PASS(港澳居民往来内地通行证);  <br>TAIWAN_PASS(台湾居民来往大陆通行证);                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
+| cert_name             | 法人/经营者姓名      | M      | String(32)  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
+| cert_no               | 法人/经营者证件号码    | M      | String(32)  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
+| mobile                | 签约手机号         | M      | String(16)  | 1.小微个人商户(无营业执照),签约手机号必须填写商户经营者本人手机号;2.个体工商户或企业商户(有营业执照),签约手机号必须填写法人手机号或者经办人手机号 **合同签署人手机号,请慎重填写,不可修改**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
+| business_license_no   | 营业执照号         | C      | String(32)  | **个体工商户或企业商户 必传**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
+| business_license_name | 营业执照名称        | C      | String(32)  | **个体工商户或企业商户 必传**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
+| openning_bank_code    | 企业/经营者结算开户行号  | M      | String(32)  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
+| openning_bank_name    | 企业/经营者结算开户行名称 | M      | String(128) |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
+| acct_type_code        | 企业/经营者结算卡性质   | M      | String(2)   | 57 对公、 58 对私                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
+| acct_no               | 企业/经营者结算卡号    | M      | String(32)  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
+| acct_name             | 企业/经营者结算卡名称   | M      | String(64)  | 企业/经营者结算卡名称                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
+| ec_content_parameters | 电子合同内容参数集合    | M      | JSONString  | 按合同类型(ecTypeCode)传递不同的参数集合,<br><br>- [EC001合同参数说明](https://o.lakala.com/#/home/document/detail?id=290 "EC001合同参数说明")<br>    <br>- [EC002合同参数说明](https://o.lakala.com/#/home/document/detail?id=291 "EC002合同参数说明")<br>    <br>- [EC003合同参数说明](https://o.lakala.com/#/home/document/detail?id=292 "EC003合同参数说明")<br>    <br>- [EC004合同参数说明](https://o.lakala.com/#/home/document/detail?id=377 "EC004合同参数说明")<br>    <br>- [EC005合同参数说明](https://o.lakala.com/#/home/document/detail?id=499 "EC005合同参数说明")<br>    <br>- [EC007合同参数说明](https://o.lakala.com/#/home/document/detail?id=1169 "EC007合同参数说明")<br>    <br>- [EC008合同参数说明](https://o.lakala.com/#/home/document/detail?id=1170 "EC008合同参数说明")<br>    <br>- [EC009合同参数说明](https://o.lakala.com/#/home/document/detail?id=1171 "EC009合同参数说明")<br>    <br>- [EC010合同参数说明](https://o.lakala.com/#/home/document/detail?id=1430)<br>    <br>- [EC011合同参数说明](https://o.lakala.com/#/home/document/detail?id=1431)<br>    <br>- [EC013合同参数说明](https://o.lakala.com/#/home/document/detail?id=1170)<br>    <br>- [EC014合同参数说明](https://o.lakala.com/#/home/document/detail?id=1170)<br>    <br>- [[EC015合同参数说明]] |
+| agent_tag             | 是否经办签约        | C      | Integer(1)  | 0 不启用 1启用 ; 缺省 0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
+| agent_name            | 经办人名称         | C      | String(32)  | 经办人名称(要与证件号对应)agentTag 为1时 必传                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
+| agent_cert_type       | 经办人证件类型       | C      | String(32)  | RESIDENT_ID(身份证);  <br>PASSPORT(护照);  <br>HK_MACAO_PASS(港澳居民往来内地通行证);  <br><br>TAIWAN_PASS(台湾居民来往大陆通行证);<br><br>agentTag 为1时 必传                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
+| agent_cert_no         | 经办人证件号        | C      | String(32)  | agentTag 为1时 必传                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
+| agent_file_name       | 经办签约授权委托书文件名  | C      | String(32)  | agentTag 为1时 必传                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
+| agent_file_path       | 经办授权委托书文件路径   | C      | String(128) | agentTag 为1时 必传                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
+| remark                | 备注说明          | C      | String(128) | 备注说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
+| ret_url               | 电子合同签约结果回调通知  | C      | String(128) | 成功签约才通知                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
+
+## **响应参数**
+
+| 属性          | 说明                        | 必选  | 类型          | 备注                                    |
+| ----------- | ------------------------- | --- | ----------- | ------------------------------------- |
+| code        | 返回码                       | M   | String(6)   | 成功 000000 其它失败                        |
+| message     | 返回码描述                     | M   | String(128) | 返回码描述成功                               |
+| data        | 结果信息集合                    | M   | Object      |                                       |
+| order_no    | 请求上送的订单号                  | M   | String(32)  |                                       |
+| ec_apply_id | 电子签约申请受理编号                | M   | Long        |                                       |
+| result_url  | 电子签约申请结果H5链接地址(长度较长2000+) | M   | String      | 申请成功时:待签约合同H5链接  <br>申请失败时:错误信息结果H5链接 |
+
+### 请求报文
+
+{
+    "req_data": {
+        "acct_name": "农建",
+        "acct_no": "6221884568549653222",
+        "acct_type_code": "57",
+        "business_license_name": "拉卡拉科技有限公司",
+        "business_license_no": "90000000MA1FPFRF44",
+        "cert_name": "徐文",
+        "cert_no": "431003198708066555",
+        "cert_type": "PASSPORT",
+        "ec_content_parameters": "{\"A65\":\"是\",\"B20\":\"6221884568549653222\",\"A67\":2023,\"A68\":5,\"A69\":5,\"B3\":\"是\",\"B24\":\"徐文\",\"B46\":\"是\",\"B25\":\"110106196508231851\",\"B47\":\"专业化扫码支付\",\"B26\":\"18504343826\",\"B27\":\"徐文\",\"B28\":\"yhws@psbc-ubank.com\",\"B29\":\"110106196508231851\",\"A1\":\"拉卡拉科技有限公司\",\"A70\":2023,\"A71\":5,\"A72\":5,\"A51\":\"0%\",\"A52\":\"0.01%\",\"B30\":\"18269443753\",\"B31\":\"拉卡拉科技有限公司\",\"B10\":\"拉卡拉科技有限公司\",\"B32\":\"朱有有\",\"B33\":\"上海市黄浦区新码头街\",\"B34\":\"18504343826\",\"A58\":\"2\",\"B13\":\"山东省临沂市\",\"A59\":\"是\",\"B14\":\"90000000MA1FPFRF44\",\"A19\":4.0,\"B18\":\"朱有有\",\"B19\":\"邮储银行联行行号\",\"D1\":\"2023/05/05\",\"B1\":2023,\"B2\":5,\"B8\":\"拉卡拉科技有限公司\",\"B9\":\"未列入其他代码的食品商店\",\"A61\":\"是\",\"A64\":\"邮惠万家银行\"}",
+        "ec_type_code": "EC004",
+        "mobile": "13813913988",
+        "openning_bank_code": "403100000004",
+        "openning_bank_name": "招商银行",
+        "order_no": "e0a1d6f8dbca4ee99dddf8a805778d37",
+        "org_id": 1,
+        "remark": "测试",
+        "version": "1.0"
+    }
+}
+
+### 成功响应报文
+
+{
+    "code": "000000",
+    "msg": "成功",
+    "resp_data": {
+        "order_no": "e0a1d6f8dbca4ee99dddf8a805778d37",
+        "ec_apply_id": 863797013367664640,
+        "result_url": "https://jrt.wsmsd.cn/signature/s/wl6392"
+    }
+}
+
+## 异步签约结果通知消息(respData部分)
+
+|属性|说明|必选|类型|备注|
+|---|---|---|---|---|
+|version|版本号|M|String(32)|1.0|
+|orgId|机构号|M|Integer|合同所属机构号|
+|orderNo|请求上送的订单号|M|String(32)||
+|ecApplyId|电子签约申请受理编号|M|Long||
+|ecNo|电子合同号|M|String(32)|QT20210914000216202|
+|ecName|电子合同名称|M|String(32)|特约商户支付服务合作协议V3.1|
+|ecStatus|电子合同签署状态|M|String(32)|UNDONE 未完成  <br>COMPLETED 已完成|
+
+### 异步通知报文
+
+{
+    "ecApplyId": 635798487769907200,
+    "ecName": "特约商户支付服务合作协议V3.1",
+    "ecNo": "QT20221021000157861",
+    "ecStatus": "COMPLETED",
+    "orderNo": "177212022102111161183863984",
+    "orgId": 1,
+    "version": "1.0"
+}
+
+## 错误码
+
+| 错误码    | 描述         | 备注           |
+| ------ | ---------- | ------------ |
+| 000000 | 交易成功       |              |
+| 087900 | 三四要素认证失败   | 此状态下可申请转人工复核 |
+| 087901 | 手机号实名认证不通过 |              |

+ 69 - 0
任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/1.1商户进件/电子合同查询.md

@@ -0,0 +1,69 @@
+# 电子合同查询
+
+更新时间:2025-05-07 11:07:07作者:lichen
+
+> 提供申请过与拉卡拉电子签约用户查询电子合同签署状态
+
+## **请求URL**
+
+测试环境:[https://test.wsmsd.cn/sit/api/v3/mms/open_api/ec/q_status](https://test.wsmsd.cn/sit/api/v3/mms/open_api/ec/q_status)  
+生产环境:[https://s2.lakala.com/api/v3/mms/open_api/ec/q_status](https://s2.lakala.com/api/v3/mms/open_api/ec/q_status)
+
+## **请求参数**
+
+|**属性**|**说明**|**必选**|**类型**|**备注**|
+|---|---|---|---|---|
+|version|接口版本号|M|String(32)|当前默认 1.0|
+|order_no|四方机构自定义订单编号|M|String(32)|建议:平台编号+14位年月日时(24小时制)分秒+8位的随机数(同一接入机构不重复)|
+|org_code|机构号|M|Integer|签约方所属拉卡拉机构|
+|ec_apply_id|电子合同申请受理号|M|Long|申请接口反馈编号|
+
+## **响应参数**
+
+|**属性**|**说明**|**必选**|**类型**|**备注**|
+|---|---|---|---|---|
+|code|返回码|M|String(6)|成功 000000 其它失败|
+|message|返回码描述|M|String(128)|返回码描述成功|
+|data|结果信息集合|M|Object||
+|order_no|请求上送的订单号|M|32||
+|ec_apply_id|电子签约申请受理编号|M|32||
+|ec_status|电子合同签署状态|M|32|UNDONE 未完成  <br>COMPLETED 已完成|
+|ec_no|电子合同号|C|32|签署完成反馈|
+
+## **示例报文**
+
+### **请求报文**
+
+{
+    "req_data": {
+        "ec_apply_id": 863797013367664640,
+        "order_no": "e0a1d6f8dbca4ee99dddf8a805778d37",
+        "org_id": 1
+    },
+    "ver": "1.0.0",
+    "timestamp": "1633916818798",
+    "req_id": "baff59de4694438ca9089862253517a5"
+}
+
+复制
+
+### **成功响应报文**
+
+{
+    "code": "000000",
+    "msg": "成功",
+    "resp_data": {
+        "order_no": "e0a1d6f8dbca4ee99dddf8a805778d37",
+        "ec_apply_id": 863797013367664640,
+        "ec_status": "UNDONE",
+        "ec_no": ""
+    }
+}
+
+复制
+
+## **错误码**
+
+|**错误码**|**描述**|**备注**|
+|---|---|---|
+|000000|交易成功||

+ 15 - 14
任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/1.3商户信息变更/增终进件.md

@@ -8,23 +8,24 @@
 
 ## 请求接口业务参数说明(req_data)
 
-|参数名称|参数说明|请求类型|是否必须|数据类型|schema|
-|---|---|---|---|---|---|
-|merchant_no|外部商户编号|body|TRUE|string||
-|bz_pos|见附录-业务类型表|body|TRUE|string||
-|term_num|终端数量|body|TRUE|Integer||
-|shop_id|网点编号|body|TRUE|Long|获取商户信息接口中有返回|
-|fees|费率信息集合|body|FALSE|List< FeeInfoDto>|详见FeeInfoDto对象|
-|attachments|附件信息集合|body|FALSE|List< AttachmentDto >|详见AttachmentDto对象|
-|org_code|鉴权机构号|Body|TRUE|String||
+| 参数名称        | 参数说明          | 请求类型 | 是否必须  | 数据类型                  | schema              |
+| ----------- | ------------- | ---- | ----- | --------------------- | ------------------- |
+| merchant_no | 外部商户编号        | body | TRUE  | string                |                     |
+| bz_pos      | 见附录-[[业务类型表]] | body | TRUE  | string                |                     |
+| term_num    | 终端数量          | body | TRUE  | Integer               |                     |
+| shop_id     | 网点编号          | body | TRUE  | Long                  | [[获取商户信息]] 接口中有返回   |
+| fees        | 费率信息集合        | body | FALSE | List< FeeInfoDto>     | 详见 FeeInfoDto 对象    |
+| attachments | 附件信息集合        | body | FALSE | List< AttachmentDto > | 详见 AttachmentDto 对象 |
+| org_code    | 鉴权机构号         | Body | TRUE  | String                |                     |
 
 ### FeeInfoDto对象
 
-|参数名称|参数说明|请求类型|是否必须|数据类型|schema|
-|---|---|---|---|---|---|
-|fee|费率|body|TRUE|Double||
-|top_fee|费率封顶上限|body|TRUE|Double||
-|fee_type|费率类型(详见费率代码表)|body|TRUE|String||
+| 参数名称     | 参数说明              | 请求类型 | 是否必须 | 数据类型   | schema |
+| -------- | ----------------- | ---- | ---- | ------ | ------ |
+| fee      | 费率                | body | TRUE | Double |        |
+| top_fee  | 费率封顶上限            | body | TRUE | Double |        |
+| fee_type | 费率类型(详见[[费率代码表]]) | body | TRUE | String |        |
+|          |                   |      |      |        |        |
 
 ### AttachmentDto对象
 

+ 20 - 20
任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/1.3商户信息查询/支付宝微信认证状态查询.md

@@ -8,29 +8,29 @@
 
 ## 请求接口业务参数说明(req_data)
 
-|参数名称|参数说明|数据类型|是否必须|示例| |
-|---|---|---|---|---|---|
-|merchant_no|外部商户号|Body|是|String||
-|register_type|查询类型 微信:WXZF/支付宝:ZFBZF|Body|是|String||
-|org_code|机构号|body|是|string||
+| 参数名称          | 参数说明                   | 数据类型 | 是否必须 | 示例     |     |
+| ------------- | ---------------------- | ---- | ---- | ------ | --- |
+| merchant_no   | 外部商户号                  | Body |     | String |     |
+| register_type | 查询类型 微信:WXZF/支付宝:ZFBZF | Body |     | String |     |
+| org_code      | 机构号                    | body |     | string |     |
 
 ## 返回参数(resp_data)
 
-|参数名称|参数说明|请求类型|是否必填|数据类型|
-|---|---|---|---|---|
-|customer_name|商户名称|Body|是|String|
-|merchant_no|银联商户号|Body|是|String|
-|inner_customer_no|内部商户号|Body|是|String|
-|customer_no|商户号|Body|是|Long|
-|sub_mch_id|微信商户号|Body|是|String|
-|channel_id|申请渠道号|Body|是|String|
-|register_channel|申请渠道名称|Body|否|String|
-|register_time|申请时间|Body|否|String|
-|applyment_state|申请状态|Body|否|String|
-|real_name_type|认证类型|Body|否|String|
-|authorize_state|认证状态|Body|否|String|
-|reject_reason|拒绝原因|Body|否|String|
-|applyment_id|申请单号|Body|否|String|
+| 参数名称              | 参数说明   | 请求类型 | 是否必填 | 数据类型   |
+| ----------------- | ------ | ---- | ---- | ------ |
+| customer_name     | 商户名称   | Body |     | String |
+| merchant_no       | 银联商户号  | Body |     | String |
+| inner_customer_no | 内部商户号  | Body |     | String |
+| customer_no       | 商户号    | Body |     | Long   |
+| sub_mch_id        | 微信商户号  | Body |     | String |
+| channel_id        | 申请渠道号  | Body |     | String |
+| register_channel  | 申请渠道名称 | Body |     | String |
+| register_time     | 申请时间   | Body |     | String |
+| applyment_state   | 申请状态   | Body |     | String |
+| real_name_type    | 认证类型   | Body |     | String |
+| authorize_state   | 认证状态   | Body |     | String |
+| reject_reason     | 拒绝原因   | Body |     | String |
+| applyment_id      | 申请单号   | Body |     | String |
 
 ## 请求报文参考
 

+ 10 - 10
任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/1.3商户信息查询/获取商户信息.md

@@ -18,16 +18,16 @@
 
 ### OpenMerchantVO
 
-|参数名称|参数说明|类型|schema|
-|---|---|---|---|
-|customer|商户基础信息|Customer对象|Customer对象|
-|customer_fee|商户费率信息|array|Customer_fee对象|
-|external_no|外部编号|String|varchar(32)|
-|pos|商户终端信息,绑定才有|Pos|Pos|
-|product_vos|已有产品信息|array|Customer_product_vo对象|
-|settle_card|商户结算信息|Customer_settle_card对象|Customer_settle_card对象|
-|shop_info_list|网点信息|array|Shop_info对象|
-|terminal_info|终端信息集合|array|terminal_info对象|
+| 参数名称           | 参数说明        | 类型                     | schema                 |
+| -------------- | ----------- | ---------------------- | ---------------------- |
+| customer       | 商户基础信息      | Customer对象             | Customer对象             |
+| customer_fee   | 商户费率信息      | array                  | Customer_fee对象         |
+| external_no    | 外部编号        | String                 | varchar(32)            |
+| pos            | 商户终端信息,绑定才有 | Pos                    | Pos                    |
+| product_vos    | 已有产品信息      | array                  | Customer_product_vo对象  |
+| settle_card    | 商户结算信息      | Customer_settle_card对象 | Customer_settle_card对象 |
+| shop_info_list | 网点信息        | array                  | Shop_info对象            |
+| terminal_info  | 终端信息集合      | array                  | terminal_info对象        |
 
 ### Customer
 

+ 58 - 58
任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/附录/业务类型表.md

@@ -1,58 +1,58 @@
-|业务类型|业务名称|
-|---|---|
-|BPOS|传统POS|
-|ZPOS|电签POS|
-|ZPOS4G|电签POS4G|
-|SUPER_POS|智能pos|
-|B_WIZARD|传统语音大POS|
-|PAPER_CODE|码牌|
-|WECHAT_PAY|专业化扫码|
-|SCANNING_GUN_PAY|Q码精灵|
-|EASY_PAYMENT|缴费易|
-|LIANTUO_ELF|联拓小精灵|
-|B2B_SKM|B2B收款码|
-|B2B_SYT|聚合收银台|
-|KLYX|云音箱|
-|QRCODE|收款王|
-|MONEY_BOX|收钱宝盒|
-|APP|APP收款|
-|SUPER_POS_PRO|智能PosPro|
-|BUSINESS_CLOUD_PRINT|拉生意云打印|
-|YOU_KE_LI_LI|油客里里|
-|LE_YOU_KE|乐友客|
-|XIAOYI_SCAN_CODE_ORDER|小易扫码点餐|
-|JX_CASHIER|吉祥收银|
-|LKL_SCRM|拉卡拉SCRM|
-|NAKE_CASHIER|纳客收银|
-|YIN_XIANG_LI|银响力|
-|EASY_TO_PAY|即易付|
-|U_HUO_YUN_ORDER|优获云点单|
-|YIXIANG_RETAIL_V10|易享零售V10|
-|AIBAO_CASHIER|爱宝收银|
-|MICRO_SUPER_POS|微智能|
-|HUI_YING_DOOR|慧盈门|
-|ZHI_BAI_WEI|智百威|
-|YUN_ZHANG_GUI|云掌柜|
-|YUNCHAO_TECH_BC|云超科技线下|
-|PULL_BUSINESS|拉生意收款宝|
-|WANLI_NIU_RETAIL|万里牛零售|
-|SMART_TOURISM|智慧旅游|
-|YI_SAN_CASHIER|壹叁收银机|
-|ZHI_FU|智付|
-|SI_XUN_TIAN_STORE|思迅天店|
-|SMART_YOUKE|智慧油客|
-|MOBILE_POS|手机POS|
-|HUI_BUTLER|惠管家|
-|CHANG_YUE_BAO|场约宝|
-|FOUR_NINE_EIGHT_POST|四九八-邮政|
-|YER_SAN_WU|惠元付|
-|TIAN_ZHI_XING|天之星|
-|TONG_ZHI_PARKING|统智停车|
-|TONG_ZHI_WU_GUAN|统智物管|
-|YF_YM|御风云码|
-|YING_CE|鹰策油站|
-|YIN_BAO|银豹|
-|JHPAY|聚合支付|
-|YI_MA_TONG|逸码通|
-|YI_MA_TONG_PLUS|逸码通PLUS|
-|GAI_HUA_TENG_FEI|盖华腾飞|
+| 业务类型                   | 业务名称             |
+| ---------------------- | ---------------- |
+| BPOS                   | 传统POS            |
+| ZPOS                   | 电签POS            |
+| ZPOS4G                 | 电签POS4G          |
+| SUPER_POS              | 智能pos            |
+| B_WIZARD               | 传统语音大POS         |
+| PAPER_CODE             | 码牌               |
+| WECHAT_PAY             | 专业化扫码 ----自己要新增的 |
+| SCANNING_GUN_PAY       | Q码精灵             |
+| EASY_PAYMENT           | 缴费易              |
+| LIANTUO_ELF            | 联拓小精灵            |
+| B2B_SKM                | B2B收款码           |
+| B2B_SYT                | 聚合收银台 ----       |
+| KLYX                   | 云音箱              |
+| QRCODE                 | 收款王              |
+| MONEY_BOX              | 收钱宝盒             |
+| APP                    | APP收款            |
+| SUPER_POS_PRO          | 智能PosPro         |
+| BUSINESS_CLOUD_PRINT   | 拉生意云打印           |
+| YOU_KE_LI_LI           | 油客里里             |
+| LE_YOU_KE              | 乐友客              |
+| XIAOYI_SCAN_CODE_ORDER | 小易扫码点餐           |
+| JX_CASHIER             | 吉祥收银             |
+| LKL_SCRM               | 拉卡拉SCRM          |
+| NAKE_CASHIER           | 纳客收银             |
+| YIN_XIANG_LI           | 银响力              |
+| EASY_TO_PAY            | 即易付              |
+| U_HUO_YUN_ORDER        | 优获云点单            |
+| YIXIANG_RETAIL_V10     | 易享零售V10          |
+| AIBAO_CASHIER          | 爱宝收银             |
+| MICRO_SUPER_POS        | 微智能              |
+| HUI_YING_DOOR          | 慧盈门              |
+| ZHI_BAI_WEI            | 智百威              |
+| YUN_ZHANG_GUI          | 云掌柜              |
+| YUNCHAO_TECH_BC        | 云超科技线下           |
+| PULL_BUSINESS          | 拉生意收款宝           |
+| WANLI_NIU_RETAIL       | 万里牛零售            |
+| SMART_TOURISM          | 智慧旅游             |
+| YI_SAN_CASHIER         | 壹叁收银机            |
+| ZHI_FU                 | 智付               |
+| SI_XUN_TIAN_STORE      | 思迅天店             |
+| SMART_YOUKE            | 智慧油客             |
+| MOBILE_POS             | 手机POS            |
+| HUI_BUTLER             | 惠管家              |
+| CHANG_YUE_BAO          | 场约宝              |
+| FOUR_NINE_EIGHT_POST   | 四九八-邮政           |
+| YER_SAN_WU             | 惠元付              |
+| TIAN_ZHI_XING          | 天之星              |
+| TONG_ZHI_PARKING       | 统智停车             |
+| TONG_ZHI_WU_GUAN       | 统智物管             |
+| YF_YM                  | 御风云码             |
+| YING_CE                | 鹰策油站             |
+| YIN_BAO                | 银豹               |
+| JHPAY                  | 聚合支付             |
+| YI_MA_TONG             | 逸码通              |
+| YI_MA_TONG_PLUS        | 逸码通PLUS          |
+| GAI_HUA_TENG_FEI       | 盖华腾飞             |

+ 15 - 15
任务小笔记/26年/06-01:拉卡拉进件/官方接入文档归纳/附录/费率代码表.md

@@ -1,15 +1,15 @@
-|字段名称|字段描述|
-|---|---|
-|WECHAT|微信|
-|ALIPAY|支付宝|
-|JD|京东|
-|DEBIT_CARD|借记卡费率(银行卡交易必送,此费率类型必须上送封顶值 topFee)|
-|CREDIT_CARD|贷记卡费率(银行卡交易必送)|
-|UNIONPAY_WALLET_DEBIT_FEE|银联二维码借记卡(云闪付扫码交易必送)|
-|UNIONPAY_WALLET_CREDIT_FEE|银联二维码贷记卡(云闪付扫码交易必送)|
-|YL_DISCOUNT_CREDIT_FEE|银联二维码贷记-优惠|
-|SCAN_PAY_SECOND|扫码管理费O费率|
-|CARD_SECOND|刷卡管理费O费率|
-|PAPER_CODE_D0|码牌管理费O费率|
-|APP_D0|拉卡拉APP收款管理费O费率|
-|MER_WITHDRAWAL_SECOND|商户秒提费率|
+| 字段名称                       | 字段描述                               |
+| -------------------------- | ---------------------------------- |
+| WECHAT                     | 微信                                 |
+| ALIPAY                     | 支付宝                                |
+| JD                         | 京东                                 |
+| DEBIT_CARD                 | 借记卡费率(银行卡交易必送,此费率类型必须上送封顶值 topFee) |
+| CREDIT_CARD                | 贷记卡费率(银行卡交易必送)                     |
+| UNIONPAY_WALLET_DEBIT_FEE  | 银联二维码借记卡(云闪付扫码交易必送)                |
+| UNIONPAY_WALLET_CREDIT_FEE | 银联二维码贷记卡(云闪付扫码交易必送)                |
+| YL_DISCOUNT_CREDIT_FEE     | 银联二维码贷记-优惠                         |
+| SCAN_PAY_SECOND            | 扫码管理费O费率                           |
+| CARD_SECOND                | 刷卡管理费O费率                           |
+| PAPER_CODE_D0              | 码牌管理费O费率                           |
+| APP_D0                     | 拉卡拉APP收款管理费O费率                     |
+| MER_WITHDRAWAL_SECOND      | 商户秒提费率                             |

+ 8 - 0
任务小笔记/26年/06-01:拉卡拉进件/未完成工作项.md

@@ -0,0 +1,8 @@
+1. 区分上传端 --- 销花宝 - 花掌柜:区分申请来源哪个客户端及费率
+2. 把实现移植到花掌柜上 ---- 问问ai怎么搬运?说出你的划分标准
+3. 完全性检查???
+4. 营业执照到期时间默认设置为:永久有效(2100-01-01)
+
+#### 把实现移植到花掌柜上 ---- 问问ai怎么搬运?说出你的划分标准
+1. 从前端页面开始列起,让codex自动在前端页面索引所用到的api,接着把ghs-biz下代码搬运到 hd-biz 下
+2. 花掌柜的费率是 0.38%

+ 29 - 0
任务小笔记/26年/07-01:生日变更与优化/SQL.md

@@ -0,0 +1,29 @@
+xhSms 从
+```
+CREATE TABLE `xhSms` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `merchantId` int(11) NOT NULL DEFAULT '0' COMMENT '商家id',
+  `userId` int(11) NOT NULL DEFAULT '0' COMMENT '收信人',
+  `type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '通知类型',
+  `content` varchar(1000) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '内容',
+  `addTime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '添加时间',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='短信发送记录';
+```
+变更为
+```
+CREATE TABLE `xhSms` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `mainId` bigint(11) NOT NULL DEFAULT '0' COMMENT '中央id',
+  `shopId` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '门店',
+  `userId` int(11) NOT NULL DEFAULT '0' COMMENT '收信人',
+  `mobile` varchar(15) NOT NULL DEFAULT '' COMMENT '手机号',
+  `type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0通知类型, 1营销类型',
+  `content` varchar(1000) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '内容',
+  `addTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
+  `updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+  PRIMARY KEY (`id`),
+  KEY `m_s_idx` (`mainId`, `shopId`),
+  KEY `mobile` (`mobile`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='短信发送记录';
+```

+ 140 - 0
任务小笔记/26年/07-01:生日变更与优化/状态回执.md

@@ -0,0 +1,140 @@
+# 接口概述
+
+- 状态回执是短信在终端用户触达的状态,可以判断终端是否成功接收到了短信。状态分为成功、失败、未知这三大类,成功状态只有一个,即"status":"DELIVRD",三网均为“DELIVRD”;失败状态的种类比较多,详情请参考[回执码查询](https://www.chuanglan.com/receiptcode)
+
+---
+
+# 注意事项
+
+- 只有成功和失败这两大类的状态可以通过本API获得,未知的状态代表空的意思,未知的状态会在72小时内可能有更新,如超过72小时未改变状态,那么不会再变更,并且不会生成回执报告。
+- 状态回执的获得方式有两种,即推送和拉取,同时只能选择一种,不可同时选择。
+- 每个号码短信的状态回执只能获取一次,当我们推送给您或者您拉取走这一条数据后,将不在重复获得。
+
+---
+
+# 前置条件(提交短信之前)
+
+| 前置条件           | 说明                                                                                                                                                                                                                                  |
+| -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| **传入report参数** | - 提交短信接口入参中,传入report参数:"report"="true",否则无法使用回执接口                                                                                                                                                                                   |
+| **配置获取方式**     | - 新开账户默认为推送方式,如需改为拉取需要登录[控制台](https://www.chuanglan.com/)修改<br>- 推送方式的推送地址可通过短信接口传入,也可以登录控制台配置。<br>- 单个API账号同一时间只能选择一种获取方式。<br><br>**回执配置示例**  <br><br>![](https://static2.253.com/document/2025-12/T3P62ISO95AUV3T0.png)<br><br>预览 |
+
+---
+
+# 状态回执消息体
+
+### 1、推送的方式
+
+#### 1.1推送 GET 参数
+
+| **名称**     | **类型** | **描述**                                                     | **示例**                                                                      |
+| ---------- | ------ | ---------------------------------------------------------- | --------------------------------------------------------------------------- |
+| receiver   | String | 接收验证的用户名,配置时不填写则为空,如需配置请联系技术                               |                                                                             |
+| pswd       | String | 接收验证的密码,配置时不填则为空,如需配置请联系技术                                 |                                                                             |
+| mobile     | String | 接收短信的手机号码                                                  | "mobile":"13900000000"                                                      |
+| status     | String | 运营商返回的短信接收状态(接收成功只有一个状态:DELIVRD,其余失败状态请前往 code.253.com 查看) | "status":"DELIVRD"                                                          |
+| statusDesc | String | "status"状态里对应的中文解释,内容经过 URLEncode 编码(UTF-8),需要自行解码后得到明文    | "statusDesc":"%E7%9F%AD%E4%BF%A1%E5%  <br>8F%91%E9%80%81%E6%88%90%E5%8A%9F" |
+| notifyTime | String | 253创蓝平台收到运营商推送状态报告的时间,格式 yyMMddHHmmss                      | "notifyTime":"241104172820"                                                 |
+| reportTime | String | 运营商返回的状态更新时间,格式 YYMMddHHmm,其中 YY=年份的最后两位(00-99)            | "reportTime":"2411041728"                                                   |
+| msgid      | String | 消息 id(32位纯数字,调用发送接口时接口响应的msgId)                            | "msgid":"24073116453300902203000007708373"                                  |
+| length     | int    | 下发短信计费条数,纯数字                                               | "length":"1"                                                                |
+| uid        | String | 请求发送接口传了uid参数,则会返回该参数,反之没有                                 | "uid":"154789574"                                                           |
+
+#### 1.2示例说明
+
+- 比如用户账户设置的短信回送地址为:http://client_url,那么当 253 平台收到运营商回送的短信状态后便会以 GET 请求访问以下 url:
+
+复制成功
+
+```json
+
+http://client_url?receiver=&pswd=&msgid=24073116453300902203000007708373&reportTime=2411041728&mobile=13900000000&status=DELIVRD&notifyTime=241104172820&statusDesc=%E7%9F%AD%E4%BF%A1%E5%8F%91%E9%80%81%E6%88%90%E5%8A%9F&length=1
+ 
+```
+
+---
+
+#### 1.3推送重试机制
+
+- 推送失败后将自动重试,最多重试2次(共3次推送机会)
+- 每次重推间隔时间为1分钟
+- 第三次推送失败后,将不再继续推送
+
+---
+
+#### 1.4客户端响应要求
+
+复制成功
+
+```json
+{"clcode":"000000"} ---- 代表成功
+{"clcode":"111111"} ---- 代表失败,需要重新推送(按照一定规则重新推送)
+```
+
+---
+
+### 2、拉取的方式
+
+- 我方拉取方式的明细存储上限为100万,建议您在发送短信后设置定时拉取任务,避免因存储上限导致明细丢失。
+
+#### 请求地址:
+
+> - 请求方式:json 格式封装的字符串,采用 post 方式提交请求
+> - Content-Type:application/json
+> - 编码格式:utf-8
+> - 请求地址:`https://smssh1.253.com/msg/pull/report`
+
+#### 参数说明
+
+|**参数名**|**类型**|**是否必须**|**描述**|**示例**|
+|---|---|---|---|---|
+|account|String|是|API 账号|"account":"N9000001"|
+|password|String|是|API 密码(8-16 位)|"password":"ABCdef15301"|
+|count|integer|否|拉取个数(上限 200,默认 20)|"count":"20"|
+
+#### 请求示例
+
+复制成功
+
+```json
+{
+  "account":"N6000001",
+  "password":"123456",
+  "count":"20"
+}
+```
+
+#### 响应参数说明
+
+|**参数名**|**类型**|**描述**|**示例**|
+|---|---|---|---|
+|ret|int|请求状态。0 成功,其他状态为失败|"ret":0|
+|result|String|状态明细结果,没结果则返回空数组|"result":[{ XXX:XXX }]|
+|mobile|String|接收短信的手机号码|"mobile":"13900000000"|
+|status|String|运营商返回的状态(接收成功只有一个状态:DELIVRD,其余失败状态前往 code.253.com 查看)|"status":"DELIVRD"|
+|statusDesc|String|"status"状态里对应的中文解释|"statusDesc":"短信发送成功|
+|notifyTime|String|253创蓝平台收到运营商推送状态报告的时间,格式 yyMMddHHmmss|"notifyTime":"241104172820"|
+|reportTime|String|运营商返回的状态更新时间,格式 YYMMddHHmm,其中 YY=年份的最后两位(00-99)|"reportTime":"2411041728"|
+|msgId|String|消息 id (32位纯数字,调用发送接口时我们响应的msgId)|"msgId":"24073116453300902203000007708373"|
+|length|String|下发短信计费条数,纯数字|"length":"1"|
+|uid|String|请求发送接口传了uid参数,则会返回该参数,反之没有|"uid":"154789574"|
+
+#### 响应示例
+
+复制成功
+
+```json
+{
+  "ret":0,
+  "result":[{
+    "uid":"154789574",
+    "statusDesc":"短信发送成功",
+    "notifyTime":"241104172820",
+    "mobile":"13900000000",
+    "msgId":"24073116453300902203000007708373",
+    "reportTime":"2411041728",
+    "status":"DELIVRD",
+    "length": "1"
+  }]
+}
+```

+ 188 - 0
任务小笔记/26年/07-01:生日变更与优化/短信发送.md

@@ -0,0 +1,188 @@
+# 短信格式
+
+注:正文可以包含链接、地址、换行等文案。退订语目前只支持“拒收请回复R”,不支持小写r,并且只能放在整个短信内容的最末尾,后续可能会随工信部政策调整。
+
+  
+
+|短信类型|短信模板示例|短信格式|短信内容示例|
+|---|---|---|---|
+|验证码账号|您正在申请手机注册,验证码为:{s},5分钟内有效!|【短信签名】+ 正文(只包含用于验证类的文案)|向用户手机发送: 【创蓝云智】您正在申请手机注册,验证码为:123456,5分钟内有效!|
+|通知短信账号|尊敬的客户,您购买的会员卡已于{s}正式到期。如您要继续使用,请于{s}前及时续费或重新购买。|【短信签名】+ 正文(除推广外的通知文案,例如物流通知)|向用户手机发送: 【创蓝云智】尊敬的客户,您购买的会员卡已于11月29日正式到期。如您要继续使用,请于11月29日前及时续费或重新购买。|
+|会员营销账号|双十一重磅来袭,晚20点满600送{s}!详见www.chuanglan.com{s}拒收请回复R|【短信签名】+ 正文(推广类文案专用账号) + 退订语|向用户手机发送: 【创蓝云智】双十一重磅来袭,晚20点抢600送600!详见www.chuanglan.com/dsdf5162拒收请回复R|
+
+---
+
+# 发送时间限制
+
+- 验证码(YZM开头)、通知(N开头)、会员营销(M开头)这三类账号没有限制,但M账号22点之后成功率会受到较大影响,会出现拦截,如有疑问请联系我方商务人员。
+- 特殊类型账号发送时间默认是早8到晚8点,不在发送时间内提交短信,接口将会拦截您的请求并返回提交报错。如有时间上的调整,请联系我方商务人员。
+
+---
+
+# 发送短信接口
+
+### 接口注意事项
+
+- 如果您需要状态回执,请记得传入report参数,即"report"="true",否则将无法获得状态回执。
+- 如果调用短信接口后返回错误,您需要根据返回的响应码提示检查传入的请求参数及其取值是否正确。更多信息请见文档末尾提交响应码说明。
+- 更多发送问题,请查阅[短信发送FAQ](https://doc.chuanglan.com/document/OLARO2T23P0PMI37)
+- 如您需要了解计费规则,请查阅[计费说明](https://doc.chuanglan.com/document/3XU8M0PN8ICE6QJ2)。
+- 账户有默认的余额提醒,详情查阅[余额提醒](http://doc.new253.com/document/JH424R56V27G4AF5)文档。
+
+### 模板Id发送方式接口
+
+#### 请求地址:
+
+> - 请求方式:json 格式封装的字符串,采用 post 方式提交请求
+> - Content-Type:application/json
+> - 编码格式:utf-8
+> - 请求地址:`https://smssh.253.com/msg/sms/v2/tpl/send`
+
+#### 加密算法:
+
+- 根据留存在创蓝的密钥md5Password与请求参数中的timestamp和nonce进行HmacSHA256Hex签名并生成makeSignature,并将此makeSignature通过Request Header传递。
+- md5Password=API密码的MD5加密(32 位小写值),如:md5(password)
+
+复制成功
+
+```java
+// 第三方工具类,需引入以下Maven依赖
+import com.alibaba.fastjson.JSONObject;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.codec.digest.HmacUtils;
+
+public String makeSignature(String md5Password, String timestamp, String nonce) {
+   String str = generateStr(md5Password, timestamp, nonce);
+    return HmacUtils.hmacSha256Hex(md5Password, str.replaceAll("\\s+", ""));
+} 
+
+/**
+ * 签名待处理的字符串拼接
+ */
+public static String generateStr(String md5Password, String timestamp, String nonce){
+    String[] array = new String[] { md5Password, timestamp, nonce};
+    StringBuffer sb = new StringBuffer();
+    // 字符串排序
+    Arrays.sort(array);
+    for (int i = 0; i < 3; i++) {
+        sb.append(array[i]);
+    }
+    return sb.toString();
+}
+```
+
+#### RequestHeader:
+
+|参数名称|类型|是否必传|描述|示例|
+|---|---|---|---|---|
+|X-QA-Hmac-Signature|String|可选|**加密鉴权**- 使用上述加密鉴权时,传递makeSignature的结果,无需传递password。<br>  <br>- 不加密鉴权时,该Header填空字符串"",body里password必传。|"nonce + md5Password(API密码的MD5的32位小写值)+ timestamp"(取决于排序结果)|
+
+#### body参数:
+
+| 参数名称              | 类型     | 是否必传 | 描述                                                                                                                                                                                                                                                                                                                                                                                                       | 示例                                                                                                                          |
+| ----------------- | ------ | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
+| account           | String | 是    | **API 账号**<br><br>- 登录[控制台](https://www.chuanglan.com/)获取,获取方式请查阅[操作指引](https://doc.chuanglan.com/document/Y2ZHMZ2ODC6V19CM)                                                                                                                                                                                                                                                                             | "account":"N6000001"                                                                                                        |
+| password          | String | 否    | **API 密码**<br><br>- 未开启加密鉴权时则为必传,登录[控制台](https://www.chuanglan.com/)获取,[操作指引](https://doc.chuanglan.com/document/Y2ZHMZ2ODC6V19CM) 。                                                                                                                                                                                                                                                                     | "password":"123456"                                                                                                         |
+| nonce             | String | 是    | **32位随机字符串**<br><br>- 自定义即可。                                                                                                                                                                                                                                                                                                                                                                             | "nonce":"2e6eceb5737b473284c930c8ef79090e"                                                                                  |
+| timestamp         | String | 是    | **秒级时间戳**<br><br>- 时间戳1分钟过期                                                                                                                                                                                                                                                                                                                                                                              | "timestamp":"1631865523"                                                                                                    |
+| phoneNumbers      | String | 是    | **短信接收的手机号**<br><br>- 号码格式无需添加区号或者+号,只填写11位手机号。<br>- 多个手机号使用英文逗号间隔,一次不要超过 1000 个。                                                                                                                                                                                                                                                                                                                        | 批量群发:  <br>"phoneNumbers":"15800000000,15300000000"                                                                         |
+| templateParamJson | String | 否    | **变量参数值,JSON数组格式。**<br><br>- 变量模板为必传。短信模板变量对应的实际值,多个手机号即传入多组JSON对象,且传入每组对象的键名个数要与模板变量个数一致。<br>- 键名用param1,param2、param3、param4以此类增,param1对应第一个变量{s},param2对应第二个。<br>- **示例:**  <br>    短信模板:尊敬的{s},恭喜您成功充值{s}元。  <br>    templateParamJson:[{\"param1\":\"张三\",\"param2\":\"13\"},{\"param1\":\"李四\",\"param2\":\"88\"}]  <br>    填充后的第一个手机号内容:尊敬的张三,恭喜您成功充值13元。  <br>    填充后的第二个手机号内容:尊敬的李四,恭喜您成功充值88元。 | "templateParamJson":  <br>"[  <br>{\"param1\":\"张三\",\"param2\":\"13\"},  <br>{\"param1\":\"李四\",\"param2\":\"88\"}  <br>]" |
+| templateId        | String | 是    | **模版Id**<br><br>- 模板跟单个API账号为绑定关系,不可主子账号混淆传入。<br>- 可通过模板列表接口查询或登录[控制台](https://www.chuanglan.com/)“模板管理”查看。                                                                                                                                                                                                                                                                                              | "templateId":"1111111"                                                                                                      |
+| signature         | String | 否    | **短信签名**<br><br>- 如果之前报备的模板没有选择关联签名,则为必传,需要通过此参数带上签名。<br>- 自25年7月起最新的模板报备中会选择关联签名,则可以不用传递此参数。                                                                                                                                                                                                                                                                                                            | "signature":"【创蓝云智】"                                                                                                        |
+| report            | String | 否    | **状态回执开关**<br><br>- 需要传"true",不传默认为"false",则无法获取状态回执。<br>- 回执是判断短信是否成功接收的重要依据,回执详情请查阅[状态回执](https://doc.chuanglan.com/document/M4B1AGWSI6KMUFCX)文档。                                                                                                                                                                                                                                                      | "report":"true"                                                                                                             |
+| callbackUrl       | String | 否    | **状态回执的回调地址**<br><br>- 请传入完整带http协议头开头的地址,不传默认为空,请勿传入空格,否则会造成地址推送错误。<br>- 地址可通过接口入参传入,也可在控制台手动配置,可查看[控制台操作指引](https://doc.chuanglan.com/document/Y2ZHMZ2ODC6V19CM)。                                                                                                                                                                                                                                      | "callbackUrl":"https://"                                                                                                    |
+| uid               | String | 否    | **自定义参数**<br><br>- 如订单号或短信发送记录流水号,状态回执会回传,最大支持256位。                                                                                                                                                                                                                                                                                                                                                      | "uid":"321abc"                                                                                                              |
+| extend            | String | 否    | **下发短信号码扩展码**<br><br>- 用于匹配上行回复,上行报告会回传。一般5位以内(只支持传数字),不传默认为空。                                                                                                                                                                                                                                                                                                                                           | "extend":"555"                                                                                                              |
+
+#### 请求示例:
+
+复制成功
+
+```json
+{
+    "account":"N6000001",
+    "timestamp" :"1752143733",
+    "nonce": "x4zfk0y5foqwx6cbnw3bfmimy98abqs1",
+    "phoneNumbers":"17601337176,15100159057",
+    "templateId":"1021143438",
+    "templateParamJson":"[{\"param1\":\"张三\",\"param2\":\"13\"},{\"param1\":\"李四\",\"param2\":\"88\"}]",
+    "signature":"【创蓝云智】",
+    "report":"true",
+    "callbackUrl":"",
+    "uid":"test_001",
+    "extend":"01"
+}
+```
+
+#### 响应参数:
+
+|参数名称|类型|描述|示例|
+|---|---|---|---|
+|code|String|提交响应状态码,返回“0”表示提交成功(其他错误请参考提交响应码)|"code":"000000"|
+|msgId|String|消息 id(32 位纯数字)|"msgId":"25071516453300902203000007708373"|
+|time|String|响应时间|"time":"20251204162433"|
+|successNum|String|提交成功数量,参数校验失败时不返回|"successNum":"1"|
+|failNum|String|提交失败数量,参数校验失败时不返回|"failNum":"0"|
+|errorMsg|String|提交响应状态码中文说明(提交成功返回空)|"errorMsg":""|
+
+#### 响应示例:
+
+复制成功
+
+```json
+{
+    "code": "000000",
+    "failNum": "0",
+    "successNum": "2",
+    "msgId": "25071018345400902898000000000001",
+    "time": "20250710183454",
+    "errorMsg": ""
+}
+```
+
+# 提交响应码说明
+
+|**状态码**|**描述**|**问题处理人**|
+|---|---|---|
+|000000|提交成功|无|
+|101|无此用户(account参数要传API账号不是登录后台的账号,如N111111;或API账号关停了需要联系官网客服解禁)|技术支持|
+|102|密码错(请确认密码是否一致正确,请直接复制避免手动输入错误)|技术支持|
+|103|提交过快(提交速度超过流速限制)|技术支持|
+|104|系统忙(因平台侧原因,暂时无法处理提交的短信)|技术支持|
+|105|敏感短信(短信内容包含敏感词)|客服|
+|106|消息长度错(>1036 或<=0)|技术支持|
+|107|包含错误的手机号码|技术支持|
+|108|手机号码个数错(手机号包含了中文符号;手机号个数错了,群发>1000 或<=0)|技术支持|
+|109|无发送额度(当前使用的API账号下没有发送额度)|商务|
+|110|不在发送时间内(联系客服或商务解决)|商务|
+|111|超出该账户当月发送额度限制(联系客服或商务解决)|商务|
+|112|产品错误(通道出现异常,联系商务解决)|商务|
+|113|扩展码格式错(非数字或者长度不对)|技术支持|
+|114|可用参数组个数错误(msg参数的变量符号固定使用"{$var}";变量符号在20个以内)|技术支持|
+|116|签名不合法或未带签名(短信签名需要报备通过后才能使用;重保签名不可用)|客服|
+|117|客户端IP错误(登录控制台在对应使用的API账号下加白ip)|客服|
+|118|用户没有相应的发送权限(账号被禁止发送,联系客服或商务解禁)|客服|
+|119|用户已过期|客服|
+|120|违反防盗用策略(日发送限制,联系客服或商务解决)|客服|
+|123|发送类型错误(cmpp协议的账户不能使用https协议方式,请联系我方技术修改)|技术支持|
+|124|白模板匹配错误(接口传递的内容与报备的模板内容要完全一致,包括标点符号)|客服|
+|125|匹配驳回模板,提交失败(联系客服或商务解决)|客服|
+|127|定时发送时间格式错误(格式为 yyyyMMddHHmm)|技术支持|
+|128|内容编码失败|技术支持|
+|129|JSON 格式错误(header请求头是否生效:Content-Type:application/json;请求参数不是json格式)|技术支持|
+|130|请求参数错误(缺少必填参数;参数跟接口地址不匹配,例如变量参数请求普通短信接口地址)|技术支持|
+|132|消息长度错(>3500或<=0),超过短信最大支持字数|技术支持|
+|133|单一手机号错误|技术支持|
+|134|违反防盗策略, 超过月发送限制(联系客服或商务解决)|技术支持|
+|135|超过同一手机号相同内容发送限制|技术支持|
+|136|不可批量提交"验证码"短信|技术支持|
+|139|超出安全发送时间(时间戳过期,时间戳时间跟请求接口的时间差异控制在30s以内)|技术支持|
+|140|短信内容解密错误(秘钥没有使用正确)|技术支持|
+|144|产品未上线限制日发送数量(签名报备选择的未上线会日限100条,联系客服调整)|客服|
+|145|验签失败(验签不过,请参考对应接口的DEMO加签代码示例)|技术支持|
+|152|MATERIAL_EXIST_ERROR (模板不存在)|客服|
+|153|MESSAGE_LY_ERROR 消息长度错(>2000或者≤0)|技术支持|
+|154|长短信拼接错误|技术支持|
+|155|AIM_SEND_FAIL 转发失败|技术支持|
+|158|退订语不符合规范,退订语现在只支持“拒收请回复R”。|技术支持|
+|159|触发反轰炸策略|技术支持|

+ 48 - 0
任务小笔记/26年/07-13:花掌柜与花卉宝改版/1-hdApp 商品管理合并页.md

@@ -0,0 +1,48 @@
+## 摘要
+
+- 新增 `/admin/goods/manage` 商品管理页,将花束与花材管理整合为两个页签,默认展示“花束”。
+- 保留 `goods/list.vue`、`item/list2.vue` 原样,不修改现有页面。
+- 复用现有接口、列表组件和操作能力,不改后端接口。
+- 保留当前未提交的首页“店铺管理”及菜单编辑改动。
+
+## 实现调整
+
+- 首页菜单:
+  - 完善“商品管理”菜单定义并加入花束业务的默认菜单。
+  - 未自定义过菜单的用户默认可见;已有自定义菜单的用户可通过“编辑”添加。
+- 页面框架:
+  - 在 `pages.json` 注册 `/admin/goods/manage`,原生标题为“商品管理”,不添加留言图标。
+  - 顶部设置“花束/花材”页签;子页首次进入时加载,切换后保留各自分类、搜索、筛选和滚动状态。
+  - 使用独立的新子组件隔离两套列表逻辑,避免事件、弹窗和分页状态冲突。
+- 花束页签:
+  - 按效果图排布名称/编号、搜索、全部/无价/有价、筛选、排序、刷新、左侧分类和底部“新增商品”。
+  - 分类区域不展示图标;右侧展示当前分类标题。
+  - 复用现有分类、商品分页、库存/支数筛选、标签打印、库存明细、编辑简介、更多操作及分享能力。
+- 花材页签:
+  - 按效果图排布图片分类、搜索、全部/有库存/没库存、更多筛选、刷新、左侧分类和底部“新增花材”。
+  - “更多筛选”作为预留按钮,点击提示“更多筛选暂未开放”。
+  - 分类图标暂不展示;继续复用 `item2` 商品行、现有花材分页及全部操作弹窗。
+  - “新增花材”沿用现有入口 `/admin/ptItem/itemList`。
+- 搜索、刷新、分页和从编辑页返回后的刷新均在当前页签独立执行。
+
+## 接口与兼容性
+
+- 花束继续使用 `/category/list`、`/category/goods-list`,保持现有 `catId`、`searchType`、`priceType`、`hasStock`、`flowerNum`、`requestType=goodsList` 参数。
+- 花材继续使用 `/item-class/get-menu`、`/item/get-item-list`,保持 `classId`、`search`、`lookStock`、`requestType=itemList` 和分页参数。
+- 不新增或修改后端 Controller、Form Model、Biz 类及响应结构。
+
+## 验证方案
+
+- 验证首页默认显示“商品管理”,点击可正常进入新路由。
+- 验证无留言图标、分类无图标、两页签布局及底部新增按钮符合效果图。
+- 分别验证搜索、分类切换、筛选、刷新、分页和空数据状态。
+- 抽查花束与花材的详情、打印、库存明细、简介、隐藏/显示及更多操作。
+- 验证页签切换后状态保留,新增或编辑返回后数据正确刷新。
+- 确认原 `goods/list.vue`、`item/list2.vue` 无改动,原入口功能不受影响。
+- 不运行 `build:mp-weixin`;使用用户现有编译进程做小程序端验证,并执行 `git diff --check`。
+- 新页面属于结构调整,完成后在知识项目运行 `npm run index` 和 `npm run validate`。
+
+## 假设
+
+- “花材”指现有“绿植花材”管理能力,仅在合并页中简化页签文案。
+- 当前工作区中“店铺管理”标题、编辑按钮及菜单候选项改动均为用户已有改动,实施时予以保留。

+ 150 - 0
任务小笔记/26年/07-13:花掌柜与花卉宝改版/2-门店首页配置页面(hdApp).md

@@ -0,0 +1,150 @@
+---
+name: 门店首页配置页面
+overview: 在 hdApp 新建"门店首页配置"页面,展示 8 项配置模块,支持拖拽排序与开关,并实现"顶部导航与搜索"子页面;配置数据(顺序+开关)通过新增的 Yii2 接口保存到 Redis(key 前缀为 mainId)。
+todos:
+  - id: backend-class
+    content: 新增 biz-hd/homePageConfig/classes/HomePageConfigClass.php 实现 Redis 读写(模块顺序+开关、topNav详情)
+    status: completed
+  - id: backend-controller
+    content: 新增 app-hd/controllers/HomePageConfigController.php 四个 action(get/save modules、get/save top-nav)
+    status: completed
+  - id: frontend-api
+    content: 新增 front-end/hdApp/src/api/home-page-config/index.js 四个接口封装
+    status: completed
+  - id: frontend-index
+    content: 实现 front-end/hdApp/src/admin/homePageConfig/index.vue:8项配置卡片、优化版拖拽排序、开关、保存/预览按钮
+    status: completed
+  - id: frontend-topnav
+    content: 实现 front-end/hdApp/src/admin/homePageConfig/topNavSearch.vue:门店名称只读展示、占位文案、颜色选择弹层、客服开关、简单预览
+    status: completed
+  - id: pages-json
+    content: 在 front-end/hdApp/src/pages.json 新增 admin/homePageConfig 分包注册 index、topNavSearch 两个页面
+    status: completed
+isProject: false
+---
+### 计划需求指令:
+项目:hdApp
+需求:创建新建页面--门店首页配置(内容写入到 hdApp/src/admin/homePageConfig/index.vue),样式要综合项目原有的页面样式
+详细:
+1. 按图(门店首页配置.png)实现创建8项配置项
+2. 点击配置项名称及描述 或 编辑时,会跳转到对应配置项的页面。初期只实现顶部导航与搜索的跳转(顶部导航与搜索页面的实现如图2),其它先留空后期补上。
+3. 每项配置有开启与关闭按钮,初期就用redis保存起它们的设置(设置一个合适的唯一名称,前缀使用 mainId)
+4. 8项配置项支持拖拽排序, 拖拽排序实现请参考(hdApp/src/admin/goods/goodsSort.vue),如果拖拽排序算法能优化就直接优化。把排列的数据与一同保存到redis(看看要不要开启关闭结合起来)
+
+顶部导航与搜索页面实现细节:
+1. 门店名称直接取自 xhShop 表的merchantName字段
+2. 预览效果可以不要或简单实现下
+
+
+# 门店首页配置页面(hdApp)
+
+## 背景确认
+
+- 菜单入口已存在:`front-end/hdApp/src/admin/home/homeMenus.js` 第20行已经配置了 `{ name: '首页配置', url: '/admin/homePageConfig/index' }`,无需再加菜单项。
+- 页面文件已存在但为空文件:`front-end/hdApp/src/admin/homePageConfig/index.vue`(0字节),本次直接写入实现。
+- `pages.json` 尚未注册 `admin/homePageConfig` 分包,需要补充,否则页面无法访问(参照 `front-end/hdApp/src/pages.json` 第314-365行 `admin/setting`、`admin/goods` 分包写法)。
+- 拖拽排序参考 `front-end/hdApp/src/admin/goods/goodsSort.vue`:`touchstart/touchmove/touchend` + upx/px 换算 + `list.data` splice 提交排序。
+- 门店名称字段来源确认:`app-hd/controllers/BaseController.php` 第72-85行中 `$this->shop = ShopClass::getById($currentShopId, true)`(`bizHd\merchant\classes\ShopClass` → 模型 `bizHd\merchant\models\Shop`,`tableName()` 返回 `xhShop`),全项目通过 `$this->shop->merchantName` 取门店名称(如 `app-hd/controllers/OrderController.php` 第470行),后端接口直接返回 `$this->shop->merchantName` 即可,无需再查表。
+- Redis 用法参考 `biz-hd/purchase/classes/PurchaseClearClass.php`、`biz-hd/lakala/classes/LakalaAccountClass.php` 等:统一用 `Yii::$app->redis->executeCommand('GET'/'SET', [...])`,值用 `json_encode/json_decode` 存取。
+- 主色/开关色沿用项目现有风格:`$mainColor:#049E2C`(`front-end/hdApp/src/uni.scss`),开关统一用 `<switch color="#09C567" />`(`admin/goods/add.vue`、`admin/goods/detail.vue` 已用此配色)。
+
+## 数据与接口设计
+
+8 个配置模块的 `key/名称/描述/跳转路径` 只在前端维护(与 `homeMenus.js` 现有做法一致,后端不需要关心前端路由):
+
+- topNav:顶部导航与搜索 → `/admin/homePageConfig/topNavSearch`
+- banner:首页轮播图 → 空(先留空)
+- navGrid:分类金刚区导航 → 空
+- seckill:秒杀专区 → 空
+- groupBuy:团购专区 → 空
+- hot:热门推荐 → 空
+- new:今日上新 → 空
+- pullGoods:下拉商品 → 空
+
+点击标题/描述或"编辑":topNav 跳转到子页面;其余 7 项弹提示"该模块正在开发中"(不跳转)。
+
+Redis key(前缀为 mainId,按需求4点"排序与开关合并保存"):
+
+- 模块顺序+开关:`{mainId}_home_page_config_modules`,值为 JSON 数组 `[{key,enabled}, ...]`,数组顺序即展示顺序。
+- 顶部导航与搜索详情设置:`{mainId}_home_page_config_top_nav`,值为 JSON 对象 `{enabled, placeholder, searchBtnColor, searchFontColor, customerServiceEnabled}`(门店名称不存,实时取 `shop.merchantName`)。
+
+新增后端类:`biz-hd/homePageConfig/classes/HomePageConfigClass.php`
+
+- `DEFAULT_KEYS` 常量定义合法 key 白名单(8个),用于校验/补全。
+- `getModules($mainId)` / `saveModules($mainId, $items)`:读取时若 Redis 无数据或缺项,用默认顺序+`enabled=1`补全;保存时校验 key 合法且不重复、数量为8,`enabled` 强制转 0/1。
+- `getTopNav($mainId)` / `saveTopNav($mainId, $data)`:带默认值合并,字段做基础类型转换。
+
+新增后端控制器:`app-hd/controllers/HomePageConfigController.php extends BaseController`
+
+- `actionGetModules()`:`util::success(['list' => HomePageConfigClass::getModules($this->mainId)])`
+- `actionSaveModules()`:读取 `Yii::$app->request->post('items')`,调用 `saveModules`,`util::complete('保存成功')`
+- `actionGetTopNav()`:合并 `HomePageConfigClass::getTopNav($this->mainId)` 与 `merchantName' => $this->shop->merchantName ?? ''`,`util::success()`
+- `actionSaveTopNav()`:调用 `saveTopNav`,`util::complete('保存成功')`
+
+路由(Yii2 kebab-case 规则,参照 `shop-ext`、`category-setting`):
+`/home-page-config/get-modules`、`/home-page-config/save-modules`、`/home-page-config/get-top-nav`、`/home-page-config/save-top-nav`
+
+新增前端 API:`front-end/hdApp/src/api/home-page-config/index.js`
+
+```js
+import https from '@/plugins/luch-request_0.0.7/request'
+export const getModules = data => https.get('/home-page-config/get-modules', data)
+export const saveModules = data => https.post('/home-page-config/save-modules', data)
+export const getTopNav = data => https.get('/home-page-config/get-top-nav', data)
+export const saveTopNav = data => https.post('/home-page-config/save-top-nav', data)
+```
+
+## 前端页面实现
+
+### 1. `front-end/hdApp/src/admin/homePageConfig/index.vue`(门店首页配置列表)
+
+- 布局对齐图2:顶部说明文字"支持上下拖拽调整展示顺序" + 8 行配置卡片(编号圆圈、标题、描述、"编辑 ›"、开关)+ 底部"预览"/"保存配置"按钮(复用 `admin-button-com default/blue big` 按钮样式)。
+- `onLoad`/`init()` 调用 `getModules()`,与本地 8 项元数据按返回的 `key` 顺序 merge 成展示列表(`enabled` 取接口值)。
+- 拖拽排序:复用 `goodsSort.vue` 的 touch 方案并做以下优化:
+  - `pixelRatio` 在 `dragStart` 时用 `uni.getSystemInfoSync()` 计算一次并缓存,不在 `touchmove` 里重复调用(原实现每次 move 都调用,浪费性能)。
+  - 增加实时位移预览:`dragMove` 中不仅更新 `targetIndex`,还为处于"拖拽起点与当前目标之间"的其它行实时设置 `translateY(±itemHeight)`,被拖拽行跟随手指位移,做到真正的实时排序预览(比 `goodsSort.vue` 仅高亮目标行更直观)。
+  - 只在 `touchend` 时一次性 `splice` 提交数组顺序,去掉本页面不需要的置顶/置底/上移/下移按钮(图2设计中无此按钮,8项定长列表也无需分页/mixin)。
+  - 拖拽手柄:整行可拖拽,但"编辑"文字和 `switch` 区域各自 `@touchstart.stop` 阻止冒泡,避免和点击/开关手势冲突。
+- 开关:`<switch color="#09C567" :checked="item.enabled==1" @change="toggleEnabled(item)" />`,仅改本地状态,不即时请求接口。
+- 点击标题/描述区域或"编辑":`goEdit(item)` → 有 `path` 则 `pageTo(item.path)`;无则 `uni.showToast({title:'该模块正在开发中', icon:'none'})`。
+- "保存配置":整理当前展示顺序为 `items=[{key,enabled}]`,调用 `saveModules({items})`,成功后 `$msg('保存成功')`。
+- "预览":先简单实现为 toast 提示(如"预览功能开发中"),或后续可跳转小程序首页真实预览,符合用户"预览效果可以不要或简单实现"的说明(此为主列表页,非 topNav 详情页的预览)。
+- 样式沿用项目变量:`$fontColor2/3`、`$borderColor`、`disFlex` mixin、卡片圆角、`upx` 单位,整体保持和 `goodsSort.vue`/`setting/list.vue` 一致的视觉语言。
+
+### 2. `front-end/hdApp/src/admin/homePageConfig/topNavSearch.vue`(顶部导航与搜索)
+
+对齐图1布局:
+
+- 模块开关:`<switch>` 绑定 `form.enabled`。
+- 门店名称:只读展示 `merchantName`(接口 `getTopNav` 返回,来自 `shop.merchantName`),用禁用态输入框或纯文本展示,明确提示"门店名称在店铺资料中修改"(可参考已有 `admin/home/edit.vue` 花店名称修改页做跳转提示,非必须)。
+- 搜索占位文案:`<input v-model="form.placeholder" placeholder="请输入搜索占位文案" />`,复用 `tui-list-cell` + `line-cell` + `tui-title/tui-input` 样式(同 `admin/goods/detail.vue` 输入行写法)。
+- 搜索按钮颜色 / 搜索字体颜色:点击弹出 `tui-bottom-popup`(复用 `components/plugin/bottom-popup.vue`),列出预设色块(如 绿色`#09C567`/橙色`#ff6900`/黑色 等,字体颜色为 白色/黑色),选中后回填 `form.searchBtnColor`/`form.searchFontColor` 并关闭弹层。
+- 客服入口:`<switch v-model="form.customerServiceEnabled">`。
+- 预览效果:按需求"可以不要或简单实现",做一个简化的静态预览条(门店名 + 搜索框 + 客服图标),根据 `form` 里选中的颜色实时变色即可,不做真机高保真复刻。
+- `init()` 调用 `getTopNav()` 填充表单;保存按钮调用 `saveTopNav(form)`(不含 merchantName),成功后 `$msg('保存成功')` 并可 `pageTo(-1)` 或留在本页。
+
+### 3. `pages.json` 注册
+
+在 `subPackages` 数组新增:
+
+```json
+{
+  "root": "admin/homePageConfig",
+  "pages": [
+    { "path": "index", "style": { "navigationBarTitleText": "门店首页配置" } },
+    { "path": "topNavSearch", "style": { "navigationBarTitleText": "顶部导航与搜索" } }
+  ]
+}
+```
+
+## 后端改动文件清单
+
+- 新增 `huahuibao/biz-hd/homePageConfig/classes/HomePageConfigClass.php`
+- 新增 `huahuibao/app-hd/controllers/HomePageConfigController.php`
+
+## 校验步骤
+
+- 后端改动后按 AGENTS.md 要求,若涉及项目结构变化,在 `understand-project` 运行 `npm run index` 刷新索引(`npm run validate` 用于本项目内容改动,本次主要是业务代码改动,`npm run index` 更相关)。
+- 不新增/修改前端构建脚本,不主动执行 `npm run build:mp-weixin`。
+
+## Todos

+ 132 - 0
任务小笔记/26年/07-13:花掌柜与花卉宝改版/3-店铺首页预览 + mallApp 商城首页 实现计划.md

@@ -0,0 +1,132 @@
+---
+name: mallApp店铺首页与hdApp预览
+overview: 在 huahuibao 后端新增一个"首页展示数据组装"共享类,供 app-mall(真实店铺首页)与 app-hd(预览接口)共用;在 mallApp 中实现真正的店铺首页页面(挂到现有空壳 `pages/home/index.vue`,并把"进入店铺"入口指向它);在 hdApp 中实现与之视觉一致的预览页面,接入 `index.vue` 的"预览"按钮;同时给秒杀/团购/热门推荐/今日上新/下拉商品补充"排列规则"(1排1/2/3列)配置项,并统一店铺首页相关 UI 为粉红色调。
+todos:
+  - id: backend-layoutcols
+    content: HomePageModuleClass 新增 layoutCols 字段与校验(seckill/groupBuy/goodsSection)
+    status: pending
+  - id: backend-resolve-goods
+    content: 新增 resolveDisplayGoods 方法解析 type/value/sort 为真实商品列表
+    status: pending
+  - id: backend-display-class
+    content: 新建 HomePageDisplayClass,迁移 format* 方法并新增 buildHome/formatGoodsSection
+    status: pending
+  - id: backend-mall-controller
+    content: 重构 app-mall HomePageConfigController 使用 HomePageDisplayClass
+    status: pending
+  - id: backend-hd-preview-api
+    content: app-hd HomePageConfigController 新增 actionGetHome 预览接口
+    status: pending
+  - id: hd-layoutcols-ui
+    content: hdApp 的 seckill/groupBuy/goodsSection 页面新增排列规则单选UI
+    status: pending
+  - id: hd-preview-page
+    content: hdApp 新建 preview.vue 及 previewParts 子组件,接入 index.vue 预览按钮与 pages.json
+    status: pending
+  - id: mall-home-page
+    content: mallApp 实现 pages/home/index.vue 店铺首页及 components/home/* 子组件
+    status: pending
+  - id: mall-entry-redirect
+    content: mallApp recent.vue 的进入店铺入口改为跳转新首页
+    status: pending
+  - id: color-unify
+    content: 统一 hdApp 预览与 mallApp 首页相关按钮/图标为粉红色调
+    status: pending
+isProject: false
+---
+
+
+# 店铺首页预览 + mallApp 商城首页 实现计划
+
+## 背景与关键决策(已与用户确认)
+
+- mallApp 目前"进入店铺"([recent.vue](front-end/mallApp/src/pages/home/recent.vue) 的 `enterShop`/`bug()`)跳转到花材选购页 `/pages/item/item`;`pages/home/index.vue` 是已在 `pages.json` 注册为"首页"的空壳页面。**决定**:用 `pages/home/index.vue` 做真正的店铺首页,并把 `enterShop`/`bug()` 改为先跳店铺首页,首页内再链接到花材/分类页。
+- hdApp 与 mallApp 是两个独立项目,不能共享 Vue 组件。**决定**:后端新增一个统一的"首页数据组装"类,保证两端拿到的数据结构完全一致;前端在两个项目里各自实现一份视觉一致的展示页面(非 webview)。
+
+## 一、后端改动(huahuibao)
+
+### 1. `biz-hd/homePageConfig/classes/HomePageModuleClass.php`
+
+- 给 `seckill`、`groupBuy`、以及 `hot`/`new`/`pullGoods`(`getGoodsSection`/`saveGoodsSection`)的存储结构新增字段 `layoutCols`(取值 `1|2|3`,默认 `3`),并在对应 `save*` 方法中校验合法性(非法值 `util::fail('排列规则无效')`)。
+- 新增静态方法 `resolveDisplayGoods($mainId, $type, $value, $sort, $limit = 20)`,用于把 `hot`/`new`/`pullGoods` 存的 `type`(2商品/3分类/4场景) + `value`(逗号ID) + `sort`(1自定义/2销量/3上新时间) 解析为真实商品列表:
+  - `type=2`:`explode(',', value)` 得到 goodsId,按该顺序 `GoodsClass::getByIds($ids)`。
+  - `type=3`:`GoodsCategoryClass::getAllByCondition(['cId'=>['in',$cIds],'delStatus'=>0], null, null, 'gId')` 取商品ID,再 `GoodsClass::getByIds`。
+  - `type=4`:同上思路用 `GoodsUseCaseClass::getAllByCondition(['useCaseId'=>['in',$ids]], null, null, 'goodsId')`。
+  - `sort=2`按 `actualSold+sold` 降序,`sort=3`按 `createTime` 降序,`sort=1` 保持解析出的原始顺序。
+  - 过滤 `delStatus=0`、`status=1`(如有 `masterId` 字段则只取主规格),限制 `$limit` 条。
+  - 返回精简字段:`id,name,price,stock,cover,sold`(`sold` = `actualSold+sold`),封面沿用现有 OSS 拼接惯例(`imgUtil::groupImg()` + `x-oss-process=image/resize,m_fill,h_700,w_700`,参考 [GoodsClass.php:528-538](huahuibao/biz-hd/goods/classes/GoodsClass.php))。
+
+### 2. 新建 `biz-hd/homePageConfig/classes/HomePageDisplayClass.php`
+
+把当前 [app-mall/controllers/HomePageConfigController.php](huahuibao/app-mall/controllers/HomePageConfigController.php) 里的 `formatBanner`/`formatNavGrid`/`formatActivity` 三个私有方法搬到这里做成 `public static`,并新增:
+
+- `formatGoodsSection($mainId, $moduleKey)`:读取 `HomePageModuleClass::getGoodsSection`,关闭时返回 `goods=[]`;开启时调用 `resolveDisplayGoods` 补上 `goods` 列表(含 `coverUrl`)与 `layoutCols`。
+- `buildHome($mainId)`:一次性组装 `modules/topNav/banner/navGrid/seckill/groupBuy/hot/new/pullGoods`,内部分别调用上面的 format 方法,供 mall 端与 hd 预览共用同一份数据格式。
+
+### 3. `app-mall/controllers/HomePageConfigController.php`
+
+`actionGetHome` 及各单模块 action(`get-banner`/`get-nav-grid`/`get-seckill`/`get-group-buy`/`get-hot`/`get-new`/`get-pull-goods`)改为调用 `HomePageDisplayClass` 的对应方法,删除原来内联的 `formatBanner`/`formatNavGrid`/`formatActivity`,`get-hot`/`get-new`/`get-pull-goods` 改为返回 `formatGoodsSection` 的结果(带真实商品列表,而非仅配置)。
+
+### 4. `app-hd/controllers/HomePageConfigController.php`
+
+新增 `actionGetHome()`(管理端,`$mainId` 取自登录态,非 guest),内部调用 `HomePageDisplayClass::buildHome($this->mainId)`,返回与 mall 端一致的数据结构,供 hdApp 预览页使用。
+
+### 5. `common/components/oss.php` / OSS 目录
+
+无需新增目录(复用现有 `uploads_home_banner`、`uploads_home_nav`)。
+
+## 二、hdApp 前端改动
+
+### 1. 排列规则 UI(新增,3 处)
+
+- [seckill.vue](front-end/hdApp/src/admin/homePageConfig/seckill.vue)、[groupBuy.vue](front-end/hdApp/src/admin/homePageConfig/groupBuy.vue):在表单中加入"排列规则"单选(1排1列/1排2列/1排3列),`form.layoutCols` 默认 `3`,参考 [navGrid.vue:60-69](front-end/hdApp/src/admin/homePageConfig/navGrid.vue) 的 radio-group 写法;保存时带上 `layoutCols`。
+- [goodsSection.vue](front-end/hdApp/src/admin/homePageConfig/goodsSection.vue)(hot/new/pullGoods 共用):同样加入"排列规则"单选,`form.layoutCols` 默认 `3`,保存时带上。
+
+### 2. 新增预览页面 `admin/homePageConfig/preview.vue`
+
+- 调用新的 `getHomePreview()`(对应 API 新增在 [src/api/home-page-config/index.js](front-end/hdApp/src/api/home-page-config/index.js),路由 `/home-page-config/get-home`)。
+- 只读渲染整页:顶部导航与搜索(店铺名+搜索框+客服图标)、轮播图(悬浮客服图标按 `topNav.customerServiceEnabled` 显隐)、静态公告条、金刚区(4/5列)、秒杀区、团购区、热门推荐、今日上新、下拉商品;商品图默认正方形,轮播图保持矩形。
+- 为便于维护,按区块拆成小组件放在 `admin/homePageConfig/previewParts/`:`topNav.vue`、`bannerSwiper.vue`、`noticeBar.vue`、`navGrid.vue`、`activitySection.vue`(秒杀/团购通用,按 `layoutCols` 渲染 1/2/3 列,含倒计时)、`goodsSection.vue`(热门/上新/下拉通用,按 `layoutCols` 渲染 1/2/3 列)。
+- 统一使用粉红色调(主色 `#FF6B88`,深色 `#FF4D6D`,浅底 `#FFF3F5`),替换掉这些新页面里原本可能沿用的绿色按钮/图标。
+
+### 3. `index.vue` 接入预览
+
+将 [previewFn](front-end/hdApp/src/admin/homePageConfig/index.vue) 由 Toast 占位改为 `uni.navigateTo({ url: '/admin/homePageConfig/preview' })`。
+
+### 4. `pages.json`
+
+在 `admin/homePageConfig` 分包下新增 `preview` 页面路由。
+
+## 三、mallApp 前端改动
+
+### 1. 实现 `pages/home/index.vue`(当前为空壳)
+
+- 通过 `account`(shopId,来自 query 或 storage)调用 [api/home-page-config/index.js](front-end/mallApp/src/api/home-page-config/index.js) 的 `getHome`。
+- 页面结构(自上而下,均按 `modules` 的顺序 + 各自 `enabled` 控制显隐):
+  1. 顶部导航与搜索:店铺名(来自接口 `merchantName`)+ 搜索框(点击跳转商品搜索/花材页)+ 客服入口(按钮色取 `searchBtnColor`/`searchFontColor`)。
+  2. 首页轮播图:复用现有 `components/app-swiper.vue`;右下角客服悬浮图标按 `topNav.customerServiceEnabled` 显隐,点击跳转 `/pages/chat/chatPage`(参考 [goods/detail.vue:387-391](front-end/mallApp/src/pages/goods/detail.vue) 的 `eventChannel` 用法)。
+  3. 公告条:纯静态样式(无开关配置),仿照 [ghsProduct.vue](front-end/hdApp/src/pagesPurchase/ghsProduct.vue) 的纵向 swiper 公告条结构自建一个简化版本(文案先写死或后续再接配置)。
+  4. 金刚区导航:按 `cols`(4/5)渲染图标网格。
+  5. 秒杀专区 / 团购专区:倒计时 + 按 `layoutCols`(1/2/3) 渲染商品,按钮分别为"立即抢购"/"去开团"(均为粉色主色)。
+  6. 热门推荐 / 今日上新:按 `layoutCols`(1/2/3) 渲染,"+"/购物车按钮改为粉色。
+  7. 下拉商品:追加在页面底部,同样按 `layoutCols` 渲染。
+- 建议拆成 `components/home/` 下的子组件(`topNav.vue`/`bannerSwiper.vue`/`noticeBar.vue`/`navGrid.vue`/`activitySection.vue`/`goodsSection.vue`),与 hdApp 预览页保持一致的视觉规范但各自独立实现(两项目不共享代码)。
+- 商品图默认正方形(`aspectFill`),轮播图保持矩形;跳转商品详情用 `/pages/item/detail?id=..&account=..`;金刚区/更多点击分类类简单跳 `/pages/home/category?...`,非分类类型(如场景/商品聚合)先给出简化跳转或提示,不在本次深入打通全链路点击跳转。
+
+### 2. `recent.vue` 入口调整
+
+把 `bug(item)`(被 `enterShop` 调用)里的目标地址由 `/pages/item/item?account=...&hdId=...` 改为 `/pages/home/index?account=...&hdId=...`,其余跳转(`hs`分类、`tj`相册等)保持不变。
+
+### 3. 颜色统一
+
+新页面/组件统一使用与 hdApp 预览一致的粉红主色(`#FF6B88`/`#FF4D6D`/浅底 `#FFF3F5`),替换参考图里出现的绿色按钮(如"去开团""+"购物车图标)。
+
+## 四、涉及文件一览
+
+- 后端:[HomePageModuleClass.php](huahuibao/biz-hd/homePageConfig/classes/HomePageModuleClass.php)、新增 `HomePageDisplayClass.php`、[app-mall/controllers/HomePageConfigController.php](huahuibao/app-mall/controllers/HomePageConfigController.php)、[app-hd/controllers/HomePageConfigController.php](huahuibao/app-hd/controllers/HomePageConfigController.php)
+- hdApp:[seckill.vue](front-end/hdApp/src/admin/homePageConfig/seckill.vue)、[groupBuy.vue](front-end/hdApp/src/admin/homePageConfig/groupBuy.vue)、[goodsSection.vue](front-end/hdApp/src/admin/homePageConfig/goodsSection.vue)、[index.vue](front-end/hdApp/src/admin/homePageConfig/index.vue)、新增 `preview.vue` 及 `previewParts/*`、[api/home-page-config/index.js](front-end/hdApp/src/api/home-page-config/index.js)、[pages.json](front-end/hdApp/src/pages.json)
+- mallApp:[pages/home/index.vue](front-end/mallApp/src/pages/home/index.vue)、[pages/home/recent.vue](front-end/mallApp/src/pages/home/recent.vue)、新增 `components/home/*`
+
+## 五、验证方式
+
+因无法在本环境运行小程序/App 真机预览,将通过:静态检查各 Vue 文件语法、核对接口字段与前端使用是否一致、以及(如可行)用现有 `/scripts/db_struct.sh` 或直接读 Redis 校验保存的 `layoutCols` 字段格式。不涉及自动化 UI 测试。

+ 176 - 0
任务小笔记/26年/07-13:花掌柜与花卉宝改版/4-首页模块商品展示数量与更多页.md

@@ -0,0 +1,176 @@
+---
+name: 首页模块商品展示数量与更多页
+overview: 为 hdApp 门店首页配置的秒杀/团购/热门推荐/今日上新/下拉商品新增"商品展示数量"设置,mallApp 首页对应模块据此显示"更多"按钮并跳转到新建的模块商品列表页;同时移除秒杀/团购编辑页中冗余的"商品首页展开"开关(后端已确认该字段未参与任何展示逻辑,属于死代码)。
+todos: []
+isProject: false
+---
+### 计划需求指令:
+1. 项目 hdApp 下的首页配置-->门店首页配置下的秒杀专区 、团购专区 、热门推荐、今日上新和下拉商品的表单项要加个“商品展示数量”--默认是全部,另外可以设置1~10个(设置的数量超出总数时,即为全部)。增加“商品展示数量”后,在mallApp的 mallApp/src/pages/home/index.vue 的各模块要根据:“商品展示数量” 小于当前“商品总数”,则对应模块的右上角要显示“更多”按钮,“商品展示数量” 等于当前“商品总数”,则对应模块的右上角不显示“更多”按钮。
+2. 点击“更多”按钮跳转到一个商品列表页,标题为对应模块名称。这个页面要新建,样式参照 mallApp/src/pages/goods/list.vue ,此次实现的页面不需要筛选功能
+3. 项目 hdApp 下的首页配置-->门店首页配置下的秒杀专区编辑页(hdApp/src/admin/homePageConfig/seckill.vue)与团购专区编辑页(hdApp/src/admin/homePageConfig/groupBuy.vue)下的“商品首页展开”表单项是不是多余的,如果是请把它删除(对应后端的缓存数据也处理)
+
+## 背景确认(已调研)
+
+- `expandHome` 字段:仅在 [HomePageModuleClass.php](../huahuibao/biz-hd/homePageConfig/classes/HomePageModuleClass.php) 的 `validateActivityBase`/`normalizeActivityBase` 中写入/读出 Redis,全仓库无任何展示分支依赖它,确认为冗余字段,可删除。
+- 首页展示数据统一在 `HomePageDisplayClass::buildHome` 组装,秒杀/团购走 `formatActivity`(无条数截断),热门/上新/下拉走 `formatGoodsSection`→`resolveDisplayGoods`(硬编码 `DISPLAY_GOODS_LIMIT=20` 截断,且不返回总数)。
+- mallApp 首页当前:`goodsSection.vue`(热门/上新/下拉)已有无条件的"更多"(跳店铺分类页);`activitySection.vue`(秒杀/团购)没有"更多"入口。
+- 已与用户确认两个关键设计:
+  1. "更多"列表页中秒杀/团购商品**保留活动价/原价/团购人数**展示,样式参照 `goods/list.vue` 卡片布局。
+  2. "商品总数"与"更多"列表页范围采用**真实总数**(不受现有 20 条上限限制),后端新增接口支持分页浏览全部商品。
+
+## 一、后端(huahuibao)
+
+### 1. 新增 `displayCount` 字段,移除 `expandHome`
+
+文件:[biz-hd/homePageConfig/classes/HomePageModuleClass.php](../huahuibao/biz-hd/homePageConfig/classes/HomePageModuleClass.php)
+
+- `validateActivityBase`(行 641-686)、`normalizeActivityBase`(行 627-639):删除 `expandHome` 读写;新增 `displayCount`(0=全部,1-10=具体数量)。新增校验方法:
+
+```php
+public static function normalizeDisplayCount($value)
+{
+    if ($value === '' || $value === null || intval($value) === 0) {
+        return 0;
+    }
+    $count = intval($value);
+    if ($count < 1 || $count > 10) {
+        util::fail('商品展示数量范围为1-10,留空表示全部');
+    }
+    return $count;
+}
+```
+
+- 秒杀/团购:`validateActivityBase` 用 `'displayCount' => self::normalizeDisplayCount($data['displayCount'] ?? 0)` 替换 `expandHome` 那一行;`normalizeActivityBase` 同理用 `intval($saved['displayCount'] ?? 0)` 替换。
+- 热门/上新/下拉:`getGoodsSection`(行 438-456)、`saveGoodsSection`(行 458-494)同样新增 `displayCount` 的读取与保存(复用 `normalizeDisplayCount`)。
+- 旧 Redis 缓存中残留的 `expandHome` 字段无需专门迁移:整个模块配置以 JSON 整体 `SET` 覆盖存储,下次管理员保存后该字段自然被新结构替换;读取时不再解析它即不产生任何影响。
+
+### 2. 商品总数与展示条数截断逻辑
+
+文件:[biz-hd/homePageConfig/classes/HomePageModuleClass.php](../huahuibao/biz-hd/homePageConfig/classes/HomePageModuleClass.php)
+
+- 将 `resolveDisplayGoods`(行 519-610)拆分为:
+  - `matchGoodsRows($mainId, $type, $value, $sort)`:保留现有匹配+排序逻辑,返回**未截断**的原始行数组。
+  - `formatGoodsRows($rows)`:现有"组装输出字段(含 coverUrl)"部分抽出为独立方法。
+  - `resolveDisplayGoodsPaged($mainId, $type, $value, $sort, $page, $pageSize)`:调用 `matchGoodsRows` 取总数,再按 `page/pageSize` 切片、`formatGoodsRows` 格式化,返回 `['list' => [...], 'total' => n]`。
+
+文件:[biz-hd/homePageConfig/classes/HomePageDisplayClass.php](../huahuibao/biz-hd/homePageConfig/classes/HomePageDisplayClass.php)
+
+- `formatActivity`(行 119-141):抽出"状态过滤 + coverUrl 补全"为私有方法 `filterActivityGoods($rawList)`(不做截断),供 `formatActivity` 和后面的分页接口共用;`formatActivity` 内使用该方法取全量后计算 `$total = count($goods)`,再按 `$limit = 1<=displayCount<=10 ? displayCount : HomePageModuleClass::DISPLAY_GOODS_LIMIT` 截断,返回时新增 `goodsTotal` 字段。
+- `formatGoodsSection`(行 150-164):改为调用 `resolveDisplayGoodsPaged($mainId, type, value, sort, 1, $limit)`(`$limit` 同上取 displayCount 或默认 20),返回时新增 `goodsTotal` 字段(取分页结果里的 `total`)。
+- 新增 `getSectionGoodsPage($mainId, $moduleKey, $page, $pageSize)`:统一入口,供"更多"列表页调用:
+  - `moduleKey` 为 `seckill`/`groupBuy`:取 `getSeckill`/`getGroupBuy` → `filterActivityGoods` 取全量 → 按 page/pageSize 切片,标题取 `title`(与首页展示一致的兜底文案)。
+  - `moduleKey` 为 `hot`/`new`/`pullGoods`:取 `getGoodsSection` → `resolveDisplayGoodsPaged`,标题取 `name`。
+  - 统一返回 `{ list, total, totalPage, page, pageSize, moreData, title }`(与 `GoodsCategoryClass::getGoodsList` 分页返回约定一致,供前端 `mixins/list.js` 直接消费)。
+
+### 3. Controller 新增接口
+
+- [app-mall/controllers/HomePageConfigController.php](../huahuibao/app-mall/controllers/HomePageConfigController.php):新增 `actionGetSectionGoods()`,读取 `moduleKey/page/pageSize`,调用 `HomePageDisplayClass::getSectionGoodsPage`;加入 `guestAccess`。
+- [app-hd/controllers/HomePageConfigController.php](../huahuibao/app-hd/controllers/HomePageConfigController.php):`actionSaveSeckill`/`actionSaveGroupBuy`/`actionSaveHot`/`actionSaveNew`/`actionSavePullGoods` 无需改动(内部已透传 `Yii::$app->request->post()` 给业务类,业务类新增字段即可生效)。
+
+## 二、hdApp 管理端(front-end)
+
+### 1. 秒杀/团购编辑页:移除"商品首页展开",新增"商品展示数量"
+
+文件:[hdApp/src/admin/homePageConfig/seckill.vue](../front-end/hdApp/src/admin/homePageConfig/seckill.vue)、[groupBuy.vue](../front-end/hdApp/src/admin/homePageConfig/groupBuy.vue)(两文件结构一致,逐一同步修改)
+
+- 删除模板中"商品首页展开" `tui-list-cell`(seckill.vue 行 51-56)。
+- 原位置新增"商品展示数量"字段:
+
+```html
+<tui-list-cell class="line-cell" :hover="false">
+  <view class="tui-title">商品展示数量</view>
+  <input
+    v-model="form.displayCount"
+    class="tui-input"
+    type="number"
+    maxlength="2"
+    placeholder="默认全部"
+  />
+</tui-list-cell>
+<view class="field-hint">范围1-10,留空为全部;设置数量超出商品总数时按全部展示</view>
+```
+
+- `data().form`:删除 `expandHome: 0`,新增 `displayCount: ''`。
+- `normalizeForm`:删除 `expandHome` 映射,新增 `displayCount: data.displayCount ? String(data.displayCount) : ''`。
+- 删除 `onExpandHomeChange` 方法。
+- `saveFn` 提交参数:删除 `expandHome`,新增 `displayCount: this.form.displayCount === '' ? 0 : parseInt(this.form.displayCount, 10)`;提交前校验:非空时必须在 1-10 之间,否则 `this.$msg('商品展示数量范围为1-10')` 并中断。
+
+### 2. 热门/上新/下拉共用编辑页:新增"商品展示数量"
+
+文件:[hdApp/src/admin/homePageConfig/goodsSection.vue](../front-end/hdApp/src/admin/homePageConfig/goodsSection.vue)
+
+- 在"排列规则"字段行(行 115-128)后新增同样的"商品展示数量"输入行。
+- `data().form` 新增 `displayCount: ''`;`init()` 中回填 `displayCount: d.displayCount ? String(d.displayCount) : ''`;`saveFn` 提交与校验逻辑同上。
+
+### 3. API 封装
+
+文件:[hdApp/src/api/home-page-config/index.js](../front-end/hdApp/src/api/home-page-config/index.js) — 无需新增(`displayCount` 随现有 `saveSeckill/saveGroupBuy/saveHot/saveNew/savePullGoods` 一起提交)。
+
+## 三、mallApp 顾客端(front-end)
+
+### 1. 首页模块组件:按 `goodsTotal` 显示"更多"
+
+文件:[mallApp/src/components/home/activitySection.vue](../front-end/mallApp/src/components/home/activitySection.vue)
+
+- 新增 computed `showMore()`:`return Number(this.data.goodsTotal || 0) > (this.data.goods || []).length`。
+- 模板:在 `activity-head` 内新增"更多"按钮(放在标题行右侧,需要把当前 `.activity-title-row` 包一层并用 `justify-content: space-between` 让"更多"贴右,倒计时与标题保持左侧一组),`v-if="showMore"`,点击调用 `goMore()`。
+- 新增方法:
+
+```js
+goMore() {
+  const title = this.data.title || (this.isGroupBuy ? '团购优惠' : '限时秒杀')
+  this.pageTo({
+    url: `/pages/goods/section-list?moduleKey=${this.type}&title=${encodeURIComponent(title)}&account=${this.account}&hdId=${this.hdId}`
+  })
+}
+```
+
+文件:[mallApp/src/components/home/goodsSection.vue](../front-end/mallApp/src/components/home/goodsSection.vue)
+
+- 新增 prop `moduleKey`(hot/new/pullGoods)。
+- `.section-more` 增加 `v-if="showMore"`(computed 同上)。
+- `goMore()` 改为跳转新页面:`/pages/goods/section-list?moduleKey=${this.moduleKey}&title=${encodeURIComponent(this.data.name)}&account=...&hdId=...`(替换现有跳店铺分类页的逻辑)。
+
+文件:[mallApp/src/pages/home/index.vue](../front-end/mallApp/src/pages/home/index.vue)
+
+- 给三个 `home-goods-section` 实例分别加上 `module-key="hot"` / `"new"` / `"pullGoods"`(行 54-71 附近)。
+
+### 2. 新增 API 封装
+
+文件:[mallApp/src/api/home-page-config/index.js](../front-end/mallApp/src/api/home-page-config/index.js)
+
+```js
+export const getSectionGoods = data => https.get('/home-page-config/get-section-goods', data)
+```
+
+### 3. 新建"模块商品列表"页面
+
+新文件:`mallApp/src/pages/goods/section-list.vue`
+
+- 参照 [goods/list.vue](../front-end/mallApp/src/pages/goods/list.vue) 的整体风格(卡片列表、`mixins/list`、下拉刷新/触底加载、空态),但**不含**搜索栏与筛选弹窗(整段移除)。
+- 通过 query 取 `moduleKey`、`title`、`account`、`hdId`;`onLoad`/`init` 中 `uni.setNavigationBarTitle({ title })`。
+- 请求:`buildQuery()` 返回 `{ moduleKey, page, pageSize: 10 }`,`loadGoods()` 调 `getSectionGoods(...).then(res => this.completes(res))`。
+- 卡片渲染需兼容两类返回数据形状:
+  - 热门/上新/下拉:`{id,name,price,stock,cover,coverUrl,sold}` — 展示价格 + 已售数量。
+  - 秒杀/团购:`{id,name,price,originPrice,cover,coverUrl,groupSize?}` — 展示活动价 + 原价划线,团购额外显示"XX人团"角标。
+  - 用 `moduleKey` 判断展示分支(`isActivity = moduleKey === 'seckill' || moduleKey === 'groupBuy'`)。
+- 点击卡片跳转 `/pages/goods/detail?id=${item.id}&account=...&hdId=...`。
+
+在 [mallApp/src/pages.json](../front-end/mallApp/src/pages.json) 的 `pages/goods` 分包(行 74-80)追加:
+
+```json
+{ "path": "section-list", "style": { "navigationBarTitleText": "商品列表", "enablePullDownRefresh": true } }
+```
+
+## 四、不涉及的范围(明确说明)
+
+- `hdApp/src/admin/homePageConfig/preview.vue` 及其 `previewParts/*` 组件为只读预览(不支持下单/跳转交互),不新增"更多"按钮,维持现状。
+- `seckillGoodsEdit.vue` / `groupBuyGoodsEdit.vue` 中的"单人限购"字段与本次"商品展示数量"无关,不改动。
+
+## 验证
+
+- 前端改动完成后不自动执行 `npm run build:mp-weixin`(按项目规则,由用户自行运行)。
+- 结构性改动后运行 `npm run index`(understand-project)刷新索引,`npm run validate` 校验。
+</plan>
+<todos>
+[{"id":"backend-displaycount","content":"HomePageModuleClass.php: 移除 expandHome,新增 displayCount 校验/读写(活动+goodsSection)"},{"id":"backend-total-refactor","content":"重构 resolveDisplayGoods 为 matchGoodsRows/formatGoodsRows/resolveDisplayGoodsPaged,支持真实总数与分页"},{"id":"backend-display-class","content":"HomePageDisplayClass.php: formatActivity/formatGoodsSection 返回 goodsTotal 并按 displayCount 截断;新增 getSectionGoodsPage"},{"id":"backend-controller","content":"app-mall HomePageConfigController 新增 actionGetSectionGoods 并加入 guestAccess"},{"id":"hd-seckill-groupbuy-form","content":"hdApp seckill.vue/groupBuy.vue: 删除商品首页展开,新增商品展示数量输入与校验"},{"id":"hd-goodssection-form","content":"hdApp goodsSection.vue: 新增商品展示数量输入与校验"},{"id":"mall-api","content":"mallApp api/home-page-config: 新增 getSectionGoods"},{"id":"mall-activity-section","content":"mallApp activitySection.vue: 按 goodsTotal 显示更多按钮并跳转"},{"id":"mall-goods-section","content":"mallApp goodsSection.vue: 新增 moduleKey prop,按 goodsTotal 显示更多并跳转新页面"},{"id":"mall-home-index","content":"mallApp home/index.vue: 为三个 goods-section 实例传入 module-key"},{"id":"mall-section-list-page","content":"新建 mallApp pages/goods/section-list.vue 并注册 pages.json,参照 list.vue 去掉筛选"}]

+ 171 - 0
任务小笔记/26年/07-13:花掌柜与花卉宝改版/5-购物车与结算优化.md

@@ -0,0 +1,171 @@
+---
+name: 商城购物车结算优化
+overview: 让 mallApp 花束商品也能加入购物车并与花材共用同一购物车体系,店铺首页商品加购按钮按"单规格/多规格/团购"分流交互,新建花束+花材混合结算页,并新增专用的合并下单接口而不破坏现有 order/buy-item 与 order/create-order。
+todos:
+  - id: backend-spec-field
+    content: 后端列表接口(groupGoodsBaseInfo/formatGoodsRows)补充specEnabled字段
+    status: completed
+  - id: cart-data-model
+    content: 扩展cgProduct.js购物车行结构支持property区分花束/花材
+    status: completed
+  - id: shop-category-cart
+    content: shop-category.vue花束分类页加购分流(单规格直加/多规格跳转)
+    status: completed
+  - id: goods-section-cart
+    content: goodsSection.vue首页商品卡加购按钮分流
+    status: completed
+  - id: detail-add-cart
+    content: goods/detail.vue+buy-foot+sel-popup补充加入购物车出口
+    status: in_progress
+  - id: cart-page-mixed
+    content: cart.vue支持花束/花材混合展示、去重键、结算路由分流
+    status: pending
+  - id: affirm-mix-page
+    content: 新建billing/affirmMix.vue合并结算页并注册路由
+    status: pending
+  - id: api-create-mix-order
+    content: 前端新增createMixOrder API封装
+    status: pending
+  - id: backend-mix-order-action
+    content: 后端新增actionCreateMixOrder,复用createHdOrder不破坏原接口
+    status: pending
+isProject: false
+---
+
+# 商城购物车与结算流程优化实施计划
+
+## 已确认的关键设计决策
+
+1. **购物车数据结构**:花束加入购物车后与花材**共用同一个** Vuex 购物车列表 `selectInfo['cg']`([mallApp/src/store/modules/product.js](/Users/shishao/dnmp/www/front-end/mallApp/src/store/modules/product.js)),用 `property` 字段区分(`0`=花束,`1`=花材),与后端 `createHdOrder` 及 hdPad 混合收银台的既有语义保持一致。
+2. **单规格/多规格判断**:由**后端在列表接口中补充 `specEnabled` 字段**,前端列表页直接读取该字段判断,无需先请求详情。
+3. **花束分类页(1.1)**:也遵循 1.2 的规则——单规格直接加购,多规格跳转详情选规格,与店铺首页行为保持一致。
+4. **结算下单 API**:**新增专用合并结算接口** `order/create-mix-order`,内部复用 `\bizHd\order\services\OrderService::createHdOrder`;原有 `order/buy-item`、`order/create-order` 保持不变,继续服务各自原场景。
+
+## 架构说明
+
+```mermaid
+flowchart TD
+    shopCategory["shop-category.vue 花束分类"] -->|"点击购物车按钮"| checkSpec1{"specEnabled?"}
+    goodsSection["goodsSection.vue 首页热销/上新"] -->|"点击 +/购物车图标"| checkSpec2{"specEnabled?"}
+    checkSpec1 -->|"单规格"| addCartDirect["直接加购 property:0"]
+    checkSpec1 -->|"多规格"| goDetailPage["跳转 goods/detail"]
+    checkSpec2 -->|"单规格"| addCartDirect
+    checkSpec2 -->|"多规格"| goDetailPage
+    goDetailPage --> selPopup["sel-popup 选规格"]
+    selPopup -->|"加入购物车(新增)"| addCartDirect
+    selPopup -->|"立即购买(原有)"| orderBuy["pages/order/buy 单品直购"]
+    activitySection["activitySection.vue 团购模块"] -->|"去开团(不变)"| goDetailPage
+
+    addCartDirect --> selectInfoCg["Vuex selectInfo.cg\n花材(property:1) + 花束(property:0)"]
+    shopCategoryItem["shop-category.vue 花材分类(已支持)"] --> selectInfoCg
+
+    selectInfoCg --> cartPage["cart.vue 购物车"]
+    cartPage -->|"勾选全部为花材"| affirmGhs["billing/affirmGhs.vue(不变)"]
+    cartPage -->|"含花束(纯花束或混合)"| affirmMix["billing/affirmMix.vue(新建)"]
+
+    affirmGhs -->|"order/buy-item(不变)"| createHdOrder["OrderService::createHdOrder"]
+    orderBuy -->|"order/create-order(不变)"| createHdOrder
+    affirmMix -->|"order/create-mix-order(新建)"| createHdOrder
+```
+
+## 一、购物车加入逻辑
+
+### 1. 后端:列表接口补充规格标识字段(huahuibao / app-mall)
+
+- [biz-hd/goods/classes/GoodsClass.php](/Users/shishao/dnmp/www/huahuibao/biz-hd/goods/classes/GoodsClass.php) 的 `groupGoodsBaseInfo()`(508-554行,供 `/category/goods-list` 等列表接口使用):批量查询 `masterId in (goodsIds)` 存在即为多规格,补充 `$val['specEnabled']`,避免逐条 N+1 查询。
+- [biz-hd/homePageConfig/classes/HomePageModuleClass.php](/Users/shishao/dnmp/www/huahuibao/biz-hd/homePageConfig/classes/HomePageModuleClass.php) 的 `formatGoodsRows()`(618-635行,供首页热销/上新/拼团等模块使用):同样批量补充 `specEnabled`。
+- 两处逻辑一致,建议在 `GoodsClass` 新增一个共用的静态方法(如 `getSpecEnabledMap($goodsIds)`)供两处调用,避免重复实现。
+
+### 2. 前端:购物车行支持花束(mallApp)
+
+- [mallApp/src/mixins/cgProduct.js](/Users/shishao/dnmp/www/front-end/mallApp/src/mixins/cgProduct.js):
+  - `addEvent` 现有逻辑按 `id+classId` 判重,需要扩展为按 `id+property` 判重(花束行 `classId` 置 0,避免与花材 id 撞车)。
+  - 新增花束加购方法(如 `addBouquetToCart(goods, spec)`),组装 `{ id, property:0, goodsId, specGoodsId, name, cover, price, num:1 }` 写入 `selectList` 后复用现有 `setSelectInfoByType` + `rememberProduct()`。
+- 行标识、合并/去重等所有按 `id` 判断唯一性的地方,统一改为 `id+property` 组合键。
+
+### 3. 花束分类页:[mallApp/src/pages/home/shop-category.vue](/Users/shishao/dnmp/www/front-end/mallApp/src/pages/home/shop-category.vue)
+
+将:
+
+```212:214:/Users/shishao/dnmp/www/front-end/mallApp/src/pages/home/shop-category.vue
+              <view class="goods-cart-btn" @tap.stop="toBouquetDetail(item)">
+                <sprite-icon name="icon-cart" :size="36" />
+              </view>
+```
+
+改为 `@tap.stop="handleAddToCart(item)"`,方法内按 `item.specEnabled` 分流:单规格直接加购并 `uni.showToast({title:'已加入购物车'})`;多规格保留原 `toBouquetDetail(item)` 跳转逻辑。
+
+### 4. 店铺首页:[mallApp/src/components/home/goodsSection.vue](/Users/shishao/dnmp/www/front-end/mallApp/src/components/home/goodsSection.vue)
+
+- `add-btn`(21行)与 `cart-icon`(39行)当前都绑定/冒泡到 `goDetail(g)`,改为各自绑定 `@click.stop="handleCartClick(g)"`。
+- `handleCartClick(g)` 按 `g.specEnabled` 分流:单规格 → 直接加购 + toast;多规格 → `goDetail(g)`。
+- [mallApp/src/components/home/activitySection.vue](/Users/shishao/dnmp/www/front-end/mallApp/src/components/home/activitySection.vue)(团购/秒杀模块)**无需修改**:该组件本身没有购物车/加号按钮,卡片点击与"去开团"按钮已统一跳转商品详情页,天然满足"团购商品跳转团购流程"的要求。
+
+### 5. 商品详情页补充"加入购物车"能力(多规格分流后的落点)
+
+当前 [mallApp/src/pages/goods/detail.vue](/Users/shishao/dnmp/www/front-end/mallApp/src/pages/goods/detail.vue) 只有"购买"按钮([buy-foot.vue](/Users/shishao/dnmp/www/front-end/mallApp/src/pages/goods/components/buy-foot.vue))→ 弹出 [sel-popup.vue](/Users/shishao/dnmp/www/front-end/mallApp/src/pages/goods/components/sel-popup.vue) 选规格 → "下一步"直接进入 `order/buy` 单品直购,**没有加入购物车的出口**。需新增:
+
+- `buy-foot.vue`:新增"加入购物车"按钮,`emit('cart')`。
+- `sel-popup.vue`:区分触发来源(购物车 or 立即购买),新增一个"加入购物车"按钮,选完规格后写入 `selectList`(`property:0` + `specGoodsId`)并关闭弹窗、toast提示,不跳转 `order/buy`;原"下一步"立即购买逻辑不变。
+
+## 二、结算与订单创建流程优化
+
+### 1. 购物车展示改造:[mallApp/src/pages/home/cart.vue](/Users/shishace/dnmp/www/front-end/mallApp/src/pages/home/cart.vue)
+
+- 列表渲染区分 `property===1`(花材,原有 扎/支 展示)与 `property===0`(花束,展示"份"+规格名+单价,无 `bigCount/smallCount` 换算)。
+- `getItemKey`(370-374行)改为 `` `${item.id}_${item.property}_${item.classId||0}` ``。
+- 现有按 `id` 做合并/去重(如 `_shouldMergeSelectByProductId`)的逻辑要按 `property` 隔离,避免花束与花材因同 id 被错误合并。
+- "去结算"(`goCheckout`,634-659行)按勾选项组成分流:
+  - 勾选项全部为 `property===1`(纯花材)→ 保持跳转 `/pages/billing/affirmGhs`(不变,向后兼容)。
+  - 勾选项包含任意 `property===0`(纯花束或混合)→ 跳转新页面 `/pages/billing/affirmMix`。
+
+### 2. 新建合并结算页:`mallApp/src/pages/billing/affirmMix.vue`
+
+- 参照 [affirmGhs.vue](/Users/shishao/dnmp/www/front-end/mallApp/src/pages/billing/affirmGhs.vue) 骨架搭建整体结构(地址/收货人、配送方式、`HbSelect` 红包、`TuiListCell`、`mx-datepicker`、底部合计+提交栏),商品清单按 `property` 分组展示花材与花束两部分,分别计价再汇总。
+- 花束相关的跑腿收货人字段(收花人姓名/手机号)参照 [order/buy.vue](/Users/shishao/dnmp/www/front-end/mallApp/src/pages/order/buy.vue) 及其 `app-delivery` 组件。
+- 提交调用新 API `createMixOrder`。
+- 在 `pages.json` 的 `billing` 分组下注册新路由。
+
+### 3. 前端 API 封装:[mallApp/src/api/order/index.js](/Users/shishao/dnmp/www/front-end/mallApp/src/api/order/index.js)
+
+新增:
+
+```js
+export const createMixOrder = data => {
+	return https.post('/order/create-mix-order', data)
+}
+```
+
+### 4. 后端新增合并下单接口:[app-mall/controllers/OrderController.php](/Users/shishao/dnmp/www/huahuibao/app-mall/controllers/OrderController.php)
+
+新增 `actionCreateMixOrder`,设计要点:
+
+- **不修改** `actionBuyItem`(201-562行)与 `actionCreateOrder`(565-904行),两者保持现状供各自原有页面使用。
+- 入参 `product[]` 允许同时包含 `property:0`(花束,可带 `specGoodsId`)与 `property:1`(花材,带 `itemId`/`unitType`)的条目。
+- 花材条目:复用 `actionBuyItem` 中的定价(`\bizGhs\product\classes\ProductClass::getFinalPrice`)、限购(`handleLimitBuy`)、预售校验逻辑。
+- 花束条目:复用 `actionCreateOrder` 中的规格解析(`specGoodsId` → `GoodsClass`)、定价(`\bizHd\goods\classes\GoodsClass::getFinalPrice`)逻辑。
+- 两部分价格汇总后统一处理红包扣减、生成统一 `modifyPrice`,**只调用一次** `\bizHd\order\services\OrderService::createHdOrder($post, $custom, $hasPay)` 提交混合 `product[]`(已验证该方法按 `property` 分别写 `OrderGoodsClass`/`OrderItemClass`,共用同一 `orderSn`,见 [biz-hd/order/services/OrderService.php:28-101,125-226,299-328](/Users/shishao/dnmp/www/huahuibao/biz-hd/order/services/OrderService.php))。
+- 建议将两个原有 action 中可复用的定价/校验片段抽取为私有方法或 Service 方法,减少三处重复代码。
+
+**实现阶段需要重点核实/决策的风险点**(已知但需要写代码时具体验证,不影响本次方案定型):
+
+- 客户身份解析:`actionBuyItem` 通过 `hdId → HdClass → hd.customId → CustomClass` 取 `$custom`;`actionCreateOrder` 直接用 `$this->custom`。需确认在 mallApp 场景下两者解析结果是否一致,合并接口取哪个作为准。
+- 跑腿运费:花材下单时 `goodsType:1`,花束下单时 `goodsType:0`,混合单如何统一计价(分别计价再相加,还是 `DeliveryQuoteUtil` 需要支持混合 `goodsType`)需要在实现时与 `DeliveryQuoteUtil` 逻辑确认。
+- 限购/预售仅存在于花材路径,花束的规格库存扣减是独立路径,混合单中两套校验都要执行,注意事务边界与失败回滚(现有两个 action 都有 `register_shutdown_function` 回滚限购快照的逻辑,合并时需要保留)。
+
+## 涉及文件清单汇总
+
+**前端(front-end / mallApp)**
+- `src/pages/home/shop-category.vue`(花束分类加购分流)
+- `src/components/home/goodsSection.vue`(首页商品卡加购分流)
+- `src/pages/goods/detail.vue` / `components/buy-foot.vue` / `components/sel-popup.vue`(详情页加购出口)
+- `src/mixins/cgProduct.js`(购物车行结构扩展)
+- `src/pages/home/cart.vue`(混合展示、去重、结算路由分流)
+- `src/pages/billing/affirmMix.vue`(新建)
+- `src/api/order/index.js`(新增 `createMixOrder`)
+- `src/pages.json`(注册新路由)
+
+**后端(huahuibao)**
+- `biz-hd/goods/classes/GoodsClass.php`(`groupGoodsBaseInfo` 补 `specEnabled`)
+- `biz-hd/homePageConfig/classes/HomePageModuleClass.php`(`formatGoodsRows` 补 `specEnabled`)
+- `app-mall/controllers/OrderController.php`(新增 `actionCreateMixOrder`)

+ 92 - 0
任务小笔记/26年/07-13:花掌柜与花卉宝改版/实现后变动修改/hdApp首页商品区自动排列-1.md

@@ -0,0 +1,92 @@
+---
+name: 秒杀/团购首页自动布局
+overview: 隐藏 hdApp 秒杀/团购配置页的"商品展示数量"和"排列规则"手动设置项,改为后端按商品数量+新增的"商品展开"开关自动推导 layoutCols 与 displayCount,mallApp 店铺首页现有的"更多"链接逻辑无需改动即可自动生效。
+todos:
+  - id: backend-layout
+    content: 后端 HomePageModuleClass 新增 expand 字段与 resolveActivityLayout 自动计算逻辑(seckill+groupBuy)
+    status: completed
+  - id: frontend-seckill
+    content: hdApp seckill.vue:新增商品展开开关,删除商品展示数量与排列规则UI及相关脚本
+    status: completed
+  - id: frontend-groupbuy
+    content: hdApp groupBuy.vue:同步做与 seckill.vue 一致的改动
+    status: completed
+  - id: verify
+    content: 自测四种商品数量场景(1/2/3/>3及展开开关开关状态)下 layoutCols/displayCount/goodsTotal 计算是否符合预期
+    status: completed
+isProject: false
+---
+### 计划需求指令:
+- hdApp/src/admin/homePageConfig/new.vue 页面也做以上同样的处理。
+ - hdApp/src/admin/homePageConfig/pullGoods.vue 页面下的商品展示数量隐藏(或删除),“排列规则”删除掉(或隐藏),使用如下隐藏规则:
+	1. 当只添加了一个商品时,按1排1列来展示
+	2. 当只添加了两个商品时,按1排2列来展示
+	3. 当添加了三个及以上商品时,还是按1排2列来展示(且把展示数量设置为全部x),且在mallApp下的店铺首页的下拉商品中把所有的商品都展示。由于全部商品都显示了,右上角没有“更多”链接。
+
+# 秒杀/团购首页展示规则自动化
+
+## 背景梳理
+
+- `layoutCols`(1排1列/2列/3列)与 `displayCount`(展示数量)目前由商家在 [hdApp/src/admin/homePageConfig/seckill.vue](hdApp/src/admin/homePageConfig/seckill.vue) / [groupBuy.vue](hdApp/src/admin/homePageConfig/groupBuy.vue) 手动填写,提交给后端 `saveSeckill`/`saveGroupBuy` 校验后原样存 Redis。
+- mallApp 店铺首页渲染组件 [mallApp/src/components/home/activitySection.vue](mallApp/src/components/home/activitySection.vue) 已经具备:
+  - `cols` computed 读取 `data.layoutCols` 控制列数(第99-102行)
+  - `showMore` computed:`data.goodsTotal > data.goods.length` 时显示右上角"更多"链接(第104-106行,第21行渲染)
+  - 后端 [HomePageDisplayClass::formatActivity()](huahuibao/biz-hd/homePageConfig/classes/HomePageDisplayClass.php)(第147-162行)负责按 `displayCount` 截断 `goods` 并计算 `goodsTotal`。
+- 结论:**mallApp 端"更多"链接和列数渲染逻辑已经齐全,完全不需要改动**;只需要让后端在读取秒杀/团购配置时,根据"已添加商品数量"+新增"商品展开"开关,自动算出 `layoutCols`/`displayCount`,替代商家手动填写。
+
+## 后端改动(huahuibao)
+
+文件:[biz-hd/homePageConfig/classes/HomePageModuleClass.php](huahuibao/biz-hd/homePageConfig/classes/HomePageModuleClass.php)
+
+1. 新增字段 `expand`(商品展开开关,0/1,默认0),随活动基础信息一起存取:
+   - `validateActivityBase()`:不再读取/校验客户端传入的 `layoutCols`/`displayCount`;改为读取并落地 `expand`。
+   - `normalizeActivityBase()`:不再返回 `layoutCols`/`displayCount`(改由下面新逻辑动态计算);返回 `expand`。
+2. 新增静态方法 `resolveActivityLayout($goodsCount, $expand)`:
+   - `expand` 为真 → `['layoutCols' => 1, 'displayCount' => 0]`(全部按1排1列展示)
+   - `$goodsCount <= 1` → `layoutCols=1, displayCount=0`
+   - `$goodsCount == 2` → `layoutCols=2, displayCount=0`
+   - `$goodsCount >= 3` → `layoutCols=3, displayCount=3`
+3. `getSeckill()` / `getGroupBuy()`:在算出 `$data['goods']`(即商家已添加的商品数组,不管单个商品开关状态)之后,调用 `resolveActivityLayout(count($data['goods']), $data['expand'])`,把结果写入 `$data['layoutCols']` / `$data['displayCount']`。这样每次读取都会自动刷新,不依赖旧数据迁移。
+4. `saveSeckill()` / `saveGroupBuy()`:无需再处理 layoutCols/displayCount(交由读取时动态计算),只需把 `expand` 存入 Redis(随 `validateActivityBase()` 返回值一起 `array_merge`)。
+
+不改动:`LAYOUT_COLS_OPTIONS`、`DEFAULT_LAYOUT_COLS`、`normalizeLayoutCols`、`saveGoodsSection`/`getGoodsSection`(热门/上新/下拉商品模块的排列规则保持商家手动配置,本次需求未涉及);`HomePageDisplayClass::formatActivity()` 不需要改(复用现有 `displayCount` 截断 + `goodsTotal` 计算)。
+
+## 前端改动(hdApp)
+
+对 [hdApp/src/admin/homePageConfig/seckill.vue](hdApp/src/admin/homePageConfig/seckill.vue) 与 [hdApp/src/admin/homePageConfig/groupBuy.vue](hdApp/src/admin/homePageConfig/groupBuy.vue) 做相同处理:
+
+1. **"显示倒计时"同行右侧新增"商品展开"开关**:复用相同 `switch` 组件与颜色,默认关闭。
+   ```html
+   <tui-list-cell class="line-cell between" :hover="false">
+     <view class="switch-item">
+       <view class="tui-title">显示倒计时</view>
+       <switch class="switch-ctrl" :checked="form.showCountdown == 1" color="#09C567" @change="onShowCountdownChange" />
+     </view>
+     <view class="switch-item">
+       <view class="tui-title">商品展开</view>
+       <switch class="switch-ctrl" :checked="form.expand == 1" color="#09C567" @change="onExpandChange" />
+     </view>
+   </tui-list-cell>
+   ```
+2. **删除"商品展示数量"输入框及其提示文案**(原第51-62行区块)。
+3. **删除"排列规则"整块(`cols-section`,原第95-111行)**,包括对应的 `onLayoutColsChange` 方法与 scss 样式(`.cols-section`/`.cols-radio`/`.cols-label`/`.cols-text`)。
+4. **脚本调整**:
+   - `data.form`:移除 `displayCount`、`layoutCols`;新增 `expand: 0`。
+   - `normalizeForm(data)`:移除 displayCount/layoutCols 解析;新增 `expand: data.expand == 1 ? 1 : 0`。
+   - 新增 `onExpandChange(e) { this.form.expand = e.detail.value ? 1 : 0 }`。
+   - 删除 `parseDisplayCount()` 方法及其在 `saveFn()` 中的调用/校验。
+   - `saveFn()` 提交给 `saveSeckill`/`saveGroupBuy` 的 payload:去掉 `displayCount`、`layoutCols`,新增 `expand: this.form.expand`。
+5. 补充 `.switch-item`(flex 布局,左标题右开关)等少量样式;移除不再使用的 `.field-hint` 等(若确认无其他地方引用)。
+
+## 效果验证(新规则)
+
+- 添加1个商品 → 1排1列展示,全部商品显示,无"更多"。
+- 添加2个商品 → 1排2列展示,全部商品显示,无"更多"。
+- 添加≥3个商品、"商品展开"关闭 → 1排3列,只展示3个;若实际添加数>3,mallApp 秒杀/团购专区右上角自动出现"更多"(复用现有 `showMore` 逻辑,无需改 mallApp 代码)。
+- 添加≥3个商品、"商品展开"开启 → 不论数量,1排1列展示全部商品,不显示"更多"。
+- 以上规则在 `HomePageModuleClass::getSeckill/getGroupBuy` 每次读取时动态计算,因此秒杀和团购各自独立生效,且旧数据无需迁移脚本即可自动生效。
+
+## 验证方式
+
+- 修改完成后运行 `npm run validate`(如涉及索引/文档同步,参考 AGENTS.md 要求)。
+- 不涉及 `git add/commit/push`,也不主动执行 `npm run build:mp-weixin`。

+ 117 - 0
任务小笔记/26年/07-13:花掌柜与花卉宝改版/实现后变动修改/hdApp首页商品区自动排列-2.md

@@ -0,0 +1,117 @@
+---
+name: hdApp首页商品区自动排列
+overview: 在 hdApp 后台"热门推荐/今日上新/下拉商品"配置页隐藏"排列规则"与"商品展示数量"字段,改为后端按已添加商品真实数量自动推导列数与展示条数,并据此驱动 mallApp 店铺首页的展示效果与"更多"链接。
+todos:
+  - id: backend-layout-helper
+    content: "HomePageModuleClass.php: 移除 saveGoodsSection/getGoodsSection 中的 layoutCols/displayCount,新增 resolveGoodsSectionLayout,删除废弃的 normalizeDisplayCount"
+    status: completed
+  - id: backend-display-format
+    content: "HomePageDisplayClass.php: 重写 formatGoodsSection,按真实商品总数与 moduleKey 自动推导 layoutCols 并截断/不截断"
+    status: completed
+  - id: frontend-goods-section
+    content: "hdApp goodsSection.vue: 删除排列规则与商品展示数量的表单 UI、数据字段与提交参数"
+    status: completed
+isProject: false
+---
+### 计划需求指令:
+项目:hdApp
+页面:hdApp/src/admin/homePageConfig/hot.vue 、hdApp/src/admin/homePageConfig/new.vue 与 hdApp/src/admin/homePageConfig/pullGoods.vue
+需求:
+1. 隐藏(或删除)商品展示数量,按照下面2的规则进行自动设置展示数量
+2. 把 hdApp/src/admin/homePageConfig/hot.vue  页面下的“排列规则”删除掉(或隐藏),使用如下隐藏规则:
+	1. 当只添加了一个商品时,按1排1列来展示
+	2. 当只添加了两个商品时,按1排2列来展示
+	3. 当添加了三个及以上商品时,按1排3列来展示且把展示数量设置为3个。当添加商品数量超出3个时,那么mallApp下的店铺首页的热门推荐的右上角要显示“更多”链接。
+
+
+ - hdApp/src/admin/homePageConfig/new.vue 页面也做以上同样的处理。
+ - hdApp/src/admin/homePageConfig/pullGoods.vue 页面下的商品展示数量隐藏(或删除),“排列规则”删除掉(或隐藏),使用如下隐藏规则:
+	1. 当只添加了一个商品时,按1排1列来展示
+	2. 当只添加了两个商品时,按1排2列来展示
+	3. 当添加了三个及以上商品时,还是按1排2列来展示(且把展示数量设置为全部x),且在mallApp下的店铺首页的下拉商品中把所有的商品都展示。由于全部商品都显示了,右上角没有“更多”链接。
+
+
+## 背景
+
+`hdApp/src/admin/homePageConfig/hot.vue`、`new.vue`、`pullGoods.vue` 都只是薄壳组件,实际表单在共用组件 [goodsSection.vue](front-end/hdApp/src/admin/homePageConfig/goodsSection.vue) 里(通过 `module-key` 区分 hot/new/pullGoods)。当前该组件里有"排列规则"(`form.layoutCols`) 和"商品展示数量"(`form.displayCount`) 两个可手动配置的字段,保存后由后端 Redis 存储,mallApp 首页读取 `layoutCols` 决定列数,用 `goodsTotal > goods.length` 决定是否显示"更多"。
+
+代码库里秒杀/团购模块([HomePageModuleClass.php](huahuibao/biz-hd/homePageConfig/classes/HomePageModuleClass.php) 中的 `resolveActivityLayout`)已经是完全相同的模式:不让商家手动配置排列规则,而是在读取时按已添加商品数量自动推导 `layoutCols`/`displayCount`。本次改造对热门/上新/下拉商品复用同样的思路。
+
+## 规则设计
+
+新增 `HomePageModuleClass::resolveGoodsSectionLayout($goodsTotal, $moduleKey)`:
+
+- `goodsTotal <= 1` → `layoutCols=1`,`displayCount=0`(全部,即1个)
+- `goodsTotal == 2` → `layoutCols=2`,`displayCount=0`(全部,即2个)
+- `goodsTotal >= 3`:
+  - `moduleKey === 'pullGoods'` → `layoutCols=2`,`displayCount=0`(不截断,全部展示)
+  - 否则(hot / new)→ `layoutCols=3`,`displayCount=3`(截断为3个)
+
+`goodsTotal` 取的是关联配置(商品/分类/场景)实际解析出的真实商品数,而不是后台勾选的 ID 个数,这样分类/场景关联同样能正确套用规则。
+
+`displayCount=0` 语义在这里表示"不截断,展示全部已解析商品";配合 mallApp 已有的 `showMore = goodsTotal > goods.length` 判断:
+
+- hot/new 超过3个时会被截断为3个 → `goodsTotal > 3` → 自动显示"更多"
+- pullGoods 不截断 → `goodsTotal === goods.length` → 永远不显示"更多"
+
+mallApp 端 [components/home/goodsSection.vue](front-end/mallApp/src/components/home/goodsSection.vue) 的 `cols`/`showMore` 逻辑已经是通用实现,**无需改动**。
+
+## 后端改动(huahuibao)
+
+### [biz-hd/homePageConfig/classes/HomePageModuleClass.php](huahuibao/biz-hd/homePageConfig/classes/HomePageModuleClass.php)
+
+1. `saveGoodsSection()`:删除对 `layoutCols`/`displayCount` 的读取、校验与持久化,Redis 只再存 `name/type/value/sort`。
+2. `getGoodsSection()`:返回结构去掉 `layoutCols`/`displayCount`(不再持久化,也不需要预填到编辑表单)。
+3. 新增 `resolveGoodsSectionLayout($goodsTotal, $moduleKey)`(规则见上)。
+4. 删除已不再被调用的 `normalizeDisplayCount()`(原本只服务于 `saveGoodsSection` 里的展示数量校验)。`resolveHomeDisplayLimit()` 继续保留给秒杀/团购使用,不受影响。
+
+### [biz-hd/homePageConfig/classes/HomePageDisplayClass.php](huahuibao/biz-hd/homePageConfig/classes/HomePageDisplayClass.php)
+
+重写 `formatGoodsSection($mainId, $moduleKey)`:
+
+```php
+public static function formatGoodsSection($mainId, $moduleKey)
+{
+    $data = HomePageModuleClass::getGoodsSection($mainId, $moduleKey);
+    if (empty($data['enabled'])) {
+        $data['goods'] = [];
+        $data['goodsTotal'] = 0;
+        $data['layoutCols'] = 1;
+        return $data;
+    }
+    $rows = HomePageModuleClass::matchGoodsRows($mainId, $data['type'], $data['value'], $data['sort']);
+    $total = count($rows);
+    $layout = HomePageModuleClass::resolveGoodsSectionLayout($total, $moduleKey);
+    $data['layoutCols'] = $layout['layoutCols'];
+    if ($layout['displayCount'] > 0 && $layout['displayCount'] < $total) {
+        $rows = array_slice($rows, 0, $layout['displayCount']);
+    }
+    $data['goods'] = HomePageModuleClass::formatGoodsRows($rows);
+    $data['goodsTotal'] = $total;
+    return $data;
+}
+```
+
+`getSectionGoodsPage()`("更多"分页列表接口)不受影响,继续按 page/pageSize 分页返回全部真实商品。
+
+`app-hd`/`app-mall` 的 `HomePageConfigController` 无需改动,它们只是调用上述两个类的方法。
+
+## 前端改动(front-end)
+
+### [hdApp/src/admin/homePageConfig/goodsSection.vue](front-end/hdApp/src/admin/homePageConfig/goodsSection.vue)
+
+1. 删除模板中"排列规则"整块(`radio-row` + `layoutColsOptions`,约115-128行)。
+2. 删除模板中"商品展示数量"整块(`count-input` + hint,约130-141行)。
+3. `data()` 中 `form` 去掉 `layoutCols`、`displayCount` 两个字段;删除 `layoutColsOptions`。
+4. 删除 `parseDisplayCount()` 方法。
+5. `init()` 里不再从接口返回值回填 `layoutCols`/`displayCount`。
+6. `saveFn()` 里的 `saveApi()` 调用去掉 `layoutCols`、`displayCount` 两个字段(同时去掉 `parseDisplayCount()` 的调用与其失败提前 return 的判断)。
+
+`hot.vue`/`new.vue`/`pullGoods.vue` 三个壳页面本身不需要改动(它们只是传入不同 `module-key`)。
+
+`previewParts/goodsSection.vue`(hd 后台预览组件)和 mallApp 的 `components/home/goodsSection.vue` 都是纯读取 `data.layoutCols`/`data.goodsTotal`/`data.goods`,无需改动,会自动反映后端新算出的值。
+
+## 影响范围确认
+
+- 不改动秒杀 (`seckill.vue`)、团购 (`groupBuy.vue`) 相关逻辑(它们已有独立的 `resolveActivityLayout`/`expand` 机制,未在本次需求范围内)。
+- 不改动 `ad-goods-select.vue`(商品选择页),商品数量本身没有上限限制,规则要求未提及需要新增上限。

+ 54 - 0
任务小笔记/26年/07-13:花掌柜与花卉宝改版/问题.md

@@ -0,0 +1,54 @@
+1.  秒杀专区 、团购专区 、热门推荐、今日上新、下拉商品  如何限制展示数量(显示X个, 显示全部);假如是秒杀专区,当总商品数大于展示数量时,店铺首页下的秒杀专区区域右上角要显示“更多”。点击“更多”跳转到什么页面及如何展示?-- 可否跳转到商品二级页,从而共用展示页???
+2. 店铺首页下的商品,如果是多规格商品,点击购物车跳转到商品详情页去选择指定商品规格。如果是(正常)商品,点击购物车直接加到购物车中。
+3. 购物车提交订单时,如何识别商品是秒杀商品(及要解决不能超卖)?
+4. 购物车的实现与欧阳同步下
+5. 分类精钢区点击后跳转到商品二级页
+
+
+ feat(home-page-config): 增加门店首页配置
+    - hdApp 新增门店首页模块配置、活动商品编辑、预览页与后台入口
+    - mallApp 新增可配置店铺首页渲染、导航栏组件与进入店铺跳转
+
+
+ feat(home-page-config): 新增商城首页配置相关 API
+    - 新增后台管理端(hd)API:支持模块排序、顶部导航、轮播图(banners)、金刚区(nav grid)、活动区以及商品板块的配置管理
+    - 新增商城客户端(mall)只读 API:与后台(hd)预览功能共用同一套展示格式,数据源自基于 Redis 缓存的配置信息
+    - 强化 OSS 图片上传安全与稳定性:新增了首页资源专属目录,并优化了上传失败时的错误提示
+    - API 变更:针对 app-hd(后台)和 app-mall(客户端)新增了 /home-page-config/* 系列接口
+
+
+
+#### 功能实现现后的问题
+1. 秒杀与团购只有在活动有效期间内展示,活动结束后就隐藏
+2. 首页展示调整--展示方式按产品原先定义进行调整
+	1. hdApp/src/admin/homePageConfig/seckill.vue
+	2. hdApp/src/admin/homePageConfig/groupBuy.vue
+	   
+	   3. hdApp/src/admin/homePageConfig/hot.vue
+	   4. 
+
+	   4. hdApp/src/admin/homePageConfig/new.vue
+	   5. hdApp/src/admin/homePageConfig/pullGoods.vue
+	      
+	      
+
+ hdApp/src/admin/homePageConfig/hot.vue
+ **删除"商品展示数量"输入框及其提示文案**
+  **删除"排列规则"整块(`cols-section`)**,包括对应的 `onLayoutColsChange` 方法与 scss 样式
+  
+  
+项目:hdApp
+页面:hdApp/src/admin/homePageConfig/hot.vue 、hdApp/src/admin/homePageConfig/new.vue 与 hdApp/src/admin/homePageConfig/pullGoods.vue
+需求:
+1. 隐藏商品展示数量,按照下面2的规则进行自动设置展示数量
+2. 把 hdApp/src/admin/homePageConfig/hot.vue  页面下的“排列规则”删除掉(或隐藏),使用如下隐藏规则:
+	1. 当只添加了一个商品时,按1排1列来展示
+	2. 当只添加了两个商品时,按1排2列来展示
+	3. 当添加了三个及以上商品时,按1排3列来展示且把展示数量设置为3个。当添加商品数量超出3个时,那么mallApp下的店铺首页的热门推荐的右上角要显示“更多”链接。
+
+
+ - hdApp/src/admin/homePageConfig/new.vue 页面也做以上同样的处理。
+ - hdApp/src/admin/homePageConfig/pullGoods.vue 页面下的商品展示数量删除掉(或隐藏),“排列规则”删除掉(或隐藏),使用如下隐藏规则:
+	   1. 当只添加了一个商品时,按1排1列来展示
+	2. 当只添加了两个商品时,按1排2列来展示
+	3. 当添加了三个及以上商品时,还是按1排2列来展示(且把展示数量设置为全部x),且在mallApp下的店铺首页的下拉商品中把所有的商品都展示。由于全部商品都显示了,右上角没有“更多”链接。

+ 0 - 412
获取银行地区信息.md

@@ -1,412 +0,0 @@
-## 请求地址
-
-测试环境:[https://test.wsmsd.cn/sit](https://test.wsmsd.cn/sit)  
-生产环境:[https://s2.lakala.com](https://s2.lakala.com/)  
-接口:/api/v3/tkbs/organization_bank_parent_code
-
-## 接口请求
-
-|字段名称|约束|字段类型|⻓度|字段描述|取值说明|
-|---|---|---|---|---|---|
-|parent_code|非必传|String|32|父地区编码|如果1 查询所有|
-|org_code|必传|Long|20|机构编号|鉴权机构|
-
-### 请求示例
-
-{
-    "ver": "1.0",
-    "timestamp": "1724842957000",
-    "req_id": "req123456789",
-    "req_data": {
-        "parent_code": "63",
-        "org_code": "200028"
-    }
-}
-
-复制
-
-## 返回参数(List)
-
-|字段名称|约束|字段类型|⻓度|字段描述|取值说明|
-|---|---|---|---|---|---|
-|code|必传|String|32|编码||
-|name|必传|String|32|名称||
-|parent_code|必传|String|32|父地区编码||
-
-### 返回示例
-
-{
-    "code": "000000",
-    "resp_data": [{
-            "id": 2836,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8510",
-            "name": "西宁市",
-            "parent_code": "63"
-        },
-        {
-            "id": 2837,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8520",
-            "name": "平安县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2838,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8521",
-            "name": "平安县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2839,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8522",
-            "name": "民和县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2840,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8523",
-            "name": "乐都县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2841,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8526",
-            "name": "互助县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2842,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8527",
-            "name": "化隆县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2843,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8528",
-            "name": "循化县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2844,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8540",
-            "name": "海北州",
-            "parent_code": "63"
-        },
-        {
-            "id": 2845,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8541",
-            "name": "门源县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2846,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8542",
-            "name": "祁连县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2847,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8543",
-            "name": "海晏县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2848,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8544",
-            "name": "行刚察县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2849,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8550",
-            "name": "同仁县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2850,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8552",
-            "name": "尖扎县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2851,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8553",
-            "name": "行泽库县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2852,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8554",
-            "name": "行河南县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2853,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8560",
-            "name": "共和县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2854,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8561",
-            "name": "共和县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2855,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8562",
-            "name": "行同德县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2856,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8563",
-            "name": "贵德县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2857,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8564",
-            "name": "兴海县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2858,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8565",
-            "name": "行贵南县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2859,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8570",
-            "name": "玛沁县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2860,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8572",
-            "name": "行班玛县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2861,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8573",
-            "name": "行甘德县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2862,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8574",
-            "name": "行达日县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2863,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8575",
-            "name": "行久治县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2864,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8576",
-            "name": "行玛多县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2865,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8580",
-            "name": "玉树县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2866,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8582",
-            "name": "行杂多县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2867,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8583",
-            "name": "行称多县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2868,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8584",
-            "name": "治多县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2869,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8585",
-            "name": "行昂欠县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2870,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8586",
-            "name": "曲麻莱县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2871,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8590",
-            "name": "德令哈市",
-            "parent_code": "63"
-        },
-        {
-            "id": 2872,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8591",
-            "name": "格尔木市",
-            "parent_code": "63"
-        },
-        {
-            "id": 2873,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8592",
-            "name": "德令哈市",
-            "parent_code": "63"
-        },
-        {
-            "id": 2874,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8593",
-            "name": "乌兰县",
-            "parent_code": "63"
-        },
-        {
-            "id": 2875,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8594",
-            "name": "都兰县",
-            "parent_code": "63"
-        },
-        {
-            "id": 3051,
-            "create_time": "2020-10-16T09:11:18",
-            "optimistic": 0,
-            "update_time": null,
-            "code": "8595",
-            "name": "天峻县",
-            "parent_code": "63"
-        }
-    ],
-    "msg": "SUCCESS",
-    "timestamp": 1726278637377
-}