2222

from bson import ObjectId
from flask import Blueprint, request, jsonifyjson

from setting import MDB, RETflask

devices_bp = Blueprint("devices_bp", name)app

@devices_bp.route("/scan_qr", methods=["POST"])
def scan_qr():
# 掃碼綁定
# 1.掃描成功,沒有綁定 開啓綁定
# 2.掃碼失敗,未受權
# 3.掃碼成功,已經綁定 ?添加好友
device_key = request.form.to_dict()
device = MDB.Devices.find_one(device_key)
if device:
# 1.掃描成功,沒有綁定 開啓綁定
RET["CODE"] = 0
RET["MSG"] = "識別玩具成功"
RET["DATA"] = device_keycode

else:
    # 2.掃碼失敗, 未受權 受權庫沒有此條碼
    RET["CODE"] = 1
    RET["MSG"] = "請不要瞎JB亂掃"
    RET["DATA"] = {}

# // 3.蜜汁邏輯
# 二維碼掃描成功, 但設備已經進行綁定
# {
#     "code": 2,
#     "msg": "設備已經進行綁定",
#     "data":
#         {
#             "toy_id": toy_id
#         }
# }

return jsonify(RET)

@devices_bp.route("/bind_toy", methods=["POST"])
def bind_toy():
toy_info = request.form.to_dict()
user_id = toy_info.pop("user_id")orm

user_info = MDB.Users.find_one({"_id": ObjectId(user_id)})  # 查詢user_info

# 建立一個Chats
chat_id = MDB.Chats.insert_one({"user_list": [], "chat_list": []})

# 1.建立toy
toy_info["avatar"] = "toy.jpg"
toy_info["friend_list"] = []
toy_info["bind_user"] = user_id
# toy_info[bind_user]? 這個值怎麼得到?
# toy_id = MDB.Toys.insert_one(toy_info) 暫時不建立toy
# 2.toy有了app的綁定對象, app的綁定toy對象是誰呢?
# 在 Users 數據中的 bind_toys 列表 加入 toy 綁定對象的_id字符串
# MDB.Users.update_one({}, {"$push": {"bind_toys": str(toy_id.inserted_id)}}) 暫時不建立
# 3.將toy和app 交換名片
# 創建一個移動端好友關係是爲了 即便通信 IM 基於通信錄的
# 給玩具增長第一個好友 app
toy_add_user = {
                   "friend_id": user_id,  # app id
                   "friend_nick": user_info.get("nickname"),  # user 暱稱
                   "friend_remark": toy_info.pop("remark"),  # remark在哪裏呢?
                   "friend_avatar": user_info.get("avatar"),  # user有頭像嗎?
                   "friend_chat": str(chat_id.inserted_id),
                   # 私聊窗口ID 聊天數據表對應值 ---- Q寵大樂鬥 戰鬥記錄
                   # """
                   # {
                   #     player_list:["P1","P2"],
                   #     Battle_list:[
                   #         {
                   #             acter:"P1",
                   #             defer:"P2",
                   #             info:"1232132131232131231",
                   #             ctime:2019.7.22
                   #         }
                   #     ]
                   # }
                   # """
                   # 那麼問題來了,這個位置要存儲一個Id ,是Chats數據表中的一條數據的Id
                   # 1.先建立 Chats 數據 能夠得到ObjectId這個Id轉化爲字符串能夠存儲在 friend_chat
                   # 弊端 - player_list 中缺乏 Toy_id 由於Toy還未建立完成

                   # 2.先空着 friend_chat 優先建立 Toy 得到 Toy_id
                   # 當user_id 遇到 Toy_id 就能夠去建立 Chats ,player_list=[user_id,Toy_id]
                   # 再回到 Toys中 修改 friend_id == user_id 這條數據的 friend_chat
                   "friend_type": "app"  # 好友的用戶類型 app / toy
               },

toy_info["friend_list"].append(toy_add_user)
toy_id = MDB.Toys.insert_one(toy_info)

# 一我的沒法決定兩人的關係 app 也要同時 增長toy爲好友

user_add_toy = {
    "friend_id": toy_id.inserted_id,  # toy_id str
    "friend_nick": toy_info.get("baby_name"),  # baby_name
    "friend_remark": toy_info.get("toy_name"),  # toy_name
    "friend_avatar": "toy.jpg",  # 阿凡達
    "friend_chat": str(chat_id.inserted_id),  # chat_id
    "friend_type": "toy"  # 好友的類型 toy
}

user_info["bind_toys"].append(str(toy_id.inserted_id))
user_info["friend_list"].append(user_add_toy)

# 修改 Users 的所有數據
MDB.Users.update_one({"_id": ObjectId(user_id)}, {"$set": user_info})

# Chats 數據也會變化 user_list player_list 將 toy_id  和 user_id 加入
MDB.Chats.update_one({"_id":chat_id.inserted_id}, {"$set": {"user_list": [user_id,str(toy_id.inserted_id)]}})

RET["CODE"] = 0
RET["MSG"] = "綁定完成"
RET["DATA"] = {}

return jsonify(RET)

@devices_bp.route("/toy_list", methods=["POST"])
def toy_list():
bind_user = request.form.get("_id")
toyl = list(MDB.Toys.find({"bind_user":bind_user}))對象

for toy in toyl:
    toy["_id"] = str(toy.get("_id"))

RET["CODE"] = 0
RET["MSG"] = "獲取Toy列表"
RET["DATA"] = toyl

return jsonify(RET)
相關文章
相關標籤/搜索