Compare commits

..

1 Commits

  1. 7
      .gitignore
  2. 35
      .vscode/launch.json
  3. 41
      .vscode/tasks.json
  4. 45
      src/1.datas/ATS.NonCustodial.Domain/Entities/Admins/AppSMS.cs
  5. 13
      src/1.datas/ATS.NonCustodial.Domain/Entities/Admins/App_Unitcode.cs
  6. 2
      src/1.datas/ATS.NonCustodial.Domain/Entities/Business/CaseManagements/AppCaseSupervisor.cs
  7. 1
      src/2.services/ATS.NonCustodial.Application/ATS.NonCustodial.Application.csproj
  8. 26
      src/2.services/ATS.NonCustodial.Application/Impl/Admins/AuthService.cs
  9. 250
      src/2.services/ATS.NonCustodial.Application/Impl/Admins/SMSService.cs
  10. 120
      src/2.services/ATS.NonCustodial.Application/Impl/Admins/UnitcodeService.cs
  11. 1
      src/2.services/ATS.NonCustodial.Application/Impl/Admins/UserService.cs
  12. 16
      src/2.services/ATS.NonCustodial.Application/Impl/Business/AppAnnouncementService.cs
  13. 19
      src/2.services/ATS.NonCustodial.Application/Impl/Business/AppBusinessApplicationService.cs
  14. 7
      src/2.services/ATS.NonCustodial.Application/Impl/Business/AppDeviceManagementService.cs
  15. 35
      src/2.services/ATS.NonCustodial.Application/Impl/Business/AppEarlyWarningService.cs
  16. 21
      src/2.services/ATS.NonCustodial.Application/Impl/Business/AppManagementService.cs
  17. 21
      src/2.services/ATS.NonCustodial.Application/Impl/Business/AppPunchRecordService.cs
  18. 10
      src/2.services/ATS.NonCustodial.Application/Impl/Business/AppViolationStatisticsService.cs
  19. 127
      src/2.services/ATS.NonCustodial.Application/Impl/Business/CaseManagements/AppCaseManagementService.cs
  20. 12
      src/2.services/ATS.NonCustodial.Application/Impl/Business/CaseManagements/AppSupervisedPersonService.cs
  21. 21
      src/2.services/ATS.NonCustodial.Application/Impl/Business/MaterialManager/AppFileAccessRecordsService.cs
  22. 7
      src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Admins/Auth/IAuthService.cs
  23. 14
      src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Admins/Auth/Output/AuthLoginOutput.cs
  24. 36
      src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Admins/SMS/ISMSService.cs
  25. 2
      src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Business/AppCaseManagements/AppCaseManagement/Input/AppCaseManagementGetPageInput.cs
  26. 2
      src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Business/AppCaseManagements/AppCaseManagement/Output/AppCaseManagementListDto.cs
  27. 4
      src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Business/Apps/Input/SubmitBindingApplicationInput.cs
  28. 3939
      src/4.apps/ATS.NonCustodial.Admin.Api/Seeds/initData/app_api.json
  29. 17951
      src/4.apps/ATS.NonCustodial.Admin.Api/Seeds/initData/app_dictionary.json
  30. 3530
      src/4.apps/ATS.NonCustodial.Admin.Api/Seeds/initData/app_user.json
  31. 3037
      src/4.apps/ATS.NonCustodial.Admin.Api/Seeds/initData/app_user_role.json
  32. 2
      src/5.shared/ATS.NonCustodial.Admin.Jobs/Jobs/PunchRecordJob.cs
  33. 15
      src/5.shared/ATS.NonCustodial.Shared/Common/Auth/ClaimAttributes.cs
  34. 12
      src/5.shared/ATS.NonCustodial.Shared/Common/Auth/IUser.cs
  35. 36
      src/5.shared/ATS.NonCustodial.Shared/Common/Auth/User.cs
  36. 4
      src/5.shared/ATS.NonCustodial.Shared/Extensions/Collection/PaginationExtensions.cs

7
.gitignore vendored

@ -401,10 +401,3 @@ FodyWeavers.xsd
/src/4.apps/ATS.NonCustodial.Admin.Api/xml/ATS.NonCustodial.Domain.xml
/src/4.apps/ATS.NonCustodial.Admin.Api/xml/ATS.NonCustodial.Application.Contracts.xml
/src/4.apps/ATS.NonCustodial.Admin.Api/xml/ATS.NonCustodial.Application.xml
/src/4.apps/ATS.NonCustodial.Admin.Api/Seeds/initData/app_api.json
/src/4.apps/ATS.NonCustodial.Admin.Api/Seeds/initData/app_user.json
/src/4.apps/ATS.NonCustodial.Admin.Api/Seeds/initData/app_user_role.json
/src/4.apps/ATS.NonCustodial.Admin.Api/Seeds/initData/app_api.json
/src/4.apps/ATS.NonCustodial.Admin.Api/Seeds/initData/app_dictionary.json
/src/4.apps/ATS.NonCustodial.Admin.Api/Seeds/initData/app_user.json
/src/4.apps/ATS.NonCustodial.Admin.Api/Seeds/initData/app_user_role.json

35
.vscode/launch.json vendored

@ -1,35 +0,0 @@
{
"version": "0.2.0",
"configurations": [
{
// 使 IntelliSense C#
//
// 访 https://github.com/dotnet/vscode-csharp/blob/main/debugger-launchjson.md
"name": ".NET Core Launch (web)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
//
"program": "${workspaceFolder}/src/4.apps/ATS.NonCustodial.Admin.Api/bin/Debug/net9.0/ATS.NonCustodial.Admin.Api.dll",
"args": [],
"cwd": "${workspaceFolder}/src/4.apps/ATS.NonCustodial.Admin.Api",
"stopAtEntry": false,
// ASP.NET Core Web : https://aka.ms/VSCode-CS-LaunchJson-WebBrowser
"serverReadyAction": {
"action": "openExternally",
"pattern": "\\bNow listening on:\\s+(https?://\\S+)"
},
"env": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"sourceFileMap": {
"/Views": "${workspaceFolder}/Views"
}
},
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach"
}
]
}

41
.vscode/tasks.json vendored

@ -1,41 +0,0 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/ATS.NonCustodial.Admin.sln",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary;ForceNoAlign"
],
"problemMatcher": "$msCompile"
},
{
"label": "publish",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/ATS.NonCustodial.Admin.sln",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary;ForceNoAlign"
],
"problemMatcher": "$msCompile"
},
{
"label": "watch",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"--project",
"${workspaceFolder}/ATS.NonCustodial.Admin.sln"
],
"problemMatcher": "$msCompile"
}
]
}

45
src/1.datas/ATS.NonCustodial.Domain/Entities/Admins/AppSMS.cs

@ -1,45 +0,0 @@
using ATS.NonCustodial.Domain.Shared.AggRootEntities;
using ATS.NonCustodial.Domain.Shared.Constants;
using ATS.NonCustodial.Domain.Shared.Enums;
using ATS.NonCustodial.Shared.Common.Enums;
using ATS.NonCustodial.Shared.Common.Enums.IM;
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Numerics;
namespace ATS.NonCustodial.Domain.Entities.Admins
{
[Table("app_sms")]
public class AppSMS: EntityFull
{
public AppSMS()
{ }
public AppSMS(long id)
{
Id = id;
}
public string phone { get; set; } = string.Empty;
public string content { get; set; } = string.Empty;
public string? code { get; set; }
public DateTime sendTime { get; set; }
public DateTime expiresTime { get; set; }
public bool isUsed { get; set; } = false;
public DateTime? useTime { get; set; }
public string ipAddress { get; set; } = string.Empty;
public string type { get; set; } = "default";
public string result { get; set; } = string.Empty;
}
}

13
src/1.datas/ATS.NonCustodial.Domain/Entities/Admins/App_Unitcode.cs

@ -52,23 +52,10 @@ namespace ATS.NonCustodial.Domain.Entities.Admins
/// </summary>
[MaxLength(StringLengthConstants.StringLength255)]
public string? UnitLevel { get; set; }
/// <summary>
/// 查询界限
/// </summary>
[MaxLength(StringLengthConstants.StringLength2048)]
public string? Limits { get; set; }
/// <summary>
/// 单位简称
/// </summary>
[MaxLength(StringLengthConstants.StringLength255)]
public string? UnitIsReferToAs { get; set; }
/// <summary>
/// 查询界限
/// </summary>
[MaxLength(StringLengthConstants.StringLength2048)]
public string? limits { get; set; }
}
}

2
src/1.datas/ATS.NonCustodial.Domain/Entities/Business/CaseManagements/AppCaseSupervisor.cs

@ -38,7 +38,5 @@ namespace ATS.NonCustodial.Domain.Entities.Business.CaseManagements
/// </summary>
[MaxLength(StringLengthConstants.StringLength20)]
public string? SupervisorName { get; set; }
public long UnitId { get; set; }
}
}

1
src/2.services/ATS.NonCustodial.Application/ATS.NonCustodial.Application.csproj

@ -20,7 +20,6 @@
<PackageReference Include="System.IO.Ports" Version="10.0.0-preview.7.25380.108" />
<PackageReference Include="System.Net.Http" Version="4.3.4" />
<PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
<PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1273" />
<PackageReference Include="UAParser" Version="3.1.47" />
</ItemGroup>

26
src/2.services/ATS.NonCustodial.Application/Impl/Admins/AuthService.cs

@ -31,11 +31,9 @@ using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json;
using NPOI.SS.Formula.Functions;
using NPOI.Util;
using StackExchange.Profiling;
using System.Diagnostics;
using System.Security.Claims;
using static System.Runtime.InteropServices.JavaScript.JSType;
namespace ATS.NonCustodial.Application.Impl.Admins
{
@ -258,7 +256,7 @@ namespace ATS.NonCustodial.Application.Impl.Admins
[NoOperationLog]
public async Task<IResultOutput> LoginWithPhoneAsync(AuthLoginWithPhoneInput input)
{
var user = await _appUserRepository.FindAsync(a => (input.UnitId == null || a.UnitId.Equals(input.UnitId)) && (a.UserName == input.UserName || a.Phone == input.UserName) && a.DataStatus == DataStatusEnum.Normal && (a.ChatPersonType == ChatPersonTypeEnum.Admin || a.ChatPersonType == ChatPersonTypeEnum.Supervisor));
var user = await _appUserRepository.FindAsync(a => a.UnitId.Equals(input.UnitId) && (a.UserName == input.UserName || a.Phone == input.UserName) && a.DataStatus == DataStatusEnum.Normal && (a.ChatPersonType == ChatPersonTypeEnum.Admin || a.ChatPersonType == ChatPersonTypeEnum.Supervisor));
if (user == null) return ResultOutput.NotOk($"用户不存在,或者无权限登录!");
user.CId = input.CId;
@ -388,19 +386,6 @@ namespace ATS.NonCustodial.Application.Impl.Admins
return result;
}
/// <summary>
/// 根据身份证号获取电话号码
/// </summary>
/// <param name="phone"></param>
/// <returns></returns>
[HttpGet]
[AllowAnonymous]
public async Task<IResultOutput> GetPhoneByIDCard(string idCard)
{
var user = await _appUserRepository.FindAsync(a => a.ChatPersonType == ChatPersonTypeEnum.SupervisedPerson && a.IdCard == idCard);
return ResultOutput.Ok(user?.Phone);
}
#region Private
/// <summary>
@ -414,23 +399,21 @@ namespace ATS.NonCustodial.Application.Impl.Admins
if (user == null) return string.Empty;
var roles = (await _userService.IsAdmin(user.Id)).Roles.Select(w => w.Id).ToList();
string limits = _appUnitRepository.AsQueryable(false, true).Where(a => a.Id == user.UnitId).Select(a => a.limits).FirstOrDefault();
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
var timeLogin = Convert.ToInt64(ts.TotalMilliseconds).ToString();
var token = LazyGetRequiredService<IUserToken>().Create(new[]
{
new Claim(ClaimAttributes.userId, user.Id.ToString()),
new Claim(ClaimAttributes.userName, user.UserName!),
new Claim(ClaimAttributes.userUnitId, user.UnitId?.ToString() ?? ""),
new Claim(ClaimAttributes.userDeptcodeId, user.DeptcodeId?.ToString()??""),
new Claim(ClaimAttributes.userUnitId, user.UnitId.ToString()),
new Claim(ClaimAttributes.userDeptcodeId, user.DeptcodeId.ToString()),
new Claim(ClaimAttributes.userNickName, user?.NickName??"") ,
new Claim(ClaimAttributes.avatar,user?.Avatar??"") ,
new Claim(ClaimAttributes.roles,JsonConvert.SerializeObject(roles)),
new Claim(ClaimAttributes.orgs,JsonConvert.SerializeObject(Array.Empty<long>())) ,
new Claim(ClaimAttributes.phone,user?.Phone??""),
new Claim(ClaimAttributes.logtime,timeLogin),
new Claim(ClaimAttributes.limits,limits??""),
new Claim(ClaimAttributes.IsAdmin,user.IsAdmin?"true":"false"),
new Claim(ClaimAttributes.personType,user?.ChatPersonType.ToString()!)
});
@ -499,7 +482,6 @@ namespace ATS.NonCustodial.Application.Impl.Admins
await _appUserRepository.UpdateAsync(user);
}
var authLoginOutput = Mapper.Map<AuthLoginOutput>(user);
authLoginOutput.IsAdmin = isAdmin.IsAdmin;
var token = await GetToken(authLoginOutput);

250
src/2.services/ATS.NonCustodial.Application/Impl/Admins/SMSService.cs

@ -1,250 +0,0 @@
using ATS.NonCustodial.Application.Base;
using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.Auth;
using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.Auth.Input;
using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.Auth.Output;
using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.SMS;
using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.User;
using ATS.NonCustodial.Application.Contracts.Interfaces.Logs.LoginLog.Input;
using ATS.NonCustodial.Domain.Entities.Admins;
using ATS.NonCustodial.Domain.Entities.Business;
using ATS.NonCustodial.Domain.Entities.Business.EarlyWarning;
using ATS.NonCustodial.Domain.Shared.Enums;
using ATS.NonCustodial.Domain.Shared.OrmRepositories.Basic.EfCore;
using ATS.NonCustodial.DynamicApi;
using ATS.NonCustodial.DynamicApi.Attributes;
using ATS.NonCustodial.Shared.Captcha.Dto;
using ATS.NonCustodial.Shared.Common.Attributes;
using ATS.NonCustodial.Shared.Common.Auth;
using ATS.NonCustodial.Shared.Common.Constants;
using ATS.NonCustodial.Shared.Common.Dtos;
using ATS.NonCustodial.Shared.Common.Enums;
using ATS.NonCustodial.Shared.Common.UnifiedResults;
using ATS.NonCustodial.Shared.Configurations.Options;
using ATS.NonCustodial.Shared.Extensions;
using ATS.NonCustodial.Shared.Helpers;
using ATS.NonCustodial.Shared.Helpers.Core.Hash;
using ATS.NonCustodial.Shared.Helpers.Http;
using ATS.NonCustodial.Shared.Tools.Captcha;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using NPOI.SS.Formula.Functions;
using NPOI.Util;
using StackExchange.Profiling;
using System.Diagnostics;
using System.Security.Claims;
using TencentCloud.Common;
using TencentCloud.Common.Profile;
using TencentCloud.Sms.V20210111;
using TencentCloud.Sms.V20210111.Models;
using static System.Runtime.InteropServices.JavaScript.JSType;
namespace ATS.NonCustodial.Application.Impl.Admins
{
/// <summary>
/// 短信服务
/// </summary>
[DynamicApi(Area = "admin")]
public class SMSService : AdminAppServiceBase, ISMSService, IDynamicApi
{
private readonly IEfRepository<AppSMS?, long> _appSMSRepository;
public SMSService(
IEfRepository<AppSMS?, long> appSMSRepository)
{
_appSMSRepository = appSMSRepository;
}
/// <summary>
/// 发送验证码
/// </summary>
/// <param name="phone"></param>
/// <param name="ipAddress"></param>
/// <param name="type"></param>
/// <returns></returns>
[HttpGet]
[AllowAnonymous]
public async Task<IResultOutput> SendCheckCodeSMS(string phone, string ipAddress = "", string type = "CheckCode")
{
// 检查是否可以发送(一分钟内只能发送一次)
if (!await CanSendCodeAsync(phone))
{
return ResultOutput.NotOk("请求过于频繁,请稍后再试");
}
// 生成随机验证码(6位数字)
var random = new Random();
var code = random.Next(100000, 999999).ToString();
// 创建验证码记录
var addSMS = new AppSMS
{
phone = phone,
code = code,
sendTime = DateTime.Now,
expiresTime = DateTime.Now.AddMinutes(5), // 5分钟有效期
ipAddress = ipAddress,
type = type
};
// 发送短信
var sendResult = SendSMS(phone, code);
addSMS.result = sendResult;
var sms = await _appSMSRepository.InsertAsync(addSMS);
return ResultOutput.Ok(true);
}
/// <summary>
/// 校验验证码
/// </summary>
/// <param name="phoneNumber"></param>
/// <param name="code"></param>
/// <param name="type"></param>
/// <returns></returns>
public async Task<bool> CheckCodeAsync(string phoneNumber, string code, string type = "default")
{
if (code == "147896")
{
return true;
}
var now = DateTime.Now;
// 查找有效的验证码
var validCode = await _appSMSRepository.AsQueryable()
.Where(v => v.phone == phoneNumber
&& v.code == code
&& v.type == type
&& !v.isUsed
&& v.expiresTime > now)
.OrderByDescending(v => v.sendTime)
.FirstOrDefaultAsync();
if (validCode == null)
{
return false;
}
// 标记为已使用
validCode.isUsed = true;
validCode.useTime = now;
await _appSMSRepository.UpdateAsync(validCode);
return true;
}
/// <summary>
/// 发送前校验
/// </summary>
/// <param name="phone"></param>
/// <returns></returns>
public async Task<bool> CanSendCodeAsync(string phone)
{
var oneMinuteAgo = DateTime.Now.AddMinutes(-1);
// 检查一分钟内是否有发送记录
var recentCode = await _appSMSRepository.AsQueryable()
.Where(v => v.phone == phone
&& v.sendTime > oneMinuteAgo)
.OrderByDescending(v => v.sendTime)
.FirstOrDefaultAsync();
return recentCode == null;
}
#region Private
/// <summary>
/// 发送短信
/// </summary>
/// <param name="phone"></param>
/// <param name="msg"></param>
/// <param name="expires"></param>
/// <returns></returns>
private string SendSMS(string phone, string msg, int expires = 5)
{
try
{
// 密钥信息从环境变量读取,需要提前在环境变量中设置 TENCENTCLOUD_SECRET_ID 和 TENCENTCLOUD_SECRET_KEY
// 使用环境变量方式可以避免密钥硬编码在代码中,提高安全性
// 生产环境建议使用更安全的密钥管理方案,如密钥管理系统(KMS)、容器密钥注入等
// 请参见:https://cloud.tencent.com/document/product/1278/85305
// 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
Credential cred = new Credential
{
SecretId = "AKID52ovuoUzINL7g2A4mGYdHhtsfGdmhQv8",
SecretKey = "96qPlxzta3JL9j5D7oHWXN6f9D9sOiog"
};
// 使用临时密钥示例
/*
Credential cred = new Credential {
SecretId = "SecretId",
SecretKey = "SecretKey",
Token = "Token"
};
*/
// 实例化一个client选项,可选的,没有特殊需求可以跳过
ClientProfile clientProfile = new ClientProfile();
// 实例化一个http选项,可选的,没有特殊需求可以跳过
HttpProfile httpProfile = new HttpProfile();
httpProfile.Endpoint = ("sms.tencentcloudapi.com");
clientProfile.HttpProfile = httpProfile;
// 实例化要请求产品的client对象,clientProfile是可选的
SmsClient client = new SmsClient(cred, "ap-guangzhou", clientProfile);
// 实例化一个请求对象,每个接口都会对应一个request对象
SendSmsRequest req = new SendSmsRequest();
/* :
* SDK采用的是指针风格指定参数使
* SDK提供对基本类型的指针引用封装函数
*
* : https://console.cloud.tencent.com/smsv2
* : https://cloud.tencent.com/document/product/382/3773#.E6.8A.80.E6.9C.AF.E4.BA.A4.E6.B5.81 */
/* 短信应用ID: 短信SdkAppId在 [短信控制台] 添加应用后生成的实际SdkAppId,示例如1400006666 */
// 应用 ID 可前往 [短信控制台](https://console.cloud.tencent.com/smsv2/app-manage) 查看
req.SmsSdkAppId = "1401039888";
/* 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名 */
// 签名信息可前往 [国内短信](https://console.cloud.tencent.com/smsv2/csms-sign) 或 [国际/港澳台短信](https://console.cloud.tencent.com/smsv2/isms-sign) 的签名管理查看
req.SignName = "成都阿凯思信息技术";
/* 模板 ID: 必须填写已审核通过的模板 ID */
// 模板 ID 可前往 [国内短信](https://console.cloud.tencent.com/smsv2/csms-template) 或 [国际/港澳台短信](https://console.cloud.tencent.com/smsv2/isms-template) 的正文模板管理查看
req.TemplateId = "2524683";
/* 模板参数: 模板参数的个数需要与 TemplateId 对应模板的变量个数保持一致,若无模板参数,则设置为空 */
req.TemplateParamSet = new string[] { msg, expires.ToString() };
/* E.164 +[][]
* +8613711112222 + 8613711112222200*/
req.PhoneNumberSet = new string[] { "+86" + phone };
/* 用户的 session 内容(无需要可忽略): 可以携带用户侧 ID 等上下文信息,server 会原样返回 */
req.SessionContext = "";
/* 短信码号扩展号(无需要可忽略): 默认未开通,如需开通请联系 [腾讯云短信小助手] */
req.ExtendCode = "";
/* 国内短信无需填写该项;国际/港澳台短信已申请独立 SenderId 需要填写该字段,默认使用公共 SenderId,无需填写该字段。注:月度使用量达到指定量级可申请独立 SenderId 使用,详情请联系 [腾讯云短信小助手](https://cloud.tencent.com/document/product/382/3773#.E6.8A.80.E6.9C.AF.E4.BA.A4.E6.B5.81)。 */
req.SenderId = "";
// 返回的resp是一个SendSmsResponse的实例,与请求对象对应
SendSmsResponse resp = client.SendSmsSync(req);
// 输出json格式的字符串回包
return AbstractModel.ToJsonString(resp);
}
catch (Exception ex)
{
return ex.Message;
}
}
#endregion
}
}

120
src/2.services/ATS.NonCustodial.Application/Impl/Admins/UnitcodeService.cs

@ -2,17 +2,22 @@
using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.Unitcode;
using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.Unitcode.Input;
using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.Unitcode.Output;
using ATS.NonCustodial.Application.Contracts.Interfaces.Business.MaterialManager.Template.Input;
using ATS.NonCustodial.Application.Contracts.Interfaces.Business.MaterialManager.Template.Output;
using ATS.NonCustodial.Domain.Entities.Admins;
using ATS.NonCustodial.Domain.Shared.AggRootEntities;
using ATS.NonCustodial.Domain.Entities.Business.MaterialManager;
using ATS.NonCustodial.Domain.Shared.AggRootEntities.Dtos;
using ATS.NonCustodial.Domain.Shared.OrmRepositories.Basic.EfCore;
using ATS.NonCustodial.DynamicApi;
using ATS.NonCustodial.DynamicApi.Attributes;
using ATS.NonCustodial.Shared.Common.Attributes;
using ATS.NonCustodial.Shared.Common.Enums;
using ATS.NonCustodial.Shared.Common.UnifiedResults;
using ATS.NonCustodial.Shared.Extensions;
using ATS.NonCustodial.Shared.Extensions.AdvancedQuery;
using AutoMapper.QueryableExtensions;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using SixLabors.ImageSharp.Drawing;
using Yitter.IdGenerator;
namespace ATS.NonCustodial.Application.Impl.Admins
@ -29,15 +34,12 @@ namespace ATS.NonCustodial.Application.Impl.Admins
private readonly IEfRepository<App_Unitcode?, long> _appUnitcodeRepository;
private readonly IEfRepository<App_Deptcode?, long> _appDeptcodeRepository;
private readonly IEfRepository<AppUser?, long> _userRepository;
public UnitcodeService(IEfRepository<App_Unitcode?, long> appUnitcodeRepository,
IEfRepository<App_Deptcode?, long> appDeptcodeRepository,
IEfRepository<AppUser?, long> userRepository)
IEfRepository<App_Deptcode?, long> appDeptcodeRepository)
{
_appUnitcodeRepository = appUnitcodeRepository;
_appDeptcodeRepository = appDeptcodeRepository;
_userRepository = userRepository;
}
#endregion Identity
@ -294,27 +296,14 @@ namespace ATS.NonCustodial.Application.Impl.Admins
{
if (_appUnitcodeRepository.AsQueryable(false, true).Where(q => q.UnitCode == input.UnitCode).Any())
{
return input.Stat == 0 ? ResultOutput.NotOk("机构编码已存在") : ResultOutput.NotOk("单位编码已存在");
if (input.Stat == 0)
return ResultOutput.NotOk("机构编码已存在");
else
return ResultOutput.NotOk("单位编码已存在");
}
var entity = Mapper.Map<App_Unitcode>(input);
entity.Id = YitIdHelper.NextId();
entity.Limits = entity.Id.ToString();
var App_Unitcode = await _appUnitcodeRepository.InsertAsync(entity);
//添加父级单位权限
if (entity.ParentUnitCode.HasValue)
{
var idList = GetParentUnitIdList((long)entity.ParentUnitCode);
idList.Add((long)entity.ParentUnitCode);
for (int i = 0; i < idList.Count; i++)
{
var parentunit = await _appUnitcodeRepository.FindAsync(idList[i]);
if (parentunit != null)
{
parentunit.Limits += "," + entity.Id;
await _appUnitcodeRepository.UpdateAsync(parentunit);
}
}
}
return ResultOutput.Result(App_Unitcode.Id > 0);
}
@ -327,11 +316,6 @@ namespace ATS.NonCustodial.Application.Impl.Admins
{
if (!(input?.Id > 0)) return ResultOutput.NotOk();
var unitlist = _appUnitcodeRepository.AsQueryable(false, true).Where(q => q.Id == input.Id).ToList();
foreach (var item in unitlist)
{
if (item.ParentUnitCode != input.ParentUnitCode) { return ResultOutput.NotOk("单位父级无法修改"); }
}
var entity = await _appUnitcodeRepository.FindAsync((long)input.Id);
if (!(entity?.Id > 0)) return ResultOutput.NotOk("编辑失败");
@ -350,90 +334,14 @@ namespace ATS.NonCustodial.Application.Impl.Admins
{
Uow.BeginTransaction();
{
for (int i = 0; i < input.Ids.Count; i++)
{
//获取该单位下的所有子单位id
var idlist = GetUnitIdList(input.Ids[i]);
//校验该单位下是否存在用户账户
if (_userRepository.AsQueryable(false, true).Where(q => idlist.Contains(q.UnitId ?? -1)).Any())
{
return ResultOutput.NotOk("该单位下存在用户账户,无法删除");
}
var idParentList = GetParentUnitIdList(input.Ids[i]);
//删除
await _appUnitcodeRepository.DeleteAsync(w => idlist.Contains(w.Id));
//获取该单位的所有父级单位id
for (int j = 0; j < idParentList.Count; j++)
{
var parentunit = await _appUnitcodeRepository.FindAsync(idParentList[j]);
if (parentunit != null)
{
// 步骤1:统一分隔符并分割字符串
var numbers = parentunit.Limits
.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) // 按英文逗号分割
.Select(s => long.Parse(s.Trim())); // 转换为整数并去除空格
// 步骤2:过滤掉存在于 filterList 中的数字
var filteredNumbers = numbers.Where(n => !idlist.Contains(n)).ToList();
// 步骤3:重新拼接为字符串
string result = string.Join(",", filteredNumbers);
parentunit.Limits = result;
await _appUnitcodeRepository.UpdateAsync(parentunit);
}
}
}
//删除
// await _appUnitcodeRepository.DeleteAsync(w => input.Ids.Contains(w.Id));
await _appUnitcodeRepository.DeleteAsync(w => input.Ids.Contains(w.Id));
//删除
// await _appUnitcodeRepository.DeleteAsync(w => input.Ids.Contains((long)w.ParentUnitCode));
await _appUnitcodeRepository.DeleteAsync(w => input.Ids.Contains((long)w.ParentUnitCode));
}
await Uow.CommitAsync();
return ResultOutput.Ok();
}
/// <summary>
/// 递归查找该单位下的所有单位
/// </summary>
/// <param name="unitId">单位id</param>
/// <returns>单位id集合</returns>
private List<long> GetUnitIdList(long unitId)
{
List<long> idList = new List<long>();
idList.Add(unitId);
var unitlist = _appUnitcodeRepository.AsQueryable(false, true).Where(q => q.ParentUnitCode == unitId).ToList();
foreach (var item in unitlist)
{
idList.Add(item.Id);
var idlist = GetUnitIdList(item.Id);
idList.AddRange(idlist);
}
return idList;
}
/// <summary>
/// 递归查找该单位的所有父级单位
/// </summary>
/// <param name="unitId">单位id</param>
/// <returns>单位id集合</returns>
private List<long> GetParentUnitIdList(long unitId)
{
List<long> idList = new List<long>();
var unitlist = _appUnitcodeRepository.AsQueryable(false, true).Where(q => q.Id == unitId).ToList();
foreach (var item in unitlist)
{
if (item != null && item.ParentUnitCode.HasValue)
{
idList.Add((long)item.ParentUnitCode);
var idlist = GetParentUnitIdList((long)item.ParentUnitCode);
idList.AddRange(idlist);
}
}
return idList;
}
#region Private
/// <summary>

1
src/2.services/ATS.NonCustodial.Application/Impl/Admins/UserService.cs

@ -12,7 +12,6 @@ using ATS.NonCustodial.Domain.Shared.OrmRepositories.Basic.EfCore;
using ATS.NonCustodial.DynamicApi;
using ATS.NonCustodial.DynamicApi.Attributes;
using ATS.NonCustodial.Shared.Common.Attributes;
using ATS.NonCustodial.Shared.Common.Auth;
using ATS.NonCustodial.Shared.Common.Constants;
using ATS.NonCustodial.Shared.Common.Dtos;
using ATS.NonCustodial.Shared.Common.Dtos.Query;

16
src/2.services/ATS.NonCustodial.Application/Impl/Business/AppAnnouncementService.cs

@ -40,7 +40,6 @@ namespace ATS.NonCustodial.Application.Impl.Business
#region Identity
private readonly IEfRepository<AppAnnouncement, long> _appAnnouncementRepository;
protected readonly IEfRepository<AppCaseSupervisor, long> _appCaseSupervisorRepository;
private readonly IEfRepository<AppAnnouncementViewStatistics, long> _appAnnouncementViewStatisticsRepository;
private readonly IHubContext<NonCustodialHub> _hubContext;
protected readonly IEfRepository<AppCaseManagement, long> _appCaseManagementRepository;
@ -57,7 +56,6 @@ namespace ATS.NonCustodial.Application.Impl.Business
public AppAnnouncementService(IEfRepository<AppAnnouncement, long> appAnnouncementRepository,
IEfRepository<AppAnnouncementViewStatistics, long> appAnnouncementViewStatisticsRepository,
IHubContext<NonCustodialHub> hubContext,
IEfRepository<AppCaseSupervisor, long> appCaseSupervisorRepository,
IEfRepository<AppCaseManagement, long> appCaseManagementRepository,
IEfRepository<AppCaseSupervisedPerson, long> appSupervisedPersonRepository)
{
@ -66,7 +64,6 @@ namespace ATS.NonCustodial.Application.Impl.Business
_hubContext = hubContext;
_appCaseManagementRepository = appCaseManagementRepository;
_appSupervisedPersonRepository = appSupervisedPersonRepository;
_appCaseSupervisorRepository = appCaseSupervisorRepository;
}
#endregion Identity
@ -106,19 +103,8 @@ namespace ATS.NonCustodial.Application.Impl.Business
[HttpPost]
public async Task<IResultOutput> GetPageAsync(AppAnnouncementPageInput input)
{
//获取当前用户权限下的案件ids
var limits = User.limits;
var selectLimits = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => limits.Contains(w.UnitId.ToString()))
.ToListAsync();
var caseIdList = selectLimits.Select(w => w.CaseId).Distinct().ToList();
var appAnnouncementViewStatistics = await _appAnnouncementViewStatisticsRepository.AsQueryable(false, true).Where(w => caseIdList.Contains(w.CaseId ?? -1)).Select(s => s.AnnouncementId).ToListAsync();
var express = GetExpression(input, _appAnnouncementRepository.AsQueryable(false, true));
express = express.Where(w => appAnnouncementViewStatistics.Contains(w.Id));
var rtn = (await base.GetPageAsync<AppAnnouncement, AppAnnouncementPageInput, AppAnnouncementListDto>(input, express));
var rtn = await base.GetPageAsync<AppAnnouncement, AppAnnouncementPageInput, AppAnnouncementListDto>(input, express);
return ResultOutput.Ok(rtn);
}

19
src/2.services/ATS.NonCustodial.Application/Impl/Business/AppBusinessApplicationService.cs

@ -101,16 +101,8 @@ namespace ATS.NonCustodial.Application.Impl.Business
[HttpPost]
public async Task<IResultOutput> GetPageAsync(AppBusinessApplicationGetPageInput input)
{
//获取当前用户权限下的案件ids
var limits = User.limits;
var selectLimits = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => limits.Contains(w.UnitId.ToString()))
.ToListAsync();
var caseIdList = selectLimits.Select(w => w.CaseId).Distinct().ToList();
var express = await GetExpression(input, _appBusinessApplicationRepository.AsQueryable(false, true));
var rtn = await base.GetPageAsync<AppBusinessApplication, AppBusinessApplicationGetPageInput, AppBusinessApplicationListDto>(input, express);
rtn.Data = rtn.Data.Where(w => caseIdList.Contains(w.CaseId)).ToList();
return ResultOutput.Ok(rtn);
}
@ -125,12 +117,6 @@ namespace ATS.NonCustodial.Application.Impl.Business
//根据当前登录人查看其手里的案件被监管人
var spList = await base.GetCurrentUserCaseListAsync();
//获取当前用户权限下的案件ids
var limits = User.limits;
var selectLimits = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => limits.Contains(w.UnitId.ToString()))
.ToListAsync();
var caseIds = selectLimits.Select(w => w.CaseId).Distinct().ToList();
var express = await GetExpression(input, _appBusinessApplicationRepository.AsQueryable(false, true));
var grudlist = express
.WhereIf(input.supname.NotNull(), q => q.SupervisedPersonName.Contains(input.supname))
@ -138,9 +124,8 @@ namespace ATS.NonCustodial.Application.Impl.Business
var grulist =from a in grudlist.ToList()
join b in spList.Select(q => q.AppCaseManagement).ToList() on a.CaseId equals b.Id
select new { a.SupervisedPersonName, a.Count, a.CaseId, b.Name };
var resultList = grulist.Distinct().Where(p => caseIds.Contains(p.CaseId));
var pagegrulist = resultList.Skip((input.PageIndex - 1) * input.PageSize).Take(input.PageSize).ToList();
return ResultOutput.Ok(new { TotalCount = resultList.Count(), grudlist= pagegrulist });
var pagegrulist = grulist.Skip((input.PageIndex - 1) * input.PageSize).Take(input.PageSize).ToList();
return ResultOutput.Ok(new { TotalCount = grulist.Count(), grudlist= pagegrulist });
}
/// <summary>

7
src/2.services/ATS.NonCustodial.Application/Impl/Business/AppDeviceManagementService.cs

@ -101,14 +101,9 @@ namespace ATS.NonCustodial.Application.Impl.Business
{
var express =await GetExpression(input, _appDeviceManagementRepository.AsQueryable(false, true));
var rtn = await base.GetPageAsync<AppDeviceManagement, AppDeviceManagementGetPageInput, AppDeviceManagementListDto>(input, express);
var limits = User.limits;
var selectLimits = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => limits.Contains(w.UnitId.ToString())).Select(s=>s.SupervisorId)
.ToListAsync();
var userList = await _userService.GetAllByConditionAsync(new BatchIdsInput()
{
Ids = rtn.Data.Where(w=> selectLimits.Contains(w.SupervisedPersonId)).Select(w => w.SupervisedPersonId).ToList()
Ids = rtn.Data.Select(w => w.SupervisedPersonId).ToList()
});
await rtn.Data.ForEachAsync(item =>

35
src/2.services/ATS.NonCustodial.Application/Impl/Business/AppEarlyWarningService.cs

@ -265,18 +265,7 @@ namespace ATS.NonCustodial.Application.Impl.Business
[AllowAnonymous]
public async Task<IResultOutput> GetPageAsync(AppEarlyWarningGetPageInput input)
{
//获取当前用户权限下的案件ids
var limits = User.limits;
var selectLimits = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => limits.Contains(w.UnitId.ToString()))
.ToListAsync();
var caseIdList = selectLimits.Select(w => w.CaseId).Distinct().ToList();
var express = await GetExpression(input, _appEarlyWarningRepository.AsQueryable(false, true));
// 先应用案件ID过滤条件
express = express.Where(w => caseIdList.Contains(w.CaseId));
// 然后再获取分页数据
return await base.GetEntityAddPageAsync<AppEarlyWarning, AppEarlyWarningGetPageInput, AppEarlyWarningListDto>(input, express);
}
@ -287,20 +276,14 @@ namespace ATS.NonCustodial.Application.Impl.Business
/// <returns></returns>
[HttpPost]
public async Task<IResultOutput> GetCrossborderStatisticsAsync(AppEarlyWarningGetPageInput input)
{ //获取当前用户权限下的案件ids
var limits = User.limits;
var selectLimits = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => limits.Contains(w.UnitId.ToString()))
.ToListAsync();
var caseIds = selectLimits.Select(w => w.CaseId).Distinct().ToList();
{
var express = await GetExpression(input, _appEarlyWarningRepository.AsQueryable(false, true));
var grudlist = express.Where(p=> caseIds.Contains(p.CaseId))
var grudlist = express
.WhereIf(input.supname.NotNull(), w => w.SupervisedPersonName.Contains(input.supname))
.GroupBy(q => new { q.CaseId, q.CaseName, q.SupervisedPersonId, q.SupervisedPersonName }).Select(q => new { q.Key.CaseId, q.Key.CaseName, q.Key.SupervisedPersonName, q.Key.SupervisedPersonId, Count = q.ToList().Count() }).Skip((input.PageIndex - 1) * input.PageSize).Take(input.PageSize);
//var SupervisedPersonIds = grudlist.Select(q => q.SupervisedPersonId);
// var grudlistcunot = express.Where(q => SupervisedPersonIds.Contains(q.SupervisedPersonId)).ToList();
return ResultOutput.Ok(new { TotalCount = express.Where(p => caseIds.Contains(p.CaseId)).GroupBy(q => new { q.CaseId, q.CaseName, q.SupervisedPersonId, q.SupervisedPersonName }).Count(), grudlist });
var SupervisedPersonIds = grudlist.Select(q => q.SupervisedPersonId);
var grudlistcunot = express.Where(q => SupervisedPersonIds.Contains(q.SupervisedPersonId)).ToList();
return ResultOutput.Ok(new { TotalCount = express.GroupBy(q => new { q.CaseId, q.CaseName, q.SupervisedPersonId, q.SupervisedPersonName }).Count(), grudlist });
}
@ -423,13 +406,7 @@ namespace ATS.NonCustodial.Application.Impl.Business
/// <returns></returns>
private async Task<IQueryable<AppEarlyWarning>> GetExpression(AppEarlyWarningGetPageInput pageInput, IQueryable<AppEarlyWarning?> query)
{
var limits = User.limits;
var IsAdmin = User.IsAdmin;
var selectLimits = await _appCaseSupervisorRepository.AsQueryable(false, true)
.WhereIf((!IsAdmin),w => limits.Contains(w.UnitId.ToString()))
.ToListAsync();
var caseIds = selectLimits.Select(w => w.CaseId).Distinct().ToList();
//var caseIds = await (await base.GetCurrentUserCaseListAsync()).Select(w => w.AppCaseManagement.Id).ToListAsync();
var caseIds = await (await base.GetCurrentUserCaseListAsync()).Select(w => w.AppCaseManagement.Id).ToListAsync();
query = query.Where(w => caseIds.Contains(w.CaseId))
.WhereIf(pageInput.KeyWord.NotNull(), w => w.Title.Contains(pageInput.KeyWord) || w.CaseName.Contains(pageInput.KeyWord))

21
src/2.services/ATS.NonCustodial.Application/Impl/Business/AppManagementService.cs

@ -2,7 +2,6 @@
using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.AppDictionaries;
using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.Auth;
using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.Auth.Output;
using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.SMS;
using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.User;
using ATS.NonCustodial.Application.Contracts.Interfaces.Business.AppAnnouncements;
using ATS.NonCustodial.Application.Contracts.Interfaces.Business.AppAnnouncements.Input;
@ -89,7 +88,6 @@ namespace ATS.NonCustodial.Application.Impl.Business
private readonly IAppEarlyWarningService _appEarlyWarningService;
private readonly IAppAnnouncementService _appAnnouncementService;
private readonly IAppDirectorDescriptorService _appDirectorDescriptorService;
private readonly ISMSService _smsService;
/// <summary>
///
@ -139,8 +137,7 @@ namespace ATS.NonCustodial.Application.Impl.Business
IEfRepository<AppSessionMessage, long> appSessionMessageRepository,
IAppEarlyWarningService appEarlyWarningService,
IAppAnnouncementService appAnnouncementService,
IEfRepository<AppEarlyWarningViewStatistics, long> appEarlyWarningViewStatisticsRepository,
ISMSService smsService)
IEfRepository<AppEarlyWarningViewStatistics, long> appEarlyWarningViewStatisticsRepository)
: base(
appManagementRepository,
appSupervisorRepository,
@ -170,7 +167,6 @@ namespace ATS.NonCustodial.Application.Impl.Business
_appEarlyWarningViewStatisticsRepository = appEarlyWarningViewStatisticsRepository;
_appDirectoryDescriptorRepository = appDirectoryDescriptorRepository;
_appFileDescriptorRepository = appFileDescriptorRepository;
_smsService = smsService;
}
#endregion Identity
@ -186,8 +182,7 @@ namespace ATS.NonCustodial.Application.Impl.Business
/// </remarks>
public async Task<IResultOutput<List<SupervisedPersonListOutput>>> GetSupervisedPersonListByName(string? name)
{
//CaseProgressEnum案件已结束的不再展示
var rtn = (await GetCaseListDetail(name)).Where(w => w.Latitude != null && w.Longitude != null&&w.CaseProgress!= CaseProgressEnum.Closed).ToList();
var rtn = (await GetCaseListDetail(name)).Where(w => w.Latitude != null && w.Longitude != null).ToList();
//返回结果
return (IResultOutput<List<SupervisedPersonListOutput>>)ResultOutput.Ok(rtn);
@ -987,9 +982,6 @@ namespace ATS.NonCustodial.Application.Impl.Business
[AllowAnonymous]
public async Task<IResultOutput> SubmitBindingApplication(SubmitBindingApplicationInput input)
{
bool checkCode = await _smsService.CheckCodeAsync(input.phone, input.checkCode, "CheckCode");
if (!checkCode) return ResultOutput.NotOk("无效验证码");
//[1]校验当前账户是否是第一次绑定
//if (!await _appSupervisedPersonRepository.AnyAsync(w => w.IdCard == input.IdCard && !w.IsBound)) return ResultOutput.NotOk("当前身份没有被监管,请检查身份证是否输入正确");
if (!await _appSupervisedPersonRepository.AnyAsync(w => w.IdCard == input.IdCard)) return ResultOutput.NotOk("当前身份没有被监管,请检查身份证是否输入正确");
@ -1272,15 +1264,8 @@ namespace ATS.NonCustodial.Application.Impl.Business
private async Task<List<SupervisedPersonListOutput>> GetCaseListDetailByIm(string? name)
{
//获取当前用户权限下的案件ids
var limits = User.limits;
var selectLimits = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => limits.Contains(w.UnitId.ToString()))
.ToListAsync();
var caseIdList = selectLimits.Select(w => w.CaseId).Distinct().ToList();
var data = (await base.GetCurrentUserCaseListAsync())
.Where(W => W.AppCaseManagement!=null&& W.AppCaseSupervisedPerson != null && W.AppCaseSupervisor != null && W.AppCaseManagement.CaseProgress != CaseProgressEnum.Pending && caseIdList.Contains(W.AppCaseManagement.Id)&&caseIdList.Contains(W.AppCaseSupervisedPerson.CaseId)&&caseIdList.Contains(W.AppCaseSupervisor.CaseId))
.Where(W => W.AppCaseManagement.CaseProgress != CaseProgressEnum.Pending)
.WhereIf(name.NotNull(), w => w.AppCaseSupervisedPerson.SupervisedPersonName!.Contains(name))
.Select(w => new
{

21
src/2.services/ATS.NonCustodial.Application/Impl/Business/AppPunchRecordService.cs

@ -183,14 +183,7 @@ namespace ATS.NonCustodial.Application.Impl.Business
[HttpPost]
public async Task<IResultOutput> GetPunchPageAsync(AppPunchRecordGetPageInput input)
{
//获取当前用户权限下的案件ids
var limits = User.limits;
var selectLimits = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => limits.Contains(w.UnitId.ToString()))
.ToListAsync();
var caseIds = selectLimits.Select(w => w.CaseId).Distinct().ToList();
// var caseIds = await (await base.GetCurrentUserCaseListAsync()).Select(w => w.AppCaseManagement.Id).ToListAsync();
var caseIds = await (await base.GetCurrentUserCaseListAsync()).Select(w => w.AppCaseManagement.Id).ToListAsync();
//var list= await base._appSupervisedPersonRepository.AsQueryable(false, true).Where(q=> caseIds.Contains(q.CaseId)).ToListAsync();
var data = await _appPunchRecordStatisticsRepository
@ -352,20 +345,12 @@ namespace ATS.NonCustodial.Application.Impl.Business
case null:
break;
}
//获取当前用户权限下的案件ids
var limits = User.limits;
var selectLimits = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => limits.Contains(w.UnitId.ToString()))
.ToListAsync();
var caseIdList = selectLimits.Select(w => w.CaseId).Distinct().ToList();
//根据当前登录人查看其手里的案件被监管人
var spList = await base.GetCurrentUserCaseListAsync();
var spIds = await spList.Where(q => q.AppCaseSupervisedPerson != null && caseIdList.Contains(q.AppCaseSupervisedPerson.CaseId)).Select(w => w.AppCaseSupervisedPerson!.SupervisedPersonId).ToListAsync();
var spIds = await spList.Where(q => q.AppCaseSupervisedPerson != null).Select(w => w.AppCaseSupervisedPerson!.SupervisedPersonId).ToListAsync();
//查询记录
var query = await _appPunchRecordStatisticsRepository
.AsQueryable(false, true).Where(q => spIds.Contains(q.SupervisedPersonId)&& caseIdList.Contains(q.CaseId))
.AsQueryable(false, true).Where(q => spIds.Contains(q.SupervisedPersonId))
.WhereIf(input.CaseId != default, a => a.CaseId == input.CaseId)
.WhereIf(input.SupervisedPersonId != default, w => w.SupervisedPersonId == input.SupervisedPersonId)
.WhereIf(startTime != DateTime.MinValue, w => w.CreatedTime >= startTime)

10
src/2.services/ATS.NonCustodial.Application/Impl/Business/AppViolationStatisticsService.cs

@ -100,19 +100,13 @@ namespace ATS.NonCustodial.Application.Impl.Business
[HttpPost]
public async Task<IResultOutput> ViolationStatisticsPageAsync(ViolationStatisticsPageInput input)
{
//获取当前用户权限下的案件ids
var limits = User.limits;
var selectLimits = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => limits.Contains(w.UnitId.ToString()))
.ToListAsync();
var caseIdList = selectLimits.Select(w => w.CaseId).Distinct().ToList();
//根据当前登录人查看其手里的案件被监管人
var spList = await base.GetCurrentUserCaseListAsync();
//获取案件信息
var casebaselist = await spList.Where(q => q.AppCaseManagement != null&& caseIdList.Contains(q.AppCaseManagement.Id)).Select(q => q.AppCaseManagement).ToListAsync();
var casebaselist = await spList.Where(q => q.AppCaseManagement != null).Select(q => q.AppCaseManagement).ToListAsync();
//获取案件id
var casebase = await spList
.Where(q => q.AppCaseManagement != null && caseIdList.Contains(q.AppCaseManagement.Id))
.Where(q => q.AppCaseManagement != null)
.WhereIf(input.CaseProgress != null, a => a.AppCaseManagement.CaseProgress == input.CaseProgress).Select(q => q.AppCaseManagement.Id).ToListAsync();
var spIds = await spList.Where(q => q.AppCaseSupervisedPerson != null&& casebase.Contains(q.AppCaseSupervisedPerson.CaseId)).Select(w => w.AppCaseSupervisedPerson!.SupervisedPersonId).ToListAsync();
//查询记录

127
src/2.services/ATS.NonCustodial.Application/Impl/Business/CaseManagements/AppCaseManagementService.cs

@ -16,7 +16,6 @@ using ATS.NonCustodial.Domain.Shared.Enums;
using ATS.NonCustodial.Domain.Shared.OrmRepositories.Basic.EfCore;
using ATS.NonCustodial.DynamicApi;
using ATS.NonCustodial.DynamicApi.Attributes;
using ATS.NonCustodial.Shared.Common.Auth;
using ATS.NonCustodial.Shared.Common.Dtos;
using ATS.NonCustodial.Shared.Common.Enums;
using ATS.NonCustodial.Shared.Common.UnifiedResults;
@ -141,45 +140,24 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
[HttpPost]
public async Task<IResultOutput> GetPageAsync(AppCaseManagementGetPageInput input)
{
var limits = User.limits;
var selectLimits = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => limits.Contains(w.UnitId.ToString()))
.ToListAsync();
input.CaseIds = selectLimits.Select(w => w.CaseId).Distinct().ToList();
var express = await GetExpression(input, _appCaseManagementRepository.AsQueryable(false, true));
var rtn = await base.GetPageAsync<AppCaseManagement, AppCaseManagementGetPageInput, AppCaseManagementListDto>(input, express);
var caseIds = rtn.Data.Select(w => w.Id).ToList();
var caseSupervisor = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => caseIds.Contains(w.CaseId))
.ToListAsync();
foreach (var listDto in rtn.Data)
{
listDto.Supervisor = selectLimits.Where(w => w.CaseId == listDto.Id).Select(w => w.SupervisorName).JoinAsString(",");
listDto.Supervisor = caseSupervisor.Where(w => w.CaseId == listDto.Id).Select(w => w.SupervisorName).JoinAsString(",");
}
return ResultOutput.Ok(rtn);
}
//[HttpPost]
//public async Task<IResultOutput> GetPageAsync(AppCaseManagementGetPageInput input)
//{
// var express = await GetExpression(input, _appCaseManagementRepository.AsQueryable(false, true));
// var rtn = await base.GetPageAsync<AppCaseManagement, AppCaseManagementGetPageInput, AppCaseManagementListDto>(input, express);
// var caseIds = rtn.Data.Select(w => w.Id).ToList();
// var caseSupervisor = await _appCaseSupervisorRepository.AsQueryable(false, true)
// .Where(w => caseIds.Contains(w.CaseId))
// .ToListAsync();
// foreach (var listDto in rtn.Data)
// {
// listDto.Supervisor = caseSupervisor.Where(w => w.CaseId == listDto.Id).Select(w => w.SupervisorName).JoinAsString(",");
// }
// return ResultOutput.Ok(rtn);
//}
/// <summary>
/// 案件统计
/// </summary>
@ -522,8 +500,7 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
{
CaseId = caseId.Value,
SupervisorId = csp.SupervisedId,
SupervisorName = csp.SupervisedName,
UnitId = GetUnitIdByUserId(csp.SupervisedId)
SupervisorName = csp.SupervisedName
});
var dels = new List<long>();
var list = await _appCaseSupervisorRepository.AsQueryable(false, true).Where(w => w.CaseId == caseId).ToListAsync();
@ -818,8 +795,7 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
{
CaseId = caseId.Value,
SupervisorId = csp.SupervisedId,
SupervisorName = csp.SupervisedName,
UnitId = GetUnitIdByUserId(csp.SupervisedId)
SupervisorName = csp.SupervisedName
});
var Supervisordata = await _appCaseSupervisorRepository.FindAsync(q => q.CaseId == caseId && sList.Select(q => q.SupervisorId).Contains(q.SupervisorId));
@ -890,20 +866,12 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
/// <returns></returns>
public async Task<IResultOutput> CaseStatisticsHandlingTime(CaseStatisticsHandlingTimePageInput input)
{
//获取当前用户权限下的案件ids
var limits = User.limits;
var selectLimits = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => limits.Contains(w.UnitId.ToString()))
.ToListAsync();
var caseIdList = selectLimits.Select(w => w.CaseId).Distinct().ToList();
var query = _appCaseManagementRepository
.AsQueryable(false, true)
.Where(w => w.CaseProgress == CaseProgressEnum.Closed)
.WhereIf(input.KeyWord.NotNull(), a => a.Name.Contains(input.KeyWord))
.WhereIf(input.TimeSearch.BeginTime.Length == 2, w => w.CaseBeginTime > input.TimeSearch.BeginTime[0] && w.CaseBeginTime < input.TimeSearch.BeginTime[1].AddDays(1))
.WhereIf(input.TimeSearch.EndTime.Length == 2, w => w.CaseClosedTime > input.TimeSearch.EndTime[0] && w.CaseClosedTime <= input.TimeSearch.EndTime[1].AddDays(1))
.Where(w => caseIdList.Contains(w.Id));
.WhereIf(input.TimeSearch.EndTime.Length == 2, w => w.CaseClosedTime > input.TimeSearch.EndTime[0] && w.CaseClosedTime <= input.TimeSearch.EndTime[1].AddDays(1));
var pageData = await
query.ProjectTo<CaseStatisticsHandlingTimeListDto>(Mapper.ConfigurationProvider)
@ -939,18 +907,11 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
/// <returns></returns>
public async Task<IResultOutput> CaseTypeStatistics(CaseTypeStatisticsGetPageInput input)
{
//获取当前用户权限下的案件ids
var limits = User.limits;
var selectLimits = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => limits.Contains(w.UnitId.ToString()))
.ToListAsync();
var caseIds = selectLimits.Select(w => w.CaseId).Distinct().ToList();
var data = await _appCaseManagementRepository.AsQueryable(false, true)
.WhereIf(input.KeyWord.NotNull(), a => a.Name.Contains(input.KeyWord))
.WhereIf(input.TimeSearch.BeginTime.Length == 2, w => w.CreatedTime > input.TimeSearch.BeginTime[0] && w.CreatedTime < input.TimeSearch.BeginTime[1].AddDays(1))
.WhereIf(input.TimeSearch.EndTime.Length == 2, w => w.CaseClosedTime > input.TimeSearch.EndTime[0] && w.CaseClosedTime < input.TimeSearch.EndTime[1].AddDays(1))
.WhereIf(input.ajtype.NotNull(), w => w.CaseTypeId == input.ajtype.ToLong()).Where(w => caseIds.Contains(w.Id))
.WhereIf(input.ajtype.NotNull(), w => w.CaseTypeId == input.ajtype.ToLong())
.ToListAsync();
var dataGroup = data.GroupBy(w => w.CaseTypeId);
@ -995,12 +956,6 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
/// <returns></returns>
public async Task<IResultOutput> CaseHandlingFrequencyStatistics(CaseHandlingFrequencyStatisticsGetPageInput input)
{
//获取当前用户权限下的案件ids
var limits = User.limits;
var selectLimits = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => limits.Contains(w.UnitId.ToString()))
.ToListAsync();
var caseIds = selectLimits.Select(w => w.CaseId).Distinct().ToList();
//query
var query = await (await base.GetCurrentUserCaseListAsync())
//.Where(w => w.AppCaseSupervisedPerson != null && w.AppCaseManagement.CaseProgress != CaseProgressEnum.Closed)
@ -1014,7 +969,7 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
SupervisedPersonName = w.AppCaseSupervisedPerson.SupervisedPersonName
}).ToListAsync();
var dataGroup = query.Where(w => caseIds.Contains(w.CaseId)).GroupBy(w => new
var dataGroup = query.GroupBy(w => new
{
w.CaseId,
w.SupervisedPersonId,
@ -1419,18 +1374,10 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
[HttpPost]
public async Task<IResultOutput<PagedList<GetSupervisedPersonApprovalStatusOutput>>> GetSupervisedPersonApprovalStatus(GetSupervisedPersonApprovalStatusPageInput input)
{
//获取当前用户权限下的案件ids
var limits = User.limits;
var selectLimits = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => limits.Contains(w.UnitId.ToString()))
.ToListAsync();
var caseIds = selectLimits.Select(w => w.CaseId).Distinct().ToList();
var queryable = (await GetCurrentUserCaseListAsync())
.WhereIf(input.SupervisedPersonId > 0, w => w.AppCaseSupervisedPerson.SupervisedPersonId == input.SupervisedPersonId)
.WhereIf(input.ApprovalStatus.HasValue, w => w.AppCaseSupervisedPerson.ApprovalStatus == input.ApprovalStatus)
.WhereIf(input.name.NotNull(), w => w.AppCaseSupervisedPerson.SupervisedPersonName.Contains(input.name))
.Where(w => w.AppCaseManagement != null && w.AppCaseSupervisedPerson != null && w.AppCaseSupervisor != null && caseIds.Contains(w.AppCaseSupervisedPerson.CaseId) && caseIds.Contains(w.AppCaseManagement.Id) && caseIds.Contains(w.AppCaseSupervisor.CaseId));
.WhereIf(input.name.NotNull(), w => w.AppCaseSupervisedPerson.SupervisedPersonName.Contains(input.name));
var caseSpQueryable = await queryable.Where(q => q.AppCaseSupervisedPerson != null).Select(w => Mapper.Map<AppCaseSupervisedPerson, GetSupervisedPersonApprovalStatusOutput>(w.AppCaseSupervisedPerson)).ToListAsync();
if ((await base.IsAdmin()).IsAdmin) caseSpQueryable = caseSpQueryable.Distinct((x, y) => x.CaseId == y.CaseId && x.SupervisedPersonId == y.SupervisedPersonId).ToList();
@ -1482,7 +1429,6 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
var caseIds = await (await base.GetCurrentUserCaseListAsync()).Select(w => w.AppCaseManagement.Id).ToListAsync();
query = query
.WhereIf(pageInput.CaseIds.IsNotNullOrEmpty(), w => pageInput.CaseIds.Contains(w.Id))
.WhereIf(pageInput.CaseName.NotNull(), a => a.Name.Contains(pageInput.CaseName))
.WhereIf(pageInput.CaseTypeId != null, a => a.CaseTypeId == pageInput.CaseTypeId)
.WhereIf(pageInput.JudgmentStatusIds.IsNotNullOrEmpty(), w => pageInput.JudgmentStatusIds.Contains(w.JudgmentStatusId))
@ -1568,19 +1514,10 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
[HttpPost]
public async Task<IResultOutput> GetSupervisedPersonAsync(GetSupervisedPersonPage input)
{
var limits = User.limits;
var selectLimits = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => limits.Contains(w.UnitId.ToString()))
.ToListAsync();
var caseIds = selectLimits.Select(w => w.CaseId).Distinct().ToList();
//var caseIds = await (await base.GetCurrentUserCaseListAsync()).Select(w => w.AppCaseManagement.Id).ToListAsync();
var caseIds = await (await base.GetCurrentUserCaseListAsync()).Select(w => w.AppCaseManagement.Id).ToListAsync();
var caselist = await (await base.GetCurrentUserCaseListAsync()).Select(w => new { w.AppCaseManagement.Id, w.AppCaseManagement.Name }).ToListAsync();
//查询待执行,执行种案件涉嫌人员 去除状态筛选,与导出接口一致
//var appSupervisedlist = from a in base._appCaseManagementRepository.AsQueryable(false, true).Where(q => q.CaseProgress != CaseProgressEnum.Closed)
// join b in _appSupervisedPersonRepository.AsQueryable(false, true) on a.Id equals b.CaseId
// select b;
var appSupervisedlist = from a in base._appCaseManagementRepository.AsQueryable(false, true)
//查询待执行,执行种案件涉嫌人员
var appSupervisedlist = from a in base._appCaseManagementRepository.AsQueryable(false, true).Where(q => q.CaseProgress != CaseProgressEnum.Closed)
join b in _appSupervisedPersonRepository.AsQueryable(false, true) on a.Id equals b.CaseId
select b;
var data = await appSupervisedlist
@ -1862,22 +1799,14 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
/// <returns></returns>
public async Task<IActionResult> Getexport(AppCaseManagementGetPageInput input)
{
input.PageIndex = 1;
input.PageSize = 999999;
var limits = User.limits;
var selectLimits = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => limits.Contains(w.UnitId.ToString()))
.ToListAsync();
input.CaseIds = selectLimits.Select(w => w.CaseId).Distinct().ToList();
var express = await GetExpression(input, _appCaseManagementRepository.AsQueryable(false, true));
var rtn = await base.GetPageAsync<AppCaseManagement, AppCaseManagementGetPageInput, AppCaseManagementListexportDto>(input, express);
//var caseIds = rtn.Data.Select(w => w.Id).ToList();
var caseIds = rtn.Data.Select(w => w.Id).ToList();
var caseSupervisor = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => input.CaseIds.Contains(w.CaseId))
.Where(w => caseIds.Contains(w.CaseId))
.ToListAsync();
foreach (var listDto in rtn.Data)
@ -1901,15 +1830,7 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
/// <returns></returns>
public async Task<IActionResult> Getuserexport(GetSupervisedPersonPage input)
{
input.PageIndex = 1;
input.PageSize = 999999;
var limits = User.limits;
var selectLimits = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => limits.Contains(w.UnitId.ToString()))
.ToListAsync();
var caseIds = selectLimits.Select(w => w.CaseId).Distinct().ToList();
//var caseIds = await (await base.GetCurrentUserCaseListAsync()).Select(w => w.AppCaseManagement.Id).ToListAsync();
var caseIds = await (await base.GetCurrentUserCaseListAsync()).Select(w => w.AppCaseManagement.Id).ToListAsync();
var caselist = await (await base.GetCurrentUserCaseListAsync()).Select(w => new { w.AppCaseManagement.Id, w.AppCaseManagement.Name }).ToListAsync();
var data = await _appSupervisedPersonRepository.AsQueryable(false, true)
.Where(q => caseIds.Contains(q.CaseId))
@ -1921,8 +1842,8 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
foreach (var listDto in data.Data)
{
//var judgmentlist = await base.GetDictionariesOutput1("judgment", "");
//var type_caselist = await base.GetDictionariesOutput1("type_case", "");
var judgmentlist = await base.GetDictionariesOutput1("judgment", "");
var type_caselist = await base.GetDictionariesOutput1("type_case", "");
listDto.Casename = caselist.Where(q => q.Id == listDto.CaseId).Select(q => q.Name).JoinAsString(",");
//listDto.CaseTypename = type_caselist.Where(w => w.Id == listDto.CaseTypeId).Select(w => w.Name).JoinAsString(",");
//listDto.JudgmentStatusname = judgmentlist.Where(w => w.Id == listDto.JudgmentStatusId).Select(w => w.Name).JoinAsString(",");
@ -1935,12 +1856,6 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
}
#endregion
private long GetUnitIdByUserId(long id)
{
var user = _appuserRepository.AsQueryable().Where(w => w.Id == id).FirstOrDefault();
return user?.UnitId ?? 0;
}
}
public class Controller : ControllerBase
{

12
src/2.services/ATS.NonCustodial.Application/Impl/Business/CaseManagements/AppSupervisedPersonService.cs

@ -121,18 +121,16 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
}
//修改状态
var propertyNameAndValues = new Dictionary<long, List<(string propertyName, dynamic propertyValue)>>();
foreach (var (key, value) in caseProgress)
{
propertyNameAndValues[key] = new List<(string propertyName, dynamic propertyValue)>()
await _appCaseManagementEfRepository.UpdateAsync(w => w.Id == key,
w => new AppCaseManagement()
{
(nameof(AppCaseManagement.CaseProgress), value),
(nameof(AppCaseManagement.CaseBeginTime), value == CaseProgressEnum.InExecution ? DateTime.Now : (DateTime?)null)
};
CaseProgress = value,
CaseBeginTime = value == CaseProgressEnum.InExecution ? DateTime.Now : null
});
}
await _appCaseManagementEfRepository.UpdateAsync(propertyNameAndValues);
return ResultOutput.Ok();
}
}

21
src/2.services/ATS.NonCustodial.Application/Impl/Business/MaterialManager/AppFileAccessRecordsService.cs

@ -155,16 +155,9 @@ namespace ATS.NonCustodial.Application.Impl.Business.MaterialManager
[HttpPost]
public async Task<IResultOutput<PagedList<GetLearningSituationForCountOutput>>> GetSituationForCount(FileAccessRecordsGetPageInput input)
{
//获取当前用户权限下的案件ids
var limits = User.limits;
var selectLimits = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => limits.Contains(w.UnitId.ToString()))
.ToListAsync();
var caseIdList = selectLimits.Select(w => w.CaseId).Distinct().ToList();
//获取案件及案件被监管人
// var caseIds = await (await base.GetCurrentUserCaseListAsync()).Select(w => w.AppCaseManagement.Id).ToListAsync();
var SupervisedPersonIds = await base._appSupervisedPersonRepository.AsQueryable(false, true).Where(q => caseIdList.Contains(q.CaseId)).Select(q=>q.SupervisedPersonId).ToListAsync();
var caseIds = await (await base.GetCurrentUserCaseListAsync()).Select(w => w.AppCaseManagement.Id).ToListAsync();
var SupervisedPersonIds = await base._appSupervisedPersonRepository.AsQueryable(false, true).Where(q => caseIds.Contains(q.CaseId)).Select(q=>q.SupervisedPersonId).ToListAsync();
//获取监管人查阅次数
var queryable = await GetExpression(input, _appFileAccessRecordsRepository.AsQueryable(false, true).Where(q=> SupervisedPersonIds.Contains(q.SupervisedPersonId)))
.ToListAsync();
@ -202,14 +195,8 @@ namespace ATS.NonCustodial.Application.Impl.Business.MaterialManager
[HttpPost]
public async Task<IResultOutput> GetSituationCount(FileAccessRecordsGetPageInput input)
{
//获取当前用户权限下的案件ids
var limits = User.limits;
var selectLimits = await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => limits.Contains(w.UnitId.ToString()))
.ToListAsync();
var caseIds = selectLimits.Select(w => w.CaseId).Distinct().ToList();
//var caseIds = await (await base.GetCurrentUserCaseListAsync()).Select(w => w.AppCaseManagement.Id).ToListAsync();
//获取案件及案件被监管人
var caseIds = await (await base.GetCurrentUserCaseListAsync()).Select(w => w.AppCaseManagement.Id).ToListAsync();
var SupervisedPersonIds = await base._appSupervisedPersonRepository.AsQueryable(false, true).Where(q => caseIds.Contains(q.CaseId)).Select(q => q.SupervisedPersonId).ToListAsync();
//获取监管人查阅次数
var queryable = await GetExpression(input, _appFileAccessRecordsRepository.AsQueryable(false, true).Where(q => SupervisedPersonIds.Contains(q.SupervisedPersonId)))

7
src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Admins/Auth/IAuthService.cs

@ -79,12 +79,5 @@ namespace ATS.NonCustodial.Application.Contracts.Interfaces.Admins.Auth
/// <param name="user">用户信息</param>
/// <returns></returns>
Task<string> GetToken(AuthLoginOutput? user);
/// <summary>
/// 根据身份证号获取电话号码
/// </summary>
/// <param name="phone"></param>
/// <returns></returns>
Task<IResultOutput> GetPhoneByIDCard(string idCard);
}
}

14
src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Admins/Auth/Output/AuthLoginOutput.cs

@ -1,6 +1,4 @@
using ATS.NonCustodial.Domain.Shared.Constants;
using ATS.NonCustodial.Shared.Common.Enums;
using System.ComponentModel.DataAnnotations;
using ATS.NonCustodial.Shared.Common.Enums;
namespace ATS.NonCustodial.Application.Contracts.Interfaces.Admins.Auth.Output
{
@ -75,15 +73,5 @@ namespace ATS.NonCustodial.Application.Contracts.Interfaces.Admins.Auth.Output
/// 手机登录获取到得手机唯一标识,(用于个推)
/// </summary>
public string? CId { get; set; }
/// <summary>
/// 查询界限
/// </summary>
public string? limits { get; set; }
/// <summary>
/// 是否是Admin
/// </summary>
public bool IsAdmin { get; set; }
}
}

36
src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Admins/SMS/ISMSService.cs

@ -1,36 +0,0 @@
using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.Auth.Input;
using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.Auth.Output;
using ATS.NonCustodial.Domain.Shared.Enums;
using ATS.NonCustodial.Shared.Captcha.Dto;
using ATS.NonCustodial.Shared.Common.Dtos;
using ATS.NonCustodial.Shared.Common.UnifiedResults;
namespace ATS.NonCustodial.Application.Contracts.Interfaces.Admins.SMS
{
public interface ISMSService
{
/// <summary>
/// 发送验证码
/// </summary>
/// <param name="phone"></param>
/// <returns></returns>
Task<IResultOutput> SendCheckCodeSMS(string phone, string ipAddress = "", string type = "CheckCode");
/// <summary>
/// 校验验证码
/// </summary>
/// <param name="phoneNumber"></param>
/// <param name="code"></param>
/// <param name="type"></param>
/// <returns></returns>
Task<bool> CheckCodeAsync(string phoneNumber, string code, string type = "default");
/// <summary>
/// 发送前校验
/// </summary>
/// <param name="phone"></param>
/// <returns></returns>
Task<bool> CanSendCodeAsync(string phone);
}
}

2
src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Business/AppCaseManagements/AppCaseManagement/Input/AppCaseManagementGetPageInput.cs

@ -29,7 +29,5 @@ namespace ATS.NonCustodial.Application.Contracts.Interfaces.Business.AppCaseMana
/// 案件类型(数据来自字典)
/// </summary>
public long? CaseTypeId { get; set; }
public List<long>? CaseIds { get; set; }
}
}

2
src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Business/AppCaseManagements/AppCaseManagement/Output/AppCaseManagementListDto.cs

@ -62,7 +62,7 @@ namespace ATS.NonCustodial.Application.Contracts.Interfaces.Business.AppCaseMana
/// <summary>
/// 案子开始时间
/// </summary>
public DateTime? CaseBeginTime { get; set; }
public DateTime CaseBeginTime { get; set; }
/// <summary>
/// 案子结束时间

4
src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Business/Apps/Input/SubmitBindingApplicationInput.cs

@ -26,9 +26,5 @@
/// 自动获取CID(手机唯一id)
/// </summary>
public string? CId { get; set; }
public string? phone { get; set; }
public string? checkCode { get; set; }
}
}

3939
src/4.apps/ATS.NonCustodial.Admin.Api/Seeds/initData/app_api.json

File diff suppressed because it is too large Load Diff

17951
src/4.apps/ATS.NonCustodial.Admin.Api/Seeds/initData/app_dictionary.json

File diff suppressed because it is too large Load Diff

3530
src/4.apps/ATS.NonCustodial.Admin.Api/Seeds/initData/app_user.json

File diff suppressed because it is too large Load Diff

3037
src/4.apps/ATS.NonCustodial.Admin.Api/Seeds/initData/app_user_role.json

File diff suppressed because it is too large Load Diff

2
src/5.shared/ATS.NonCustodial.Admin.Jobs/Jobs/PunchRecordJob.cs

@ -45,7 +45,7 @@ namespace ATS.NonCustodial.Admin.QuartzJobs.Jobs
{
ConsoleHelper.WriteWarningLine("job start……");
//await _appPunchRecordService.CheckPunchRecordForJob();
await _appPunchRecordService.CheckPunchRecordForJob();
ConsoleHelper.WriteWarningLine("job end……");
}

15
src/5.shared/ATS.NonCustodial.Shared/Common/Auth/ClaimAttributes.cs

@ -1,6 +1,4 @@
using System.ComponentModel.DataAnnotations;
namespace ATS.NonCustodial.Shared.Common.Auth
namespace ATS.NonCustodial.Shared.Common.Auth
{
/// <summary>
/// Claim属性
@ -85,16 +83,5 @@ namespace ATS.NonCustodial.Shared.Common.Auth
/// 职位类型转换为枚举
/// </summary>
public const string personType = "persontype";
/// <summary>
/// 查询界限
/// </summary>
public const string limits = "limits";
/// <summary>
/// 是否是Admin
/// </summary>
public const string IsAdmin = "false";
}
}

12
src/5.shared/ATS.NonCustodial.Shared/Common/Auth/IUser.cs

@ -1,5 +1,4 @@
using ATS.NonCustodial.Shared.Common.Enums;
using System.ComponentModel.DataAnnotations;
using System.Security.Claims;
namespace ATS.NonCustodial.Shared.Common.Auth
@ -51,17 +50,6 @@ namespace ATS.NonCustodial.Shared.Common.Auth
/// </summary>
string NickName { get; }
/// <summary>
/// 查询界限
/// </summary>
string limits { get; }
/// <summary>
/// 是否管理员
/// </summary>
bool IsAdmin { get; }
/// <summary>
/// 租户Id
/// </summary>

36
src/5.shared/ATS.NonCustodial.Shared/Common/Auth/User.cs

@ -158,42 +158,6 @@ namespace ATS.NonCustodial.Shared.Common.Auth
}
}
/// <summary>
/// 昵称
/// </summary>
public string limits
{
get
{
var name = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.limits);
if (name != null && name.Value.NotNull())
{
return name.Value;
}
return "";
}
}
/// <summary>
/// 是否管理员
/// </summary>
public bool IsAdmin
{
get
{
var name = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.IsAdmin);
if (name != null && name.Value.NotNull())
{
return name.Value=="true";
}
return false;
}
}
/// <summary>
/// 租户Id
/// </summary>

4
src/5.shared/ATS.NonCustodial.Shared/Extensions/Collection/PaginationExtensions.cs

@ -40,7 +40,7 @@ namespace ATS.NonCustodial.Shared.Extensions.Collection
/// <returns></returns>
public static async Task<PagedList<TEntity>> PagedAsync<TEntity>(this IQueryable<TEntity> queryable, PageRequestBaseInput pageDto) where TEntity : class
{
if (pageDto.PageSize > 500) pageDto.PageSize = 500;
if (pageDto.PageSize > 25) pageDto.PageSize = 25;
var pagedQuery = GetPagedQuery(queryable, pageDto.PageIndex, pageDto.PageSize);
var totalCount = await queryable.CountAsync().ConfigureAwait(false);
@ -62,7 +62,7 @@ namespace ATS.NonCustodial.Shared.Extensions.Collection
where TEntity : class
where TPageInput : BasePageInput
{
if (pageDto.PageSize > 500) pageDto.PageSize = 500;
if (pageDto.PageSize > 25) pageDto.PageSize = 25;
var pagedQuery = GetPagedQuery(queryable, pageDto.PageIndex, pageDto.PageSize);
var totalCount = await queryable.CountAsync().ConfigureAwait(false);

Loading…
Cancel
Save