示例#1
0
 def register(self, params):
     userData = Users().getOne({Users.email == params['email']})
     if (userData == None):
         #昵称首字母
         isChinese = re.compile(u"[\u4e00-\u9fa5]+")
         isEnglish = re.compile('[a-zA-Z]')
         nickNameFirstWord = params['nickName'][0]
         if isChinese.search(nickNameFirstWord):
             first_word = Pinyin().get_initial(nickNameFirstWord)
         elif isEnglish.search(nickNameFirstWord):
             first_word = nickNameFirstWord.upper()
         else:
             first_word = '#'
         data = {
             'email': params['email'],
             'password': Users.set_password(params['password']),
             'nick_name': params['nickName'],
             'head_img': params['headImg'],
             'first_word': first_word,
             'created_at': time.time(),
             'updated_at': time.time()
         }
         user = Users().add(data)
         if user == False:
             return Utils.formatError(Code.BAD_REQUEST, '注册失败')
         else:
             result = UsersAuthJWT.authenticate(params['email'],
                                                params['password'])
             return result
         return Utils.formatError(Code.BAD_REQUEST, '注册失败')
     return Utils.formatError(Code.BAD_REQUEST, '账号已注册')
示例#2
0
 def authenticate(email, password):
     """
     用户登录,登录成功返回token,写将登录时间写入数据库;登录失败返回失败原因
     :param password:
     :return: json
     """
     userInfo = Users().getOne(
         {Users.email == email}, 'id desc',
         ('email', 'password', 'id', 'nick_name', 'head_img'))
     if (userInfo is None):
         return Utils.formatError(Code.BAD_REQUEST, '找不到用户')
     else:
         if (Users.check_password(userInfo['password'], password)):
             updated_at = int(time.time())
             Users().edit({'updated_at': updated_at},
                          {Users.email == email})
             token = UsersAuthJWT.encode_auth_token(userInfo['id'],
                                                    updated_at)
             userInfo.pop('password')  #删除密码
             return Utils.formatBody(
                 {
                     'token': token.decode(),
                     'user': userInfo
                 }, '登陆成功')
         else:
             return Utils.formatError(Code.BAD_REQUEST, '密码不正确')
示例#3
0
def register(params):
    ''' 注册 '''
    filters = {Users.email == params['email']}
    userData = Users().getOne(filters)
    if (userData == None):
        user = Users(email=params['email'],
                     password=Users.set_password(params['password']),
                     status=1)
        status = user.add(user)
        if status == True:
            return BaseController().successData(msg='注册成功')
        return BaseController().error('注册失败')
    return BaseController().error('账号已注册')
示例#4
0
 def groupChatCreate(self, user_info, params):
     """ 
         创建聊天群组
         @Param dict userInfo
         @param dict params
         @return bool
     """
     room_uuid = Utils.unique_id()
     name = ''
     now_item = int(time.time())
     for id in params['ids']:
         user_data = Users().getOne({Users.id == id})
         name = name + ',' + user_data['nick_name']
         userRoomRelationData = {
             'user_id': id,
             'room_uuid': room_uuid,
             'is_alert': 0,
             'unread_number': 0,
             'updated_at': now_item,
             'created_at': now_item
         }
         UserRoomRelation().add(userRoomRelationData)
     room_data = {
         'room_uuid': room_uuid,
         'last_msg': '',
         'type': 1,
         'updated_at': now_item,
         'created_at': now_item,
         'name': name.strip(','),
         'user_id': user_info['data']['id']
     }
     room = Room().addByClass(room_data)
     return {'room_uuid': room_uuid}
示例#5
0
def adminUserList(*args, **kwargs):
    """ 获取用户列表 """
    params = kwargs['params']
    filters = {Users.nick_name.like('%' + params['keyword'] + '%')}
    data = Users().getList(filters, Users.updated_at.desc(), (),
                           params['page_no'], params['per_page'])
    return BaseController().successData(data)
示例#6
0
 def identify(self, auth_header):
     """
     用户鉴权
     :return: list
     """
     if (auth_header):
         auth_tokenArr = auth_header.split(" ")
         if (not auth_tokenArr or auth_tokenArr[0] != 'JWT'
                 or len(auth_tokenArr) != 2):
             return '请传递正确的验证头信息'
         else:
             auth_token = auth_tokenArr[1]
             payload = self.decode_auth_token(auth_token)
             if not isinstance(payload, str):
                 user = Users().getOne({Users.id == payload['data']['id']})
                 if (user is None):
                     return '找不到该用户信息'
                 else:
                     if (user['updated_at'] == payload['data']['updated_at']):
                         result = payload
                     else:
                         return '令牌失效'
             else:
                 result = payload
     else:
         return '没有提供认证令牌'
     return result
 def beg(params, user_info):
     if user_info['data']['id'] == params['be_focused_user_id']:
         return Utils.formatError(CONST['CODE']['BAD_REQUEST']['value'],
                                  '无法添加自己为新朋友')
     addressBookdata = AddressBook.getAdddressBookByFocusedUserId(
         user_info['data']['id'], params['be_focused_user_id'])
     if addressBookdata != None:
         return Utils.formatError(CONST['CODE']['BAD_REQUEST']['value'],
                                  '已添加')
     msg_uuid = Utils.unique_id()
     userData = Users().getOne({Users.id == user_info['data']['id']})
     data = {
         'data': userData,
         'action': 'beg_add',
         'msg_uuid': msg_uuid,
         'be_focused_user_id': params['be_focused_user_id'],
         'focused_user_id': user_info['data']['id']
     }
     socketio.emit('beg',
                   Utils.formatBody(data),
                   namespace='/api',
                   room='@broadcast.' +
                   str(params['be_focused_user_id']))  #,callback=success)
     #只缓存最新的一条
     cache.set('@broadcast.beg' + str(params['be_focused_user_id']), data)
     return Utils.formatBody({}, msg='发送成功')
示例#8
0
 def search(params):
     filters = {
         Users.nick_name.like('%' + params['keywords'] + '%')
         | Users.email.like('%' + params['keywords'] + '%')
     }
     userList = Users().getAll(filters)
     data = {"userList": userList}
     return Utils.formatBody(data)
示例#9
0
def adminUserList(*args, **kwargs):
    """ 获取用户列表 """
    params = kwargs['params']
    if params['keyword'] != '':
        filters = {Users.nick_name.like('%' + params['keyword'] + '%')}
    else:
        filters = set()
    data = Users().getList(filters, params['orderBy'] + " " + params['order'],
                           (), params['page_no'], params['per_page'])
    return BaseController().successData(data)
 def authenticate(email, password):
     """
     用户登录,登录成功返回token,写将登录时间写入数据库;登录失败返回失败原因
     :param password:
     :return: json
     """
     filters = {
         Users.email == email
     }
     userInfo = Users().getOne(filters)
     userInfoPas = Users().getOne(filters, order = 'id desc', field = ('password',))
     if(userInfo is None):
         return BaseController().error('找不到用户')
     else:
         if (Users.check_password(userInfoPas['password'], password)):
             updated_at = int(time.time())
             Users.update(email, updated_at)
             token = UsersAuthJWT.encode_auth_token(userInfo['id'], updated_at)
             return BaseController().successData({'token': token.decode(), 'user': userInfo}, '登陆成功')
         else:
             return BaseController().error('密码不正确')
示例#11
0
 def register(params):
     userData = Users().getOne({Users.email == params['email']})
     if (userData == None):
         #昵称首字母
         isChinese = re.compile(u"[\u4e00-\u9fa5]+")
         isEnglish = re.compile('[a-zA-Z]')
         nickNameFirstWord = params['nickName'][0]
         nowTime = time.time()
         if isChinese.search(nickNameFirstWord):
             first_word = Pinyin().get_initial(nickNameFirstWord)
         elif isEnglish.search(nickNameFirstWord):
             first_word = nickNameFirstWord.upper()
         else:
             first_word = '#'
         data = {
             'email': params['email'],
             'password': Users.set_password(params['password']),
             'nick_name': params['nickName'],
             'head_img': params['headImg'],
             'first_word': first_word,
             'created_at': nowTime,
             'updated_at': nowTime
         }
         user = Users().add(data)
         if user == False:
             return Utils.formatError(CONST['CODE']['BAD_REQUEST']['value'],
                                      '注册失败')
         else:
             result = UsersAuthJWT.authenticate(params['email'],
                                                params['password'])
             # 发送延时推广进群广告
             invite = Invite()
             invite.setAction("invite")
             invite.setId(result['data']['user']['id'])
             # 延时2分钟推送
             delayQueue.product(invite.__dict__, 120)
             return result
     return Utils.formatError(CONST['CODE']['BAD_REQUEST']['value'],
                              '账号已注册')
示例#12
0
def adminIndex(user_info):
    #获取管理用户总数
    admins = Admin().getCount({})
    #获取注册用户总数
    users = Users().getCount({})
    #获取房间总数
    rooms = Room().getCount({})
    #一周管理用户注册数量
    weekAdminData = Admin().getWeekData()
    #一周注册用户注册数量
    weekUsersData = Users().getWeekData()
    #一周房间总数
    weekRoomData = Room().getWeekData()
    data = {
        'panelGroupData': {
            'adminCount': admins,
            'usersCount': users,
            'roomCount': rooms
        },
        'weekAdminData': weekAdminData,
        'weekUsersData': weekUsersData,
        'weekRoomData': weekRoomData
    }
    return BaseController().successData(data)
示例#13
0
def addressBookBeg(params):
    if params['focused_user_id'] == params['be_focused_user_id']:
        return BaseController().error(msg='无法添加自己为新朋友')
    addressBookdata = AddressBook.getAdddressBookByFocusedUserId(params['focused_user_id'], params['be_focused_user_id'])
    if addressBookdata != None:
        return BaseController().error(msg='已添加')
    msg_uuid = Utils.unique_id()
    userData = Users().getOne({Users.id == params['focused_user_id']})
    socketio.emit('beg', Utils.formatBody({
        'data':userData, 
        'action':'beg_add', 
        'msg_uuid': msg_uuid, 
        'be_focused_user_id': params['be_focused_user_id']
    }), namespace='/room', room='@broadcast.'+str(params['be_focused_user_id']), callback=success)
    return BaseController().successData(msg='发送成功')
示例#14
0
 def chat(message, user_info):
     """
         @param  dict message
         @param  dict user_info
         @return dict 
     """
     msg = message['data']['msg']
     room_uuid = message['data']['room_uuid']
     Type = message['data']['type']
     room_data = Room.get(room_uuid)
     if room_data == None:
         return Utils.formatError(CONST['CODE']['ROOM_NO_EXIST']['value'], "房间不存在")
     room_type = room_data.type
     created_at = message['data']['created_at']
     save_action = message['data']['save_action']
     user_data = Users().getOne({Users.id == user_info['data']['id']})
     return ChatService.sendChatMessage(msg, room_uuid, Type, room_data, room_type, created_at, save_action, user_data)
 def add(params, user_info):
     ''' 添加通讯录 '''
     if params['focused_user_id'] == user_info['data']['id']:
         return Utils.formatError(CONST['CODE']['BAD_REQUEST']['value'],
                                  msg='无法添加自己为新朋友')
     filters = {
         AddressBook.focused_user_id == params['focused_user_id'],
         AddressBook.be_focused_user_id == user_info['data']['id']
     }
     addressBookData = AddressBook().getOne(filters)
     if (addressBookData == None):
         # 加入房间号
         room_uuid = Utils.unique_id()
         # 建立通讯录关系
         status = AddressBook.addRoomAndAddressBook(
             room_uuid, params['focused_user_id'], user_info['data']['id'])
         if status == False:
             return Utils.formatError(CONST['CODE']['BAD_REQUEST']['value'],
                                      msg='添加失败')
         userData = Users().getOne({Users.id == user_info['data']['id']})
         #回复被添加用户
         socketio.emit('beg',
                       Utils.formatBody({
                           'action':
                           'beg_add_success',
                           'focused_user_id':
                           user_info['data']['id'],
                           'nick_name':
                           userData['nick_name']
                       }),
                       namespace='/api',
                       room='@broadcast.' + str(params['focused_user_id']))
         #添加后同步房间
         addressBookData = AddressBook.get(room_uuid)
         for item in addressBookData:
             roomList = AddressBook.getRoomList(
                 item.be_focused_user_id)['list']
             socketio.emit('room',
                           Utils.formatBody(roomList),
                           namespace="/api",
                           room='@broadcast.' +
                           str(item.be_focused_user_id))
         return Utils.formatBody({}, msg='添加成功')
     return Utils.formatError(CONST['CODE']['BAD_REQUEST']['value'],
                              msg='已添加')
示例#16
0
 def groupChatCreate(params, user_info):
     """ 
         创建聊天群组,userInfo.id是群主
         @Param dict userInfo
         @param dict params
         @return bool
     """
     room_uuid = Utils.unique_id()
     name = ''
     userRoomRelationData = {
             'user_id': user_info['data']['id'],
             'room_uuid': room_uuid,
             'is_alert': 0,
             'unread_number': 0,
             'type':CONST['GROUP']['MASTER']['value']
         }
     UserRoomRelation().add(userRoomRelationData)
     for id in params['ids']:
         user_data = Users().getOne({Users.id == id})
         name = name + ',' + user_data['nick_name']
         userRoomRelationData = {
             'user_id': id,
             'room_uuid': room_uuid,
             'is_alert': 0,
             'unread_number': 0
         }
         UserRoomRelation().add(userRoomRelationData)
     room_data = {
         'room_uuid': room_uuid,
         'last_msg': '',
         'type': CONST['CHAT']['TEXT']['value'],
         'name': name.strip(','),
         'user_id': user_info['data']['id']
     }
     Room().addByClass(room_data)
     return {'room_uuid': room_uuid, 'name': name.strip(',')}
示例#17
0
 def getByNickName(self, keywords):
     filters = {Users.nick_name.like('%' + keywords + '%')}
     userList = Users().getAll(filters)
     data = {"userList": userList}
     return data
示例#18
0
def getInfo():
    id = request.json.get('id')
    filters = {Users.id == id}
    data = Users().getOne(filters)
    return BaseController().successData(data)
示例#19
0
 def edit(data, filters):
     status = Users().edit(data, filters)
     return status
示例#20
0
 def get(params, user_info):
     #鉴权
     user_data = Users().getOne({Users.id == user_info['data']['id']})
     return Utils.formatBody(user_data)
示例#21
0
def adminUserDelete(*args, **kwargs):
    """ 删除用户 """
    params = kwargs['params']
    filters = {Users.id == params['id']}
    Users().delete(filters)
    return BaseController().successData()
示例#22
0
 def chat(self, message, user_info):
     """
         @param  dict message
         @param  dict user_info
         @return dict 
     """
     msg = message['data']['msg']
     room_uuid = message['data']['room_uuid']
     Type = message['data']['type']
     room_data = Room.get(room_uuid)
     room_type = room_data.type
     created_at = message['data']['created_at']
     user_data = Users().getOne({Users.id == user_info['data']['id']})
     if room_data != None and room_type == 0:
         address_book_data = AddressBook.get(room_uuid)
         #发送消息
         emit('chat',
              Utils.formatBody({
                  'msg': msg,
                  'name': user_data['nick_name'],
                  'user_id': user_data['id'],
                  'type': Type,
                  'head_img': user_data['head_img'],
                  'room_uuid': room_uuid,
                  'created_at': created_at
              }),
              room=room_uuid)
         #聊天时同步房间信息
         Room.updateLastMsgRoom(room_uuid, msg)
         #更新聊天提示数字
         AddressBook.updateUnreadNumber(room_uuid, user_data['id'])
         AddressBook.cleanUnreadNumber(room_uuid, user_data['id'])
         #更新客户端房间信息
         for item in address_book_data:
             roomList = AddressBook.getRoomList(
                 item.be_focused_user_id)['data']
             socketio.emit('room',
                           Utils.formatBody(roomList),
                           namespace='/room',
                           room='@broadcast.' +
                           str(item.be_focused_user_id))
     elif room_data != None and room_type == 1:
         user_room_relation_data = UserRoomRelation.get(room_uuid)
         #发送消息
         emit('chat',
              Utils.formatBody({
                  'msg': msg,
                  'name': user_data['nick_name'],
                  'user_id': user_data['id'],
                  'type': Type,
                  'head_img': user_data['head_img'],
                  'room_uuid': room_uuid,
                  'created_at': created_at
              }),
              room=room_uuid)
         #聊天时同步房间信息
         Room.updateLastMsgRoom(room_uuid, msg)
         #更新聊天提示数字
         UserRoomRelation.updateUnreadNumber(room_uuid, user_data['id'])
         UserRoomRelation.cleanUnreadNumber(room_uuid, user_data['id'])
         #更新客户端房间信息
         for item in user_room_relation_data:
             #if item.user_id != user_id:
             roomList = UserRoomRelation.getRoomList(item.user_id)['data']
             socketio.emit('groupRoom',
                           Utils.formatBody(roomList),
                           namespace='/room',
                           room='@broadcast.' + str(item.user_id))
     return Utils.formatBody({'action': "chat"})
示例#23
0
def get(user_info):
    #鉴权
    if (user_info['data']):
        user_data = Users().getOne({Users.id == user_info['data']['id']})
    return BaseController().successData(user_data)