Order.php 1.77 KB
<?php

namespace App\Models;

use Dcat\Admin\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Auth;

class Order extends Model
{
	use HasDateTimeFormatter;
    use SoftDeletes;

    protected $table = 'order';

    public function order_goods()
    {
        return $this->hasOne('App\Models\OrderGood','order_sn');
    }

    /**
     * 预创建订单
     * @param $member_id
     * @param $source
     */
    public function build($member_id,$source)
    {
        // 获取商品信息
        $membership = Membership::query()->where('id',$member_id)->first();

        // 实付金额 = 商品金额
        $pay_amount = $membership->price;

        // 创建订单
        $order = new Order();
        $order_sn = $this->get_sn('osn');
        $order->order_sn = $order_sn;
        $order->user_id = Auth::user()->getAuthIdentifier();
        $order->pay_amount = $pay_amount;
        $order->goods_amount = $membership->price;
        $order->status = 100;
        $order->source = $source;

        $order->save();

        $order_good = new OrderGood();
        $order_good->order_sn = $order_sn;
        $order_good->goods_id = $member_id;
        $order_good->goods_name = $membership->name;
        $order_good->goods_image = $membership->getSingleImg();
        $order_good->goods_price = $membership->price;
        $order_good->goods_number = 1;

        $order_good->save();

    }

    /**
     * 获取SN唯一编号
     * @param string $prefix
     * @return string
     */
    public function get_sn($prefix = '')
    {
        $Sn = $prefix . strtoupper(dechex(date('m'))) . date('d') . substr(time(), -5) . substr(microtime(), 2, 5) . sprintf('%02d', rand(0, 99));
        return $Sn;
    }
}