Esempio n. 1
0
def mv_pay_pic(src_file_path, tgt_file_name, tgt_file_path):
    """
    移动支付截图文件,从存储的地方移动到下载地方
    :param src_file_path: 源文件路径
    :param tgt_file_name: 目的文件名称
    :param tgt_file_path: 目的文件路径
    :return:
    """
    if not os.path.exists(tgt_file_path):
        os.makedirs(tgt_file_path)

    tgt_path = "%s/%s" % (tgt_file_path, tgt_file_name)
    if platform.system() == 'Linux':
        mv_cmd = "sudo mv %s %s" % (src_file_path, tgt_path)

        # 如果图片存储主机不是本机,则需要ssh远程连接,同时需要能实现ssh无密码登录
        if ArgumentParser().args.pic_store_ip != "localhost":
            mv_cmd = "ssh -p%s %s@%s %s" % (
                ArgumentParser().args.pic_store_port,
                ArgumentParser().args.pic_store_user,
                ArgumentParser().args.pic_store_ip, mv_cmd)

        subprocess.Popen(mv_cmd, shell=True)
        logger.info("mv_pay_pic src_file_path:%s tgt_path:%s, mv_cmd:%s" %
                    (src_file_path, tgt_path, mv_cmd))
Esempio n. 2
0
 def attr_day_seconds(self):
     """
     一天的秒数
     :return:
     """
     return ArgumentParser().args.day_seconds if ArgumentParser(
     ).args.day_seconds else self.day_seconds
Esempio n. 3
0
    def post(self,
             account,
             apply_sorder,
             pay_msg="",
             file_path="",
             file_name="",
             **kwargs):
        """
        nginx文件上传回调
        :param account: 上传账号
        :param apply_sorder: 上传的子申请帮助订单id
        :param pay_msg:  支付消息
        :param file_path: 上传的文件路径
        :param file_name: 上传的文件名
        :param kwargs:  其他参数
        :return:
        """
        apply_help_pay_dic = ApplyHelpPayMgr().get_data_by_sorder(apply_sorder)
        apply_help_dic = ApplyHelpMgr().get_data_by_order(
            apply_help_pay_dic['apply_order'])
        if apply_help_dic['apply_uid'] != account.id:
            logger.info(
                "apply_help_paid ERROR_LOGIC, apply_uid not valid, apply_uid:%s, id:%s"
                % (apply_help_dic['apply_uid'], account.id))
            self.set_status(error_code.ERROR_LOGIC, 'Parameter Error')
            return {"result": error_code.ERROR_LOGIC}

        if apply_help_pay_dic['apply_pstat'] != APYS_PAY_WAIT:
            logger.warn(
                "apply_help_paid ERROR_LOGIC, apply stat is not APYS_PAY_WAIT, apply_uid:%s, id:%s"
                % (apply_help_dic['apply_uid'], account.id))
            self.set_status(error_code.ERROR_LOGIC, 'Parameter Error')
            return {"result": error_code.ERROR_LOGIC}

        if file_path:
            suffix = file_name.split(".")[1]

            new_file_name = "%s_%s.%s" % (
                account.id,
                urllib2.quote(
                    time.strftime("%Y_%m_%d_%H_%M_%S",
                                  time.localtime(time.time()))), suffix)

            # 将nginx临时上传文件移动到存储路径
            mv_pay_pic(file_path, new_file_name,
                       ArgumentParser().args.pic_store_path)

            cur_piture_link_path = ArgumentParser(
            ).args.pic_download_path + new_file_name
        else:
            cur_piture_link_path = ""
        ApplyHelpPayMgr().do_pay(apply_sorder, cur_piture_link_path, pay_msg)
        return {
            "result": error_code.ERROR_SUCCESS,
            "apply_help": {
                "apply_sorder": apply_sorder,
                "apply_pstat": apply_help_pay_dic['apply_pstat']
            }
        }
Esempio n. 4
0
def is_using_system_accept():
    """
    判断是否使用系统接受帮助
    :return:
    """
    if ArgumentParser().args.force_mtype == "system":
        logger.warn("is_using_system_accept force use the system match!!!!")
        return True
    elif ArgumentParser().args.force_mtype == "user":
        logger.warn("is_using_system_accept force use the user match!!!!")
        return False
    # 系统默认使用用户匹配方式,系统匹配采用手动匹配方式
    return False
Esempio n. 5
0
    def do_finish(self, apply_sorder):
        """
        申请帮助完成
        :param apply_sorder: 申请帮助子订单id
        :return:
        """
        upd_dic = {
            "apply_sorder": apply_sorder,
            "apply_pstat": APYS_PAY_FINISH
        }
        self.update_dic(apply_sorder, upd_dic)

        from mmm_da.lib.help.control import ApplyHelpMgr
        apply_help_pay_dic = self.get_data_by_sorder(apply_sorder)
        apply_help = ApplyHelpMgr().get_data_by_order(
            apply_help_pay_dic['apply_order'])

        # 删除支付截图
        if apply_help_pay_dic['apply_piture']:
            file_name = apply_help_pay_dic['apply_piture'].split("/")[-1]
            pic_store_path = "%s/%s" % (ArgumentParser().args.pic_store_path,
                                        file_name)

            logger.info("ApplyHelpMgr::do_finish del pic_store_path:%s " %
                        pic_store_path)
            rm_pay_pic(pic_store_path)

        # 订单完成奖励
        BonusMgr().on_apply_finish(apply_help['apply_uid'],
                                   apply_help_pay_dic['apply_pmoney'])

        # 内存删除完成订单
        self.__del_data_2_mem(apply_help_pay_dic)
Esempio n. 6
0
def __is_account_valid(account,
                       enable_active=ArgumentParser().args.enable_active,
                       enable_seal=ArgumentParser().args.enable_seal):
    """
    判断账户是否有效
    :param account: 账户
    :param enable_active: 是否开启激活检测功能
    :param enable_seal:   是否开启封号检测功能
    :return:
    """
    if enable_seal and account.attr_stat == SEALED:
        logger.info("is_account_valid ERROR_LOGIC, account is sealed, id:%s" %
                    account.id)
        return error_code.ERROR_ACCOUNT_SEALED

    if enable_active and account.attr_stat == UNACTIVED:
        logger.info(
            "is_account_valid ERROR_LOGIC, account is unactived, id:%s" %
            account.id)
        return error_code.ERROR_ACCOUNT_UNACTIVED
    return error_code.ERROR_SUCCESS
Esempio n. 7
0
def rm_pay_pic(tgt_file_path):
    """
    删除支付截图文件,
    :param tgt_file_path: 目的文件路径
    :return:
    """
    if not os.path.exists(tgt_file_path):
        os.makedirs(tgt_file_path)

    if platform.system() == 'Linux':
        rm_cmd = "sudo rm %s" % tgt_file_path

        # 如果图片存储主机不是本机,则需要ssh远程连接,同时需要能实现ssh无密码登录
        if ArgumentParser().args.pic_store_ip != "localhost":
            rm_cmd = "ssh -p%s %s@%s %s" % (
                ArgumentParser().args.pic_store_port,
                ArgumentParser().args.pic_store_user,
                ArgumentParser().args.pic_store_ip, rm_cmd)

        subprocess.Popen(rm_cmd, shell=True)
        logger.info("rm_pay_pic tgt_file_path:%s, rm_cmd:%s" %
                    (tgt_file_path, rm_cmd))
Esempio n. 8
0
    def after_access_process(self, args, kwargs):
        if http_sign and ArgumentParser().args.use_sign:
            self.result['sign'] = http_sign

        if not use_http_render:
            return

        if self.result is None:
            return

        if need_json_dumps():
            self.write(ujson.dumps(self.result))
        else:
            self.write(self.result)
Esempio n. 9
0
 def get_db_params(self):
     """
     获取db参数
     :return:
     """
     logger.info("RpcHandler::get_db_params!!!")
     args = ArgumentParser().args
     return {
         "db_host": args.db_host,
         "db_port": args.db_port,
         "db_user": args.db_user,
         "db_password": args.db_password,
         "db_name": args.db_name
     }
Esempio n. 10
0
        def crypto_param_adaptor(self, *args, **kwargs):
            crypt = XXTEACrypto(ArgumentParser().args.xxtea_key) \
                if use_xxtea \
                else UrlCrypto()
            args = [crypt.decrypt(arg) for arg in args]
            kwargs = dict(
                (k, crypt.decrypt(kwargs[k])) for k, v in kwargs.items())

            body = crypt.decrypt(self.request.body)
            kwargs.update(dict(pair.split("=")
                               for pair in body.split("&"))) if body else None

            result = fun(self, *args, **kwargs)
            ouput_result = crypt.encrypt(result)
            return ouput_result
Esempio n. 11
0
#!/usr/bin/python2.7
# coding=utf-8
"""
Created on 2015-7-17

@author: Jay
"""
from utils.crypto.sign import Signer
from utils.service_control.finder import get_cur_ip
from utils.service_control.parser import ArgumentParser

HTTP_SIGN = Signer().gen_sign(get_cur_ip(), ArgumentParser().args.http_port)
Esempio n. 12
0
#!/usr/bin/python2.7
# coding=utf-8
"""
Created on 2016/5/3

@author: Jay
"""

from utils.data.db.mysql_manual import SchemaTable
from utils.service_control.cacher import ParamCacher
from utils.service_control.parser import ArgumentParser
from setting import DB_NAME


DBBeiqiSspInst = SchemaTable.instance(ParamCacher().db_instance, ArgumentParser().args.db_name, DB_NAME)
Esempio n. 13
0
 def __init__(self, table_name):
     super(DBSchemaTable, self).__init__(ParamCacher().db_instance,
                                         ArgumentParser().args.db_name,
                                         table_name)
Esempio n. 14
0
def init_cron_job():
    """
    初始化系统cron job
    :return:
    """
    apply_req = ArgumentParser().args.apply_req
    match = ArgumentParser().args.match
    apply_pay = ArgumentParser().args.apply_pay
    accept_req = ArgumentParser().args.accept_req
    apply_wait = ArgumentParser().args.apply_wait

    # init
    AcceptApplyMatcher().init(AcceptHelpMgr().match_ls,
                              ApplyHelpMgr().match_ls,
                              AcceptHelpMgr().do_accept,
                              ApplyHelpMgr().do_apply,
                              ServerInfoMgr().make_unique_id)

    Jobs().add_cron_job(ApplyReqFilter().filter,
                        **{apply_req.split('_')[0]: int(apply_req.split('_')[1])})
    Jobs().add_cron_job(AcceptApplyMatcher().match,
                        **{match.split('_')[0]: int(match.split('_')[1])})

    if ArgumentParser().args.enable_pay_check:
        Jobs().add_cron_job(ApplyPayFilter().filter,
                            **{apply_pay.split('_')[0]: int(apply_pay.split('_')[1])})

    Jobs().add_cron_job(AcceptReqFilter().filter,
                        **{accept_req.split('_')[0]: int(accept_req.split('_')[1])})
    Jobs().add_cron_job(ApplyWaitFilter().filter,
                        **{apply_wait.split('_')[0]: int(apply_wait.split('_')[1])})
    [logger.warn("cron job:%s" % {"cron": cron_job.cron, "func": cron_job.func}) for cron_job in Jobs().cron_job]
Esempio n. 15
0
    def post(self, account, mafuluo, **kwargs):
        """
        接受帮助的时候,如果有一单申请帮助未完成,则不能接受帮助
        :param account: 账号
        :param mafuluo: 提取的马夫罗,整形
        :param kwargs:
        :return:
        """
        mafuluo = int(mafuluo)
        # 提取的马夫罗总数必须大于0
        if mafuluo <= 0 :
            logger.info("accept_help ERROR_LOGIC, mafuluo:%s<=0!!!, id:%s" % (mafuluo, account.id))
            self.set_status(error_code.ERROR_LOGIC, 'Parameter Error')
            return {"result": error_code.ERROR_LOGIC}

        # 提取的马夫罗必须小于账号拥有的马夫罗
        if mafuluo > account.attr_mafuluo:
            logger.info("accept_help ERROR_LOGIC, mafuluo:%s>=acount.attr_mafuluo:%s!!!, id:%s" % (mafuluo, account.attr_mafuluo, account.id))
            self.set_status(error_code.ERROR_LOGIC, 'Parameter Error')
            return {"result": error_code.ERROR_LOGIC}

        # 申请帮助还在请求处理,
        if ApplyHelpReqMgr().get_unfinish(account.id):
            logger.info("accept_help ERROR_LOGIC, has ApplyHelpReqMgr!!!, id:%s" % account.id)
            self.set_status(error_code.ERROR_LOGIC, 'Parameter Error')
            return {"result": error_code.ERROR_LOGIC}

        # 申请帮助还在匹配处理
        if ApplyHelpMgr().get_unfinish(account.id):
            logger.info("accept_help ERROR_LOGIC, has ApplyHelpMgr!!!, id:%s" % account.id)
            self.set_status(error_code.ERROR_LOGIC, 'Parameter Error')
            return {"result": error_code.ERROR_LOGIC}

        # 接受帮助还在请求处理,
        if AcceptHelpReqMgr().get_unfinish(account.id):
            logger.info("apply_help ERROR_LOGIC, has AcceptHelpReqMgr!!!, id:%s" % account.id)
            self.set_status(error_code.ERROR_LOGIC, 'Parameter Error')
            return {"result": error_code.ERROR_LOGIC}

        # 接受帮助还在匹配处理
        if AcceptHelpMgr().get_unfinish(account.id):
            logger.info("apply_help ERROR_LOGIC, has AcceptHelpMgr!!!, id:%s" % account.id)
            self.set_status(error_code.ERROR_LOGIC, 'Parameter Error')
            return {"result": error_code.ERROR_LOGIC}

        # 资金平衡判断
        if ArgumentParser().args.use_system_balance:
            if ServerInfoMgr().attr_total_accept_money + mafuluo + ServerInfoMgr().attr_system_balance\
                    > ServerInfoMgr().attr_total_apply_money:
                logger.info("accept_help ERROR_LOGIC, has reach the system balance!!!, "
                            "total_accept_money:%s, total_apply_money:%s, system_balance:%s, mafuluo:%s"
                            %(ServerInfoMgr().attr_total_accept_money,
                              ServerInfoMgr().attr_total_apply_money,
                              ServerInfoMgr().attr_system_balance,
                              mafuluo))
                self.set_status(error_code.EEROR_ACCEPT_BALANCE, 'Parameter Error')
                return

        # 扣除mafuluo
        account.attr_mafuluo -= mafuluo

        # 请求接受帮助
        AcceptHelpReqMgr().add_req(account.id, mafuluo)

        accept_help_req = AcceptHelpReqMgr().get_unfinish(account.id)
        return {"result": error_code.ERROR_SUCCESS,
                "accept_help": accept_help_req_2_accept_help(accept_help_req)}
Esempio n. 16
0
 def sm_ip(self):
     return ArgumentParser().args.sm_ip
Esempio n. 17
0
#!/usr/bin/python2.7
# coding=utf-8
"""
Created on 2016/5/3

@author: Jay
"""
from utils.data.db.mysql_manual import SchemaTable
from utils.service_control.cacher import ParamCacher
from utils.service_control.parser import ArgumentParser
from setting import DB_NAME

DBBeiqiSspInst = SchemaTable.instance(ParamCacher().db_instance,
                                      ArgumentParser().args.db_name, DB_NAME)