Beispiel #1
0
 def get(self, **kwargs):
     new_account_id = ServerInfoMgr().attr_min_account_id + 1
     ServerInfoMgr().attr_min_account_id = new_account_id
     return {
         "result": error_code.ERROR_SUCCESS,
         "new_account_id": new_account_id
     }
Beispiel #2
0
    def active_account(self, oper_account, active_id):
        """
        账号激活
        :param oper_account: 操作账号
        :param active_id: 激活id
        :return:
        """
        from mmm_da.lib.account.control import AccountMgr
        activing_account = AccountMgr().get_data_by_id(active_id)
        if not oper_account or not activing_account:
            logger.info("ActiveMgr::active_account Error, not account!!!, oper_id:%s, active_id:%s" % (oper_account.id, active_id))
            return False

        # 如果目标账户已经激活,不再激活
        if activing_account.attr_stat == ACTIVED:
            logger.info("ActiveMgr::active_account Error, has actived active_id:%s" % active_id)
            return False

        from mmm_da.lib.server_info import ServerInfoMgr
        if oper_account.attr_active_coin < ServerInfoMgr().attr_active_coin_loss:
            logger.info("ActiveMgr::active_account Error, oper account not enough active_coin!!!, oper_id:%s" % oper_account.id)
            return False

        # 扣除激活消耗
        oper_account.attr_active_coin -= ServerInfoMgr().attr_active_coin_loss

        # 激活
        activing_account.attr_stat = ACTIVED
        logger.info("ActiveMgr::active_account Success!!!, oper_id:%s, active_id:%s" % (oper_account.id, active_id))
        return True
Beispiel #3
0
    def get(self, account, notice, **kwargs):
        # 将当前的通知存储起来
        if ServerInfoMgr().attr_notice:
            HistoryNoticeMgr().add_notice(ServerInfoMgr().attr_notice)

        ServerInfoMgr().attr_notice = notice
        return ServerInfoMgr().attr_notice
Beispiel #4
0
    def get(self, account, field, value, **kwargs):
        if field not in CAN_UPDAET_KEY_SET:
            self.set_status(error_code.ERROR_LOGIC, 'Parameter Error')
            return {"result": error_code.ERROR_LOGIC}

        ServerInfoMgr().update_value(field, value)
        return {
            "result": error_code.ERROR_SUCCESS,
            "server_info": ServerInfoMgr().get_info_dic()
        }
Beispiel #5
0
    def post(self, account, **kwargs):
        if not is_param_in(kwargs, CAN_UPDAET_KEY_SET):
            logger.info("account post ERROR_LOGIC, not is_param_in, id:%s" %
                        account.id)
            self.set_status(error_code.ERROR_LOGIC, 'Parameter Error')
            return {"result": error_code.ERROR_LOGIC}

        valid_kwargs = get_valid_param(kwargs, CAN_UPDAET_KEY_SET)
        for k, v in valid_kwargs.items():
            ServerInfoMgr().update_value(k, v)
        return ServerInfoMgr().get_info_dic()
Beispiel #6
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]
Beispiel #7
0
def calc_match_coin(apply_money):
    """
    计算排单币
    :param apply_money: 申请帮助的金额
    :return:
    """
    from mmm_da.lib.server_info import ServerInfoMgr
    return apply_money * ServerInfoMgr().attr_match_coin_loss / 100
Beispiel #8
0
    def add_req(self, apply_req_uid, apply_req_money):
        """
        添加申请帮助请求
        :param apply_req_uid: 申请帮助请求用户id
        :param apply_req_money: 申请帮助请求金额
        :return:
        """
        data_dic = {
            'id': ServerInfoMgr().make_unique_id(),
            'apply_req_uid': apply_req_uid,
            'apply_req_time': time.time(),
            'apply_req_money': apply_req_money,
            'apply_req_stat': APYRS_REQUEST
        }
        self.__insert_dic(data_dic)

        # 总申请帮助次数增加
        ServerInfoMgr().attr_total_apply_cnt += 1
Beispiel #9
0
def daysdiff(d1, d2):
    """
    计算两个时间戳的天数差距
    :param d1: 时间戳
    :param d2: 时间戳
    :return:
    """
    from mmm_da.lib.server_info import ServerInfoMgr
    return float((d1 - d2) / ServerInfoMgr().attr_day_seconds)
Beispiel #10
0
    def add_req(self, accept_req_uid, accept_req_money):
        """
        添加接受帮助请求
        :param accept_req_uid: 接受帮助请求用户id
        :param accept_req_money: 接受帮助请求金额
        :return:
        """
        data_dic = {
            'id': ServerInfoMgr().make_unique_id(),
            'accept_req_uid': str(accept_req_uid),
            'accept_req_time': time.time(),
            'accept_req_money': accept_req_money,
            'accept_req_stat': ACPRS_REQUEST
        }
        self.__insert_dic(data_dic)

        # 增加接受帮助总次数
        ServerInfoMgr().attr_total_accept_cnt += 1
Beispiel #11
0
    def init(self, data_ls):
        self.__init__()
        for dic in data_ls:
            self.__add_data_2_mem(dic)

        filter_params = {}
        filter_params.setdefault("accept_match_min_days",
                                 ServerInfoMgr().attr_accept_match_min_days)
        filter_params.setdefault("days_diff_fun", daysdiff)
        AcceptReqFilter().init(self.req_ls, self.do_match, filter_params)
Beispiel #12
0
def hoursdiff(d1, d2):
    """
    计算两个时间戳的小时数差距
    :param d1: 时间戳
    :param d2: 时间戳
    :return:
    """
    from mmm_da.lib.server_info import ServerInfoMgr
    hour_seconds = ServerInfoMgr().attr_day_seconds / float(24)
    return float((d1 - d2) / hour_seconds)
Beispiel #13
0
    def init(self, data_ls):
        self.__init__()

        for dic in data_ls:
            self.__add_data_2_mem(dic)

        filter_params = {}
        filter_params.setdefault("apply_aft_accept_hour",
                                 ServerInfoMgr().attr_apply_aft_accept_hour)
        filter_params.setdefault("hours_diff_fun", hoursdiff)
        ApplyWaitFilter().init(self.wait_ls, self.do_not_apply, filter_params)
Beispiel #14
0
    def del_req(self, req_id):
        """
        删除请求队列
        :param req_id:
        :return:
        """
        self.__del_data_2_mem(self.get_data_by_id(req_id))
        self.__ddp.del_db_dict(req_id, {"id": req_id})

        # 请求队列个数减少
        ServerInfoMgr().attr_total_apply_cnt -= 1
Beispiel #15
0
    def init(self, data_ls):
        self.__init__()

        for dic in data_ls:
            self.__add_data_2_mem(dic)

        filter_params = {}
        filter_params.setdefault("apply_pay_max_days",
                                 ServerInfoMgr().attr_apply_pay_max_days)
        filter_params.setdefault("days_diff_fun", daysdiff)
        ApplyPayFilter().init(self.apply_wait_ls, self.do_deny_pay,
                              filter_params)
Beispiel #16
0
    def do_apply(self, apply_sorder, accept_order, apply_order, apply_pmoney):
        """
        申请帮助处理, 产生一个申请帮助支付的订单
        :param apply_sorder: 申请子订单id
        :param accept_order:接受订单id
        :param apply_order:申请订单id
        :param apply_pmoney: 申请帮助金钱
        :return:
        """
        data_dic = {
            'apply_sorder': apply_sorder,
            'accept_order': accept_order,
            'apply_order': apply_order,
            'apply_mtime': time.time(),
            'apply_pmoney': apply_pmoney,
            'apply_interest': ServerInfoMgr().attr_apply_interest,
            'apply_pstat': APYS_PAY_WAIT
        }
        self.__insert_dic(data_dic)

        # 总申请帮助总额增加
        ServerInfoMgr().attr_total_apply_money += apply_pmoney
Beispiel #17
0
 def add_bonus_log(self, afctd_uid, afct_uid, afct_bonus, afct_type):
     """
     添加奖励日志,直接插入数据库
     :param afctd_uid: 被奖励的uid
     :param afct_uid:  奖励者
     :param afct_bonus: 奖金
     :param afct_type:  奖励类型
     :return:
     """
     bonus_log_dic = {"afctd_uid": afctd_uid,
                      "afct_uid": afct_uid,
                      "afct_bonus": afct_bonus,
                      "afct_type": afct_type,
                      "afct_time": time.time()}
     self.__ddp.ist_db_dict(ServerInfoMgr().make_unique_id(), bonus_log_dic)
Beispiel #18
0
    def do_accept(self, accept_order, apply_money):
        """
        接受帮助处理
        :param accept_order:接受帮助订单id
        :param apply_money: 申请帮助金钱
        :return:
        """
        assert apply_money > 0
        accept_help = self.__oid_2_all_match_dic.get(accept_order)
        accept_lmoney = accept_help['accept_lmoney'] - apply_money
        assert accept_lmoney >= 0

        upd_dic = {
            "accept_order": accept_order,
            "accept_lmoney": accept_lmoney
        }

        self.update_dic(accept_order, upd_dic)

        # 总接受帮助总额增加
        ServerInfoMgr().attr_total_accept_money += apply_money
Beispiel #19
0
    def on_confirm_pay(self, apply_sorder):
        """
        确认支付奖励处理
        :param apply_sorder: 申请帮助子订单id
        :return:
        """
        from mmm_da.lib.server_info import ServerInfoMgr, daysdiff
        from mmm_da.lib.help_pay.control import ApplyHelpPayMgr
        from mmm_da.lib.help.control import ApplyHelpMgr
        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'])

        days2confirm = daysdiff(time.time(), apply_help_dic['apply_stime'])
        for reward_hour, reward_int in ServerInfoMgr().attr_cfmd_reward_dic.items():
            reward_hour = float(reward_hour)
            if days2confirm <= reward_hour:
                upd_dic = {"apply_sorder": apply_sorder,
                           "apply_interest": apply_help_pay_dic['apply_interest'] + reward_int}
                ApplyHelpPayMgr().update_dic(apply_sorder, upd_dic)
                logger.warn("BonusMgr::on_confirm_pay reward!!!, reward_hour:%s,reward_int:%s "
                            % (reward_hour, reward_int))
                break
Beispiel #20
0
    def do_match(self, id):
        """
        进入匹配队列
        :param id: 进入匹配的id
        :return:
        """
        accept_dic = self.get_data_by_id(id)

        # upd data
        upd_dic = {"id": id, "accept_req_stat": ACPRS_FINISH}
        self.__update_dic(id, upd_dic)

        # 接受帮助请求完成的时候可以删除内存
        self.__del_data_2_mem(accept_dic)

        # 减少接受帮助总次数
        ServerInfoMgr().attr_total_accept_cnt -= 1

        # 加入接受帮助管理器
        AcceptHelpMgr().add_accept_help(accept_dic['id'],
                                        accept_dic['accept_req_uid'],
                                        accept_dic['accept_req_money'])
Beispiel #21
0
    def do_match(self, id):
        """
        进入匹配队列处理
        :param id: id
        :return:
        """
        # upd data
        upd_dic = {'id': id, 'apply_req_stat': APYRS_FINISH}

        self.__update_dic(id, upd_dic)

        # 请求队列个数减少
        ServerInfoMgr().attr_total_apply_cnt -= 1

        # 加入申请帮助管理器,进入匹配队列
        apply_req_dic = self.get_data_by_id(id)
        ApplyHelpMgr().add_apply_help(apply_req_dic['id'],
                                      apply_req_dic['apply_req_uid'],
                                      apply_req_dic['apply_req_money'],
                                      apply_req_dic['apply_req_time'])

        # 从匹配队列删除
        self.__del_data_2_mem(self.get_data_by_id(id))
Beispiel #22
0
    def on_apply_cancel(self, apply_uid, apply_money):
        """
        申请帮助取消支付奖金惩罚
        :param apply_uid:   申请帮助uid
        :param apply_money: 申请帮助金额
        :return:
        """
        from mmm_da.lib.server_info import ServerInfoMgr
        from mmm_da.lib.account.control import AccountMgr
        apply_account = AccountMgr().get_data_by_id(apply_uid)
        leader_account = AccountMgr().get_data_by_id(apply_account.attr_leader_id)
        assert leader_account

        punish_money = -apply_money * ServerInfoMgr().attr_apply_unpaid_punish / 100
        leader_account.attr_mafuluo += punish_money

        # 增加奖金日志
        BonusLogMgr().add_bonus_log(apply_account.attr_leader_id,
                                    apply_uid,
                                    punish_money,
                                    LAYER_APPLY_UNPAID_PUNISH)

        logger.info("BonusMgr::on_apply_cancel punish!!! leader_id={luid}, apply_uid={auid}, punish_money={pmoney}"
                    .format(luid=apply_account.attr_leader_id, auid=apply_uid, pmoney=punish_money))
Beispiel #23
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)}
Beispiel #24
0
 def get(self, account, **kwargs):
     return ServerInfoMgr().get_info_dic()
Beispiel #25
0
 def get(self, account, **kwargs):
     return {
         "apply_req_count": ServerInfoMgr().attr_total_apply_cnt,
         "accept_req_count": ServerInfoMgr().attr_total_accept_cnt,
         "notice": ServerInfoMgr().attr_notice
     }