ZT_ArticleService.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. using System;
  2. using System.Linq;
  3. using System.Text;
  4. using System.Data.Common;
  5. using System.Linq.Expressions;
  6. using System.Collections.Generic;
  7. using System.Threading.Tasks;
  8. using YiSha.Util;
  9. using YiSha.Util.Extension;
  10. using YiSha.Util.Model;
  11. using YiSha.Data;
  12. using YiSha.Data.Repository;
  13. using YiSha.Enum;
  14. using System.ComponentModel.DataAnnotations.Schema;
  15. using YiSha.Entity.KJH;
  16. using YiSha.Model.Param.KJH;
  17. using YiSha.IService.KJH;
  18. using YiSha.Web.Code;
  19. namespace YiSha.Service.KJH
  20. {
  21. /// <summary>
  22. /// 创 建:clg
  23. /// 日 期:2021-06-29 14:40
  24. /// 描 述:专题文章服务实现类(部分类)
  25. /// </summary>
  26. public partial class ZT_ArticleService
  27. {
  28. private IRepositoryFactory _baseRepository;
  29. public ZT_ArticleService(IRepositoryFactory baseRepository)
  30. {
  31. _baseRepository = baseRepository;
  32. }
  33. /// <summary>
  34. /// 保存数据
  35. /// </summary>
  36. /// <param name="entity">实体参数</param>
  37. /// <returns></returns>
  38. public async Task<int> SaveFormPartial(TZ_ArticleParam entity)
  39. {
  40. var columnModel = await _baseRepository.BaseRepository(dbConnectType).FindEntity<ZT_ColumnEntity>(d => d.CId == entity.Cid && d.Name == entity.CName);
  41. if (columnModel == null)
  42. return 0;
  43. if (entity.Id.IsNullOrZero())
  44. {
  45. //开启事务
  46. var db = await _baseRepository.BaseRepository(dbConnectType).BeginTrans();
  47. try
  48. {
  49. var insertZTArticleModel = new ZT_ArticleEntity
  50. {
  51. Addtime = DateTime.Now,
  52. Cid = columnModel.CId,
  53. IsDelete = false,
  54. ShortDetail = entity.ShortDetail,
  55. TagId = columnModel.TagId,
  56. Title = entity.Title,
  57. };
  58. var insertZTArticleId = await _baseRepository.BaseRepository(dbConnectType).Insert(insertZTArticleModel);
  59. var insertZTArticleDetailModel = new ZT_ArticledetailEntity
  60. {
  61. Id = insertZTArticleModel.Id,
  62. Addtime = DateTime.Now,
  63. IsDelete = false,
  64. Detail = entity.Detail,
  65. Title = entity.Title,
  66. EditId = entity.EditId,
  67. Editor = entity.Editor
  68. };
  69. var insertZTArticleDetailId = await _baseRepository.BaseRepository(dbConnectType).Insert(insertZTArticleDetailModel);
  70. if (insertZTArticleId > 0 && insertZTArticleDetailId > 0)
  71. //提交事务
  72. await db.CommitTrans();
  73. else
  74. //事务回滚
  75. await db.RollbackTrans();
  76. return insertZTArticleId;
  77. }
  78. catch
  79. {
  80. //事务回滚
  81. await db.RollbackTrans();
  82. return 0;
  83. }
  84. }
  85. else
  86. {
  87. //开启事务
  88. var db = await _baseRepository.BaseRepository(dbConnectType).BeginTrans();
  89. try
  90. {
  91. var updateZTArticelModel = await _baseRepository.BaseRepository(dbConnectType).FindEntity<ZT_ArticleEntity>(entity.Id);
  92. var updateZTArticelDetailModel = await _baseRepository.BaseRepository(dbConnectType).FindEntity<ZT_ArticledetailEntity>(entity.Id);
  93. if (updateZTArticelModel == null || updateZTArticelDetailModel == null)
  94. return 0;
  95. updateZTArticelModel.Title = entity.Title;
  96. updateZTArticelModel.Cid = columnModel.CId;
  97. updateZTArticelModel.TagId = columnModel.TagId;
  98. updateZTArticelModel.ShortDetail = entity.ShortDetail;
  99. var updateZTArticleId = await _baseRepository.BaseRepository(dbConnectType).Update(updateZTArticelModel);
  100. updateZTArticelDetailModel.Title = entity.Title;
  101. updateZTArticelDetailModel.Detail = entity.Detail;
  102. updateZTArticelDetailModel.EditId = entity.EditId;
  103. updateZTArticelDetailModel.Editor = entity.Editor;
  104. var updateZTArticleDetailId = await _baseRepository.BaseRepository(dbConnectType).Update(updateZTArticelDetailModel);
  105. if (updateZTArticleId > 0 && updateZTArticleDetailId > 0)
  106. //提交事务
  107. await db.CommitTrans();
  108. else
  109. //事务回滚
  110. await db.RollbackTrans();
  111. return updateZTArticleId;
  112. }
  113. catch
  114. {
  115. //事务回滚
  116. await db.RollbackTrans();
  117. return 0;
  118. }
  119. }
  120. }
  121. /// <summary>
  122. /// 根据主键Id删除数据
  123. /// </summary>
  124. /// <param name="ids">主键Id</param>
  125. /// <param name="del">是否真删除 true真删除 false软删除 默认false</param>
  126. /// <returns></returns>
  127. public async Task<int> DeleteFormByIdPartial(string ids, bool del = false)
  128. {
  129. if (string.IsNullOrWhiteSpace(ids) || !ids.Split(", ").Any())
  130. {
  131. return await Task.FromResult(-1);
  132. }
  133. ids = $"{ string.Join(",", ids.Split(","))}";
  134. string ztArticleTableName = typeof(ZT_ArticleEntity).GetAttributeValue((TableAttribute ta) => ta.Name);
  135. string ztArticleDetailTableName = typeof(ZT_ArticledetailEntity).GetAttributeValue((TableAttribute ta) => ta.Name);
  136. List<DbParameter> parameters = new List<DbParameter>();
  137. string deleteZTArticleSql = $"delete from {ztArticleTableName} where id in ({ids})";
  138. string deleteZTArticleDetailSql = $"delete from {ztArticleDetailTableName} where id in ({ids})";
  139. var deleteZTArticle = await _baseRepository.BaseRepository(dbConnectType).ExecuteBySql(deleteZTArticleSql, DbParameterExtension.ToDbParameter(parameters.ToArray()));
  140. var deleteZTArticleDetail = await _baseRepository.BaseRepository(dbConnectType).ExecuteBySql(deleteZTArticleDetailSql, DbParameterExtension.ToDbParameter(parameters.ToArray()));
  141. return deleteZTArticle > 0 && deleteZTArticleDetail > 0 ? 1 : 0;
  142. }
  143. #region 私有方法
  144. /// <summary>
  145. /// 列表条件过滤
  146. /// 建议该方法放在Partial部分类中,因为代码生成时当前类会被覆盖(该方法在生成时将会被注释)
  147. /// </summary>
  148. /// <param name="param"></param>
  149. /// <returns></returns>
  150. private Expression<Func<ZT_ArticleEntity, bool>> ListFilterPartial(ZT_ArticleListParam param)
  151. {
  152. var expression = LinqExtensions.True<ZT_ArticleEntity>();
  153. if (param != null)
  154. {
  155. if (!string.IsNullOrEmpty(param.Title))
  156. expression = expression.And(d => d.Title.Contains(param.Title));
  157. if (param.Cid != null)
  158. expression = expression.And(d => d.Cid == param.Cid);
  159. }
  160. return expression;
  161. }
  162. #endregion
  163. }
  164. }