Beispiel #1
0
 def dispatch_request(self, *args, **kwargs):
     req = None
     schema = None
     if request.method == "GET":
         schema = self.validate_schemas.get("get")
         req = request.args.to_dict()
     else:
         schema = self.validate_schemas.get(request.method.lower())
         req = request.json
     if isinstance(schema, Schema):
         data, errors = validate_schema(schema, move_space(req))
         if errors:
             logger.info(str(errors))
             return str(errors), 400
         self.validate_data = data
     try:
         ret = super().dispatch_request(*args, **kwargs)
         return ret
     except NotUniqueError:
         logger.warn(traceback.format_exc())
         return Msg.DATA_EXIST, 400
     except ValidationError as e:
         logger.warn(traceback.format_exc())
         return str(e), 400
     except DoesNotExist:
         logger.warn(traceback.format_exc())
         return Msg.NO_DATA, 400
     except AttributeError as e:
         logger.warn(traceback.format_exc())
         return str(e), 400
     except Exception as e:
         logger.warn(traceback.format_exc())
         return str(e), 400
Beispiel #2
0
def push_merchant(merchant) -> tuple:
    """
    推送商户信息
    """
    url = zk.loan_mng_hosts
    if not url:
        return False, "未找到信贷核心地址"
    params = {
        "ctrlData": {
            "servcId": "AS_BANK_ACCOUNT_UPDATE",
            "servcScn": "01",
            "sysIndicator": "000001",
            "reqTime": time.strftime("%Y-%m-%d %H:%M:%S"),
            "transMedium": "00000000",
            "bizTrackNo": "{}".format(time.time() * 10000000),
            "transSeqNo": "{}".format(time.time() * 10000000),
            "hostIp": ip,
        },
        "body": {
            "reqHead": {
                "bankNo": merchant.code,
                "custId": merchant.code
            },
            "bankName": merchant.name,
            "openFlag": "1",
            "acctSelfInd": "1",
            "merchNo": merchant.xw_code,
            "loanAcctNo": merchant.iba_loan_no,
            "loanAcctName": merchant.iba_loan_name,
            "deduAcctNo": merchant.iba_collection_no,
            "deduAcctName": merchant.iba_collection_name,
            "preAcctNo": merchant.iba_pre_deposit_no,
            "preAcctName": merchant.iba_pre_deposit_name,
            "assetsImpairmentNum": "90",
            "orgNo": merchant.org_no
        }
    }
    if merchant.push_flag == 0:
        params["body"].update({"operType": "1"})
    else:
        params["body"].update({"operType": "2"})
    try:
        res = requests.post(url + "/loan_mng/handle", json=params).json()
        code = res["respData"]["code"]
        if code == "00000000":
            merchant.push_flag = 1
            db.session.commit()
            logger.info("PUSH MERCHANT SUCCESS!")
            return True, ""
        else:
            logger.warn(
                "push merchant info failed, failed info {}".format(res))
            return False, res.get("respData", {}).get("message") or str(res)
    except Exception as e:
        logger.warn("push merchant info failed, failed info {}".format(str(e)))
        return False, "网络错误"
Beispiel #3
0
 def dispatch_request(self, *args, **kwargs):
     req = None
     schema = None
     if request.method == "GET":
         schema = self.validate_schemas.get("get")
         req = request.args.to_dict()
     else:
         schema = self.validate_schemas.get(request.method.lower())
         req = request.json
     if isinstance(schema, Schema):
         data, errors = validate_schema(schema, move_space(req))
         if errors:
             logger.info(str(errors))
             return str(errors), 400
         self.validate_data = data
     elif isinstance(schema, reqparse.RequestParser):
         parse_req = schema.parse_args()
         strict = self.validate_schemas.get("strict") or ""
         if strict:
             parse_req = schema.parse_args(strict=True)
         self.validate_data = {k: v for k, v in parse_req.items() if v}
     try:
         ret = super().dispatch_request(*args, **kwargs)
         return ret
     except NotUniqueError:
         logger.warn(traceback.format_exc())
         return Msg.DATA_EXIST, 400
     except ValidationError:
         logger.warn(traceback.format_exc())
         return Msg.PARAMS_ERROR, 400
     except DoesNotExist:
         logger.warn(traceback.format_exc())
         return Msg.NO_DATA, 400
     except AttributeError:
         logger.warn(traceback.format_exc())
         return Msg.PARAMS_ERROR, 400
     except Exception:
         logger.warn(traceback.format_exc())
         return Msg.UNKNOWN, 400
Beispiel #4
0
    def to_dict(self):

        temp = SmsTemplate.query.get_or_404(self.template_code)
        if temp is None:
            logger.warn("tb_sms_template exceptions")
            return {}
        return {
            "id": self.id,
            "serial_number": self.serial_number,
            "template_content_code": self.template_content_code,
            "production_code": self.production_code,
            "template_title": temp.template_title,
            "template_type": self.template_type,
            "template": temp.template,
            "template_code": self.template_code,
            "production_name": self.production_name,
            "params": self.params,
            "merchant_code": self.merchant_code,
            "receiver": self.receiver,
            "status": self.status,
            "create_time": self.create_time,
            "remarks": self.remarks
        }
Beispiel #5
0
    def get_servers_node(self, *args):
        """
        获取所有服务的注册节点
        """
        servers_node = []

        def _get_childern(path):
            try:
                reg = self.zk.get_children(path)
                return reg
            except Exception as e:
                return []

        def _get_data(path):
            try:
                data = self.zk.get(path)[0].decode()
                return data
            except Exception as e:
                return None

        try:
            all_server = self.zk.get_children(self.server_node_path)
            for server_name in all_server:
                path = "{}/{}/node".format(self.server_node_path, server_name)
                registration = _get_childern(path)
                data = []
                for i in registration:
                    node_data = _get_data(path+"/"+i)
                    data.append(node_data)
                servers_node.append({
                    "name": server_name,
                    "node": list(set(data))
                })
            return servers_node
        except NoNodeError as e:
            logger.warn("NO NODE ERROR | NODE PATH {}".format(self.server_node_path))
            return []
Beispiel #6
0
 def get_schedbin_message(self, trx):
     """
     获取事务数据
     """
     filters = [
         Q("term", **{"trx.keyword": trx}),
         Q("term", **{"recover_index": 0})
     ]
     search = ScheduBin.search(using=es_client).query(
         'bool', filter=filters).source('message')
     response = search.execute()
     cnt = len(response)
     if cnt == 0:
         logger.warn(
             'trx:{},recover_index=0 from es not found [toby should care]' %
             trx)
         return ''
     elif cnt > 1:  # 理论上不会出现同一trx,recover_index=0时多条记录
         logger.warn(
             'trx:{},recover_index=0 from es found more than one record[toby should care]'
             % trx)
         return ''
     schedubin = response[0]
     return json.loads(schedubin.message)