Beispiel #1
0
def get_device_status():
    reply, status_code = {'code': 0, 'msg': ''}, 200
    try:
        data = request.get_json()
        imei = data['imei']
    except:
        print_exception_info()
        raise ApiError('ERROR_PARAM', error.ERROR_PARAM)

    status = dbapi.get_cws_device_status(imei)
    online = -1
    if status:
        online = status.get('online', -1)
    latest_report = dbapi.get_device_latestreport(imei)
    if not latest_report:
        raise ApiError('ERROR_DEVICE_NOT_FOUND', error.ERROR_DEVICE_NOT_FOUND)

    # dbg((datetime.now().timestamp(), latest_report['time'].timestamp()))
    if datetime.now().timestamp() - latest_report['time'].timestamp() > 150:
        if online == 1:
            online = 0

    alipay_available = 0
    if check_alipay_available(imei):
        alipay_available = 1

    reply['data'] = {
        'status': online,  # 0离线 1在线 4关机
        'alipay_available': alipay_available,
        'user_id': g.oauth_user.user_id
    }

    return make_response(jsonify(reply), status_code)
Beispiel #2
0
def get_god_devices():
    dbg('get_god_devices')
    reply, status_code = {'code': 0, 'msg': ''}, 200

    try:
        data = request.get_json()
        god_id = data['god_id']
        page = request.args.get('page', 1, type=int)
        psize = request.args.get('psize', 10, type=int)
    except:
        print_exception_info()
        raise ApiError('ERROR_PARAM', error.ERROR_PARAM)

    role_bit = int(current_user.role[5])
    if role_bit != 2:
        raise ApiError('ERROR_AGENT_NO_PERMISSION',
                       error.ERROR_AGENT_NO_PERMISSION)

    count = 0
    data = []

    ct1, agents = dbapi.get_god_agent(god_id=god_id, page=1, psize=999)
    for agent in agents:
        agent_id = agent.id
        ct2, devices = dbapi.get_device(agent_id=agent_id,
                                        page=page,
                                        psize=psize)
        if ct2:
            count += ct2
            for device in devices:
                device_address = dbapi.get_device_address(id=device.address_id)
                address = ""
                if device_address:
                    address = device_address.address
                operator = ''
                operator_level = 0
                agent = dbapi.get_agent(id=device.owner_agent_id)
                if agent:
                    operator = agent.name
                    operator_level = agent.level
                imei = device.imei
                status = dbapi.get_cws_device_status(imei)
                online = -1
                if status:
                    online = status.get('online', -1)
                latest_report = dbapi.get_device_latestreport(imei)
                if not latest_report:
                    online = 0
                else:
                    if imei == '868575021151255':
                        dbg(latest_report['time'])
                    nowts = datetime.now().timestamp()
                    lrts = latest_report['time'].timestamp()
                    if nowts - lrts > 150:
                        if online == 1:
                            online = 0
                info = {
                    'id': device.id,
                    'imei': device.imei,
                    'cat': device.cat,
                    'address': address,
                    'use_state': 0,  # 0空闲,1使用
                    'comm_state': online,  # 0关机,1在线
                    'operator': operator,
                    'operator_level': operator_level,
                    'owner_agent_id': device.owner_agent_id,
                    'map_display': device.map_display,
                    'remark': device.remark,
                    'l4': device.l4,
                    'l3': device.l3,
                    'l2': device.l2,
                    'l1': device.l1
                }
                data.append(info)

    reply['data'] = {'count': count, 'devices': data}

    return make_response(jsonify(reply), status_code)
Beispiel #3
0
def get_salesman_devices():
    dbg('get_salesman_devices')
    reply, status_code = {'code': 0, 'msg': ''}, 200

    page = request.args.get('page', 1, type=int)
    psize = request.args.get('psize', 10, type=int)

    agent_id = current_user.agent_id
    agent = dbapi.get_agent(id=agent_id)
    if not agent:
        raise ApiError('ERROR_AGENT_NOT_FOUND', error.ERROR_AGENT_NOT_FOUND)
    count = 0
    data = []
    if agent.salesman == 0:
        count, devices = dbapi.get_device(agent_id=agent_id,
                                          salesman=0,
                                          page=page,
                                          psize=psize)
    elif agent.salesman == 1:
        count, devices = dbapi.get_device(agent_id=agent_id,
                                          salesman=1,
                                          page=page,
                                          psize=psize)
    if count:
        if devices:
            for device in devices:
                device_address = dbapi.get_device_address(id=device.address_id)
                address = ""
                if device_address:
                    address = device_address.address
                agent = dbapi.get_agent(id=device.salesman_agent_id)
                if agent:
                    operator = agent.name
                    operator_level = agent.slevel
                else:
                    operator = ''
                    operator_level = 0
                imei = device.imei
                status = dbapi.get_cws_device_status(imei)
                online = -1
                if status:
                    online = status.get('online', -1)
                latest_report = dbapi.get_device_latestreport(imei)
                if not latest_report:
                    online = 0
                    lng = '0'
                    lat = '0'
                    signal = 0
                else:
                    nowts = datetime.now().timestamp()
                    lrts = latest_report['time'].timestamp()
                    if nowts - lrts > 150:
                        if online == 1:
                            online = 0
                    lng = latest_report['lng']
                    lat = latest_report['lat']
                    signal = latest_report['signal']
                iccid = ''
                cws_device = dbapi.get_cws_device_iccid(imei)
                if cws_device:
                    iccid = cws_device['iccid']
                info = {
                    'id': device.id,
                    'imei': device.imei,
                    'cat': device.cat,
                    'address': address,
                    'use_state': 0,  # 0空闲,1使用
                    'comm_state': online,  # 0关机,1在线
                    'lng': lng,
                    'lat': lat,
                    'signal': signal,
                    'iccid': iccid,
                    'operator': operator,
                    'operator_level': operator_level,
                    'owner_agent_id': device.owner_agent_id,
                    'salesman_agent_id': device.salesman_agent_id,
                    'map_display': device.map_display,
                    'remark': device.remark,
                    'nopay': device.nopay,
                    'product_unit_price': device.product_unit_price,
                    'product_min_money': device.product_min_money,
                    'product_unit': device.product_unit,
                    'product_unit_pluse': device.product_unit_pluse,
                    'l4': device.l4,
                    'l3': device.l3,
                    'l2': device.l2,
                    'l1': device.l1,
                    'sl1': device.sl1,
                    'sl2': device.sl2,
                    'sl3': device.sl3,
                    'pulse_period': device.low,
                    'pulse_width': device.high
                }
                data.append(info)

    reply['data'] = {'count': count, 'devices': data}

    return make_response(jsonify(reply), status_code)
Beispiel #4
0
def query_income():
    dbg('query_income')
    reply ,status_code = {'code': 0, 'msg': ''}, 200
    try:
        data    = request.get_json()
        start   = datetime.fromtimestamp(int(data['start']))
        end     = datetime.fromtimestamp(int(data['end']))
        address = data.get('address')
        imei    = data.get('imei')
        page    = request.args.get('page', 1, type=int)
        psize   = request.args.get('psize', 10, type=int)
    except:
        print_exception_info()
        raise ApiError('query income error', error.ERROR_PARAM)

    agent_id = current_user.agent_id

    if current_user.cur_agent.salesman:
        count, res = dbapi.query_devices_income_with_sql_salesman(start, end, page, psize, agent_id, address, imei)
    else:
        count, res = dbapi.query_devices_income_with_sql(start, end, page, psize, agent_id, address, imei)
    data = []
    if count and res:
        for r in res:
            device_id, imei, owner_agent_id, product_min_money,\
                address, online_income, offline_coin = r

            if not address:
                address = ""

            online_income = get_online_income(online_income)
            offline_coin, offline_income = get_offline_coin_and_offline_income(offline_coin, product_min_money)

            agent = dbapi.get_agent(id=owner_agent_id)
            status = dbapi.get_cws_device_status(imei)
            online = -1
            if status:
                online = status.get('online', -1)
            latest_report = dbapi.get_device_latestreport(imei)
            if not latest_report:
                online = 0
            else:
                nowts = datetime.now().timestamp()
                lrts  = latest_report['time'].timestamp()
                if nowts - lrts > 150:
                    if online == 1:
                        online = 0

            info = {
                'id'        : device_id,
                'imei'      : imei,
                'income'    : online_income,
                'online_income': online_income,
                'offline_coin': offline_coin,
                'offline_income': offline_income,
                'status'    : online,
                'address'   : address,
                'operator'  : agent.name,
            }
            data.append(info)
    reply['data'] = {
        'incomes': data,
        'count'  : count
    }
    return make_response(jsonify(reply), status_code)
Beispiel #5
0
def search_device():
    dbg('search_device')
    reply, status_code = {'code': 0, 'msg': ''}, 200

    try:
        data = request.get_json()
        imei = data.get('imei')
        device_id = data.get('device_id')
    except:
        print_exception_info()
        raise ApiError('ERROR_PARAM', error.ERROR_PARAM)

    device = None
    if imei:
        device = dbapi.get_device(imei=imei)
    elif device_id:
        device = dbapi.get_device(id=device_id)
    if not device:
        raise ApiError('ERROR_DEVICE_NOT_FOUND', error.ERROR_DEVICE_NOT_FOUND)

    has_permission = 0
    cur_agent = current_user.cur_agent
    if cur_agent.salesman == 0:
        dds = dbapi.get_device_distribution(device_id=device.id)
        for dd in dds:
            if dd.to_agent == current_user.agent_id:
                has_permission = 1
                break
    elif cur_agent.salesman == 1:
        items = dbapi.get_device_distribution_salesman(device_id=device.id)
        for item in items:
            if item.to_agent == current_user.agent_id:
                has_permission = 1
                break

    if not has_permission:
        raise ApiError('ERROR_AGENT_NO_PERMISSION',
                       error.ERROR_AGENT_NO_PERMISSION)

    device_address = dbapi.get_device_address(id=device.address_id)
    address = ""
    if device_address:
        address = device_address.address
    agent = dbapi.get_agent(id=device.owner_agent_id)
    imei = device.imei
    status = dbapi.get_cws_device_status(imei)
    online = -1
    if status:
        online = status.get('online', -1)
    latest_report = dbapi.get_device_latestreport(imei)
    if not latest_report:
        online = 0
        lng = '0'
        lat = '0'
        signal = 0
    else:
        nowts = datetime.now().timestamp()
        lrts = latest_report['time'].timestamp()
        if nowts - lrts > 150:
            if online == 1:
                online = 0
        lng = latest_report['lng']
        lat = latest_report['lat']
        signal = latest_report['signal']
    iccid = ''
    cws_device = dbapi.get_cws_device_iccid(imei)
    if cws_device:
        iccid = cws_device['iccid']

    info = {
        'id': device.id,
        'imei': device.imei,
        'cat': device.cat,
        'address': address,
        'use_state': 0,  # 0空闲,1使用
        'comm_state': online,  # 0关机,1在线
        'lng': lng,
        'lat': lat,
        'signal': signal,
        'iccid': iccid,
        'operator': agent.name,
        'operator_level': agent.level,
        'owner_agent_id': device.owner_agent_id,
        'map_display': device.map_display,
        'remark': device.remark,
        'nopay': device.nopay,
        'coupon': device.coupon,
        'product_unit_price': device.product_unit_price,
        'product_min_money': device.product_min_money,
        'product_unit': device.product_unit,
        'product_unit_pluse': device.product_unit_pluse,
        'l4': device.l4,
        'l3': device.l3,
        'l2': device.l2,
        'l1': device.l1,
        'sl3': device.sl3,
        'sl2': device.sl2,
        'sl1': device.sl1,
        'pulse_period': device.low,
        'pulse_width': device.high
    }

    reply['data'] = info

    return make_response(jsonify(reply), status_code)