[
'' => 0,
'待审核' => 1,
'已处理' => 2,
],
'grad' => [
'' => 0,
'一般' => 1,
'重要' => 2,
'紧急' => 3,
'重要且紧急' => 4,
],
];
function __construct(array $attributes = [])
{
foreach (self::$enums as &$enum) {
$enum = $enum + array_flip($enum);
}
parent::__construct($attributes);
}
public function getStatusAttribute($value)
{
if (!$value) return '';
return self::$enums['status'][$value];
}
public function setStatusAttribute($value)
{
if (!$value) return 0;
if (is_numeric($value)) {
$this->attributes['status'] = $value;
} else {
$this->attributes['status'] = self::$enums['status'][$value];
}
}
public function getGradAttribute($value)
{
if (!$value) return '';
return self::$enums['grad'][$value];
}
public function setGradAttribute($value)
{
if (!$value) return 0;
if (is_numeric($value)) {
$this->attributes['grad'] = $value;
} else {
$this->attributes['grad'] = self::$enums['grad'][$value];
}
}
// 创建人
public function creator(): BelongsTo
{
return $this->belongsTo(User::class, 'creator_id');
}
// 审核人
public function reviewer(): BelongsTo
{
return $this->belongsTo(User::class, 'reviewer_id');
}
// 关联订单
public function order(): BelongsTo
{
return $this->belongsTo(Order::class);
}
// 关联货主
public function owner(): BelongsTo
{
return $this->belongsTo(Owner::class,'owner_id');
}
// 工单类型
public function type(): BelongsTo
{
return $this->BelongsTo(WorkOrderType::class,'work_order_type_id');
}
// 生成问题件类型
public function issueType():BelongsTo
{
return $this->belongsTo(OrderIssueType::class,'order_issue_type_id');
}
/** 对应问题件 */
public function orderIssue(): BelongsTo
{
return $this->belongsTo(OrderIssue::class,'order_id','order_id');
}
public function scopeFilter($query, $filters)
{
return $filters->apply($query);
}
/** 默认 with 参数 */
public function scopeDefaultWith($query)
{
$query->with(['type','owner','issueType','creator','reviewer','order'=>function($query){
/** @var $query Builder */
$query->with('packages','logistic','owner');
},'orderIssue'=>function($query){
/** @var $query Builder */
$query->with(['issueType','logs'=>function($query){
if (Gate::denies('订单管理-问题件-客户不可见')){
$query->with('user')->orderByDesc('created_at');
} else{
$query->with('user')->where('tag','=',0)->orderByDesc('created_at');
}
}]);
}]);
}
public function notification()
{
$user = Auth::user();
$this->loadMissing('owner','order');
$remark = $this->remark;
$ownerName = $this->owner->name ?? '';
$clientCode = $this->order->client_code ?? '';
$msg = $user["name"]."建立了新工单
".$ownerName.":".$clientCode."
".$remark;
NotificationService::SingleRegister($msg,$clientCode,"订单管理-问题件");
}
}