def read_news(session_token, news_id, is_mark): """ 标记/已读 :param session_token: :param news_id: :param is_mark: :return: """ user_id = util.review_auth_token(APP_SECRET, session_token) user = User.query.filter_by(id=user_id).first() if user is None: return jsonify({"result": {"error_code": 1, "msg": 'miss user'}}), 200 news = News.query.filter_by(id=news_id).first() if news is None: return jsonify({"result": {"error_code": 1, "msg": 'miss news'}}), 200 reads = Reads(belongUserId=user_id, newsId=news_id) reads.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) reads.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) db.session.add(reads) db.session.commit() if is_mark == 1: create_marks(session_token=session_token, is_public=True, position_id=news.positionId, goods_id=news.goodsId) return jsonify({"result": {"data": {}, "error_code": 0, "msg": "项目修改成功"}})
def create_space(session_token, name, is_public, avatar, group_id): """ 创建组,并创建一条关联记录 todo check user belong group :param group_id: :param avatar: :param is_public: :param name: :param session_token: :return: """ user_id = util.review_auth_token(APP_SECRET, session_token) user = User.query.filter_by(id=user_id).first() if user is None: return jsonify({"result": {"error_code": 1, "msg": 'miss userk'}}), 200 space = Space(name=name, avatar=avatar, belongGroupId=group_id, belongUserId=user_id, isPublic=is_public) space.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) space.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) db.session.add(space) db.session.commit() return jsonify({"objectId": str(space.id)})
def create_goods(session_token, name, is_public, avatar, coordinate, position_id, type, internal_id=""): """ 创建组,并创建一条关联记录 :param internal_id: :param type: :param position_id: :param coordinate: :param avatar: :param is_public: :param name: :param session_token: :return: """ user_id = util.review_auth_token(APP_SECRET, session_token) user = User.query.filter_by(id=user_id).first() if user is None: return jsonify({"result": {"error_code": 1, "msg": 'miss userk'}}), 200 position = Position.query.filter_by(id=position_id).first() if position is None: return jsonify({"result": { "error_code": 1, "msg": 'miss position' }}), 200 goods = Goods(name=name, avatar=avatar, coordinate=coordinate, belongUserId=user_id, belongGroupId=position.belongGroupId, isPublic=is_public, spaceId=position.spaceId, positionId=position_id, type=type) goods.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) goods.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) db.session.add(goods) db.session.commit() save_news(user, title="", content="", type=1, space_id=goods.spaceId, position_id=goods.positionId, goods_id=goods.id) return jsonify({"objectId": str(goods.id), "__internalId": internal_id})
def create_invite_code(session_token, group_id): """ 创建邀请码 todo 时效性 唯一性 :param session_token: :param group_id: :return: """ user_id = util.review_auth_token(APP_SECRET, session_token) user = User.query.filter_by(id=user_id).first() if user is None: return jsonify({"result": {"error_code": 1, "msg": 'miss user'}}), 200 group = Group.query.filter_by(id=group_id, belongUserId=user_id).first() if group is None: return jsonify({"result": {"error_code": 1, "msg": 'miss group'}}), 200 group.checkCode = str(random.randint(1000, 9999)) group.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) db.session.commit() return jsonify({ "result": { "data": { "checkCode": group.checkCode }, "error_code": 0, "msg": "邀请码创建成功" } })
def modify_user_info(session_token="", first_name="", last_name="", email="", password="", avatar="", default_group_id=-1): """ 修改用户信息接口 """ user_id = util.review_auth_token(APP_SECRET, session_token) user = User.query.filter_by(id=user_id).first() if user is None: return jsonify({'code': 1, 'msg': 'miss user'}) if first_name != "": user.firstName = first_name if last_name != "": user.lastName = last_name if email != "": user.email = email if avatar != "": user.avatar = avatar if password != "": user.password = util.get_md5(password) if default_group_id != -1: user.defaultGroupId = default_group_id user.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) db.session.commit() return jsonify({"result": {"data": {}, "error_code": 0, "msg": "信息修改成功"}})
def update_notes(session_token, todo_id, note, is_public, is_disable): """ 更新一条项目记录 :param is_disable: :param session_token: :param todo_id: :param is_public: :return: """ user_id = util.review_auth_token(APP_SECRET, session_token) user = User.query.filter_by(id=user_id).first() if user is None: return jsonify({"result": {"error_code": 1, "msg": 'miss user'}}), 200 obj = Notes.query.filter_by(id=todo_id, belongUserId=user_id).first() if obj is None: return jsonify({"result": {"error_code": 1, "msg": 'miss group'}}), 200 if note != "": obj.note = note if is_public is not None: obj.isPublic = is_public if is_disable is not None: obj.isDisable = is_disable obj.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) db.session.commit() return jsonify({"result": {"data": {}, "error_code": 0, "msg": "项目修改成功"}})
def update_goods(session_token, todo_id, name, is_public, avatar, desc, is_disable, coordinate): """ 更新一条项目记录 :param session_token: :param todo_id: :param name: :param is_public: :param avatar: :param desc: :return: """ user_id = util.review_auth_token(APP_SECRET, session_token) user = User.query.filter_by(id=user_id).first() if user is None: return jsonify({"result": {"error_code": 1, "msg": 'miss user'}}), 200 goods = Goods.query.filter_by(id=todo_id).first() if goods is None: return jsonify({"result": {"error_code": 1, "msg": 'miss goods'}}), 200 if name != "": goods.name = name if is_public is not None: goods.isPublic = is_public if desc != "": goods.desc = desc if avatar != "": goods.avatar = avatar if coordinate != "": goods.coordinate = coordinate if is_disable is not None: goods.isDisable = is_disable goods.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) db.session.commit() return jsonify({"result": {"data": {}, "error_code": 0, "msg": "项目修改成功"}})
def update_group(session_token, todo_id, name, is_public, avatar, desc, is_disable, belong_user_id): """ 更新一条项目记录 :param session_token: :param todo_id: :param name: :param is_public: :param avatar: :param desc: :return: """ user_id = util.review_auth_token(APP_SECRET, session_token) user = User.query.filter_by(id=user_id).first() if user is None: return jsonify({"result": {"error_code": 1, "msg": 'miss user'}}), 200 group = Group.query.filter_by(id=todo_id, belongUserId=user_id).first() if group is None: return jsonify({"result": {"error_code": 1, "msg": 'miss group'}}), 200 if name != "": group.name = name if is_public is not None: group.isPublic = is_public if avatar != "": group.avatar = avatar if desc != "": group.desc = desc if is_disable is not None: group.isDisable = is_disable if belong_user_id != -1: group.belongUserId = belong_user_id group.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) db.session.commit() return jsonify({"result": {"data": {}, "error_code": 0, "msg": "项目修改成功"}})
def update_space(session_token, todo_id, name, is_public, avatar, is_disable): """ 更新一条项目记录 todo check user belong group :param is_disable: :param session_token: :param todo_id: :param name: :param is_public: :param avatar: :return: """ user_id = util.review_auth_token(APP_SECRET, session_token) user = User.query.filter_by(id=user_id).first() if user is None: return jsonify({"result": {"error_code": 1, "msg": 'miss user'}}), 200 space = Space.query.filter_by(id=todo_id, belongUserId=user_id).first() if space is None: return jsonify({"result": {"error_code": 1, "msg": 'miss space'}}), 200 if name != "": space.name = name if is_public is not None: space.isPublic = is_public if avatar != "": space.avatar = avatar if is_disable is not None: space.isDisable = is_disable space.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) db.session.commit() return jsonify({"result": {"data": {}, "error_code": 0, "msg": "空间修改成功"}})
def create_group(session_token, name, is_public, avatar, desc, return_type="jsonify"): """ 创建组,并创建一条关联记录 :param return_type: :param desc: :param avatar: :param is_public: :param name: :param session_token: :return: """ user_id = util.review_auth_token(APP_SECRET, session_token) user = User.query.filter_by(id=user_id).first() if user is None: return jsonify({"result": {"error_code": 1, "msg": 'miss userk'}}), 200 group = Group(name=name, avatar=avatar, desc=desc, belongUserId=user_id, isPublic=is_public) group.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) group.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) db.session.add(group) db.session.commit() group_user = GroupUser(userId=user_id, groupId=group.id) group_user.isAudit = 1 group_user.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) group_user.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) db.session.add(group_user) db.session.commit() if return_type == "jsonify": return jsonify({"objectId": str(group.id)}) else: return { "result": { "data": { "groupId": group.id }, "error_code": 0, "msg": "项目创建成功" } }
def send_code_by_email(username=""): """ 1.查找用户表指定用户,如无数据则添加一条数据 2.生成4位随机数,发送邮件 :param username: :return: """ user = User.query.filter_by(username=username).first() if user is None: user = User(username=username, email=username) db.session.add(user) user.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) user.checkCode = str(random.randint(1000, 9999)) user.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) db.session.commit() send_email("homekit验证码邮件", "您的验证码为{}".format(user.checkCode), username) return jsonify({"result": {"data": {}, "error_code": 0, "msg": "邮件发送成功"}})
def register( first_name="", last_name="", username="", email="", check_code="", password="", avatar="", ): """ 注册接口 """ user = User.query.filter_by(username=username).first() if user is None: return jsonify({"result": {"error_code": 1, "msg": '验证码不存在'}}), 200 if user.checkCode != check_code: return jsonify({"result": {"error_code": 1, "msg": '验证码不正确'}}), 200 user.checkCode = "" if user.password is not None: return jsonify({"result": {"error_code": 1, "msg": '用户已注册'}}), 200 user.firstName = first_name user.lastName = last_name user.password = util.get_md5(password) user.avatar = avatar user.sessionToken = util.generate_auth_token(APP_SECRET, user.id) user.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) user.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) db.session.commit() ret = create_group(user.sessionToken, "未命名", False, "", "未填写备注", return_type="json") user.defaultGroupId = ret["result"]["data"]["groupId"] db.session.commit() return jsonify({ "result": { "data": { "sessionToken": user.sessionToken }, "error_code": 0, "msg": "注册成功" } })
def create_marks(session_token, is_public, position_id, goods_id): """ 创建组,并创建一条关联记录 :param position_id: :param goods_id: :param is_public: :param session_token: :return: """ user_id = util.review_auth_token(APP_SECRET, session_token) user = User.query.filter_by(id=user_id).first() if user is None: return jsonify({"result": {"error_code": 1, "msg": 'miss userk'}}), 200 position = Position.query.filter_by(id=position_id).first() if position is None: return jsonify({"result": { "error_code": 1, "msg": 'miss position' }}), 200 marks = Marks.query.filter_by(belongUserId=user_id, goodsId=goods_id).first() if marks is not None: return jsonify({"result": {"error_code": 1, "msg": '已经标注过了呢'}}), 200 marks = Marks(belongUserId=user_id, belongGroupId=user.defaultGroupId, spaceId=position.spaceId, positionId=position_id, goodsId=goods_id, isPublic=is_public) marks.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) marks.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) db.session.add(marks) db.session.commit() if goods_id != -1 and goods_id is not None: save_news(user, title="", content="", type=2, space_id=position.spaceId, position_id=position_id, goods_id=goods_id) return jsonify({"objectId": str(marks.id)})
def login(username="", password=""): """ 登录接口 """ user = User.query.filter_by(username=username).first() if user is None: return jsonify({"result": {"error_code": 1, "msg": '验证码不存在'}}), 200 if user.password != util.get_md5(password): return jsonify({"result": {"error_code": 1, "msg": '密码不正确'}}), 200 user.sessionToken = util.generate_auth_token(APP_SECRET, user.id) user.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) db.session.commit() return pack_users_me(user)
def join_group(session_token, check_code): """ 加入组 :param session_token: :param check_code: :return: """ user_id = util.review_auth_token(APP_SECRET, session_token) user = User.query.filter_by(id=user_id).first() if user is None: return jsonify({"result": {"error_code": 1, "msg": 'miss user'}}), 200 group = Group.query.filter_by(checkCode=check_code).first() if group is None: return jsonify({"result": {"error_code": 1, "msg": 'miss group'}}), 200 group_user = GroupUser.query.filter_by( userId=user_id, groupId=group.id).filter(GroupUser.isDisable == 0).first() if group_user: return jsonify( {"result": { "error_code": 1, "msg": 'you have been joined' }}), 200 else: group_user = GroupUser(userId=user_id, groupId=group.id) group_user.createdAt = util.get_mysql_datetime_from_iso( util.get_iso8601()) group_user.updatedAt = util.get_mysql_datetime_from_iso( util.get_iso8601()) group_user.isAudit = 0 db.session.add(group_user) group.checkCode = "" db.session.commit() return jsonify( {"result": { "data": {}, "error_code": 0, "msg": "项目加入成功" }})
def create_notes(session_token, note, is_public, goods_id): """ 创建组,并创建一条关联记录 :param goods_id: :param note: :param is_public: :param session_token: :return: """ user_id = util.review_auth_token(APP_SECRET, session_token) user = User.query.filter_by(id=user_id).first() if user is None: return jsonify({"result": {"error_code": 1, "msg": 'miss userk'}}), 200 goods = Goods.query.filter_by(id=goods_id).first() if goods is None: return jsonify({"result": { "error_code": 1, "msg": 'miss position' }}), 200 notes = Notes(note=note, belongUserId=user_id, belongGroupId=user.defaultGroupId, spaceId=goods.spaceId, positionId=goods.positionId, goodsId=goods_id, isPublic=is_public) notes.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) notes.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) db.session.add(notes) db.session.commit() save_news(user, title="", content=note, type=3, space_id=goods.spaceId, position_id=goods.positionId, goods_id=goods_id) return jsonify({"objectId": str(notes.id)})
def create_position(session_token, name, is_public, avatar, space_id, coordinate): """ 创建组,并创建一条关联记录 :param desc: :param avatar: :param is_public: :param name: :param session_token: :return: """ user_id = util.review_auth_token(APP_SECRET, session_token) user = User.query.filter_by(id=user_id).first() if user is None: return jsonify({"result": {"error_code": 1, "msg": 'miss userk'}}), 200 space = Space.query.filter_by(id=space_id).first() if space is None: return jsonify({"result": {"error_code": 1, "msg": 'miss space'}}), 200 position = Position(name=name, avatar=avatar, coordinate=coordinate, belongUserId=user_id, belongGroupId=space.belongGroupId, isPublic=is_public, spaceId=space_id) position.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) position.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) db.session.add(position) db.session.commit() save_news(user, title="", content="", type=4, space_id=position.spaceId, position_id=position.id, goods_id=-1) return jsonify({"objectId": str(position.id)})
def reset_password(username="", check_code="", password=""): """ 重置密码接口 """ user = User.query.filter_by(username=username).first() if user is None: return jsonify({"result": {"error_code": 1, "msg": '验证码不存在'}}), 200 if user.checkCode != check_code: return jsonify({"result": {"error_code": 1, "msg": '验证码不正确'}}), 200 user.checkCode = "" if user.password is None: return jsonify({"result": {"error_code": 1, "msg": '用户尚未注册'}}), 200 user.password = util.get_md5(password) user.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) db.session.commit() return jsonify({"result": {"data": {}, "error_code": 0, "msg": "密码重置成功"}})
def update_group_user(session_token, todo_id, is_disable, is_audit): user_id = util.review_auth_token(APP_SECRET, session_token) user = User.query.filter_by(id=user_id).first() if user is None: return jsonify({"result": {"error_code": 1, "msg": 'miss user'}}), 200 group_user = GroupUser.query.filter_by(id=todo_id).first() if group_user is None: return jsonify({"result": { "error_code": 1, "msg": 'miss group_user' }}), 200 if is_disable is not None: group_user.isDisable = is_disable if is_audit is not None: print(is_audit) print(group_user.isAudit) group_user.isAudit = is_audit print(group_user.isAudit) group_user.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) db.session.commit() return jsonify({"result": {"data": {}, "error_code": 0, "msg": "项目修改成功"}})
def update_position(session_token, todo_id, name, is_public, avatar, coordinate, is_disable): """ 更新一条项目记录 :param is_disable: :param session_token: :param todo_id: :param name: :param is_public: :param avatar: :param coordinate: :return: """ user_id = util.review_auth_token(APP_SECRET, session_token) user = User.query.filter_by(id=user_id).first() if user is None: return jsonify({"result": {"error_code": 1, "msg": 'miss user'}}), 200 position = Position.query.filter_by(id=todo_id, belongUserId=user_id).first() if position is None: return jsonify({"result": { "error_code": 1, "msg": 'miss position' }}), 200 if name != "": position.name = name if is_public is not None: position.isPublic = is_public if avatar != "": position.avatar = avatar if coordinate != "": position.coordinate = coordinate if is_disable is not None: position.isDisable = is_disable position.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) db.session.commit() return jsonify({"result": {"data": {}, "error_code": 0, "msg": "项目修改成功"}})
def save_news(user, title="", content="", type=1, space_id=-1, position_id=-1, goods_id=-1): """ type 1 添加物品 2 标记物品 3 备注 :param user: :param title: :param content: :param type: :param space_id: :param position_id: :param goods_id: :return: """ space = Space.query.filter_by(id=space_id).first() if space is None: return jsonify({"result": {"error_code": 1, "msg": 'miss space'}}), 200 position = Position.query.filter_by(id=position_id).first() if position is None: return jsonify({"result": { "error_code": 1, "msg": 'miss position' }}), 200 goods = Goods.query.filter_by(id=goods_id).first() if goods_id != -1 and space is None: return jsonify({"result": {"error_code": 1, "msg": 'miss goods'}}), 200 avatar = "" if type == 1: title = "{} 在 #{}/{} 添加了{}".format(user.lastName + user.firstName, space.name, position.name, goods.name) avatar = goods.avatar elif type == 2: title = "{} 标记了{}".format(user.lastName + user.firstName, goods.name) avatar = goods.avatar elif type == 3: title = "{} 添加了备注".format(user.lastName + user.firstName) avatar = goods.avatar elif type == 4: title = "{} 在 #{} 添加了{}".format(user.lastName + user.firstName, space.name, position.name) avatar = space.avatar news = News(title=title, content=content, type=type, belongUserId=user.id, belongGroupId=space.belongGroupId, spaceId=space_id, positionId=position_id, goodsId=goods_id, avatar=avatar) news.createdAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) news.updatedAt = util.get_mysql_datetime_from_iso(util.get_iso8601()) db.session.add(news) db.session.commit()