昨天我们了解到最简单的流程以及结构,
今天我们稍微将现有的结构做一点变化,
为什麽要做变化呢?
主要是因为订单通常牵扯到金钱以及货品,
以昨天的内容来说,金钱相关最基础就要增加三个栏位,这还没有一些延伸应用,
如果在加上货品相关的栏位的话,这样table order会过於肥大,
因此通常会将金流和物流的资料在独立出来,
我们看一下变化
Schema::create('order', function (Blueprint $table) {
$table->string('id', 30)->comment('订单id');
$table->string('name', 30)->comment('购买人姓名');
$table->integer('amount')->default(0)->comment('总金额');
$table->string('status', 20)->default('pending')->comment('订单状态');
$table->primary(['id']);
});
Schema::create('payment', function (Blueprint $table) {
$table->string('id', 30)->comment('同订单id');
$table->string('payment_id', 30)->comment('金流单id');
$table->string('type', 20)->comment('付款类型'); //credit, atm
$table->string('status', 30)->default('unpaid')->comment('付款状态');
$table->dateTime('expired_at')->nullable()->comment('付款截止时间');
$table->dateTime('paid_at')->nullable()->comment('付款时间');
$table->text('info')->nullable(); // 付款资讯物件(ATM帐号/超商代码/超商条码)
$table->float('amount')->default(0); // 金额
$table->float('fee')->default(0); // 手续费
$table->primary(['id']);
});
另外物流的部份也是一样多开table,
这边就不特别说明了,不再我们这次要讲的主题里面。
//todo
Schema::create('freight', function (Blueprint $table) {
$table->string('id', 30)->comment('同订单id');
$table->primary(['id']);
});
回到结构可以看到有部份栏位从order移除,改成透过table payment纪录资料,
并且重新定义order status,
从unpaid、paid、failed三种对应未附款、已付款、付款失败,
改成processing、finished、refund、cancel、error,
并且将原先的付款状态改成由payment.status纪录。
table payment则纪录一些选择项目,以及付款资讯等等,
这边可以看到多开一个fee的栏位是因为,有可能会将金流的服务费用转嫁给消费者,
所以有独立fee栏位可以使用,
把项目order_item、金流payment、物流freight独立之後,table order变得乾净许多,
也可以因应各种情况,但是这边还是老话一句,目前文章提供的范例都相对阳春,
在实际应用上可能还会有很多遗漏,因此结构是死的人是活的,
整个架构结构都可以调整或扩充。
<<: Unity与Photon的新手相遇旅途 | Day12-血量制作
>>: [Day 14] 人脸识别 (Facial Recognition)
识别情景 结合前面所有的资讯,我们可以将威胁利用弱点损害资产的机密性、可用性及完整性的情景重建与识...
关於match的档案管理 第一,我们需要做删除的动作 第二,或者说,自订排程 删除档案 + 新增档案...
commit 版本的时候可以写下一些讯息,以便他人或未来自己查看的时候可以快速理解。但是,有时候写程...
本篇介绍透过bootstrap4直接使用tab切换功能,并且实作tab切换自动循环播放 我们在昨篇...
上次文章终於迎来续集 我的第一个RWD网页 这次的网页练习跟上次的网页是同系列的,不过这次可是有记起...