Exemple #1
0
def _insert(data):
    d_v = {
        'name': u'',
        'content': u'',
        'img_url': u'',
        'type_num': 0,
        'boot_area': -1,
        'sort_id': 1,
        'status': 1,
        'remark': u'',
        'client_id': u'',
        'created_time': timestamp_to_strftime(time.time())
    }
    add_dict = copy.copy(d_v)

    for key in default_values:
        if key in data:
            _values = data.get(key)
            if _values:
                # if isinstance(_values, str) or isinstance(_values, unicode):
                if isinstance(_values, str):
                    _values = _values.strip()
                if key in int_key:
                    try:
                        _values = int(_values)
                    except:
                        return {'status': False, 'msg': u'参数错误'}
                add_dict.update({key: _values})
    try:
        help_center.insert_one(add_dict)
    except DuplicateKeyError:
        return {'status': False, 'msg': u'已存在'}
    return {'status': True, 'user_id': str(add_dict['_id'])}
Exemple #2
0
def _insert(data):
    d_v = {
        'yesterday_income':
        0,
        'historical_income':
        0,
        'red_pool':
        0,
        'created_time':
        timestamp_to_strftime(time.time() + 24 * 60 * 60, format='%Y-%m-%d')
    }
    add_dict = copy.copy(d_v)

    for key in default_values:
        if key in data:
            _values = data.get(key)
            if _values:
                # if isinstance(_values, str) or isinstance(_values, unicode):
                if isinstance(_values, str):
                    _values = _values.strip()
                if key in int_key:
                    try:
                        _values = int(_values)
                    except:
                        return {'status': False, 'msg': u'参数错误'}
                add_dict.update({key: _values})
    try:
        income.insert_one(add_dict)

    except DuplicateKeyError:
        return {'status': False, 'msg': u'已存在'}
    return {'status': True, 'user_id': str(add_dict['_id'])}
Exemple #3
0
def _insert(data):
    d_val = {
        'user_id': u'',
        'content': u'',
        'thumbnail': u'',
        'image_list': [],
        'contact_information': u'',
        'created_time': timestamp_to_strftime(time.time()),
    }
    add_dict = copy.copy(d_val)
    for key in default_values:
        if key in data:
            _values = data.get(key)
            # if isinstance(_values, str) or isinstance(_values, unicode):
            if isinstance(_values, str):
                _values = _values.strip()
            if key in int_key:
                try:
                    _values = int(_values)
                except:
                    return {'status': False, 'msg': u'参数错误'}
            add_dict.update({key: _values})
    try:
        feedback.insert_one(add_dict)
    except DuplicateKeyError:
        return {'status': False, 'msg': u'已存在'}
    return {'status': True}
def check_registration_reward():
    """
    检查邀请用户首次注册是否奖励
    :return:
    """
    if int(timestamp_to_strftime(int(time.time()), format='%H')) == 0:
        return False
    last_hour_str = timestamp_to_strftime((int(time.time()) - 60 * 60), format='%Y-%m-%d %H')
    user_cur = user.find({'created_time': {'$regex': last_hour_str}})
    for user_obj in user_cur:
        invite_id = user_obj.get('invite_id', '')
        user_id = str(user_obj.get('_id'))
        if ObjectId.is_valid(invite_id):
            if not commission_record.find_one({'origin': u'邀请用户首次注册', 'user_id': invite_id,
                                               'contributor_id': user_id}):
                redis_invite_code.lpush('invite_json', json.dumps({'is_bind': 1, 'invite_id': invite_id,
                                                                   'user_id': user_id}))
Exemple #5
0
def _insert(data, is_role=False):
    d_v = {
        'name': u'',
        'remark': u'',
        'created_time': timestamp_to_strftime(time.time()),
        'updated_time': timestamp_to_strftime(time.time())
    }
    add_dict = copy.copy(d_v)

    for key in default_values:
        if key in data:
            _values = data.get(key)
            if _values:
                # if isinstance(_values, str) or isinstance(_values, unicode):
                if isinstance(_values, str):
                    _values = _values.strip()
                if key in int_key:
                    try:
                        _values = int(_values)
                    except:
                        return {'status': False, 'msg': u'参数错误'}
                add_dict.update({key: _values})
    try:
        role.insert_one(add_dict)
        if is_role:
            _id = add_dict.get('_id')
            role_authority.insert(
                [
                    {'role_id': str(_id), 'authority': 'admin:create'},
                    {'role_id': str(_id), 'authority': 'admin:delete'},
                    {'role_id': str(_id), 'authority': 'admin:edit'},
                    {'role_id': str(_id), 'authority': 'admin:get'},
                    {'role_id': str(_id), 'authority': 'admin:role_set'},
                    {'role_id': str(_id), 'authority': 'role:create'},
                    {'role_id': str(_id), 'authority': 'role:delete'},
                    {'role_id': str(_id), 'authority': 'role:edit'},
                    {'role_id': str(_id), 'authority': 'role:get'},
                    {'role_id': str(_id), 'authority': 'role:permissions_allow'},
                    {'role_id': str(_id), 'authority': 'system:edit'},
                    {'role_id': str(_id), 'authority': 'system:get'},
                ]
            )
            print (_id)
    except DuplicateKeyError:
        return {'status': False, 'msg': u'已存在'}
    return {'status': True, 'user_id': str(add_dict['_id'])}
Exemple #6
0
def _insert(data, role_id=''):
    username = data.get('username')
    password = data.get('password')
    if not username or not password:
        return {'status': False, 'msg': u'缺少参数'}
    d_v = {
        'username': u'',
        'password': u'',
        'real_name': u'',
        'phone': u'',
        'status': 0,
        'created_time': timestamp_to_strftime(time.time()),
        'updated_time': timestamp_to_strftime(time.time())
    }
    add_dict = copy.copy(d_v)
    data.update({
        'password': generate_password_hash(password),
    })

    for key in default_values:
        if key in data:
            _values = data.get(key)
            if _values:
                # if isinstance(_values, str) or isinstance(_values, unicode):
                if isinstance(_values, str):
                # if _values is isinstance(object, str):
                    _values = _values.strip()
                if key in int_key:
                    try:
                        _values = int(_values)
                    except:
                        return {'status': False, 'msg': u'参数错误'}
                add_dict.update({key: _values})
    try:
        admin_user.insert_one(add_dict)
        _id = add_dict.get('_id')
        if role_id:
            user_role.insert_one({'user_id': str(_id), 'role_id': role_id})
    except DuplicateKeyError:
        return {'status': False, 'msg': u'已存在'}
    return {'status': True, 'user_id': str(add_dict['_id'])}
Exemple #7
0
 def default_values(self):
     return {
         'name': u'',
         'content': u'',
         'img_url': u'',
         'route_id': u'',
         'genre': 0,
         'sort_id': 0,
         'status': 1,
         'remark': u'',
         'created_time': timestamp_to_strftime(time.time())
     }
Exemple #8
0
def add():
    data = {key: dict(request.form)[key][0] for key in dict(request.form)}
    if not data:
        data = request.get_json()
    access_status = judging_permissions('2_1_0')
    if access_status.get('code') != 200:
        return jsonify(access_status)
    created_time = timestamp_to_strftime(time.time() + 24 * 60 * 60, format='%Y-%m-%d')
    income_obj = income.find_one({'created_time': created_time})
    if income_obj:
        return jsonify({'code': 202, 'msg': u'当天收益已存在请不要重复添加'})
    income_obj = income.find_one({'created_time': timestamp_to_strftime(time.time(), format='%Y-%m-%d')})
    if income_obj:
        data['historical_income'] = int(data.get('yesterday_income', 0)) + income_obj.get('historical_income')
    else:
        data['historical_income'] = data.get('yesterday_income', 0)

    result = _insert(data)
    if result.get('status', False):
        return jsonify({'code': 200, 'msg': u'成功'})
    else:
        return jsonify({'code': 203, 'msg': result.get('msg', '')})
def check_withdraw_reward():
    """
    检查邀请用户首次提现是否奖励
    :return:
    """
    if int(timestamp_to_strftime(int(time.time()), format='%H')) == 0:
        return False
    today_str = timestamp_to_strftime((int(time.time()) - 60 * 60), format='%Y-%m-%d')
    last_hour_str = timestamp_to_strftime((int(time.time()) - 60 * 60), format='%Y-%m-%d %H')
    withdraw_record_cur = withdraw_record.find({'review_time': {'$regex': last_hour_str}, 'status': 1})
    for withdraw_record_obj in withdraw_record_cur:
        user_id = withdraw_record_obj.get('user_id')
        user_obj = user.find_one({'_id': ObjectId(user_id)})
        invite_id = user_obj.get('invite_id', '')
        if ObjectId.is_valid(invite_id):
            if not commission_record.find_one({'origin': u'邀请用户首次提现', 'user_id': invite_id,
                                               'contributor_id': user_id}):
                _withdraw_record_obj = withdraw_record.find({'user_id': user_id,
                                                             'status': 1}).sort([('review_time', 1)])[0]

                first_time_today = _withdraw_record_obj.get('review_time').split(' ')[0]
                if first_time_today == today_str:
                    redis_invite_code.lpush('invite_json', json.dumps({'is_bind': 2, 'invite_id': invite_id,
                                                                       'user_id': user_id}))
Exemple #10
0
def _login():
    """
    后台登录页面和接口
    :return:
    """
    # 获取登录IP和城市
    ip, ip_area = get_ip_area()

    if request.method == 'POST':
        try:
            data = request.get_data()
            data = json.loads(data)
            username = data.get('loginname')
            password = data.get('password')
            captcha = data.get('login_code')
        except:
            return jsonify({'code': 201, 'msg': u'参数错误'})
        if not username or not captcha:
            return jsonify({'code': 201, 'msg': u'缺少参数'})
        temp_code = request.cookies.get('login_code')
        s_captcha = crypt_obj.decrypt(temp_code)
        if not s_captcha or captcha.lower() != s_captcha.lower():
            return jsonify({'code': 202, 'msg': u'验证码不正确'})
        user_obj = admin_user.find_one({'username': username})
        if not user_obj:
            return jsonify({'code': 202, 'msg': u'账户信息不正确'})
        if user_obj.get('status') == 1:
            return jsonify({'code': 202, 'msg': u'账号已被封禁,如有疑问请联系管理员'})
        if not check_password_hash(user_obj.get('password'), password):
            return jsonify({'code': 202, 'msg': u'密码不对'})

        default_values = {
            'user_id': str(user_obj.get('_id')),
            'username': username,
            'ip': ip,
            'city': ip_area,
            'created_time': timestamp_to_strftime(time.time())
        }
        login_log.insert_one(default_values)
        session['username'] = username
        user_key = crypt_obj.encrypt(
            username.encode("utf-8") + '__' + str(int(time.time())))
        redis_admin.set(user_key, username, ex=int(60 * 60 * 24))
        resp = make_response(jsonify({'code': 200, 'msg': u'成功'}))
        resp.set_cookie('admin_key', value=user_key)
        return resp

    return render_template('login/login.html')
Exemple #11
0
def send_jg_notification():
    """
    整点发送app 通知
    :return:
    """
    if conf_ver == 'conf.ProductionConfig':
        hour_int = int(timestamp_to_strftime(time.time(), format='%H'))
        if hour_int in [12, 18]:
            title = u'热量星球'
            content = u'【热量星球】红包开抢了,你的朋友又抢了{0}.{1}元钱了,点击进入>>>'.format(
                randint(1, 5), randint(0, 5))
            alert = {'title': title, 'body': content}
            try:
                jp_notification(alert, title, 'id', '')
            except:
                pass
Exemple #12
0
 def default_values(self):
     return {
         'name': u'',
         'reward_text': u'',
         'img_url': u'',
         'task_type': u'daily_task',
         'event_id': u'触发事件id',
         'trigger_event_count': u'触发次数',
         'route_id': u'',
         'next_step': u'',
         'start_time': u'',
         'end_time': u'',
         'reward_value': 0,
         'sort_id': 0,
         'status': 0,
         'remark': u'',
         'created_time': timestamp_to_strftime(time.time())
     }
Exemple #13
0
def _insert(data):
    d_v = {
        'name': u'',
        'img_url': u'',
        'task_type': u'app_wake',
        'android_package_name': u'',
        'ios_url_scheme': u'',
        'app_download_url': u'',
        'jump_url': u'',
        'start_time': u'',
        'end_time': u'',
        'heat_value': 5,
        'heat_times': 1,
        'sort_id': 0,
        'status': 0,
        'open_system': 0,
        'remark': u'',
        'created_time': timestamp_to_strftime(time.time())
    }
    add_dict = copy.copy(d_v)

    for key in default_values:
        if key in data:
            _values = data.get(key)
            if _values:
                # if isinstance(_values, str) or isinstance(_values, unicode):
                if isinstance(_values, str):
                    _values = _values.strip()
                if key in int_key:
                    try:
                        _values = int(_values)
                    except:
                        return {'status': False, 'msg': u'参数错误'}
                add_dict.update({key: _values})
    try:
        app_wake_task.insert_one(add_dict)
    except DuplicateKeyError:
        return {'status': False, 'msg': u'已存在'}
    return {'status': True, 'user_id': str(add_dict['_id'])}
Exemple #14
0
def update():
    _update = {}
    data = {key: dict(request.form)[key][0] for key in dict(request.form)}
    if not data:
        data = request.get_json()
    _id = data.get('_id')
    if not _id or not ObjectId.is_valid(_id):
        return jsonify({'code': 201, 'msg': u'参数错误'})
    _obj = admin_user.find_one({'_id': ObjectId(_id)})
    if not _obj:
        return jsonify({'code': 202, 'msg': u'不存在'})
    for key in default_values:
        if key in data:
            _values = data.get(key)
            if _values:
                # if isinstance(_values, str) or isinstance(_values, unicode):
                if isinstance(_values, str):
                    _values = _values.strip()
                if key in int_key:
                    try:
                        _values = int(_values)
                    except:
                        return jsonify({'code': 201, 'msg': u'参数错误'})
                if _obj.get(key) != _values:
                    if key == 'password':
                        _values = generate_password_hash(_values)
                    _update.update({key: _values})

    if _update:
        _update.update({'updated_time': timestamp_to_strftime(time.time())})
        try:
            admin_user.update_one({'_id': ObjectId(_id)}, {'$set': _update})
            return jsonify({'code': 200, 'msg': u'成功'})
        except:
            pass
    else:
        return jsonify({'code': 203, 'msg': u'无更新数据'})
    return jsonify({'code': 204, 'msg': u'失败'})
def generate_guess_red():
    """
    生成猜红包数据
    :return:
    """
    operation_obj = operation.find_one()
    today_str = timestamp_to_strftime(time.time() + 24 * 60 * 60,
                                      format='%Y-%m-%d')
    guess_red_invalid_time = int(operation_obj.get('guess_red_invalid_time',
                                                   5))
    red_hour_per_json = json.loads(operation_obj.get('red_hour_per_json'))
    dividend_config_obj = dividend_config.find({}).sort([('today_str', -1)])[0]
    guess_red_value = dividend_config_obj.get('guess_red_value', 0) * 100 / 115
    if guess_red_value:
        number_of_periods = int(
            timestamp_to_strftime(time.time() + 24 * 60 * 60,
                                  format='%Y%m%d')[2:]) * 1000
        for hour_int in range(24):
            hour_dict = red_hour_per_json.get(str(hour_int))
            per = hour_dict.get('per')
            # value = per * guess_red_value
            value = 24000
            while True:
                red_dict = reservation_hongbao(value, 12, 1000, 5)
                red_list = red_dict.get('red_list')
                if len(red_list) == 12:
                    break
            minute_int = 0
            for red_value in red_list:
                if red_value <= 1000:
                    red_value += random.randint(0, 1000)
                try:
                    timeArray = time.strptime(
                        '{0} {1}:{2}:00'.format(today_str, hour_int,
                                                minute_int),
                        "%Y-%m-%d %H:%M:%S")
                    start_time = int(time.mktime(timeArray))
                    invalid_time = start_time + guess_red_invalid_time * 60

                    guess_red.insert_one({
                        'today_str':
                        today_str,
                        'hour_int':
                        hour_int,
                        'minute_int':
                        minute_int,
                        'value':
                        red_value,
                        'invalid_time':
                        invalid_time,
                        'status':
                        0,
                        'number_of_periods':
                        number_of_periods + 1,
                        'start_time':
                        start_time,
                        'start_time_str':
                        timestamp_to_strftime(start_time,
                                              format='%Y-%m-%d %H:%M')
                    })
                    minute_int += 5
                    number_of_periods += 1
                except:
                    pass
Exemple #16
0
def get_planet_day():
    access_status = judging_permissions('3_0_3')
    if access_status.get('code') != 200:
        return jsonify(access_status)
    yesterday_str = timestamp_to_strftime(int(time.time()), format='%Y-%m-%d')

    planet_commission_dict = commission_record.aggregate([{
        '$match': {
            'today': yesterday_str
        }
    }, {
        '$group': {
            '_id': '',
            'planet_commission': {
                '$sum': '$value'
            }
        }
    }, {
        '$limit': 1
    }])
    try:
        if isinstance(planet_commission_dict, dict):

            _planet_commission_dict = planet_commission_dict.get('result')[0]
            planet_commission = int(
                _planet_commission_dict.get('planet_commission'))
        else:
            _planet_commission_dict = planet_commission_dict.next()
            planet_commission = int(
                _planet_commission_dict.get('planet_commission'))
    except:
        planet_commission = 0
    planet_commission_total = system.find_one().get('planet_commission_total',
                                                    0)
    planet_commission_total_dict = user.aggregate([{
        '$match': {
            'grade': 1
        }
    }, {
        '$group': {
            '_id': '',
            'planet_commission_total': {
                '$sum': '$planet_commission_total'
            }
        }
    }, {
        '$limit': 1
    }])
    try:
        if isinstance(planet_commission_total_dict, dict):

            _planet_commission_total_dict = planet_commission_total_dict.get(
                'result')[0]
            planet_commission_total += int(
                _planet_commission_total_dict.get('planet_commission_total'))
        else:
            _planet_commission_total_dict = planet_commission_total_dict.next()
            planet_commission_total += int(
                _planet_commission_total_dict.get('planet_commission_total'))
    except:
        pass
    statistical_day_obj = {
        'today_str': yesterday_str,
        'planet_num': user.find({
            'planet_id': {
                '$ne': ''
            }
        }).count(),
        'planet_commission': int(planet_commission / 100),
        'planet_commission_total': int(planet_commission_total / 100)
    }
    date_list = []
    planet_num_list = []
    planet_commission_list = []
    planet_commission_total_list = []
    date_list.insert(0, statistical_day_obj.get('today_str'))
    planet_num_list.insert(0, statistical_day_obj.get('planet_num'))
    planet_commission_list.insert(0,
                                  statistical_day_obj.get('planet_commission'))
    planet_commission_total_list.insert(0, int(planet_commission_total / 100))

    statistical_day_cur = statistical_day.find().sort([('today_str', -1)
                                                       ]).limit(29)

    for statistical_day_obj in statistical_day_cur:
        date_list.insert(0, statistical_day_obj.get('today_str'))
        planet_num_list.insert(0, statistical_day_obj.get('planet_num'))
        planet_commission_list.insert(
            0, int(statistical_day_obj.get('planet_commission') / 100))
        planet_commission_total_list.insert(
            0,
            int(statistical_day_obj.get('planet_commission_total', 0) / 100))
    return jsonify({
        'code': 200,
        'data': {
            'date_list': date_list,
            'planet_num_list': planet_num_list,
            'planet_commission_list': planet_commission_list,
            'planet_commission_total_list': planet_commission_total_list
        }
    })
Exemple #17
0
from libs.db import income
from libs.utils import timestamp_to_strftime

default_des = {
    'yesterday_income': u'昨日收益',
    'historical_income': u'历史收益',
    'red_pool': u'红包池',
    'created_time': u'创建时间'
}

default_values = {
    'yesterday_income': 0,
    'historical_income': 0,
    'red_pool': 0,
    'created_time': timestamp_to_strftime(time.time())
}

int_key = ['yesterday_income', 'historical_income', 'red_pool']


def _insert(data):
    d_v = {
        'yesterday_income':
        0,
        'historical_income':
        0,
        'red_pool':
        0,
        'created_time':
        timestamp_to_strftime(time.time() + 24 * 60 * 60, format='%Y-%m-%d')
Exemple #18
0
def insert_req_log():
    """
    插入正常请求日志
    :return:
    """
    hour_str = datetime.now().strftime(format='%H')
    while True:
        try:
            req_log_array = redis_req_log.brpop('req_log', timeout=2)
            if not req_log_array:
                new_hour_str = datetime.now().strftime(format='%H')
                if new_hour_str != hour_str:
                    break
                continue
            req_log_json = json.loads(req_log_array[1])
            async_inser_req(req_log_json)
            # 统计此用户的在线时长
            user_id = req_log_json.get('user_id')
            today = req_log_json.get('today')
            if user_id:
                user_obj = user.find_one({'_id': ObjectId(user_id)})
                # 更新用户的最新版本
                req_data = req_log_json.get('req_data')
                system_type = req_data.get('system_type')
                version_num = req_data.get('version_num')
                app_version = user_obj.get('app_version')

                if version_num > app_version:
                    user.update_one({'_id': ObjectId(user_id)}, {
                        '$set': {
                            'app_version': version_num,
                            'mp_system_type': system_type
                        }
                    })

                req_time_stamp = req_log_json.get('time_stamp')
                s_user_online_t_obj = s_user_online_t.find_one({
                    'user_id':
                    user_id,
                    'today_str':
                    today
                })
                if s_user_online_t_obj:
                    last_visit_time = s_user_online_t_obj.get(
                        'last_visit_time')
                    if last_visit_time == 0:
                        first_visit_time_h = timestamp_to_strftime(
                            req_time_stamp, format='%H')
                        s_user_online_t.update_one(
                            {'_id': s_user_online_t_obj.get('_id')}, {
                                '$set': {
                                    'length_visit_time':
                                    0,
                                    'first_visit_time':
                                    req_time_stamp,
                                    'last_visit_time':
                                    req_time_stamp,
                                    'req_ip':
                                    req_log_json.get('req_ip', ''),
                                    'req_ip_area':
                                    req_log_json.get('req_ip_area', ''),
                                    'first_visit_time_h':
                                    int(first_visit_time_h)
                                }
                            })
                    else:
                        length_visit_time = s_user_online_t_obj.get(
                            'length_visit_time')
                        time_interval = req_time_stamp - last_visit_time
                        if time_interval < 10 * 60:
                            length_visit_time += time_interval
                        s_user_online_t.update_one(
                            {'_id': s_user_online_t_obj.get('_id')}, {
                                '$set': {
                                    'last_visit_time': req_time_stamp,
                                    'length_visit_time': length_visit_time
                                }
                            })
                else:
                    first_visit_time_h = timestamp_to_strftime(req_time_stamp,
                                                               format='%H')
                    try:
                        s_user_online_t.insert_one({
                            'user_id':
                            user_id,
                            'today_str':
                            today,
                            'length_visit_time':
                            0,
                            'first_visit_time':
                            req_time_stamp,
                            'last_visit_time':
                            req_time_stamp,
                            'req_ip':
                            req_log_json.get('req_ip', ''),
                            'req_ip_area':
                            req_log_json.get('req_ip_area', ''),
                            'first_visit_time_h':
                            int(first_visit_time_h),
                            'mp_system_type':
                            user_obj.get('mp_system_type')
                        })
                        async_ip_statistical(req_log_json)
                    except:
                        pass

                if user_obj:
                    today_str = datetime.now().strftime(format='%Y-%m-%d')
                    invite_active_status = user_obj.get('invite_active_status')
                    if invite_active_status == 1:
                        invite_active_time = user_obj.get('invite_active_time')
                        if invite_active_time != today_str:
                            user.update_one(
                                {'_id': ObjectId(user_id)},
                                {'$set': {
                                    'invite_active_status': 2
                                }})
                    elif invite_active_status == 3:
                        invite_active_time = user_obj.get('invite_active_time')
                        if invite_active_time != today_str:
                            user.update_one(
                                {'_id': ObjectId(user_id)},
                                {'$set': {
                                    'invite_active_status': 4
                                }})
            new_hour_str = datetime.now().strftime(format='%H')
            if new_hour_str != hour_str:
                break
        except:
            pass
Exemple #19
0
def third_transfer_profit():
    """
    :param os: 1为安卓,2为ios
    :param uid: 用户唯 一id
    :return:
    """
    yesterday_str = timestamp_to_strftime((int(time.time())),
                                          format='%Y-%m-%d')

    user_cur = user.find({'status': 0})
    for user_obj in user_cur:
        user_id = str(user_obj.get('_id'))
        third_transfer_art_token = user_obj.get('third_transfer_art_token')
        if third_transfer_art_token:
            redis_admin.lpush(
                'third_transfer_profit',
                json.dumps({
                    'third_transfer_art_token': third_transfer_art_token,
                    'user_id': user_id
                }))
    while True:
        try:
            third_transfer_profit_req = redis_admin.brpop(
                'third_transfer_profit', timeout=2)
            if not third_transfer_profit_req:
                break
            third_transfer_profit_dict = json.loads(
                third_transfer_profit_req[1])
            user_id = third_transfer_profit_dict.get('user_id')
            third_transfer_art_token = third_transfer_profit_dict.get(
                'third_transfer_art_token')
            json_data = {}
            for i in range(3):
                try:
                    ts = int(time.time() * 1000)
                    uuid_m = hashlib.md5(str(uuid.uuid4()).replace('-', ''))
                    opt = {
                        'day': yesterday_str,
                        'token': third_transfer_art_token,
                        'uuid': uuid_m.hexdigest(),
                        'ts': ts
                    }
                    result = ''
                    key_az = sorted(opt.keys())
                    for k in key_az:
                        v = str(opt.get(k, '')).strip()
                        if not v:
                            continue
                        try:
                            v = v.encode('utf8')
                        except:
                            v = v.decode("ascii").encode('utf8')
                        result += v
                    result = result + '1234567890VGY&XDR%'
                    m = hashlib.md5(result)
                    md5_text = m.hexdigest()
                    resp = requests.post(
                        'https://api.5qx8.cn/api/open-fetch-user-data',
                        headers={
                            'sign': md5_text,
                            'Content-Type': 'multipart/form-data'
                        },
                        params=opt)
                    req_json = resp.json()
                    if req_json.get('code') == 0 and req_json.get('data', {}):
                        json_data = req_json.get('data', {})
                        break
                except Exception as e:
                    continue
            if json_data:
                ips = json_data.get('ips', 0)
                if ips:
                    print(user_id, ips)
        except:
            pass
Exemple #20
0
def my_list():
    criteria = {}
    # 支持表格字段里的任何搜索
    access_status = judging_permissions('3_4_3')
    if access_status.get('code') != 200:
        return jsonify(access_status)

    try:
        page_num = int(request.args.get('page_num', 1)) - 1
        limit = int(request.args.get('limit', 20))
    except:
        return jsonify({'code': 201, 'msg': u'参数错误'})

    _cur = statistical_day.find(criteria)
    _count = _cur.count()
    if _count % limit:
        num = _count / limit + 1
    else:
        num = _count / limit
    if _count > (page_num * limit):
        _list = []
        if page_num == 0:
            today_str = timestamp_to_strftime(int(time.time()),
                                              format='%Y-%m-%d')
            user_num_total = user.find({}).count()

            user_num = user.find({
                'created_time': {
                    '$regex': today_str
                }
            }).count()
            user_num_active = s_user_online_t.find({
                'today_str': today_str
            }).count()
            integer_red_user_id_list = integer_red_detail.find({
                'today_str':
                today_str
            }).distinct('user_id')
            integer_red_user_num = len(integer_red_user_id_list)
            guess_red_user_id_list = guess_red_detail.find({
                'guess_time': {
                    '$regex': today_str
                }
            }).distinct('user_id')
            guess_red_user_num = len(guess_red_user_id_list)

            dict_obj = dict()

            real_user_num_active = user_num_active - user_num
            real_user_num_total = user_num_total - user_num
            dict_obj['today_str'] = today_str
            dict_obj['user_num_total'] = user_num_total
            dict_obj['user_num'] = user_num
            dict_obj['user_num_active'] = user_num_active
            dict_obj['real_user_num_active'] = real_user_num_active
            dict_obj['real_user_num_total'] = real_user_num_total
            dict_obj['user_num_active_per'] = '%.2f' % (float(
                real_user_num_active * 100) / float(real_user_num_total)) + '%'

            dict_obj['integer_red_user_num'] = integer_red_user_num
            dict_obj['guess_red_user_num'] = guess_red_user_num
            dict_obj['integer_red_user_per'] = '%.2f' % (float(
                integer_red_user_num * 100) / float(user_num_active)) + '%'
            dict_obj['guess_red_user_per'] = '%.2f' % (
                float(guess_red_user_num * 100) / float(user_num_active)) + '%'
            _list.append(dict_obj)
            cur_list = _cur.sort([('today_str', -1)
                                  ]).skip(page_num * limit).limit(limit)
        else:
            cur_list = _cur.sort([('today_str', -1)
                                  ]).skip(page_num * limit).limit(limit)
        for _obj in cur_list:
            try:
                _obj['_id'] = str(_obj['_id'])
                user_num_total = _obj.get('user_num_total')
                user_num = _obj.get('user_num')
                user_num_active = _obj.get('user_num_active')
                real_user_num_active = user_num_active - user_num
                real_user_num_total = user_num_total - user_num
                _obj['real_user_num_active'] = real_user_num_active
                _obj['real_user_num_total'] = real_user_num_total
                _obj['user_num_active_per'] = '%.2f' % (
                    float(real_user_num_active * 100) /
                    float(real_user_num_total)) + '%'
                _obj['integer_red_user_per'] = '%.2f' % (
                    float(_obj.get('integer_red_user_num', 0) * 100) /
                    float(user_num_active)) + '%'
                _obj['guess_red_user_per'] = '%.2f' % (
                    float(_obj.get('guess_red_user_num', 0) * 100) /
                    float(user_num_active)) + '%'
                _list.append(_obj)
            except Exception as e:
                print(e)
        return jsonify({
            'code': 200,
            'data': {
                'num': num,
                'count': _count,
                'page': page_num + 1,
                'list': _list
            }
        })
    else:
        return jsonify({
            'code': 200,
            'data': {
                'num': num,
                'count': _count,
                'page': page_num + 1,
                'list': []
            }
        })
Exemple #21
0
def get_user_day():
    access_status = judging_permissions('3_1_3')
    if access_status.get('code') != 200:
        return jsonify(access_status)
    yesterday_str = timestamp_to_strftime(int(time.time()), format='%Y-%m-%d')

    earth_code_list = earth_code.find({}).distinct('invite_code')
    earth_code_list.append('')
    user_num_invite = user.find({
        'created_time': {
            '$regex': yesterday_str
        },
        'invite_id': {
            '$nin': earth_code_list
        },
    }).count()
    user_red_record = len(
        red_record.find({
            'today': yesterday_str
        }).distinct('user_id'))

    statistical_day_obj = {
        'today_str':
        yesterday_str,
        'user_num_total':
        user.find({}).count(),
        'user_num':
        user.find({
            'created_time': {
                '$regex': yesterday_str
            }
        }).count(),
        'user_num_novice_task':
        user.find({
            'created_time': {
                '$regex': yesterday_str
            },
            'new_value': -1
        }).count(),
        'user_num_invite':
        user_num_invite,
        'user_num_invite_bind':
        reg_user.find({
            'today': yesterday_str,
            'is_bind': 1
        }).count(),
        'user_num_active':
        s_user_online_t.find({
            'today_str': yesterday_str
        }).count(),
        'user_red_record':
        user_red_record,
    }
    date_list = []

    user_num_total_list = []
    user_num_list = []
    user_num_novice_task_list = []
    user_num_invite_list = []
    user_num_invite_bind_list = []
    user_num_active_list = []
    user_red_record_list = []

    date_list.insert(0, statistical_day_obj.get('today_str'))

    user_num_total_list.insert(0, statistical_day_obj.get('user_num_total'))
    user_num_list.insert(0, statistical_day_obj.get('user_num'))
    user_num_novice_task_list.insert(
        0, statistical_day_obj.get('user_num_novice_task'))
    user_num_invite_list.insert(0, statistical_day_obj.get('user_num_invite'))
    user_num_invite_bind_list.insert(
        0, statistical_day_obj.get('user_num_invite_bind'))
    user_num_active_list.insert(0, statistical_day_obj.get('user_num_active'))
    user_red_record_list.insert(0, statistical_day_obj.get('user_red_record'))

    statistical_day_cur = statistical_day.find().sort([('today_str', -1)
                                                       ]).limit(29)

    for statistical_day_obj in statistical_day_cur:
        date_list.insert(0, statistical_day_obj.get('today_str'))
        user_num_total_list.insert(0,
                                   statistical_day_obj.get('user_num_total'))
        user_num_list.insert(0, statistical_day_obj.get('user_num'))
        user_num_novice_task_list.insert(
            0, statistical_day_obj.get('user_num_novice_task'))
        user_num_invite_list.insert(0,
                                    statistical_day_obj.get('user_num_invite'))
        user_num_invite_bind_list.insert(
            0, statistical_day_obj.get('user_num_invite_bind'))
        user_num_active_list.insert(0,
                                    statistical_day_obj.get('user_num_active'))
        user_red_record_list.insert(0,
                                    statistical_day_obj.get('user_red_record'))

    return jsonify({
        'code': 200,
        'data': {
            'date_list': date_list,
            'user_num_total_list': user_num_total_list,
            'user_num_list': user_num_list,
            'user_num_novice_task_list': user_num_novice_task_list,
            'user_num_invite_list': user_num_invite_list,
            'user_num_invite_bind_list': user_num_invite_bind_list,
            'user_num_active_list': user_num_active_list,
            'user_red_record_list': user_red_record_list
        }
    })
Exemple #22
0
def get_heat_day():
    access_status = judging_permissions('3_2_3')
    if access_status.get('code') != 200:
        return jsonify(access_status)
    yesterday_str = timestamp_to_strftime(int(time.time()), format='%Y-%m-%d')

    calorific_total_dict = calorific_record.aggregate([{
        '$match': {
            'today': yesterday_str,
            'symbol': 1
        }
    }, {
        '$group': {
            '_id': '',
            'calorific_total': {
                '$sum': '$value'
            }
        }
    }, {
        '$limit': 1
    }])
    try:
        if isinstance(calorific_total_dict, dict):

            _calorific_total_dict = calorific_total_dict.get('result')[0]
            calorific_num_obtain = int(
                _calorific_total_dict.get('calorific_total'))
        else:
            _calorific_total_dict = calorific_total_dict.next()
            calorific_num_obtain = int(
                _calorific_total_dict.get('calorific_total'))
    except:
        calorific_num_obtain = 0

    calorific_total_dict = calorific_record.aggregate([{
        '$match': {
            'today': yesterday_str,
            'symbol': -1
        }
    }, {
        '$group': {
            '_id': '',
            'calorific_total': {
                '$sum': '$value'
            }
        }
    }, {
        '$limit': 1
    }])
    try:
        if isinstance(calorific_total_dict, dict):

            _calorific_total_dict = calorific_total_dict.get('result')[0]
            calorific_num_expend = int(
                _calorific_total_dict.get('calorific_total'))
        else:
            _calorific_total_dict = calorific_total_dict.next()
            calorific_num_expend = int(
                _calorific_total_dict.get('calorific_total'))
    except:
        calorific_num_expend = 0
    calorific_num_dict = user.aggregate([{
        '$match': {}
    }, {
        '$group': {
            '_id': '',
            'available_calorific_num': {
                '$sum': '$available_calorific'
            }
        }
    }, {
        '$limit': 1
    }])
    try:
        if isinstance(calorific_num_dict, dict):

            _calorific_num_dict = calorific_num_dict.get('result')[0]
            calorific_num = int(
                _calorific_num_dict.get('available_calorific_num'))
        else:
            _calorific_num_dict = calorific_num_dict.next()
            calorific_num = int(
                _calorific_num_dict.get('available_calorific_num'))
    except:
        calorific_num = 0
    statistical_day_obj = {
        'today_str': yesterday_str,
        'calorific_num_obtain': calorific_num_obtain,
        'calorific_num_expend': calorific_num_expend,
        'calorific_num': calorific_num,
    }
    date_list = []
    calorific_num_obtain_list = []
    calorific_num_expend_list = []
    calorific_num_list = []
    date_list.insert(0, statistical_day_obj.get('today_str'))
    calorific_num_obtain_list.insert(
        0, statistical_day_obj.get('calorific_num_obtain'))
    calorific_num_expend_list.insert(
        0, statistical_day_obj.get('calorific_num_expend'))
    calorific_num_list.insert(0, statistical_day_obj.get('calorific_num'))
    statistical_day_cur = statistical_day.find().sort([('today_str', -1)
                                                       ]).limit(29)
    for statistical_day_obj in statistical_day_cur:
        date_list.insert(0, statistical_day_obj.get('today_str'))
        calorific_num_obtain_list.insert(
            0, statistical_day_obj.get('calorific_num_obtain'))
        calorific_num_expend_list.insert(
            0, statistical_day_obj.get('calorific_num_expend'))
        calorific_num_list.insert(0,
                                  statistical_day_obj.get('calorific_num', 0))

    return jsonify({
        'code': 200,
        'data': {
            'date_list': date_list,
            'calorific_num_obtain_list': calorific_num_obtain_list,
            'calorific_num_expend_list': calorific_num_expend_list,
            'calorific_num_list': calorific_num_list
        }
    })
def generate_integer_red():
    """
    生成整点红包
    :return:
    """

    operation_obj = operation.find_one()
    integer_red_number = int(operation_obj.get('integer_red_number', 100))
    red_hour_per_json = json.loads(operation_obj.get('red_hour_per_json'))

    dividend_config_obj = dividend_config.find({}).sort([('today_str', -1)])[0]
    integer_red_value = dividend_config_obj.get('integer_red_value',
                                                0) * 100 / 115

    if integer_red_value:
        for hour_int in range(24):
            hour_dict = red_hour_per_json.get(str(hour_int))
            # 红包所占资金比例
            per = hour_dict.get('per')
            # 此红包的总金额
            value = per * integer_red_value
            # 红包大概个数
            envelope_num = integer_red_number * per
            # 5到10块红包占比百分之二 所发红包数量为
            envelope_5_10_num = int(2 * envelope_num / 100)
            red_envelope_5_10_dict = interval_red_envelope(
                envelope_5_10_num, 500, 1100)
            # 5到10块红包所发红包金额为:
            total_5_10_value = red_envelope_5_10_dict.get('total_value')
            # 5到10块红包所发红包列表为
            red_5_10_list = red_envelope_5_10_dict.get('red_list')

            # 1到5块红包占比百分之三 所发红包数量为
            envelope_1_5_num = int(3 * envelope_num / 100)
            red_envelope_1_5_dict = interval_red_envelope(
                envelope_1_5_num, 100, 500)
            # 1到5块红包所发红包金额为:
            total_1_5_value = red_envelope_1_5_dict.get('total_value')
            # 5到10块红包所发红包列表为
            red_1_5_list = red_envelope_1_5_dict.get('red_list')

            # 其它金额的红包列表
            red_dict = reservation_hongbao(
                value - total_5_10_value - total_1_5_value, envelope_num, 10,
                5)
            red_list = red_dict.get('red_list')
            total_value = red_dict.get('total_value')
            today_str = timestamp_to_strftime(time.time() + 24 * 60 * 60,
                                              format='%Y-%m-%d')
            timeArray = time.strptime(
                '{0} {1}:00:00'.format(today_str, hour_int),
                "%Y-%m-%d %H:%M:%S")
            start_time = int(time.mktime(timeArray))
            integer_red_dict = {
                'today_str': today_str,
                'hour_int': hour_int,
                'value': total_value + total_5_10_value + total_1_5_value,
                'number':
                len(red_list) + len(red_5_10_list) + len(red_1_5_list),
                'status': 0,
                'start_time': start_time
            }
            integer_red.insert_one(integer_red_dict)
            integer_red_id = str(integer_red_dict.get('_id'))

            for i in range(len(red_list)):
                # 随机插入一个五到十块的红包
                if random.randint(0, 25) == 10:
                    if red_5_10_list:
                        integer_red_detail.insert_one({
                            'integer_red_id':
                            integer_red_id,
                            'value':
                            red_5_10_list.pop(),
                            'user_id':
                            '',
                            'optimum':
                            0
                        })
                else:
                    # 随机插入一个1到5块的红包
                    if random.randint(0, 17) == 10:
                        if red_1_5_list:
                            integer_red_detail.insert_one({
                                'integer_red_id':
                                integer_red_id,
                                'value':
                                red_1_5_list.pop(),
                                'user_id':
                                '',
                                'optimum':
                                0
                            })
                if random.randint(0, 1):
                    red_value = red_list.pop(0)
                else:
                    red_value = red_list.pop(-1)

                integer_red_detail.insert_one({
                    'integer_red_id': integer_red_id,
                    'value': red_value,
                    'user_id': '',
                    'optimum': 0
                })

            for red_value in red_5_10_list:
                integer_red_detail.insert_one({
                    'integer_red_id': integer_red_id,
                    'value': red_value,
                    'user_id': '',
                    'optimum': 0
                })
            for red_value in red_1_5_list:
                integer_red_detail.insert_one({
                    'integer_red_id': integer_red_id,
                    'value': red_value,
                    'user_id': '',
                    'optimum': 0
                })
            max_red_value = 0
            max_integer_red_id = ''
            integer_red_detail_cur = integer_red_detail.find(
                {'integer_red_id': integer_red_id})
            for integer_red_detail_obj in integer_red_detail_cur:
                if integer_red_detail_obj.get('value') > max_red_value:
                    max_red_value = integer_red_detail_obj.get('value')
                    max_integer_red_id = integer_red_detail_obj.get('_id')
                redis_admin.lpush('integer_red_id_' + integer_red_id,
                                  str(integer_red_detail_obj.get('_id')))
            integer_red_detail.update_one({'_id': max_integer_red_id},
                                          {'$set': {
                                              'optimum': 1
                                          }})
def third_transfer_profit():
    """
    统计第三方文章的有效阅读数
    :return:
    """
    today_str = timestamp_to_strftime(int(time.time()), format='%Y-%m-%d')
    operation_obj = operation.find_one()
    wechat_transfer_cash = int(operation_obj.get('wechat_transfer_cash', 20))
    wechat_transfer_per_deduction = int(operation_obj.get('wechat_transfer_per_deduction', 70))
    user_cur = user.find({'status': 0})
    for user_obj in user_cur:
        user_id = str(user_obj.get('_id'))
        third_transfer_art_token = user_obj.get('third_transfer_art_token')
        if third_transfer_art_token:
            redis_admin.lpush('third_transfer_profit_h',
                              json.dumps({'third_transfer_art_token': third_transfer_art_token,
                                          'user_id': user_id}))
    while True:
        try:
            third_transfer_profit_req = redis_admin.brpop('third_transfer_profit_h', timeout=2)
            if not third_transfer_profit_req:
                break
            third_transfer_profit_dict = json.loads(third_transfer_profit_req[1])
            user_id = third_transfer_profit_dict.get('user_id')
            third_transfer_art_token = third_transfer_profit_dict.get('third_transfer_art_token')
            json_data = {}
            for i in range(3):
                try:
                    ts = int(time.time() * 1000)
                    uuid_m = hashlib.md5(str(uuid.uuid4()).replace('-', ''))
                    opt = {'day': today_str, 'token': third_transfer_art_token,
                           'uuid': uuid_m.hexdigest(), 'ts': ts}
                    result = ''
                    key_az = sorted(opt.keys())
                    for k in key_az:
                        v = str(opt.get(k, '')).strip()
                        if not v:
                            continue
                        try:
                            v = v.encode('utf8')
                        except:
                            v = v.decode("ascii").encode('utf8')
                        result += v
                    result = result + '1234567890VGY&XDR%'
                    m = hashlib.md5(result)
                    md5_text = m.hexdigest()
                    resp = requests.post('https://api.5qx8.cn/api/open-fetch-user-data',
                                         headers={'sign': md5_text,
                                                  'Content-Type': 'multipart/form-data'}, params=opt)
                    req_json = resp.json()
                    if req_json.get('code') == 0 and req_json.get('data', {}):
                        json_data = req_json.get('data', {})
                        break
                except Exception as e:
                    print(e)
                    continue
            if json_data:
                ips = json_data.get('ips', 0)
                if ips:
                    real_ips = ips - int(wechat_transfer_per_deduction * ips / 100)
                    real_value = wechat_transfer_cash * real_ips
                    s_user_online_t.update_one({'today_str': today_str, 'user_id': user_id},
                                               {'$set': {'show_wechat_transfer_ips': real_ips,
                                                         'show_cash': real_value}})
        except:
            pass
Exemple #25
0
def get_red_day():
    access_status = judging_permissions('3_3_3')
    if access_status.get('code') != 200:
        return jsonify(access_status)
    yesterday_str = timestamp_to_strftime(int(time.time()), format='%Y-%m-%d')

    red_record_num = red_record.find({
        'today': yesterday_str,
        'type_num': {
            '$in': [2, 3]
        }
    }).count()
    user_red_record = len(
        red_record.find({
            'today': yesterday_str
        }).distinct('user_id'))
    red_average_num = '%.2f' % (float(red_record_num) / float(user_red_record))

    red_num_dict = red_record.aggregate([{
        '$match': {
            'today': yesterday_str
        }
    }, {
        '$group': {
            '_id': '',
            'red_num_total': {
                '$sum': '$value'
            }
        }
    }, {
        '$limit': 1
    }])
    try:
        if isinstance(red_num_dict, dict):

            _red_num_dict = red_num_dict.get('result')[0]
            red_num = int(_red_num_dict.get('red_num_total'))
        else:
            _red_num_dict = red_num_dict.next()
            red_num = int(_red_num_dict.get('red_num_total'))
    except:
        red_num = 0

    user_balance_dict = user.aggregate([{
        '$match': {}
    }, {
        '$group': {
            '_id': '',
            'balance_total': {
                '$sum': '$balance'
            }
        }
    }, {
        '$limit': 1
    }])
    try:
        if isinstance(user_balance_dict, dict):

            _user_balance_dict = user_balance_dict.get('result')[0]
            balance_total = int(_user_balance_dict.get('balance_total'))
        else:
            _user_balance_dict = user_balance_dict.next()
            balance_total = int(_user_balance_dict.get('balance_total'))
    except:
        balance_total = 0

    withdraw_total_dict = withdraw_record.aggregate([{
        '$match': {
            'today': yesterday_str,
            'status': {
                '$ne': -1
            }
        }
    }, {
        '$group': {
            '_id': '',
            'withdraw_total': {
                '$sum': '$value'
            }
        }
    }, {
        '$limit': 1
    }])
    try:
        if isinstance(withdraw_total_dict, dict):

            _withdraw_total_dict = withdraw_total_dict.get('result')[0]
            withdraw_total = int(_withdraw_total_dict.get('withdraw_total'))
        else:
            _withdraw_total_dict = withdraw_total_dict.next()
            withdraw_total = int(_withdraw_total_dict.get('withdraw_total'))
    except:
        withdraw_total = 0
    statistical_day_obj = {
        'today_str': yesterday_str,
        'red_num': int(red_num / 100),
        'user_balance_num': int(balance_total / 100),
        'withdraw_num': int(withdraw_total / 100),
        'red_record_num': red_record_num,
        'red_average_num': red_average_num
    }
    date_list = []

    red_num_list = []
    user_balance_num_list = []
    withdraw_num_list = []
    red_record_num_list = []
    red_average_num_list = []
    date_list.insert(0, statistical_day_obj.get('today_str'))
    red_num_list.insert(0, statistical_day_obj.get('red_num'))
    user_balance_num_list.insert(0,
                                 statistical_day_obj.get('user_balance_num'))
    red_record_num_list.insert(0, statistical_day_obj.get('red_record_num'))
    red_average_num_list.insert(0, statistical_day_obj.get('red_average_num'))
    withdraw_num_list.insert(0, statistical_day_obj.get('withdraw_num'))
    statistical_day_cur = statistical_day.find().sort([('today_str', -1)
                                                       ]).limit(29)

    for statistical_day_obj in statistical_day_cur:
        date_list.insert(0, statistical_day_obj.get('today_str'))
        red_num_list.insert(0, int(statistical_day_obj.get('red_num') / 100))
        user_balance_num_list.insert(
            0, int(statistical_day_obj.get('user_balance_num') / 100))
        withdraw_num_list.insert(
            0, int(statistical_day_obj.get('withdraw_num') / 100))
        red_record_num_list.insert(0,
                                   statistical_day_obj.get('red_record_num'))
        red_average_num_list.insert(
            0, float(statistical_day_obj.get('red_average_num')))

    return jsonify({
        'code': 200,
        'data': {
            'date_list': date_list,
            'red_num_list': red_num_list,
            'user_balance_num_list': user_balance_num_list,
            'withdraw_num_list': withdraw_num_list,
            'red_record_num_list': red_record_num_list,
            'red_average_num_list': red_average_num_list
        }
    })