示例#1
0
def my_list():
    criteria = {}
    criteria = format_request_params(get_request_params(),
                                     default_values,
                                     int_keys_processor(int_keys),
                                     mg_regex_processor)
    page_num, limit = get_request_page_params()
    _cur = user.find(criteria)
    page_obj = get_pageable(_cur, page_num, limit)
    return Resp.ok(page_obj)
def send_compute_planet_calorific_task():
    """
    发送计算星球总热量的任务
    :return:
    """
    compute_planet_calorific_total('88888888')
    user_cur = user.find({'planet_id': {'$ne': ''}})
    for user_obj in user_cur:
        planet_id = user_obj.get('planet_id', '')
        if planet_id:
            redis_code.lpush('compute_planet_calorific', planet_id)
示例#3
0
def repair_data():
    user_cur = user.find({})
    for user_obj in user_cur:
        planet_id = str(user_obj.get('_id'))
        planet_commission_dict = commission_record.aggregate([{
            '$match': {
                'planet_id': planet_id,
                'is_arrival': 0
            }
        }, {
            '$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
        if planet_commission:
            print(planet_commission)
            user.update_one({'_id': ObjectId(planet_id)}, {
                '$inc': {
                    'planet_commission_total': planet_commission,
                    'balance': planet_commission
                }
            })
            commission_record.update_many(
                {
                    'planet_id': planet_id,
                    'is_arrival': 0
                }, {'$set': {
                    'is_arrival': 1
                }})
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}))
def system_dividend():
    """
    系统分红
    :return:
    """
    dividend_calorific_total = 0
    operation_obj = operation.find_one()
    dividend_of_calorific = int(
        operation_obj.get('dividend_of_calorific', 2000))
    dividend_deduct_calorific_per = int(
        operation_obj.get('dividend_deduct_calorific_per', 80))
    penny_calorific = operation_obj.get('penny_calorific', 5)

    dividend_config_obj = dividend_config.find({}).sort([('today_str', -1)])[0]
    # 将分红金额转换为分 同时扣除15的上级分润
    dividend_value = int(
        dividend_config_obj.get('dividend_value', 0) * 100 * 100 / 115)
    user_cur = user.find({
        'available_calorific': {
            '$gt': dividend_of_calorific
        },
        'status': 0
    })
    for user_obj in user_cur:
        user_id = str(user_obj.get('_id'))
        available_calorific = user_obj.get('available_calorific')
        if available_calorific > dividend_of_calorific:
            participate_dividend_calorific = int(
                available_calorific * dividend_deduct_calorific_per / 100)
            dividend_calorific_total += participate_dividend_calorific
            redis_admin.lpush(
                'system_dividend',
                json.dumps({
                    'participate_dividend_calorific':
                    participate_dividend_calorific,
                    'user_id': user_id
                }))

    while True:
        try:
            system_dividend_req = redis_admin.brpop('system_dividend',
                                                    timeout=2)
            if not system_dividend_req:
                break
            system_dividend_dict = json.loads(system_dividend_req[1])
            user_id = system_dividend_dict.get('user_id')
            participate_dividend_calorific = system_dividend_dict.get(
                'participate_dividend_calorific')

            try:
                user_obj = user.find_one({'_id': ObjectId(user_id)})
                if not user_obj:
                    continue
            except:
                continue

            value_total = int(participate_dividend_calorific / penny_calorific)
            user_dividend_value = int(value_total * 100 / 115)
            # user_dividend_value = int(dividend_value * participate_dividend_calorific / dividend_calorific_total)
            calorific_record.insert_one({
                'user_id':
                user_id,
                'today':
                datetime.now().strftime(format='%Y-%m-%d'),
                'symbol':
                -1,
                'type_num':
                11,
                'value':
                participate_dividend_calorific,
                'des':
                u'系统热量分红',
                'red_id':
                '',
                'created_time':
                datetime.now().strftime(format='%Y-%m-%d %H:%M:%S')
            })

            serial_number = '{0}{1}{2}{3}{4}{5}{6}'.format(
                datetime.now().strftime(format='%Y'), get_chars2(0, 1),
                datetime.now().strftime(format='%m'), get_chars2(0, 1),
                datetime.now().strftime(format='%d'), get_chars2(0, 1),
                datetime.now().strftime(format='%H%M%S'))

            commission_record.insert_one({
                'serial_number':
                serial_number,
                'planet_id':
                user_id,
                'origin':
                u'系统热量分红',
                'value':
                int(user_dividend_value),
                'consume_calorific':
                participate_dividend_calorific,
                'is_arrival':
                1,
                'balance':
                int(user_dividend_value + user_obj.get('balance')),
                'user_id':
                user_id,
                'user_name':
                user_obj.get('nickname'),
                'contributor_id':
                str(user_obj.get('_id')),
                'type_num':
                3,
                'user_img':
                user_obj.get('headimgurl'),
                'grade':
                1,
                'today':
                datetime.now().strftime(format='%Y-%m-%d'),
                'created_time':
                datetime.now().strftime(format='%Y-%m-%d %H:%M:%S')
            })
            user.update_one({'_id': user_obj.get('_id')}, {
                '$inc': {
                    'planet_commission_total': user_dividend_value,
                    'balance': user_dividend_value,
                    'available_calorific': -participate_dividend_calorific,
                    'consumption_calorific': participate_dividend_calorific
                }
            })
            calculate_planet(operation_obj, user_obj, user_dividend_value)
        except:
            pass
示例#6
0
            "mp_system_version": "12.4.1",
            "planet_name": "か的星球",
            "upperlevel_planet_id": "",
            "mp_version": "1.3.27",
            "refresh_token":
            "25_MjxP2dVPGMtkhvquR2QwVSYFgzXXZCrG_qA-M2FBV8mr-DLTPr8tIy6IR1ZgB6HemMe88VECt-opX4D_KROaEuZdWPTmOdse63o8hqzUrJ0",
            "al_uid": "",
            "reg_source": "",
            "unionid": "oLaQOwsqwrwR6lOwKh2xgsghmqbc",
            "invite_active_time": "2019-09-27"
        })

    print(
        u'用户手机&&昵称&&从注册到提现耗时&&从注册到抢红包耗时&&余额&&已提现金额&&冻结金额&&活跃天数&&邀请人数&&邀请人&&拆红包次数&&注册时间'
    )
    user_cur = user.find()
    for user_obj in user_cur:
        withdraw_time = 0
        created_time = user_obj.get('created_time')
        timeArray = time.strptime(created_time, "%Y-%m-%d %H:%M:%S")

        timeStamp = int(time.mktime(timeArray))
        withdraw_record_obj = withdraw_record.find_one(
            {'user_id': str(user_obj.get('_id'))})
        if withdraw_record_obj:
            created_time = withdraw_record_obj.get('created_time')
            timeArray = time.strptime(created_time, "%Y-%m-%d %H:%M:%S")
            timeStamp2 = int(time.mktime(timeArray))

            withdraw_time = int(timeStamp2 - timeStamp) / 60
            if not withdraw_time:
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
示例#8
0
def system_dividend():
    """
    系统分红
    :return:
    """
    dividend_calorific_total = 0
    operation_obj = operation.find_one()
    dividend_of_calorific = int(
        operation_obj.get('dividend_of_calorific', 2000))
    dividend_deduct_calorific_per = int(
        operation_obj.get('dividend_deduct_calorific_per', 80))
    penny_calorific = operation_obj.get('penny_calorific', 5)

    dividend_config_obj = dividend_config.find({}).sort([('today_str', -1)])[0]
    # 将分红金额转换为分 同时扣除15的上级分润
    dividend_value = int(
        dividend_config_obj.get('dividend_value', 0) * 100 * 100 / 115)
    user_cur = user.find({
        'available_calorific': {
            '$gt': dividend_of_calorific
        },
        'status': 0
    })
    for user_obj in user_cur:
        user_id = str(user_obj.get('_id'))
        available_calorific = user_obj.get('available_calorific')
        if available_calorific > dividend_of_calorific:
            participate_dividend_calorific = int(
                available_calorific * dividend_deduct_calorific_per / 100)
            dividend_calorific_total += participate_dividend_calorific
            redis_admin.lpush(
                'system_dividend',
                json.dumps({
                    'participate_dividend_calorific':
                    participate_dividend_calorific,
                    'user_id': user_id
                }))
    user_dividend_value_total = 0
    while True:
        try:
            system_dividend_req = redis_admin.brpop('system_dividend',
                                                    timeout=2)
            if not system_dividend_req:
                break
            system_dividend_dict = json.loads(system_dividend_req[1])
            user_id = system_dividend_dict.get('user_id')
            participate_dividend_calorific = system_dividend_dict.get(
                'participate_dividend_calorific')

            try:
                user_obj = user.find_one({'_id': ObjectId(user_id)})
                if not user_obj:
                    continue
            except:
                continue

            value_total = int(participate_dividend_calorific / penny_calorific)
            user_dividend_value = int(value_total * 100 / 115)
            user_dividend_value_total += user_dividend_value
            print(user_dividend_value, participate_dividend_calorific, user_id)
        except:
            pass
    print(user_dividend_value_total)
示例#9
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
示例#10
0
def invite_activity_cash():
    """
    活动邀请奖现金奖
    :return:
    """

    req_number = 0
    while True:
        try:
            req_invite = redis_invite_code.brpop('invite_activity', timeout=2)
            if not req_invite:
                if req_number < 50:
                    req_number += 2
                    continue
                else:
                    break
            req_number += 1
            invite_json = json.loads(req_invite[1])

            invite_id = invite_json.get('invite_id', '')
            _type = invite_json.get('type', 1)
            user_id = invite_json.get('user_id', '')

            today_str = datetime.now().strftime(format='%Y-%m-%d')
            try:
                invite_user_obj = user.find_one({'_id': ObjectId(invite_id)})
                user_obj = user.find_one({'_id': ObjectId(user_id)})
            except:
                continue
            invite_active_status = user_obj.get('invite_active_status')

            user_input_time = user_obj.get('created_time').split(' ')[0]
            timeArray = time.strptime(user_input_time, "%Y-%m-%d")
            timeStamp = int(time.mktime(timeArray))
            effective_time = unix_time_to_string(unix_time=timeStamp +
                                                 6 * 24 * 60 * 60,
                                                 format='%Y-%m-%d')
            if effective_time < today_str:
                if invite_active_status in [-1, -2]:
                    continue
                user.update_one({'_id': user_obj.get('_id')},
                                {'$set': {
                                    'invite_active_status': -2
                                }})
            invite_active_time = user_obj.get('invite_active_time')
            if invite_active_time == today_str:
                continue
            if _type == 1:
                if invite_active_status != 0:
                    continue
                if withdraw_record.find({
                        'user_id': user_id,
                        'status': 1
                }).count() > 0:
                    invite_active_complete_num = user.find({
                        'invite_id':
                        invite_id,
                        'invite_active_status':
                        -1
                    }).count()
                    if invite_active_complete_num < 318:
                        serial_number = '{0}{1}{2}{3}{4}{5}{6}'.format(
                            datetime.now().strftime(format='%Y'),
                            get_chars2(0, 1),
                            datetime.now().strftime(format='%m'),
                            get_chars2(0, 1),
                            datetime.now().strftime(format='%d'),
                            get_chars2(0, 1),
                            datetime.now().strftime(format='%H%M%S'))
                        commission_record.insert_one({
                            'serial_number':
                            serial_number,
                            'planet_id':
                            invite_id,
                            'origin':
                            u'活动邀请用户提现',
                            'is_arrival':
                            1,
                            'value':
                            20,
                            'balance':
                            int(20 + invite_user_obj.get('balance')),
                            'user_id':
                            invite_id,
                            'user_name':
                            user_obj.get('nickname'),
                            'contributor_id':
                            str(user_obj.get('_id')),
                            'type_num':
                            2,
                            'user_img':
                            user_obj.get('headimgurl'),
                            'grade':
                            2,
                            'today':
                            today_str,
                            'created_time':
                            datetime.now().strftime(format='%Y-%m-%d %H:%M:%S')
                        })
                        user.update_one({'_id': invite_user_obj.get('_id')}, {
                            '$inc': {
                                'planet_commission_total': 20,
                                'balance': 20
                            }
                        })
                        user.update_one({'_id': user_obj.get('_id')}, {
                            '$set': {
                                'invite_active_status': 1,
                                'invite_active_time': today_str
                            },
                            '$inc': {
                                'invite_active_cash': 20
                            }
                        })
                    else:
                        user.update_one({'_id': user_obj.get('_id')}, {
                            '$set': {
                                'invite_active_status': -2,
                                'invite_active_time': today_str
                            }
                        })
            else:
                if invite_active_status in [1, 2]:
                    invite_active_complete_num = user.find({
                        'invite_id':
                        invite_id,
                        'invite_active_status':
                        -1
                    }).count()
                    if invite_active_complete_num < 318:
                        serial_number = '{0}{1}{2}{3}{4}{5}{6}'.format(
                            datetime.now().strftime(format='%Y'),
                            get_chars2(0, 1),
                            datetime.now().strftime(format='%m'),
                            get_chars2(0, 1),
                            datetime.now().strftime(format='%d'),
                            get_chars2(0, 1),
                            datetime.now().strftime(format='%H%M%S'))
                        commission_record.insert_one({
                            'serial_number':
                            serial_number,
                            'planet_id':
                            invite_id,
                            'origin':
                            u'活动邀请用户完成第二天抢红包',
                            'is_arrival':
                            1,
                            'value':
                            30,
                            'balance':
                            int(30 + invite_user_obj.get('balance')),
                            'user_id':
                            invite_id,
                            'user_name':
                            user_obj.get('nickname'),
                            'contributor_id':
                            str(user_obj.get('_id')),
                            'type_num':
                            2,
                            'user_img':
                            user_obj.get('headimgurl'),
                            'grade':
                            2,
                            'today':
                            today_str,
                            'created_time':
                            datetime.now().strftime(format='%Y-%m-%d %H:%M:%S')
                        })
                        user.update_one({'_id': invite_user_obj.get('_id')}, {
                            '$inc': {
                                'planet_commission_total': 30,
                                'balance': 30
                            }
                        })
                        user.update_one({'_id': user_obj.get('_id')}, {
                            '$set': {
                                'invite_active_status': 3,
                                'invite_active_time': today_str
                            },
                            '$inc': {
                                'invite_active_cash': 30
                            }
                        })
                    else:
                        user.update_one({'_id': user_obj.get('_id')}, {
                            '$set': {
                                'invite_active_status': -2,
                                'invite_active_time': today_str
                            }
                        })
                elif invite_active_status in [3, 4]:
                    invite_active_complete_num = user.find({
                        'invite_id':
                        invite_id,
                        'invite_active_status':
                        -1
                    }).count()
                    if invite_active_complete_num < 318:
                        integer_red_detail_count = integer_red_detail.find({
                            'today_str':
                            today_str,
                            'user_id':
                            user_id
                        }).count()
                        guess_red_detail_count = guess_red_detail.find({
                            'guess_time': {
                                '$regex': today_str
                            },
                            'user_id':
                            user_id
                        }).count()
                        if (integer_red_detail_count +
                                guess_red_detail_count) < 2:
                            continue
                        if invite_active_complete_num >= 200:
                            cash_value = 200
                        elif invite_active_complete_num >= 100:
                            cash_value = 150
                        elif invite_active_complete_num >= 20:
                            cash_value = 130
                        elif invite_active_complete_num >= 3:
                            cash_value = 100
                        else:
                            cash_value = 50

                        serial_number = '{0}{1}{2}{3}{4}{5}{6}'.format(
                            datetime.now().strftime(format='%Y'),
                            get_chars2(0, 1),
                            datetime.now().strftime(format='%m'),
                            get_chars2(0, 1),
                            datetime.now().strftime(format='%d'),
                            get_chars2(0, 1),
                            datetime.now().strftime(format='%H%M%S'))
                        commission_record.insert_one({
                            'serial_number':
                            serial_number,
                            'planet_id':
                            invite_id,
                            'origin':
                            u'活动邀请用户完成第三天抢两红包',
                            'is_arrival':
                            1,
                            'value':
                            cash_value,
                            'balance':
                            int(cash_value + invite_user_obj.get('balance')),
                            'user_id':
                            invite_id,
                            'user_name':
                            user_obj.get('nickname'),
                            'contributor_id':
                            str(user_obj.get('_id')),
                            'type_num':
                            2,
                            'user_img':
                            user_obj.get('headimgurl'),
                            'grade':
                            2,
                            'today':
                            today_str,
                            'created_time':
                            datetime.now().strftime(format='%Y-%m-%d %H:%M:%S')
                        })
                        user.update_one({'_id': invite_user_obj.get('_id')}, {
                            '$inc': {
                                'planet_commission_total': cash_value,
                                'balance': cash_value
                            }
                        })
                        user.update_one({'_id': user_obj.get('_id')}, {
                            '$set': {
                                'invite_active_status': -1,
                                'invite_active_time': today_str
                            },
                            '$inc': {
                                'invite_active_cash': cash_value
                            }
                        })
                    else:
                        user.update_one({'_id': user_obj.get('_id')}, {
                            '$set': {
                                'invite_active_status': -2,
                                'invite_active_time': today_str
                            }
                        })
                else:
                    continue
        except Exception as e:
            error_log.insert_one({
                'fn_name':
                'invite_return_calorific_1',
                'invite_activity':
                invite_json,
                'error_str':
                str(e),
                'today':
                datetime.now().strftime(format='%Y-%m-%d')
            })
示例#11
0
def invite_return_calorific():
    """
    正常邀请奖现金奖热量
    :return:
    """
    req_number = 0
    while True:
        try:
            req_invite = redis_invite_code.brpop('invite_json', timeout=2)
            if not req_invite:
                if req_number < 50:
                    req_number += 2
                    continue
                else:
                    break
            req_number += 1
            invite_json = json.loads(req_invite[1])
            invite_id = invite_json.get('invite_id', '')
            is_bind = invite_json.get('is_bind', 0)
            user_id = invite_json.get('user_id', '')
            operation_obj = operation.find_one()
            effective_invitation_num = operation_obj.get(
                'effective_invitation_num')
            calorific_number_people = operation_obj.get(
                'calorific_number_people')
            effective_invitation_calorific = operation_obj.get(
                'effective_invitation_calorific')
            effective_invitation_cash1 = operation_obj.get(
                'effective_invitation_cash1')
            effective_invitation_cash2 = operation_obj.get(
                'effective_invitation_cash2')
            # today_str = datetime.now().strftime(format='%Y-%m-%d')
            today_str = datetime.now().strftime('%Y-%m-%d')
            try:
                invite_user_obj = user.find_one({'_id': ObjectId(invite_id)})
            except:
                if is_bind == 1:
                    system.update_one({}, {
                        '$inc': {
                            'planet_commission_total':
                            effective_invitation_cash1
                        }
                    })
                if is_bind == 2:
                    system.update_one({}, {
                        '$inc': {
                            'planet_commission_total':
                            effective_invitation_cash2
                        }
                    })
                continue
            if is_bind == 10:
                # 第一笔分润通知
                grade = invite_json.get('grade')
                if commission_record.find({
                        'planet_id': invite_id,
                        'type_num': 0,
                        'grade': grade
                }).count() == 1:
                    openid = invite_user_obj.get('wx_uid')
                    if conf_ver == 'conf.ProductionConfig':
                        template_id = 'kLvKUoi6_y_rB4CN1MBt3956Gh54_AkfxzItmH6yQtA'
                    else:
                        template_id = 'CuRkLGY-RCH-CZfxHnuQXEmAqm7Q1tvcDXJSwWUV0NY'

                    if openid:
                        try:
                            push_template(
                                openid, template_id, '',
                                invite_json.get('value', ''),
                                u'您的{0}为您贡献了一笔分润,请进入热量星球APP查看我的收益。'.format(
                                    invite_json.get('nickname')),
                                datetime.now().strftime('%Y-%m-%d %H:%M'))
                        except:
                            pass
                continue

            try:
                user_obj = user.find_one({'_id': ObjectId(user_id)})
            except:
                user_obj = dict()

            # 当用户初次绑定邀请码 给邀请人奖励0.3元
            commission_record_num = commission_record.find({
                'user_id':
                invite_id,
                'today':
                today_str,
                'type_num':
                1,
                'origin':
                u'邀请用户首次注册'
            }).count()
            if is_bind == 1 and commission_record_num < int(
                    calorific_number_people):
                serial_number = '{0}{1}{2}{3}{4}{5}{6}'.format(
                    datetime.now().strftime(format='%Y'), get_chars2(0, 1),
                    datetime.now().strftime(format='%m'), get_chars2(0, 1),
                    datetime.now().strftime(format='%d'), get_chars2(0, 1),
                    datetime.now().strftime(format='%H%M%S'))
                commission_record.insert_one({
                    'serial_number':
                    serial_number,
                    'planet_id':
                    invite_id,
                    'origin':
                    u'邀请用户首次注册',
                    'is_arrival':
                    1,
                    'value':
                    int(effective_invitation_cash1),
                    'balance':
                    int(effective_invitation_cash1 +
                        invite_user_obj.get('balance')),
                    'user_id':
                    invite_id,
                    'user_name':
                    user_obj.get('nickname'),
                    'contributor_id':
                    str(user_obj.get('_id')),
                    'type_num':
                    1,
                    'user_img':
                    user_obj.get('headimgurl'),
                    'grade':
                    2,
                    'today':
                    today_str,
                    'created_time':
                    datetime.now().strftime(format='%Y-%m-%d %H:%M:%S')
                })
                user.update_one({'_id': invite_user_obj.get('_id')}, {
                    '$inc': {
                        'planet_commission_total': effective_invitation_cash1,
                        'balance': effective_invitation_cash1
                    }
                })

            # 当用户首次提现  给邀请人返热量
            commission_record_num = commission_record.find({
                'user_id':
                invite_id,
                'today':
                today_str,
                'type_num':
                1,
                'origin':
                u'邀请用户首次提现'
            }).count()
            if is_bind == 2 and commission_record_num < int(
                    calorific_number_people):
                serial_number = '{0}{1}{2}{3}{4}{5}{6}'.format(
                    datetime.now().strftime(format='%Y'), get_chars2(0, 1),
                    datetime.now().strftime(format='%m'), get_chars2(0, 1),
                    datetime.now().strftime(format='%d'), get_chars2(0, 1),
                    datetime.now().strftime(format='%H%M%S'))
                commission_record.insert_one({
                    'serial_number':
                    serial_number,
                    'planet_id':
                    invite_id,
                    'origin':
                    u'邀请用户首次提现',
                    'is_arrival':
                    1,
                    'value':
                    int(effective_invitation_cash2),
                    'balance':
                    int(effective_invitation_cash2 +
                        invite_user_obj.get('balance')),
                    'user_id':
                    invite_id,
                    'user_name':
                    user_obj.get('nickname'),
                    'contributor_id':
                    str(user_obj.get('_id')),
                    'type_num':
                    1,
                    'user_img':
                    user_obj.get('headimgurl'),
                    'grade':
                    2,
                    'today':
                    today_str,
                    'created_time':
                    datetime.now().strftime(format='%Y-%m-%d %H:%M:%S')
                })

                calorific_record_dict = {
                    'user_id':
                    invite_id,
                    'today':
                    today_str,
                    'symbol':
                    1,
                    'type_num':
                    7,
                    'value':
                    effective_invitation_calorific,
                    'des':
                    u'邀请用户首次提现',
                    'created_time':
                    datetime.now().strftime(format='%Y-%m-%d %H:%M:%S')
                }
                calorific_record.insert_one(calorific_record_dict)
                user.update_one({'_id': invite_user_obj.get('_id')}, {
                    '$inc': {
                        'planet_commission_total': effective_invitation_cash2,
                        'balance': effective_invitation_cash2,
                        'calorific_total': effective_invitation_calorific,
                        'available_calorific': effective_invitation_calorific
                    }
                })

            # 判断此邀请人数 看是否升级成了球主
            invite_user_obj = user.find_one({'_id': ObjectId(invite_id)})
            planet_id = invite_user_obj.get('planet_id', '')
            invite_user_num = user.find({
                'invite_id': invite_id,
                'new_value': -1
            }).count()
            if invite_user_num >= effective_invitation_num and not planet_id:
                user.update_one({'_id': ObjectId(invite_id)},
                                {'$set': {
                                    'planet_id': invite_id
                                }})
                # title = u'成为星主'
                # content = u'恭喜您达到系统要求的邀请人数,我们已经为您创建属于您自己的星球'
                # alert = {
                #     'title': title,
                #     'body': content
                # }
                # try:
                #     jp_notification(alert, title, 'id', '', type_num=1, jg_ids=[invite_user_obj.get('jg_id')])
                # except:
                #     pass
                # if conf_ver == 'conf.ProductionConfig':
                #     template_id = 'BicMMuwBiTojbCEGRocNevHJfYhibNYBHP_ieScf7KI'
                # else:
                #     template_id = '18IjSoLlT_ejZBhnpZrFq5tZeDMInBFCpG09qzw56Pc'
                # openid = invite_user_obj.get('wx_uid')
                # if openid:
                #     try:
                #         push_template(openid, template_id, '', invite_user_obj.get('name', ''),
                #                       invite_user_obj.get('phone', ''), '')
                #     except:
                #         pass
                # params_163 = '{}'
                # send_sms_163(invite_user_obj.get('phone'), params_163, '10858')

            # 如果邀请人成为球主 则同步其所有邀请人的球主信息
            invite_user_obj = user.find_one({'_id': ObjectId(invite_id)})
            planet_id = invite_user_obj.get('planet_id', '')
            if planet_id and invite_user_num < 30:
                # planet_commission_dict = commission_record.aggregate([
                #     {
                #         '$match': {'planet_id': planet_id, 'is_arrival': 0}
                #     },
                #     {
                #         '$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
                # if planet_commission:
                #     user.update_one({'_id': ObjectId(planet_id)},
                #                     {'$inc': {'planet_commission_total': planet_commission,
                #                               'balance': planet_commission}})
                #     commission_record.update_many({'planet_id': planet_id, 'is_arrival': 0},
                #                                   {'$set': {'is_arrival': 1}})

                user.update_many({'invite_id': invite_id},
                                 {'$set': {
                                     'superior_planet_id': planet_id
                                 }})
                user.update_many({'superior_invite_id': invite_id},
                                 {'$set': {
                                     'upperlevel_planet_id': planet_id
                                 }})
        except Exception as e:
            error_log.insert_one({
                'fn_name':
                'invite_return_calorific_1',
                'invite_json':
                invite_json,
                'error_str':
                str(e),
                'today':
                datetime.now().strftime(format='%Y-%m-%d')
            })
示例#12
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
        }
    })
示例#13
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': []
            }
        })
示例#14
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
        }
    })