281 lines
8.0 KiB
PHP
281 lines
8.0 KiB
PHP
<?php
|
||
declare(strict_types=1);
|
||
|
||
namespace app\api\controller;
|
||
|
||
use app\api\controller\Base;
|
||
use app\common\model\Collect;
|
||
use app\common\model\Give;
|
||
use app\common\model\Goods as Goodsmodel;
|
||
use app\common\model\GoodsList;
|
||
use app\common\model\ItemCard;
|
||
use app\common\model\Shang;
|
||
use app\common\model\User;
|
||
use app\common\model\Order;
|
||
use app\common\model\OrderList;
|
||
use app\common\model\UserVip;
|
||
use app\common\model\UserCoupon;
|
||
use app\common\model\UserAddress;
|
||
use think\facade\Db;
|
||
use app\common\model\CouponReceive as CouponReceiveModel;
|
||
use \think\Request;
|
||
|
||
class Other extends Base
|
||
{
|
||
/**
|
||
* 添加用户收货地址
|
||
* 每位用户最多只能添加10条收货地址,已删除不算
|
||
*/
|
||
public function addAddress()
|
||
{
|
||
$user_id = $this->getUserId();
|
||
$params = $this->request->only(['receiver_name', 'receiver_phone', 'detailed_address', 'is_default']);
|
||
|
||
// 验证参数
|
||
$validate = validate([
|
||
'receiver_name' => 'require',
|
||
'receiver_phone' => 'require|mobile',
|
||
'detailed_address' => 'require'
|
||
]);
|
||
|
||
if (!$validate->check($params)) {
|
||
return $this->renderError($validate->getError());
|
||
}
|
||
|
||
// 检查用户地址数量限制
|
||
$addressCount = UserAddress::getUserAddressCount($user_id);
|
||
if ($addressCount >= 10) {
|
||
return $this->renderError('最多只能添加10个收货地址');
|
||
}
|
||
|
||
// 添加地址
|
||
$address = new UserAddress;
|
||
$address->user_id = $user_id;
|
||
$address->receiver_name = $params['receiver_name'];
|
||
$address->receiver_phone = $params['receiver_phone'];
|
||
$address->detailed_address = $params['detailed_address'];
|
||
$address->is_default = isset($params['is_default']) ? intval($params['is_default']) : 0;
|
||
|
||
Db::startTrans();
|
||
try {
|
||
// 如果设置为默认地址,则需要将其他地址设为非默认
|
||
if ($address->is_default == 1) {
|
||
UserAddress::setOtherAddressNotDefault($user_id);
|
||
}
|
||
|
||
// 如果是第一个地址,自动设为默认
|
||
if ($addressCount == 0) {
|
||
$address->is_default = 1;
|
||
}
|
||
|
||
$address->save();
|
||
Db::commit();
|
||
return $this->renderSuccess('添加成功', $address);
|
||
} catch (\Exception $e) {
|
||
Db::rollback();
|
||
return $this->renderError('添加失败: ' . $e->getMessage());
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 修改用户收货地址
|
||
*/
|
||
public function updateAddress()
|
||
{
|
||
$user_id = $this->getUserId();
|
||
$params = $this->request->only(['id', 'receiver_name', 'receiver_phone', 'detailed_address', 'is_default']);
|
||
|
||
// 验证参数
|
||
$validate = validate([
|
||
'id' => 'require|number',
|
||
'receiver_name' => 'require',
|
||
'receiver_phone' => 'require|mobile',
|
||
'detailed_address' => 'require'
|
||
]);
|
||
|
||
if (!$validate->check($params)) {
|
||
return $this->renderError($validate->getError());
|
||
}
|
||
|
||
// 查询地址是否存在
|
||
$address = UserAddress::where('id', $params['id'])
|
||
->where('user_id', $user_id)
|
||
->find();
|
||
|
||
if (!$address) {
|
||
return $this->renderError('地址不存在');
|
||
}
|
||
|
||
// 更新地址信息
|
||
$address->receiver_name = $params['receiver_name'];
|
||
$address->receiver_phone = $params['receiver_phone'];
|
||
$address->detailed_address = $params['detailed_address'];
|
||
$is_default = isset($params['is_default']) ? intval($params['is_default']) : $address->is_default;
|
||
|
||
Db::startTrans();
|
||
try {
|
||
// 如果设置为默认地址,则需要将其他地址设为非默认
|
||
if ($is_default == 1 && $address->is_default != 1) {
|
||
UserAddress::setOtherAddressNotDefault($user_id, $address->id);
|
||
$address->is_default = 1;
|
||
}
|
||
|
||
$address->save();
|
||
Db::commit();
|
||
return $this->renderSuccess('修改成功', $address);
|
||
} catch (\Exception $e) {
|
||
Db::rollback();
|
||
return $this->renderError('修改失败: ' . $e->getMessage());
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取地址详情
|
||
*/
|
||
public function getAddressDetail()
|
||
{
|
||
$user_id = $this->getUserId();
|
||
$id = $this->request->param('id');
|
||
|
||
if (empty($id)) {
|
||
return $this->renderError('请选择要查看的地址');
|
||
}
|
||
|
||
// 查询地址是否存在
|
||
$address = UserAddress::where('id', $id)
|
||
->where('user_id', $user_id)
|
||
->find();
|
||
|
||
if (!$address) {
|
||
return $this->renderError('地址不存在');
|
||
}
|
||
|
||
return $this->renderSuccess('获取成功', $address);
|
||
}
|
||
|
||
/**
|
||
* 获取默认收货地址
|
||
*/
|
||
public function getDefaultAddress()
|
||
{
|
||
$user_id = $this->getUserId();
|
||
|
||
// 查询默认地址
|
||
$address = UserAddress::where('user_id', $user_id)
|
||
->where('is_default', 1)
|
||
->find();
|
||
|
||
if (!$address) {
|
||
// 如果没有默认地址,返回最新添加的一条
|
||
$address = UserAddress::where('user_id', $user_id)
|
||
->order('id', 'desc')
|
||
->find();
|
||
}
|
||
|
||
return $this->renderSuccess('获取成功', $address);
|
||
}
|
||
|
||
/**
|
||
* 获取收货地址列表
|
||
*/
|
||
public function getAddressList()
|
||
{
|
||
$user_id = $this->getUserId();
|
||
|
||
// 查询所有地址,默认地址在最前面
|
||
$list = UserAddress::where('user_id', $user_id)
|
||
->where('is_deleted', 0)
|
||
->order('is_default', 'desc')
|
||
->order('id', 'desc')
|
||
->select();
|
||
|
||
return $this->renderSuccess('获取成功', $list);
|
||
}
|
||
|
||
/**
|
||
* 删除收货地址
|
||
*/
|
||
public function deleteAddress()
|
||
{
|
||
$user_id = $this->getUserId();
|
||
$id = $this->request->param('id');
|
||
|
||
if (empty($id)) {
|
||
return $this->renderError('请选择要删除的地址');
|
||
}
|
||
|
||
// 查询地址是否存在
|
||
$address = UserAddress::where('id', $id)
|
||
->where('user_id', $user_id)
|
||
->find();
|
||
|
||
if (!$address) {
|
||
return $this->renderError('地址不存在');
|
||
}
|
||
|
||
// 软删除地址
|
||
$address->is_deleted = 1;
|
||
if ($address->save()) {
|
||
return $this->renderSuccess('删除成功');
|
||
} else {
|
||
return $this->renderError('删除失败');
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 设置默认收货地址
|
||
*/
|
||
public function setDefaultAddress()
|
||
{
|
||
$user_id = $this->getUserId();
|
||
$id = $this->request->param('id');
|
||
|
||
if (empty($id)) {
|
||
return $this->renderError('请选择要设为默认的地址');
|
||
}
|
||
|
||
// 查询地址是否存在
|
||
$address = UserAddress::where('id', $id)
|
||
->where('user_id', $user_id)
|
||
->find();
|
||
|
||
if (!$address) {
|
||
return $this->renderError('地址不存在');
|
||
}
|
||
|
||
// 已经是默认地址
|
||
if ($address->is_default == 1) {
|
||
return $this->renderSuccess('设置成功');
|
||
}
|
||
|
||
Db::startTrans();
|
||
try {
|
||
// 将其他地址设为非默认
|
||
UserAddress::setOtherAddressNotDefault($user_id);
|
||
|
||
// 设置当前地址为默认
|
||
$address->is_default = 1;
|
||
$address->save();
|
||
|
||
Db::commit();
|
||
return $this->renderSuccess('设置成功');
|
||
} catch (\Exception $e) {
|
||
Db::rollback();
|
||
return $this->renderError('设置失败: ' . $e->getMessage());
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 下载APP
|
||
* 重定向到CDN下载地址
|
||
*/
|
||
public function downloadApp()
|
||
{
|
||
// 这里替换成你的实际CDN下载地址
|
||
$downloadUrl = 'https://image.zfunbox.cn/apk/app-release-v1.0.0.apk';
|
||
|
||
// 重定向到下载地址
|
||
return redirect($downloadUrl);
|
||
}
|
||
}
|