namespace HStation.Application
|
{
|
/// <summary>
|
/// XhsProject
|
/// </summary>
|
[Route("Xhs/Project/Extensions")]
|
[ApiDescriptionSettings("Xhs", Name = "项目(Extensions)", Order = 99000)]
|
public class XhsProject_ExtensionsController : IDynamicApiController
|
{
|
private readonly Service.XhsProject _service = new();
|
|
#region Query
|
|
/// <summary>
|
/// 获取所有
|
/// </summary>
|
[Route("GetAll@V1.0")]
|
[HttpGet]
|
public List<XhsProjectExtensionsDto> GetAll()
|
{
|
var allList = _service.GetAll();
|
if (allList == null || allList.Count < 1)
|
{
|
return default;
|
}
|
|
var allIds = allList.Select(x => x.ID).Distinct().ToList();
|
var allSiteList = new HStation.Service.XhsProjectSite().GetByProjectIds(allIds);
|
|
var vmList = new List<XhsProjectExtensionsDto>();
|
foreach (var project in allList)
|
{
|
var siteList = allSiteList?.Where(x => x.ProjectID == project.ID).OrderBy(x => x.SortCode).ToList();
|
var vm = new XhsProjectExtensionsDto(project, siteList);
|
vmList.Add(vm);
|
}
|
|
return vmList;
|
}
|
|
/// <summary>
|
/// 通过 ID 获取
|
/// </summary>
|
[Route("GetByID@V1.0")]
|
[HttpGet]
|
public XhsProjectExtensionsDto GetByID([FromQuery][Required] IDInput input)
|
{
|
var project = _service.GetByID(input.ID);
|
if (project == null)
|
{
|
return default;
|
}
|
var siteList = new HStation.Service.XhsProjectSite().GetByProjectID(project.ID);
|
return new XhsProjectExtensionsDto(project, siteList);
|
}
|
|
/// <summary>
|
/// 通过 Ids 获取
|
/// </summary>
|
[Route("GetByIds@V1.0")]
|
[HttpGet]
|
public List<XhsProjectExtensionsDto> GetByIds([FromQuery][Required] IdsInput input)
|
{
|
var ids = LongListHelper.ToList(input.Ids);
|
var allList = _service.GetByIds(ids);
|
if (allList == null || allList.Count < 1)
|
{
|
return default;
|
}
|
var allIds = allList.Select(x => x.ID).Distinct().ToList();
|
var allSiteList = new HStation.Service.XhsProjectSite().GetByProjectIds(allIds);
|
|
var vmList = new List<XhsProjectExtensionsDto>();
|
foreach (var project in allList)
|
{
|
var siteList = allSiteList?.Where(x => x.ProjectID == project.ID).OrderBy(x => x.SortCode).ToList();
|
var vm = new XhsProjectExtensionsDto(project, siteList);
|
vmList.Add(vm);
|
}
|
|
return vmList; ;
|
}
|
|
#endregion
|
|
#region Insert
|
|
/// <summary>
|
/// 插入一条
|
/// </summary>
|
[Route("Insert@V1.0")]
|
[HttpPost]
|
public long Insert([Required] AddXhsProjectExtensionsInput input)
|
{
|
if (!string.IsNullOrEmpty(input.TagName))
|
{
|
if (_service.IsExistTagName(input.TagName))
|
{
|
throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.V001, $"TagName:{input.TagName}", "标记已存在");
|
}
|
}
|
var project = input.Adapt<AddXhsProjectInput, Model.XhsProject>();
|
project.SortCode = _service.GetMaxSortCode(0) + 1;
|
|
var siteList = input.SiteList?.Select(x => x.Adapt<AddXhsProjectSiteInput, Model.XhsProjectSite>()).ToList();
|
var id = _service.InsertEx(project, siteList);
|
return id;
|
}
|
|
#endregion
|
|
#region Update
|
|
/// <summary>
|
/// 更新一条
|
/// </summary>
|
[Route("Update@V1.0")]
|
[HttpPut]
|
public bool Update([Required] UpdateXhsProjectExtensionsInput input)
|
{
|
var project = _service.GetByID(input.ID);
|
var project_rhs = new Model.XhsProject(project);
|
input.Adapt(project_rhs);
|
|
List<Model.XhsProjectSite> site_rhs_list = null;
|
if (input.SiteList != null && input.SiteList.Count > 0)
|
{
|
site_rhs_list = new List<Model.XhsProjectSite>();
|
var site_id_list = input.SiteList.Select(x => x.ID).Distinct().ToList();
|
var site_list = new HStation.Service.XhsProjectSite().GetByIds(site_id_list);
|
foreach (var site in site_list)
|
{
|
var site_input = input.SiteList.Find(x => x.ID == site.ID);
|
var site_rhs = new Model.XhsProjectSite(site);
|
site_input.Adapt(site_rhs);
|
site_rhs_list.Add(site_rhs);
|
}
|
}
|
var bol = _service.UpdateEx(project_rhs, site_rhs_list);
|
return bol;
|
}
|
|
#endregion
|
|
#region Delete
|
|
/// <summary>
|
/// 删除
|
/// </summary>
|
[Route("DeleteByID@V1.0")]
|
[HttpDelete]
|
public bool DeleteByID([FromQuery][Required] IDInput input)
|
{
|
var bol = _service.DeleteByID(input.ID, out string Msg);
|
if (!bol)
|
{
|
throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D999, Msg);
|
}
|
return bol;
|
}
|
|
#endregion
|
|
|
}
|
}
|