manghe/app/api/controller/Other.php
2025-05-09 23:57:09 +08:00

281 lines
8.0 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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);
}
}