NewsService.cs 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. using System;
  2. using System.Linq;
  3. using System.Linq.Expressions;
  4. using System.Collections.Generic;
  5. using System.Threading.Tasks;
  6. using System.Data.Common;
  7. using System.Text;
  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.Entity.OrganizationManage;
  14. using YiSha.Model.Param.OrganizationManage;
  15. using YiSha.Enum;
  16. namespace YiSha.Service.OrganizationManage
  17. {
  18. public partial class NewsService
  19. {
  20. private IRepositoryFactory _baseRepository;
  21. public NewsService(IRepositoryFactory baseRepository)
  22. {
  23. _baseRepository = baseRepository;
  24. }
  25. #region 获取数据
  26. public async Task<List<NewsEntity>> GetListPartial(NewsListParam param)
  27. {
  28. var strSql = new StringBuilder();
  29. List<DbParameter> filter = ListFilterPartial(param, strSql);
  30. var list = await _baseRepository.BaseRepository(dbConnectType).FindList<NewsEntity>(strSql.ToString(), filter.ToArray());
  31. return list.ToList();
  32. }
  33. public async Task<List<NewsEntity>> GetPageListPartial(NewsListParam param, Pagination pagination)
  34. {
  35. var strSql = new StringBuilder();
  36. List<DbParameter> filter = ListFilterPartial(param, strSql);
  37. var list = await _baseRepository.BaseRepository(dbConnectType).FindList<NewsEntity>(strSql.ToString(), filter.ToArray(), pagination);
  38. return list.ToList();
  39. }
  40. public async Task<List<NewsEntity>> GetPageContentListPartial(NewsListParam param, Pagination pagination)
  41. {
  42. var strSql = new StringBuilder();
  43. List<DbParameter> filter = ListFilterPartial(param, strSql, true);
  44. var list = await _baseRepository.BaseRepository(dbConnectType).FindList<NewsEntity>(strSql.ToString(), filter.ToArray(), pagination);
  45. return list.ToList();
  46. }
  47. public async Task<NewsEntity> GetEntityPartial(int id)
  48. {
  49. return await _baseRepository.BaseRepository(dbConnectType).FindEntity<NewsEntity>(id);
  50. }
  51. public async Task<int> GetMaxSortPartial()
  52. {
  53. object result = await _baseRepository.BaseRepository(dbConnectType).FindObject("SELECT MAX(NewsSort) FROM SysNews");
  54. int sort = result.ParseToInt();
  55. sort++;
  56. return sort;
  57. }
  58. #endregion
  59. #region 提交数据
  60. public async Task SaveFormPartial(NewsEntity entity)
  61. {
  62. if (entity.Id.IsNullOrZero())
  63. {
  64. await entity.Create();
  65. await _baseRepository.BaseRepository(dbConnectType).Insert<NewsEntity>(entity);
  66. }
  67. else
  68. {
  69. await entity.Modify();
  70. await _baseRepository.BaseRepository(dbConnectType).Update<NewsEntity>(entity);
  71. }
  72. }
  73. #endregion
  74. #region 私有方法
  75. private List<DbParameter> ListFilterPartial(NewsListParam param, StringBuilder strSql, bool bNewsContent = false)
  76. {
  77. strSql.Append(@"SELECT a.Id,
  78. a.BaseModifyTime,
  79. a.BaseModifierId,
  80. a.NewsTitle,
  81. a.ThumbImage,
  82. a.NewsTag,
  83. a.NewsAuthor,
  84. a.NewsSort,
  85. a.NewsDate,
  86. a.NewsType,
  87. a.ProvinceId,
  88. a.CityId,
  89. a.CountyId,
  90. a.ViewTimes");
  91. if (bNewsContent)
  92. {
  93. strSql.Append(",a.NewsContent");
  94. }
  95. strSql.Append(@" FROM SysNews a WHERE 1 = 1 and a.BaseIsDelete = @BaseIsDelete ");
  96. var parameter = new List<DbParameter>();
  97. parameter.Add(DbParameterExtension.CreateDbParameter("@BaseIsDelete", (int)IsDeleteEnum.No, dbConnectType));
  98. if (param != null)
  99. {
  100. if (!string.IsNullOrEmpty(param.NewsTitle))
  101. {
  102. strSql.Append(" AND a.NewsTitle like @NewsTitle");
  103. parameter.Add(DbParameterExtension.CreateDbParameter("@NewsTitle", '%' + param.NewsTitle + '%', dbConnectType));
  104. }
  105. if (param.NewsType > 0)
  106. {
  107. strSql.Append(" AND a.NewsType = @NewsType");
  108. parameter.Add(DbParameterExtension.CreateDbParameter("@NewsType", param.NewsType, dbConnectType));
  109. }
  110. if (!string.IsNullOrEmpty(param.NewsTag))
  111. {
  112. strSql.Append(" AND a.NewsTag like @NewsTag");
  113. parameter.Add(DbParameterExtension.CreateDbParameter("@NewsTag", '%' + param.NewsTag + '%', dbConnectType));
  114. }
  115. if (!param.ProvinceId.IsNullOrZero())
  116. {
  117. strSql.Append(" AND a.ProvinceId = @ProvinceId");
  118. parameter.Add(DbParameterExtension.CreateDbParameter("@ProvinceId", param.ProvinceId, dbConnectType));
  119. }
  120. if (!param.CityId.IsNullOrZero())
  121. {
  122. strSql.Append(" AND a.CityId = @CityId");
  123. parameter.Add(DbParameterExtension.CreateDbParameter("@CityId", param.CityId, dbConnectType));
  124. }
  125. if (!param.CountyId.IsNullOrZero())
  126. {
  127. strSql.Append(" AND a.CountyId = @CountyId");
  128. parameter.Add(DbParameterExtension.CreateDbParameter("@CountyId", param.CountyId, dbConnectType));
  129. }
  130. }
  131. return parameter;
  132. }
  133. /// <summary>
  134. /// 列表条件过滤
  135. /// 建议该方法放在Partial部分类中,因为代码生成时当前类会被覆盖(该方法在生成时将会被注释)
  136. /// </summary>
  137. /// <param name="param"></param>
  138. /// <returns></returns>
  139. private Expression<Func<NewsEntity, bool>> ListFilterPartial(NewsListParam param)
  140. {
  141. var expression = LinqExtensions.True<NewsEntity>();
  142. expression = expression.And(t => t.BaseIsDelete == (int)IsDeleteEnum.No);
  143. if (param != null)
  144. {
  145. }
  146. return expression;
  147. }
  148. #endregion
  149. }
  150. }