diff --git a/_config/sql/iam_perm_menu.sql b/_config/sql/iam_perm_menu.sql index d0747694a..e15b6c8e3 100644 --- a/_config/sql/iam_perm_menu.sql +++ b/_config/sql/iam_perm_menu.sql @@ -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'); -- ---------------------------- diff --git a/_config/sql/update-datas.sql b/_config/sql/update-datas.sql index e69de29bb..5ac63e3a4 100644 --- a/_config/sql/update-datas.sql +++ b/_config/sql/update-datas.sql @@ -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; diff --git a/daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/web/admin/controller/app/mobile/MobileAppAdminController.java b/daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/controller/config/mobile/MobileAppController.java similarity index 87% rename from daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/web/admin/controller/app/mobile/MobileAppAdminController.java rename to daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/controller/config/mobile/MobileAppController.java index 54117755c..a70998b32 100644 --- a/daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/web/admin/controller/app/mobile/MobileAppAdminController.java +++ b/daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/controller/config/mobile/MobileAppController.java @@ -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; diff --git a/daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/convert/MobileAppConvert.java b/daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/convert/mobile/MobileAppConvert.java similarity index 77% rename from daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/convert/MobileAppConvert.java rename to daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/convert/mobile/MobileAppConvert.java index 59b3bb73a..99aba15c3 100644 --- a/daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/convert/MobileAppConvert.java +++ b/daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/convert/mobile/MobileAppConvert.java @@ -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; diff --git a/daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/dao/MobileAppManager.java b/daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/dao/mobile/MobileAppManager.java similarity index 68% rename from daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/dao/MobileAppManager.java rename to daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/dao/mobile/MobileAppManager.java index 401f613d5..3edc0ae21 100644 --- a/daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/dao/MobileAppManager.java +++ b/daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/dao/mobile/MobileAppManager.java @@ -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; /// # 移动端应用配置管理器 diff --git a/daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/dao/MobileAppMapper.java b/daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/dao/mobile/MobileAppMapper.java similarity index 64% rename from daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/dao/MobileAppMapper.java rename to daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/dao/mobile/MobileAppMapper.java index 956d47fc8..702f6c2c1 100644 --- a/daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/dao/MobileAppMapper.java +++ b/daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/dao/mobile/MobileAppMapper.java @@ -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; diff --git a/daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/entity/MobileApp.java b/daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/entity/mobile/MobileApp.java similarity index 83% rename from daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/entity/MobileApp.java rename to daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/entity/mobile/MobileApp.java index 900c0c34e..08c3921bc 100644 --- a/daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/entity/MobileApp.java +++ b/daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/entity/mobile/MobileApp.java @@ -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 { /// 端类型 - /// @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; /// 应用名称(展示用) diff --git a/daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/enums/MobileAppTypeEnum.java b/daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/enums/MobileAppTypeEnum.java similarity index 96% rename from daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/enums/MobileAppTypeEnum.java rename to daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/enums/MobileAppTypeEnum.java index 89799e7ad..803585796 100644 --- a/daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/enums/MobileAppTypeEnum.java +++ b/daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/enums/MobileAppTypeEnum.java @@ -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; diff --git a/daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/enums/MobilePlatformEnum.java b/daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/enums/MobilePlatformEnum.java similarity index 96% rename from daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/enums/MobilePlatformEnum.java rename to daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/enums/MobilePlatformEnum.java index a5a99d28c..5d1ae3801 100644 --- a/daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/enums/MobilePlatformEnum.java +++ b/daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/enums/MobilePlatformEnum.java @@ -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; diff --git a/daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/param/MobileAppParam.java b/daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/param/mobile/MobileAppParam.java similarity index 95% rename from daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/param/MobileAppParam.java rename to daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/param/mobile/MobileAppParam.java index 8dd9f5e27..04d3daf27 100644 --- a/daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/param/MobileAppParam.java +++ b/daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/param/mobile/MobileAppParam.java @@ -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; diff --git a/daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/result/MobileAppResult.java b/daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/result/mobile/MobileAppResult.java similarity index 95% rename from daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/result/MobileAppResult.java rename to daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/result/mobile/MobileAppResult.java index 181bb6f67..7b43411e2 100644 --- a/daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/result/MobileAppResult.java +++ b/daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/result/mobile/MobileAppResult.java @@ -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; diff --git a/daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/service/MobileAppService.java b/daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/service/mobile/MobileAppService.java similarity index 91% rename from daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/service/MobileAppService.java rename to daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/service/mobile/MobileAppService.java index 2d5c8c9b4..461f5613a 100644 --- a/daxpay-payment/daxpay-payment-common/src/main/java/cn/daxpay/open/payment/app/mobile/service/MobileAppService.java +++ b/daxpay-platform/daxpay-platform-service/service-system/src/main/java/cn/daxpay/open/platform/system/service/mobile/MobileAppService.java @@ -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 SENSITIVE_KEYS = Set.of( - "appSecret", "privateKey", "alipayPublicKey", "clientSecret"); + "appSecret", "privateKey", "alipayPublicKey", "clientSecret", + "appCert", "alipayCert", "alipayRootCert"); private final MobileAppManager manager;