from rest_framework.views import APIView from apps.lyTiktokUnion.models import DyProductManage,DyProductCategoryManage 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 allianceColonelGoodsSync import json import django_filters import datetime import logging logger = logging.getLogger(__name__) class DyProductManageFilterset(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') # 模糊搜索 title = django_filters.CharFilter(field_name='title', lookup_expr='icontains') # icontains表示该字段模糊搜索 status = django_filters.CharFilter(field_name='status') is_calc_award = django_filters.CharFilter(field_name='is_calc_award') source = django_filters.CharFilter(field_name='source') product_id = django_filters.CharFilter(field_name='product_id', lookup_expr='icontains') class Meta: model = DyProductManage fields = ['beginAt', 'endAt','title','status','source','is_calc_award','product_id'] class DyProductManageSerializer(CustomModelSerializer): source_name = serializers.SerializerMethodField() def get_source_name(self,obj): return obj.get_source_display() class Meta: model = DyProductManage read_only_fields = ["id"] fields = '__all__' class DyProductManageViewSet(CustomModelViewSet): queryset = DyProductManage.objects.filter(is_delete=False).order_by("-sort") serializer_class = DyProductManageSerializer filterset_class = DyProductManageFilterset # search_fields = ("name",) def sync_alliance_colonel_goods(self,request): """同步团长活动商品""" isok = allianceColonelGoodsSync() if isok: return SuccessResponse(msg="团长活动商品同步成功") return ErrorResponse(msg="团长活动商品同步失败" ) def editAttribute(self,request,*args, **kwargs): """编辑属性""" queryset = self.filter_queryset(self.get_queryset()) instance = queryset.filter(id=kwargs.get('pk')).first() reqData = get_parameter_dic(request) instance.sample_stock = reqData.get('sample_stock',0) instance.limit_d30_sales = reqData.get('limit_d30_sales', 0) instance.begin_time = reqData.get('begin_time', None) instance.end_time = reqData.get('end_time', None) instance.save() return DetailResponse(msg="修改成功") 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 disablecalcaward(self,request,*args, **kwargs): """禁用计算奖励""" queryset = self.filter_queryset(self.get_queryset()) instance = queryset.filter(id=kwargs.get('pk')).first() if instance: if instance.is_calc_award: instance.is_calc_award = False else: instance.is_calc_award = True instance.save() return SuccessResponse(data=None, msg="修改成功") else: return ErrorResponse(msg="未获取到该数据或无权限") class DyProductCategoryManageFilterset(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') # 模糊搜索 name = django_filters.CharFilter(field_name='name', lookup_expr='icontains') # icontains表示该字段模糊搜索 status = django_filters.CharFilter(field_name='status') class Meta: model = DyProductCategoryManage fields = ['beginAt', 'endAt','name','status'] class DyProductCategoryManageSerializer(CustomModelSerializer): class Meta: model = DyProductCategoryManage read_only_fields = ["id"] fields = '__all__' class DyProductCategoryManageViewSet(CustomModelViewSet): queryset = DyProductCategoryManage.objects.all().order_by("-sort") serializer_class = DyProductCategoryManageSerializer filterset_class = DyProductCategoryManageFilterset search_fields = ("name",) 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="未获取到该数据或无权限")