using FlexJobApi.Core;
|
using Furion.DatabaseAccessor;
|
using Furion.FriendlyException;
|
using Mapster;
|
using MediatR;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace FlexJobApi.CommonServer.Application
|
{
|
/// <summary>
|
/// 字典类别命令处理器
|
/// </summary>
|
public class DictionaryCategoryCommandHandler(
|
IRepository<DictionaryCategory> rep,
|
IRepository<DictionaryData> repDictionaryData
|
) :
|
IRequestHandler<DeleteDictionaryCategoryCommand, int>,
|
IRequestHandler<SaveDictionaryCategoryCommand, Guid>
|
{
|
private readonly IRepository<DictionaryCategory> rep = rep;
|
private readonly IRepository<DictionaryData> repDictionaryData = repDictionaryData;
|
|
/// <summary>
|
/// 删除数据字典类别
|
/// </summary>
|
/// <param name="request"></param>
|
/// <param name="cancellationToken"></param>
|
/// <returns></returns>
|
public Task<int> Handle(DeleteDictionaryCategoryCommand request, CancellationToken cancellationToken)
|
{
|
return DbUtils.DeleteData<DictionaryCategory>(request, null, cancellationToken);
|
}
|
|
/// <summary>
|
/// 保存数据字典类别
|
/// </summary>
|
/// <param name="request"></param>
|
/// <param name="cancellationToken"></param>
|
/// <returns></returns>
|
[UnitOfWork]
|
public async Task<Guid> Handle(SaveDictionaryCategoryCommand request, CancellationToken cancellationToken)
|
{
|
var entity = await request.SaveData<DictionaryCategory, SaveDictionaryCategoryCommand>(
|
null,
|
it => it.Id != request.Id && it.Code == request.Code,
|
(entity) =>
|
{
|
if (request.Id.HasValue && entity.Code != request.Code)
|
{
|
throw Oops.Oh(EnumErrorCodeType.s400, "编号不可修改");
|
//var data = repDictionaryData.AsQueryable()
|
// .Where(it => it.CategoryId == entity.Id)
|
// .ToList();
|
//foreach (var item in data)
|
//{
|
// item.Code = item.Code.Replace($"{entity.Code}-", $"{request.Code}-");
|
//}
|
}
|
request.Adapt(entity);
|
},
|
cancellationToken);
|
return entity.Id;
|
}
|
}
|
}
|