first(); return $dispatchInfo; } /** * 自定义字段名 * 可使用 * @return array */ public function atributeNames() { return [ 'dispatch_type' => '配送方式', 'dispatch_price' => '统一配送价格', 'dispatch_id' => '配送模板', //'is_cod' => '是否支持货到付款', ]; } public function rules() { return [ 'dispatch_type' => 'required|integer|min:0|max:1', 'dispatch_price' => 'numeric|min:0', 'dispatch_id' => 'integer', //'is_cod' => 'required|integer|min:0|max:1', ]; } public static function boot() { parent::boot(); //注册观察者 static::observe(new GoodsDispatchObserver); } public function enableDispatchTypeIds() { $dispatchTypeIds = []; $configs = \app\common\modules\shop\ShopConfig::current()->get('shop-foundation.order-delivery-method'); if ($configs) { $dispatchTypesSetting = $this->dispatchTypesSetting(); foreach ($configs as $dispatchTypeCode => $dispatchTypeClass) { if (!class_exists($dispatchTypeClass)) { break; } $dispatchTypeSetting = $dispatchTypesSetting[$dispatchTypeCode]; $orderDispatchType = new $dispatchTypeClass($dispatchTypeSetting); if ($orderDispatchType->enable()) { $dispatchTypeIds[] = $orderDispatchType->getId(); } } } return $dispatchTypeIds; } public function getDispatchTypeIds() { return explode(',', $this->dispatch_type_ids) ?: []; } /** * 返回勾选并开启的配送方式ID * @return array|static */ public function getEnableDispatchTypeIds() { return DispatchType::goodsEnableDispatchTypeIds($this->getDispatchTypeIds()); } public function dispatchTypesSettingV2($plugin=0) { //$dispatchTypes = DispatchType::where('plugin', 0)->where('enable', 1)->get(); $dispatchTypes = DispatchType::getCurrentUniacidSet($plugin); //过滤未开启的 $dispatchTypes = $dispatchTypes->filter(function ($dispatchType) { return $dispatchType->enable == 1; })->values(); if ($dispatchTypes->isEmpty()) { return []; } if (isset($this->goods_id)) { if(!is_array($this->dispatch_type_ids)){ $this->dispatch_type_ids = explode(',', $this->dispatch_type_ids) ?: []; $this->dispatch_type_ids = $this->dispatch_type_ids ?: []; } $dispatchTypes->map(function ($dispatchType) { if (in_array($dispatchType->id, $this->dispatch_type_ids)) { $dispatchType->enable = 1; }else{ $dispatchType->enable = 0; } }); } return $dispatchTypes->toArray() ?: []; } public function dispatchTypesSetting() { $dispatchTypes = DispatchType::where('plugin', 0)->get()->toArray(); $dispatchTypesSetting = DispatchType::dispatchTypesSetting($dispatchTypes); if (isset($this->goods_id)) { if(!is_array($this->dispatch_type_ids)){ $this->dispatch_type_ids = explode(',', $this->dispatch_type_ids) ?: []; $this->dispatch_type_ids = $this->dispatch_type_ids ?: []; } foreach ($dispatchTypesSetting as &$dispatchType) { if (in_array($dispatchType['id'], $this->dispatch_type_ids)) { $dispatchType['enable'] = 1; }else{ $dispatchType['enable'] = 0; } } } return $dispatchTypesSetting ?: []; } }