mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 14:22:55 +08:00
✨ 修复商店购买逻辑及优化商品展示
This commit is contained in:
parent
3310f784da
commit
eb29854478
@ -410,15 +410,14 @@ class ShopManage:
|
|||||||
return "购买的数量要大于0!"
|
return "购买的数量要大于0!"
|
||||||
goods_list = (
|
goods_list = (
|
||||||
await GoodsInfo.filter(
|
await GoodsInfo.filter(
|
||||||
Q(goods_limit_time__gte=time.time()) | Q(goods_limit_time=0),
|
Q(goods_limit_time__gte=time.time()) | Q(goods_limit_time=0)
|
||||||
goods_limit_time=0,
|
|
||||||
)
|
)
|
||||||
.annotate()
|
.annotate()
|
||||||
.order_by("id")
|
.order_by("id")
|
||||||
.all()
|
.all()
|
||||||
)
|
)
|
||||||
if name.isdigit():
|
if name.isdigit():
|
||||||
if int(name) >= len(goods_list) or int(name) <= 0:
|
if int(name) > len(goods_list) or int(name) <= 0:
|
||||||
return "道具编号不存在..."
|
return "道具编号不存在..."
|
||||||
goods = goods_list[int(name) - 1]
|
goods = goods_list[int(name) - 1]
|
||||||
elif filter_goods := [g for g in goods_list if g.goods_name == name]:
|
elif filter_goods := [g for g in goods_list if g.goods_name == name]:
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
from datetime import datetime
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from nonebot_plugin_htmlrender import template_to_pic
|
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:
|
async def html_image() -> bytes:
|
||||||
"""构建图片"""
|
"""构建图片"""
|
||||||
goods_list = (
|
goods_list = (
|
||||||
await GoodsInfo.filter(
|
await GoodsInfo.filter(
|
||||||
Q(goods_limit_time__gte=time.time()) | Q(goods_limit_time=0),
|
Q(goods_limit_time__gte=time.time()) | Q(goods_limit_time=0)
|
||||||
goods_limit_time=0,
|
|
||||||
)
|
)
|
||||||
.annotate()
|
.annotate()
|
||||||
.order_by("id")
|
.order_by("id")
|
||||||
@ -48,6 +65,8 @@ async def html_image() -> bytes:
|
|||||||
{
|
{
|
||||||
"id": idx + 1,
|
"id": idx + 1,
|
||||||
"price": goods.goods_price,
|
"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 "∞",
|
"daily_limit": goods.daily_limit or "∞",
|
||||||
"name": goods.goods_name,
|
"name": goods.goods_name,
|
||||||
"icon": icon,
|
"icon": icon,
|
||||||
|
|||||||
@ -19,8 +19,7 @@ async def normal_image() -> bytes:
|
|||||||
h = 10
|
h = 10
|
||||||
goods_list = (
|
goods_list = (
|
||||||
await GoodsInfo.filter(
|
await GoodsInfo.filter(
|
||||||
Q(goods_limit_time__gte=time.time()) | Q(goods_limit_time=0),
|
Q(goods_limit_time__gte=time.time()) | Q(goods_limit_time=0)
|
||||||
goods_limit_time=0,
|
|
||||||
)
|
)
|
||||||
.annotate()
|
.annotate()
|
||||||
.order_by("id")
|
.order_by("id")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user