ソースを参照

Merge branch 'master' of http://git.fwt.com/Hotline/hotline

Dun.Jason 2 年 前
コミット
07fab88ffb
54 ファイル変更141 行追加94 行削除
  1. 14 14
      Hotline.sln
  2. 2 2
      src/Hotline.Api/Controllers/CallController.cs
  3. 1 1
      src/Hotline.Api/Controllers/PbxController.cs
  4. 2 2
      src/Hotline.Api/Controllers/UserController.cs
  5. 1 1
      src/Hotline.CacheManager/BlacklistManager.cs
  6. 1 1
      src/Hotline.Repository.SqlSugar/CallCenter/BlacklistRepository.cs
  7. 1 1
      src/Hotline.Repository.SqlSugar/CallCenter/CallDetailRepository.cs
  8. 2 2
      src/Hotline.Repository.SqlSugar/CallCenter/CallRecordRepository.cs
  9. 2 3
      src/Hotline.Repository.SqlSugar/CallCenter/CallRepository.cs
  10. 1 1
      src/Hotline.Repository.SqlSugar/CallCenter/IvrCategoryRepository.cs
  11. 1 1
      src/Hotline.Repository.SqlSugar/CallCenter/IvrRepository.cs
  12. 1 1
      src/Hotline.Repository.SqlSugar/CallCenter/TelGroupRepository.cs
  13. 1 1
      src/Hotline.Repository.SqlSugar/CallCenter/TelRepository.cs
  14. 1 1
      src/Hotline.Repository.SqlSugar/CallCenter/TelRestRepository.cs
  15. 1 1
      src/Hotline.Repository.SqlSugar/CallCenter/WorkRepository.cs
  16. 21 0
      src/Hotline.Repository.SqlSugar/EQueryFilter.cs
  17. 10 1
      src/Hotline.Repository.SqlSugar/SqlSugarStartupExtensions.cs
  18. 2 2
      src/Hotline.Repository.SqlSugar/System/SystemAuthorityRepository.cs
  19. 1 1
      src/Hotline.Repository.SqlSugar/System/SystemButtonRepository.cs
  20. 1 1
      src/Hotline.Repository.SqlSugar/System/SystemDataAuthorityRepository.cs
  21. 9 9
      src/Hotline.Repository.SqlSugar/System/SystemMenuRepository.cs
  22. 2 2
      src/Hotline.Repository.SqlSugar/System/SystemOrganizeRepository.cs
  23. 1 1
      src/Hotline.Repository.SqlSugar/System/SystemSettingGroupRepository.cs
  24. 1 1
      src/Hotline.Repository.SqlSugar/System/SystemSettingRepository.cs
  25. 1 1
      src/Hotline.Repository.SqlSugar/User/OrgUserRepository.cs
  26. 1 1
      src/Hotline.Repository.SqlSugar/User/UserFastMenuRepository.cs
  27. 2 2
      src/Hotline.Repository.SqlSugar/User/UserRepository.cs
  28. 1 0
      src/Hotline/CallCenter/BlackLists/Blacklist.cs
  29. 1 0
      src/Hotline/CallCenter/Calls/Call.cs
  30. 1 0
      src/Hotline/CallCenter/Calls/CallDetail.cs
  31. 1 0
      src/Hotline/CallCenter/Calls/CallRecord.cs
  32. 1 0
      src/Hotline/CallCenter/Ivrs/Ivr.cs
  33. 1 0
      src/Hotline/CallCenter/Ivrs/IvrCategory.cs
  34. 1 0
      src/Hotline/CallCenter/Tels/Tel.cs
  35. 1 0
      src/Hotline/CallCenter/Tels/TelGroup.cs
  36. 1 0
      src/Hotline/CallCenter/Tels/TelRest.cs
  37. 17 29
      src/Hotline/README.md
  38. 1 0
      src/Hotline/Settings/OrgUser.cs
  39. 1 0
      src/Hotline/Settings/SystemAuthority.cs
  40. 1 0
      src/Hotline/Settings/SystemButton.cs
  41. 1 0
      src/Hotline/Settings/SystemDataAuthority.cs
  42. 1 0
      src/Hotline/Settings/SystemMenu.cs
  43. 1 0
      src/Hotline/Settings/SystemOrganize.cs
  44. 1 0
      src/Hotline/Settings/SystemSetting.cs
  45. 1 0
      src/Hotline/Settings/SystemSettingGroup.cs
  46. 1 0
      src/Hotline/Settings/UserFastMenu.cs
  47. 1 0
      src/Hotline/Users/User.cs
  48. 1 0
      src/Hotline/Users/Work.cs
  49. 8 0
      src/XF.Domain.Repository/AggregateRoot.cs
  50. 3 2
      src/XF.Domain.Repository/Entity.cs
  51. 5 1
      src/XF.Domain.Repository/XF.Domain.Repository.csproj
  52. 0 5
      src/XF.Domain/Entities/IAggregateRoot.cs
  53. 3 1
      src/XF.Domain/Entities/IDataPermission.cs
  54. 1 1
      src/XF.Domain/XF.Domain.csproj

+ 14 - 14
Hotline.sln

@@ -17,26 +17,26 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "04_Presentation", "04_Prese
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{08D63205-1445-430F-A4AB-EF1744E3AC11}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hotline.Share", "src\Hotline.Share\Hotline.Share.csproj", "{8BD628AB-6C0C-4982-8C31-0589CA5914C2}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Hotline.Share", "src\Hotline.Share\Hotline.Share.csproj", "{8BD628AB-6C0C-4982-8C31-0589CA5914C2}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hotline.Application", "src\Hotline.Application\Hotline.Application.csproj", "{B77B8550-5947-4521-98E3-8B361211EFF6}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Hotline.Application", "src\Hotline.Application\Hotline.Application.csproj", "{B77B8550-5947-4521-98E3-8B361211EFF6}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hotline.Application.Contracts", "src\Hotline.Application.Contracts\Hotline.Application.Contracts.csproj", "{4148C990-5F62-4156-8B45-231D8BFB417B}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XF.Domain", "src\XF.Domain\XF.Domain.csproj", "{A6FFD23B-E5E2-4C3F-89F2-77A9FC242048}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Hotline.Application.Contracts", "src\Hotline.Application.Contracts\Hotline.Application.Contracts.csproj", "{4148C990-5F62-4156-8B45-231D8BFB417B}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XF.Domain.Repository", "src\XF.Domain.Repository\XF.Domain.Repository.csproj", "{651A0411-0D52-4B15-9A08-E0692FFE5FA2}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hotline.CacheManager", "src\Hotline.CacheManager\Hotline.CacheManager.csproj", "{7D9CBBE9-9BD9-4397-8BBD-CA2C05BA47D4}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Hotline.CacheManager", "src\Hotline.CacheManager\Hotline.CacheManager.csproj", "{7D9CBBE9-9BD9-4397-8BBD-CA2C05BA47D4}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hotline.Repository.SqlSugar", "src\Hotline.Repository.SqlSugar\Hotline.Repository.SqlSugar.csproj", "{AD448062-EE81-4FA9-A39D-AECBF48357CB}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Hotline.Repository.SqlSugar", "src\Hotline.Repository.SqlSugar\Hotline.Repository.SqlSugar.csproj", "{AD448062-EE81-4FA9-A39D-AECBF48357CB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hotline.Api", "src\Hotline.Api\Hotline.Api.csproj", "{EE8D37CB-E40B-4513-A63F-06119BC192E7}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Hotline.Api", "src\Hotline.Api\Hotline.Api.csproj", "{EE8D37CB-E40B-4513-A63F-06119BC192E7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hotline.NewRock", "src\Hotline.NewRock\Hotline.NewRock.csproj", "{03309E0B-FB0B-43E8-99C6-B5372373C0CC}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Hotline.NewRock", "src\Hotline.NewRock\Hotline.NewRock.csproj", "{03309E0B-FB0B-43E8-99C6-B5372373C0CC}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NewRock.Sdk", "src\NewRock.Sdk\NewRock.Sdk.csproj", "{4695CC01-5C32-44B2-BC41-3280D20B0584}"
 EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XF.Domain", "src\XF.Domain\XF.Domain.csproj", "{48BA96D1-3EC3-46EA-AB48-EE24DBCB63FC}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -59,10 +59,6 @@ Global
 		{4148C990-5F62-4156-8B45-231D8BFB417B}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{4148C990-5F62-4156-8B45-231D8BFB417B}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{4148C990-5F62-4156-8B45-231D8BFB417B}.Release|Any CPU.Build.0 = Release|Any CPU
-		{A6FFD23B-E5E2-4C3F-89F2-77A9FC242048}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{A6FFD23B-E5E2-4C3F-89F2-77A9FC242048}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{A6FFD23B-E5E2-4C3F-89F2-77A9FC242048}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{A6FFD23B-E5E2-4C3F-89F2-77A9FC242048}.Release|Any CPU.Build.0 = Release|Any CPU
 		{651A0411-0D52-4B15-9A08-E0692FFE5FA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{651A0411-0D52-4B15-9A08-E0692FFE5FA2}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{651A0411-0D52-4B15-9A08-E0692FFE5FA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -87,6 +83,10 @@ Global
 		{4695CC01-5C32-44B2-BC41-3280D20B0584}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{4695CC01-5C32-44B2-BC41-3280D20B0584}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{4695CC01-5C32-44B2-BC41-3280D20B0584}.Release|Any CPU.Build.0 = Release|Any CPU
+		{48BA96D1-3EC3-46EA-AB48-EE24DBCB63FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{48BA96D1-3EC3-46EA-AB48-EE24DBCB63FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{48BA96D1-3EC3-46EA-AB48-EE24DBCB63FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{48BA96D1-3EC3-46EA-AB48-EE24DBCB63FC}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -100,13 +100,13 @@ Global
 		{8BD628AB-6C0C-4982-8C31-0589CA5914C2} = {E5F4DA20-46D4-4269-8A0B-2BC750D6A702}
 		{B77B8550-5947-4521-98E3-8B361211EFF6} = {C43AAC75-963F-41F1-A49C-41D831A55FC5}
 		{4148C990-5F62-4156-8B45-231D8BFB417B} = {C43AAC75-963F-41F1-A49C-41D831A55FC5}
-		{A6FFD23B-E5E2-4C3F-89F2-77A9FC242048} = {D041C554-B78E-4AAF-B597-E309DC8EEF4F}
 		{651A0411-0D52-4B15-9A08-E0692FFE5FA2} = {D041C554-B78E-4AAF-B597-E309DC8EEF4F}
 		{7D9CBBE9-9BD9-4397-8BBD-CA2C05BA47D4} = {D041C554-B78E-4AAF-B597-E309DC8EEF4F}
 		{AD448062-EE81-4FA9-A39D-AECBF48357CB} = {D041C554-B78E-4AAF-B597-E309DC8EEF4F}
 		{EE8D37CB-E40B-4513-A63F-06119BC192E7} = {25C73963-4D5E-4654-804A-D2E2D360134B}
 		{03309E0B-FB0B-43E8-99C6-B5372373C0CC} = {D041C554-B78E-4AAF-B597-E309DC8EEF4F}
 		{4695CC01-5C32-44B2-BC41-3280D20B0584} = {D041C554-B78E-4AAF-B597-E309DC8EEF4F}
+		{48BA96D1-3EC3-46EA-AB48-EE24DBCB63FC} = {D041C554-B78E-4AAF-B597-E309DC8EEF4F}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {4B8EA790-BD13-4422-8D63-D6DBB77B823F}

+ 2 - 2
src/Hotline.Api/Controllers/CallController.cs

@@ -109,7 +109,7 @@ namespace Hotline.Api.Controllers
         [HttpPost("blacklist")]
         public async Task AddBlacklist([FromBody] AddBlacklistDto dto)
         {
-            var exists = await _blacklistRepository.AnyAsync(d => !d.IsDeleted && d.PhoneNo == dto.PhoneNo);
+            var exists = await _blacklistRepository.AnyAsync(d => d.PhoneNo == dto.PhoneNo);
             if (exists) return;
             var blacklist = _mapper.Map<Blacklist>(dto);
             await _blacklistDomainService.AddAsync(blacklist, HttpContext.RequestAborted);
@@ -136,7 +136,7 @@ namespace Hotline.Api.Controllers
         public async Task<PagedDto<Blacklist>> QueryPaged([FromQuery] BlacklistPagedDto dto)
         {
             var (total, items) = await _blacklistRepository.QueryPagedAsync(
-                d => !d.IsDeleted,
+                d => true,
                 d => d.OrderByDescending(x => x.CreationTime),
                 dto.PageIndex,
                 dto.PageSize,

+ 1 - 1
src/Hotline.Api/Controllers/PbxController.cs

@@ -110,7 +110,7 @@ namespace Hotline.Api.Controllers
         [HttpGet("query-tels")]
         public async Task<IReadOnlyList<TelDto>> QueryTels()
         {
-            var tels = await _telRepository.QueryExtAsync(d => !d.IsDeleted, d => d.Includes(x => x.Groups));
+            var tels = await _telRepository.QueryExtAsync(d => true, d => d.Includes(x => x.Groups));
             return _mapper.Map<IReadOnlyList<TelDto>>(tels);
         }
 

+ 2 - 2
src/Hotline.Api/Controllers/UserController.cs

@@ -72,7 +72,7 @@ public class UserController : BaseController
     {
         if (string.IsNullOrEmpty(telNo))
         {
-            var user = await _userRepository.GetAsync(d => !d.IsDeleted && d.Id == _sessionContext.RequiredUserId,
+            var user = await _userRepository.GetAsync(d => d.Id == _sessionContext.RequiredUserId,
                 HttpContext.RequestAborted);
             if (user == null)
                 throw UserFriendlyException.SameMessage("无效用户编号");
@@ -103,7 +103,7 @@ public class UserController : BaseController
     public async Task<PagedDto<UserDto>> QueryPaged([FromQuery] UserPagedDto dto)
     {
         var (total, items) = await _userRepository.QueryPagedAsync(
-            d => !d.IsDeleted,
+            d => true,
             d => d.OrderByDescending(x => x.CreationTime),
             dto.PageIndex,
             dto.PageSize,

+ 1 - 1
src/Hotline.CacheManager/BlacklistManager.cs

@@ -42,7 +42,7 @@ namespace Hotline.CacheManager
                 using var scope = _serviceScopeFactory.CreateScope();
                 var blacklistRepository = scope.ServiceProvider.GetService<IBlacklistRepository>();
                 var expiredBlackListItems =
-                    await blacklistRepository!.QueryAsync(d => !d.IsDeleted && d.Expired <= DateTime.Now);
+                    await blacklistRepository!.QueryAsync(d => d.Expired <= DateTime.Now);
                 foreach (var blacklistItem in expiredBlackListItems)
                 {
                     await blacklistRepository.RemoveAsync(blacklistItem, true, stoppingToken);

+ 1 - 1
src/Hotline.Repository.SqlSugar/BlacklistRepository.cs → src/Hotline.Repository.SqlSugar/CallCenter/BlacklistRepository.cs

@@ -2,7 +2,7 @@
 using SqlSugar;
 using XF.Domain.Dependency;
 
-namespace Hotline.Repository.SqlSugar
+namespace Hotline.Repository.SqlSugar.CallCenter
 {
     public class BlacklistRepository : BaseRepository<Blacklist>, IBlacklistRepository, IScopeDependency
     {

+ 1 - 1
src/Hotline.Repository.SqlSugar/CallDetailRepository.cs → src/Hotline.Repository.SqlSugar/CallCenter/CallDetailRepository.cs

@@ -2,7 +2,7 @@
 using SqlSugar;
 using XF.Domain.Dependency;
 
-namespace Hotline.Repository.SqlSugar
+namespace Hotline.Repository.SqlSugar.CallCenter
 {
     public class CallDetailRepository : BaseRepository<CallDetail>, ICallDetailRepository, IScopeDependency
     {

+ 2 - 2
src/Hotline.Repository.SqlSugar/CallRecordRepository.cs → src/Hotline.Repository.SqlSugar/CallCenter/CallRecordRepository.cs

@@ -2,9 +2,9 @@
 using SqlSugar;
 using XF.Domain.Dependency;
 
-namespace Hotline.Repository.SqlSugar
+namespace Hotline.Repository.SqlSugar.CallCenter
 {
-    public class CallRecordRepository: BaseRepository<CallRecord>, ICallRecordRepository, IScopeDependency
+    public class CallRecordRepository : BaseRepository<CallRecord>, ICallRecordRepository, IScopeDependency
     {
         public CallRecordRepository(ISugarUnitOfWork<HotlineDbContext> uow) : base(uow)
         {

+ 2 - 3
src/Hotline.Repository.SqlSugar/CallRepository.cs → src/Hotline.Repository.SqlSugar/CallCenter/CallRepository.cs

@@ -3,7 +3,7 @@ using Hotline.Share.Enums;
 using SqlSugar;
 using XF.Domain.Dependency;
 
-namespace Hotline.Repository.SqlSugar
+namespace Hotline.Repository.SqlSugar.CallCenter
 {
     public class CallRepository : BaseRepository<Call>, ICallRepository, IScopeDependency
     {
@@ -16,8 +16,7 @@ namespace Hotline.Repository.SqlSugar
             var a = await Db.Queryable<Call>()
                 .Includes(d => d.CallDetails)
                 //.Where(d => d.CallDetails.Any(x => x.EventName == "BYE") 
-                .Where(d => !d.IsDeleted
-                            && d.CallStatus == ECallStatus.Bye
+                .Where(d => d.CallStatus == ECallStatus.Bye
                             && SqlFunc.Subqueryable<CallDetail>().Where(s => s.CallId == d.Id && s.EventName == "BYE" && s.CreationTime > datetime).Any())
                 .OrderBy(d => d.CreationTime)
                 .Take(10)

+ 1 - 1
src/Hotline.Repository.SqlSugar/IvrCategoryRepository.cs → src/Hotline.Repository.SqlSugar/CallCenter/IvrCategoryRepository.cs

@@ -2,7 +2,7 @@
 using SqlSugar;
 using XF.Domain.Dependency;
 
-namespace Hotline.Repository.SqlSugar
+namespace Hotline.Repository.SqlSugar.CallCenter
 {
     public class IvrCategoryRepository : BaseRepository<IvrCategory>, IIvrCategoryRepository, IScopeDependency
     {

+ 1 - 1
src/Hotline.Repository.SqlSugar/IvrRepository.cs → src/Hotline.Repository.SqlSugar/CallCenter/IvrRepository.cs

@@ -2,7 +2,7 @@
 using SqlSugar;
 using XF.Domain.Dependency;
 
-namespace Hotline.Repository.SqlSugar
+namespace Hotline.Repository.SqlSugar.CallCenter
 {
     public class IvrRepository : BaseRepository<Ivr>, IIvrRepository, IScopeDependency
     {

+ 1 - 1
src/Hotline.Repository.SqlSugar/TelGroupRepository.cs → src/Hotline.Repository.SqlSugar/CallCenter/TelGroupRepository.cs

@@ -2,7 +2,7 @@
 using SqlSugar;
 using XF.Domain.Dependency;
 
-namespace Hotline.Repository.SqlSugar;
+namespace Hotline.Repository.SqlSugar.CallCenter;
 
 public class TelGroupRepository : BaseRepository<TelGroup>, ITelGroupRepository, IScopeDependency
 {

+ 1 - 1
src/Hotline.Repository.SqlSugar/TelRepository.cs → src/Hotline.Repository.SqlSugar/CallCenter/TelRepository.cs

@@ -2,7 +2,7 @@
 using SqlSugar;
 using XF.Domain.Dependency;
 
-namespace Hotline.Repository.SqlSugar
+namespace Hotline.Repository.SqlSugar.CallCenter
 {
     public class TelRepository : BaseRepository<Tel>, ITelRepository, IScopeDependency
     {

+ 1 - 1
src/Hotline.Repository.SqlSugar/TelRestRepository.cs → src/Hotline.Repository.SqlSugar/CallCenter/TelRestRepository.cs

@@ -2,7 +2,7 @@
 using SqlSugar;
 using XF.Domain.Dependency;
 
-namespace Hotline.Repository.SqlSugar
+namespace Hotline.Repository.SqlSugar.CallCenter
 {
     public class TelRestRepository : BaseRepository<TelRest>, ITelRestRepository, IScopeDependency
     {

+ 1 - 1
src/Hotline.Repository.SqlSugar/WorkRepository.cs → src/Hotline.Repository.SqlSugar/CallCenter/WorkRepository.cs

@@ -2,7 +2,7 @@
 using SqlSugar;
 using XF.Domain.Dependency;
 
-namespace Hotline.Repository.SqlSugar;
+namespace Hotline.Repository.SqlSugar.CallCenter;
 
 public class WorkRepository : BaseRepository<Work>, IWorkRepository, IScopeDependency
 {

+ 21 - 0
src/Hotline.Repository.SqlSugar/EQueryFilter.cs

@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Hotline.Repository.SqlSugar
+{
+    public enum EQueryFilter
+    {
+        /// <summary>
+        /// 数据创建者只看
+        /// </summary>
+        CreatorOnly = 0,
+
+        /// <summary>
+        /// 自己及下级部门
+        /// </summary>
+        SelfAndSubDepartment = 1,
+    }
+}

+ 10 - 1
src/Hotline.Repository.SqlSugar/SqlSugarStartupExtensions.cs

@@ -99,7 +99,10 @@ namespace Hotline.Repository.SqlSugar
                     db.Aop.OnExecutingChangeSql = (sql, pars) => //可以修改SQL和参数的值
                     {
                         //sql=newsql
-                        //foreach(var p in pars) //修改
+                        foreach (var p in pars) //修改
+                        {
+
+                        }
 
                         return new KeyValuePair<string, SugarParameter[]>(sql, pars);
                     };
@@ -161,6 +164,12 @@ namespace Hotline.Repository.SqlSugar
                 });
             ISugarUnitOfWork<HotlineDbContext> context = new SugarUnitOfWork<HotlineDbContext>(sqlSugar);
 
+            context.Db.QueryFilter.Add(new SqlFilterItem
+            {
+                FilterValue = d => new SqlFilterResult { Sql = " IsDeleted=0 " },
+                IsJoinQuery = true
+            }
+            );
             ////全局过滤
             //var deletionTypes = AppDomain.CurrentDomain.GetAssemblies().ToList()
             //    .SelectMany(d=>d.GetTypes()).Where(d=>d.GetInterfaces()/*.Any(x=>x == typeof(ISoftDelete))*/);//todo  找出即实现ISoftDelete 又实现IEntity

+ 2 - 2
src/Hotline.Repository.SqlSugar/SystemAuthorityRepository.cs → src/Hotline.Repository.SqlSugar/System/SystemAuthorityRepository.cs

@@ -2,7 +2,7 @@
 using SqlSugar;
 using XF.Domain.Dependency;
 
-namespace Hotline.Repository.SqlSugar
+namespace Hotline.Repository.SqlSugar.System
 {
     public class SystemAuthorityRepository : BaseRepository<SystemAuthority>, ISystemAuthorityRepository, IScopeDependency
     {
@@ -25,7 +25,7 @@ namespace Hotline.Repository.SqlSugar
                 menuarr.AddRange(item.SystemMenuArr);
             }
             var newmenu = menuarr.Distinct().ToList();
-            return await Db.Queryable<SystemMenu>().Where(x => menuarr.Contains(x.PermissionCode)).OrderBy(x=>x.DisplayOrder).ToTreeAsync(x => x.children, it => it.ParentId, "");         
+            return await Db.Queryable<SystemMenu>().Where(x => menuarr.Contains(x.PermissionCode)).OrderBy(x => x.DisplayOrder).ToTreeAsync(x => x.children, it => it.ParentId, "");
         }
 
         /// <summary>

+ 1 - 1
src/Hotline.Repository.SqlSugar/SystemButtonRepository.cs → src/Hotline.Repository.SqlSugar/System/SystemButtonRepository.cs

@@ -7,7 +7,7 @@ using System.Text;
 using System.Threading.Tasks;
 using XF.Domain.Dependency;
 
-namespace Hotline.Repository.SqlSugar
+namespace Hotline.Repository.SqlSugar.System
 {
     public class SystemButtonRepository : BaseRepository<SystemButton>, ISystemButtonRepository, IScopeDependency
     {

+ 1 - 1
src/Hotline.Repository.SqlSugar/SystemDataAuthorityRepository.cs → src/Hotline.Repository.SqlSugar/System/SystemDataAuthorityRepository.cs

@@ -2,7 +2,7 @@
 using SqlSugar;
 using XF.Domain.Dependency;
 
-namespace Hotline.Repository.SqlSugar
+namespace Hotline.Repository.SqlSugar.System
 {
     public class SystemDataAuthorityRepository : BaseRepository<SystemDataAuthority>, ISystemDataAuthorityRepository, IScopeDependency
     {

+ 9 - 9
src/Hotline.Repository.SqlSugar/SystemMenuRepository.cs → src/Hotline.Repository.SqlSugar/System/SystemMenuRepository.cs

@@ -9,7 +9,7 @@ using System.Text;
 using System.Threading.Tasks;
 using XF.Domain.Dependency;
 
-namespace Hotline.Repository.SqlSugar
+namespace Hotline.Repository.SqlSugar.System
 {
     public class SystemMenuRepository : BaseRepository<SystemMenu>, ISystemMenuRepository, IScopeDependency
     {
@@ -20,8 +20,8 @@ namespace Hotline.Repository.SqlSugar
         public async Task<IReadOnlyList<SystemMenu>> GetSystemMenus()
         {
             var list = await Db.Queryable<SystemMenu>()
-                .OrderBy(x=>x.DisplayOrder)
-                .Includes(t=>t.ButtonArr)
+                .OrderBy(x => x.DisplayOrder)
+                .Includes(t => t.ButtonArr)
                 .ToTreeAsync(x => x.children, it => it.ParentId, "");
             return list;
         }
@@ -32,7 +32,7 @@ namespace Hotline.Repository.SqlSugar
         /// </summary>
         /// <param name="roles"></param>
         /// <returns></returns>
-        public async Task<IReadOnlyList<SystemMenu>> GetFastMenu(string[] roles,string userId)
+        public async Task<IReadOnlyList<SystemMenu>> GetFastMenu(string[] roles, string userId)
         {
             var list = await Db.Queryable<SystemAuthority>()
                 .Where(x => roles.Contains(x.RoleCode)).ToListAsync();
@@ -43,11 +43,11 @@ namespace Hotline.Repository.SqlSugar
             }
             var model = await Db.Queryable<UserFastMenu>().FirstAsync(x => x.UserId == userId);
             var perList = new List<string>();
-            if (model!=null)
+            if (model != null)
             {
                 perList = permissionarr.Except(model.FastMenuArr).ToList();
             }
-            if (perList.Count>0)
+            if (perList.Count > 0)
             {
                 //过滤已存在的
                 var menulist = await Db.Queryable<SystemMenu>()
@@ -60,7 +60,7 @@ namespace Hotline.Repository.SqlSugar
                     .Where(x => x.IsFast).ToListAsync();
                 return menulist;
             }
-            
+
         }
 
         /// <summary>
@@ -69,7 +69,7 @@ namespace Hotline.Repository.SqlSugar
         /// <param name="roles"></param>
         /// <param name="userId"></param>
         /// <returns></returns>
-        public async Task<IReadOnlyList<SystemMenu>> GetMyFastMenu(string[] roles,string userId)
+        public async Task<IReadOnlyList<SystemMenu>> GetMyFastMenu(string[] roles, string userId)
         {
             var list = await Db.Queryable<SystemAuthority>()
                 .Where(x => roles.Contains(x.RoleCode)).ToListAsync();
@@ -79,7 +79,7 @@ namespace Hotline.Repository.SqlSugar
                 permissionarr.AddRange(item.SystemMenuArr);
             }
             var model = await Db.Queryable<UserFastMenu>().FirstAsync(x => x.UserId == userId);
-            if (model!=null)
+            if (model != null)
             {
                 var perList = permissionarr.Intersect(model.FastMenuArr).ToList();
                 return await Db.Queryable<SystemMenu>().Where(x => perList.Contains(x.PermissionCode)).ToListAsync();

+ 2 - 2
src/Hotline.Repository.SqlSugar/SystemOrganizeRepository.cs → src/Hotline.Repository.SqlSugar/System/SystemOrganizeRepository.cs

@@ -2,7 +2,7 @@
 using SqlSugar;
 using XF.Domain.Dependency;
 
-namespace Hotline.Repository.SqlSugar
+namespace Hotline.Repository.SqlSugar.System
 {
     public class SystemOrganizeRepository : BaseRepository<SystemOrganize>, ISystemOrganizeRepository, IScopeDependency
     {
@@ -21,7 +21,7 @@ namespace Hotline.Repository.SqlSugar
         public async Task<IReadOnlyList<SystemOrganize>> GetCanUseOrg()
         {
             var list = await Db.Queryable<SystemOrganize>()
-                .Where(x=>x.IsEnable)
+                .Where(x => x.IsEnable)
                 .ToTreeAsync(x => x.children, it => it.ParentId, "");
             return list;
         }

+ 1 - 1
src/Hotline.Repository.SqlSugar/SystemSettingGroupRepository.cs → src/Hotline.Repository.SqlSugar/System/SystemSettingGroupRepository.cs

@@ -2,7 +2,7 @@
 using SqlSugar;
 using XF.Domain.Dependency;
 
-namespace Hotline.Repository.SqlSugar
+namespace Hotline.Repository.SqlSugar.System
 {
     public class SystemSettingGroupRepository : BaseRepository<SystemSettingGroup>, ISystemSettingGroupRepository, IScopeDependency
     {

+ 1 - 1
src/Hotline.Repository.SqlSugar/SystemSettingRepository.cs → src/Hotline.Repository.SqlSugar/System/SystemSettingRepository.cs

@@ -2,7 +2,7 @@
 using SqlSugar;
 using XF.Domain.Dependency;
 
-namespace Hotline.Repository.SqlSugar
+namespace Hotline.Repository.SqlSugar.System
 {
     public class SystemSettingRepository : BaseRepository<SystemSetting>, ISystemSettingRepository, IScopeDependency
     {

+ 1 - 1
src/Hotline.Repository.SqlSugar/OrgUserRepository.cs → src/Hotline.Repository.SqlSugar/User/OrgUserRepository.cs

@@ -3,7 +3,7 @@ using Hotline.Settings;
 using SqlSugar;
 using XF.Domain.Dependency;
 
-namespace Hotline.Repository.SqlSugar
+namespace Hotline.Repository.SqlSugar.User
 {
     public class OrgUserRepository : BaseRepository<OrgUser>, IOrgUserRepository, IScopeDependency
     {

+ 1 - 1
src/Hotline.Repository.SqlSugar/UserFastMenuRepository.cs → src/Hotline.Repository.SqlSugar/User/UserFastMenuRepository.cs

@@ -2,7 +2,7 @@
 using SqlSugar;
 using XF.Domain.Dependency;
 
-namespace Hotline.Repository.SqlSugar
+namespace Hotline.Repository.SqlSugar.User
 {
     public class UserFastMenuRepository : BaseRepository<UserFastMenu>, IUserFastMenuRepository, IScopeDependency
     {

+ 2 - 2
src/Hotline.Repository.SqlSugar/UserRepository.cs → src/Hotline.Repository.SqlSugar/User/UserRepository.cs

@@ -2,9 +2,9 @@
 using SqlSugar;
 using XF.Domain.Dependency;
 
-namespace Hotline.Repository.SqlSugar;
+namespace Hotline.Repository.SqlSugar.User;
 
-public class UserRepository : BaseRepository<User>, IUserRepository, IScopeDependency
+public class UserRepository : BaseRepository<Users.User>, IUserRepository, IScopeDependency
 {
     public UserRepository(ISugarUnitOfWork<HotlineDbContext> uow) : base(uow)
     {

+ 1 - 0
src/Hotline/CallCenter/BlackLists/Blacklist.cs

@@ -1,4 +1,5 @@
 using XF.Domain.Entities;
+using XF.Domain.Repository;
 
 namespace Hotline.CallCenter.BlackLists;
 

+ 1 - 0
src/Hotline/CallCenter/Calls/Call.cs

@@ -2,6 +2,7 @@
 using Hotline.Share.Enums;
 using SqlSugar;
 using XF.Domain.Entities;
+using XF.Domain.Repository;
 
 namespace Hotline.CallCenter.Calls
 {

+ 1 - 0
src/Hotline/CallCenter/Calls/CallDetail.cs

@@ -1,6 +1,7 @@
 using Hotline.Share.Enums;
 using SqlSugar;
 using XF.Domain.Entities;
+using XF.Domain.Repository;
 
 namespace Hotline.CallCenter.Calls;
 

+ 1 - 0
src/Hotline/CallCenter/Calls/CallRecord.cs

@@ -2,6 +2,7 @@
 using Hotline.Share.Enums;
 using SqlSugar;
 using XF.Domain.Entities;
+using XF.Domain.Repository;
 
 namespace Hotline.CallCenter.Calls
 {

+ 1 - 0
src/Hotline/CallCenter/Ivrs/Ivr.cs

@@ -2,6 +2,7 @@
 using Hotline.Share.Enums;
 using SqlSugar;
 using XF.Domain.Entities;
+using XF.Domain.Repository;
 
 namespace Hotline.CallCenter.Ivrs;
 

+ 1 - 0
src/Hotline/CallCenter/Ivrs/IvrCategory.cs

@@ -1,5 +1,6 @@
 using SqlSugar;
 using XF.Domain.Entities;
+using XF.Domain.Repository;
 
 namespace Hotline.CallCenter.Ivrs;
 

+ 1 - 0
src/Hotline/CallCenter/Tels/Tel.cs

@@ -1,6 +1,7 @@
 using System.ComponentModel;
 using SqlSugar;
 using XF.Domain.Entities;
+using XF.Domain.Repository;
 
 namespace Hotline.CallCenter.Tels;
 

+ 1 - 0
src/Hotline/CallCenter/Tels/TelGroup.cs

@@ -2,6 +2,7 @@
 using Hotline.Share.Enums;
 using SqlSugar;
 using XF.Domain.Entities;
+using XF.Domain.Repository;
 
 namespace Hotline.CallCenter.Tels;
 

+ 1 - 0
src/Hotline/CallCenter/Tels/TelRest.cs

@@ -1,6 +1,7 @@
 using System.ComponentModel;
 using SqlSugar;
 using XF.Domain.Entities;
+using XF.Domain.Repository;
 
 namespace Hotline.CallCenter.Tels
 {

+ 17 - 29
src/Hotline/README.md

@@ -1,31 +1,19 @@
-### v1.0
+#### 代码编写规范
 
-#### 需求
-
-##### 功能
-
-签入	分机注册(可选择注册时同步对IP话机进行注册登录),可选择签入角色、技能组等;
-签出	分机注销(可选择注销时同步登出IP话机分机);
-示忙	分机示忙,示忙后不能接听电话,可以外拨电话;可通过软电话实现示忙功能,也可通过IP话机组合键的方式实现示忙功能;
-示闲	分机示闲,对应示忙,示闲后可正常接听电话;可通过软电话实现示闲功能,也可通过IP话机组合键的方式实现示闲功能;
-应答	来电时可通过此方法接听电话;
-保持通话	通话中通过此方法实现保持通话;
-取消保持	通话中通过此方法实现取消保持通话,与保持通话对应;
-转接	通话中通过此方法实现转接功能,转接可选择转接内部分机、内部技能组、内部IVR或外线号码;
-三方会议	三方或多方会议
-抢接	来电转分机后一直振铃,其他分机可以通过抢接功能实现接听电话的功能;
-呼出	电话呼出,可分为内线和外线;
-挂断	通过此方法挂断电话;
-评价	接通电话时分机主动发起评价事件,局端收到评价语音播报;
-黑名单	可设置电话黑名单,可选择时间段,超过时间范围则不受黑名单规则限制;
-白名单	可设置电话白名单,白名单具备优先接通权限或能够转对应的技能组;
-转外线	可配置非工作时间转外线手机号码功能(手机号码可能为多个);
-
-##### 事件
-
-通话事件	电话呼入、呼出时触发通话事件,并返回随叫参数,如唯一标识、被叫号码、主叫号码(来电号码)、电话方向、状态(RINGING等)、等待时长(秒)等;
-状态改变事件	实时获取状态;签入、签出、示忙、示闲、接听电话等功能操作时,分机状态对应调整改变并把事件推送到对应分机;可获取某一个分机状态,也可获取所有分机状态;
-队列等待事件	实时全量获取当前队列等待通话列表;字段包括但不限于:唯一标识、主叫号码、被叫号码、群组/IVR、等待时长(秒)等;
-通话记录获取	获取相关通话记录和录音;通话记录字段应包括但不限于:唯一标识、电话方向、主叫号码、被叫号码、响应分机、群组号码、电话呼入时间、进入IVR时间、离开IVR时间、进群组时间、离开群组时间、排队等待时间(秒)、坐席振铃开始时间、坐席接通时间、挂机时间、通话时长(秒)、外线录音文件路径、内线录音文件路径、完整录音文件路径、挂机方向(外线挂机、坐席挂机)等;
-评价记录获取	获取满意度评价记录;字段包括但不限于:唯一标识、主叫号码、被叫号码、响应分机、评价时间、评价结果等;
+##### 1. 参照微软推荐编码规范及约定
+https://docs.microsoft.com/zh-cn/dotnet/csharp/fundamentals/coding-style/identifier-names
+https://docs.microsoft.com/zh-cn/dotnet/csharp/fundamentals/coding-style/coding-conventions
+https://docs.microsoft.com/zh-cn/dotnet/standard/design-guidelines/naming-guidelines
 
+##### 2. 该项目扩展规范
+* 枚举:命名以大写E为前缀,在文件列表中可以一目了然
+* 方法命名方式: 
+新增:Addxxx 
+删除:Removexxx 
+修改:Updatexxx 
+查询单条数据:Getxxx 
+查询多条数据:Queryxxx 
+查询所有数据:QueryAllxxx 
+异步方法以Async为后缀:GetxxxAsync 
+* WebApi和Web项目的Action都尽量采用异步方法,但命名不加Async后缀(因为此处的调用方不以Action命名来调用,而是以路由规则来访问)
+* 字段以'_'加小写字母为前缀:_orderDomainService

+ 1 - 0
src/Hotline/Settings/OrgUser.cs

@@ -1,5 +1,6 @@
 using System.ComponentModel;
 using XF.Domain.Entities;
+using XF.Domain.Repository;
 
 namespace Hotline.Settings
 {

+ 1 - 0
src/Hotline/Settings/SystemAuthority.cs

@@ -1,6 +1,7 @@
 using SqlSugar;
 using System.ComponentModel;
 using XF.Domain.Entities;
+using XF.Domain.Repository;
 
 namespace Hotline.Settings
 {

+ 1 - 0
src/Hotline/Settings/SystemButton.cs

@@ -1,6 +1,7 @@
 using SqlSugar;
 using System.ComponentModel;
 using XF.Domain.Entities;
+using XF.Domain.Repository;
 
 namespace Hotline.Settings
 {

+ 1 - 0
src/Hotline/Settings/SystemDataAuthority.cs

@@ -2,6 +2,7 @@
 using Hotline.Share.Enums;
 using System.ComponentModel;
 using XF.Domain.Entities;
+using XF.Domain.Repository;
 
 namespace Hotline.Settings
 {

+ 1 - 0
src/Hotline/Settings/SystemMenu.cs

@@ -2,6 +2,7 @@
 using SqlSugar;
 using System.ComponentModel;
 using XF.Domain.Entities;
+using XF.Domain.Repository;
 
 namespace Hotline.Settings
 {

+ 1 - 0
src/Hotline/Settings/SystemOrganize.cs

@@ -2,6 +2,7 @@
 using SqlSugar;
 using System.ComponentModel;
 using XF.Domain.Entities;
+using XF.Domain.Repository;
 
 namespace Hotline.Settings
 {

+ 1 - 0
src/Hotline/Settings/SystemSetting.cs

@@ -1,6 +1,7 @@
 using System.ComponentModel;
 using SqlSugar;
 using XF.Domain.Entities;
+using XF.Domain.Repository;
 
 namespace Hotline.Settings
 {

+ 1 - 0
src/Hotline/Settings/SystemSettingGroup.cs

@@ -1,6 +1,7 @@
 using System.ComponentModel;
 using SqlSugar;
 using XF.Domain.Entities;
+using XF.Domain.Repository;
 
 namespace Hotline.Settings
 {

+ 1 - 0
src/Hotline/Settings/UserFastMenu.cs

@@ -1,5 +1,6 @@
 using SqlSugar;
 using XF.Domain.Entities;
+using XF.Domain.Repository;
 
 namespace Hotline.Settings
 {

+ 1 - 0
src/Hotline/Users/User.cs

@@ -1,6 +1,7 @@
 using System.ComponentModel;
 using SqlSugar;
 using XF.Domain.Entities;
+using XF.Domain.Repository;
 
 namespace Hotline.Users
 {

+ 1 - 0
src/Hotline/Users/Work.cs

@@ -1,6 +1,7 @@
 using System.ComponentModel;
 using SqlSugar;
 using XF.Domain.Entities;
+using XF.Domain.Repository;
 
 namespace Hotline.Users;
 

+ 8 - 0
src/XF.Domain.Repository/AggregateRoot.cs

@@ -0,0 +1,8 @@
+using XF.Domain.Entities;
+
+namespace XF.Domain.Repository;
+
+public abstract class AggregateRoot : FullStateEntity, IAggregateRoot
+{
+
+}

+ 3 - 2
src/XF.Domain/Entities/Entity.cs → src/XF.Domain.Repository/Entity.cs

@@ -1,7 +1,8 @@
 using SqlSugar;
+using XF.Domain.Entities;
 using XF.Domain.Events;
 
-namespace XF.Domain.Entities;
+namespace XF.Domain.Repository;
 
 public abstract class Entity : IEntity<string>, IDomainEvents
 {
@@ -104,7 +105,7 @@ public abstract class FullStateEntity : CreationSoftDeleteEntity, IHasModificati
 /// <summary>
 /// 实体(权限、创建时间)
 /// </summary>
-public abstract class CreationEntityHasAuth : Entity, IHasCreationTime, IHasAuth
+public abstract class CreationEntityHasAuth : Entity, IHasCreationTime, IDataPermission
 {
     /// <summary>
     /// 创建时间

+ 5 - 1
src/XF.Domain.Repository/XF.Domain.Repository.csproj

@@ -1,4 +1,4 @@
-<Project Sdk="Microsoft.NET.Sdk">
+<Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
     <TargetFramework>net6.0</TargetFramework>
@@ -7,6 +7,10 @@
     <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
   </PropertyGroup>
 
+  <ItemGroup>
+    <PackageReference Include="SqlSugarCore" Version="5.1.3.32" />
+  </ItemGroup>
+
   <ItemGroup>
     <ProjectReference Include="..\XF.Domain\XF.Domain.csproj" />
   </ItemGroup>

+ 0 - 5
src/XF.Domain/Entities/IAggregateRoot.cs

@@ -3,9 +3,4 @@
 public interface IAggregateRoot
 {
 
-}
-
-public abstract class AggregateRoot : FullStateEntity, IAggregateRoot
-{
-
 }

+ 3 - 1
src/XF.Domain/Entities/IHasAuth.cs → src/XF.Domain/Entities/IDataPermission.cs

@@ -1,10 +1,12 @@
 
 namespace XF.Domain.Entities
 {
-    public interface IHasAuth
+    public interface IDataPermission
     {
         string OrgCode { get; set; }
 
         string CreateUserId { get; set; }
+
+        //string AreaId { get; set; }
     }
 }

+ 1 - 1
src/XF.Domain/XF.Domain.csproj

@@ -5,6 +5,7 @@
     <ImplicitUsings>enable</ImplicitUsings>
     <Nullable>enable</Nullable>
     <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
+    <Version>1.0.1</Version>
   </PropertyGroup>
 
   <ItemGroup>
@@ -12,7 +13,6 @@
     <PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.1" />
     <PackageReference Include="Serilog.AspNetCore" Version="6.0.1" />
     <PackageReference Include="Serilog.Enrichers.Span" Version="2.3.0" />
-    <PackageReference Include="SqlSugarCore" Version="5.1.1" />
   </ItemGroup>
 
 </Project>