#!/bin/bash # 音视频通话功能安装脚本 # 使用方法: bash install_video_call.sh echo "==========================================" echo " 音视频通话功能安装脚本" echo "==========================================" echo "" # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 检查是否在项目根目录 if [ ! -d "admin" ] || [ ! -d "server" ]; then echo -e "${RED}错误: 请在项目根目录执行此脚本${NC}" exit 1 fi echo -e "${GREEN}步骤 1/5: 安装前端依赖${NC}" cd admin if [ -f "package.json" ]; then echo "正在安装 @tencentcloud/call-uikit-vue..." npm install @tencentcloud/call-uikit-vue if [ $? -eq 0 ]; then echo -e "${GREEN}✓ 前端依赖安装成功${NC}" else echo -e "${RED}✗ 前端依赖安装失败${NC}" exit 1 fi else echo -e "${RED}✗ 未找到 package.json 文件${NC}" exit 1 fi cd .. echo "" echo -e "${GREEN}步骤 2/5: 创建数据库表${NC}" echo -e "${YELLOW}请手动执行以下命令创建数据库表:${NC}" echo "mysql -u root -p your_database < server/sql/tcm_call_record.sql" echo "" read -p "按回车键继续..." echo "" echo -e "${GREEN}步骤 3/5: 配置腾讯云 TRTC${NC}" echo "" echo "请访问腾讯云控制台获取配置信息:" echo "https://console.cloud.tencent.com/trtc" echo "" read -p "请输入 SDKAppID: " SDK_APP_ID read -p "请输入 SecretKey: " SECRET_KEY # 创建或更新 .env 文件 ENV_FILE="server/.env" if [ -f "$ENV_FILE" ]; then # 检查是否已存在配置 if grep -q "TRTC_SDK_APP_ID" "$ENV_FILE"; then echo -e "${YELLOW}检测到已存在 TRTC 配置,正在更新...${NC}" sed -i "s/TRTC_SDK_APP_ID=.*/TRTC_SDK_APP_ID=$SDK_APP_ID/" "$ENV_FILE" sed -i "s/TRTC_SECRET_KEY=.*/TRTC_SECRET_KEY=$SECRET_KEY/" "$ENV_FILE" sed -i "s/TRTC_ENABLE=.*/TRTC_ENABLE=true/" "$ENV_FILE" else echo -e "${GREEN}正在添加 TRTC 配置...${NC}" echo "" >> "$ENV_FILE" echo "# 腾讯云实时音视频(TRTC)配置" >> "$ENV_FILE" echo "TRTC_SDK_APP_ID=$SDK_APP_ID" >> "$ENV_FILE" echo "TRTC_SECRET_KEY=$SECRET_KEY" >> "$ENV_FILE" echo "TRTC_ENABLE=true" >> "$ENV_FILE" fi echo -e "${GREEN}✓ 配置文件更新成功${NC}" else echo -e "${RED}✗ 未找到 .env 文件${NC}" exit 1 fi echo "" echo -e "${GREEN}步骤 4/5: 验证文件完整性${NC}" # 检查关键文件是否存在 FILES=( "admin/src/components/video-call/index.vue" "admin/src/api/tcm.ts" "server/app/adminapi/controller/tcm/DiagnosisController.php" "server/app/adminapi/logic/tcm/DiagnosisLogic.php" "server/app/common/model/tcm/CallRecord.php" "server/config/trtc.php" "server/sql/tcm_call_record.sql" ) ALL_EXISTS=true for file in "${FILES[@]}"; do if [ -f "$file" ]; then echo -e "${GREEN}✓${NC} $file" else echo -e "${RED}✗${NC} $file ${RED}(缺失)${NC}" ALL_EXISTS=false fi done if [ "$ALL_EXISTS" = false ]; then echo -e "${RED}部分文件缺失,请检查${NC}" exit 1 fi echo "" echo -e "${GREEN}步骤 5/5: 构建前端项目${NC}" read -p "是否立即构建前端项目? (y/n): " BUILD_CHOICE if [ "$BUILD_CHOICE" = "y" ] || [ "$BUILD_CHOICE" = "Y" ]; then cd admin npm run build if [ $? -eq 0 ]; then echo -e "${GREEN}✓ 前端构建成功${NC}" else echo -e "${RED}✗ 前端构建失败${NC}" fi cd .. fi echo "" echo "==========================================" echo -e "${GREEN}安装完成!${NC}" echo "==========================================" echo "" echo "后续步骤:" echo "1. 确保已执行数据库迁移" echo "2. 在后台管理系统中配置权限: tcm.diagnosis/video-call" echo "3. 重启后端服务" echo "4. 访问诊断列表页面测试视频通话功能" echo "" echo "详细文档请查看:" echo "- TRTC_SETUP_GUIDE.md (完整配置指南)" echo "- admin/README_VIDEO_CALL.md (功能说明)" echo "" echo -e "${YELLOW}注意: 请确保使用 HTTPS 协议或 localhost 访问${NC}" echo ""