浏览代码

fix: 补全22个前端菜单/按钮权限 + 修复角色权限保存失败

- init.sql/v9: 新增财务管理/横幅广告/平台费率模块及 investor/deviceConfig 等缺失子权限(63→85)
- RoleServiceImpl.saveList: 修复 baseMapper.update(entity,wrapper) 重复SET+raw type 导致保存失效
- role/index.vue: saveList 调用增加 .catch() 错误提示,避免静默失败

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
skyline 1 天之前
父节点
当前提交
d6de1129f8

+ 2 - 0
admin-web/src/views/admin/role/index.vue

@@ -288,6 +288,8 @@ const handleSaveRolePermission = () => {
     nextTick(()=>{
       loadData();
     })
+  }).catch(() => {
+    Msg.message("保存失败,请稍后重试", "error");
   })
 }
 

+ 32 - 2
car-wash-entity/src/main/resources/sql/init.sql

@@ -370,7 +370,37 @@ INSERT INTO `t_permission` (`id`, `company_id`, `name`, `value`, `pid`, `weight`
 (60, NULL, '设备关联', 'deviceRelation', 0, 150),
 (61, NULL, '关联列表', 'deviceRelation.list', 60, 1),
 (62, NULL, '新增关联', 'deviceRelation.add', 60, 2),
-(63, NULL, '删除关联', 'deviceRelation.remove', 60, 3);
+(63, NULL, '删除关联', 'deviceRelation.remove', 60, 3),
+
+-- ====== 财务管理(前端菜单权限) ======
+(64, NULL, '财务管理', 'finance', 0, 85),
+(65, NULL, '充值记录', 'recharge.list', 64, 1),
+(66, NULL, '退款清单', 'refundLog.list', 64, 2),
+(67, NULL, '退款处理', 'refundLog.modify', 64, 3),
+(68, NULL, '提现记录', 'withdrawnRecord.list', 64, 4),
+(69, NULL, '提现审核', 'withdrawnRecord.modify', 64, 5),
+(70, NULL, '结算记录', 'settlement.list', 64, 6),
+
+-- ====== 横幅广告 ======
+(71, NULL, '横幅广告', 'banner', 0, 95),
+(72, NULL, '广告列表', 'banner.list', 71, 1),
+(73, NULL, '新增广告', 'banner.add', 71, 2),
+(74, NULL, '修改广告', 'banner.modify', 71, 3),
+(75, NULL, '删除广告', 'banner.delete', 71, 4),
+
+-- ====== 平台费率 ======
+(76, NULL, '平台费率', 'platformFeeRate', 0, 105),
+(77, NULL, '费率列表', 'platformFeeRate.list', 76, 1),
+(78, NULL, '新增费率', 'platformFeeRate.add', 76, 2),
+(79, NULL, '修改费率', 'platformFeeRate.modify', 76, 3),
+
+-- ====== 补充已有模块缺失的子权限 ======
+(80, NULL, '删除用户', 'user.delete', 14, 4),
+(81, NULL, '删除字典', 'dict.delete', 27, 4),
+(82, NULL, '投资人列表', 'investor.list', 20, 2),
+(83, NULL, '修改投资人', 'investor.modify', 20, 3),
+(84, NULL, '删除投资人', 'investor.delete', 20, 4),
+(85, NULL, '删除设备配置', 'deviceConfig.remove', 57, 3);
 
 -- ----------------------------
 -- 初始化用户角色关联
@@ -381,7 +411,7 @@ INSERT INTO `t_admin_user_role` (`admin_user_id`, `role_id`) VALUES
 
 -- ----------------------------
 -- 初始化超级管理员角色权限(permissions 字段为管道分隔字符串)
--- 注意:63 个权限值总长超过 GROUP_CONCAT 默认 1024,需先调大
+-- 注意:85 个权限值总长超过 GROUP_CONCAT 默认 1024,需先调大
 -- ----------------------------
 SET SESSION group_concat_max_len = 10000;
 UPDATE `t_role` SET `permissions` = (

+ 34 - 4
car-wash-entity/src/main/resources/sql/v9_permission_reset.sql

@@ -110,12 +110,42 @@ INSERT INTO `t_permission` (`id`, `company_id`, `name`, `value`, `pid`, `weight`
 (60, NULL, '设备关联', 'deviceRelation', 0, 150),
 (61, NULL, '关联列表', 'deviceRelation.list', 60, 1),
 (62, NULL, '新增关联', 'deviceRelation.add', 60, 2),
-(63, NULL, '删除关联', 'deviceRelation.remove', 60, 3);
+(63, NULL, '删除关联', 'deviceRelation.remove', 60, 3),
+
+-- ====== 财务管理(前端菜单权限) ======
+(64, NULL, '财务管理', 'finance', 0, 85),
+(65, NULL, '充值记录', 'recharge.list', 64, 1),
+(66, NULL, '退款清单', 'refundLog.list', 64, 2),
+(67, NULL, '退款处理', 'refundLog.modify', 64, 3),
+(68, NULL, '提现记录', 'withdrawnRecord.list', 64, 4),
+(69, NULL, '提现审核', 'withdrawnRecord.modify', 64, 5),
+(70, NULL, '结算记录', 'settlement.list', 64, 6),
+
+-- ====== 横幅广告 ======
+(71, NULL, '横幅广告', 'banner', 0, 95),
+(72, NULL, '广告列表', 'banner.list', 71, 1),
+(73, NULL, '新增广告', 'banner.add', 71, 2),
+(74, NULL, '修改广告', 'banner.modify', 71, 3),
+(75, NULL, '删除广告', 'banner.delete', 71, 4),
+
+-- ====== 平台费率 ======
+(76, NULL, '平台费率', 'platformFeeRate', 0, 105),
+(77, NULL, '费率列表', 'platformFeeRate.list', 76, 1),
+(78, NULL, '新增费率', 'platformFeeRate.add', 76, 2),
+(79, NULL, '修改费率', 'platformFeeRate.modify', 76, 3),
+
+-- ====== 补充已有模块缺失的子权限 ======
+(80, NULL, '删除用户', 'user.delete', 14, 4),
+(81, NULL, '删除字典', 'dict.delete', 27, 4),
+(82, NULL, '投资人列表', 'investor.list', 20, 2),
+(83, NULL, '修改投资人', 'investor.modify', 20, 3),
+(84, NULL, '删除投资人', 'investor.delete', 20, 4),
+(85, NULL, '删除设备配置', 'deviceConfig.remove', 57, 3);
 
 -- ----------------------------
 -- 3. 将全部权限写入超级管理员角色(role_id = 1)
 --    permissions 字段为管道分隔的权限值字符串
---    注意:63 个权限值总长超过 GROUP_CONCAT 默认 1024,需先调大
+--    注意:85 个权限值总长超过 GROUP_CONCAT 默认 1024,需先调大
 -- ----------------------------
 SET SESSION group_concat_max_len = 10000;
 UPDATE `t_role` SET `permissions` = (
@@ -124,6 +154,6 @@ UPDATE `t_role` SET `permissions` = (
 
 -- ====================================================
 -- 验证
--- SELECT COUNT(*) AS perm_count FROM t_permission;          -- 应为 63
--- SELECT permissions FROM t_role WHERE id = 1;              -- 应为63个值以|分隔
+-- SELECT COUNT(*) AS perm_count FROM t_permission;          -- 应为 85
+-- SELECT permissions FROM t_role WHERE id = 1;              -- 应为85个值以|分隔
 -- ====================================================

+ 4 - 7
car-wash-service/src/main/java/com/kym/service/impl/RoleServiceImpl.java

@@ -50,13 +50,10 @@ public class RoleServiceImpl extends MPJBaseServiceImpl<RoleMapper, Role> implem
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void saveList(List<Role> roleList) {
-
-        roleList.forEach(role -> {
-            UpdateWrapper update = new UpdateWrapper();
-            update.eq("id", role.getId());
-            update.set("permissions", role.getPermissions());
-            baseMapper.update(role, update);
-        });
+        roleList.forEach(role -> lambdaUpdate()
+                .eq(Role::getId, role.getId())
+                .set(Role::getPermissions, role.getPermissions())
+                .update());
     }
 
     @Override