From 903a29ed0908b80080d72314ed2fa61ff1077da6 Mon Sep 17 00:00:00 2001 From: wong <106998207@qq.com> Date: Thu, 30 Oct 2025 10:58:45 +0800 Subject: [PATCH] =?UTF-8?q?app=E6=9B=B4=E6=96=B0=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Server/application/common/config/route.php | 2 +- Server/application/common/controller/Api.php | 2 +- Server/application/cunkebao/config/route.php | 2 + .../controller/AiKnowledgeBaseController.php | 120 +++++++++++++++++- .../cunkebao/controller/TokensController.php | 114 +++++++++++++++++ 5 files changed, 233 insertions(+), 7 deletions(-) diff --git a/Server/application/common/config/route.php b/Server/application/common/config/route.php index fc94c79b..54001bde 100644 --- a/Server/application/common/config/route.php +++ b/Server/application/common/config/route.php @@ -30,4 +30,4 @@ Route::group('v1/pay', function () { -Route::get('app/update', 'app\common\controller\PaymentService@createOrder'); \ No newline at end of file +Route::get('v1/app/update', 'app\common\controller\Api@uploadApp'); //检测app是否需要更新 \ No newline at end of file diff --git a/Server/application/common/controller/Api.php b/Server/application/common/controller/Api.php index e95ca699..4887c310 100644 --- a/Server/application/common/controller/Api.php +++ b/Server/application/common/controller/Api.php @@ -136,7 +136,7 @@ class Api extends Controller return ResponseHelper::error('参数缺失'); } - if (!in_array($type,['ckb','ai_store'])){ + if (!in_array($type,['ckb','aiStore'])){ return ResponseHelper::error('参数错误'); } diff --git a/Server/application/cunkebao/config/route.php b/Server/application/cunkebao/config/route.php index b2c4217b..2b9d9665 100644 --- a/Server/application/cunkebao/config/route.php +++ b/Server/application/cunkebao/config/route.php @@ -156,6 +156,7 @@ Route::group('v1/', function () { Route::get('list', 'app\cunkebao\controller\TokensController@getList'); Route::post('pay', 'app\cunkebao\controller\TokensController@pay'); Route::get('queryOrder', 'app\cunkebao\controller\TokensController@queryOrder'); + Route::get('orderList', 'app\cunkebao\controller\TokensController@getOrderList'); // 获取订单列表 }); @@ -174,6 +175,7 @@ Route::group('v1/', function () { Route::post('delete', 'app\cunkebao\controller\AiKnowledgeBaseController@delete'); Route::post('addType', 'app\cunkebao\controller\AiKnowledgeBaseController@addType'); Route::post('editType', 'app\cunkebao\controller\AiKnowledgeBaseController@editType'); + Route::put('updateTypeStatus', 'app\cunkebao\controller\AiKnowledgeBaseController@updateTypeStatus'); // 修改类型状态 Route::delete('deleteType', 'app\cunkebao\controller\AiKnowledgeBaseController@deleteType'); Route::get('detailType', 'app\cunkebao\controller\AiKnowledgeBaseController@detailType'); }); diff --git a/Server/application/cunkebao/controller/AiKnowledgeBaseController.php b/Server/application/cunkebao/controller/AiKnowledgeBaseController.php index 7ab048a9..8ba90722 100644 --- a/Server/application/cunkebao/controller/AiKnowledgeBaseController.php +++ b/Server/application/cunkebao/controller/AiKnowledgeBaseController.php @@ -39,14 +39,13 @@ class AiKnowledgeBaseController extends BaseController if ($includeSystem == 1) { // 包含系统类型和本公司创建的类型 - $where[] = ['type', '=', AiKnowledgeBaseType::TYPE_SYSTEM]; - $where[] = ['companyId|type', 'in', [$companyId, 0]]; + $where[] = ['companyId', 'in', [$companyId, 0]]; } else { // 只显示本公司创建的类型 $where[] = ['companyId', '=', $companyId]; $where[] = ['type', '=', AiKnowledgeBaseType::TYPE_USER]; } - + // 查询数据 $list = AiKnowledgeBaseType::where($where) ->order('type', 'asc') // 系统类型排在前面 @@ -80,6 +79,7 @@ class AiKnowledgeBaseController extends BaseController $description = $this->request->param('description', ''); $label = $this->request->param('label', []); $prompt = $this->request->param('prompt', ''); + $status = $this->request->param('status', 1); // 默认启用 // 参数验证 if (empty($name)) { @@ -103,8 +103,9 @@ class AiKnowledgeBaseController extends BaseController 'type' => AiKnowledgeBaseType::TYPE_USER, 'name' => $name, 'description' => $description, - 'label' => json_decode($label,256), + 'label' => json_encode($label,256), 'prompt' => $prompt, + 'status' => $status, 'companyId' => $companyId, 'userId' => $userId, 'createTime' => time(), @@ -142,6 +143,7 @@ class AiKnowledgeBaseController extends BaseController $description = $this->request->param('description', ''); $label = $this->request->param('label', []); $prompt = $this->request->param('prompt', ''); + $status = $this->request->param('status', ''); // 参数验证 if (empty($id)) { @@ -187,8 +189,11 @@ class AiKnowledgeBaseController extends BaseController // 更新数据 $typeModel->name = $name; $typeModel->description = $description; - $typeModel->label = $label; + $typeModel->label = json_encode($label,256); $typeModel->prompt = $prompt; + if ($status !== '') { + $typeModel->status = $status; + } $typeModel->updateTime = time(); if ($typeModel->save()) { @@ -202,6 +207,111 @@ class AiKnowledgeBaseController extends BaseController } } + /** + * 修改知识库类型状态 + * + * @return \think\response\Json + */ + public function updateTypeStatus() + { + try { + $companyId = $this->getUserInfo('companyId'); + if (empty($companyId)) { + return ResponseHelper::error('公司信息获取失败'); + } + + // 获取参数 + $id = $this->request->param('id', 0); + $status = $this->request->param('status', -1); + + // 参数验证 + if (empty($id)) { + return ResponseHelper::error('类型ID不能为空'); + } + + if ($status != 0 && $status != 1) { + return ResponseHelper::error('状态参数错误'); + } + + // 查找类型 + $typeModel = AiKnowledgeBaseType::where([ + ['id', '=', $id], + ['isDel', '=', 0] + ])->find(); + + if (!$typeModel) { + return ResponseHelper::error('类型不存在'); + } + + // 检查是否为系统类型 + if ($typeModel->isSystemType()) { + return ResponseHelper::error('系统类型不允许修改状态'); + } + + // 检查权限(只能修改本公司的类型) + if ($typeModel->companyId != $companyId) { + return ResponseHelper::error('无权限修改该类型'); + } + + // 更新状态 + $typeModel->status = $status; + $typeModel->updateTime = time(); + + if ($typeModel->save()) { + $message = $status == 0 ? '禁用成功' : '启用成功'; + return ResponseHelper::success([], $message); + } else { + return ResponseHelper::error('操作失败'); + } + + } catch (\Exception $e) { + return ResponseHelper::error('系统异常:' . $e->getMessage()); + } + } + + /** + * 获取知识库类型详情 + * + * @return \think\response\Json + */ + public function detailType() + { + try { + $companyId = $this->getUserInfo('companyId'); + if (empty($companyId)) { + return ResponseHelper::error('公司信息获取失败'); + } + + // 获取参数 + $id = $this->request->param('id', 0); + + // 参数验证 + if (empty($id)) { + return ResponseHelper::error('类型ID不能为空'); + } + + // 查找类型 + $typeModel = AiKnowledgeBaseType::where([ + ['id', '=', $id], + ['isDel', '=', 0] + ])->find(); + + if (!$typeModel) { + return ResponseHelper::error('类型不存在'); + } + + // 检查权限(系统类型或本公司的类型都可以查看) + if ($typeModel->companyId != 0 && $typeModel->companyId != $companyId) { + return ResponseHelper::error('无权限查看该类型'); + } + + return ResponseHelper::success($typeModel, '获取成功'); + + } catch (\Exception $e) { + return ResponseHelper::error('系统异常:' . $e->getMessage()); + } + } + /** * 删除知识库类型 * diff --git a/Server/application/cunkebao/controller/TokensController.php b/Server/application/cunkebao/controller/TokensController.php index df70d924..b6ec7728 100644 --- a/Server/application/cunkebao/controller/TokensController.php +++ b/Server/application/cunkebao/controller/TokensController.php @@ -115,4 +115,118 @@ class TokensController extends BaseController return ResponseHelper::success('','订单已支付'); } } + + /** + * 获取订单列表 + * @return \think\response\Json + */ + public function getOrderList() + { + try { + $page = $this->request->param('page', 1); + $limit = $this->request->param('limit', 10); + $status = $this->request->param('status', ''); // 订单状态筛选 + $keyword = $this->request->param('keyword', ''); // 关键词搜索(订单号) + $orderType = $this->request->param('orderType', ''); // 订单类型筛选 + $startTime = $this->request->param('startTime', ''); // 开始时间 + $endTime = $this->request->param('endTime', ''); // 结束时间 + + $userId = $this->getUserInfo('id'); + $companyId = $this->getUserInfo('companyId'); + + // 构建查询条件 + $where = [ + ['companyId', '=', $companyId] + ]; + + // 关键词搜索(订单号、商品名称) + if (!empty($keyword)) { + $where[] = ['orderNo|goodsName', 'like', '%' . $keyword . '%']; + } + + // 状态筛选 (0-待支付 1-已付款 2-已退款 3-付款失败) + if ($status !== '') { + $where[] = ['status', '=', $status]; + } + + // 订单类型筛选 + if ($orderType !== '') { + $where[] = ['orderType', '=', $orderType]; + } + + // 时间范围筛选 + if (!empty($startTime)) { + $where[] = ['createTime', '>=', strtotime($startTime)]; + } + if (!empty($endTime)) { + $where[] = ['createTime', '<=', strtotime($endTime . ' 23:59:59')]; + } + + // 分页查询 + $query = Order::where($where) + ->where(function($query) { + $query->whereNull('deleteTime')->whereOr('deleteTime', 0); + }); + $total = $query->count(); + + $list = $query->field('id,orderNo,goodsId,goodsName,goodsSpecs,orderType,money,status,payType,payTime,createTime') + ->order('id desc') + ->page($page, $limit) + ->select(); + + // 格式化数据 + foreach ($list as &$item) { + // 金额转换(分转元) + $item['money'] = round($item['money'] / 100, 2); + + // 解析商品规格 + if (!empty($item['goodsSpecs'])) { + $specs = is_string($item['goodsSpecs']) ? json_decode($item['goodsSpecs'], true) : $item['goodsSpecs']; + $item['goodsSpecs'] = $specs; + + // 添加算力数量 + if (isset($specs['tokens'])) { + $item['tokens'] = number_format($specs['tokens']); + } + } + + // 状态文本 + $statusText = [ + 0 => '待支付', + 1 => '已付款', + 2 => '已退款', + 3 => '付款失败' + ]; + $item['statusText'] = $statusText[$item['status']] ?? '未知'; + + // 订单类型文本 + $orderTypeText = [ + 1 => '购买算力' + ]; + $item['orderTypeText'] = $orderTypeText[$item['orderType']] ?? '其他'; + + // 支付类型文本 + $payTypeText = [ + 1 => '微信支付', + 2 => '支付宝' + ]; + $item['payTypeText'] = !empty($item['payType']) ? ($payTypeText[$item['payType']] ?? '未知') : ''; + + // 格式化时间 + $item['createTime'] = $item['createTime'] ? date('Y-m-d H:i:s', $item['createTime']) : ''; + $item['payTime'] = $item['payTime'] ? date('Y-m-d H:i:s', $item['payTime']) : ''; + } + unset($item); + + return ResponseHelper::success([ + 'list' => $list, + 'total' => $total, + 'page' => $page, + 'limit' => $limit + ]); + + } catch (\Exception $e) { + return ResponseHelper::error('获取订单列表失败:' . $e->getMessage()); + } + } } \ No newline at end of file