コード例 #1
0
ファイル: account.py プロジェクト: isoundy000/learn_python
def vipAutoSupplyPerDay(userId):
    """
    vip每日自动补足
    """
    vipLevel = hallvip.userVipSystem.getVipInfo(userId).get("level", 0)
    key = GameData.autoSupplyKey % config.CHIP_KINDID
    autoSupplyCount = config.getVipConf(vipLevel).get(key, 0)
    chips = userchip.getUserChipAll(userId)
    if autoSupplyCount >= 10000 and chips < autoSupplyCount and weakdata.getDayFishData(
            userId, key, 0) == 0:
        weakdata.incrDayFishData(userId, key, 1)
        lang = util.getLanguage(userId)
        rewards = [{
            "name": config.CHIP_KINDID,
            "count": (autoSupplyCount - chips)
        }]
        message = config.getMultiLangTextConf(
            "ID_VIP_AUTO_SUPPLY_PER_DAY",
            lang=lang) % (autoSupplyCount / 10000)
        mail_system.sendSystemMail(userId,
                                   mail_system.MailRewardType.SystemReward,
                                   rewards, message)
    if ftlog.is_debug():
        ftlog.debug("vipAutoSupplyPerDay", userId, vipLevel, autoSupplyCount,
                    chips, key, autoSupplyCount - chips)
コード例 #2
0
ファイル: account.py プロジェクト: isoundy000/learn_python
def sendWelcomeMail(userId):
    """
    发送欢迎邮件
    """
    message = None
    welcomeMailConfs = config.getCommonValueByKey("ignoreConf")
    clientId = util.getClientId(userId)
    ftlog.debug("sendWelcomeMail", userId, "clientId = ", clientId)
    lang = util.getLanguage(userId)
    rewards = config.getCommonValueByKey("welcomeMailRewards")
    for welcomeMailConf in welcomeMailConfs:
        if clientId in welcomeMailConf.get("clientIds", []):
            # 不可显示实物、人民币相关描述
            message = config.getMultiLangTextConf(
                "ID_CONFIG_BAN_ENTITY_WELCOME_MSG", lang=lang)
        else:
            # 可显示实物、人民币相关描述
            message = config.getMultiLangTextConf(
                "ID_CONFIG_ALLOW_ENTITY_WELCOME_MSG", lang=lang)
    if message:
        mail_system.sendSystemMail(userId,
                                   mail_system.MailRewardType.SystemReward,
                                   rewards,
                                   message=message,
                                   title=config.getMultiLangTextConf(
                                       "ID_MAIL_TITLE_HOT_WELCOME", lang=lang))
コード例 #3
0
def provideTimeMatchRankReward(userId, roomId, rank, rankRewards):
    """
    回馈赛上榜发放宝藏奖励到邮件
    """
    treasureConf = config.getTreasureConf(effectType=EffectType.MatchRankRewardAdd)
    if treasureConf:
        kindId = treasureConf["kindId"]
        level, levelConf = getTreasureInfo(userId, kindId)
        if not levelConf:
            return
        refreshTreasureState(userId, kindId)
        treasureData = getTreasure(userId, kindId)
        if treasureData[INDEX_FINISH_COUNT] >= treasureConf["limitCount"]:
            return
        rewards = []
        lang = util.getLanguage(userId)
        ratio = levelConf["params"]["time_match"]
        for _reward in rankRewards:
            if _reward["name"] in config.BULLET_VALUE:
                name = config.BRONZE_BULLET_KINDID
                count = int(math.ceil(_reward["count"] * config.BULLET_VALUE[_reward["name"]] * ratio))
            else:
                name = _reward["name"]
                count = int(math.ceil(_reward["count"] * ratio))
            rewards.append({"name": name, "count": count})
        if rewards:
            matchName = config.getMultiLangTextConf(gdata.getRoomConfigure(roomId).get("name", ""), lang=lang)
            treasureName = config.getMultiLangTextConf(treasureConf["name"], lang=lang)
            message = config.getMultiLangTextConf("ID_CONFIG_TREASURE_TIME_MATCH_RANK", lang=lang)
            message = message.format(matchName, rank, level, treasureName)
            title = config.getMultiLangTextConf("ID_MAIL_TITLE_TREASURE_REWARD", lang=lang)
            mail_system.sendSystemMail(userId, mail_system.MailRewardType.TreasureReward, rewards, message, title)
            activeTreasure(userId, kindId, treasureData)
コード例 #4
0
 def doReturnFee(self, msg):
     """
     停服准备返还玩家报名费
     """
     # des = u"由于游戏维护导致您离开了比赛,特将此次报名费全额返还,请您查收!非常抱歉给您带来不便,祝您游戏愉快!"
     userList = msg.getParam("users")
     assert (isinstance(userList, list))
     for user in userList:
         userId = user.get("userId", 0)
         if userId <= config.ROBOT_MAX_USER_ID:
             continue
         lang = util.getLanguage(userId)
         des = config.getMultiLangTextConf("ID_DO_RETURN_FEE_MESSAGE",
                                           lang=lang)
         player = self.match.findPlayer(userId)
         if player and self.userFee.get(userId, None):
             fee = self.userFee.get(int(userId))
             rewardsList = []
             if fee:
                 rewardsList = util.convertToFishItems(fee)
             self._logger.debug("doReturnFee", "userId=", userId, "fee=",
                                rewardsList)
             self.match.matchUserIF.unlockUser(self.matchId, self.roomId,
                                               player.instId, userId)
             if rewardsList:
                 mail_system.sendSystemMail(
                     userId, mail_system.MailRewardType.SystemCompensate,
                     rewardsList, des)
コード例 #5
0
def provideFinishGrandPrixReward(userId):
    """
    完成大奖赛发放宝藏奖励到邮件
    """
    treasureConf = config.getTreasureConf(effectType=EffectType.MatchItemReward)
    if treasureConf:
        kindId = treasureConf["kindId"]
        level, levelConf = getTreasureInfo(userId, kindId)
        if not levelConf:
            return
        refreshTreasureState(userId, kindId)
        treasureData = getTreasure(userId, kindId)
        if treasureData[INDEX_FINISH_COUNT] >= treasureConf["limitCount"]:
            return
        rewards = []
        lang = util.getLanguage(userId)
        for _kindId, _count in levelConf.get("params", {}).iteritems():
            rewards.append({"name": int(_kindId), "count": _count})
        if rewards:
            treasureName = config.getMultiLangTextConf(treasureConf["name"], lang=lang)
            message = config.getMultiLangTextConf("ID_CONFIG_TREASURE_FINISH_GRAND_PRIX", lang=lang).format(level,
                                                                                                            treasureName)
            title = config.getMultiLangTextConf("ID_MAIL_TITLE_TREASURE_REWARD", lang=lang)
            mail_system.sendSystemMail(userId, mail_system.MailRewardType.TreasureReward, rewards, message, title)
            activeTreasure(userId, kindId, treasureData)
コード例 #6
0
ファイル: hotfix_CT.py プロジェクト: isoundy000/learn_python
def _main():
    userId = 100220502
    rewards = [{"name": 101, "count": 6560000}]
    message = u"您好,由于我们的问题给您造成不便,非常抱歉。现在补偿您一份小礼物,请您注意查收。祝您游戏愉快~"
    # message = u"您好,因为今天您发现并提供了游戏中出现的问题,现在送您一份小礼物哦~非常感谢您对我们游戏的关注。祝您游戏愉快~ "
    mail_system.sendSystemMail(userId, mail_system.MailType.SystemCompensate,
                               rewards, message)

    from newfish.entity.gift import gift_system
    gift_system.doBuyFishGift(100260920, 7311)
    gift_system.doBuyFishGift(100268749, 7211)
    gift_system.doBuyFishGift(100185545, 7311)
コード例 #7
0
def _triggerUserVipExpChangeEvent(event):
    try:
        rmbs = int(event.toAddExp / 10)
        rewards = [{
            "name": config.SOUVENIR_KINDID,
            "count": int(RMB_SOUVENIR_RATE * rmbs)
        }]
        message = config.getMultiLangTextConf("ID_MAIL_SOUVENIR_COIN_MESSAGE",
                                              lang=util.getLanguage(
                                                  event.userId))
        mail_system.sendSystemMail(event.userId,
                                   mail_system.MailRewardType.SystemReward,
                                   rewards, message)
    except Exception as e:
        ftlog.error("souvenir_coin._triggerUserVipExpChangeEvent error", e,
                    "userId=", event.userId, "toAddExp=", event.toAddExp)
コード例 #8
0
def _triggerTYOpenItemEvent(event):
    userId = event.userId
    itemKind = event.item.itemKind
    lang = util.getLanguage(userId)
    for key, value in config.getChestConf().iteritems():
        if value["kindId"] == itemKind.kindId:
            from hall.entity import halluser
            from hall.entity.todotask import TodoTaskShowInfo, TodoTaskHelper
            from newfish.entity import mail_system
            message = config.getMultiLangTextConf("ID_OPEN_ITEM_GET_REWARD_MSG", lang=lang) % value["name"]
            GameMsg.sendPrivate(FISH_GAMEID, userId, 0, message)
            todoTask = TodoTaskShowInfo(message)
            TodoTaskHelper.sendTodoTask(FISH_GAMEID, userId, todoTask)
            halluser.ensureGameDataExists(userId, FISH_GAMEID, util.getClientId(userId))
            message = config.getMultiLangTextConf("ID_USE_ITEM_GET_REWARD_MSG", lang=lang).format(itemKind.displayName, value["name"])
            rewards = [{"name": value["chestId"], "count": 1}]
            mail_system.sendSystemMail(userId, mail_system.MailRewardType.ChestReward, rewards, message)
            break
コード例 #9
0
def sendUpdateRewards(userId, clientId):
    """
    发放更服奖励
    """
    conf = config.getUpdateVerRewardsConf()
    updateClientVer = conf.get("version")
    if updateClientVer is None:
        return
    clientVersion = gamedata.getGameAttr(userId, config.FISH_GAMEID,
                                         GameData.clientVersion)
    if clientVersion == updateClientVer:
        updateVerRewards = gamedata.getGameAttrJson(userId, config.FISH_GAMEID,
                                                    GameData.updateVerRewards,
                                                    [])
        if clientVersion not in updateVerRewards:
            updateVerRewards.append(clientVersion)
            gamedata.setGameAttr(userId, config.FISH_GAMEID,
                                 GameData.updateVerRewards,
                                 json.dumps(updateVerRewards))
            rewardTye = conf.get("type", 1)
            vipLv = hallvip.userVipSystem.getUserVip(userId).vipLevel.level
            #message = conf.get("msg", "")# u"您的版本更新已完成,以下是更新奖励,祝您游戏愉快!"
            lang = util.getLanguage(userId, clientId)
            message = config.getMultiLangTextConf(conf.get("msg", ""),
                                                  lang=lang)
            rewards = conf.get("rewards", {}).get(str(vipLv),
                                                  {}).get(str(rewardTye), [])
            if rewards:
                mail_system.sendSystemMail(
                    userId, mail_system.MailRewardType.SystemCompensate,
                    rewards, message,
                    config.getMultiLangTextConf(
                        "ID_MAIL_VERSION_UPDATE_REWARDS", lang=lang))
            if ftlog.is_debug():
                ftlog.debug("sendUpdateRewards, userId =", userId, "vip =",
                            vipLv, "type =", rewardTye, "rewards =", rewards,
                            "updateVer =", updateClientVer,
                            "updateVerRewards =", updateVerRewards)
コード例 #10
0
def provideFinishTimeMatchReward(userId, bigRoomId):
    """
    完成回馈赛发放宝藏奖励到邮件
    """
    treasureConf = config.getTreasureConf(effectType=EffectType.MatchRewardAdd)
    if treasureConf:
        kindId = treasureConf["kindId"]
        level, levelConf = getTreasureInfo(userId, kindId)
        if not levelConf:
            return
        refreshTreasureState(userId, kindId)
        treasureData = getTreasure(userId, kindId)
        if treasureData[INDEX_FINISH_COUNT] >= treasureConf["limitCount"]:
            return
        lang = util.getLanguage(userId)
        if str(bigRoomId) in levelConf.get("params", {}):
            matchName = config.getMultiLangTextConf(gdata.getRoomConfigure(bigRoomId).get("name", ""), lang=lang)
            rewards = [{"name": config.CHIP_KINDID, "count": levelConf["params"][str(bigRoomId)]}]
            treasureName = config.getMultiLangTextConf(treasureConf["name"], lang=lang)
            message = config.getMultiLangTextConf("ID_CONFIG_TREASURE_FINISH_TIME_MATCH", lang=lang)
            message = message.format(matchName, level, treasureName)
            title = config.getMultiLangTextConf("ID_MAIL_TITLE_TREASURE_REWARD", lang=lang)
            mail_system.sendSystemMail(userId, mail_system.MailRewardType.TreasureReward, rewards, message, title)
            activeTreasure(userId, kindId, treasureData)
コード例 #11
0
def _sendHonorCompensate(userId):
    """
    称号补偿
    """
    from newfish.entity import mail_system
    from newfish.entity.mail_system import MailRewardType
    oldKey = "honor2:%d:%d" % (FISH_GAMEID, userId)
    value = daobase.executeUserCmd(userId, "HGETALL", oldKey)
    if not value:
        return
    if gamedata.getGameAttrInt(userId, FISH_GAMEID,
                               GameData.compensateOldHonor):
        return

    honorIds = value[0::2]
    infos = [strutil.loads(info, False, True) for info in value[1::2] if info]
    honorData = dict(zip(honorIds, infos))
    compensateRewards = {}
    compensateConf = config.getAchievementConf().get("compensate", {})
    compensateKeys = compensateConf.keys()
    for key_, value_ in honorData.iteritems():
        key_ = str(key_)
        if key_ in compensateKeys and value_[INDEX_STATE] > 0:
            _reward = compensateConf.get(key_, {})
            compensateRewards.setdefault(_reward.get("name"), 0)
            compensateRewards[_reward.get("name")] += _reward.get("count")
    rewards = []
    for k, v in compensateRewards.iteritems():
        rewards.append({"name": int(k), "count": int(v)})
    msg = config.getMultiLangTextConf("ID_HONOR_TASK_CHANGE_REWARD_MSG",
                                      lang=util.getLanguage(userId))
    if rewards:
        mail_system.sendSystemMail(userId, MailRewardType.SystemCompensate,
                                   rewards, msg)
    # daobase.executeUserCmd(userId, "del", oldKey)
    gamedata.setGameAttr(userId, FISH_GAMEID, GameData.compensateOldHonor, 1)
コード例 #12
0
def doBuyGift(userId, clientId, giftId, buyType, itemId=0):
    """
    购买礼包
    """
    if ftlog.is_debug():
        ftlog.debug("doBuyGift===>", userId, clientId, giftId, buyType)
    giftConf = config.getDailyGiftConf(clientId).get(str(giftId), {})
    continuousDay = _getContinuousDay(userId, giftId)
    dayIdx = _getGiftDayIdx(clientId, giftId, continuousDay)
    lang = util.getLanguage(userId, clientId)
    commonRewards = []
    chestRewards = []
    chestId = 0
    giftName = config.getMultiLangTextConf(giftConf["giftName"], lang=lang)
    # 使用其他货币(非direct)购买
    if giftConf.get("otherBuyType", {}).get(buyType):
        price = giftConf.get("otherBuyType", {}).get(buyType)
        # 代购券购买礼包
        if buyType == BT_VOUCHER:
            _consume = [{"name": VOUCHER_KINDID, "count": abs(price)}]
            _ret = util.consumeItems(userId,
                                     _consume,
                                     "BI_NFISH_BUY_ITEM_CONSUME",
                                     intEventParam=int(giftId),
                                     param01=int(giftId))
            if not _ret:
                code = 1
                _sendBuyGiftRet(userId, clientId, giftId, code, chestId,
                                commonRewards, chestRewards)
                return
            else:
                code = 0
                vip_system.addUserVipExp(FISH_GAMEID,
                                         userId,
                                         abs(price) * 10,
                                         "BUY_PRODUCT",
                                         pokerconf.productIdToNumber(
                                             giftConf["productId"]),
                                         giftConf["productId"],
                                         rmbs=abs(price))
                # message = u"您使用%s代购券,购买商品【%s】, 获得%s" % (price, giftConf["giftName"], giftConf["giftName"])
                message = config.getMultiLangTextConf(
                    "ID_BUY_GIFT_RET_BY_VOUCHER",
                    lang=lang).format(price, giftName, giftName)
                GameMsg.sendPrivate(FISH_GAMEID, userId, 0, message)
        else:
            code = 1
            _sendBuyGiftRet(userId, clientId, giftId, code, chestId,
                            commonRewards, chestRewards)
            return
    elif buyType == config.BT_DIAMOND:
        price = giftConf.get("price", 0)
        price, isSucc = store.getUseRebateItemPrice(userId, itemId, price,
                                                    buyType, giftId, clientId)
        code = 0
        if price > 0:
            consumeCount = 0
            if isSucc:
                store.autoConvertVoucherToDiamond(userId, price)
                consumeCount, final = userchip.incrDiamond(
                    userId,
                    FISH_GAMEID,
                    -abs(price),
                    0,
                    "BI_NFISH_BUY_ITEM_CONSUME",
                    int(giftId),
                    util.getClientId(userId),
                    param01=giftId)
            if not isSucc or abs(consumeCount) != price:
                code = 1
                _sendBuyGiftRet(userId, clientId, giftId, code, chestId,
                                commonRewards, chestRewards)
                return
    else:
        code = 0
        # message = u"您购买商品【%s】, 获得%s" % (giftConf["giftName"], giftConf["giftName"])
        message = config.getMultiLangTextConf("ID_BUY_GIFT_RET_BY_DRIECT",
                                              lang=lang).format(
                                                  giftName, giftName)
        GameMsg.sendPrivate(FISH_GAMEID, userId, 0, message)

    # 记录存档
    boughtGift = weakdata.getDayFishData(userId, WeakData.buyFishDailyGift, [])
    boughtGift.append(giftId)
    weakdata.setDayFishData(userId, WeakData.buyFishDailyGift,
                            json.dumps(boughtGift))

    # 记录每日礼包购买次数.
    buyFishDailyGiftTimes = gamedata.getGameAttrJson(
        userId, FISH_GAMEID, GameData.buyFishDailyGiftTimes, {})
    buyFishDailyGiftTimes.setdefault(str(giftId), 0)
    buyFishDailyGiftTimes[str(giftId)] += 1
    gamedata.setGameAttr(userId, FISH_GAMEID, GameData.buyFishDailyGiftTimes,
                         json.dumps(buyFishDailyGiftTimes))

    purchaseData = gamedata.getGameAttrJson(userId, FISH_GAMEID,
                                            GameData.continuousPurchase, {})
    data = purchaseData.get(str(giftId), [0, 0])
    if util.getDayStartTimestamp(
            data[0]) + 24 * 60 * 60 < util.getDayStartTimestamp(
                int(time.time())):
        data[1] = 1
    else:
        data[1] += 1
    data[0] = int(time.time())
    purchaseData[str(giftId)] = data
    gamedata.setGameAttr(userId, FISH_GAMEID, GameData.continuousPurchase,
                         json.dumps(purchaseData))
    # 发奖励
    mail_rewards = []
    giftInfo = giftConf.get("giftInfo", [])
    for gift in giftInfo:
        if gift["day_idx"] == dayIdx:
            for item in gift.get("items", []):
                if util.isChestRewardId(item["itemId"]):  # 宝箱
                    chestId = item["itemId"]
                    rewards = chest_system.getChestRewards(userId, chestId)
                    if buyType == BT_VOUCHER or buyType == config.BT_DIAMOND:
                        code = chest_system.deliveryChestRewards(
                            userId, chestId, rewards, "BI_NFISH_BUY_ITEM_GAIN")
                    else:
                        code = 0
                        gamedata.incrGameAttr(userId, FISH_GAMEID,
                                              GameData.openChestCount, 1)
                        bireport.reportGameEvent("BI_NFISH_GE_CHEST_OPEN",
                                                 userId, FISH_GAMEID, 0, 0,
                                                 int(chestId), 0, 0, 0, [],
                                                 util.getClientId(userId))
                    chestRewards.extend(rewards)
                    mail_rewards.extend([{"name": item["itemId"], "count": 1}])
                else:  # 资产/道具
                    rewards = [{
                        "name": item["itemId"],
                        "count": item["count"]
                    }]
                    if buyType == BT_VOUCHER or buyType == config.BT_DIAMOND:
                        code = util.addRewards(userId,
                                               rewards,
                                               "BI_NFISH_BUY_ITEM_GAIN",
                                               int(giftId),
                                               param01=int(giftId))
                    else:
                        code = 0
                    commonRewards.extend(rewards)
                    mail_rewards.extend(rewards)
            break
    if buyType == BT_VOUCHER or buyType == config.BT_DIAMOND:
        _sendBuyGiftRet(userId, clientId, giftId, code, chestId, commonRewards,
                        chestRewards)
    else:
        message = config.getMultiLangTextConf("ID_DO_BUY_GIFT_MSG",
                                              lang=lang) % giftName
        title = config.getMultiLangTextConf("ID_MAIL_TITLE_DAILY_GIFT",
                                            lang=lang)
        mail_system.sendSystemMail(userId,
                                   mail_system.MailRewardType.SystemReward,
                                   mail_rewards, message, title)
        doSendGift(userId, clientId)
    # 购买礼包事件
    from newfish.game import TGFish
    from newfish.entity.event import GiftBuyEvent
    event = GiftBuyEvent(userId, FISH_GAMEID, giftConf["productId"], buyType,
                         giftId)
    TGFish.getEventBus().publishEvent(event)
    util.addProductBuyEvent(userId, giftConf["productId"], clientId)
コード例 #13
0
ファイル: account.py プロジェクト: isoundy000/learn_python
def sendVipSpringFestivalRewards(userId):
    """
    vip玩家2019年春节礼包
    """
    vip_springfestival_rewards = {
        1: {
            "name": 101,
            "count": 10000
        },
        2: {
            "name": 101,
            "count": 30000
        },
        3: {
            "name": 101,
            "count": 60000
        },
        4: {
            "name": 101,
            "count": 100000
        },
        5: {
            "name": 101,
            "count": 200000
        },
        6: {
            "name": 101,
            "count": 300000
        },
        7: {
            "name": 101,
            "count": 500000
        },
        8: {
            "name": 101,
            "count": 1000000
        },
        9: {
            "name": 101,
            "count": 1600000
        },
        10: {
            "name": 101,
            "count": 3000000
        },
        11: {
            "name": 101,
            "count": 6000000
        },
        12: {
            "name": 101,
            "count": 10000000
        }
    }
    lang = util.getLanguage(userId)
    vip_springfestival_message = config.getMultiLangTextConf(
        "ID_VIP_SPRING_FESTIVAL_MESSAGE", lang=lang)

    springFestival_time = {
        "start": "2019-01-31 00:00:00",
        "end": "2019-02-05 23:59:59"
    }
    if util.isTimeEffective(springFestival_time) is False:
        return
    if gamedata.getGameAttrInt(
            userId, FISH_GAMEID,
            "vip2019SpringFestivalRewards") == 0:  # vip2019NewYearRewards
        vipLevel = hallvip.userVipSystem.getVipInfo(userId).get("level", 0)
        rewards = vip_springfestival_rewards.get(vipLevel, None)
        if rewards is not None:
            gamedata.setGameAttr(userId, FISH_GAMEID,
                                 "vip2019SpringFestivalRewards",
                                 1)  # vip2019NewYearRewards
            mail_system.sendSystemMail(userId,
                                       mail_system.MailRewardType.SystemReward,
                                       [rewards], vip_springfestival_message)
コード例 #14
0
def provideRankReward(userId, rankId, rankType, rank, params):
    """
    特定排行榜上榜发放宝藏奖励到邮件
    """
    from newfish.entity.ranking import ranking_system
    lang = util.getLanguage(userId)
    if rankId == config.RANK_GRAND_PRIX:
        # 大奖赛
        treasureConf = config.getTreasureConf(effectType=EffectType.MatchRankRewardAdd)
        if treasureConf:
            kindId = treasureConf["kindId"]
            level, levelConf = getTreasureInfo(userId, kindId)
            if not levelConf:
                return
            refreshTreasureState(userId, kindId)
            treasureData = getTreasure(userId, kindId)
            if treasureData[INDEX_FINISH_COUNT] >= treasureConf["limitCount"]:
                return
            rewards = []
            ratio = levelConf["params"]["grand_prix"]
            for _reward in params["rewards"]:
                if _reward["name"] in config.BULLET_VALUE:
                    name = config.BRONZE_BULLET_KINDID
                    count = int(math.ceil(_reward["count"] * config.BULLET_VALUE[_reward["name"]] * ratio))
                else:
                    name = _reward["name"]
                    count = int(math.ceil(_reward["count"] * ratio))
                rewards.append({"name": name, "count": count})
            if rewards:
                treasureName = config.getMultiLangTextConf(treasureConf["name"], lang=lang)
                message = config.getMultiLangTextConf("ID_CONFIG_TREASURE_GRAND_PRIX_RANK", lang=lang)
                message = message.format(rank, level, treasureName)
                title = config.getMultiLangTextConf("ID_MAIL_TITLE_TREASURE_REWARD", lang=lang)
                mail_system.sendSystemMail(userId, mail_system.MailRewardType.TreasureReward, rewards, message, title)
                activeTreasure(userId, kindId, treasureData)

    # elif rankType in ranking_system.SbossPointRankTypeDefineIndexDict:
    #     # Boss幸运榜
    #     treasureConf = config.getTreasureConf(effectType=EffectType.BossRankRewardAdd)
    #     if treasureConf:
    #         kindId = treasureConf["kindId"]
    #         level, levelConf = getTreasureInfo(userId, kindId)
    #         if not levelConf:
    #             return
    #         refreshTreasureState(userId, kindId)
    #         treasureData = getTreasure(userId, kindId)
    #         if treasureData[INDEX_FINISH_COUNT] >= treasureConf["limitCount"]:
    #             return
    #         rewards = []
    #         ratio = levelConf["params"]["boss"]
    #         for _reward in params["rewards"]:
    #             if _reward["name"] in config.BULLET_VALUE:
    #                 name = config.BRONZE_BULLET_KINDID
    #                 count = int(math.ceil(_reward["count"] * config.BULLET_VALUE[_reward["name"]] * ratio))
    #             else:
    #                 name = _reward["name"]
    #                 count = int(math.ceil(_reward["count"] * ratio))
    #             rewards.append({"name": name, "count": count})
    #         if rewards:
    #             rankRewardConf = config.getRankRewardConf(rankType)
    #             rankName = config.getMultiLangTextConf(rankRewardConf["rankName"], lang=lang)
    #             treasureName = config.getMultiLangTextConf(treasureConf["name"], lang=lang)
    #             message = config.getMultiLangTextConf("ID_CONFIG_TREASURE_BOSS_RANK", lang=lang).format(rankName, rank, level, treasureName)
    #             title = config.getMultiLangTextConf("ID_MAIL_TITLE_TREASURE_REWARD", lang=lang)
    #             mail_system.sendSystemMail(userId, mail_system.MailRewardType.TreasureReward, rewards, message, title)
    #             activeTreasure(userId, kindId, treasureData)

    elif rankId == config.RANK_ROBBERY_DAY_WIN:
        # 招财赢家榜
        treasureConf = config.getTreasureConf(effectType=EffectType.BossRankRewardAdd)
        if treasureConf:
            kindId = treasureConf["kindId"]
            level, levelConf = getTreasureInfo(userId, kindId)
            if not levelConf:
                return
            refreshTreasureState(userId, kindId)
            treasureData = getTreasure(userId, kindId)
            if treasureData[INDEX_FINISH_COUNT] >= treasureConf["limitCount"]:
                return
            ratio = levelConf["params"]["robbery"]
            count = int(math.ceil(params["originCount"] * ratio))
            rewards = [{"name": config.BRONZE_BULLET_KINDID, "count": count}]
            treasureName = config.getMultiLangTextConf(treasureConf["name"], lang=lang)
            message = config.getMultiLangTextConf("ID_CONFIG_TREASURE_ROBBERY_RANK", lang=lang)
            message = message.format(rank, level, treasureName)
            title = config.getMultiLangTextConf("ID_MAIL_TITLE_TREASURE_REWARD", lang=lang)
            mail_system.sendSystemMail(userId, mail_system.MailRewardType.TreasureReward, rewards, message, title)
            activeTreasure(userId, kindId, treasureData)