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.
136 lines
3.7 KiB
136 lines
3.7 KiB
from django_redis import get_redis_connection |
|
from dspt_api.models import EcChannel, EcEnv |
|
from django.db.models import Q |
|
from dspt_api.util.general.sign import Sign |
|
import requests |
|
|
|
|
|
def get_card(ip, env, pid, cid): |
|
redis_con = get_redis_connection() |
|
redis_key = f"card_{ip}_{env}_{pid}_{cid}" |
|
print('get_card-card_num', redis_key) |
|
if redis_con.exists(redis_key): |
|
card_num = redis_con.get(redis_key) |
|
print('get_card-card_num', card_num) |
|
return str(card_num, encoding='utf-8') |
|
return '请手动输入会员卡号' |
|
|
|
|
|
def set_card(ip, env, pid, cid, card): |
|
redis_con = get_redis_connection() |
|
redis_key = f"card_{ip}_{env}_{pid}_{cid}" |
|
if redis_con.exists(redis_key): |
|
redis_con.delete(redis_key) |
|
return redis_con.set(redis_key, card) |
|
|
|
|
|
def get_card_type(env, pid, cid, card): |
|
params = { |
|
'format': 'json', |
|
'pid': pid, |
|
'cid': cid, |
|
'card': card, |
|
} |
|
|
|
try: |
|
base_url = EcEnv.objects.filter(Q(code=env) & Q(type='member')).values('host').first()['host'] |
|
except Exception as e: |
|
return False, e |
|
|
|
request_url = f"{base_url}/card/detail" |
|
|
|
try: |
|
key = EcChannel.objects.filter(Q(pid=pid) & Q(env=env)).values('channel_key').first()['channel_key'] |
|
except Exception as e: |
|
return False, e |
|
|
|
sign = Sign(key) |
|
req_params = sign.add_sig(params) |
|
|
|
response = requests.get(request_url, params=req_params) |
|
|
|
if response.json()['res']['status'] != 1: |
|
return False |
|
else: |
|
return response.json()['res']['data']['cardType'] |
|
|
|
|
|
def get_card_val(env, pid, cid, card, param): |
|
params = { |
|
'format': 'json', |
|
'pid': pid, |
|
'cid': cid, |
|
'card': card, |
|
} |
|
|
|
try: |
|
base_url = EcEnv.objects.filter(Q(code=env) & Q(type='member')).values('host').first()['host'] |
|
except Exception as e: |
|
return False, e |
|
|
|
card_request_url = f"{base_url}/card/detail" |
|
|
|
try: |
|
key = EcChannel.objects.filter(Q(pid=pid) & Q(env=env)).values('channel_key').first()['channel_key'] |
|
except Exception as e: |
|
return False, e |
|
|
|
sign = Sign(key) |
|
card_req_params = sign.add_sig(params) |
|
|
|
card_response = requests.get(card_request_url, params=card_req_params) |
|
|
|
if card_response.json()['res']['status'] != 1: |
|
return False |
|
else: |
|
return card_response.json()['res']['data'][param] |
|
|
|
|
|
def get_card_level_val(env, pid, cid, card, param): |
|
card_params = { |
|
'format': 'json', |
|
'pid': pid, |
|
'cid': cid, |
|
'card': card, |
|
} |
|
|
|
try: |
|
base_url = EcEnv.objects.filter(Q(code=env) & Q(type='member')).values('host').first()['host'] |
|
except Exception as e: |
|
return False, e |
|
|
|
card_request_url = f"{base_url}/card/detail" |
|
|
|
try: |
|
key = EcChannel.objects.filter(Q(pid=pid) & Q(env=env)).values('channel_key').first()['channel_key'] |
|
except Exception as e: |
|
return False, e |
|
|
|
sign = Sign(key) |
|
card_req_params = sign.add_sig(card_params) |
|
|
|
card_response = requests.get(card_request_url, params=card_req_params) |
|
|
|
if card_response.json()['res']['status'] != 1: |
|
return False |
|
|
|
card_level_id = card_response.json()['res']['data']['cardLevelId'] |
|
|
|
card_level_params = { |
|
'format': 'json', |
|
'pid': pid, |
|
'cid': cid, |
|
} |
|
|
|
card_level_request_url = f"{base_url}/cinema/card-level-rule" |
|
card_level_req_params = sign.add_sig(card_level_params) |
|
|
|
card_level_response = requests.get(card_level_request_url, params=card_level_req_params) |
|
|
|
if card_level_response.json()['res']['status'] != 1: |
|
return False |
|
|
|
for level in card_level_response.json()['res']['data']['rule']: |
|
if level['levelId'] == card_level_id: |
|
return level[param] |
|
return False
|
|
|