/** * EC_SeckillBusinessDAL.cs * * 功 能: 特价业务数据访问实现 * 类 名: EC_SeckillBusinessDAL * * Ver 变更日期 负责人 变更内容 * ─────────────────────────────────── * V0.01 2013-4-12 9:23 吴崎均 更改InsertModel以及UpdateModel以与存储相匹配 * V0.02 吴崎均 新增分页实现、获取单个实体实现 * V0.03 2013-4-18 16:00 吴崎均 新增批量删除 * V0.04 2013-5-2 11:55 吴崎均 更新SelectModleById方法实现拼接sql获取实体方式为为调用存储过程sp_EC_SeckillBuffer_Merge归并缓冲并获取数据 * V0.05 2013-5-3 10:15 吴崎均 变更字典表关联数据为DicType + MeanValue * V0.06 2013-5-14 11:53 吴崎均 改变分页方法,增加创建时间范围查询条件 * V0.07 2013-5-28 13:43 吴崎均 修改批量删除方法定义及实现 * V0.08 2013-6-2 10:42 吴崎均 增加修改状态方法 * * * * * */ using System; using System.Collections.Generic; using System.Linq; using System.Text; using CY.IDAL; using System.Data.SqlClient; using System.Data; using CY.Model; using CY.Infrastructure.Query; namespace CY.SQLDAL { /// /// 特价业务数据访问实现 /// public class EC_SeckillBusinessDAL : IEC_SeckillBusinessDAL { private Database _dataBase = null; /// /// 初始化构造 /// /// public EC_SeckillBusinessDAL(Database dataBase) { _dataBase = dataBase; } #region 常量 /// /// 查询目标 /// const string SELECTTARGET = @" s.*,p.PrintName as PrintTypeName,d_state.Name as StateName,m.Name as MemberName,acd.LevelIcon as LevelIcon"; /// /// 查询来源 /// const string FROMSOUCEBEFORE = " EC_SeckillBusiness as s Inner Join EC_MemberBasic as m On(s.MemberId=m.MemberId "; const string FROMSOUCEEND = " ) " + "left join SysInquiry_PrintingType as p On(s.PrintTypeId=p.Keyid) " + "left join Integrity_IntegrityCard acd On (s.MemberId=acd.MemberId ) " + "left join Integrity_CreditLevelRule bcd on acd.RuleId = bcd.RuleId "+ "Left Join Sys_Dictionary as d_state On(d_state.DicType='特价业务状态' And s.[State]=d_state.MeanValue) where bcd.RuleType ='True' "; /// /// 分页默认排序字段 /// const string ORDERBY = " s.Keyid desc"; #endregion public EC_SeckillBusinessDAL() { _dataBase = new Database(); } /// /// 新增 /// /// /// public bool InserModel(Infrastructure.Domain.IAggregateRoot model) { Model.EC_SeckillBusiness trueModel = model as Model.EC_SeckillBusiness; if (trueModel == null) { return false; } else { } IList sqlParms = new List() { new SqlParameter("@MemberId",trueModel.MemberId), new SqlParameter("@PrintTypeId",trueModel.PrintTypeId), new SqlParameter("@BusinessName",trueModel.BusinessName), new SqlParameter("@Specifications",trueModel.Specifications), new SqlParameter("@OrderCount",trueModel.OrderCount), new SqlParameter("@PrintCount",trueModel.PrintCount), new SqlParameter("@Price",trueModel.Price), new SqlParameter("@SurplusOrderCount",trueModel.OrderCount), new SqlParameter("@Contacts",trueModel.Contacts), new SqlParameter("@ContactPhone",trueModel.ContactPhone), new SqlParameter("@QQ",trueModel.QQ), new SqlParameter("@EndTime",trueModel.EndTime), new SqlParameter("@State","0"), new SqlParameter("@Operator",trueModel.Operator), new SqlParameter("@Remark",trueModel.Remark) }; try { _dataBase.Query("sp_EC_SeckillBusiness_Insert", CommandType.StoredProcedure, sqlParms.ToArray()); } catch (Exception ex) { throw ex; } return true; } /// /// 修改 /// /// /// public bool UpdateModel(Infrastructure.Domain.IAggregateRoot model) { Model.EC_SeckillBusiness trueModel = model as Model.EC_SeckillBusiness; if (trueModel == null) { return false; } else { } IList sqlParms = new List() {new SqlParameter("@Keyid",trueModel.Keyid), new SqlParameter("@MemberId",trueModel.MemberId), new SqlParameter("@PrintTypeId",trueModel.PrintTypeId), new SqlParameter("@BusinessName",trueModel.BusinessName), new SqlParameter("@Specifications",trueModel.Specifications), new SqlParameter("@OrderCount",trueModel.OrderCount), new SqlParameter("@PrintCount",trueModel.PrintCount), new SqlParameter("@Price",trueModel.Price), new SqlParameter("@SurplusOrderCount",trueModel.SurplusOrderCount), new SqlParameter("@Contacts",trueModel.Contacts), new SqlParameter("@ContactPhone",trueModel.ContactPhone), new SqlParameter("@QQ",trueModel.QQ), new SqlParameter("@EndTime",trueModel.EndTime), new SqlParameter("@State",trueModel.State), new SqlParameter("@Operator",trueModel.Operator), new SqlParameter("@Remark",trueModel.Remark) }; try { _dataBase.Query("sp_EC_SeckillBusiness_Update", CommandType.StoredProcedure, sqlParms.ToArray()); } catch (Exception ex) { throw ex; } return true; } /// /// 删除 /// /// /// public bool DeleteModel(Infrastructure.Domain.IAggregateRoot model) { Model.EC_SeckillBusiness trueModel = model as Model.EC_SeckillBusiness; if (trueModel == null) { return false; } else { } IList sqlParms = new List() { new SqlParameter("@Keyid",trueModel.Keyid) }; try { _dataBase.Query("sp_EC_SeckillBusiness_DeleteRow", CommandType.StoredProcedure, sqlParms.ToArray()); } catch (Exception ex) { throw ex; } return true; } /// /// 分页查询 /// /// 查询对象 /// 分页对象 /// public IEnumerable SelectModelPage(Infrastructure.Query.Query query, Infrastructure.Query.Pagination pagination) { if (null == pagination || null == query || null == query.Criteria || 1 > query.Criteria.Count) return null; else { } //query.Criteria 首个元素必须是排序字段,其值为结果排序字段 int maxParamIndex = query.Criteria.Count - 1;//最大索引 string[] orderbys = new string[] { ORDERBY }; string resultOrderBy = "";//结果集排序方式 if ("@orderBy".Equals(query.Criteria[maxParamIndex].PropertyName)) { orderbys = string.Format("{0}", query.Criteria[maxParamIndex].Value).Split(','); resultOrderBy = 1 == orderbys.Length ? resultOrderBy : orderbys[1]; } string fromSouce = string.Format("{0}{1}{2}", FROMSOUCEBEFORE, query.Criteria[0].Value, FROMSOUCEEND);//拼装条件 return _dataBase.SelectModelPage(pagination, SELECTTARGET, fromSouce, orderbys[0], resultOrderBy); } /// /// 分页查询(根据联系人和结束状态) /// /// 分页对象 /// 联系人 /// 是否结束(0为未结束 1为已结束 -1为不限) /// 创建开始时间 /// 创建结束时间 /// 查询结果 传入参数错误时结果为空 /// public IEnumerable SelectModelPage(Infrastructure.Query.Pagination pagination, string contacts, int isEnd, DateTime? beginCreate, DateTime? endCreate) { if (null == pagination) return null; else { } string condition = ""; if (!string.IsNullOrEmpty(contacts)) { condition += string.Format(" And s.BusinessName Like '%{0}%'", contacts); } if (-1 != isEnd) { condition += isEnd == 0 ? " And s.EndTime > Getdate() And s.State=0 " : " And ( s.EndTime < Getdate() Or s.State <> 0 )"; // 0为未结束 1为已结束 -1为不限 } if (beginCreate.HasValue) { condition += string.Format(" And s.CreateTime >= '{0}' ", beginCreate.Value.ToString("yyyy-MM-dd")); } if (endCreate.HasValue) { condition += string.Format(" And s.CreateTime <= '{0}' ", endCreate.Value.ToString("yyyy-MM-dd")); } Query query = new Query(true); query.Criteria.Add(new Criterion("condition", condition)); //query.Criteria.Add(new Criterion("orderBy", "s.Keyid desc,CreateTime desc")); return SelectModelPage(query, pagination); } /// /// 分页查询(根据联系人和结束状态) /// /// 分页对象 /// 联系人 /// 是否结束(0为未结束 1为已结束 -1为不限) /// 创建开始时间 /// 创建结束时间 /// 会员编号 /// 查询结果 传入参数错误时结果为空 public IEnumerable SelectModelPage(Infrastructure.Query.Pagination pagination, string contacts, int isEnd, DateTime? beginCreate, DateTime? endCreate, Guid MemberId) { if (null == pagination) return null; else { } string condition = ""; if (!string.IsNullOrEmpty(contacts)) { condition += string.Format(" And s.BusinessName Like '%{0}%'", contacts); ; } if (-1 != isEnd) { condition += isEnd == 0 ? " And s.EndTime > Getdate() And s.State=0 " : " And ( s.EndTime < Getdate() Or s.State <> 0 )"; // 0为未结束 1为已结束 -1为不限 } if (beginCreate.HasValue) { condition += string.Format(" And s.CreateTime >= '{0}' ", beginCreate.Value.ToString("yyyy-MM-dd")); } if (endCreate.HasValue) { condition += string.Format(" And s.CreateTime <= '{0}' ", endCreate.Value.ToString("yyyy-MM-dd")); } if (MemberId != Guid.Empty && MemberId != null) { condition += string.Format(" And m.MemberId = '{0}' ", MemberId); } Query query = new Query(true); query.Criteria.Add(new Criterion("condition", condition)); //query.Criteria.Add(new Criterion("orderBy", "s.Keyid desc,CreateTime desc")); return SelectModelPage(query, pagination); } /// /// 单个查询 /// /// /// public IEnumerable SelectAllModel(Infrastructure.Query.Query query) { throw new NotImplementedException(); } /// /// 根据编号获取实体信息 /// /// 主键编号 /// public EC_SeckillBusiness SelectModleById(int id) { if (id < 1) return null;//错误数据返会空 else { } //IList result = _dataBase.SelectModel(SELECTTARGET, string.Format("{0}{1}{2}{3}", FROMSOUCEBEFORE, " And Keyid=", id, FROMSOUCEEND)); //return null == result || result.Count == 0 ? null : result[0];//返回结果 IList result = null; using (IDataReader reader = _dataBase.QueryDataReader("sp_EC_SeckillBuffer_Merge", CommandType.StoredProcedure, new SqlParameter() { ParameterName = "@seckillId", Value = id })) { result = _dataBase.ReadDataToModel(reader); } return null == result || result.Count == 0 ? null : result[0];//返回结果 //IDataReader reader = _dataBase.QueryDataReader("sp_EC_SeckillBusiness_SelectByMember", // CommandType.StoredProcedure, // new SqlParameter() { ParameterName = "@memberId", Value = memberId }, // new SqlParameter() { ParameterName = "@printTypeId", Value = printTypeId }); //return Database.ReadDataToModelAndDispose(reader); } /// /// 根据编号批量删除数据 /// /// 当前操作人 /// 编号集合 /// public bool DeleteDataByIds(string currentOperator, params int[] ids) { return Database.DeleteDataByIds(this, currentOperator, ids); } /// /// 减少秒杀数量 /// /// 要操作的秒杀业务编号 /// 要减少的秒杀数量 /// 下单的用户编号 /// internal bool DecreaseSeckillNum(int seckillId, int seckillNum, Guid memberId) { SqlParameter[] param = new SqlParameter[]{ new SqlParameter() {Direction=ParameterDirection.ReturnValue} , new SqlParameter() { ParameterName = "@seckillId",Value=seckillId }, new SqlParameter() { ParameterName = "@seckillNum",Value=seckillNum}, new SqlParameter() { ParameterName = "@memberId",Value=memberId} }; _dataBase.Query("sp_EC_SeckillBuffer_Insert", CommandType.StoredProcedure, param); return 1.Equals(param[0].Value); } /// /// 改变特价秒杀业务状态 /// /// 数据编号 /// 状态 /// public bool ChangeState(int id, int state) { IList sqlParms = new List() { new SqlParameter("@Keyid",id), new SqlParameter("@State",state) }; try { _dataBase.Query("sp_EC_SeckillBusiness_ChangeState", CommandType.StoredProcedure, sqlParms.ToArray()); } catch (Exception ex) { throw ex; } return true; } } }