123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- from utils.custom_modelviewset import CustomModelViewSet
- from django.db import transaction
- import json
- from django.db.models import Sum
- from rest_framework.decorators import action
- from .serializers import *
- from .filters import *
- from rest_framework.views import APIView
- from apps.log.models import BizLog
- from utils import response_ok, response_error
- from utils.exceptions import CustomError
- from utils.permission import isLogin
- from django.contrib.auth import get_user_model
- User = get_user_model()
- from utils.file_operation import attachment_save
- class ConfigViewSet(CustomModelViewSet):
- permission_classes = [isLogin, ]
- queryset = Config.objects.filter()
- serializer_class = ConfigSerializer
- def list(self, request, *args, **kwargs):
- queryset = self.filter_queryset(self.get_queryset())
- serializer = self.get_serializer(queryset, many=True)
- return response_ok(serializer.data)
- def create(self, request, *args, **kwargs):
- try:
- data = json.loads(request.POST.get('data'))
- pay_picture = request.FILES.get('pay_picture')
- keys = ['leave_lead_time', ]
- with transaction.atomic():
- for item in data:
- config = Config.objects.filter(property=item['key']).first()
- if item['value']:
- if item['key'] not in keys:
- raise CustomError(u'综合设置属性[%s]不存在' % item['key'])
- else:
- item['value'] = item['value'].strip()
- if config:
- config.value = item['value']
- config.save()
- else:
- Config.objects.create(property=item['key'], value=item['value'])
- BizLog.objects.addnew(self.request.user, BizLog.INSERT, u'修改系统配置', data)
- except CustomError as e:
- return response_error(e.get_error_msg())
- except Exception as e:
- return response_error(str(e))
- return response_ok()
- class BalanceViewSet(CustomModelViewSet):
- permission_classes = [isLogin, ]
- queryset = Balance.objects.filter()
- serializer_class = BalanceSerializer
- def filter_queryset(self, queryset):
- queryset = queryset.filter()
- if self.request.user.type == User.CUSTOMER:
- queryset = queryset.filter(create_user=self.request.user)
- return queryset
- @action(methods=['post'], detail=False)
- def clear_balance(self, request):
- create_user = request.GET.get('create_user')
- reason = request.POST.get('reason')
- instance = Balance.objects.filter(create_user_id=create_user).first()
- try:
- if not reason:
- raise CustomError('请填写清空原因!')
- if not instance:
- raise CustomError('学生信息错误,请刷新重试!')
- with transaction.atomic():
- if instance.balance <= 0:
- raise CustomError('余额为0,不能清空!')
- desc = '清空余额,原因:{}'.format(reason)
- Balance.update_balance(instance.create_user, -instance.balance, desc)
- instance.balance = 0
- instance.save()
- BizLog.objects.addnew(self.request.user, BizLog.INSERT, u'清空[{}]余额, id={}'.
- format(instance.create_user.username, instance.id), )
- except CustomError as e:
- return response_error(e.get_error_msg())
- except Exception as e:
- return response_error(str(e))
- return response_ok()
- class BalanceLogViewSet(CustomModelViewSet):
- permission_classes = [isLogin, ]
- queryset = BalanceLog.objects.filter()
- serializer_class = BalanceLogSerializer
- def filter_queryset(self, queryset):
- description = self.request.GET.get('description')
- queryset = queryset.filter()
- if self.request.user.type == User.CUSTOMER:
- queryset = queryset.filter(create_user=self.request.user)
- if description:
- queryset = queryset.filter(description__icontains=description)
- return queryset
- class PosterView(APIView):
- def get(self, request):
- data = []
- queryset = Poster.objects.filter()
- for row in queryset:
- data.append(settings.SERVER_DOMAIN + row.image)
- return response_ok(data)
- class PosterViewSet(CustomModelViewSet):
- permission_classes = [isLogin, ]
- queryset = Poster.objects.filter()
- serializer_class = PosterSerializer
- def create(self, request, *args, **kwargs):
- banner_img = request.FILES.get('banner_img')
- try:
- with transaction.atomic():
- poster = Poster.objects.create(create_user=request.user)
- poster._add_img(banner_img)
- BizLog.objects.addnew(self.request.user, BizLog.INSERT, u'添加轮播信息, id={}'.
- format(poster.id), )
- return response_ok()
- except CustomError as e:
- return response_error(e.get_error_msg())
- except Exception as e:
- return response_error(str(e))
|