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 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']