using System; using System.Collections.Generic; using System.Text; using System.Data; using WeiSha.Common; using Song.Entities; using WeiSha.Data; using Song.ServiceInterfaces; using System.Data.Common; namespace Song.ServiceImpls { public class StyleCom : IStyle { #region 导航管理 /// /// 添加导航项目 /// /// 业务实体 public void NaviAdd(Navigation entity) { entity.Nav_CrtTime = DateTime.Now; Song.Entities.Organization org = Business.Do().OrganCurrent(); if (org != null) { entity.Org_ID = org.Org_ID; entity.Org_Name = org.Org_Name; } //如果没有排序号,则自动计算 if (entity.Nav_Tax < 1) { object obj = Gateway.Default.Max(Navigation._.Nav_Tax, Navigation._.Org_ID == entity.Org_ID && Navigation._.Nav_Site == entity.Nav_Site && Navigation._.Nav_Type == entity.Nav_Type && Navigation._.Nav_PID == entity.Nav_PID); entity.Nav_Tax = obj is int ? (int)obj + 1 : 0; } Gateway.Default.Save(entity); } /// /// 修改 /// /// 业务实体 public void NaviSave(Navigation entity) { //验证父级节点是否正常 if (entity.Nav_ID == entity.Nav_PID) throw new Exception("请勿将自身设置为父级"); if (entity.Nav_PID > 0) { Navigation parent = this.NaviSingle(entity.Nav_PID); while (parent.Nav_PID != 0) { if (entity.Nav_ID == parent.Nav_PID) throw new Exception("请勿将自身的下级设置为父级"); parent = this.NaviSingle(parent.Nav_PID); } } //假如当前导航的所在父级变化了,排序号重新生成 Navigation old = this.NaviSingle(entity.Nav_ID); if (old != null && old.Nav_PID != entity.Nav_PID) { object obj = Gateway.Default.Max(Navigation._.Nav_Tax, Navigation._.Nav_Site == entity.Nav_Site && Navigation._.Nav_Type == entity.Nav_Type && Navigation._.Nav_PID == entity.Nav_PID); entity.Nav_Tax = obj is int ? (int)obj + 1 : 0; } Gateway.Default.Save(entity); } /// 删除,按主键ID; /// /// 实体的主键 public void NaviDelete(int identify) { Navigation nav = NaviSingle(identify); if (nav == null) return; if (!string.IsNullOrWhiteSpace(nav.Nav_Logo)) WeiSha.WebControl.FileUpload.Delete("Org", nav.Nav_Logo); // Navigation[] child = this.NaviChildren(identify, null); foreach (Navigation n in child) { NaviDelete(n.Nav_ID); } Gateway.Default.Delete(Navigation._.Nav_ID == identify); } /// /// 获取单一实体对象,按主键ID; /// /// 实体的主键 /// public Navigation NaviSingle(int identify) { return Gateway.Default.From().Where(Navigation._.Nav_ID == identify).ToFirst(); } /// /// 获取所有导航 /// /// 是否在前台显示 /// 站点分类,企业站web,手机站mobi,微网站weixin,默认为web /// 某一类导航 /// public Navigation[] NaviAll(bool? isShow, string site, string type, int orgid) { WhereClip wc = Navigation._.Org_ID == orgid; if (isShow != null) wc.And(Navigation._.Nav_IsShow == (bool)isShow); //所属站点 if (!string.IsNullOrWhiteSpace(site) && site.Trim() != "") wc.And(Navigation._.Nav_Site == site); //导航分类 if (!string.IsNullOrWhiteSpace(type) && type.Trim() != "") wc.And(Navigation._.Nav_Type == type); return Gateway.Default.From().Where(wc).OrderBy(Navigation._.Nav_Tax.Asc).ToArray(); } public Navigation[] NaviAll(bool? isShow, string site, string type, int orgid, int pid) { WhereClip wc = Navigation._.Org_ID == orgid && Navigation._.Nav_ID != Navigation._.Nav_PID; if (pid >= 0) wc.And(Navigation._.Nav_PID == pid); if (isShow != null) wc.And(Navigation._.Nav_IsShow == (bool)isShow); //所属站点 if (!string.IsNullOrWhiteSpace(site) && site.Trim() != "") wc.And(Navigation._.Nav_Site == site); //导航分类 if (!string.IsNullOrWhiteSpace(type) && type.Trim() != "") wc.And(Navigation._.Nav_Type == type); return Gateway.Default.From().Where(wc).OrderBy(Navigation._.Nav_Tax.Asc).ToArray(); } /// /// 当前分类的下级分类 /// /// 父级id,如果小于等0,仍作为0使用 /// 是否显示 /// public Navigation[] NaviChildren(int pid, bool? isShow) { WhereClip wc = Navigation._.Nav_PID == pid; if (isShow != null) wc.And(Navigation._.Nav_IsShow == (bool)isShow); return Gateway.Default.From().Where(wc).OrderBy(Navigation._.Nav_Tax.Asc).ToArray(); } /// /// 将当前栏目向上移动;仅在当前对象的同层移动,即同一父节点下的对象之间移动; /// /// /// 如果已经处于顶端,则返回false;移动成功,返回true public bool NaviRemoveUp(int id) { //当前对象 Navigation current = Gateway.Default.From().Where(Navigation._.Nav_ID == id).ToFirst(); int tax = (int)current.Nav_Tax; //上一个对象,即兄长对象;兄长不存则直接返回false; Navigation prev = Gateway.Default.From().Where(Navigation._.Nav_Tax < tax && Navigation._.Org_ID == current.Org_ID && Navigation._.Nav_Site == current.Nav_Site && Navigation._.Nav_Type == current.Nav_Type && Navigation._.Nav_PID == current.Nav_PID) .OrderBy(Navigation._.Nav_Tax.Desc).ToFirst(); if (prev == null) return false; //交换排序号 current.Nav_Tax = prev.Nav_Tax; prev.Nav_Tax = tax; using (DbTrans tran = Gateway.Default.BeginTrans()) { try { tran.Save(current); tran.Save(prev); tran.Commit(); return true; } catch { tran.Rollback(); throw; } finally { tran.Close(); } } } /// /// 将当前栏目向下移动;仅在当前对象的同层移动,即同一父节点下的对象之间移动; /// /// /// 如果已经处于最底端,则返回false;移动成功,返回true public bool NaviRemoveDown(int id) { //当前对象 Navigation current = Gateway.Default.From().Where(Navigation._.Nav_ID == id).ToFirst(); int tax = (int)current.Nav_Tax; //下一个对象,即弟弟对象;弟弟不存则直接返回false; Navigation next = Gateway.Default.From().Where(Navigation._.Nav_Tax > tax && Navigation._.Org_ID == current.Org_ID && Navigation._.Nav_Site == current.Nav_Site && Navigation._.Nav_Type == current.Nav_Type && Navigation._.Nav_PID == current.Nav_PID) .OrderBy(Navigation._.Nav_Tax.Asc).ToFirst(); if (next == null) return false; //交换排序号 current.Nav_Tax = next.Nav_Tax; next.Nav_Tax = tax; using (DbTrans tran = Gateway.Default.BeginTrans()) { try { tran.Save(current); tran.Save(next); tran.Commit(); return true; } catch { tran.Rollback(); throw; } finally { tran.Close(); } } } #endregion #region 轮换图片管理 /// /// 添加轮换图片 /// /// 业务实体 public void ShowPicAdd(ShowPicture entity) { Song.Entities.Organization org = Business.Do().OrganCurrent(); if (org != null) entity.Org_ID = org.Org_ID; //如果没有排序号,则自动计算 if (entity.Shp_Tax < 1) { object obj = Gateway.Default.Max(ShowPicture._.Shp_Tax, ShowPicture._.Org_ID == entity.Org_ID && ShowPicture._.Shp_Site == entity.Shp_Site); entity.Shp_Tax = obj is int ? (int)obj + 1 : 0; } Gateway.Default.Save(entity); } /// /// 修改 /// /// 业务实体 public void ShowPicSave(ShowPicture entity) { Gateway.Default.Save(entity); } /// 删除,按主键ID; /// /// 实体的主键 public void ShowPicDelete(int identify) { ShowPicture shp = ShowPicSingle(identify); if (shp == null) return; if (!string.IsNullOrWhiteSpace(shp.Shp_File)) WeiSha.WebControl.FileUpload.Delete("ShowPic", shp.Shp_File); Gateway.Default.Delete(ShowPicture._.Shp_ID == identify); } /// /// 获取单一实体对象,按主键ID; /// /// 实体的主键 /// public ShowPicture ShowPicSingle(int identify) { return Gateway.Default.From().Where(ShowPicture._.Shp_ID == identify).ToFirst(); } /// /// 获取轮换图片 /// /// 是否在前台显示 /// 站点分类,企业站web,手机站mobi,微网站weixin,默认为web /// 机构id /// public ShowPicture[] ShowPicAll(bool? isShow, string site, int orgid) { WhereClip wc = ShowPicture._.Org_ID == orgid; if (isShow != null) wc.And(ShowPicture._.Shp_IsShow == (bool)isShow); //所属站点 if (!string.IsNullOrWhiteSpace(site) && site.Trim() != "") wc.And(ShowPicture._.Shp_Site == site); return Gateway.Default.From().Where(wc).OrderBy(ShowPicture._.Shp_Tax.Asc).ToArray(); } /// /// 将当前项目向上移动; /// /// /// 如果已经处于顶端,则返回false;移动成功,返回true public bool ShowPicUp(int id) { //当前对象 ShowPicture current = Gateway.Default.From().Where(ShowPicture._.Shp_ID == id).ToFirst(); int tax = (int)current.Shp_Tax; //上一个对象,即兄长对象;兄长不存则直接返回false; ShowPicture prev = Gateway.Default.From().Where(ShowPicture._.Shp_Tax < tax && ShowPicture._.Org_ID == current.Org_ID && ShowPicture._.Shp_Site == current.Shp_Site) .OrderBy(ShowPicture._.Shp_Tax.Desc).ToFirst(); if (prev == null) return false; //交换排序号 current.Shp_Tax = prev.Shp_Tax; prev.Shp_Tax = tax; using (DbTrans tran = Gateway.Default.BeginTrans()) { try { tran.Save(current); tran.Save(prev); tran.Commit(); return true; } catch { tran.Rollback(); throw; } finally { tran.Close(); } } } /// /// 将当前项目向下移动; /// /// /// 如果已经处于顶端,则返回false;移动成功,返回true public bool ShowPicDown(int id) { //当前对象 ShowPicture current = Gateway.Default.From().Where(ShowPicture._.Shp_ID == id).ToFirst(); int tax = (int)current.Shp_Tax; //下一个对象,即弟弟对象;弟弟不存则直接返回false; ShowPicture next = Gateway.Default.From().Where(ShowPicture._.Shp_Tax > tax && ShowPicture._.Org_ID == current.Org_ID && ShowPicture._.Shp_Site == current.Shp_Site) .OrderBy(ShowPicture._.Shp_Tax.Asc).ToFirst(); if (next == null) return false; //交换排序号 current.Shp_Tax = next.Shp_Tax; next.Shp_Tax = tax; using (DbTrans tran = Gateway.Default.BeginTrans()) { try { tran.Save(current); tran.Save(next); tran.Commit(); return true; } catch { tran.Rollback(); throw; } finally { tran.Close(); } } } #endregion } }