Example #1
0
def _login(socket, phone, password, uuid):
    response = washer_pb2.Login_Response()

    md5 = hashlib.md5()
    md5.update(password.encode())
    password = md5.hexdigest()

    filter = {"phone": phone}
    washer = Washer.find_one(filter)

    if washer is None:
        response.error_code = common_pb2.ERROR_WASHER_NOT_FOUND
        helper.client_send(socket, common_pb2.LOGIN, response)
        print('washer:{} not found.'.format(phone))
        return
    elif washer['password'] != password:
        response.error_code = common_pb2.ERROR_PASSWORD_INVALID
        helper.client_send(socket, common_pb2.LOGIN, response)
        print('password invalid.')
        return
    print('{}, login success'.format(phone))
    filter = {"washer_phone": phone, "statu": common_pb2.DISTRIBUTED}
    orders = Order.find(filter).count()
    _washer = {
        "id": str(washer['_id']),
        "phone": phone,
        "nick": washer['nick'],
        "level": washer['level'],
        "avatar": washer['avatar'],
        "type": washer['type'],
        "orders": orders,
        "open": washer['open'],
        "socket": socket
    }
    print("success-> v1.washer._login, phone:{} login success".format(phone))
    Washer.add_online_washer(socket, _washer)
    response.washer.id = str(washer['_id'])
    response.washer.phone = washer['phone']
    response.washer.nick = washer['nick']
    response.washer.avatar = washer['avatar']
    response.washer.level = washer['level']
    response.washer.reg_time = washer['reg_time']
    response.washer.status = washer['status']
    response.washer.open = washer['open']
    response.washer.type = washer['type']
    response.washer.secret = _make_secret(phone, uuid)
    response.error_code = common_pb2.SUCCESS
    helper.client_send(socket, common_pb2.LOGIN, response)
    filter = {"phone": phone}
    update = {"$set": {"last_login": int(time.time())}}
    Washer.update_one(filter, update)
Example #2
0
def logout(socket, platform, data):
    response = washer_pb2.Logout_Response()
    washer = Washer.get_online_washer(socket)
    if washer['open']:
        filter = {"phone": washer['phone']}
        update = {"$set": {"open": 0}}
        Washer.update_one(filter, update)
        Washer.out_workgroup(washer['city_code'], washer['phone'],
                             washer['type'])
        Washer.remove_online_washer(socket)
    print("success-> v1.washer.logout, phone:{}".format(washer['phone']))
    response.error_code = common_pb2.SUCCESS
    helper.client_send(socket, common_pb2.LOGOUT, response)
    helper.socket_close(socket)
Example #3
0
def _make_secret(phone, uuid):
    now = time.time()

    elements = [str(now)]
    elements.append(common.APP_KEY)
    elements.append(uuid)
    elements.append(helper.make_rand(6))
    elements.append(phone)

    secret = ''.join(elements)

    md5 = hashlib.md5()
    md5.update(secret.encode())
    secret = md5.hexdigest()
    filter = {"phone": phone}
    update = {"$set": {"secret": secret}}
    Washer.update_one(filter, update)
    return secret
Example #4
0
def start_work(socket, platform, data):
    response = washer_pb2.Start_Work_Response()
    washer = Washer.get_online_washer(socket)
    if washer is None:  #未登录
        print("login first please")
        response.error_code = common_pb2.ERROR_NOT_LOGIN
        helper.client_send(socket, common_pb2.START_WORK, response)
        return
    """
    if washer['open'] == 1: #已经处于开工状态
        response.error_code = common_pb2.ERROR_ALREAD_START
        helper.client_send(socket, common_pb2.START_WORK, response)
        return
    """
    filter = {"phone": washer['phone']}
    update = {"$set": {"open": 1}}
    result = Washer.update_one(filter, update)
    """
    if not result.modified_count: #mongo version 2.6开始才有此值
        response.error_code = common_pb2.ERROR_START_WORK_FAILURE
        helper.client_send(socket, common_pb2.START_WORK, response)
        return
    """
    request = washer_pb2.Start_Work_Request()
    request.ParseFromString(data)
    city_code = request.city_code
    longitude = request.longitude
    latitude = request.latitude
    result = Washer.in_workgroup(city_code, longitude, latitude,
                                 washer['phone'], washer['type'])
    if not result:  #写入redis失败
        print(
            "error-> v1.washer.start_work, phone:{} add to workgroup failure".
            format(washer['phone']))
        response.error_code = common_pb2.ERROR_START_WORK_FAILURE
        helper.client_send(socket, common_pb2.START_WORK, response)
        return
    washer['open'] = 1
    washer['city_code'] = city_code
    Washer.add_online_washer(socket, washer)
    response.error_code = common_pb2.SUCCESS
    helper.client_send(socket, common_pb2.START_WORK, response)
    print("{}, start work success".format(washer['phone']))
Example #5
0
def stop_work(socket, platform, data):
    response = washer_pb2.Stop_Work_Response()
    washer = Washer.get_online_washer(socket)
    if washer is None:  #未登录
        response.error_code = common_pb2.ERROR_NOT_LOGIN
        helper.client_send(socket, common_pb2.STOP_WORK, response)
        return
    if 'open' in washer and washer['open'] == 0:
        print(
            "debug-> v1.washer.stop_work, nick:{} phone:{} work already stoped."
            .format(washer['nick'], washer['phone']))
        response.error_code = common_pb2.SUCCESS
        helper.client_send(socket, common_pb2.STOP_WORK, response)
        return
    filter = {"phone": washer['phone']}
    update = {"$set": {"open": 0}}
    result = Washer.update_one(filter, update)
    if not result.modified_count:
        print(
            "debug-> v1.washer.stop_work, nick:{} phone:{}, update database failure, stop work failure"
            .format(washer['nick'], washer['phone']))
        response.error_code = common_pb2.ERROR_STOP_WORK_FAILURE
        helper.client_send(socket, common_pb2.STOP_WORK, response)
        return
    result = Washer.out_workgroup(washer['city_code'], washer['phone'],
                                  washer['type'])
    if not result:
        print(
            "debug-> v1.washer.stop_work, nick:{} phone:{}, out workgroup failure"
            .format(washer['nick'], washer['phone']))
        response.error_code = common_pb2.ERROR_STOP_WORK_FAILURE
        helper.client_send(socket, common_pb2.STOP_WORK, response)
        return
    print("debug-> v1.washer.stop_work, nick:{} phone:{} stop work success.".
          format(washer['nick'], washer['phone']))
    washer['open'] = 0
    Washer.add_online_washer(socket, washer)
    response.error_code = common_pb2.SUCCESS
    helper.client_send(socket, common_pb2.STOP_WORK, response)