#!/bin/bash # 测试付款提醒列表接口 echo "=== 测试付款提醒列表接口 ===" echo "" # 1. 获取token echo "=== 1. 获取Token ===" TOKEN_RESPONSE=$(curl -s -X POST "http://localhost:2011/api/oauth/Login" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "account=admin&password=e10adc3949ba59abbe56e057f20f883e") TOKEN=$(echo "$TOKEN_RESPONSE" | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['data']['token'])" 2>/dev/null) if [ -z "$TOKEN" ]; then echo "❌ Token获取失败" echo "$TOKEN_RESPONSE" exit 1 fi echo "✅ Token获取成功" echo "" # 2. 测试接口 - 查询所有提醒 echo "=== 2. 测试接口 - 查询所有付款提醒 ===" RESPONSE=$(curl -s -X POST "http://localhost:2011/api/Extend/LqContract/GetPaymentReminderList" \ -H "Authorization: $TOKEN" \ -H "Content-Type: application/json" \ -d '{"onlyOverdue": false}') echo "$RESPONSE" | python3 -c " import sys, json from datetime import datetime try: data = json.load(sys.stdin) code = data.get('code') msg = data.get('msg') items = data.get('data', []) print(f'HTTP状态码: {code}') print(f'消息: {msg}') print(f'数据条数: {len(items)}') print('') if code == 200 and items: print('✅ 接口测试成功!') print('') print('=' * 100) print('前3条记录详情:') print('=' * 100) for idx, item in enumerate(items[:3], 1): print(f'\n【记录 {idx}】') print(f' 合同ID: {item.get(\"ContractId\", \"缺失\")}') print(f' 明细ID: {item.get(\"DetailId\", \"缺失\")}') print(f' 店名: {item.get(\"StoreName\", \"缺失\")}') print(f' 合同标题: {item.get(\"Title\", \"缺失\")}') print(f' 收款方: {item.get(\"TenantName\", \"无\")}') # 付款时间 if 'PaymentDate' in item and item['PaymentDate']: payment_date = datetime.fromtimestamp(item['PaymentDate'] / 1000).strftime('%Y-%m-%d') print(f' ✅ 付款时间: {payment_date}') else: print(f' ❌ 付款时间: 缺失') # 付款金额 if 'PaymentAmount' in item: print(f' ✅ 付款金额: {item[\"PaymentAmount\"]:,.2f} 元') else: print(f' ❌ 付款金额: 缺失') # 应缴月份 if 'PaymentMonth' in item: print(f' ✅ 应缴月份: {item[\"PaymentMonth\"]}') else: print(f' ❌ 应缴月份: 缺失') # 提醒时间 if 'ReminderDate' in item and item['ReminderDate']: reminder_date = datetime.fromtimestamp(item['ReminderDate'] / 1000).strftime('%Y-%m-%d') print(f' ✅ 提醒时间: {reminder_date}') else: print(f' ⚠️ 提醒时间: 无') # 状态 days = item.get('DaysUntilPayment', 0) is_overdue = item.get('IsOverdue', False) status = '已过期' if is_overdue else f'{days}天后' print(f' ✅ 状态: {status} (距离付款 {days} 天)') print('') print('=' * 100) print('字段完整性检查:') print('-' * 100) required_fields = ['ContractId', 'DetailId', 'StoreName', 'Title', 'TenantName', 'PaymentDate', 'PaymentAmount', 'PaymentMonth', 'ReminderDate', 'DaysUntilPayment', 'IsOverdue'] all_ok = True for field in required_fields: missing_count = sum(1 for item in items if field not in item or (item[field] is None and field not in ['ReminderDate', 'TenantName', 'Remarks'])) if missing_count > 0: print(f'❌ {field}: {missing_count}条记录缺失') all_ok = False else: print(f'✅ {field}: 所有记录都有此字段') if all_ok: print('') print('✅ 所有必需字段都存在!') # 统计信息 total_amount = sum(item.get('PaymentAmount', 0) for item in items) overdue_count = sum(1 for item in items if item.get('IsOverdue', False)) print('') print('=' * 100) print('统计信息:') print('-' * 100) print(f'总记录数: {len(items)}') print(f'总付款金额: {total_amount:,.2f} 元') print(f'已过期: {overdue_count} 条') print(f'未过期: {len(items) - overdue_count} 条') elif code == 200 and not items: print('⚠️ 接口返回成功,但没有数据') else: print(f'❌ 接口返回错误: {msg}') print('完整响应:') print(json.dumps(data, indent=2, ensure_ascii=False)) except json.JSONDecodeError as e: print('❌ JSON解析失败') print('响应内容:') print(sys.stdin.read()) except Exception as e: print(f'❌ 处理失败: {e}') print('响应内容:') print(sys.stdin.read()) " echo "" echo "=== 测试完成 ==="