Quellcode durchsuchen

😎代码整理

zuohuaijun vor 1 Jahr
Ursprung
Commit
551ce314f2

+ 0 - 1
.gitignore

@@ -41,4 +41,3 @@ node_modules/
 .idea
 .DS_Store
 /Admin.NET/Admin.NET.Web.Entry/Admin.NET.db-journal
-mynote/

+ 3 - 3
Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj

@@ -17,7 +17,7 @@
     <PackageReference Include="AngleSharp" Version="1.1.2" />
     <PackageReference Include="AspectCore.Extensions.Reflection" Version="2.4.0" />
     <PackageReference Include="AspNetCoreRateLimit" Version="5.0.0" />
-    <PackageReference Include="Elastic.Clients.Elasticsearch" Version="8.14.0" />
+    <PackageReference Include="Elastic.Clients.Elasticsearch" Version="8.14.2" />
     <PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.9.4" />
     <PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.4" />
     <PackageReference Include="Furion.Pure" Version="4.9.4" />
@@ -33,11 +33,11 @@
     <PackageReference Include="RabbitMQ.Client" Version="6.8.1" />
     <PackageReference Include="SixLabors.ImageSharp.Web" Version="3.1.2" />
     <PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="3.3.0" />
-    <PackageReference Include="SKIT.FlurlHttpClient.Wechat.TenpayV3" Version="3.4.0" />
+    <PackageReference Include="SKIT.FlurlHttpClient.Wechat.TenpayV3" Version="3.5.0" />
     <PackageReference Include="SqlSugarCore" Version="5.1.4.158" />
     <PackageReference Include="SSH.NET" Version="2024.0.0" />
     <PackageReference Include="System.Linq.Dynamic.Core" Version="1.4.0" />
-    <PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1023" />
+    <PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1026" />
     <PackageReference Include="UAParser" Version="3.1.47" />
     <PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
   </ItemGroup>

+ 2 - 2
Admin.NET/Admin.NET.Core/SeedData/SysMenuSeedData.cs

@@ -191,8 +191,8 @@ public class SysMenuSeedData : ISqlSugarEntitySeedData<SysMenu>
             new SysMenu{ Id=1310000000711, Pid=1310000000701, Title="后台教程", Path="/doc/furion", Name="sysFurion", Component="layout/routerView/link", IsIframe=false, IsKeepAlive=false, OutLink="https://furion.baiqian.ltd/", Icon="ele-Promotion", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
             new SysMenu{ Id=1310000000712, Pid=1310000000701, Title="前端教程", Path="/doc/element", Name="sysElement", Component="layout/routerView/link", IsIframe=false, IsKeepAlive=false, OutLink="https://element-plus.gitee.io/zh-CN/", Icon="ele-Position", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=110 },
             new SysMenu{ Id=1310000000713, Pid=1310000000701, Title="SqlSugar", Path="/doc/SqlSugar", Name="sysSqlSugar", Component="layout/routerView/link", IsIframe=false, IsKeepAlive=false, OutLink="https://www.donet5.com/Home/Doc", Icon="ele-Coin", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=120 },
-			
-			new SysMenu{ Id=1310000000801, Pid=0, Title="关于项目", Path="/about", Name="about", Component="/about/index", Icon="ele-Warning", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2023-03-12 00:00:00"), OrderNo=18000 },
+
+            new SysMenu{ Id=1310000000801, Pid=0, Title="关于项目", Path="/about", Name="about", Component="/about/index", Icon="ele-InfoFilled", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2023-03-12 00:00:00"), OrderNo=15000 },
         };
     }
 }

+ 0 - 23
Admin.NET/Admin.NET.Core/Service/Config/Dto/ConfigBatchInput.cs

@@ -1,23 +0,0 @@
-// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
-//
-// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
-//
-// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
-
-namespace Admin.NET.Core.Service;
-
-/// <summary>
-/// 配置批量更新参数
-/// </summary>
-public class ConfigBatchInput
-{
-    /// <summary>
-    /// 编码
-    /// </summary>
-    public string Code { get; set; }
-
-    /// <summary>
-    /// 属性值
-    /// </summary>
-    public string Value { get; set; }
-}

+ 16 - 0
Admin.NET/Admin.NET.Core/Service/Config/Dto/ConfigInput.cs

@@ -38,4 +38,20 @@ public class UpdateConfigInput : AddConfigInput
 
 public class DeleteConfigInput : BaseIdInput
 {
+}
+
+/// <summary>
+/// 批量配置参数输入
+/// </summary>
+public class BatchConfigInput
+{
+    /// <summary>
+    /// 编码
+    /// </summary>
+    public string Code { get; set; }
+
+    /// <summary>
+    /// 属性值
+    /// </summary>
+    public string Value { get; set; }
 }

+ 5 - 5
Admin.NET/Admin.NET.Core/Service/Config/SysConfigService.cs

@@ -215,16 +215,16 @@ public class SysConfigService : IDynamicApiController, ITransient
     /// <summary>
     /// 批量更新参数配置值
     /// </summary>
-    /// <param name="configBatchInputs"></param>    
+    /// <param name="input"></param>
     /// <returns></returns>
     [ApiDescriptionSettings(Name = "BatchUpdate"), HttpPost]
     [DisplayName("批量更新参数配置值")]
-    public async Task BatchUpdateConfig(List<ConfigBatchInput> configBatchInputs)
+    public async Task BatchUpdateConfig(List<BatchConfigInput> input)
     {
-        foreach (var input in configBatchInputs)
+        foreach (var Config in input)
         {
-            await _sysConfigRep.AsUpdateable().SetColumns(u => u.Value == input.Value).Where(u => u.Code == input.Code).ExecuteCommandAsync();
-            _sysCacheService.Remove($"{CacheConst.KeyConfig}{input.Code}");
+            await _sysConfigRep.AsUpdateable().SetColumns(u => u.Value == Config.Value).Where(u => u.Code == Config.Code).ExecuteCommandAsync();
+            _sysCacheService.Remove($"{CacheConst.KeyConfig}{Config.Code}");
         }
     }
 

+ 2 - 2
Admin.NET/Admin.NET.Core/Service/Message/SysSmsService.cs

@@ -99,10 +99,10 @@ public class SysSmsService : IDynamicApiController, ITransient
     {
         if (!phoneNumber.TryValidate(ValidationTypes.PhoneNumber).IsValid)
             throw Oops.Oh("请正确填写手机号码");
+
         if (string.IsNullOrWhiteSpace(templateParam.ToString()))
-        {
             throw Oops.Oh("短信内容不能为空");
-        }
+
         var client = CreateAliyunClient();
         var sendSmsRequest = new SendSmsRequest
         {

+ 1 - 1
Admin.NET/Plugins/Admin.NET.Plugin.ReZero/Admin.NET.Plugin.ReZero.csproj

@@ -24,7 +24,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Rezero.Api" Version="1.6.5" />
+    <PackageReference Include="Rezero.Api" Version="1.6.18" />
   </ItemGroup>  
 
   <ItemGroup>

+ 0 - 0
Web/.prettierrc.js → Web/.prettierrc.cjs


+ 9 - 9
Web/package.json

@@ -2,7 +2,7 @@
 	"name": "admin.net",
 	"type": "module",
 	"version": "2.4.33",
-	"lastBuildTime":"2024.6.14",
+	"lastBuildTime": "2024.6.16",
 	"description": "Admin.NET 站在巨人肩膀上的 .NET 通用权限开发框架",
 	"author": "zuohuaijun",
 	"license": "MIT",
@@ -51,14 +51,14 @@
 		"splitpanes": "^3.1.5",
 		"vcrontab-3": "^3.3.22",
 		"vform3-builds": "^3.0.10",
-		"vue": "^3.4.27",
+		"vue": "^3.4.29",
 		"vue-clipboard3": "^2.0.0",
 		"vue-demi": "^0.14.8",
 		"vue-grid-layout": "3.0.0-beta1",
 		"vue-i18n": "^9.13.1",
 		"vue-json-pretty": "^2.4.0",
 		"vue-plugin-hiprint": "0.0.57-beta20",
-		"vue-router": "^4.3.2",
+		"vue-router": "^4.3.3",
 		"vue-signature-pad": "^3.0.2",
 		"vue3-tree-org": "^4.2.2",
 		"vuedraggable": "4.1.0",
@@ -70,13 +70,13 @@
 		"@types/node": "^20.14.2",
 		"@types/nprogress": "^0.2.3",
 		"@types/sortablejs": "^1.15.8",
-		"@typescript-eslint/eslint-plugin": "^7.12.0",
-		"@typescript-eslint/parser": "^7.12.0",
+		"@typescript-eslint/eslint-plugin": "^7.13.0",
+		"@typescript-eslint/parser": "^7.13.0",
 		"@vitejs/plugin-vue": "^5.0.5",
 		"@vitejs/plugin-vue-jsx": "^4.0.0",
-		"@vue/compiler-sfc": "^3.4.27",
-		"code-inspector-plugin": "^0.14.1",
-		"eslint": "^9.4.0",
+		"@vue/compiler-sfc": "^3.4.29",
+		"code-inspector-plugin": "^0.14.2",
+		"eslint": "^9.5.0",
 		"eslint-plugin-vue": "^9.26.0",
 		"less": "^4.2.0",
 		"prettier": "^3.3.2",
@@ -84,7 +84,7 @@
 		"sass": "^1.77.5",
 		"terser": "^5.31.1",
 		"typescript": "^5.4.5",
-		"vite": "^5.2.13",
+		"vite": "^5.3.1",
 		"vite-plugin-cdn-import": "^1.0.1",
 		"vite-plugin-compression2": "^1.1.1",
 		"vite-plugin-vue-setup-extend": "^0.4.0",

+ 102 - 94
Web/src/views/about/index.vue

@@ -1,111 +1,119 @@
 <template>
-  <div class="el-card box">
-    
-    <div class="card mb10">
-      <h4 class="title"><el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Postcard /> </el-icon>简介(About)</h4>
-      <span class="text">
-           基于 .NET6 (Furion/SqlSugar) 实现的通用权限开发框架,前端采用 Vue3+Element-plus+Vite5,整合众多优秀技术和框架,模块插件式开发。集成多租户、缓存、数据校验、鉴权、事件总线、动态API、通讯、远程请求、任务调度、打印等众多黑科技。代码结构简单清晰,注释详尽,易于上手与二次开发,即便是复杂业务逻辑也能迅速实现,真正实现“开箱即用”。
-      </span>
-    </div>
-    <div class="card mb10">
-      <h4 class="title"><el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Warning /> </el-icon>项目信息(Information)</h4>
-      <el-descriptions :column="2" border>
-        <el-descriptions-item label="名称及作者">
-          <el-tag>{{ name }}</el-tag> <el-tag type="info">{{ author }}</el-tag>
-        </el-descriptions-item>
-        
-        <el-descriptions-item label="框架描述">
-          <el-tag>{{ description }}</el-tag>
-        </el-descriptions-item>
+	<div class="el-card box">
+		<div class="card mb10">
+			<h4 class="title">
+				<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Postcard /> </el-icon>简介(About)
+			</h4>
+			<span class="text">
+				基于 .NET6 (Furion/SqlSugar) 实现的通用权限开发框架,前端采用
+				Vue3+Element-plus+Vite5,整合众多优秀技术和框架,模块插件式开发。集成多租户、缓存、数据校验、鉴权、事件总线、动态API、通讯、远程请求、任务调度、打印等众多黑科技。代码结构简单清晰,注释详尽,易于上手与二次开发,即便是复杂业务逻辑也能迅速实现,真正实现“开箱即用”。
+			</span>
+		</div>
+		<div class="card mb10">
+			<h4 class="title">
+				<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Warning /> </el-icon>项目信息(Information)
+			</h4>
+			<el-descriptions :column="2" border>
+				<el-descriptions-item label="名称及作者">
+					<el-tag>{{ name }}</el-tag> <el-tag type="info">{{ author }}</el-tag>
+				</el-descriptions-item>
 
-        <el-descriptions-item label="版本号">
-          <el-tag>{{ version }}</el-tag> <el-tag type="success">{{ license }}</el-tag>
-        </el-descriptions-item>
+				<el-descriptions-item label="框架描述">
+					<el-tag>{{ description }}</el-tag>
+				</el-descriptions-item>
 
-        <el-descriptions-item label="发布时间">
-          <el-tag>{{ lastBuildTime }}</el-tag>
-        </el-descriptions-item>
+				<el-descriptions-item label="版本号">
+					<el-tag>{{ version }}</el-tag> <el-tag type="success">{{ license }}</el-tag>
+				</el-descriptions-item>
 
-        <el-descriptions-item label="Gitee">
-          <el-link type="primary" href="https://gitee.com/zuohuaijun/Admin.NET" target="_blank"> Gitee </el-link>
-        </el-descriptions-item>
-        <el-descriptions-item label="Github">
-          <el-link type="primary" href="https://github.com/zuohuaijun/Admin.NET.git" target="_blank"> Github </el-link>
-        </el-descriptions-item>
+				<el-descriptions-item label="发布时间">
+					<el-tag>{{ lastBuildTime }}</el-tag>
+				</el-descriptions-item>
 
-        <el-descriptions-item label="文档地址">
-          <el-link type="primary" href="http://101.43.53.74:5050/" target="_blank"> 文档地址 </el-link>
-        </el-descriptions-item>
-        <el-descriptions-item label="预览地址">
-          <el-link type="primary" href="http://101.43.53.74:5005/dist/index.html" target="_blank"> 预览地址 </el-link>
-        </el-descriptions-item>
+				<el-descriptions-item label="Gitee">
+					<el-link type="primary" href="https://gitee.com/zuohuaijun/Admin.NET" target="_blank"> Gitee </el-link>
+				</el-descriptions-item>
+				<el-descriptions-item label="Github">
+					<el-link type="primary" href="https://github.com/zuohuaijun/Admin.NET.git" target="_blank"> Github </el-link>
+				</el-descriptions-item>
 
-      </el-descriptions>
-    </div>
-    <div class="card mb10">
-      <h4 class="title"><el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-SetUp /> </el-icon>生产环境依赖(Dependencies)</h4>
-      <el-descriptions :column="3" border>
-        <el-descriptions-item v-for="(value, key) in dependencies" :key="key" width="400px" :label="key">
-          <el-tag type="success" effect="plain">
-            {{ value }}
-          </el-tag>
-        </el-descriptions-item>
-      </el-descriptions>
-    </div>
-    <div class="card">
-      <h4 class="title"><el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-SetUp /> </el-icon>开发环境依赖(devDependencies)</h4>
-      <el-descriptions :column="3" border>
-        <el-descriptions-item v-for="(value, key) in devDependencies" :key="key" width="400px" :label="key">
-          <el-tag type="danger" effect="plain">
-            {{ value }}
-          </el-tag>
-        </el-descriptions-item>
-      </el-descriptions>
-    </div>
-    <div class="card">
-      <h4 class="title"><el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-SetUp /> </el-icon>关键词(Keywords)</h4>
-      <el-descriptions :column="4" border>
-        <el-descriptions-item v-for="(value, key) in keywords" :key="value" width="400px" :label="key+1">
-          <el-text type="primary">
-            {{ value }}
-          </el-text>
-        </el-descriptions-item>
-      </el-descriptions>
-    </div>
-
-  </div>
+				<el-descriptions-item label="文档地址">
+					<el-link type="primary" href="http://101.43.53.74:5050/" target="_blank"> 文档地址 </el-link>
+				</el-descriptions-item>
+				<el-descriptions-item label="预览地址">
+					<el-link type="primary" href="http://101.43.53.74:5005/dist/index.html" target="_blank"> 预览地址 </el-link>
+				</el-descriptions-item>
+			</el-descriptions>
+		</div>
+		<div class="card mb10">
+			<h4 class="title">
+				<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-SetUp /> </el-icon>生产环境依赖(Dependencies)
+			</h4>
+			<el-descriptions :column="3" border>
+				<el-descriptions-item v-for="(value, key) in dependencies" :key="key" width="400px" :label="key">
+					<el-tag type="success" effect="plain">
+						{{ value }}
+					</el-tag>
+				</el-descriptions-item>
+			</el-descriptions>
+		</div>
+		<div class="card">
+			<h4 class="title">
+				<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-SetUp /> </el-icon>开发环境依赖(devDependencies)
+			</h4>
+			<el-descriptions :column="3" border>
+				<el-descriptions-item v-for="(value, key) in devDependencies" :key="key" width="400px" :label="key">
+					<el-tag type="danger" effect="plain">
+						{{ value }}
+					</el-tag>
+				</el-descriptions-item>
+			</el-descriptions>
+		</div>
+		<div class="card">
+			<h4 class="title">
+				<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-SetUp /> </el-icon>关键词(Keywords)
+			</h4>
+			<el-descriptions :column="4" border>
+				<el-descriptions-item v-for="(value, key) in keywords" :key="value" width="400px" :label="key + 1">
+					<el-text type="primary">
+						{{ value }}
+					</el-text>
+				</el-descriptions-item>
+			</el-descriptions>
+		</div>
+	</div>
 </template>
 
 <script setup lang="ts" name="about">
 import PackageJson from '/package.json';
 
-const { dependencies, devDependencies,keywords, version,lastBuildTime,author,description,license,name } = PackageJson;
+const { dependencies, devDependencies, keywords, version, lastBuildTime, author, description, license, name } = PackageJson;
 </script>
 
 <style lang="scss" scoped>
-  .box{
-    overflow-y: auto;
-  }
-  el-descriptions-item{
-    width: 50%;
-  }
+.box {
+	overflow-y: auto;
+}
+el-descriptions-item {
+	width: 50%;
+}
 .card {
-  padding: 10px;
-  .title {
-    margin: 5px 5px 10px;
-    font-size: 17px;
-    font-weight: bold;
-    color: var(--el-text-color-primary);
-  }
-  .text {
-    text-indent:50px;
-    font-size: 15px;
-    line-height: 30px;
-    padding: 10px 20px;
-    color: var(--el-text-color-regular);
-    .el-link {
-      font-size: 15px;
-    }
-  }
+	padding: 10px;
+	.title {
+		margin: 5px 5px 10px;
+		font-size: 17px;
+		font-weight: bold;
+		color: var(--el-text-color-primary);
+	}
+	.text {
+		text-indent: 50px;
+		font-size: 15px;
+		line-height: 30px;
+		padding: 10px 20px;
+		color: var(--el-text-color-regular);
+		.el-link {
+			font-size: 15px;
+		}
+	}
 }
 </style>

+ 7 - 7
Web/src/views/system/database/component/addTable.vue

@@ -300,13 +300,13 @@ function handleColDown(record: EditRecordRow, index: number) {
 }
 
 function ChangeExForArray(index1: number, index2: number, array: Array<EditRecordRow>) {
-	let maxIndex = state.tableData.length - 1;//最大索引
-    if (index2 > maxIndex) {
-        index2 = 0;
-    };
-    if (index2 < 0) {
-        index2 = maxIndex;
-    }
+	let maxIndex = state.tableData.length - 1; //最大索引
+	if (index2 > maxIndex) {
+		index2 = 0;
+	}
+	if (index2 < 0) {
+		index2 = maxIndex;
+	}
 	let temp = array[index1];
 	array[index1] = array[index2];
 	array[index2] = temp;

+ 2 - 1
Web/src/views/system/org/index.vue

@@ -113,7 +113,8 @@ const handleQuery = async (updateTree: boolean = false) => {
 	}
 
 	// 若无选择节点并且查询条件为空时,更新编辑页面机构列表树
-	if (state.queryParams.id == 0 && state.queryParams.name == undefined && state.queryParams.code == undefined && state.queryParams.type == undefined && updateTree == false) state.orgTreeData = state.orgData;
+	if (state.queryParams.id == 0 && state.queryParams.name == undefined && state.queryParams.code == undefined && state.queryParams.type == undefined && updateTree == false)
+		state.orgTreeData = state.orgData;
 };
 
 // 重置操作

+ 1 - 1
Web/vite.config.ts

@@ -31,7 +31,7 @@ const viteConfig = defineConfig((mode: ConfigEnv) => {
 			vue(),
 			vueJsx(),
 			webUpdateNotice({
-                versionType: 'build_timestamp',
+				versionType: 'build_timestamp',
 				notificationConfig: {
 					placement: 'topLeft',
 				},