#!/bin/bash
# ==============================================
# 风七六阿里云开发环境状态检查脚本
# 服务器地址: 8.140.221.49
# ==============================================

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'

# 服务器配置
SERVER_IP="8.140.221.49"
SSH_KEY="/var/lib/jenkins/.ssh/id_rsa"
SSH_USER="root"

echo -e "${BLUE}==============================================${NC}"
echo -e "${BLUE}    风七六阿里云开发环境状态检查${NC}"
echo -e "${BLUE}    Server: ${SERVER_IP}${NC}"
echo -e "${BLUE}==============================================${NC}"

# 服务检查列表
SERVICES=(
    "Nacos|8848|http://${SERVER_IP}:8848/nacos/v1/console/health"
    "MariaDB|3306|tcp"
    "Redis|6379|tcp"
    "Image Registry|5000|http://${SERVER_IP}:5000/v2/_catalog"
    "Nginx|80|http://${SERVER_IP}"
    "API Gateway|8080|http://${SERVER_IP}:8080/actuator/health"
    "Jenkins|8080|http://${SERVER_IP}:8080/login"
    "SonarQube|9000|http://${SERVER_IP}:9000/api/system/health"
    "Nexus|8091|http://${SERVER_IP}:8091/service/rest/v1/status"
)

SUCCESS_COUNT=0
FAILED_COUNT=0
FAILED_SERVICES=()

echo ""
echo -e "${YELLOW}[1/3] 检查核心服务状态${NC}"
echo "----------------------------------------------"

for SERVICE in "${SERVICES[@]}"; do
    IFS='|' read -r NAME PORT URL <<< "$SERVICE"
    
    echo -n "🔍 检查 $NAME..."
    
    if [ "$URL" = "tcp" ]; then
        # TCP端口检查
        if timeout 5 bash -c "echo > /dev/tcp/${SERVER_IP}/${PORT}" 2>/dev/null; then
            echo -e "${GREEN} ✅${NC}"
            SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
        else
            echo -e "${RED} ❌${NC}"
            FAILED_COUNT=$((FAILED_COUNT + 1))
            FAILED_SERVICES+=("$NAME")
        fi
    else
        # HTTP服务检查
        if curl -s -f -m 10 "$URL" > /dev/null 2>&1; then
            echo -e "${GREEN} ✅${NC}"
            SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
        else
            echo -e "${RED} ❌${NC}"
            FAILED_COUNT=$((FAILED_COUNT + 1))
            FAILED_SERVICES+=("$NAME")
        fi
    fi
done

echo ""
echo -e "${YELLOW}[2/3] 检查Nacos服务注册${NC}"
echo "----------------------------------------------"

NACOS_URL="http://${SERVER_IP}:8848/nacos/v1/ns/service/list?pageNo=1&pageSize=100"
SERVICE_LIST=$(curl -s "$NACOS_URL")

if [ -z "$SERVICE_LIST" ]; then
    echo -e "${RED}✗ 无法获取服务列表${NC}"
else
    EXPECTED_SERVICES=("auth-service" "user-service" "merchant-service" "order-service" "rider-service" "product-service" "map-service" "marketing-service" "upload-service")
    
    for SERVICE in "${EXPECTED_SERVICES[@]}"; do
        if echo "$SERVICE_LIST" | grep -q "\"name\":\"$SERVICE\""; then
            echo -e "${GREEN}✓ $SERVICE${NC}"
        else
            echo -e "${YELLOW}⚠ $SERVICE (未注册)${NC}"
        fi
    done
fi

echo ""
echo -e "${YELLOW}[3/3] 检查前端服务${NC}"
echo "----------------------------------------------"

FRONTEND_PATHS=("/platform" "/merchant" "/official")

for PATH in "${FRONTEND_PATHS[@]}"; do
    URL="http://${SERVER_IP}${PATH}"
    if curl -s -f -m 5 "$URL" > /dev/null 2>&1; then
        echo -e "${GREEN}✓ ${URL}${NC}"
    else
        echo -e "${RED}✗ ${URL}${NC}"
    fi
done

echo ""
echo -e "${BLUE}==============================================${NC}"
echo -e "${BLUE}              检查结果汇总${NC}"
echo -e "${BLUE}==============================================${NC}"
echo "服务总数: ${#SERVICES[@]}"
echo -e "正常: ${GREEN}${SUCCESS_COUNT}${NC}"
echo -e "异常: ${RED}${FAILED_COUNT}${NC}"

if [ ${#FAILED_SERVICES[@]} -gt 0 ]; then
    echo ""
    echo -e "${YELLOW}需要关注的服务:${NC}"
    for SERVICE in "${FAILED_SERVICES[@]}"; do
        echo "- $SERVICE"
    done
    echo ""
    echo -e "${YELLOW}建议操作:${NC}"
    echo "1. 登录服务器: ssh -i /path/to/key root@${SERVER_IP}"
    echo "2. 检查服务状态: systemctl status jenkins nexus"
    echo "3. 启动服务: systemctl start jenkins nexus"
else
    echo ""
    echo -e "${GREEN}🎉 所有服务状态正常！${NC}"
fi

echo ""
echo -e "${BLUE}==============================================${NC}"
echo -e "${BLUE}              服务访问地址${NC}"
echo -e "${BLUE}==============================================${NC}"
echo "Nacos:      http://${SERVER_IP}:8848/nacos"
echo "Jenkins:    http://${SERVER_IP}:8080"
echo "SonarQube:  http://${SERVER_IP}:9000"
echo "Nexus:      http://${SERVER_IP}:8091"
echo "平台端:     http://${SERVER_IP}/platform"
echo "商家端:     http://${SERVER_IP}/merchant"
echo "API网关:    http://${SERVER_IP}:8080"
echo -e "${BLUE}==============================================${NC}"