You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
323 lines
8.1 KiB
323 lines
8.1 KiB
<?php
|
|
|
|
namespace app\base\controller\user\api;
|
|
|
|
use app\base\model\district\District;
|
|
use app\base\model\user\UserAddress;
|
|
use app\BaseController;
|
|
use think\facade\Db;
|
|
|
|
|
|
class Address extends BaseController
|
|
{
|
|
|
|
/**
|
|
* 获取默认地址
|
|
* @date 2021-03-01
|
|
*/
|
|
public function getDefaultAddress()
|
|
{
|
|
$param = input('post.');
|
|
|
|
$adress_logic = new \app\base\logic\user\Address();
|
|
|
|
$result = $adress_logic ->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']);
|
|
}
|
|
|
|
}
|