|
|
|
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, card=None):
|
|
|
|
if card is not None and card != "请手动输入会员卡号":
|
|
|
|
set_card(ip, env, pid, cid, card)
|
|
|
|
return True, card
|
|
|
|
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 True, str(card_num, encoding='utf-8')
|
|
|
|
return False, '请手动输入会员卡号'
|
|
|
|
|
|
|
|
|
|
|
|
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
|