From 27489e68eba7c22bb45e783b973bb61c6f0d9c63 Mon Sep 17 00:00:00 2001 From: dzq Date: Fri, 4 Jul 2025 15:06:04 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E8=AE=A2=E5=8D=95=E6=9C=8D=E5=8A=A1):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=A9=BA=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E7=9A=84NPE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit feat(数据库): 新增用户余额交易记录表 refactor(权限检查): 使用权限字符串替代路由树检查 --- .../api/controller/PaymentController.java | 26 +++++++++++++------ .../shop/order/OrderApplicationService.java | 9 ++++--- sql/20250703.sql | 20 ++++++++++++++ 3 files changed, 44 insertions(+), 11 deletions(-) create mode 100644 sql/20250703.sql diff --git a/agileboot-api/src/main/java/com/agileboot/api/controller/PaymentController.java b/agileboot-api/src/main/java/com/agileboot/api/controller/PaymentController.java index 3ebae7c..509b39a 100644 --- a/agileboot-api/src/main/java/com/agileboot/api/controller/PaymentController.java +++ b/agileboot-api/src/main/java/com/agileboot/api/controller/PaymentController.java @@ -190,12 +190,17 @@ public class PaymentController { SystemLoginUser loginUser = new SystemLoginUser(); loginUser.setAdmin(false); loginUser.setUserId(sysUserEntity.getUserId()); - List routerTree = menuApplicationService.getRouterTree(loginUser); - log.info("getRouterTree,userid: {}, routerTree: {}", userid, JSONUtil.toJsonStr(routerTree)); + List permissions = menuApplicationService.getPermissions(loginUser); +/* List routerTree = menuApplicationService.getRouterTree(loginUser); + log.info("getRouterTree,userid: {}, routerTree: {}", userid, JSONUtil.toJsonStr(routerTree));*/ int isCabinetAdmin = 0; - if (routerTree != null && !routerTree.isEmpty()) { - isCabinetAdmin = isCabinetAdmin(routerTree) +// if (routerTree != null && !routerTree.isEmpty()) { +// isCabinetAdmin = isCabinetAdmin(routerTree) +// ? 1 : 0; +// } + if (permissions != null && !permissions.isEmpty()) { + isCabinetAdmin = permissions.contains("shop:cabinet:write") ? 1 : 0; } @@ -228,12 +233,17 @@ public class PaymentController { SystemLoginUser loginUser = new SystemLoginUser(); loginUser.setAdmin(false); loginUser.setUserId(sysUserEntity.getUserId()); - List routerTree = menuApplicationService.getRouterTree(loginUser); - log.info("getRouterTree,userid: {}, routerTree: {}", userid, JSONUtil.toJsonStr(routerTree)); + List permissions = menuApplicationService.getPermissions(loginUser); +/* List routerTree = menuApplicationService.getRouterTree(loginUser); + log.info("getRouterTree,userid: {}, routerTree: {}", userid, JSONUtil.toJsonStr(routerTree));*/ int isCabinetAdmin = 0; - if (routerTree != null && !routerTree.isEmpty()) { - isCabinetAdmin = isCabinetAdmin(routerTree) +// if (routerTree != null && !routerTree.isEmpty()) { +// isCabinetAdmin = isCabinetAdmin(routerTree) +// ? 1 : 0; +// } + if (permissions != null && !permissions.isEmpty()) { + isCabinetAdmin = permissions.contains("shop:cabinet:write") ? 1 : 0; } diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java index b642b10..ad074a8 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java @@ -533,9 +533,12 @@ public class OrderApplicationService { .filter(order -> orderIds.contains(order.getOrderId())) .collect(Collectors.toList()); - QueryWrapper goodsQueryWrapper = new QueryWrapper<>(); - goodsQueryWrapper.in("goods_id", orderGoods.stream().map(ShopOrderGoodsEntity::getGoodsId).collect(Collectors.toList())); - List goods = goodsService.list(goodsQueryWrapper); + List goods = new ArrayList<>(); + if (!orderIds.isEmpty()) { + QueryWrapper goodsQueryWrapper = new QueryWrapper<>(); + goodsQueryWrapper.in("goods_id", orderGoods.stream().map(ShopOrderGoodsEntity::getGoodsId).collect(Collectors.toList())); + goods = goodsService.list(goodsQueryWrapper); + } return new GetOrdersByOpenIdDTO(orderList, orderGoods, goods); } diff --git a/sql/20250703.sql b/sql/20250703.sql new file mode 100644 index 0000000..982cb8b --- /dev/null +++ b/sql/20250703.sql @@ -0,0 +1,20 @@ +CREATE TABLE `user_balance_record` ( + `balance_record_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `ab98_user_id` bigint NOT NULL COMMENT '汇邦云用户唯一ID', + `openid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'openid', + `transaction_type` tinyint NOT NULL COMMENT '交易类型(1充值 2消费 3退款)', + `use_record_id` bigint NULL COMMENT '消费或退款时使用的充值id', + `amount` int NOT NULL COMMENT '交易金额,单位分', + `status` tinyint NOT NULL DEFAULT 0 COMMENT '交易状态(0未完成 1成功 2失败)', + `trade_id` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '支付网关交易id', + `biz_order_id` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '业务系统订单ID(对接外部系统)', + `transaction_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '交易时间', + `creator_id` bigint DEFAULT 0 COMMENT '创建者ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater_id` bigint DEFAULT 0 COMMENT '更新者ID', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '删除标志(0存在 1删除)', + PRIMARY KEY (`balance_record_id`), + KEY `idx_ab98_user_id` (`ab98_user_id`), + KEY `idx_transaction_time` (`transaction_time`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户余额交易记录表'; \ No newline at end of file