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)
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
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")
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
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
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)
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)
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)
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
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
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)