⚒️ 重大重构 LoveACE V2
引入了 mongodb 对数据库进行了一定程度的数据加密 性能改善 代码简化 统一错误模型和响应 使用 apifox 作为文档
This commit is contained in:
74
loveace/router/endpoint/isim/elec.py
Normal file
74
loveace/router/endpoint/isim/elec.py
Normal file
@@ -0,0 +1,74 @@
|
||||
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
|
||||
)
|
||||
Reference in New Issue
Block a user