using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.Common; using WeiSha.Common; using Song.Entities; using WeiSha.Data; using Song.ServiceInterfaces; using System.Resources; using System.Reflection; namespace Song.ServiceImpls { public partial class ContentsCom : IContents { public int ProductAdd(Product entity) { //创建时间 entity.Pd_CrtTime = DateTime.Now; Song.Entities.Columns nc = Business.Do().Single((int)entity.Col_Id); if (nc != null) entity.Col_Name = nc.Col_Name; //添加对象,并设置排序号 object obj = Gateway.Default.Max(Product._.Pd_Tax, Product._.Col_Id == entity.Col_Id); entity.Pd_Tax = obj is int ? (int)obj + 1 : 0; //所在机构 Song.Entities.Organization org = Business.Do().OrganCurrent(); if (org != null) { entity.Org_ID = org.Org_ID; entity.Org_Name = org.Org_Name; } return Gateway.Default.Save(entity); } public void ProductSave(Product entity) { Song.Entities.Columns nc = Business.Do().Single((int)entity.Col_Id); if (nc != null) entity.Col_Name = nc.Col_Name; using (DbTrans tran = Gateway.Default.BeginTrans()) { try { tran.Save(entity); //当更改产品信息时,同步更改产品留言的产品名称 tran.Update(new Field[] { ProductMessage._.Pd_Name }, new object[] { entity.Pd_Name }, ProductMessage._.Pd_Id == entity.Pd_Id); tran.Commit(); } catch (Exception ex) { tran.Rollback(); throw ex; } finally { tran.Close(); } } } public bool ProductUp(int orgid, int id) { //当前对象 Product current = Gateway.Default.From().Where(Product._.Pd_Id == id).ToFirst(); int tax = (int)current.Pd_Tax; //上一个对象,即兄长对象;兄长不存则直接返回false; Product prev = Gateway.Default.From() .Where(Product._.Pd_Tax < tax && Product._.Col_Id == current.Col_Id && Product._.Org_ID == orgid) .OrderBy(Product._.Pd_Tax.Desc).ToFirst(); if (prev == null) return false; //交换排序号 current.Pd_Tax = prev.Pd_Tax; prev.Pd_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(); } } } public bool ProductDown(int orgid, int id) { //当前对象 Product current = Gateway.Default.From().Where(Product._.Pd_Id == id).ToFirst(); int tax = (int)current.Pd_Tax; //下一个对象,即弟弟对象;弟弟不存则直接返回false; Product next = Gateway.Default.From() .Where(Product._.Pd_Tax > tax && Product._.Col_Id == current.Col_Id && Product._.Org_ID == orgid) .OrderBy(Product._.Pd_Tax.Asc).ToFirst(); if (next == null) return false; //交换排序号 current.Pd_Tax = next.Pd_Tax; next.Pd_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(); } } } public int ProductNumber(int id, int addNum) { object obj = Gateway.Default.Max(Product._.Pd_Number, Product._.Pd_Id == id); int i = obj is int ? (int)obj : 0; //如果不用增加,则直接返回当前浏览量 if (addNum < 1) return i; //增加记数 i += addNum; Gateway.Default.Update(new Field[] { Product._.Pd_Number }, new object[] { i }, Product._.Pd_Id == id); return i; } public void ProductDelete(int identify) { Song.Entities.Product entity = this.ProductSingle(identify); using (DbTrans tran = Gateway.Default.BeginTrans()) { try { _ProductDelete(entity,tran); tran.Commit(); } catch (Exception ex) { tran.Rollback(); throw ex; } finally { tran.Close(); } } } /// /// 批量删除 /// /// 机构id /// 栏目分类id public void ProductDeleteAll(int orgid, int colid) { WhereClip wc = new WhereClip(); if (orgid > 0) wc.And(Product._.Org_ID == orgid); if (colid > 0) wc.And(Product._.Col_Id == colid); Song.Entities.Product[] entities = Gateway.Default.From().Where(wc).ToArray(); DbTrans tran = Gateway.Default.BeginTrans(); foreach (Song.Entities.Product entity in entities) { _ProductDelete(entity, tran); } } /// /// 删除 /// /// 业务实体 private void _ProductDelete(Product entity, DbTrans tran) { //删除产品的留言 tran.Delete(ProductMessage._.Pd_Id == entity.Pd_Id); // 删除产品图片 //Song.Entities.ProductPicture[] pps = this.PictureAll(entity.Pd_Id, null); //foreach (ProductPicture p in pps) //{ // this._PictureDelete(p); //} //删除产品主信息 string resPath = WeiSha.Common.Upload.Get["Product"].Physics; WeiSha.WebControl.FileUpload.Delete("Product", entity.Pd_Logo); //删除二维码文件 if (System.IO.File.Exists(resPath + entity.Pd_QrCode)) { System.IO.File.Delete(resPath + entity.Pd_QrCode); } tran.Delete(Product._.Pd_Id == entity.Pd_Id); } public void ProductIsDelete(int identify) { Gateway.Default.Update(new Field[] { Product._.Pd_IsDel }, new object[] { true }, Product._.Pd_Id == identify); } public void ProductRecover(int identify) { Gateway.Default.Update(new Field[] { Product._.Pd_IsDel }, new object[] { false }, Product._.Pd_Id == identify); } public Product ProductSingle(int identify) { return Gateway.Default.From().Where(Product._.Pd_Id == identify).ToFirst(); } public Product ProductSingle(string uid) { return Gateway.Default.From().Where(Product._.Pd_Uid == uid).ToFirst(); } public Product[] ProductPager(int orgid, int? colid, int size, int index, out int countSum) { WhereClip wc = Product._.Pd_IsDel == false; if (orgid > 0) wc.And(Product._.Org_ID == orgid); if (colid != null && colid > 0) wc.And(Product._.Col_Id == colid); countSum = Gateway.Default.Count(wc); return Gateway.Default.From().Where(wc).OrderBy(Product._.Pd_Tax.Asc).ToArray(size, (index - 1) * size); } public Product[] ProductPager(int orgid, int? colid, string searTxt, bool? isDel, int size, int index, out int countSum) { WhereClip wc = new WhereClip(); if (orgid > 0) wc.And(Product._.Org_ID == orgid); if (colid != null && colid > 0) wc.And(Product._.Col_Id == colid); if (isDel != null) wc.And(Product._.Pd_IsDel == (bool)isDel); if (searTxt != null && searTxt.Trim() != "") wc.And(Product._.Pd_Name.Like("%" + searTxt + "%")); countSum = Gateway.Default.Count(wc); return Gateway.Default.From().Where(wc).OrderBy(Product._.Pd_Tax.Asc).ToArray(size, (index - 1) * size); } public Product[] ProductPager(int orgid, int? colid, string searTxt, bool? isDel, bool? isUse, bool? isNew, bool? isRec, string type, int size, int index, out int countSum) { WhereClip wc = new WhereClip(); if (orgid > 0) wc.And(Product._.Org_ID == orgid); if (colid != null && colid > 0) wc.And(Product._.Col_Id == colid); if (isDel != null) wc.And(Product._.Pd_IsDel == (bool)isDel); if (isUse != null) wc.And(Product._.Pd_IsUse == (bool)isUse); if (isNew != null && isNew != false) wc.And(Product._.Pd_IsNew == (bool)isNew); if (isRec != null && isRec != false) wc.And(Product._.Pd_IsRec == (bool)isRec); if (searTxt != null && searTxt.Trim() != "") wc.And(Product._.Pd_Name.Like("%" + searTxt + "%")); countSum = Gateway.Default.Count(wc); type = type.ToLower(); if (type == "new") { return Gateway.Default.From().Where(wc).OrderBy(Product._.Pd_IsNew.Asc && Product._.Pd_Tax.Asc).ToArray(size, (index - 1) * size); } if (type == "hot") { return Gateway.Default.From().Where(wc).OrderBy(Product._.Pd_Number.Desc && Product._.Pd_Tax.Asc).ToArray(size, (index - 1) * size); } if (type == "rec") { return Gateway.Default.From().Where(wc).OrderBy(Product._.Pd_IsRec.Desc && Product._.Pd_Tax.Asc).ToArray(size, (index - 1) * size); } return Gateway.Default.From().Where(wc).OrderBy(Product._.Pd_Tax.Asc).ToArray(size, (index - 1) * size); } public Product[] ProductCount(int orgid, int? colid, int count, bool? isDel, bool? isUse, string type) { WhereClip wc = new WhereClip(); if (orgid > 0) wc.And(Product._.Org_ID == orgid); if (colid != null && colid > 0) wc.And(Product._.Col_Id == colid); if (isDel != null) wc.And(Product._.Pd_IsDel == isDel); if (isUse != null) wc.And(Product._.Pd_IsUse == isUse); type = type.ToLower(); //排序方式 OrderByClip order = Product._.Pd_Tax.Asc; if (type == "new") { order = Product._.Pd_IsNew.Asc; wc.And(Product._.Pd_IsNew == true); } if (type == "hot") order = Product._.Pd_Number.Desc; if (type == "rec") order = Product._.Pd_IsRec.Asc; if (type == "flux") order = Product._.Pd_Number.Desc; //取产品数量 return Gateway.Default.From().Where(wc).OrderBy(order && Product._.Pd_PushTime.Desc && Product._.Pd_Tax.Asc).ToArray(count); } } }