main.py 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. from enum import Enum
  2. import time
  3. from datetime import datetime
  4. from typing import Optional
  5. from pydantic import BaseModel
  6. from fastapi import FastAPI, Query, UploadFile, File
  7. import dataset,json
  8. from fastapi import FastAPI
  9. from fastapi.middleware.cors import CORSMiddleware
  10. app = FastAPI()
  11. origins = [
  12. "https://hhh.com.tw"
  13. "http://172.105.205.52",
  14. "http://172.105.205.52:8001",
  15. "http://172.104.93.163",
  16. ]
  17. app.add_middleware(
  18. CORSMiddleware,
  19. # allow_origins=origins,
  20. allow_origins=["*"],
  21. allow_credentials=True,
  22. allow_methods=["*"],
  23. allow_headers=["*"],
  24. )
  25. db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/hhh?charset=utf8mb4')
  26. class deco_request(BaseModel):
  27. id: int
  28. name: str
  29. email: str
  30. phone: str
  31. class deco_request_detail(BaseModel):
  32. id: int
  33. name: str
  34. email: str
  35. phone: str
  36. #detail
  37. loc: str
  38. h_class: str
  39. type: str
  40. budget: str
  41. size: float
  42. bed_num: int
  43. liv_num: int
  44. bath_num: int
  45. style: str
  46. prefer_date: str
  47. time_stamp: str
  48. gender: str
  49. class client_info(BaseModel):
  50. name:str
  51. organization:str
  52. position:str
  53. phone:str
  54. email:str
  55. cert_last5:str
  56. where_learn:str
  57. why_sign:str
  58. @app.get("/deco_request")
  59. async def get_req():
  60. request_table = db['deco_request']
  61. statement = 'SELECT * FROM deco_request'
  62. reqs = []
  63. for req in db.query(statement):
  64. reqs.append({'name':req['name'],'email':req['email'],'phone':req['phone'],'loc':req['loc']
  65. ,'h_class':req['h_class'],'type':req['type'],'budget':req['budget'],'size':req['size'],'bed_num':req['bed_num']
  66. ,'liv_num':req['liv_num'],'bath_num':req['bath_num'],'style':req['style'],'prefer_date':req['prefer_date'],'gender':req.gender})
  67. return reqs
  68. @app.post("/deco_request")
  69. async def create_req(req:deco_request):
  70. request_table = db['deco_request']
  71. time_stamp = datetime.fromtimestamp(time.time())
  72. time_stamp = time_stamp.strftime("%Y-%m-%d %H:%M:%S")
  73. pk = request_table.insert({'name':req.name,'email':req.email,'phone':req.phone,'time_stamp':time_stamp})
  74. req.id = pk
  75. return req
  76. @app.post("/add_client_info")
  77. async def add_client_info(ci:client_info):
  78. request_table = db['client_info']
  79. time_stamp = datetime.fromtimestamp(time.time())
  80. time_stamp = time_stamp.strftime("%Y-%m-%d %H:%M:%S")
  81. pk = request_table.insert({'name':ci.name,'organization':ci.organization,'position':ci.position,'phone':ci.phone,'email':ci.email
  82. ,'cert_last5':ci.cert_last5,'where_learn':ci.where_learn,'why_sign':ci.why_sign,'time_stamp':time_stamp})
  83. return pk
  84. @app.post("/deco_request_detail")
  85. async def create_req_detail(req:deco_request_detail):
  86. statement = 'SELECT * FROM deco_request WHERE email="'+req.email+'"'
  87. email_cnt = 0
  88. for row in db.query(statement):
  89. email_cnt = email_cnt + 1
  90. statement = 'SELECT * FROM deco_request WHERE phone="'+req.phone+'"'
  91. phone_cnt = 0
  92. for row in db.query(statement):
  93. phone_cnt = phone_cnt + 1
  94. return_code = 0
  95. #return code 0=good, 1=email duplication, 2=phone duplication, 3= both duplicate
  96. if email_cnt>0 and phone_cnt==0:
  97. return_code = 1
  98. if email_cnt==0 and phone_cnt>0:
  99. return_code = 2
  100. if email_cnt>0 and phone_cnt>0:
  101. return_code = 3
  102. if return_code ==0 :
  103. request_table = db['deco_request']
  104. time_stamp = datetime.fromtimestamp(time.time())
  105. time_stamp = time_stamp.strftime("%Y-%m-%d %H:%M:%S")
  106. req.time_stamp = time_stamp
  107. pk = request_table.insert({'name':req.name,'email':req.email,'phone':req.phone,'loc':req.loc
  108. ,'h_class':req.h_class,'type':req.type,'budget':req.budget,'size':req.size,'bed_num':req.bed_num
  109. ,'liv_num':req.liv_num,'bath_num':req.bath_num,'style':req.style,'prefer_date':req.prefer_date,'time_stamp':req.time_stamp,'gender':req.gender})
  110. req.id = pk
  111. return return_code
  112. else :
  113. return return_code