OrderItem.php 3.9 KB
<?php

namespace addons\groupon\model;

use think\Model;
use addons\groupon\exception\Exception;
use addons\groupon\library\traits\model\order\OrderItemStatus;
use think\Db;
use traits\model\SoftDelete;

/**
 * 订单模型
 */
class OrderItem extends Model
{
    use OrderItemStatus, SoftDelete;

    // 表名,不含前缀
    protected $name = 'groupon_order_item';
    // 自动写入时间戳字段
    protected $autoWriteTimestamp = 'int';
    // 定义时间戳字段名
    protected $createTime = 'createtime';
    protected $updateTime = 'updatetime';
    protected $deleteTime = 'deletetime';

    protected $hidden = ['createtime', 'updatetime', 'deletetime'];
    // //列表动态隐藏字段
    // protected static $list_hidden = ['content', 'params', 'images', 'service_ids'];

    protected $append = [
        'status_code',       // 不自动查询
        'status_name',
        'status_desc',
        'btns',
        'ext_arr'
    ];

    // 发货状态
    const DISPATCH_STATUS_NOSEND = 0;       // 未发货
    const DISPATCH_STATUS_READY = 1;        // 已备货
    const DISPATCH_STATUS_ARRIVE = 2;       // 已到货
    const DISPATCH_STATUS_GETED = 3;        // 已提货


    // 退款状态
    const REFUND_STATUS_NOREFUND = 0;       // 退款状态 未申请
    const REFUND_STATUS_ING = 1;       // 申请中    // 不需要申请(状态不会出现)
    const REFUND_STATUS_OK = 2;       // 已同意     
    const REFUND_STATUS_FINISH = 3;       // 退款完成

    // 评价状态
    const COMMENT_STATUS_NO = 0;       // 待评价
    const COMMENT_STATUS_OK = 1;       // 已评价

    public function getExtArrAttr($value, $data)
    {
        return (isset($data['ext']) && $data['ext']) ? json_decode($data['ext'], true) : [];
    }



    public function getStatus($data, $type)
    {
        $btns = [];
        $status_name = '';
        $status_desc = '';

        $status_code = $this->status_code;

        switch ($status_code) {
            case 'null':
            case 'cancel':
            case 'invalid':
            case 'nopay':
                // 未支付的返回空
                break;
            case 'nosend':
                $status_name = '待备货';
                $status_desc = '等待平台发货';

                break;
            case 'noarrive':
                $status_name = '待备货';
                $status_desc = '等待平台备货';

                break;
            case 'noget':
                $status_name = '待提货';
                $status_desc = '等待买家提货';
                $btns[] = 'confirm_item';
                break;
            case 'nocomment':
                $status_name = '待评价';
                $status_desc = '等待买家评价';
                $btns[] = 'comment';
                break;
            case 'commented':
                $status_name = '已评价';
                $status_desc = '订单已评价';
                $btns[] = 'buy_again';
                break;
            case 'refund_finish':
                $status_name = '退款完成';
                $status_desc = '订单退款完成';

                break;
            case 'refund_ing':      // 不需要申请退款(状态不会出现)
                $status_name = '退款处理中';
                $status_desc = '退款处理中';

                break;
            case 'refund_refuse':   // 驳回a(状态不会出现)
                $status_name = '拒绝退款';
                $status_desc = '卖家拒绝退款';

                break;
        }

        return $type == 'status_name' ? $status_name : ($type == 'btns' ? $btns : $status_desc);
    }


    public function order()
    {
        return $this->belongsTo(\addons\groupon\model\Order::class, 'order_id', 'id');
    }


    public function goods()
    {
        return $this->belongsTo(\addons\groupon\model\Goods::class, 'goods_id', 'id');
    }
}