Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

ZzNews.py 4.6 KiB

3 anni fa
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. from backend.models import ZzNews
  2. from common import util
  3. from django.db import connection
  4. from django.db.models import Sum, Count
  5. import math
  6. def get_news(page, page_size):
  7. """
  8. 根据页数获取新闻列表
  9. :param page: 当前页数,默认1
  10. :param page_size: 每页条数,默认8
  11. :return:
  12. """
  13. # start_point = (int(page) - 1) * offset
  14. # news_list = ZzNews.objects.filter(delete_flag=0).order_by("-create_time")[start_point:offset]
  15. # news_list = util.sql_array(news_list,
  16. # ['id', 'class_id', 'news_title', 'navi_content', 'create_user', 'create_time'])
  17. # return news_list
  18. start_point = (int(page) - 1) * page_size
  19. date_format = "%Y-%m-%d"
  20. cursor = connection.cursor()
  21. cursor.execute(
  22. 'select id,class_id,if(class_id=1,"公司新闻",if(class_id=2,"媒体报道",if(class_id=3,"行业动态",""))) as class_name, news_title,navi_content,create_user,date_format(create_time,%s) as create_time from zz_news where delete_flag=0 ORDER BY create_time DESC limit %s,%s ',
  23. [date_format, start_point, page_size])
  24. items = cursor.fetchall() # 读取所有
  25. desc = cursor.description
  26. li = []
  27. if items:
  28. for item in items:
  29. d = {}
  30. i = 0
  31. for de in desc:
  32. d[de[0]] = item[i]
  33. i = i + 1
  34. li.append(d)
  35. return li
  36. else:
  37. return li
  38. def get_news_by_class(class_id, page, page_size):
  39. """
  40. 根据分类获取新闻列表以及数量
  41. :param class_id: 当前分类, 默认1
  42. :param page: 当前页数,默认1
  43. :param page_size: 每页数量,默认8
  44. :return:
  45. """
  46. page_size = int(page_size)
  47. start_point = (int(page) - 1) * page_size
  48. # news_list = ZzNews.objects.filter(delete_flag=0, class_id=class_id).order_by("-create_time")[start_point:offset]
  49. # news_list = util.sql_array(news_list,
  50. # ['id', 'class_id', 'news_title', 'navi_content', 'create_user', 'create_time'])
  51. date_format = "%Y-%m-%d"
  52. cursor = connection.cursor()
  53. cursor.execute(
  54. 'select id,class_id,news_title,navi_content,content,create_user,date_format(create_time,%s) as create_time from zz_news WHERE delete_flag=0 and class_id = %s ORDER BY create_time DESC limit %s,%s ',
  55. [date_format, class_id, start_point, page_size])
  56. items = cursor.fetchall() # 读取所有
  57. desc = cursor.description
  58. news_list = []
  59. if items:
  60. for item in items:
  61. d = {}
  62. i = 0
  63. for de in desc:
  64. d[de[0]] = item[i]
  65. i = i + 1
  66. news_list.append(d)
  67. num = ZzNews.objects.filter(delete_flag=0, class_id=class_id).order_by("-create_time").aggregate(Count("id"))
  68. num = dict(num)
  69. paper = {}
  70. num['news_list'] = news_list
  71. paper['current'] = int(page)
  72. paper['page_size'] = int(page_size)
  73. paper['total'] = int(num['id__count'])
  74. paper['total_pages'] = math.ceil(int(num['id__count']) / int(page_size))
  75. num['page'] = paper
  76. return num
  77. def get_news_content(news_id):
  78. """
  79. 根据id获取新闻的内容
  80. :param news_id:
  81. :return: list
  82. """
  83. news = {}
  84. news_content = ZzNews.objects.filter(pk=news_id)
  85. news_content = util.sql_array(news_content,
  86. ['id', 'class_id', 'news_title', 'navi_content', 'content', 'create_user',
  87. 'create_time'])
  88. cursor = connection.cursor()
  89. sql='select * from zz_news WHERE delete_flag=0 and class_id = %s and create_time < "%s" order by create_time desc limit 1' %(news_content[0]['class_id'],news_content[0]['create_time'])
  90. cursor.execute(sql)
  91. items = cursor.fetchall() # 读取所有
  92. desc = cursor.description
  93. prev_content = []
  94. if items:
  95. for item in items:
  96. d = {}
  97. i = 0
  98. for de in desc:
  99. d[de[0]] = item[i]
  100. i = i + 1
  101. prev_content.append(d)
  102. cursor = connection.cursor()
  103. sql='select * from zz_news WHERE delete_flag=0 and class_id = %s and create_time > "%s" order by create_time limit 1' %(news_content[0]['class_id'],news_content[0]['create_time'])
  104. cursor.execute(sql)
  105. items = cursor.fetchall() # 读取所有
  106. desc = cursor.description
  107. next_content = []
  108. if items:
  109. for item in items:
  110. d = {}
  111. i = 0
  112. for de in desc:
  113. d[de[0]] = item[i]
  114. i = i + 1
  115. next_content.append(d)
  116. news['prev_news'] = prev_content
  117. news['current_news'] = news_content
  118. news['next_news'] = next_content
  119. return news