diff --git a/src/Shentun.WebPeis.Application.Contracts/AppointScheduleTemplates/AppointScheduleTemplateDto.cs b/src/Shentun.WebPeis.Application.Contracts/AppointScheduleTemplates/AppointScheduleTemplateDto.cs
new file mode 100644
index 0000000..df65484
--- /dev/null
+++ b/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
+ {
+ ///
+ /// 主键
+ ///
+ public Guid AppointScheduleTemplateId { get; set; }
+ ///
+ /// 星期
+ ///
+
+ public int WeekId { get; set; }
+ ///
+ /// 上午数量限制
+ ///
+
+ public int AmNumberLimit { get; set; }
+ ///
+ /// 下午数量限制
+ ///
+
+ public int PmNumberLimit { get; set; }
+ ///
+ /// 个人体检数量限制
+ ///
+ public int SingleNumberLimit { get; set; }
+ ///
+ /// 上午上班时间
+ ///
+
+ public string AmStartTime { get; set; }
+ ///
+ /// 上午下班时间
+ ///
+
+ public string AmStopTime { get; set; }
+ ///
+ /// 下午上班时间
+ ///
+
+ public string PmStartTime { get; set; }
+ ///
+ /// 下午下班时间
+ ///
+
+ public string PmStopTime { get; set; }
+
+ public int DisplayOrder { get; set; }
+ }
+}
diff --git a/src/Shentun.WebPeis.Application.Contracts/AppointScheduleTemplates/AppointScheduleTemplateIdInputDto.cs b/src/Shentun.WebPeis.Application.Contracts/AppointScheduleTemplates/AppointScheduleTemplateIdInputDto.cs
new file mode 100644
index 0000000..88978be
--- /dev/null
+++ b/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
+ {
+ ///
+ /// 主键
+ ///
+ public Guid AppointScheduleTemplateId { get; set; }
+ }
+}
diff --git a/src/Shentun.WebPeis.Application.Contracts/AppointScheduleTemplates/CreateAppointScheduleTemplateDto.cs b/src/Shentun.WebPeis.Application.Contracts/AppointScheduleTemplates/CreateAppointScheduleTemplateDto.cs
new file mode 100644
index 0000000..fe97455
--- /dev/null
+++ b/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
+ {
+ ///
+ /// 星期
+ ///
+
+ public int WeekId { get; set; }
+ ///
+ /// 上午数量限制
+ ///
+
+ public int AmNumberLimit { get; set; }
+ ///
+ /// 下午数量限制
+ ///
+
+ public int PmNumberLimit { get; set; }
+ ///
+ /// 个人体检数量限制
+ ///
+ public int SingleNumberLimit { get; set; }
+ ///
+ /// 上午上班时间
+ ///
+
+ public string AmStartTime { get; set; }
+ ///
+ /// 上午下班时间
+ ///
+
+ public string AmStopTime { get; set; }
+ ///
+ /// 下午上班时间
+ ///
+
+ public string PmStartTime { get; set; }
+ ///
+ /// 下午下班时间
+ ///
+
+ public string PmStopTime { get; set; }
+
+ }
+}
diff --git a/src/Shentun.WebPeis.Application.Contracts/AppointScheduleTemplates/UpdateAppointScheduleTemplateDto.cs b/src/Shentun.WebPeis.Application.Contracts/AppointScheduleTemplates/UpdateAppointScheduleTemplateDto.cs
new file mode 100644
index 0000000..9fe7367
--- /dev/null
+++ b/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
+ {
+
+ ///
+ /// 主键
+ ///
+ public Guid AppointScheduleTemplateId { get; set; }
+
+ ///
+ /// 星期
+ ///
+
+ public int WeekId { get; set; }
+ ///
+ /// 上午数量限制
+ ///
+
+ public int AmNumberLimit { get; set; }
+ ///
+ /// 下午数量限制
+ ///
+
+ public int PmNumberLimit { get; set; }
+ ///
+ /// 个人体检数量限制
+ ///
+ public int SingleNumberLimit { get; set; }
+ ///
+ /// 上午上班时间
+ ///
+
+ public string AmStartTime { get; set; }
+ ///
+ /// 上午下班时间
+ ///
+
+ public string AmStopTime { get; set; }
+ ///
+ /// 下午上班时间
+ ///
+
+ public string PmStartTime { get; set; }
+ ///
+ /// 下午下班时间
+ ///
+
+ public string PmStopTime { get; set; }
+ }
+}
diff --git a/src/Shentun.WebPeis.Application.Contracts/AuditedEntityDtoName.cs b/src/Shentun.WebPeis.Application.Contracts/AuditedEntityDtoName.cs
new file mode 100644
index 0000000..8fa7b79
--- /dev/null
+++ b/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
+ {
+ ///
+ /// 创建者
+ ///
+ public string CreatorName { get; set; }
+
+ ///
+ /// 最后修改者
+ ///
+ public string LastModifierName { get; set; }
+ }
+}
diff --git a/src/Shentun.WebPeis.Application.Contracts/UpdateManySortInputDto.cs b/src/Shentun.WebPeis.Application.Contracts/UpdateManySortInputDto.cs
new file mode 100644
index 0000000..0161eaa
--- /dev/null
+++ b/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
+ {
+ ///
+ /// 需要修改的ID
+ ///
+ public Guid Id { get; set; }
+
+ ///
+ /// 修改方式:1 置顶 2 置底
+ ///
+ public int SortType { get; set; }
+ }
+}
diff --git a/src/Shentun.WebPeis.Application.Contracts/Users/UpdatePassWordDto.cs b/src/Shentun.WebPeis.Application.Contracts/Users/UpdatePassWordDto.cs
new file mode 100644
index 0000000..4dfba37
--- /dev/null
+++ b/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
+ {
+ ///
+ /// 旧密码
+ ///
+ public string OldPassWord { get; set; }
+
+
+ ///
+ /// 新密码
+ ///
+ public string NewPassWord { get; set; }
+ }
+}
diff --git a/src/Shentun.WebPeis.Application/AppointScheduleTemplates/AppointScheduleTemplateAppService.cs b/src/Shentun.WebPeis.Application/AppointScheduleTemplates/AppointScheduleTemplateAppService.cs
new file mode 100644
index 0000000..be49880
--- /dev/null
+++ b/src/Shentun.WebPeis.Application/AppointScheduleTemplates/AppointScheduleTemplateAppService.cs
@@ -0,0 +1,156 @@
+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
+{
+ ///
+ /// 预约计划模板
+ ///
+ [Authorize]
+ [ApiExplorerSettings(GroupName = "Work")]
+ public class AppointScheduleTemplateAppService : ApplicationService
+ {
+
+ private readonly IRepository _appointScheduleTemplateRepository;
+ private readonly AppointScheduleTemplateManager _appointScheduleTemplateManager;
+ private readonly CacheService _cacheService;
+ public AppointScheduleTemplateAppService(
+ IRepository appointScheduleTemplateRepository,
+ AppointScheduleTemplateManager appointScheduleTemplateManager,
+ CacheService cacheService)
+ {
+ _appointScheduleTemplateRepository = appointScheduleTemplateRepository;
+ _appointScheduleTemplateManager = appointScheduleTemplateManager;
+ _cacheService = cacheService;
+ }
+
+
+ ///
+ /// 根据ID获取预约计划模板
+ ///
+ ///
+ ///
+ [HttpPost("api/app/AppointScheduleTemplate/Get")]
+ public async Task GetAsync(AppointScheduleTemplateIdInputDto input)
+ {
+ var entity = await _appointScheduleTemplateRepository.GetAsync(g => g.AppointScheduleTemplateId == input.AppointScheduleTemplateId);
+ var dto = ObjectMapper.Map(entity);
+ dto.CreatorName = await _cacheService.GetSurnameAsync(dto.CreatorId);
+ dto.LastModifierName = await _cacheService.GetSurnameAsync(dto.LastModifierId);
+ return dto;
+ }
+
+
+ ///
+ /// 根据预约计划模板列表
+ ///
+ ///
+ [HttpPost("api/app/AppointScheduleTemplate/GetList")]
+ public async Task> GetListAsync()
+ {
+ var entList = await _appointScheduleTemplateRepository.GetQueryableAsync();
+ var entListDto = entList.Select(s => new AppointScheduleTemplateDto
+ {
+ AmNumberLimit = s.AmNumberLimit,
+ AmStartTime = DataHelper.ConvertTimeOnlyToString(s.AmStopTime),
+ AmStopTime = DataHelper.ConvertTimeOnlyToString(s.AmStopTime),
+ AppointScheduleTemplateId = s.AppointScheduleTemplateId,
+ CreationTime = s.CreationTime,
+ CreatorId = s.CreatorId,
+ DisplayOrder = s.DisplayOrder,
+ LastModificationTime = s.LastModificationTime,
+ LastModifierId = s.LastModifierId,
+ PmNumberLimit = s.PmNumberLimit,
+ PmStartTime = DataHelper.ConvertTimeOnlyToString(s.PmStartTime),
+ PmStopTime = DataHelper.ConvertTimeOnlyToString(s.PmStopTime),
+ SingleNumberLimit = s.SingleNumberLimit,
+ WeekId = s.WeekId,
+ CreatorName = _cacheService.GetSurnameAsync(s.CreatorId).Result,
+ LastModifierName = _cacheService.GetSurnameAsync(s.LastModifierId).Result
+ }).ToList();
+ return entListDto;
+ }
+
+
+ ///
+ /// 创建预约计划模板
+ ///
+ ///
+ ///
+ [HttpPost("api/app/AppointScheduleTemplate/Create")]
+ public async Task CreateAsync(CreateAppointScheduleTemplateDto input)
+ {
+ var createEntity = ObjectMapper.Map(input);
+ createEntity.AppointScheduleTemplateId = GuidGenerator.Create();
+ var entity = await _appointScheduleTemplateManager.CreateAsync(createEntity);
+ entity = await _appointScheduleTemplateRepository.InsertAsync(entity);
+ var dto = ObjectMapper.Map(entity);
+ dto.CreatorName = await _cacheService.GetSurnameAsync(dto.CreatorId);
+ dto.LastModifierName = await _cacheService.GetSurnameAsync(dto.LastModifierId);
+ return dto;
+ }
+
+ ///
+ /// 更新预约计划模板
+ ///
+ ///
+ ///
+ [HttpPost("api/app/AppointScheduleTemplate/Update")]
+ public async Task UpdateAsync(UpdateAppointScheduleTemplateDto input)
+ {
+ var entity = await _appointScheduleTemplateRepository.GetAsync(g => g.AppointScheduleTemplateId == input.AppointScheduleTemplateId);
+ var sourceEntity = ObjectMapper.Map(input);
+ await _appointScheduleTemplateManager.UpdateAsync(sourceEntity, entity);
+ entity = await _appointScheduleTemplateRepository.UpdateAsync(entity);
+ var dto = ObjectMapper.Map(entity);
+ dto.CreatorName = await _cacheService.GetSurnameAsync(dto.CreatorId);
+ dto.LastModifierName = await _cacheService.GetSurnameAsync(dto.LastModifierId);
+ return dto;
+ }
+
+
+ ///
+ /// 删除预约计划模板
+ ///
+ ///
+ ///
+ [HttpPost("api/app/AppointScheduleTemplate/Delete")]
+ public async Task DeleteAsync(AppointScheduleTemplateIdInputDto input)
+ {
+ await _appointScheduleTemplateManager.CheckAndDeleteAsync(input.AppointScheduleTemplateId);
+ }
+
+
+
+ ///
+ /// 修改排序 置顶,置底
+ ///
+ ///
+ ///
+ [HttpPost("api/app/AppointScheduleTemplate/UpdateManySort")]
+ public async Task UpdateManySortAsync(UpdateManySortInputDto input)
+ {
+ await _appointScheduleTemplateManager.UpdateManySortAsync(input.Id, input.SortType);
+ }
+
+ ///
+ /// 修改排序 拖拽
+ ///
+ ///
+ ///
+ [HttpPost("api/app/AppointScheduleTemplate/UpdateSortMany")]
+ public async Task UpdateSortManyAsync(UpdateSortManyDto input)
+ {
+ await _appointScheduleTemplateManager.UpdateSortManyAsync(input);
+ }
+ }
+}
diff --git a/src/Shentun.WebPeis.Application/Users/UserAppService.cs b/src/Shentun.WebPeis.Application/Users/UserAppService.cs
index 96d4f4f..2d86185 100644
--- a/src/Shentun.WebPeis.Application/Users/UserAppService.cs
+++ b/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 _identityUserOrganizationUnitRepository;
private readonly CurrentUser _currentUser;
private readonly IDistributedCache _userCache;
-
+
public UserAppService(
IRepository identityUserRepository,
IdentityUserManager userManager,
@@ -80,7 +82,36 @@ namespace Shentun.WebPeis.Users
this._identityUserOrganizationUnitRepository = identityUserOrganizationUnitRepository;
this._currentUser = currentUser;
_userCache = userCache;
-
+
+ }
+
+
+ ///
+ /// 修改用户密码 修改自身密码
+ ///
+ ///
+ ///
+ [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 RequestAuthServerLoginByPasswordAsync(HttpClient client, string username, string password)
{
-
+
var request = new PasswordTokenRequest
{
diff --git a/src/Shentun.WebPeis.Application/WebPeisApplicationAutoMapperProfile.cs b/src/Shentun.WebPeis.Application/WebPeisApplicationAutoMapperProfile.cs
index 5af5a80..0da7310 100644
--- a/src/Shentun.WebPeis.Application/WebPeisApplicationAutoMapperProfile.cs
+++ b/src/Shentun.WebPeis.Application/WebPeisApplicationAutoMapperProfile.cs
@@ -1,7 +1,8 @@
using AutoMapper;
+using Microsoft.Extensions.Configuration.UserSecrets;
+using NPOI.SS.Formula.Functions;
using Shentun.Peis.MaritalStatuss;
using Shentun.WebPeis.AppointPatientRegisters;
-using Shentun.WebPeis.AppointRegisterAsbitems;
using Shentun.WebPeis.Kinships;
using Shentun.WebPeis.MaritalStatuss;
using Shentun.WebPeis.MedicalPackages;
@@ -63,5 +64,17 @@ public class WebPeisApplicationAutoMapperProfile : Profile
CreateMap();
+ CreateMap();
+ CreateMap()
+ .ForMember(d => d.AmStartTime, opt => opt.MapFrom(src => DataHelper.ConvertStringToTimeOnly(src.AmStartTime)))
+ .ForMember(d => d.AmStopTime, opt => opt.MapFrom(src => DataHelper.ConvertStringToTimeOnly(src.AmStopTime)))
+ .ForMember(d => d.PmStartTime, opt => opt.MapFrom(src => DataHelper.ConvertStringToTimeOnly(src.PmStartTime)))
+ .ForMember(d => d.PmStopTime, opt => opt.MapFrom(src => DataHelper.ConvertStringToTimeOnly(src.PmStopTime)));
+ CreateMap()
+ .ForMember(d => d.AmStartTime, opt => opt.MapFrom(src => DataHelper.ConvertStringToTimeOnly(src.AmStartTime)))
+ .ForMember(d => d.AmStopTime, opt => opt.MapFrom(src => DataHelper.ConvertStringToTimeOnly(src.AmStopTime)))
+ .ForMember(d => d.PmStartTime, opt => opt.MapFrom(src => DataHelper.ConvertStringToTimeOnly(src.PmStartTime)))
+ .ForMember(d => d.PmStopTime, opt => opt.MapFrom(src => DataHelper.ConvertStringToTimeOnly(src.PmStopTime)));
+
}
}
diff --git a/src/Shentun.WebPeis.Domain/AppointScheduleTemplates/AppointScheduleTemplateManager.cs b/src/Shentun.WebPeis.Domain/AppointScheduleTemplates/AppointScheduleTemplateManager.cs
new file mode 100644
index 0000000..9b41f97
--- /dev/null
+++ b/src/Shentun.WebPeis.Domain/AppointScheduleTemplates/AppointScheduleTemplateManager.cs
@@ -0,0 +1,132 @@
+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;
+using Volo.Abp.Domain.Services;
+
+namespace Shentun.WebPeis.AppointScheduleTemplates
+{
+ public class AppointScheduleTemplateManager : DomainService
+ {
+
+ private readonly IRepository _appointScheduleTemplateRepository;
+
+ public AppointScheduleTemplateManager(
+ IRepository appointScheduleTemplateRepository
+ )
+ {
+ _appointScheduleTemplateRepository = appointScheduleTemplateRepository;
+ }
+
+ ///
+ /// 创建
+ ///
+ ///
+ ///
+ public async Task 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(_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
+ };
+ }
+
+ ///
+ /// 更新
+ ///
+ ///
+ ///
+ ///
+ 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;
+ }
+
+
+ ///
+ /// 删除
+ ///
+ ///
+ ///
+ ///
+ public async Task CheckAndDeleteAsync(Guid appointScheduleTemplateId)
+ {
+ await _appointScheduleTemplateRepository.DeleteAsync(d => d.AppointScheduleTemplateId == appointScheduleTemplateId);
+
+ }
+
+
+ ///
+ /// 修改排序 置顶,置底
+ ///
+ /// 需要修改的ID
+ /// 修改方式:1 置顶 2 置底
+ ///
+ public async Task UpdateManySortAsync(Guid appointScheduleTemplateId, int SortType)
+ {
+ var entity = await _appointScheduleTemplateRepository.GetAsync(f => f.AppointScheduleTemplateId == appointScheduleTemplateId);
+ await EntityHelper.UpdateManySortAsync(_appointScheduleTemplateRepository, entity, SortType);
+ }
+
+
+
+ ///
+ /// 修改排序 拖拽
+ ///
+ ///
+ ///
+ ///
+ ///
+ 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);
+ }
+
+ }
+}
diff --git a/src/Shentun.WebPeis.Domain/DataHelper.cs b/src/Shentun.WebPeis.Domain/DataHelper.cs
new file mode 100644
index 0000000..4d2e04f
--- /dev/null
+++ b/src/Shentun.WebPeis.Domain/DataHelper.cs
@@ -0,0 +1,382 @@
+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
+ {
+ ///
+ /// string转timeonly
+ ///
+ ///
+ ///
+ public static TimeOnly? ConvertStringToTimeOnly(string value)
+ {
+ if (string.IsNullOrWhiteSpace(value))
+ {
+ return null;
+ }
+ else
+ {
+ return TimeOnly.Parse(value);
+ }
+ }
+
+ ///
+ /// timeonly转string
+ ///
+ ///
+ ///
+ public static string ConvertTimeOnlyToString(TimeOnly? value)
+ {
+ if (value == null)
+ {
+ return "";
+ }
+ else
+ {
+ return value.Value.ToString("HH:mm:ss");
+ }
+ }
+
+
+
+ ///
+ /// 统一转换日期为字符串格式
+ ///
+ ///
+ ///
+ public static string ConversionDateToString(DateTime? dateTime)
+ {
+ if (dateTime == null)
+ {
+ return "";
+ }
+ else
+ {
+ return dateTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
+ }
+ }
+
+
+
+ ///
+ /// 转换 只保留年月日
+ ///
+ ///
+ ///
+ public static string ConversionDateShortToString(DateTime? dateTime)
+ {
+ if (dateTime == null)
+ {
+ return "";
+ }
+ else
+ {
+ return dateTime.Value.ToString("yyyy-MM-dd");
+ }
+ }
+
+ ///
+ /// 转换人民币大小金额
+ ///
+ /// 金额
+ /// 返回大写形式
+ 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 数据检查
+
+
+ ///
+ /// 数据检查 对象
+ ///
+ /// 需要验证的对象
+ /// 字段名称
+ /// 异常提示后缀
+ ///
+ public static void CheckEntityIsNull(object value, string parameterName = "对象", string ExceptionMessage = "不能为空")
+ {
+ if (value == null)
+ {
+ throw new UserFriendlyException($"{parameterName}{ExceptionMessage}");
+ }
+ }
+
+
+ ///
+ /// 数据检查 字符串
+ ///
+ /// 需要验证的值
+ /// 字段名称
+ /// 异常提示后缀
+ ///
+ public static void CheckStringIsNull(string value, string parameterName, string ExceptionMessage = "不能为空")
+ {
+ if (string.IsNullOrWhiteSpace(value))
+ {
+ throw new UserFriendlyException($"{parameterName}{ExceptionMessage}");
+ }
+ }
+
+ #region 验证char类型参数
+ ///
+ /// 验证char类型参数是否为null
+ ///
+ /// 需要验证的值
+ /// 字段名称
+ /// 异常提示后缀
+ ///
+ public static void CheckCharIsNull(char? value, string parameterName, string ExceptionMessage = "不能为空")
+ {
+ if (value == null)
+ {
+ throw new ArgumentException($"{parameterName}{ExceptionMessage}");
+ }
+
+ }
+
+ ///
+ /// 验证char类型参数是否为0
+ ///
+ /// 需要验证的值
+ /// 字段名称
+ /// 异常提示后缀
+ ///
+ public static void CheckCharIsZero(char value, string parameterName, string ExceptionMessage = "不能为0")
+ {
+ if (value == '0')
+ {
+ throw new ArgumentException($"{parameterName}{ExceptionMessage}");
+ }
+ }
+
+ ///
+ /// 验证char类型参数是否为Y、N
+ ///
+ /// 需要验证的值
+ /// 字段名称
+ ///
+ public static void CheckCharIsYOrN(char value, string parameterName)
+ {
+ if (value != 'Y' && value != 'N')
+ {
+ throw new ArgumentException($"{parameterName}参数为:{value},是无效值,只能为Y跟N");
+ }
+ }
+ #endregion
+
+ ///
+ /// 验证Int类型数据是否>0
+ ///
+ /// 需要验证的值
+ /// 字段名称
+ /// 异常提示后缀
+ ///
+ public static void CheckIntIsGeaterThanZero(int value, string parameterName, string ExceptionMessage = "只能为大于0的值")
+ {
+ if (value <= 0)
+ {
+ throw new UserFriendlyException($"{parameterName}{ExceptionMessage}");
+ }
+ }
+
+
+ ///
+ /// 验证Guid数据是否为null
+ ///
+ /// 需要验证的值
+ /// 字段名称
+ /// 异常提示后缀
+ ///
+ public static void CheckGuidIsNull(Guid? value, string parameterName, string ExceptionMessage = "不能为空")
+ {
+ if (value == null)
+ {
+ throw new UserFriendlyException($"{parameterName}{ExceptionMessage}");
+ }
+ }
+
+
+ ///
+ /// 验证Guid数据是否为默认值00000000-0000-0000-0000-000000000000
+ ///
+ /// 需要验证的值
+ /// 字段名称
+ /// 异常提示后缀
+ ///
+ 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}");
+ }
+ }
+
+ ///
+ ///验证decimal类型数据大于0
+ ///
+ /// 需要验证的值
+ /// 字段名称
+ /// 异常提示后缀
+ ///
+ public static void CheckDecimalIsGeaterThanZero(decimal value, string parameterName, string ExceptionMessage = "值只能大于0")
+ {
+ if (value <= 0)
+ {
+ throw new UserFriendlyException($"{parameterName}{ExceptionMessage}");
+ }
+ }
+
+
+ ///
+ /// 数据检查 decimal
+ ///
+ /// 需要验证的值
+ /// 字段名称
+ /// 异常提示后缀
+ ///
+ 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
+ }
+}
diff --git a/src/Shentun.WebPeis.Domain/EntityHelper.cs b/src/Shentun.WebPeis.Domain/EntityHelper.cs
new file mode 100644
index 0000000..9c9ccad
--- /dev/null
+++ b/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
+ {
+ ///
+ /// 创建最大显示顺序
+ ///
+ ///
+ ///
+ ///
+ public static async Task CreateMaxDisplayOrder(IRepository repository)
+ where TEntity : class, IEntity, IDisplayOrder
+ {
+ int? maxDisplayOrder = await repository.MaxAsync(o => (int?)o.DisplayOrder);
+ return (maxDisplayOrder ?? 0) + 1;
+ }
+
+
+
+ ///
+ /// 修改排序 置顶,置底
+ ///
+ ///
+ ///
+ /// 需要修改的ID
+ /// 修改方式:1 置顶 2 置底
+ /// 排序规则 0、升序 1、降序 (默认降序)
+ ///
+ public static async Task UpdateManySortAsync(IRepository repository, TEntity entity, int SortType)
+ where TEntity : class, IEntity, IDisplayOrder
+ {
+
+ List UptList = new List();
+
+ 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);
+
+ }
+
+ ///
+ /// 修改排序 拖拽
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task UpdateSortManyAsync(IRepository repository, List 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);
+
+ }
+ }
+
+
+}
diff --git a/src/Shentun.WebPeis.Domain/IDisplayOrder.cs b/src/Shentun.WebPeis.Domain/IDisplayOrder.cs
new file mode 100644
index 0000000..ad11a7d
--- /dev/null
+++ b/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; }
+ }
+}
diff --git a/src/Shentun.WebPeis.Domain/Models/AppointScheduleTemplate.cs b/src/Shentun.WebPeis.Domain/Models/AppointScheduleTemplate.cs
index c8c3737..22faa5e 100644
--- a/src/Shentun.WebPeis.Domain/Models/AppointScheduleTemplate.cs
+++ b/src/Shentun.WebPeis.Domain/Models/AppointScheduleTemplate.cs
@@ -8,8 +8,9 @@ namespace Shentun.WebPeis.Models;
///
/// 预约计划模板
///
-public partial class AppointScheduleTemplate : AuditedEntity, IHasConcurrencyStamp
+public class AppointScheduleTemplate : AuditedEntity, IHasConcurrencyStamp, IDisplayOrder
{
+
///
/// 主键
///
@@ -18,7 +19,7 @@ public partial class AppointScheduleTemplate : AuditedEntity, IHasConcurrencySta
/// 星期
///
- public int? WeekId { get; set; }
+ public int WeekId { get; set; }
///
/// 上午数量限制
///
@@ -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; }
diff --git a/src/Shentun.WebPeis.Domain/UpdateSortManyDto.cs b/src/Shentun.WebPeis.Domain/UpdateSortManyDto.cs
new file mode 100644
index 0000000..e68b83c
--- /dev/null
+++ b/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 ItemList { get; set; }
+ }
+
+ public class UpdateSortMany
+ {
+ public Guid Id { get; set; }
+ public int DisplayOrder { get; set; }
+ }
+}