用户地址数据服务层分离,新增百度小程序地址导入
parent
0f1ed149f1
commit
54764fe7f2
|
|
@ -10,7 +10,7 @@
|
|||
// +----------------------------------------------------------------------
|
||||
namespace app\api\controller;
|
||||
|
||||
use app\service\UserService;
|
||||
use app\service\UserAddressService;
|
||||
use app\service\ConfigService;
|
||||
|
||||
/**
|
||||
|
|
@ -50,7 +50,7 @@ class UserAddress extends Common
|
|||
{
|
||||
$params = $this->data_post;
|
||||
$params['user'] = $this->user;
|
||||
return UserService::UserAddressRow($params);
|
||||
return UserAddressService::UserAddressRow($params);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -63,7 +63,7 @@ class UserAddress extends Common
|
|||
*/
|
||||
public function Index()
|
||||
{
|
||||
return UserService::UserAddressList(['user'=>$this->user]);
|
||||
return UserAddressService::UserAddressList(['user'=>$this->user]);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -79,7 +79,7 @@ class UserAddress extends Common
|
|||
{
|
||||
$params = $this->data_post;
|
||||
$params['user'] = $this->user;
|
||||
return UserService::UserAddressSave($params);
|
||||
return UserAddressService::UserAddressSave($params);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -94,7 +94,7 @@ class UserAddress extends Common
|
|||
{
|
||||
$params = $this->data_post;
|
||||
$params['user'] = $this->user;
|
||||
return UserService::UserAddressDelete($params);
|
||||
return UserAddressService::UserAddressDelete($params);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -109,7 +109,7 @@ class UserAddress extends Common
|
|||
{
|
||||
$params = $this->data_post;
|
||||
$params['user'] = $this->user;
|
||||
return UserService::UserAddressDefault($params);
|
||||
return UserAddressService::UserAddressDefault($params);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -125,5 +125,19 @@ class UserAddress extends Common
|
|||
return ConfigService::SiteTypeExtractionAddressList();
|
||||
}
|
||||
|
||||
/**
|
||||
* 外部系统地址添加
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2020-09-21
|
||||
* @desc description
|
||||
*/
|
||||
public function OutSystemAdd()
|
||||
{
|
||||
$params = $this->data_post;
|
||||
$params['user'] = $this->user;
|
||||
return UserAddressService::OutSystemUserAddressAdd($params);
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -13,6 +13,7 @@ namespace app\index\controller;
|
|||
use think\facade\Hook;
|
||||
use app\service\GoodsService;
|
||||
use app\service\UserService;
|
||||
use app\service\UserAddressService;
|
||||
use app\service\PaymentService;
|
||||
use app\service\BuyService;
|
||||
|
||||
|
|
@ -83,7 +84,7 @@ class Buy extends Common
|
|||
$buy_goods = $buy_ret['data']['goods'];
|
||||
|
||||
// 用户地址
|
||||
$address = UserService::UserAddressList(['user'=>$this->user]);
|
||||
$address = UserAddressService::UserAddressList(['user'=>$this->user]);
|
||||
$this->assign('user_address_list', $address['data']);
|
||||
|
||||
// 支付方式
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
namespace app\index\controller;
|
||||
|
||||
use app\service\SeoService;
|
||||
use app\service\UserService;
|
||||
use app\service\UserAddressService;
|
||||
|
||||
/**
|
||||
* 用户地址管理
|
||||
|
|
@ -48,7 +48,7 @@ class UserAddress extends Common
|
|||
public function Index()
|
||||
{
|
||||
// 用户地址列表
|
||||
$data = UserService::UserAddressList(['user'=>$this->user]);
|
||||
$data = UserAddressService::UserAddressList(['user'=>$this->user]);
|
||||
$this->assign('user_address_list', $data['data']);
|
||||
|
||||
// 浏览器名称
|
||||
|
|
@ -74,7 +74,7 @@ class UserAddress extends Common
|
|||
{
|
||||
$params = $this->data_request;
|
||||
$params['user'] = $this->user;
|
||||
$ret = UserService::UserAddressRow($params);
|
||||
$ret = UserAddressService::UserAddressRow($params);
|
||||
$data = $ret['data'];
|
||||
}
|
||||
|
||||
|
|
@ -95,7 +95,7 @@ class UserAddress extends Common
|
|||
{
|
||||
$params = input('post.');
|
||||
$params['user'] = $this->user;
|
||||
return UserService::UserAddressSave($params);
|
||||
return UserAddressService::UserAddressSave($params);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -110,7 +110,7 @@ class UserAddress extends Common
|
|||
{
|
||||
$params = $_POST;
|
||||
$params['user'] = $this->user;
|
||||
return UserService::UserAddressDelete($params);
|
||||
return UserAddressService::UserAddressDelete($params);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -125,7 +125,7 @@ class UserAddress extends Common
|
|||
{
|
||||
$params = $_POST;
|
||||
$params['user'] = $this->user;
|
||||
return UserService::UserAddressDefault($params);
|
||||
return UserAddressService::UserAddressDefault($params);
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -14,6 +14,7 @@ use think\Db;
|
|||
use think\facade\Hook;
|
||||
use app\service\GoodsService;
|
||||
use app\service\UserService;
|
||||
use app\service\UserAddressService;
|
||||
use app\service\ResourcesService;
|
||||
use app\service\PaymentService;
|
||||
use app\service\ConfigService;
|
||||
|
|
@ -723,7 +724,7 @@ class BuyService
|
|||
{
|
||||
$address_params['where'] = ['id' => $params['address_id']];
|
||||
}
|
||||
$ads = UserService::UserDefaultAddress($address_params);
|
||||
$ads = UserAddressService::UserDefaultAddress($address_params);
|
||||
if(!empty($ads['data']))
|
||||
{
|
||||
$address = $ads['data'];
|
||||
|
|
|
|||
|
|
@ -1007,6 +1007,7 @@ class GoodsService
|
|||
}
|
||||
|
||||
// 是否成功
|
||||
$status = false;
|
||||
if(isset($goods_id) && $goods_id > 0)
|
||||
{
|
||||
// 分类
|
||||
|
|
@ -1063,13 +1064,33 @@ class GoodsService
|
|||
return $ret;
|
||||
}
|
||||
|
||||
// 提交事务
|
||||
Db::commit();
|
||||
return DataReturn('操作成功', 0);
|
||||
// 操作成功
|
||||
$status = true;
|
||||
}
|
||||
|
||||
// 回滚事务
|
||||
Db::rollback();
|
||||
// 事务处理
|
||||
if($status)
|
||||
{
|
||||
Db::commit();
|
||||
} else {
|
||||
Db::rollback();
|
||||
}
|
||||
|
||||
// 商品保存后钩子
|
||||
$hook_name = 'plugins_service_goods_save_end';
|
||||
Hook::listen($hook_name, [
|
||||
'hook_name' => $hook_name,
|
||||
'is_backend' => true,
|
||||
'params' => $params,
|
||||
'data' => $data,
|
||||
'goods_id' => $goods_id,
|
||||
]);
|
||||
|
||||
// 返回信息
|
||||
if($status)
|
||||
{
|
||||
return DataReturn('操作成功', 0);
|
||||
}
|
||||
return DataReturn('操作失败', -100);
|
||||
}
|
||||
|
||||
|
|
@ -1687,6 +1708,15 @@ class GoodsService
|
|||
return DataReturn('相册删除失败', -100);
|
||||
}
|
||||
|
||||
// 商品删除钩子
|
||||
$hook_name = 'plugins_service_goods_delete';
|
||||
Hook::listen($hook_name, [
|
||||
'hook_name' => $hook_name,
|
||||
'is_backend' => true,
|
||||
'params' => $params,
|
||||
'data_ids' => $params['ids'],
|
||||
]);
|
||||
|
||||
// 提交事务
|
||||
Db::commit();
|
||||
return DataReturn('删除成功', 0);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,590 @@
|
|||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ShopXO 国内领先企业级B2C免费开源电商系统
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2011~2019 http://shopxo.net All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: Devil
|
||||
// +----------------------------------------------------------------------
|
||||
namespace app\service;
|
||||
|
||||
use think\Db;
|
||||
use think\facade\Hook;
|
||||
use app\service\RegionService;
|
||||
|
||||
/**
|
||||
* 用户地址服务层
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2020-09-21
|
||||
* @desc description
|
||||
*/
|
||||
class UserAddressService
|
||||
{
|
||||
/**
|
||||
* 用户地址列表列表
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2018-08-29
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function UserAddressList($params = [])
|
||||
{
|
||||
// 请求参数
|
||||
$p = [
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'user',
|
||||
'error_msg' => '用户信息有误',
|
||||
],
|
||||
];
|
||||
$ret = ParamsChecked($params, $p);
|
||||
if($ret !== true)
|
||||
{
|
||||
return DataReturn($ret, -1);
|
||||
}
|
||||
|
||||
$where = (!empty($params['where']) && is_array($params['where'])) ? $params['where'] : [];
|
||||
$where['user_id'] = $params['user']['id'];
|
||||
$where['is_delete_time'] = 0;
|
||||
|
||||
// 获取用户地址
|
||||
$field = 'id,alias,name,tel,province,city,county,address,lng,lat,is_default';
|
||||
$data = Db::name('UserAddress')->where($where)->field($field)->order('id desc')->select();
|
||||
if(!empty($data))
|
||||
{
|
||||
$is_default = false;
|
||||
foreach($data as &$v)
|
||||
{
|
||||
// 地区
|
||||
$v['province_name'] = RegionService::RegionName($v['province']);
|
||||
$v['city_name'] = RegionService::RegionName($v['city']);
|
||||
$v['county_name'] = RegionService::RegionName($v['county']);
|
||||
|
||||
// 是否有默认地址
|
||||
if($is_default === false && $v['is_default'] == 1)
|
||||
{
|
||||
$is_default = true;
|
||||
}
|
||||
}
|
||||
|
||||
// 是否处理默认地址,没有默认地址将第一个设置为默认地址
|
||||
$is_default_handle = isset($params['is_default_handle']) ? intval($params['is_default_handle']) : 1;
|
||||
if($is_default === false && $is_default_handle == 1)
|
||||
{
|
||||
$data[0]['is_default'] = true;
|
||||
}
|
||||
}
|
||||
|
||||
// 用户地址列表钩子
|
||||
$hook_name = 'plugins_service_user_address_list';
|
||||
Hook::listen($hook_name, [
|
||||
'hook_name' => $hook_name,
|
||||
'is_backend' => true,
|
||||
'params' => $params,
|
||||
'data' => &$data,
|
||||
'user_id' => $params['user']['id'],
|
||||
]);
|
||||
|
||||
return DataReturn('操作成功', 0, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取地址详情
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2018-08-29
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function UserAddressRow($params = [])
|
||||
{
|
||||
// 请求参数
|
||||
$p = [
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'id',
|
||||
'error_msg' => '地址id不能为空',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'user',
|
||||
'error_msg' => '用户信息有误',
|
||||
],
|
||||
];
|
||||
$ret = ParamsChecked($params, $p);
|
||||
if($ret !== true)
|
||||
{
|
||||
return DataReturn($ret, -1);
|
||||
}
|
||||
|
||||
// 获取用户地址
|
||||
$params['where'] = [
|
||||
'id' => intval($params['id']),
|
||||
];
|
||||
$params['is_default_handle'] = 0;
|
||||
$ret = self::UserAddressList($params);
|
||||
if(!empty($ret['data'][0]))
|
||||
{
|
||||
$ret['data'] = $ret['data'][0];
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户默认地址
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2018-08-29
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function UserDefaultAddress($params = [])
|
||||
{
|
||||
// 请求参数
|
||||
$p = [
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'user',
|
||||
'error_msg' => '用户信息有误',
|
||||
],
|
||||
];
|
||||
$ret = ParamsChecked($params, $p);
|
||||
if($ret !== true)
|
||||
{
|
||||
return DataReturn($ret, -1);
|
||||
}
|
||||
|
||||
// 获取用户地址
|
||||
$params['where'] = empty($params['where']) ? ['is_default'=>1] : $params['where'];
|
||||
$ret = self::UserAddressList($params);
|
||||
$data = [];
|
||||
if(!empty($ret['data'][0]))
|
||||
{
|
||||
$data = $ret['data'][0];
|
||||
} else {
|
||||
// 没有默认地址则读取第一条作为默认地址
|
||||
unset($params['where']);
|
||||
$ret = self::UserAddressList($params);
|
||||
if(!empty($ret['data'][0]))
|
||||
{
|
||||
$data = $ret['data'][0];
|
||||
}
|
||||
}
|
||||
|
||||
// 用户默认地址钩子
|
||||
$hook_name = 'plugins_service_user_address_default_row';
|
||||
Hook::listen($hook_name, [
|
||||
'hook_name' => $hook_name,
|
||||
'is_backend' => true,
|
||||
'params' => $params,
|
||||
'data' => &$data,
|
||||
'user_id' => $params['user']['id'],
|
||||
]);
|
||||
|
||||
return DataReturn('获取成功', 0, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户地址保存
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2018-08-29
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function UserAddressSave($params = [])
|
||||
{
|
||||
// 参数校验
|
||||
$ret = self::UserAddressSaveParamsCheck($params);
|
||||
if($ret['code'] != 0)
|
||||
{
|
||||
return $ret;
|
||||
}
|
||||
|
||||
if(!empty($params['id']))
|
||||
{
|
||||
$where = ['user_id' => $params['user']['id'], 'id'=>$params['id']];
|
||||
$temp = Db::name('UserAddress')->where($where)->find();
|
||||
}
|
||||
|
||||
// 操作数据
|
||||
$is_default = isset($params['is_default']) ? intval($params['is_default']) : 0;
|
||||
$data = [
|
||||
'name' => $params['name'],
|
||||
'tel' => $params['tel'],
|
||||
'province' => $params['province'],
|
||||
'city' => $params['city'],
|
||||
'county' => $params['county'],
|
||||
'address' => $params['address'],
|
||||
'is_default' => $is_default,
|
||||
];
|
||||
if(!empty($params['alias']))
|
||||
{
|
||||
$data['alias'] = $params['alias'];
|
||||
}
|
||||
if(!empty($params['lng']))
|
||||
{
|
||||
$data['lng'] = floatval($params['lng']);
|
||||
}
|
||||
if(!empty($params['lat']))
|
||||
{
|
||||
$data['lat'] = floatval($params['lat']);
|
||||
}
|
||||
|
||||
// 用户地址保存前钩子
|
||||
$hook_name = 'plugins_service_user_address_save_begin';
|
||||
$ret = HookReturnHandle(Hook::listen($hook_name, [
|
||||
'hook_name' => $hook_name,
|
||||
'is_backend' => true,
|
||||
'params' => $params,
|
||||
'data' => &$data,
|
||||
'user_id' => $params['user']['id'],
|
||||
]));
|
||||
if(isset($ret['code']) && $ret['code'] != 0)
|
||||
{
|
||||
return $ret;
|
||||
}
|
||||
|
||||
Db::startTrans();
|
||||
|
||||
// 默认地址处理
|
||||
if($is_default == 1)
|
||||
{
|
||||
Db::name('UserAddress')->where(['user_id'=>$params['user']['id'], 'is_default'=>1])->update(['is_default'=>0]);
|
||||
}
|
||||
|
||||
// 添加/更新数据
|
||||
$status = false;
|
||||
$msg = '操作失败';
|
||||
if(empty($temp))
|
||||
{
|
||||
$data['user_id'] = $params['user']['id'];
|
||||
$data['add_time'] = time();
|
||||
if(Db::name('UserAddress')->insertGetId($data) > 0)
|
||||
{
|
||||
$status = true;
|
||||
$msg = '新增成功';
|
||||
} else {
|
||||
$msg = '新增失败';
|
||||
}
|
||||
} else {
|
||||
$data['upd_time'] = time();
|
||||
if(Db::name('UserAddress')->where($where)->update($data))
|
||||
{
|
||||
$status = true;
|
||||
$msg = '更新成功';
|
||||
} else {
|
||||
$msg = '更新失败';
|
||||
}
|
||||
}
|
||||
|
||||
// 事务处理
|
||||
if($status)
|
||||
{
|
||||
Db::commit();
|
||||
} else {
|
||||
Db::rollback();
|
||||
}
|
||||
|
||||
// 用户地址保存后钩子
|
||||
$hook_name = 'plugins_service_user_address_save_end';
|
||||
Hook::listen($hook_name, [
|
||||
'hook_name' => $hook_name,
|
||||
'is_backend' => true,
|
||||
'params' => $params,
|
||||
'data' => $data,
|
||||
'user_id' => $params['user']['id'],
|
||||
]);
|
||||
|
||||
return DataReturn($msg, $status ? 0 : -100);
|
||||
}
|
||||
|
||||
/**
|
||||
* 地址保存参数校验
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2020-09-21
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
private static function UserAddressSaveParamsCheck($params = [])
|
||||
{
|
||||
// 请求参数
|
||||
$p = [
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'name',
|
||||
'error_msg' => '姓名不能为空',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'tel',
|
||||
'error_msg' => '联系电话不能为空',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'province',
|
||||
'error_msg' => '省不能为空',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'city',
|
||||
'error_msg' => '城市不能为空',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'county',
|
||||
'error_msg' => '区/县不能为空',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'address',
|
||||
'error_msg' => '详细地址不能为空',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'user',
|
||||
'error_msg' => '用户信息有误',
|
||||
],
|
||||
];
|
||||
$ret = ParamsChecked($params, $p);
|
||||
if($ret !== true)
|
||||
{
|
||||
return DataReturn($ret, -1);
|
||||
}
|
||||
return DataReturn('success', 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户地址删除
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2018-08-29
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function UserAddressDelete($params = [])
|
||||
{
|
||||
// 请求参数
|
||||
$p = [
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'id',
|
||||
'error_msg' => '地址id不能为空',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'user',
|
||||
'error_msg' => '用户信息有误',
|
||||
],
|
||||
];
|
||||
$ret = ParamsChecked($params, $p);
|
||||
if($ret !== true)
|
||||
{
|
||||
return DataReturn($ret, -1);
|
||||
}
|
||||
|
||||
// 软删除数据
|
||||
$where = ['user_id' => $params['user']['id'], 'id'=>$params['id']];
|
||||
$data = ['is_delete_time' => time()];
|
||||
if(Db::name('UserAddress')->where($where)->update($data))
|
||||
{
|
||||
// 用户地址删除钩子
|
||||
$hook_name = 'plugins_service_user_address_delete';
|
||||
Hook::listen($hook_name, [
|
||||
'hook_name' => $hook_name,
|
||||
'is_backend' => true,
|
||||
'params' => $params,
|
||||
'data_id' => $params['id'],
|
||||
'user_id' => $params['user']['id'],
|
||||
]);
|
||||
|
||||
return DataReturn('删除成功', 0);
|
||||
} else {
|
||||
return DataReturn('删除失败或资源不存在', -100);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户地址设置默认地址
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2018-09-25
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function UserAddressDefault($params = [])
|
||||
{
|
||||
// 请求参数
|
||||
$p = [
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'id',
|
||||
'error_msg' => '地址id不能为空',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'user',
|
||||
'error_msg' => '用户信息有误',
|
||||
],
|
||||
];
|
||||
$ret = ParamsChecked($params, $p);
|
||||
if($ret !== true)
|
||||
{
|
||||
return DataReturn($ret, -1);
|
||||
}
|
||||
|
||||
// 开启事务
|
||||
Db::startTrans();
|
||||
|
||||
// 先全部设置为0 再将当前设置为1
|
||||
$all_status = Db::name('UserAddress')->where(['user_id' => $params['user']['id']])->update(['is_default'=>0]);
|
||||
$my_status = Db::name('UserAddress')->where(['user_id' => $params['user']['id'], 'id'=>$params['id']])->update(['is_default'=>1]);
|
||||
if($all_status !== false && $my_status)
|
||||
{
|
||||
// 用户地址删除钩子
|
||||
$hook_name = 'plugins_service_user_address_default';
|
||||
Hook::listen($hook_name, [
|
||||
'hook_name' => $hook_name,
|
||||
'is_backend' => true,
|
||||
'params' => $params,
|
||||
'data_id' => $params['id'],
|
||||
'user_id' => $params['user']['id'],
|
||||
]);
|
||||
|
||||
// 提交事务
|
||||
Db::commit();
|
||||
return DataReturn('设置成功', 0);
|
||||
} else {
|
||||
// 回滚事务
|
||||
Db::rollback();
|
||||
return DataReturn('设置失败', -100);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 外部系统地址添加
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2020-09-21
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function OutSystemUserAddressAdd($params = [])
|
||||
{
|
||||
// 参数校验
|
||||
$ret = self::UserAddressSaveParamsCheck($params);
|
||||
if($ret['code'] != 0)
|
||||
{
|
||||
return $ret;
|
||||
}
|
||||
|
||||
// 省市区解析
|
||||
$province_name = $params['province'];
|
||||
$city_name = $params['city'];
|
||||
$county_name = $params['county'];
|
||||
$town_name = isset($params['town']) ? $params['town'] : '';
|
||||
|
||||
// 开始匹配地址
|
||||
$field = 'id,name,level';
|
||||
|
||||
// 省匹配
|
||||
$search = ['市', '区'];
|
||||
$where = [
|
||||
['pid', '=', 0],
|
||||
['level', '=', 1],
|
||||
['name', 'like', str_replace($search, '', $province_name).'%'],
|
||||
];
|
||||
$province = Db::name('Region')->where($where)->field($field)->find();
|
||||
if(empty($province))
|
||||
{
|
||||
return DataReturn('省匹配失败', -1);
|
||||
}
|
||||
|
||||
// 市匹配
|
||||
$where = [
|
||||
['pid', '=', $province['id']],
|
||||
['level', '=', 2],
|
||||
];
|
||||
$search = ['自治州', '自治县', '特别行政区', '地区', '市', '县', '区'];
|
||||
$where1 = $where;
|
||||
$where1[] = ['name', 'like', str_replace($search, '', $city_name).'%'];
|
||||
$city = Db::name('Region')->where($where1)->field($field)->find();
|
||||
if(empty($city))
|
||||
{
|
||||
// 没查询到则使用县字段查询
|
||||
$where2 = $where;
|
||||
$where2[] = ['name', 'like', str_replace($search, '', $county_name).'%'];
|
||||
$city = Db::name('Region')->where($where2)->field($field)->find();
|
||||
if(empty($city))
|
||||
{
|
||||
return DataReturn('市匹配失败', -1);
|
||||
}
|
||||
}
|
||||
|
||||
// 区/县匹配
|
||||
$where = [
|
||||
['pid', '=', $city['id']],
|
||||
['level', '=', 3],
|
||||
];
|
||||
$search = ['街道', '县', '镇'];
|
||||
$where1 = $where;
|
||||
$where1[] = ['name', 'like', str_replace($search, '', $county_name).'%'];
|
||||
$county = Db::name('Region')->where($where1)->field($field)->find();
|
||||
if(empty($county) && !empty($town_name))
|
||||
{
|
||||
// 没查询到则使用街道字段查询
|
||||
$where2 = $where;
|
||||
$where2[] = ['name', 'like', str_replace($search, '', $town_name).'%'];
|
||||
$county = Db::name('Region')->where($where2)->field($field)->find();
|
||||
}
|
||||
if(empty($county))
|
||||
{
|
||||
return DataReturn('区/县匹配失败', -1);
|
||||
}
|
||||
|
||||
// 地区id赋值
|
||||
$params['province'] = $province['id'];
|
||||
$params['city'] = $city['id'];
|
||||
$params['county'] = $county['id'];
|
||||
|
||||
// 存在街道字段数据则拼接到详细地址前面
|
||||
if(!empty($town_name))
|
||||
{
|
||||
$params['address'] = $town_name.$params['address'];
|
||||
}
|
||||
|
||||
// 地址存在则不重复添加
|
||||
$where = [
|
||||
'name' => $params['name'],
|
||||
'tel' => $params['tel'],
|
||||
'province' => $params['province'],
|
||||
'city' => $params['city'],
|
||||
'county' => $params['county'],
|
||||
'address' => $params['address'],
|
||||
'user_id' => $params['user']['id'],
|
||||
];
|
||||
$address = Db::name('UserAddress')->where($where)->find();
|
||||
if(!empty($address))
|
||||
{
|
||||
return DataReturn('地址已存在', -1);
|
||||
}
|
||||
|
||||
// 地址保存
|
||||
return self::UserAddressSave($params);
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -381,356 +381,6 @@ class UserService
|
|||
return DataReturn('删除失败', -100);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户地址列表列表
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2018-08-29
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function UserAddressList($params = [])
|
||||
{
|
||||
// 请求参数
|
||||
$p = [
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'user',
|
||||
'error_msg' => '用户信息有误',
|
||||
],
|
||||
];
|
||||
$ret = ParamsChecked($params, $p);
|
||||
if($ret !== true)
|
||||
{
|
||||
return DataReturn($ret, -1);
|
||||
}
|
||||
|
||||
$where = (!empty($params['where']) && is_array($params['where'])) ? $params['where'] : [];
|
||||
$where['user_id'] = $params['user']['id'];
|
||||
$where['is_delete_time'] = 0;
|
||||
|
||||
// 获取用户地址
|
||||
$field = 'id,alias,name,tel,province,city,county,address,lng,lat,is_default';
|
||||
$data = Db::name('UserAddress')->where($where)->field($field)->order('id desc')->select();
|
||||
if(!empty($data))
|
||||
{
|
||||
$is_default = false;
|
||||
foreach($data as &$v)
|
||||
{
|
||||
// 地区
|
||||
$v['province_name'] = RegionService::RegionName($v['province']);
|
||||
$v['city_name'] = RegionService::RegionName($v['city']);
|
||||
$v['county_name'] = RegionService::RegionName($v['county']);
|
||||
|
||||
// 是否有默认地址
|
||||
if($is_default === false && $v['is_default'] == 1)
|
||||
{
|
||||
$is_default = true;
|
||||
}
|
||||
}
|
||||
|
||||
// 是否处理默认地址,没有默认地址将第一个设置为默认地址
|
||||
$is_default_handle = isset($params['is_default_handle']) ? intval($params['is_default_handle']) : 1;
|
||||
if($is_default === false && $is_default_handle == 1)
|
||||
{
|
||||
$data[0]['is_default'] = true;
|
||||
}
|
||||
}
|
||||
return DataReturn('操作成功', 0, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* [UserAddressRow 获取地址详情]
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @datetime 2018-09-23T23:19:25+0800
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function UserAddressRow($params = [])
|
||||
{
|
||||
// 请求参数
|
||||
$p = [
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'id',
|
||||
'error_msg' => '地址id不能为空',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'user',
|
||||
'error_msg' => '用户信息有误',
|
||||
],
|
||||
];
|
||||
$ret = ParamsChecked($params, $p);
|
||||
if($ret !== true)
|
||||
{
|
||||
return DataReturn($ret, -1);
|
||||
}
|
||||
|
||||
// 获取用户地址
|
||||
$params['where'] = [
|
||||
'id' => intval($params['id']),
|
||||
];
|
||||
$params['is_default_handle'] = 0;
|
||||
$ret = self::UserAddressList($params);
|
||||
if(!empty($ret['data'][0]))
|
||||
{
|
||||
$ret['data'] = $ret['data'][0];
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户默认地址
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2018-08-29
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function UserDefaultAddress($params = [])
|
||||
{
|
||||
// 请求参数
|
||||
$p = [
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'user',
|
||||
'error_msg' => '用户信息有误',
|
||||
],
|
||||
];
|
||||
$ret = ParamsChecked($params, $p);
|
||||
if($ret !== true)
|
||||
{
|
||||
return DataReturn($ret, -1);
|
||||
}
|
||||
|
||||
// 获取用户地址
|
||||
$params['where'] = empty($params['where']) ? ['is_default'=>1] : $params['where'];
|
||||
$ret = self::UserAddressList($params);
|
||||
if(!empty($ret['data'][0]))
|
||||
{
|
||||
$ret['data'] = $ret['data'][0];
|
||||
} else {
|
||||
// 没有默认地址则读取第一条作为默认地址
|
||||
unset($params['where']);
|
||||
$ret = self::UserAddressList($params);
|
||||
if(!empty($ret['data'][0]))
|
||||
{
|
||||
$ret['data'] = $ret['data'][0];
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* [UserAddressSave 用户地址保存]
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @datetime 2018-09-23T22:28:31+0800
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function UserAddressSave($params = [])
|
||||
{
|
||||
// 请求参数
|
||||
$p = [
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'name',
|
||||
'error_msg' => '姓名不能为空',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'tel',
|
||||
'error_msg' => '联系电话不能为空',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'province',
|
||||
'error_msg' => '省不能为空',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'city',
|
||||
'error_msg' => '城市不能为空',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'county',
|
||||
'error_msg' => '区/县不能为空',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'address',
|
||||
'error_msg' => '详细地址不能为空',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'user',
|
||||
'error_msg' => '用户信息有误',
|
||||
],
|
||||
];
|
||||
$ret = ParamsChecked($params, $p);
|
||||
if($ret !== true)
|
||||
{
|
||||
return DataReturn($ret, -1);
|
||||
}
|
||||
|
||||
if(!empty($params['id']))
|
||||
{
|
||||
$where = ['user_id' => $params['user']['id'], 'id'=>$params['id']];
|
||||
$temp = Db::name('UserAddress')->where($where)->find();
|
||||
}
|
||||
|
||||
// 操作数据
|
||||
$is_default = isset($params['is_default']) ? intval($params['is_default']) : 0;
|
||||
$data = [
|
||||
'name' => $params['name'],
|
||||
'tel' => $params['tel'],
|
||||
'province' => $params['province'],
|
||||
'city' => $params['city'],
|
||||
'county' => $params['county'],
|
||||
'address' => $params['address'],
|
||||
'is_default' => $is_default,
|
||||
];
|
||||
if(!empty($params['alias']))
|
||||
{
|
||||
$data['alias'] = $params['alias'];
|
||||
}
|
||||
if(!empty($params['lng']))
|
||||
{
|
||||
$data['lng'] = floatval($params['lng']);
|
||||
}
|
||||
if(!empty($params['lat']))
|
||||
{
|
||||
$data['lat'] = floatval($params['lat']);
|
||||
}
|
||||
|
||||
Db::startTrans();
|
||||
|
||||
// 默认地址处理
|
||||
if($is_default == 1)
|
||||
{
|
||||
Db::name('UserAddress')->where(['user_id'=>$params['user']['id'], 'is_default'=>1])->update(['is_default'=>0]);
|
||||
}
|
||||
|
||||
// 添加/更新数据
|
||||
if(empty($temp))
|
||||
{
|
||||
$data['user_id'] = $params['user']['id'];
|
||||
$data['add_time'] = time();
|
||||
if(Db::name('UserAddress')->insertGetId($data) > 0)
|
||||
{
|
||||
Db::commit();
|
||||
return DataReturn('新增成功', 0);
|
||||
} else {
|
||||
Db::rollback();
|
||||
return DataReturn('新增失败');
|
||||
}
|
||||
} else {
|
||||
$data['upd_time'] = time();
|
||||
if(Db::name('UserAddress')->where($where)->update($data))
|
||||
{
|
||||
Db::commit();
|
||||
return DataReturn('更新成功', 0);
|
||||
} else {
|
||||
Db::rollback();
|
||||
return DataReturn('更新失败');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* [UserAddressDelete 用户地址删除]
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @datetime 2018-09-23T23:55:51+0800
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function UserAddressDelete($params = [])
|
||||
{
|
||||
// 请求参数
|
||||
$p = [
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'id',
|
||||
'error_msg' => '地址id不能为空',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'user',
|
||||
'error_msg' => '用户信息有误',
|
||||
],
|
||||
];
|
||||
$ret = ParamsChecked($params, $p);
|
||||
if($ret !== true)
|
||||
{
|
||||
return DataReturn($ret, -1);
|
||||
}
|
||||
|
||||
// 软删除数据
|
||||
$where = ['user_id' => $params['user']['id'], 'id'=>$params['id']];
|
||||
$data = ['is_delete_time' => time()];
|
||||
if(Db::name('UserAddress')->where($where)->update($data))
|
||||
{
|
||||
return DataReturn('删除成功', 0);
|
||||
} else {
|
||||
return DataReturn('删除失败或资源不存在', -100);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户地址设置默认地址
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2018-09-25
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function UserAddressDefault($params = [])
|
||||
{
|
||||
// 请求参数
|
||||
$p = [
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'id',
|
||||
'error_msg' => '地址id不能为空',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'user',
|
||||
'error_msg' => '用户信息有误',
|
||||
],
|
||||
];
|
||||
$ret = ParamsChecked($params, $p);
|
||||
if($ret !== true)
|
||||
{
|
||||
return DataReturn($ret, -1);
|
||||
}
|
||||
|
||||
// 开启事务
|
||||
Db::startTrans();
|
||||
|
||||
// 先全部设置为0 再将当前设置为1
|
||||
$all_status = Db::name('UserAddress')->where(['user_id' => $params['user']['id']])->update(['is_default'=>0]);
|
||||
$my_status = Db::name('UserAddress')->where(['user_id' => $params['user']['id'], 'id'=>$params['id']])->update(['is_default'=>1]);
|
||||
if($all_status !== false && $my_status)
|
||||
{
|
||||
// 提交事务
|
||||
Db::commit();
|
||||
return DataReturn('设置成功', 0);
|
||||
} else {
|
||||
// 回滚事务
|
||||
Db::rollback();
|
||||
return DataReturn('设置失败', -100);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* [UserLoginRecord 用户登录记录]
|
||||
* @author Devil
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ App({
|
|||
"goods_search": "商品搜索",
|
||||
"goods_detail": "商品详情",
|
||||
"user_address": "我的地址",
|
||||
"user_address_save_add": "新增地址",
|
||||
"user_address_save_add": "添加地址",
|
||||
"user_address_save_edit": "编辑地址",
|
||||
"buy": "订单确认",
|
||||
"user_order": "我的订单",
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ App({
|
|||
"goods_search": "商品搜索",
|
||||
"goods_detail": "商品详情",
|
||||
"user_address": "我的地址",
|
||||
"user_address_save_add": "新增地址",
|
||||
"user_address_save_add": "添加地址",
|
||||
"user_address_save_edit": "编辑地址",
|
||||
"buy": "订单确认",
|
||||
"user_order": "我的订单",
|
||||
|
|
|
|||
|
|
@ -33,4 +33,12 @@
|
|||
}
|
||||
.page {
|
||||
padding-bottom: 85rpx;
|
||||
}
|
||||
.submit-list button {
|
||||
width: 50%;
|
||||
}
|
||||
.submit-list .import-system-address-submit {
|
||||
background: #07c160 !important;
|
||||
right: 0;
|
||||
left: auto;
|
||||
}
|
||||
|
|
@ -209,7 +209,6 @@ Page({
|
|||
},
|
||||
fail: () => {
|
||||
swan.hideLoading();
|
||||
|
||||
app.showToast("服务器请求出错");
|
||||
}
|
||||
});
|
||||
|
|
@ -226,6 +225,48 @@ Page({
|
|||
});
|
||||
swan.navigateBack();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 获取系统地址
|
||||
choose_system_address_event(e) {
|
||||
var detail = e.detail;
|
||||
var data = {
|
||||
"name": detail.userName || '',
|
||||
"tel": detail.telNumber || '',
|
||||
"province": detail.provinceName || '',
|
||||
"city": detail.cityName || '',
|
||||
"county": detail.countyName || '',
|
||||
"town": detail.townName || '',
|
||||
"address": detail.detailInfo || '',
|
||||
};
|
||||
|
||||
// 加载loding
|
||||
swan.showLoading({ title: "处理中..." });
|
||||
|
||||
// 获取数据
|
||||
swan.request({
|
||||
url: app.get_request_url("outsystemadd", "useraddress"),
|
||||
method: "POST",
|
||||
data: data,
|
||||
dataType: "json",
|
||||
success: res => {
|
||||
swan.hideLoading();
|
||||
if (res.data.code == 0) {
|
||||
this.get_data_list();
|
||||
app.showToast(res.data.msg, "success");
|
||||
} else {
|
||||
if (app.is_login_check(res.data)) {
|
||||
app.showToast(res.data.msg);
|
||||
} else {
|
||||
app.showToast('提交失败,请重试!');
|
||||
}
|
||||
}
|
||||
},
|
||||
fail: () => {
|
||||
swan.hideLoading();
|
||||
app.showToast("服务器请求出错");
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
});
|
||||
|
|
@ -30,11 +30,14 @@
|
|||
<import src="/pages/common/nodata.swan" />
|
||||
<template is="nodata" data="{{{status: data_list_loding_status}}}"></template>
|
||||
</view>
|
||||
|
||||
|
||||
<import src="/pages/common/bottom_line.swan" />
|
||||
<template is="bottom_line" data="{{{status: data_bottom_line_status}}}"></template>
|
||||
|
||||
<navigator url="/pages/user-address-save/user-address-save" open-type="navigate" hover-class="none">
|
||||
<button class="submit-fixed submit-bottom" type="default" hover-class="none">新增地址</button>
|
||||
</navigator>
|
||||
|
||||
<view class="submit-list">
|
||||
<navigator url="/pages/user-address-save/user-address-save" open-type="navigate" hover-class="none">
|
||||
<button class="submit-fixed submit-bottom" type="default" hover-class="none">添加新地址</button>
|
||||
</navigator>
|
||||
<button class="submit-fixed submit-bottom import-system-address-submit" type="default" hover-class="none" open-type="chooseAddress" bindchooseAddress="choose_system_address_event">导入百度地址</button>
|
||||
</view>
|
||||
</view>
|
||||
|
|
@ -46,7 +46,7 @@ App({
|
|||
"goods_search": "商品搜索",
|
||||
"goods_detail": "商品详情",
|
||||
"user_address": "我的地址",
|
||||
"user_address_save_add": "新增地址",
|
||||
"user_address_save_add": "添加地址",
|
||||
"user_address_save_edit": "编辑地址",
|
||||
"buy": "订单确认",
|
||||
"user_order": "我的订单",
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ App({
|
|||
"goods_search": "商品搜索",
|
||||
"goods_detail": "商品详情",
|
||||
"user_address": "我的地址",
|
||||
"user_address_save_add": "新增地址",
|
||||
"user_address_save_add": "添加地址",
|
||||
"user_address_save_edit": "编辑地址",
|
||||
"buy": "订单确认",
|
||||
"user_order": "我的订单",
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ App({
|
|||
"goods_search": "商品搜索",
|
||||
"goods_detail": "商品详情",
|
||||
"user_address": "我的地址",
|
||||
"user_address_save_add": "新增地址",
|
||||
"user_address_save_add": "添加地址",
|
||||
"user_address_save_edit": "编辑地址",
|
||||
"buy": "订单确认",
|
||||
"user_order": "我的订单",
|
||||
|
|
|
|||
Loading…
Reference in New Issue