getPage($params), $this->getLimit($params), function ($query) use ($lat, $lon) { $query->select([ 'id', 'center_name', 'province', 'city', 'district', 'town', 'operation_address', 'logo', UserCenter::getDistanceSql($lon, $lat) ]); $query->andWhere(['mall_id' => $this->mall_id]); } , 'distance ASC'); // 当前 $data['current'] = UserAffiliation::getUserAffiliationCenterByUserId($user_id, $lon, $lat); return $data; } /** * 选择运营中心 * * @param integer $user_id * @param integer $operation_center_id * @return boolean */ public function selectOperation(int $user_id, int $operation_center_id) { $t = Yii::$app->db->beginTransaction(); try { $user_affiliation = UserAffiliation::getUserAffiliationByUserId($user_id); if (!empty($user_affiliation)) $user_affiliation->delSelect(); UserAffiliation::addSelect($this->mall_id, $user_id, $operation_center_id); } catch (Exception $e) { $t->rollBack(); return $this->error($e->getMessage()); } $t->commit(); return true; } /** * 当前选择的运营中心 * * @param integer $user_id * @return array */ public function currentOperation(int $user_id) { $user_affiliation = UserAffiliation::getUserAffiliationByUserId($user_id); if (empty($user_affiliation)) { return []; } $center = $user_affiliation->center; return empty($center) ? [] : [ 'id' => $center->id, 'center_name' => $center->center_name, 'logo' => $center->logo, 'province' => $center->province, 'city' => $center->city, 'district' => $center->district, 'town' => $center->town, 'operation_address' => $center->operation_address, ]; } /** * 是否强制运营中心 * * @param integer $user_id * @return boolean */ public function getOrderLimit(int $user_id) { if ($this->getSettingService()->getOrderLimit()) { $user_affiliation = UserAffiliation::getUserAffiliationByUserId($user_id); return empty($user_affiliation); } return false; } }