Exemplo n.º 1
0
    def __init__(self):
        super().__init__()

        self._all_average_logger = configure_logger("all_average")
        self._order_list_logger = configure_logger("order_list")

        self._host_id = None
        # 设置host id
        if domain:
            self.set_host_id(domain[0])
Exemplo n.º 2
0
    def __init__(self):
        # 支付宝单独的日志
        self._logger = configure_logger("alipay")
        # 构建支付宝基础服务
        self._client = None
        self._sandbox_debug = pay_config['sandbox_debug']
        self._appId = pay_config['appId']
        self._rsaPrivateKey = pay_config['rsaPrivateKey']
        self._rsaPublickKey = pay_config['rsaPublickKey']
        self._alipay_public_key = pay_config['alipayrsaPublicKey']
        self._alipayCertPublicKey_RSA2 = pay_config['alipayCertPublicKey_RSA2']
        self._alipayRootCert = pay_config['alipayRootCert']
        self._appCertPublicKey = pay_config['appCertPublicKey']

        self.build_client()
Exemplo n.º 3
0
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'jingyu.he'
import base64
import hashlib
import redis
from redis import sentinel
import traceback
from urllib.parse import parse_qs
from conf.constants import *
from utils.logger_conf import configure_logger
from utils.get_conf import *

log_path = get_logger_file()
log_path = log_path + 'author.log'
author_log = configure_logger('author', log_path)

try:
    if if_redis_sentinel:
        _hosts = [hp.split(':') for hp in pre_rs_hosts]
        hosts = [(hp[0].strip(), int(hp[1].strip())) for hp in _hosts]
        r_sentinel = sentinel.Sentinel(hosts, socket_timeout=r_timeout)
        redis_cli = r_sentinel.master_for(r_master,
                                          socket_timeout=r_timeout,
                                          password=r_password,
                                          db=r_database,
                                          decode_responses=True)
    else:
        redis_cli = redis.StrictRedis(host=r_host,
                                      port=r_port,
                                      db=r_database,
Exemplo n.º 4
0
# -*- encoding:utf-8 -*-
from service import app
from utils.logger_conf import configure_logger
logger = configure_logger('root')
__author__ = 'jingyu.he'

if __name__ == '__main__':
    app.run(host="0.0.0.0", port=5002, debug=False)
Exemplo n.º 5
0
from flask import request, jsonify, render_template, Blueprint
import base64
import requests
import asyncio
import time
from utils.utility import Utility
from conf.constants import *
from utils.authorization import check_ckey
from utils.request_util import RequestUtil
from utils.get_conf import *
from conf.sharemsg_params_define import *
from utils.logger_conf import configure_logger

log_path = get_logger_file()
log_path = log_path + 'sharemsg.log'
sharemsg_logger = configure_logger('sharemsg', log_path)

sharemsg_blueprint = Blueprint('sharemsg',
                               __name__,
                               template_folder='../../templates',
                               static_folder='../../static')

# sharemsg_blueprint = Blueprint('sharemsg', __name__)


def authorization(func):
    def wrapper(*args, **kw):
        ckey = ''
        user_id = 'DEFAULT'
        request_util = RequestUtil()
        res = False
Exemplo n.º 6
0
#!/usr/bin/env python
# -*- coding:utf-8 -*-

from utils.request_util import RequestUtil
from flask import request, jsonify
from conf.constants import *
from utils.authorization import check_ckey
from utils.logger_conf import configure_logger
import requests

log_path = get_logger_file('read_envelope_check_ck.log')
ck_logger = configure_logger('read_envelope_check_ck', log_path)


def authorization(func):
    def wrapper(*args, **kw):
        # ckey = ''
        # user_id = ''
        request_util = RequestUtil()
        user_id = request_util.get_user(request)
        res = False
        if is_check_ckey:
            ckey = request_util.get_ckey(request)
            if ckey:
                if auth_ckey_url:
                    try:
                        r_data = {'ckey': ckey, 'system': 'red_envelope'}
                        ret = requests.post(url=auth_ckey_url, json=r_data)
                        # r_domain.append(ret.json().get('data').get('d'))
                        ck_logger.info("ckey:{},ret:{}".format(ckey, ret.text))
                        if ret.json().get('ret'):
Exemplo n.º 7
0
from utils.get_conf import get_config_file, get_logger_file
from utils.logger_conf import configure_logger

config = get_config_file()
pgconfig = config['postgresql']
host = pgconfig['host']
port = pgconfig['port']
user = pgconfig['user']
database = pgconfig['database']
password = pgconfig['password']
domain = config['qtalk']['domain']
conference_str = 'conference.' + domain
log_path = get_logger_file()
log_path = log_path + '_sql.log'
logger = configure_logger('sql', log_path)


class UserLib:
    def __init__(self):
        self.conn = psycopg2.connect(host=host,
                                     database=database,
                                     user=user,
                                     password=password,
                                     port=port)
        self.conn.autocommit = True

    def search_user(self, username, user_id, limit, offset):
        s_result = list()
        conn = self.conn
        sql = "select aa.user_id,aa.department,aa.icon,aa.user_name,aa.mood from (SELECT a.user_id, a.department, b.url AS icon, a.user_name, b.mood FROM host_users a LEFT JOIN vcard_version b ON a.user_id = b.username WHERE a.hire_flag = 1 AND LOWER(a.user_type) != 's' AND (a.user_id ILIKE '%" + username + "%' OR a.user_name ILIKE '%" + username + "%' OR a.pinyin ILIKE '%" + username + "%')) aa left join (select case when m_from = '" + user_id + "' then m_to else m_from end as contact,max(create_time) mx from msg_history where m_from = '" + user_id + "' or m_to = '" + user_id + "' group by contact) bb on aa.user_id = bb.contact order by bb.mx desc nulls last limit " + str(
Exemplo n.º 8
0
def pay_success():
    current_args = RequestUtil.get_request_args(request)
    logger = configure_logger("pay_success")
    logger.info("支付回调接口参数:" + json.dumps(current_args))

    # 测试的时候暂不验签
    pa = PayAlipay()
    status = pa.check_sign(**current_args)
    if not status:
        logger.info("验签失败")
        return "fail"

    # 商家的appid
    app_id = current_args['app_id']

    if app_id != pay_config['appId']:
        logger.info("appid校验失败")
        return "fail"
    # 如果不是支付回调  直接返回fail
    if current_args['msg_method'] != 'alipay.fund.trans.order.changed':
        logger.info("msg_method 不是 alipay.fund.trans.order.changed")
        return "fail"

    current_args = json.loads(current_args['biz_content'])
    '''
        {
        "action_type": "FINISH",
        "biz_scene": "PERSONAL_PAY",
        "order_id": "20190912110075000006740023648562", #支付宝系统的单据唯一ID
        "origin_interface": "alipay.fund.trans.app.pay", #支付的接口
        "out_biz_no": "qt_20190912162507_298",#商户端的唯一订单号
        "pay_date": "2019-09-12 16:25:15", 
        "pay_fund_order_id": "20190912110075001506740023416000",#支付宝支付资金流水号(转账成功时才返回)
        "product_code": "STD_RED_PACKET",
        "status": "SUCCESS",
        "trans_amount": "0.01"
    }
    '''
    # 只有成功的 才进行下一部
    if current_args['status'] != 'SUCCESS':
        logger.info("本次status:%s ,直接返回success" % current_args['status'])
        return "success"

    # 支付宝交易号
    pay_order_no = current_args['order_id']
    pay_order_line = current_args['pay_fund_order_id']
    # 商家唯一订单号
    out_order_no = current_args['out_biz_no']

    # 支付金额
    amount = float(current_args['trans_amount'])

    # 付款时间
    gmt_payment = current_args['pay_date']

    red_instance = RedEnvelopeSql()
    conn = red_instance.get_pg_conn()
    pg_cursor = red_instance.get_pg_dict_cursor()
    sql = "Select id,state,order_type,credit from public.order_list where order_no=%s"
    try:
        pg_cursor.execute(sql, (out_order_no,))
        row = pg_cursor.fetchone()
        conn.commit()
    except Exception as e:
        pg_cursor.close()
        logger.info("订单号order_no为:%s,数据库执行失败" % out_order_no)
        return "fail"

    if not row:
        pg_cursor.close()
        logger.info("订单未查找成功,订单号order_no为%s" % out_order_no)
        return "fail"

    if row['state'] != 'unpay':
        pg_cursor.close()
        logger.info("订单未查找成功,订单号order_no为%s;订单状态为%s,不在进行操作" % (out_order_no, row['state']))

        if row['state'] == 'pay':
            return "success"
        return "fail"

    if row['order_type'] != 'red_envelope' and row['order_type'] != 'all_average':
        pg_cursor.close()
        logger.info("订单未查找成功,订单号order_no为%s;订单状态为%s,order_type:%s;直接退出" % (out_order_no, row['order_type']))
        return "fail"

    if amount != float(row['credit']):
        pg_cursor.close()
        logger.info("支付金额与订单金额不符,支付金额 %s  VS  订单金额 %s" % (amount, row['credit']))
        return "fail"

    # 修改订单状态
    # auth_no:pay_order_no
    # out_order_no:order_no
    # operation_id:pay_order_line
    # out_request_no:order_line
    # 插入订单流水

    try:
        order_sql = """Update public.order_list set state='pay', pay_order_no=%(pay_order_no)s,pay_order_line=%(pay_order_line)s, pay_time=%(gmt_payment)s
        where order_no=%(out_order_no)s and state='unpay'"""

        pg_cursor.execute(order_sql,
                          {"pay_order_no": pay_order_no, "pay_order_line": pay_order_line, "gmt_payment": gmt_payment,
                           "out_order_no": out_order_no})
        if 0 == parse_psycopg2_statusmessage(pg_cursor.statusmessage):
            pg_cursor.close()
            logger.info("订单未查找成功,订单号order_no为%s;更新失败" % out_order_no)
            return "fail"
        conn.commit()
    except Exception as e:
        pg_cursor.close()
        logger.info("订单号order_no为%s;更新成为pay状态失败" % out_order_no)
        return "fail"

    pay_order = PayOrder(id=row['id'])
    order_trace_result = pay_order.insert_order_trace(order_line=out_order_no)

    # 生成小红包
    if row['order_type'] == 'red_envelope':
        try:
            rel = RedEnvelope(order_id=row['id'])
        except Exception as e:
            logger.info("订单号order_no为%s;红包不存在;error_code:%s" % (out_order_no, str(e)))
            return "fail"

        ret = rel.generate_sub_redenv()
        if not ret['ret']:
            return jsonify({"ret": False, "error_msg": "红包生成失败"})

        # 发送红包消息
        params = {"msg_type": "pay_success", "id": rel.id, "group_id": rel.group_chat_id[0]}
        rel.add_qtalk_message_queue(**params)
    elif row['order_type'] == 'all_average':
        try:
            aas = AllAverageSql()
            ret = aas.pay_success_callback(order_no=out_order_no, )
            if not ret:
                print("aa状态数据库更新失败")
                return 'failed'

            pa = PayAlipay()
            payee_info = aas.get_aa_payee(order_no=out_order_no)
            print("获取 支付者信息 {}".format(payee_info))
            order_line = order_trace_result['data']['order_line']
            print("准备支付")
            print("...original order id: {}".format(pay_order.get_pay_order_no()))
            print("...order_no: {}".format(order_line))
            print("...payee_info: {}".format(payee_info))

            disburse_result = pa.disburse(
                order_no=str(order_line),
                original_order_id=str(pay_order.get_pay_order_no()),
                amount=float(row['credit']),
                payee_logon_id=str(payee_info),
                title=pay_config['all_average']['grab_bill_title']
            )
            print("支付返回 {}".format(disburse_result))
            if not disburse_result['ret']:
                print("支付失败, 没有拿到返回, 结果 {}".format(disburse_result))
                # pg_cursor_normal.execute("rollback")
                # message = message_prefix + "\n红包领取转账失败;\n返回结果:%s" % (json.dumps(disburse_result, ensure_ascii=False))
                # 更新order_trace表

                order_trace_result = pay_order.insert_order_trace(**{
                    "order_line": order_line,
                    "op": "return_balance",
                    "credit": float(row['credit']),
                    "pay_order_no": "",
                    "pay_status": "re_balance_faild",
                    'trace_comments': disburse_result
                })
            else:
                order_trace_result = pay_order.insert_order_trace(**{
                    "order_line": order_line,
                    "op": "return_balance",
                    "credit": float(row['credit']),
                    "pay_order_no": disburse_result['order_id'],
                    "pay_status": "re_balance_ok",
                    'trace_comments': disburse_result
                })
            if order_trace_result['ret'] != 1:
                print("插入失败")
                print("\n红包调用支付宝成功,插入order_trace失败,order_line:%s;请检order_list日志" % order_line)
        except Exception as e:
            print(e)
            print(traceback.print_exc())
            print("aa状态更新失败")
            return "failed"
    return "success"
Exemplo n.º 9
0
# -*- encoding:utf-8 -*-

from flask import Blueprint, request, jsonify
import json
from utils.request_util import RequestUtil
from utils.common_sql import UserLib
from utils.get_conf import get_config_file, get_logger_file
from utils.logger_conf import configure_logger

search_blueprint = Blueprint('search', __name__)

# -------------------------- 生成logger --------------------------
log_path = get_logger_file()
log_path = log_path + '_search.log'
logger = configure_logger('main', log_path)

# -------------------------- 读取默认配置 --------------------------
config = get_config_file()
is_check_ckey = config['qtalk'].getboolean('ckey_check')
if is_check_ckey:
    logger.info("CKEY AUTHORIZATION INITIALING...")
    from utils.authorization import check_ckey
single_portrait = config['qtalk']['single_portrait']
muc_portrait = config['qtalk']['muc_portrait']

# -------------------------- 既定的配置 --------------------------
userGroup = 'Q01'
groupGroup = 'Q02'
singlekeywordGroup = 'Q05'
muckeywordGroup = 'Q06'
commonGroup = 'Q07'
Exemplo n.º 10
0
#!/usr/bin/env python
# -*- coding:utf-8 -*-

# import json
from flask import request, jsonify, render_template, Blueprint
import datetime
import requests
from conf.constants import *
from utils.authorization import check_ckey
from utils.request_util import RequestUtil
from conf.meetingdetail_params_define import *
from utils.logger_conf import configure_logger

log_path = get_logger_file('meetingdetail.log')
meeting_logger = configure_logger('meetingdetail', log_path)

meeting_blueprint = Blueprint('meeting',
                              __name__,
                              template_folder='../../templates',
                              static_folder='../../static')


def authorization(func):
    def wrapper(*args, **kw):
        ckey = ''
        user_id = 'DEFAULT'
        request_util = RequestUtil()
        res = False
        if is_check_ckey:
            ckey = request_util.get_ckey(request)
            if ckey:
Exemplo n.º 11
0
__author__ = 'jingyu.he'

import json
from utils.common_sql import UserLib
from xml.etree import ElementTree as eTree
from conf.search_params_define import if_lookback, if_es
from conf.cache_params_define import SINGLE_KEY, MUC_KEY, SINGLE_TRACE_KEY, MUC_TRACE_KEY, SINGLE_CACHE, MUC_CACHE, \
    ALL_USER_DATA_CACHE, USER_MUCS
from utils.redis_utils import RedisUtil
from utils.logger_conf import get_logger_file, configure_logger
from utils.redis_utils import redis_cli
from utils.common_sql import UserLib, AsyncLib, if_async
from utils.time_utils import TimeUtils
time_utils = TimeUtils()
log_path = get_logger_file('search.log')
lookback_logger = configure_logger('search', log_path)
cache_redis_cli = RedisUtil()


class LookbackLib:
    def __init__(self, args, user_id, timeout=5):
       
        # 参数获取
        self.timeout=timeout
        userlib = None
        self.args = args
        self.user = user_id
        self.group_id = args.get("groupid", "")
        self.offset = int(args.get("start", 0))
        self.limit = int(args.get("length", 5))
        # 关键词处理, 控制长度在2-20个字符之间