From eb298544781c5f3893ae6889625f20bb087e239e Mon Sep 17 00:00:00 2001 From: HibiKier <775757368@qq.com> Date: Mon, 13 Jan 2025 11:38:16 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E4=BF=AE=E5=A4=8D=E5=95=86?= =?UTF-8?q?=E5=BA=97=E8=B4=AD=E4=B9=B0=E9=80=BB=E8=BE=91=E5=8F=8A=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=95=86=E5=93=81=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zhenxun/builtin_plugins/shop/_data_source.py | 5 ++--- zhenxun/builtin_plugins/shop/html_image.py | 23 ++++++++++++++++++-- zhenxun/builtin_plugins/shop/normal_image.py | 3 +-- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/zhenxun/builtin_plugins/shop/_data_source.py b/zhenxun/builtin_plugins/shop/_data_source.py index 99dc7e1d..1e4af391 100644 --- a/zhenxun/builtin_plugins/shop/_data_source.py +++ b/zhenxun/builtin_plugins/shop/_data_source.py @@ -410,15 +410,14 @@ class ShopManage: return "购买的数量要大于0!" goods_list = ( await GoodsInfo.filter( - Q(goods_limit_time__gte=time.time()) | Q(goods_limit_time=0), - goods_limit_time=0, + Q(goods_limit_time__gte=time.time()) | Q(goods_limit_time=0) ) .annotate() .order_by("id") .all() ) if name.isdigit(): - if int(name) >= len(goods_list) or int(name) <= 0: + if int(name) > len(goods_list) or int(name) <= 0: return "道具编号不存在..." goods = goods_list[int(name) - 1] elif filter_goods := [g for g in goods_list if g.goods_name == name]: diff --git a/zhenxun/builtin_plugins/shop/html_image.py b/zhenxun/builtin_plugins/shop/html_image.py index b3bfe87f..2d7948cb 100644 --- a/zhenxun/builtin_plugins/shop/html_image.py +++ b/zhenxun/builtin_plugins/shop/html_image.py @@ -1,3 +1,4 @@ +from datetime import datetime import time from nonebot_plugin_htmlrender import template_to_pic @@ -19,12 +20,28 @@ class GoodsItem(BaseModel): """分区名称""" +def get_limit_time(end_time: int): + now = int(time.time()) + if now > end_time: + return None + current_datetime = datetime.fromtimestamp(now) + end_datetime = datetime.fromtimestamp(end_time) + time_difference = end_datetime - current_datetime + total_seconds = time_difference.total_seconds() + hours = int(total_seconds // 3600) + minutes = int((total_seconds % 3600) // 60) + return f"{hours}:{minutes}" + + +def get_discount(price: int, discount: float): + return None if discount == 1.0 else int(price * discount) + + async def html_image() -> bytes: """构建图片""" goods_list = ( await GoodsInfo.filter( - Q(goods_limit_time__gte=time.time()) | Q(goods_limit_time=0), - goods_limit_time=0, + Q(goods_limit_time__gte=time.time()) | Q(goods_limit_time=0) ) .annotate() .order_by("id") @@ -48,6 +65,8 @@ async def html_image() -> bytes: { "id": idx + 1, "price": goods.goods_price, + "discount_price": get_discount(goods.goods_price, goods.goods_discount), + "limit_time": get_limit_time(goods.goods_limit_time), "daily_limit": goods.daily_limit or "∞", "name": goods.goods_name, "icon": icon, diff --git a/zhenxun/builtin_plugins/shop/normal_image.py b/zhenxun/builtin_plugins/shop/normal_image.py index 3299ab6e..7b5004cf 100644 --- a/zhenxun/builtin_plugins/shop/normal_image.py +++ b/zhenxun/builtin_plugins/shop/normal_image.py @@ -19,8 +19,7 @@ async def normal_image() -> bytes: h = 10 goods_list = ( await GoodsInfo.filter( - Q(goods_limit_time__gte=time.time()) | Q(goods_limit_time=0), - goods_limit_time=0, + Q(goods_limit_time__gte=time.time()) | Q(goods_limit_time=0) ) .annotate() .order_by("id")