¶Ô±ÈÐÂÎļþ |
| | |
| | | namespace HStation.Service |
| | | { |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public partial class XhsProject |
| | | { |
| | | #region Cache |
| | | |
| | | //è·åç¼å |
| | | private static List<Model.XhsProject> GetCache() |
| | | { |
| | | var all = XhsProjectCacheHelper.GetSet(() => |
| | | { |
| | | var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); |
| | | var entity_list = dal.GetAll(); |
| | | var model_list = Entity2Models(entity_list); |
| | | if (model_list == null) |
| | | { |
| | | model_list = new List<Model.XhsProject>(); |
| | | } |
| | | return model_list; |
| | | }, Yw.Service.ConfigHelper.CacheKeepTime, Yw.Service.ConfigHelper.CacheRandomTime); |
| | | return all; |
| | | } |
| | | |
| | | //éè¿ ID æ´æ°ç¼å |
| | | private static void UpdateCache(long ID) |
| | | { |
| | | var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); |
| | | var entity_ds = dal.GetByID(ID); |
| | | var model_ds = Entity2Model(entity_ds); |
| | | var all = GetCache(); |
| | | var model = all.Find(x => x.ID == ID); |
| | | if (model == null) |
| | | { |
| | | all.Add(model_ds); |
| | | } |
| | | else |
| | | { |
| | | model.Reset(model_ds); |
| | | } |
| | | XhsProjectCacheHelper.Trigger(); |
| | | } |
| | | |
| | | //éè¿ Ids æ´æ°ç¼å |
| | | private static void UpdateCache(List<long> Ids) |
| | | { |
| | | if (Ids == null || Ids.Count < 1) |
| | | { |
| | | return; |
| | | } |
| | | var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); |
| | | var entity_list = dal.GetByIds(Ids); |
| | | var model_list = Entity2Models(entity_list); |
| | | var all = GetCache(); |
| | | all.RemoveAll(x => Ids.Contains(x.ID)); |
| | | if (model_list != null && model_list.Count > 0) |
| | | { |
| | | all.AddRange(model_list); |
| | | } |
| | | XhsProjectCacheHelper.Trigger(); |
| | | } |
| | | |
| | | //ç§»é¤ç¼å |
| | | private static void RemoveCache(long ID) |
| | | { |
| | | var all = GetCache(); |
| | | all.RemoveAll(x => x.ID == ID); |
| | | XhsProjectCacheHelper.Trigger(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// åå¸ç¼å |
| | | /// </summary> |
| | | public static void PublishCache(string key) |
| | | { |
| | | XhsProjectCacheHelper.Publish(key); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region Query |
| | | |
| | | /// <summary> |
| | | /// è·åææ |
| | | /// </summary> |
| | | public List<Model.XhsProject> GetAll() |
| | | { |
| | | var all = GetCache(); |
| | | return all.OrderBy(x => x.ParentIds.Count).ThenBy(x => x.SortCode).ToList(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// éè¿ ID è·å |
| | | /// </summary> |
| | | public Model.XhsProject GetByID(long ID) |
| | | { |
| | | var all = GetAll(); |
| | | return all.Find(x => x.ID == ID); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// éè¿ ID è·å |
| | | /// </summary> |
| | | public List<Model.XhsProject> GetByIds(List<long> Ids) |
| | | { |
| | | if (Ids == null || Ids.Count < 1) |
| | | { |
| | | return default; |
| | | } |
| | | var all = GetAll(); |
| | | return all.Where(x => Ids.Contains(x.ID)).OrderBy(x => x.ParentIds.Count).ThenBy(x => x.SortCode).ToList(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// éè¿ ID è·åå级åèªèº« |
| | | /// </summary> |
| | | public List<Model.XhsProject> GetChildAndSelfByID(long ID) |
| | | { |
| | | var all = GetAll(); |
| | | var list = all.Where(x => x.ID == ID || x.ParentIds.Contains(ID)).OrderBy(x => x.ParentIds.Count).ThenBy(x => x.SortCode).ToList(); |
| | | return list; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// éè¿ ID è·åå级 |
| | | /// </summary> |
| | | public List<Model.XhsProject> GetChildrenByID(long ID) |
| | | { |
| | | var all = GetAll(); |
| | | var list = all.Where(x => x.ParentIds.Contains(ID)).OrderBy(x => x.ParentIds.Count).ThenBy(x => x.SortCode).ToList(); |
| | | return list; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// éè¿ ID è·åç¶çº§ |
| | | /// </summary> |
| | | public List<Model.XhsProject> GetParentByID(long ID) |
| | | { |
| | | var all = GetAll(); |
| | | var model = all.Find(x => x.ID == ID); |
| | | if (model == null) |
| | | { |
| | | return default; |
| | | } |
| | | return all.Where(x => model.ParentIds.Contains(x.ID)).OrderBy(x => x.ParentIds.Count).ThenBy(x => x.SortCode).ToList(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// éè¿ ID è·åç¶çº§åèªèº« |
| | | /// </summary> |
| | | public List<Model.XhsProject> GetParentAndSelfByID(long ID) |
| | | { |
| | | var all = GetAll(); |
| | | var model = all.Find(x => x.ID == ID); |
| | | if (model == null) |
| | | { |
| | | return default; |
| | | } |
| | | return all.Where(x => model.ParentIds.Contains(x.ID) || x.ID == ID).OrderBy(x => x.ParentIds.Count).ThenBy(x => x.SortCode).ToList(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// éè¿ ParentID è·å |
| | | /// </summary> |
| | | public List<Model.XhsProject> GetByParentID(long ParentID) |
| | | { |
| | | var all = GetAll(); |
| | | return all.Where(x => x.ParentIds.LastOrDefault() == ParentID).OrderBy(x => x.SortCode).ToList(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦å
å«å项 |
| | | /// </summary> |
| | | public bool HasChildren(long ID) |
| | | { |
| | | var all = GetAll(); |
| | | return all.Exists(x => x.ParentIds.Contains(ID)); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è·åæå¤§æåºç |
| | | /// </summary> |
| | | public int GetMaxSortCode(long ParentID) |
| | | { |
| | | List<Model.XhsProject> list = null; |
| | | if (ParentID < 1) |
| | | { |
| | | list = GetAll(); |
| | | list = list?.Where(x => x.ParentIds.Count < 1).ToList(); |
| | | } |
| | | else |
| | | { |
| | | list = GetByParentID(ParentID); |
| | | } |
| | | if (list == null || list.Count < 1) |
| | | { |
| | | return 0; |
| | | } |
| | | return list.Max(x => x.SortCode); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å建ç¼å· |
| | | /// </summary> |
| | | public string CreateNO() |
| | | { |
| | | var all = GetAll(); |
| | | var allNoList = all.Select(x => x.NO).Distinct().ToList(); |
| | | var prefix = $"PRJ-{DateTime.Now:yyyy-MM-dd}"; |
| | | var no = new Yw.Untity.UniqueNameCreater().Create(prefix, allNoList, "-"); |
| | | return no; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region Insert |
| | | |
| | | /// <summary> |
| | | /// æå
¥ä¸æ¡æ°æ® |
| | | /// </summary> |
| | | public long Insert(Model.XhsProject model) |
| | | { |
| | | if (model == null) |
| | | { |
| | | return default; |
| | | } |
| | | if (string.IsNullOrEmpty(model.NO)) |
| | | { |
| | | model.NO = CreateNO(); |
| | | } |
| | | var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); |
| | | var entity = Model2Entity(model); |
| | | var id = dal.Insert(entity); |
| | | if (id > 0) |
| | | { |
| | | UpdateCache(id); |
| | | } |
| | | return id; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æå
¥å¤æ¡ |
| | | /// </summary> |
| | | public bool Inserts(List<Model.XhsProject> list) |
| | | { |
| | | if (list == null || list.Count < 1) |
| | | { |
| | | return false; |
| | | } |
| | | list.ForEach(x => |
| | | { |
| | | if (string.IsNullOrEmpty(x.NO)) |
| | | { |
| | | x.NO = CreateNO(); |
| | | } |
| | | }); |
| | | var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); |
| | | var entity_list = Model2Entities(list); |
| | | var ids = dal.InsertsR(entity_list); |
| | | if (ids != null && ids.Count > 0) |
| | | { |
| | | UpdateCache(ids); |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æå
¥æå± |
| | | /// </summary> |
| | | public long InsertEx(Model.XhsProject project, List<Model.XhsProjectSite> siteList) |
| | | { |
| | | if (project == null) |
| | | { |
| | | return default; |
| | | } |
| | | if (string.IsNullOrEmpty(project.NO)) |
| | | { |
| | | project.NO = CreateNO(); |
| | | } |
| | | var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); |
| | | var entityProject = Model2Entity(project); |
| | | var entitySiteList = XhsProjectSite.Model2Entities(siteList); |
| | | |
| | | var id = dal.InsertEx(entityProject, entitySiteList); |
| | | if (id > 0) |
| | | { |
| | | UpdateCache(id); |
| | | XhsProjectSite.UpdateCacheByProjectID(id); |
| | | } |
| | | return id; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region Update |
| | | |
| | | /// <summary> |
| | | /// æ´æ°ä¸æ¡ |
| | | /// </summary> |
| | | public bool Update(Model.XhsProject model) |
| | | { |
| | | if (model == null) |
| | | { |
| | | return false; |
| | | } |
| | | var entity = Model2Entity(model); |
| | | var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); |
| | | var bol = dal.Update(entity); |
| | | if (bol) |
| | | { |
| | | UpdateCache(model.ID); |
| | | } |
| | | return bol; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¹éæ´æ° |
| | | /// </summary> |
| | | public bool Updates(List<Model.XhsProject> list) |
| | | { |
| | | if (list == null || list.Count < 1) |
| | | { |
| | | return false; |
| | | } |
| | | if (list.Exists(x => x.ID < 1)) |
| | | { |
| | | return false; |
| | | } |
| | | var entity_list = Model2Entities(list); |
| | | var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); |
| | | var bol = dal.Updates(entity_list); |
| | | if (bol) |
| | | { |
| | | UpdateCache(list.Select(x => x.ID).ToList()); |
| | | } |
| | | return bol; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æå± |
| | | /// </summary> |
| | | public bool UpdateEx(Model.XhsProject project, List<Model.XhsProjectSite> siteList) |
| | | { |
| | | if (project == null) |
| | | { |
| | | return false; |
| | | } |
| | | if (project.ID < 1) |
| | | { |
| | | return false; |
| | | } |
| | | var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); |
| | | var entityProject = Model2Entity(project); |
| | | var entitySiteList = XhsProjectSite.Model2Entities(siteList); |
| | | var bol = dal.UpdateEx(entityProject, entitySiteList); |
| | | if (bol) |
| | | { |
| | | UpdateCache(project.ID); |
| | | XhsProjectSite.UpdateCacheByProjectID(project.ID); |
| | | } |
| | | return bol; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æåºç |
| | | /// </summary> |
| | | public bool UpdateSortCode(long ID, int SortCode) |
| | | { |
| | | if (ID < 1) |
| | | { |
| | | return false; |
| | | } |
| | | var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); |
| | | var bol = dal.UpdateSortCode(ID, SortCode); |
| | | if (bol) |
| | | { |
| | | UpdateCache(ID); |
| | | } |
| | | return bol; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æåº |
| | | /// </summary> |
| | | public bool UpdateSorter(List<Yw.Model.Sorter> sorters) |
| | | { |
| | | if (sorters == null || sorters.Count < 1) |
| | | { |
| | | return false; |
| | | } |
| | | if (sorters.Exists(x => x.ID < 1)) |
| | | { |
| | | return false; |
| | | } |
| | | var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); |
| | | var bol = dal.UpdateSorter(sorters.ToEntityList()); |
| | | if (bol) |
| | | { |
| | | UpdateCache(sorters.Select(x => x.ID).ToList()); |
| | | } |
| | | return bol; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æ æåºç |
| | | /// </summary> |
| | | public bool UpdateTreeSortCode(long ID, List<long> ParentIds, int SortCode) |
| | | { |
| | | if (ID < 1) |
| | | { |
| | | return false; |
| | | } |
| | | var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); |
| | | var bol = dal.UpdateTreeSortCode(ID, TreeParentIdsHelper.ToString(ParentIds), SortCode); |
| | | if (bol) |
| | | { |
| | | UpdateCache(ID); |
| | | } |
| | | return bol; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æ æåº |
| | | /// </summary> |
| | | public bool UpdateTreeSorter(List<Yw.Model.TreeSorter> sorters) |
| | | { |
| | | if (sorters == null || sorters.Count < 1) |
| | | { |
| | | return false; |
| | | } |
| | | if (sorters.Exists(x => x.ID < 1)) |
| | | { |
| | | return false; |
| | | } |
| | | var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); |
| | | var bol = dal.UpdateTreeSorter(sorters.ToEntityList()); |
| | | if (bol) |
| | | { |
| | | UpdateCache(sorters.Select(x => x.ID).ToList()); |
| | | } |
| | | return bol; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ´æ° Paras |
| | | /// </summary> |
| | | public bool UpdateParas(long ID, Dictionary<string, string> Paras) |
| | | { |
| | | if (ID < 1) |
| | | { |
| | | return false; |
| | | } |
| | | var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); |
| | | var bol = dal.UpdateParas(ID, ParasHelper.ToString(Paras)); |
| | | if (bol) |
| | | { |
| | | UpdateCache(ID); |
| | | } |
| | | return bol; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ´æ° Flags |
| | | /// </summary> |
| | | public bool UpdateFlags(long ID, List<string> Flags) |
| | | { |
| | | if (ID < 1) |
| | | { |
| | | return false; |
| | | } |
| | | var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); |
| | | var bol = dal.UpdateFlags(ID, FlagsHelper.ToString(Flags)); |
| | | if (bol) |
| | | { |
| | | UpdateCache(ID); |
| | | } |
| | | return bol; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ´æ° TagName |
| | | /// </summary> |
| | | public bool UpdateTagName(long ID, string TagName) |
| | | { |
| | | if (ID < 1) |
| | | { |
| | | return false; |
| | | } |
| | | var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); |
| | | var bol = dal.UpdateTagName(ID, TagName); |
| | | if (bol) |
| | | { |
| | | UpdateCache(ID); |
| | | } |
| | | return bol; |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #region Exist |
| | | |
| | | /// <summary> |
| | | /// 夿 TagName æ¯å¦åå¨ |
| | | /// </summary> |
| | | public bool IsExistTagName(string TagName) |
| | | { |
| | | if (string.IsNullOrEmpty(TagName)) |
| | | { |
| | | return false; |
| | | } |
| | | var all = GetAll(); |
| | | return all.Exists(x => x.TagName == TagName); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 夿 TagName æ¯å¦åå¨ ExceptID |
| | | /// </summary> |
| | | public bool IsExistTagNameExceptID(string TagName, long ExceptID) |
| | | { |
| | | if (string.IsNullOrEmpty(TagName)) |
| | | { |
| | | return false; |
| | | } |
| | | var all = GetAll(); |
| | | return all.Exists(x => x.TagName == TagName && x.ID != ExceptID); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region Delete |
| | | |
| | | /// <summary> |
| | | /// éè¿ ID å é¤ |
| | | /// </summary> |
| | | public bool DeleteByID(long ID, out string Msg) |
| | | { |
| | | Msg = string.Empty; |
| | | if (new XhsProjectSite().IsExistByProjectID(ID)) |
| | | { |
| | | Msg = "åå¨ç«ç¹ä¿¡æ¯"; |
| | | return false; |
| | | } |
| | | var dal = DALCreateHelper.CreateDAL<HStation.DAL.IXhsProject>(); |
| | | var bol = dal.DeleteByID(ID); |
| | | if (bol) |
| | | { |
| | | RemoveCache(ID); |
| | | } |
| | | return bol; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |
| | | } |
| | | } |