from django_redis import get_redis_connection
import pymysql
from pymysql.cursors import DictCursor
from dingxin_toolbox_drf.settings import CONFIG
from env import ENV

def get_ecard(ip, env, pid, cid):
    redis_con = get_redis_connection()
    redis_key = f"ecard_{ip}_{env}_{pid}_{cid}"
    print('get_ecard-ecard_num', redis_key)
    if redis_con.exists(redis_key):
        ecard_num = redis_con.get(redis_key)
        print('get_ecard-ecard_num', ecard_num)
        return str(ecard_num, encoding='utf-8')
    return False


def set_ecard(ip, env, pid, cid, ecard):
    redis_con = get_redis_connection()
    redis_key = f"ecard_{ip}_{env}_{pid}_{cid}"
    if redis_con.exists(redis_key):
        redis_con.delete(redis_key)
    return redis_con.set(redis_key, ecard)


def get_ecard_renew_fee(ecard_number):
    return get_ecard_info('renew_fee', ecard_number)


def get_ecard_level(ecard_number):
    return get_ecard_info('card_level_no', ecard_number)


def get_ecard_info(filed, ecard_number):
    ecard_server = {
        'host': CONFIG[ENV]['ECARD_DB']['HOST'],
        'user': CONFIG[ENV]['ECARD_DB']['USER'],
        'password': CONFIG[ENV]['ECARD_DB']['PASSWORD'],
        'port': CONFIG[ENV]['ECARD_DB']['PORT'],
        'database': CONFIG[ENV]['ECARD_DB']['NAME'],
    }
    ecard_conn = pymysql.Connect(**ecard_server)
    ecard_cursor = ecard_conn.cursor(DictCursor)
    sql = f'SELECT {filed} FROM fws_dgp_card_db.card_level WHERE card_level_no = (SELECT card_level_no FROM fws_dgp_card_db.card WHERE card_num = %s);'
    ecard_cursor.execute(sql, (ecard_number,))
    result = ecard_cursor.fetchone()[filed]
    return result