ThematicArticleController.cs 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Linq;
  5. using System.Net;
  6. using System.Net.Http;
  7. using System.Web.Http;
  8. using Lottomat.Application.Busines.CommonManage;
  9. using Lottomat.Application.Cache;
  10. using Lottomat.Application.Code;
  11. using Lottomat.Application.Entity.CommonEntity;
  12. using Lottomat.Application.Entity.InformationManage;
  13. using Lottomat.Application.Entity.LotteryNumberManage.Parameter;
  14. using Lottomat.Application.Entity.ViewModel;
  15. using Lottomat.Cache.Factory;
  16. using Lottomat.SOA.API.Caching;
  17. using Lottomat.SOA.API.Controllers.Base;
  18. using Lottomat.Util;
  19. using Lottomat.Util.Extension;
  20. namespace Lottomat.SOA.API.Controllers.V1
  21. {
  22. /// <summary>
  23. /// 专题文章
  24. /// </summary>
  25. public class ThematicArticleController : BaseApiController
  26. {
  27. #region 实例
  28. /// <summary>
  29. /// 公共BLL
  30. /// </summary>
  31. private static readonly CommonBLL commonBll = new CommonBLL();
  32. #endregion
  33. /// <summary>
  34. /// 获取专题文章分类
  35. /// </summary>
  36. /// <returns></returns>
  37. [HttpPost]
  38. public HttpResponseMessage GetThematicArticleClassify(BaseParameterEntity arg)
  39. {
  40. BaseJson<List<ZTColumnViewModel>> resultMsg = new BaseJson<List<ZTColumnViewModel>> { Status = (int)JsonObjectStatus.Error, Message = "服务器未知错误。", Data = null };
  41. Logger(typeof(ThematicArticleController), arg.TryToJson(), "获取专题文章分类-GetThematicArticleClassify", () =>
  42. {
  43. if (!string.IsNullOrEmpty(arg.t))
  44. {
  45. if (arg.t.CheckTimeStamp())
  46. {
  47. List<ZTColumnViewModel> res = null;
  48. string key = $"GetThematicArticleClassify";
  49. if (webCache.IsExist(key))
  50. {
  51. res = webCache.GetObject<List<ZTColumnViewModel>>(key) as List<ZTColumnViewModel>;
  52. }
  53. else
  54. {
  55. //res = Cache.Factory.CacheFactory.Cache().GetCache<List<ZTColumnViewModel>>("__ThematicArticleClassify");
  56. if (res == null || res.Count == 0)
  57. {
  58. res = new List<ZTColumnViewModel>();
  59. DataTable data = commonBll.ExcuteSqlDataTable(QueryThematicArticleClassify, DatabaseLinksEnum.CB55128);
  60. if (data.IsExistRows())
  61. {
  62. List<ZTColumnEntity> list = data.DataTableToList<ZTColumnEntity>();
  63. foreach (ZTColumnEntity entity in list)
  64. {
  65. ZTColumnViewModel model = new ZTColumnViewModel
  66. {
  67. Name = entity.Name.Trim(),
  68. CId = entity.CId,
  69. TagId = entity.TagId,
  70. Logo = entity.Logo.ToLower(),
  71. Lottery = entity.Lottery.Trim(),
  72. About = entity.About,
  73. hTitle = entity.hTitle,
  74. hKeywords = entity.hKeywords,
  75. hDescription = entity.hDescription,
  76. RewriteUrl = entity.RewriteUrl.Trim()
  77. };
  78. res.Add(model);
  79. }
  80. webCache.AddObject(key, res, (int)CacheTime.Data);
  81. //Cache.Factory.CacheFactory.Cache().WriteCache(res, "__ThematicArticleClassify", DateTime.Now.AddHours(12));
  82. }
  83. }
  84. }
  85. resultMsg = new BaseJson<List<ZTColumnViewModel>>
  86. {
  87. Status = (int)JsonObjectStatus.Success,
  88. Data = res,
  89. Message = JsonObjectStatus.Success.GetEnumText(),
  90. BackUrl = null
  91. };
  92. }
  93. else
  94. {
  95. resultMsg = new BaseJson<List<ZTColumnViewModel>>
  96. {
  97. Status = (int)JsonObjectStatus.Fail,
  98. Data = null,
  99. Message = JsonObjectStatus.Fail.GetEnumText() + ",无效参数。",
  100. BackUrl = null
  101. };
  102. }
  103. }
  104. else
  105. {
  106. resultMsg = new BaseJson<List<ZTColumnViewModel>>
  107. {
  108. Status = (int)JsonObjectStatus.Fail,
  109. Data = null,
  110. Message = JsonObjectStatus.Fail.GetEnumText() + ",请求参数为空。",
  111. BackUrl = null
  112. };
  113. }
  114. }, e =>
  115. {
  116. resultMsg = new BaseJson<List<ZTColumnViewModel>>
  117. {
  118. Status = (int)JsonObjectStatus.Exception,
  119. Data = null,
  120. Message = JsonObjectStatus.Exception.GetEnumText() + ",异常信息:" + e.Message,
  121. BackUrl = null
  122. };
  123. });
  124. return resultMsg.TryToJson().ToHttpResponseMessage();
  125. }
  126. /// <summary>
  127. /// 获取专题文章列表
  128. /// </summary>
  129. /// <returns></returns>
  130. [HttpPost]
  131. public HttpResponseMessage GetThematicArticleList(ThematicArticleListArg arg)
  132. {
  133. BaseJson4Page<ZTArticleViewModel> resultMsg = new BaseJson4Page<ZTArticleViewModel> { Status = (int)JsonObjectStatus.Error, Message = "服务器未知错误。", Data = null };
  134. Logger(typeof(ThematicArticleController), arg.TryToJson(), "获取专题文章列表-GetThematicArticleList", () =>
  135. {
  136. if (!string.IsNullOrEmpty(arg.t))
  137. {
  138. if (arg.t.CheckTimeStamp())
  139. {
  140. DataTablePagerCache<DataTable> tablePager = null;
  141. string key = $"GetThematicArticleList/{arg.CId}/{arg.PageIndex}/{arg.PageSize}";
  142. if (webCache.IsExist(key))
  143. {
  144. tablePager = webCache.GetObject<DataTablePagerCache<DataTable>>(key);
  145. }
  146. else
  147. {
  148. string sql = $"SELECT [Id],[Title],[ShortDetail],[Addtime] FROM [dbo].[ZT_Article] WHERE Cid = {arg.CId}";
  149. DataTable table = commonBll.FindPageDataTable(sql, "Addtime", false, arg.PageSize, arg.PageIndex, out int total, DatabaseLinksEnum.CB55128);
  150. tablePager = new DataTablePagerCache<DataTable>() { Total = total, Table = table };
  151. webCache.AddObject(key, tablePager, (int)CacheTime.Data);
  152. }
  153. DataTable data = null;
  154. int recordTotal = 0;
  155. if (tablePager != null && tablePager.Table != null)
  156. {
  157. recordTotal = tablePager.Total;
  158. data = tablePager.Table;
  159. }
  160. else
  161. {
  162. data = new DataTable();
  163. }
  164. if (data.IsExistRows())
  165. {
  166. List<ZTArticleViewModel> res = data.DataTableToList<ZTArticleViewModel>();
  167. PageData<ZTArticleViewModel> pageData = new PageData<ZTArticleViewModel>
  168. {
  169. TotalRow = recordTotal,
  170. TotalPage = (int)Math.Floor(recordTotal * 1.0 / arg.PageSize) + 1,
  171. PageIndex = arg.PageIndex,
  172. Rows = res
  173. };
  174. resultMsg = new BaseJson4Page<ZTArticleViewModel>
  175. {
  176. Status = (int)JsonObjectStatus.Success,
  177. Data = pageData,
  178. Message = JsonObjectStatus.Success.GetEnumText(),
  179. BackUrl = null
  180. };
  181. }
  182. else
  183. {
  184. resultMsg = new BaseJson4Page<ZTArticleViewModel>
  185. {
  186. Status = (int)JsonObjectStatus.Success,
  187. Data = null,
  188. Message = JsonObjectStatus.Success.GetEnumText(),
  189. BackUrl = null
  190. };
  191. }
  192. }
  193. else
  194. {
  195. resultMsg = new BaseJson4Page<ZTArticleViewModel>
  196. {
  197. Status = (int)JsonObjectStatus.Fail,
  198. Data = null,
  199. Message = JsonObjectStatus.Fail.GetEnumText() + ",无效参数。",
  200. BackUrl = null
  201. };
  202. }
  203. }
  204. else
  205. {
  206. resultMsg = new BaseJson4Page<ZTArticleViewModel>
  207. {
  208. Status = (int)JsonObjectStatus.Fail,
  209. Data = null,
  210. Message = JsonObjectStatus.Fail.GetEnumText() + ",请求参数为空。",
  211. BackUrl = null
  212. };
  213. }
  214. }, e =>
  215. {
  216. resultMsg = new BaseJson4Page<ZTArticleViewModel>
  217. {
  218. Status = (int)JsonObjectStatus.Exception,
  219. Data = null,
  220. Message = JsonObjectStatus.Exception.GetEnumText() + ",异常信息:" + e.Message,
  221. BackUrl = null
  222. };
  223. });
  224. return resultMsg.TryToJson().ToHttpResponseMessage();
  225. }
  226. /// <summary>
  227. /// 获取专题文章详细
  228. /// </summary>
  229. /// <returns></returns>
  230. [HttpPost]
  231. public HttpResponseMessage GetThematicArticleById(ThematicArticleInfoArg arg)
  232. {
  233. BaseJson<ZTArticleDetailViewModel> resultMsg = new BaseJson<ZTArticleDetailViewModel> { Status = (int)JsonObjectStatus.Error, Message = "服务器未知错误。", Data = null };
  234. Logger(typeof(ThematicArticleController), arg.TryToJson(), "获取专题文章详细-GetThematicArticleById", () =>
  235. {
  236. if (!string.IsNullOrEmpty(arg.t))
  237. {
  238. if (arg.t.CheckTimeStamp())
  239. {
  240. DataTable data = null;
  241. string key = $"GetThematicArticleById/{arg.Id}/{arg.CId}";
  242. if (webCache.IsExist(key))
  243. {
  244. data = webCache.GetObject<DataTable>(key);
  245. }
  246. else
  247. {
  248. //string sql = $"SELECT [Id],[Title],[Detail],[Editor],[Addtime] FROM [dbo].[ZT_ArticleDetail] WHERE Id = {arg.Id}";
  249. string sql = $"SELECT ad.[Id],ad.[Title],ad.[Detail],ad.[Editor],ad.[Addtime],c.[Name] AS TypeName,c.[Lottery] AS EnumCode FROM [dbo].[ZT_ArticleDetail] AS ad JOIN [dbo].[ZT_Column] AS c ON ad.Id = {arg.Id} AND c.CId = {arg.CId}";
  250. data = commonBll.ExcuteSqlDataTable(sql, DatabaseLinksEnum.CB55128);
  251. webCache.AddObject(key, data, (int)CacheTime.Data);
  252. }
  253. if (data.IsExistRows())
  254. {
  255. ZTArticleDetailViewModel detail = data.DataTableToObject<ZTArticleDetailViewModel>();
  256. if (detail != null)
  257. {
  258. detail.Editor = detail.Editor.Trim();
  259. detail.TypeName = detail.TypeName.Trim();
  260. //校正彩种枚举码
  261. switch (detail.EnumCode.Trim())
  262. {
  263. case "ssq":
  264. detail.EnumCode = SCCLottery.SSQ.ToString();
  265. break;
  266. case "p3":
  267. detail.EnumCode = SCCLottery.PL3.ToString();
  268. break;
  269. case "3d":
  270. detail.EnumCode = SCCLottery.FC3D.ToString();
  271. break;
  272. case "dlt":
  273. detail.EnumCode = SCCLottery.DLT.ToString();
  274. break;
  275. }
  276. resultMsg = new BaseJson<ZTArticleDetailViewModel>
  277. {
  278. Status = (int)JsonObjectStatus.Success,
  279. Data = detail,
  280. Message = JsonObjectStatus.Success.GetEnumText(),
  281. BackUrl = null
  282. };
  283. }
  284. }
  285. }
  286. else
  287. {
  288. resultMsg = new BaseJson<ZTArticleDetailViewModel>
  289. {
  290. Status = (int)JsonObjectStatus.Fail,
  291. Data = null,
  292. Message = JsonObjectStatus.Fail.GetEnumText() + ",无效参数。",
  293. BackUrl = null
  294. };
  295. }
  296. }
  297. else
  298. {
  299. resultMsg = new BaseJson<ZTArticleDetailViewModel>
  300. {
  301. Status = (int)JsonObjectStatus.Fail,
  302. Data = null,
  303. Message = JsonObjectStatus.Fail.GetEnumText() + ",请求参数为空。",
  304. BackUrl = null
  305. };
  306. }
  307. }, e =>
  308. {
  309. resultMsg = new BaseJson<ZTArticleDetailViewModel>
  310. {
  311. Status = (int)JsonObjectStatus.Exception,
  312. Data = null,
  313. Message = JsonObjectStatus.Exception.GetEnumText() + ",异常信息:" + e.Message,
  314. BackUrl = null
  315. };
  316. });
  317. return resultMsg.TryToJson().ToHttpResponseMessage();
  318. }
  319. /// <summary>
  320. /// 获取系统推荐专题文章列表
  321. /// </summary>
  322. /// <returns></returns>
  323. [HttpPost]
  324. public HttpResponseMessage GetRecommendThematicArticleList(RecommendThematicArticleArg arg)
  325. {
  326. BaseJson<List<ZTArticleViewModel>> resultMsg = new BaseJson<List<ZTArticleViewModel>> { Status = (int)JsonObjectStatus.Error, Message = "服务器未知错误。", Data = null };
  327. Logger(typeof(ThematicArticleController), arg.TryToJson(), "获取系统推荐专题文章列表-GetRecommendThematicArticleList", () =>
  328. {
  329. if (!string.IsNullOrEmpty(arg.t))
  330. {
  331. if (arg.t.CheckTimeStamp())
  332. {
  333. string[] codeArr = { "SSQ", "PL3", "FC3D", "DLT" };
  334. arg.EnumCode = string.IsNullOrEmpty(arg.EnumCode) ? "Default" : codeArr.Contains(arg.EnumCode) ? arg.EnumCode : "Default";
  335. //List <ZTArticleViewModel> list = CacheFactory.Cache().GetCache<List<ZTArticleViewModel>>("__RecommendThematicArticle_" + arg.TotalRecord + "_" + arg.EnumCode.Trim().ToUpper());
  336. List<ZTArticleViewModel> list = null;
  337. string key = $"GetRecommendThematicArticleList/{arg.EnumCode}/{arg.TotalRecord}";
  338. if (webCache.IsExist(key))
  339. {
  340. list = webCache.GetObject<List<ZTArticleViewModel>>(key);
  341. }
  342. else
  343. {
  344. if (list == null || list.Count == 0)
  345. {
  346. list = new List<ZTArticleViewModel>();
  347. //string sql = $"SELECT TOP {arg.TotalRecord} [Id],[Title],[AddTime],[Cid] FROM [dbo].[ZT_Article] ORDER BY Addtime DESC";
  348. string code = String.Empty;
  349. //校正彩种编码
  350. switch (arg.EnumCode.Trim())
  351. {
  352. case "SSQ":
  353. code = "ssq";
  354. break;
  355. case "PL3":
  356. code = "p3";
  357. break;
  358. case "FC3D":
  359. code = "3d";
  360. break;
  361. case "DLT":
  362. code = "dlt";
  363. break;
  364. default:
  365. code = "";
  366. break;
  367. }
  368. string sql = "";
  369. if (string.IsNullOrEmpty(code))
  370. {
  371. sql = $"SELECT TOP {arg.TotalRecord} [Id],[Title],[AddTime],[Cid] FROM [dbo].[ZT_Article] WHERE Cid IN(SELECT [CId] FROM [dbo].[ZT_Column] WHERE TypeName = 'article') ORDER BY Addtime DESC";
  372. }
  373. else
  374. {
  375. sql = $"SELECT TOP {arg.TotalRecord} [Id],[Title],[AddTime],[Cid] FROM [dbo].[ZT_Article] WHERE Cid IN(SELECT [CId] FROM [dbo].[ZT_Column] WHERE Lottery = '{code}' AND TypeName = 'article') ORDER BY Addtime DESC";
  376. }
  377. DataTable data = commonBll.ExcuteSqlDataTable(sql, DatabaseLinksEnum.CB55128);
  378. if (data.IsExistRows())
  379. {
  380. for (int i = 0; i < data.Rows.Count; i++)
  381. {
  382. ZTArticleViewModel article = new ZTArticleViewModel
  383. {
  384. Id = data.Rows[i]["Id"].TryToInt32(),
  385. Title = data.Rows[i]["Title"].ToStringEx(),
  386. Addtime = data.Rows[i]["AddTime"].TryToDateTime(),
  387. Cid = data.Rows[i]["Cid"].TryToInt32()
  388. };
  389. list.Add(article);
  390. }
  391. webCache.AddObject(key, list, (int)CacheTime.Data);
  392. //CacheFactory.Cache().WriteCache(list, "__RecommendThematicArticle_" + arg.TotalRecord + "_" + arg.EnumCode.Trim().ToUpper(), DateTime.Now.AddHours(6));
  393. }
  394. else
  395. {
  396. resultMsg = new BaseJson<List<ZTArticleViewModel>>
  397. {
  398. Status = (int)JsonObjectStatus.Success,
  399. Data = null,
  400. Message = JsonObjectStatus.Success.GetEnumText(),
  401. BackUrl = null
  402. };
  403. }
  404. }
  405. }
  406. resultMsg = new BaseJson<List<ZTArticleViewModel>>
  407. {
  408. Status = (int)JsonObjectStatus.Success,
  409. Data = list,
  410. Message = JsonObjectStatus.Success.GetEnumText(),
  411. BackUrl = null
  412. };
  413. }
  414. else
  415. {
  416. resultMsg = new BaseJson<List<ZTArticleViewModel>>
  417. {
  418. Status = (int)JsonObjectStatus.Fail,
  419. Data = null,
  420. Message = JsonObjectStatus.Fail.GetEnumText() + ",无效参数。",
  421. BackUrl = null
  422. };
  423. }
  424. }
  425. else
  426. {
  427. resultMsg = new BaseJson<List<ZTArticleViewModel>>
  428. {
  429. Status = (int)JsonObjectStatus.Fail,
  430. Data = null,
  431. Message = JsonObjectStatus.Fail.GetEnumText() + ",请求参数为空。",
  432. BackUrl = null
  433. };
  434. }
  435. }, e =>
  436. {
  437. resultMsg = new BaseJson<List<ZTArticleViewModel>>
  438. {
  439. Status = (int)JsonObjectStatus.Exception,
  440. Data = null,
  441. Message = JsonObjectStatus.Exception.GetEnumText() + ",异常信息:" + e.Message,
  442. BackUrl = null
  443. };
  444. });
  445. return resultMsg.TryToJson().ToHttpResponseMessage();
  446. }
  447. #region SQL语句
  448. /// <summary>
  449. /// 查询专题文章分类
  450. /// </summary>
  451. private string QueryThematicArticleClassify =
  452. "SELECT [Id],[Name],[CId],[TagId],[RewriteUrl],[Logo],[Lottery],[TypeName],[Status],[Words],[About],[hTitle],[hKeywords],[hDescription],[Addtime] FROM [dbo].[ZT_Column] WHERE TypeName = 'article'";
  453. #endregion
  454. }
  455. }