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 }
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
def get(self, account, notice, **kwargs): # 将当前的通知存储起来 if ServerInfoMgr().attr_notice: HistoryNoticeMgr().add_notice(ServerInfoMgr().attr_notice) ServerInfoMgr().attr_notice = notice return ServerInfoMgr().attr_notice
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() }
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()
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]
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
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
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)
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
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)
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)
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)
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
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)
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
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)
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
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
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'])
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))
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))
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)}
def get(self, account, **kwargs): return ServerInfoMgr().get_info_dic()
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 }