예제 #1
0
 def update_stages(self):
     """
     重置所有关卡数据
         Return BOOL 是否重置了
     """
     now_date = datetime.datetime.now().date()
     # 可以更新
     # print("self.last_reset_time " + str(self.last_reset_time) + "  now_date " + str(now_date))
     if self.last_reset_time != now_date:
         self.last_reset_time = now_date
         new_stages_dict = dict()
         for item in self.stages.values():
             #获取表格默认次数
             config = game_config.get_stages_config(item['id'])
             if config:
                 new_stage_dict = dict()
                 new_stage_dict['id'] = item['id']
                 new_stage_dict['num'] = 0
                 new_stage_dict['buy_count'] = 0
                 new_stage_dict['rank'] = item.get('rank',
                                                   self.STAGE_RANK_NONE)
                 new_stages_dict[item['id']] = new_stage_dict
         self.stages = new_stages_dict
         return True
     return False
예제 #2
0
def get_table(search_start_date, search_end_date):
    """
        获取展示表格
        register_start_date 注册开始时间
        register_end_date 注册结束时间
        search_start_date 查询开始时间
        search_end_date 查询结束时间
    """
    # 获取搜索区间日志
    new_log_lst = dat_log_util.read_file_with_user_level_state("GOLD_STAGE_CHALLENGE", search_start_date, search_end_date)

    table_lst = []
    search_days = (search_end_date - search_start_date).days+1
    if new_log_lst:
     for _day in xrange(search_days):
            new_log = new_log_lst[_day]
            new_log.sort(lambda x, y: cmp(x[0], y[0]))
            row_date = search_start_date + datetime.timedelta(days=_day)
            for _lv in new_log:
                stage_config = game_config.get_stages_config(int(_lv[0]))
                # 副本名称
                stage_name = stage_config['stageInfo']+"_"+str(stage_config['id'])
                join_user_num = _lv[1]  # 参与人数
                join_num = _lv[2] # 总参与次数
                win_user_num = _lv[3] # 完成人数
                complete_count = _lv[4] # 总完成次数
                all_user_num = _lv[5] # 到达要求人数
                join_rate = _lv[6] # 参与率
                win_rate = _lv[7] # 成功率
                row_lst = [
                    row_date.strftime('%m/%d/%Y'),  # 日期
                    stage_name,# 关卡名称
                    join_user_num,  # 参与人数
                    win_user_num, # 完成人数
                    all_user_num, # 到达要求人数
                    str(join_rate * 100)+"%", # 参与率
                    join_num, # 总参与次数
                    complete_count, # 总完成次数
                    str(win_rate * 100)+"%" # 成功率
                ]
                table_lst.append(row_lst)
    return table_lst
예제 #3
0
 def update_stages(self):
     """
     重置所有关卡数据
         Return BOOL 是否重置了
     """
     now_date = datetime.datetime.now().date()
     # 可以更新
     # print("self.last_reset_time " + str(self.last_reset_time) + "  now_date " + str(now_date))
     if self.last_reset_time != now_date:
         self.last_reset_time = now_date
         new_stages_dict = dict()
         for item in self.stages.values():
             #获取表格默认次数
             config = game_config.get_stages_config(item['id'])
             if config:
                 new_stage_dict = dict()
                 new_stage_dict['id'] = item['id']
                 new_stage_dict['num'] = 0
                 new_stage_dict['buy_count'] = 0
                 new_stage_dict['rank'] = item.get('rank', self.STAGE_RANK_NONE)
                 new_stages_dict[item['id']] = new_stage_dict
         self.stages = new_stages_dict
         return True
     return False
def get_player_activity_weixin_share_function(request, templates):
    """
        玩家运营数据编辑 单笔充值

        source {'reward_end_date': datetime.date(2015, 8, 15),
                'complete': [2,3],          # 可完成   #微信分享没有用
                'version': u'20150716_14_09',
                'has_reward_lst': [2],      # 完成并交接
                'uid': '1000103005'}

        reward_share_weixin_config
                {"itemId": 0, "stone": 500, "star": 0, "power": 0,"gold": 0, "freeDrop": 0,
                 "itemNum": 0, "playerLevel": 50, "id": 5, "stage": 0}
    """

    # 以函数的指针方式传递函数并调用
    function_name = 'data_edit.player_activity_weixin_share.{function}'.format(function=set_player_activity_weixin_share_function.__name__)
    print 'function_name', function_name
    server_list, platform_list = daily_log._get_server_list(None, None)
    try:
        server_list.remove(server_list[0])
    except:
        pass

    return_uid = '请输入uid'
    return_openid = "请输入openid"
    return_name = "请输入玩家昵称"
    if request.method == 'POST':
        user_uid = request.POST.get('user_uid')
        user_name = request.POST.get('user_name').encode('utf-8')
        user_openid = request.POST.get('user_openid')
        server_id = int(request.POST.get('server_id'))
        type_hidden = 'visible'
        cmem_url = server_define.CMEM_MAP[int(server_id)]

        head_lst = [
            {'name': u'名称'},
            {'name': u'1代表已有——0代表没有'},
        ]
        if cmem_url:
            try:
                source = dict()
                if len(user_uid):
                    source = memcache.get_cmem_val(cmem_url, model_define.PLAYER_ACTIVITY_WEIXIN_SHARE_MODEL.format(user_id=user_uid))
                elif len(user_name):
                    name = hashlib.md5(user_name).hexdigest().upper()
                    key = model_define.PLAYER_NICK_NAME_MODEL.format(player_nick_md5=name)
                    user_uid = memcache.get_cmem_val_no_pick(cmem_url, key)
                    return_name = user_name
                    source = memcache.get_cmem_val(cmem_url, model_define.PLAYER_ACTIVITY_WEIXIN_SHARE_MODEL.format(user_id=user_uid))
                elif len(user_openid):
                    result = memcache.get_cmem_val(cmem_url, model_define.ACCOUNT_MAPPING_MODEL.format(open_id=user_openid))
                    user_uid = result['uid']
                    return_openid = user_openid
                    source = memcache.get_cmem_val(cmem_url, model_define.PLAYER_ACTIVITY_WEIXIN_SHARE_MODEL.format(user_id=user_uid))
                if source:
                    print 'source', source
                    row_dict = collections.OrderedDict()  # 有序字典
                    # -----------------------------------不可改元素---------------------------------------------------------------#
                    # [[[0,1],[0,1]],[[0,1],[0,1]]] 三层[]
                    # ------------------------用户UID
                    uid = source.get('uid', 'None')
                    if uid != 'None':
                        uid_lst = [[u'用户UID', uid]]
                    else:
                        uid_lst = []
                    # ------------------运营活动奖励结束时间
                    try:
                        reward_end_date = source['reward_end_date'].strftime('%Y-%m-%d')   # 运营活动奖励结束时间
                        reward_end_date_lst = [[u'运营活动奖励结束时间', reward_end_date]]
                    except:
                        reward_end_date_lst = []
                    # ------------------运营活动当前版本
                    try:
                        version = source['version']   # 运营活动当前版本
                        version_lst = [[u'运营活动当前版本', version]]
                    except:
                        version_lst = []

                    # ---------------- 玩家领取的奖励
                    try:
                        reward_lst = source.get('has_reward_lst', [])                   # [1,2,3,4,5]
                        reward_str = ''                                                                 # 字符串
                        cur_reward_config_lst = game_config.get_all_reward_share_weixin_config()  # 策划填的配置表
                        if reward_lst:
                            for reward_id in reward_lst:
                                each_conf_lst = cur_reward_config_lst[str(reward_id)]       # 取出每条配置表
                                for key, each_int_value in each_conf_lst.items():           # 遍历每个key 值
                                    if each_int_value:                                      # 有值
                                        if key in CUR_CON_STR_DIT:                          # 且在配置字典
                                            if key in SPECIAL_CON_STR_LST.keys():           # 是特殊处理key
                                                each_item_str = game_config.get_item_config(each_int_value)['name']  # 取物品名
                                                each_item_str += u": "
                                                each_item_val = each_conf_lst[SPECIAL_CON_STR_LST[key]]              # 取数量
                                            else:
                                                if u'stage' == key:
                                                    stage_dic = game_config.get_stages_config(each_int_value)
                                                    each_item_str = u'通过副本_' + stage_dic['stageInfo'] + u'_'
                                                    each_item_val = each_int_value
                                                else:
                                                    each_item_str = CUR_CON_STR_DIT[key]                         # 取物品名
                                                    each_item_val = each_int_value                               # 取数量
                                            reward_str += each_item_str                                      # 字符串拼接名字
                                            reward_str += str(each_item_val) + ";   "                        # 字符串拼接值
                                        else:
                                            continue
                                    else:
                                        continue
                                reward_str += '-----------'
                            reward_lst = [[u'玩家已奖励信息',reward_str]]
                            # print reward_lst
                    except:
                        reward_lst = []
                    # ---------------- 玩家已完成充值
                    try:
                        complete_reward_lst = source.get('complete', [])                   # [1,2,3,4,5]
                        reward_str = ''                                                                 # 字符串
                        cur_reward_config_lst = game_config.get_all_reward_share_weixin_config()  # 策划填的配置表
                        if complete_reward_lst:
                            for reward_id in complete_reward_lst:
                                each_conf_lst = cur_reward_config_lst[str(reward_id)]       # 取出每条配置表
                                for key, each_int_value in each_conf_lst.items():           # 遍历每个key 值
                                    if each_int_value:                                      # 有值
                                        if key in CUR_CON_STR_DIT:                          # 且在配置字典
                                            if key in SPECIAL_CON_STR_LST.keys():           # 是特殊处理key
                                                each_item_str = game_config.get_item_config(each_int_value)['name']  # 取物品名
                                                each_item_str += u": "
                                                each_item_val = each_conf_lst[SPECIAL_CON_STR_LST[key]]              # 取数量
                                            else:
                                                if u'stage' == key:
                                                    stage_dic = game_config.get_stages_config(each_int_value)
                                                    each_item_str = u'通过副本_' + stage_dic['stageInfo'] + u'_'
                                                    each_item_val = each_int_value
                                                else:
                                                    each_item_str = CUR_CON_STR_DIT[key]                         # 取物品名
                                                    each_item_val = each_int_value                               # 取数量                         # 取数量
                                            reward_str += each_item_str                                      # 字符串拼接名字
                                            reward_str += str(each_item_val) + ";   "                        # 字符串拼接值
                                        else:
                                            continue
                                    else:
                                        continue
                                reward_str += '-----------'
                            complete_reward_lst = [[u'玩家可领取奖励信息',reward_str]]
                            # print complete_reward_lst
                    except:
                        complete_reward_lst = []
                    # ------------------- 汇总 有就加入总表(三层列表 [[[],[]],[[],[]]])
                    all_immutable_lst = []
                    if uid_lst:
                        all_immutable_lst.append(uid_lst)
                    if reward_end_date_lst:
                        all_immutable_lst.append(reward_end_date_lst)
                    if version_lst:
                        all_immutable_lst.append(version_lst)
                    if reward_lst:
                        all_immutable_lst.append(reward_lst)
                    if complete_reward_lst:
                        all_immutable_lst.append(complete_reward_lst)
                    # -------------------------------------------------------------------------------------------------------------------#
                    # -----------------------------------可改元素-------------------------------------------------------------------------#
                    # {key1:{'name':X,'num':X},key2:{'name':X,'num':X}}
                    # complete has_reward_lst
                    # 单笔充值 可改元素 完成未交任务表 完成并交任务表
                    # _complete = source.get('complete', [])
                    _has_reward_lst = source.get('has_reward_lst', [])
                    cur_reward_config_lst = game_config.get_all_reward_share_weixin_config()        # 策划填的配置表
                    # key1 ==> "has_reward_lst$$1"
                    for i in xrange(1, len(cur_reward_config_lst)+1):
                        key_str = string.join(['has_reward_lst', str(i)], '$$')
                        key_str1 = string.join(['complete', str(i)], '$$')
                        # if i in _complete:
                        #     row_dict[key_str1] = {'name': u'可领奖励%s'%(str(i)), 'num': 1}
                        # else:
                        #     row_dict[key_str1] = {'name': u'可领奖励%s'%(str(i)), 'num': 0}
                        if i in _has_reward_lst:
                            row_dict[key_str] = {'name': u'已领奖励%s'%(str(i)), 'num': 1}
                        else:
                            row_dict[key_str] = {'name': u'已领奖励%s'%(str(i)), 'num': 0}
                    # -----------------------------------------------------------------------------------------------------------------------#
                else:
                    if user_uid:
                        return_uid = user_uid
                        if user_openid:
                            return_openid = user_openid
                        if user_name:
                            return_name = user_name

                return render_to_response(templates, locals(), RequestContext(request))

            except UnboundLocalError:
                type_hidden = 'hidden'
                return render_to_response(templates, locals(), RequestContext(request))

            except TypeError:
                type_hidden = 'hidden'
                return render_to_response(templates, locals(), RequestContext(request))

    else:
        row_list = []
        type_hidden = 'hidden'
        return render_to_response(templates, locals(), RequestContext(request))
예제 #5
0
def set_player_data(request):
    # 获取管理员信息
    manager = GameManager.get_by_request(request)
    head_lst = [
        #{'width': 50, 'name': u'UID'},
        {
            'width': 50,
            'name': u'名称'
        },
        {
            'width': 50,
            'name': u'当前值'
        },
        {
            'width': 50,
            'name': u'修改'
        },
    ]
    server_list_dat = get_server_list_dat()
    if request.method == 'POST':
        print request.POST, 'post'
        user_id = request.POST.get('user_id')
        server_id = int(request.POST.get('server_id'))
        typ = request.POST.get('type')
        value = request.POST.get('value')
        #print 'value',value
        if value <> '':
            if typ <> 'str':
                if typ == 'bool':
                    value = eval(typ)(eval(value))
                else:
                    value = eval(typ)(value)
                #print value
        key = request.POST.get('key')
        data = ''
        if key == 'newbie':
            # print 'newbie'
            # print int(value)
            # print get_newbie_phase_config(int(value))
            if get_newbie_phase_config(int(value)) == None:
                data = '新手引导ID应在1~5之间'
        elif key == 'gold':
            pass
        elif key == 'champion_index':
            if int(value) not in [1, 2, 3, 4, 0]:
                data = '冠军宠物位置应该在0~4之间'
        elif key == 'reward_cur_monster_star_level_id':
            if get_reward_monster_star_level_config(int(value)) == None:
                data = u'宠物等级奖励序列应在1~18之间'
        elif key == 'universal_fragment':
            pass
        elif key == 'title':
            if get_the_title_config(int(value)) == None:
                data = '玩家爵位应在1~21之间'
        elif key == 'consumption_point':
            pass
        elif key == 'role_id':
            pass
        elif key == 'reward_login_series_id':
            pass
        elif key == 'reward_cur_monster_kind_id':
            if get_reward_monster_kind_config(int(value)) == None:
                data = '宠物种类奖励序列应在1~18之间'
        elif key == 'has_first_recharge_lst':
            pass
        elif key == 'is_stone_one_draw':
            if int(value) not in [0, 1]:
                data = '首次钻石单抽状态取值应为0或1,0代表未抽过,1代表抽过'
        elif key == 'is_ten_draw':
            if int(value) not in [0, 1]:
                data = '首次钻石十连抽状态取值应为0或1,0代表未抽过,1代表抽过'
        elif key == 'champion_tid':
            cmem_url = server_define.CMEM_MAP[int(server_id)]
            source = memcache.get_cmem_val(
                cmem_url, model_define.MONSTER_MODEL.format(user_id=user_id))
            # print source['monsters']
            sign = 0
            for i in source['monsters']:
                if int(value) == i['tid']:
                    sign = 1
            # print sign
            if sign == 0:
                data = u'输入的宠物id不属于玩家拥有的宠物之一,请正确输入,玩家现有宠物:'
                for i in source['monsters']:
                    a = '(%s:%s)' % (i['tid'], get_monster_config(
                        i['tid'])['name'])
                    data += a
        elif key == 'champion_power':
            pass
        elif key == 'name':
            pass
        elif key == 'level':
            if int(value) > 120 or int(value) < 1:
                data = u'玩家等级应在1~120级之间,请输入正确的值'
        elif key == 'cur_stage':
            if get_stages_config(int(value)) == None:
                data = u'关卡ID输入错误'
        elif key == 'reward_cur_monster_quality_id':
            if get_reward_monster_quality_config(int(value)) == None:
                data = u'当前宠物品质奖励序列应在1~3之间'
        elif key == 'reward_cur_team_combat_power_id':
            if get_reward_team_power(int(value)) == None:
                data = u'当前队伍战斗力奖励序列应在1~47之间'
        elif key == 'reward_friend_num_id':
            if get_fried_num_config(int(value)) == None:
                data = u'好友数量奖励序列应在1~6之间'
        elif key == 'reward_cur_monster_level_id':
            if get_reward_monster_level_config(int(value)) == None:
                data = u'宠物等级奖励序列应在1~10之间'

        if value <> '' and data == '':
            # print "i'work"
            cmem_url = server_define.CMEM_MAP[int(server_id)]
            if cmem_url:
                source = memcache.get_cmem_val(
                    cmem_url,
                    model_define.PLAYER_MODEL.format(user_id=user_id))
                if eval(typ) == type(value) or (typ == 'str'
                                                and type(value) == unicode):
                    #print source,key,value,user_id,type(user_id)
                    old_value = source[key]
                    source[key] = value
                    memcache.put_cmem_val(
                        cmem_url,
                        model_define.PLAYER_MODEL.format(user_id=user_id),
                        source)
                    # 操作日志记录
                    insert_action_edit_player(manager, str(server_id),
                                              str(user_id), key, old_value,
                                              value)
        return HttpResponse(data)
def get_player_catch_monster_function(request, player_catch_monster_edit):
    """
        玩家抓宠副本编辑
        source
        {'catch_monster_stage_id_lst': [40501, 40801, 40802],
         'catch_monster_stage_lst': [1, 6, 1],
          'last_refresh_date': datetime.date(2015, 7, 25),
           'uid': '1000101754'
            }
    """
    # 以函数的指针方式传递函数并调用
    function_name = 'data_edit.player_catch_monster.{function}'.format(function=set_player_catch_monster_function.__name__)
    server_list, platform_list = daily_log._get_server_list(None, None)
    try:
        server_list.remove(server_list[0])
    except:
        pass

    return_uid = '请输入uid'
    return_openid = "请输入openid"
    return_name = "请输入玩家昵称"
    if request.method == 'POST':
        user_uid = request.POST.get('user_uid')
        user_name = request.POST.get('user_name').encode('utf-8')
        user_openid = request.POST.get('user_openid')
        server_id = int(request.POST.get('server_id'))
        type_hidden = 'visible'
        cmem_url = server_define.CMEM_MAP[int(server_id)]

        head_lst = [
            {'name': u'副本名称'},
            {'name': u'攻打次数'},
        ]
        if cmem_url:
            try:
                source = dict()
                if len(user_uid):
                    source = memcache.get_cmem_val(cmem_url, model_define.CATCH_MONSTER_MODEL.format(user_id=user_uid))
                elif len(user_name):
                    name = hashlib.md5(user_name).hexdigest().upper()
                    key = model_define.PLAYER_NICK_NAME_MODEL.format(player_nick_md5=name)
                    user_uid = memcache.get_cmem_val_no_pick(cmem_url, key)
                    return_name = user_name
                    source = memcache.get_cmem_val(cmem_url, model_define.CATCH_MONSTER_MODEL.format(user_id=user_uid))
                elif len(user_openid):
                    result = memcache.get_cmem_val(cmem_url, model_define.ACCOUNT_MAPPING_MODEL.format(open_id=user_openid))
                    user_uid = result['uid']
                    return_openid = user_openid
                    source = memcache.get_cmem_val(cmem_url, model_define.CATCH_MONSTER_MODEL.format(user_id=user_uid))
                if source:
                    # print 'source', source

                    row_dict = collections.OrderedDict()  # 有序字典
                    return_uid = user_uid
                    last_refresh_date = source.get('last_refresh_date', datetime.date(0001, 01, 01)).strftime('%Y-%m-%d')
                    for stage_id, stage_count in zip(source['catch_monster_stage_id_lst'], source['catch_monster_stage_lst']):
                        stage_config = game_config.get_stages_config(int(stage_id))
                        try:
                            row_dict[stage_id] = {'name': stage_config['stageInfo'] + '_' + str(stage_config['id']),
                                                  'num': stage_count,
                                                  }
                        except:
                            print stage_id, stage_count
                else:
                    # 数据为空 返回空表
                    if user_uid:
                        return_uid = user_uid
                    else:
                        user_uid = "None"
                    last_refresh_date = 'None'
                    row_dict = {'name': 'None', 'num': 'None'}
                # print row_dict
                return render_to_response(player_catch_monster_edit, locals(), RequestContext(request))

            except UnboundLocalError:
                type_hidden = 'hidden'
                return render_to_response(player_catch_monster_edit, locals(), RequestContext(request))

            except TypeError:
                type_hidden = 'hidden'
                return render_to_response(player_catch_monster_edit, locals(), RequestContext(request))

    else:
        row_list = []
        type_hidden = 'hidden'
        return render_to_response(player_catch_monster_edit, locals(), RequestContext(request))
예제 #7
0
def get_stage_data_function(request, player_stage_edit):
    """
        玩家关卡数据编辑
        {
        'data_version': '2',
         'stages': {30211: {'num': 0, 'id': 30211, 'rank': -1, 'buy_count': 0},30085: {'num': 0, 'id': 30085, 'rank': 0, 'buy_count': 0},}
        'uid': '1000099826',
        'last_reset_time': datetime.date(2015, 7, 24)
        }
    """
    # 以函数的指针方式传递函数并调用
    function_name = 'data_edit.player_stage_edit.{function}'.format(
        function=set_stage_data_function.__name__)
    server_list, platform_list = daily_log._get_server_list(None, None)
    try:
        server_list.remove(server_list[0])
    except:
        pass

    return_uid = '请输入uid'
    return_openid = "请输入openid"
    return_name = "请输入玩家昵称"
    if request.method == 'POST':
        user_uid = request.POST.get('user_uid')
        user_name = request.POST.get('user_name').encode('utf-8')
        user_openid = request.POST.get('user_openid')
        server_id = int(request.POST.get('server_id'))
        type_hidden = 'visible'
        cmem_url = server_define.CMEM_MAP[int(server_id)]

        head_lst = [
            {
                'name': u'副本名称'
            },
            {
                'name': u'攻打次数'
            },
            {
                'name': u'是否已开启'
            },
            {
                'name': u'重置次数'
            },
        ]
        if cmem_url:
            try:
                source = dict()

                if len(user_uid):
                    source = memcache.get_cmem_val(
                        cmem_url,
                        model_define.STAGE_MODEL.format(user_id=user_uid))
                    return_uid = user_uid
                elif len(user_name):
                    name = hashlib.md5(user_name).hexdigest().upper()
                    key = model_define.PLAYER_NICK_NAME_MODEL.format(
                        player_nick_md5=name)
                    user_uid = memcache.get_cmem_val_no_pick(cmem_url, key)
                    return_uid = user_uid
                    return_name = user_name
                    source = memcache.get_cmem_val(
                        cmem_url,
                        model_define.STAGE_MODEL.format(user_id=user_uid))
                elif len(user_openid):
                    result = memcache.get_cmem_val(
                        cmem_url,
                        model_define.ACCOUNT_MAPPING_MODEL.format(
                            open_id=user_openid))
                    user_uid = result['uid']
                    return_uid = user_uid
                    return_openid = user_openid
                    source = memcache.get_cmem_val(
                        cmem_url,
                        model_define.STAGE_MODEL.format(user_id=return_uid))
                if source:
                    # print 'source', source

                    row_dict = collections.OrderedDict()  # 有序字典

                    for stage_id, stage_state in source['stages'].items():
                        stage_config = game_config.get_stages_config(
                            int(stage_id))
                        try:
                            row_dict[stage_id] = {
                                'name':
                                stage_config['stageInfo'] + '_' +
                                str(stage_config['id']),
                                'num':
                                stage_state.get('num', 'None'),
                                'rank':
                                stage_state.get('rank', 'None'),
                                'buy_count':
                                stage_state.get('buy_count', 'None'),
                            }
                        except:
                            print stage_id, stage_state
                return render_to_response(player_stage_edit, locals(),
                                          RequestContext(request))

            except UnboundLocalError:
                type_hidden = 'hidden'
                return render_to_response(player_stage_edit, locals(),
                                          RequestContext(request))

            except TypeError:
                type_hidden = 'hidden'
                return render_to_response(player_stage_edit, locals(),
                                          RequestContext(request))

    else:
        row_list = []
        type_hidden = 'hidden'
        return render_to_response(player_stage_edit, locals(),
                                  RequestContext(request))
예제 #8
0
def get_player_activity_weixin_share_function(request, templates):
    """
        玩家运营数据编辑 单笔充值

        source {'reward_end_date': datetime.date(2015, 8, 15),
                'complete': [2,3],          # 可完成   #微信分享没有用
                'version': u'20150716_14_09',
                'has_reward_lst': [2],      # 完成并交接
                'uid': '1000103005'}

        reward_share_weixin_config
                {"itemId": 0, "stone": 500, "star": 0, "power": 0,"gold": 0, "freeDrop": 0,
                 "itemNum": 0, "playerLevel": 50, "id": 5, "stage": 0}
    """

    # 以函数的指针方式传递函数并调用
    function_name = 'data_edit.player_activity_weixin_share.{function}'.format(
        function=set_player_activity_weixin_share_function.__name__)
    print 'function_name', function_name
    server_list, platform_list = daily_log._get_server_list(None, None)
    try:
        server_list.remove(server_list[0])
    except:
        pass

    return_uid = '请输入uid'
    return_openid = "请输入openid"
    return_name = "请输入玩家昵称"
    if request.method == 'POST':
        user_uid = request.POST.get('user_uid')
        user_name = request.POST.get('user_name').encode('utf-8')
        user_openid = request.POST.get('user_openid')
        server_id = int(request.POST.get('server_id'))
        type_hidden = 'visible'
        cmem_url = server_define.CMEM_MAP[int(server_id)]

        head_lst = [
            {
                'name': u'名称'
            },
            {
                'name': u'1代表已有——0代表没有'
            },
        ]
        if cmem_url:
            try:
                source = dict()
                if len(user_uid):
                    source = memcache.get_cmem_val(
                        cmem_url,
                        model_define.PLAYER_ACTIVITY_WEIXIN_SHARE_MODEL.format(
                            user_id=user_uid))
                elif len(user_name):
                    name = hashlib.md5(user_name).hexdigest().upper()
                    key = model_define.PLAYER_NICK_NAME_MODEL.format(
                        player_nick_md5=name)
                    user_uid = memcache.get_cmem_val_no_pick(cmem_url, key)
                    return_name = user_name
                    source = memcache.get_cmem_val(
                        cmem_url,
                        model_define.PLAYER_ACTIVITY_WEIXIN_SHARE_MODEL.format(
                            user_id=user_uid))
                elif len(user_openid):
                    result = memcache.get_cmem_val(
                        cmem_url,
                        model_define.ACCOUNT_MAPPING_MODEL.format(
                            open_id=user_openid))
                    user_uid = result['uid']
                    return_openid = user_openid
                    source = memcache.get_cmem_val(
                        cmem_url,
                        model_define.PLAYER_ACTIVITY_WEIXIN_SHARE_MODEL.format(
                            user_id=user_uid))
                if source:
                    print 'source', source
                    row_dict = collections.OrderedDict()  # 有序字典
                    # -----------------------------------不可改元素---------------------------------------------------------------#
                    # [[[0,1],[0,1]],[[0,1],[0,1]]] 三层[]
                    # ------------------------用户UID
                    uid = source.get('uid', 'None')
                    if uid != 'None':
                        uid_lst = [[u'用户UID', uid]]
                    else:
                        uid_lst = []
                    # ------------------运营活动奖励结束时间
                    try:
                        reward_end_date = source['reward_end_date'].strftime(
                            '%Y-%m-%d')  # 运营活动奖励结束时间
                        reward_end_date_lst = [[
                            u'运营活动奖励结束时间', reward_end_date
                        ]]
                    except:
                        reward_end_date_lst = []
                    # ------------------运营活动当前版本
                    try:
                        version = source['version']  # 运营活动当前版本
                        version_lst = [[u'运营活动当前版本', version]]
                    except:
                        version_lst = []

                    # ---------------- 玩家领取的奖励
                    try:
                        reward_lst = source.get('has_reward_lst',
                                                [])  # [1,2,3,4,5]
                        reward_str = ''  # 字符串
                        cur_reward_config_lst = game_config.get_all_reward_share_weixin_config(
                        )  # 策划填的配置表
                        if reward_lst:
                            for reward_id in reward_lst:
                                each_conf_lst = cur_reward_config_lst[str(
                                    reward_id)]  # 取出每条配置表
                                for key, each_int_value in each_conf_lst.items(
                                ):  # 遍历每个key 值
                                    if each_int_value:  # 有值
                                        if key in CUR_CON_STR_DIT:  # 且在配置字典
                                            if key in SPECIAL_CON_STR_LST.keys(
                                            ):  # 是特殊处理key
                                                each_item_str = game_config.get_item_config(
                                                    each_int_value)[
                                                        'name']  # 取物品名
                                                each_item_str += u": "
                                                each_item_val = each_conf_lst[
                                                    SPECIAL_CON_STR_LST[
                                                        key]]  # 取数量
                                            else:
                                                if u'stage' == key:
                                                    stage_dic = game_config.get_stages_config(
                                                        each_int_value)
                                                    each_item_str = u'通过副本_' + stage_dic[
                                                        'stageInfo'] + u'_'
                                                    each_item_val = each_int_value
                                                else:
                                                    each_item_str = CUR_CON_STR_DIT[
                                                        key]  # 取物品名
                                                    each_item_val = each_int_value  # 取数量
                                            reward_str += each_item_str  # 字符串拼接名字
                                            reward_str += str(
                                                each_item_val
                                            ) + ";   "  # 字符串拼接值
                                        else:
                                            continue
                                    else:
                                        continue
                                reward_str += '-----------'
                            reward_lst = [[u'玩家已奖励信息', reward_str]]
                            # print reward_lst
                    except:
                        reward_lst = []
                    # ---------------- 玩家已完成充值
                    try:
                        complete_reward_lst = source.get('complete',
                                                         [])  # [1,2,3,4,5]
                        reward_str = ''  # 字符串
                        cur_reward_config_lst = game_config.get_all_reward_share_weixin_config(
                        )  # 策划填的配置表
                        if complete_reward_lst:
                            for reward_id in complete_reward_lst:
                                each_conf_lst = cur_reward_config_lst[str(
                                    reward_id)]  # 取出每条配置表
                                for key, each_int_value in each_conf_lst.items(
                                ):  # 遍历每个key 值
                                    if each_int_value:  # 有值
                                        if key in CUR_CON_STR_DIT:  # 且在配置字典
                                            if key in SPECIAL_CON_STR_LST.keys(
                                            ):  # 是特殊处理key
                                                each_item_str = game_config.get_item_config(
                                                    each_int_value)[
                                                        'name']  # 取物品名
                                                each_item_str += u": "
                                                each_item_val = each_conf_lst[
                                                    SPECIAL_CON_STR_LST[
                                                        key]]  # 取数量
                                            else:
                                                if u'stage' == key:
                                                    stage_dic = game_config.get_stages_config(
                                                        each_int_value)
                                                    each_item_str = u'通过副本_' + stage_dic[
                                                        'stageInfo'] + u'_'
                                                    each_item_val = each_int_value
                                                else:
                                                    each_item_str = CUR_CON_STR_DIT[
                                                        key]  # 取物品名
                                                    each_item_val = each_int_value  # 取数量                         # 取数量
                                            reward_str += each_item_str  # 字符串拼接名字
                                            reward_str += str(
                                                each_item_val
                                            ) + ";   "  # 字符串拼接值
                                        else:
                                            continue
                                    else:
                                        continue
                                reward_str += '-----------'
                            complete_reward_lst = [[u'玩家可领取奖励信息', reward_str]]
                            # print complete_reward_lst
                    except:
                        complete_reward_lst = []
                    # ------------------- 汇总 有就加入总表(三层列表 [[[],[]],[[],[]]])
                    all_immutable_lst = []
                    if uid_lst:
                        all_immutable_lst.append(uid_lst)
                    if reward_end_date_lst:
                        all_immutable_lst.append(reward_end_date_lst)
                    if version_lst:
                        all_immutable_lst.append(version_lst)
                    if reward_lst:
                        all_immutable_lst.append(reward_lst)
                    if complete_reward_lst:
                        all_immutable_lst.append(complete_reward_lst)
                    # -------------------------------------------------------------------------------------------------------------------#
                    # -----------------------------------可改元素-------------------------------------------------------------------------#
                    # {key1:{'name':X,'num':X},key2:{'name':X,'num':X}}
                    # complete has_reward_lst
                    # 单笔充值 可改元素 完成未交任务表 完成并交任务表
                    # _complete = source.get('complete', [])
                    _has_reward_lst = source.get('has_reward_lst', [])
                    cur_reward_config_lst = game_config.get_all_reward_share_weixin_config(
                    )  # 策划填的配置表
                    # key1 ==> "has_reward_lst$$1"
                    for i in xrange(1, len(cur_reward_config_lst) + 1):
                        key_str = string.join(['has_reward_lst', str(i)], '$$')
                        key_str1 = string.join(['complete', str(i)], '$$')
                        # if i in _complete:
                        #     row_dict[key_str1] = {'name': u'可领奖励%s'%(str(i)), 'num': 1}
                        # else:
                        #     row_dict[key_str1] = {'name': u'可领奖励%s'%(str(i)), 'num': 0}
                        if i in _has_reward_lst:
                            row_dict[key_str] = {
                                'name': u'已领奖励%s' % (str(i)),
                                'num': 1
                            }
                        else:
                            row_dict[key_str] = {
                                'name': u'已领奖励%s' % (str(i)),
                                'num': 0
                            }
                    # -----------------------------------------------------------------------------------------------------------------------#
                else:
                    if user_uid:
                        return_uid = user_uid
                        if user_openid:
                            return_openid = user_openid
                        if user_name:
                            return_name = user_name

                return render_to_response(templates, locals(),
                                          RequestContext(request))

            except UnboundLocalError:
                type_hidden = 'hidden'
                return render_to_response(templates, locals(),
                                          RequestContext(request))

            except TypeError:
                type_hidden = 'hidden'
                return render_to_response(templates, locals(),
                                          RequestContext(request))

    else:
        row_list = []
        type_hidden = 'hidden'
        return render_to_response(templates, locals(), RequestContext(request))
예제 #9
0
def get_stage_data_function(request, player_stage_edit):
    """
        玩家关卡数据编辑
        {
        'data_version': '2',
         'stages': {30211: {'num': 0, 'id': 30211, 'rank': -1, 'buy_count': 0},30085: {'num': 0, 'id': 30085, 'rank': 0, 'buy_count': 0},}
        'uid': '1000099826',
        'last_reset_time': datetime.date(2015, 7, 24)
        }
    """
    # 以函数的指针方式传递函数并调用
    function_name = 'data_edit.player_stage_edit.{function}'.format(function=set_stage_data_function.__name__)
    server_list, platform_list = daily_log._get_server_list(None, None)
    try:
        server_list.remove(server_list[0])
    except:
        pass

    return_uid = '请输入uid'
    return_openid = "请输入openid"
    return_name = "请输入玩家昵称"
    if request.method == 'POST':
        user_uid = request.POST.get('user_uid')
        user_name = request.POST.get('user_name').encode('utf-8')
        user_openid = request.POST.get('user_openid')
        server_id = int(request.POST.get('server_id'))
        type_hidden = 'visible'
        cmem_url = server_define.CMEM_MAP[int(server_id)]

        head_lst = [
            {'name': u'副本名称'},
            {'name': u'攻打次数'},
            {'name': u'是否已开启'},
            {'name': u'重置次数'},
        ]
        if cmem_url:
            try:
                source = dict()

                if len(user_uid):
                    source = memcache.get_cmem_val(cmem_url, model_define.STAGE_MODEL.format(user_id=user_uid))
                    return_uid = user_uid
                elif len(user_name):
                    name = hashlib.md5(user_name).hexdigest().upper()
                    key = model_define.PLAYER_NICK_NAME_MODEL.format(player_nick_md5=name)
                    user_uid = memcache.get_cmem_val_no_pick(cmem_url, key)
                    return_uid = user_uid
                    return_name = user_name
                    source = memcache.get_cmem_val(cmem_url, model_define.STAGE_MODEL.format(user_id=user_uid))
                elif len(user_openid):
                    result = memcache.get_cmem_val(cmem_url, model_define.ACCOUNT_MAPPING_MODEL.format(open_id=user_openid))
                    user_uid = result['uid']
                    return_uid = user_uid
                    return_openid = user_openid
                    source = memcache.get_cmem_val(cmem_url, model_define.STAGE_MODEL.format(user_id=return_uid))
                if source:
                    # print 'source', source

                    row_dict = collections.OrderedDict()  # 有序字典

                    for stage_id, stage_state in source['stages'].items():
                        stage_config = game_config.get_stages_config(int(stage_id))
                        try:
                            row_dict[stage_id] = {'name': stage_config['stageInfo'] + '_' + str(stage_config['id']),
                                                  'num': stage_state.get('num', 'None'),
                                                  'rank': stage_state.get('rank', 'None'),
                                                  'buy_count': stage_state.get('buy_count', 'None'),
                                                  }
                        except:
                            print stage_id, stage_state
                return render_to_response(player_stage_edit, locals(), RequestContext(request))

            except UnboundLocalError:
                type_hidden = 'hidden'
                return render_to_response(player_stage_edit, locals(), RequestContext(request))

            except TypeError:
                type_hidden = 'hidden'
                return render_to_response(player_stage_edit, locals(), RequestContext(request))

    else:
        row_list = []
        type_hidden = 'hidden'
        return render_to_response(player_stage_edit, locals(), RequestContext(request))
예제 #10
0
def set_player_data(request):
    # 获取管理员信息
    manager = GameManager.get_by_request(request)
    head_lst = [
        #{'width': 50, 'name': u'UID'},
        {'width': 50, 'name': u'名称'},
        {'width': 50, 'name': u'当前值'},
        {'width': 50, 'name': u'修改'},
        ]
    server_list_dat = get_server_list_dat()
    if request.method == 'POST':
        print request.POST,'post'
        user_id=request.POST.get('user_id')
        server_id=int(request.POST.get('server_id'))
        typ=request.POST.get('type')
        value=request.POST.get('value')
        #print 'value',value
        if value <> '':
            if typ <> 'str':
                if typ=='bool':
                    value=eval(typ)(eval(value))
                else:
                    value=eval(typ)(value)
                #print value
        key=request.POST.get('key')
        data=''
        if key=='newbie':
            # print 'newbie'
            # print int(value)
            # print get_newbie_phase_config(int(value))
            if get_newbie_phase_config(int(value))==None:
                data='新手引导ID应在1~5之间'
        elif key=='gold':
            pass
        elif key=='champion_index':
            if int(value) not in [1,2,3,4,0]:
                data='冠军宠物位置应该在0~4之间'
        elif key=='reward_cur_monster_star_level_id':
            if get_reward_monster_star_level_config(int(value))==None:
                data=u'宠物等级奖励序列应在1~18之间'
        elif key=='universal_fragment':
            pass
        elif key=='title':
            if get_the_title_config(int(value))==None:
                data='玩家爵位应在1~21之间'
        elif key=='consumption_point':
            pass
        elif key=='role_id':
            pass
        elif key=='reward_login_series_id':
            pass
        elif key=='reward_cur_monster_kind_id':
            if get_reward_monster_kind_config(int(value))==None:
                data='宠物种类奖励序列应在1~18之间'
        elif key=='has_first_recharge_lst':
            pass
        elif key=='is_stone_one_draw':
            if int(value) not in [0,1]:
                 data='首次钻石单抽状态取值应为0或1,0代表未抽过,1代表抽过'
        elif key=='is_ten_draw':
            if int(value) not in [0,1]:
                data='首次钻石十连抽状态取值应为0或1,0代表未抽过,1代表抽过'
        elif key=='champion_tid':
            cmem_url=server_define.CMEM_MAP[int(server_id)]
            source=memcache.get_cmem_val(cmem_url,model_define.MONSTER_MODEL.format(user_id=user_id))
            # print source['monsters']
            sign=0
            for i in source['monsters']:
                if int(value) == i['tid']:
                    sign=1
            # print sign
            if sign==0:
                data=u'输入的宠物id不属于玩家拥有的宠物之一,请正确输入,玩家现有宠物:'
                for i in source['monsters']:
                    a='(%s:%s)'% (i['tid'],get_monster_config(i['tid'])['name'])
                    data+=a
        elif key=='champion_power':
            pass
        elif key=='name':
            pass
        elif key=='level':
            if int(value)>120 or int(value)<1:
                data=u'玩家等级应在1~120级之间,请输入正确的值'
        elif key=='cur_stage':
            if get_stages_config(int(value))==None:
                data=u'关卡ID输入错误'
        elif key=='reward_cur_monster_quality_id':
            if get_reward_monster_quality_config(int(value))==None:
                data=u'当前宠物品质奖励序列应在1~3之间'
        elif key=='reward_cur_team_combat_power_id':
            if get_reward_team_power(int(value))==None:
                data=u'当前队伍战斗力奖励序列应在1~47之间'
        elif key=='reward_friend_num_id':
            if get_fried_num_config(int(value))==None:
                data=u'好友数量奖励序列应在1~6之间'
        elif key=='reward_cur_monster_level_id':
            if get_reward_monster_level_config(int(value))==None:
                data=u'宠物等级奖励序列应在1~10之间'

        if value <> ''and data=='':
            # print "i'work"
            cmem_url=server_define.CMEM_MAP[int(server_id)]
            if cmem_url:
                source=memcache.get_cmem_val(cmem_url,model_define.PLAYER_MODEL.format(user_id=user_id))
                if eval(typ)==type(value) or (typ=='str' and type(value)==unicode) :
                    #print source,key,value,user_id,type(user_id)
                    old_value = source[key]
                    source[key]=value
                    memcache.put_cmem_val(cmem_url,model_define.PLAYER_MODEL.format(user_id=user_id),source)
                    # 操作日志记录
                    insert_action_edit_player(manager, str(server_id), str(user_id), key, old_value, value)
        return HttpResponse(data)
예제 #11
0
def get_player_catch_monster_function(request, player_catch_monster_edit):
    """
        玩家抓宠副本编辑
        source
        {'catch_monster_stage_id_lst': [40501, 40801, 40802],
         'catch_monster_stage_lst': [1, 6, 1],
          'last_refresh_date': datetime.date(2015, 7, 25),
           'uid': '1000101754'
            }
    """
    # 以函数的指针方式传递函数并调用
    function_name = 'data_edit.player_catch_monster.{function}'.format(
        function=set_player_catch_monster_function.__name__)
    server_list, platform_list = daily_log._get_server_list(None, None)
    try:
        server_list.remove(server_list[0])
    except:
        pass

    return_uid = '请输入uid'
    return_openid = "请输入openid"
    return_name = "请输入玩家昵称"
    if request.method == 'POST':
        user_uid = request.POST.get('user_uid')
        user_name = request.POST.get('user_name').encode('utf-8')
        user_openid = request.POST.get('user_openid')
        server_id = int(request.POST.get('server_id'))
        type_hidden = 'visible'
        cmem_url = server_define.CMEM_MAP[int(server_id)]

        head_lst = [
            {
                'name': u'副本名称'
            },
            {
                'name': u'攻打次数'
            },
        ]
        if cmem_url:
            try:
                source = dict()
                if len(user_uid):
                    source = memcache.get_cmem_val(
                        cmem_url,
                        model_define.CATCH_MONSTER_MODEL.format(
                            user_id=user_uid))
                elif len(user_name):
                    name = hashlib.md5(user_name).hexdigest().upper()
                    key = model_define.PLAYER_NICK_NAME_MODEL.format(
                        player_nick_md5=name)
                    user_uid = memcache.get_cmem_val_no_pick(cmem_url, key)
                    return_name = user_name
                    source = memcache.get_cmem_val(
                        cmem_url,
                        model_define.CATCH_MONSTER_MODEL.format(
                            user_id=user_uid))
                elif len(user_openid):
                    result = memcache.get_cmem_val(
                        cmem_url,
                        model_define.ACCOUNT_MAPPING_MODEL.format(
                            open_id=user_openid))
                    user_uid = result['uid']
                    return_openid = user_openid
                    source = memcache.get_cmem_val(
                        cmem_url,
                        model_define.CATCH_MONSTER_MODEL.format(
                            user_id=user_uid))
                if source:
                    # print 'source', source

                    row_dict = collections.OrderedDict()  # 有序字典
                    return_uid = user_uid
                    last_refresh_date = source.get(
                        'last_refresh_date',
                        datetime.date(0001, 01, 01)).strftime('%Y-%m-%d')
                    for stage_id, stage_count in zip(
                            source['catch_monster_stage_id_lst'],
                            source['catch_monster_stage_lst']):
                        stage_config = game_config.get_stages_config(
                            int(stage_id))
                        try:
                            row_dict[stage_id] = {
                                'name':
                                stage_config['stageInfo'] + '_' +
                                str(stage_config['id']),
                                'num':
                                stage_count,
                            }
                        except:
                            print stage_id, stage_count
                else:
                    # 数据为空 返回空表
                    if user_uid:
                        return_uid = user_uid
                    else:
                        user_uid = "None"
                    last_refresh_date = 'None'
                    row_dict = {'name': 'None', 'num': 'None'}
                # print row_dict
                return render_to_response(player_catch_monster_edit, locals(),
                                          RequestContext(request))

            except UnboundLocalError:
                type_hidden = 'hidden'
                return render_to_response(player_catch_monster_edit, locals(),
                                          RequestContext(request))

            except TypeError:
                type_hidden = 'hidden'
                return render_to_response(player_catch_monster_edit, locals(),
                                          RequestContext(request))

    else:
        row_list = []
        type_hidden = 'hidden'
        return render_to_response(player_catch_monster_edit, locals(),
                                  RequestContext(request))