NewGaoKaoApi/New_College.Api/Controllers/Front/LibraryController.cs

706 lines
24 KiB
C#

using System;
using System.Collections.Generic;
using System.Data.Entity.Core.Metadata.Edm;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using MySqlX.XDevAPI.Common;
using New_College.Common.HttpRestSharp;
using New_College.IServices;
using New_College.Model;
using New_College.Model.Models;
using New_College.Model.ViewModels;
using SqlSugar;
namespace New_College.Api.Controllers.Front
{
[Route("api/front/[controller]/[action]")]
[ApiController]
public class LibraryController : ControllerBase
{
private readonly ID_LongIdMapServices iD_LongIdMapServices;
private readonly ID_ScoreLineServices _ScoreLineServices;
public LibraryController(ID_LongIdMapServices ID_LongIdMapServices, ID_ScoreLineServices d_ScoreLineServices)
{
iD_LongIdMapServices = ID_LongIdMapServices;
this._ScoreLineServices = d_ScoreLineServices;
}
/// <summary>
/// 同分年份数据
/// </summary>
/// <param name="queryDto"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<List<SameScoreLineDataDto>>> GetSameScoreLine([FromQuery] ScoreLineQueryDto queryDto)
{
var response = new List<SameScoreLineDataDto>();
if (queryDto.Score <= 50)
{
return new MessageModel<List<SameScoreLineDataDto>>()
{
msg = "请输入分数",
success = false
};
}
//1.先计算分数对应的位次,
//2.再通过位次反向匹配,前面三年的分数
var biaozhun = await _ScoreLineServices.Query(c => (c.Score == queryDto.Score.ToString() || c.Score == (queryDto.Score - 1).ToString()) && c.Province == queryDto.Pronvice && c.Years == queryDto.Years);
var lines = biaozhun.Select(s => s.SumCount).ToArray();
var query = await _ScoreLineServices.Query(c => SqlFunc.Between(c.SumCount, lines.Min(), lines.Max()) && c.Province == queryDto.Pronvice);
//var newscore = queryDto.Score - 1;
//var tmpquery = await _ScoreLineServices.Query(c => c.Score == newscore.ToString() && c.Province == queryDto.Pronvice);
//query.ForEach(a =>
//{
// // var newsuminfo = tmpquery.FirstOrDefault(a => a.Years == a.Years);
// response.Add(new SameScoreLineDataDto()
// {
// Count = a.Count,
// Score = a.Score,
// SumCount = a.SumCount,
// Years = a.Years,
// Type = a.Type,
// ScoreRegion = newsuminfo.SumCount + "~" + a.SumCount
// });
//});
response = query.GroupBy(g => new SameScoreLineDataDto { Years = g.Years, Type = g.Type }).Select(c => new SameScoreLineDataDto()
{
Score = query.Where(e => e.Years == c.Key.Years && e.Type == c.Key.Type).Max(e => e.Score),
ScoreRegion = query.Where(e => e.Years == c.Key.Years && e.Type == c.Key.Type).Min(e => e.SumCount) + "~" + query.Where(e => e.Years == c.Key.Years && e.Type == c.Key.Type).Max(e => e.SumCount),
Years = c.Key.Years,
Type = c.Key.Type
}).DistinctBy(c => c.Years).ToList();
return new MessageModel<List<SameScoreLineDataDto>>()
{
msg = "ok",
response = response.OrderByDescending(c => c.Years).ToList(),
success = true
};
}
/// <summary>
/// 获取省份学年位次信息列表(目前只有山东省)
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<List<ScoreLineResponseDto>>> GetScoreLine([FromQuery] ScoreLineQueryDto queryDto)
{
var response = new List<ScoreLineResponseDto>();
var query = await _ScoreLineServices.Query(c => c.Years == queryDto.Years && c.Province == queryDto.Pronvice);
for (int i = 0; i < query.Count(); i++)
{
response.Add(new ScoreLineResponseDto()
{
Count = query[i].Count,
Province = query[i].Province,
Score = query[i].Score,
SumCount = i == 0 ? query[i].SumCount : query[i].SumCount - query[i - 1].SumCount,
Type = query[i].Type,
ScoreRegion = i == 0 ? "1~" + query[i].SumCount : query[i - 1].SumCount + 1 + "~ " + query[i].SumCount,
Years = query[i].Years,
});
}
return new MessageModel<List<ScoreLineResponseDto>>()
{
response = response,
status = 200,
success = true,
msg = "ok"
};
}
/// <summary>
/// 获取院校库
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpPost]
public async Task<MessageModel<PageModel<UniversityResult>>> GetUniversitys([FromBody] UniversityQuery query)
{
var result = await iD_LongIdMapServices.GetUniversitys(query);
if (result.data == null || result.data.Count <= 0)
{
return new MessageModel<PageModel<UniversityResult>>()
{
success = false,
msg = "获取失败",
};
}
else
{
return new MessageModel<PageModel<UniversityResult>>()
{
success = true,
msg = "获取成功",
response = result
};
}
}
/// <summary>
///
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<List<UniversityMongoResult>>> GetMongoUniversity([FromQuery] string key)
{
if (key != "ycymedu")
{
return new MessageModel<List<UniversityMongoResult>>()
{
success = false,
msg = ""
};
}
var result = await iD_LongIdMapServices.GetSyncUniversityInfo();
return new MessageModel<List<UniversityMongoResult>>()
{
response = result,
};
}
/// <summary>
/// 专业库 一级二级列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<List<uniMajorInfoResult>>> uniGetMajorInfo([FromQuery] MajorcategoryQuery query)
{
var result = await iD_LongIdMapServices.uniGetMajorInfo(query);
return new MessageModel<List<uniMajorInfoResult>>()
{
success = result.Count <= 0 ? false : true,
msg = result.Count <= 0 ? "获取失败" : "获取成功",
response = result
};
}
/// <summary>
/// 根据一级专业Id获取二三级专业数据
/// </summary>
/// <param name="tradeId"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<List<TreeMajorInfoResult>>> GetTreeMajors([FromQuery] int tradeId)
{
var result = await iD_LongIdMapServices.GetTreeMajors(tradeId);
return new MessageModel<List<TreeMajorInfoResult>>()
{
success = result.Count <= 0 ? false : true,
msg = result.Count <= 0 ? "获取失败" : "获取成功",
response = result
};
}
/// <summary>
/// 获取推荐职业
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<List<OccupationResult>>> GetRecommendOccupation()
{
var result = await iD_LongIdMapServices.GetRecommendOccupation();
return new MessageModel<List<OccupationResult>>()
{
success = result.Count <= 0 ? false : true,
msg = result.Count <= 0 ? "获取失败" : "获取成功",
response = result
};
}
/// <summary>
/// 职业库 一级二级列表
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<List<uniMajorInfoResult>>> uniGetOccupationInfo([FromQuery] MinOccupationRequest request)
{
var result = await iD_LongIdMapServices.uniGetOccupationInfo(request);
return new MessageModel<List<uniMajorInfoResult>>()
{
success = result.Count <= 0 ? false : true,
msg = result.Count <= 0 ? "获取失败" : "获取成功",
response = result
};
}
/// <summary>
/// Pc端接口职业库一级二级三级列表
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<dynamic>> PcGetOccupationInfo([FromQuery] MinOccupationRequest request)
{
////http://192.168.104.104:3000/youzy.dms.basiclib.api.v1.career2.level.tree.get
var result = await iD_LongIdMapServices.pcGetOccupationInfo(request.Name);
return new MessageModel<dynamic>()
{
success = result.Count <= 0 ? false : true,
msg = result.Count <= 0 ? "获取失败" : "获取成功",
response = result
};
}
/// <summary>
/// 获取职业第三级
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<List<IdNameResult>>> GetOccupationThree([FromQuery] IdQuery query)
{
return await iD_LongIdMapServices.GetOccupationThree(query);
}
/// <summary>
/// 院校详情
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<UniversityDetailResponse>> GetUniversityDetails([FromQuery] IdQuery query)
{
var result = await iD_LongIdMapServices.GetUniversityDetails(query);
return new MessageModel<UniversityDetailResponse>()
{
success = result.Status == 1 ? true : false,
msg = result.Status == 1 ? "获取成功" : "获取失败",
response = result
};
}
/// <summary>
/// 搜索专业名称得到专业列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<List<SeachMajorDtoResponse>>> SeachMajor([FromQuery] SeachMajorDtoRequest query)
{
var result = await iD_LongIdMapServices.SeachMajor(query);
return new MessageModel<List<SeachMajorDtoResponse>>()
{
msg = "ok",
success = result.Any() ? true : false,
response = result
};
}
/// <summary>
/// 获取专业介绍
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<MajorDetail>> GetMajorDetail([FromQuery] MajorQuery query)
{
var result = await iD_LongIdMapServices.GetMajorDetail(query);
return new MessageModel<MajorDetail>()
{
success = result.id > 0 ? true : false,
msg = result.id > 0 ? "获取成功" : "获取失败",
response = result
};
}
/// <summary>
/// 相关院校
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<PageModel<UniversityResult>>> GetRelevantSchool([FromQuery] MajorSchoolQuery query)
{
var result = await iD_LongIdMapServices.GetRelevantSchool(query);
return new MessageModel<PageModel<UniversityResult>>()
{
success = (result.data == null || result.data.Count <= 0) == true ? false : true,
msg = (result.data == null || result.data.Count <= 0) == true ? "获取失败" : "获取成功",
response = result
};
}
/// <summary>
/// 获取专业就业前景
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<CareerProspects>> GetCareerProspects([FromQuery] MajorCareerQuery query)
{
var result = await iD_LongIdMapServices.GetCareerProspects(query);
return new MessageModel<CareerProspects>()
{
success = true,
msg = "获取成功",
response = result
};
}
/// <summary>
/// 获取第三级
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<List<uniMajorInfo>>> uniGetMajorThree([FromQuery] ManageMajorQuery query)
{
return await iD_LongIdMapServices.uniGetMajorThree(query);
}
/// <summary>
/// 根据标签推荐专业
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<List<uniMajorInfo>>> GetMajorThreeByTag([FromQuery] MajorThreeByTagQuery query)
{
return await iD_LongIdMapServices.GetMajorThreeByTag(query);
}
/// <summary>
/// 获取职业详情-职业介绍
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<OccupationDetailResult>> GetRecommendIntroduce([FromQuery] IdQuery query)
{
var result = await iD_LongIdMapServices.GetRecommendIntroduce(query);
return new MessageModel<OccupationDetailResult>()
{
success = result.Status == 1 ? true : false,
msg = result.Status == 1 ? "获取成功" : "获取失败",
response = result
};
}
[HttpGet]
public async Task<MessageModel<dynamic>> GetRecommendIntroduceV2([FromQuery] IdQuery query)
{
var info = HttpHelper.GetApi<pcOccupationobject>("http://192.168.104.104:3000/", "youzy.dms.basiclib.api.v1.career2.level.tree.get");
return new MessageModel<dynamic>()
{
msg = "获取成功",
response = info,
status = 200,
success = true,
};
}
/// <summary>
/// 院校相关专业专用三层下拉接口
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<List<uniTreeMajorItems>>> GetUniversityMajorByTree([FromQuery] IdQuery query)
{
var result = await iD_LongIdMapServices.GetUniversityMajorByTree(query);
return new MessageModel<List<uniTreeMajorItems>>()
{
success = true,
msg = "获取成功",
response = result
};
}
/// <summary>
/// 院校相关专业专用
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<List<uniMajorInfoResult>>> GetUniversityMajor([FromQuery] IdQuery query)
{
var result = await iD_LongIdMapServices.GetUniversityMajor(query);
return new MessageModel<List<uniMajorInfoResult>>()
{
success = true,
msg = "获取成功",
response = result
};
}
/// <summary>
/// 查学校省份的 年份批次
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<BatchYear>> GetBatchYearBySchoolId([FromQuery] PlanYearQuery query)
{
var result = await iD_LongIdMapServices.GetBatchYearBySchoolId(query);
return new MessageModel<BatchYear>()
{
success = result != null,
msg = result != null ? "获取成功" : "获取失败",
response = result
};
}
/// <summary>
/// 获取招生计划 院校详情
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<List<NewPlanDescList>>> GetPlanBySchollId([FromQuery] PlanQuery query)
{
var result = await iD_LongIdMapServices.GetPlanBySchollId(query);
if (result == null || result.Count() <= 0)
{
return new MessageModel<List<NewPlanDescList>>()
{
success = false,
msg = "获取失败"
};
}
else
{
return new MessageModel<List<NewPlanDescList>>()
{
success = true,
msg = "获取成功",
response = result
};
}
}
/// <summary>
/// 获取院校排名
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<List<UniversityRankList>>> GetUniversityRank([FromQuery] UniversityRankQuery query)
{
if (string.IsNullOrWhiteSpace(query.Year))
{
query.Year = query.Type == 3 ? "2024" : "2023";
}
var result = await iD_LongIdMapServices.GetUniversityRank(query);
return new MessageModel<List<UniversityRankList>>()
{
success = result.Count > 0,
msg = result.Count > 0 ? "获取成功" : "获取失败",
response = result
};
}
/// <summary>
/// PC版本院校排名
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<List<UniversityPcRankList>>> GetPcUniversityRank([FromQuery] UniversityRankQuery query)
{
if (string.IsNullOrWhiteSpace(query.Year))
{
query.Year = query.Type == 3 ? "2024" : "2023";
// query.SubjectType = query.Type;
}
var result = await iD_LongIdMapServices.GetPcUniversityRank(query);
return new MessageModel<List<UniversityPcRankList>>()
{
success = result.Count > 0,
msg = result.Count > 0 ? "获取成功" : "获取失败",
response = result
};
}
/// <summary>
/// 专业搜索
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<PageModel<IdNameResult>>> uniGetSearchMajor([FromQuery] NameBaseQuery query)
{
return await iD_LongIdMapServices.uniGetSearchMajor(query);
}
/// <summary>
/// 获取招生简章列表
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet]
public MessageModel<List<GenBycollegeItem>> GetEnrollmentinproductionResult([FromQuery] UniversityGeneralRequest request)
{
return iD_LongIdMapServices.GetEnrollmentinproductionResult(request);
}
/// <summary>
/// 获取招生简介详情
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpGet]
public MessageModel<collegeDetailResult> GetRequestEnrollmentinproductionDetailResult([FromQuery] StringIdQuery query)
{
return iD_LongIdMapServices.GetRequestEnrollmentinproductionDetailResult(query);
}
/// <summary>
/// 获取学科评估
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<SubjectEvaluateResult>> GetSubjectEvaluate([FromQuery] SubjectEvaluateRequest request)
{
request.extTypeId = "第四轮";
var info = HttpHelper.PostApi<SubjectEvaluateResponse>("http://192.168.104.104:3000/youzy.dms.basiclib.api.college.subjectevaluate.byexttypeid.query", request);
if (info == null)
{
return new MessageModel<SubjectEvaluateResult>
{
msg = "暂无数据",
success = false
};
}
if (info.isSuccess)
{
return new MessageModel<SubjectEvaluateResult>()
{
success = true,
msg = "ok",
response = info.result
};
}
return new MessageModel<SubjectEvaluateResult>
{
msg = "暂无数据",
success = false
};
}
/// <summary>
/// 特色专业
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<FeaturedMajorResult>> GetFeaturedMajor([FromQuery] FeaturedMajorRequest request)
{
var info = HttpHelper.GetApi<FeaturedMajorResponse>("http://192.168.104.104:3000/", string.Format("youzy.dms.basiclib.api.college.profession.bycollege.get?collegeCode={0}", request.collegeCode));
if (info == null)
{
return new MessageModel<FeaturedMajorResult>
{
msg = "暂无数据",
success = false
};
}
if (info.isSuccess)
{
return new MessageModel<FeaturedMajorResult>()
{
success = true,
msg = "ok",
response = info.result
};
}
return new MessageModel<FeaturedMajorResult>
{
msg = "暂无数据",
success = false
};
}
/// <summary>
/// 院系设置
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<List<DepartmentResult>>> GetDepartment([FromQuery] DepartmentRequest request)
{
var info = HttpHelper.GetApi<DepartmentResponse>("http://192.168.104.104:3000/", string.Format("youzy.dms.basiclib.api.college.department.bycollege.get?collegeCode={0}", request.collegeCode));
if (info == null)
{
return new MessageModel<List<DepartmentResult>>
{
msg = "暂无数据",
success = false
};
}
if (info.isSuccess)
{
return new MessageModel<List<DepartmentResult>>()
{
success = true,
msg = "ok",
response = info.result.ToList()
};
}
return new MessageModel<List<DepartmentResult>>
{
msg = "暂无数据",
success = false
};
}
}
}