From 341a279dc68d4a602d7a633d61cc5606d4c14bb4 Mon Sep 17 00:00:00 2001 From: ssttkkl Date: Sat, 9 Sep 2023 01:38:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AF=BC=E5=87=BA=E6=A6=9C?= =?UTF-8?q?=E5=8D=95=E6=9C=AA=E5=A4=84=E7=90=86=E7=B2=BE=E5=BA=A6=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/season_user_point_csv_mapper.py | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/nonebot_plugin_mahjong_scoreboard/controller/mapper/season_user_point_csv_mapper.py b/src/nonebot_plugin_mahjong_scoreboard/controller/mapper/season_user_point_csv_mapper.py index c171bb0..ae2a7cb 100644 --- a/src/nonebot_plugin_mahjong_scoreboard/controller/mapper/season_user_point_csv_mapper.py +++ b/src/nonebot_plugin_mahjong_scoreboard/controller/mapper/season_user_point_csv_mapper.py @@ -3,7 +3,7 @@ from nonebot.internal.matcher import current_bot -from nonebot_plugin_mahjong_scoreboard.controller.mapper import map_datetime +from nonebot_plugin_mahjong_scoreboard.controller.mapper import map_datetime, map_point from nonebot_plugin_mahjong_scoreboard.model import Season, SeasonUserPointChangeLog, SeasonUserPointChangeType from nonebot_plugin_mahjong_scoreboard.utils.nickname import get_user_nickname @@ -24,6 +24,7 @@ async def write_season_user_point_change_logs_csv(f: TextIO, logs: Iterable[Seas game_idx = {} user_point = {} + scale = 10 ** season.config.point_precision # 初步绘制表格 for log in logs: @@ -38,33 +39,27 @@ async def write_season_user_point_change_logs_csv(f: TextIO, logs: Iterable[Seas game_idx[log.related_game.id] = len(header) - 1 _ensure_size(table[user_idx[log.user.id]], game_idx[log.related_game.id] + 1, '') - table[user_idx[log.user.id]][game_idx[log.related_game.id]] = str(log.change_point) + table[user_idx[log.user.id]][game_idx[log.related_game.id]] = map_point(log.change_point, scale) - user_point[log.user.id] = user_point.get(log.user.id, 0) + log.change_point + user_point[log.user.id] = user_point.get(log.user.id, 0) + map_point(log.change_point, scale) elif log.change_type == SeasonUserPointChangeType.manually: header.append(f"手动设置\n{map_datetime(log.create_time)}") _ensure_size(table[user_idx[log.user.id]], len(header), '') - table[user_idx[log.user.id]][-1] = str(log.change_point) + table[user_idx[log.user.id]][-1] = map_point(log.change_point, scale) - user_point[log.user.id] = log.change_point + user_point[log.user.id] = map_point(log.change_point, scale) # 将行(用户)按pt排序 ordered_user_idx = [] for user_id, idx in user_idx.items(): ordered_user_idx.append((user_id, idx, user_point[user_id])) - ordered_user_idx.sort(key=lambda x: x[2], reverse=True) + ordered_user_idx.sort(key=lambda x: float(x[2]), reverse=True) new_table = [header] for user_id, idx, point in ordered_user_idx: new_table.append(table[idx]) table[idx][1] = str(point) - # # 交换行列 - # table = [[''] * len(new_table) for i in range(len(new_table[0]))] - # for i in range(len(new_table)): - # for j in range(len(new_table[i])): - # table[j][i] = new_table[i][j] - writer = csv.writer(f) writer.writerows(new_table)