vue框架前后端分离项目之订单表、立即付款接口及前端、支付成功回调等相关内容-131

摘要:
1订单表设计1两个表-一个订单可能包含多个课程-订单表:订单编号、订单生成时间和订单总价。。。

1 订单表设计

1 两张表
-一个订单可能包含多门课程
-订单表:订单号,订单生成时间,订单总价格。。。(订单跟订单详情是一对多的关系)
   -订单详情表:order,course,该课程的价格。。。
   
   
   
from django.db import models

from user.models import User
from course.models import Course
# 不同app之间的表,可以建立关联关系,导入使用
#user = models.ForeignKey(User) # 不能用引号引起来

class Order(models.Model):
   """订单模型"""
   status_choices = (
      (0, '未支付'),
      (1, '已支付'),
      (2, '已取消'),
      (3, '超时取消'),
  )
   pay_choices = (
      (1, '支付宝'),
      (2, '微信支付'),
  )
   subject = models.CharField(max_length=150, verbose_name="订单标题")
   total_amount = models.DecimalField(max_digits=10, decimal_places=2, verbose_name="订单总价", default=0)
   # 咱们生成的订单号(唯一:分布式id生成方案:雪花算法,snowflake)
   out_trade_no = models.CharField(max_length=64, verbose_name="订单号", unique=True)
   # 支付宝生成的
   trade_no = models.CharField(max_length=64, null=True, verbose_name="流水号")
   # 订单状态
   order_status = models.SmallIntegerField(choices=status_choices, default=0, verbose_name="订单状态")
   # 支付类型(支付宝,微信,银联)
   pay_type = models.SmallIntegerField(choices=pay_choices, default=1, verbose_name="支付方式")
   # 支付时间(付款成功的时候,等支付宝post回调,回掉回来以后,返回数据中有支付时间)
   pay_time = models.DateTimeField(null=True, verbose_name="支付时间")
   user = models.ForeignKey(User, related_name='order_user', on_delete=models.DO_NOTHING, db_constraint=False, verbose_name="下单用户")
   # 订单创建时间
   created_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')

   class Meta:
       db_table = "luffy_order"
       verbose_name = "订单记录"
       verbose_name_plural = "订单记录"

   def __str__(self):
       return "%s - ¥%s" % (self.subject, self.total_amount)

   @property
   def courses(self):
       data_list = []
       for item in self.order_courses.all():
           data_list.append({
               "id": item.id,
               "course_name": item.course.name,
               "real_price": item.real_price,
          })
       return data_list


class OrderDetail(models.Model):
   """订单详情"""
   order = models.ForeignKey(Order, related_name='order_courses', on_delete=models.CASCADE, db_constraint=

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ubuntu系统下手动安装autoconf安装包Sourcetree 代码管理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Mac中如何搭建Vue项目并利用VSCode开发

(一)部署Node环境 (1)下载适合Mac环境的Node包,点击进入下载页面 (2)安装Node环境:找到下载好的Node包,这里是node-v12.14.1.pkg,我们双击它,会进入Node.js安装器界面,如下图所示: 我们只要一直点击继续按钮即可,采用默认设置,安装成功后最终的效果图如下图所示: 默认是安装了npm,我们可以在终端中输入nod...

报错[Vue warn]:Invalid prop:custom validator check failed for prop "percentage"

1.html部分 <el-table-column prop="userzb"label="用户占比"> <template solt-scope="scope"v-if="btnType === 1"> <el-progress v-if="scope.row.us...

vue-cli3.0和element-ui及axios的安装使用

一、利用vue-cli3快速搭建vue项目 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统。有三个组件: CLI:@vue/cli 全局安装的 npm 包,提供了终端里的vue命令(如:vue create 、vue serve 、vue ui 等命令) CLI 服务:@vue/cli-service是一个开发环境依赖。构建于 web...

eslint使用

vscode配置 需安装eslint和vetur两个插件 原因: 装eslint并配置:编辑时就可提示报错信息,保存可自动修复 vetur:会有一些vue语法提示 配置eslint 1.文件=》首选项=》设置 2.在settings.json中添加 也可在项目跟目录添加.vscode文件,里头添加settings.json,内容为: { // 每次保存...

前端框架现状调查

转自:前端框架现状调查        Ashley Nolan是来自英国食品速递公司JUST EAT的一名资深Web UI工程师。为了了解整个前端开发社区当前的知识和使用水平,他发起了一个面向前端开发人员的调查,问题涉及CSS、“任务执行器(Task Runner)”、JavaScript等方面。前期,他收到了649份回复。近日,参与者数量达到了1044。...

vue初级学习--使用 vue-resource 请求数据

一、导语   我发现好像我最近几次写文,都是在7号,很恰巧啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 二、正文   最近用vue做一个订单管理混合开发APP,但是遇到个问题,使用了vueResource的post请求,后端做了跨域解决方...