You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
2.4 KiB
61 lines
2.4 KiB
import random |
|
import json |
|
import time |
|
from django_redis import get_redis_connection |
|
|
|
RANDOM_DATA_API_LIST = ['cinema/plays', 'play/seat-status', 'cinema/goods', 'ecard/ecard-levels'] |
|
|
|
|
|
def random_params(_user_info, _handle_data): |
|
if _user_info["api"] in RANDOM_DATA_API_LIST: |
|
if str(_handle_data['res']['status']) == '0': |
|
return False |
|
redis_key_api = f'dspt_api_{_user_info["user_ip"]}_{_user_info["env"]}_{_user_info["member_type"]}_{_user_info["pid"]}_{_user_info["cid"]}_{_user_info["api"]}_random' |
|
redis_conn = get_redis_connection() |
|
if redis_conn.get(redis_key_api): |
|
redis_conn.delete(redis_key_api) |
|
data = { |
|
'api': _user_info["api"], |
|
'member_type': _user_info["member_type"], |
|
'format': _user_info["format"], |
|
'timestamp': int(time.time() * 1000), |
|
} |
|
print('random_params_user_info["api"]', _user_info["api"]) |
|
if _user_info["api"] == 'play/seat-status': |
|
_user_data = get_ok_status_seat_list(_handle_data['res']['data']) |
|
elif _user_info["api"] == 'ecard/ecard-levels': |
|
print('ecard/ecard-levels') |
|
_user_data = _handle_data['res']['data']['ecardLevelData'] |
|
elif _user_info["api"] == 'cinema/goods': |
|
print('random_params', _handle_data['res']['data']) |
|
_user_data = [random_goods(_handle_data['res']['data'])] |
|
else: |
|
_user_data = _handle_data['res']['data'] |
|
print('random_params', _user_data) |
|
|
|
if len(_user_data) > 0: |
|
print('random_params', _user_data) |
|
if _user_info["api"] in ('play/seat-status', 'cinema/goods'): |
|
data['user_data'] = [[random.choice(_user_data)]] |
|
else: |
|
data['user_data'] = [random.choice(_user_data)] |
|
redis_conn.set(redis_key_api, json.dumps(data), 10 * 60 * 60) |
|
else: |
|
redis_conn.delete(redis_key_api) |
|
|
|
|
|
def get_ok_status_seat_list(_data): |
|
seat_list = [] |
|
for s in _data: |
|
if s['seatStatus'] == 'ok' and s['type'] in ['danren', 'zhendong', 'vip']: |
|
seat_list.append(s) |
|
return seat_list |
|
|
|
|
|
def random_goods(_data): |
|
goods = random.choice(_data) |
|
n = 1 |
|
while goods['type'] == 'package' and goods['packageType'] == '2' and n < 10: |
|
goods = random.choice(_data) |
|
n += 1 |
|
return goods
|
|
|