From e8ae9e7e84abffe5bea6d7bc98fa7ca790de9875 Mon Sep 17 00:00:00 2001 From: linyaostalker <602604991@qq.com> Date: Wed, 11 Dec 2019 09:54:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=90=8E=E5=8F=B0=E5=95=86?= =?UTF-8?q?=E5=9F=8E=E9=80=BB=E8=BE=91=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/modules/shop/logic/ShopManager.php | 55 +++++++++++++++------- 1 file changed, 37 insertions(+), 18 deletions(-) diff --git a/backend/modules/shop/logic/ShopManager.php b/backend/modules/shop/logic/ShopManager.php index e7c72fe..8a4a2bb 100644 --- a/backend/modules/shop/logic/ShopManager.php +++ b/backend/modules/shop/logic/ShopManager.php @@ -36,8 +36,8 @@ class ShopManager } /** - * @param $expressAreaModel - * @param $expressTemplateModel + * @param ExpressArea|$expressAreaModel + * @param ExpressTemplate|$expressTemplateModel * 区域运费模板按比例转化数据 */ public static function expressAreaScaleDate($expressAreaModel, $expressTemplateModel) @@ -54,22 +54,33 @@ class ShopManager } /** - * @param $expressAresModel + * @param ExpressArea|$expressAreaModel * @return array * 除去已被选取的城市,筛选剩下的城市数据 */ - public static function filterCity($expressAresModel) + public static function filterCity($expressAreaModel) { - $data = []; $query = ExpressArea::find() ->select(['city']) - ->where(['express_template' => $expressAresModel->express_template]); - if ($expressAresModel->id) { //修改操作时,除去自身的城市 - $query = $query->andWhere(['!=', 'id', $expressAresModel->id]); + ->where(['express_template' => $expressAreaModel->express_template]); + if ($expressAreaModel->id) { //修改操作时,除去自身的城市 + $query = $query->andWhere(['!=', 'id', $expressAreaModel->id]); } - $expressAreas = $query->all(); + $allDate = $query->all(); + + $expressAresCityIdArr = self::filterSelectedCtiyIdArr($allDate); + + $leftoverCityArr = self::filterLeftoverCityArr($expressAresCityIdArr); + return $leftoverCityArr; + } - //获取已选的城市id数组 + /** + * @param $expressAreas + * @return array 已选的城市id数组 + * 获取已选的城市id数组 + */ + private static function filterSelectedCtiyIdArr($expressAreas) + { $expressAresCityIdArr = []; if ($expressAreas) { foreach ($expressAreas as $expressAreaCity) { @@ -77,23 +88,31 @@ class ShopManager $expressAresCityIdArr = array_unique(array_merge($cityIdArr, $expressAresCityIdArr)); } } + return $expressAresCityIdArr; + } - //筛选剩下的城市 + /** + * @param $expressAresCityIdArr + * @return array 未选的城市id数组 + * 筛选剩下的城市 + */ + private static function filterLeftoverCityArr($expressAresCityIdArr) + { + $data = []; $provinces = Province::find()->cache(0)->all(); - $j = 0; - foreach ($provinces as $k => $v) { + foreach ($provinces as $key => $province) { $cities = City::find() - ->where(['province_id' => $v->province_id]) + ->where(['province_id' => $province->province_id]) ->andWhere(['not in', 'city_id', $expressAresCityIdArr]) ->all(); + if ($cities) { - $data[$j]['province'] = $v->name; + $data[$key]['province'] = $province->name; foreach ($cities as $city) { - $data[$j]['city'][] = ['id' => $city->city_id, 'name' => $city->name]; + $data[$key]['city'][] = ['id' => $city->city_id, 'name' => $city->name]; } - $j++; } } - return $data; + return array_values($data); } } \ No newline at end of file