select_pay_user_all.sh 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #!/bin/bash
  2. # MySQL 连接配置
  3. MYSQL_USER="root"
  4. MYSQL_PASSWORD="123456"
  5. MYSQL_HOST="127.0.0.1"
  6. # 获取所有以 'ro' 开头的数据库
  7. DATABASES=$(mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -e "SHOW DATABASES LIKE 'ro%';" -s -N 2>/dev/null)
  8. TOTAL_RMB=0
  9. TOTAL_ROLE=0
  10. TOTAL_LOGIN_3DAYS=0
  11. echo "开始查询所有 ro* 数据库的统计信息..."
  12. echo "========================================"
  13. for DB in $DATABASES; do
  14. # 提取数据库编号(去掉 ro 前缀)
  15. DB_NUM=${DB#ro}
  16. # 根据映射规则计算区服编号
  17. case $DB_NUM in
  18. 1)
  19. SERVER_ID=1
  20. ;;
  21. 2)
  22. SERVER_ID=6
  23. ;;
  24. 3)
  25. SERVER_ID=2
  26. ;;
  27. 4)
  28. SERVER_ID=7
  29. ;;
  30. 5)
  31. SERVER_ID=3
  32. ;;
  33. 6)
  34. SERVER_ID=8
  35. ;;
  36. 7)
  37. SERVER_ID=4
  38. ;;
  39. 8)
  40. SERVER_ID=9
  41. ;;
  42. 9)
  43. SERVER_ID=5
  44. ;;
  45. *)
  46. # 10 及以上,区服编号等于数据库编号
  47. SERVER_ID=$DB_NUM
  48. ;;
  49. esac
  50. echo "数据库: $DB (区服: ${SERVER_ID}服)"
  51. # 查询1: 所有 RMB 总和
  52. SUM_RMB=$(mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -D $DB -e "SELECT COALESCE(SUM(rmb), 0) FROM role_order_list;" -s -N 2>/dev/null)
  53. # 查询2: 所有角色数量
  54. COUNT_ROLE=$(mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -D $DB -e "SELECT COALESCE(COUNT(*), 0) FROM role;" -s -N 2>/dev/null)
  55. # 查询3: 最近三天登录人数(使用 uid 作为唯一标识)
  56. COUNT_LOGIN_3DAYS=$(mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -D $DB -e "SELECT COALESCE(COUNT(DISTINCT uid), 0) FROM role WHERE last_login_date >= DATE_SUB(NOW(), INTERVAL 3 DAY);" -s -N 2>/dev/null)
  57. # 显示当前数据库的统计值
  58. echo " - 总充值金额(美元): ${SUM_RMB:-0}"
  59. echo " - 总角色数量: ${COUNT_ROLE:-0}"
  60. echo " - 最近三天登录人数: ${COUNT_LOGIN_3DAYS:-0}"
  61. echo ""
  62. # 累加对应的总和
  63. TOTAL_RMB=$((TOTAL_RMB + ${SUM_RMB:-0}))
  64. TOTAL_ROLE=$((TOTAL_ROLE + ${COUNT_ROLE:-0}))
  65. TOTAL_LOGIN_3DAYS=$((TOTAL_LOGIN_3DAYS + ${COUNT_LOGIN_3DAYS:-0}))
  66. done
  67. echo "========================================"
  68. echo "汇总结果:"
  69. echo "所有 ro* 数据库的总充值金额(美元): $TOTAL_RMB"
  70. echo "所有 ro* 数据库的总角色数量: $TOTAL_ROLE"
  71. echo "所有 ro* 数据库的最近三天总登录人数: $TOTAL_LOGIN_3DAYS"