Skip to content

Commit

Permalink
修复导出榜单未处理精度的问题
Browse files Browse the repository at this point in the history
  • Loading branch information
ssttkkl committed Sep 8, 2023
1 parent 29f14fb commit 341a279
Showing 1 changed file with 7 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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:
Expand All @@ -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)

0 comments on commit 341a279

Please sign in to comment.