cabinet-manage/home/api.py

125 lines
4.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding:utf-8 -*-
'''
@AuthorRobin.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