mirror of
https://gitee.com/dromara/dax-pay
synced 2026-08-08 14:15:34 +08:00
refactor(system): 移动端应用配置从 payment 迁至 platform/system
- 删除 payment.app.mobile 实体链路与 MobileAppAdminController - 迁入 platform.system:MobileAppTypeEnum/MobilePlatformEnum + entity/dao/service/controller - API: /admin/mobile-app → /platform/config/mobile-app,权限码 system:config:mobile_app - 菜单 40504/40505 父级改系统配置(304),路径改 /system/config/mobile-app(update-datas + iam_perm_menu baseline)
This commit is contained in:
@@ -158,8 +158,8 @@ INSERT INTO "public"."iam_perm_menu" VALUES (308, 3, 'system:notify', 'admin', '
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (603, 6, 'payment:refund', 'admin', 'RefundOrderList', '退款订单', 'Refund Orders', 'menu.trade.refundOrder', 'lucide:rotate-ccw', 'f', 'f', '/payment/order/RefundOrderList', '/trade/refund-order', NULL, 3, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-03 16:00:00+00', '2026-07-03 16:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040115, 40401, 'channel:douyin:app', 'admin', 'DouyinMchAppManage', '抖音应用', 'Douyin App', 'menu.payment.merchant.channelMerchant.douyinApp', NULL, 't', 'f', '/payment/channel/douyin/manage/app/DouyinMchAppManage', '/payment/merchant/channel-merchant/douyin-app-manage', NULL, 13, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-15 16:00:00+00', '2026-06-15 16:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40501, 40105, 'payment:config:product_detail', 'admin', 'ProductDetailDispatch', '产品配置详情', 'Product Config Detail', 'menu.payment.config.detail', NULL, 't', 'f', '/payment/config/product/detail/ProductDetailDispatch', '/payment/product-detail', NULL, 2, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-14 00:00:00+00', '2026-06-27 13:01:24.321883+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40504, 405, 'payment:config:mobile_app', 'admin', 'MobileAppConfig', '移动端应用管理', 'Mobile App Management', 'menu.payment.config.mobileApp', 'lucide:smartphone', 'f', 'f', '/payment/config/mobileApp/MobileAppConfig', '/payment/config/mobile-app', NULL, 5, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-05 00:00:00+00', '2026-07-05 00:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40505, 40504, 'payment:config:mobile_app_detail', 'admin', 'MobileAppDetail', '移动端应用详情', 'Mobile App Detail', 'menu.payment.config.mobileAppDetail', NULL, 't', 'f', '/payment/config/mobileApp/detail/MobileAppDetail', '/payment/config/mobile-app/detail/:appType', NULL, 1, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-05 00:00:00+00', '2026-07-05 00:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40504, 304, 'system:config:mobile_app', 'admin', 'MobileAppConfig', '移动端应用管理', 'Mobile App Management', 'menu.system.config.mobileApp', 'lucide:smartphone', 'f', 'f', '/system/config/mobileApp/MobileAppConfig', '/system/config/mobile-app', NULL, 6, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-05 00:00:00+00', '2026-07-05 00:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40505, 40504, 'system:config:mobile_app_detail', 'admin', 'MobileAppDetail', '移动端应用详情', 'Mobile App Detail', 'menu.system.config.mobileAppDetail', NULL, 't', 'f', '/system/config/mobileApp/detail/MobileAppDetail', '/system/config/mobile-app/detail/:appType', NULL, 1, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-05 00:00:00+00', '2026-07-05 00:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40506, 40105, 'payment:lakala:isv', 'admin', 'LakalaManage', '拉卡拉服务商配置', 'Lakala ISV Configuration', 'menu.payment.lakala.config', NULL, 't', 'f', '/payment/channel/lakala/manage/LakalaManage', '/payment/config/product/lakala-manage', NULL, 5, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-05 00:00:00+00', '2026-07-05 00:00:00+00');
|
||||
|
||||
-- ----------------------------
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
-- 升级数据脚本(按顺序执行)
|
||||
-- 说明: 已部署环境增量更新,执行前请确认版本与备份
|
||||
|
||||
-- ----------------------------
|
||||
-- 2026-07-10 移动端应用配置菜单从 payment 迁到 system 配置
|
||||
-- 后端包: payment.app.mobile → platform.system.mobile
|
||||
-- API: /admin/mobile-app → /platform/config/mobile-app
|
||||
-- 前端: payment/config/mobileApp → system/config/mobileApp
|
||||
-- ----------------------------
|
||||
UPDATE "public"."iam_perm_menu"
|
||||
SET "pid" = 304,
|
||||
"menu_code" = 'system:config:mobile_app',
|
||||
"i18n_key" = 'menu.system.config.mobileApp',
|
||||
"component" = '/system/config/mobileApp/MobileAppConfig',
|
||||
"path" = '/system/config/mobile-app',
|
||||
"sort_no" = 6,
|
||||
"last_modified_time" = CURRENT_TIMESTAMP
|
||||
WHERE "id" = 40504;
|
||||
|
||||
UPDATE "public"."iam_perm_menu"
|
||||
SET "menu_code" = 'system:config:mobile_app_detail',
|
||||
"i18n_key" = 'menu.system.config.mobileAppDetail',
|
||||
"component" = '/system/config/mobileApp/detail/MobileAppDetail',
|
||||
"path" = '/system/config/mobile-app/detail/:appType',
|
||||
"last_modified_time" = CURRENT_TIMESTAMP
|
||||
WHERE "id" = 40505;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package cn.daxpay.open.payment.web.admin.controller.app.mobile;
|
||||
package cn.daxpay.open.platform.system.controller.config.mobile;
|
||||
|
||||
import cn.daxpay.open.payment.app.mobile.param.MobileAppParam;
|
||||
import cn.daxpay.open.payment.app.mobile.result.MobileAppResult;
|
||||
import cn.daxpay.open.payment.app.mobile.service.MobileAppService;
|
||||
import cn.daxpay.open.platform.core.annotation.PermCode;
|
||||
import cn.daxpay.open.platform.core.rest.Res;
|
||||
import cn.daxpay.open.platform.core.rest.result.Result;
|
||||
import cn.daxpay.open.platform.system.param.mobile.MobileAppParam;
|
||||
import cn.daxpay.open.platform.system.result.mobile.MobileAppResult;
|
||||
import cn.daxpay.open.platform.system.service.mobile.MobileAppService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
@@ -20,13 +20,13 @@ import java.util.List;
|
||||
///
|
||||
/// 平台级移动端应用(商户端/管理端/收银台小程序)的密钥、通知、用户绑定配置管理。
|
||||
/// 按端类型(appType)+移动平台(platform)维度, 每组合一条配置记录。
|
||||
@PermCode(menuCode = "payment:config:mobile_app")
|
||||
@PermCode(menuCode = "system:config:mobile_app")
|
||||
@Validated
|
||||
@Tag(name = "移动端应用配置管理")
|
||||
@RestController
|
||||
@RequestMapping("/admin/mobile-app")
|
||||
@RequestMapping("/platform/config/mobile-app")
|
||||
@RequiredArgsConstructor
|
||||
public class MobileAppAdminController {
|
||||
public class MobileAppController {
|
||||
|
||||
private final MobileAppService mobileAppService;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package cn.daxpay.open.payment.app.mobile.convert;
|
||||
package cn.daxpay.open.platform.system.convert.mobile;
|
||||
|
||||
import cn.daxpay.open.payment.app.mobile.entity.MobileApp;
|
||||
import cn.daxpay.open.payment.app.mobile.param.MobileAppParam;
|
||||
import cn.daxpay.open.payment.app.mobile.result.MobileAppResult;
|
||||
import cn.daxpay.open.platform.system.entity.mobile.MobileApp;
|
||||
import cn.daxpay.open.platform.system.param.mobile.MobileAppParam;
|
||||
import cn.daxpay.open.platform.system.result.mobile.MobileAppResult;
|
||||
import org.mapstruct.BeanMapping;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.MappingTarget;
|
||||
@@ -1,7 +1,7 @@
|
||||
package cn.daxpay.open.payment.app.mobile.dao;
|
||||
package cn.daxpay.open.platform.system.dao.mobile;
|
||||
|
||||
import cn.daxpay.open.payment.app.mobile.entity.MobileApp;
|
||||
import cn.daxpay.open.platform.common.mybatisplus.impl.BaseManager;
|
||||
import cn.daxpay.open.platform.system.entity.mobile.MobileApp;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/// # 移动端应用配置管理器
|
||||
@@ -1,6 +1,6 @@
|
||||
package cn.daxpay.open.payment.app.mobile.dao;
|
||||
package cn.daxpay.open.platform.system.dao.mobile;
|
||||
|
||||
import cn.daxpay.open.payment.app.mobile.entity.MobileApp;
|
||||
import cn.daxpay.open.platform.system.entity.mobile.MobileApp;
|
||||
import com.github.yulichang.base.MPJBaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package cn.daxpay.open.payment.app.mobile.entity;
|
||||
package cn.daxpay.open.platform.system.entity.mobile;
|
||||
|
||||
import cn.daxpay.open.payment.app.mobile.convert.MobileAppConvert;
|
||||
import cn.daxpay.open.payment.app.mobile.result.MobileAppResult;
|
||||
import cn.daxpay.open.platform.common.mybatisplus.base.MpBaseEntity;
|
||||
import cn.daxpay.open.platform.common.mybatisplus.function.ToResult;
|
||||
import cn.daxpay.open.platform.common.mybatisplus.handler.encrypt.DataEncryptTypeHandler;
|
||||
import cn.daxpay.open.platform.system.convert.mobile.MobileAppConvert;
|
||||
import cn.daxpay.open.platform.system.result.mobile.MobileAppResult;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
@@ -22,11 +22,11 @@ import lombok.experimental.Accessors;
|
||||
public class MobileApp extends MpBaseEntity implements ToResult<MobileAppResult> {
|
||||
|
||||
/// 端类型
|
||||
/// @see cn.daxpay.open.payment.app.mobile.enums.MobileAppTypeEnum
|
||||
/// @see cn.daxpay.open.platform.system.enums.MobileAppTypeEnum
|
||||
private String appType;
|
||||
|
||||
/// 移动平台
|
||||
/// @see cn.daxpay.open.payment.app.mobile.enums.MobilePlatformEnum
|
||||
/// @see cn.daxpay.open.platform.system.enums.MobilePlatformEnum
|
||||
private String platform;
|
||||
|
||||
/// 应用名称(展示用)
|
||||
@@ -1,4 +1,4 @@
|
||||
package cn.daxpay.open.payment.app.mobile.enums;
|
||||
package cn.daxpay.open.platform.system.enums;
|
||||
|
||||
import cn.daxpay.open.platform.core.exception.DataNotExistException;
|
||||
import cn.daxpay.open.platform.core.i18n.I18nSupport;
|
||||
@@ -1,4 +1,4 @@
|
||||
package cn.daxpay.open.payment.app.mobile.enums;
|
||||
package cn.daxpay.open.platform.system.enums;
|
||||
|
||||
import cn.daxpay.open.platform.core.exception.DataNotExistException;
|
||||
import cn.daxpay.open.platform.core.i18n.I18nSupport;
|
||||
@@ -1,4 +1,4 @@
|
||||
package cn.daxpay.open.payment.app.mobile.param;
|
||||
package cn.daxpay.open.platform.system.param.mobile;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
@@ -1,4 +1,4 @@
|
||||
package cn.daxpay.open.payment.app.mobile.result;
|
||||
package cn.daxpay.open.platform.system.result.mobile;
|
||||
|
||||
import cn.daxpay.open.platform.core.result.BaseResult;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
@@ -1,12 +1,12 @@
|
||||
package cn.daxpay.open.payment.app.mobile.service;
|
||||
package cn.daxpay.open.platform.system.service.mobile;
|
||||
|
||||
import cn.daxpay.open.payment.app.mobile.convert.MobileAppConvert;
|
||||
import cn.daxpay.open.payment.app.mobile.dao.MobileAppManager;
|
||||
import cn.daxpay.open.payment.app.mobile.entity.MobileApp;
|
||||
import cn.daxpay.open.payment.app.mobile.param.MobileAppParam;
|
||||
import cn.daxpay.open.payment.app.mobile.result.MobileAppResult;
|
||||
import cn.daxpay.open.platform.common.json.util.JacksonUtil;
|
||||
import cn.daxpay.open.platform.core.exception.DataNotExistException;
|
||||
import cn.daxpay.open.platform.system.convert.mobile.MobileAppConvert;
|
||||
import cn.daxpay.open.platform.system.dao.mobile.MobileAppManager;
|
||||
import cn.daxpay.open.platform.system.entity.mobile.MobileApp;
|
||||
import cn.daxpay.open.platform.system.param.mobile.MobileAppParam;
|
||||
import cn.daxpay.open.platform.system.result.mobile.MobileAppResult;
|
||||
import cn.hutool.core.util.DesensitizedUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -24,7 +24,7 @@ import java.util.Set;
|
||||
///
|
||||
/// 平台级配置, 按端类型(appType)+移动平台(platform)维度管理。
|
||||
/// app_config/notify_config 经 [cn.daxpay.open.platform.common.mybatisplus.handler.encrypt.DataEncryptTypeHandler] 加密入库;
|
||||
/// 返回前端时对 app_config 内敏感键(appSecret/privateKey/clientSecret)脱敏;
|
||||
/// 返回前端时对 app_config 内敏感键(appSecret/privateKey/alipayPublicKey/证书等)脱敏;
|
||||
/// 保存时敏感键为空则保留库中原值(配合前端 diffForm)。
|
||||
@Slf4j
|
||||
@Service
|
||||
@@ -32,8 +32,10 @@ import java.util.Set;
|
||||
public class MobileAppService {
|
||||
|
||||
/// app_config 中需要脱敏/保护的敏感键
|
||||
/// 含支付宝小程序公钥字段与证书模式三本证书
|
||||
private static final Set<String> SENSITIVE_KEYS = Set.of(
|
||||
"appSecret", "privateKey", "alipayPublicKey", "clientSecret");
|
||||
"appSecret", "privateKey", "alipayPublicKey", "clientSecret",
|
||||
"appCert", "alipayCert", "alipayRootCert");
|
||||
|
||||
private final MobileAppManager manager;
|
||||
|
||||
Reference in New Issue
Block a user