AccessRecordService.cs 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  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.ZX;
  16. using YiSha.Model.Param.ZX;
  17. using YiSha.IService.ZX;
  18. using YiSha.Model.Result.ZX;
  19. using static NPOI.HSSF.Util.HSSFColor;
  20. namespace YiSha.Service.ZX
  21. {
  22. /// <summary>
  23. /// 创 建:cmzx
  24. /// 日 期:2023-10-23 15:05
  25. /// 描 述:新闻统计服务实现类
  26. /// </summary>
  27. public partial class AccessRecordService : IAccessRecordService
  28. {
  29. private DBConnectTypeEnum dbConnectType = DBConnectTypeEnum.ZxDB;
  30. #region 获取数据
  31. /// <summary>
  32. /// 获取列表数据
  33. /// </summary>
  34. /// <param name="param">请求参数</param>
  35. /// <returns></returns>
  36. public async Task<List<AccessRecordEntity>> GetList(AccessRecordListParam param)
  37. {
  38. var expression = ListFilterPartial(param);
  39. var list = await _baseRepository.BaseRepository(dbConnectType).FindList(expression);
  40. return list.ToList();
  41. }
  42. /// <summary>
  43. /// 获取分页数据
  44. /// </summary>
  45. /// <param name="param">请求参数</param>
  46. /// <param name="pagination">分页条件</param>
  47. /// <returns></returns>
  48. public async Task<List<AccessRecordEntity>> GetPageList(AccessRecordListParam param, Pagination pagination)
  49. {
  50. var expression = ListFilterPartial(param);
  51. var list = await _baseRepository.BaseRepository(dbConnectType).FindList(expression, pagination);
  52. return list.ToList();
  53. }
  54. /// <summary>
  55. /// 获取指定列数据
  56. /// </summary>
  57. /// <param name="column">表字段列</param>
  58. /// <param name="where">条件</param>
  59. /// <param name="parameters">条件参数</param>
  60. /// <param name="sort">排序列</param>
  61. /// <param name="sortType">排序类型</param>
  62. /// <returns></returns>
  63. public async Task<List<AccessRecordEntity>> GetListColumn(string column, string where, List<DbParameter> parameters, string groupBy = "", string sort = "basecreatetime", string sortType = "desc")
  64. {
  65. if (string.IsNullOrEmpty(column) || string.IsNullOrEmpty(where))
  66. return new List<AccessRecordEntity>();
  67. if (!string.IsNullOrEmpty(groupBy))
  68. groupBy = $" group by {groupBy} ";
  69. string tableName = typeof(AccessRecordEntity).GetAttributeValue((TableAttribute ta) => ta.Name);
  70. string selectSql = $"select {column} from {tableName} where 1 = 1 and {where} {groupBy} order by {sort} {sortType}";
  71. var result = await _baseRepository.BaseRepository(dbConnectType).FindList<AccessRecordEntity>(selectSql, DbParameterExtension.ToDbParameter(parameters.ToArray()));
  72. return result.ToList();
  73. }
  74. /// <summary>
  75. /// 根据主键Id获取数据
  76. /// </summary>
  77. /// <param name="id">主键id</param>
  78. /// <returns></returns>
  79. public async Task<AccessRecordEntity> GetEntity(int id)
  80. {
  81. return await _baseRepository.BaseRepository(dbConnectType).FindEntity<AccessRecordEntity>(id);
  82. }
  83. /// <summary>
  84. /// 获取新闻浏览记录统计
  85. /// </summary>
  86. /// <returns></returns>
  87. public async Task<EChartModel> GetRecords(int timeType)
  88. {
  89. string whereStr = $"datediff(dd,ar.createTime,GETDATE())=0";
  90. switch (timeType)
  91. {
  92. case 2:
  93. //近七天
  94. whereStr = $"datediff(dd,ar.createTime,GETDATE())<=7";
  95. break;
  96. case 3:
  97. //近三十天
  98. whereStr = $"datediff(dd,ar.createTime,GETDATE())<=30";
  99. break;
  100. }
  101. string sql = @$"select * from (
  102. select mmm.menuName,COUNT(*) as reccount from AccessRecords as ar
  103. join newManagerModels as nmm on ar.newsId=nmm.ID
  104. join menuManagerModels as mmm on nmm.menuId=mmm.ID
  105. where {whereStr}
  106. group by mmm.menuName) T
  107. order by T.reccount desc";
  108. var result = await _baseRepository.BaseRepository(dbConnectType).FindList<NewsRecordsModel>(sql);
  109. EChartModel eChartModel = new EChartModel();
  110. eChartModel.Names = result.Select(x => x.menuName).ToList();
  111. eChartModel.RecCount = result.Select(x => x.reccount).ToList();
  112. //for (int i = 0; i < eChartModel.Names.Count; i++)
  113. //{
  114. // if (eChartModel.Names[i].Length > 3)
  115. // {
  116. // eChartModel.Names[i] = eChartModel.Names[i].Substring(0, 3) + "..";
  117. // }
  118. //}
  119. return eChartModel;
  120. }
  121. #endregion
  122. #region 提交数据
  123. /// <summary>
  124. /// 保存数据
  125. /// </summary>
  126. /// <param name="entity">实体参数</param>
  127. /// <returns></returns>
  128. public async Task SaveForm(AccessRecordEntity entity)
  129. {
  130. if (entity.Id.IsNullOrZero())
  131. {
  132. entity.Create();
  133. await _baseRepository.BaseRepository(dbConnectType).Insert(entity);
  134. }
  135. else
  136. {
  137. await _baseRepository.BaseRepository(dbConnectType).Update(entity);
  138. }
  139. }
  140. /// <summary>
  141. /// 保存多条数据
  142. /// </summary>
  143. /// <param name="list">数据列表</param>
  144. /// <returns></returns>
  145. public async Task<int> InsertMany(List<AccessRecordEntity> list)
  146. {
  147. return await _baseRepository.BaseRepository(dbConnectType).Insert(list);
  148. }
  149. /// <summary>
  150. /// 根据主键Id删除数据
  151. /// </summary>
  152. /// <param name="ids">主键Id</param>
  153. /// <param name="del">是否真删除 true真删除 false软删除 默认false</param>
  154. /// <returns></returns>
  155. public async Task<int> DeleteFormById(string ids, bool del = false)
  156. {
  157. if (string.IsNullOrWhiteSpace(ids) || !ids.Split(", ").Any())
  158. {
  159. return await Task.FromResult(-1);
  160. }
  161. ids = $"{string.Join(",", ids.Split(","))}";
  162. string tableName = typeof(AccessRecordEntity).GetAttributeValue((TableAttribute ta) => ta.Name);
  163. List<DbParameter> parameters = new List<DbParameter>();
  164. string deleteSql = $"delete from {tableName} where id in ({ids})";
  165. return await _baseRepository.BaseRepository(dbConnectType).ExecuteBySql(deleteSql, DbParameterExtension.ToDbParameter(parameters.ToArray()));
  166. }
  167. /// <summary>
  168. /// 根据条件删除数据
  169. /// </summary>
  170. /// <param name="where">where条件</param>
  171. /// <param name="parameters">参数</param>
  172. /// <param name="del">是否真删除 true真删除 false软删除 默认false</param>
  173. /// <returns></returns>
  174. public async Task<int> DeleteFormByWhere(string where, List<DbParameter> parameters, bool del = false)
  175. {
  176. if (string.IsNullOrWhiteSpace(where))
  177. {
  178. return await Task.FromResult(-1);
  179. }
  180. string tableName = typeof(AccessRecordEntity).GetAttributeValue((TableAttribute ta) => ta.Name);
  181. string deleteSql = $"delete from {tableName} where {where}";
  182. return await _baseRepository.BaseRepository(dbConnectType).ExecuteBySql(deleteSql, DbParameterExtension.ToDbParameter(parameters.ToArray()));
  183. }
  184. /// <summary>
  185. /// 修改多条数据
  186. /// </summary>
  187. /// <param name="list">数据列表</param>
  188. /// <returns></returns>
  189. public async Task<int> UpdateMany(List<AccessRecordEntity> list)
  190. {
  191. return await _baseRepository.BaseRepository(dbConnectType).Update(list);
  192. }
  193. /// <summary>
  194. /// 根据条件修改数据
  195. /// </summary>
  196. /// <param name="setField">修改字段</param>
  197. /// <param name="where">where条件</param>
  198. /// <param name="parameters">参数</param>
  199. /// <returns></returns>
  200. public async Task<int> UpdateFormByWhere(string setField, string where, List<DbParameter> parameters)
  201. {
  202. if (string.IsNullOrWhiteSpace(setField) || string.IsNullOrWhiteSpace(where))
  203. {
  204. return await Task.FromResult(-1);
  205. }
  206. string tableName = typeof(AccessRecordEntity).GetAttributeValue((TableAttribute ta) => ta.Name);
  207. string updateSql = $"update {tableName} set {setField} where {where}";
  208. return await _baseRepository.BaseRepository(dbConnectType).ExecuteBySql(updateSql, DbParameterExtension.ToDbParameter(parameters.ToArray()));
  209. }
  210. #endregion
  211. #region 私有方法
  212. ///// <summary>
  213. ///// 列表条件过滤
  214. ///// 建议该方法放在Partial部分类中,因为代码生成时当前类会被覆盖(该方法在生成时将会被注释)
  215. ///// </summary>
  216. ///// <param name="param"></param>
  217. ///// <returns></returns>
  218. //private Expression<Func<AccessRecordEntity, bool>> ListFilter(AccessRecordListParam param)
  219. //{
  220. // var expression = LinqExtensions.True<AccessRecordEntity>();
  221. // expression = expression.And(t => t.BaseIsDelete == (int)IsDeleteEnum.No);
  222. // if (param != null)
  223. // {
  224. // }
  225. // return expression;
  226. //}
  227. #endregion
  228. }
  229. }