新增MES模块,包含供应商、客户、车辆和地磅数据记录管理功能,支持免密接口和数据同步。更新相关控制器、实体、服务和数据库配置,优化权限管理和数据字典支持,确保系统的灵活性和可扩展性。
This commit is contained in:
197
yy-admin-master/YY.Admin/menu_fix.csx
Normal file
197
yy-admin-master/YY.Admin/menu_fix.csx
Normal file
@@ -0,0 +1,197 @@
|
||||
#r "nuget: Microsoft.Data.Sqlite, 8.0.0"
|
||||
using Microsoft.Data.Sqlite;
|
||||
|
||||
var dbPath = @"D:/XSL-PROJECT/QH-MES/qhmes/yy-admin-master/YY.Admin/Admin.NET.db";
|
||||
using var conn = new SqliteConnection($"Data Source={dbPath}");
|
||||
conn.Open();
|
||||
using var tx = conn.BeginTransaction();
|
||||
|
||||
long baseMenuId = 1300150000101;
|
||||
long vehicleMenuId = 1300150010101;
|
||||
long customerMenuId = 1300150010201;
|
||||
|
||||
var ensureBase = conn.CreateCommand();
|
||||
ensureBase.Transaction = tx;
|
||||
ensureBase.CommandText = @"
|
||||
INSERT INTO sys_menu (id, pid, title, path, name, component, icon, type, status, order_no, create_time)
|
||||
SELECT $id, 0, '基础资料', '/base', 'base', 'Layout', '', 0, 0, 9000, datetime('now')
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE id = $id OR title = '基础资料');
|
||||
";
|
||||
ensureBase.Parameters.AddWithValue("$id", baseMenuId);
|
||||
ensureBase.ExecuteNonQuery();
|
||||
|
||||
var locateBase = conn.CreateCommand();
|
||||
locateBase.Transaction = tx;
|
||||
locateBase.CommandText = "SELECT id FROM sys_menu WHERE title='基础资料' ORDER BY id LIMIT 1;";
|
||||
var baseIdObj = locateBase.ExecuteScalar();
|
||||
if (baseIdObj == null || baseIdObj == DBNull.Value) throw new Exception("未找到或创建‘基础资料’菜单");
|
||||
baseMenuId = Convert.ToInt64(baseIdObj);
|
||||
|
||||
var ensureVehicle = conn.CreateCommand();
|
||||
ensureVehicle.Transaction = tx;
|
||||
ensureVehicle.CommandText = @"
|
||||
INSERT INTO sys_menu (id, pid, title, path, name, component, icon, type, status, order_no, create_time)
|
||||
SELECT $id, $pid, '车辆管理', '/xslmes/mesXslVehicle', 'mesXslVehicle', 'VehicleListView', '', 1, 0, 100, datetime('now')
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE id = $id OR title = '车辆管理' OR name='mesXslVehicle');
|
||||
";
|
||||
ensureVehicle.Parameters.AddWithValue("$id", vehicleMenuId);
|
||||
ensureVehicle.Parameters.AddWithValue("$pid", baseMenuId);
|
||||
ensureVehicle.ExecuteNonQuery();
|
||||
|
||||
var ensureCustomer = conn.CreateCommand();
|
||||
ensureCustomer.Transaction = tx;
|
||||
ensureCustomer.CommandText = @"
|
||||
INSERT INTO sys_menu (id, pid, title, path, name, component, icon, type, status, order_no, create_time)
|
||||
SELECT $id, $pid, '客户管理', '/xslmes/mesXslCustomer', 'mesXslCustomer', 'CustomerListView', '', 1, 0, 101, datetime('now')
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE id = $id OR title = '客户管理' OR name='mesXslCustomer');
|
||||
";
|
||||
ensureCustomer.Parameters.AddWithValue("$id", customerMenuId);
|
||||
ensureCustomer.Parameters.AddWithValue("$pid", baseMenuId);
|
||||
ensureCustomer.ExecuteNonQuery();
|
||||
|
||||
var moveVehicle = conn.CreateCommand();
|
||||
moveVehicle.Transaction = tx;
|
||||
moveVehicle.CommandText = @"
|
||||
UPDATE sys_menu
|
||||
SET pid = $pid, status = 0
|
||||
WHERE title='车辆管理' OR name='mesXslVehicle' OR path='/xslmes/mesXslVehicle' OR path='/xslmes/vehicle' OR component='VehicleListView';
|
||||
";
|
||||
moveVehicle.Parameters.AddWithValue("$pid", baseMenuId);
|
||||
moveVehicle.ExecuteNonQuery();
|
||||
|
||||
var moveCustomer = conn.CreateCommand();
|
||||
moveCustomer.Transaction = tx;
|
||||
moveCustomer.CommandText = @"
|
||||
UPDATE sys_menu
|
||||
SET pid = $pid, status = 0
|
||||
WHERE title='客户管理' OR name='mesXslCustomer' OR path='/xslmes/mesXslCustomer' OR component='CustomerListView';
|
||||
";
|
||||
moveCustomer.Parameters.AddWithValue("$pid", baseMenuId);
|
||||
moveCustomer.ExecuteNonQuery();
|
||||
|
||||
var grantTenant = conn.CreateCommand();
|
||||
grantTenant.Transaction = tx;
|
||||
grantTenant.CommandText = @"
|
||||
INSERT INTO sys_tenant_menu (tenant_id, menu_id)
|
||||
SELECT 1300000000001, m.id
|
||||
FROM sys_menu m
|
||||
WHERE m.id IN ($baseId, (SELECT id FROM sys_menu WHERE title='车辆管理' ORDER BY id LIMIT 1), (SELECT id FROM sys_menu WHERE title='客户管理' ORDER BY id LIMIT 1))
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_tenant_menu t
|
||||
WHERE t.tenant_id = 1300000000001 AND t.menu_id = m.id
|
||||
);
|
||||
";
|
||||
grantTenant.Parameters.AddWithValue("$baseId", baseMenuId);
|
||||
grantTenant.ExecuteNonQuery();
|
||||
|
||||
// 系统管理下「登录设置」菜单(桌面端会话配置)
|
||||
long systemDirId = 1300200000101;
|
||||
long loginSettingsMenuId = 1300200013001;
|
||||
var ensureLoginSettings = conn.CreateCommand();
|
||||
ensureLoginSettings.Transaction = tx;
|
||||
ensureLoginSettings.CommandText = @"
|
||||
INSERT INTO sys_menu (id, pid, title, path, name, component, icon, type, status, order_no, create_time)
|
||||
SELECT $id, $pid, '登录设置', 'LoginSettingsView', 'loginSettings', 'LoginSettingsView', '', 1, 0, 107, datetime('now')
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE id = $id OR name = 'loginSettings');
|
||||
";
|
||||
ensureLoginSettings.Parameters.AddWithValue("$id", loginSettingsMenuId);
|
||||
ensureLoginSettings.Parameters.AddWithValue("$pid", systemDirId);
|
||||
ensureLoginSettings.ExecuteNonQuery();
|
||||
|
||||
var normalizeLoginSettings = conn.CreateCommand();
|
||||
normalizeLoginSettings.Transaction = tx;
|
||||
normalizeLoginSettings.CommandText = @"
|
||||
UPDATE sys_menu
|
||||
SET pid = $pid,
|
||||
title = '登录设置',
|
||||
path = 'LoginSettingsView',
|
||||
name = 'loginSettings',
|
||||
component = 'LoginSettingsView',
|
||||
type = 1,
|
||||
status = 0,
|
||||
order_no = 107
|
||||
WHERE id = $id
|
||||
OR name = 'loginSettings'
|
||||
OR title IN ('登录设置','登陆设置');
|
||||
";
|
||||
normalizeLoginSettings.Parameters.AddWithValue("$id", loginSettingsMenuId);
|
||||
normalizeLoginSettings.Parameters.AddWithValue("$pid", systemDirId);
|
||||
normalizeLoginSettings.ExecuteNonQuery();
|
||||
|
||||
var grantLoginSettingsTenant = conn.CreateCommand();
|
||||
grantLoginSettingsTenant.Transaction = tx;
|
||||
grantLoginSettingsTenant.CommandText = @"
|
||||
INSERT INTO sys_tenant_menu (tenant_id, menu_id)
|
||||
SELECT 1300000000001, $menuId
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_tenant_menu t WHERE t.tenant_id = 1300000000001 AND t.menu_id = $menuId
|
||||
);
|
||||
";
|
||||
grantLoginSettingsTenant.Parameters.AddWithValue("$menuId", loginSettingsMenuId);
|
||||
grantLoginSettingsTenant.ExecuteNonQuery();
|
||||
|
||||
// 补充「登录永不过期」配置项
|
||||
var ensureNeverExpireConfig = conn.CreateCommand();
|
||||
ensureNeverExpireConfig.Transaction = tx;
|
||||
ensureNeverExpireConfig.CommandText = @"
|
||||
INSERT INTO sys_config (id, name, code, value, sys_flag, remark, order_no, group_code, create_time)
|
||||
SELECT 1300000000194, '登录永不过期', 'sys_token_never_expire', 'False', 'Y', '桌面端:开启后不触发登录过期提示与自动踢回登录页', 119, 'Default', datetime('now')
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_config WHERE code = 'sys_token_never_expire');
|
||||
";
|
||||
ensureNeverExpireConfig.ExecuteNonQuery();
|
||||
|
||||
// 给 admin 角色(通常为最小id角色)补 role_menu
|
||||
var adminRoleCmd = conn.CreateCommand();
|
||||
adminRoleCmd.Transaction = tx;
|
||||
adminRoleCmd.CommandText = "SELECT id FROM sys_role ORDER BY id LIMIT 1;";
|
||||
var roleObj = adminRoleCmd.ExecuteScalar();
|
||||
if (roleObj != null && roleObj != DBNull.Value)
|
||||
{
|
||||
var adminRoleId = Convert.ToInt64(roleObj);
|
||||
|
||||
var grantRole = conn.CreateCommand();
|
||||
grantRole.Transaction = tx;
|
||||
grantRole.CommandText = @"
|
||||
INSERT INTO sys_role_menu (id, role_id, menu_id)
|
||||
SELECT (SELECT IFNULL(MAX(id),0)+1 FROM sys_role_menu), $roleId, m.id
|
||||
FROM sys_menu m
|
||||
WHERE m.id IN ($baseId, (SELECT id FROM sys_menu WHERE title='车辆管理' ORDER BY id LIMIT 1), (SELECT id FROM sys_menu WHERE title='客户管理' ORDER BY id LIMIT 1))
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_role_menu r
|
||||
WHERE r.role_id = $roleId AND r.menu_id = m.id
|
||||
);
|
||||
";
|
||||
grantRole.Parameters.AddWithValue("$roleId", adminRoleId);
|
||||
grantRole.Parameters.AddWithValue("$baseId", baseMenuId);
|
||||
grantRole.ExecuteNonQuery();
|
||||
|
||||
var grantLoginSettingsRole = conn.CreateCommand();
|
||||
grantLoginSettingsRole.Transaction = tx;
|
||||
grantLoginSettingsRole.CommandText = @"
|
||||
INSERT INTO sys_role_menu (id, role_id, menu_id)
|
||||
SELECT (SELECT IFNULL(MAX(id),0)+1 FROM sys_role_menu), $roleId, $menuId
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_role_menu r WHERE r.role_id = $roleId AND r.menu_id = $menuId
|
||||
);
|
||||
";
|
||||
grantLoginSettingsRole.Parameters.AddWithValue("$roleId", adminRoleId);
|
||||
grantLoginSettingsRole.Parameters.AddWithValue("$menuId", loginSettingsMenuId);
|
||||
grantLoginSettingsRole.ExecuteNonQuery();
|
||||
}
|
||||
|
||||
var verify = conn.CreateCommand();
|
||||
verify.Transaction = tx;
|
||||
verify.CommandText = @"
|
||||
SELECT id, pid, title, path, name, component, type, status, order_no
|
||||
FROM sys_menu
|
||||
WHERE title IN ('基础资料','车辆管理','客户管理')
|
||||
ORDER BY title, id;
|
||||
";
|
||||
using var reader = verify.ExecuteReader();
|
||||
while (reader.Read())
|
||||
{
|
||||
Console.WriteLine($"menu: id={reader.GetInt64(0)}, pid={reader.GetInt64(1)}, title={reader.GetString(2)}, path={reader.GetString(3)}, name={reader.GetString(4)}, component={reader.GetString(5)}, type={reader.GetInt32(6)}, status={reader.GetInt32(7)}, order={reader.GetInt32(8)}");
|
||||
}
|
||||
|
||||
tx.Commit();
|
||||
Console.WriteLine("DB menu update done.");
|
||||
Reference in New Issue
Block a user