You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
2.8 KiB
136 lines
2.8 KiB
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use App\Common\OrderStatus;
|
|
use App\Common\PayType;
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
|
use App\Common\OrderStatus as Status;
|
|
use Illuminate\Support\Facades\Storage;
|
|
|
|
class Order extends BaseModel
|
|
{
|
|
use HasFactory, SoftDeletes;
|
|
protected $guarded = ['created_at', 'updated_at']; //不可批量赋值的属性
|
|
|
|
public function scopeComplete($query)
|
|
{
|
|
return $query->where('status',OrderStatus::SUCCESS);
|
|
}
|
|
|
|
public function getCouponIdAttribute($value)
|
|
{
|
|
return explode(',', $value);
|
|
}
|
|
|
|
public function getStatusAttribute($value)
|
|
{
|
|
$this->append('status_text');
|
|
return $value;
|
|
}
|
|
|
|
public function getStatusTextAttribute()
|
|
{
|
|
return Status::array()[$this->attributes['status']] ?? '未知';
|
|
}
|
|
|
|
public function getPayTypeAttribute($value)
|
|
{
|
|
$this->append('pay_type_text');
|
|
return $value;
|
|
}
|
|
|
|
public function getPayTypeTextAttribute()
|
|
{
|
|
return PayType::array()[$this->attributes['pay_type']] ?? '未知';
|
|
}
|
|
|
|
//退款信息
|
|
public function getRefundInfoAttribute($value): array
|
|
{
|
|
$value = $value ? json_decode($value, true) : [];
|
|
if (!empty($value['pictures']) && is_array($value['pictures'])) {
|
|
$prefix = Storage::disk('public')->url('');
|
|
foreach ($value['pictures'] as &$v) {
|
|
if ($v && strpos($v, $prefix) === false) {
|
|
$v = $prefix . $v;
|
|
}
|
|
}
|
|
}
|
|
return $value ?? [];
|
|
}
|
|
|
|
public function getPictureAttribute($value): string
|
|
{
|
|
$prefix = Storage::disk('public')->url('');
|
|
return $value && substr($value, 0, 4) != 'http' ? $prefix . $value : '';
|
|
}
|
|
|
|
public function setPictureAttribute($value)
|
|
{
|
|
//修改器里面$this->host变量为空
|
|
$this->attributes['picture'] = str_replace(env('APP_URL'), '', $value);
|
|
}
|
|
|
|
public function agentProduct()
|
|
{
|
|
return $this->belongsTo(AgentProduct::class);
|
|
}
|
|
|
|
public function product()
|
|
{
|
|
return $this->belongsTo(Product::class);
|
|
}
|
|
|
|
public function coupon()
|
|
{
|
|
return $this->belongsTo(Coupon::class);
|
|
}
|
|
|
|
public function agent()
|
|
{
|
|
return $this->belongsTo(Agent::class);
|
|
}
|
|
|
|
public function supplier()
|
|
{
|
|
return $this->belongsTo(Supplier::class);
|
|
}
|
|
|
|
public function user()
|
|
{
|
|
return $this->belongsTo(User::class);
|
|
}
|
|
|
|
public function agentProductItem()
|
|
{
|
|
return $this->hasMany(AgentProductItem::class, 'agent_product_id', 'agent_product_id');
|
|
}
|
|
|
|
public function orderProductItem()
|
|
{
|
|
return $this->hasMany(OrderProductItem::class);
|
|
}
|
|
|
|
public function guide()
|
|
{
|
|
return $this->belongsTo(Guide::class);
|
|
}
|
|
|
|
//关联的组团云产品
|
|
public function agentCloud()
|
|
{
|
|
return $this->belongsTo(AgentProduct::class, 'agent_cloud_pid', 'id');
|
|
}
|
|
|
|
public function statementAdmin()
|
|
{
|
|
return $this->hasMany(StatementAdmin::class,'order_id','id');
|
|
}
|
|
|
|
public function statement()
|
|
{
|
|
return $this->morphMany(Statement::class,'access');
|
|
}
|
|
}
|