$coachId])->findOrEmpty(); if(!$coach->isEmpty()){ $longitude = $coach['longitude_location'] ?: $coach['longitude']; $latitude = $coach['latitude_location'] ?: $coach['latitude']; $field = 'id,contact,gender,mobile,province_id,city_id,district_id,house_number,address,is_default,round(st_distance_sphere(point('.$longitude.','.$latitude.'), point(longitude, latitude))/1000,2) as distance'; } } $lists = UserAddress::field($field) ->order(['is_default'=>'desc','id'=>'desc']) ->append(['province','city','district','gender_desc']) ->where(['user_id'=>$user_id]) ->select() ->toArray(); $userAddressLists = [ 'usable' => [], 'distance_disable' => [], 'server_disable' => [], ]; $coachServerScope = ConfigService::get('server_setting', 'coach_server_scope'); if($goodsId){ $cityLists = GoodsCityIndex::where(['goods_id'=>$goodsId])->column('city_id'); if(empty($cityLists)){ $cityLists = true; } }else{ $cityLists = City::column('city_id'); } foreach ($lists as $userAddress){ if($goodsId){ if(true === $cityLists){ $userAddressLists['usable'][] = $userAddress; continue; } if(!in_array($userAddress['city_id'],$cityLists)){ $userAddressLists['server_disable'][] = $userAddress; continue; } } if($coachId && !$coach->isEmpty() && $coachServerScope < $userAddress['distance']){ $userAddressLists['distance_disable'][] = $userAddress; continue; } $userAddressLists['usable'][] = $userAddress; } return $userAddressLists; } /** * @notes 添加地址 * @param $params * @return bool * @author ljj * @date 2022/2/24 10:51 上午 */ public function add($params) { if (isset($params['is_default']) && $params['is_default'] == YesNoEnum::YES) { UserAddress::where(['user_id' => $params['user_id']])->update(['is_default' => YesNoEnum::NO]); } else { $isFirst = UserAddress::where(['user_id' => $params['user_id']])->findOrEmpty(); if ($isFirst->isEmpty()) { $params['is_default'] = YesNoEnum::YES; } } UserAddress::create([ 'user_id' => $params['user_id'], 'contact' => $params['contact'], 'mobile' => $params['mobile'], 'gender' => $params['gender'] ?? 1, 'province_id' => $params['province_id'], 'city_id' => $params['city_id'], 'district_id' => $params['district_id'], 'address' => $params['address'] ?? '', 'longitude' => $params['longitude'], 'latitude' => $params['latitude'], 'house_number'=> $params['house_number'], 'is_default' => $params['is_default'] ?? 0, ]); return true; } /** * @notes 地址详情 * @param $id * @return array * @author ljj * @date 2022/2/24 11:55 上午 */ public function detail($id) { return UserAddress::where(['id'=>$id])->append(['province','city','district','gender_desc'])->findOrEmpty()->toArray(); } /** * @notes 编辑地址 * @param $params * @return bool * @author ljj * @date 2022/2/24 11:59 上午 */ public function edit($params) { if (isset($params['is_default']) && $params['is_default'] == YesNoEnum::YES) { UserAddress::where(['user_id' => $params['user_id']])->update(['is_default' => YesNoEnum::NO]); } UserAddress::update([ 'contact' => $params['contact'], 'mobile' => $params['mobile'], 'gender' => $params['gender'] ?? 1, 'province_id' => $params['province_id'], 'city_id' => $params['city_id'], 'district_id' => $params['district_id'], 'address' => $params['address'] ?? '', 'longitude' => $params['longitude'] ?? 0, 'latitude' => $params['latitude'] ?? 0, 'is_default' => $params['is_default'] ?? 0, 'house_number'=> $params['house_number'], ],['id'=>$params['id'],'user_id'=>$params['user_id']]); return true; } /** * @notes 设置默认地址 * @param $params * @return bool * @author ljj * @date 2022/2/24 12:08 下午 */ public function setDefault($params) { UserAddress::where(['user_id' => $params['user_id']])->update(['is_default' => YesNoEnum::NO]); UserAddress::update(['is_default' => YesNoEnum::YES],['id'=>$params['id'],'user_id'=>$params['user_id']]); return true; } /** * @notes 删除地址 * @param $id * @return bool * @author ljj * @date 2022/2/24 2:35 下午 */ public function del($id) { UserAddress::destroy($id); return true; } }