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->hasMany(Statement::class,'order_id','id');
							 | 
						|
									}
							 | 
						|
								}
							 |