bztang-admin/app/common/models/refund/RefundGoodsLog.php

128 lines
3.4 KiB
PHP

<?php
/**
* Created by PhpStorm.
*
*
*
* Date: 2021/12/23
* Time: 14:13
*/
namespace app\common\models\refund;
use app\common\models\BaseModel;
use app\common\models\Order;
use app\common\models\OrderGoods;
use app\framework\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* Class RefundGoodsLog
* @package app\common\models\refund
*/
class RefundGoodsLog extends BaseModel
{
use SoftDeletes;
public $table = 'yz_order_refund_goods_log';
protected $guarded = ['id'];
protected $appends = ['goods_id','goods_title','goods_option_title','goods_thumb'];
protected $hidden = ['orderGoods', 'created_at','updated_at','deleted_at'];
const CANCEL_STATUS = -1; //驳回/取消
const WAIT_STATUS = 0; //等待审核
const COMPLETE_STATUS = 1; //完成
/**
* 记录申请售后商品
* @param RefundApply $refund
* @param array $orderGoods
* @return bool
*/
public static function saveData(RefundApply $refund, $orderGoods)
{
$log = self::where('order_goods_id', $orderGoods['id'])->where('refund_id', $refund)->first();
$log = is_null($log) ? new self() : $log;
$log->fill([
'refund_id' => $refund->id,
'order_id' => $refund->order->id,
'refund_type' => $refund->refund_type,
'order_goods_id' => $orderGoods['id'],
'send_num' => $orderGoods['total'],
'refund_total' => $orderGoods['total'],
'refund_price' => $orderGoods['refund_price'],
]);
return $log->save();
}
public static function getRefundedGoods($order_goods_id)
{
return self::where('order_goods_id', $order_goods_id)->join('yz_order_refund', function ($join) {
$join->on('yz_order_refund.id', '=', 'yz_order_refund_goods_log.refund_id')
->where('yz_order_refund.refund_type','!=', RefundApply::REFUND_TYPE_EXCHANGE_GOODS)
->where('yz_order_refund.status', '>=', RefundApply::COMPLETE);
});
}
public function getGoodsIdAttribute()
{
return $this->orderGoods->goods_id;
}
public function getGoodsTitleAttribute()
{
return $this->orderGoods->title;
}
public function getGoodsOptionTitleAttribute()
{
return $this->orderGoods->goods_option_title;
}
public function getGoodsThumbAttribute()
{
return yz_tomedia($this->orderGoods->thumb);
}
public function scopePluginId(Builder $query, $pluginId = 0)
{
return parent::scopePluginId($query, $pluginId); // TODO: Change the autogenerated stub
}
public function scopeByOrderId(Builder $query, $order_id)
{
return $query->where('order_id', $order_id);
}
public function scopeByOrderGoodsId(Builder $query, $order_goods_id)
{
return $query->where('order_goods_id', $order_goods_id);
}
public function orderGoods()
{
return $this->hasOne(OrderGoods::class, 'id', 'order_goods_id');
}
public function hasOneOrderGoods()
{
return $this->hasOne(OrderGoods::class, 'id', 'order_goods_id');
}
public function belongsToOrderFund()
{
return $this->belongsTo(RefundApply::class, 'order_id', 'order_id');
}
public function hasOneOrder()
{
return $this->hasOne(Order::class, 'id', 'order_id');
}
}