GUHTemplate 1.0.1
dotnet new install GUHTemplate@1.0.1
This package contains a .NET Template Package you can call from the shell/command line.
ZHFVWpfApp
概述
本项目作为通用上位机测试软件的初始模板项目,使用时直接拉取master分支作为新项目的基础框架,拉取后需要先去修改项目名称为你所需项目的名称(也可以直接使用它,但不建议)
拉取master直接使用,支持
通过dotnet new 获取公共NuGet方式,支持
框架说明
采用WPF UI 4.0.0版本Fluent风格框架(自编译和官方略有不一样),也可直接使用官方包
MVVM框架使用 CommunityToolkit.Mvvm 8.2.1版本
数据库采用SQlite ,对应System.Data.SQLite 2.0.2
ORM采用Dapper 2.1.66版本
日志采用NLOG 6.0.6
对象映射器:AutoMapper 9.0.0
支持菜单和用户权限
支持日志查看
架构图
graph TD
A[数据库版本选择] --> B[登录]
B --> C[自检]
C --> D[主页面]
D --> |权限| E[权限管理]
D --> |用户| F[用户管理]
D --> |日志| G[日志管理]
必须条件
拷贝config文件夹整体到执行文件同级目录下
SQL脚本
数据版本
--
-- SQLiteStudio v3.4.8 生成的文件,周三 11月 26 14:18:36 2025
--
-- 所用的文本编码:System
--
PRAGMA foreign_keys = off;
BEGIN TRANSACTION;
-- 表:ICDVersion
DROP TABLE IF EXISTS ICDVersion;
CREATE TABLE IF NOT EXISTS ICDVersion (
Id INTEGER NOT NULL,
IcdName TEXT NOT NULL,
Version TEXT NOT NULL
UNIQUE,
IcdPath TEXT NOT NULL
UNIQUE,
Excerpt TEXT,
Remark TEXT
);
INSERT INTO ICDVersion (
Id,
IcdName,
Version,
IcdPath,
Excerpt,
Remark
)
VALUES (
1,
'WPF.DB',
'1',
'D:\Project\ZHFVWpfApp\ZHFVWpf.UI\bin\x64\Debug\config\WPF.DB',
'引用的外部ICD文件',
''
);
COMMIT TRANSACTION;
PRAGMA foreign_keys = on;
用户脚本
--
-- SQLiteStudio v3.4.8 生成的文件,周三 11月 26 14:20:24 2025
--
-- 所用的文本编码:System
--
PRAGMA foreign_keys = off;
BEGIN TRANSACTION;
-- 表:Users
DROP TABLE IF EXISTS Users;
CREATE TABLE IF NOT EXISTS Users (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
UserName TEXT NOT NULL,
Password TEXT NOT NULL,
Role TEXT NOT NULL,
RoleId INTEGER NOT NULL
DEFAULT (1)
);
INSERT INTO Users (
Id,
UserName,
Password,
Role,
RoleId
)
VALUES (
1,
'admin',
'admin',
'Admin',
1
);
INSERT INTO Users (
Id,
UserName,
Password,
Role,
RoleId
)
VALUES (
2,
'user',
'user',
'User',
2
);
INSERT INTO Users (
Id,
UserName,
Password,
Role,
RoleId
)
VALUES (
161,
'test001',
'test',
'Guest',
0
);
COMMIT TRANSACTION;
PRAGMA foreign_keys = on;
角色
--
-- SQLiteStudio v3.4.8 生成的文件,周三 11月 26 14:21:29 2025
--
-- 所用的文本编码:System
--
PRAGMA foreign_keys = off;
BEGIN TRANSACTION;
-- 表:Roles
DROP TABLE IF EXISTS Roles;
CREATE TABLE IF NOT EXISTS Roles (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
RoleName TEXT NOT NULL,
Remark TEXT
);
INSERT INTO Roles (
Id,
RoleName,
Remark
)
VALUES (
1,
'Admin',
NULL
);
INSERT INTO Roles (
Id,
RoleName,
Remark
)
VALUES (
2,
'User',
NULL
);
INSERT INTO Roles (
Id,
RoleName,
Remark
)
VALUES (
3,
'Guest',
NULL
);
COMMIT TRANSACTION;
PRAGMA foreign_keys = on;
菜单脚本
--
-- SQLiteStudio v3.4.8 生成的文件,周三 11月 26 14:20:00 2025
--
-- 所用的文本编码:System
--
PRAGMA foreign_keys = off;
BEGIN TRANSACTION;
-- 表:MenuItems
DROP TABLE IF EXISTS MenuItems;
CREATE TABLE IF NOT EXISTS MenuItems (
Id INTEGER PRIMARY KEY ASC AUTOINCREMENT,
Name TEXT NOT NULL,
DisplayName TEXT NOT NULL,
OrderIndex INTEGER DEFAULT 0,
ParentId INTEGER,
PageType TEXT,
Icon TEXT,
IsDisplay INTEGER NOT NULL
DEFAULT (1)
);
INSERT INTO MenuItems (
Id,
Name,
DisplayName,
OrderIndex,
ParentId,
PageType,
Icon,
IsDisplay
)
VALUES (
1,
'MenuManager1',
'菜单管理1',
0,
NULL,
NULL,
'SymbolRegular.Mention24',
1
);
INSERT INTO MenuItems (
Id,
Name,
DisplayName,
OrderIndex,
ParentId,
PageType,
Icon,
IsDisplay
)
VALUES (
2,
'MenuManager2',
'菜单管理2',
1,
NULL,
NULL,
'SymbolRegular.Mention24',
1
);
INSERT INTO MenuItems (
Id,
Name,
DisplayName,
OrderIndex,
ParentId,
PageType,
Icon,
IsDisplay
)
VALUES (
3,
'MenuManager3',
'菜单管理3',
2,
NULL,
NULL,
'SymbolRegular.Mention24',
1
);
INSERT INTO MenuItems (
Id,
Name,
DisplayName,
OrderIndex,
ParentId,
PageType,
Icon,
IsDisplay
)
VALUES (
4,
'MenuManager4',
'菜单管理4',
3,
NULL,
NULL,
'SymbolRegular.Mention24',
1
);
INSERT INTO MenuItems (
Id,
Name,
DisplayName,
OrderIndex,
ParentId,
PageType,
Icon,
IsDisplay
)
VALUES (
5,
'MenuManager5',
'菜单管理5',
4,
NULL,
NULL,
'SymbolRegular.Mention24',
1
);
INSERT INTO MenuItems (
Id,
Name,
DisplayName,
OrderIndex,
ParentId,
PageType,
Icon,
IsDisplay
)
VALUES (
44,
'MMC1',
'菜单管理子项',
0,
1,
NULL,
'SymbolRegular.Mention24',
1
);
INSERT INTO MenuItems (
Id,
Name,
DisplayName,
OrderIndex,
ParentId,
PageType,
Icon,
IsDisplay
)
VALUES (
45,
'MMC2',
'菜单管理2子项',
0,
2,
'ZHFVWpf.UI.Views.Pages.TestAutoPage',
'SymbolRegular.Mention24',
1
);
INSERT INTO MenuItems (
Id,
Name,
DisplayName,
OrderIndex,
ParentId,
PageType,
Icon,
IsDisplay
)
VALUES (
46,
'MMC3',
'菜单管理3子项',
0,
3,
'ZHFVWpf.UI.Views.Pages.TestAutoPage',
'SymbolRegular.Mention24',
1
);
INSERT INTO MenuItems (
Id,
Name,
DisplayName,
OrderIndex,
ParentId,
PageType,
Icon,
IsDisplay
)
VALUES (
47,
'MMC4',
'菜单管理4子项',
0,
4,
'ZHFVWpf.UI.Views.Pages.TestAutoPage',
'SymbolRegular.Mention24',
1
);
INSERT INTO MenuItems (
Id,
Name,
DisplayName,
OrderIndex,
ParentId,
PageType,
Icon,
IsDisplay
)
VALUES (
48,
'MMC5',
'菜单管理5子项',
0,
5,
'ZHFVWpf.UI.Views.Pages.TestAutoPage',
'SymbolRegular.Mention24',
1
);
INSERT INTO MenuItems (
Id,
Name,
DisplayName,
OrderIndex,
ParentId,
PageType,
Icon,
IsDisplay
)
VALUES (
49,
'MMC1',
'菜单管理1子项',
0,
44,
'ZHFVWpf.UI.Views.Pages.TestAutoPage',
'SymbolRegular.Mention24',
1
);
INSERT INTO MenuItems (
Id,
Name,
DisplayName,
OrderIndex,
ParentId,
PageType,
Icon,
IsDisplay
)
VALUES (
50,
'AuthorityManagement
',
'权限管理',
5,
NULL,
NULL,
'SymbolRegular.BookContacts24',
1
);
INSERT INTO MenuItems (
Id,
Name,
DisplayName,
OrderIndex,
ParentId,
PageType,
Icon,
IsDisplay
)
VALUES (
51,
'UserManagement',
'用户管理',
6,
NULL,
NULL,
'SymbolRegular.Accessibility24',
1
);
INSERT INTO MenuItems (
Id,
Name,
DisplayName,
OrderIndex,
ParentId,
PageType,
Icon,
IsDisplay
)
VALUES (
52,
'Authority',
'权限列表',
0,
50,
'ZHFVWpf.UI.Views.Pages.RoleManagementPage',
'SymbolRegular.BookContacts24',
1
);
INSERT INTO MenuItems (
Id,
Name,
DisplayName,
OrderIndex,
ParentId,
PageType,
Icon,
IsDisplay
)
VALUES (
53,
'User',
'用户列表',
0,
51,
'ZHFVWpf.UI.Views.Pages.UserManagementPage',
'SymbolRegular.Accessibility24',
1
);
INSERT INTO MenuItems (
Id,
Name,
DisplayName,
OrderIndex,
ParentId,
PageType,
Icon,
IsDisplay
)
VALUES (
54,
'LogManagment',
'日志管理',
7,
NULL,
NULL,
'SymbolRegular.TextT24',
1
);
INSERT INTO MenuItems (
Id,
Name,
DisplayName,
OrderIndex,
ParentId,
PageType,
Icon,
IsDisplay
)
VALUES (
55,
'Logger',
'日志列表',
0,
54,
'ZHFVWpf.UI.Views.Pages.LoggerPage',
'SymbolRegular.TextT24',
1
);
COMMIT TRANSACTION;
PRAGMA foreign_keys = on;
角色菜单
--
-- SQLiteStudio v3.4.8 生成的文件,周三 11月 26 14:21:59 2025
--
-- 所用的文本编码:System
--
PRAGMA foreign_keys = off;
BEGIN TRANSACTION;
-- 表:RoleMenu
DROP TABLE IF EXISTS RoleMenu;
CREATE TABLE IF NOT EXISTS RoleMenu (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
Role TEXT NOT NULL,
MenuId INTEGER NOT NULL,
RoleId INTEGER
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
1,
'Admin',
1,
1
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
2,
'Admin',
2,
1
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
3,
'Admin',
3,
1
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
4,
'Admin',
4,
1
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
5,
'Admin',
5,
1
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
6,
'Admin',
45,
1
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
7,
'Admin',
46,
1
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
8,
'Admin',
47,
1
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
9,
'Admin',
48,
1
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
10,
'Admin',
44,
1
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
11,
'Admin',
49,
1
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
12,
'Admin',
50,
1
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
13,
'Admin',
51,
1
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
14,
'Admin',
52,
1
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
15,
'Admin',
53,
1
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
16,
'Admin',
54,
1
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
17,
'Admin',
55,
1
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
894,
'User',
1,
2
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
895,
'User',
44,
2
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
896,
'User',
49,
2
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
897,
'User',
2,
2
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
898,
'User',
45,
2
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
899,
'User',
3,
2
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
900,
'User',
46,
2
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
901,
'User',
4,
2
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
902,
'User',
47,
2
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
903,
'User',
5,
2
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
904,
'User',
48,
2
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
908,
'Guest',
1,
3
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
909,
'Guest',
44,
3
);
INSERT INTO RoleMenu (
Id,
Role,
MenuId,
RoleId
)
VALUES (
910,
'Guest',
49,
3
);
COMMIT TRANSACTION;
PRAGMA foreign_keys = on;
代码贡献
-
.NETFramework 4.7.2
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.