namespace HStation.Application { /// /// XhsProject /// [Route("Xhs/Project/Extensions")] [ApiDescriptionSettings("Xhs", Name = "项目(Extensions)", Order = 99000)] public class XhsProject_ExtensionsController : IDynamicApiController { private readonly Service.XhsProject _service = new(); #region Query /// /// 获取所有 /// [Route("GetAll@V1.0")] [HttpGet] public List 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(); 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; } /// /// 通过 ID 获取 /// [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); } /// /// 通过 Ids 获取 /// [Route("GetByIds@V1.0")] [HttpGet] public List 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(); 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 /// /// 插入一条 /// [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(); project.SortCode = _service.GetMaxSortCode(0) + 1; var siteList = input.SiteList?.Select(x => x.Adapt()).ToList(); var id = _service.InsertEx(project, siteList); return id; } #endregion #region Update /// /// 更新一条 /// [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 site_rhs_list = null; if (input.SiteList != null && input.SiteList.Count > 0) { site_rhs_list = new List(); 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 /// /// 删除 /// [Route("DeleteByID@V1.0")] [HttpDelete] public bool DeleteByID([FromQuery][Required] IDInput input) { var bol = _service.DeleteExByID(input.ID, out string Msg); if (!bol) { throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D999, Msg); } return bol; } #endregion } }