219 lines
8.5 KiB
C#
219 lines
8.5 KiB
C#
using Admin.NET.Core;
|
|
using Furion.DatabaseAccessor;
|
|
using Furion.DependencyInjection;
|
|
using Furion.DynamicApiController;
|
|
using Furion.FriendlyException;
|
|
using Mapster;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Linq.Dynamic.Core;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Admin.NET.Application
|
|
{
|
|
/// <summary>
|
|
/// 留学时间节点服务
|
|
/// </summary>
|
|
[ApiDescriptionSettings("测评服务", Name = "BusStudyabroadTimeAxis", Order = 100)]
|
|
public class BusStudyabroadTimeAxisService : IDynamicApiController, ITransient
|
|
{
|
|
private readonly SqlSugarRepository<BusStudyabroadTimeAxis> _busStudyabroadTimeAxisRep;
|
|
private readonly SqlSugarRepository<SysDictData> _bussysDict;
|
|
private readonly UserManager _userManager;
|
|
public BusStudyabroadTimeAxisService(
|
|
SqlSugarRepository<BusStudyabroadTimeAxis> busStudyabroadTimeAxisRep,
|
|
SqlSugarRepository<SysDictData> bussysDict,
|
|
UserManager userManager
|
|
)
|
|
{
|
|
_busStudyabroadTimeAxisRep = busStudyabroadTimeAxisRep;
|
|
_bussysDict = bussysDict;
|
|
_userManager = userManager;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 分页查询留学时间节点
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[HttpGet("page")]
|
|
public async Task<SqlSugarPagedList<BusStudyabroadTimeAxisOutput>> Page([FromQuery] BusStudyabroadTimeAxisInput input)
|
|
{
|
|
var busStudyabroadTimeAxiss = await _busStudyabroadTimeAxisRep.AsQueryable()
|
|
.Where(u => u.CountryId == input.CountryId)
|
|
.WhereIF(!string.IsNullOrEmpty(input.TimeNode), u => u.TimeNode == input.TimeNode)
|
|
.WhereIF(!string.IsNullOrEmpty(input.EventName), u => u.EventName == input.EventName)
|
|
.WhereIF(!string.IsNullOrEmpty(input.Description), u => u.Description == input.Description)
|
|
.Where(u => u.Sort == input.Sort)
|
|
.OrderBy(u => u.CreateTime, OrderByType.Desc)
|
|
.OrderBuilder(input)
|
|
.Select(s => new BusStudyabroadTimeAxisOutput()
|
|
{
|
|
TimeNode = s.TimeNode,
|
|
EventName = s.EventName,
|
|
Description = s.Description,
|
|
Sort = s.Sort,
|
|
Id = s.Id
|
|
})
|
|
.ToPagedListAsync(input.Page, input.PageSize);
|
|
|
|
return busStudyabroadTimeAxiss;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 增加留学时间节点
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("add")]
|
|
public async Task Add(AddBusStudyabroadTimeAxisInput input)
|
|
{
|
|
var busStudyabroadTimeAxis = input.Adapt<BusStudyabroadTimeAxis>();
|
|
await _busStudyabroadTimeAxisRep.InsertAsync(busStudyabroadTimeAxis);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 删除留学时间节点
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("delete")]
|
|
public async Task Delete(DeleteBusStudyabroadTimeAxisInput input)
|
|
{
|
|
var busStudyabroadTimeAxis = await _busStudyabroadTimeAxisRep.AsQueryable().FirstAsync(u => u.Id == input.Id);
|
|
await _busStudyabroadTimeAxisRep.FakeDeleteAsync(busStudyabroadTimeAxis);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 更新留学时间节点
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("edit")]
|
|
public async Task Update(UpdateBusStudyabroadTimeAxisInput input)
|
|
{
|
|
var isExist = await _busStudyabroadTimeAxisRep.AsQueryable().AnyAsync(u => u.Id == input.Id);
|
|
if (!isExist) throw Oops.Oh(ErrorCodeEnum.D3000);
|
|
|
|
var busStudyabroadTimeAxis = input.Adapt<BusStudyabroadTimeAxis>();
|
|
await _busStudyabroadTimeAxisRep.UpdateAsync(busStudyabroadTimeAxis);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取留学时间节点
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[HttpGet("detail")]
|
|
public async Task<BusStudyabroadTimeAxisOutput> Get([FromQuery] QueryeBusStudyabroadTimeAxisInput input)
|
|
{
|
|
return (await _busStudyabroadTimeAxisRep.AsQueryable().FirstAsync(u => u.Id == input.Id)).Adapt<BusStudyabroadTimeAxisOutput>();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取留学时间节点列表
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[HttpGet("list")]
|
|
public async Task<List<BusStudyabroadTimeAxisOutput>> List([FromQuery] BusStudyabroadTimeAxisInput input)
|
|
{
|
|
return await _busStudyabroadTimeAxisRep.AsQueryable().Select(s => new BusStudyabroadTimeAxisOutput()
|
|
{
|
|
TimeNode = s.TimeNode,
|
|
EventName = s.EventName,
|
|
Description = s.Description,
|
|
Sort = s.Sort,
|
|
Id = s.Id
|
|
|
|
}).ToListAsync();
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 导入数据
|
|
/// </summary>
|
|
/// <param name="file"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("import")]
|
|
public async Task Imports(IFormFile file)
|
|
{
|
|
var list = InputExcelUtil<BusStudyabroadTimeExportDto>.InputExcel(file);
|
|
var replist = new List<BusStudyabroadTimeAxis>();
|
|
for (int i = 0; i < list.Count(); i++)
|
|
{
|
|
var item = list[i];
|
|
replist.Add(new BusStudyabroadTimeAxis()
|
|
{
|
|
CountryId = 1007,
|
|
CreateTime = DateTime.Now,
|
|
CreateUserId = _userManager.UserId,
|
|
CreateUserName = _userManager.Account,
|
|
TimeNode = item.TimeNode,
|
|
EventName = item.EventName,
|
|
Description = item.Description,
|
|
Sort = item.Sort,
|
|
});
|
|
}
|
|
await _busStudyabroadTimeAxisRep.InsertRangeAsync(replist);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 出国留学国家
|
|
/// </summary>
|
|
/// <param name="requestDTO"></param>
|
|
/// <returns></returns>
|
|
[HttpGet("GetStudyAbroads")]
|
|
public async Task<List<StudyAbroadCountryDTO>> GetStudyAbroads([FromQuery] StudyAbroadRequestDTO requestDTO)
|
|
{
|
|
var sysdict = await _bussysDict.AsQueryable().Where(e => e.DictTypeId == requestDTO.TypeId).ToListAsync();
|
|
return sysdict.Select(s => new StudyAbroadCountryDTO()
|
|
{
|
|
Code = s.Code,
|
|
Name = s.Value
|
|
}).ToList();
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 获取留学时间轴
|
|
/// </summary>
|
|
/// <param name="axisRequestDTO"></param>
|
|
/// <returns></returns>
|
|
[HttpGet("GetBusStudyAbroadTimeAxes")]
|
|
public async Task<List<BusStudyAbroadTimeAxisResponseDTO>> GetBusStudyAbroadTimeAxes([FromQuery] BusStudyAbroadTimeAxisRequestDTO axisRequestDTO)
|
|
{
|
|
var result = new List<BusStudyAbroadTimeAxisResponseDTO>();
|
|
var sysdict = await _bussysDict.AsQueryable().Where(e => e.DictTypeId == 340876906606661).ToListAsync();
|
|
var query = await _busStudyabroadTimeAxisRep.AsQueryable().Where(e => e.CountryId == axisRequestDTO.CountryId).ToListAsync();
|
|
|
|
var timedict = query.Select(s => s.StartTimeAxis).Distinct().ToList();
|
|
timedict.ForEach(c =>
|
|
{
|
|
result.Add(new BusStudyAbroadTimeAxisResponseDTO()
|
|
{
|
|
StartTimeAxis = sysdict.FirstOrDefault(e => e.Code == c.ToString()).Value,
|
|
busStudyAbroadTimeAxes = query.Where(e => e.StartTimeAxis == c).Select(s => new BusStudyAbroadTimeAxisItems()
|
|
{
|
|
TimeNode = s.TimeNode,
|
|
EventName = s.EventName,
|
|
Description = s.Description,
|
|
Sort = s.Sort
|
|
}).ToList()
|
|
});
|
|
});
|
|
return result;
|
|
}
|
|
|
|
|
|
}
|
|
}
|