dvlyadmin_pro/backend/apps/lyTiktokUnion/views/dyAwardTaskManageViews.py
2025-03-18 08:46:50 +08:00

80 lines
3.4 KiB
Python

from rest_framework.views import APIView
from apps.lyTiktokUnion.models import DyAwardTaskManage
from utils.jsonResponse import SuccessResponse,ErrorResponse,DetailResponse
from utils.common import get_parameter_dic,formatdatetime
from django.db.models import Q,F,Sum,Count
from django.db import transaction
from rest_framework import serializers
from rest_framework_simplejwt.authentication import JWTAuthentication
from utils.serializers import CustomModelSerializer
from utils.viewset import CustomModelViewSet
from rest_framework.permissions import IsAuthenticated
from utils.pagination import CustomPagination
from apps.lyTiktokUnion.tools.douyin import colonelAwardTaskSync
import django_filters
import logging
logger = logging.getLogger(__name__)
class DyAwardTaskManageFilterset(django_filters.rest_framework.FilterSet):
#开始时间
beginAt = django_filters.DateTimeFilter(field_name='update_datetime', lookup_expr='gte') # 指定过滤的字段
#结束时间
endAt = django_filters.DateTimeFilter(field_name='update_datetime', lookup_expr='lte')
# 模糊搜索
task_id = django_filters.CharFilter(field_name='task_id', lookup_expr='icontains') # icontains表示该字段模糊搜索
task_name = django_filters.CharFilter(field_name='task_name', lookup_expr='icontains') # icontains表示该字段模糊搜索
status = django_filters.CharFilter(field_name='status')
task_status = django_filters.CharFilter(field_name='task_status')
class Meta:
model = DyAwardTaskManage
fields = ['beginAt', 'endAt','task_status','status','task_id','task_name']
class DyAwardTaskManageSerializer(CustomModelSerializer):
task_status_name = serializers.SerializerMethodField()
def get_task_status_name(self,obj):
return obj.get_task_status_display()
class Meta:
model = DyAwardTaskManage
read_only_fields = ["id"]
fields = '__all__'
class DyAwardTaskManageViewSet(CustomModelViewSet):
queryset = DyAwardTaskManage.objects.all().order_by("-sort")
serializer_class = DyAwardTaskManageSerializer
filterset_class = DyAwardTaskManageFilterset
# search_fields = ("name",)
def editsort(self,request,*args, **kwargs):
"""修改排序"""
sort = get_parameter_dic(request)['sort']
queryset = self.filter_queryset(self.get_queryset())
instance = queryset.filter(id=kwargs.get('pk')).first()
instance.sort = sort
instance.save()
return SuccessResponse(msg="修改成功")
def disablestatus(self,request,*args, **kwargs):
"""禁用状态"""
queryset = self.filter_queryset(self.get_queryset())
instance = queryset.filter(id=kwargs.get('pk')).first()
if instance:
if instance.status:
instance.status = False
else:
instance.status = True
instance.save()
return SuccessResponse(data=None, msg="修改成功")
else:
return ErrorResponse(msg="未获取到该数据或无权限")
def sync_alliance_AwardTask(self,request):
"""同步赏金任务"""
isok = colonelAwardTaskSync()
if isok:
return SuccessResponse(msg="赏金任务同步成功")
return ErrorResponse(msg="赏金任务同步失败" )