test-get-tech-teacher-daily-statistics.sh 2.32 KB
#!/bin/bash
# GetTechTeacherDailyStatistics 接口测试脚本
# 使用方式: ./test-get-tech-teacher-daily-statistics.sh [BASE_URL],默认 http://localhost:2015
# 前置:API 需已启动且已重新编译(含 RefundAchievement 的 DTO 变更)

BASE_URL="${1:-http://localhost:2015}"

echo "=== 1. 获取 Token ==="
TOKEN=$(curl -s -X POST "$BASE_URL/api/oauth/Login" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "account=admin&password=e10adc3949ba59abbe56e057f20f883e" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('data',{}).get('token','') if d.get('code')==200 else '')" 2>/dev/null)
if [ -z "$TOKEN" ]; then
  echo "获取 Token 失败,请检查 API 是否启动"
  exit 1
fi
echo "Token 获取成功"

echo ""
echo "=== 2. 调用 GetTechTeacherDailyStatistics 接口 ==="
echo "时间范围: 2026-03-01 ~ 2026-03-16"
RESP=$(curl -s -X POST "$BASE_URL/api/Extend/LqDailyReport/get-tech-teacher-daily-statistics" \
  -H "Authorization: $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startTime":"2026-03-01T00:00:00","endTime":"2026-03-16T23:59:59"}')
echo "$RESP" | python3 -m json.tool 2>/dev/null || echo "$RESP"

CODE=$(echo "$RESP" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('code',-1))" 2>/dev/null)
if [ "$CODE" != "200" ]; then
  echo ""
  echo "接口返回非 200,若为 500 且提示 set_RefundAchievement,请重启 API 服务后重试"
  exit 1
fi

echo ""
echo "=== 3. 数据库验证 SQL(MCP MySQL 或手动执行)==="
echo "耗卡业绩汇总(lq_xh_kjbsyj + lq_xh_hyhk):"
echo "SELECT consume.kjbls as TeacherId, SUM(consume.kjblsyj) as ConsumeAchievement"
echo "FROM lq_xh_kjbsyj consume"
echo "INNER JOIN lq_xh_hyhk hyhk ON consume.glkdbh = hyhk.F_Id"
echo "WHERE consume.F_IsEffective = 1 AND hyhk.F_IsEffective = 1"
echo "  AND DATE(hyhk.hksj) >= '2026-03-01' AND DATE(hyhk.hksj) <= '2026-03-16'"
echo "GROUP BY consume.kjbls;"
echo ""
echo "退卡业绩汇总(lq_hytk_kjbsyj + lq_hytk_hytk):"
echo "SELECT refund.kjbls as TeacherId, SUM(refund.kjblsyj) as RefundAchievement"
echo "FROM lq_hytk_kjbsyj refund"
echo "INNER JOIN lq_hytk_hytk hytk ON refund.gltkbh = hytk.F_Id"
echo "WHERE refund.F_IsEffective = 1 AND hytk.F_IsEffective = 1"
echo "  AND DATE(hytk.tksj) >= '2026-03-01' AND DATE(hytk.tksj) <= '2026-03-16'"
echo "GROUP BY refund.kjbls;"