白名单接口添加,设备审核添加
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index 94e2492..e53e5c2 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -115,6 +115,14 @@
 INSERT INTO "tb_function" (id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (17, NULL, 1, NULL, 'layui-icon-util', '/param/apiclientpara', '应用参数配置', 3, 10);
 --INSERT INTO "tb_function" (id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (2, NULL, 1, NULL, '', '/custmeallist/index', '就餐名单管理', 3, 22);
 --INSERT INTO "tb_function" (id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (7, NULL, 1, NULL, '', '/custmealcheck/index', '就餐名单审核', 4, 22);
+INSERT INTO "tb_function"("id", "createtime", "isleaf", "lastsaved", "menuicon", "menuurl", "name", "ordernum", "parentid") VALUES (8, NULL, 1, NULL, '', '/devicecheck/index', '设备审核', 2, 14);
+INSERT INTO "tb_function"("id", "createtime", "isleaf", "lastsaved", "menuicon", "menuurl", "name", "ordernum", "parentid") VALUES (13, NULL, 1, NULL, '', '/whitelist/index', '就餐白名单维护', 1, 11);
+INSERT INTO "tb_function"("id", "createtime", "isleaf", "lastsaved", "menuicon", "menuurl", "name", "ordernum", "parentid") VALUES (18, NULL, 1, NULL, '', '/whitelistcheck/index', '就餐白名单审核', 2, 11);
+INSERT INTO "tb_function"("id", "createtime", "isleaf", "lastsaved", "menuicon", "menuurl", "name", "ordernum", "parentid") VALUES (31, NULL, 1, NULL, '', '/whitelistbind/devbind', '就餐白名单设备绑定', 3, 11);
+INSERT INTO "tb_function" (id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (11, NULL, 0, NULL, 'layui-icon-util', '#', '就餐白名单管理', 7, -1);
+
+
+
 
 
 INSERT INTO "tb_mealtype" (mealtype,endtime,lastsaved,mealname) VALUES ('dinner', '200000', '20190709102922', '晚餐');
@@ -129,163 +137,167 @@
 INSERT INTO "tb_paytype_config" (paytype,configid,config_name,config_value) VALUES ('yktpay', 'orderurl', NULL, 'http://172.28.201.101:9116/epayapi/services/thirdparty/common/pay');
 INSERT INTO "tb_paytype_config" (paytype,configid,config_name,config_value) VALUES ('yktpay', 'reverseurl', NULL, 'http://172.28.201.101:9116/epayapi/services/thirdparty/common/payreverse');
 
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0b30009', 16, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0b3000a', 17, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0b3000b', 19, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0b4000c', 20, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0b4000d', 21, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0b4000f', 6, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0b40010', 7, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0b50011', 8, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0b50012', 9, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0b50013', 22, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0bd0015', 4, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0bd0016', 5, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0be0017', 10, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0be0018', 11, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0be0019', 12, NULL, '402890866be40f77016be4c848b9002f');
-
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0bf001a', 13, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0bf001b', 14, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0bf001c', 15, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0bf001e', 24, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0c00021', 23, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0c00022', 25, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0c00023', 31, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0c10024', 38, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0c10025', 42, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0c10026', 44, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0c10027', 86, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0c20029', 45, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0c2002a', 46, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0c2002b', 47, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0c3002c', 48, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0e3002d', 49, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0e3002f', 50, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0e30030', 52, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0e30031', 53, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c0e40033', 54, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c1030034', 55, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c1030035', 56, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c1040036', 57, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c1040038', 58, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c1040039', 59, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c104003a', 60, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c105003b', 65, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c105003e', 61, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c105003f', 62, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c1060040', 63, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c1060041', 64, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c1060042', 66, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c1060043', 67, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c1060044', 68, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c1070047', 71, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c1070048', 80, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c1070049', 81, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c108004b', 70, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c108004c', 74, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c109004d', 75, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c109004e', 76, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c109004f', 77, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c1090050', 78, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c1090052', 69, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c10a0053', 82, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c10a0054', 83, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c10a0055', 84, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c10a0058', 79, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c10b0059', 85, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c10b005a', 87, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c10b005c', 88, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c10b005d', 89, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c10c005e', 90, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c10c005f', 1, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c10c0060', 2, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c10c0061', 3, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('402890866bf9ea0d016bfde2c10c0062', 18, NULL, '402890866be40f77016be4c848b9002f');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('ff8080816aaf2ec3016aaf4edaac009f', 27, NULL, '2c9cab836a8af5d5016a8af6ece20000');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f56001d', 16, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f57001e', 17, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f57001f', 19, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f570020', 20, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f570021', 21, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f580023', 6, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f580024', 7, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f580025', 8, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f580026', 9, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f590027', 22, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f590029', 4, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f59002a', 5, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f59002b', 10, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f59002c', 11, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f5a002d', 12, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f5a002e', 13, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f5b002f', 14, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f5b0030', 15, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f5b0032', 24, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f5f0044', 23, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f5f0045', 25, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f5f0046', 31, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f5f0047', 38, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f5f0048', 42, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f600049', 44, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f60004a', 86, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f60004c', 45, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f60004d', 46, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f60004e', 47, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f61004f', 48, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f610050', 49, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f610052', 50, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f610053', 52, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f610054', 53, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f620056', 55, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f620057', 54, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f620058', 57, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f630059', 56, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f63005b', 59, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f63005c', 58, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f64005d', 60, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f64005e', 65, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f660066', 61, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f660067', 62, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f660068', 63, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f670069', 64, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f68006a', 66, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f68006b', 67, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f68006c', 68, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f68006e', 27, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f69006f', 32, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f690070', 28, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f690071', 29, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f690072', 30, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f6c007e', 71, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f6c007f', 80, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f6c0080', 81, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f6d0082', 77, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f6d0083', 78, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f6d0084', 76, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f6e0085', 74, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f6e0086', 70, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f6e0087', 75, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f6f0089', 82, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f6f008a', 83, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f70008b', 69, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f70008c', 84, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f720095', 85, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f720096', 79, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f720097', 87, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f720099', 89, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f72009a', 90, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f73009b', 88, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-
-INSERT INTO "tb_permission" (id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbc8fa4016cbc91eb14005f', 33, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission" (id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbc8fa4016cbc91eb150061', 39, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission" (id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbc8fa4016cbc91eb150062', 34, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission" (id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbc8fa4016cbc91eb150063', 40, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission" (id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbc8fa4016cbc91eb150064', 37, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission" (id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbc8fa4016cbc91eb150065', 36, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission" (id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbc8fa4016cbc91eb150066', 35, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-INSERT INTO "tb_permission" (id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbca060016cbca3a983006a', 27, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0b30009', 16, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0b3000a', 17, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0b3000b', 19, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0b4000c', 20, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0b4000d', 21, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0b4000f', 6, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0b40010', 7, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0b50011', 8, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0b50012', 9, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0b50013', 22, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0bd0015', 4, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0bd0016', 5, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0be0017', 10, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0be0018', 11, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0be0019', 12, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0bf001a', 13, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0bf001b', 14, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0bf001c', 15, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0bf001e', 24, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0c00021', 23, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0c00022', 25, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0c00023', 31, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0c10024', 38, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0c10025', 42, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0c10026', 44, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0c10027', 86, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0c20029', 45, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0c2002a', 46, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0c2002b', 47, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0c3002c', 48, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0e3002d', 49, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0e3002f', 50, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0e30030', 52, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0e30031', 53, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c0e40033', 54, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c1030034', 55, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c1030035', 56, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c1040036', 57, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c1040038', 58, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c1040039', 59, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c104003a', 60, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c105003b', 65, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c105003e', 61, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c105003f', 62, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c1060040', 63, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c1060041', 64, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c1060042', 66, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c1060043', 67, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c1060044', 68, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c1070047', 71, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c1070048', 80, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c1070049', 81, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c108004b', 70, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c108004c', 74, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c109004d', 75, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c109004e', 76, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c109004f', 77, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c1090050', 78, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c1090052', 69, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c10a0053', 82, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c10a0054', 83, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c10a0055', 84, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c10a0058', 79, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c10b0059', 85, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c10b005a', 87, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c10b005c', 88, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c10b005d', 89, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c10c005e', 90, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c10c005f', 1, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c10c0060', 2, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c10c0061', 3, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('402890866bf9ea0d016bfde2c10c0062', 18, NULL, '402890866be40f77016be4c848b9002f');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('ff8080816aaf2ec3016aaf4edaac009f', 27, NULL, '2c9cab836a8af5d5016a8af6ece20000');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a330002', 16, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a330003', 17, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a340004', 19, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a340005', 20, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a340006', 21, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a340008', 6, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a350009', 7, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a35000a', 8, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a36000b', 9, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a36000c', 22, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a36000e', 4, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a37000f', 5, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a370010', 10, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a370011', 11, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a370012', 12, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a370013', 13, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a380014', 14, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a380015', 15, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a380017', 24, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a39001a', 23, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a39001b', 25, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a39001c', 31, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a39001d', 38, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a39001e', 42, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a39001f', 44, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a390020', 86, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3a0022', 45, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3a0023', 46, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3a0024', 47, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3a0025', 48, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3a0026', 49, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3b0028', 50, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3b0029', 52, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3b002a', 53, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3b002c', 54, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3b002d', 55, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3b002e', 56, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3c002f', 57, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3c0031', 58, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3c0032', 59, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3c0033', 60, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3c0034', 65, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3d0036', 1, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3d0037', 2, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3d003a', 91, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3e003c', 61, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3e003d', 62, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3e003e', 63, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3e003f', 64, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3e0040', 66, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3e0041', 67, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3f0042', 68, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a3f0045', 80, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a400046', 81, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a400047', 71, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a400049', 70, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a40004a', 74, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a41004b', 75, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a41004c', 76, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a41004d', 77, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a41004e', 78, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a410050', 82, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a410051', 83, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a420052', 84, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a420053', 69, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a420056', 79, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a420057', 85, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a420058', 87, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a43005a', 88, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a43005b', 89, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a43005c', 90, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a44005f', 28, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a440060', 29, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a440061', 30, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a450062', 32, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a460063', 33, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a460065', 34, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a460066', 35, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a460067', 36, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a460068', 37, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a470069', 39, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a47006a', 40, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a47006d', 51, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a47006e', 72, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a470070', 41, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a480071', 43, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a480073', 3, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO  "tb_permission"("id", "resid", "role_func_id", "roleid") VALUES ('297ee5316d240e8e016d24101a480074', 18, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
 
 
 
@@ -311,8 +323,8 @@
 INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (23, '', 15, '查询', '/device/index');
 INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (25, '', 15, '添加页面', '/device/loadadd');
 INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (31, '', 15, '添加', '/device/add');
-INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (26, '', 11, '修改', '/param/sysparaupdate');
-INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (27, '', 11, '查询', '/param/syspara');
+--INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (26, '', 11, '修改', '/param/sysparaupdate');
+--INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (27, '', 11, '查询', '/param/syspara');
 INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (28, '', 12, '查询', '/param/businesspara');
 INSERT INTO "tb_resource"  (id,code,function_id,name,uri) VALUES (29, '', 12, '删除', '/param/deletebusinesspara');
 INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (30, '', 12, '修改', '/param/businessparaupdate');
@@ -374,6 +386,17 @@
 --INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (92, '', 1, '添加', '/custtype/add');
 --INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (93, '', 1, '修改', '/custtype/update');
 --INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (94, '', 1, '删除', '/custtype/delete');
+INSERT INTO "tb_resource"("id", "code", "function_id", "name", "uri") VALUES (1, '', 8, '查询', '/devicecheck/index');
+INSERT INTO "tb_resource"("id", "code", "function_id", "name", "uri") VALUES (2, '', 8, '审核', '/devicecheck/docheckdevice');
+INSERT INTO  "tb_resource"("id", "code", "function_id", "name", "uri") VALUES (3, '', 13, '查询', '/whitelist/index');
+INSERT INTO  "tb_resource"("id", "code", "function_id", "name", "uri") VALUES (18, '', 13, '添加', '/whitelist/addwhitelist');
+INSERT INTO  "tb_resource"("id", "code", "function_id", "name", "uri") VALUES (41, '', 18, '查询', '/whitelistcheck/checklist');
+INSERT INTO  "tb_resource"("id", "code", "function_id", "name", "uri") VALUES (43, '', 18, '审核', '/whitelistcheck/load4checkdetail');
+INSERT INTO  "tb_resource"("id", "code", "function_id", "name", "uri") VALUES (51, '', 31, '查询', '/whitelistbind/devbind');
+INSERT INTO  "tb_resource"("id", "code", "function_id", "name", "uri") VALUES (72, '', 31, '绑定', '/whitelistbind/dobinddev');
+
+
+
 
 INSERT INTO "tb_role" (roleid,createtime,editflag,lastsaved,rolecode,roledesc,rolename) VALUES ('d1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '20190101000000', 0, '', 'ROLE_ADMIN', '超级管理员', '超级管理员');
 INSERT INTO "tb_role" (roleid,createtime,editflag,lastsaved,rolecode,roledesc,rolename) VALUES ('2c9cab836a8af5d5016a8af6ece20000', '20190506102639', 1, '', 'ROLE_ADMIN', '系统管理员', '系统管理员');
@@ -413,6 +436,13 @@
 INSERT INTO "tb_role_function" (id,functionid,permissions,roleid) VALUES ('297e0a7e6bd65d7c016bd67401e10086', 28, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
 INSERT INTO "tb_role_function" (id,functionid,permissions,roleid) VALUES ('297e0a7e6bd65d7c016bd67401e10087', 29, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
 INSERT INTO "tb_role_function" (id,functionid,permissions,roleid) VALUES ('297e0a7e6bd65d7c016bd67401e2008b', 30, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO "tb_role_function"("id", "functionid", "permissions", "roleid") VALUES ('297ee5316d2438ba016d243a95b400d6', 13, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO "tb_role_function"("id", "functionid", "permissions", "roleid") VALUES ('297ee5316d2438ba016d243a95b500d9', 18, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO "tb_role_function"("id", "functionid", "permissions", "roleid") VALUES ('297ee5316d2438ba016d243a95b600dc', 31, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO "tb_role_function"("id", "functionid", "permissions", "roleid") VALUES ('297ee5316d2446b3016d2447fc74006a', 11, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO "tb_role_function"("id", "functionid", "permissions", "roleid") VALUES ('297ee5316d24bd0e016d24c02e250039', 8, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+
+
 
 INSERT INTO "tb_shopsettlement" (shopsettlementno,operno,shopid,shopname) VALUES ('1', '1234', '2000000012', '测试商户');
 INSERT INTO "tb_subject" (subjno,balflag,displayflag,endflag,fsubjno,opendate,subjlevel,subjname,subjtype) VALUES ('1001', 1, 'y', 1, NULL, 20190604, 1, '库存现金', 1);
diff --git a/src/main/resources/templates/restaurant/device/index.html b/src/main/resources/templates/restaurant/device/index.html
index a63f279..ed3ff48 100644
--- a/src/main/resources/templates/restaurant/device/index.html
+++ b/src/main/resources/templates/restaurant/device/index.html
@@ -46,6 +46,27 @@
                     {field: 'factoryid', sort: true, width: 200, title: '设备厂商'},
                     {field: 'state', title: '状态', sort: true, width: 100, templet: '#device-dev-tpl-state'},
                     {
+                        field: 'checkstatus',
+                        title: '审核状态',
+                        align: 'center',
+                        width: 120,
+                        sort: true,
+                        templet: function (d) {
+                            if ('uncheck' == d.checkstatus) {
+                                return '<span class="layui-badge layui-bg-orange">待审核</span>'
+                            } else if ('normal' == d.checkstatus) {
+                                return '<span class="layui-badge layui-bg-green">有效</span>';
+                            } else if ('fail' == d.checkstatus) {
+                                return '<span class="layui-badge layui-bg-gray">无效</span>';
+                            } else if ('reject' == d.checkstatus) {
+                                return '<span class="layui-badge">驳回</span>';
+                            } else {
+                                return d.status;
+                            }
+                        }
+                    },
+
+                    {
                         field: 'id', align: 'center', title: '操作', fixed: 'right', templet: function (item) {
                             return ' <a class="layui-btn  layui-btn-xs" lay-event="device-edit"><i class="layui-icon layui-icon-edit"></i>编辑</a> ';
                         }
diff --git a/src/main/resources/templates/restaurant/devicecheck/index.html b/src/main/resources/templates/restaurant/devicecheck/index.html
new file mode 100644
index 0000000..76ba2b0
--- /dev/null
+++ b/src/main/resources/templates/restaurant/devicecheck/index.html
@@ -0,0 +1,152 @@
+<div class="layui-card">
+    <div class="layui-card-header">
+        <h2 class="header-title">设备审核</h2>
+        <span class="layui-breadcrumb pull-right">
+          <a href="#">设备管理</a>
+          <a><cite>设备审核</cite></a>
+        </span>
+    </div>
+    <div class="layui-card-body">
+        <div class="layui-form toolbar">
+            搜索:
+            <select id="search-devicecheck-check-status">
+                <option value=""> 选择设备审核状态</option>
+                <option value="uncheck" selected> 待审核</option>
+                <option value="normal"> 有效</option>
+                <option value="fail"> 无效</option>
+                <option value="reject"> 驳回</option>
+            </select>&emsp;
+            <button id="btn-search-devicecheck-check" class="layui-btn icon-btn" data-type="search"><i
+                    class="layui-icon">&#xe615;</i>搜索
+            </button>
+        </div>
+        <table class="layui-table" id="devicecheckTable" lay-filter="devicecheckTable-filter"></table>
+    </div>
+</div>
+
+
+<!-- 表格操作列 -->
+<script type="text/html" id="deviceCheckToolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-sm" lay-event="doChecked">审核通过</button>
+        <button class="layui-btn layui-btn-sm" lay-event="doReject">审核驳回</button>
+    </div>
+</script>
+
+<script>
+    layui.use(['form', 'table', 'layer', 'admin', 'element'], function () {
+        var form = layui.form;
+        var table = layui.table;
+        var admin = layui.admin;
+
+        form.render("select");
+
+        table.render({
+            elem: '#devicecheckTable',
+            url: '[[@{/devicecheck/list}]]',
+            page: true,
+            toolbar:'#deviceCheckToolbar',
+            where:{
+                status:'uncheck'
+            },
+            cols: [
+                [
+                    {type:'checkbox'},
+                    {field: 'id', title: '终端编号', sort: true},
+                    {field: 'devphyid', sort: true, width: 200, title: '设备物理id'},
+                    {field: 'shopid', sort: true, width: 200, title: '商户id'},
+                    {field: 'factoryid', sort: true, width: 200, title: '设备厂商'},
+                    {field: 'state', title: '状态', sort: true, width: 100, templet: '#device-dev-tpl-state'},
+                    {
+                        field: 'checkstatus',
+                        title: '审核状态',
+                        align: 'center',
+                        width: 120,
+                        sort: true,
+                        templet: function (d) {
+                            if ('uncheck' == d.checkstatus) {
+                                return '<span class="layui-badge layui-bg-orange">待审核</span>'
+                            } else if ('normal' == d.checkstatus) {
+                                return '<span class="layui-badge layui-bg-green">有效</span>';
+                            } else if ('fail' == d.checkstatus) {
+                                return '<span class="layui-badge layui-bg-gray">无效</span>';
+                            } else if ('reject' == d.checkstatus) {
+                                return '<span class="layui-badge">驳回</span>';
+                            } else {
+                                return d.status;
+                            }
+                        }
+                    },
+                ]
+            ]
+        });
+
+        // 搜索按钮点击事件
+        $('#btn-search-devicecheck-check').click(function () {
+            var state = $("#search-devicecheck-check-status").val();
+            table.reload('devicecheckTable', {where: {status: state}, page: {curr: 1}});
+        });
+
+        table.on('toolbar(devicecheckTable-filter)', function(obj){
+            var checkStatus = table.checkStatus(obj.config.id);
+            var data = checkStatus.data;
+            if(data.length<=0){
+                layer.msg("请选择需要审核的设备", {icon: 2});
+                return;
+            }
+            var status;
+            switch(obj.event){
+                case 'doChecked':
+                    status='normal';
+                    break;
+                case 'doReject':
+                    status='reject';
+                    break;
+            };
+            doDeviceCheck(data,status);
+        });
+        function doDeviceCheck(data,status){
+            layer.load(2);
+            var token = $("meta[name='_csrf_token']").attr("value");
+            var deviceids = [];
+            for (var i = 0; i < data.length; i++) {
+                deviceids.push(data[i].id);
+            }
+            console.log(status);
+            console.log(deviceids);
+           // debugger
+            $.ajax({
+                type: "POST",
+                dataType: "json",
+                url: '[[@{/devicecheck/docheckdevice}]]',
+                data: {
+                    "status": status,
+                    "datalist[]": deviceids,
+                    "_csrf": token
+                },
+                success: function (result) {
+                    layer.closeAll('loading');
+                    if (result.code == 200) {
+                        layer.msg(result.msg, {icon: 1});
+                        table.reload('devicecheckTable'); //刷新表格
+                        admin.finishPopupCenter();
+                    } else if (result.code == 401) {
+                        layer.msg(result.msg, {icon: 2, time: 1500}, function () {
+                            location.replace('[[@{/login}]]');
+                        }, 1000);
+                        return;
+                    } else {
+                        console.log('err:' + result.code);
+                        layer.msg(result.msg, {icon: 2});
+                    }
+                },
+                error: function (err) {
+                    admin.errorBack(err);
+                }
+            });
+
+        }
+
+
+    });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/restaurant/whitelist/checkdetail.html b/src/main/resources/templates/restaurant/whitelist/checkdetail.html
new file mode 100644
index 0000000..368ec94
--- /dev/null
+++ b/src/main/resources/templates/restaurant/whitelist/checkdetail.html
@@ -0,0 +1,94 @@
+<div id="whitelist-checkdetail-form" lay-filter="whitelist-checkdetail-form-filter" class="layui-form model-form" style="padding: 10px 25px;">
+    <input type="hidden" name="whitelistid" id="search-form-whitelist-checkdetail-whitelistid" th:value="${checkDetailwhitelistid}" />
+    <div class="layui-form-item">
+        <label class="layui-form-label" style="color: red;">审核意见</label>
+        <div class="layui-input-block">
+            <input type="radio" name="checktype" id="form-whitelist-checkdetail-pass" lay-filter="whitelist-checkdetail-filter" value="pass" title="通过" checked/>
+            <input type="radio" name="checktype" id="form-whitelist-checkdetail-reject" lay-filter="whitelist-checkdetail-filter" value="reject" title="驳回"/>
+        </div>
+    </div>
+
+    <div class="layui-form-item" id="form-whitelist-checkdetail-reason-div" style="display: none;">
+        <label class="layui-form-label">驳回原因</label>
+        <div class="layui-input-block">
+            <textarea name="reason" id="form-whitelist-checkdetail-reason" placeholder="请输入内容" class="layui-textarea"></textarea>
+        </div>
+    </div>
+
+    <div class="layui-form-item">
+        <table class="layui-table" id="whitelistCheckdetailTable" lay-filter="whitelistCheckdetailTable-filter"></table>
+    </div>
+
+    <div class="layui-form-item model-form-footer">
+        <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
+        <button class="layui-btn" lay-filter="whitelist-checkdetail-form-submit" lay-submit>确认</button>
+    </div>
+</div>
+
+<script>
+    layui.use(['layer', 'admin', 'form', 'table'], function () {
+        var layer = layui.layer;
+        var admin = layui.admin;
+        var form = layui.form;
+        var table = layui.table;
+
+        // 表单提交事件
+        form.render("radio");
+        form.on('radio(whitelist-checkdetail-filter)', function (data) {
+            if ('pass' == data.value) {
+                $("#form-whitelist-checkdetail-reason-div").hide();
+            } else {
+                $("#form-whitelist-checkdetail-reason").val('');
+                $("#form-whitelist-checkdetail-reason-div").show();
+            }
+        });
+
+        // 渲染表格
+        var renderDetailTable = function (obj) {
+            table.render({
+                elem: '#whitelistCheckdetailTable',
+                url: '[[@{whitelistcheck/load4checkdetaillist}]]',
+                where: obj,
+                page: true,
+                size: 'sm',
+                height: 384,
+                cols: [
+                    [
+                        {field: 'cardno', title: '市民卡号', align: 'center'},
+                        {field: 'username', title: '姓名', align: 'center'}
+                    ]
+                ]
+            });
+        }
+        renderDetailTable({whitelistid: $("#search-form-whitelist-checkdetail-whitelistid").val()});
+
+        form.on('submit(whitelist-checkdetail-form-submit)', function (data) {
+            var vdata = data.field;
+            console.log(vdata);
+            if ('reject' == vdata.checktype) {
+                if (undefined == vdata.reason || "" == vdata.reason || "" == $.trim(vdata.reason)) {
+                    layer.msg("请填写驳回原因", {icon: 2, time: 1500});
+                    return;
+                }
+            }
+            vdata["_csrf"] = $("meta[name='_csrf_token']").attr("value");
+            admin.go('[[@{/whitelistcheck/checkdetail}]]', vdata, function (result) {
+                layer.closeAll('loading');
+                if (result.code == 200) {
+                    layer.msg(result.msg, {icon: 1});
+                    admin.finishPopupCenter();
+                } else if (result.code == 401) {
+                    layer.msg(result.msg, {icon: 2, time: 1500}, function () {
+                        location.replace('[[@{/login}]]');
+                    }, 1000);
+                    return;
+                } else {
+                    console.log('err:' + result.code);
+                    layer.msg(result.msg, {icon: 2});
+                }
+            }, function (err) {
+                admin.errorBack(err);
+            })
+        });
+    });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/restaurant/whitelist/devbind.html b/src/main/resources/templates/restaurant/whitelist/devbind.html
new file mode 100644
index 0000000..3d8e000
--- /dev/null
+++ b/src/main/resources/templates/restaurant/whitelist/devbind.html
@@ -0,0 +1,120 @@
+<div class="layui-card">
+    <div class="layui-card-header">
+        <h2 class="header-title">白名单设备绑定</h2>
+        <span class="layui-breadcrumb pull-right">
+          <a href="#">白名单管理</a>
+          <a><cite>白名单设备绑定</cite></a>
+        </span>
+    </div>
+    <div class="layui-card-body">
+        <div class="layui-form toolbar">
+            搜索:
+            <input id="search-whitelist-devbind-searchkey" class="layui-input search-input" maxlength="20" type="text" style="width: 300px;" placeholder="输入名称、设备名称或设备物理ID"/>&emsp;
+            <button id="btn-whitelist-devbind-search" class="layui-btn icon-btn" data-type="search"><i class="layui-icon">&#xe615;</i>搜索
+            </button>
+            <button id="btn-whitelist-devbind-add" class="layui-btn icon-btn" data-type="add"><i class="layui-icon">&#xe654;</i>新 增</button>
+        </div>
+        <table class="layui-table" id="whitelist-devbind-table" lay-filter="whitelist-devbind-table-filter"></table>
+    </div>
+</div>
+
+
+<!-- 表格操作列 -->
+<script type="text/html" id="whitelist-devbind-table-bar">
+    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
+</script>
+
+<script>
+    layui.use(['form', 'table', 'layer', 'admin', 'element'], function () {
+        var form = layui.form;
+        var table = layui.table;
+        var admin = layui.admin;
+        // 渲染表格
+        table.render({
+            elem: '#whitelist-devbind-table',
+            url: '[[@{/whitelistbind/devbindlist}]]',
+            page: true,
+            cols: [
+                [
+                    {field: 'deviceid', title: '设备编号', align: 'center', fixed: 'left', sort: true},
+                    {field: 'devicename', title: '设备名称', align: 'center', fixed: 'left'},
+                    {field: 'devphyid', title: '设备物理ID', align: 'center'},
+                    {field: 'listname', title: '白名单名称', align: 'center', sort: true},
+                    {
+                        field: 'liststatus', title: '白名单状态', align: 'center', templet: function (d) {
+                            if ('uncheck' == d.liststatus) {
+                                return '<span class="layui-badge layui-bg-orange">待审核</span>'
+                            } else if ('normal' == d.liststatus) {
+                                return '<span class="layui-badge layui-bg-green">有效</span>';
+                            } else if ('closed' == d.liststatus) {
+                                return '<span class="layui-badge layui-bg-gray">无效</span>';
+                            } else if ('reject' == d.liststatus) {
+                                return '<span class="layui-badge">驳回</span>';
+                            } else {
+                                return d.liststatus;
+                            }
+                        }
+                    },
+                    {
+                        field: 'createtime', title: '绑定时间', align: 'center', templet: function (d) {
+                            return admin.formatDate(d.createtime);
+                        }
+                    },
+                    {align: 'center', title: '操作', width: 100, toolbar: '#whitelist-devbind-table-bar', fixed: 'right'}
+                ]
+            ]
+        });
+
+        // 搜索按钮点击事件
+        $('#btn-whitelist-devbind-search').click(function () {
+            var searchkey = $("#search-whitelist-devbind-searchkey").val();
+            table.reload('whitelist-devbind-table', {where: {searchkey: searchkey}, page: {curr: 1}});
+        });
+
+        $('#btn-whitelist-devbind-add').click(function () {
+            admin.popupCenter({
+                title: "新增白名单绑定关系",
+                path: '[[@{/whitelistbind/load4binddev}]]',
+                area: '900px',
+                finish: function () {
+                    table.reload('whitelist-devbind-table');
+                }
+            });
+        });
+
+        //监听单元格
+        table.on('tool(whitelist-devbind-table-filter)', function (obj) {
+            var data = obj.data;
+
+            if('del' == obj.event){
+                layer.confirm('确定要删除设备绑定的白名单【'+data.listname+'】吗?', {
+                    btn: ['确定', '取消']
+                },function(){
+                    layer.closeAll('dialog');
+                    layer.load(2);
+                    admin.go('[[@{/whitelistbind/deletedevbind}]]', {
+                        id: data.id,
+                        _csrf: $("meta[name='_csrf_token']").attr("value")
+                    }, function (data) {
+                        console.log(data.code);
+                        layer.closeAll('loading');
+                        if (data.code == 200) {
+                            layer.msg(data.msg, {icon: 1});
+                        } else if (data.code == 401) {
+                            layer.msg(data.msg, {icon: 2, time: 1500}, function () {
+                                location.replace('[[@{/login}]]');
+                            }, 1000);
+                            return;
+                        } else {
+                            layer.msg(data.msg, {icon: 2});
+                        }
+                        table.reload('whitelist-devbind-table');
+                    }, function (err) {
+                        admin.errorBack(err);
+                    });
+                });
+            }
+        });
+
+    });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/restaurant/whitelist/whitelist.html b/src/main/resources/templates/restaurant/whitelist/whitelist.html
new file mode 100644
index 0000000..1e07511
--- /dev/null
+++ b/src/main/resources/templates/restaurant/whitelist/whitelist.html
@@ -0,0 +1,156 @@
+<div class="layui-card">
+    <div class="layui-card-header">
+        <h2 class="header-title">就餐白名单维护</h2>
+        <span class="layui-breadcrumb pull-right">
+          <a href="#">就餐白名单管理</a>
+          <a><cite>就餐白名单维护</cite></a>
+        </span>
+    </div>
+    <div class="layui-card-body">
+        <div class="layui-form toolbar">
+            搜索:
+            <input id="search-whitelist-listname" class="layui-input search-input" maxlength="20" type="text" placeholder="输入名称查询"/>&emsp;
+            <button id="btn-search-whitelist" class="layui-btn icon-btn" data-type="search"><i class="layui-icon">&#xe615;</i>搜索
+            </button>
+            <button id="btn-whitelist-add" class="layui-btn icon-btn" data-type="add"><i class="layui-icon">&#xe654;</i>新 增</button>
+        </div>
+        <table class="layui-table" id="whitelistTable" lay-filter="whitelistTable-filter"></table>
+    </div>
+</div>
+
+
+<!-- 表格操作列 -->
+<script type="text/html" id="whitelist-table-bar">
+    <a class="layui-btn layui-btn layui-btn-xs" lay-event="detail">查看名单</a>
+    {{# if(d.status=='uncheck' || d.status=='reject'){ }}
+        <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
+    {{# } else if(d.status=='normal'){ }}
+        <a class="layui-btn layui-btn-warm layui-btn-xs" lay-event="closed">关闭</a>
+    {{# } }}
+</script>
+
+<script>
+    layui.use(['form', 'table', 'layer', 'admin', 'element'], function () {
+        var form = layui.form;
+        var table = layui.table;
+        var admin = layui.admin;
+        var element = layui.element;
+
+        form.render("select");
+        // 渲染表格
+        table.render({
+            elem: '#whitelistTable',
+            url: '[[@{/whitelist/list}]]',
+            page: true,
+            cols: [
+                [
+                    {field: 'listname', title: '白名单名称', align: 'center', fixed: 'left' },
+                    {
+                        field: 'status', title: '状态', align: 'center', width: 120, sort: true, templet: function (d) {
+                            if ('uncheck' == d.status) {
+                                return '<span class="layui-badge layui-bg-orange">待审核</span>'
+                            } else if ('normal' == d.status) {
+                                return '<span class="layui-badge layui-bg-green">有效</span>';
+                            } else if ('closed' == d.status) {
+                                return '<span class="layui-badge layui-bg-gray">无效</span>';
+                            } else if ('reject' == d.status) {
+                                return '<span class="layui-badge">驳回</span>';
+                            } else {
+                                return d.status;
+                            }
+                        }
+                    },
+                    {field: 'remark', title: '备注',  align: 'center'},
+                    {align: 'center', title: '操作', width: 250, toolbar: '#whitelist-table-bar',  fixed: 'right'}
+                ]
+            ]
+        });
+
+        // 搜索按钮点击事件
+        $('#btn-search-whitelist').click(function () {
+            var listname = $("#search-whitelist-listname").val();
+            table.reload('whitelistTable', {where: { listname: listname}, page: {curr: 1}});
+        });
+
+        $('#btn-whitelist-add').click(function () {
+            admin.popupCenter({
+                title: "新增就餐白名单",
+                path: '[[@{/whitelist/load4addwhitelist}]]',
+                area: '500px',
+                finish: function () {
+                    table.reload('whitelistTable');
+                }
+            });
+        });
+
+        //监听单元格
+        table.on('tool(whitelistTable-filter)', function (obj) {
+            var data = obj.data;
+            if('del' == obj.event){
+                layer.confirm('确定直接删除就餐白名单【'+data.listname+'】吗?', {
+                    btn: ['确定', '取消']
+                },function(){
+                    layer.load(2);
+                    admin.go('[[@{/whitelist/deletelist}]]', {
+                        whitelistid: data.whitelistid,
+                        _csrf: $("meta[name='_csrf_token']").attr("value")
+                    }, function (data) {
+                        console.log(data.code);
+                        layer.closeAll('loading');
+                        if (data.code == 200) {
+                            layer.msg(data.msg, {icon: 1});
+                        } else if (data.code == 401) {
+                            layer.msg(data.msg, {icon: 2, time: 1500}, function () {
+                                location.replace('[[@{/login}]]');
+                            }, 1000);
+                            return;
+                        } else {
+                            layer.msg(data.msg, {icon: 2});
+                        }
+                        table.reload('whitelistTable');
+                    }, function (err) {
+                        admin.errorBack(err)
+                    });
+                });
+
+            }else if('closed' == obj.event){
+                layer.confirm('确定关闭就餐白名单【'+data.listname+'】吗?', {
+                    btn: ['确定', '取消']
+                },function(){
+                    layer.load(2);
+                    admin.go('[[@{/whitelist/closelist}]]', {
+                        whitelistid: data.whitelistid,
+                        _csrf: $("meta[name='_csrf_token']").attr("value")
+                    }, function (data) {
+                        console.log(data.code);
+                        layer.closeAll('loading');
+                        if (data.code == 200) {
+                            layer.msg(data.msg, {icon: 1});
+                        } else if (data.code == 401) {
+                            layer.msg(data.msg, {icon: 2, time: 1500}, function () {
+                                location.replace('[[@{/login}]]');
+                            }, 1000);
+                            return;
+                        } else {
+                            layer.msg(data.msg, {icon: 2});
+                        }
+                        table.reload('whitelistTable');
+                    }, function (err) {
+                        admin.errorBack(err)
+                    });
+                });
+
+            }else if('detail' == obj.event){
+                admin.popupCenter({
+                    title: "查看名单",
+                    path: '[[@{/whitelist/load4detail}]]?whitelistid=' + data.whitelistid,
+                    area: '600px',
+                    finish: function () {
+                        table.reload('whitelistTable');
+                    }
+                });
+            }
+        });
+
+    });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/restaurant/whitelist/whitelistbind.html b/src/main/resources/templates/restaurant/whitelist/whitelistbind.html
new file mode 100644
index 0000000..54caad0
--- /dev/null
+++ b/src/main/resources/templates/restaurant/whitelist/whitelistbind.html
@@ -0,0 +1,178 @@
+<div id="whitelist-devbind-form" lay-filter="whitelist-devbind-filter" class="layui-form model-form"
+     style="padding: 30px 25px 10px 25px;">
+    <div class="layui-form-item">
+        <div class="layui-input-inline" style="width: 450px;">
+            <label class="layui-form-label">白名单</label>
+            <div class="layui-input-block">
+                <select lay-verify="required" class="layui-select" id="whitelist-devbind-form-select-whitelistid">
+                    <option th:each="rl:${whitelists}" th:value="${rl.whitelistid}"
+                            th:text="${rl.listname}"></option>
+                </select>&emsp;
+            </div>
+        </div>
+    </div>
+
+    <div class="layui-form-item">
+        <label class="layui-form-label">选择设备</label>
+        <div class="layui-input-block" style="border: 1px solid #ddd;border-radius: 4px;padding: 10px;">
+            <div class="layui-card-body">
+                <div class="layui-form toolbar">
+                    <div class="layui-input-inline">
+                        <input id="search-whitelist-devbind-form-devgroupid" type="text"
+                               lay-filter="search-whitelist-devbind-form-devgroupid-filter" autocomplete="off"
+                               class="layui-input"/>
+                    </div>
+                    设备:
+                    <input id="search-whitelist-devbind-form-searchkey" type="text" class="layui-input search-input"
+                           maxlength="20" style="width: 200px;" placeholder="输入设备名称或设备物理ID"/>&emsp;
+                    <button id="btn-search-whitelist-devbind-form" class="layui-btn icon-btn"><i
+                            class="layui-icon">&#xe615;</i>搜索
+                    </button>
+                    <button id="btn-reset-whitelist-devbind-form" class="layui-btn layui-btn-primary"><i
+                            class="layui-icon"></i>清空
+                    </button>
+
+                    <table class="layui-table" id="whitelist-devbind-form-table"
+                           lay-filter="whitelist-devbind-form-table-filter"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <div class="layui-form-item model-form-footer">
+        <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
+        <button class="layui-btn" lay-filter="whitelist-devbind-form-submit" lay-submit id="submitbtn">保存</button>
+    </div>
+</div>
+
+<style type="text/css" id="whitelist-devbind-form-css">
+    .layui-form-item .layui-form-checkbox[lay-skin=primary] {
+        margin-top: 0;
+    }
+</style>
+
+<script>
+    layui.use(['layer', 'table', 'admin', 'form', 'treeSelect'], function () {
+        var layer = layui.layer;
+        var admin = layui.admin;
+        var form = layui.form;
+        var table = layui.table;
+        var treeSelect = layui.treeSelect;
+        var $ = layui.$
+
+        form.render("select");
+        treeSelect.render({
+            elem: '#search-whitelist-devbind-form-devgroupid',
+            data: '[[@{/whitelistbind/devgrouptree}]]',
+            type: 'get',
+            placeholder: '选择设备组',
+            search: false,
+            style: {
+                folder: {
+                    enable: false
+                },
+                line: {
+                    enable: true
+                }
+            },
+            // 点击回调
+            click: function (d) {
+                var treeNode = d.current;
+                console.log(treeNode);
+                return true;
+            },
+            success: function (d) {
+                console.log(d); // 加载完成后的回调函数
+            }
+        });
+
+        // 渲染表格
+        table.render({
+            elem: '#whitelist-devbind-form-table',
+            url: '[[@{/whitelistbind/devsearch}]]',
+            size: 'sm',
+            height: 350,
+            page: false,
+            cols: [
+                [
+                    {type: 'checkbox', style: "#whitelist-devbind-form-css", fixed: 'left'},
+                    {field: 'deviceid', title: '设备编号', align: 'center'},
+                    {field: 'devicename', title: '设备名称', align: 'center'},
+                    {field: 'devphyid', title: '设备物理ID', align: 'center'},
+                    {field: 'devgroupname', title: '设备组', align: 'center'}
+                ]
+            ]
+        });
+
+        // 搜索按钮点击事件
+        $('#btn-search-whitelist-devbind-form').click(function () {
+            var whitelistid = $("#whitelist-devbind-form-select-whitelistid").val();
+            var devgroupid = $("#search-whitelist-devbind-form-devgroupid").val();
+            var searchkey = $("#search-whitelist-devbind-form-searchkey").val();
+            table.reload('whitelist-devbind-form-table', {
+                where: {
+                    devgroupid: devgroupid,
+                    searchkey: searchkey,
+                    whitelistid: whitelistid
+                }
+            });
+        });
+
+        $("#btn-reset-whitelist-devbind-form").click(function () {
+            $("#search-whitelist-devbind-form-devgroupid").val("");
+            $("#search-whitelist-devbind-form-searchkey").val("");
+            treeSelect.revokeNode('search-whitelist-devbind-form-devgroupid-filter');
+        });
+
+        form.on('submit(whitelist-devbind-form-submit)', function (el) {
+            var whitelistid = $("#whitelist-devbind-form-select-whitelistid").val();
+            var checkStatus = table.checkStatus('whitelist-devbind-form-table');
+            var data = checkStatus.data;
+            var deviceids = [];
+            if ("" == whitelistid) {
+                layer.msg("请选择白名单", {icon: 2, time: 1500});
+                return;
+            }
+            for (var i = 0; i < data.length; i++) {
+                deviceids.push(data[i].deviceid);
+            }
+            if (deviceids.length < 1) {
+                layer.msg("请选择设备", {icon: 2, time: 1500});
+                return;
+            }
+            debugger
+            console.log(whitelistid, deviceids);
+            layer.load(2);
+            var token = $("meta[name='_csrf_token']").attr("value");
+            $.ajax({
+                type: "POST",
+                dataType: "json",
+                url: '[[@{/whitelistbind/dobinddev}]]',
+                data: {
+                    "whitelistid": whitelistid,
+                    "deviceid[]": deviceids,
+                    "_csrf": token
+                },
+                success: function (result) {
+                    layer.closeAll('loading');
+                    if (result.code == 200) {
+                        layer.msg(result.msg, {icon: 1});
+                        table.reload('whitelist-devbind-form-table'); //刷新表格
+                        admin.finishPopupCenter();
+                    } else if (result.code == 401) {
+                        layer.msg(result.msg, {icon: 2, time: 1500}, function () {
+                            location.replace('[[@{/login}]]');
+                        }, 1000);
+                        return;
+                    } else {
+                        console.log('err:' + result.code);
+                        layer.msg(result.msg, {icon: 2});
+                    }
+                },
+                error: function (err) {
+                    admin.errorBack(err);
+                }
+            });
+        });
+    });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/restaurant/whitelist/whitelistcheck.html b/src/main/resources/templates/restaurant/whitelist/whitelistcheck.html
new file mode 100644
index 0000000..d0136ed
--- /dev/null
+++ b/src/main/resources/templates/restaurant/whitelist/whitelistcheck.html
@@ -0,0 +1,111 @@
+<div class="layui-card">
+    <div class="layui-card-header">
+        <h2 class="header-title">就餐白名单审核</h2>
+        <span class="layui-breadcrumb pull-right">
+          <a href="#">就餐白名单管理</a>
+          <a><cite>就餐白名单审核</cite></a>
+        </span>
+    </div>
+    <div class="layui-card-body">
+        <div class="layui-form toolbar">
+            搜索:
+            <select id="search-whitelist-check-status">
+                <option value=""> 选择就餐白名单状态</option>
+                <option value="uncheck" selected> 待审核</option>
+                <option value="normal"> 有效</option>
+                <option value="closed"> 无效</option>
+                <option value="reject"> 驳回</option>
+            </select>&emsp;
+            <button id="btn-search-whitelist-check" class="layui-btn icon-btn" data-type="search"><i
+                    class="layui-icon">&#xe615;</i>搜索
+            </button>
+        </div>
+        <table class="layui-table" id="whitelistcheckTable" lay-filter="whitelistcheckTable-filter"></table>
+    </div>
+</div>
+
+
+<!-- 表格操作列 -->
+<script type="text/html" id="whitelist-check-table-bar">
+    {{# if(d.status =='uncheck'){ }}
+        <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="check">审核</a>
+    {{# } else { }}
+        <a class="layui-btn layui-btn-disabled layui-btn-xs">审核</a>
+    {{# } }}
+</script>
+
+<script>
+    layui.use(['form', 'table', 'layer', 'admin', 'element'], function () {
+        var form = layui.form;
+        var table = layui.table;
+        var admin = layui.admin;
+
+        form.render("select");
+
+        var renderCheckRuleTable = function(obj){
+            table.render({
+                elem: '#whitelistcheckTable',
+                url: '[[@{/whitelistcheck/checklist}]]',
+                where: obj,
+                page: true,
+                cols: [
+                    [
+                        {field: 'listname', title: '餐白名單名称', align: 'center', fixed: 'left'},
+                        {
+                            field: 'status',
+                            title: '状态',
+                            align: 'center',
+                            width: 120,
+                            sort: true,
+                            templet: function (d) {
+                                if ('uncheck' == d.status) {
+                                    return '<span class="layui-badge layui-bg-orange">待审核</span>'
+                                } else if ('normal' == d.status) {
+                                    return '<span class="layui-badge layui-bg-green">有效</span>';
+                                } else if ('closed' == d.status) {
+                                    return '<span class="layui-badge layui-bg-gray">无效</span>';
+                                } else if ('reject' == d.status) {
+                                    return '<span class="layui-badge">驳回</span>';
+                                } else {
+                                    return d.status;
+                                }
+                            }
+                        },
+                        {
+                            align: 'center',
+                            title: '操作',
+                            width: 250,
+                            toolbar: '#whitelist-check-table-bar',
+                            fixed: 'right'
+                        }
+                    ]
+                ]
+            });
+        }
+        renderCheckRuleTable({status: "uncheck"});
+
+        // 搜索按钮点击事件
+        $('#btn-search-whitelist-check').click(function () {
+            var state = $("#search-whitelist-check-status").val();
+            table.reload('whitelistcheckTable', {where: {status: state}, page: {curr: 1}});
+        });
+
+        //监听单元格
+        table.on('tool(whitelistcheckTable-filter)', function (obj) {
+            var data = obj.data;
+
+            if('check' == obj.event){
+                admin.popupCenter({
+                    title: "查看名单",
+                    path: '[[@{/whitelistcheck/load4checkdetail}]]?whitelistid=' + data.whitelistid,
+                    area: '600px',
+                    finish: function () {
+                        table.reload('whitelistcheckTable', {where: {status: ""}, page: {curr: 1}});
+                    }
+                });
+
+            }
+        });
+
+    });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/restaurant/whitelist/whitelistdetail.html b/src/main/resources/templates/restaurant/whitelist/whitelistdetail.html
new file mode 100644
index 0000000..ad45b92
--- /dev/null
+++ b/src/main/resources/templates/restaurant/whitelist/whitelistdetail.html
@@ -0,0 +1,48 @@
+<div class="layui-card">
+    <div class="layui-card-body">
+        <div class="layui-form toolbar">
+            搜索:
+            <input type="hidden" id="search-whitelist-detail-whitelistid" th:value="${whitelistDetailid}" />
+            <input id="search-whitelist-detail-searchkey" class="layui-input search-input" maxlength="20" type="text" style="width: 200px;"
+                   placeholder="输入市民卡号或姓名查询"/>&emsp;
+            <button id="btn-search-whitelist-detail" class="layui-btn icon-btn" data-type="search"><i
+                    class="layui-icon">&#xe615;</i>搜索
+            </button>
+        </div>
+        <table class="layui-table" id="whitelistDetailTable" lay-filter="whitelistDetailTable-filter"></table>
+    </div>
+</div>
+<script>
+    layui.use(['form', 'table', 'layer', 'admin', 'element'], function () {
+        var form = layui.form;
+        var table = layui.table;
+        var admin = layui.admin;
+        var element = layui.element;
+
+        // 渲染表格
+        var renderDetailTable = function (obj) {
+            table.render({
+                elem: '#whitelistDetailTable',
+                url: '[[@{/whitelist/load4detaillist}]]',
+                where: obj,
+                page: true,
+                height: 472,
+                cols: [
+                    [
+                        {field: 'cardno', title: '市民卡号', align: 'center'},
+                        {field: 'username', title: '姓名', align: 'center'}
+                    ]
+                ]
+            });
+        }
+        renderDetailTable({whitelistid: $("#search-whitelist-detail-whitelistid").val()});
+
+        // 搜索按钮点击事件
+        $('#btn-search-whitelist-detail').click(function () {
+            var whitelistid = $("#search-whitelist-detail-whitelistid").val();
+            var searchkey = $("#search-whitelist-detail-searchkey").val();
+            table.reload('whitelistDetailTable', {where: {whitelistid: whitelistid, searchkey: searchkey}, page: {curr: 1}});
+        });
+
+    });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/restaurant/whitelist/whitelistform.html b/src/main/resources/templates/restaurant/whitelist/whitelistform.html
new file mode 100644
index 0000000..23e4133
--- /dev/null
+++ b/src/main/resources/templates/restaurant/whitelist/whitelistform.html
@@ -0,0 +1,136 @@
+<div id="whitelist-form" lay-filter="whitelist-form-filter" class="layui-form model-form" style="padding: 10px 25px;">
+
+    <div class="layui-form-item">
+        <label class="layui-form-label"><span style="color: red">* </span>白名单名称</label>
+        <div class="layui-input-block">
+           <input type="text" class="layui-input" name="listname" id="form-whitelist-listname" maxlength="20" style="width: 90%;"
+                  autocomplete="off" lay-verify="required|listname"/>
+        </div>
+    </div>
+
+    <div class="layui-form-item">
+        <label class="layui-form-label"><span style="color: red">* </span>白名单对象</label>
+        <div class="layui-input-inline" style="width: auto;">
+            <button type="button" class="layui-btn upoadfile-btn"  >
+                <i class="layui-icon">&#xe67c;</i>上传名单
+                <input type="file" name="file" id="form-whitelist-records" style="width:auto;"/>
+            </button>
+        </div>
+        <div class="layui-input-inline" style="padding-top: 15px;">
+            <a th:href="@{/discountrule/downloadexcel}" style="color: blue;text-decoration: none;cursor: pointer;">下载名单模板</a>
+        </div>
+    </div>
+
+    <div class="layui-form-item model-form-footer">
+        <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
+        <button class="layui-btn" lay-filter="whitelist-form-submit" lay-submit id="submitbtn">保存</button>
+    </div>
+</div>
+
+<script>
+    layui.use(['layer', 'admin', 'form', 'laydate', 'upload'], function () {
+        var layer = layui.layer;
+        var admin = layui.admin;
+        var form = layui.form;
+        var laydate = layui.laydate;
+        var upload = layui.upload;
+
+
+        // 表单提交事件
+        form.verify({
+            "listname": function (e) {
+                if(""==e|| ""==$.trim(e)){
+                    return "白名单名称不能为空";
+                }
+/*
+                var msg = "";
+                $.ajax({
+                    type: "GET",
+                    url: '[[@{/whitelist/checklistname}]]',
+                    async: false, //同步提交。不设置则默认异步,异步的话,最后执行ajax
+                    data: {
+                        listname: e,
+                        ruleid: $("#form-whitelist-ruleid").val()
+                    },
+                    success: function (result) {
+                        if (result.code != 200) {
+                            msg = result.msg;
+                        }
+                    },
+                    error: function (error) {
+                        msg = "请求服务器校验账号失败";
+                    }
+                });
+                if (msg != "") {
+                    return msg;
+                }*/
+            }
+        });
+
+        form.on('submit(whitelist-form-submit)', function (data) {
+            debugger
+            var token = $("meta[name='_csrf_token']").attr("value");
+            var vdata = data.field;
+
+            var formData = new FormData();
+            formData.append("listname", vdata.listname);
+
+            var flag = false;
+            var files = $('#form-whitelist-records').prop('files');
+            for (var i = 0; i < files.length; i++) {
+                var filename = files[i].name;
+                var suffix = filename.substr(filename.lastIndexOf("."));
+                if ('.xls' != suffix && '.xlsx' != suffix) {
+                    layer.msg("请选择excel文件", {icon: 2, time: 1500});
+                    return;
+                }
+                formData.append('file', files[i]);
+                flag = true;
+            }
+            if (!flag) {
+                layer.msg("请选择名单", {icon: 2, time: 1500});
+                return;
+            }
+            layer.load(2);
+            $.ajax({
+                type: "POST",
+                url: '[[@{/whitelist/addwhitelist}]]',
+                dataType: 'json',
+                processData:false,
+                contentType: false,
+                data: formData,
+                headers: {
+                    'Accept': 'application/json',
+                    'X-CSRF-TOKEN': token,
+                },
+                success: function (result) {
+                    layer.closeAll('loading');
+                    if (result.code == 200) {
+                        layer.msg(result.msg, {icon: 1, time: 1500});
+                        admin.finishPopupCenter();
+                    } else if (result.code == 401) {
+                        layer.msg(result.msg, {icon: 2, time: 1500}, function () {
+                            location.replace('[[@{/login}]]');
+                        }, 1000);
+                        return;
+                    } else if(result.code == 599){
+                        //自定义错误
+                        layer.open({
+                            type: 0,
+                            title: "错误信息",
+                            icon: 2,
+                            area: ['600px', '400px'],
+                            content: result.msg
+                        });
+
+                    } else {
+                        layer.msg(result.msg, {icon: 2, time: 1500});
+                    }
+                },
+                error: function (err) {
+                    admin.errorBack(err);
+                }
+            });
+        });
+    });
+</script>
\ No newline at end of file