125 lines
4.5 KiB
Python
125 lines
4.5 KiB
Python
# -*- coding:utf-8 -*-
|
||
'''
|
||
@Author:Robin.lau
|
||
@Email: 329080237@qq.com
|
||
@Wechat: 15618110227
|
||
@File: api.py
|
||
@Date: 2021/2/27 13:45
|
||
@Description:本模块Api接口主文件,如接口比较复杂可以拆分多个文件
|
||
'''
|
||
from web.search.api import project
|
||
from django.db.models import Q
|
||
from django.views.generic import View
|
||
from utils.public import *
|
||
from web.models import *
|
||
import json
|
||
import random
|
||
|
||
class myQuestion(View):
|
||
@try_except
|
||
def get(self, request):
|
||
user_id = request.session.get("user_id")
|
||
items = Question.objects.filter(userKey_id=user_id).values("id","name").order_by("-id")[:5]
|
||
for i in items:
|
||
i['reply'] = ReplyAnswer.objects.filter(answerKey__questionKey_id=i['id']).count()
|
||
i['answer'] = Answer.objects.filter(questionKey=i['id']).count()
|
||
|
||
resData = {
|
||
"items": list(items)
|
||
}
|
||
return jsonData(data=resData)
|
||
|
||
class todoQuestion(View):
|
||
@try_except
|
||
def get(self, request):
|
||
data = json.loads(request.GET.get("data"))
|
||
pageNo = data.get("pageNo")
|
||
pageSize = data.get("pageSize")
|
||
user_id = request.session.get("user_id")
|
||
items = Question.objects.order_by("-infoDateTime").values("id","content","name")
|
||
items = items.filter(state=0) #待解决问题
|
||
items = items.exclude(userKey_id=user_id) #排除我的提问
|
||
items = items.exclude(answer__userKey_id=user_id) #排除我回答过的问题
|
||
#测试时宽松条件
|
||
#items = Question.objects.exclude(userKey_id=user_id).order_by("?").values("id", "content", "name")[:1]
|
||
return_items = getPageRecord(items, pageNo, pageSize)
|
||
resData = {
|
||
"items": return_items,
|
||
"total": items.count()
|
||
}
|
||
return jsonData(data=resData)
|
||
|
||
class getMyinfo(View):
|
||
@try_except
|
||
def get(self, request):
|
||
user_id = request.session.get("user_id")
|
||
print(user_id)
|
||
args = ("id", "nickName", "avatar")
|
||
item = User.objects.filter(id=user_id).values(*args)[0]
|
||
item['myFans'] = FollowMember.objects.filter(userKey=user_id).count()
|
||
item['myFocus'] = FollowMember.objects.filter(followerKey=user_id).count()
|
||
|
||
resData = {
|
||
"items": item
|
||
}
|
||
console(resData)
|
||
return jsonData(data=resData)
|
||
|
||
class hotQuestion(View):
|
||
@staticmethod
|
||
@try_except
|
||
def sortItems(data, sortKey, reverse=True):
|
||
#倒序处理 sorted() 默认从小到大,reverse=TRUE 调整为 从大到小
|
||
newData = sorted(data, key=lambda x: x[sortKey], reverse=reverse)
|
||
return newData
|
||
|
||
@try_except
|
||
def get(self, request):
|
||
data = json.loads(request.GET.get("data"))
|
||
user_id = request.session.get("user_id")
|
||
pageNo = data.get("pageNo")
|
||
pageSize = data.get('pageSize')
|
||
ip = visitor_ip_address(request)
|
||
items = Question.objects.filter().order_by("-id").values()
|
||
for i in items:
|
||
i['good'] = QuestionTriple.objects.filter(type=1, questionKey_id=i['id']).count()
|
||
i['totalAnswer'] = Answer.objects.filter(questionKey_id=i['id']).count()
|
||
i['myClick'] = QuestionTriple.objects.filter(type=1, questionKey_id=i['id']).filter(
|
||
Q(userKey_id=user_id) | Q(ip=ip)).count()
|
||
i["randomKey"] = random.random()
|
||
|
||
return_items = hotQuestion.sortItems(items, "randomKey")
|
||
resData = {
|
||
"items": return_items[:5],
|
||
"total": items.count()
|
||
}
|
||
res = jsonData(data=resData)
|
||
return res
|
||
|
||
class hotProject(View):
|
||
@staticmethod
|
||
@try_except
|
||
def sortItems(data, sortKey, reverse=True):
|
||
#倒序处理 sorted() 默认从小到大,reverse=TRUE 调整为 从大到小
|
||
newData = sorted(data, key=lambda x: x[sortKey], reverse=reverse)
|
||
return newData
|
||
|
||
@try_except
|
||
def get(self, request):
|
||
user_id = request.session.get("user_id")
|
||
ip = visitor_ip_address(request)
|
||
items = Project.objects.filter().order_by("-id").values()
|
||
args = ("id", "nickName", "avatar")
|
||
for i in items:
|
||
i['randomKey'] = random.random()
|
||
i['user'] = User.objects.filter(id=i['userKey_id']).values(*args)[0]
|
||
i['like'] = ProjectTriple.objects.filter(projectKey_id= i['id'], type=1).count()
|
||
items = hotProject.sortItems(items, "randomKey", reverse=False)[:3]
|
||
resData = {
|
||
"items": list(items),
|
||
"total": 3
|
||
}
|
||
res = jsonData(data=resData)
|
||
return res
|
||
|