refactor(role): 开源版内置角色对齐 admin/merchant 并整理登录校验

新增 RoleCodeEnum.ADMIN_ADMIN 与多语言文案;登录状态校验迁至 common/handler;清空已应用的 update-datas 升级脚本。
This commit is contained in:
DaxPay Dev
2026-07-14 15:24:26 +08:00
parent e869901db2
commit b13ac01d29
14 changed files with 16 additions and 143 deletions

View File

@@ -1,116 +0,0 @@
-- ----------------------------
-- 数据升级:菜单展示与 IA 调整 + i18n 改造数据回填
-- 执行顺序update-tables.sql → update-datas.sql
-- ----------------------------
-- ----------------------------
-- 管理端菜单 IA支付管理扁平 + 微信域名验证迁系统配置
-- ----------------------------
-- 支付产品配置 → 通道产品配置,升为支付管理二级
UPDATE "public"."iam_perm_menu"
SET "pid" = 4,
"sort_no" = 2,
"last_modified_time" = NOW()
WHERE "id" = 40105;
-- 微信域名验证:支付配置 → 系统配置
UPDATE "public"."iam_perm_menu"
SET "pid" = 304,
"sort_no" = 7,
"last_modified_time" = NOW()
WHERE "id" = 40507;
-- 支付配置 catalog 已无可见子菜单,隐藏
UPDATE "public"."iam_perm_menu"
SET "hidden" = true,
"last_modified_time" = NOW()
WHERE "id" = 405;
-- 一级菜单顺序
UPDATE "public"."iam_perm_menu"
SET "sort_no" = 3.5,
"last_modified_time" = NOW()
WHERE "id" = 404;
UPDATE "public"."iam_perm_menu"
SET "sort_no" = 4,
"last_modified_time" = NOW()
WHERE "id" = 6;
-- 系统配置排序
UPDATE "public"."iam_perm_menu"
SET "sort_no" = 1,
"last_modified_time" = NOW()
WHERE "id" = 30402;
UPDATE "public"."iam_perm_menu"
SET "sort_no" = 2,
"last_modified_time" = NOW()
WHERE "id" = 30401;
-- ----------------------------
-- 商户管理:全局「通道商户」侧栏菜单(占位)
-- ----------------------------
INSERT INTO "public"."iam_perm_menu" (
"id", "pid", "menu_code", "client_code", "name",
"i18n_key", "icon",
"hidden", "hide_children_menu", "component", "path", "redirect",
"sort_no", "root", "keep_alive", "affix_tab",
"creator", "last_modifier", "version", "deleted",
"menu_type", "active_icon", "badge", "badge_type", "badge_variants",
"iframe_src", "link", "create_time", "last_modified_time"
)
SELECT
40402,
404,
'channel:merchant',
'admin',
'ChannelMerchantGlobal',
'menu.payment.merchant.channelMerchant.global',
'lucide:repeat',
false,
false,
'/_core/fallback/coming-soon',
'/payment/merchant/channel-merchants',
NULL,
2,
false,
true,
false,
1,
1,
0,
false,
'menu',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NOW(),
NOW()
WHERE NOT EXISTS (
SELECT 1 FROM "public"."iam_perm_menu" WHERE "id" = 40402
);
-- ============================================================
-- i18n 改造:批量回填 i18n_key
-- 规则:角色 role.{code},字典项 dict.{dictCode}.{itemCode}
-- 语言包翻译在前端 locales/langs/{locale}/dict.json 中维护
-- ============================================================
-- 角色表:按 code 生成 i18n_key
UPDATE iam_role
SET i18n_key = 'role.' || code,
last_modified_time = NOW()
WHERE i18n_key IS NULL
AND deleted = false;
-- 字典项表:按 dictCode.code 生成 i18n_key
UPDATE system_dict_item
SET i18n_key = 'dict.' || dict_code || '.' || code,
last_modified_time = NOW()
WHERE i18n_key IS NULL
AND deleted = false;

View File

@@ -1,24 +0,0 @@
/// # 支付通道 OAuth 认证(Channel OAuth)
///
/// **本包不是 IAM 登录**。职责仅为支付场景获取用户标识(微信 openId / 支付宝 userId 等)。
/// 与 [cn.daxpay.open.platform.capability.auth](Sa-Token 登录)、社交登录(capability-social) 无关。
///
/// ## 类职责
/// | 类 | 职责 |
/// |----|------|
/// | [AuthSession] | H5 OAuth 重定向的会话上下文 POJO(product/channelMchNo/source/queryCode 等) |
/// | [AuthSessionStore] | Redis: authToken→session、queryCode→AuthResult, TTL 5 分钟 |
/// | [ChannelAuthService] | **商户级**: 按支付产品路由 [cn.daxpay.open.payment.strategy.auth.AbsChannelAuthStrategy] |
/// | [PlatformAuthService] | **平台级**: 平台支付宝 / 系统公众号 / 抖音 H5 配置驱动的 OAuth |
/// | [ChannelAuthFacade] | 统一分发入口(generate / auth), Controller 只做协议适配 |
///
/// ## 时序
/// 1. generateAuthUrl → 写 session(authToken) + WAITING(queryCode) → 返回 OAuth URL
/// 2. 用户授权, 第三方回调 H5 固定路径(`/auth/wechat|alipay|douyin`), state=authToken
/// 3. H5 调 auth → Facade 按 source 分流 → code 换 openId → 写轮询结果 → 删除 session
/// 4. (调试) 管理端用 queryCode 轮询 AuthResult
///
/// ## 平台级 vs 商户级
/// - 平台级: 不读商户通道配置, session.source = platform_alipay / platform_mp / platform_douyin
/// - 商户级: 按 product + channelMchNo/capability 定位通道应用, source 为空
package cn.daxpay.open.payment.auth;

View File

@@ -1,4 +1,4 @@
package cn.daxpay.open.payment.common.auth;
package cn.daxpay.open.payment.common.handler;
import cn.daxpay.open.platform.core.enums.client.ClientEnum;
import cn.daxpay.open.platform.core.enums.merchant.MerchantStatusEnum;

View File

@@ -1,3 +1,4 @@
{
"admin_admin": "Operations Admin",
"merchant_admin": "Merchant Admin"
}

View File

@@ -1,3 +1,4 @@
{
"admin_admin": "Admin Operasi",
"merchant_admin": "Admin Pedagang"
}

View File

@@ -1,3 +1,4 @@
{
"admin_admin": "運営管理者",
"merchant_admin": "販売者管理者"
}

View File

@@ -1,3 +1,4 @@
{
"admin_admin": "운영 관리자",
"merchant_admin": "판매자 관리자"
}

View File

@@ -1,3 +1,4 @@
{
"merchant_admin": "Admin saudagar"
"admin_admin": "Pentadbir Operasi",
"merchant_admin": "Admin Saudagar"
}

View File

@@ -1,3 +1,4 @@
{
"admin_admin": "ผู้ดูแลระบบปฏิบัติการ",
"merchant_admin": "ผู้ดูแลระบบร้านค้า"
}

View File

@@ -1,3 +1,4 @@
{
"admin_admin": "Quản trị vận hành",
"merchant_admin": "Quản trị viên người bán"
}

View File

@@ -1,3 +1,4 @@
{
"admin_admin": "运营管理员",
"merchant_admin": "商户管理员"
}

View File

@@ -1,3 +1,4 @@
{
"merchant_admin": "商户管理員"
"admin_admin": "運營管理員",
"merchant_admin": "商戶管理員"
}

View File

@@ -1,3 +1,4 @@
{
"admin_admin": "運營管理員",
"merchant_admin": "商戶管理員"
}

View File

@@ -6,10 +6,13 @@ import lombok.RequiredArgsConstructor;
/// # 角色编码枚举
///
/// 开源版身份域仅 admin / merchant内置角色与之对称。
@Getter
@RequiredArgsConstructor
public enum RoleCodeEnum implements I18nSupport {
/// 运营管理员
ADMIN_ADMIN("admin_admin"),
/// 商户管理员
MERCHANT_ADMIN("merchant_admin");