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.
47 lines
1.6 KiB
47 lines
1.6 KiB
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
|
|
|