357 lines
15 KiB
C#
357 lines
15 KiB
C#
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 导航管理
|
||
/// <summary>
|
||
/// 添加导航项目
|
||
/// </summary>
|
||
/// <param name="entity">业务实体</param>
|
||
public void NaviAdd(Navigation entity)
|
||
{
|
||
entity.Nav_CrtTime = DateTime.Now;
|
||
Song.Entities.Organization org = Business.Do<IOrganization>().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>(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<Navigation>(entity);
|
||
}
|
||
/// <summary>
|
||
/// 修改
|
||
/// </summary>
|
||
/// <param name="entity">业务实体</param>
|
||
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>(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<Navigation>(entity);
|
||
}
|
||
/// 删除,按主键ID;
|
||
/// </summary>
|
||
/// <param name="identify">实体的主键</param>
|
||
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>(Navigation._.Nav_ID == identify);
|
||
}
|
||
/// <summary>
|
||
/// 获取单一实体对象,按主键ID;
|
||
/// </summary>
|
||
/// <param name="identify">实体的主键</param>
|
||
/// <returns></returns>
|
||
public Navigation NaviSingle(int identify)
|
||
{
|
||
return Gateway.Default.From<Navigation>().Where(Navigation._.Nav_ID == identify).ToFirst<Navigation>();
|
||
}
|
||
/// <summary>
|
||
/// 获取所有导航
|
||
/// </summary>
|
||
/// <param name="isShow">是否在前台显示</param>
|
||
/// <param name="site">站点分类,企业站web,手机站mobi,微网站weixin,默认为web</param>
|
||
/// <param name="type">某一类导航</param>
|
||
/// <returns></returns>
|
||
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<Navigation>().Where(wc).OrderBy(Navigation._.Nav_Tax.Asc).ToArray<Navigation>();
|
||
}
|
||
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<Navigation>().Where(wc).OrderBy(Navigation._.Nav_Tax.Asc).ToArray<Navigation>();
|
||
}
|
||
/// <summary>
|
||
/// 当前分类的下级分类
|
||
/// </summary>
|
||
/// <param name="pId">父级id,如果小于等0,仍作为0使用</param>
|
||
/// <param name="isShow">是否显示</param>
|
||
/// <returns></returns>
|
||
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<Navigation>().Where(wc).OrderBy(Navigation._.Nav_Tax.Asc).ToArray<Navigation>();
|
||
}
|
||
/// <summary>
|
||
/// 将当前栏目向上移动;仅在当前对象的同层移动,即同一父节点下的对象之间移动;
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <returns>如果已经处于顶端,则返回false;移动成功,返回true</returns>
|
||
public bool NaviRemoveUp(int id)
|
||
{
|
||
//当前对象
|
||
Navigation current = Gateway.Default.From<Navigation>().Where(Navigation._.Nav_ID == id).ToFirst<Navigation>();
|
||
int tax = (int)current.Nav_Tax;
|
||
//上一个对象,即兄长对象;兄长不存则直接返回false;
|
||
Navigation prev = Gateway.Default.From<Navigation>().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<Navigation>();
|
||
if (prev == null) return false;
|
||
|
||
//交换排序号
|
||
current.Nav_Tax = prev.Nav_Tax;
|
||
prev.Nav_Tax = tax;
|
||
using (DbTrans tran = Gateway.Default.BeginTrans())
|
||
{
|
||
try
|
||
{
|
||
tran.Save<Navigation>(current);
|
||
tran.Save<Navigation>(prev);
|
||
tran.Commit();
|
||
return true;
|
||
}
|
||
catch
|
||
{
|
||
tran.Rollback();
|
||
throw;
|
||
}
|
||
finally
|
||
{
|
||
tran.Close();
|
||
}
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 将当前栏目向下移动;仅在当前对象的同层移动,即同一父节点下的对象之间移动;
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <returns>如果已经处于最底端,则返回false;移动成功,返回true</returns>
|
||
public bool NaviRemoveDown(int id)
|
||
{
|
||
//当前对象
|
||
Navigation current = Gateway.Default.From<Navigation>().Where(Navigation._.Nav_ID == id).ToFirst<Navigation>();
|
||
int tax = (int)current.Nav_Tax;
|
||
//下一个对象,即弟弟对象;弟弟不存则直接返回false;
|
||
Navigation next = Gateway.Default.From<Navigation>().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<Navigation>();
|
||
if (next == null) return false;
|
||
//交换排序号
|
||
current.Nav_Tax = next.Nav_Tax;
|
||
next.Nav_Tax = tax;
|
||
using (DbTrans tran = Gateway.Default.BeginTrans())
|
||
{
|
||
try
|
||
{
|
||
tran.Save<Navigation>(current);
|
||
tran.Save<Navigation>(next);
|
||
tran.Commit();
|
||
return true;
|
||
}
|
||
catch
|
||
{
|
||
tran.Rollback();
|
||
throw;
|
||
}
|
||
finally
|
||
{
|
||
tran.Close();
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 轮换图片管理
|
||
/// <summary>
|
||
/// 添加轮换图片
|
||
/// </summary>
|
||
/// <param name="entity">业务实体</param>
|
||
public void ShowPicAdd(ShowPicture entity)
|
||
{
|
||
Song.Entities.Organization org = Business.Do<IOrganization>().OrganCurrent();
|
||
if (org != null) entity.Org_ID = org.Org_ID;
|
||
//如果没有排序号,则自动计算
|
||
if (entity.Shp_Tax < 1)
|
||
{
|
||
object obj = Gateway.Default.Max<ShowPicture>(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<ShowPicture>(entity);
|
||
}
|
||
/// <summary>
|
||
/// 修改
|
||
/// </summary>
|
||
/// <param name="entity">业务实体</param>
|
||
public void ShowPicSave(ShowPicture entity)
|
||
{
|
||
Gateway.Default.Save<ShowPicture>(entity);
|
||
}
|
||
/// 删除,按主键ID;
|
||
/// </summary>
|
||
/// <param name="identify">实体的主键</param>
|
||
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>(ShowPicture._.Shp_ID == identify);
|
||
}
|
||
/// <summary>
|
||
/// 获取单一实体对象,按主键ID;
|
||
/// </summary>
|
||
/// <param name="identify">实体的主键</param>
|
||
/// <returns></returns>
|
||
public ShowPicture ShowPicSingle(int identify)
|
||
{
|
||
return Gateway.Default.From<ShowPicture>().Where(ShowPicture._.Shp_ID == identify).ToFirst<ShowPicture>();
|
||
}
|
||
/// <summary>
|
||
/// 获取轮换图片
|
||
/// </summary>
|
||
/// <param name="isShow">是否在前台显示</param>
|
||
/// <param name="site">站点分类,企业站web,手机站mobi,微网站weixin,默认为web</param>
|
||
/// <param name="orgid">机构id</param>
|
||
/// <returns></returns>
|
||
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<ShowPicture>().Where(wc).OrderBy(ShowPicture._.Shp_Tax.Asc).ToArray<ShowPicture>();
|
||
}
|
||
/// <summary>
|
||
/// 将当前项目向上移动;
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <returns>如果已经处于顶端,则返回false;移动成功,返回true</returns>
|
||
public bool ShowPicUp(int id)
|
||
{
|
||
//当前对象
|
||
ShowPicture current = Gateway.Default.From<ShowPicture>().Where(ShowPicture._.Shp_ID == id).ToFirst<ShowPicture>();
|
||
int tax = (int)current.Shp_Tax;
|
||
//上一个对象,即兄长对象;兄长不存则直接返回false;
|
||
ShowPicture prev = Gateway.Default.From<ShowPicture>().Where(ShowPicture._.Shp_Tax < tax &&
|
||
ShowPicture._.Org_ID == current.Org_ID && ShowPicture._.Shp_Site == current.Shp_Site)
|
||
.OrderBy(ShowPicture._.Shp_Tax.Desc).ToFirst<ShowPicture>();
|
||
if (prev == null) return false;
|
||
//交换排序号
|
||
current.Shp_Tax = prev.Shp_Tax;
|
||
prev.Shp_Tax = tax;
|
||
using (DbTrans tran = Gateway.Default.BeginTrans())
|
||
{
|
||
try
|
||
{
|
||
tran.Save<ShowPicture>(current);
|
||
tran.Save<ShowPicture>(prev);
|
||
tran.Commit();
|
||
return true;
|
||
}
|
||
catch
|
||
{
|
||
tran.Rollback();
|
||
throw;
|
||
}
|
||
finally
|
||
{
|
||
tran.Close();
|
||
}
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 将当前项目向下移动;
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <returns>如果已经处于顶端,则返回false;移动成功,返回true</returns>
|
||
public bool ShowPicDown(int id)
|
||
{
|
||
//当前对象
|
||
ShowPicture current = Gateway.Default.From<ShowPicture>().Where(ShowPicture._.Shp_ID == id).ToFirst<ShowPicture>();
|
||
int tax = (int)current.Shp_Tax;
|
||
//下一个对象,即弟弟对象;弟弟不存则直接返回false;
|
||
ShowPicture next = Gateway.Default.From<ShowPicture>().Where(ShowPicture._.Shp_Tax > tax &&
|
||
ShowPicture._.Org_ID == current.Org_ID && ShowPicture._.Shp_Site == current.Shp_Site)
|
||
.OrderBy(ShowPicture._.Shp_Tax.Asc).ToFirst<ShowPicture>();
|
||
if (next == null) return false;
|
||
//交换排序号
|
||
current.Shp_Tax = next.Shp_Tax;
|
||
next.Shp_Tax = tax;
|
||
using (DbTrans tran = Gateway.Default.BeginTrans())
|
||
{
|
||
try
|
||
{
|
||
tran.Save<ShowPicture>(current);
|
||
tran.Save<ShowPicture>(next);
|
||
tran.Commit();
|
||
return true;
|
||
}
|
||
catch
|
||
{
|
||
tran.Rollback();
|
||
throw;
|
||
}
|
||
finally
|
||
{
|
||
tran.Close();
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
}
|
||
}
|