调整案例!LazyServiceProvider
example/ExampleApeart.Application.Contracts/eventmodels/EventAfterGradeCreateModel.cs
diff --git a/example/ExampleApeart.Application.Contracts/eventmodels/EventAfterGradeCreateModel.cs b/example/ExampleApeart.Application.Contracts/eventmodels/EventAfterGradeCreateModel.cs
new file mode 100644
index 0000000..ed82e25
--- /dev/null
+++ b/example/ExampleApeart.Application.Contracts/eventmodels/EventAfterGradeCreateModel.cs
@@ -0,0 +1,20 @@
+using PasteApeart.Application.Contracts;
+
+namespace ExampleApeart.Application.Contracts.eventmodels
+{
+ /// <summary>
+ /// 角色创建后 案例事件,角色创建后
+ /// </summary>
+ public class EventAfterGradeCreateModel : AbsEventModel
+ {
+ /// <summary>
+ /// 角色
+ /// </summary>
+ public int GradeId { get; set; }
+
+ /// <summary>
+ /// 创建者
+ /// </summary>
+ public int CreateUserId { get; set; }
+ }
+}
example/ExampleApeart.Application.Contracts/eventmodels/EventAfterUserCreateModel.cs
diff --git a/example/ExampleApeart.Application.Contracts/eventmodels/EventAfterUserCreateModel.cs b/example/ExampleApeart.Application.Contracts/eventmodels/EventAfterUserCreateModel.cs
new file mode 100644
index 0000000..05c0fc3
--- /dev/null
+++ b/example/ExampleApeart.Application.Contracts/eventmodels/EventAfterUserCreateModel.cs
@@ -0,0 +1,22 @@
+using PasteApeart.Application.Contracts;
+using PasteApeart.Helper;
+
+namespace ExampleApeart.Application.Contracts.eventmodels
+{
+ /// <summary>
+ /// 用户创建后 案例,用户创建后
+ /// </summary>
+ public class EventAfterUserCreateModel : AbsEventModel
+ {
+ /// <summary>
+ /// 账号
+ /// </summary>
+ [PasteOuter("userInfo")]
+ public int UserId { get; set; }
+
+ /// <summary>
+ /// 创建者
+ /// </summary>
+ public int CreateUserId { get; set; }
+ }
+}
example/ExampleApeart.Application.Contracts/usermodels/RoleInfoDto.cs
diff --git a/example/ExampleApeart.Application.Contracts/usermodels/RoleInfoDto.cs b/example/ExampleApeart.Application.Contracts/usermodels/RoleInfoDto.cs
index 813d49c..fb54de7 100644
--- a/example/ExampleApeart.Application.Contracts/usermodels/RoleInfoDto.cs
+++ b/example/ExampleApeart.Application.Contracts/usermodels/RoleInfoDto.cs
@@ -175,11 +175,11 @@ namespace ExampleApeart.usermodels
[Description("排序串")]
public string SortStr { get; set; }
- ///<summary>
- ///根级
- ///</summary>
- [Description("根级")]
- public int RootId { get; set; }
+ /////<summary>
+ /////根级
+ /////</summary>
+ //[Description("根级")]
+ //public int RootId { get; set; }
///<summary>
///父级串
example/ExampleApeart.Application.Contracts/usermodels/UserInfoDto.cs
diff --git a/example/ExampleApeart.Application.Contracts/usermodels/UserInfoDto.cs b/example/ExampleApeart.Application.Contracts/usermodels/UserInfoDto.cs
index e188f69..4569f9c 100644
--- a/example/ExampleApeart.Application.Contracts/usermodels/UserInfoDto.cs
+++ b/example/ExampleApeart.Application.Contracts/usermodels/UserInfoDto.cs
@@ -1,4 +1,3 @@
-using PasteApeart;
using PasteApeart.Applciation.Contracts.EntityDto;
using PasteApeart.Application.Contracts;
using PasteApeart.Helper;
@@ -37,7 +36,7 @@ namespace ExampleApeart.usermodels
[MaxLength(32)]
[Required]
[Description("用户名")]
- public string UserName { get; set; } = "";
+ public string Name { get; set; } = "";
///<summary>
///描述
@@ -52,7 +51,7 @@ namespace ExampleApeart.usermodels
[MaxLength(128)]
[PasteImage(1, "head", "60*60")]
[Description("头像")]
- public string UserHead { get; set; } = "";
+ public string Head { get; set; } = "";
///<summary>
///状态
@@ -109,12 +108,12 @@ namespace ExampleApeart.usermodels
#endregion
- /// <summary>
- /// 扩展 包含的角色列表
- /// </summary>
- [PasteHidden]
- [Description("扩展 包含的角色列表")]
- public List<GradeInfoListDto> Grades { get; set; }
+ ///// <summary>
+ ///// 扩展 包含的角色列表
+ ///// </summary>
+ //[PasteHidden]
+ //[Description("扩展 包含的角色列表")]
+ //public List<GradeInfoListDto> Grades { get; set; }
}
@@ -144,14 +143,14 @@ namespace ExampleApeart.usermodels
///</summary>
[PasteSearch]
[Description("用户名")]
- public string UserName { get; set; }
+ public string Name { get; set; }
///<summary>
///头像
///</summary>
[PasteImage]
[Description("头像")]
- public string UserHead { get; set; }
+ public string Head { get; set; }
///<summary>
///创建日期
@@ -200,23 +199,17 @@ namespace ExampleApeart.usermodels
/// </summary>
public int Id { get; set; }
- /// <summary>
- /// 用户名
- /// </summary>
- [Description("用户名")]
- public string Name { get { return UserName; } }
-
///<summary>
///用户名
///</summary>
[Description("用户名")]
- public string UserName { get; set; }
+ public string Name { get; set; }
///<summary>
///头像
///</summary>
[Description("头像")]
- public string UserHead { get; set; }
+ public string Head { get; set; }
}
@@ -235,13 +228,13 @@ namespace ExampleApeart.usermodels
///用户名
///</summary>
[Description("用户名")]
- public string UserName { get; set; }
+ public string Name { get; set; }
///<summary>
///头像
///</summary>
[Description("头像")]
- public string UserHead { get; set; }
+ public string Head { get; set; }
}
example/ExampleApeart.Application/usermodels/RoleInfoAppService.cs
diff --git a/example/ExampleApeart.Application/usermodels/RoleInfoAppService.cs b/example/ExampleApeart.Application/usermodels/RoleInfoAppService.cs
index 2b90690..ab81e7a 100644
--- a/example/ExampleApeart.Application/usermodels/RoleInfoAppService.cs
+++ b/example/ExampleApeart.Application/usermodels/RoleInfoAppService.cs
@@ -1,10 +1,11 @@
using ExampleApeart.Application;
using ExampleApeart.Handler;
-using ExampleApeart.Handler.eventmodels;
+using Mapster;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using PasteApeart;
using PasteApeart.Application.Contracts;
+using PasteApeart.Handler;
using PasteApeart.Handler.Extensions;
using PasteApeart.Helper;
using System.Linq.Dynamic.Core;
@@ -104,7 +105,7 @@ namespace ExampleApeart.usermodels
SortStr = a.SortStr,
FatherStr = a.FatherStr,
Level = a.Level,
- RootId = a.RootId,
+ //RootId = a.RootId,
Sort = a.Sort,
ExtendRole = rol != null ? new RoleShortModel
{
@@ -303,10 +304,15 @@ namespace ExampleApeart.usermodels
/// <returns></returns>
[HttpPost]
[TypeFilter(typeof(RoleAttribute), Arguments = new object[] { "root", "root" })]
- public async Task<RoleInfoDto> CreateItemAsync(RoleInfoAddDto input)
+ public async Task<RoleInfoListDto> CreateItemAsync(RoleInfoAddDto input)
{
- //return await _userHandler.RoleAdd(_dbContext, input);
- return await LevelHandler.RoleAdd(_dbContext, input);
+ var info = input.Adapt<RoleInfo>();
+ _dbContext.Add(info);
+ await _dbContext.SaveChangesAsync();
+ var _levelHandler = LazyServiceProvider.GetRequiredService<ILevelHandler>();
+ await _levelHandler.AfterAddAsync<RoleInfo, int>(info);
+ await _dbContext.SaveChangesAsync();
+ return info.Adapt<RoleInfoListDto>();
}
/// <summary>
@@ -316,11 +322,19 @@ namespace ExampleApeart.usermodels
/// <returns></returns>
[HttpPost]
[TypeFilter(typeof(RoleAttribute), Arguments = new object[] { "root", "root" })]
- public async Task<RoleInfoDto> UpdateItemAsync(RoleInfoUpdateDto input)
+ public async Task<RoleInfoListDto> UpdateItemAsync(RoleInfoUpdateDto input)
{
- //return await _userHandler.RoleUpdate(_dbContext, input);
+ var info = await _dbContext.RoleInfo.Where(x => x.Id == input.Id).FirstOrDefaultAsync();
+ if (info == null) { return null; }
+ var oldFatherStr = info.FatherStr;
+ var oldLevel = info.Level;
+ input.Adapt(info);
+ await _dbContext.SaveChangesAsync();
+ var _levelHandler = LazyServiceProvider.GetRequiredService<ILevelHandler>();
+ await _levelHandler.AfterUpdateAsync<RoleInfo, int>(info, oldFatherStr, oldLevel);
+ await _dbContext.SaveChangesAsync();
+ return info.Adapt<RoleInfoListDto>();
- return await LevelHandler.RoleUpdate(_dbContext, input);
}
///// <summary>
example/ExampleApeart.Application/usermodels/UserInfoAppService.cs
diff --git a/example/ExampleApeart.Application/usermodels/UserInfoAppService.cs b/example/ExampleApeart.Application/usermodels/UserInfoAppService.cs
index bb6feb5..3f3959b 100644
--- a/example/ExampleApeart.Application/usermodels/UserInfoAppService.cs
+++ b/example/ExampleApeart.Application/usermodels/UserInfoAppService.cs
@@ -49,13 +49,13 @@ namespace ExampleApeart.usermodels
}
//var dto = ObjectMapper.Map<UserInfo, UserInfoUpdateDto>(_info);
var dto = _info.Adapt<UserInfoUpdateDto>();
- var _query_gradeid = _dbContext.UserGrade.Where(x => x.UserId == _info.Id).Select(x => x.GradeId);
- var grades = await _dbContext.GradeInfo.Where(x => _query_gradeid.Contains(x.Id)).AsNoTracking().ToListAsync();
- if (grades != null && grades.Count > 0)
- {
- //dto.Grades = ObjectMapper.Map<List<GradeInfo>, List<GradeInfoListDto>>(grades);
- dto.Grades = grades.Adapt<List<GradeInfoListDto>>();
- }
+ //var _query_gradeid = _dbContext.UserGrade.Where(x => x.UserId == _info.Id).Select(x => x.GradeId);
+ //var grades = await _dbContext.GradeInfo.Where(x => _query_gradeid.Contains(x.Id)).AsNoTracking().ToListAsync();
+ //if (grades != null && grades.Count > 0)
+ //{
+ // //dto.Grades = ObjectMapper.Map<List<GradeInfo>, List<GradeInfoListDto>>(grades);
+ // dto.Grades = grades.Adapt<List<GradeInfoListDto>>();
+ //}
dto.PassWord = "";//密码只有重置,没有修改
var _dataModel = BuilderHelper.AttributeReadModelProperty<UserInfoUpdateDto>(dto);
example/ExampleApeart.Domain/enummodels/ILevelEntity.cs
diff --git a/example/ExampleApeart.Domain/enummodels/ILevelEntity.cs b/example/ExampleApeart.Domain/enummodels/ILevelEntity.cs
index 8b9df44..91c5be0 100644
--- a/example/ExampleApeart.Domain/enummodels/ILevelEntity.cs
+++ b/example/ExampleApeart.Domain/enummodels/ILevelEntity.cs
@@ -1,50 +1,50 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace ExampleApeart
-{
- /// <summary>
- /// 支持 非递归多级查询,支持多级排序
- /// </summary>
- public interface ILevelEntity
- {
- /// <summary>
- /// 标识
- /// </summary>
- int Id { get; set; }
-
- /// <summary>
- /// 排序串
- /// </summary>
- string SortStr { get; set; }
-
- /// <summary>
- /// 层级
- /// </summary>
- int Level { get; set; }
-
- /// <summary>
- /// 排序 层级内排序
- /// </summary>
- int Sort { get; set; }
-
- /// <summary>
- /// 父级
- /// </summary>
- int FatherId { get; set; }
-
- /// <summary>
- /// 父级串 替换递归查询用
- /// </summary>
- string FatherStr { get; set; }
-
- /// <summary>
- /// 根级 大块
- /// </summary>
- int RootId { get; set; }
- }
-
-}
+//using System;
+//using System.Collections.Generic;
+//using System.Linq;
+//using System.Text;
+//using System.Threading.Tasks;
+
+//namespace ExampleApeart
+//{
+// /// <summary>
+// /// 支持 非递归多级查询,支持多级排序
+// /// </summary>
+// public interface ILevelEntity
+// {
+// /// <summary>
+// /// 标识
+// /// </summary>
+// int Id { get; set; }
+
+// /// <summary>
+// /// 排序串
+// /// </summary>
+// string SortStr { get; set; }
+
+// /// <summary>
+// /// 层级
+// /// </summary>
+// int Level { get; set; }
+
+// /// <summary>
+// /// 排序 层级内排序
+// /// </summary>
+// int Sort { get; set; }
+
+// /// <summary>
+// /// 父级
+// /// </summary>
+// int FatherId { get; set; }
+
+// /// <summary>
+// /// 父级串 替换递归查询用
+// /// </summary>
+// string FatherStr { get; set; }
+
+// /// <summary>
+// /// 根级 大块
+// /// </summary>
+// int RootId { get; set; }
+// }
+
+//}
example/ExampleApeart.Domain/template/config.json
diff --git a/example/ExampleApeart.Domain/template/config.json b/example/ExampleApeart.Domain/template/config.json
index 0783ea4..2cf5e96 100644
--- a/example/ExampleApeart.Domain/template/config.json
+++ b/example/ExampleApeart.Domain/template/config.json
@@ -38,7 +38,7 @@
"attribute": {
"ignore": [ "Comment", "Display", "Decription", "Index", "DefaultValue", "Column", "NotMapped" ], //表示忽略哪些来自Domain的特性
"all": {
- "*:!list:UserId": "[PasteOuter(\"userInfo\",\"extendUser\",\"id\",\"userName\")]", //表示这个字段UserId需要添加这个特性多个之间用::隔开 示例:[PasteLeft]::[PasteHidden]
+ "*:!list:UserId": "[PasteOuter(\"userInfo\",\"extendUser\",\"id\",\"name\")]", //表示这个字段UserId需要添加这个特性多个之间用::隔开 示例:[PasteLeft]::[PasteHidden]
"*:all:UserId": "[PasteShort(\"UserInfo\",\"ExtendUser\",\"ToUserShort()\",\"ToQueryUserShort()\")]", //表示这个字段UserId需要添加这个特性多个之间用::隔开 示例:[PasteLeft]::[PasteHidden]
"*:!add:ExtendUser": "[PasteDisplay]",
"*:list:UserId": "[PasteHidden]",
example/ExampleApeart.Domain/usermodels/GradeRole.cs
diff --git a/example/ExampleApeart.Domain/usermodels/GradeRole.cs b/example/ExampleApeart.Domain/usermodels/GradeRole.cs
index ebd1e4c..ac6577f 100644
--- a/example/ExampleApeart.Domain/usermodels/GradeRole.cs
+++ b/example/ExampleApeart.Domain/usermodels/GradeRole.cs
@@ -6,9 +6,9 @@ using PasteApeart.Helper;
namespace ExampleApeart.usermodels
{
/// <summary>
- /// 角色绑定权限
+ /// 角色权限
/// </summary>
- [Comment("角色绑定权限")]
+ [Comment("角色权限")]
public class GradeRole : Entity<int>
{
/// <summary>
example/ExampleApeart.Domain/usermodels/RoleInfo.cs
diff --git a/example/ExampleApeart.Domain/usermodels/RoleInfo.cs b/example/ExampleApeart.Domain/usermodels/RoleInfo.cs
index 47e4569..8a0db7c 100644
--- a/example/ExampleApeart.Domain/usermodels/RoleInfo.cs
+++ b/example/ExampleApeart.Domain/usermodels/RoleInfo.cs
@@ -9,7 +9,7 @@ namespace ExampleApeart.usermodels
/// </summary>
[PasteAuth("*", "root", "root")]
[PasteShortModel("RoleShort", "ToRoleShort", "Id", "Name")]
- public class RoleInfo : ILevelEntity<int>, ILevelEntity
+ public class RoleInfo : ILevelEntity<int>, IEntity
{
/// <summary>
/// 标识
@@ -55,7 +55,12 @@ namespace ExampleApeart.usermodels
/// <summary>
/// 权限类型 0权限1菜单2按钮
/// </summary>
- public EnumRoleType RoleType { get; set; }
+ public EnumRoleType RoleType { get; set; } = EnumRoleType.Menu;
+
+ /// <summary>
+ /// 默认权限 是否是默认权限
+ /// </summary>
+ public bool IsDefault { get; set; } = false;
/// <summary>
/// 状态
@@ -83,10 +88,10 @@ namespace ExampleApeart.usermodels
[MaxLength(20)]
public string SortStr { get; set; } = "";
- /// <summary>
- ///
- /// </summary>
- public int RootId { get; set; }
+ ///// <summary>
+ /////
+ ///// </summary>
+ //public int RootId { get; set; }
/// <summary>
///
example/ExampleApeart.Domain/usermodels/UserInfo.cs
diff --git a/example/ExampleApeart.Domain/usermodels/UserInfo.cs b/example/ExampleApeart.Domain/usermodels/UserInfo.cs
index ce57f2b..e6a0c67 100644
--- a/example/ExampleApeart.Domain/usermodels/UserInfo.cs
+++ b/example/ExampleApeart.Domain/usermodels/UserInfo.cs
@@ -11,20 +11,20 @@ namespace ExampleApeart.usermodels
[Comment("登录用户表")]
[PasteAuth("*", "root", "root")]
[Index(nameof(Email), IsUnique = true)]
- [PasteShortModel("UserShort", "ToUserShort", "Id", "UserName")]
+ [PasteShortModel("UserShort", "ToUserShort", "Id", "Name")]
public class UserInfo : Entity<int>
{
/// <summary>
/// 用户名
/// </summary>
[MaxLength(32)]
- public string UserName { get; set; }
+ public string Name { get; set; }
/// <summary>
/// 头像
/// </summary>
[MaxLength(128)]
- public string UserHead { get; set; }
+ public string Head { get; set; }
/// <summary>
/// 创建日期
example/ExampleApeart.Handler/common/LinqExtend.cs
diff --git a/example/ExampleApeart.Handler/common/LinqExtend.cs b/example/ExampleApeart.Handler/common/LinqExtend.cs
index d549001..6401fd1 100644
--- a/example/ExampleApeart.Handler/common/LinqExtend.cs
+++ b/example/ExampleApeart.Handler/common/LinqExtend.cs
@@ -42,8 +42,8 @@ namespace ExampleApeart.Handler
return new UserShort
{
Id = user.Id,
- UserHead = user.UserHead,
- UserName = user.UserName,
+ Head = user.Head,
+ Name = user.Name,
};
}
@@ -98,8 +98,8 @@ namespace ExampleApeart.Handler
return query.Select(x => new UserShort
{
Id = x.Id,
- UserHead = x.UserHead,
- UserName = x.UserName
+ Head = x.Head,
+ Name = x.Name
});
}
example/ExampleApeart.Handler/modelhandler/LevelHandler.cs
diff --git a/example/ExampleApeart.Handler/modelhandler/LevelHandler.cs b/example/ExampleApeart.Handler/modelhandler/LevelHandler.cs
index 9d4dc68..60b9eac 100644
--- a/example/ExampleApeart.Handler/modelhandler/LevelHandler.cs
+++ b/example/ExampleApeart.Handler/modelhandler/LevelHandler.cs
@@ -1,320 +1,320 @@
-using ExampleApeart.Application.Contracts;
-using ExampleApeart.EntityFrameworkCore;
-using ExampleApeart.usermodels;
-using Mapster;
-using Microsoft.EntityFrameworkCore;
-using PasteApeart.Application.Contracts;
+//using ExampleApeart.Application.Contracts;
+//using ExampleApeart.EntityFrameworkCore;
+//using ExampleApeart.usermodels;
+//using Mapster;
+//using Microsoft.EntityFrameworkCore;
+//using PasteApeart.Application.Contracts;
-namespace ExampleApeart.Handler
-{
- /// <summary>
- /// 多层级 非递归多层级新增和更新
- /// </summary>
- public class LevelHandler
- {
- /// <summary>
- /// 这是一个新增案例
- ///</summary>
- /// <param name="input"></param>
- /// <returns></returns>
- public static async Task<RoleInfoDto> RoleAdd(IExampleApeartDbContext _dbContext, RoleInfoAddDto input)
- {
- if (input.Sort == 0)
- {
- var _max = await _dbContext.RoleInfo.Where(x => x.FatherId == input.FatherId)
- .OrderByDescending(x => x.Sort)
- .Select(x => x.Sort)
- .FirstOrDefaultAsync();
- input.Sort = _max + 10;
- }
+//namespace ExampleApeart.Handler
+//{
+// /// <summary>
+// /// 多层级 非递归多层级新增和更新
+// /// </summary>
+// public class LevelHandler
+// {
+// /// <summary>
+// /// 这是一个新增案例
+// ///</summary>
+// /// <param name="input"></param>
+// /// <returns></returns>
+// public static async Task<RoleInfoDto> RoleAdd(IExampleApeartDbContext _dbContext, RoleInfoAddDto input)
+// {
+// if (input.Sort == 0)
+// {
+// var _max = await _dbContext.RoleInfo.Where(x => x.FatherId == input.FatherId)
+// .OrderByDescending(x => x.Sort)
+// .Select(x => x.Sort)
+// .FirstOrDefaultAsync();
+// input.Sort = _max + 10;
+// }
- if (input.RoleType == 0)
- {
- if (String.IsNullOrEmpty(input.Model) || String.IsNullOrEmpty(input.Role))
- {
- throw new PasteCodeException("新增权限的时候,模块和权限必填,请重新填写!");
- }
- var find = await _dbContext.RoleInfo.Where(x => x.RoleType == 0 && x.Model == input.Model && x.Role == input.Role).Select(x => x.Id).FirstOrDefaultAsync();
- if (find > 0)
- {
- throw new PasteCodeException("已经有这个菜单项了,请勿重复添加!");
- }
- }
- if (input.RoleType == EnumRoleType.Menu)
- {
- if (!string.IsNullOrEmpty(input.Path))
- {
- if (input.FatherId == 0)
- {
- throw new PasteCodeException("非一级菜单,父级必选,请重新选择!");
- }
- var find = await _dbContext.RoleInfo.Where(x => x.RoleType == EnumRoleType.Menu && x.Path == input.Path).Select(x => x.Id).FirstOrDefaultAsync();
- if (find > 0)
- {
- throw new PasteCodeException("已经有这个菜单项了,请勿重复添加!");
- }
- }
- }
+// if (input.RoleType == 0)
+// {
+// if (String.IsNullOrEmpty(input.Model) || String.IsNullOrEmpty(input.Role))
+// {
+// throw new PasteCodeException("新增权限的时候,模块和权限必填,请重新填写!");
+// }
+// var find = await _dbContext.RoleInfo.Where(x => x.RoleType == 0 && x.Model == input.Model && x.Role == input.Role).Select(x => x.Id).FirstOrDefaultAsync();
+// if (find > 0)
+// {
+// throw new PasteCodeException("已经有这个菜单项了,请勿重复添加!");
+// }
+// }
+// if (input.RoleType == EnumRoleType.Menu)
+// {
+// if (!string.IsNullOrEmpty(input.Path))
+// {
+// if (input.FatherId == 0)
+// {
+// throw new PasteCodeException("非一级菜单,父级必选,请重新选择!");
+// }
+// var find = await _dbContext.RoleInfo.Where(x => x.RoleType == EnumRoleType.Menu && x.Path == input.Path).Select(x => x.Id).FirstOrDefaultAsync();
+// if (find > 0)
+// {
+// throw new PasteCodeException("已经有这个菜单项了,请勿重复添加!");
+// }
+// }
+// }
- //这里最好用事务包裹下
- //var info = ObjectMapper.Map<RoleInfoAddDto, RoleInfo>(input);
- var info = input.Adapt<RoleInfo>();
- info.IsEnable = true;//添加自定义
- _dbContext.Add(info);
- await _dbContext.SaveChangesAsync();
- await AfterAdd(_dbContext, nameof(RoleInfo), info);
- await _dbContext.SaveChangesAsync();
+// //这里最好用事务包裹下
+// //var info = ObjectMapper.Map<RoleInfoAddDto, RoleInfo>(input);
+// var info = input.Adapt<RoleInfo>();
+// info.IsEnable = true;//添加自定义
+// _dbContext.Add(info);
+// await _dbContext.SaveChangesAsync();
+// await AfterAdd(_dbContext, nameof(RoleInfo), info);
+// await _dbContext.SaveChangesAsync();
- //var backinfo = ObjectMapper.Map<RoleInfo, RoleInfoDto>(info);
- var backinfo = info.Adapt<RoleInfoDto>();
- return backinfo;
- }
+// //var backinfo = ObjectMapper.Map<RoleInfo, RoleInfoDto>(info);
+// var backinfo = info.Adapt<RoleInfoDto>();
+// return backinfo;
+// }
- /// <summary>
- /// 这是一个更新案例
- ///</summary>
- /// <param name="input"></param>
- /// <returns></returns>
- public static async Task<RoleInfoDto> RoleUpdate(IExampleApeartDbContext _dbContext, RoleInfoUpdateDto input)
- {
- if (input.Sort == 0)
- {
- var _max = await _dbContext.RoleInfo.Where(x => x.FatherId == input.FatherId)
- .OrderByDescending(x => x.Sort)
- .Select(x => x.Sort)
- .FirstOrDefaultAsync();
- input.Sort = _max + 10;
- }
+// /// <summary>
+// /// 这是一个更新案例
+// ///</summary>
+// /// <param name="input"></param>
+// /// <returns></returns>
+// public static async Task<RoleInfoDto> RoleUpdate(IExampleApeartDbContext _dbContext, RoleInfoUpdateDto input)
+// {
+// if (input.Sort == 0)
+// {
+// var _max = await _dbContext.RoleInfo.Where(x => x.FatherId == input.FatherId)
+// .OrderByDescending(x => x.Sort)
+// .Select(x => x.Sort)
+// .FirstOrDefaultAsync();
+// input.Sort = _max + 10;
+// }
- if (input.RoleType == 0)
- {
- if (String.IsNullOrEmpty(input.Model) || String.IsNullOrEmpty(input.Role))
- {
- throw new PasteCodeException("新增权限的时候,模块和权限必填,请重新填写!");
- }
- var find = await _dbContext.RoleInfo.Where(x => x.RoleType == 0 && x.Model == input.Model && x.Role == input.Role && x.Id != input.Id).Select(x => x.Id).FirstOrDefaultAsync();
- if (find > 0)
- {
- throw new PasteCodeException("已经有这个菜单项了,请勿重复添加!");
- }
- }
- if (input.RoleType == EnumRoleType.Menu)
- {
- if (!string.IsNullOrEmpty(input.Path))
- {
- if (input.FatherId == 0)
- {
- throw new PasteCodeException("非一级菜单,父级必选,请重新选择!");
- }
- var find = await _dbContext.RoleInfo.Where(x => x.RoleType == EnumRoleType.Menu && x.Path == input.Path && x.Id != input.Id).Select(x => x.Id).FirstOrDefaultAsync();
- if (find > 0)
- {
- throw new PasteCodeException("已经有这个菜单项了,请勿重复添加!");
- }
- }
- }
+// if (input.RoleType == 0)
+// {
+// if (String.IsNullOrEmpty(input.Model) || String.IsNullOrEmpty(input.Role))
+// {
+// throw new PasteCodeException("新增权限的时候,模块和权限必填,请重新填写!");
+// }
+// var find = await _dbContext.RoleInfo.Where(x => x.RoleType == 0 && x.Model == input.Model && x.Role == input.Role && x.Id != input.Id).Select(x => x.Id).FirstOrDefaultAsync();
+// if (find > 0)
+// {
+// throw new PasteCodeException("已经有这个菜单项了,请勿重复添加!");
+// }
+// }
+// if (input.RoleType == EnumRoleType.Menu)
+// {
+// if (!string.IsNullOrEmpty(input.Path))
+// {
+// if (input.FatherId == 0)
+// {
+// throw new PasteCodeException("非一级菜单,父级必选,请重新选择!");
+// }
+// var find = await _dbContext.RoleInfo.Where(x => x.RoleType == EnumRoleType.Menu && x.Path == input.Path && x.Id != input.Id).Select(x => x.Id).FirstOrDefaultAsync();
+// if (find > 0)
+// {
+// throw new PasteCodeException("已经有这个菜单项了,请勿重复添加!");
+// }
+// }
+// }
- var info = await _dbContext.RoleInfo.Where(x => x.Id == input.Id).FirstOrDefaultAsync();
- if (info == null || info == default)
- {
- throw new PasteCodeException("需要查询的信息不存在");
- }
- //ObjectMapper.Map<RoleInfoUpdateDto, RoleInfo>(input, info);
- input.Adapt(info);
- await AfterUpdate(_dbContext, nameof(RoleInfo), info);
- //var backinfo = ObjectMapper.Map<RoleInfo, RoleInfoDto>(info);?
- var backinfo = info.Adapt<RoleInfoDto>();
- await _dbContext.SaveChangesAsync();
- return backinfo;
- }
+// var info = await _dbContext.RoleInfo.Where(x => x.Id == input.Id).FirstOrDefaultAsync();
+// if (info == null || info == default)
+// {
+// throw new PasteCodeException("需要查询的信息不存在");
+// }
+// //ObjectMapper.Map<RoleInfoUpdateDto, RoleInfo>(input, info);
+// input.Adapt(info);
+// await AfterUpdate(_dbContext, nameof(RoleInfo), info);
+// //var backinfo = ObjectMapper.Map<RoleInfo, RoleInfoDto>(info);?
+// var backinfo = info.Adapt<RoleInfoDto>();
+// await _dbContext.SaveChangesAsync();
+// return backinfo;
+// }
- /// <summary>
- /// 新增后 注意外部要保存下
- /// </summary>
- /// <param name="_dbContext"></param>
- /// <param name="TableName">应该是PropertyName</param>
- /// <param name="info"></param>
- public static async Task AfterAdd(IExampleApeartDbContext _dbContext, string TableName, ILevelEntity info)
- {
- info.SortStr = info.Sort.ToString().PadLeft(_persize, '0') + "0".PadLeft((_maxlevel - 1) * _persize, '0');
- if (info.FatherId <= 0)
- {
- info.FatherStr = $"{info.Id},";
- info.RootId = info.Id;
- return;
- }
+// /// <summary>
+// /// 新增后 注意外部要保存下
+// /// </summary>
+// /// <param name="_dbContext"></param>
+// /// <param name="TableName">应该是PropertyName</param>
+// /// <param name="info"></param>
+// public static async Task AfterAdd(IExampleApeartDbContext _dbContext, string TableName, ILevelEntity info)
+// {
+// info.SortStr = info.Sort.ToString().PadLeft(_persize, '0') + "0".PadLeft((_maxlevel - 1) * _persize, '0');
+// if (info.FatherId <= 0)
+// {
+// info.FatherStr = $"{info.Id},";
+// info.RootId = info.Id;
+// return;
+// }
- var dbType = _dbContext.GetType();
- var dbProperty = dbType.GetProperty(TableName);
- if (dbProperty != null)
- {
- var dbSet = dbProperty.GetValue(_dbContext) as IQueryable<ILevelEntity>;
- if (dbSet != null)
- {
+// var dbType = _dbContext.GetType();
+// var dbProperty = dbType.GetProperty(TableName);
+// if (dbProperty != null)
+// {
+// var dbSet = dbProperty.GetValue(_dbContext) as IQueryable<ILevelEntity>;
+// if (dbSet != null)
+// {
- var father = await dbSet.Where(x => x.Id == info.FatherId).AsNoTracking().FirstOrDefaultAsync();
- if (father != null && father != default)
- {
- info.FatherStr = $"{father.FatherStr}{info.Id},";
- info.Level = (father.Level + 1);
- info.FatherId = father.Id;
- info.RootId = father.RootId != 0 ? father.RootId : father.Id;
- BuildSortStr(info, father);
- }
- else
- {
- info.FatherId = 0;
- }
+// var father = await dbSet.Where(x => x.Id == info.FatherId).AsNoTracking().FirstOrDefaultAsync();
+// if (father != null && father != default)
+// {
+// info.FatherStr = $"{father.FatherStr}{info.Id},";
+// info.Level = (father.Level + 1);
+// info.FatherId = father.Id;
+// info.RootId = father.RootId != 0 ? father.RootId : father.Id;
+// BuildSortStr(info, father);
+// }
+// else
+// {
+// info.FatherId = 0;
+// }
- }
- }
- }
+// }
+// }
+// }
- /// <summary>
- /// 更新后 注意外部要保存下
- /// </summary>
- /// <param name="_dbContext"></param>
- /// <param name="TableName">应该是PropertyName</param>
- /// <param name="info"></param>
- /// <returns></returns>
- public static async Task AfterUpdate(IExampleApeartDbContext _dbContext, string TableName, ILevelEntity info)
- {
- IQueryable<ILevelEntity> dbSet = null;
- var dbType = _dbContext.GetType();
- var dbProperty = dbType.GetProperty(TableName);
- if (dbProperty != null)
- {
- dbSet = dbProperty.GetValue(_dbContext) as IQueryable<ILevelEntity>;
- }
- if (dbSet == null)
- {
- return;
- }
- var old_father_str = info.FatherStr;
- var _chat_level = info.Level;
+// /// <summary>
+// /// 更新后 注意外部要保存下
+// /// </summary>
+// /// <param name="_dbContext"></param>
+// /// <param name="TableName">应该是PropertyName</param>
+// /// <param name="info"></param>
+// /// <returns></returns>
+// public static async Task AfterUpdate(IExampleApeartDbContext _dbContext, string TableName, ILevelEntity info)
+// {
+// IQueryable<ILevelEntity> dbSet = null;
+// var dbType = _dbContext.GetType();
+// var dbProperty = dbType.GetProperty(TableName);
+// if (dbProperty != null)
+// {
+// dbSet = dbProperty.GetValue(_dbContext) as IQueryable<ILevelEntity>;
+// }
+// if (dbSet == null)
+// {
+// return;
+// }
+// var old_father_str = info.FatherStr;
+// var _chat_level = info.Level;
- if (info.FatherId != 0)
- {
- var father = await dbSet.Where(x => x.Id == info.FatherId).AsNoTracking().FirstOrDefaultAsync();
- if (father != null && father != default)
- {
- info.Level = father.Level + 1;
- info.FatherStr = $"{father.FatherStr}{info.Id},";
- info.RootId = father.RootId;
- BuildSortStr(info, father);
- }
- else
- {
- info.FatherId = 0;
- info.FatherStr = $"{info.Id},";
- info.Level = 0;
- info.RootId = info.Id;
- BuildSortStr(info, null);
- }
- }
- else
- {
- info.FatherId = 0;
- info.FatherStr = $"{info.Id},";
- info.Level = 0;
- info.RootId = info.Id;
- BuildSortStr(info, null);
- }
- _chat_level = _chat_level - (info.Level);
- if (!String.IsNullOrEmpty(old_father_str))
- {
- var suns = await dbSet.Where(x => x.Id != info.Id && x.FatherStr.StartsWith(old_father_str)).ToListAsync();
- if (suns != null && suns.Count > 0)
- {
- foreach (var item in suns)
- {
- item.FatherStr = item.FatherStr.Replace(old_father_str, info.FatherStr);
- item.Level = item.Level + _chat_level;
- item.RootId = info.RootId;
- BuildFootSortStr(item, info);
- }
- }
- }
- }
+// if (info.FatherId != 0)
+// {
+// var father = await dbSet.Where(x => x.Id == info.FatherId).AsNoTracking().FirstOrDefaultAsync();
+// if (father != null && father != default)
+// {
+// info.Level = father.Level + 1;
+// info.FatherStr = $"{father.FatherStr}{info.Id},";
+// info.RootId = father.RootId;
+// BuildSortStr(info, father);
+// }
+// else
+// {
+// info.FatherId = 0;
+// info.FatherStr = $"{info.Id},";
+// info.Level = 0;
+// info.RootId = info.Id;
+// BuildSortStr(info, null);
+// }
+// }
+// else
+// {
+// info.FatherId = 0;
+// info.FatherStr = $"{info.Id},";
+// info.Level = 0;
+// info.RootId = info.Id;
+// BuildSortStr(info, null);
+// }
+// _chat_level = _chat_level - (info.Level);
+// if (!String.IsNullOrEmpty(old_father_str))
+// {
+// var suns = await dbSet.Where(x => x.Id != info.Id && x.FatherStr.StartsWith(old_father_str)).ToListAsync();
+// if (suns != null && suns.Count > 0)
+// {
+// foreach (var item in suns)
+// {
+// item.FatherStr = item.FatherStr.Replace(old_father_str, info.FatherStr);
+// item.Level = item.Level + _chat_level;
+// item.RootId = info.RootId;
+// BuildFootSortStr(item, info);
+// }
+// }
+// }
+// }
- /// <summary>
- /// 自动排序 基于同层级排序到后面,只有当当前是0的时候生效
- /// </summary>
- /// <param name="_dbContext"></param>
- /// <param name="TableName">应该是PropertyName</param>
- /// <param name="input"></param>
- /// <param name="step"></param>
- /// <returns></returns>
- public static async Task AutoSort(IExampleApeartDbContext _dbContext, string TableName, ILevelEntity input, int step = 10)
- {
- if (input.Sort == 0)
- {
- var dbType = _dbContext.GetType();
- var dbProperty = dbType.GetProperty(TableName);
- if (dbProperty != null)
- {
- var dbSet = dbProperty.GetValue(_dbContext) as IQueryable<ILevelEntity>;
- if (dbSet != null)
- {
+// /// <summary>
+// /// 自动排序 基于同层级排序到后面,只有当当前是0的时候生效
+// /// </summary>
+// /// <param name="_dbContext"></param>
+// /// <param name="TableName">应该是PropertyName</param>
+// /// <param name="input"></param>
+// /// <param name="step"></param>
+// /// <returns></returns>
+// public static async Task AutoSort(IExampleApeartDbContext _dbContext, string TableName, ILevelEntity input, int step = 10)
+// {
+// if (input.Sort == 0)
+// {
+// var dbType = _dbContext.GetType();
+// var dbProperty = dbType.GetProperty(TableName);
+// if (dbProperty != null)
+// {
+// var dbSet = dbProperty.GetValue(_dbContext) as IQueryable<ILevelEntity>;
+// if (dbSet != null)
+// {
- var _max = await dbSet.Where(x => x.FatherId == input.FatherId)
- .OrderByDescending(x => x.Sort)
- .Select(x => x.Sort)
- .FirstOrDefaultAsync();
- input.Sort = _max + 10;
- }
- }
- }
- }
+// var _max = await dbSet.Where(x => x.FatherId == input.FatherId)
+// .OrderByDescending(x => x.Sort)
+// .Select(x => x.Sort)
+// .FirstOrDefaultAsync();
+// input.Sort = _max + 10;
+// }
+// }
+// }
+// }
- /// <summary>
- /// 每层最大支持的排序位数 5表示00000
- /// </summary>
- private const int _persize = 5;
- /// <summary>
- /// 最大层级个数,从0开始 比如4就是 0 1 2 3
- /// </summary>
- private const int _maxlevel = 4;
+// /// <summary>
+// /// 每层最大支持的排序位数 5表示00000
+// /// </summary>
+// private const int _persize = 5;
+// /// <summary>
+// /// 最大层级个数,从0开始 比如4就是 0 1 2 3
+// /// </summary>
+// private const int _maxlevel = 4;
- /// <summary>
- /// 基于父级和当前自己的排序信息,构建对应的排序字符串
- /// </summary>
- /// <param name="_info"></param>
- /// <param name="_father"></param>
- private static void BuildSortStr(ILevelEntity _info, ILevelEntity _father)
- {
- if (_info.Level < _maxlevel)
- {
- if (_father == null)
- {
- _info.SortStr = _info.Sort.ToString().PadLeft(_persize, '0') + "0".PadLeft(_persize * (_maxlevel - 1), '0');
- }
- else
- {
- if (!string.IsNullOrEmpty(_father.SortStr))
- {
- _info.SortStr = _father.SortStr.Substring(0, (_father.Level + 1) * _persize) + _info.Sort.ToString().PadLeft(_persize, '0');
- //补充尾巴
- if (_info.Level < (_maxlevel - 1))
- {
- _info.SortStr += "0".PadLeft(_persize * (_maxlevel - 1 - _info.Level), '0');
- }
- }
- }
- }
- }
+// /// <summary>
+// /// 基于父级和当前自己的排序信息,构建对应的排序字符串
+// /// </summary>
+// /// <param name="_info"></param>
+// /// <param name="_father"></param>
+// private static void BuildSortStr(ILevelEntity _info, ILevelEntity _father)
+// {
+// if (_info.Level < _maxlevel)
+// {
+// if (_father == null)
+// {
+// _info.SortStr = _info.Sort.ToString().PadLeft(_persize, '0') + "0".PadLeft(_persize * (_maxlevel - 1), '0');
+// }
+// else
+// {
+// if (!string.IsNullOrEmpty(_father.SortStr))
+// {
+// _info.SortStr = _father.SortStr.Substring(0, (_father.Level + 1) * _persize) + _info.Sort.ToString().PadLeft(_persize, '0');
+// //补充尾巴
+// if (_info.Level < (_maxlevel - 1))
+// {
+// _info.SortStr += "0".PadLeft(_persize * (_maxlevel - 1 - _info.Level), '0');
+// }
+// }
+// }
+// }
+// }
- /// <summary>
- /// 上级或者祖籍变更的替换,自己之后的不变,中间层级也不变
- /// </summary>
- /// <param name="_info"></param>
- /// <param name="_father">是自己的上级或者祖级</param>
- private static void BuildFootSortStr(ILevelEntity _info, ILevelEntity _father)
- {
- var _old_sort_str = _info.SortStr;
- _info.SortStr = _father.SortStr.Substring(0, (_father.Level + 1) * _persize);
- _info.SortStr += _old_sort_str.Substring((_father.Level + 1) * _persize);
- }
+// /// <summary>
+// /// 上级或者祖籍变更的替换,自己之后的不变,中间层级也不变
+// /// </summary>
+// /// <param name="_info"></param>
+// /// <param name="_father">是自己的上级或者祖级</param>
+// private static void BuildFootSortStr(ILevelEntity _info, ILevelEntity _father)
+// {
+// var _old_sort_str = _info.SortStr;
+// _info.SortStr = _father.SortStr.Substring(0, (_father.Level + 1) * _persize);
+// _info.SortStr += _old_sort_str.Substring((_father.Level + 1) * _persize);
+// }
- }
-}
+// }
+//}
example/ExampleApeart.Handler/modelhandler/RoleBackLoadHandler.cs
diff --git a/example/ExampleApeart.Handler/modelhandler/UserHandler.cs b/example/ExampleApeart.Handler/modelhandler/RoleBackLoadHandler.cs
similarity index 95%
rename from example/ExampleApeart.Handler/modelhandler/UserHandler.cs
rename to example/ExampleApeart.Handler/modelhandler/RoleBackLoadHandler.cs
index 5df9c16..17b0709 100644
--- a/example/ExampleApeart.Handler/modelhandler/UserHandler.cs
+++ b/example/ExampleApeart.Handler/modelhandler/RoleBackLoadHandler.cs
@@ -8,7 +8,7 @@ using System.Text.Json;
namespace ExampleApeart.Handler
{
- public class UserHandler
+ public class RoleBackLoadHandler
{
@@ -121,7 +121,7 @@ namespace ExampleApeart.Handler
await _dbContext.RoleInfo.Where(x => true).ExecuteDeleteAsync();
foreach (var item in list)
{
- await IncludeInsert(_dbContext, item);
+ await IncludeInsertAsync(_dbContext, item);
}
if (tran)
{
@@ -154,22 +154,23 @@ namespace ExampleApeart.Handler
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
- private static async Task IncludeInsert(IExampleApeartDbContext _dbContext, RoleInfoAddDto item)
+ private static async Task IncludeInsertAsync(IExampleApeartDbContext _dbContext, RoleInfoAddDto item)
{
- var _add = await LevelHandler.RoleAdd(_dbContext, item);
+ //var _add = await LevelHandler.RoleAdd(_dbContext, item);
+ var _add = item.Adapt<RoleInfo>();
+ _dbContext.Add(_add);
+ await _dbContext.SaveChangesAsync();
if (item.Items != null)
{
foreach (var ii in item.Items)
{
ii.FatherId = _add.Id;
//var _new = await _userHandler.RoleAdd(_dbContext,ii);
- await IncludeInsert(_dbContext, ii);
+ await IncludeInsertAsync(_dbContext, ii);
}
}
}
-
-
}
}
example/ExampleApeart.HttpApi.Host/Controllers/TestController.cs
diff --git a/example/ExampleApeart.HttpApi.Host/Controllers/TestController.cs b/example/ExampleApeart.HttpApi.Host/Controllers/TestController.cs
index a56472c..6502ce0 100644
--- a/example/ExampleApeart.HttpApi.Host/Controllers/TestController.cs
+++ b/example/ExampleApeart.HttpApi.Host/Controllers/TestController.cs
@@ -90,7 +90,7 @@ namespace ExampleApeart.HttpApi.Host.Controllers
var newone = new UserInfo { };
first.Adapt(newone);
//注意ID会带出来.... ...
- return $"Id{newone.Id} UserName{newone.UserName}";
+ return $"Id{newone.Id} UserName{newone.Name}";
}
example/ExampleApeart.HttpApi.Host/Controllers/UserController.cs
diff --git a/example/ExampleApeart.HttpApi.Host/Controllers/UserController.cs b/example/ExampleApeart.HttpApi.Host/Controllers/UserController.cs
index 35ff649..d58a914 100644
--- a/example/ExampleApeart.HttpApi.Host/Controllers/UserController.cs
+++ b/example/ExampleApeart.HttpApi.Host/Controllers/UserController.cs
@@ -159,7 +159,7 @@ namespace ExampleApeart.HttpApi.Host.Controllers
base.Response.Cookies.Append(PublicString.TokenHeadName, token, new Microsoft.AspNetCore.Http.CookieOptions() { Path = "/", Expires = DateTimeOffset.Now.AddSeconds(PublicString.TokenTimeOut), Secure = false });
return new
{
- name = user.UserName,
+ name = user.Name,
token = token
};
}
example/ExampleApeart.HttpApi.Host/ExampleApeart.Application.Contracts.xml
diff --git a/example/ExampleApeart.HttpApi.Host/ExampleApeart.Application.Contracts.xml b/example/ExampleApeart.HttpApi.Host/ExampleApeart.Application.Contracts.xml
index e1ffac7..2c69a21 100644
--- a/example/ExampleApeart.HttpApi.Host/ExampleApeart.Application.Contracts.xml
+++ b/example/ExampleApeart.HttpApi.Host/ExampleApeart.Application.Contracts.xml
@@ -4,6 +4,36 @@
<name>ExampleApeart.Application.Contracts</name>
</assembly>
<members>
+ <member name="T:ExampleApeart.Application.Contracts.eventmodels.EventAfterGradeCreateModel">
+ <summary>
+ 角色创建后 案例事件,角色创建后
+ </summary>
+ </member>
+ <member name="P:ExampleApeart.Application.Contracts.eventmodels.EventAfterGradeCreateModel.GradeId">
+ <summary>
+ 角色
+ </summary>
+ </member>
+ <member name="P:ExampleApeart.Application.Contracts.eventmodels.EventAfterGradeCreateModel.CreateUserId">
+ <summary>
+ 创建者
+ </summary>
+ </member>
+ <member name="T:ExampleApeart.Application.Contracts.eventmodels.EventAfterUserCreateModel">
+ <summary>
+ 用户创建后 案例,用户创建后
+ </summary>
+ </member>
+ <member name="P:ExampleApeart.Application.Contracts.eventmodels.EventAfterUserCreateModel.UserId">
+ <summary>
+ 账号
+ </summary>
+ </member>
+ <member name="P:ExampleApeart.Application.Contracts.eventmodels.EventAfterUserCreateModel.CreateUserId">
+ <summary>
+ 创建者
+ </summary>
+ </member>
<member name="T:ExampleApeart.Application.Contracts.eventmodels.EventDemoModel">
<summary>
案例
@@ -359,11 +389,6 @@
排序串
</summary>
</member>
- <member name="P:ExampleApeart.usermodels.RoleInfoDto.RootId">
- <summary>
- 根级
- </summary>
- </member>
<member name="P:ExampleApeart.usermodels.RoleInfoDto.FatherStr">
<summary>
父级串
@@ -719,7 +744,7 @@
密码
</summary>
</member>
- <member name="P:ExampleApeart.usermodels.UserInfoAddDto.UserName">
+ <member name="P:ExampleApeart.usermodels.UserInfoAddDto.Name">
<summary>
用户名
</summary>
@@ -729,7 +754,7 @@
描述
</summary>
</member>
- <member name="P:ExampleApeart.usermodels.UserInfoAddDto.UserHead">
+ <member name="P:ExampleApeart.usermodels.UserInfoAddDto.Head">
<summary>
头像
</summary>
@@ -769,11 +794,6 @@
角色 测试用的
</summary>
</member>
- <member name="P:ExampleApeart.usermodels.UserInfoUpdateDto.Grades">
- <summary>
- 扩展 包含的角色列表
- </summary>
- </member>
<member name="T:ExampleApeart.usermodels.UserInfoDto">
<summary>
用户信息
@@ -789,12 +809,12 @@
用户信息
</summary>
</member>
- <member name="P:ExampleApeart.usermodels.UserInfoListDto.UserName">
+ <member name="P:ExampleApeart.usermodels.UserInfoListDto.Name">
<summary>
用户名
</summary>
</member>
- <member name="P:ExampleApeart.usermodels.UserInfoListDto.UserHead">
+ <member name="P:ExampleApeart.usermodels.UserInfoListDto.Head">
<summary>
头像
</summary>
@@ -839,12 +859,7 @@
用户名
</summary>
</member>
- <member name="P:ExampleApeart.usermodels.UserShort.UserName">
- <summary>
- 用户名
- </summary>
- </member>
- <member name="P:ExampleApeart.usermodels.UserShort.UserHead">
+ <member name="P:ExampleApeart.usermodels.UserShort.Head">
<summary>
头像
</summary>
@@ -859,12 +874,12 @@
</summary>
</member>
- <member name="P:ExampleApeart.usermodels.UserShortModel.UserName">
+ <member name="P:ExampleApeart.usermodels.UserShortModel.Name">
<summary>
用户名
</summary>
</member>
- <member name="P:ExampleApeart.usermodels.UserShortModel.UserHead">
+ <member name="P:ExampleApeart.usermodels.UserShortModel.Head">
<summary>
头像
</summary>
example/ExampleApeart.HttpApi.Host/ExampleApeart.Domain.xml
diff --git a/example/ExampleApeart.HttpApi.Host/ExampleApeart.Domain.xml b/example/ExampleApeart.HttpApi.Host/ExampleApeart.Domain.xml
index 9b4ea70..f7af271 100644
--- a/example/ExampleApeart.HttpApi.Host/ExampleApeart.Domain.xml
+++ b/example/ExampleApeart.HttpApi.Host/ExampleApeart.Domain.xml
@@ -114,46 +114,6 @@
小程序菜单
</summary>
</member>
- <member name="T:ExampleApeart.ILevelEntity">
- <summary>
- 支持 非递归多级查询,支持多级排序
- </summary>
- </member>
- <member name="P:ExampleApeart.ILevelEntity.Id">
- <summary>
- 标识
- </summary>
- </member>
- <member name="P:ExampleApeart.ILevelEntity.SortStr">
- <summary>
- 排序串
- </summary>
- </member>
- <member name="P:ExampleApeart.ILevelEntity.Level">
- <summary>
- 层级
- </summary>
- </member>
- <member name="P:ExampleApeart.ILevelEntity.Sort">
- <summary>
- 排序 层级内排序
- </summary>
- </member>
- <member name="P:ExampleApeart.ILevelEntity.FatherId">
- <summary>
- 父级
- </summary>
- </member>
- <member name="P:ExampleApeart.ILevelEntity.FatherStr">
- <summary>
- 父级串 替换递归查询用
- </summary>
- </member>
- <member name="P:ExampleApeart.ILevelEntity.RootId">
- <summary>
- 根级 大块
- </summary>
- </member>
<member name="T:ExampleApeart.ExampleApeartDbProperties">
<summary>
@@ -226,7 +186,7 @@
</member>
<member name="T:ExampleApeart.usermodels.GradeRole">
<summary>
- 角色绑定权限
+ 角色权限
</summary>
</member>
<member name="P:ExampleApeart.usermodels.GradeRole.GradeId">
@@ -284,6 +244,11 @@
权限类型 0权限1菜单2按钮
</summary>
</member>
+ <member name="P:ExampleApeart.usermodels.RoleInfo.IsDefault">
+ <summary>
+ 默认权限 是否是默认权限
+ </summary>
+ </member>
<member name="P:ExampleApeart.usermodels.RoleInfo.IsEnable">
<summary>
状态
@@ -309,11 +274,6 @@
</summary>
</member>
- <member name="P:ExampleApeart.usermodels.RoleInfo.RootId">
- <summary>
-
- </summary>
- </member>
<member name="P:ExampleApeart.usermodels.RoleInfo.FatherStr">
<summary>
@@ -339,12 +299,12 @@
用户信息
</summary>
</member>
- <member name="P:ExampleApeart.usermodels.UserInfo.UserName">
+ <member name="P:ExampleApeart.usermodels.UserInfo.Name">
<summary>
用户名
</summary>
</member>
- <member name="P:ExampleApeart.usermodels.UserInfo.UserHead">
+ <member name="P:ExampleApeart.usermodels.UserInfo.Head">
<summary>
头像
</summary>
example/ExampleApeart.HttpApi.Host/ExampleApeart.HttpApi.Host.xml
diff --git a/example/ExampleApeart.HttpApi.Host/ExampleApeart.HttpApi.Host.xml b/example/ExampleApeart.HttpApi.Host/ExampleApeart.HttpApi.Host.xml
index 5198316..7c70fd4 100644
--- a/example/ExampleApeart.HttpApi.Host/ExampleApeart.HttpApi.Host.xml
+++ b/example/ExampleApeart.HttpApi.Host/ExampleApeart.HttpApi.Host.xml
@@ -433,6 +433,12 @@
<param name="args"></param>
<returns></returns>
</member>
+ <member name="M:ExampleApeart.Program.ConfigureAutofac(Autofac.ContainerBuilder)">
+ <summary>
+ 配置autofac
+ </summary>
+ <param name="containerBuilder"></param>
+ </member>
<member name="T:ExampleApeart.StartHostedService">
<summary>
系统初始化
example/ExampleApeart.HttpApi.Host/Program.cs
diff --git a/example/ExampleApeart.HttpApi.Host/Program.cs b/example/ExampleApeart.HttpApi.Host/Program.cs
index 0357adf..ed9a87a 100644
--- a/example/ExampleApeart.HttpApi.Host/Program.cs
+++ b/example/ExampleApeart.HttpApi.Host/Program.cs
@@ -97,13 +97,33 @@ namespace ExampleApeart
}
}
+ /// <summary>
+ /// 配置autofac
+ /// </summary>
+ /// <param name="containerBuilder"></param>
private static void ConfigureAutofac(ContainerBuilder containerBuilder)
{
- // 获取程序集
- var applicationAssembly = typeof(ExampleApeartApplicationModule).Assembly;
+ /*
+ var host = Host.CreateDefaultBuilder(args)
+ .UseServiceProviderFactory(new AutofacServiceProviderFactory())
+ .ConfigureContainer<ContainerBuilder>(containerBuilder =>
+ {
+ // Autofac 配置
+ ConfigureAutofac(containerBuilder);
+ })
+ .ConfigureWebHostDefaults(webBuilder =>
+ {
+ webBuilder.UseConfiguration(Configuration);
+ webBuilder.UseStartup<Startup>();
+ })
+ .UseSerilog()
+ .Build();
+ */
+
+ // 获取程序集
// 1. 注册所有 AppService(启用属性注入)
- containerBuilder.RegisterAssemblyTypes(applicationAssembly)
+ containerBuilder.RegisterAssemblyTypes(typeof(ExampleApeartApplicationModule).Assembly)
.Where(t => t.IsClass && !t.IsAbstract && typeof(IAppService).IsAssignableFrom(t))
.AsSelf()
.AsImplementedInterfaces()
@@ -141,7 +161,6 @@ namespace ExampleApeart
internal static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
-
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseConfiguration(Configuration);
example/ExampleApeart.HttpApi.Host/Services/StartHostedService.cs
diff --git a/example/ExampleApeart.HttpApi.Host/Services/StartHostedService.cs b/example/ExampleApeart.HttpApi.Host/Services/StartHostedService.cs
index e59efb1..33a64a5 100644
--- a/example/ExampleApeart.HttpApi.Host/Services/StartHostedService.cs
+++ b/example/ExampleApeart.HttpApi.Host/Services/StartHostedService.cs
@@ -128,7 +128,7 @@ namespace ExampleApeart
await _dbContext.Database.BeginTransactionAsync();
var one = new UserInfo();
one.Email = config.RootAccount;
- one.UserName = "管理员";
+ one.Name = "管理员";
one.CreateDate = DateTime.Now;
//one.Grade = "admin";
one.IsEnable = true;
@@ -154,7 +154,7 @@ namespace ExampleApeart
_dbContext.Add(new UserGrade() { GradeId = groupid, UserId = adminid });
await _dbContext.SaveChangesAsync();
- await UserHandler.LoadAsync(_dbContext, false);
+ await RoleBackLoadHandler.LoadAsync(_dbContext, false);
await _dbContext.Database.CommitTransactionAsync();
}
catch (Exception exlinit)
example/ExampleApeart.HttpApi.Host/config/roles.json
diff --git a/example/ExampleApeart.HttpApi.Host/config/roles.json b/example/ExampleApeart.HttpApi.Host/config/roles.json
index 81611a3..5232feb 100644
--- a/example/ExampleApeart.HttpApi.Host/config/roles.json
+++ b/example/ExampleApeart.HttpApi.Host/config/roles.json
@@ -114,6 +114,19 @@
"sort": 900,
"fatherId": 121,
"items": null
+ },
+ {
+ "name": "事件控制台",
+ "model": "",
+ "role": "",
+ "icon": "Hui-iconfont-pifu",
+ "path": "./pasteform/index.html?path=quickHandler",
+ "roleType": 1,
+ "desc": "",
+ "isEnable": true,
+ "sort": 800,
+ "fatherId": 121,
+ "items": null
}
]
}
framework/PasteApeart.Handler/lazy/ILazyServiceProvider.cs
diff --git a/framework/PasteApeart.Handler/lazy/ILazyServiceProvider.cs b/framework/PasteApeart.Handler/lazy/ILazyServiceProvider.cs
index 5fa0a65..37814c3 100644
--- a/framework/PasteApeart.Handler/lazy/ILazyServiceProvider.cs
+++ b/framework/PasteApeart.Handler/lazy/ILazyServiceProvider.cs
@@ -1,17 +1,37 @@
namespace PasteApeart.Handler.lazy
{
-
/// <summary>
- /// 懒加载 需要使用AUTOFAC
+ ///
/// </summary>
public interface ILazyServiceProvider
{
/// <summary>
///
/// </summary>
+ /// <param name="serviceType"></param>
+ /// <returns></returns>
+ object GetRequiredService(Type serviceType);
+
+ /// <summary>
+ ///
+ /// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
- T LazyGetRequiredService<T>() where T : class;
+ T GetRequiredService<T>() where T : class;
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="serviceType"></param>
+ /// <returns></returns>
+ object GetService(Type serviceType);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <returns></returns>
+ T GetService<T>() where T : class;
/// <summary>
///
@@ -19,6 +39,35 @@ namespace PasteApeart.Handler.lazy
/// <param name="serviceType"></param>
/// <returns></returns>
object LazyGetRequiredService(Type serviceType);
- }
-}
+ /// <summary>
+ ///
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <returns></returns>
+ T LazyGetRequiredService<T>() where T : class;
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="factory"></param>
+ /// <returns></returns>
+ T LazyGetRequiredService<T>(Func<IServiceProvider, object> factory) where T : class;
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <returns></returns>
+ T LazyGetService<T>() where T : class;
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="factory"></param>
+ /// <returns></returns>
+ T LazyGetService<T>(Func<IServiceProvider, object> factory) where T : class;
+ }
+}
\ No newline at end of file
framework/PasteApeart.Handler/lazy/LazyServiceProvider.cs
diff --git a/framework/PasteApeart.Handler/lazy/LazyServiceProvider.cs b/framework/PasteApeart.Handler/lazy/LazyServiceProvider.cs
index 8efbd60..9b35254 100644
--- a/framework/PasteApeart.Handler/lazy/LazyServiceProvider.cs
+++ b/framework/PasteApeart.Handler/lazy/LazyServiceProvider.cs
@@ -88,6 +88,47 @@ namespace PasteApeart.Handler.lazy
new Lazy<object>(() => _componentContext.Resolve(serviceType)))
.Value;
}
+
+ /// <summary>
+ /// 立即解析并返回指定类型的服务,找不到时抛出异常
+ /// </summary>
+ /// <typeparam name="T">服务类型</typeparam>
+ /// <returns>服务实例</returns>
+ public T GetRequiredService<T>() where T : class
+ {
+ return _componentContext.Resolve<T>();
+ }
+
+ /// <summary>
+ /// 立即解析并返回指定类型的服务,找不到时抛出异常
+ /// </summary>
+ /// <param name="serviceType">服务类型</param>
+ /// <returns>服务实例</returns>
+ public object GetRequiredService(Type serviceType)
+ {
+ return _componentContext.Resolve(serviceType);
+ }
+
+ /// <summary>
+ /// 立即解析并返回指定类型的服务,找不到时返回 null
+ /// </summary>
+ /// <typeparam name="T">服务类型</typeparam>
+ /// <returns>服务实例或 null</returns>
+ public T GetService<T>() where T : class
+ {
+ return _componentContext.ResolveOptional<T>();
+ }
+
+ /// <summary>
+ /// 立即解析并返回指定类型的服务,找不到时返回 null
+ /// </summary>
+ /// <param name="serviceType">服务类型</param>
+ /// <returns>服务实例或 null</returns>
+ public object GetService(Type serviceType)
+ {
+ return _componentContext.ResolveOptional(serviceType);
+ }
+
}
framework/PasteApeart.Handler/lazy/readme.md
diff --git a/framework/PasteApeart.Handler/lazy/readme.md b/framework/PasteApeart.Handler/lazy/readme.md
new file mode 100644
index 0000000..61772e3
--- /dev/null
+++ b/framework/PasteApeart.Handler/lazy/readme.md
@@ -0,0 +1,69 @@
+
+## 使用案例代码
+
+
+```csharp
+
+ /// <summary>
+ /// 配置autofac
+ /// </summary>
+ /// <param name="containerBuilder"></param>
+ private static void ConfigureAutofac(ContainerBuilder containerBuilder)
+ {
+
+ /*
+ var host = Host.CreateDefaultBuilder(args)
+ .UseServiceProviderFactory(new AutofacServiceProviderFactory())
+ .ConfigureContainer<ContainerBuilder>(containerBuilder =>
+ {
+ // Autofac 配置
+ ConfigureAutofac(containerBuilder);
+ })
+ .ConfigureWebHostDefaults(webBuilder =>
+ {
+ webBuilder.UseConfiguration(Configuration);
+ webBuilder.UseStartup<Startup>();
+ })
+ .UseSerilog()
+ .Build();
+ */
+
+ // 获取程序集
+ // 1. 注册所有 AppService(启用属性注入)
+ containerBuilder.RegisterAssemblyTypes(typeof(ExampleApeartApplicationModule).Assembly)
+ .Where(t => t.IsClass && !t.IsAbstract && typeof(IAppService).IsAssignableFrom(t))
+ .AsSelf()
+ .AsImplementedInterfaces()
+ .InstancePerLifetimeScope()
+ .PropertiesAutowired(); // 关键:启用属性注入
+
+ // 2. 注册 LazyServiceProvider
+ containerBuilder.RegisterType<LazyServiceProvider>()
+ .InstancePerLifetimeScope()
+ .PropertiesAutowired();
+
+ //// 关键:将所有接口都指向 SqliteDbContext 可以在这里注入,也可以在EF那边那样注入
+ //builder.RegisterType<SqliteDbContext>()
+ // .As<IApBaseDb>()
+ // .As<IApeartDbContext>()
+ // .As<ApBaseDb<SqliteDbContext>>()
+ // .As<ApeartDbContext<SqliteDbContext>>()
+ // .InstancePerLifetimeScope();
+
+ // 3. 注册 Startup 所在程序集的所有 Controller
+ var hostAssembly = typeof(Startup).Assembly;
+ containerBuilder.RegisterAssemblyTypes(hostAssembly)
+ .Where(t => t.IsClass && !t.IsAbstract && t.Name.EndsWith("Controller"))
+ .InstancePerLifetimeScope()
+ .PropertiesAutowired();
+
+ // 4. 如果有其他程序集需要注册,继续添加
+ // var domainAssembly = typeof(ExampleApeartDomainModule).Assembly;
+ // containerBuilder.RegisterAssemblyTypes(domainAssembly)
+ // .Where(t => t.IsClass && !t.IsAbstract)
+ // .AsImplementedInterfaces()
+ // .InstancePerLifetimeScope()
+ // .PropertiesAutowired();
+ }
+
+```
\ No newline at end of file