327 lines
10 KiB
PHP
327 lines
10 KiB
PHP
<?php
|
||
// +----------------------------------------------------------------------
|
||
// | likeshop开源商城系统
|
||
// +----------------------------------------------------------------------
|
||
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
|
||
// | gitee下载:https://gitee.com/likeshop_gitee
|
||
// | github下载:https://github.com/likeshop-github
|
||
// | 访问官网:https://www.likeshop.cn
|
||
// | 访问社区:https://home.likeshop.cn
|
||
// | 访问手册:http://doc.likeshop.cn
|
||
// | 微信公众号:likeshop技术社区
|
||
// | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用,未经许可不能去除前后端官方版权标识
|
||
// | likeshop系列产品收费版本务必购买商业授权,购买去版权授权后,方可去除前后端官方版权标识
|
||
// | 禁止对系统程序代码以任何目的,任何形式的再发布
|
||
// | likeshop团队版权所有并拥有最终解释权
|
||
// +----------------------------------------------------------------------
|
||
// | author: likeshop.cn.team
|
||
// +----------------------------------------------------------------------
|
||
|
||
|
||
namespace app\api\logic;
|
||
|
||
|
||
use app\common\model\DevRegion;
|
||
use app\common\model\user\UserAddress;
|
||
use app\common\server\AreaServer;
|
||
use think\facade\Db;
|
||
use think\Exception;
|
||
|
||
class UserAddressLogic
|
||
{
|
||
/**
|
||
* 获取用户地址信息
|
||
* @param $user_id
|
||
* @return array
|
||
* @throws \think\db\exception\DataNotFoundException
|
||
* @throws \think\db\exception\ModelNotFoundException
|
||
* @throws \think\exception\DbException
|
||
*/
|
||
public static function infoUserAddress($user_id)
|
||
{
|
||
$UserAddress = new UserAddress();
|
||
$info = $UserAddress
|
||
->where(['user_id' => $user_id, 'del' => 0])
|
||
->field('id,contact,telephone,province_id,city_id,district_id,address,is_default')
|
||
->select()
|
||
->toArray();
|
||
foreach ($info as &$item) {
|
||
$item['province'] = AreaServer::getAddress($item['province_id']);
|
||
$item['city'] = AreaServer::getAddress($item['city_id']);
|
||
$item['district'] = AreaServer::getAddress($item['district_id']);
|
||
}
|
||
return $info;
|
||
}
|
||
|
||
/**
|
||
* 获取一条地址信息
|
||
* @param $user_id
|
||
* @param $get
|
||
* @return array|\PDOStatement|string|\think\Model|null
|
||
* @throws \think\db\exception\DataNotFoundException
|
||
* @throws \think\db\exception\ModelNotFoundException
|
||
* @throws \think\exception\DbException
|
||
*/
|
||
public static function getOneAddress($user_id, $get)
|
||
{
|
||
$UserAddress = new UserAddress();
|
||
$info = $UserAddress
|
||
->where(['id' => (int)$get['id'], 'user_id' => $user_id, 'del' => 0])
|
||
->field('id,contact,telephone,province_id,city_id,district_id,address,is_default')
|
||
->find();
|
||
|
||
$info['province'] = AreaServer::getAddress($info['province_id']);
|
||
$info['city'] = AreaServer::getAddress($info['city_id']);
|
||
$info['district'] = AreaServer::getAddress($info['district_id']);
|
||
return $info;
|
||
}
|
||
|
||
/**
|
||
* 获取默认地址
|
||
* @param $user_id
|
||
* @return array
|
||
*/
|
||
public static function getDefaultAddress($user_id)
|
||
{
|
||
$UserAddress = new UserAddress();
|
||
$info = $UserAddress
|
||
->where(['is_default' => 1, 'user_id' => $user_id, 'del' => 0])
|
||
->field('id,contact,telephone,province_id,city_id,district_id,address,is_default')
|
||
->findOrEmpty()->toArray();
|
||
|
||
if (!$info) {
|
||
return [];
|
||
}
|
||
|
||
$info['province'] = AreaServer::getAddress($info['province_id']);
|
||
$info['city'] = AreaServer::getAddress($info['city_id']);
|
||
$info['district'] = AreaServer::getAddress($info['district_id']);
|
||
|
||
return $info;
|
||
}
|
||
|
||
/**
|
||
* 设置默认地址
|
||
* @param $user_id
|
||
* @param $post
|
||
* @return int|string
|
||
*/
|
||
public static function setDefaultAddress($user_id, $post)
|
||
{
|
||
|
||
try {
|
||
Db::startTrans();
|
||
$UserAddress = new UserAddress();
|
||
$UserAddress
|
||
->where(['del' => 0, 'user_id' => $user_id])
|
||
->update(['is_default' => 0]);
|
||
|
||
$result = $UserAddress
|
||
->where(['id' => $post['id'], 'del' => 0, 'user_id' => $user_id])
|
||
->update(['is_default' => 1]);
|
||
|
||
Db::commit();
|
||
} catch (\Exception $e) {
|
||
Db::rollback();
|
||
return false;
|
||
}
|
||
|
||
return $result;
|
||
}
|
||
|
||
/**
|
||
* 添加收货地址
|
||
* @param $user_id
|
||
* @param $post
|
||
* @return int|string
|
||
*/
|
||
public static function addUserAddress($user_id, $post)
|
||
{
|
||
try {
|
||
Db::startTrans();
|
||
$UserAddress = new UserAddress();
|
||
if ($post['is_default'] == 1) {
|
||
$UserAddress
|
||
->where(['del' => 0, 'user_id' => $user_id])
|
||
->update(['is_default' => 0]);
|
||
} else {
|
||
$is_first = $UserAddress
|
||
->where(['del' => 0, 'user_id' => $user_id])
|
||
->select();
|
||
if (empty($is_first)) {
|
||
$post['is_default'] = 1;
|
||
}
|
||
}
|
||
|
||
$data = [
|
||
'user_id' => $user_id,
|
||
'contact' => $post['contact'],
|
||
'telephone' => $post['telephone'],
|
||
'province_id' => $post['province_id'],
|
||
'city_id' => $post['city_id'],
|
||
'district_id' => $post['district_id'],
|
||
'address' => $post['address'],
|
||
'is_default' => $post['is_default'],
|
||
'create_time' => time()
|
||
];
|
||
|
||
$result = $UserAddress->insert($data);
|
||
|
||
Db::commit();
|
||
} catch (Exception $e) {
|
||
Db::rollback();
|
||
return $e->getMessage();
|
||
}
|
||
|
||
return $result;
|
||
}
|
||
|
||
/**
|
||
* 编辑用户地址
|
||
* @param $user_id
|
||
* @param $post
|
||
* @return int|string
|
||
* @throws \think\Exception
|
||
* @throws \think\exception\PDOException
|
||
*/
|
||
public static function editUserAddress($user_id, $post)
|
||
{
|
||
|
||
try {
|
||
Db::startTrans();
|
||
$UserAddress = new UserAddress();
|
||
if ($post['is_default'] == 1) {
|
||
$UserAddress->where(['del' => 0, 'user_id' => $user_id])
|
||
->update(['is_default' => 0]);
|
||
}
|
||
|
||
$data = [
|
||
'contact' => $post['contact'],
|
||
'telephone' => $post['telephone'],
|
||
'province_id' => $post['province_id'],
|
||
'city_id' => $post['city_id'],
|
||
'district_id' => $post['district_id'],
|
||
'address' => $post['address'],
|
||
'is_default' => $post['is_default'],
|
||
'update_time' => time()
|
||
];
|
||
|
||
$result = $UserAddress
|
||
->where(['id' => $post['id'], 'del' => 0, 'user_id' => $user_id])
|
||
->update($data);
|
||
|
||
Db::commit();
|
||
} catch (\Exception $e) {
|
||
Db::rollback();
|
||
return false;
|
||
}
|
||
|
||
return $result;
|
||
}
|
||
|
||
/**
|
||
* 删除用户地址
|
||
* @param $user_id
|
||
* @param $post
|
||
* @return int|string
|
||
* @throws \think\Exception
|
||
* @throws \think\exception\PDOException
|
||
*/
|
||
public static function delUserAddress($user_id, $post)
|
||
{
|
||
|
||
$data = [
|
||
'del' => 1,
|
||
'update_time' => time()
|
||
];
|
||
$UserAddress = new UserAddress();
|
||
return $UserAddress
|
||
->where(['id' => $post['id'], 'del' => 0, 'user_id' => $user_id])
|
||
->update($data);
|
||
}
|
||
|
||
|
||
/**
|
||
* 获取省市区id
|
||
* @param $province
|
||
* @param $city
|
||
* @param $district
|
||
* @return array
|
||
*/
|
||
public static function handleRegion($province, $city, $district)
|
||
{
|
||
if (!$province || !$city || !$district) {
|
||
return [];
|
||
}
|
||
$result = [];
|
||
$result['province'] = self::handleRegionField($province, 1);
|
||
if (!$result['province']) {
|
||
return [];
|
||
}
|
||
$result['city'] = self::handleRegionField($city, 2);
|
||
$result['district'] = self::handleRegionField($district, 3);
|
||
|
||
return $result;
|
||
}
|
||
|
||
/**
|
||
* 获取对应省,市,区的id
|
||
* @param $keyword
|
||
* @param int $level
|
||
* @return mixed|string
|
||
* @throws \think\db\exception\DataNotFoundException
|
||
* @throws \think\db\exception\ModelNotFoundException
|
||
* @throws \think\exception\DbException
|
||
*/
|
||
public static function handleRegionField($keyword, $level = 1)
|
||
{
|
||
$data = '';
|
||
$DevRegion = new DevRegion();
|
||
$list = $DevRegion->where('level', $level)->select();
|
||
foreach ($list as $k => $v) {
|
||
if ($keyword == $v['name']) {
|
||
$data = $v['id'];
|
||
}
|
||
}
|
||
if (empty($data)) {
|
||
foreach ($list as $k => $v) {
|
||
if (strpos($v['name'], $keyword) !== false) {
|
||
$data = $v['id'];
|
||
}
|
||
}
|
||
}
|
||
return $data;
|
||
}
|
||
|
||
|
||
/**
|
||
* User: 意象信息科技 mjf
|
||
* Desc: 获取用户指定id的地址
|
||
* @param $address
|
||
* @param $user_id
|
||
* @return array|\PDOStatement|string|\think\Model|null
|
||
* @throws \think\db\exception\DataNotFoundException
|
||
* @throws \think\db\exception\ModelNotFoundException
|
||
* @throws \think\exception\DbException
|
||
*/
|
||
public static function getUserAddressById($address, $user_id)
|
||
{
|
||
$UserAddress = new UserAddress();
|
||
$info = $UserAddress
|
||
->where(['id' => $address, 'user_id' => $user_id, 'del' => 0])
|
||
->field('id,contact,telephone,province_id,city_id,district_id,address,is_default')
|
||
->find();
|
||
|
||
if (!$info) {
|
||
return [];
|
||
}
|
||
|
||
$info['province'] = AreaServer::getAddress($info['province_id']);
|
||
$info['city'] = AreaServer::getAddress($info['city_id']);
|
||
$info['district'] = AreaServer::getAddress($info['district_id']);
|
||
|
||
return $info;
|
||
}
|
||
|
||
|
||
} |