1
0

store.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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
  70. def set_goods_quantity(quantity: int, goods_id, db: DB):
  71. cur = db.update(table="goods",
  72. kw={"Quantity": f"{quantity}"},
  73. where=f"GoodsID={goods_id}")
  74. if cur is None or cur.rowcount == 0:
  75. return False
  76. assert cur.rowcount == 1
  77. return True
  78. def set_goods_score(score: score_t, goods_id, db: DB):
  79. cur = db.update(table="goods",
  80. kw={"Score": f"{score}"},
  81. where=f"GoodsID={goods_id}")
  82. if cur is None or cur.rowcount == 0:
  83. return False
  84. assert cur.rowcount == 1
  85. return True
  86. def add_new_goods(name: str, score: score_t, quantity: int, db: DB):
  87. cur = db.insert(table='goods',
  88. columns=["Name", "Quantity", "Score"],
  89. values=f"'{name}', {quantity}, {score}")
  90. if cur is None or cur.rowcount == 0:
  91. return False
  92. assert cur.rowcount == 1
  93. return True