|
- from backend.models import ZzNews
- from common import util
- from django.db import connection
- from django.db.models import Sum, Count
- import math
-
-
- def get_news(page, page_size):
- """
- 根据页数获取新闻列表
- :param page: 当前页数,默认1
- :param page_size: 每页条数,默认8
- :return:
- """
- # start_point = (int(page) - 1) * offset
- # news_list = ZzNews.objects.filter(delete_flag=0).order_by("-create_time")[start_point:offset]
- # news_list = util.sql_array(news_list,
- # ['id', 'class_id', 'news_title', 'navi_content', 'create_user', 'create_time'])
- # return news_list
- start_point = (int(page) - 1) * page_size
- date_format = "%Y-%m-%d"
- cursor = connection.cursor()
- cursor.execute(
- '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 ',
- [date_format, start_point, page_size])
- items = cursor.fetchall() # 读取所有
- desc = cursor.description
- li = []
- if items:
- for item in items:
- d = {}
- i = 0
- for de in desc:
- d[de[0]] = item[i]
- i = i + 1
- li.append(d)
- return li
- else:
- return li
-
-
- def get_news_by_class(class_id, page, page_size):
- """
- 根据分类获取新闻列表以及数量
- :param class_id: 当前分类, 默认1
- :param page: 当前页数,默认1
- :param page_size: 每页数量,默认8
- :return:
- """
- page_size = int(page_size)
- start_point = (int(page) - 1) * page_size
- # news_list = ZzNews.objects.filter(delete_flag=0, class_id=class_id).order_by("-create_time")[start_point:offset]
- # news_list = util.sql_array(news_list,
- # ['id', 'class_id', 'news_title', 'navi_content', 'create_user', 'create_time'])
- date_format = "%Y-%m-%d"
- cursor = connection.cursor()
- cursor.execute(
- '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 ',
- [date_format, class_id, start_point, page_size])
- items = cursor.fetchall() # 读取所有
- desc = cursor.description
- news_list = []
- if items:
- for item in items:
- d = {}
- i = 0
- for de in desc:
- d[de[0]] = item[i]
- i = i + 1
- news_list.append(d)
- num = ZzNews.objects.filter(delete_flag=0, class_id=class_id).order_by("-create_time").aggregate(Count("id"))
- num = dict(num)
- paper = {}
- num['news_list'] = news_list
- paper['current'] = int(page)
- paper['page_size'] = int(page_size)
- paper['total'] = int(num['id__count'])
- paper['total_pages'] = math.ceil(int(num['id__count']) / int(page_size))
- num['page'] = paper
- return num
-
-
- def get_news_content(news_id):
- """
- 根据id获取新闻的内容
- :param news_id:
- :return: list
- """
- news = {}
- news_content = ZzNews.objects.filter(pk=news_id)
- news_content = util.sql_array(news_content,
- ['id', 'class_id', 'news_title', 'navi_content', 'content', 'create_user',
- 'create_time'])
-
- cursor = connection.cursor()
- 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'])
- cursor.execute(sql)
- items = cursor.fetchall() # 读取所有
- desc = cursor.description
- prev_content = []
- if items:
- for item in items:
- d = {}
- i = 0
- for de in desc:
- d[de[0]] = item[i]
- i = i + 1
- prev_content.append(d)
-
- cursor = connection.cursor()
- 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'])
- cursor.execute(sql)
- items = cursor.fetchall() # 读取所有
- desc = cursor.description
- next_content = []
- if items:
- for item in items:
- d = {}
- i = 0
- for de in desc:
- d[de[0]] = item[i]
- i = i + 1
- next_content.append(d)
- news['prev_news'] = prev_content
- news['current_news'] = news_content
- news['next_news'] = next_content
- return news
|