|
@@ -42,28 +42,46 @@ async def callback(request: fastapi.Request):
|
|
|
def handle_follow(event):
|
|
|
# get user id when follow
|
|
|
real_user_id = event.source.user_id
|
|
|
- rand_num = str(randrange(99999))
|
|
|
- # db connect
|
|
|
+
|
|
|
+ # db connect and search
|
|
|
db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/arkcard?charset=utf8mb4')
|
|
|
table = db['users']
|
|
|
+ table2 = db['nft']
|
|
|
+ result1 = table.find_one(userid=real_user_id)
|
|
|
+ result2 = table2.find_one(userid=real_user_id)
|
|
|
+
|
|
|
+ # 都存在db的話
|
|
|
+ if result1 and result2:
|
|
|
+ db.close()
|
|
|
+ line_bot_api.reply_message(
|
|
|
+ event.reply_token,
|
|
|
+ TextSendMessage(text='很高興再見到您!'))
|
|
|
|
|
|
- print(rand_num)
|
|
|
- user_id = event.source.user_id + rand_num
|
|
|
- result = table.find_one(userid=real_user_id)
|
|
|
+ # 只存在user,新增nft給他
|
|
|
+ elif result1 and not result2:
|
|
|
+ # prepare nft for new follower
|
|
|
+ result3 = table2.find_one(userid=None) or table2.find_one(userid='')
|
|
|
+ result3['userid'] = real_user_id
|
|
|
+ table2.update(dict(result3), ['id'])
|
|
|
|
|
|
- if result:
|
|
|
db.close()
|
|
|
+
|
|
|
line_bot_api.reply_message(
|
|
|
event.reply_token,
|
|
|
TextSendMessage(text='很高興再見到您!'))
|
|
|
|
|
|
- else:
|
|
|
- # create user account
|
|
|
+ # 只存在nft,新加到user
|
|
|
+ elif result2 and not result1:
|
|
|
+ # create user account api
|
|
|
url = 'https://nft-api-staging.joyso.io/api/v1/accounts'
|
|
|
headers = {'Authorization': 'Basic bmZ0OmMxOTEzOWMzYjM3YjdjZWU3ZmY3OTFiZGU3NzdjZWNl'}
|
|
|
+
|
|
|
# setup for temp use (unique id)
|
|
|
+ rand_num = str(randrange(99999))
|
|
|
+ user_id = event.source.user_id + rand_num
|
|
|
data = 'uid=' + user_id
|
|
|
r = requests.post(url=url, headers=headers, data=data)
|
|
|
+
|
|
|
# extract the account address
|
|
|
dict_str = json.loads(r.text)
|
|
|
user_account = dict_str['account']
|
|
@@ -76,16 +94,58 @@ def handle_follow(event):
|
|
|
border=5)
|
|
|
qr.add_data(user_address)
|
|
|
qr.make(fit=True)
|
|
|
+ img_qr = qr.make_image(fill='black', back_color='white')
|
|
|
+ filename = "/var/www/ArkCard-Linebot/ArkCard-web/qrcode/" + real_user_id + '.png'
|
|
|
+ img_save = img_qr.save(filename)
|
|
|
+
|
|
|
+ # add to db
|
|
|
+ data = dict(userid=real_user_id, useraddress=user_address)
|
|
|
+ table.insert(data)
|
|
|
+
|
|
|
+ db.close()
|
|
|
+ line_bot_api.reply_message(
|
|
|
+ event.reply_token,
|
|
|
+ TextSendMessage(text='很高興再見到您!'))
|
|
|
+
|
|
|
+ # 都不存在,兩種都新建
|
|
|
+ else:
|
|
|
+ # create user account api
|
|
|
+ url = 'https://nft-api-staging.joyso.io/api/v1/accounts'
|
|
|
+ headers = {'Authorization': 'Basic bmZ0OmMxOTEzOWMzYjM3YjdjZWU3ZmY3OTFiZGU3NzdjZWNl'}
|
|
|
+
|
|
|
+ # setup for temp use (unique id)
|
|
|
+ rand_num = str(randrange(99999))
|
|
|
+ user_id = event.source.user_id + rand_num
|
|
|
+ data = 'uid=' + user_id
|
|
|
+ r = requests.post(url=url, headers=headers, data=data)
|
|
|
+
|
|
|
+ # extract the account address
|
|
|
+ dict_str = json.loads(r.text)
|
|
|
+ user_account = dict_str['account']
|
|
|
+ user_address = user_account['address']
|
|
|
|
|
|
+ # generate qr code from user id
|
|
|
+ qr = qrcode.QRCode(
|
|
|
+ version=1,
|
|
|
+ box_size=10,
|
|
|
+ border=5)
|
|
|
+ qr.add_data(user_address)
|
|
|
+ qr.make(fit=True)
|
|
|
img_qr = qr.make_image(fill='black', back_color='white')
|
|
|
filename = "/var/www/ArkCard-Linebot/ArkCard-web/qrcode/" + real_user_id + '.png'
|
|
|
img_save = img_qr.save(filename)
|
|
|
|
|
|
# add to db
|
|
|
- result = "/qrcode/"+str(real_user_id)+'.png'
|
|
|
- data = dict(userid=real_user_id, useraddress=user_address, base=result)
|
|
|
+ data = dict(userid=real_user_id, useraddress=user_address)
|
|
|
table.insert(data)
|
|
|
+
|
|
|
+ # prepare nft for new follower
|
|
|
+ result3 = table2.find_one(userid=None) or table2.find_one(userid='')
|
|
|
+ result3['userid'] = real_user_id
|
|
|
+ table2.update(dict(result3), ['id'])
|
|
|
+
|
|
|
db.close()
|
|
|
+
|
|
|
line_bot_api.reply_message(
|
|
|
event.reply_token,
|
|
|
TextSendMessage(text='歡迎加入好友'))
|
|
@@ -241,6 +301,22 @@ def shop(userid):
|
|
|
return rows
|
|
|
db.close()
|
|
|
|
|
|
+# market
|
|
|
+@app.get("/market")
|
|
|
+def market():
|
|
|
+ # db connect
|
|
|
+ db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/arkcard?charset=utf8mb4')
|
|
|
+
|
|
|
+ sql = 'SELECT * FROM arkcard.nft WHERE userid IS NULL OR userid="" LIMIT 10'
|
|
|
+ result = db.query(sql)
|
|
|
+ rows = {}
|
|
|
+ i = 0
|
|
|
+ for row in result:
|
|
|
+ rows[i] = row
|
|
|
+ i += 1
|
|
|
+ return rows
|
|
|
+ db.close()
|
|
|
+
|
|
|
@app.post("/buy")
|
|
|
async def buy(userModel : models.BuyNft):
|
|
|
# db connect
|