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

150 lines
6.2 KiB
Python

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="未获取到该数据或无权限")