|
@@ -0,0 +1,74 @@
|
|
|
|
|
+-- ============================================================================
|
|
|
|
|
+-- 菜单改名:「商户映射」→「手工登记商户号」
|
|
|
|
|
+--
|
|
|
|
|
+-- 计划:.claude/plan/2026-09-23-lsy-simple-flow.md Task 5 / Step 3
|
|
|
|
|
+-- 时点:2026-09-23 作者:实现侧 执行:用户
|
|
|
|
|
+-- (本仓约定:SQL 只由用户执行,实现侧只写不跑)
|
|
|
|
|
+-- ============================================================================
|
|
|
|
|
+--
|
|
|
|
|
+-- ── 为什么改 ────────────────────────────────────────────────────────────────
|
|
|
|
|
+-- 使用者是柜台操作员,不是开发。「映射」是我们内部的领域词(企业 ↔ 商户号的那条
|
|
|
|
|
+-- 对应关系),它准确地描述了**数据库里的一行**,但没告诉操作员**这一页要他干什么**。
|
|
|
|
|
+-- 这一页要他干的事只有一件:把已经开好的商户号登记进来。菜单名就说这件事。
|
|
|
|
|
+--
|
|
|
|
|
+-- ── 只改哪两列 ──────────────────────────────────────────────────────────────
|
|
|
|
|
+-- `name` 与 `title` 两个都改,因为它们是两份不同用途的名字:
|
|
|
|
|
+-- · `title` —— **驱动侧边栏显示的那一列**。有代码依据,不是推测:
|
|
|
|
|
+-- frontend/src/store/modules/permission.store.ts:72 `title: item.title`
|
|
|
|
|
+-- ⇒ 该值变成 route.meta.title ⇒ 侧边栏渲染它
|
|
|
|
|
+-- (layouts/components/Menu/components/MenuItemContent.vue:13)。
|
|
|
|
|
+-- · `name` —— 同一行在菜单管理页里的名字。一并改,免得同一行有两个名字。
|
|
|
|
|
+--
|
|
|
|
|
+-- ── 不改什么,以及为什么 ────────────────────────────────────────────────────
|
|
|
|
|
+-- · `route_name` 保持 `CollectionMerchant` 不动。它是**身份**不是标签:
|
|
|
|
|
+-- 页面靠它做 keep-alive 与 tags-view 匹配,改它要连着动前端,
|
|
|
|
|
+-- 而本批次的目标只是让操作员看懂这个名字。
|
|
|
|
|
+-- · `route_path` / `component_path` / `permission` 一律不动 —— 改名不涉及路由。
|
|
|
|
|
+-- · 源码里的**领域描述**(javadoc、表注释、类名里的「商户映射」)不改:
|
|
|
|
|
+-- 那里说的事实是对的(确实是一条映射关系),只是不适合当菜单名。
|
|
|
|
|
+-- 只有**引号里指名菜单**的地方跟着改了 —— 否则操作员照着提示找不到菜单。
|
|
|
|
|
+-- 同步改过的源码位置(供核对,本文件执行后会与代码一致):
|
|
|
|
|
+-- LsyMerchantService.java:56 该企业未配置商户号,请先在「手工登记商户号」中登记
|
|
|
|
|
+-- LsyMerchantService.java:85 该租户未配置商户号,请先在「手工登记商户号」中登记
|
|
|
|
|
+-- merchant/index.vue:7 页面顶部说明
|
|
|
|
|
+-- merchant/index.vue:69 弹窗标题(编辑/新增)
|
|
|
|
|
+-- merchant/index.vue:239 删除确认文案
|
|
|
|
|
+--
|
|
|
|
|
+-- ── 定位方式 ────────────────────────────────────────────────────────────────
|
|
|
|
|
+-- 用 `route_name` 定位而不是 `name`:`name` 正是要被改掉的那一列,
|
|
|
|
|
+-- 拿它当 WHERE 条件在未来某次改名后会失效,而 `route_name` 是稳定身份。
|
|
|
|
|
+-- 先只读核对一次(见下),确认命中的就是那一行。
|
|
|
|
|
+--
|
|
|
|
|
+-- ── 只读核对(先跑这一段,期望:1 行,id=271「商户映射」/CollectionMerchant)──
|
|
|
|
|
+-- SELECT id, name, title, type, route_name, route_path, permission
|
|
|
|
|
+-- FROM sys_menu WHERE route_name = 'CollectionMerchant';
|
|
|
|
|
+--
|
|
|
|
|
+-- ============================================================================
|
|
|
|
|
+
|
|
|
|
|
+UPDATE sys_menu
|
|
|
|
|
+ SET name = '手工登记商户号',
|
|
|
|
|
+ title = '手工登记商户号'
|
|
|
|
|
+ WHERE route_name = 'CollectionMerchant'
|
|
|
|
|
+ AND type = 2;
|
|
|
|
|
+
|
|
|
|
|
+-- ── 执行后核对(期望:1 行,name/title 都是「手工登记商户号」,其余列与改前相同)──
|
|
|
|
|
+-- SELECT id, name, title, type, route_name, route_path, component_path,
|
|
|
|
|
+-- permission, hidden, keep_alive, status
|
|
|
|
|
+-- FROM sys_menu WHERE route_name = 'CollectionMerchant';
|
|
|
|
|
+--
|
|
|
|
|
+-- ── 对照查询:确认没有误伤别的行 ────────────────────────────────────────────
|
|
|
|
|
+-- 期望 1 行(就是上面那行);若出现多行说明库里有两行同 route_name,先查清楚再改。
|
|
|
|
|
+-- SELECT count(*) FROM sys_menu WHERE route_name = 'CollectionMerchant';
|
|
|
|
|
+--
|
|
|
|
|
+-- -- 期望:只列出本目录下的 4 个页面行,其中只有「手工登记商户号」是本次改的
|
|
|
|
|
+-- SELECT id, name, type, route_name FROM sys_menu WHERE parent_id = 268 ORDER BY "order";
|
|
|
|
|
+--
|
|
|
|
|
+-- ── 回滚 ────────────────────────────────────────────────────────────────────
|
|
|
|
|
+-- UPDATE sys_menu SET name = '商户映射', title = '商户映射'
|
|
|
|
|
+-- WHERE route_name = 'CollectionMerchant' AND type = 2;
|
|
|
|
|
+-- ★ 回滚 SQL 与代码不同步:源码里那几处文案已经改成「手工登记商户号」,
|
|
|
|
|
+-- 只回滚菜单会让提示又指向一个不存在的名字。
|
|
|
|
|
+--
|
|
|
|
|
+-- ── 生效方式 ────────────────────────────────────────────────────────────────
|
|
|
|
|
+-- 菜单树由登录时拉取,改完让操作员**重新登录**(或刷新页面重新拉菜单)即可看到新名字,
|
|
|
|
|
+-- 不需要重启后端。
|