Browse Source

预约计划模板

master
wxd 1 year ago
parent
commit
a666559bee
  1. 55
      src/Shentun.WebPeis.Application.Contracts/AppointScheduleTemplates/AppointScheduleTemplateDto.cs
  2. 14
      src/Shentun.WebPeis.Application.Contracts/AppointScheduleTemplates/AppointScheduleTemplateIdInputDto.cs
  3. 50
      src/Shentun.WebPeis.Application.Contracts/AppointScheduleTemplates/CreateAppointScheduleTemplateDto.cs
  4. 55
      src/Shentun.WebPeis.Application.Contracts/AppointScheduleTemplates/UpdateAppointScheduleTemplateDto.cs
  5. 20
      src/Shentun.WebPeis.Application.Contracts/AuditedEntityDtoName.cs
  6. 19
      src/Shentun.WebPeis.Application.Contracts/UpdateManySortInputDto.cs
  7. 20
      src/Shentun.WebPeis.Application.Contracts/Users/UpdatePassWordDto.cs
  8. 107
      src/Shentun.WebPeis.Application/AppointScheduleTemplates/AppointScheduleTemplateAppService.cs
  9. 41
      src/Shentun.WebPeis.Application/Users/UserAppService.cs
  10. 131
      src/Shentun.WebPeis.Domain/AppointScheduleTemplates/AppointScheduleTemplateManager.cs
  11. 345
      src/Shentun.WebPeis.Domain/DataHelper.cs
  12. 117
      src/Shentun.WebPeis.Domain/EntityHelper.cs
  13. 13
      src/Shentun.WebPeis.Domain/IDisplayOrder.cs
  14. 7
      src/Shentun.WebPeis.Domain/Models/AppointScheduleTemplate.cs
  15. 19
      src/Shentun.WebPeis.Domain/UpdateSortManyDto.cs

55
src/Shentun.WebPeis.Application.Contracts/AppointScheduleTemplates/AppointScheduleTemplateDto.cs

@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.WebPeis.AppointScheduleTemplates
{
public class AppointScheduleTemplateDto : AuditedEntityDtoName
{
/// <summary>
/// 主键
/// </summary>
public Guid AppointScheduleTemplateId { get; set; }
/// <summary>
/// 星期
/// </summary>
public int WeekId { get; set; }
/// <summary>
/// 上午数量限制
/// </summary>
public int AmNumberLimit { get; set; }
/// <summary>
/// 下午数量限制
/// </summary>
public int PmNumberLimit { get; set; }
/// <summary>
/// 个人体检数量限制
/// </summary>
public int SingleNumberLimit { get; set; }
/// <summary>
/// 上午上班时间
/// </summary>
public string? AmStartTime { get; set; }
/// <summary>
/// 上午下班时间
/// </summary>
public string? AmStopTime { get; set; }
/// <summary>
/// 下午上班时间
/// </summary>
public string? PmStartTime { get; set; }
/// <summary>
/// 下午下班时间
/// </summary>
public string? PmStopTime { get; set; }
public int DisplayOrder { get; set; }
}
}

14
src/Shentun.WebPeis.Application.Contracts/AppointScheduleTemplates/AppointScheduleTemplateIdInputDto.cs

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.WebPeis.AppointScheduleTemplates
{
public class AppointScheduleTemplateIdInputDto
{
/// <summary>
/// 主键
/// </summary>
public Guid AppointScheduleTemplateId { get; set; }
}
}

50
src/Shentun.WebPeis.Application.Contracts/AppointScheduleTemplates/CreateAppointScheduleTemplateDto.cs

@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.WebPeis.AppointScheduleTemplates
{
public class CreateAppointScheduleTemplateDto
{
/// <summary>
/// 星期
/// </summary>
public int WeekId { get; set; }
/// <summary>
/// 上午数量限制
/// </summary>
public int AmNumberLimit { get; set; }
/// <summary>
/// 下午数量限制
/// </summary>
public int PmNumberLimit { get; set; }
/// <summary>
/// 个人体检数量限制
/// </summary>
public int SingleNumberLimit { get; set; }
/// <summary>
/// 上午上班时间
/// </summary>
public string? AmStartTime { get; set; }
/// <summary>
/// 上午下班时间
/// </summary>
public string? AmStopTime { get; set; }
/// <summary>
/// 下午上班时间
/// </summary>
public string? PmStartTime { get; set; }
/// <summary>
/// 下午下班时间
/// </summary>
public string? PmStopTime { get; set; }
}
}

55
src/Shentun.WebPeis.Application.Contracts/AppointScheduleTemplates/UpdateAppointScheduleTemplateDto.cs

@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.WebPeis.AppointScheduleTemplates
{
public class UpdateAppointScheduleTemplateDto
{
/// <summary>
/// 主键
/// </summary>
public Guid AppointScheduleTemplateId { get; set; }
/// <summary>
/// 星期
/// </summary>
public int WeekId { get; set; }
/// <summary>
/// 上午数量限制
/// </summary>
public int AmNumberLimit { get; set; }
/// <summary>
/// 下午数量限制
/// </summary>
public int PmNumberLimit { get; set; }
/// <summary>
/// 个人体检数量限制
/// </summary>
public int SingleNumberLimit { get; set; }
/// <summary>
/// 上午上班时间
/// </summary>
public string? AmStartTime { get; set; }
/// <summary>
/// 上午下班时间
/// </summary>
public string? AmStopTime { get; set; }
/// <summary>
/// 下午上班时间
/// </summary>
public string? PmStartTime { get; set; }
/// <summary>
/// 下午下班时间
/// </summary>
public string? PmStopTime { get; set; }
}
}

20
src/Shentun.WebPeis.Application.Contracts/AuditedEntityDtoName.cs

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Text;
using Volo.Abp.Application.Dtos;
namespace Shentun.WebPeis
{
public class AuditedEntityDtoName: AuditedEntityDto
{
/// <summary>
/// 创建者
/// </summary>
public string CreatorName { get; set; }
/// <summary>
/// 最后修改者
/// </summary>
public string LastModifierName { get; set; }
}
}

19
src/Shentun.WebPeis.Application.Contracts/UpdateManySortInputDto.cs

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.WebPeis
{
public class UpdateManySortInputDto
{
/// <summary>
/// 需要修改的ID
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// 修改方式:1 置顶 2 置底
/// </summary>
public int SortType { get; set; }
}
}

20
src/Shentun.WebPeis.Application.Contracts/Users/UpdatePassWordDto.cs

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.WebPeis.Users
{
public class UpdatePassWordDto
{
/// <summary>
/// 旧密码
/// </summary>
public string OldPassWord { get; set; }
/// <summary>
/// 新密码
/// </summary>
public string NewPassWord { get; set; }
}
}

107
src/Shentun.WebPeis.Application/AppointScheduleTemplates/AppointScheduleTemplateAppService.cs

@ -0,0 +1,107 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
using Shentun.WebPeis.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories;
namespace Shentun.WebPeis.AppointScheduleTemplates
{
/// <summary>
/// 预约计划模板
/// </summary>
[Authorize]
[ApiExplorerSettings(GroupName = "Work")]
public class AppointScheduleTemplateAppService : ApplicationService
{
private readonly IRepository<AppointScheduleTemplate> _appointScheduleTemplateRepository;
private readonly AppointScheduleTemplateManager _appointScheduleTemplateManager;
private readonly CacheService _cacheService;
public AppointScheduleTemplateAppService(
IRepository<AppointScheduleTemplate> appointScheduleTemplateRepository,
AppointScheduleTemplateManager appointScheduleTemplateManager,
CacheService cacheService)
{
_appointScheduleTemplateRepository = appointScheduleTemplateRepository;
_appointScheduleTemplateManager = appointScheduleTemplateManager;
_cacheService = cacheService;
}
/// <summary>
/// 创建
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/AppointScheduleTemplate/Create")]
public async Task<AppointScheduleTemplateDto> CreateAsync(CreateAppointScheduleTemplateDto input)
{
var createEntity = ObjectMapper.Map<CreateAppointScheduleTemplateDto, AppointScheduleTemplate>(input);
var entity = await _appointScheduleTemplateManager.CreateAsync(createEntity);
entity = await _appointScheduleTemplateRepository.InsertAsync(entity);
var dto = ObjectMapper.Map<AppointScheduleTemplate, AppointScheduleTemplateDto>(entity);
dto.CreatorName = await _cacheService.GetSurnameAsync(dto.CreatorId);
dto.LastModifierName = await _cacheService.GetSurnameAsync(dto.LastModifierId);
return dto;
}
/// <summary>
/// 更新
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/AppointScheduleTemplate/Update")]
public async Task<AppointScheduleTemplateDto> UpdateAsync(UpdateAppointScheduleTemplateDto input)
{
var entity = await _appointScheduleTemplateRepository.GetAsync(g => g.AppointScheduleTemplateId == input.AppointScheduleTemplateId);
var sourceEntity = ObjectMapper.Map<UpdateAppointScheduleTemplateDto, AppointScheduleTemplate>(input);
await _appointScheduleTemplateManager.UpdateAsync(sourceEntity, entity);
entity = await _appointScheduleTemplateRepository.UpdateAsync(entity);
var dto = ObjectMapper.Map<AppointScheduleTemplate, AppointScheduleTemplateDto>(entity);
dto.CreatorName = await _cacheService.GetSurnameAsync(dto.CreatorId);
dto.LastModifierName = await _cacheService.GetSurnameAsync(dto.LastModifierId);
return dto;
}
/// <summary>
/// 删除
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/AppointScheduleTemplate/Delete")]
public async Task DeleteAsync(AppointScheduleTemplateIdInputDto input)
{
await _appointScheduleTemplateManager.CheckAndDeleteAsync(input.AppointScheduleTemplateId);
}
/// <summary>
/// 修改排序 置顶,置底
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/AppointScheduleTemplate/UpdateManySort")]
public async Task UpdateManySortAsync(UpdateManySortInputDto input)
{
await _appointScheduleTemplateManager.UpdateManySortAsync(input.Id, input.SortType);
}
/// <summary>
/// 修改排序 拖拽
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/AppointScheduleTemplate/UpdateSortMany")]
public async Task UpdateSortManyAsync(UpdateSortManyDto input)
{
await _appointScheduleTemplateManager.UpdateSortManyAsync(input);
}
}
}

41
src/Shentun.WebPeis.Application/Users/UserAppService.cs

@ -20,6 +20,8 @@ using Volo.Abp.Domain.Repositories;
using Volo.Abp.Identity;
using Volo.Abp.Security.Encryption;
using Volo.Abp.Users;
using Microsoft.AspNetCore.Authorization;
using Shentun.WebPeis.Permissions;
namespace Shentun.WebPeis.Users
{
@ -44,7 +46,7 @@ namespace Shentun.WebPeis.Users
private readonly IRepository<IdentityUserOrganizationUnit> _identityUserOrganizationUnitRepository;
private readonly CurrentUser _currentUser;
private readonly IDistributedCache<IdentityUser, Guid> _userCache;
public UserAppService(
IRepository<IdentityUser, Guid> identityUserRepository,
IdentityUserManager userManager,
@ -80,7 +82,36 @@ namespace Shentun.WebPeis.Users
this._identityUserOrganizationUnitRepository = identityUserOrganizationUnitRepository;
this._currentUser = currentUser;
_userCache = userCache;
}
/// <summary>
/// 修改用户密码 修改自身密码
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[Authorize]
[HttpPost("api/app/Users/UpdatePassWord")]
public async Task UpdatePassWordAsync(UpdatePassWordDto input)
{
var user = await _userManager.FindByIdAsync(_currentUser.Id.ToString());
if (user != null)
{
var isPassWord = await _userManager.CheckPasswordAsync(user, input.OldPassWord);
if (!isPassWord)
{
throw new UserFriendlyException("原密码不正确");
}
await _userManager.RemovePasswordAsync(user);
await _userManager.AddPasswordAsync(user, input.NewPassWord);
}
}
@ -95,7 +126,7 @@ namespace Shentun.WebPeis.Users
UserLoginDto msg;
var user = await _userManager.FindByNameAsync(input.UserName);
if (user != null)
{
@ -116,7 +147,7 @@ namespace Shentun.WebPeis.Users
throw new UserFriendlyException("账号已被锁定");
}
using var client = new HttpClient();
TokenResponse token = await RequestAuthServerLoginByPasswordAsync(client,input.UserName, input.PassWord);
TokenResponse token = await RequestAuthServerLoginByPasswordAsync(client, input.UserName, input.PassWord);
if (token.HttpResponse != null && token.HttpResponse.StatusCode == HttpStatusCode.OK)
{
@ -173,7 +204,7 @@ namespace Shentun.WebPeis.Users
protected virtual async Task<TokenResponse> RequestAuthServerLoginByPasswordAsync(HttpClient client, string username, string password)
{
var request = new PasswordTokenRequest
{

131
src/Shentun.WebPeis.Domain/AppointScheduleTemplates/AppointScheduleTemplateManager.cs

@ -0,0 +1,131 @@
using Microsoft.Extensions.Configuration.UserSecrets;
using NPOI.SS.Formula.Functions;
using Shentun.Utilities;
using Shentun.WebPeis.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities;
using Volo.Abp;
using Volo.Abp.Domain.Repositories;
using NPOI.POIFS.FileSystem;
namespace Shentun.WebPeis.AppointScheduleTemplates
{
public class AppointScheduleTemplateManager
{
private readonly IRepository<AppointScheduleTemplate> _appointScheduleTemplateRepository;
public AppointScheduleTemplateManager(
IRepository<AppointScheduleTemplate> appointScheduleTemplateRepository
)
{
_appointScheduleTemplateRepository = appointScheduleTemplateRepository;
}
/// <summary>
/// 创建
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
public async Task<AppointScheduleTemplate> CreateAsync(
AppointScheduleTemplate entity
)
{
DataHelper.CheckEntityIsNull(entity);
var isWeekId = await _appointScheduleTemplateRepository.FirstOrDefaultAsync(f => f.WeekId == entity.WeekId);
if (isWeekId != null)
throw new UserFriendlyException($"WeekId数据已存在,不能重复");
return new AppointScheduleTemplate
{
AppointScheduleTemplateId = entity.AppointScheduleTemplateId,
DisplayOrder = await EntityHelper.CreateMaxDisplayOrder<AppointScheduleTemplate>(_appointScheduleTemplateRepository),
AmNumberLimit = entity.AmNumberLimit,
AmStartTime = entity.AmStartTime,
AmStopTime = entity.AmStopTime,
PmNumberLimit = entity.PmNumberLimit,
PmStartTime = entity.PmStartTime,
PmStopTime = entity.PmStopTime,
SingleNumberLimit = entity.SingleNumberLimit,
WeekId = entity.WeekId
};
}
/// <summary>
/// 更新
/// </summary>
/// <param name="sourceEntity"></param>
/// <param name="targetEntity"></param>
/// <returns></returns>
public async Task UpdateAsync(
AppointScheduleTemplate sourceEntity,
AppointScheduleTemplate targetEntity
)
{
DataHelper.CheckEntityIsNull(sourceEntity);
DataHelper.CheckEntityIsNull(targetEntity);
var isWeekId = await _appointScheduleTemplateRepository.FirstOrDefaultAsync(f => f.WeekId == sourceEntity.WeekId
&& f.AppointScheduleTemplateId != targetEntity.AppointScheduleTemplateId);
if (isWeekId != null)
throw new UserFriendlyException($"WeekId数据已存在,不能重复");
targetEntity.AmNumberLimit = sourceEntity.AmNumberLimit;
targetEntity.AmStartTime = sourceEntity.AmStartTime;
targetEntity.AmStopTime = sourceEntity.AmStopTime;
targetEntity.PmNumberLimit = sourceEntity.PmNumberLimit;
targetEntity.PmStartTime = sourceEntity.PmStartTime;
targetEntity.PmStopTime = sourceEntity.PmStopTime;
targetEntity.SingleNumberLimit = sourceEntity.SingleNumberLimit;
targetEntity.WeekId = sourceEntity.WeekId;
}
/// <summary>
/// 删除
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
public async Task CheckAndDeleteAsync(Guid appointScheduleTemplateId)
{
await _appointScheduleTemplateRepository.DeleteAsync(d => d.AppointScheduleTemplateId == appointScheduleTemplateId);
}
/// <summary>
/// 修改排序 置顶,置底
/// </summary>
/// <param name="id">需要修改的ID</param>
/// <param name="SortType">修改方式:1 置顶 2 置底</param>
/// <returns></returns>
public async Task UpdateManySortAsync(Guid appointScheduleTemplateId, int SortType)
{
var entity = await _appointScheduleTemplateRepository.GetAsync(f => f.AppointScheduleTemplateId == appointScheduleTemplateId);
await EntityHelper.UpdateManySortAsync(_appointScheduleTemplateRepository, entity, SortType);
}
/// <summary>
/// 修改排序 拖拽
/// </summary>
/// <typeparam name="TEntity"></typeparam>
/// <param name="repository"></param>
/// <param name="input"></param>
/// <returns></returns>
public async Task UpdateSortManyAsync(UpdateSortManyDto input)
{
var entitylist = await _appointScheduleTemplateRepository.GetListAsync(o => input.ItemList.Select(s => s.Id).Contains(o.AppointScheduleTemplateId));
await EntityHelper.UpdateSortManyAsync(_appointScheduleTemplateRepository, entitylist, input);
}
}
}

345
src/Shentun.WebPeis.Domain/DataHelper.cs

@ -0,0 +1,345 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp;
namespace Shentun.WebPeis
{
public class DataHelper
{
/// <summary>
/// 统一转换日期为字符串格式
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static string ConversionDateToString(DateTime? dateTime)
{
if (dateTime == null)
{
return "";
}
else
{
return dateTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
}
}
/// <summary>
/// 转换 只保留年月日
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static string ConversionDateShortToString(DateTime? dateTime)
{
if (dateTime == null)
{
return "";
}
else
{
return dateTime.Value.ToString("yyyy-MM-dd");
}
}
/// <summary>
/// 转换人民币大小金额
/// </summary>
/// <param name="num">金额</param>
/// <returns>返回大写形式</returns>
public static string CmycurD(decimal num)
{
string str1 = "零壹贰叁肆伍陆柒捌玖"; //0-9所对应的汉字
string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字
string str3 = ""; //从原num值中取出的值
string str4 = ""; //数字的字符串形式
string str5 = ""; //人民币大写金额形式
int i; //循环变量
int j; //num的值乘以100的字符串长度
string ch1 = ""; //数字的汉语读法
string ch2 = ""; //数字位的汉字读法
int nzero = 0; //用来计算连续的零值是几个
int temp; //从原num值中取出的值
num = Math.Round(Math.Abs(num), 2); //将num取绝对值并四舍五入取2位小数
str4 = ((long)(num * 100)).ToString(); //将num乘100并转换成字符串形式
j = str4.Length; //找出最高位
if (j > 15) { return "溢出"; }
str2 = str2.Substring(15 - j); //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分
//循环取出每一位需要转换的值
for (i = 0; i < j; i++)
{
str3 = str4.Substring(i, 1); //取出需转换的某一位的值
temp = Convert.ToInt32(str3); //转换为数字
if (i != (j - 3) && i != (j - 7) && i != (j - 11) && i != (j - 15))
{
//当所取位数不为元、万、亿、万亿上的数字时
if (str3 == "0")
{
ch1 = "";
ch2 = "";
nzero = nzero + 1;
}
else
{
if (str3 != "0" && nzero != 0)
{
ch1 = "零" + str1.Substring(temp * 1, 1);
ch2 = str2.Substring(i, 1);
nzero = 0;
}
else
{
ch1 = str1.Substring(temp * 1, 1);
ch2 = str2.Substring(i, 1);
nzero = 0;
}
}
}
else
{
//该位是万亿,亿,万,元位等关键位
if (str3 != "0" && nzero != 0)
{
ch1 = "零" + str1.Substring(temp * 1, 1);
ch2 = str2.Substring(i, 1);
nzero = 0;
}
else
{
if (str3 != "0" && nzero == 0)
{
ch1 = str1.Substring(temp * 1, 1);
ch2 = str2.Substring(i, 1);
nzero = 0;
}
else
{
if (str3 == "0" && nzero >= 3)
{
ch1 = "";
ch2 = "";
nzero = nzero + 1;
}
else
{
if (j >= 11)
{
ch1 = "";
nzero = nzero + 1;
}
else
{
ch1 = "";
ch2 = str2.Substring(i, 1);
nzero = nzero + 1;
}
}
}
}
}
if (i == (j - 11) || i == (j - 3))
{
//如果该位是亿位或元位,则必须写上
ch2 = str2.Substring(i, 1);
}
str5 = str5 + ch1 + ch2;
if (i == j - 1 && str3 == "0")
{
//最后一位(分)为0时,加上“整”
str5 = str5 + '整';
}
}
if (num == 0)
{
str5 = "零元整";
}
return str5;
}
#region 数据检查
/// <summary>
/// 数据检查 对象
/// </summary>
/// <param name="value">需要验证的对象</param>
/// <param name="parameterName">字段名称</param>
/// <param name="ExceptionMessage">异常提示后缀</param>
/// <exception cref="ArgumentException"></exception>
public static void CheckEntityIsNull(object value, string parameterName = "对象", string ExceptionMessage = "不能为空")
{
if (value == null)
{
throw new UserFriendlyException($"{parameterName}{ExceptionMessage}");
}
}
/// <summary>
/// 数据检查 字符串
/// </summary>
/// <param name="value">需要验证的值</param>
/// <param name="parameterName">字段名称</param>
/// <param name="ExceptionMessage">异常提示后缀</param>
/// <exception cref="ArgumentException"></exception>
public static void CheckStringIsNull(string value, string parameterName, string ExceptionMessage = "不能为空")
{
if (string.IsNullOrWhiteSpace(value))
{
throw new UserFriendlyException($"{parameterName}{ExceptionMessage}");
}
}
#region 验证char类型参数
/// <summary>
/// 验证char类型参数是否为null
/// </summary>
/// <param name="value">需要验证的值</param>
/// <param name="parameterName">字段名称</param>
/// <param name="ExceptionMessage">异常提示后缀</param>
/// <exception cref="ArgumentException"></exception>
public static void CheckCharIsNull(char? value, string parameterName, string ExceptionMessage = "不能为空")
{
if (value == null)
{
throw new ArgumentException($"{parameterName}{ExceptionMessage}");
}
}
/// <summary>
/// 验证char类型参数是否为0
/// </summary>
/// <param name="value">需要验证的值</param>
/// <param name="parameterName">字段名称</param>
/// <param name="ExceptionMessage">异常提示后缀</param>
/// <exception cref="ArgumentException"></exception>
public static void CheckCharIsZero(char value, string parameterName, string ExceptionMessage = "不能为0")
{
if (value == '0')
{
throw new ArgumentException($"{parameterName}{ExceptionMessage}");
}
}
/// <summary>
/// 验证char类型参数是否为Y、N
/// </summary>
/// <param name="value">需要验证的值</param>
/// <param name="parameterName">字段名称</param>
/// <exception cref="ArgumentException"></exception>
public static void CheckCharIsYOrN(char value, string parameterName)
{
if (value != 'Y' && value != 'N')
{
throw new ArgumentException($"{parameterName}参数为:{value},是无效值,只能为Y跟N");
}
}
#endregion
/// <summary>
/// 验证Int类型数据是否>0
/// </summary>
/// <param name="value">需要验证的值</param>
/// <param name="parameterName">字段名称</param>
/// <param name="ExceptionMessage">异常提示后缀</param>
/// <exception cref="ArgumentException"></exception>
public static void CheckIntIsGeaterThanZero(int value, string parameterName, string ExceptionMessage = "只能为大于0的值")
{
if (value <= 0)
{
throw new UserFriendlyException($"{parameterName}{ExceptionMessage}");
}
}
/// <summary>
/// 验证Guid数据是否为null
/// </summary>
/// <param name="value">需要验证的值</param>
/// <param name="parameterName">字段名称</param>
/// <param name="ExceptionMessage">异常提示后缀</param>
/// <exception cref="ArgumentException"></exception>
public static void CheckGuidIsNull(Guid? value, string parameterName, string ExceptionMessage = "不能为空")
{
if (value == null)
{
throw new UserFriendlyException($"{parameterName}{ExceptionMessage}");
}
}
/// <summary>
/// 验证Guid数据是否为默认值00000000-0000-0000-0000-000000000000
/// </summary>
/// <param name="value">需要验证的值</param>
/// <param name="parameterName">字段名称</param>
/// <param name="ExceptionMessage">异常提示后缀</param>
/// <exception cref="ArgumentException"></exception>
public static void CheckGuidIsDefaultValue(Guid value, string parameterName, string ExceptionMessage = "不能为默认值00000000-0000-0000-0000-000000000000")
{
if (value == Guid.Empty || value == default(Guid))
{
throw new UserFriendlyException($"{parameterName}{ExceptionMessage}");
}
}
/// <summary>
///验证decimal类型数据大于0
/// </summary>
/// <param name="value">需要验证的值</param>
/// <param name="parameterName">字段名称</param>
/// <param name="ExceptionMessage">异常提示后缀</param>
/// <exception cref="ArgumentException"></exception>
public static void CheckDecimalIsGeaterThanZero(decimal value, string parameterName, string ExceptionMessage = "值只能大于0")
{
if (value <= 0)
{
throw new UserFriendlyException($"{parameterName}{ExceptionMessage}");
}
}
/// <summary>
/// 数据检查 decimal
/// </summary>
/// <param name="value">需要验证的值</param>
/// <param name="parameterName">字段名称</param>
/// <param name="ExceptionMessage">异常提示后缀</param>
/// <exception cref="ArgumentException"></exception>
public static void CheckDecimalIsNull(decimal? value, string parameterName, string ExceptionMessage = "不能为空")
{
if (value == null)
{
throw new UserFriendlyException($"{parameterName}{ExceptionMessage}");
}
}
public static void CheckIdNo(string idNo)
{
if (string.IsNullOrWhiteSpace(idNo))
{
throw new Exception("身份证号不能是空值");
}
if (idNo.Length != 18)
throw new Exception("身份证号长度必须为18位");
var birthDate = Convert.ToDateTime(idNo.Substring(6, 4) + "-" +
idNo.Substring(10, 2) + "-" +
idNo.Substring(12, 2));
if (birthDate < new DateTime(1880, 1, 1) || birthDate > DateTime.Now.Date)
{
throw new Exception("身份证号中的出生日期不正确");
}
}
#endregion
}
}

117
src/Shentun.WebPeis.Domain/EntityHelper.cs

@ -0,0 +1,117 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Repositories;
namespace Shentun.WebPeis
{
public class EntityHelper
{
/// <summary>
/// 创建最大显示顺序
/// </summary>
/// <typeparam name="TEntity"></typeparam>
/// <param name="repository"></param>
/// <returns></returns>
public static async Task<int> CreateMaxDisplayOrder<TEntity>(IRepository<TEntity> repository)
where TEntity : class, IEntity, IDisplayOrder
{
int? maxDisplayOrder = await repository.MaxAsync(o => (int?)o.DisplayOrder);
return (maxDisplayOrder ?? 0) + 1;
}
/// <summary>
/// 修改排序 置顶,置底
/// </summary>
/// <typeparam name="TEntity"></typeparam>
/// <param name="repository"></param>
/// <param name="id">需要修改的ID</param>
/// <param name="SortType">修改方式:1 置顶 2 置底</param>
/// <param name="orderby">排序规则 0、升序 1、降序 (默认降序)</param>
/// <returns></returns>
public static async Task UpdateManySortAsync<TEntity>(IRepository<TEntity> repository, TEntity entity, int SortType)
where TEntity : class, IEntity, IDisplayOrder
{
List<TEntity> UptList = new List<TEntity>();
if (SortType == 2)
{
UptList = (await repository.GetListAsync(o => o.DisplayOrder > entity.DisplayOrder)).OrderBy(o => o.DisplayOrder).ToList();
if (UptList.Count > 0)
{
int indexnum = entity.DisplayOrder; //原有值
entity.DisplayOrder = UptList[UptList.Count - 1].DisplayOrder; //修改当前排序值为最大
//置顶操作,往上一行开始,逐渐替换
foreach (var item in UptList)
{
int dqnum = item.DisplayOrder;
item.DisplayOrder = indexnum;
indexnum = dqnum;
}
}
}
else
{
UptList = (await repository.GetListAsync(o => o.DisplayOrder < entity.DisplayOrder)).OrderByDescending(o => o.DisplayOrder).ToList(); ;
if (UptList.Count > 0)
{
int indexnum = entity.DisplayOrder; //原有值
entity.DisplayOrder = UptList[UptList.Count - 1].DisplayOrder; //修改当前排序值为最小
//置底操作,往下一行开始,逐渐替换
foreach (var item in UptList)
{
int dqnum = item.DisplayOrder;
item.DisplayOrder = indexnum;
indexnum = dqnum;
}
}
}
UptList.Add(entity);
await repository.UpdateManyAsync(UptList);
}
/// <summary>
/// 修改排序 拖拽
/// </summary>
/// <typeparam name="TEntity"></typeparam>
/// <param name="repository"></param>
/// <param name="input"></param>
/// <returns></returns>
public static async Task UpdateSortManyAsync<TEntity>(IRepository<TEntity> repository, List<TEntity> entitylist, UpdateSortManyDto input)
where TEntity : class, IEntity, IDisplayOrder
{
foreach (var entity in entitylist)
{
foreach (var item in input.ItemList)
{
if (item.Id == Guid.Parse(entity.GetKeys().FirstOrDefault().ToString()))
entity.DisplayOrder = item.DisplayOrder;
}
}
await repository.UpdateManyAsync(entitylist);
}
}
}

13
src/Shentun.WebPeis.Domain/IDisplayOrder.cs

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shentun.WebPeis
{
public interface IDisplayOrder
{
int DisplayOrder { get; set; }
}
}

7
src/Shentun.WebPeis.Domain/Models/AppointScheduleTemplate.cs

@ -8,8 +8,9 @@ namespace Shentun.WebPeis.Models;
/// <summary>
/// 预约计划模板
/// </summary>
public partial class AppointScheduleTemplate : AuditedEntity, IHasConcurrencyStamp
public class AppointScheduleTemplate : AuditedEntity, IHasConcurrencyStamp, IDisplayOrder
{
/// <summary>
/// 主键
/// </summary>
@ -18,7 +19,7 @@ public partial class AppointScheduleTemplate : AuditedEntity, IHasConcurrencySta
/// 星期
/// </summary>
public int? WeekId { get; set; }
public int WeekId { get; set; }
/// <summary>
/// 上午数量限制
/// </summary>
@ -54,7 +55,7 @@ public partial class AppointScheduleTemplate : AuditedEntity, IHasConcurrencySta
public TimeOnly? PmStopTime { get; set; }
public int? DisplayOrder { get; set; }
public int DisplayOrder { get; set; }

19
src/Shentun.WebPeis.Domain/UpdateSortManyDto.cs

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shentun.WebPeis
{
public class UpdateSortManyDto
{
public List<UpdateSortMany> ItemList { get; set; }
}
public class UpdateSortMany
{
public Guid Id { get; set; }
public int DisplayOrder { get; set; }
}
}
Loading…
Cancel
Save