Exemple #1
0
    def put(self, request):
        res = BaseResponse()
        try:
            # 负责处理第三方订单
            # 获取数据
            self.get_data(request)
            # 校验数据合法性
            self.check_data()
            #  校验成功,修改订单状态
            self.update_order()
            # 添加用户课程购买的记录
            self.update_study_course()

            res.data = '订单付款成功'

            return Response(res.dic)
        except KeyError as e:
            print(e)
            res.code = 1040
            res.errors = '订单参数不合法'
            return Response(res.dic)
        except Exception as e:
            print(e)
            res.code = 1045
            res.errors = '订单未知错误'
            return Response(res.dic)
 def put(self, request):
     user = request.user
     user_id = user.id
     # user_id = 1  # 写死了
     course_id = request.data.get('course_id', '')
     price_policy_id = request.data.get('price_policy_id', '')
     res = BaseResponse()
     name = SHOPPING_CAR % (user_id, course_id)
     if not course_id or not price_policy_id:
         res.code = 1020
         res.errors = '购物车请求参数不合法'
         return Response(res.dic)
     if not CONN.exists(name):
         res.code = 1025
         res.errors = '购物车课程id不合法'
         return Response(res.dic)
     course_info = CONN.hgetall(name)
     price_policy_dic = course_info.get('price_policy_dic')
     price_policy_dic = json.loads(price_policy_dic, encoding='utf-8')
     if str(price_policy_id) not in price_policy_dic:
         res.code = 1021
         res.errors = '价格策略id不合法'
         return Response(res.dic)
     course_info['price_policy_default_id'] = price_policy_id
     try:
         CONN.hmset(name, course_info)
         res.data = '更新购物车成功'
         return Response(res.dic)
     except Exception as e:
         res.code = 1022
         res.errors = '加入购物车失败'
         return Response(res.dic)
 def delete(self, request):
     res = BaseResponse()
     try:
         user = request.user
         user_id = user.id
         # user_id = 1  # 写死了
         course_list = request.data.get('course_list', '')
         pipe = CONN.pipeline(transaction=True)
         pipe.multi()
         if not course_list:
             res.code = 1020
             res.errors = '购物车请求参数不合法'
             return Response(res.dic)
         for course_id in course_list:
             print(type(course_id), course_id)
             name = SHOPPING_CAR % (user_id, str(course_id))
             if not CONN.exists(name):
                 res.code = 1025
                 res.errors = '购物车课程id不合法'
                 return Response(res.dic)
             pipe.delete(name)
         pipe.execute()
         if course_list:
             UserInfo.objects.filter(pk=user_id).update(
                 shop_cart_num=F('shop_cart_num') - 1)
         return Response(res.dic)
     except Exception as e:
         print(e)
         res.code = 1022
         res.errors = '删除购物车失败'
         return Response(res.dic)
Exemple #4
0
 def post(self, request):
     r = BaseResponse()
     data = request.data
     username = data.get('username')
     password = data.get('password')
     if not username or not password:
         r.code = 1001
         r.errors = '用户名或密码为空'
         return Response(r.dic)
     user = UserInfo.objects.filter(username=username,
                                    password=password).first()
     if not user:
         r.code = 1002
         r.errors = '用户名或密码为错误'
         return Response(r.dic)
     self.init_permission(user)
     token = uuid.uuid4()
     CONN.set(str(token), user.id, ex=36000)
     r.data = {
         'access_token':
         token,
         "user":
         dict(id=user.id,
              username=username,
              shop_cart_num=user.shop_cart_num,
              balance=user.balance)
     }
     return Response(r.dic)
    def post(self, request):
        ret = BaseResponse()
        user = request.user
        user_id = user.id
        course_id = request.data.get('course_id', '')
        price_policy_id = request.data.get('price_policy_id', '')
        if not course_id or not price_policy_id:
            ret.code = 1020
            ret.errors = '购物车请求参数不合法'
            return Response(ret.dic)
        course = Course.objects.filter(pk=course_id).first()
        if not course:
            ret.code = 1025
            ret.errors = '购物车课程id不合法'
            return Response(ret.dic)
        if StudyCourse.objects.filter(account=user, course=course).exists():
            ret.code = 1024
            ret.errors = '课程已购买,请勿重复加入购物车'
            return Response(ret.dic)
        price_policy_qs = course.price_policy.all()
        price_policy_dic = {}
        for obj in price_policy_qs:
            price_policy_dic[obj.id] = dict(
                id=obj.id,
                price=obj.price,
                valid_period_display=obj.get_valid_period_display(),
                valid_period=obj.valid_period)
        if price_policy_id not in price_policy_dic:
            ret.code = 1021
            ret.errors = '购物车价格策略id不合法'
            return Response(ret.dic)

        price_policy_dic = json.dumps(price_policy_dic, ensure_ascii=False)
        key = SHOPPING_CAR % (user_id, course_id)
        value = dict(course_id=course_id,
                     title=course.title,
                     course_img=str(course.course_img),
                     price_policy_dic=price_policy_dic,
                     price_policy_default_id=price_policy_id)
        try:
            if not CONN.exists(key):
                UserInfo.objects.filter(pk=user_id).update(
                    shop_cart_num=F('shop_cart_num') + 1)
            CONN.hmset(key, value)
            ret.data = '加入购物车成功'
            return Response(ret.dic)
        except Exception as e:
            ret.code = 1022
            ret.errors = '加入购物车失败'
            return Response(ret.dic)
 def post(self, request, pk):
     res = BaseResponse()
     correction_file = request.FILES.get('correction_file')
     if not correction_file:
         res.code = 1010
         res.errors = "上传批改结果为空"
         return Response(res.dic)
     obj = HomeworkRecord.objects.filter(pk=pk).first()
     form = HomeworkRecordForm(request.data, request.FILES,
                               instance=obj)  # 注意获取数据的方式
     if form.is_valid():
         form.save()
         HomeworkRecord.objects.filter(pk=pk).update(homework_status=3)
         res.data = dict(homework_record_id=pk)
         return Response(res.dic)
     else:
         res.code = 1011
         res.errors = '上传失败,请重新上传'
         return Response(res.dic)
Exemple #7
0
 def post(self, request):
     r = BaseResponse()
     username = request.data.get('username')
     password = request.data.get('password')
     if username is None or password is None:
         r.code = 1005
         r.errors = '注册的用户名或密码为空'
         return Response(r.dic)
     if UserInfo.objects.filter(username=username).exists():
         r.code = 1006
         r.errors = '注册用户已存在'
         return Response(r.dic)
     user = UserInfo.objects.create(username=username, password=password)
     user.roles.set(*["3"])  # 通过该接口默认分配学生角色
     r.data = {
         'user':
         dict(id=user.id,
              username=username,
              shop_cart_num=user.shop_cart_num)
     }
     return Response(r.dic)
Exemple #8
0
    def post(self, request):
        res = BaseResponse()
        try:
            # 接受request数据

            self.get_data(request)

            # 校验数据+计算价格
            self.check_data()

            # 校验计算价格和发过来的价格是否一致,保留两位小数
            if '%.2f' % self.price != '%.2f' % float(self.total_price):
                raise KeyError

            # 创建订单,更新优惠卷状态,为已经使用,
            order_id = self.create_order()
            res.data = {'order_id': order_id}
            return Response(res.dic)
        except ValueError as e:
            print(e)
            res.code = 1080
            res.errors = '结算数据已经过期'
            return Response(res.dic)
        except KeyError as e:
            print(e)
            res.code = 1081
            res.errors = '参数不合法'
            return Response(res.dic)
        except IndexError as e:
            print(e)
            res.code = 1082
            res.errors = '优惠卷不合法'
            return Response(res.dic)
        except Exception as e:
            print(e)
            res.code = 1083
            res.errors = '未知错误'
            return Response(res.dic)
Exemple #9
0
    def post(self, request):
        user_id = request.user.id
        course_list = request.data.get('course_list', '')
        res = BaseResponse()
        dic = {}
        global_coupon_dic = {}
        if not course_list:
            res.code = 1031
            res.errors = '结算中心请求参数不合法'
            return Response(res.dic)
        pipe = CONN.pipeline(transaction=True)
        pipe.multi()
        for course_id in course_list:
            name = SHOPPING_CAR % (str(user_id), str(course_id))
            if not CONN.exists(name):
                res.code = 1030
                res.errors = '结算中心课程id不合法'
                return Response(res.dic)
            shop_cart = CONN.hgetall(name)
            price_policy_dic = shop_cart.get('price_policy_dic')
            price_policy_dic = json.loads(price_policy_dic, encoding='utf-8')
            shop_cart['price'] = price_policy_dic[
                shop_cart['price_policy_default_id']]['price']
            shop_cart['valid_period'] = price_policy_dic[
                shop_cart['price_policy_default_id']]['valid_period']
            shop_cart['valid_period_display'] = price_policy_dic[
                shop_cart['price_policy_default_id']]['valid_period_display']
            shop_cart.pop('price_policy_dic')
            coupon_records = smodels.CouponRecord.objects.filter(
                account__pk=user_id,
                coupon__valid_begin_date__lte=now(),
                coupon__valid_end_date__gte=now(),
                status=0,
            ).all()
            course_coupon_dic = {}
            for record in coupon_records:
                coupon = record.coupon
                if coupon.object_id:
                    course_coupon_dic[coupon.id] = {
                        'id': coupon.id,
                        'name': coupon.name,
                        'coupon_type': coupon.get_coupon_type_display(),
                        'money_equivalent_value':
                        coupon.money_equivalent_value,
                        'off_percent': coupon.off_percent,
                        'minimum_consume': coupon.minimum_consume,
                    }
                else:
                    global_coupon_dic[coupon.id] = json.dumps(
                        {
                            'id': coupon.id,
                            'name': coupon.name,
                            'coupon_type': coupon.get_coupon_type_display(),
                            'money_equivalent_value':
                            coupon.money_equivalent_value,
                            'off_percent': coupon.off_percent,
                            'minimum_consume': coupon.minimum_consume,
                        },
                        ensure_ascii=False)
            if course_coupon_dic:
                shop_cart['course_coupon_dic'] = json.dumps(course_coupon_dic,
                                                            ensure_ascii=False)

            settlement_key = SETTLEMENT % (str(user_id), str(course_id))
            pipe.hmset(settlement_key, shop_cart)
            pipe.delete(name)  # 删除购物车数据,在name的for循环中删掉
        if global_coupon_dic:
            global_coupon_key = GLOBAL_COUPON % str(user_id)
            pipe.hmset(global_coupon_key, global_coupon_dic)
        length = len(course_list)
        UserInfo.objects.filter(pk=user_id).update(
            shop_cart_num=F('shop_cart_num') - length)
        pipe.execute()
        res.data = '加入结算中心成功'
        return Response(res.dic)
Exemple #10
0
    def put(self, request):
        user_id = request.user.id
        coupon_id = request.data.get('coupon_id')
        global_coupon_id = request.data.get('global_coupon_id')
        course_id = request.data.get('course_id')
        res = BaseResponse()
        pipe = CONN.pipeline(transaction=True)
        pipe.multi()
        if global_coupon_id is None and coupon_id is None or not course_id:
            res.code = 1031
            res.errors = '结算中心请求参数不合法'
            return Response(res.dic)
        if global_coupon_id or str(global_coupon_id) == "0":
            global_coupon_key = GLOBAL_COUPON % str(user_id)
            if not CONN.exists(global_coupon_key):
                res.code = 1032
                res.errors = '全局优惠卷不存在'
                return Response(res.dic)
            if int(global_coupon_id) == 0:
                pipe.hdel(global_coupon_key, "default_global_coupon_id")
            else:
                global_coupon = CONN.hgetall(global_coupon_key)
                if str(global_coupon_id) not in global_coupon:
                    res.code = 1033
                    res.errors = '全局优惠卷不合法'
                    return Response(res.dic)
                else:
                    global_coupon[
                        'default_global_coupon_id'] = global_coupon_id
                pipe.hmset(global_coupon_key, global_coupon)
            pipe.execute()
            res.data = '全局优惠卷更新成功'
            return Response(res.dic)
        if coupon_id or str(coupon_id) == "0":

            settlement_key = SETTLEMENT % (str(user_id), str(course_id))
            if not CONN.exists(settlement_key):
                res.code = 1030
                res.errors = '课程id不合法'
                return Response(res.dic)
            if int(coupon_id) == 0:
                pipe.hdel(settlement_key, 'default_coupon_id')
            else:
                settlement = CONN.hgetall(settlement_key)
                course_coupon_dic = settlement.get('course_coupon_dic')
                if course_coupon_dic is None:
                    # 优惠卷信息不存在,请求参数不合法
                    res.code = 1031
                    res.errors = '结算中心请求参数不合法'
                    return Response(res.dic)
                course_coupon_dic = json.loads(course_coupon_dic,
                                               encoding='utf-8')
                if str(coupon_id) not in course_coupon_dic:
                    res.code = 1035
                    res.errors = '课程优惠卷不合法'
                    return Response(res.dic)
                else:
                    settlement['default_coupon_id'] = coupon_id
                pipe.hmset(settlement_key, settlement)
            pipe.execute()
            res.data = '课程优惠卷更新成功'
            return Response(res.dic)