Example #1
0
def getShareTaskInfo(userId):
    """
    获取分享有礼信息
    """
    shareGroupIds = weakdata.getDayFishData(userId, "shareGroupIds", [])
    shareGroupTotalCount = config.getCommonValueByKey("shareGroupTotalCount")
    shareGroupCurrentCount = min(len(shareGroupIds), shareGroupTotalCount)
    groupTask = {
        "taskId": 0,
        "progress": [shareGroupCurrentCount, shareGroupTotalCount], # 分享群数/总数
        "rewards": config.getCommonValueByKey("shareGroupRewards"),
        "state": weakdata.getDayFishData(userId, "shareGroupReward", 0)
    }
    if groupTask["state"] == 0 or util.isVersionLimit(userId):
        module_tip.cancelModuleTipEvent(userId, "invite", 0)
    inviteTasks = []
    inviteList = refreshInviteData(userId)
    for _, inviteData in enumerate(inviteList):
        name = util.getNickname(inviteData["userId"])
        avatar = userdata.getAttr(inviteData["userId"], "purl")
        if inviteData.get("isAppUser", 0) == 1:
            continue
        if inviteData.get("isNewUser"):
            rewards = config.getCommonValueByKey("newUserInviteFriendRewards")
        else:
            rewards = config.getCommonValueByKey("inviteFriendRewards")
        task = {
            "taskId": inviteData["inviteId"],
            "name": name,
            "avatar": avatar,
            "vip": hallvip.userVipSystem.getUserVip(userId).vipLevel.level,
            "state": 2 if inviteData.get("receiveTime") else 1,
            "rewards": rewards
        }
        inviteTasks.append(task)
    inviteCount = weakdata.getDayFishData(userId, "inviteCount", 0)
    inviteTotalCount = config.getCommonValueByKey("inviteLimitCount", 99999)
    inviteCount = min(inviteCount, inviteTotalCount)
    friendTask = {
        "progress": [inviteCount, inviteTotalCount],
        "rewards": config.getCommonValueByKey("inviteFriendRewards"),
        "newUserRewards": config.getCommonValueByKey("newUserInviteFriendRewards"),
        "tasks": inviteTasks
    }
    message = MsgPack()
    message.setCmd("share_task_info")
    message.setResult("gameId", FISH_GAMEID)
    message.setResult("userId", userId)
    if not util.isVersionLimit(userId):
        message.setResult("groupTask", groupTask)
    message.setResult("friendTask", friendTask)
    router.sendToUser(message, userId)
Example #2
0
def getCoinStore(userId, clientId):
    """
    金币商店
    """
    isVerLimited = util.isVersionLimit(userId)
    coinItems = []
    coinStoreConf = config.getStoreConf(clientId).get("coinStore", {})
    coinStoreTab = {"name": u"购买金币", "subStore": "coin", "iconType": "coin"}
    vipLevel = hallvip.userVipSystem.getVipInfo(userId).get("level", 0)
    buyCoinCountDict = gamedata.getGameAttrJson(userId, FISH_GAMEID,
                                                GameData.buyCoinCount, {})
    platformOS = gamedata.getGameAttr(userId, FISH_GAMEID, GameData.platformOS)
    if not util.isVersionLimit(userId) or platformOS == "android":
        for productId, product in coinStoreConf.iteritems():
            if isInvalidePruduct(isVerLimited, product):
                continue
            buyCoinCount = buyCoinCountDict.get(productId, 0)
            if buyCoinCount > 0:
                index = 1
                if vipLevel >= product["additionVip"]:
                    index = 2
            else:
                index = 0
            if index >= len(product["name"]) or index >= len(
                    product["addition"]) or index >= len(product["count"]):
                index = 0
            data = {
                "id": productId,
                "name": product["name"][index],
                "nameurl": "",
                "price": product["price"],
                "priceurl": "",
                "desc": "",
                "discount": [],
                "pic": product["pic"],
                "tag": product["tag"],
                "buy_type": product["buyType"],
                "price_diamond": 0,
                "addition": product["addition"][index],
                "count": product["count"][index],
                "label": product["label"][index],
                "other_buy_type": product.get("otherBuyType", {}),
                "item_id": product.get("itemId", 0),
                "otherProductInfo": {
                    BT_VOUCHER:
                    getVoucherProduct(product.get("otherBuyType", {}))
                }
            }
            coinItems.append(data)
    coinStoreTab["items"] = coinItems
    return coinStoreTab
Example #3
0
def _main1():
    userId = 10002
    a = not util.isVersionLimit(userId)
    b = not util.isPurchaseLimit(userId)
    c = util.isFinishAllRedTask(userId)
    clientVersion = gamedata.getGameAttr(userId, config.FISH_GAMEID,
                                         GameData.clientVersion)
    if clientVersion in util.getReviewVersionList(
            userId):  # config.getPublic("reviewClientVersion", []):
        ftlog.debug('6666666666666', clientVersion,
                    util.getReviewVersionList(userId))
    state = not util.isVersionLimit(userId) and not util.isPurchaseLimit(
        userId) and util.isFinishAllRedTask(userId)
    ftlog.debug(state, a, b, c, "777777777777777")
Example #4
0
def doSendLevelGift(userId, clientId):
    """
    获取升级礼包数据
    """
    message = MsgPack()
    message.setCmd("levelGiftData")
    message.setResult("gameId", FISH_GAMEID)
    message.setResult("userId", userId)
    giftInfo = []
    if not util.isVersionLimit(userId) and not util.isPurchaseLimit(userId) and util.isFinishAllNewbieTask(userId):
        levelGiftConf = config.getLevelGiftConf()
        gunLv = util.getGunLevelVal(userId, config.MULTIPLE_MODE)
        for giftId, giftConf in levelGiftConf.iteritems():
            if _isBought(userId, giftId):
                continue
            if not (giftConf["minLevel"] <= gunLv <= giftConf["maxLevel"]):
                continue
            now = int(time.time())
            timeout = giftConf["showTime"] * 60
            data = weakdata.getDayFishData(userId, WeakData.LevelUpCountDownData, [])
            if not data:
                weakdata.setDayFishData(userId, WeakData.LevelUpCountDownData, json.dumps([giftId, now]))
            else:
                if data[0] == giftId:
                    if timeout - (now - data[1]) > 0:
                        timeout = timeout - (now - data[1])
                    else:
                        timeout = 0
                else:
                    weakdata.setDayFishData(userId, WeakData.LevelUpCountDownData, json.dumps([giftId, now]))
            giftInfo.append(getGiftDetail(giftConf, util.getLanguage(userId, clientId), timeout))
    message.setResult("giftInfo", giftInfo)
    router.sendToUser(message, userId)
    return giftInfo
Example #5
0
def doSendFishGift(userId, clientId):
    """
    发送礼包消息
    """
    message = MsgPack()
    message.setCmd("fishGift")
    message.setResult("gameId", FISH_GAMEID)
    message.setResult("userId", userId)
    if not util.isVersionLimit(userId):  # 提审版本限制
        bankruptGift, tip = BankruptGift(userId,
                                         clientId).getGiftInfo()  # 破产礼包
        if bankruptGift:
            message.setResult("dailyGiftMode", util.getGiftDTestMode(userId))
            message.setResult("dailyGift", bankruptGift)  # 破产礼包
            message.setResult("dailyGiftTxt", tip)  # 提示信息
    alms = share_system.AlmsCoin(userId)  # 救济金分享
    gotTimes = alms.shareData[share_system.INDEX_FINISH_COUNT]
    # 今日领取救济金次数
    message.setResult("gotAlmsCoinTimes", gotTimes)
    enterFishPoolTimes = weakdata.getDayFishData(userId,
                                                 WeakData.enterFishPoolTimes,
                                                 0)
    # 今日进入渔场次数
    message.setResult("enterFishPoolTimes", enterFishPoolTimes)
    giftTestMode = config.getPublic("giftTestMode", None)  # b测试模式 b显示钻石 a显示元
    if giftTestMode is None:
        giftTestMode = "a"
    message.setResult("testMode", giftTestMode)  # 显示钻石或元测试
    router.sendToUser(message, userId)
def _isNoticeEnable(userId, acTemplate, noticeConf, userVIP, userLevel):
    """
    活动是否可以开启
    """
    ftlog.debug("_isNoticeEnable===>", userId, userVIP, userLevel,
                noticeConf["Id"])
    if not isActivityTemplateEnable(acTemplate, noticeConf["enable"]):
        return False
    # 提审版本不可见.
    if util.isVersionLimit(userId) and noticeConf.get("reviewVerLimit",
                                                      0) == 1:
        return False
    if noticeConf["limitVip"] > userVIP:
        return False
    if noticeConf["limitLevel"] > userLevel:
        return False
    clientVersion = gamedata.getGameAttr(userId, FISH_GAMEID,
                                         GameData.clientVersion)
    lowClientVersion = noticeConf.get("lowClientVersion", "0.0.0")
    ftlog.debug("_isNoticeEnable===>", userId, "clientVerion", clientVersion,
                lowClientVersion)
    if not clientVersion or StrictVersion(str(clientVersion)) < StrictVersion(
            str(lowClientVersion)):
        return False
    return util.isTimeEffective(noticeConf["effectiveTime"])
def getAllTabs(userId):
    """
    获取所有可以显示的排行榜
    """
    confs = []
    isVerLimit = util.isVersionLimit(userId)  # 是否是提审版本
    lang = util.getLanguage(userId)
    rankRewardConf = config.getAllRankConfs()
    # rankRewardConf = OrderedDict(sorted(rankRewardConf.iteritems(), key=lambda d: d[1]["order"]))
    # for rankType, conf in rankRewardConf.iteritems():
    #     if (isVerLimit is False or conf.get("reviewVerLimit", 0) == 0) and conf["visible"] and conf["showInCommon"]:
    #         confs.append({"rankType": int(rankType), "rankName": config.getMultiLangTextConf(str(conf["rankName"]), lang=lang)})
    for _tab in rankRewardConf.get("tabs"):
        ranks = []
        for _rankType in _tab["rankList"]:
            conf = rankRewardConf.get("ranks", {}).get(str(_rankType))
            if conf and (not isVerLimit or not conf.get("reviewVerLimit", 0)
                         ) and conf["visible"] and conf["showInCommon"]:
                ranks.append({
                    "rankType":
                    int(_rankType),
                    "rankName":
                    config.getMultiLangTextConf(str(conf["rankName"]),
                                                lang=lang)
                })
        if ranks:
            confs.append({
                "tabName":
                config.getMultiLangTextConf(str(_tab["tabName"]), lang=lang),
                "ranks":
                ranks
            })
    return confs
Example #8
0
def doSendNewMonthCardGiftInfo(userId, clientId, popup=0):
    """
    获取月卡礼包信息
    """
    message = MsgPack()
    message.setCmd("monthGiftInfo")
    message.setResult("gameId", FISH_GAMEID)
    message.setResult("userId", userId)
    monthGiftData = []
    monthCardGift = {}
    itemId = 0
    state = 0
    remain = 0
    if not util.isVersionLimit(userId) and not util.isPurchaseLimit(
            userId):  # and util.isFinishAllNewbieTask(userId)
        giftInfo = MonthCardGift(userId, clientId).getGiftInfo()
        for _info in giftInfo:
            monthCardGift, itemId, state = _info
            userBag = hallitem.itemSystem.loadUserAssets(userId).getUserBag()
            item = userBag.getItemByKindId(itemId)
            remain = 0
            enableBuy = 0 if userBag.getItemByKindId(
                config.PERMANENT_MONTH_CARD_KINDID) else 1
            if itemId == config.MONTH_CARD_KINDID and item and not item.isDied(
                    int(time.time())):
                remain = max(0, item.expiresTime - int(time.time()))
            monthGiftData.append({
                "monthCardGift":
                monthCardGift,
                "item":
                itemId,
                "state":
                state,  # 状态
                "remainTime":
                remain,  # 剩余时间
                "hasBought":
                gamedata.getGameAttrInt(userId, FISH_GAMEID,
                                        GameData.hasBoughtMonthCard),
                "enableBuy":
                enableBuy  # 能否买永久月卡
            })
    message.setResult("monthGiftData", monthGiftData)
    # 以下字段兼容使用
    message.setResult("monthCardGift", monthCardGift)
    message.setResult("item", itemId)
    message.setResult("state", state)
    message.setResult("remainTime", remain)
    message.setResult(
        "hasBought",
        gamedata.getGameAttrInt(userId, FISH_GAMEID,
                                GameData.hasBoughtMonthCard))
    router.sendToUser(message, userId)
Example #9
0
def addShareGroupId(userId, groupId):
    """
    添加分享到群的群ID
    """
    shareGroupIds = weakdata.getDayFishData(userId, "shareGroupIds", [])
    if ftlog.is_debug():
        ftlog.debug("addShareGroupId", userId, groupId, shareGroupIds)
    if groupId and groupId not in shareGroupIds:
        shareGroupIds.append(groupId)
        weakdata.setDayFishData(userId, WeakData.shareGroupIds, json.dumps(shareGroupIds))
        shareGroupTotalCount = config.getCommonValueByKey("shareGroupTotalCount")
        isReceiveReward = weakdata.getDayFishData(userId, "shareGroupReward", 0)
        if not isReceiveReward and len(shareGroupIds) >= shareGroupTotalCount:
            weakdata.setDayFishData(userId, WeakData.shareGroupReward, 1)
            if not util.isVersionLimit(userId):
                module_tip.addModuleTipEvent(userId, "invite", 0)
        getShareTaskInfo(userId)
Example #10
0
def sendFishCheckinInfo(userId, continueWindow=0):
    """
    发送签到详情
    :param continueWindow: 0:用户点击签到请求 1:客户端登录时自动请求
    """
    if util.isVersionLimit(userId):
        return
    checkinDay = gamedata.getGameAttrInt(userId, FISH_GAMEID,
                                         GameData.checkinDay)
    isCheckin = weakdata.getDayFishData(userId, "isCheckin", 0)
    code = 1
    if (continueWindow and isCheckin):
        code = 2
    elif util.isFinishAllNewbieTask(userId):
        code = 0
        if not isCheckin:
            if checkinDay == len(config.getCheckinConf()):
                checkinDay = 0
                gamedata.setGameAttr(userId, FISH_GAMEID, GameData.checkinDay,
                                     checkinDay)
            module_tip.addModuleTipEvent(userId, "checkin", checkinDay)
    mo = MsgPack()
    mo.setCmd("fishCheckin")
    mo.setResult("gameId", FISH_GAMEID)
    mo.setResult("userId", userId)
    mo.setResult("loginDays",
                 gamedata.getGameAttr(userId, FISH_GAMEID, GameData.loginDays))
    mo.setResult("day", checkinDay if isCheckin else checkinDay + 1)
    mo.setResult("checkin", isCheckin)
    rewards = []
    for rewardConf in config.getCheckinConf().values():
        if util.isChestRewardId(rewardConf["shareReward"]["name"]):
            rewards.append(rewardConf["shareReward"])
        else:
            rewards.append(rewardConf["normalReward"])
    mo.setResult("rewards", rewards)
    mo.setResult("continueWindow", continueWindow)
    mo.setResult("code", code)
    router.sendToUser(mo, userId)
Example #11
0
    def _fetchAllRoomInfos(self, userId, gameId):
        """
        获取所有房间信息
        """
        lang = util.getLanguage(userId)
        testMode = util.getNewbieABCTestMode(userId)
        recommendRoomId, reason = FishQuickStart._chooseRoom(userId, gameId)
        if reason != FishQuickStart.ENTER_ROOM_REASON_OK:
            recommendRoomId = 0
        re_roomConf = None
        if recommendRoomId != 0:
            re_roomConf = gdata.roomIdDefineMap()[recommendRoomId]
            if re_roomConf:
                re_roomConf = re_roomConf.configure

        ctrlRoomIds = [bigRoomId * 10000 + 1000 for bigRoomId in gdata.gameIdBigRoomidsMap()[gameId]]
        ctrlRoomIds.sort()
        ftlog.debug("_fetchAllRoomInfos", userId, gameId, ctrlRoomIds, recommendRoomId, re_roomConf)
        normalRoomInfos = []
        friendRoomInfos = []
        matchRoomInfos = []
        pointMatchRoomInfos = []
        robberyRoomInfos = []
        grandPrixRoomInfos = []
        poseidonRoomInfos = []

        isLimitedVer = util.isVersionLimit(userId)
        newbieRoomListMode = gamedata.getGameAttr(userId, FISH_GAMEID, ABTestData.newbieRoomListMode)   # 新手房间列表模式
        isFinishAllRedTask = util.isFinishAllRedTask(userId)
        clientVersion = gamedata.getGameAttr(userId, FISH_GAMEID, GameData.clientVersion)
        fpMultipleTestMode = config.getPublic("fpMultipleTestMode") or gamedata.getGameAttr(userId, FISH_GAMEID,
                                                                                            ABTestData.fpMultipleTestMode)  # 渔场倍率AB测试
        for ctlRoomId in ctrlRoomIds:
            pass


        return normalRoomInfos, friendRoomInfos, matchRoomInfos, robberyRoomInfos, \
               pointMatchRoomInfos, grandPrixRoomInfos, poseidonRoomInfos
Example #12
0
def getRankingTabs(userId,
                   clientId,
                   rankType,
                   httpRequest=False,
                   rankDetail=False):
    """
    获取指定排行榜信息
    :param userId:
    :param clientId:
    :param rankType: 排行榜类型
    :param httpRequest:
    :return:
    """
    tabs = []
    ranking = {}
    rankRewardConf = config.getRankRewardConf(rankType)
    if not rankRewardConf or not rankRewardConf["visible"]:
        return tabs
    if util.isVersionLimit(userId) and rankRewardConf.get("reviewVerLimit",
                                                          0) == 1:  # 提审版本不可见
        return tabs
    lang = util.getLanguage(userId, clientId)
    ranking["rankType"] = rankType
    ranking["rankName"] = config.getMultiLangTextConf(str(
        rankRewardConf.get("rankName")),
                                                      lang=lang)
    rankDescId = rankRewardConf.get("rankDesc")
    if rankDescId:
        ranking["rankDesc"] = config.getMultiLangTextConf(str(rankDescId),
                                                          lang=lang)
    else:
        ranking["rankDesc"] = ""
    ranking = getRankingInfoByType(userId, clientId, rankType, httpRequest,
                                   rankDetail) or ranking
    tabs.append(ranking)
    if ftlog.is_debug():
        ftlog.debug("getrankingtabs", tabs, "ranking =", ranking)
    return tabs
Example #13
0
def doSendGift(userId, clientId):
    """
    获取礼包数据
    """
    message = MsgPack()
    message.setCmd("fishDailyGift")
    message.setResult("gameId", FISH_GAMEID)
    message.setResult("userId", userId)
    vipLevel = hallvip.userVipSystem.getVipInfo(userId).get("level", 0)
    dailyGiftConf = config.getDailyGiftConf(clientId)
    lang = util.getLanguage(userId, clientId)
    giftInfo = []
    if not util.isVersionLimit(userId) and not util.isPurchaseLimit(
            userId) and util.isFinishAllNewbieTask(userId):
        for id, giftConf in dailyGiftConf.iteritems():
            vipRange = giftConf.get("vipRange", [0, 0])
            if vipRange[0] <= vipLevel <= vipRange[1]:
                hasBought = _isBought(userId, id)
                continuousDay = _getContinuousDay(userId, id)
                if continuousDay < len(giftConf.get("giftInfo", [])):
                    hasBought = 0
                dayIdx = _getGiftDayIdx(clientId, id, continuousDay)
                giftInfo.append(
                    getGiftDetail(giftConf, hasBought, dayIdx, lang))
                if ftlog.is_debug():
                    ftlog.debug("doSendGift", userId, id, hasBought,
                                continuousDay, dayIdx)
    message.setResult("btnVisible", bool(len(giftInfo) > 0))
    message.setResult("giftInfo", giftInfo)
    giftTestMode = config.getPublic("giftTestMode", None)
    if giftTestMode is None:
        giftTestMode = "a" if userId % 2 == 0 else "b"
    message.setResult("testMode", giftTestMode)
    router.sendToUser(message, userId)
    if ftlog.is_debug():
        ftlog.debug("doSendGift===>", userId, giftInfo)