Aucune description

orders.cs 19KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Data.SqlClient;
  5. using System.Reflection;
  6. using System.Text;
  7. using CallCenterApi.DB;
  8. namespace CallCenterApi.DAL
  9. {
  10. /// <summary>
  11. /// 数据访问类:订单表
  12. /// </summary>
  13. public partial class orders
  14. {
  15. private string databaseprefix; //数据库表名前缀
  16. public orders(string _databaseprefix = "dt_")
  17. {
  18. databaseprefix = _databaseprefix;
  19. }
  20. #region 基本方法================================
  21. /// <summary>
  22. /// 是否存在该记录
  23. /// </summary>
  24. public bool Exists(int id)
  25. {
  26. StringBuilder strSql = new StringBuilder();
  27. strSql.Append("select count(1) from " + databaseprefix + "orders");
  28. strSql.Append(" where id=@id");
  29. SqlParameter[] parameters = {
  30. new SqlParameter("@id", SqlDbType.Int,4)};
  31. parameters[0].Value = id;
  32. return DbHelperSQL.Exists(strSql.ToString(), parameters);
  33. }
  34. /// <summary>
  35. /// 增加一条数据
  36. /// </summary>
  37. public int Add(Model.orders model)
  38. {
  39. using (SqlConnection conn = new SqlConnection(DbHelperSQL.connectionString))
  40. {
  41. conn.Open();//打开数据连接
  42. using (SqlTransaction trans = conn.BeginTransaction())
  43. {
  44. try
  45. {
  46. #region 主表信息==========================
  47. StringBuilder strSql = new StringBuilder();
  48. StringBuilder str1 = new StringBuilder();//数据字段
  49. StringBuilder str2 = new StringBuilder();//数据参数
  50. //利用反射获得属性的所有公共属性
  51. PropertyInfo[] pros = model.GetType().GetProperties();
  52. List<SqlParameter> paras = new List<SqlParameter>();
  53. strSql.Append("insert into " + databaseprefix + "orders(");
  54. foreach (PropertyInfo pi in pros)
  55. {
  56. //如果不是主键则追加sql字符串
  57. if (!pi.Name.Equals("id") && !typeof(System.Collections.IList).IsAssignableFrom(pi.PropertyType))
  58. {
  59. //判断属性值是否为空
  60. if (pi.GetValue(model, null) != null)
  61. {
  62. str1.Append(pi.Name + ",");//拼接字段
  63. str2.Append("@" + pi.Name + ",");//声明参数
  64. paras.Add(new SqlParameter("@" + pi.Name, pi.GetValue(model, null)));//对参数赋值
  65. }
  66. }
  67. }
  68. strSql.Append(str1.ToString().Trim(','));
  69. strSql.Append(") values (");
  70. strSql.Append(str2.ToString().Trim(','));
  71. strSql.Append(") ");
  72. strSql.Append(";select @@IDENTITY;");
  73. object obj = DbHelperSQL.GetSingle(conn, trans, strSql.ToString(), paras.ToArray());//带事务
  74. model.id = Convert.ToInt32(obj);
  75. #endregion
  76. #region 订单商品列表======================
  77. if (model.order_goods != null)
  78. {
  79. StringBuilder strSql2; //SQL字符串
  80. StringBuilder strSql3;
  81. StringBuilder strSql4;
  82. StringBuilder str21; //数据库字段
  83. StringBuilder str22; //声明参数
  84. foreach (Model.order_goods modelt in model.order_goods)
  85. {
  86. strSql2 = new StringBuilder();
  87. str21 = new StringBuilder();
  88. str22 = new StringBuilder();
  89. PropertyInfo[] pros2 = modelt.GetType().GetProperties();
  90. List<SqlParameter> paras2 = new List<SqlParameter>();
  91. strSql2.Append("insert into " + databaseprefix + "order_goods(");
  92. foreach (PropertyInfo pi in pros2)
  93. {
  94. if (!pi.Name.Equals("id"))
  95. {
  96. if (pi.GetValue(modelt, null) != null)
  97. {
  98. str21.Append(pi.Name + ",");
  99. str22.Append("@" + pi.Name + ",");
  100. if (pi.Name.Equals("order_id"))
  101. {
  102. paras2.Add(new SqlParameter("@" + pi.Name, model.id));//将刚插入的父ID赋值
  103. }
  104. else
  105. {
  106. paras2.Add(new SqlParameter("@" + pi.Name, pi.GetValue(modelt, null)));
  107. }
  108. }
  109. }
  110. }
  111. strSql2.Append(str21.ToString().Trim(','));
  112. strSql2.Append(") values (");
  113. strSql2.Append(str22.ToString().Trim(','));
  114. strSql2.Append(") ");
  115. DbHelperSQL.ExecuteSql(conn, trans, strSql2.ToString(), paras2.ToArray());
  116. ////扣减商品库存
  117. //string channelName = new DAL.site_channel(databaseprefix).GetChannelName(modelt.channel_id);//查询频道的名称
  118. //strSql4 = new StringBuilder();
  119. //strSql4.Append("update " + databaseprefix + DTKeys.TABLE_CHANNEL_ARTICLE + channelName + " set ");
  120. //strSql4.Append("stock_quantity=stock_quantity-@stock_quantity where id=@article_id");
  121. //SqlParameter[] parameters4 = {
  122. // new SqlParameter("@stock_quantity", SqlDbType.Int,4),
  123. // new SqlParameter("@article_id", SqlDbType.Int,4)};
  124. //parameters4[0].Value = modelt.quantity;
  125. //parameters4[1].Value = modelt.article_id;
  126. //DbHelperSQL.ExecuteSql(conn, trans, strSql4.ToString(), parameters4);
  127. }
  128. }
  129. #endregion
  130. trans.Commit(); //提交事务
  131. }
  132. catch
  133. {
  134. trans.Rollback(); //回滚事务
  135. return 0;
  136. }
  137. }
  138. }
  139. return model.id;
  140. }
  141. /// <summary>
  142. /// 更新一条数据
  143. /// </summary>
  144. public bool Update(Model.orders model)
  145. {
  146. StringBuilder strSql = new StringBuilder();
  147. StringBuilder str1 = new StringBuilder();
  148. //利用反射获得属性的所有公共属性
  149. PropertyInfo[] pros = model.GetType().GetProperties();
  150. List<SqlParameter> paras = new List<SqlParameter>();
  151. strSql.Append("update " + databaseprefix + "orders set ");
  152. foreach (PropertyInfo pi in pros)
  153. {
  154. //如果不是主键则追加sql字符串
  155. if (!pi.Name.Equals("id") && !typeof(System.Collections.IList).IsAssignableFrom(pi.PropertyType))
  156. {
  157. //判断属性值是否为空
  158. if (pi.GetValue(model, null) != null)
  159. {
  160. str1.Append(pi.Name + "=@" + pi.Name + ",");//声明参数
  161. paras.Add(new SqlParameter("@" + pi.Name, pi.GetValue(model, null)));//对参数赋值
  162. }
  163. }
  164. }
  165. strSql.Append(str1.ToString().Trim(','));
  166. strSql.Append(" where id=@id");
  167. paras.Add(new SqlParameter("@id", model.id));
  168. return DbHelperSQL.ExecuteSql(strSql.ToString(), paras.ToArray()) > 0;
  169. }
  170. /// <summary>
  171. /// 删除一条数据
  172. /// </summary>
  173. public bool Delete(int id)
  174. {
  175. //删除订单商品
  176. List<CommandInfo> sqllist = new List<CommandInfo>();
  177. StringBuilder strSql2 = new StringBuilder();
  178. strSql2.Append("delete from " + databaseprefix + "order_goods where order_id=@order_id");
  179. SqlParameter[] parameters2 = {
  180. new SqlParameter("@order_id", SqlDbType.Int,4)};
  181. parameters2[0].Value = id;
  182. CommandInfo cmd = new CommandInfo(strSql2.ToString(), parameters2);
  183. sqllist.Add(cmd);
  184. //删除订单主表
  185. StringBuilder strSql = new StringBuilder();
  186. strSql.Append("delete from " + databaseprefix + "orders where id=@id");
  187. SqlParameter[] parameters = {
  188. new SqlParameter("@id", SqlDbType.Int,4)};
  189. parameters[0].Value = id;
  190. cmd = new CommandInfo(strSql.ToString(), parameters);
  191. sqllist.Add(cmd);
  192. return DbHelperSQL.ExecuteSqlTran(sqllist) > 0;
  193. }
  194. /// <summary>
  195. /// 得到一个对象实体
  196. /// </summary>
  197. public Model.orders GetModel(int id)
  198. {
  199. StringBuilder strSql = new StringBuilder();
  200. StringBuilder str1 = new StringBuilder();
  201. Model.orders model = new Model.orders();
  202. //利用反射获得属性的所有公共属性
  203. PropertyInfo[] pros = model.GetType().GetProperties();
  204. foreach (PropertyInfo p in pros)
  205. {
  206. //拼接字段,忽略List<T>
  207. if (!typeof(System.Collections.IList).IsAssignableFrom(p.PropertyType))
  208. {
  209. str1.Append(p.Name + ",");//拼接字段
  210. }
  211. }
  212. strSql.Append("select top 1 " + str1.ToString().Trim(','));
  213. strSql.Append(" from " + databaseprefix + "orders");
  214. strSql.Append(" where id=@id");
  215. SqlParameter[] parameters = {
  216. new SqlParameter("@id", SqlDbType.Int,4)};
  217. parameters[0].Value = id;
  218. DataTable dt = DbHelperSQL.Query(strSql.ToString(), parameters).Tables[0];
  219. if (dt.Rows.Count > 0)
  220. {
  221. return DataRowToModel(dt.Rows[0]);
  222. }
  223. else
  224. {
  225. return null;
  226. }
  227. }
  228. /// <summary>
  229. /// 获得前几行数据
  230. /// </summary>
  231. public DataSet GetList(int Top, string strWhere, string filedOrder)
  232. {
  233. StringBuilder strSql = new StringBuilder();
  234. strSql.Append("select ");
  235. if (Top > 0)
  236. {
  237. strSql.Append(" top " + Top.ToString());
  238. }
  239. strSql.Append(" * ");
  240. strSql.Append(" FROM " + databaseprefix + "orders ");
  241. if (strWhere.Trim() != "")
  242. {
  243. strSql.Append(" where " + strWhere);
  244. }
  245. strSql.Append(" order by " + filedOrder);
  246. return DbHelperSQL.Query(strSql.ToString());
  247. }
  248. ///// <summary>
  249. ///// 获得查询分页数据
  250. ///// </summary>
  251. //public DataSet GetList(int pageSize, int pageIndex, string strWhere, string filedOrder, out int recordCount)
  252. //{
  253. // StringBuilder strSql = new StringBuilder();
  254. // strSql.Append("select * FROM " + databaseprefix + "orders");
  255. // if (strWhere.Trim() != "")
  256. // {
  257. // strSql.Append(" where " + strWhere);
  258. // }
  259. // recordCount = Convert.ToInt32(DbHelperSQL.GetSingle(PagingHelper.CreateCountingSql(strSql.ToString())));
  260. // return DbHelperSQL.Query(PagingHelper.CreatePagingSql(recordCount, pageSize, pageIndex, strSql.ToString(), filedOrder));
  261. //}
  262. #endregion
  263. #region 扩展方法================================
  264. /// <summary>
  265. /// 是否存在该记录
  266. /// </summary>
  267. public bool Exists(string order_no)
  268. {
  269. StringBuilder strSql = new StringBuilder();
  270. strSql.Append("select count(1) from " + databaseprefix + "orders");
  271. strSql.Append(" where order_no=@order_no");
  272. SqlParameter[] parameters = {
  273. new SqlParameter("@order_no", SqlDbType.NVarChar,100)};
  274. parameters[0].Value = order_no;
  275. return DbHelperSQL.Exists(strSql.ToString(), parameters);
  276. }
  277. /// <summary>
  278. /// 根据订单号返回一个实体
  279. /// </summary>
  280. public Model.orders GetModel(string order_no)
  281. {
  282. StringBuilder strSql = new StringBuilder();
  283. StringBuilder str1 = new StringBuilder();
  284. Model.orders model = new Model.orders();
  285. //利用反射获得属性的所有公共属性
  286. PropertyInfo[] pros = model.GetType().GetProperties();
  287. foreach (PropertyInfo p in pros)
  288. {
  289. //拼接字段,忽略List<T>
  290. if (!typeof(System.Collections.IList).IsAssignableFrom(p.PropertyType))
  291. {
  292. str1.Append(p.Name + ",");//拼接字段
  293. }
  294. }
  295. strSql.Append("select top 1 " + str1.ToString().Trim(',') + " from " + databaseprefix + "orders");
  296. strSql.Append(" where order_no=@order_no");
  297. SqlParameter[] parameters = {
  298. new SqlParameter("@order_no", SqlDbType.NVarChar,100)};
  299. parameters[0].Value = order_no;
  300. DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters);
  301. if (ds.Tables[0].Rows.Count > 0)
  302. {
  303. return DataRowToModel(ds.Tables[0].Rows[0]);
  304. }
  305. else
  306. {
  307. return null;
  308. }
  309. }
  310. /// <summary>
  311. /// 根据订单号获取支付方式ID
  312. /// </summary>
  313. public int GetPaymentId(string order_no)
  314. {
  315. StringBuilder strSql = new StringBuilder();
  316. strSql.Append("select top 1 payment_id from " + databaseprefix + "orders");
  317. strSql.Append(" where order_no=@order_no");
  318. SqlParameter[] parameters = {
  319. new SqlParameter("@order_no", SqlDbType.NVarChar,100)};
  320. parameters[0].Value = order_no;
  321. object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);
  322. if (obj != null)
  323. {
  324. return Convert.ToInt32(obj);
  325. }
  326. return 0;
  327. }
  328. /// <summary>
  329. /// 返回数据总数
  330. /// </summary>
  331. public int GetCount(string strWhere)
  332. {
  333. StringBuilder strSql = new StringBuilder();
  334. strSql.Append("select count(*) as H from " + databaseprefix + "orders ");
  335. if (strWhere.Trim() != "")
  336. {
  337. strSql.Append(" where " + strWhere);
  338. }
  339. return Convert.ToInt32(DbHelperSQL.GetSingle(strSql.ToString()));
  340. }
  341. /// <summary>
  342. /// 修改一列数据
  343. /// </summary>
  344. public bool UpdateField(int id, string strValue)
  345. {
  346. StringBuilder strSql = new StringBuilder();
  347. strSql.Append("update " + databaseprefix + "orders set " + strValue);
  348. strSql.Append(" where id=" + id);
  349. return DbHelperSQL.ExecuteSql(strSql.ToString()) > 0;
  350. }
  351. /// <summary>
  352. /// 修改一列数据
  353. /// </summary>
  354. public bool UpdateField(string order_no, string strValue)
  355. {
  356. StringBuilder strSql = new StringBuilder();
  357. strSql.Append("update " + databaseprefix + "orders set " + strValue);
  358. strSql.Append(" where order_no='" + order_no + "'");
  359. return DbHelperSQL.ExecuteSql(strSql.ToString()) > 0;
  360. }
  361. /// <summary>
  362. /// 将对象转换实体
  363. /// </summary>
  364. public Model.orders DataRowToModel(DataRow row)
  365. {
  366. Model.orders model = new Model.orders();
  367. if (row != null)
  368. {
  369. #region 主表信息======================
  370. //利用反射获得属性的所有公共属性
  371. Type modelType = model.GetType();
  372. for (int i = 0; i < row.Table.Columns.Count; i++)
  373. {
  374. //查找实体是否存在列表相同的公共属性
  375. PropertyInfo proInfo = modelType.GetProperty(row.Table.Columns[i].ColumnName);
  376. if (proInfo != null && row[i] != DBNull.Value)
  377. {
  378. proInfo.SetValue(model, row[i], null);//用索引值设置属性值
  379. }
  380. }
  381. #endregion
  382. #region 子表信息======================
  383. StringBuilder strSql1 = new StringBuilder();
  384. strSql1.Append("select * from " + databaseprefix + "order_goods");
  385. strSql1.Append(" where order_id=@id");
  386. SqlParameter[] parameters1 = {
  387. new SqlParameter("@id", SqlDbType.Int,4)};
  388. parameters1[0].Value = model.id;
  389. DataTable dt1 = DbHelperSQL.Query(strSql1.ToString(), parameters1).Tables[0];
  390. if (dt1.Rows.Count > 0)
  391. {
  392. int rowsCount = dt1.Rows.Count;
  393. List<Model.order_goods> models = new List<Model.order_goods>();
  394. Model.order_goods modelt;
  395. for (int n = 0; n < rowsCount; n++)
  396. {
  397. modelt = new Model.order_goods();
  398. Type modeltType = modelt.GetType();
  399. for (int i = 0; i < dt1.Rows[n].Table.Columns.Count; i++)
  400. {
  401. PropertyInfo proInfo = modeltType.GetProperty(dt1.Rows[n].Table.Columns[i].ColumnName);
  402. if (proInfo != null && dt1.Rows[n][i] != DBNull.Value)
  403. {
  404. proInfo.SetValue(modelt, dt1.Rows[n][i], null);
  405. }
  406. }
  407. models.Add(modelt);
  408. }
  409. model.order_goods = models;
  410. }
  411. #endregion
  412. }
  413. return model;
  414. }
  415. #endregion
  416. }
  417. }