getDefaultAddress(); if ($result['code']) { return json($result); } return json($result); } /** * 我的地址列表 * @date 2021-03-01 */ public function getAddressList() { $address_model = new UserAddress(); // 获取我的地址列表 $list = $address_model->getAllData([ ['uid', '=', UID], ['user_id', '=', USER_ID], ], '*', 'is_default desc'); return sendSuccessMessage([ 'list' => $list ]); } /** * 是否有地址 * @date 2021-03-01 */ public function hasAddress() { $address_model = new UserAddress(); // 获取我的地址列表 $number = $address_model->getNumber([ ['uid', '=', UID], ['user_id', '=', USER_ID], ]); return sendSuccessMessage([ 'is_frist' => empty($number) ? 1 : 0 ]); } /** * 设置默认地址 * @date 2021-03-01 */ public function setDefault() { $param = input('post.'); $address_model = new UserAddress(); //加载地址 $address = $address_model->getOneData([ ['id', '=', $param['address_id']] ]); if (empty($address)) { return sendErrorMessage(4001, '地址不存在'); } if ($address['user_id'] != USER_ID) { return sendErrorMessage(4002, '非本人操作'); } Db::startTrans(); //设置为默认地址 $data = [ 'is_default' => 1 ]; $res = $address_model->dataUpdate($data, [ ['id', '=', $param['address_id']] ]); if (!$res) { Db::rollback(); return sendErrorMessage(4003, '设置失败'); } //其他地址取消默认地址 $count = $address_model->getNumber([ ['user_id', '=', USER_ID], ['id', '<>', $param['address_id']], ['is_default', '=', 1], ]); if (!empty($count)) { $data = [ 'is_default' => 0 ]; $res = $address_model->dataUpdate($data, [ ['user_id', '=', USER_ID], ['is_default', '=', 1], ['id', '<>', $param['address_id']] ]); if (!$res) { Db::rollback(); return sendErrorMessage(4004, '设置失败'); } } Db::commit(); return sendSuccessMessage([], '设置成功'); } /** * 取消默认地址 * @date 2021-03-01 */ public function cancelDefault() { $param = input('post.'); $address_model = new UserAddress(); //加载地址 $address = $address_model->getOneData([ ['id', '=', $param['address_id']] ]); if (empty($address)) { return sendErrorMessage(4001, '地址不存在'); } if ($address['user_id'] != USER_ID) { return sendErrorMessage(4002, '非本人操作'); } //取消默认地址 $data = [ 'is_default' => 0 ]; $res = $address_model->dataUpdate($data, [ ['id', '=', $param['address_id']] ]); if (!$res) { return sendErrorMessage(4003, '设置失败'); } return sendSuccessMessage([], '取消默认地址成功'); } /** * 删除我的地址 * @date 2021-03-01 */ public function delAddress() { $param = input('post.'); $address_model = new UserAddress(); $res = $address_model->dataDel([ ['id', '=', $param['address_id']] ]); if (!$res) { return sendErrorMessage(4001, '删除失败'); } return sendSuccessMessage([], '删除成功'); } /** * 我的地址 * @date 2021-03-01 */ public function getAddressData() { $param = input('post.'); $address_model = new UserAddress(); $data = $address_model->getOneData(['id' => $param['address_id']]); return sendSuccessMessage(['data' => $data]); } /** * 添加修改地址 * @date 2021-03-01 */ public function addressUpdate() { $param = input('post.'); $validate = [ 'linkman' => 'require', 'mobile_phone' => 'require|mobile', 'address' => 'require', ]; $this->validate($param, $validate, [ 'linkman.require' => '请填写联系人', 'mobile_phone.require' => '请填写联系方式', 'mobile_phone.mobile' => '请输入正确的手机号', 'address.require' => '请填写详细地址', ]); $address_model = new UserAddress(); $district_model = new District(); $data = [ 'uid' => UID, 'user_agent' => USER_AGENT, 'user_id' => USER_ID, 'linkman' => $param['linkman'], 'mobile_phone' => $param['mobile_phone'], 'province_id' => $param['province_id'], 'city_id' => $param['city_id'], 'area_id' => $param['area_id'], 'province' => $district_model->getDistrictName($param['province_id']), 'city' => $district_model->getDistrictName($param['city_id']), 'area' => $district_model->getDistrictName($param['area_id']), 'address' => $param['address'], 'lat' => $param['lat'], 'lng' => $param['lng'], 'is_default' => $param['is_default'] ]; if (!empty($param['id'])) { $data['id'] = $param['id']; } Db::startTrans(); if ($data['is_default'] == 1) { //获取默认地址数量 $count = $address_model->getNumber([ ['user_id', '=', USER_ID], ['is_default', '=', 1], ]); if (!empty($count)) { $data_update = [ 'is_default' => 0, 'update_time' => time() ]; $res = $address_model->where([ ['user_id', '=', USER_ID] ])->update($data_update); if (!$res) { Db::rollback(); return sendErrorMessage(4001, '更新地址失败'); } } } $res = $address_model->dataUpdate($data); if (!$res) { Db::rollback(); return sendErrorMessage(4002, '更新地址失败'); } Db::commit(); return sendSuccessMessage(); } /** * 获取地址 * @throws \app\exception\SendInfo */ public function loadAddress() { $lat = input('post.lat/f', ''); $lng = input('post.lng/f', ''); if (!$lat || !$lng) { sendSuccessMessage([ 'address' => '未知位置' ]); } $jcapi_logic = new \app\api\logic\JcApi(); $address_info = $jcapi_logic->coordinateToAddressByTencentMap($lat, $lng); $address = $address_info['result']['formatted_addresses']['recommend'] ?? '未获取到'; sendSuccessMessage([ 'address' => $address, ]); } /** * 根据经纬度获取城市 * @throws \app\exception\SendInfo */ public function getLocationCity() { $lat = input('lat', 0); $lng = input('lng', 0); $result = invoke(JcApi::class)->coordinateToAddressByTencentMap($lat, $lng); sendSuccessMessage($result['result']['address_component']['city']); } }