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