$userAddressId], [ 'user_id' => $user_id, 'user_name' => $user_name, 'address' => $address, 'doorplate' => $doorplate, 'gender' => $gender, 'lat' => $lat, 'lng' => $lng, 'tel' => $tel, 'tags' => $tags ]); if(empty($userAddressId)){ $userAddressId = $userAddress->id; Db::transaction(function () use ($user_id,$userAddressId) { UserAddress::query()->where(['user_id'=> $user_id,'is_default'=> 1])->update(['is_default' => 0]); UserAddress::query()->where('id',$userAddressId)->update(['is_default' => 1]); }); } return $userAddress; } public function check() { } public function undo($userAddressId) { return UserAddress::destroy($userAddressId); } public function setDefault($userId,$userAddressId) { UserAddress::query()->where([ ['user_id','=',$userId], ['is_default','=',1], ])->update(['is_default' => 0]); $userAddress = UserAddress::query()->find($userAddressId); $userAddress->is_default = 1; return $userAddress->save(); } public function get($userAddressId) { $address['address'] = UserAddress::query()->find($userAddressId); $address['tags'] = $this->getTags(); return $address; } public function getList($userId) { return UserAddress::query()->where('user_id',$userId)->get(); } /** * @param $userAddressId * @param $marketId * @return false|float */ public function getAddressAndDistributionPrice($userAddressId,$marketId) { $address = $this->get($userAddressId); $market = Market::query()->select('lng','lat')->find($marketId); if(empty($address['address']->lng) || empty($address['address']->lat) || empty($market->lng) || empty($market->lat)){ throw new ErrorCodeException(ErrorCode::LOCATION_USER_ADDRESS); } $distance = $this->locationService->getDistanceByTencent($market->lng,$market->lat,$address['address']->lng,$address['address']->lat); $distributionPrice = $this->distributionPriceService->do($distance); if($distance >= 1000){ $distance_text = '距你收货地址 ' . bcdiv($distance,1000,2) . 'km'; }else{ $distance_text = '距你收货地址 ' . $distance . 'm'; } $res['address'] = $address; $res['delivery_distance'] = $distance; $res['distribution_price'] = $distributionPrice; // $res['distribution_text'] = '¥ '.$distributionPrice .'(' .$distance_text .')'; $res['distribution_text'] = $distance_text; return $res; } public function getTags() { return [ ['id' => 1, 'name' => '家'], ['id' => 2, 'name' => '父母家'], ['id' => 3, 'name' => '岳父母家'], ['id' => 4, 'name' => '公司'], ['id' => 5, 'name' => '朋友家'], ]; } }