|  | @@ -14,7 +14,9 @@ from PIL import Image
 | 
											
												
													
														|  |  import base64, io
 |  |  import base64, io
 | 
											
												
													
														|  |  from random import randrange
 |  |  from random import randrange
 | 
											
												
													
														|  |  import models
 |  |  import models
 | 
											
												
													
														|  | 
 |  | +import time
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +time = time.ctime()
 | 
											
												
													
														|  |  app = fastapi.FastAPI()
 |  |  app = fastapi.FastAPI()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  app.add_middleware(
 |  |  app.add_middleware(
 | 
											
										
											
												
													
														|  | @@ -171,41 +173,32 @@ def message(event):
 | 
											
												
													
														|  |  def collection(userid):
 |  |  def collection(userid):
 | 
											
												
													
														|  |      # db connect
 |  |      # db connect
 | 
											
												
													
														|  |      db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/arkcard?charset=utf8mb4')
 |  |      db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/arkcard?charset=utf8mb4')
 | 
											
												
													
														|  | -    table2 = db['nft']
 |  | 
 | 
											
												
													
														|  |      table3 = db['nftdrops']
 |  |      table3 = db['nftdrops']
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | 
 |  | +    table2 = db['nft']
 | 
											
												
													
														|  | 
 |  | +    nftdrops = {}
 | 
											
												
													
														|  |      nft = {}
 |  |      nft = {}
 | 
											
												
													
														|  | -    nft1 = {}
 |  | 
 | 
											
												
													
														|  | 
 |  | +    nfts_all = {}
 | 
											
												
													
														|  |      i = 0
 |  |      i = 0
 | 
											
												
													
														|  | -    if table3.find_one(userid=userid) and table2.find_one(userid=userid):
 |  | 
 | 
											
												
													
														|  | -        results1 = table3.find_one(userid=userid)
 |  | 
 | 
											
												
													
														|  | -        results2 = table2.find(userid=userid)
 |  | 
 | 
											
												
													
														|  | -        nft[0] = results1
 |  | 
 | 
											
												
													
														|  | -        for row in results2:
 |  | 
 | 
											
												
													
														|  | -            nft1[i] = row
 |  | 
 | 
											
												
													
														|  | -            i += 1
 |  | 
 | 
											
												
													
														|  | -        nft[1] = nft1
 |  | 
 | 
											
												
													
														|  | -        return nft
 |  | 
 | 
											
												
													
														|  | 
 |  | +    if not table3.find_one(userid=userid) and not table2.find_one(userid=userid):
 | 
											
												
													
														|  |          db.close()
 |  |          db.close()
 | 
											
												
													
														|  | 
 |  | +        return "error: user don't have any nft"
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    elif table3.find_one(userid=userid) and not table2.find_one(userid=userid):
 |  | 
 | 
											
												
													
														|  | -        results1 = table3.find_one(userid=userid)
 |  | 
 | 
											
												
													
														|  | -        nft[0] = results1
 |  | 
 | 
											
												
													
														|  | -        return nft
 |  | 
 | 
											
												
													
														|  | -        db.close()
 |  | 
 | 
											
												
													
														|  | 
 |  | +    else:
 | 
											
												
													
														|  | 
 |  | +        results1 = table3.find(userid=userid)
 | 
											
												
													
														|  | 
 |  | +        for item in results1:
 | 
											
												
													
														|  | 
 |  | +            nftdrops[i] = item
 | 
											
												
													
														|  | 
 |  | +            i += 1
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    elif table2.find_one(userid=userid) and not table3.find_one(userid=userid):
 |  | 
 | 
											
												
													
														|  |          results2 = table2.find(userid=userid)
 |  |          results2 = table2.find(userid=userid)
 | 
											
												
													
														|  | -        for row in results2:
 |  | 
 | 
											
												
													
														|  | -            nft1[i] = row
 |  | 
 | 
											
												
													
														|  | 
 |  | +        for item in results2:
 | 
											
												
													
														|  | 
 |  | +            nft[i] = item
 | 
											
												
													
														|  |              i += 1
 |  |              i += 1
 | 
											
												
													
														|  | -        nft[1] = nft1
 |  | 
 | 
											
												
													
														|  | -        return nft
 |  | 
 | 
											
												
													
														|  | -        db.close()
 |  | 
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    else:
 |  | 
 | 
											
												
													
														|  | 
 |  | +        nfts_all[0] = nftdrops
 | 
											
												
													
														|  | 
 |  | +        nfts_all[1] = nft
 | 
											
												
													
														|  | 
 |  | +        return nfts_all
 | 
											
												
													
														|  |          db.close()
 |  |          db.close()
 | 
											
												
													
														|  | -        print("error: user don't have any nft")
 |  | 
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |      db.close()
 |  |      db.close()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  # receive handler
 |  |  # receive handler
 | 
											
										
											
												
													
														|  | @@ -294,18 +287,20 @@ async def nftdrops(userModel : models.NftDrops):
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      # input對應
 |  |      # input對應
 | 
											
												
													
														|  |      userid = userModel.userid
 |  |      userid = userModel.userid
 | 
											
												
													
														|  | 
 |  | +    email = userModel.email
 | 
											
												
													
														|  | 
 |  | +    eventid = '1'
 | 
											
												
													
														|  | 
 |  | +    nftid = '101'
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      # 如果userid不在db, 寫入到一個空值nft
 |  |      # 如果userid不在db, 寫入到一個空值nft
 | 
											
												
													
														|  |      if not table3.find_one(userid=userid):
 |  |      if not table3.find_one(userid=userid):
 | 
											
												
													
														|  | -        sql = 'UPDATE arkcard.nftdrops SET userid="' + userid + '" WHERE userid IS NULL OR userid ="" LIMIT 1'
 |  | 
 | 
											
												
													
														|  | -        result = db.query(sql)
 |  | 
 | 
											
												
													
														|  | 
 |  | +        # 新增資料
 | 
											
												
													
														|  | 
 |  | +        table3.insert(dict(eventid=eventid, nftid=nftid, userid=userid, email=email, time=time))
 | 
											
												
													
														|  |          db.close()
 |  |          db.close()
 | 
											
												
													
														|  | -        return "「火」通行證已送出"
 |  | 
 | 
											
												
													
														|  | 
 |  | +        return "新增成功"
 | 
											
												
													
														|  |      # 如果userid存在,回傳通知
 |  |      # 如果userid存在,回傳通知
 | 
											
												
													
														|  |      else:
 |  |      else:
 | 
											
												
													
														|  |          db.close()
 |  |          db.close()
 | 
											
												
													
														|  | -        return "您已收藏過「火」通行證"
 |  | 
 | 
											
												
													
														|  | -    db.close()
 |  | 
 | 
											
												
													
														|  | 
 |  | +        return "已有資料"
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  if __name__ == '__main__':
 |  |  if __name__ == '__main__':
 | 
											
												
													
														|  |      uvicorn.run("main:app", host="0.0.0.0", port=8228, reload=True,ssl_context=('/etc/letsencrypt/live/ark.cards/fullchain.pem', '/etc/letsencrypt/live/ark.cards/privkey.pem'))
 |  |      uvicorn.run("main:app", host="0.0.0.0", port=8228, reload=True,ssl_context=('/etc/letsencrypt/live/ark.cards/fullchain.pem', '/etc/letsencrypt/live/ark.cards/privkey.pem'))
 |