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.
213 lines
6.7 KiB
213 lines
6.7 KiB
6 months ago
|
# Create your views here.
|
||
|
from django.db import connection
|
||
|
from rest_framework.decorators import api_view, authentication_classes
|
||
|
|
||
|
from myapp import utils
|
||
|
from myapp.handler import APIResponse
|
||
|
from myapp.models import Classification, Thing, Tag, User
|
||
|
from myapp.serializers import ThingSerializer, ClassificationSerializer, ListThingSerializer, DetailThingSerializer
|
||
|
from myapp.utils import dict_fetchall
|
||
|
|
||
|
|
||
|
@api_view(['GET'])
|
||
|
def list_api(request):
|
||
|
if request.method == 'GET':
|
||
|
keyword = request.GET.get("keyword", None)
|
||
|
c = request.GET.get("c", None)
|
||
|
tag = request.GET.get("tag", None)
|
||
|
sort = request.GET.get("sort", 'recent')
|
||
|
|
||
|
# 排序方式
|
||
|
order = '-create_time'
|
||
|
if sort == 'recent':
|
||
|
order = '-create_time'
|
||
|
elif sort == 'hot' or sort == 'recommend':
|
||
|
order = '-pv'
|
||
|
|
||
|
if keyword:
|
||
|
things = Thing.objects.filter(title__contains=keyword).order_by(order)
|
||
|
|
||
|
# todo
|
||
|
elif c and int(c) > -1:
|
||
|
ids = [c]
|
||
|
|
||
|
things = Thing.objects.filter(classification_id__in=ids).order_by(order)
|
||
|
|
||
|
elif tag:
|
||
|
tag = Tag.objects.get(id=tag)
|
||
|
print(tag)
|
||
|
things = tag.thing_set.all().order_by(order)
|
||
|
else:
|
||
|
things = Thing.objects.all().defer('wish').order_by(order)
|
||
|
|
||
|
serializer = ListThingSerializer(things, many=True)
|
||
|
return APIResponse(code=0, msg='查询成功', data=serializer.data)
|
||
|
|
||
|
|
||
|
@api_view(['GET'])
|
||
|
def detail(request):
|
||
|
try:
|
||
|
pk = request.GET.get('id', -1)
|
||
|
thing = Thing.objects.get(pk=pk)
|
||
|
except Thing.DoesNotExist:
|
||
|
utils.log_error(request, '对象不存在')
|
||
|
return APIResponse(code=1, msg='对象不存在')
|
||
|
|
||
|
if request.method == 'GET':
|
||
|
serializer = ThingSerializer(thing)
|
||
|
return APIResponse(code=0, msg='查询成功', data=serializer.data)
|
||
|
|
||
|
|
||
|
@api_view(['POST'])
|
||
|
def increaseWishCount(request):
|
||
|
try:
|
||
|
pk = request.GET.get('id', -1)
|
||
|
thing = Thing.objects.get(pk=pk)
|
||
|
# wish_count加1
|
||
|
thing.wish_count = thing.wish_count + 1
|
||
|
thing.save()
|
||
|
except Thing.DoesNotExist:
|
||
|
utils.log_error(request, '对象不存在')
|
||
|
return APIResponse(code=1, msg='对象不存在')
|
||
|
|
||
|
serializer = ThingSerializer(thing)
|
||
|
return APIResponse(code=0, msg='操作成功', data=serializer.data)
|
||
|
|
||
|
@api_view(['POST'])
|
||
|
def increaseRecommendCount(request):
|
||
|
try:
|
||
|
pk = request.GET.get('id', -1)
|
||
|
thing = Thing.objects.get(pk=pk)
|
||
|
# recommend_count加1
|
||
|
thing.recommend_count = thing.recommend_count + 1
|
||
|
thing.save()
|
||
|
except Thing.DoesNotExist:
|
||
|
utils.log_error(request, '对象不存在')
|
||
|
return APIResponse(code=1, msg='对象不存在')
|
||
|
|
||
|
serializer = ThingSerializer(thing)
|
||
|
return APIResponse(code=0, msg='操作成功', data=serializer.data)
|
||
|
|
||
|
@api_view(['POST'])
|
||
|
def addWishUser(request):
|
||
|
try:
|
||
|
username = request.GET.get('username', None)
|
||
|
thingId = request.GET.get('thingId', None)
|
||
|
|
||
|
if username and thingId:
|
||
|
user = User.objects.get(username=username)
|
||
|
thing = Thing.objects.get(pk=thingId)
|
||
|
|
||
|
if user not in thing.wish.all():
|
||
|
thing.wish.add(user)
|
||
|
thing.wish_count += 1
|
||
|
thing.save()
|
||
|
|
||
|
except Thing.DoesNotExist:
|
||
|
utils.log_error(request, '操作失败')
|
||
|
return APIResponse(code=1, msg='操作失败')
|
||
|
|
||
|
serializer = ThingSerializer(thing)
|
||
|
return APIResponse(code=0, msg='操作成功', data=serializer.data)
|
||
|
|
||
|
@api_view(['POST'])
|
||
|
def removeWishUser(request):
|
||
|
try:
|
||
|
username = request.GET.get('username', None)
|
||
|
thingId = request.GET.get('thingId', None)
|
||
|
|
||
|
if username and thingId:
|
||
|
user = User.objects.get(username=username)
|
||
|
thing = Thing.objects.get(pk=thingId)
|
||
|
|
||
|
if user in thing.wish.all():
|
||
|
thing.wish.remove(user)
|
||
|
thing.wish_count -= 1
|
||
|
thing.save()
|
||
|
|
||
|
except Thing.DoesNotExist:
|
||
|
utils.log_error(request, '操作失败')
|
||
|
return APIResponse(code=1, msg='操作失败')
|
||
|
|
||
|
return APIResponse(code=0, msg='操作成功')
|
||
|
|
||
|
@api_view(['GET'])
|
||
|
def getWishThingList(request):
|
||
|
try:
|
||
|
username = request.GET.get('username', None)
|
||
|
if username:
|
||
|
user = User.objects.get(username=username)
|
||
|
things = user.wish_things.all()
|
||
|
serializer = ListThingSerializer(things, many=True)
|
||
|
return APIResponse(code=0, msg='操作成功', data=serializer.data)
|
||
|
else:
|
||
|
return APIResponse(code=1, msg='username不能为空')
|
||
|
|
||
|
except Exception as e:
|
||
|
utils.log_error(request, '操作失败' + str(e))
|
||
|
return APIResponse(code=1, msg='获取心愿单失败')
|
||
|
|
||
|
|
||
|
@api_view(['POST'])
|
||
|
def addCollectUser(request):
|
||
|
try:
|
||
|
username = request.GET.get('username', None)
|
||
|
thingId = request.GET.get('thingId', None)
|
||
|
|
||
|
if username and thingId:
|
||
|
user = User.objects.get(username=username)
|
||
|
thing = Thing.objects.get(pk=thingId)
|
||
|
|
||
|
if user not in thing.collect.all():
|
||
|
thing.collect.add(user)
|
||
|
thing.collect_count += 1
|
||
|
thing.save()
|
||
|
|
||
|
except Thing.DoesNotExist:
|
||
|
utils.log_error(request, '操作失败')
|
||
|
return APIResponse(code=1, msg='操作失败')
|
||
|
|
||
|
serializer = DetailThingSerializer(thing)
|
||
|
return APIResponse(code=0, msg='操作成功', data=serializer.data)
|
||
|
|
||
|
|
||
|
@api_view(['POST'])
|
||
|
def removeCollectUser(request):
|
||
|
try:
|
||
|
username = request.GET.get('username', None)
|
||
|
thingId = request.GET.get('thingId', None)
|
||
|
|
||
|
if username and thingId:
|
||
|
user = User.objects.get(username=username)
|
||
|
thing = Thing.objects.get(pk=thingId)
|
||
|
|
||
|
if user in thing.collect.all():
|
||
|
thing.collect.remove(user)
|
||
|
thing.collect_count -= 1
|
||
|
thing.save()
|
||
|
|
||
|
except Thing.DoesNotExist:
|
||
|
utils.log_error(request, '操作失败')
|
||
|
return APIResponse(code=1, msg='操作失败')
|
||
|
|
||
|
return APIResponse(code=0, msg='操作成功')
|
||
|
|
||
|
|
||
|
@api_view(['GET'])
|
||
|
def getCollectThingList(request):
|
||
|
try:
|
||
|
username = request.GET.get('username', None)
|
||
|
if username:
|
||
|
user = User.objects.get(username=username)
|
||
|
things = user.collect_things.all()
|
||
|
serializer = ListThingSerializer(things, many=True)
|
||
|
return APIResponse(code=0, msg='操作成功', data=serializer.data)
|
||
|
else:
|
||
|
return APIResponse(code=1, msg='username不能为空')
|
||
|
|
||
|
except Exception as e:
|
||
|
utils.log_error(request, '操作失败' + str(e))
|
||
|
return APIResponse(code=1, msg='获取收藏失败')
|
||
|
|
||
|
|