diff --git a/b/handover/get_recharge_record.dspy b/b/handover/get_recharge_record.dspy index ac9f8fb..ca37c20 100644 --- a/b/handover/get_recharge_record.dspy +++ b/b/handover/get_recharge_record.dspy @@ -16,7 +16,7 @@ async def get_recharge_record(ns={}): try: user_id = await get_user() if not user_id: - return {'status': False, 'message': 'user_id is missing'} + server_error(401) result = await sor.R('users', {'id': user_id}) if not result: @@ -28,17 +28,35 @@ async def get_recharge_record(ns={}): # recharge_path = 0 recharge_path = ns.get('recharge_path') params = {'start_time': start_time, 'end_time': end_time, 'recharge_path': recharge_path, 'orgid': orgid} - + + # 增加分页功能 + page = ns.get('page', 1) + size = ns.get('size', 20) + offset = (page - 1) * size + + # 构建COUNT查询 + total_sql = "SELECT COUNT(*) AS total_count FROM recharge_log WHERE del_flg = 0 AND customerid = ${orgid}$" + sql = "SELECT * FROM recharge_log WHERE del_flg = 0 AND customerid = ${orgid}$" if start_time and end_time: sql += " AND create_at BETWEEN ${start_time}$ AND ${end_time}$" + total_sql += " AND create_at BETWEEN ${start_time}$ AND ${end_time}$" if recharge_path is not None: sql += " AND recharge_path = ${recharge_path}$" + total_sql += " AND recharge_path = ${recharge_path}$" + # 添加排序但不添加分页限制到主查询 + sql += " ORDER BY create_at DESC" + + # 执行COUNT查询获取总记录数 + total_result = await sor.sqlExe(total_sql, params) + total_count = total_result[0]['total_count'] if total_result else 0 + + # 执行查询获取所有匹配记录 reacs = await sor.sqlExe(sql, params) if not reacs: - return {'status': True, 'message': 'No recharge records'} + return {'status': True, 'message': 'No recharge records', 'pagination': {'page': page, 'size': size, 'total': 0}} for recharge in reacs: if recharge['recharge_sno']: @@ -75,7 +93,11 @@ async def get_recharge_record(ns={}): recharge_amount += round(float(recharge['recharge_amt']), 2) elif recharge['action'] in ['RECHARGE_REVERSE', 'RECHARGE_ALIPAY_REVERSE']: recharge_reverse_amount += round(float(recharge['recharge_amt']), 2) + + # 在过滤后应用分页 recharge_records.sort(key=lambda x: x['create_at'], reverse=True) + # 应用分页 + paginated_records = recharge_records[offset:offset + size] except Exception as e: raise @@ -83,10 +105,15 @@ async def get_recharge_record(ns={}): return { 'status': True, 'message': 'ok', - 'recharge_records': recharge_records, + 'recharge_records': paginated_records, 'actual_amount': round(total_amount, 2), 'recharge_amount': round(recharge_amount, 2), - 'charged_amount': round(recharge_reverse_amount, 2) + 'charged_amount': round(recharge_reverse_amount, 2), + 'pagination': { + 'page': page, + 'size': size, + 'total': len(recharge_records) # 使用过滤后的总记录数 + } } ret = await get_recharge_record(params_kw)