NewManagerModelService.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data.Common;
  4. using System.Linq;
  5. using System.Linq.Expressions;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using YiSha.Data;
  9. using YiSha.Data.Repository;
  10. using YiSha.Entity.ZX;
  11. using YiSha.Entity.ZxOrTkMenuManagerModels;
  12. using YiSha.Enum;
  13. using YiSha.Enum.ZX;
  14. using YiSha.IService.ZX;
  15. using YiSha.Model.Param.ZX;
  16. using YiSha.Model.Result.ZX;
  17. using YiSha.Util;
  18. using YiSha.Util.Extension;
  19. using YiSha.Util.Model;
  20. using YiSha.Web.Code;
  21. namespace YiSha.Service.ZX
  22. {
  23. /// <summary>
  24. /// 创 建:cmzx
  25. /// 日 期:2021-04-16 15:00
  26. /// 描 述:资讯文章服务实现类(部分类)
  27. /// </summary>
  28. public partial class NewManagerModelService
  29. {
  30. private IRepositoryFactory _baseRepository;
  31. private IMenuManagerModelsService _managerModelsService;
  32. public NewManagerModelService(IRepositoryFactory baseRepository, IMenuManagerModelsService managerModelsService)
  33. {
  34. _baseRepository = baseRepository;
  35. _managerModelsService = managerModelsService;
  36. }
  37. /// <summary>
  38. /// 获取分页数据
  39. /// </summary>
  40. /// <param name="param">请求参数</param>
  41. /// <param name="pagination">分页条件</param>
  42. /// <returns></returns>
  43. public async Task<List<NewManagerModelPageJoinModel>> GetPageListPartial(NewManagerModelListParam param, Pagination pagination)
  44. {
  45. var parameters = new List<DbParameter>();
  46. var sql = SqlPageList(param, pagination, out parameters);
  47. var list = await _baseRepository.BaseRepository(dbConnectType).FindList<NewManagerModelPageJoinModel>(sql, parameters.ToArray());
  48. return list.ToList();
  49. }
  50. /// <summary>
  51. /// 获取分页数据
  52. /// </summary>
  53. /// <param name="param">请求参数</param>
  54. /// <param name="pagination">分页条件</param>
  55. /// <returns></returns>
  56. public async Task<List<NewContentPublishNumberPageJoinModel>> GetPublishNumberPageListJson(NewContentPublishNumberListParam param, Pagination pagination)
  57. {
  58. var parameters = new List<DbParameter>();
  59. var sql = SqlPublishNumberPageList(param, pagination, out parameters);
  60. var list = await _baseRepository.BaseRepository(dbConnectType).FindList<NewContentPublishNumberPageJoinModel>(sql, parameters.ToArray());
  61. return list.ToList();
  62. }
  63. /// <summary>
  64. /// 保存数据(由于之前数据库设计不规范,无法实现在新增、修改时保存正确的操作用户信息,每张表的创建时间和创建人id、创建人姓名都不一样,且这些字段是必填项)
  65. /// </summary>
  66. /// <param name="entity">实体参数</param>
  67. /// <returns></returns>
  68. public async Task<int> SaveFormPartial(NewManagerModelEntity entity)
  69. {
  70. OperatorInfo user = await Operator.Instance.Current(entity.Token);
  71. if (entity.Id.IsNullOrZero())
  72. {
  73. entity.createTime = DateTime.Now;
  74. entity.createUserId = user?.UserId;
  75. //entity.createUserName = user?.UserName;
  76. var zxId = await _baseRepository.BaseRepository(dbConnectType).Insert(entity);
  77. if (zxId > 0 && int.TryParse(entity.menuId?.ToString(), out var menuId))
  78. {
  79. var zxMenu = await _managerModelsService.GetEntity(menuId);
  80. if (int.TryParse(zxMenu?.parentId?.ToString(), out var parentId) && ZxCzTemplateTypeHelper.dict.ContainsKey(parentId))
  81. {
  82. var type = ZxCzTemplateTypeHelper.dict[parentId];
  83. //描述信息
  84. string[] arrtributeText = type.GetEnumText();
  85. entity.IsGenerated = true;
  86. entity.SourceUrl = string.Format("/{0}/{1}.htm", arrtributeText[1] + "/" + zxMenu.Shorthand, entity.Id);
  87. await _baseRepository.BaseRepository(dbConnectType).Update(entity);
  88. }
  89. //await Save7167New(entity, zxMenu.menuName);
  90. }
  91. return zxId;
  92. }
  93. else
  94. {
  95. if (int.TryParse(entity.menuId?.ToString(), out var menuId))
  96. {
  97. var zxMenu = await _managerModelsService.GetEntity(menuId);
  98. if (int.TryParse(zxMenu?.parentId?.ToString(), out var parentId) && ZxCzTemplateTypeHelper.dict.ContainsKey(parentId))
  99. {
  100. var type = ZxCzTemplateTypeHelper.dict[parentId];
  101. //描述信息
  102. string[] arrtributeText = type.GetEnumText();
  103. entity.IsGenerated = true;
  104. entity.SourceUrl = string.Format("/{0}/{1}.htm", arrtributeText[1] + "/" + zxMenu.Shorthand, entity.Id);
  105. }
  106. }
  107. return await _baseRepository.BaseRepository(dbConnectType).Update(entity);
  108. }
  109. }
  110. public async Task Save7167New(NewManagerModelEntity newModel,string menuName)
  111. {
  112. try
  113. {
  114. newModel.Id = 0;
  115. //获取菜单信息
  116. var menuid = await _baseRepository.BaseRepository(DBConnectTypeEnum.Zx7167DB).FindEntity<MenuManagerModelsCommonEntity>(x => x.menuName == menuName);
  117. newModel.menuId = menuid?.Id;
  118. newModel.labelId = 0;
  119. newModel.sortNo = 0;
  120. newModel.descriptionElement = newModel.descriptionElement.Replace("彩吧资讯", "快乐彩").Replace("http://zx.55128.cn", "http://zx.7167.com");
  121. var zxId = await _baseRepository.BaseRepository(DBConnectTypeEnum.Zx7167DB).Insert(newModel);
  122. if (zxId > 0 && int.TryParse(newModel.menuId?.ToString(), out var menuId))
  123. {
  124. //var zxMenu = await _managerModelsService.GetEntity(menuId);
  125. if (int.TryParse(menuid?.parentId?.ToString(), out var parentId) && ZxCzTemplateTypeHelper.dict.ContainsKey(parentId))
  126. {
  127. var type = ZxCzTemplateTypeHelper.dict[parentId];
  128. //描述信息
  129. string[] arrtributeText = type.GetEnumText();
  130. newModel.IsGenerated = true;
  131. newModel.SourceUrl = string.Format("/{0}/{1}.htm", arrtributeText[1] + "/" + menuid.Shorthand, newModel.Id);
  132. await _baseRepository.BaseRepository(DBConnectTypeEnum.Zx7167DB).Update(newModel);
  133. }
  134. }
  135. }
  136. catch (Exception ex)
  137. {
  138. throw;
  139. }
  140. }
  141. #region 私有方法
  142. /// <summary>
  143. /// 列表条件过滤
  144. /// 建议该方法放在Partial部分类中,因为代码生成时当前类会被覆盖(该方法在生成时将会被注释)
  145. /// </summary>
  146. /// <param name="param"></param>
  147. /// <returns></returns>
  148. private Expression<Func<NewManagerModelEntity, bool>> ListFilterPartial(NewManagerModelListParam param)
  149. {
  150. var expression = LinqExtensions.True<NewManagerModelEntity>();
  151. if (param != null)
  152. {
  153. }
  154. return expression;
  155. }
  156. /// <summary>
  157. /// 获取分页Sql语句
  158. /// </summary>
  159. /// <param name="param"></param>
  160. /// <returns></returns>
  161. private string SqlPageList(NewManagerModelListParam param, Pagination pagination, out List<DbParameter> parameters)
  162. {
  163. parameters = new List<DbParameter>();
  164. var where = new StringBuilder();
  165. where.Append(" 1 = 1 ");
  166. if (param != null)
  167. {
  168. if (!string.IsNullOrEmpty(param.Title))
  169. {
  170. where.Append(" and nmm.title like @Title ");
  171. parameters.Add(DbParameterExtension.CreateDbParameter("@Title", $"%{param.Title}%", dbConnectType));
  172. }
  173. if (!string.IsNullOrEmpty(param.Qi))
  174. {
  175. where.Append(" and nmm.periodsNumber like @Qi ");
  176. parameters.Add(DbParameterExtension.CreateDbParameter("@Qi", $"%{param.Qi}%", dbConnectType));
  177. }
  178. if (!string.IsNullOrEmpty(param.CreateUserName))
  179. {
  180. where.Append(" and nmm.createUserName = @CreateUserName ");
  181. parameters.Add(DbParameterExtension.CreateDbParameter("@CreateUserName", param.CreateUserName, dbConnectType));
  182. }
  183. if (param.MenuId != null && param.MenuId > 0)
  184. {
  185. where.Append(" and nmm.menuId = @MenuId ");
  186. parameters.Add(DbParameterExtension.CreateDbParameter("@MenuId", param.MenuId, dbConnectType));
  187. }
  188. var noticeMenuIds = new List<int>() { 108, 110, 111 };
  189. if (param.NoticeOrArticleType == MenuNoticeOrArticleTypeEnum.公告类型)
  190. {
  191. //公告类型只需要menuId为108、110、111的数据
  192. where.Append(" and (nmm.menuId = 108 or nmm.menuId = 110 or nmm.menuId = 111) ");
  193. }
  194. //if (!string.IsNullOrEmpty(param.MenuName))
  195. //{
  196. // where.Append(" and mmm.menuName like @MenuName ");
  197. // parameters.Add(DbParameterExtension.CreateDbParameter("@MenuName", $"%{param.MenuName}%", dbConnectType));
  198. //}
  199. }
  200. //获取分页数据Sql
  201. var pageSql = $@"select nmm.*,mmm.menuName,ls.labelName
  202. from newManagerModels nmm
  203. left join menuManagerModels mmm on nmm.menuId = mmm.id
  204. left join LabelModels ls on nmm.labelId = ls.id
  205. where {where.ToString()}";
  206. //统计总数据Sql
  207. var totalSql = $@"select count(1)
  208. from newManagerModels nmm
  209. left join menuManagerModels mmm on nmm.menuId = mmm.id
  210. left join LabelModels ls on nmm.labelId = ls.id
  211. where {where.ToString()}";
  212. pageSql = SqlserverHelper.GetInstance.SqlPageList(pageSql, totalSql, pagination);
  213. return pageSql;
  214. }
  215. /// <summary>
  216. /// 获取分页Sql语句
  217. /// </summary>
  218. /// <param name="param"></param>
  219. /// <returns></returns>
  220. private string SqlPublishNumberPageList(NewContentPublishNumberListParam param, Pagination pagination, out List<DbParameter> parameters)
  221. {
  222. parameters = new List<DbParameter>();
  223. var where = new StringBuilder();
  224. where.Append(" 1 = 1 ");
  225. if (param != null)
  226. {
  227. if (param.StartTime != null)
  228. {
  229. where.Append(" and nmm.createTime >= @StartTime ");
  230. parameters.Add(DbParameterExtension.CreateDbParameter("@StartTime", param.StartTime, dbConnectType));
  231. }
  232. if (param.EndTime != null)
  233. {
  234. where.Append(" and nmm.createTime <= @EndTime ");
  235. parameters.Add(DbParameterExtension.CreateDbParameter("@EndTime", param.EndTime, dbConnectType));
  236. }
  237. }
  238. //获取分页数据Sql
  239. var pageSql = string.Empty;
  240. //统计总数据Sql
  241. var totalSql = string.Empty;
  242. if (param.Type == PublishStatisticsType.内容发布量)
  243. {
  244. pageSql = $@"select
  245. 0 Id,
  246. nmm.menuId,
  247. mmm.menuName,
  248. nmm.createUserName userName,
  249. count(nmm.ID) publishNumber
  250. from newManagerModels nmm
  251. inner join menuManagerModels mmm on mmm.id = nmm.menuId
  252. where {where.ToString()}
  253. group by nmm.menuId,mmm.menuName,nmm.createUserName";
  254. totalSql = $@"select count(1) from
  255. (
  256. select
  257. count(1) as c
  258. from newManagerModels nmm
  259. inner join menuManagerModels mmm on mmm.id = nmm.menuId
  260. where {where.ToString()}
  261. group by nmm.menuId,mmm.menuName,nmm.createUserName
  262. ) TotalTable";
  263. pagination.Sort = "publishNumber";
  264. }
  265. else
  266. {
  267. pageSql = $@"select
  268. 0 Id,
  269. nmm.menuId,
  270. mmm.menuName,
  271. count(nmm.menuId) publishNumber
  272. from newManagerModels nmm
  273. inner join menuManagerModels mmm on mmm.id = nmm.menuId
  274. where {where.ToString()}
  275. group by nmm.menuId,mmm.menuName";
  276. totalSql = $@"select count(1) from
  277. (
  278. select
  279. count(1) as c
  280. from newManagerModels nmm
  281. inner join menuManagerModels mmm on mmm.id = nmm.menuId
  282. where {where.ToString()}
  283. group by nmm.menuId,mmm.menuName
  284. ) TotalTable";
  285. pagination.Sort = "publishNumber";
  286. }
  287. pageSql = SqlserverHelper.GetInstance.SqlPageList(pageSql, totalSql, pagination);
  288. return pageSql;
  289. }
  290. #endregion
  291. }
  292. }