新版数智员工

This commit is contained in:
wong
2026-03-24 10:39:16 +08:00
parent 1853934d85
commit 7fb61b77a4
123 changed files with 38491 additions and 1018 deletions

View File

@@ -2,35 +2,44 @@
namespace app\store\controller;
use app\store\model\VendorOrderModel;
use app\store\model\VendorPackageModel;
use app\store\model\VendorProjectModel;
use app\store\model\VendorOrderModel;
use think\facade\Log;
use think\Db;
/**
* 订单控制器
* 供应商订单控制器
*/
class VendorOrderController extends BaseController
{
/**
* 获取订单列表
*
* GET /v2/store/vendor/orders
*
* @return \think\response\Json
*/
public function getList()
{
try {
$page = $this->request->param('page', 1);
$limit = $this->request->param('limit', 10);
$page = intval($this->request->param('page', 1));
$limit = intval($this->request->param('limit', $this->request->param('pageSize', 10))); // 兼容 pageSize 参数
$status = $this->request->param('status', '');
$keyword = $this->request->param('keyword', '');
// 获取当前用户信息
$userId = $this->request->userInfo['id'];
// 确保分页参数有效
if ($page <= 0) $page = 1;
if ($limit <= 0) $limit = 10;
$userId = $this->userInfo['id'] ?? 0;
$companyId = $this->userInfo['companyId'] ?? 0;
if (empty($userId)) {
return json(['code' => 401, 'msg' => '请先登录']);
}
$where = [
['userId', '=', $userId]
['userId', '=', $userId],
['companyId', '=', $companyId], // 按公司ID查询
];
// 关键词搜索
@@ -40,22 +49,42 @@ class VendorOrderController extends BaseController
// 状态筛选
if ($status !== '') {
$where[] = ['status', '=', $status];
$where[] = ['status', '=', intval($status)];
}
$list = VendorOrderModel::with(['package'])
->where($where)
$list = VendorOrderModel::where($where)
->order('id', 'desc')
->page($page, $limit)
->select();
$total = VendorOrderModel::where($where)->count();
// 格式化数据
$result = [];
foreach ($list as $item) {
$result[] = [
'id' => intval($item['id']),
'orderNo' => $item['orderNo'],
'userId' => intval($item['userId']),
'companyId' => intval($item['companyId'] ?? 0),
'packageId' => intval($item['packageId']),
'packageName' => $item['packageName'],
'totalAmount' => floatval($item['totalAmount']),
'payAmount' => floatval($item['payAmount']),
'advancePayment' => floatval($item['advancePayment'] ?? 0),
'status' => intval($item['status']),
'payTime' => !empty($item['payTime']) && is_numeric($item['payTime']) ? date('Y-m-d H:i:s', intval($item['payTime'])) : '',
'remark' => $item['remark'] ?? '',
'createTime' => !empty($item['createTime']) && is_numeric($item['createTime']) ? date('Y-m-d H:i:s', intval($item['createTime'])) : '',
'updateTime' => !empty($item['updateTime']) && is_numeric($item['updateTime']) ? date('Y-m-d H:i:s', intval($item['updateTime'])) : '',
];
}
return json([
'code' => 200,
'msg' => '获取成功',
'data' => [
'list' => $list,
'list' => $result,
'total' => $total,
'page' => $page,
'limit' => $limit
@@ -69,161 +98,148 @@ class VendorOrderController extends BaseController
/**
* 获取订单详情
*
* GET /v2/store/vendor/orders/:id
*
* @return \think\response\Json
*/
public function detail()
{
try {
$id = $this->request->param('id', 0);
$id = intval($this->request->param('id', 0));
if (empty($id)) {
return json(['code' => 400, 'msg' => '参数错误']);
}
// 获取当前用户信息
$userId = $this->request->userInfo['id'];
$userId = $this->userInfo['id'] ?? 0;
$companyId = $this->userInfo['companyId'] ?? 0;
if (empty($userId)) {
return json(['code' => 401, 'msg' => '请先登录']);
}
// 查询订单
$order = VendorOrderModel::with(['package'])
->where([
['id', '=', $id],
['userId', '=', $userId]
])->find();
$order = VendorOrderModel::where([
['id', '=', $id],
['userId', '=', $userId],
['companyId', '=', $companyId]
])->find();
if (empty($order)) {
return json(['code' => 404, 'msg' => '订单不存在']);
}
// 查询套餐信息
$package = VendorPackageModel::where([
['id', '=', $order['packageId']],
['isDel', '=', 0]
])->find();
// 查询套餐项目
if (!empty($order['package'])) {
$projects = [];
if ($package) {
$projects = VendorProjectModel::where([
['packageId', '=', $order['packageId']],
['isDel', '=', 0]
])->select();
$order['package']['projects'] = $projects;
}
return json(['code' => 200, 'msg' => '获取成功', 'data' => $order]);
// 格式化订单信息
$orderData = [
'id' => intval($order['id']),
'orderNo' => $order['orderNo'],
'userId' => intval($order['userId']),
'companyId' => intval($order['companyId'] ?? 0),
'packageId' => intval($order['packageId']),
'packageName' => $order['packageName'],
'totalAmount' => floatval($order['totalAmount']),
'payAmount' => floatval($order['payAmount']),
'advancePayment' => floatval($order['advancePayment'] ?? 0),
'status' => intval($order['status']),
'payTime' => !empty($order['payTime']) && is_numeric($order['payTime']) ? date('Y-m-d H:i:s', intval($order['payTime'])) : '',
'remark' => $order['remark'] ?? '',
'createTime' => !empty($order['createTime']) && is_numeric($order['createTime']) ? date('Y-m-d H:i:s', intval($order['createTime'])) : '',
'updateTime' => !empty($order['updateTime']) && is_numeric($order['updateTime']) ? date('Y-m-d H:i:s', intval($order['updateTime'])) : '',
];
// 添加套餐信息
if ($package) {
$orderData['package'] = [
'id' => intval($package['id']),
'name' => $package['name'],
'originalPrice' => floatval($package['originalPrice']),
'price' => floatval($package['price']),
'description' => $package['description'] ?? '',
'cover' => $package['cover'] ?? '',
];
}
// 添加项目列表
$projectList = [];
foreach ($projects as $project) {
$projectList[] = [
'id' => intval($project['id']),
'name' => $project['name'],
'originalPrice' => floatval($project['originalPrice']),
'price' => floatval($project['price']),
'duration' => intval($project['duration'] ?? 0),
'image' => $project['image'] ?? '',
'detail' => $project['detail'] ?? '',
];
}
$orderData['package']['projects'] = $projectList;
return json(['code' => 200, 'msg' => '获取成功', 'data' => $orderData]);
} catch (\Exception $e) {
Log::error('获取订单详情失败:' . $e->getMessage());
return json(['code' => 500, 'msg' => '获取失败:' . $e->getMessage()]);
}
}
/**
* 更新订单状态
*
* @return \think\response\Json
*/
public function updateStatus()
{
try {
if (!$this->request->isPost()) {
return json(['code' => 400, 'msg' => '请求方式错误']);
}
$param = $this->request->post();
// 参数验证
if (empty($param['id'])) {
return json(['code' => 400, 'msg' => '订单ID不能为空']);
}
if (!isset($param['status'])) {
return json(['code' => 400, 'msg' => '订单状态不能为空']);
}
// 检查订单是否存在
$order = VendorOrderModel::where('id', $param['id'])->find();
if (!$order) {
return json(['code' => 404, 'msg' => '订单不存在']);
}
// 检查状态是否有效
$validStatus = [
VendorOrderModel::STATUS_UNPAID,
VendorOrderModel::STATUS_PAID,
VendorOrderModel::STATUS_COMPLETED,
VendorOrderModel::STATUS_CANCELED
];
if (!in_array($param['status'], $validStatus)) {
return json(['code' => 400, 'msg' => '无效的订单状态']);
}
// 更新订单状态
$updateData = [
'status' => $param['status'],
'updateTime' => time()
];
// 如果订单状态为已支付,记录支付时间
if ($param['status'] == VendorOrderModel::STATUS_PAID) {
$updateData['payTime'] = time();
}
try {
$order->save($updateData);
return json(['code' => 200, 'msg' => '更新成功']);
} catch (\Exception $e) {
Log::error('更新订单状态失败:' . $e->getMessage());
return json(['code' => 500, 'msg' => '更新失败:' . $e->getMessage()]);
}
} catch (\Exception $e) {
Log::error('更新订单状态异常:' . $e->getMessage());
return json(['code' => 500, 'msg' => '更新异常:' . $e->getMessage()]);
}
}
/**
* 取消订单
*
* POST /v2/store/vendor/orders/:id/cancel
*
* @return \think\response\Json
*/
public function cancel()
{
try {
if (!$this->request->isPost()) {
return json(['code' => 400, 'msg' => '请求方式错误']);
}
$id = $this->request->param('id', 0);
$id = intval($this->request->param('id', 0));
if (empty($id)) {
return json(['code' => 400, 'msg' => '参数错误']);
}
// 获取当前用户信息
$userId = $this->request->userInfo['id'];
$userId = $this->userInfo['id'] ?? 0;
$companyId = $this->userInfo['companyId'] ?? 0;
// 检查订单是否存在
if (empty($userId)) {
return json(['code' => 401, 'msg' => '请先登录']);
}
// 检查订单是否存在且为待支付状态
$order = VendorOrderModel::where([
['id', '=', $id],
['userId', '=', $userId],
['companyId', '=', $companyId],
['status', '=', VendorOrderModel::STATUS_UNPAID]
])->find();
if (!$order) {
if (empty($order)) {
return json(['code' => 404, 'msg' => '订单不存在或状态不允许取消']);
}
try {
// 更新订单状态为已取消
$order->status = VendorOrderModel::STATUS_CANCELED;
$order->updateTime = time();
$order->save();
return json(['code' => 200, 'msg' => '取消成功']);
} catch (\Exception $e) {
Log::error('取消订单失败:' . $e->getMessage());
return json(['code' => 500, 'msg' => '取消失败:' . $e->getMessage()]);
}
// 更新订单状态为已取消
$order->status = VendorOrderModel::STATUS_CANCELED;
$order->updateTime = time();
$order->save();
return json(['code' => 200, 'msg' => '取消成功']);
} catch (\Exception $e) {
Log::error('取消订单异常' . $e->getMessage());
return json(['code' => 500, 'msg' => '取消异常' . $e->getMessage()]);
Log::error('取消订单失败' . $e->getMessage());
return json(['code' => 500, 'msg' => '取消失败' . $e->getMessage()]);
}
}
}
}