161 lines
6.4 KiB
C#
161 lines
6.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Linq.Expressions;
|
|
using System.Threading.Tasks;
|
|
using LinqKit;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using New_College.IServices;
|
|
using New_College.Model;
|
|
using New_College.Model.Models;
|
|
using New_College.Model.Request;
|
|
using New_College.Model.ViewModels;
|
|
using Newtonsoft.Json;
|
|
using SqlSugar;
|
|
|
|
namespace New_College.Api.Controllers.Front
|
|
{
|
|
|
|
/// <summary>
|
|
/// 新高考选科
|
|
/// </summary>
|
|
[Route("api/[controller]")]
|
|
[ApiController]
|
|
//[Authorize]
|
|
public class FrontSelectionController : ControllerBase
|
|
{
|
|
private readonly ISubjectSelectionServices _selectionServices;
|
|
private readonly ID_MajorClassServices _MajorClassServices;
|
|
private readonly ID_MajorCategoryServices _MajorCategoryServices;
|
|
private readonly ID_MajorServices _MajorServices;
|
|
public FrontSelectionController(ISubjectSelectionServices subjectSelection, ID_MajorClassServices majorClassServices, ID_MajorCategoryServices majorCategoryServices, ID_MajorServices majorServices)
|
|
{
|
|
this._selectionServices = subjectSelection;
|
|
_MajorClassServices = majorClassServices;
|
|
_MajorCategoryServices = majorCategoryServices;
|
|
_MajorServices = majorServices;
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 获取专业类别
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[Route("GetMajorClassList")]
|
|
public async Task<MessageModel<List<uniMajorInfoResult>>> GetMajorClassList()
|
|
{
|
|
var roottrees = new List<uniMajorInfoResult>();
|
|
var categoryids = (await _MajorCategoryServices.Query(c => c.Type == 1)).Select(c => c.Id);
|
|
var majorlist = await _MajorClassServices.Query(c => SqlFunc.ContainsArray(categoryids.ToList(), c.TradeId));
|
|
roottrees = majorlist.Select(c => new uniMajorInfoResult() { FirstName = c.Name, RootId = c.Id }).ToList();
|
|
var majoritems = await _MajorServices.Query(c => c.IsDelete == false && SqlFunc.ContainsArray(roottrees.Select(c => c.RootId).ToList(), c.CategoryClass_Id));
|
|
roottrees.ForEach(a =>
|
|
{
|
|
a.SecondInfo = majoritems.Where(c => c.CategoryClass_Id == a.RootId).Select(t => new uniMajorSecond() { MajorName = t.MajorName, SecondId = t.Id }).ToList();
|
|
});
|
|
return new MessageModel<List<uniMajorInfoResult>>()
|
|
{
|
|
response = roottrees,
|
|
success = true,
|
|
msg = "ok"
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 根据院校和专业名称查询选科组合情况
|
|
/// </summary>
|
|
/// <param name="request"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
public async Task<MessageModel<PageModel<SubjectSelection>>> GetSubjectSelects([FromQuery] SelectionServiceRequest request)
|
|
{
|
|
try
|
|
{
|
|
request.PageSize = 50;
|
|
|
|
Expression<Func<SubjectSelection, bool>> exp = Expressionable.Create<SubjectSelection>() //创建表达式
|
|
.AndIF(!string.IsNullOrEmpty(request.UniversityName), w => SqlFunc.ContainsArray(JsonConvert.DeserializeObject<List<string>>(request.UniversityName), w.UniversityName))
|
|
.AndIF(!string.IsNullOrEmpty(request.MajorName), w => SqlFunc.ContainsArray(JsonConvert.DeserializeObject<List<string>>(request.MajorName), w.MajorName))
|
|
.AndIF(!string.IsNullOrWhiteSpace(request.Location), w => w.Province == request.Location)
|
|
.AndIF(request.Years > 0, w => w.AcademicYear == request.Years.ToString())
|
|
.ToExpression();//注意 这一句 不能少
|
|
|
|
var subjectlist = await _selectionServices.QueryPage(exp, request.PageIndex, request.PageSize);
|
|
return new MessageModel<PageModel<SubjectSelection>>()
|
|
{
|
|
msg = "success",
|
|
response = subjectlist,
|
|
success = true
|
|
};
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return new MessageModel<PageModel<SubjectSelection>>()
|
|
{
|
|
msg = ex.Message
|
|
};
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 获取选科数据结果
|
|
/// </summary>
|
|
/// <param name="request"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[Route("GetSelect")]
|
|
public async Task<MessageModel<List<SelectionResponseDto>>> GetSelect([FromBody] SelectionRequest request)
|
|
{
|
|
var response = new List<SelectionResponseDto>();
|
|
Expression<Func<SubjectSelection, bool>> exp = Expressionable.Create<SubjectSelection>() //创建表达式
|
|
.AndIF(request.UniversityName != null && request.UniversityName.Count() > 0, w => SqlFunc.ContainsArray(request.UniversityName, w.UniversityName))
|
|
.AndIF(request.MajorName != null && request.MajorName.Count() > 0, w => SqlFunc.ContainsArray(request.MajorName, w.MajorName))
|
|
.AndIF(!string.IsNullOrWhiteSpace(request.LocationCode), w => w.Province == request.LocationCode)
|
|
.And(w => w.AcademicYear == DateTime.Now.Year.ToString())
|
|
.ToExpression();//注意 这一句 不能少
|
|
var subjectlist = await _selectionServices.Query(exp);
|
|
var rplist = subjectlist.Select(c => new SelectionMajorDto()
|
|
{
|
|
MajorName = c.MajorName.Contains("(") ? c.MajorName.Split('(')[0].ToString() : c.MajorName
|
|
}).DistinctBy(c => c.MajorName).ToList();
|
|
|
|
rplist.ForEach(a =>
|
|
{
|
|
var selectlist = subjectlist.Where(e => e.MajorName.Contains(a.MajorName)).Select(c => new SelectResponseDto()
|
|
{
|
|
Selection = c.Selection.ToString(),
|
|
UniversityName = c.UniversityName.ToString()
|
|
}).Distinct().ToList();
|
|
response.Add(new SelectionResponseDto()
|
|
{
|
|
selects = selectlist,
|
|
MajorName = a.MajorName
|
|
});
|
|
});
|
|
return new MessageModel<List<SelectionResponseDto>>()
|
|
{
|
|
response = response,
|
|
success = true,
|
|
msg = "ok"
|
|
};
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|