basic_price *= self::proportionalConversion(self::UNIT_TYPE_MONEY); $expressAreaModel->extra_price *= self::proportionalConversion(self::UNIT_TYPE_MONEY); if ($expressTemplateModel->calculation_type == ExpressTemplate::CALCULATION_TYPE_WEIGHT) { $expressAreaModel->basic_count *= self::proportionalConversion(self::UNIT_TYPE_WEIGHT); $expressAreaModel->extra_count *= self::proportionalConversion(self::UNIT_TYPE_WEIGHT); } else { $expressAreaModel->basic_count *= self::proportionalConversion(self::UNIT_TYPE_ITEM); $expressAreaModel->extra_count *= self::proportionalConversion(self::UNIT_TYPE_ITEM); } } /** * @param $expressAresModel * @return array * 除去已被选取的城市,筛选剩下的城市数据 */ public static function filterCity($expressAresModel) { $data = []; $query = ExpressArea::find() ->select(['city']) ->where(['express_template' => $expressAresModel->express_template]); if ($expressAresModel->id) { //修改操作时,除去自身的城市 $query = $query->andWhere(['!=', 'id', $expressAresModel->id]); } $expressAreas = $query->all(); //获取已选的城市id数组 $expressAresCityIdArr = []; if ($expressAreas) { foreach ($expressAreas as $expressAreaCity) { $cityIdArr = explode(',', $expressAreaCity->city); $expressAresCityIdArr = array_unique(array_merge($cityIdArr, $expressAresCityIdArr)); } } //筛选剩下的城市 $provinces = Province::find()->cache(0)->all(); $j = 0; foreach ($provinces as $k => $v) { $cities = City::find() ->where(['province_id' => $v->province_id]) ->andWhere(['not in', 'city_id', $expressAresCityIdArr]) ->all(); if ($cities) { $data[$j]['province'] = $v->name; foreach ($cities as $city) { $data[$j]['city'][] = ['id' => $city->city_id, 'name' => $city->name]; } $j++; } } return $data; } }