ZxNewsController.cs 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Diagnostics;
  5. using System.Linq;
  6. using System.Net.Http;
  7. using System.Runtime.Remoting.Messaging;
  8. using System.Threading;
  9. using System.Threading.Tasks;
  10. using System.Web.Http;
  11. using Lottomat.Application.Busines.CommonManage;
  12. using Lottomat.Application.Busines.PublicInfoManage;
  13. using Lottomat.Application.Code;
  14. using Lottomat.Application.Entity.CommonEntity;
  15. using Lottomat.Application.Entity.PublicInfoManage;
  16. using Lottomat.SOA.API.Controllers.Base;
  17. using Lottomat.Util.Extension;
  18. using Lottomat.Application.Cache;
  19. using Lottomat.Util.WebControl;
  20. using Lottomat.Application.Entity.ViewModel.ConsultationMangerModel;
  21. using Lottomat.Application.Entity.InformationManage;
  22. using Lottomat.Application.Busines.SystemManage;
  23. using Lottomat.Application.Entity.SystemManage;
  24. using Lottomat.Application.Entity.SystemManage.ViewModel;
  25. using Lottomat.Util;
  26. namespace Lottomat.SOA.API.Controllers.V1
  27. {
  28. public class ZxNewsController : BaseApiController
  29. {
  30. #region 实例
  31. /// <summary>
  32. /// 新闻bll
  33. /// </summary>
  34. public static readonly NewsBLL newsBll = new NewsBLL();
  35. /// <summary>
  36. /// 字典缓存bll
  37. /// </summary>
  38. private static readonly DataItemCache dataItemCache = new DataItemCache();
  39. private static readonly CommonBLL commonBll = new CommonBLL();
  40. /// <summary>
  41. /// 彩种编码
  42. /// </summary>
  43. //主分类名称
  44. private static readonly string[] types = { "FC3D", "SSQ", "PL3", "QT" };
  45. //主分类下面的预测名称
  46. private static readonly string[] itemValue = { "3DYC", "P3YC", "SSQYC", "DLT" };
  47. /// <summary>
  48. /// 锁
  49. /// </summary>
  50. private static readonly object _lock = new Object();
  51. /// <summary>
  52. /// 获取文章详情
  53. /// </summary>
  54. private static string GetNewsDetailSql = "SELECT [PK],[FullHead],[CreateDate],[CreateUserName],[NewsContent],[PeriodsNumber],[IsRecommend],[IsHot],[PV],[TitleElement],[DescriptionElement],[KeywordElement] FROM [dbo].[Base_News] WHERE [PK] = {0}";
  55. /// <summary>
  56. /// 获取新闻摘要
  57. /// </summary>
  58. private static string GetNewsAbstractSql = "SELECT [PK],[FullHead] FROM [dbo].[Base_News] WHERE [PK] = {0}";
  59. #endregion
  60. #region 查询咨询首页的分类下面最新的5条数据
  61. /// <summary>
  62. /// 查询咨询首页的分类下面最新的5条数据
  63. /// </summary>
  64. /// <returns></returns>
  65. [HttpPost]
  66. public HttpResponseMessage GetHomeNewsList()
  67. {
  68. BaseJson<List<News_Preview>> resultMsg = new BaseJson<List<News_Preview>> { Status = (int)JsonObjectStatus.Error, Message = "服务器未知错误。", Data = null };
  69. Logger(typeof(ZxNewsController), "", "查询咨询首页的分类下面最新的5条数据-GetHomeNewsList", () =>
  70. {
  71. List<News_Preview> res = Cache.Factory.CacheFactory.Cache().GetCache<List<News_Preview>>("HttpResponseMessage_GetHomeNewsList");
  72. if (res == null || res.Count == 0)
  73. {
  74. res = new List<News_Preview>();
  75. var data = dataItemCache.GetDataItemList("FC3D|SSQ|PL3|QT").Where(n => itemValue.Contains(n.ItemValue));
  76. foreach (string code in types)
  77. {
  78. #region 不用
  79. //foreach (string value in itemValue)
  80. //{
  81. // var data = dataItemCache.GetDataItemList(code).Where(n => n.ItemValue.Equals(value));
  82. // string[] ids = data.Select(d => d.ItemDetailId).ToArray();
  83. // List<NewsEntity> news = newsBll.FindList<NewsEntity>(n => n.IsDelete == false && n.TypeId == 1 && ids.Contains(n.CategoryId), "CreateDate", false, 5, 1, out int records).ToList();
  84. // //newsBll.GetPageList(n => n.IsDelete == false && n.TypeId == 1 && ids.Contains(n.CategoryId), page).ToList();
  85. // if (news.Count > 0)
  86. // {
  87. // News_Preview preview = new News_Preview
  88. // {
  89. // NewsType = code
  90. // };
  91. // DataItemEntity list = dataItemCache.GetDataItemEntityByCode(code);
  92. // preview.ItemName = list.ItemName;
  93. // List<NewsPreviewItem> newsPreviewItem = new List<NewsPreviewItem>();
  94. // foreach (NewsEntity n in news)
  95. // {
  96. // NewsPreviewItem preItem = new NewsPreviewItem
  97. // {
  98. // AddTime = n.CreateDate.TryToDateTimeToString("yyyy-MM-dd"),
  99. // NewsId = n.NewsId,
  100. // Title = n.FullHead
  101. // };
  102. // newsPreviewItem.Add(preItem);
  103. // }
  104. // preview.NewsPreviewItem = newsPreviewItem;
  105. // res.Add(preview);
  106. // }
  107. //}
  108. #endregion
  109. List<NewsEntity> news = GetHomeNewsList(code);
  110. if (news.Count > 0)
  111. {
  112. News_Preview preview = new News_Preview
  113. {
  114. NewsType = code
  115. };
  116. var tmpbaseitme = data.Single(w => w.EnCode == code);
  117. preview.ItemName = tmpbaseitme.ItemName;
  118. List<NewsPreviewItem> newsPreviewItem = new List<NewsPreviewItem>();
  119. foreach (NewsEntity n in news)
  120. {
  121. NewsPreviewItem preItem = new NewsPreviewItem
  122. {
  123. AddTime = n.CreateDate.TryToDateTimeToString("yyyy-MM-dd"),
  124. NewsId = n.PK.ToString(),
  125. Title = n.FullHead
  126. };
  127. newsPreviewItem.Add(preItem);
  128. }
  129. preview.NewsPreviewItem = newsPreviewItem;
  130. res.Add(preview);
  131. }
  132. }
  133. Cache.Factory.CacheFactory.Cache().WriteCache(res, "HttpResponseMessage_GetHomeNewsList");
  134. }
  135. resultMsg = new BaseJson<List<News_Preview>>
  136. {
  137. Status = (int)JsonObjectStatus.Success,
  138. Data = res,
  139. Message = JsonObjectStatus.Success.GetEnumText(),
  140. BackUrl = null
  141. };
  142. }, e =>
  143. {
  144. resultMsg = new BaseJson<List<News_Preview>>
  145. {
  146. Status = (int)JsonObjectStatus.Exception,
  147. Data = null,
  148. Message = JsonObjectStatus.Exception.GetEnumText() + ",异常信息:" + e.Message,
  149. BackUrl = null
  150. };
  151. });
  152. return resultMsg.TryToJson().ToHttpResponseMessage();
  153. }
  154. /// <summary>
  155. /// 查询咨询首页的分类下面最新的5条数据 详情看sql语句 2018/9/25加上缓存
  156. /// </summary>
  157. /// <returns></returns>
  158. private static List<NewsEntity> GetHomeNewsList(string code)
  159. {
  160. string key = $"Cache-NewssList-{code}";
  161. List<NewsEntity> list = webCache.GetObject<List<NewsEntity>>(key);
  162. if (list == null)
  163. {
  164. string strSql = @"select top 5 * from Base_News where CategoryId in( SELECT
  165. d.ItemDetailId
  166. FROM Base_DataItemDetail d
  167. LEFT JOIN Base_DataItem i ON i.ItemId = d.ItemId
  168. WHERE 1 = 1
  169. AND d.EnabledMark = 1
  170. AND d.DeleteMark = 0
  171. AND i.ItemCode ='{0}'
  172. AND d.ItemValue in('3DYC','P3YC','SSQYC','DLT')
  173. )AND IsDelete = 0 AND TypeId = 1 order by CreateDate desc";
  174. string sql = string.Format(strSql, code);
  175. list = commonBll.ExcuteSqlDataTable(sql, DatabaseLinksEnum.Base, null).DataTableToList<NewsEntity>();
  176. if (list != null)
  177. webCache.AddObject(key, list, 5);//缓存时间5分钟
  178. }
  179. return list;
  180. }
  181. #endregion
  182. #region 彩种下面的文章列表
  183. /// <summary>
  184. /// 彩种下面的文章列表
  185. /// </summary>
  186. /// <returns></returns>
  187. [HttpPost]
  188. public HttpResponseMessage GetColorNewsList(ColorNews arg)
  189. {
  190. BaseJson4Page<News_Preview> resultMsg = new BaseJson4Page<News_Preview> { Status = (int)JsonObjectStatus.Error, Message = "服务器未知错误。", Data = null };
  191. Logger(typeof(ZxNewsController), arg.TryToJson(), "彩种下面的文章列表-GetColorNewsList", () =>
  192. {
  193. if (!string.IsNullOrEmpty(arg.Category))
  194. {
  195. Pagination page = new Pagination
  196. {
  197. rows = arg.PageSize,
  198. page = arg.PageIndex,
  199. sidx = "CreateDate",
  200. sord = "desc",
  201. records = 0,
  202. conditionJson = ""
  203. };
  204. //获取分类信息
  205. List<DataItemModel> data = dataItemCache.GetDataItemList(arg.Category);
  206. //分类Ids
  207. string[] ids = data.Select(d => d.ItemDetailId).ToArray();
  208. string key = $"Cache-NewssList-Category-{arg.Category}";
  209. List<NewsEntity> news = webCache.GetObject<List<NewsEntity>>(key);
  210. if (news == null)
  211. {
  212. //获取数据
  213. news = newsBll.GetPageList(n => n.IsDelete == false && n.TypeId == 1 && ids.Contains(n.CategoryId), page).ToList();
  214. if (news != null)
  215. webCache.AddObject(key, news, 5);//缓存时间5分钟
  216. }
  217. if (news.Count > 0 || news.Any())
  218. {
  219. //分类名称
  220. News_Preview preview = new News_Preview
  221. {
  222. NewsType = arg.Category
  223. };
  224. //项目名称
  225. DataItemEntity entity = dataItemCache.GetDataItemEntityByCode(arg.Category);
  226. preview.ItemName = entity.ItemName;
  227. List<NewsPreviewItem> newsPreviewItem = news.Select(n => new NewsPreviewItem
  228. {
  229. AddTime = n.CreateDate.TryToDateTimeToString("yyyy-MM-dd"),
  230. NewsId = n.NewsId,
  231. Title = n.FullHead
  232. }).ToList();
  233. preview.NewsPreviewItem = newsPreviewItem;
  234. PageData<News_Preview> pageData = new PageData<News_Preview>
  235. {
  236. TotalRow = page.records,
  237. TotalPage = Math.Ceiling(page.records * 1.0 / arg.PageSize).TryToInt32(),
  238. PageIndex = arg.PageIndex,
  239. Rows = new List<News_Preview> { preview }
  240. };
  241. resultMsg = new BaseJson4Page<News_Preview>
  242. {
  243. Status = (int)JsonObjectStatus.Success,
  244. Data = pageData,
  245. Message = JsonObjectStatus.Success.GetEnumText(),
  246. BackUrl = null
  247. };
  248. }
  249. else
  250. {
  251. resultMsg = new BaseJson4Page<News_Preview>
  252. {
  253. Status = (int)JsonObjectStatus.Fail,
  254. Data = null,
  255. Message = JsonObjectStatus.Fail.GetEnumText(),
  256. BackUrl = null
  257. };
  258. }
  259. }
  260. else
  261. {
  262. resultMsg = new BaseJson4Page<News_Preview>
  263. {
  264. Status = (int)JsonObjectStatus.Fail,
  265. Data = null,
  266. Message = JsonObjectStatus.Fail.GetEnumText() + ",请求参数Category为空。",
  267. BackUrl = null
  268. };
  269. }
  270. }, e =>
  271. {
  272. resultMsg = new BaseJson4Page<News_Preview>
  273. {
  274. Status = (int)JsonObjectStatus.Exception,
  275. Data = null,
  276. Message = JsonObjectStatus.Exception.GetEnumText() + ",异常信息:" + e.Message,
  277. BackUrl = null
  278. };
  279. });
  280. return resultMsg.TryToJson().ToHttpResponseMessage();
  281. }
  282. #endregion
  283. #region 新闻详情
  284. /// <summary>
  285. /// 新闻详情
  286. /// </summary>
  287. /// <returns></returns>
  288. [HttpPost]
  289. public HttpResponseMessage GetNewsDetails(NewsDetail arg)
  290. {
  291. BaseJson<GetZX_NewsDetails> resultMsg = new BaseJson<GetZX_NewsDetails> { Status = (int)JsonObjectStatus.Error, Message = "服务器未知错误。", Data = null };
  292. Logger(typeof(ZxNewsController), arg.TryToJson(), "新闻详情-GetNewsDetails", () =>
  293. {
  294. if (!string.IsNullOrEmpty(arg.NewsId))
  295. {
  296. #region 不用
  297. //NewsEntity data = newsBll.GetEntity(arg.NewsId);
  298. ////获取数据
  299. //GetZX_NewsDetails res = new GetZX_NewsDetails();
  300. //if (data != null)
  301. //{
  302. // res = new GetZX_NewsDetails
  303. // {
  304. // NewsId = data.NewsId,
  305. // PK = data.PK,
  306. // FullHead = data.FullHead,
  307. // CreateDate = data.CreateDate.TryToDateTimeToString("yyyy-MM-dd"),
  308. // CreateUserName = data.CreateUserName,
  309. // NewsContent = data.NewsContent,
  310. // PeriodsNumber = data.PeriodsNumber,
  311. // IsRecommend = data.IsRecommend ?? false,
  312. // IsHot = data.IsHot ?? false,
  313. // PV = data.PV ?? 0,
  314. // TitleElement = data.TitleElement,
  315. // DescriptionElement = data.DescriptionElement,
  316. // KeywordElement = data.KeywordElement,
  317. // };
  318. // #region 新增上一期、下一期预告
  319. // List<OnThene> preAndNext = GetNewsListByPk(res.PK ?? 1);
  320. // res.PreAndNextNewsList = preAndNext;
  321. // #endregion
  322. //}
  323. #endregion
  324. string key = $"Cache-DataTable-{arg.NewsId}";
  325. DataTable data = webCache.GetObject<DataTable>(key);
  326. if (data == null)
  327. {
  328. data = commonBll.ExcuteSqlDataTable(string.Format(GetNewsDetailSql, arg.NewsId), DatabaseLinksEnum.Base);
  329. if (data != null)
  330. webCache.AddObject(key, data, 5);//缓存时间5分钟
  331. }
  332. if (data != null && data.Rows.Count > 0)
  333. {
  334. NewsEntity entity = data.DataTableToObject<NewsEntity>();
  335. GetZX_NewsDetails res = new GetZX_NewsDetails
  336. {
  337. NewsId = entity.NewsId,
  338. PK = entity.PK,
  339. FullHead = entity.FullHead,
  340. CreateDate = entity.CreateDate.TryToDateTimeToString("yyyy-MM-dd"),
  341. CreateUserName = entity.CreateUserName,
  342. NewsContent = entity.NewsContent,
  343. PeriodsNumber = entity.PeriodsNumber,
  344. IsRecommend = entity.IsRecommend ?? false,
  345. IsHot = entity.IsHot ?? false,
  346. PV = entity.PV ?? 0,
  347. TitleElement = entity.TitleElement,
  348. DescriptionElement = entity.DescriptionElement,
  349. KeywordElement = entity.KeywordElement,
  350. };
  351. #region 新增上一期、下一期预告
  352. List<PreAndNextNews> preAndNext = GetNewsListByPk(res.PK ?? 1);
  353. res.PreAndNextNewsList = preAndNext;
  354. #endregion
  355. resultMsg = new BaseJson<GetZX_NewsDetails>
  356. {
  357. Status = (int)JsonObjectStatus.Success,
  358. Data = res,
  359. Message = JsonObjectStatus.Success.GetEnumText(),
  360. BackUrl = null
  361. };
  362. }
  363. }
  364. else
  365. {
  366. resultMsg = new BaseJson<GetZX_NewsDetails>
  367. {
  368. Status = (int)JsonObjectStatus.Fail,
  369. Data = null,
  370. Message = JsonObjectStatus.Fail.GetEnumText() + ",请求参数有误。",
  371. BackUrl = null
  372. };
  373. }
  374. }, e =>
  375. {
  376. resultMsg = new BaseJson<GetZX_NewsDetails>
  377. {
  378. Status = (int)JsonObjectStatus.Exception,
  379. Data = null,
  380. Message = JsonObjectStatus.Exception.GetEnumText() + ",异常信息:" + e.Message,
  381. BackUrl = null
  382. };
  383. });
  384. return resultMsg.TryToJson().ToHttpResponseMessage();
  385. }
  386. /// <summary>
  387. /// 获取上一期、下一期文章集合
  388. /// </summary>
  389. /// <param name="pk"></param>
  390. /// <returns></returns>
  391. private List<PreAndNextNews> GetNewsListByPk(int pk)
  392. {
  393. List<PreAndNextNews> list = new List<PreAndNextNews>();
  394. try
  395. {
  396. #region 上一期
  397. NewsEntity dataPre = GetPreNewsByPk(pk);
  398. if (dataPre != null)
  399. {
  400. //上一期
  401. PreAndNextNews onThene = new PreAndNextNews
  402. {
  403. Which = 1,
  404. Title = dataPre.FullHead,
  405. NewsId = dataPre.PK.ToString()
  406. };
  407. list.Add(onThene);
  408. }
  409. else
  410. {
  411. //上一期
  412. PreAndNextNews onThene = new PreAndNextNews
  413. {
  414. Which = 1,
  415. Title = "已经是最新一期啦",
  416. NewsId = ""
  417. };
  418. list.Add(onThene);
  419. }
  420. #endregion
  421. #region 下一期
  422. NewsEntity dataNext = GetNextNewsByPk(pk);
  423. if (dataNext != null)
  424. {
  425. //下一期
  426. PreAndNextNews onThene = new PreAndNextNews
  427. {
  428. Which = 2,
  429. Title = dataNext.FullHead,
  430. NewsId = dataNext.PK.ToString()
  431. };
  432. list.Add(onThene);
  433. }
  434. else
  435. {
  436. //下一期
  437. PreAndNextNews onThene = new PreAndNextNews
  438. {
  439. Which = 2,
  440. Title = "已经是最后一期啦",
  441. NewsId = ""
  442. };
  443. list.Add(onThene);
  444. }
  445. #endregion
  446. }
  447. catch (Exception e)
  448. {
  449. return new List<PreAndNextNews>();
  450. }
  451. return list;
  452. }
  453. /// <summary>
  454. /// 递归获取上一期文章
  455. /// </summary>
  456. /// <param name="pk"></param>
  457. /// <returns></returns>
  458. private NewsEntity GetPreNewsByPk(int pk)
  459. {
  460. NewsEntity entity = null;
  461. int tempPrePk = pk;
  462. lock (_lock)
  463. {
  464. do
  465. {
  466. //数据库45524为第一条
  467. tempPrePk = (tempPrePk - 1) <= 0 ? 45524 : (tempPrePk - 1);
  468. //entity = newsBll.GetEntity(n => n.PK == tempPrePk);
  469. string key = $"Cache-GetPreNewsByPk-{pk}";
  470. DataTable table = webCache.GetObject<DataTable>(key);
  471. if (table == null)
  472. {
  473. table = commonBll.ExcuteSqlDataTable(string.Format(GetNewsAbstractSql, tempPrePk.ToString()), DatabaseLinksEnum.Base);
  474. if (table != null)
  475. webCache.AddObject(key, table, 5);//缓存时间5分钟
  476. }
  477. entity = table.DataTableToObject<NewsEntity>();
  478. } while (entity == null);
  479. }
  480. return entity;
  481. }
  482. /// <summary>
  483. /// 获取下一期
  484. /// </summary>
  485. /// <param name="pk"></param>
  486. /// <returns></returns>
  487. private NewsEntity GetNextNewsByPk(int pk)
  488. {
  489. NewsEntity entity = null;
  490. int tempPrePk = pk;
  491. lock (_lock)
  492. {
  493. do
  494. {
  495. tempPrePk = (tempPrePk + 1) <= 0 ? 45524 : (tempPrePk + 1);
  496. string key = $"Cache-GetNextNewsByPk-{pk}";
  497. DataTable table = webCache.GetObject<DataTable>(key);
  498. if (table == null)
  499. {
  500. table = commonBll.ExcuteSqlDataTable(string.Format(GetNewsAbstractSql, tempPrePk.ToString()), DatabaseLinksEnum.Base);
  501. if (table != null)
  502. webCache.AddObject(key, table, 5);//缓存时间5分钟
  503. }
  504. entity = table.DataTableToObject<NewsEntity>();
  505. } while (entity == null);
  506. //return newsBll.GetEntity(n => n.PK == tempPrePk);
  507. }
  508. return entity;
  509. }
  510. #endregion
  511. #region 彩种下面的分类名称和文章列表
  512. /// <summary>
  513. /// 彩种下面的分类名称和文章列表
  514. /// </summary>
  515. /// <returns></returns>
  516. [HttpPost]
  517. public HttpResponseMessage GetClassiFicationNewsList(GetClassiFicationNewsList arg)
  518. {
  519. BaseJson<ClassiFication> resultMsg = new BaseJson<ClassiFication> { Status = (int)JsonObjectStatus.Error, Message = "服务器未知错误。", Data = null };
  520. Logger(typeof(ZxNewsController), arg.TryToJson(), "彩种下面的分类名称和文章列表-GetClassiFicationNewsList", () =>
  521. {
  522. if (!string.IsNullOrEmpty(arg.Category))
  523. {
  524. //获取分类信息
  525. List<DataItemModel> data = dataItemCache.GetDataItemList(arg.Category);
  526. List<ItemList> res = data.Select(d => new ItemList
  527. {
  528. ItemId = d.ItemDetailId,
  529. SimpleSpelling = d.SimpleSpelling.ToUpper(),
  530. ItemName = d.ItemName
  531. }).ToList();
  532. //文章Ids
  533. string firstId = res[0].ItemId;
  534. //加缓存
  535. string key = $"Cache-NewssList-GetClassiFicationNewsList-{arg.Category}";
  536. List<NewsEntity> news = webCache.GetObject<List<NewsEntity>>(key);
  537. if (news == null)
  538. {
  539. news = newsBll.GetList(t => t.CategoryId.Equals(firstId)).Take(GlobalStaticConstant.SYSTEM_DEFAULT_PAGE_SIZE).ToList();
  540. if(news != null)
  541. webCache.AddObject(key, news, 5);//缓存时间5分钟
  542. }
  543. List<NewsPreviewItem> newsPreviewItem = new List<NewsPreviewItem>();
  544. if (news.Count > 0)
  545. {
  546. foreach (NewsEntity n in news)
  547. {
  548. NewsPreviewItem preItem = new NewsPreviewItem
  549. {
  550. AddTime = n.CreateDate.TryToDateTimeToString("yyyy-MM-dd"),
  551. NewsId = n.NewsId,
  552. Title = n.FullHead
  553. };
  554. newsPreviewItem.Add(preItem);
  555. }
  556. }
  557. ClassiFication result = new ClassiFication
  558. {
  559. ItemList = res,
  560. NewsList = newsPreviewItem
  561. };
  562. resultMsg = new BaseJson<ClassiFication>
  563. {
  564. Status = (int)JsonObjectStatus.Success,
  565. Data = result,
  566. Message = JsonObjectStatus.Success.GetEnumText(),
  567. BackUrl = null
  568. };
  569. }
  570. else
  571. {
  572. resultMsg = new BaseJson<ClassiFication>
  573. {
  574. Status = (int)JsonObjectStatus.Fail,
  575. Data = null,
  576. Message = JsonObjectStatus.Fail.GetEnumText() + ",请求参数Category为空。",
  577. BackUrl = null
  578. };
  579. }
  580. }, e =>
  581. {
  582. resultMsg = new BaseJson<ClassiFication>
  583. {
  584. Status = (int)JsonObjectStatus.Exception,
  585. Data = null,
  586. Message = JsonObjectStatus.Exception.GetEnumText() + ",异常信息:" + e.Message,
  587. BackUrl = null
  588. };
  589. });
  590. return resultMsg.TryToJson().ToHttpResponseMessage();
  591. }
  592. #endregion
  593. #region 彩种下面的文章列表
  594. /// <summary>
  595. /// 彩种下面的文章列表
  596. /// </summary>
  597. /// <returns></returns>
  598. [HttpPost]
  599. public HttpResponseMessage GetNewsList(GetNewsList arg)
  600. {
  601. BaseJson4Page<NewsPreviewItem> resultMsg = new BaseJson4Page<NewsPreviewItem> { Status = (int)JsonObjectStatus.Error, Message = "服务器未知错误。", Data = null };
  602. Logger(typeof(ZxNewsController), arg.TryToJson(), "彩种下面的文章列表-GetNewsList", () =>
  603. {
  604. if (!string.IsNullOrEmpty(arg.CategoryId))
  605. {
  606. //Pagination page = new Pagination
  607. //{
  608. // rows = arg.PageSize,
  609. // page = arg.PageIndex,
  610. // sidx = "CreateDate",
  611. // sord = "desc",
  612. // records = 0,
  613. // conditionJson = ""
  614. //};
  615. //分类Ids
  616. string id = arg.CategoryId;
  617. List<NewsPreviewItem> newsPreviewItem = new List<NewsPreviewItem>();
  618. int records = 0;
  619. //加缓存
  620. string key = $"Cache-NewssList-GetNewsList-{arg.CategoryId}";
  621. List<NewsEntity> news = webCache.GetObject<List<NewsEntity>>(key);
  622. if (news == null)
  623. {
  624. //获取数据
  625. news = newsBll.FindList<NewsEntity>(t => t.CategoryId.Equals(id), "CreateDate", false, arg.PageSize, arg.PageIndex, out records).ToList();
  626. if (news != null)
  627. webCache.AddObject(key, news, 5);//缓存时间5分钟
  628. }
  629. if (news.Count > 0)
  630. {
  631. newsPreviewItem = news.Select(n => new NewsPreviewItem
  632. {
  633. AddTime = n.CreateDate.TryToDateTimeToString("yyyy-MM-dd"),
  634. //NewsId = n.NewsId,
  635. NewsId = n.PK.ToString(),
  636. Title = n.FullHead
  637. }).ToList();
  638. }
  639. else
  640. {
  641. //如果为空,则默认查询太湖字谜和彩神通字谜下面子分类咨询
  642. List<DataItemDetailEntity> list = dataItemCache.GetDataItemListById(arg.CategoryId);
  643. if (list != null)
  644. {
  645. List<string> itemDetailIds = list.Select(d => d.ItemDetailId).ToList();
  646. //加缓存
  647. key = $"Cache-NewssList-GetNewsList-temp-{arg.CategoryId}";
  648. List<NewsEntity> temp = webCache.GetObject<List<NewsEntity>>(key);
  649. if (news == null)
  650. {
  651. //获取数据
  652. temp = newsBll.FindList<NewsEntity>(t => itemDetailIds.Contains(t.CategoryId), "CreateDate", false, arg.PageSize, arg.PageIndex, out records).ToList();
  653. if (temp != null)
  654. webCache.AddObject(key, temp, 5);//缓存时间5分钟
  655. }
  656. newsPreviewItem = temp.Select(n => new NewsPreviewItem
  657. {
  658. AddTime = n.CreateDate.TryToDateTimeToString("yyyy-MM-dd"),
  659. NewsId = n.PK.ToString(),
  660. Title = n.FullHead
  661. }).ToList();
  662. }
  663. }
  664. #region 不用 2018-9-25
  665. //lock (_lock)
  666. //{
  667. // Trace.WriteLine("========加锁时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
  668. // Task task = Task.Factory.StartNew(() =>
  669. // {
  670. // //获取数据
  671. // List<NewsEntity> news = newsBll.FindList<NewsEntity>(t => t.CategoryId.Equals(id), "CreateDate", false, arg.PageSize, arg.PageIndex, out records).ToList();//.GetPageList(t => t.CategoryId.Equals(id), page).ToList();
  672. // Trace.WriteLine("========请求到数据:" + news.Count);
  673. // if (news.Count > 0)
  674. // {
  675. // newsPreviewItem = news.Select(n => new NewsPreviewItem
  676. // {
  677. // AddTime = n.CreateDate.TryToDateTimeToString("yyyy-MM-dd"),
  678. // //NewsId = n.NewsId,
  679. // NewsId = n.PK.ToString(),
  680. // Title = n.FullHead
  681. // }).ToList();
  682. // }
  683. // else
  684. // {
  685. // //如果为空,则默认查询太湖字谜和彩神通字谜下面子分类咨询
  686. // List<DataItemDetailEntity> list = dataItemCache.GetDataItemListById(arg.CategoryId);
  687. // if (list != null)
  688. // {
  689. // List<string> itemDetailIds = list.Select(d => d.ItemDetailId).ToList();
  690. // //获取数据
  691. // List<NewsEntity> temp = newsBll.FindList<NewsEntity>(t => itemDetailIds.Contains(t.CategoryId), "CreateDate", false, arg.PageSize, arg.PageIndex, out records).ToList();//.GetPageList(t => t.CategoryId.Equals(id), page).ToList();
  692. // //newsBll.GetPageList(t => itemDetailIds.Contains(t.CategoryId), page).ToList();
  693. // newsPreviewItem = temp.Select(n => new NewsPreviewItem
  694. // {
  695. // AddTime = n.CreateDate.TryToDateTimeToString("yyyy-MM-dd"),
  696. // NewsId = n.PK.ToString(),
  697. // Title = n.FullHead
  698. // }).ToList();
  699. // }
  700. // }
  701. // });
  702. // task.Wait();
  703. //}
  704. //Trace.WriteLine("当前线程ID:" + Thread.CurrentThread.ManagedThreadId);
  705. //Trace.WriteLine("========离开时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
  706. #endregion
  707. PageData<NewsPreviewItem> pageData = new PageData<NewsPreviewItem>
  708. {
  709. TotalRow = records,
  710. TotalPage = Math.Ceiling(records * 1.0 / arg.PageSize).TryToInt32(),
  711. PageIndex = arg.PageIndex,
  712. Rows = newsPreviewItem
  713. };
  714. resultMsg = new BaseJson4Page<NewsPreviewItem>
  715. {
  716. Status = (int)JsonObjectStatus.Success,
  717. Data = pageData,
  718. Message = JsonObjectStatus.Success.GetEnumText(),
  719. BackUrl = null
  720. };
  721. }
  722. else
  723. {
  724. resultMsg = new BaseJson4Page<NewsPreviewItem>
  725. {
  726. Status = (int)JsonObjectStatus.Fail,
  727. Data = null,
  728. Message = JsonObjectStatus.Fail.GetEnumText() + ",请求参数CategoryId为空。",
  729. BackUrl = null
  730. };
  731. }
  732. }, e =>
  733. {
  734. resultMsg = new BaseJson4Page<NewsPreviewItem>
  735. {
  736. Status = (int)JsonObjectStatus.Exception,
  737. Data = null,
  738. Message = JsonObjectStatus.Exception.GetEnumText() + ",异常信息:" + e.Message,
  739. BackUrl = null
  740. };
  741. });
  742. return resultMsg.TryToJson().ToHttpResponseMessage();
  743. }
  744. #endregion
  745. }
  746. }