You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

128 lines
4.6 KiB

  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