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 { /// /// 留学时间节点服务 /// [ApiDescriptionSettings("测评服务", Name = "BusStudyabroadTimeAxis", Order = 100)] public class BusStudyabroadTimeAxisService : IDynamicApiController, ITransient { private readonly SqlSugarRepository _busStudyabroadTimeAxisRep; private readonly SqlSugarRepository _bussysDict; private readonly UserManager _userManager; public BusStudyabroadTimeAxisService( SqlSugarRepository busStudyabroadTimeAxisRep, SqlSugarRepository bussysDict, UserManager userManager ) { _busStudyabroadTimeAxisRep = busStudyabroadTimeAxisRep; _bussysDict = bussysDict; _userManager = userManager; } /// /// 分页查询留学时间节点 /// /// /// [HttpGet("page")] public async Task> 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; } /// /// 增加留学时间节点 /// /// /// [HttpPost("add")] public async Task Add(AddBusStudyabroadTimeAxisInput input) { var busStudyabroadTimeAxis = input.Adapt(); await _busStudyabroadTimeAxisRep.InsertAsync(busStudyabroadTimeAxis); } /// /// 删除留学时间节点 /// /// /// [HttpPost("delete")] public async Task Delete(DeleteBusStudyabroadTimeAxisInput input) { var busStudyabroadTimeAxis = await _busStudyabroadTimeAxisRep.AsQueryable().FirstAsync(u => u.Id == input.Id); await _busStudyabroadTimeAxisRep.FakeDeleteAsync(busStudyabroadTimeAxis); } /// /// 更新留学时间节点 /// /// /// [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(); await _busStudyabroadTimeAxisRep.UpdateAsync(busStudyabroadTimeAxis); } /// /// 获取留学时间节点 /// /// /// [HttpGet("detail")] public async Task Get([FromQuery] QueryeBusStudyabroadTimeAxisInput input) { return (await _busStudyabroadTimeAxisRep.AsQueryable().FirstAsync(u => u.Id == input.Id)).Adapt(); } /// /// 获取留学时间节点列表 /// /// /// [HttpGet("list")] public async Task> 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(); } /// /// 导入数据 /// /// /// [HttpPost("import")] public async Task Imports(IFormFile file) { var list = InputExcelUtil.InputExcel(file); var replist = new List(); 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); } /// /// 出国留学国家 /// /// /// [HttpGet("GetStudyAbroads")] public async Task> 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(); } /// /// 获取留学时间轴 /// /// /// [HttpGet("GetBusStudyAbroadTimeAxes")] public async Task> GetBusStudyAbroadTimeAxes([FromQuery] BusStudyAbroadTimeAxisRequestDTO axisRequestDTO) { var result = new List(); 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; } } }