123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- # -*- coding: utf-8 -*-
- from fastapi import APIRouter, Depends, Request
- from fastapi.responses import PlainTextResponse
- from sqlalchemy.orm import Session
- from database import get_db
- from utils.sg_auth import *
- from utils.redis_util import *
- from models import *
- from utils import *
- from extensions import logger
- from config import settings
- router = APIRouter()
- # 获取登录态数据
- # https://dgmpaas.yuque.com/appshell/yst/bgo7tx?#sjJu1
- @router.post("/get_yst_user_info", response_class=PlainTextResponse)
- def get_yst_user_info(
- request: Request,
- x_tif_signature: str = Header(None),
- x_tif_nonce: str = Header(None),
- x_tif_timestamp: str = Header(None),
- x_tif_uid: str = Header(None),
- x_tif_uinfo: str = Header(None),
- x_tif_ext: str = Header(None),
- ):
- '''
- return yst_user_info_response(json.dumps({
- "account_type": "human",
- "corp": {
- "level": "L2",
- "qyInfo": {
- "qymc": "茂名市石油化工有限公司",
- "qyjb": "规模以上",
- "qydz": "--"
- }
- },
- "tokenid": "ccb7fb65a9ca5a2d74c2afeed928c522"
- }))
- '''
-
- pass_token = settings.YST_PASS_TOKEN
- token_exception = TokenException()
- if x_tif_signature is None or x_tif_nonce is None or x_tif_timestamp is None or x_tif_uid is None or x_tif_uinfo is None or x_tif_ext is None:
- logger.error('========================>>>>>>>>>>>>>>>>>>>>>>> yst authentication err: 1')
- raise token_exception
- if authentication(x_tif_timestamp, pass_token, x_tif_nonce, x_tif_uid, x_tif_uinfo, x_tif_ext, x_tif_signature) == False:
- logger.error('========================>>>>>>>>>>>>>>>>>>>>>>> yst authentication err: 2')
- raise token_exception
- json_str = base64.b64decode(x_tif_ext)
- json_str = json_str.decode(encoding='utf-8')
- x_tif_ext = json.loads(json_str)
- logger.info('========================>>>>>>>>>>>>>>>>>>>>>>> yst authentication ok: {}', x_tif_ext)
- logger.info('========================>>>>>>>>>>>>>>>>>>>>>>> yst account_type: {}', x_tif_ext['account_type'])
- tokenid = x_tif_ext['tokenid']
- redis_key = "yst_token_" + tokenid
- redis_set_json(redis_key, x_tif_ext)
- corp = x_tif_ext["corp"]
- if corp is not None:
- corp = {
- "level": x_tif_ext["corp"]["level"],
- "qyInfo": {
- "qymc": x_tif_ext["corp"]["name"],
- "qyjb": "--",
- "qydz": "--"
- }
- }
- return yst_user_info_response(json.dumps({
- "account_type": x_tif_ext["account_type"],
- "corp": corp,
- "tokenid": tokenid
- }))
- # 用户信息查询接口
- @router.post('/query')
- def yhxx(
- request: Request,
- token: str,
- ext_info: str = Depends(yst_pass_ext),
- param: dict = Depends(yst_request_param),
- db: Session = Depends(get_db)
- ):
- sfzh = ext_info['cid']
- uuid_str = new_guid()
-
- '''
- if settings.IS_DEV == True:
- logger.info("使用测试身份证号 341181198809150011")
- sfzh = "341181198809150011"
- '''
-
- redis_key = "mmyj_yhxx_" + uuid_str
- redis_set_json(redis_key, {
- "custcode": "3101893742",
- "compcode": "compcode",
- "compname": "compname"
- })
- resp = {
- 'ret': 0,
- 'msg': '',
- 'data': {
- 'token': token,
- 'custcode':'3101893742',
- 'uuid': uuid_str,
- 'xm': xm_tuomin(ext_info['name']),
- 'zjlx':'居民身份证',
- 'zjhm': sfz_tuomin(sfzh),
- 'lxdh': ext_info['mobile']
- }
- }
- return yst_response(resp)
-
- req = GetCustCodeListByIdReq()
- req.custId = sfzh
- result = requestApi.getCustCodeListById(req)
- if result is None:
- return yst_response({
- "ret": 1,
- "msg": "提交到应用服务器失败"
- })
-
- if len(result['data']) == 0:
- resp = {
- 'ret': 1,
- 'msg': '您在梅州中燃没有燃气账户'
- }
- return yst_response(resp)
-
- redis_key = "ranqi_yhxx_" + uuid_str
- redis_set_json(redis_key, result['data'])
- return_data = []
- data = result['data']
- for n in data:
- return_data.append({
- 'token': token,
- 'custcode': n['custcode'],
- 'uuid': uuid_str,
- 'xm': xm_tuomin(ext_info['name']),
- 'zjlx':'居民身份证',
- 'zjhm': sfzh_tuomin(sfzh),
- 'lxdh': ext_info['mobile']
- })
- resp = {
- 'ret': 0,
- 'msg': '',
- 'data': return_data
- }
- return yst_response(resp)
|