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)
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)
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)
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)
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)
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)