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))