Ejemplo n.º 1
0
 def add_review_course(self, request):
     """为学生创建审课方案"""
     course = request.data.get('course')
     if not course[0]['student_id']:
         raise serializers.ValidationError('参数student_id不能为空')
     student = StudentInfo.objects.filter(
         id=course[0]['student_id']).first()
     student_server = UserInfo.objects.first()
     # student_server = request.user
     review = Review.objects.create(student=student,
                                    student_server=student_server)
     change_student_status(student_id=course[0]['student_id'],
                           status='TO_CHOOSE_COURSE')
     for cou in course:
         course = Course.objects.filter(id=cou['course_id']).first()
         real = Course.objects.filter(id=cou['course_id']).values(
             'course_code', 'name').first()
         ReviewCourse.objects.create(course_name=cou['course_name'],
                                     course_code=real['course_code'],
                                     review=review,
                                     course=course,
                                     school=cou['school'],
                                     real_name=real['name'],
                                     student_id=cou['student_id'],
                                     status='WAIT_CERTIFICATE')
         ReviewCourse.objects.filter(
             student_id=cou['student_id'],
             course_code=real['course_code']).update(
                 status='WAIT_CERTIFICATE')
     return Response('创建成功!')
Ejemplo n.º 2
0
 def score_recipient(self, request):
     """录入学生成绩等级或快递信息"""
     confirm_id = request.data.get('id')
     student_id = request.data.get('student_id')
     course_code = request.data.get('course_code')
     score = request.data.get('score')
     grade = request.data.get('grade')
     recipient_number = request.data.get('recipient_number')
     sending_date = request.data.get('sending_date')
     if not all([student_id, course_code]):
         raise serializers.ValidationError(
             '参数(student_id, course_code)不能为空')
     if score and grade:
         status = 'SCORE_WAIT'
         self.queryset.filter(student=student_id,
                              course_code=course_code).update(score=score,
                                                              grade=grade,
                                                              status=status)
         result = self.queryset.filter(student_id=student_id,
                                       status='NOTHING')
         if not result:
             change_student_status(student_id=student_id,
                                   status='AFTER_SCORE')
     if recipient_number and sending_date:
         convert_status = 'SENT'
         self.queryset.filter(id=confirm_id).update(
             convert_status=convert_status,
             recipient_number=recipient_number,
             sending_date=sending_date)
         result = self.queryset.filter(
             student_id=student_id,
             convert_status__in=['NO_SEND', 'RECEIVED'])
         if not result:
             change_student_status(student_id=student_id, status='POSTING')
     return Response('操作成功')
Ejemplo n.º 3
0
 def upload_certificate(self, request):
     """用户上传审课凭据"""
     course_code = request.data.get('course_code')
     course_name = request.data.get('course_name')
     certificate = request.data.get('certificate')
     remark = request.data.get('remark')
     if not all([course_code, certificate, course_name]):
         raise serializers.ValidationError(
             '参数(course_name, course_code, certificate)不能为空')
     review_course = ReviewCourse.objects.filter(course_code=course_code,
                                                 course_name=course_name,
                                                 student_id=request.user.id)
     if not review_course:
         raise serializers.ValidationError('该课程不存在')
     if certificate:
         image_base64 = str(certificate)[str(certificate).find(',') + 1:]
         image_data = base64.b64decode(image_base64)
         file_name = str(uuid.uuid4()) + '.' + str(
             certificate)[str(certificate).find('/') +
                          1:str(certificate).find(';')]
         abs_path = '%s/images/certificate/%s' % (settings.MEDIA_ROOT,
                                                  file_name)
         with open(abs_path, 'wb') as pic:
             pic.write(image_data)
         review_course.update(status='WAIT',
                              review_certificate='images/certificate/%s' %
                              file_name,
                              remark=remark)
         change_student_status(student_id=request.user.id,
                               status='UPLOAD_CONFIRM')
         return Response('审课凭据上传成功!')
     return Response('certificate有误')
Ejemplo n.º 4
0
 def create(self, validated_data):
     user = self.context['request'].user
     order = validated_data['order']
     order.status = 'TO_CONFIRM'
     # order.currency = validated_data.pop('currency')
     # order.payment = validated_data.pop('payment')
     order.save(update_fields=['status'])
     instance = super().create(validated_data)
     # HistoryFactory.create_record(operator=self.context['request'].user, source=instance.order, key='UPDATE',
     #                              remark='上传了订单支付信息', source_type='ORDER')
     if user.student_status in ['NEW', 'PERSONAL_FILE', 'SUPPLY_ORDER']:
         change_student_status(user.id, 'TO_PAYMENT_CONFIRM')
     return instance
Ejemplo n.º 5
0
 def confirm_review_course(self, request):
     """学服确认学生审课成功"""
     student_id = request.query_params.get('student_id')
     course_code = request.query_params.get('course_code')
     if not all([course_code, student_id]):
         raise serializers.ValidationError(
             '参数(student_id, course_code)不能为空')
     self.queryset.filter(course_code=course_code,
                          student_id=student_id).update(status='SUCCESS')
     result = self.queryset.filter(student_id=student_id,
                                   status__in=['WAIT', 'WAIT_CERTIFICATE'
                                               ]).exclude(status='FAIL')
     if not result:
         change_student_status(student_id=student_id,
                               status='PICKUP_COURSE')
     return Response('操作成功!')
Ejemplo n.º 6
0
 def confirm_convert(self, request):
     """学服确认学生转学分成功"""
     student_id = request.query_params.get('student_id')
     course_code = request.query_params.get('course_code')
     if not all([course_code, student_id]):
         raise serializers.ValidationError(
             '参数(course_code, student_id)不能为空')
     self.queryset.filter(course_code=course_code,
                          student_id=student_id).update(status='SUCCESS')
     result = self.queryset.filter(
         student_id=student_id,
         convert_status__in=['CONVERT_WAIT',
                             'WAIT_IMAGE']).exclude(convert_status='FAIL')
     if not result:
         change_student_status(student_id=student_id,
                               status='SWITCHED_COURSE')
     return Response('操作成功!')
Ejemplo n.º 7
0
 def update(self, instance, validated_data):
     instance = super().update(instance, validated_data)
     coupon_list = OrderCouponRelation.objects.filter(
         order=instance).values_list('coupon', flat=True)
     if instance.status == 'CONFIRMED':
         if coupon_list:
             StudentCoupon.objects.filter(
                 user=instance.user,
                 id__in=list(coupon_list)).update(status='USED')
         if instance.user.student_status == 'SUPPLY_ORDER':
             change_student_status(instance.user_id, 'PAYMENT_CONFIRMED')
     if instance.status == 'CANCELED':
         if coupon_list:
             StudentCoupon.objects.filter(
                 user=instance.user,
                 id__in=list(coupon_list)).update(status='TO_USE')
         if instance.user.student_status == 'SUPPLY_ORDER':
             change_student_status(instance.user_id, 'PERSONAL_FILE')
     return instance
Ejemplo n.º 8
0
    def additional_order_update(self, order, coupon_list, chart_ids, user):
        """订单创建后,更新与订单相关信息"""
        if coupon_list:
            # 更新优惠券状态
            for coupon_id in coupon_list:
                if StudentCoupon.objects.filter(user=user,
                                                coupon_id=coupon_id,
                                                status='TO_USE').exists():
                    StudentCoupon.objects.filter(
                        user=user, coupon_id=coupon_id,
                        status='TO_USE').update(status='LOCKED')
                OrderCouponRelation.objects.create(**{
                    'coupon_id': coupon_id,
                    'order': order,
                    'remark': '创建了订单'
                })
        # 创建订单与商品关系
        order_chart = []
        for chart_id in chart_ids:
            order_chart.append(
                OrderChartRelation(order=order, chart_id=chart_id))
        OrderChartRelation.objects.bulk_create(order_chart)

        # 更新购物车
        ShoppingChart.objects.filter(id__in=chart_ids).update(status='ORDERED')
        # 操作记录
        OperationLog.objects.create(operator=user,
                                    operation=1,
                                    target=user.id,
                                    ip_address=get_ip_address(
                                        self.context['request']),
                                    description='创建了订单')
        # order_auto_notice_message(order=order, user=user)
        if user.student_status in ['NEW', 'PERSONAL_FILE']:
            change_student_status(user.id, 'SUPPLY_ORDER')
        return