user['uid']); return app('json')->success('获取成功', [ 'price' => $price, // 单次购买价格(积分) 'balance' => $balance, // 当前剩余次数 ]); } /** * 创建购买订单 */ public function createOrder(Request $request) { $data = $request->post(); $chatNum = (int)($data['chat_num'] ?? 1); $userId = $request->user['uid']; if ($chatNum <= 0) { return app('json')->fail('购买数量必须大于0'); } $price = ChatBalanceService::getBuyPrice(); if ($price <= 0) { return app('json')->fail('购买价格未设置'); } $totalPrice = $price * $chatNum; // 检查用户积分是否足够 $userScore = \app\model\api\UserScoreDetail::getUserScore($userId); if ($userScore < $totalPrice) { return app('json')->fail('积分不足,当前积分:' . $userScore); } // 创建订单 $order = ChatOrder::createOrder($userId, $chatNum, $totalPrice); if (!$order) { return app('json')->fail('订单创建失败'); } // 立即支付(积分支付,无需跳转) $result = ChatBalanceService::buyWithScore($userId, $chatNum, $order); if (!$result) { // 支付失败,取消订单 ChatOrder::cancelOrder($order->id); return app('json')->fail('支付失败'); } // 更新订单状态 ChatOrder::paySuccess($order->id); $newBalance = ChatBalanceService::getBalance($userId); return app('json')->success('购买成功', [ 'order_id' => $order->id, 'order_no' => $order->order_no, 'chat_num' => $chatNum, 'price' => $totalPrice, 'balance' => $newBalance, ]); } /** * 获取当前聊天次数余额 */ public function balance(Request $request) { $balance = ChatBalanceService::getBalance($request->user['uid']); return app('json')->success('获取成功', [ 'balance' => $balance, ]); } /** * 获取购买记录列表 */ public function orderList(Request $request) { $data = $request->get(); $page = (int)($data['page'] ?? 1); $limit = (int)($data['limit'] ?? 10); $result = ChatOrder::getUserOrders($request->user['uid'], $page, $limit); // 处理订单状态文本 foreach ($result['list'] as &$item) { $item['status_text'] = ChatOrder::getStatusText($item['status']); } return app('json')->success('获取成功', $result); } /** * 获取变动明细列表 */ public function balanceLogList(Request $request) { $data = $request->get(); $page = (int)($data['page'] ?? 1); $limit = (int)($data['limit'] ?? 10); $result = ChatBalanceLog::getUserLogs($request->user['uid'], $page, $limit); return app('json')->success('获取成功', $result); } }