软编码menu

两种方式:

一、通过按钮监听来完成

bt.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {      
    public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {  
        menu.setHeaderTitle("title");       
        menu.add(0, 1, 0, "item 1");    
        menu.add(0, 2, 0, "item 2");        

    }    
});


二、通过系统接口openOptionsMenu来完成

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        
        Button bt = (Button)findViewById(R.id.Button01);
        bt.setOnClickListener(this); 
    }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  
  menu.add(0, 0, 0, "test");
  return super.onCreateOptionsMenu(menu);
 }

 @Override
 public void openOptionsMenu() {
  // TODO Auto-generated method stub
  super.openOptionsMenu();
 }

 @Override
 public void onClick(View v) {
  int id = v.getId();
  switch(id){
  case R.id.Button01:
   openOptionsMenu(); //这里可以直接通过button调出按键menu的菜单
   break;
  }


其实还有一种更为简单的方式:

把权限配单AndroidManifest.xml里的android:targetSdkVersion设置为10,这样就可以完美的支持那些没有menu键的设备。


===============================================================================================================================

/设置窗体全屏

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

 

//设置窗体始终点亮

getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,

           WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

 

//设置窗体背景模糊

getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
                WindowManager.LayoutParams.FLAG_BLUR_BEHIND);

通过getWindow().setFlags(0x08000000, 0x08000000);来设置隐藏的menu键盘

===================== 给Android4.0以上系统加上虚拟菜单按键=====================================

一、关于某些Android手机上的虚拟按键的显示问题:

在某些只有在显示屏上显示虚拟按键的手机上,有些应用的menu键不能显示出来。在PhoneWindow.generateLayout函数中有如下代码:

[java]  view plain copy
  1. final int targetSdk = context.getApplicationInfo().targetSdkVersion;  
  2.         final boolean targetPreHoneycomb = targetSdk < android.os.Build.VERSION_CODES.HONEYCOMB;  
  3.         final boolean targetPreIcs = targetSdk < android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH;  
  4.         final boolean targetHcNeedsOptions = context.getResources().getBoolean(  
  5.                 com.android.internal.R.bool.target_honeycomb_needs_options_menu);  
  6.         final boolean noActionBar = !hasFeature(FEATURE_ACTION_BAR) || hasFeature(FEATURE_NO_TITLE);  
  7.         if (targetPreHoneycomb || (targetPreIcs && targetHcNeedsOptions && noActionBar)) {  
  8.             addFlags(WindowManager.LayoutParams.FLAG_NEEDS_MENU_KEY);  
  9.         } else {  
  10.             clearFlags(WindowManager.LayoutParams.FLAG_NEEDS_MENU_KEY);  
  11.         }  
从这里可以看出,默认情况下,我们的menu键在满足一下条件情况下能显示出来:
1.targetPreHoneycomb = targetSdk < android.os.Build.VERSION_CODES.HONEYCOMB;
即android:targetSdkVersion="xxx" xxx小于11
2.android:targetSdkVersion 为11,12或者13,且该activity没有title和actionBar。
可能android希望我们以后使用actionBar代替menu键。

针对activity不能显示menu键的问题,
1.大家可以修改targetSDK,并去掉actionbar和title。
2.在 xxxActivity的哦你Create函数中,setContentView之后调用 Window.getFlags()来强行设置menu键的可见性。如:

[java]  view plain copy
  1. xxxActivity.java  
  2. public void  onCreate()  
  3. {  
  4. ....  
  5.   setContentView(R.layout.oppo_player);  
  6.         getWindow().setFlags(WindowManager.LayoutParams.FLAG_NEEDS_MENU_KEY,  
  7.                             WindowManager.LayoutParams.FLAG_NEEDS_MENU_KEY);   
  8.   ...  
  9. }  
若是想去掉menu键,而不想改targetSDK,可以在 xxxActivity的哦你Create函数中,setContentView之后调用 Window.clearFlags(WindowManager.LayoutParams.FLAG_NEEDS_MENU_KEY);来强者隐藏menu的三个点图标
注:getWindow().setFlags(WindowManager.LayoutParams.FLAG_NEEDS_MENU_KEY, WindowManager.LayoutParams.FLAG_NEEDS_MENU_KEY); 
如果报错的话,则改为下面语句(我的编译环境下报错,所以是通过下面方式调用的,已测试通过)
getWindow().setFlags(0x08000000, 0x08000000);

二、有时候应用需要使用菜单按钮,但是有的机型没有实体按键,同时4.0以上系统又没有右下角那个虚拟菜单按钮(就是3个点的按钮),这个告诉大家添加的方法。
在onCreate设置这么一段代码:

[java]  view plain copy
  1. try {  
  2.     getWindow().addFlags(WindowManager.LayoutParams.class.getField("FLAG_NEEDS_MENU_KEY").getInt(null));  
  3. }catch (NoSuchFieldException e) {  
  4.     // Ignore since this field won't exist in most versions of Android  
  5. }catch (IllegalAccessException e) {  
  6.     Log.w("feelyou.info""Could not access FLAG_NEEDS_MENU_KEY in addLegacyOverflowButton()", e);  
  7. }  





/* Navicat Premium Data Transfer Source Server : 二组数据库 Source Server Type : MySQL Source Server Version : 80027 Source Host : 8.136.9.120:3306 Source Schema : ERP-User Target Server Type : MySQL Target Server Version : 80027 File Encoding : 65001 Date: 11/09/2025 15:35:39 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for data_permission -- ---------------------------- DROP TABLE IF EXISTS `data_permission`; CREATE TABLE `data_permission` ( `id` bigint NOT NULL AUTO_INCREMENT, `user_id` bigint NOT NULL COMMENT '用户ID', `resource_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '资源类型', `resource_id` bigint NULL DEFAULT NULL COMMENT '资源ID', `permission_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '权限类型:ALL/DEPT/OWN', `created_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0), PRIMARY KEY (`id`) USING BTREE, INDEX `idx_user_resource`(`user_id`, `resource_type`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of data_permission -- ---------------------------- -- ---------------------------- -- Table structure for field_permission -- ---------------------------- DROP TABLE IF EXISTS `field_permission`; CREATE TABLE `field_permission` ( `id` bigint NOT NULL AUTO_INCREMENT, `role_id` bigint NOT NULL COMMENT '角色ID', `table_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '表名', `field_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '字段名', `permission` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '权限:READ/WRITE/HIDDEN', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_role_table`(`role_id`, `table_name`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of field_permission -- ---------------------------- -- ---------------------------- -- Table structure for login_audit -- ---------------------------- DROP TABLE IF EXISTS `login_audit`; CREATE TABLE `login_audit` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', `user_id` bigint NULL DEFAULT NULL COMMENT '用户ID(匿名失败时可为空)', `username` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '尝试登录的用户名', `success` tinyint NOT NULL COMMENT '是否成功:1=成功,0=失败', `client_ip` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '客户端IP', `user_agent` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'UA', `message` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '失败原因/备注', `created_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '时间', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_login_user`(`user_id`, `created_at`) USING BTREE, CONSTRAINT `fk_login_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 96 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '登录审计日志' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of login_audit -- ---------------------------- INSERT INTO `login_audit` VALUES (57, NULL, 'admin ', 0, '192.168.240.104', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 SLBrowser/9.0.6.5061 SLBChan/10 SLBVPV/64-bit', '登录失败', '2025-08-27 10:51:41'); INSERT INTO `login_audit` VALUES (58, 2, 'admin', 0, '192.168.240.104', 'Mozilla/5.0 (Linux; Android) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.109 Safari/537.36 CrKey/1.54.248666', '登录失败', '2025-08-27 10:52:20'); INSERT INTO `login_audit` VALUES (59, 2, 'admin', 0, '192.168.240.104', 'Mozilla/5.0 (Linux; Android) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.109 Safari/537.36 CrKey/1.54.248666', '登录失败', '2025-08-27 10:53:26'); INSERT INTO `login_audit` VALUES (60, 2, 'admin', 0, '192.168.240.104', 'Mozilla/5.0 (Linux; Android) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.109 Safari/537.36 CrKey/1.54.248666', '登录失败', '2025-08-27 10:54:23'); INSERT INTO `login_audit` VALUES (61, 2, 'admin', 0, '192.168.240.104', 'Mozilla/5.0 (Linux; Android) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.109 Safari/537.36 CrKey/1.54.248666', '登录失败', '2025-08-27 10:57:54'); INSERT INTO `login_audit` VALUES (62, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 10:58:22'); INSERT INTO `login_audit` VALUES (63, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 10:58:26'); INSERT INTO `login_audit` VALUES (64, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 10:58:27'); INSERT INTO `login_audit` VALUES (65, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 10:59:03'); INSERT INTO `login_audit` VALUES (66, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 11:01:18'); INSERT INTO `login_audit` VALUES (67, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 11:01:20'); INSERT INTO `login_audit` VALUES (68, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 11:02:58'); INSERT INTO `login_audit` VALUES (69, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 11:03:00'); INSERT INTO `login_audit` VALUES (70, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 11:03:01'); INSERT INTO `login_audit` VALUES (71, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 11:05:14'); INSERT INTO `login_audit` VALUES (72, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT; Windows NT 10.0; zh-CN) WindowsPowerShell/5.1.26100.4768', '登录失败', '2025-08-27 11:05:19'); INSERT INTO `login_audit` VALUES (73, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 11:06:08'); INSERT INTO `login_audit` VALUES (74, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'PostmanRuntime/7.37.3', '登录失败', '2025-08-27 11:06:15'); INSERT INTO `login_audit` VALUES (75, 2, 'admin', 1, '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT; Windows NT 10.0; zh-CN) WindowsPowerShell/5.1.26100.4768', '登录成功', '2025-08-27 11:10:25'); INSERT INTO `login_audit` VALUES (76, 2, 'admin', 1, '192.168.253.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', '登录成功', '2025-08-27 11:11:10'); INSERT INTO `login_audit` VALUES (77, 2, 'admin', 1, '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Linux; Android) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.109 Safari/537.36 CrKey/1.54.248666', '登录成功', '2025-08-27 11:19:42'); INSERT INTO `login_audit` VALUES (78, 2, 'admin', 1, '192.168.190.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', '登录成功', '2025-08-27 11:43:09'); INSERT INTO `login_audit` VALUES (79, 2, 'admin', 1, '192.168.253.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0', '登录成功', '2025-08-27 15:15:36'); INSERT INTO `login_audit` VALUES (80, 13, 'superadmin', 0, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录失败', '2025-09-09 17:11:18'); INSERT INTO `login_audit` VALUES (81, 13, 'superadmin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-09 17:17:03'); INSERT INTO `login_audit` VALUES (82, 13, 'superadmin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-09 17:17:16'); INSERT INTO `login_audit` VALUES (83, 2, 'admin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-09 17:19:36'); INSERT INTO `login_audit` VALUES (84, 2, 'admin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-09 17:19:47'); INSERT INTO `login_audit` VALUES (85, 2, 'admin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-09 17:21:30'); INSERT INTO `login_audit` VALUES (86, 2, 'admin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-09 17:29:37'); INSERT INTO `login_audit` VALUES (87, 2, 'admin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-10 08:39:50'); INSERT INTO `login_audit` VALUES (88, 13, 'superadmin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT; Windows NT 10.0; zh-CN) WindowsPowerShell/5.1.22621.2506', '登录成功', '2025-09-10 08:42:18'); INSERT INTO `login_audit` VALUES (89, 2, 'admin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-10 08:47:06'); INSERT INTO `login_audit` VALUES (90, 2, 'admin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-10 08:47:24'); INSERT INTO `login_audit` VALUES (91, 2, 'admin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-10 08:47:37'); INSERT INTO `login_audit` VALUES (92, 13, 'superadmin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT; Windows NT 10.0; zh-CN) WindowsPowerShell/5.1.22621.2506', '登录成功', '2025-09-10 08:48:37'); INSERT INTO `login_audit` VALUES (93, 2, 'admin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-10 08:50:15'); INSERT INTO `login_audit` VALUES (94, 2, 'admin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-10 09:30:56'); INSERT INTO `login_audit` VALUES (95, 13, 'superadmin', 1, '192.168.234.242', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0', '登录成功', '2025-09-10 09:40:24'); -- ---------------------------- -- Table structure for menu -- ---------------------------- DROP TABLE IF EXISTS `menu`; CREATE TABLE `menu` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '菜单ID', `parent_id` bigint NULL DEFAULT NULL COMMENT '父菜单ID', `name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '菜单名称', `type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '类型:CATALOG/MENU/BUTTON', `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '前端路由path', `component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '前端组件名/路径', `icon` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '图标', `visible` tinyint NOT NULL DEFAULT 1 COMMENT '是否可见:1=是,0=否', `sort_order` int NOT NULL DEFAULT 100 COMMENT '排序值', `permission` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '前端权限标识(如按钮权限)', `created_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间', `created_by` bigint NULL DEFAULT NULL COMMENT '创建人用户ID', `updated_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', `updated_by` bigint NULL DEFAULT NULL COMMENT '更新人用户ID', `deleted_at` datetime(0) NULL DEFAULT NULL COMMENT '删除时间(软删除)', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_menu_parent`(`parent_id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 52 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '菜单/前端资源' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of menu -- ---------------------------- INSERT INTO `menu` VALUES (1, 0, '首页', 'MENU', '/home', 'home/Index', '🏠', 1, 1, 'home:view', '2025-08-25 12:03:31', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (2, 1, '销售管理', 'CATALOG', '/sales', NULL, '📊', 1, 2, 'sales:view', '2025-08-25 12:03:31', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (3, 1, '客户管理', 'MENU', '/sales/customers', 'sales/Customers', '👥', 1, 21, 'sales:customer:view', '2025-08-25 12:03:31', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (4, 1, '订单管理', 'MENU', '/sales/orders', 'sales/Orders', '📋', 1, 22, 'sales:order:view', '2025-08-25 12:03:31', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (5, NULL, '采购管理', 'CATALOG', '/procure', NULL, '🛒', 1, 3, 'procure:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (6, NULL, '供应商管理', 'MENU', '/procure/suppliers', 'procure/Suppliers', '🏢', 1, 31, 'procure:supplier:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (7, 0, '采购进货', 'MENU', '/procure/purchase', 'procure/Purchase', '📦', 1, 32, 'procure:purchase:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (8, 0, '仓储管理', 'CATALOG', '/ware', NULL, '🏭', 1, 4, 'ware:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (9, NULL, '入库管理', 'MENU', '/ware/in', 'ware/In', '⬇️', 1, 41, 'ware:in:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (10, 0, '出库管理', 'MENU', '/ware/out', 'ware/Out', '⬆️', 1, 42, 'ware:out:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (11, 0, '库存盘点', 'MENU', '/ware/inventory', 'ware/Inventory', '📊', 1, 43, 'ware:inventory:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (12, NULL, '财务管理', 'CATALOG', '/finance', NULL, '💰', 1, 5, 'finance:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (13, 0, '订单付款', 'MENU', '/finance/order-payment', 'finance/OrderPayment', '💳', 1, 51, 'finance:payment:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (14, 0, '手动付款', 'MENU', '/finance/manual-payment', 'finance/ManualPayment', '💸', 1, 52, 'finance:payment:manual', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (15, 0, '付款审批', 'MENU', '/finance/payment-approval', 'finance/PaymentApproval', '✅', 1, 53, 'finance:payment:approve', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (16, NULL, '付款记录', 'MENU', '/finance/payment-record', 'finance/PaymentRecord', '📝', 1, 54, 'finance:payment:record', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (17, 0, '订单回款', 'MENU', '/finance/order-collection', 'finance/OrderCollection', '💵', 1, 55, 'finance:collection:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (18, 0, '收款记录', 'MENU', '/finance/collection-record', 'finance/CollectionRecord', '📋', 1, 56, 'finance:collection:record', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (19, 0, '应收账款', 'MENU', '/finance/accounts-receivable', 'finance/AccountsReceivable', '📈', 1, 57, 'finance:receivable:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (20, 0, '应付账款', 'MENU', '/finance/accounts-payable', 'finance/AccountsPayable', '📉', 1, 58, 'finance:payable:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (21, 0, '供应商对账单', 'MENU', '/finance/supplier-reconciliation', 'finance/SupplierReconciliation', '📊', 1, 59, 'finance:reconciliation:supplier', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (22, 0, '客户对账单', 'MENU', '/finance/customer-reconciliation', 'finance/CustomerReconciliation', '📊', 1, 60, 'finance:reconciliation:customer', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (23, 0, '商品管理', 'CATALOG', '/commodity', NULL, '🏷️', 1, 6, 'commodity:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (24, 0, '商品档案', 'MENU', '/commodity/list', 'commodity/List', '📋', 1, 61, 'commodity:list:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (25, 0, '商品分类', 'MENU', '/commodity/category', 'commodity/Category', '📁', 1, 62, 'commodity:category:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (26, 0, '零售管理', 'CATALOG', '/retail', NULL, '🛍️', 1, 7, 'retail:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (27, NULL, '零售商品', 'MENU', '/retail/products', 'retail/products/Index', '🏷️', 1, 71, 'retail:product:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (28, 0, '零售出库', 'MENU', '/retail/outbound', 'retail/outbound/Index', '📦', 1, 72, 'retail:outbound:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (29, 0, '零售退货', 'MENU', '/retail/returns', 'retail/returns/Index', '↩️', 1, 73, 'retail:return:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (30, NULL, '订单跟踪', 'MENU', '/retail/tracking', 'retail/tracking/Index', '📍', 1, 74, 'retail:tracking:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (31, 0, '系统管理', 'CATALOG', '/system', NULL, '⚙️', 1, 8, 'system:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (32, 0, '用户管理', 'MENU', '/system/users', 'system/Users', '👤', 1, 81, 'system:user:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (33, 0, '角色管理', 'MENU', '/system/roles', 'system/Roles', '🎭', 1, 82, 'system:role:view', '2025-08-27 02:26:01', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (34, 31, '菜单管理', 'MENU', '/system/menus', 'system/Menus', '📋', 1, 83, 'system:menu:view', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (35, 31, '个人信息', 'MENU', '/system/profile', 'system/UserProfile', '👤', 1, 84, NULL, '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (36, 31, '修改密码', 'MENU', '/system/change-password', 'system/ChangePassword', '🔒', 1, 85, NULL, '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (37, 31, 'AI智能助手', 'MENU', '/system/ai-chat', 'system/AiChat', '🤖', 1, 86, NULL, '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (38, 31, '权限测试', 'MENU', '/system/permission-test', 'system/PermissionTest', '🧪', 1, 87, 'system:view', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `menu` VALUES (39, 27, '添加商品', 'BUTTON', NULL, NULL, NULL, 1, 1, 'retail:product:create', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (40, 27, '编辑商品', 'BUTTON', NULL, NULL, NULL, 1, 2, 'retail:product:edit', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (41, 27, '查看商品', 'BUTTON', NULL, NULL, NULL, 1, 3, 'retail:product:view', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (42, 27, '切换状态', 'BUTTON', NULL, NULL, NULL, 1, 4, 'retail:product:toggle', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (43, 32, '添加用户', 'BUTTON', NULL, NULL, NULL, 1, 1, 'system:user:create', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (44, 32, '编辑用户', 'BUTTON', NULL, NULL, NULL, 1, 2, 'system:user:edit', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (45, 32, '删除用户', 'BUTTON', NULL, NULL, NULL, 1, 3, 'system:user:delete', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (46, 33, '添加角色', 'BUTTON', NULL, NULL, NULL, 1, 1, 'system:role:create', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (47, 33, '编辑角色', 'BUTTON', NULL, NULL, NULL, 1, 2, 'system:role:edit', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (48, 33, '删除角色', 'BUTTON', NULL, NULL, NULL, 1, 3, 'system:role:delete', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (49, 34, '添加菜单', 'BUTTON', NULL, NULL, NULL, 1, 1, 'system:menu:create', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (50, 34, '编辑菜单', 'BUTTON', NULL, NULL, NULL, 1, 2, 'system:menu:edit', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); INSERT INTO `menu` VALUES (51, 34, '删除菜单', 'BUTTON', NULL, NULL, NULL, 1, 3, 'system:menu:delete', '2025-09-09 07:44:43', NULL, '2025-09-09 07:44:43', NULL, NULL); -- ---------------------------- -- Table structure for operation_permission -- ---------------------------- DROP TABLE IF EXISTS `operation_permission`; CREATE TABLE `operation_permission` ( `id` bigint NOT NULL AUTO_INCREMENT, `role_id` bigint NOT NULL COMMENT '角色ID', `resource_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '资源类型', `operation` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '操作:CREATE/READ/UPDATE/DELETE', `permission` tinyint NOT NULL DEFAULT 0 COMMENT '是否有权限:1=是,0=否', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of operation_permission -- ---------------------------- -- ---------------------------- -- Table structure for role -- ---------------------------- DROP TABLE IF EXISTS `role`; CREATE TABLE `role` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '角色ID', `code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '角色编码,唯一', `name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '角色名称', `type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'BUSINESS' COMMENT '角色类型:SYSTEM(系统)/BUSINESS(业务)', `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态:1=启用,0=禁用', `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', `created_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间', `created_by` bigint NULL DEFAULT NULL COMMENT '创建人用户ID', `updated_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', `updated_by` bigint NULL DEFAULT NULL COMMENT '更新人用户ID', `deleted_at` datetime(0) NULL DEFAULT NULL COMMENT '删除时间(软删除)', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uk_role_code`(`code`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 27 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '角色' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of role -- ---------------------------- INSERT INTO `role` VALUES (1, 'SUPER_ADMIN', '超级管理员', 'SYSTEM', 1, '系统最高权限角色,拥有所有权限', '2025-08-25 12:03:31', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (12, 'ADMIN', '系统管理员', 'SYSTEM', 1, '系统管理员,拥有大部分系统权限', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (13, 'SALES_MANAGER', '销售经理', 'BUSINESS', 1, '销售部门经理,负责销售管理', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (14, 'SALES_STAFF', '销售专员', 'BUSINESS', 1, '销售专员,负责日常销售工作', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (15, 'FINANCE_MANAGER', '财务经理', 'BUSINESS', 1, '财务部门经理,负责财务管理', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (16, 'FINANCE_STAFF', '财务专员', 'BUSINESS', 1, '财务专员,负责日常财务工作', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (17, 'WAREHOUSE_MANAGER', '仓库经理', 'BUSINESS', 1, '仓库部门经理,负责仓储管理', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (18, 'WAREHOUSE_STAFF', '仓库专员', 'BUSINESS', 1, '仓库专员,负责日常仓储工作', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (19, 'PROCURE_MANAGER', '采购经理', 'BUSINESS', 1, '采购部门经理,负责采购管理', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (20, 'PROCURE_STAFF', '采购专员', 'BUSINESS', 1, '采购专员,负责日常采购工作', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (21, 'RETAIL_MANAGER', '零售经理', 'BUSINESS', 1, '零售部门经理,负责零售管理', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (22, 'RETAIL_STAFF', '零售专员', 'BUSINESS', 1, '零售专员,负责日常零售工作', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (23, 'COMMODITY_MANAGER', '商品经理', 'BUSINESS', 1, '商品部门经理,负责商品管理', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (24, 'COMMODITY_STAFF', '商品专员', 'BUSINESS', 1, '商品专员,负责日常商品工作', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); INSERT INTO `role` VALUES (25, 'VIEWER', '查看者', 'BUSINESS', 1, '只读用户,只能查看数据', '2025-09-09 07:44:42', NULL, '2025-09-09 07:44:42', NULL, NULL); -- ---------------------------- -- Table structure for role_menu -- ---------------------------- DROP TABLE IF EXISTS `role_menu`; CREATE TABLE `role_menu` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', `role_id` bigint NOT NULL COMMENT '角色ID', `menu_id` bigint NOT NULL COMMENT '菜单ID', `created_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间', `deleted_at` datetime(0) NULL DEFAULT NULL COMMENT '删除时间(软删除)', PRIMARY KEY (`id`) USING BTREE, INDEX `fk_rm_role`(`role_id`) USING BTREE, INDEX `fk_rm_menu`(`menu_id`) USING BTREE, CONSTRAINT `fk_rm_menu` FOREIGN KEY (`menu_id`) REFERENCES `menu` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT `fk_rm_role` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 618 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '角色-菜单授权' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of role_menu -- ---------------------------- INSERT INTO `role_menu` VALUES (71, 1, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (72, 1, 2, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (73, 1, 3, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (74, 1, 4, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (75, 1, 5, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (76, 1, 6, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (77, 1, 7, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (78, 1, 8, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (79, 1, 9, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (80, 1, 10, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (81, 1, 11, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (82, 1, 12, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (83, 1, 13, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (84, 1, 14, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (85, 1, 15, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (86, 1, 16, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (87, 1, 17, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (88, 1, 18, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (89, 1, 19, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (90, 1, 20, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (91, 1, 21, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (92, 1, 22, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (93, 1, 23, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (94, 1, 24, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (95, 1, 25, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (96, 1, 26, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (97, 1, 27, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (98, 1, 28, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (99, 1, 29, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (100, 1, 30, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (101, 1, 31, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (102, 1, 32, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (103, 1, 33, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (104, 1, 34, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (105, 1, 35, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (106, 1, 36, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (107, 1, 37, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (108, 1, 38, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (134, 12, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (135, 12, 31, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (136, 12, 32, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (137, 12, 33, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (138, 12, 34, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (139, 12, 35, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (140, 12, 36, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (141, 12, 37, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (142, 12, 38, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (149, 13, 12, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (150, 13, 16, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (151, 13, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (152, 13, 13, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (153, 13, 14, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (154, 13, 15, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (155, 13, 17, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (156, 13, 18, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (157, 13, 19, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (158, 13, 20, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (159, 13, 21, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (160, 13, 22, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (161, 13, 23, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (162, 13, 24, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (163, 13, 25, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (164, 13, 2, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (165, 13, 3, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (166, 13, 4, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (180, 14, 12, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (181, 14, 16, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (182, 14, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (183, 14, 13, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (184, 14, 17, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (185, 14, 18, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (186, 14, 23, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (187, 14, 24, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (188, 14, 25, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (189, 14, 2, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (190, 14, 3, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (191, 14, 4, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (195, 15, 12, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (196, 15, 16, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (197, 15, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (198, 15, 13, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (199, 15, 14, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (200, 15, 15, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (201, 15, 17, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (202, 15, 18, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (203, 15, 19, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (204, 15, 20, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (205, 15, 21, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (206, 15, 22, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (207, 15, 2, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (208, 15, 3, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (209, 15, 4, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (210, 16, 12, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (211, 16, 16, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (212, 16, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (213, 16, 13, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (214, 16, 17, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (215, 16, 18, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (216, 16, 19, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (217, 16, 20, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (218, 16, 21, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (219, 16, 22, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (220, 16, 2, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (221, 16, 3, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (222, 16, 4, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (225, 17, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (226, 17, 5, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (227, 17, 6, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (228, 17, 7, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (229, 17, 8, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (230, 17, 9, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (231, 17, 10, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (232, 17, 11, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (233, 17, 23, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (234, 17, 24, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (235, 17, 25, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (240, 18, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (241, 18, 8, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (242, 18, 9, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (243, 18, 10, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (244, 18, 11, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (245, 18, 23, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (246, 18, 24, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (247, 18, 25, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (255, 19, 5, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (256, 19, 6, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (257, 19, 9, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (258, 19, 12, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (259, 19, 16, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (260, 19, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (261, 19, 7, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (262, 19, 8, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (263, 19, 10, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (264, 19, 11, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (265, 19, 13, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (266, 19, 17, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (267, 19, 18, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (268, 19, 20, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (269, 19, 21, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (270, 19, 23, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (271, 19, 24, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (272, 19, 25, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (286, 20, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (287, 20, 5, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (288, 20, 6, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (289, 20, 7, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (290, 20, 8, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (291, 20, 9, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (292, 20, 10, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (293, 20, 11, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (294, 20, 23, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (295, 20, 24, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (296, 20, 25, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (301, 21, 12, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (302, 21, 16, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (303, 21, 27, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (304, 21, 30, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (305, 21, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (306, 21, 13, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (307, 21, 17, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (308, 21, 18, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (309, 21, 19, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (310, 21, 20, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (311, 21, 21, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (312, 21, 22, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (313, 21, 23, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (314, 21, 24, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (315, 21, 25, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (316, 21, 26, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (317, 21, 28, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (318, 21, 29, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (332, 22, 12, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (333, 22, 16, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (334, 22, 27, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (335, 22, 30, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (336, 22, 1, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (337, 22, 13, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (338, 22, 17, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (339, 22, 18, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (340, 22, 23, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (341, 22, 24, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (342, 22, 25, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (343, 22, 26, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (344, 22, 28, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (345, 22, 29, '2025-09-09 07:44:42', NULL); INSERT INTO `role_menu` VALUES (347, 23, 5, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (348, 23, 6, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (349, 23, 9, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (350, 23, 27, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (351, 23, 30, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (352, 23, 1, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (353, 23, 7, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (354, 23, 8, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (355, 23, 10, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (356, 23, 11, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (357, 23, 23, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (358, 23, 24, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (359, 23, 25, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (360, 23, 26, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (361, 23, 28, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (362, 23, 29, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (378, 24, 9, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (379, 24, 27, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (380, 24, 30, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (381, 24, 1, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (382, 24, 8, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (383, 24, 10, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (384, 24, 11, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (385, 24, 23, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (386, 24, 24, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (387, 24, 25, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (388, 24, 26, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (389, 24, 28, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (390, 24, 29, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (393, 25, 5, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (394, 25, 6, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (395, 25, 9, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (396, 25, 12, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (397, 25, 16, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (398, 25, 27, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (399, 25, 30, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (400, 25, 1, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (401, 25, 7, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (402, 25, 8, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (403, 25, 10, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (404, 25, 11, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (405, 25, 13, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (406, 25, 17, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (407, 25, 18, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (408, 25, 19, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (409, 25, 20, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (410, 25, 21, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (411, 25, 22, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (412, 25, 23, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (413, 25, 24, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (414, 25, 25, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (415, 25, 26, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (416, 25, 28, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (417, 25, 29, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (418, 25, 2, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (419, 25, 3, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (420, 25, 4, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (424, 1, 39, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (425, 1, 40, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (426, 1, 41, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (427, 1, 42, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (428, 1, 43, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (429, 1, 44, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (430, 1, 45, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (431, 1, 46, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (432, 1, 47, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (433, 1, 48, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (434, 1, 49, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (435, 1, 50, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (436, 1, 51, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (439, 12, 43, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (440, 12, 44, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (441, 12, 45, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (442, 12, 46, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (443, 12, 47, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (444, 12, 48, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (445, 12, 49, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (446, 12, 50, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (447, 12, 51, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (454, 21, 39, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (455, 21, 40, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (456, 21, 41, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (457, 21, 42, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (461, 22, 39, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (462, 22, 40, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (463, 22, 41, '2025-09-09 07:44:43', NULL); INSERT INTO `role_menu` VALUES (464, 25, 1, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (465, 25, 2, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (466, 25, 5, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (467, 25, 8, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (468, 25, 12, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (469, 25, 23, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (470, 25, 26, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (471, 25, 3, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (472, 25, 4, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (473, 25, 6, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (474, 25, 7, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (475, 25, 9, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (476, 25, 10, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (477, 25, 11, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (478, 25, 13, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (479, 25, 17, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (480, 25, 24, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (481, 25, 25, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (482, 25, 27, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (483, 25, 28, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (484, 25, 29, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (485, 25, 30, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (486, 25, 41, '2025-09-09 08:55:52', NULL); INSERT INTO `role_menu` VALUES (502, 25, 1, '2025-09-09 09:04:34', NULL); INSERT INTO `role_menu` VALUES (503, 25, 2, '2025-09-09 09:04:34', NULL); INSERT INTO `role_menu` VALUES (504, 25, 5, '2025-09-09 09:04:34', NULL); INSERT INTO `role_menu` VALUES (505, 25, 8, '2025-09-09 09:04:34', NULL); INSERT INTO `role_menu` VALUES (506, 25, 12, '2025-09-09 09:04:34', NULL); INSERT INTO `role_menu` VALUES (507, 25, 23, '2025-09-09 09:04:34', NULL); INSERT INTO `role_menu` VALUES (508, 25, 26, '2025-09-09 09:04:34', NULL); INSERT INTO `role_menu` VALUES (509, 25, 3, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (510, 25, 4, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (511, 25, 6, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (512, 25, 7, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (513, 25, 9, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (514, 25, 10, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (515, 25, 11, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (516, 25, 13, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (517, 25, 17, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (518, 25, 24, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (519, 25, 25, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (520, 25, 27, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (521, 25, 28, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (522, 25, 29, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (523, 25, 30, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (524, 25, 41, '2025-09-09 09:04:35', NULL); INSERT INTO `role_menu` VALUES (540, 1, 1, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (541, 1, 2, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (542, 1, 3, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (543, 1, 4, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (544, 1, 5, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (545, 1, 6, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (546, 1, 7, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (547, 1, 8, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (548, 1, 9, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (549, 1, 10, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (550, 1, 11, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (551, 1, 12, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (552, 1, 13, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (553, 1, 14, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (554, 1, 15, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (555, 1, 16, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (556, 1, 17, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (557, 1, 18, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (558, 1, 19, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (559, 1, 20, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (560, 1, 21, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (561, 1, 22, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (562, 1, 23, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (563, 1, 24, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (564, 1, 25, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (565, 1, 26, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (566, 1, 27, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (567, 1, 28, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (568, 1, 29, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (569, 1, 30, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (570, 1, 31, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (571, 1, 32, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (572, 1, 33, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (573, 1, 34, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (574, 1, 35, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (575, 1, 36, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (576, 1, 37, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (577, 1, 38, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (578, 1, 39, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (579, 1, 40, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (580, 1, 41, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (581, 1, 42, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (582, 1, 43, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (583, 1, 44, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (584, 1, 45, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (585, 1, 46, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (586, 1, 47, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (587, 1, 48, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (588, 1, 49, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (589, 1, 50, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (590, 1, 51, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (603, 1, 39, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (604, 1, 40, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (605, 1, 41, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (606, 1, 42, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (607, 1, 43, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (608, 1, 44, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (609, 1, 45, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (610, 1, 46, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (611, 1, 47, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (612, 1, 48, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (613, 1, 49, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (614, 1, 50, '2025-09-09 09:06:23', NULL); INSERT INTO `role_menu` VALUES (615, 1, 51, '2025-09-09 09:06:23', NULL); -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID', `username` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '登录账号,唯一', `password_hash` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '密码哈希(BCrypt/Argon2)', `salt` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '可选盐(如算法需要)', `name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '姓名/显示名', `email` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '邮箱', `mobile` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手机号', `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态:1=启用,0=禁用,2=锁定', `is_super_admin` tinyint NOT NULL DEFAULT 0 COMMENT '是否超管:1=是,0=否', `last_login_at` datetime(0) NULL DEFAULT NULL COMMENT '最近登录时间', `created_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间', `created_by` bigint NULL DEFAULT NULL COMMENT '创建人用户ID', `updated_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', `updated_by` bigint NULL DEFAULT NULL COMMENT '更新人用户ID', `deleted_at` datetime(0) NULL DEFAULT NULL COMMENT '删除时间(软删除)', `avatar_url` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL, `bio` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, `department` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, `position` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uk_user_username`(`username`) USING BTREE, UNIQUE INDEX `UK_sb8bbouer5wak8vyiiy4pf2bx`(`username`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of user -- ---------------------------- INSERT INTO `user` VALUES (2, 'admin', '$2a$10$PZQr22sldRjxHAgGWXKDjOMHPEP4pT.4R4Z9KwnyYkiYoweHqIWIi', '', '管理员', '', '', 1, 1, '2025-09-10 14:34:45', '2025-08-25 12:43:37', NULL, '2025-09-01 15:36:21', 2, NULL, 'http://8.136.9.120:19000/avatars/avatar_2_20250901144118_99e115d1.jpg', '还大家好', '', '项目经理'); INSERT INTO `user` VALUES (8, '123', '$2a$10$T9BkHqnX2smR0vcMub5R9.ORySI5BrTl98ffN2Y.HdOfahLSBIxlG', NULL, '123', NULL, NULL, 1, 0, '2025-09-01 15:30:15', '2025-08-27 15:01:00', NULL, '2025-09-01 07:30:30', NULL, NULL, NULL, NULL, NULL, NULL); INSERT INTO `user` VALUES (9, 'wrj', '$2a$10$y7KC7TJaw5u/uGy6wgiute.Fny.WA8jmx9uOh/JH2iEbc.Gi99kvy', NULL, '王瑞杰', '2512544602@qq.com', '13127347818', 1, 0, '2025-09-09 16:59:43', '2025-09-01 15:02:59', NULL, '2025-09-01 15:37:49', 9, NULL, 'http://8.136.9.120:19000/avatars/avatar_9_20250901152228_5021f356.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20250901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250901T072231Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=ae88e367e64eb99f8a32473099c5a8915fc2adf0f839b5cd23c81959a0dc9a85', '(。・∀・)ノ゙嗨', '财务部门', '项目经理'); INSERT INTO `user` VALUES (10, 'testuser', 'e10adc3949ba59abbe56e057f20f883e', '', '测试用户', 'test@example.com', NULL, 1, 0, '2025-09-09 17:04:40', '2025-09-09 08:55:52', NULL, '2025-09-09 09:04:34', NULL, NULL, NULL, NULL, NULL, NULL); INSERT INTO `user` VALUES (13, 'superadmin', 'e10adc3949ba59abbe56e057f20f883e', '', '超级管理员', 'superadmin@example.com', NULL, 1, 1, '2025-09-09 17:07:51', '2025-09-09 09:06:23', NULL, '2025-09-09 09:06:23', NULL, NULL, NULL, NULL, NULL, NULL); -- ---------------------------- -- Table structure for user_role -- ---------------------------- DROP TABLE IF EXISTS `user_role`; CREATE TABLE `user_role` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', `user_id` bigint NOT NULL COMMENT '用户ID', `role_id` bigint NOT NULL COMMENT '角色ID', `created_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间', `deleted_at` datetime(0) NULL DEFAULT NULL COMMENT '删除时间(软删除)', PRIMARY KEY (`id`) USING BTREE, INDEX `fk_ur_user`(`user_id`) USING BTREE, INDEX `fk_ur_role`(`role_id`) USING BTREE, CONSTRAINT `fk_ur_role` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT `fk_ur_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户-角色' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of user_role -- ---------------------------- INSERT INTO `user_role` VALUES (2, 2, 1, '2025-08-27 02:26:18', NULL); INSERT INTO `user_role` VALUES (3, 8, 25, '2025-09-09 07:44:43', NULL); INSERT INTO `user_role` VALUES (4, 9, 25, '2025-09-09 07:44:43', NULL); INSERT INTO `user_role` VALUES (6, 10, 25, '2025-09-09 08:55:52', NULL); INSERT INTO `user_role` VALUES (7, 13, 1, '2025-09-09 09:06:23', NULL); SET FOREIGN_KEY_CHECKS = 1; 把这个SQL里的表全部查看一下,只保留和登陆相关的表
09-12
这是菜单的应用层代码,一步步分析它的作用,解释代码的意思 using System; using System.Collections.Generic; using System.Linq; using System.Linq.Dynamic.Core; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; namespace OnMonitor.Systems { public class MenuAppService : ApplicationService, IMenuAppService { private readonly IRepository<AbpMenu, Guid> _repository; public MenuAppService(IRepository<AbpMenu, Guid> repository) { _repository = repository; } public async Task<MenuDto> Create(CreateOrUpdateMenuDto input) { var result = await _repository.InsertAsync(new AbpMenu(GuidGenerator.Create()) { FormId = input.FormId, ParentId = input.Pid, Name = input.Name, Label = input.Label, CategoryId = input.CategoryId, Sort = input.Sort, Path = input.Path, Component = input.Component, Permission = input.Permission, Icon = input.Icon, AlwaysShow = input.Pid == null ? true : false, Hidden = input.CategoryId == 2 ? true : false }); return ObjectMapper.Map<AbpMenu, MenuDto>(result); } public async Task Delete(List<Guid> ids) { //TODO:删除子集 foreach (var id in ids) { await _repository.DeleteAsync(id,true); } } public async Task<ListResultDto<MenuDto>> GetAll(GetMenuInputDto input) { var query = (await _repository.GetQueryableAsync()).WhereIf(!string.IsNullOrWhiteSpace(input.Filter), _ => _.Name.Contains(input.Filter)); var items =query.ToList(); var dtos = ObjectMapper.Map<List<AbpMenu>, List<MenuDto>>(items); return new ListResultDto<MenuDto>(dtos); } public async Task<MenuDto> Get(Guid id) { var result = await _repository.GetAsync(id); var dto = ObjectMapper.Map<AbpMenu, MenuDto>(result); if (dto.ParentId.HasValue) dto.Label = (await _repository.FirstOrDefaultAsync(_ => _.Id == result.ParentId))?.Label; return dto; } public async Task<ListResultDto<MenuDto>> LoadAll(Guid? id) { var items = (await _repository.GetQueryableAsync()).Where(_ => _.ParentId == id).OrderBy(_ => _.Sort).ToList(); var dtos = ObjectMapper.Map<List<AbpMenu>, List<MenuDto>>(items); return new ListResultDto<MenuDto>(dtos); } public async Task<MenuDto> Update(Guid id, CreateOrUpdateMenuDto input) { var dd = await _repository.GetListAsync(); var menu = await _repository.GetAsync(id); menu.ParentId = input.Pid; menu.CategoryId = input.CategoryId; menu.Name = input.Name; menu.Label = input.Label; menu.Sort = input.Sort; menu.Path = input.Path; menu.Component = input.Component; menu.Icon = input.Icon; menu.Permission = input.Permission; return ObjectMapper.Map<AbpMenu, MenuDto>(menu); } } }
最新发布
11-19
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值