feat: track designer downloads and notifications

This commit is contained in:
2026-03-08 23:42:18 +08:00
parent 5ff85debdc
commit 147fc58409
9 changed files with 119 additions and 37 deletions

View File

@@ -0,0 +1,46 @@
from datetime import datetime
from sqlalchemy.orm import Session
from app.models.download import DownloadRecord
from app.models.order import Order
from app.models.user import User
from app.models.work import Work
from app.services.wecom_bot import send_wecom_text
def _build_download_notice(work: Work, buyer: User, order: Order) -> str:
return "\n".join(
[
"【图绘下载通知】",
f"作品ID{work.id}",
f"作品标题:{work.title}",
f"设计师:{work.designer or '-'}",
f"购买用户:{buyer.nickname or buyer.phone or buyer.id}",
f"金额:{order.amount}",
f"下载时间:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}",
f"作品链接https://tuhui.cloud/detail/{work.id}",
]
)
def record_download(db: Session, order: Order, work: Work, buyer: User) -> DownloadRecord:
existing = db.query(DownloadRecord).filter(DownloadRecord.order_id == order.id).first()
if existing:
return existing
record = DownloadRecord(
user_id=buyer.id,
work_id=work.id,
order_id=order.id,
designer_name=work.designer or "",
work_title=work.title or "",
amount=float(order.amount or 0.0),
)
db.add(record)
work.downloads = int(work.downloads or 0) + 1
return record
def notify_download(work: Work, buyer: User, order: Order):
send_wecom_text(_build_download_notice(work, buyer, order))