def post(self, request): money = get_int(request.POST.get('money') or 0) if money <= 0: return JsonResponse({ 'status': 'money_error', 'msg': '提现金额必须是大于0的整数', }) user = request.user pinbot_point = coin_utils._get_pinbot_point(user) if money > pinbot_point.coin: return JsonResponse({ 'status': 'no_coin', 'msg': '金币不足', }) now = datetime.datetime.now() has_withdraw = get_object_or_none( WithdrawRecord, user=user, verify_status__in=(0, 1), create_time__year=now.year, create_time__month=now.month, ) if has_withdraw: return JsonResponse({ 'status': 'has_withdraw', 'msg': '您本月已经提现过一次,请下个月再来', }) withdraw = WithdrawRecord.objects.create( user=user, money=money, ) order = UserOrder.objects.create( user=user, order_price=-money, actual_price=-money, item=withdraw, order_desc='提现', order_type=5, ) order.order_id = create_order_id() order.save() ItemRecord.objects.create( num=1, total_price=order.order_price, order=order, item=withdraw, ) return JsonResponse({ 'status': 'ok', 'msg': '提现请求提交成功', })
def create_renew_order(cls, user_vip, renew_month): user = user_vip.user vip_role = user_vip.vip_role order_price = user_vip.vip_role.month_price * renew_month num = 1 order_desc = '{vip_name}, 续期{renew_month}个月, {feed_count}个定制, {pinbot_point}聘点/周'.format( vip_name=vip_role.vip_name, renew_month=renew_month, feed_count=vip_role.feed_count, pinbot_point=vip_role.pinbot_point, ) protcol_data = cls.create_protcol_data( service_name='renew_service', event='create_renew_order', dest='renew_service', product=None, product_type='renew_service', item_num=num, user=user, is_insurance=False, order_price=order_price, ) protcol_data['duration'] = renew_month protcol_data['price'] = order_price protcol_data['user_vip'] = user_vip service_obj = protcol_data.get('service_class')(**protcol_data) service_result = service_obj.create_service() order = UserOrder.objects.create( user=user, order_price=order_price, actual_price=order_price, item=service_result, payment_terms='alipay', order_desc=order_desc, order_type=7, ) order.order_id = create_order_id() order.save() cls.after_create_order( user=user, order=order, service=service_result, num=num, ) return order
def create_order(self): price = self.get_order_price() order = UserOrder.objects.create( user=self.user, order_price=price, actual_price=price, item=self.apply_vip, ) order.order_id = create_order_id() order.save() return order
def create_order(self, user, pid, product_type, num, payment_terms, is_insurance=None): is_insurance = str2bool(str(is_insurance)) product = self.get_product_object( pid=pid, product_type=product_type, ) if not self.before_create_order( user=user, product_type=product_type, product=product, num=num): return False if product.status != 'enable': return False order_price = self.get_order_price(product=product, num=num, is_insurance=is_insurance, user=user) order_type = ORDER_TYPE_MAP.get(product_type) order = UserOrder.objects.create(user=user, order_price=order_price, actual_price=order_price, item=product, payment_terms=payment_terms, order_desc=product.get_desc, is_insurance=is_insurance, order_type=order_type) order.order_id = create_order_id() order.save() # connect service protcol_data = self.create_protcol_data( service_name=product_type, event=sys._getframe().f_code.co_name, dest=product_type, order_id=order.order_id, product=product, product_type=product_type, item_num=num, user=user, is_insurance=is_insurance, order_price=order_price) service_obj = protcol_data.get('service_class')(**protcol_data) service_result = service_obj.process() self.after_create_order(user=user, order=order, service=service_result, num=num) return order
def create_order(self, user, pid, product_type, num, payment_terms, is_insurance=None): is_insurance = str2bool(str(is_insurance)) product = self.get_product_object( pid=pid, product_type=product_type, ) if not self.before_create_order( user=user, product_type=product_type, product=product, num=num ): return False if product.status != 'enable': return False order_price = self.get_order_price( product=product, num=num, is_insurance=is_insurance, user=user ) order_type = ORDER_TYPE_MAP.get(product_type) order = UserOrder.objects.create( user=user, order_price=order_price, actual_price=order_price, item=product, payment_terms=payment_terms, order_desc=product.get_desc, is_insurance=is_insurance, order_type=order_type ) order.order_id = create_order_id() order.save() # connect service protcol_data = self.create_protcol_data( service_name=product_type, event=sys._getframe().f_code.co_name, dest=product_type, order_id=order.order_id, product=product, product_type=product_type, item_num=num, user=user, is_insurance=is_insurance, order_price=order_price ) service_obj = protcol_data.get('service_class')(**protcol_data) service_result = service_obj.process() self.after_create_order( user=user, order=order, service=service_result, num=num ) return order