测试脚本-合作成本表和店内支出表.sh 8.2 KB
#!/bin/bash

# 测试脚本 - 合作成本表和店内支出表
# 使用方法:./测试脚本-合作成本表和店内支出表.sh <token> <base_url>
# 示例:./测试脚本-合作成本表和店内支出表.sh "Bearer xxx" "http://localhost:2011"

TOKEN=${1:-"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySWQiOiJhZG1pbiIsIkFjY291bnQiOiJhZG1pbiIsIlVzZXJOYW1lIjoi566h55CG5ZGYIiwiQWRtaW5pc3RyYXRvciI6MSwiVGVuYW50SWQiOiJkYiIsIlRlbmFudERiTmFtZSI6ImxxZXJwX3Rlc3QiLCJpYXQiOjE3NjUyOTAwNTQsIm5iZiI6MTc2NTI5MDA1NCwiZXhwIjoxNzY1MzQ0MDU0LCJpc3MiOiJ5aW5tYWlzb2Z0IiwiYXVkIjoieWlubWFpc29mdCJ9.d68JfuAnxusEWSzloJu4uFPd5uK-Tf8_AA2gBPui-k4"}
BASE_URL=${2:-"http://localhost:2011"}

echo "=========================================="
echo "开始测试 - 合作成本表和店内支出表"
echo "=========================================="
echo ""

# 测试门店ID
STORE_ID_1="1649328471923847168"  # 绿纤总部
STORE_ID_2="1649328471923847169"  # 绿纤紫荆店
STORE_ID_3="1649328471923847170"  # 绿纤龙湖店

# 颜色输出
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# 测试函数
test_api() {
    local name=$1
    local method=$2
    local url=$3
    local data=$4
    
    echo -e "${YELLOW}测试: ${name}${NC}"
    echo "请求: ${method} ${url}"
    if [ -n "$data" ]; then
        echo "数据: ${data}"
        response=$(curl -s -w "\n%{http_code}" -X ${method} "${BASE_URL}${url}" \
            -H "Authorization: ${TOKEN}" \
            -H "Content-Type: application/json" \
            -d "${data}")
    else
        response=$(curl -s -w "\n%{http_code}" -X ${method} "${BASE_URL}${url}" \
            -H "Authorization: ${TOKEN}")
    fi
    
    http_code=$(echo "$response" | tail -n1)
    body=$(echo "$response" | sed '$d')
    
    if [ "$http_code" -eq 200 ] || [ "$http_code" -eq 201 ]; then
        echo -e "${GREEN}✓ 成功 (HTTP ${http_code})${NC}"
        echo "响应: ${body}" | jq . 2>/dev/null || echo "响应: ${body}"
        echo ""
        echo "$body"
    else
        echo -e "${RED}✗ 失败 (HTTP ${http_code})${NC}"
        echo "响应: ${body}"
        echo ""
        echo ""
    fi
}

# ==========================================
# 第一阶段:合作成本表 CRUD 测试
# ==========================================
echo "=========================================="
echo "第一阶段:合作成本表 CRUD 测试"
echo "=========================================="
echo ""

# 1.1 创建合作成本记录
echo "1.1 创建合作成本记录"
COOPERATION_COST_DATA='{"storeId":"'${STORE_ID_1}'","storeName":"绿纤总部","year":2025,"month":"202501","totalAmount":5000.00,"remarks":"CRUD测试-创建"}'
CREATE_RESPONSE=$(test_api "创建合作成本记录" "POST" "/api/Extend/LqCooperationCost" "${COOPERATION_COST_DATA}")
COOPERATION_COST_ID=$(echo "$CREATE_RESPONSE" | jq -r '.id // empty' 2>/dev/null)

if [ -z "$COOPERATION_COST_ID" ]; then
    echo "无法获取创建的记录ID,尝试从响应中提取..."
    COOPERATION_COST_ID=$(echo "$CREATE_RESPONSE" | grep -oP '"id"\s*:\s*"[^"]*"' | head -1 | cut -d'"' -f4)
fi

echo "创建的记录ID: ${COOPERATION_COST_ID}"
echo ""

# 1.2 查询合作成本列表
echo "1.2 查询合作成本列表"
test_api "查询合作成本列表" "GET" "/api/Extend/LqCooperationCost?currentPage=1&pageSize=10&storeId=${STORE_ID_1}" ""
echo ""

# 1.3 查询合作成本详情
if [ -n "$COOPERATION_COST_ID" ]; then
    echo "1.3 查询合作成本详情"
    test_api "查询合作成本详情" "GET" "/api/Extend/LqCooperationCost/${COOPERATION_COST_ID}" ""
    echo ""
    
    # 1.4 更新合作成本记录
    echo "1.4 更新合作成本记录"
    UPDATE_DATA='{"id":"'${COOPERATION_COST_ID}'","storeId":"'${STORE_ID_1}'","storeName":"绿纤总部","year":2025,"month":"202501","totalAmount":6000.00,"remarks":"CRUD测试-更新"}'
    test_api "更新合作成本记录" "PUT" "/api/Extend/LqCooperationCost/${COOPERATION_COST_ID}" "${UPDATE_DATA}"
    echo ""
fi

# ==========================================
# 第二阶段:店内支出表 CRUD 测试
# ==========================================
echo "=========================================="
echo "第二阶段:店内支出表 CRUD 测试"
echo "=========================================="
echo ""

# 2.1 创建店内支出记录
echo "2.1 创建店内支出记录"
STORE_EXPENSE_DATA='{"storeId":"'${STORE_ID_1}'","storeName":"绿纤总部","expenseCategoryId":"","expenseCategoryName":"办公用品","expenseDate":"2025-01-15T00:00:00","unitPrice":10.50,"quantity":5,"amount":52.50,"memo":"CRUD测试-创建","attachment":[],"relatedReimbursementId":"","relatedPurchaseRecordId":""}'
CREATE_EXPENSE_RESPONSE=$(test_api "创建店内支出记录" "POST" "/api/Extend/LqStoreExpense" "${STORE_EXPENSE_DATA}")
STORE_EXPENSE_ID=$(echo "$CREATE_EXPENSE_RESPONSE" | jq -r '.id // empty' 2>/dev/null)

if [ -z "$STORE_EXPENSE_ID" ]; then
    echo "无法获取创建的记录ID,尝试从响应中提取..."
    STORE_EXPENSE_ID=$(echo "$CREATE_EXPENSE_RESPONSE" | grep -oP '"id"\s*:\s*"[^"]*"' | head -1 | cut -d'"' -f4)
fi

echo "创建的记录ID: ${STORE_EXPENSE_ID}"
echo ""

# 2.2 查询店内支出列表
echo "2.2 查询店内支出列表"
test_api "查询店内支出列表" "GET" "/api/Extend/LqStoreExpense?currentPage=1&pageSize=10&storeId=${STORE_ID_1}" ""
echo ""

# 2.3 查询店内支出详情
if [ -n "$STORE_EXPENSE_ID" ]; then
    echo "2.3 查询店内支出详情"
    test_api "查询店内支出详情" "GET" "/api/Extend/LqStoreExpense/${STORE_EXPENSE_ID}" ""
    echo ""
    
    # 2.4 更新店内支出记录
    echo "2.4 更新店内支出记录"
    UPDATE_EXPENSE_DATA='{"id":"'${STORE_EXPENSE_ID}'","storeId":"'${STORE_ID_1}'","storeName":"绿纤总部","expenseCategoryId":"","expenseCategoryName":"水电费","expenseDate":"2025-01-20T00:00:00","unitPrice":0,"quantity":0,"amount":500.00,"memo":"CRUD测试-更新","attachment":[],"relatedReimbursementId":"","relatedPurchaseRecordId":""}'
    test_api "更新店内支出记录" "PUT" "/api/Extend/LqStoreExpense/${STORE_EXPENSE_ID}" "${UPDATE_EXPENSE_DATA}"
    echo ""
fi

# ==========================================
# 第三阶段:Excel导入测试
# ==========================================
echo "=========================================="
echo "第三阶段:Excel导入测试"
echo "=========================================="
echo ""

# 3.1 导入合作成本表
echo "3.1 导入合作成本表"
echo "注意:需要手动执行以下命令(需要提供Excel文件路径)"
echo "curl -X POST \"${BASE_URL}/api/Extend/LqCooperationCost/Actions/Import\" \\"
echo "  -H \"Authorization: ${TOKEN}\" \\"
echo "  -F \"file=@excel/合作成本表.xlsx\""
echo ""

# 3.2 导入店内支出表
echo "3.2 导入店内支出表"
echo "注意:需要手动执行以下命令(需要提供Excel文件路径)"
echo "curl -X POST \"${BASE_URL}/api/Extend/LqStoreExpense/Actions/Import\" \\"
echo "  -H \"Authorization: ${TOKEN}\" \\"
echo "  -F \"file=@excel/店内支出表.xlsx\""
echo ""

# ==========================================
# 第四阶段:Excel导出测试
# ==========================================
echo "=========================================="
echo "第四阶段:Excel导出测试"
echo "=========================================="
echo ""

# 4.1 导出合作成本表
echo "4.1 导出合作成本表"
test_api "导出合作成本表" "GET" "/api/Extend/LqCooperationCost/Actions/Export?dataType=1&storeId=${STORE_ID_1}&year=2025&month=202501" ""
echo ""

# 4.2 导出店内支出表
echo "4.2 导出店内支出表"
test_api "导出店内支出表" "GET" "/api/Extend/LqStoreExpense/Actions/Export?dataType=1&storeId=${STORE_ID_1}" ""
echo ""

# ==========================================
# 第五阶段:报销表导出测试
# ==========================================
echo "=========================================="
echo "第五阶段:报销表导出测试"
echo "=========================================="
echo ""

# 5.1 导出报销表明细
echo "5.1 导出报销表明细(本月已审核通过的)"
test_api "导出报销表明细" "GET" "/api/Extend/LqReimbursementApplication/Actions/ExportApprovedDetails?year=2025&month=01" ""
echo ""

echo "=========================================="
echo "测试完成"
echo "=========================================="