75 lines
2.5 KiB
Python
75 lines
2.5 KiB
Python
from fastapi import APIRouter, Depends
|
|
from fastapi.responses import JSONResponse
|
|
|
|
from loveace.database.isim.room import RoomBind
|
|
from loveace.router.endpoint.isim.model.isim import (
|
|
UniISIMInfoResponse,
|
|
)
|
|
from loveace.router.endpoint.isim.model.protect_router import ISIMRouterErrorToCode
|
|
from loveace.router.endpoint.isim.utils.isim import ISIMClient, get_isim_client
|
|
from loveace.router.endpoint.isim.utils.room import get_bound_room
|
|
from loveace.router.schemas.uniresponse import UniResponseModel
|
|
|
|
isim_elec_router = APIRouter(
|
|
prefix="/elec",
|
|
responses=ISIMRouterErrorToCode().gen_code_table(),
|
|
)
|
|
|
|
|
|
@isim_elec_router.get(
|
|
"/info",
|
|
summary="获取寝室电费信息",
|
|
response_model=UniResponseModel[UniISIMInfoResponse],
|
|
)
|
|
async def get_isim_info(
|
|
isim: ISIMClient = Depends(get_isim_client),
|
|
room: RoomBind = Depends(get_bound_room),
|
|
) -> UniResponseModel[UniISIMInfoResponse] | JSONResponse:
|
|
"""
|
|
获取用户绑定宿舍的电费信息
|
|
|
|
✅ 功能特性:
|
|
- 获取当前电费余额
|
|
- 获取用电记录历史
|
|
- 获取缴费记录
|
|
|
|
💡 使用场景:
|
|
- 个人中心查看宿舍电费
|
|
- 监测用电情况
|
|
- 查看缴费历史
|
|
|
|
Returns:
|
|
UniISIMInfoResponse: 包含房间信息、电费余额、用电记录、缴费记录
|
|
"""
|
|
try:
|
|
# 使用 ISIMClient 的集成方法获取电费信息
|
|
result = await isim.get_electricity_info(room.roomid)
|
|
|
|
if result is None:
|
|
isim.client.logger.error(f"获取寝室 {room.roomid} 电费信息失败")
|
|
return ISIMRouterErrorToCode().remote_service_error.to_json_response(
|
|
isim.client.logger.trace_id
|
|
)
|
|
|
|
room_display = await isim.get_room_display_text(room.roomid)
|
|
room_display = "" if room_display is None else room_display
|
|
return UniResponseModel[UniISIMInfoResponse](
|
|
success=True,
|
|
data=UniISIMInfoResponse(
|
|
room_code=room.roomid,
|
|
room_display=room_display,
|
|
room_text=room.roomtext,
|
|
balance=result["balance"],
|
|
usage_records=result["usage_records"],
|
|
payments=result["payments"],
|
|
),
|
|
message="获取寝室电费信息成功",
|
|
error=None,
|
|
)
|
|
except Exception as e:
|
|
isim.client.logger.error("获取寝室电费信息异常")
|
|
isim.client.logger.exception(e)
|
|
return ISIMRouterErrorToCode().server_error.to_json_response(
|
|
isim.client.logger.trace_id
|
|
)
|