diff --git a/backend/modules/shop/logic/ShopManager.php b/backend/modules/shop/logic/ShopManager.php index a463a05..39baa99 100644 --- a/backend/modules/shop/logic/ShopManager.php +++ b/backend/modules/shop/logic/ShopManager.php @@ -1,10 +1,12 @@ 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; + } } \ No newline at end of file