示例#1
0
def get_invite_award(rk_user, params):
    """新手的邀请奖励
    """
    invite_code = params["invite_code"]
    uid = _check_invite_code(rk_user, invite_code)
    friend_obj = Friend.get(rk_user.uid)
    if uid and not friend_obj.invite_info["inviter"]:
        # 记录邀请新手的老玩家信息
        friend_obj.invite_info["inviter"] = uid
        friend_obj.put()

        data_log_mod.set_log("Invite", rk_user, inviter=uid, invited=rk_user.uid)

        # 邀请者总邀请数增加
        inviter_friend = Friend.get(uid)
        inviter_friend.invite_info["total_invited_usernum"] += 1
        inviter_friend.record_invited_user(rk_user.uid, rk_user.user_property.lv)
        inviter_friend.put()
        # 发邀请奖励
        invited_award = game_config.invite_config["invited_award"]
        user_gift_obj = UserGift.get_instance(rk_user.uid)
        user_gift_obj.add_gift(invited_award, utils.get_msg("friend", "invited_award_words"))
    else:
        if not uid:
            return 11, {"msg": utils.get_msg("friend", "invalid_invite_code")}
        else:
            return 11, {"msg": utils.get_msg("friend", "invite_code_only_once")}
    return 0, {}
示例#2
0
def get_invite_award(rk_user,params):
    """新手的邀请奖励
    """
    invite_code = params['invite_code']
    uid = _check_invite_code(rk_user,invite_code)
    friend_obj = Friend.get(rk_user.uid)
    if uid and not friend_obj.invite_info['inviter']:
        #记录邀请新手的老玩家信息
        friend_obj.invite_info['inviter'] = uid
        friend_obj.put()

        data_log_mod.set_log('Invite', rk_user, inviter=uid, invited=rk_user.uid)

        #邀请者总邀请数增加
        inviter_friend = Friend.get(uid)
        inviter_friend.invite_info['total_invited_usernum'] += 1
        inviter_friend.record_invited_user(rk_user.uid,rk_user.user_property.lv)
        inviter_friend.put()
        #发邀请奖励
        invited_award = game_config.invite_config['invited_award']
        user_gift_obj = UserGift.get_instance(rk_user.uid)
        user_gift_obj.add_gift(invited_award,utils.get_msg('friend','invited_award_words'))
    else:
        if not uid:
            return 11,{'msg':utils.get_msg('friend', 'invalid_invite_code')}
        else:
            return 11,{'msg':utils.get_msg('friend', 'invite_code_only_once')}
    return 0,{}
示例#3
0
def new_gift_list(rk_user,params):
    '''
    获取该用户的可领取的礼包内容
    '''
    user_gift_obj = UserGift.get(rk_user.uid)
    data = {}
    data['new_gifts'] = user_gift_obj.new_gift_to_client(float(params['version']))
    data.update(UserLogin.get(rk_user.uid).get_award_info(rk_user.user_property))
    return 0,data
示例#4
0
 def clear_normal_dungeon(self,floor):
     """
     普通战场通关额外奖励
     """
     dungeon_clear_award = self.game_config.dungeon_world_config.get('dungeon_clear_award',{})
     if floor in dungeon_clear_award:
         award = dungeon_clear_award[floor]
         user_gift_obj = UserGift.get_instance(self.uid)
         user_gift_obj.add_gift(award, utils.get_msg('dungeon','clear_dungeon', self))
示例#5
0
 def get_bind_weibo_award(self):
     from apps.models.user_gift import UserGift
     if self.user_base.platform != 'oc' and \
         self.property_info.get('bind_award'):
         self.property_info['bind_award'] = False
         content = utils.get_msg('user', 'bind_award', self)
         award = self.game_config.weibo_config['bind_award']
         user_gift_obj = UserGift.get(self.uid)
         user_gift_obj.add_gift(award, content)
         self.put()
示例#6
0
 def get_bind_weibo_award(self):
     from apps.models.user_gift import UserGift
     if self.user_base.platform != 'oc' and \
         self.property_info.get('bind_award'):
         self.property_info['bind_award'] = False
         content = utils.get_msg('user', 'bind_award', self)
         award = self.game_config.weibo_config['bind_award']
         user_gift_obj = UserGift.get(self.uid)
         user_gift_obj.add_gift(award,content)
         self.put()
示例#7
0
def __get_old_gift(rk_user,gift_ids,award_return):
    user_gift_obj = UserGift.get(rk_user.uid)
    if not gift_ids:
        return 11,utils.get_msg('gift','invalid_gift')
    if gift_ids == 'all':
        gift_ids_list = user_gift_obj.gift_list.keys()
    else:
        gift_ids_list = [ i for i in gift_ids.split('_') if i]
    for gift_id in gift_ids_list:
        tmp = user_gift_obj.get_gift(gift_id)
        __format_award(tmp,award_return)
    return 0,''
示例#8
0
def get_invite_friend_award(rk_user, params):
    """
    领取邀请好友的奖励
    params:
       'award_id':奖励id
    """
    friend_obj = Friend.get(rk_user.uid)
    if not friend_obj:
        return 0, {}
    invite_award = game_config.invite_config["invite_award"]
    award_id = params.get("award_id")
    if award_id and award_id in invite_award:
        invite_info = friend_obj.invite_info
        # 已经领取过
        if award_id in invite_info["got_invite_award"]:
            return 11, {"msg": utils.get_msg("friend", "invite_award_has_got")}

        invite_award_val = invite_award[award_id]
        need_lv = int(invite_award_val.get("lv", 1))
        can_get = False
        if need_lv:
            need_lv_str = str(need_lv)
            if (
                need_lv_str in invite_info["invite_users"]
                and len(invite_info["invite_users"][need_lv_str]) >= invite_award_val.get("invite_num", 0)
                and invite_award_val.get("award", {})
            ):
                can_get = True
        else:
            if invite_info["total_invited_usernum"] >= invite_award_val.get("invite_num", 0) and invite_award_val.get(
                "award", {}
            ):
                can_get = True
        # can_get = True#测试需要暂时可以领取
        if can_get:
            user_gift_obj = UserGift.get_instance(rk_user.uid)
            invite_info["got_invite_award"].append(award_id)
            friend_obj.put()
            user_gift_obj.add_gift(invite_award_val["award"], utils.get_msg("friend", "invite_award_words"))
        else:
            return 11, {"msg": utils.get_msg("friend", "invite_award_cannot_get")}
    else:
        return 11, {"msg": utils.get_msg("friend", "invite_award_err")}
    return 0, {}
示例#9
0
def get_invite_friend_award(rk_user,params):       
    """
    领取邀请好友的奖励
    params:
       'award_id':奖励id
    """     
    friend_obj = Friend.get(rk_user.uid)
    if not friend_obj:
        return 0,{}
    invite_award = game_config.invite_config['invite_award']
    award_id = params.get('award_id')
    if award_id and award_id in invite_award:
        invite_info = friend_obj.invite_info
        #已经领取过
        if award_id in invite_info['got_invite_award']:
            return 11,{'msg':utils.get_msg('friend', 'invite_award_has_got')}
        
        invite_award_val = invite_award[award_id]
        need_lv = int(invite_award_val.get('lv',1))
        can_get = False
        if need_lv:
            need_lv_str = str(need_lv)
            if need_lv_str in invite_info['invite_users'] and \
              len(invite_info['invite_users'][need_lv_str])>=invite_award_val.get('invite_num',0) and \
              invite_award_val.get('award',{}):
                can_get = True
        else:
            if invite_info['total_invited_usernum'] >= invite_award_val.get('invite_num',0) and \
              invite_award_val.get('award',{}):
                can_get = True
        #can_get = True#测试需要暂时可以领取
        if can_get:
            user_gift_obj = UserGift.get_instance(rk_user.uid)
            invite_info['got_invite_award'].append(award_id)
            friend_obj.put()
            user_gift_obj.add_gift(invite_award_val['award'],utils.get_msg('friend','invite_award_words'))
        else:
            return 11,{'msg':utils.get_msg('friend', 'invite_award_cannot_get')}
    else:
        return 11,{'msg':utils.get_msg('friend', 'invite_award_err')}
    return 0,{}
示例#10
0
def get_gift(rk_user,params):
    gift_ids = params.get('gift_ids','')
    user_gift_obj = UserGift.get(rk_user.uid)
    if not gift_ids:
        return 11,{'msg':utils.get_msg('gift','invalid_gift')}
    if gift_ids == 'all':
        gift_ids_list = user_gift_obj.gift_list.keys()
    else:
        gift_ids_list = [ i for i in gift_ids.split('_') if i]
    award_return = {'stamina':0,'gold':0,'coin':0,'gacha_pt':0,'item':{}, 'material':{},'props':{},'card':{},'equip':{}, 'normal_soul': {},}
    for gift_id in gift_ids_list:
        tmp = user_gift_obj.get_gift(gift_id)
        for _k in tmp:
            if _k in ['gold','coin','gacha_pt','stamina']:
                award_return[_k] = award_return.get(_k,0) + tmp.get(_k,0)
            elif _k in ['item','material','props','normal_soul']:
                for __kk in tmp[_k]:
                    award_return[_k][__kk] = award_return[_k].get(__kk,0) + tmp[_k][__kk]
            elif _k in ['card','equip']:
                award_return[_k].update(tmp[_k])
    data = {i:award_return[i] for i in award_return if award_return[i]}
    return 0,{'get_info':data}
示例#11
0
文件: gift.py 项目: wzgdavid/myCoding
def add_gift():
    ug = UserGift.get_instance(uid)
    ug.add_open_server_gift({'gold': 50, '1_card':1}, 8)
    ug.do_put()
示例#12
0
文件: gift.py 项目: wzgdavid/myCoding
def show_gift():
    ug = UserGift.get_instance(uid)
    pprint(ug.gift_list)
示例#13
0
文件: gift.py 项目: wzgdavid/myCoding
from apps.models.user_cards import UserCards
from apps.models.user_property import UserProperty
from apps.models.user_dungeon import UserDungeon
from apps.models.user_pack import UserPack
from apps.models.user_property import UserProperty
from apps.models.user_equips import UserEquips
from apps.models.collection import UserCollection
import json
import copy
import datetime
from apps.common.utils import create_gen_id
from apps.common import utils, tools
import time
from apps.models import data_log_mod
from apps.models import GameModel
ug = UserGift.get_instance(uid)

rk_user = UserBase.get(uid)
ul = rk_user.user_login
def show_gift():
    ug = UserGift.get_instance(uid)
    pprint(ug.gift_list)

def add_gift():
    ug = UserGift.get_instance(uid)
    ug.add_open_server_gift({'gold': 50, '1_card':1}, 8)
    ug.do_put()

#add_gift()

def get_gift():
示例#14
0
def get_giftCode_gift(rk_user, params):
    """兑换礼品码

    Args:
        gift_code:   礼品码
    """
    gift_keys = game_config.gift_config.get("gift_config", {})
    if rk_user.client_type in settings.ANDROID_CLIENT_TYPE and "is_open" in game_config.android_config:
        is_open = game_config.android_config.get("is_open", True)
    else:
        is_open = game_config.gift_config.get("is_open", True)
    if not is_open:
        msg = utils.get_msg("gift", "gift_not_open")
        return 11, {"msg": msg}
    # 校验礼品码
    gift_code = params["gift_code"]
    gift_code = gift_code.strip()
    gift_id = gift_code[:-5]
    if gift_id not in gift_keys:
        msg = utils.get_msg("gift", "gift_code_not_exist")
        return 11, {"msg": msg}
    gift_conf = game_config.gift_config["gift_config"][gift_id]
    start_time = utils.string_toDatetime(gift_conf.get("start_time", "2013-05-29 00:00:00"))
    end_time = utils.string_toDatetime(gift_conf.get("end_time", "2020-05-29 00:00:00"))
    now_time = datetime.datetime.now()
    if now_time < start_time or now_time > end_time:
        return 11, {"msg": utils.get_msg("gift", "gift_not_in_right_time")}

    gift_code_obj = GiftCode.get(gift_id)
    user_gift_obj = UserGift.get_instance(rk_user.uid)

    # 平台限制判断
    gift_platform_list = gift_conf.get("platform_list", [])
    if gift_platform_list and rk_user.platform not in gift_platform_list:
        return 11, {"msg": utils.get_msg("gift", "platform_not_allowed")}
    # 分区限制判断
    gift_subarea_list = gift_conf.get("subarea_list", [])
    if gift_subarea_list and rk_user.subarea not in gift_subarea_list:
        return 11, {"msg": utils.get_msg("gift", "subarea_not_allowed")}

    if gift_id in user_gift_obj.gift_code_type:
        return 11, {"msg": utils.get_msg("gift", "this_type_already_get")}
    if not gift_code_obj or gift_code not in gift_code_obj.codes:
        return 11, {"msg": utils.get_msg("gift", "gift_code_not_exist")}
    # 是否允许不同uid领取相同礼品码
    recycling = gift_conf.get("recycling", False)
    if not recycling:
        if gift_code_obj.codes[gift_code]:
            return 11, {"msg": utils.get_msg("gift", "gift_code_gived")}
    # 玩家是否已经领取了此礼品码
    if not user_gift_obj.add_has_got_gift_code(gift_code):
        return 11, {"msg": utils.get_msg("gift", "gift_code_gived")}

    # 记录该礼品码被最后一次领取的uid
    gift_code_obj.codes[gift_code] = rk_user.uid
    gift_code_obj.put()
    # 记录玩家已领的礼品码
    user_gift_obj.gift_code_type.append(gift_id)
    # 发礼品
    all_get_things = tools.add_things(
        rk_user,
        [{"_id": thing_id, "num": num} for thing_id, num in gift_conf.get("gift", {}).items()],
        where=u"giftCode_award",
    )
    # 对于可以升级获得的奖励
    # if gift.get('lv_up_gift',{}):
    #     user_gift_obj.add_lv_up_giftcode(gift_id)
    #     user_gift_obj.get_giftcode_lv_up_award(gift_id)
    user_gift_obj.put()
    return {"get_info": all_get_things}
示例#15
0
    def add_exp(self, exp, where=''):
        '''
        添加用户的经验
        不管是加还是扣经验都会触发等级变化
        返回: 是否升级, {}
        '''
        #保存变化前的exp
        from apps.models.user_gift import UserGift
        old_exp = self.property_info['exp']

        old_lv = self.lv
        new_lv = self.lv
        self.property_info['exp'] = self.property_info['exp'] + exp
        while True:
            new_lv += 1
            userLevelMod = UserLevelMod.get(new_lv)
            if not userLevelMod.exp or self.property_info[
                    'exp'] < userLevelMod.exp:
                new_lv -= 1
                break

        if new_lv > old_lv:
            #有升级的话就写日志和重新排名
            #写日志
            log_data = {}
            log_data['old_exp'] = old_exp
            log_data['old_lv'] = old_lv
            log_data['add_exp'] = exp
            log_data['new_lv'] = new_lv
            log_data['new_exp'] = self.property_info['exp']
            log_data['where'] = where
            data_log_mod.set_log('UserLevelHistory', self, **log_data)
            #新等级
            self.property_info['lv'] = new_lv
            userLevelMod = UserLevelMod.get(new_lv)
            #获取前20000名对应的分数
            rank_lv = lv_top_model.get_score(20000)
            #只有等级能到达50000名的才会进入排行榜
            if not rank_lv or new_lv > rank_lv:
                lv_top_model.set(self.uid, new_lv)
            #更新体力,cost
            self.property_info['stamina'] += userLevelMod.lv_stamina

            #将用户写入新级别对应的用户列表中
            subarea = self.user_base.subarea
            LevelUser.get_instance(subarea, self.lv_region).add_user(self.uid)
            inviter_uid = Friend.get(self.uid).inviter
            if inviter_uid:
                inviter_friend = Friend.get(inviter_uid)
            else:
                inviter_friend = None
            #升级时,检查是否有礼品码的升级奖励
            user_gift_obj = UserGift.get_instance(self.uid)
            user_gift_obj.get_giftcode_lv_up_award()
            #升级时,检查是否有升级奖励
            msg = utils.get_msg('user', 'lv_up_award', self)

            for lv in range(old_lv + 1, new_lv + 1):
                if 'award' in self.game_config.user_level_config[str(lv)]:
                    user_gift_obj.add_gift(
                        self.game_config.user_level_config[str(lv)]['award'],
                        msg % lv)
                #用户升级后,将自己信息写入邀请者
                if inviter_friend:
                    inviter_friend.record_invited_user(self.uid, lv)
            self.user_cards.set_slot_num(new_lv)
        self.put()
        return new_lv > old_lv, {}
示例#16
0
    def add_exp(self, exp, where=''):
        '''
        添加用户的经验
        不管是加还是扣经验都会触发等级变化
        返回: 是否升级, {}
        '''
        #保存变化前的exp
        from apps.models.user_gift import UserGift
        old_exp = self.property_info['exp']


        old_lv = self.lv
        new_lv = self.lv
        self.property_info['exp'] = self.property_info['exp'] + exp
        while True:
            new_lv += 1
            userLevelMod = UserLevelMod.get(new_lv)
            if not userLevelMod.exp or self.property_info['exp'] < userLevelMod.exp:
                new_lv -= 1
                break

        if new_lv > old_lv:
            #有升级的话就写日志和重新排名
            #写日志
            log_data = {}
            log_data['old_exp'] = old_exp
            log_data['old_lv'] = old_lv
            log_data['add_exp'] = exp
            log_data['new_lv'] = new_lv
            log_data['new_exp'] = self.property_info['exp']
            log_data['where'] = where
            data_log_mod.set_log('UserLevelHistory', self, **log_data)
            #新等级
            self.property_info['lv'] = new_lv
            userLevelMod = UserLevelMod.get(new_lv)
            #获取前20000名对应的分数
            rank_lv = lv_top_model.get_score(20000)
            #只有等级能到达50000名的才会进入排行榜
            if not rank_lv or new_lv>rank_lv:
                lv_top_model.set(self.uid,new_lv)
            #更新体力,cost
            self.property_info['stamina'] += userLevelMod.lv_stamina

            #将用户写入新级别对应的用户列表中
            subarea = self.user_base.subarea 
            LevelUser.get_instance(subarea, self.lv_region).add_user(self.uid)
            inviter_uid = Friend.get(self.uid).inviter
            if inviter_uid:
                inviter_friend = Friend.get(inviter_uid)
            else:
                inviter_friend = None
            #升级时,检查是否有礼品码的升级奖励
            user_gift_obj = UserGift.get_instance(self.uid)
            user_gift_obj.get_giftcode_lv_up_award()
            #升级时,检查是否有升级奖励
            msg = utils.get_msg('user','lv_up_award', self)

            for lv in range(old_lv + 1, new_lv + 1):
                if 'award' in self.game_config.user_level_config[str(lv)]:
                    user_gift_obj.add_gift(self.game_config.user_level_config[str(lv)]['award'],msg % lv)
                #用户升级后,将自己信息写入邀请者
                if inviter_friend:
                    inviter_friend.record_invited_user(self.uid, lv)
            self.user_cards.set_slot_num(new_lv)
        self.put()
        return new_lv > old_lv, {}
示例#17
0
user_ls=[
'1042121004',
'2536121003',
'3553121009',
'0742121004',
'6840121004',
]
from apps.models.user_gift import UserGift
for uid in user_ls:
    user_gift_obj = UserGift.get(uid)
    if not user_gift_obj:
        print 'uid:%s not exist' % uid
        continue
    user_gift_obj.add_gift({'coin':100},content=u'提bug奖励:')
    user_gift_obj.do_put()
    

############mongo导出config配置################
/opt/mongodb/bin/mongoexport -h 10.200.55.32 -d maxstrike_appstore -c config -o appstore_config_20131108.dat
###########mongo导入配置###############
/usr/bin/mongoimport -h 54.238.211.123 -u awsmaxstrikeuser1a -pawsmaxstrikeuPwD1ao% -d awsmaxstrikedb1a -c config appstore_config_20131108.dat

##########################清除config####################
all_config_name_list = [
    'system_config',
    'gacha_config',
    'gacha_timing_config',
    'loginbonus_config',
    'card_config',
    'shop_config',
    'msg_config',
示例#18
0
    def login(self, params):
        """登录
        发送登录奖励邮件
        """
        user_base_obj = self.user_base
        user_property_obj = self.user_property
        # game_config = self.game_config
        # 获取当天的字符串
        now = datetime.datetime.now()
        # 获取注册时间
        add_date = utils.timestamp_toDatetime(user_base_obj.add_time).date()
        # 获取双倍充值的时间
        # charge_double_date = game_config.shop_config.get('charge_double_date', '')
        mail_awards = {}
        
        now_str = utils.datetime_toString(now)
        self.login_info.setdefault('login_record_new', []).insert(0, now_str)
        if len(self.login_info['login_record_new']) > 5:
                self.login_info['login_record_new'].pop()
        last_login_time = self.login_info['login_time']
        # 新安装用户,或玩家每天首次登入
        if not last_login_time or now.date() != utils.timestamp_toDatetime(last_login_time).date():
            self.login_info['total_login_num'] += 1
            self.login_info['login_record'].insert(0, str(now.date()))
            # 获取最大的记录长度,长度不要读配置,如果配置记录长度改的太小会有bug
            if len(self.login_info['login_record']) > 40:
                self.login_info['login_record'].pop()
            # 连续登录
            if now.date() == (utils.timestamp_toDatetime(last_login_time) + datetime.timedelta(days=1)).date():
                self.login_info['continuous_login_num'] += 1
            # 非连续登录
            else:
                self.login_info['continuous_login_num'] = 1
            
            # 每日登录奖励
            # mail_awards.update(self.get_daily_login_award())

            # # 判断有无系统奖励
            # mail_awards.update(self.get_system_bonus())

            #临时的一个系统补偿
            mail_awards.update(self.get_system_compensates())
            
            # #临时补偿
            # mail_awards.update(self.get_temp_bonus())

            # # 特定日期首次充值双倍再开放
            # if not user_property_obj.double_charge and (
            # str(add_date) != str(now.date()) and
            # str(now.date()) == charge_double_date):
            #     user_property_obj.property_info['double_charge'] = True

            # # 特定日期之后已充值过的用户首次充值双倍关闭
            # if user_property_obj.double_charge and charge_double_date and (
            # str(now.date()) > charge_double_date):
            #     user_property_obj.property_info['double_charge'] = False
            
            user_gift_obj = UserGift.get_instance(self.uid)

            # #连续登录奖励
            # mail_awards.update(self.get_continuous_login_award())

            # #累积登录奖励
            # mail_awards.update(self.get_login_award())

            # 领取以前未领取的等级奖励
            user_gift_obj.get_lv_gift()

            # 月卡返还
            mail_awards.update(self.get_monthCard_bonus())
            # if str(add_date) != str(now.date()):
            #     self.__refresh_month_card_info(user_property_obj)

            # 重置道具商店购买次数
            self.user_pack.reset_store_has_bought_cnt()

            # vip 玩家 每日奖励  通过邮件发放
            mail_awards.update(self.get_vip_daily_bonus())

            # 回复战场次数重置
            user_property_obj.reset_recover_times()


        # 如果玩家没有成功通过新手引导- 战场1-1 则reset武将编队以便继续新手引导
        if user_property_obj.property_info.get('newbie_steps', 0) == 15 and user_property_obj.newbie:
            user_property_obj.user_cards.reset_cards()

        rtn_data = {}

        user_property_obj.property_info['login_time'] = int(time.time())

        #版本更新奖励
        strVersion = params.get("version", "")
        if last_login_time and strVersion != "":
            update_version_award = self.get_update_version_bonus(strVersion)
            if update_version_award and strVersion not in user_property_obj.update_award:
                mail_awards["update_version_award"] = {"award":update_version_award}
                #user_property_obj.give_award(update_version_award)
                user_property_obj.property_info["update_award"].append(strVersion)
        #判断有无绑定奖励
        if UserBase.get(self.uid).platform != 'oc' and \
        user_property_obj.property_info.get('bind_award'):
            mail_awards['bind_award'] = self.game_config.weibo_config['bind_award']
            user_property_obj.property_info['bind_award'] = False
        
        # if not user_property_obj.newbie:
        #     rtn_data = self.new_login_bonus(now, user_property_obj)

        # 根据上一次22:00的pvp排名给予相应的功勋奖励
        mail_awards.update(self.get_honor_award())
        # 发得奖邮件
        self.send_mails(mail_awards)
        
        #当天注册用户判断是否有活动双倍
        # if not self.login_info.get('set_newbie_double_charge',False) and\
        #  not user_property_obj.double_charge and\
        #  str(now.date()) == charge_double_date and\
        #  str(add_date) == str(now.date()):
        #     user_property_obj.property_info['double_charge'] = True
        #     self.login_info['set_newbie_double_charge'] = True

        #  若保底求将没开  清空保底求将元宝
        from apps.logics.gacha import is_open_safty
        self.user_gacha.reset_cost_coin()
        if not is_open_safty():
            self.user_gacha.reset_cost_coin()

        # 登录时间更新
        self.login_info['login_time'] = int(time.time())

        self.put()
        user_property_obj.put()
        
        return {}
示例#19
0
def get_giftCode_gift(rk_user, params):
    """兑换礼品码

    Args:
        gift_code:   礼品码
    """
    gift_keys = game_config.gift_config.get('gift_config', {})
    if rk_user.client_type in settings.ANDROID_CLIENT_TYPE and 'is_open' in game_config.android_config:
        is_open = game_config.android_config.get('is_open', True)
    else:
        is_open = game_config.gift_config.get('is_open', True)
    if not is_open:
        msg = utils.get_msg('gift', 'gift_not_open')
        return 11, {'msg': msg}
    # 校验礼品码
    gift_code = params['gift_code']
    gift_code = gift_code.strip()
    gift_id = gift_code[:-5]
    if gift_id not in gift_keys:
        msg = utils.get_msg('gift', 'gift_code_not_exist')
        return 11, {'msg': msg}
    gift_conf = game_config.gift_config['gift_config'][gift_id]
    start_time = utils.string_toDatetime(
        gift_conf.get('start_time', '2013-05-29 00:00:00'))
    end_time = utils.string_toDatetime(
        gift_conf.get('end_time', '2020-05-29 00:00:00'))
    now_time = datetime.datetime.now()
    if now_time < start_time or now_time > end_time:
        return 11, {'msg': utils.get_msg('gift', 'gift_not_in_right_time')}

    gift_code_obj = GiftCode.get(gift_id)
    user_gift_obj = UserGift.get_instance(rk_user.uid)

    # 平台限制判断
    gift_platform_list = gift_conf.get('platform_list', [])
    if gift_platform_list and rk_user.platform not in gift_platform_list:
        return 11, {'msg': utils.get_msg('gift', 'platform_not_allowed')}
    # 分区限制判断
    gift_subarea_list = gift_conf.get('subarea_list', [])
    if gift_subarea_list and rk_user.subarea not in gift_subarea_list:
        return 11, {'msg': utils.get_msg('gift', 'subarea_not_allowed')}

    if gift_id in user_gift_obj.gift_code_type:
        return 11, {'msg': utils.get_msg('gift', 'this_type_already_get')}
    if not gift_code_obj or gift_code not in gift_code_obj.codes:
        return 11, {'msg': utils.get_msg('gift', 'gift_code_not_exist')}
    # 是否允许不同uid领取相同礼品码
    recycling = gift_conf.get('recycling', False)
    if not recycling:
        if gift_code_obj.codes[gift_code]:
            return 11, {'msg': utils.get_msg('gift', 'gift_code_gived')}
    # 玩家是否已经领取了此礼品码
    if not user_gift_obj.add_has_got_gift_code(gift_code):
        return 11, {'msg': utils.get_msg('gift', 'gift_code_gived')}

    # 记录该礼品码被最后一次领取的uid
    gift_code_obj.codes[gift_code] = rk_user.uid
    gift_code_obj.put()
    # 记录玩家已领的礼品码
    user_gift_obj.gift_code_type.append(gift_id)
    # 发礼品
    all_get_things = tools.add_things(rk_user, [{
        '_id': thing_id,
        'num': num
    } for thing_id, num in gift_conf.get('gift', {}).items()],
                                      where=u"giftCode_award")
    #对于可以升级获得的奖励
    # if gift.get('lv_up_gift',{}):
    #     user_gift_obj.add_lv_up_giftcode(gift_id)
    #     user_gift_obj.get_giftcode_lv_up_award(gift_id)
    user_gift_obj.put()
    return {'get_info': all_get_things}
示例#20
0
    def login(self, params):
        """登录
        发送登录奖励邮件
        """
        user_base_obj = self.user_base
        user_property_obj = self.user_property
        # game_config = self.game_config
        # 获取当天的字符串
        now = datetime.datetime.now()
        # 获取注册时间
        add_date = utils.timestamp_toDatetime(user_base_obj.add_time).date()
        # 获取双倍充值的时间
        # charge_double_date = game_config.shop_config.get('charge_double_date', '')
        mail_awards = {}

        now_str = utils.datetime_toString(now)
        self.login_info.setdefault('login_record_new', []).insert(0, now_str)
        if len(self.login_info['login_record_new']) > 5:
            self.login_info['login_record_new'].pop()
        last_login_time = self.login_info['login_time']
        # 新安装用户,或玩家每天首次登入
        if not last_login_time or now.date() != utils.timestamp_toDatetime(
                last_login_time).date():
            self.login_info['total_login_num'] += 1
            self.login_info['login_record'].insert(0, str(now.date()))
            # 获取最大的记录长度,长度不要读配置,如果配置记录长度改的太小会有bug
            if len(self.login_info['login_record']) > 40:
                self.login_info['login_record'].pop()
            # 连续登录
            if now.date() == (utils.timestamp_toDatetime(last_login_time) +
                              datetime.timedelta(days=1)).date():
                self.login_info['continuous_login_num'] += 1
            # 非连续登录
            else:
                self.login_info['continuous_login_num'] = 1

            # 每日登录奖励
            # mail_awards.update(self.get_daily_login_award())

            # # 判断有无系统奖励
            # mail_awards.update(self.get_system_bonus())

            #临时的一个系统补偿
            mail_awards.update(self.get_system_compensates())

            # #临时补偿
            # mail_awards.update(self.get_temp_bonus())

            # # 特定日期首次充值双倍再开放
            # if not user_property_obj.double_charge and (
            # str(add_date) != str(now.date()) and
            # str(now.date()) == charge_double_date):
            #     user_property_obj.property_info['double_charge'] = True

            # # 特定日期之后已充值过的用户首次充值双倍关闭
            # if user_property_obj.double_charge and charge_double_date and (
            # str(now.date()) > charge_double_date):
            #     user_property_obj.property_info['double_charge'] = False

            user_gift_obj = UserGift.get_instance(self.uid)

            # #连续登录奖励
            # mail_awards.update(self.get_continuous_login_award())

            # #累积登录奖励
            # mail_awards.update(self.get_login_award())

            # 领取以前未领取的等级奖励
            user_gift_obj.get_lv_gift()

            # 月卡返还
            mail_awards.update(self.get_monthCard_bonus())
            # if str(add_date) != str(now.date()):
            #     self.__refresh_month_card_info(user_property_obj)

            # 重置道具商店购买次数
            self.user_pack.reset_store_has_bought_cnt()

            # vip 玩家 每日奖励  通过邮件发放
            mail_awards.update(self.get_vip_daily_bonus())

            # 回复战场次数重置
            user_property_obj.reset_recover_times()

        # 如果玩家没有成功通过新手引导- 战场1-1 则reset武将编队以便继续新手引导
        if user_property_obj.property_info.get(
                'newbie_steps', 0) == 15 and user_property_obj.newbie:
            user_property_obj.user_cards.reset_cards()

        rtn_data = {}

        user_property_obj.property_info['login_time'] = int(time.time())

        #版本更新奖励
        strVersion = params.get("version", "")
        if last_login_time and strVersion != "":
            update_version_award = self.get_update_version_bonus(strVersion)
            if update_version_award and strVersion not in user_property_obj.update_award:
                mail_awards["update_version_award"] = {
                    "award": update_version_award
                }
                #user_property_obj.give_award(update_version_award)
                user_property_obj.property_info["update_award"].append(
                    strVersion)
        #判断有无绑定奖励
        if UserBase.get(self.uid).platform != 'oc' and \
        user_property_obj.property_info.get('bind_award'):
            mail_awards['bind_award'] = self.game_config.weibo_config[
                'bind_award']
            user_property_obj.property_info['bind_award'] = False

        # if not user_property_obj.newbie:
        #     rtn_data = self.new_login_bonus(now, user_property_obj)

        # 根据上一次22:00的pvp排名给予相应的功勋奖励
        mail_awards.update(self.get_honor_award())
        # 发得奖邮件
        self.send_mails(mail_awards)

        #当天注册用户判断是否有活动双倍
        # if not self.login_info.get('set_newbie_double_charge',False) and\
        #  not user_property_obj.double_charge and\
        #  str(now.date()) == charge_double_date and\
        #  str(add_date) == str(now.date()):
        #     user_property_obj.property_info['double_charge'] = True
        #     self.login_info['set_newbie_double_charge'] = True

        #  若保底求将没开  清空保底求将元宝
        from apps.logics.gacha import is_open_safty
        self.user_gacha.reset_cost_coin()
        if not is_open_safty():
            self.user_gacha.reset_cost_coin()

        # 登录时间更新
        self.login_info['login_time'] = int(time.time())

        self.put()
        user_property_obj.put()

        return {}