init: import production code mss.nahaichuan.com (exclude Runtime/Uploads/backups/logs)
这个提交包含在:
@@ -0,0 +1,505 @@
|
||||
<?php
|
||||
|
||||
namespace SmallProgramApi\Controller;
|
||||
|
||||
use Api\Controller\CostCalculationController;
|
||||
use Common\Model\RetailAddressModel;
|
||||
use Common\Model\RetailShoppingModel;
|
||||
use Common\Model\RetailSkuGoodsModel;
|
||||
use Think\Controller;
|
||||
|
||||
//[1.8.50]
|
||||
|
||||
class AddressController extends BaseController
|
||||
{
|
||||
public function _initialize()
|
||||
{
|
||||
parent::_initialize();
|
||||
if (empty(self::$store_id)) {
|
||||
$res['status'] = 0;
|
||||
$res['msg'] = '缺少门店参数';
|
||||
$this->ajaxReturn($res);
|
||||
}
|
||||
if (empty(self::$uid)) {
|
||||
$res['status'] = -1;
|
||||
$res['msg'] = '用户未登录';
|
||||
$this->ajaxReturn($res);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有收货地址
|
||||
*/
|
||||
public function getAddress_v1()
|
||||
{
|
||||
$AddressModel = new RetailAddressModel();
|
||||
$map = array(
|
||||
$AddressModel::UID => self::$uid,
|
||||
$AddressModel::STATE => 0,
|
||||
);
|
||||
$addressList = $AddressModel->getSelect($map, '*', 'status desc');
|
||||
if ($addressList) {
|
||||
$res['status'] = 1;
|
||||
$res['msg'] = '获取成功';
|
||||
$res['list'] = $addressList;
|
||||
} else {
|
||||
$res['status'] = 0;
|
||||
$res['msg'] = '你还未设置收货地址';
|
||||
}
|
||||
$this->ajaxReturn($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加收货地址
|
||||
*/
|
||||
public function addAddress_v1()
|
||||
{
|
||||
$name = trim(I('post.name'));
|
||||
$phone = trim(I('post.phone'));
|
||||
$address = trim(I('post.address'));
|
||||
$house_number = trim(I('post.house_number'));
|
||||
$province = I('post.province');
|
||||
$city = I('post.city');
|
||||
$area = I('post.area');
|
||||
$status = I('post.status');
|
||||
if (empty($name) || empty($phone) || empty($address)) {
|
||||
$result['status'] = 0;
|
||||
$result['msg'] = '缺少参数';
|
||||
$this->ajaxReturn($result);
|
||||
}
|
||||
if (!verifyMobilePhone($phone)) {
|
||||
$res['status'] = 0;
|
||||
$res['msg'] = '手机号格式有误';
|
||||
$this->ajaxReturn($res);
|
||||
}
|
||||
if (!verifyName($name)) {
|
||||
$res['status'] = 0;
|
||||
$res['msg'] = '姓名格式有误';
|
||||
$this->ajaxReturn($res);
|
||||
}
|
||||
$AddressModel = D('RetailAddress');
|
||||
$item = array(
|
||||
$AddressModel::NAME => $name,
|
||||
$AddressModel::PHONE => $phone,
|
||||
$AddressModel::ADDRESS => $address,
|
||||
$AddressModel::PROVINCE => $province,
|
||||
$AddressModel::CITY => $city,
|
||||
$AddressModel::AREA => $area,
|
||||
$AddressModel::UID => self::$uid,
|
||||
$AddressModel::STATE => 0,
|
||||
);
|
||||
if (!empty($house_number)) {
|
||||
$item[$AddressModel::HOUSE_NUMBER] = $house_number;
|
||||
}
|
||||
$oldAddress = $AddressModel->getFind($item);
|
||||
if (!empty($oldAddress)) {
|
||||
$result['status'] = 0;
|
||||
$result['msg'] = '存在相同地址';
|
||||
$this->ajaxReturn($result);
|
||||
}
|
||||
$item[$AddressModel::STATE] = 0;
|
||||
$item[$AddressModel::STATUS] = 0;
|
||||
$item[$AddressModel::ADD_TIME] = time();
|
||||
if (isset($status)) {
|
||||
$item['status'] = $status;
|
||||
}
|
||||
$res = $AddressModel->addOrder($item);
|
||||
|
||||
if ($res) {
|
||||
if (isset($status) && $status == 1) {
|
||||
//设为默认地址后把其他地址改为非默认
|
||||
$AddressModel->updateOrder(['id' => ['neq', $res], 'uid' => self::$uid, 'state' => 0, 'status' => 1], ['status' => 0]);
|
||||
}
|
||||
$result['status'] = 1;
|
||||
$result['msg'] = '添加成功';
|
||||
} else {
|
||||
$result['status'] = 0;
|
||||
$result['msg'] = '添加失败';
|
||||
}
|
||||
$this->ajaxReturn($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取单个地址
|
||||
*/
|
||||
public function getAddressInfo_v1()
|
||||
{
|
||||
$id = I('post.id');
|
||||
if (empty($id)) {
|
||||
$result['status'] = 0;
|
||||
$result['msg'] = '缺少参数';
|
||||
$this->ajaxReturn($result);
|
||||
}
|
||||
$AddressModel = D('RetailAddress');
|
||||
$map = array(
|
||||
$AddressModel::UID => self::$uid,
|
||||
$AddressModel::STATE => 0,
|
||||
$AddressModel::ID => $id,
|
||||
);
|
||||
$addressList = $AddressModel->getFind($map);
|
||||
if ($addressList) {
|
||||
$res['status'] = 1;
|
||||
$res['msg'] = '查询成功';
|
||||
$res['address'] = $addressList;
|
||||
} else {
|
||||
$res['status'] = 0;
|
||||
$res['msg'] = '未找到该地址';
|
||||
}
|
||||
|
||||
$this->ajaxReturn($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑地址
|
||||
*/
|
||||
public function editAddress_v1()
|
||||
{
|
||||
$id = I('post.id');
|
||||
$name = I('post.name');
|
||||
$phone = I('post.phone');
|
||||
$address = I('post.address');
|
||||
$house_number = trim(I('post.house_number'));
|
||||
$province = I('post.province');
|
||||
$city = I('post.city');
|
||||
$area = I('post.area');
|
||||
$status = I('post.status');
|
||||
if (empty($id) || empty($name) || empty($phone) || empty($address)) {
|
||||
$result['status'] = 0;
|
||||
$result['msg'] = '缺少参数';
|
||||
$this->ajaxReturn($result);
|
||||
}
|
||||
if (!verifyName($name)) {
|
||||
$result['status'] = 0;
|
||||
$result['msg'] = '姓名格式有误';
|
||||
$this->ajaxReturn($result);
|
||||
}
|
||||
if (!verifyMobilePhone($phone)) {
|
||||
$result['status'] = 0;
|
||||
$result['msg'] = '手机号格式有误';
|
||||
$this->ajaxReturn($result);
|
||||
}
|
||||
$AddressModel = D('RetailAddress');
|
||||
$map = array(
|
||||
$AddressModel::UID => self::$uid,
|
||||
$AddressModel::STATE => 0,
|
||||
$AddressModel::ID => $id,
|
||||
);
|
||||
$save = array(
|
||||
$AddressModel::NAME => $name,
|
||||
$AddressModel::PHONE => $phone,
|
||||
$AddressModel::ADDRESS => $address,
|
||||
$AddressModel::HOUSE_NUMBER => $house_number,
|
||||
$AddressModel::PROVINCE => $province,
|
||||
$AddressModel::CITY => $city,
|
||||
$AddressModel::AREA => $area,
|
||||
);
|
||||
if (isset($status)) {
|
||||
$save['status'] = $status;
|
||||
}
|
||||
$update = $AddressModel->updateOrder($map, $save);
|
||||
if ($update) {
|
||||
if (isset($status) && $status == 1) {
|
||||
//设为默认地址后把其他地址改为非默认
|
||||
$AddressModel->updateOrder(['id' => ['neq', $id], 'uid' => self::$uid, 'state' => 0, 'status' => 1], ['status' => 0]);
|
||||
}
|
||||
$result['status'] = 1;
|
||||
$result['msg'] = '编辑成功';
|
||||
} else {
|
||||
$result['status'] = 0;
|
||||
$result['msg'] = '暂无修改';
|
||||
}
|
||||
$this->ajaxReturn($result);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 设置默认地址
|
||||
*/
|
||||
public function setDefault_v1()
|
||||
{
|
||||
$id = I('post.id');
|
||||
if (empty($id)) {
|
||||
$result['status'] = 0;
|
||||
$result['msg'] = '缺少参数';
|
||||
$this->ajaxReturn($result);
|
||||
}
|
||||
$AddressModel = D('RetailAddress');
|
||||
$map = array(
|
||||
$AddressModel::UID => self::$uid,
|
||||
$AddressModel::STATE => 0,
|
||||
$AddressModel::STATUS => 1
|
||||
);
|
||||
$AddressModel->updateOrder($map, array($AddressModel::STATUS => 0));
|
||||
unset($map[$AddressModel::STATUS]);
|
||||
$map[$AddressModel::ID] = $id;
|
||||
$update = $AddressModel->updateOrder($map, array($AddressModel::STATUS => 1));
|
||||
if ($update) {
|
||||
$res['status'] = 1;
|
||||
$res['msg'] = '设置成功';
|
||||
} else {
|
||||
$res['status'] = 0;
|
||||
$res['msg'] = '设置失败';
|
||||
}
|
||||
$this->ajaxReturn($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除收货地址
|
||||
*/
|
||||
public function delAddress_v1()
|
||||
{
|
||||
$id = I('post.id');
|
||||
if (empty($id)) {
|
||||
$result['status'] = 0;
|
||||
$result['msg'] = '缺少参数';
|
||||
$this->ajaxReturn($result);
|
||||
}
|
||||
$AddressModel = D('RetailAddress');
|
||||
$map = array(
|
||||
$AddressModel::UID => self::$uid,
|
||||
$AddressModel::STATE => 0,
|
||||
$AddressModel::ID => $id,
|
||||
);
|
||||
$update = $AddressModel->updateOrder($map, array($AddressModel::STATE => 1));
|
||||
if ($update) {
|
||||
$res['status'] = 1;
|
||||
$res['msg'] = '删除成功';
|
||||
} else {
|
||||
$res['status'] = 0;
|
||||
$res['msg'] = '删除失败';
|
||||
}
|
||||
$this->ajaxReturn($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取配送费
|
||||
*/
|
||||
public function range_v1()
|
||||
{
|
||||
$id = I('post.address_id');
|
||||
if (empty($id)) {
|
||||
$result['status'] = 0;
|
||||
$result['msg'] = '缺少参数';
|
||||
$this->ajaxReturn($result);
|
||||
}
|
||||
$result = $this->getLngLatAndFee($id);
|
||||
$this->ajaxReturn($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取配送费
|
||||
*/
|
||||
public function range_v2()
|
||||
{
|
||||
$verifyItem = array(
|
||||
'order_genre' => array('in' => array(1, 2, 3, 4), 'require_link' => array(
|
||||
array('require_data' => 1, 'link_key' => array('shopping_ids')),
|
||||
array('require_data' => 2, 'link_key' => array('group_id')),
|
||||
array('require_data' => 3, 'link_key' => array('spike_id')),
|
||||
array('require_data' => 4, 'link_key' => array('advance_id')),
|
||||
)),
|
||||
'sku_id' => array('type' => 'number', 'min' => 0, 'require' => false),
|
||||
'address_id' => array('type' => 'number', 'min' => 1),
|
||||
'pickup_type' => array('in' => array(1, 2, 3)),
|
||||
'group_id' => array('type' => 'number', 'min' => 1, 'require' => false, 'require_link' => array(
|
||||
array('require_data' => true, 'link_key' => array('num')),
|
||||
)),
|
||||
'spike_id' => array('type' => 'number', 'min' => 1, 'require' => false, 'require_link' => array(
|
||||
array('require_data' => true, 'link_key' => array('num')),
|
||||
)),
|
||||
'advance_id' => array('type' => 'number', 'min' => 1, 'require' => false, 'require_link' => array(
|
||||
array('require_data' => true, 'link_key' => array('num')),
|
||||
)),
|
||||
);
|
||||
$post = I('post.');
|
||||
$verify = verifyRequestParam($post, $verifyItem);//验证参数是否正确
|
||||
if ($verify['error'] == 1) {
|
||||
$result['status'] = 0;
|
||||
$result['msg'] = $verify['key'] . $verify['message'];
|
||||
$this->ajaxReturn($result);
|
||||
}
|
||||
|
||||
$address_id = $post['address_id'];
|
||||
$shopping_ids = $post['shopping_ids'];
|
||||
$pickup_type = $post['pickup_type'];
|
||||
$order_genre = $post['order_genre'];
|
||||
$num = $post['num'];
|
||||
if ($pickup_type == 2) {
|
||||
//同城配送
|
||||
$result = $this->getLngLatAndFee($address_id);
|
||||
} else {
|
||||
//快递发货
|
||||
$GoodsSkuModel = new RetailSkuGoodsModel();
|
||||
$weight_value = 0;
|
||||
if (!empty($post['sku_id'])) {
|
||||
$weight_value = $GoodsSkuModel->getFindField(array('id' => $post['sku_id']), 'weight_value');
|
||||
}
|
||||
switch ($order_genre) {
|
||||
case '1':
|
||||
//普通
|
||||
$ShoppingModel = new RetailShoppingModel();
|
||||
$fields = array(
|
||||
's.id',
|
||||
's.num',
|
||||
's.goods_id',
|
||||
's.sku_id',
|
||||
'g.goods_name',
|
||||
'g.weight_value',
|
||||
'g.delivery_template_id',
|
||||
'g.delivery_type',
|
||||
);
|
||||
$shopping_ids = json_decode($shopping_ids, true);
|
||||
$goods = $ShoppingModel->getShoppingGoods(self::$uid, self::$store_id, $fields, $shopping_ids, '1,2');
|
||||
foreach ($goods as $key => &$value) {
|
||||
if (!empty($value['sku_id'])) {
|
||||
$value['weight_value'] = $GoodsSkuModel->getFindField(array('id' => $value['sku_id']), 'weight_value');
|
||||
}
|
||||
if (!empty($value['delivery_type'])) {
|
||||
$t = explode(',', $value['delivery_type']);
|
||||
if (!in_array('3', $t)) {
|
||||
$this->ajaxReturn(array(
|
||||
'status' => 0,
|
||||
'msg' => '商品' . $value['goods_name'] . '配送方式发生变化,请退出重试',
|
||||
));
|
||||
}
|
||||
} else {
|
||||
$this->ajaxReturn(array(
|
||||
'status' => 0,
|
||||
'msg' => '商品' . $value['goods_name'] . '配送方式发生变化,请退出重试',
|
||||
));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case '2':
|
||||
//拼团
|
||||
$delivery_template_id = D('RetailGroup')->getFindField(array('id' => $post['group_id']), 'delivery_template_id');
|
||||
if (!$delivery_template_id) {
|
||||
$this->ajaxReturn(array(
|
||||
'status' => 0,
|
||||
'msg' => '商品配送方式发生变化,请退出重试',
|
||||
));
|
||||
}
|
||||
$goods = array(
|
||||
array(
|
||||
'num' => $num,
|
||||
'delivery_template_id' => $delivery_template_id,
|
||||
'weight_value' => $weight_value,
|
||||
)
|
||||
);
|
||||
break;
|
||||
case '3':
|
||||
//秒杀
|
||||
$spike = D('RetailSpike')->getFind(array('id' => $post['spike_id']), 'delivery_template_id,skuid');
|
||||
if (!$spike['delivery_template_id']) {
|
||||
$this->ajaxReturn(array(
|
||||
'status' => 0,
|
||||
'msg' => '商品配送方式发生变化,请退出重试',
|
||||
));
|
||||
}
|
||||
if (!empty($spike['skuid']) && !$weight_value) {
|
||||
$weight_value = $GoodsSkuModel->getFindField(array('id' => $spike['skuid']), 'weight_value');
|
||||
}
|
||||
$goods = array(
|
||||
array(
|
||||
'num' => $num,
|
||||
'delivery_template_id' => $spike['delivery_template_id'],
|
||||
'weight_value' => $weight_value,
|
||||
)
|
||||
);
|
||||
break;
|
||||
case '4':
|
||||
//预售
|
||||
$delivery_template_id = D('AdvanceGoods')->getFindField(array('id' => $post['advance_id']), 'delivery_template_id');
|
||||
if (!$delivery_template_id) {
|
||||
$this->ajaxReturn(array(
|
||||
'status' => 0,
|
||||
'msg' => '商品配送方式发生变化,请退出重试',
|
||||
));
|
||||
}
|
||||
$goods = array(
|
||||
array(
|
||||
'num' => $num,
|
||||
'delivery_template_id' => $delivery_template_id,
|
||||
'weight_value' => $weight_value,
|
||||
)
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
||||
$AddressModel = D('RetailAddress');
|
||||
$addressInfo = $AddressModel->getUserAddress($address_id);
|
||||
$province = $addressInfo['province'];
|
||||
$city = $addressInfo['city'];
|
||||
$area = $addressInfo['area'];
|
||||
$CostCalculation = new CostCalculationController();
|
||||
$cost_fee = $CostCalculation->getFreight(json_encode($goods), self::$store_id, $province, $city, $area);
|
||||
if ($cost_fee['status'] == 1) {
|
||||
$result = array(
|
||||
'status' => 1,
|
||||
'msg' => '配送费获取成功',
|
||||
'fee' => $cost_fee['delivery_fee'],
|
||||
);
|
||||
} else {
|
||||
$result = $cost_fee;
|
||||
}
|
||||
}
|
||||
$this->ajaxReturn($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 逆地理编码 - 根据经纬度获取地址信息
|
||||
*/
|
||||
public function reverseGeocode()
|
||||
{
|
||||
$lat = I('post.lat', '', 'trim');
|
||||
$lng = I('post.lng', '', 'trim');
|
||||
$type = I('post.type', 1, 'intval'); // 坐标类型 1=GCJ02(高德/腾讯) 2=BD09(百度)
|
||||
|
||||
// 参数验证
|
||||
if (empty($lat) || empty($lng)) {
|
||||
$this->ajaxReturn(array(
|
||||
'status' => 0,
|
||||
'msg' => '经纬度参数不能为空'
|
||||
));
|
||||
}
|
||||
|
||||
// 验证经纬度格式
|
||||
if (!is_numeric($lat) || !is_numeric($lng)) {
|
||||
$this->ajaxReturn(array(
|
||||
'status' => 0,
|
||||
'msg' => '经纬度格式不正确'
|
||||
));
|
||||
}
|
||||
|
||||
// 验证经纬度范围
|
||||
if ($lat < -90 || $lat > 90 || $lng < -180 || $lng > 180) {
|
||||
$this->ajaxReturn(array(
|
||||
'status' => 0,
|
||||
'msg' => '经纬度超出有效范围'
|
||||
));
|
||||
}
|
||||
|
||||
// 调用逆地理编码函数
|
||||
$result = getReverseGeocode($lat, $lng, $type);
|
||||
|
||||
if ($result && $result['status'] == 1) {
|
||||
$this->ajaxReturn(array(
|
||||
'status' => 1,
|
||||
'msg' => '获取地址成功',
|
||||
'data' => array(
|
||||
'address' => $result['address'],
|
||||
'province' => $result['province'],
|
||||
'city' => $result['city'],
|
||||
'district' => $result['district'],
|
||||
'street' => $result['street'],
|
||||
'street_number' => $result['street_number']
|
||||
)
|
||||
));
|
||||
} else {
|
||||
$this->ajaxReturn(array(
|
||||
'status' => 0,
|
||||
'msg' => isset($result['msg']) ? $result['msg'] : '逆地理编码失败'
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
在新工单中引用
屏蔽一个用户