1
0

store.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. from .db import DB
  2. from tool.typing import *
  3. def get_store_item_list(db: DB) -> Optional[List]:
  4. cur = db.search(columns=["Name", "Score", "Quantity", "GoodsID"],
  5. table="goods")
  6. if cur is None or cur.rowcount == 0:
  7. return None
  8. return cur.fetchall()
  9. def get_store_item(goods_id: int, db: DB) -> Optional[List]:
  10. cur = db.search(columns=["Name", "Score", "Quantity", "GoodsID"],
  11. table="goods",
  12. where=f"GoodsID={goods_id}")
  13. if cur is None:
  14. return None
  15. assert cur.rowcount == 1
  16. return cur.fetchone()
  17. def update_goods(goods_id: int, quantity: int, db: DB):
  18. cur = db.update(table="goods", kw={"Quantity": f"{quantity}"}, where=f"GoodsID={goods_id}")
  19. assert cur.rowcount == 1
  20. def get_order_id(uid: uid_t, db: DB):
  21. cur = db.search(columns=["OrderID"],
  22. table="orders",
  23. where=f"UserID = '{uid}' and status=0")
  24. if cur is None or cur.rowcount == 0:
  25. cur = db.insert(table="orders", columns=["UserID"], values=f"'{uid}'")
  26. if cur is None:
  27. return None
  28. return cur.lastrowid
  29. assert cur.rowcount == 1
  30. return cur.fetchone()[0]
  31. def write_goods(goods_id: int, quantity: int, order_id: int, db: DB):
  32. cur = db.insert(table="ordergoods",
  33. columns=["OrderID", "GoodsID", "Quantity"],
  34. values=f"{order_id}, {goods_id}, {quantity}")
  35. if cur is None:
  36. return False
  37. assert cur.rowcount == 1
  38. return True
  39. def check_order(order: int, uid: uid_t, db: DB) -> bool:
  40. cur = db.search(columns=["UserID"],
  41. table="orders",
  42. where=[f"OrderID='{order}'", f"UserID='{uid}'"])
  43. if cur is None or cur.rowcount != 1:
  44. return False
  45. uid = cur.fetchone()[0]
  46. if uid != uid:
  47. return False
  48. return True
  49. def get_goods_from_order(order, db: DB) -> Optional[list]:
  50. cur = db.search(columns=["Name", "Quantity"],
  51. table="order_goods_view",
  52. where=f"OrderID = '{order}'")
  53. if cur is None:
  54. return None
  55. return cur.fetchall()
  56. def confirm_order(order: int, uid: uid_t, db: DB) -> bool:
  57. cur = db.search(columns=["OrderID"],
  58. table="orders",
  59. where=[f"OrderID={order}", f"UserID='{uid}'", "Status=0"])
  60. if cur is None or cur.rowcount == 0:
  61. return False
  62. assert cur.rowcount == 1
  63. cur = db.update(table="orders",
  64. kw={"Status": "1"},
  65. where=[f"OrderID={order}", f"UserID='{uid}'", "Status=0"])
  66. if cur is None:
  67. return False
  68. assert cur.rowcount == 1
  69. return True