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'])}
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'])}
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}))
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'])}
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'])}
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()) }
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}))
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')
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
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()) }
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'])}
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
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 } })
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')
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
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
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': [] } })
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 } })
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
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 } })