def delete_all_mails(): all_info = UserMail.hgetall(uid) #for mail_id, mail_info in all_info.items()[:-3]:# 注意 这里不是去全删 for mail_id, mail_info in all_info.items(): print mail_id, mail_info umobj = UserMail.hget(uid, mail_id) umobj.delete()
def receive(rk_user, params): ''' 领取邮件中的内容 ''' mails_id = str(params['mails_id']) all_info = UserMail.hgetall(rk_user.uid) return_info = {} for m in all_info: mid = all_info[m]['mail_info']['mid'] if mid == mails_id: can_get = all_info[m]['mail_info'].get('can_get', False) if can_get is False: break awards = all_info[m]['mail_info']['awards'] where = 'mail_' + all_info[m]['mail_info']['title'] return_info = tools.add_things(rk_user, [{ "_id": goods, "num": awards[goods] } for goods in awards if goods], where) umobj = UserMail.hget(rk_user.uid, m) umobj.mail_info['can_get'] = False umobj.mail_info['open_time'] = utils.datetime_toString( datetime.datetime.now()) umobj.hput() break return 0, {'receive': return_info}
def show_mails(rk_user, params): """ 获取邮件列表 'type': 'system': 系统邮件 'type': 'pvp' : pvp邮件 Returns: {'show_mails': {1: {'awards': [ {'equipSoul': {'equip_type': u'1', 'good_id': u'53003_equip', 'num': 1}}, {'mat': {'good_id': u'3_mat', 'num': 2}}, {'gold': {'good_id': u'gold', 'num': 10}}, {'props': {'good_id': u'1_props', 'num': 1}}, {'equip': {'color': u'green', 'good_id': u'13001_equip', 'num': 3}}, {'cardSoul': {'good_id': u'5_card', 'num': 1}}, {'fight_soul': {'good_id': u'fight_soul', 'num': 100}}, {'card': {'good_id': u'5_card', 'num': 1}}, {'honor': {'good_id': u'honor', 'num': 100}}, {'equipSoul': {'good_id': u'12002_equip', 'num': 1}} ], 'can_get': True, 'content': u'5345', 'create_time': u'2014-11-04 11:32:56', 'mid': u'201411041132562390414', 'type': u'system'}, 2: ...... """ data = {} all_info = UserMail.hgetall(rk_user.uid) expire_days = game_config.mail_config.get('expire_days', 2) clear_date = (datetime.datetime.now() - datetime.timedelta(days=expire_days)).strftime('%Y-%m-%d %H:%M:%S') # 根据创建时间排序 key_create_time_list = [(m, all_info[m]['mail_info'].get('create_time', ''), all_info[m]['mail_info'].get('open_time')) for m in all_info] key_create_time_list = sorted(key_create_time_list , key=lambda key_time: key_time[1], reverse=True) for index, key_create_time in enumerate(key_create_time_list): key, create_time, open_time = key_create_time mail_info = all_info[key]['mail_info'] can_get = mail_info.get('can_get', False) print 'create time:', create_time, 'open time:',open_time, ' can get:', can_get if can_get is False and clear_date > open_time: #if can_get is False: umobj = UserMail.hget(rk_user.uid, key) umobj.delete() continue this_data = { 'type': mail_info['type'], 'title': mail_info['title'], 'content': mail_info['content'], 'can_get': mail_info['can_get'], 'awards': [tools.pack_good(good, num) for good, num in mail_info['awards'].items()], 'create_time': mail_info['create_time'], #'mid': mail_info['mid'], 'mid': key, } data[index + 1] = this_data #print data return {'show_mails': data}
def delete(rk_user, params): '''一键删除不带奖励的邮件''' mails = UserMail.hgetall(rk_user.uid) for mail_id in mails: if not mails[mail_id]['mail_info'].get('awards'): mail = UserMail.hget(rk_user.uid, mail_id) mail.delete() return 0, {}
def modify_one_mail(): all_mail = UserMail.hgetall(uid) #print all_mail for key in all_mail: if key == 'system_201411111104385687940': all_mail[key]['open_time'] = '1234' this_mail = UserMail.hget(uid, key) this_mail.hput() print this_mail key == 'system_201411111104385687940' this_mail = UserMail.hget(uid, key) print this_mail.mail_info this_mail.mail_info['read_time']= '123' this_mail.hput()
def send_op_mail(rk_user): ''' 发运营邮件 判断运营是否有新配邮件,这里邮件特指mail_config['mail_list']里的邮件,需要一些实时性,非一些登陆奖励类邮件 ''' # 过一定时间再检查是否有新配邮件,而不是每次都检查 #now_stamp = int(time.time()) #last_check_stamp = rk_user.user_base.baseinfo.setdefault('last_check_stamp', 1420041600) #if now_stamp - last_check_stamp < 300: # return #rk_user.baseinfo['last_check_stamp'] = now_stamp #rk_user.put() mail_conf = game_config.mail_config.get('mail_list', {}) for mail_info in mail_conf: mid = mail_info['mail_id'] received_mails = rk_user.baseinfo['received_mails'] # 没收过这封邮件,并且邮件在时间段内,发邮件 if mid not in received_mails: if _is_between_times(mail_info): sid = 'system_%s' % (utils.create_gen_id()) mailtype = 'system_qa' title = mail_info['title'] content = mail_info['content'] award = mail_info['award'] user_mail_obj = UserMail.hget(rk_user.uid, sid) user_mail_obj.set_mail(mailtype=mailtype, title=title, content=content, award=award) received_mails.append(mid) # 去掉时间太久的不必要的邮件 if len(received_mails) > 30: received_mails.pop(0) rk_user.put()
def send_op_mail(rk_user): ''' 发运营邮件 判断运营是否有新配邮件,这里邮件特指mail_config['mail_list']里的邮件,需要一些实时性,非一些登陆奖励类邮件 ''' mail_list = game_config.mail_config.get('mail_list') if not mail_list: return for mail in mail_list: mid = mail['mail_id'] if not rk_user.baseinfo.get('received_mails'): rk_user.baseinfo['received_mails'] = [] rk_user.put() received_mails = rk_user.baseinfo['received_mails'] # 没收过这封邮件,并且邮件在时间段内,发邮件 if mid not in received_mails: if _is_between_times(mail): sid = 'system_%s' % (utils.create_gen_id()) mailtype = 'system_qa' title = mail['title'] content = mail['content'] award = mail['award'] user_mail_obj = UserMail.hget(rk_user.uid, sid) user_mail_obj.set_mail(mailtype=mailtype, title=title, content=content, award=award) received_mails.append(mid) # 去掉时间太久的不必要的邮件 if len(received_mails) > 30: received_mails.pop(0) rk_user.put()
def send_mails(data): if True: if 'honor_award' in data: content = data['honor_award']['content'] award = data['honor_award']['award'] sid = 'system_%s' % (utils.create_gen_id()) user_mail = UserMail.hget(uid, sid) user_mail.set_awards_description(award) user_mail.set_mail(mailtype='system', content=content, award=award)
def send_a_mail(): sid = 'system_%s' % (utils.create_gen_id()) user_mail_obj = UserMail.hget(uid, sid) #awards = {'coin': 50, 'gold': 50, 'honor':500} awards = {} #user_mail_obj.set_awards_description(awards) user_mail_obj.set_mail(mailtype='system', title='eee', content='人工e邮件',award=awards) #user_mail_obj.set_mail(type='system',content='mail pvp') user_mail_obj.hput()
def send_mails(self, awards): """将奖励于邮件形式发送""" for award_type, award_info in awards.items(): title = award_info.get('title', '') if not title: continue content = award_info.get('content', '') award = award_info.get('award', {}) sid = 'system_%s' % (utils.create_gen_id()) user_mail = UserMail.hget(self.uid, sid) user_mail.set_mail(mailtype=award_type, title=title, content=content, award=award)
def _get_pvprank_record(uid): pvprank_record_list = [] all_info = UserMail.hgetall(uid) for mid in all_info: type = all_info[mid]['mail_info'].get('type', '') can_get = all_info[mid]['mail_info'].get('can_get', False) if type == 'pvp': pvprank_record = all_info[mid]['mail_info'].get('pvprank_record', {}) for r in pvprank_record: pvprank_record_list.append((r, pvprank_record[r])) if pvprank_record_list: pvprank_record_list = [ (i[0][:13], i[1]) for i in sorted(pvprank_record_list, key=lambda d:d[0],reverse=False)] return pvprank_record_list
def receive(rk_user, params): ''' 领取邮件中的内容 ''' mails_id = str(params['mails_id']) all_info = UserMail.hgetall(rk_user.uid) return_info = {} for m in all_info: mid = all_info[m]['mail_info']['mid'] if mid == mails_id: can_get = all_info[m]['mail_info'].get('can_get', False) if can_get is False: break awards = all_info[m]['mail_info']['awards'] where = 'mail_' + all_info[m]['mail_info']['title'] return_info = tools.add_things(rk_user, [{"_id": goods, "num": awards[goods]} for goods in awards if goods], where) umobj = UserMail.hget(rk_user.uid, m) umobj.mail_info['can_get'] = False umobj.mail_info['open_time'] = utils.datetime_toString(datetime.datetime.now()) umobj.hput() break return 0, {'receive': return_info}
def _get_pvprank_record(uid): pvprank_record_list = [] all_info = UserMail.hgetall(uid) for mid in all_info: type = all_info[mid]['mail_info'].get('type', '') can_get = all_info[mid]['mail_info'].get('can_get', False) if type == 'pvp': pvprank_record = all_info[mid]['mail_info'].get( 'pvprank_record', {}) for r in pvprank_record: pvprank_record_list.append((r, pvprank_record[r])) if pvprank_record_list: pvprank_record_list = [(i[0][:13], i[1]) for i in sorted( pvprank_record_list, key=lambda d: d[0], reverse=False)] return pvprank_record_list
def __send_yesterday_mail(self): ''' 昨天没领的每日任务宝箱奖励以邮件形式补发 ''' my_points = self.daily_info['points'] for box_type in ['copper', 'silver', 'gold']: box_conf = game_config.task_config['daily_task_box'][box_type] if my_points >= box_conf['need_point']: if self.daily_info['has_got'][box_type] == False: sid = 'system_%s' % (utils.create_gen_id()) mailtype = 'system' title = box_conf['mail_title'] content = box_conf['mail_content'] award = box_conf['award'] user_mail_obj = UserMail.hget(self.user_base.uid, sid) user_mail_obj.set_mail(mailtype=mailtype, title=title, content=content, award=award) else: # 铜宝箱都不能领的话,其他不用看了 break
def __give_charge_award(rk_user, coin): """运营活动)充值奖励 """ if rk_user.client_type in settings.ANDROID_CLIENT_TYPE and 'charge_award' in game_config.android_config: charge_award = rk_user.game_config.android_config['charge_award'] else: charge_award = rk_user.game_config.operat_config.get('charge_award',{}) if not charge_award: return charge_award_info = rk_user.user_property.charge_award_info for gift_id in charge_award: gift_conf = charge_award[gift_id] start_time = gift_conf.get('start_time') end_time = gift_conf.get('end_time','2111-11-11 11:11:11') now_str = datetime_toString(datetime.datetime.now()) # 未开放或已过期的礼包 if now_str > end_time or now_str < start_time: continue if gift_id not in charge_award_info: charge_award_info[gift_id] = {'charge_coin': coin} else: # 已经领取过的礼包 if charge_award_info[gift_id].get('has_got', False): continue charge_award_info[gift_id]['charge_coin'] += coin # 金额未达到 if charge_award_info[gift_id]['charge_coin'] < gift_conf.get('charge_coin',0): continue # 满足条件,发奖励 charge_award_info[gift_id]['has_got'] = True msg = get_msg('charge', 'charge_award') % gift_conf.get('charge_coin',0) sid = 'system_%s' % (utils.create_gen_id()) mail_title = msg mail_content = gift_conf.get('desc', '') user_mail_obj = UserMail.hget(rk_user.uid, sid) user_mail_obj.set_mail(mailtype='system', title=mail_title, content=mail_content, award=gift_conf['award']) rk_user.user_property.put()
def wrapper_info(self): """每次返回前端api请求都会附带的信息 """ data = { 'pid': self.pid, 'platform': self.baseinfo.get('platform'), 'username': self.username, 'sex': self.sex, 'max_stamina': self.user_property.max_stamina, 'vip_cur_level': self.user_property.vip_cur_level, 'vip_next_level': self.user_property.vip_next_level, 'vip_charge_money': self.user_property.charge_sumcoin, 'vip_next_lv_need_money': self.user_property.next_lv_need_coin, 'uid': self.uid, 'signature': self.baseinfo.get('signature', ''), # 'max_friend_num': self.user_property.max_friend_num, } data.update(self.user_property.property_info) if 'get_card' in data: data.pop('get_card') if 'invite_info' in data: data.pop('invite_info') if 'bind_award' in data: data.pop('bind_award') if 'tapjoy' in data: data.pop('tapjoy') if 'bind_award' in data: data.pop('bind_award') if 'charge_sumcoin' in data: data.pop('charge_sumcoin') if 'update_award' in data: data.pop('update_award') if 'charge_sum_money' in data: data.pop('charge_sum_money') #data['cost'] = self.user_property.cost data['this_lv_now_exp'] = self.user_property.this_lv_now_exp data['next_lv_need_exp'] = self.user_property.next_lv_need_exp data['invite_code'] = self.user_property.invite_code #也许Friend不存在 from apps.models.friend import Friend objFriend = Friend.get_instance(self.uid) data["friend_request_num"] = len(objFriend.get_request_ids()) data['friend_gift_num'] = objFriend.get_gift_num() # 实时pvp相关 data['real_pvp_title'] = self.user_real_pvp.pvp_title data['honor'] = self.user_real_pvp.honor #新礼包数 # from apps.models.user_gift import UserGift # user_gift_obj = UserGift.get(self.uid) # data['new_gift_num'] = user_gift_obj.get_new_gift_num(self.user_property) #首冲标志 data['first_charge'] = self.user_property.double_charge or self.user_property.first_charge #倒计时求将时间 data['next_free_gacha_time'] = UserGacha.get_instance(self.uid).next_free_gacha_time #跑马灯信息,每隔10分钟返回一次 data['marquee_info'] = self.marquee_info() # 新邮件数量 data['new_mail_num'] = UserMail.new_mail_num(self.uid) #推送信息 data['push_info'] = utils.get_push_info(self) data['push_open'] = self.game_config.system_config.get('push_open',False) # 援军槽数 data['yuanjun_slot_num'] = self.user_cards.slot_num # 能否添加援军 data['can_add_yuanjun'] = self.user_cards.can_add_yuanjun() # 能否签到 data['today_can_sign'] = self.user_gift.today_can_sign() # 能否领开服礼包 data['openserver_can_get'] = self.user_gift.openserver_can_get() # 发运营邮件 from apps.logics.mails import send_op_mail send_op_mail(self) # 有可以领取的每日任务宝箱 data['task_box_can_get'] = self.user_task.today_can_get() # 检查主线任务 self.user_task.check_main_tasks() # 是否有能领取的主线任务奖励 data['can_get_maintask_award'] = self.user_task.can_get_award() # 珠子伤害 data['zhuzi_damage'] = self.user_character.zhuzi_damage() return data
def show_mails(rk_user, params): """ 获取邮件列表 'type': 'system': 系统邮件 'type': 'pvp' : pvp邮件 Returns: {'show_mails': {1: {'awards': [ {'equipSoul': {'equip_type': u'1', 'good_id': u'53003_equip', 'num': 1}}, {'mat': {'good_id': u'3_mat', 'num': 2}}, {'gold': {'good_id': u'gold', 'num': 10}}, {'props': {'good_id': u'1_props', 'num': 1}}, {'equip': {'color': u'green', 'good_id': u'13001_equip', 'num': 3}}, {'cardSoul': {'good_id': u'5_card', 'num': 1}}, {'fight_soul': {'good_id': u'fight_soul', 'num': 100}}, {'card': {'good_id': u'5_card', 'num': 1}}, {'honor': {'good_id': u'honor', 'num': 100}}, {'equipSoul': {'good_id': u'12002_equip', 'num': 1}} ], 'can_get': True, 'content': u'5345', 'create_time': u'2014-11-04 11:32:56', 'mid': u'201411041132562390414', 'type': u'system'}, 2: ...... """ data = {} all_info = UserMail.hgetall(rk_user.uid) expire_days = game_config.mail_config.get('expire_days', 2) clear_date = ( datetime.datetime.now() - datetime.timedelta(days=expire_days)).strftime('%Y-%m-%d %H:%M:%S') # 根据创建时间排序 key_create_time_list = [ (m, all_info[m]['mail_info'].get('create_time', ''), all_info[m]['mail_info'].get('open_time', '9999-99-99 99:99:99')) for m in all_info ] key_create_time_list = sorted(key_create_time_list, key=lambda key_time: key_time[1], reverse=True) for index, key_create_time in enumerate(key_create_time_list): key, create_time, open_time = key_create_time mail_info = all_info[key]['mail_info'] can_get = mail_info.get('can_get', False) if can_get is False and clear_date > open_time: #if can_get is False: umobj = UserMail.hget(rk_user.uid, key) umobj.delete() continue this_data = { 'type': mail_info['type'], 'title': mail_info['title'], 'content': mail_info['content'], 'can_get': mail_info['can_get'], 'awards': [ tools.pack_good(good, num) for good, num in mail_info['awards'].items() ], 'create_time': mail_info['create_time'], 'mid': mail_info['mid'], } data[index + 1] = this_data return {'show_mails': data}
def show_all_mails(): all_mail = UserMail.hgetall(uid) #for mail_id, mail_info in all_info.items(): # print mail_id, '------', mail_info pprint(all_mail)
from apps.models.user_login import UserLogin # from apps.models.friend import Friend from apps.models import pvp_redis from apps.oclib import app from apps.models.user_mail import UserMail from apps.realtime_pvp import readying_player_redis from apps.config.game_config import game_config from apps.models.pvp_redis import get_pvp_redis from apps.models.user_property import UserProperty from apps.models.user_mail import UserMail from apps.models.user_gift import UserGift from apps.common import tools game_config.subareas_conf() game_config.set_subarea('1') sid = 'system_%s' % (utils.create_gen_id()) user_mail = UserMail.hget(uid, sid) rk_user = UserBase.get(uid) def show_all_mails(): all_mail = UserMail.hgetall(uid) #for mail_id, mail_info in all_info.items(): # print mail_id, '------', mail_info pprint(all_mail) #show_all_mails() def modify_one_mail(): all_mail = UserMail.hgetall(uid) #print all_mail
def edit_user(request): """ 编辑用户页 """ uid = request.GET.get('uid', '').strip() if not uid: pid = request.GET.get('pid', '').strip() if not pid: username = request.GET.get('username', '') if not username: return HttpResponseRedirect('/admin/user/?status=1') try: uid = ocapp.mongo_store.mongo.db['username'].find( {'name': username})[0]['uid'] except: return HttpResponseRedirect('/admin/user/?status=1') else: account = AccountMapping.get(pid) if not account: return HttpResponseRedirect('/admin/user/?status=1') uid = account.uid user = UserBase.get(uid) if not user or not user.account: return HttpResponseRedirect('/admin/user/?status=1') user_equips_obj = UserEquips.get_instance(uid) user_pack_obj = UserPack.get_instance(uid) user_property_obj = UserProperty.get(uid) user_card_obj = UserCards.get(user.uid) user_real_pvp_obj = user.user_real_pvp game_config.set_subarea(user.subarea) data = { 'deck_cards': [], 'other_cards': [], } if not user.client_type: data['client_type'] = 'appstore_ios' else: data['client_type'] = user.client_type all_cards = [] all_cids = game_config.card_config.keys() all_cids_cp = copy.deepcopy(game_config.card_config) for k, v in all_cids_cp.iteritems(): all_cids_cp[k]['no'] = int(k.split('_')[0]) all_cids.sort(key=lambda x: (all_cids_cp[x]['no'])) for cid in all_cids: all_cards.append(Card.get(cid)) data['all_cards'] = all_cards #用户当前战场信息 user_dungeon_obj = UserDungeon.get_instance(user.uid) #充值信息 data['charge_sum_money'] = user_property_obj.charge_sum_money data['last_charge_record'] = ChargeRecord.find( {'uid': uid})[-1] if ChargeRecord.find({'uid': uid}) else {} ######神秘商店 代码往前方 因为此操作会改变玩家武将,物品等信息############## # 刷新 物品列表 if request.POST.get('refresh_mystery_store', ''): store_type = request.POST.get('store_type') params = {} mystery_store.refresh_store_by_self(user, params) # 购买 物品 if request.POST.get('buy_mystery_store_goods', ''): store_type = request.POST.get('store_type') goods_index = int(request.POST.get('goods_index')) params = { 'store_type': store_type, 'goods_index': goods_index, } mystery_store.buy_store_goods(user, params) ######Pk商店 ## # 刷新 物品列表 if request.POST.get('refresh_pk_store', ''): pk_store.refresh_store_by_self(user, {}) # 购买 物品 if request.POST.get('buy_pk_store_goods', ''): goods_index = int(request.POST.get('goods_index')) params = { 'goods_index': goods_index, } pk_store.buy_store_goods(user, params) #################### moderator = auth.get_moderator_by_request(request) qa_edit = 'qa edited by ' + str(moderator.username) #提交状态 if request.method == "POST": state = int(request.POST.get("state", "0")) state = bool(state) #冻结 if state != user.in_frozen: if state: user.froze() #解冻 else: user.unfroze() #删除账号 if request.POST.get('del_user', ''): if not user.account: return HttpResponseRedirect('/admin/user/?status=1') user.account.delete() if request.POST.get('add_gold', ''): add_gold = int(request.POST.get('add_gold')) if add_gold > 0: user_property_obj.add_gold(add_gold, where=qa_edit) else: user_property_obj.minus_gold(add_gold) #增加元宝 if request.POST.get('add_coin', ''): add_coin = int(request.POST.get('add_coin')) if add_coin > 0: user_property_obj.add_coin(add_coin, where=qa_edit) else: user_property_obj.minus_coin(add_coin, where=qa_edit) #增加 经验点 if request.POST.get('add_card_point', ''): add_card_point = int(request.POST.get('add_card_point')) if add_card_point > 0: user_property_obj.add_card_exp_point(add_card_point, qa_edit) else: user_property_obj.minus_card_exp_point(add_card_point, qa_edit) #增加经验 if request.POST.get('add_exp', ''): add_exp = int(request.POST.get('add_exp')) user_property_obj.add_exp(add_exp, where=qa_edit) #更改等级 if request.POST.get('modify_lv', ''): lv = request.POST.get('modify_lv') lv_exp = game_config.user_level_config[lv]['exp'] now_exp = user_property_obj.property_info['exp'] user_property_obj.add_exp(lv_exp - now_exp, where=qa_edit) # 增加pk 积分 if request.POST.get('add_pk_pt', 0): pvp_pt = int(request.POST.get('add_pk_pt')) user_real_pvp_obj.add_pt(pvp_pt) # 加功勋 if request.POST.get('add_honor', ''): honor = int(request.POST.get('add_honor')) urp = UserRealPvp.get(user.uid) urp.add_honor(honor, where=qa_edit) # 加战魂 if request.POST.get('add_fight_soul', ''): fight_soul_num = int(request.POST.get('add_fight_soul')) user_property_obj.add_fight_soul(fight_soul_num, where=qa_edit) #发邮件 if request.POST.get('mail_title') or request.POST.get('mail_goods'): from apps.models.user_mail import UserMail from apps.common import utils sid = 'system_%s' % (utils.create_gen_id()) mail_title = request.POST.get('mail_title', '') mail_content = request.POST.get('mail_content', '') goods_str = request.POST.get('mail_goods', '').strip() award = {} for goods_info in goods_str.split(";"): goods_info = goods_info.strip() print "debug guochen email", goods_info if not goods_info: continue goods_id, num = goods_info.strip().split(":") award.setdefault(goods_id, 0) award[goods_id] += int(num) mailtype = 'system_qa' user_mail_obj = UserMail.hget(uid, sid) user_mail_obj.set_mail(mailtype=mailtype, title=mail_title, content=mail_content, award=award) # 修改vip等级 if request.POST.get('modify_vip_lv'): vip_lv = request.POST.get('modify_vip_lv') vip_conf = game_config.user_vip_config.get(str(vip_lv)) if vip_conf: coin = vip_conf['coin'] user_property_obj.property_info["charge_coins"] = coin user_property_obj.put() #补武将 if request.POST.get("add_card_ex", ""): user_card_obj = UserCards.get(user.uid) strCardInfo = request.POST.get("add_card_ex") lstCardInfo = strCardInfo.strip().split(";") for strAddCard in lstCardInfo: cid = strAddCard.split(":")[0] cid = cid.strip() + '_card' num = int(strAddCard.split(":")[1]) for i in range(num): clv = 1 user_card_obj.add_card(cid, clv, where=qa_edit) #增加武将 if request.POST.getlist('add_card'): add_cids = request.POST.getlist('add_card') user_card_obj = UserCards.get(user.uid) for add_cid in add_cids: if add_cid in game_config.card_config: clv = 1 user_card_obj.add_card(add_cid, clv, where=qa_edit) #增加武将经验 if request.POST.get('add_card_exp', ''): add_exp = int(request.POST.get('add_card_exp')) ucid = request.POST.get('ucid') user_card_obj.add_card_exp(ucid, add_exp) #增加武将技能级别 if request.POST.get('add_card_sk_lv', ''): ucid = request.POST.get('ucid') user_card_obj.add_card_sk_lv(ucid) #卖掉卡片 if request.POST.get('sell_card', ''): ucid = request.POST.get('ucid') #this_card = Card.get(user_card_obj.cards[ucid]['cid'],user_card_obj.cards[ucid]['lv']) user_card_obj.del_card_info([ucid]) #user.user_property.add_gold(this_card.sell_gold,where=qa_edit) #踢出队伍 if request.POST.get('kick_deck', ''): kick_index = int(request.POST.get('deck_index')) if user_card_obj.deck[kick_index].get( 'ucid', '') != user_card_obj.get_leader( user_card_obj.cur_deck_index): user_card_obj.deck[kick_index] = {} user_card_obj.put() #设置主将 if request.POST.get('set_deck_main', ''): ucid = request.POST.get('ucid') find_fg = False for card in user_card_obj.deck: if card.get('leader', 0): card['ucid'] = ucid user_card_obj.put() find_fg = True break if not find_fg: user_card_obj.deck[0] = {'ucid': ucid, 'leader': 1} user_card_obj.put() #设置副将 if request.POST.get('set_deck_sub', ''): ucid = request.POST.get('ucid') for card in user_card_obj.deck: if not card: card['ucid'] = ucid user_card_obj.put() break #一键送所有武将碎片 if request.POST.get('give_all_card_soul', ''): for cid in game_config.card_config: user_card_obj.add_card(cid, 1, where=qa_edit) user_card_obj.put() #一键送所有武将 if request.POST.get('give_all_card', ''): #一键送所有武将 for cid in all_cids: ucid = user_card_obj.add_card(cid, 1, where=qa_edit)[2] # if request.POST.get('give_all_card',''): # user_card_obj.cards = {} # user_card_obj.cards_info = { # "decks":[[{}] * 5] * 10, # "cur_deck_index":0, # } # for eid in user_equips_obj.equips: # if user_equips_obj.equips[eid].get("used_by"): # user_equips_obj.equips[eid]['used_by'] = '' # user_equips_obj.put() # card_index = 0 # for cid in all_cids: # clv = 1 # ucid = user_card_obj.add_card(cid,clv,where=qa_edit)[2] # if card_index < 5: # user_card_obj.deck[card_index]['ucid'] = ucid # card_index += 1 #一键删除军队外的所有武将 if request.POST.get('del_other_card', ''): decks = [] for deck in user_card_obj.decks: decks.extend( [card['ucid'] for card in deck if card.get('ucid', '')]) del_cids = filter(lambda x: x not in decks, user_card_obj.cards.keys()) user_card_obj.del_card_info(del_cids) for eid in user_equips_obj.equips: if user_equips_obj.equips[eid].get("used_by"): user_equips_obj.equips[eid]['used_by'] = '' user_equips_obj.put() #开放战场 if request.POST.get('open_dungeon', ''): open_dungeon = request.POST.get('open_dungeon') floor_id = open_dungeon.split('-')[0] room_id = open_dungeon.split('-')[1] user_dungeon_obj.dungeon_info['normal_current'][ 'floor_id'] = floor_id user_dungeon_obj.dungeon_info['normal_current'][ 'room_id'] = room_id user_dungeon_obj.dungeon_info['normal_current']['status'] = 0 user_dungeon_obj.put() #回复体力 if request.POST.get('add_stamina', ''): add_stamina = int(request.POST.get('add_stamina')) user_property_obj.add_stamina(add_stamina) #equip if request.POST.get("add_equips", ""): user_equips_obj = UserEquips.get(uid) strEquipsInfo = request.POST.get("add_equips") lstEquipsInfo = strEquipsInfo.strip().split(";") for strAddEquip in lstEquipsInfo: eid = strAddEquip.split(":")[0] eid = eid.strip() + '_equip' num = int(strAddEquip.split(":")[1]) for i in range(num): user_equips_obj.add_equip(eid, where=qa_edit) #材料 if request.POST.get("add_mats", ""): strItemsInfo = request.POST.get("add_mats") lstItemsInfo = strItemsInfo.strip().split(";") for strAddItem in lstItemsInfo: mid = strAddItem.split(":")[0] mid = mid.strip() + '_mat' num = int(strAddItem.split(":")[1]) user_pack_obj.add_material(mid, num, where=qa_edit) #道具 if request.POST.get("add_props", ""): strPropsInfo = request.POST.get("add_props") lstPropsInfo = strPropsInfo.strip().split(";") for strAddProps in lstPropsInfo: pid = strAddProps.split(":")[0] pid = pid.strip() + '_props' num = int(strAddProps.split(":")[1]) user_pack_obj.add_props(pid, num, where=qa_edit) if request.POST.get("add_materials_num", 0): mid = request.POST.get("mid") user_pack_obj.add_material( mid, int(request.POST.get("add_materials_num", 0)), where=qa_edit) if request.POST.get("add_props_num", 0): pid = request.POST["prop"] user_pack_obj.add_props(pid, int(request.POST.get("add_props_num", 0)), where=qa_edit) if request.POST.get('give_all_props'): num = int(request.POST.get('all_props_num')) if request.POST.get( 'all_props_num') else 99 for iid in game_config.props_config: user_pack_obj.add_props(iid, num, where=qa_edit) if request.POST.get('del_all_props'): user_pack_obj.props = {} user_pack_obj.put() if request.POST.get('give_all_equips'): user_equips = UserEquips.get(uid) for eid in game_config.equip_config: user_equips.add_equip(eid, where=qa_edit) #一键送所有的装备碎片 if request.POST.get('give_all_equip_soul'): user_souls_obj = UserSouls.get(uid) for eid in game_config.equip_config: if game_config.equip_config[eid].get('need_soul_types_num', 0): parts = game_config.equip_config[eid].get( 'need_soul_types_num', 0) for i in xrange(1, parts + 1): user_souls_obj.add_equip_soul(eid + '_' + str(i), 100, where=qa_edit) else: user_souls_obj.add_equip_soul(eid, 1, where=qa_edit) #一键删除所有的装备碎片 if request.POST.get('del_all_equip_soul'): user_souls_obj = UserSouls.get(uid) user_souls_obj.equip_souls_info = {} user_souls_obj.put() #添加单个装备碎片 if request.POST.get('add_single_equip_soul'): sid = request.POST.get('sid') num = int(request.POST.get('add_single_equip_soul')) user_souls_obj = UserSouls.get_instance(uid) user_souls_obj.add_equip_soul(sid, num, where=qa_edit) user_souls_obj.put() if request.POST.get('del_other_equips'): user_equips = UserEquips.get(uid) ueids = [ ueid for ueid in user_equips.equips if not user_equips.is_used(ueid) ] user_equips.delete_equip(ueids) if request.POST.get('give_all_materials'): num = int(request.POST.get('all_materials_num') ) if request.POST.get('all_materials_num') else 99 user_pack_obj = UserPack.get_instance(uid) for mid in game_config.material_config: user_pack_obj.add_material(mid, num, where=qa_edit) if request.POST.get('del_all_materials'): user_pack_obj = UserPack.get_instance(uid) user_pack_obj.materials = {} user_pack_obj.put() #一键过新手引导 if request.POST.get('newbie_pass', '') and user.user_property.newbie: newbie_steps_num = int( user.game_config.system_config.get('newbie_steps', 6)) user.user_property.property_info['newbie_steps'] = ( 1 << newbie_steps_num) - 1 user.user_property.set_newbie() user.user_property.do_put() data['status'] = 1 data['current_dungeon'] = user_dungeon_obj.dungeon_info['normal_current'] #配置中的所有战场 data['all_dungeon'] = [] floor_ids = sorted( map(lambda x: int(x), game_config.normal_dungeon_config.keys())) for floor_id in floor_ids: for room_id in sorted(game_config.normal_dungeon_config[str(floor_id)] ['rooms'].keys()): data['all_dungeon'].append('%d-%s' % (floor_id, room_id)) #用户已经达到最深层时 if '%s-%s' % (data['current_dungeon']['floor_id'], data['current_dungeon'] ['room_id']) == data['all_dungeon'][-1]: data['max_dungeon'] = True else: data['max_dungeon'] = False now_index = data['all_dungeon'].index( '%s-%s' % (data['current_dungeon']['floor_id'], data['current_dungeon']['room_id'])) data['all_dungeon'] = data['all_dungeon'][now_index + 1:] #装备 equips = user_equips_obj.equips eqids_dict = [user_equips_obj.get_equip_dict(ueid) for ueid in equips] data['user_equips'] = [ game_config.equip_config.get(eid_dict['eid']) for eid_dict in eqids_dict ] all_equips_tag = sorted( [int(i.split('_')[0]) for i in game_config.equip_config.keys()]) data['all_equips'] = [(i, game_config.equip_config.get(str(i) + '_equip')) for i in all_equips_tag] #mat data['user_materials'] = { mid: { 'name': game_config.material_config.get(mid, {}).get('name', ''), 'num': user_pack_obj.materials[mid] } for mid in user_pack_obj.materials } all_materials_tag = sorted( [int(i.split('_')[0]) for i in game_config.material_config.keys()]) data['all_materials'] = [(i, game_config.material_config.get(str(i) + '_mat')) for i in all_materials_tag] #props data['user_props'] = { pid: { 'name': game_config.props_config.get(pid, {}).get('name'), 'num': user_pack_obj.props[pid] } for pid in user_pack_obj.props } all_props_tag = sorted( [int(i.split('_')[0]) for i in game_config.props_config.keys()]) data['all_props'] = [(i, game_config.props_config.get(str(i) + '_props')) for i in all_props_tag] ######将魂系统 代码要在其他逻辑偏后 以保证是最新的信息############## user_souls_obj = UserSouls.get_instance(uid) # 添加 普通将魂 if request.POST.get('add_normal_soul', ''): add_normal_soul_num = int(request.POST.get('add_normal_soul')) sid = request.POST.get('sid') user_souls_obj.add_normal_soul(sid, add_normal_soul_num, where=qa_edit) # 批量添加 普通将魂 if request.POST.get('dump_normal_soul'): dump_normal_soul_str = request.POST.get('dump_normal_soul').strip() for item in dump_normal_soul_str.split(';'): sid, num = item.split(':') user_souls_obj.add_normal_soul(sid + '_card', int(num), where=qa_edit) # 批量添加 装备碎片 if request.POST.get('add_equip_soul'): add_equip_soul_str = request.POST.get('add_equip_soul').strip() for equip_info in add_equip_soul_str.split(';'): eid, num = equip_info.split(':') user_souls_obj.add_equip_soul(eid, int(num), where=qa_edit) # 添加 英雄将魂 if request.POST.get('add_super_soul', ''): add_super_soul_num = int(request.POST.get('add_super_soul')) if add_super_soul_num >= 0: user_souls_obj.add_super_soul(add_super_soul_num, where=qa_edit) else: user_souls_obj.minus_card_soul('super_soul', -add_super_soul_num, where=qa_edit) # 武将碎片兑换武将 if request.POST.get('soul_exchange_card'): sid = request.POST.get('sid') params = {'cid': sid} user['uid'] = uid soul.exchange_card(user, params) # 删除将魂 if request.POST.get('delete_card_soul'): sid = request.POST.get('sid') num = int(request.POST.get('num')) user_souls_obj = UserSouls.get_instance(uid) user_souls_obj.minus_card_soul(sid, num, where=qa_edit) user_souls_obj.put() data.update(copy.deepcopy(soul.get_all(user, None)[1])) #武将碎片的显示 for sid, soul_conf in data['normal_souls'].items(): soul_conf['name'] = game_config.card_config[sid].get( 'star', '') + u'星 ' + game_config.card_config[sid].get('name', '') + u' 碎片' #装备碎片的显示 for sid, soul_conf in data['equip_souls_info'].items(): all_parts = sid.split('_') if len(all_parts) == 2: soul_conf['name'] = str(game_config.equip_config[sid].get( 'star', '')) + u'星 ' + game_config.equip_config[sid].get( 'name', '') + u' 碎片' else: sid = '%s_%s' % (all_parts[0], all_parts[1]) soul_conf['name'] = str(game_config.equip_config[sid].get( 'star', '')) + u'星 ' + game_config.equip_config[sid].get( 'name', '') + u' 碎片第%s部分' % all_parts[2] # 获取玩家武将信息 代码往后放 以保证是最新的信息 deck_num = 0 for card in user_card_obj.deck: if card: ucid = card['ucid'] card_info = user_card_obj.cards[ucid] this_card = Card.get_from_dict(card_info) this_card.ucid = ucid this_card.is_leader = card.get('leader', 0) eid = '' #user_card_obj.get_eid(ucid) if eid: this_card.equip = game_config.equip_config[eid]['name'] else: this_card.equip = '' this_card.now_exp = card_info['exp'] data['deck_cards'].append(this_card) deck_num += 1 else: data['deck_cards'].append(None) data['deck_num'] = deck_num other_ucids = user_card_obj.cards.keys() for card in user_card_obj.deck: ucid = card.get('ucid') if ucid and ucid in other_ucids: other_ucids.remove(ucid) for ucid in other_ucids: card_info = user_card_obj.cards[ucid] this_card = Card.get_from_dict(card_info) this_card.ucid = ucid this_card.now_exp = card_info['exp'] eid = '' #user_card_obj.get_eid(ucid) if eid: this_card.equip = game_config.equip_config[eid]['name'] else: this_card.equip = '' data['other_cards'].append(this_card) #重新整理 下编队 user_card_obj.decks # 邮件 show_mails = mails.show_mails(user, {})['show_mails'] temp_mails = show_mails.values() # 整理awards内容,就显示good_id和num for mail in temp_mails: for award in mail['awards'][:]: if not 'good_id' in award.values()[0]: continue mail['awards'].append({ award.values()[0]['good_id']: award.values()[0].get('num', 0) }) mail['awards'].pop(0) data.update({ 'mails': sorted(temp_mails, key=operator.itemgetter('can_get', 'create_time'), reverse=True), 'user_property_obj': user_property_obj, 'user': user, 'add_time': timestamp_toString(user.add_time), 'last_login_time': timestamp_toString(user.user_property.login_time), 'login_record': UserLogin.get(uid).login_info['login_record'], 'user_real_pvp_obj': user_real_pvp_obj.pvp_detail, 'mystery_store': mystery_store.get_store_info(user, {}), 'pk_store': pk_store.get_store_info(user, {}), }) return 'user/edit.html', data
def edit_user(request): """ 编辑用户页 """ uid = request.GET.get('uid','').strip() if not uid: pid = request.GET.get('pid','').strip() if not pid: username = request.GET.get('username','') if not username: return HttpResponseRedirect('/admin/user/?status=1') try: uid=ocapp.mongo_store.mongo.db['username'].find({'name':username})[0]['uid'] except: return HttpResponseRedirect('/admin/user/?status=1') else: account = AccountMapping.get(pid) if not account: return HttpResponseRedirect('/admin/user/?status=1') uid = account.uid user = UserBase.get(uid) if not user or not user.account: return HttpResponseRedirect('/admin/user/?status=1') user_equips_obj = UserEquips.get_instance(uid) user_pack_obj = UserPack.get_instance(uid) user_property_obj = UserProperty.get(uid) user_card_obj = UserCards.get(user.uid) user_real_pvp_obj = user.user_real_pvp game_config.set_subarea(user.subarea) data = { 'deck_cards':[], 'other_cards':[], } if not user.client_type: data['client_type'] = 'appstore_ios' else: data['client_type'] = user.client_type all_cards = [] all_cids = game_config.card_config.keys() all_cids_cp = copy.deepcopy(game_config.card_config) for k,v in all_cids_cp.iteritems(): all_cids_cp[k]['no'] = int(k.split('_')[0]) all_cids.sort(key = lambda x :(all_cids_cp[x]['no'])) for cid in all_cids: all_cards.append(Card.get(cid)) data['all_cards'] = all_cards #用户当前战场信息 user_dungeon_obj = UserDungeon.get_instance(user.uid) #充值信息 data['charge_sum_money'] = user_property_obj.charge_sum_money data['last_charge_record'] = ChargeRecord.find({'uid':uid})[-1] if ChargeRecord.find({'uid':uid}) else {} ######神秘商店 代码往前方 因为此操作会改变玩家武将,物品等信息############## # 刷新 物品列表 if request.POST.get('refresh_mystery_store',''): store_type = request.POST.get('store_type') params = { } mystery_store.refresh_store_by_self(user, params) # 购买 物品 if request.POST.get('buy_mystery_store_goods',''): store_type = request.POST.get('store_type') goods_index = int(request.POST.get('goods_index')) params = { 'store_type': store_type, 'goods_index': goods_index, } mystery_store.buy_store_goods(user, params) ######Pk商店 ## # 刷新 物品列表 if request.POST.get('refresh_pk_store', ''): pk_store.refresh_store_by_self(user, {}) # 购买 物品 if request.POST.get('buy_pk_store_goods',''): goods_index = int(request.POST.get('goods_index')) params = { 'goods_index': goods_index, } pk_store.buy_store_goods(user, params) #################### moderator = auth.get_moderator_by_request(request) qa_edit = 'qa edited by '+str(moderator.username) #提交状态 if request.method == "POST": state = int(request.POST.get("state","0")) state = bool(state) #冻结 if state != user.in_frozen: if state: user.froze() #解冻 else: user.unfroze() #删除账号 if request.POST.get('del_user',''): if not user.account: return HttpResponseRedirect('/admin/user/?status=1') user.account.delete() if request.POST.get('add_gold',''): add_gold = int(request.POST.get('add_gold')) if add_gold>0: user_property_obj.add_gold(add_gold,where=qa_edit) else: user_property_obj.minus_gold(add_gold) #增加元宝 if request.POST.get('add_coin',''): add_coin = int(request.POST.get('add_coin')) if add_coin>0: user_property_obj.add_coin(add_coin, where=qa_edit) else: user_property_obj.minus_coin(add_coin, where=qa_edit) #增加 经验点 if request.POST.get('add_card_point',''): add_card_point = int(request.POST.get('add_card_point')) if add_card_point>0: user_property_obj.add_card_exp_point(add_card_point, qa_edit) else: user_property_obj.minus_card_exp_point(add_card_point, qa_edit) #增加经验 if request.POST.get('add_exp',''): add_exp = int(request.POST.get('add_exp')) user_property_obj.add_exp(add_exp,where=qa_edit) #更改等级 if request.POST.get('modify_lv',''): lv = request.POST.get('modify_lv') lv_exp = game_config.user_level_config[lv]['exp'] now_exp = user_property_obj.property_info['exp'] user_property_obj.add_exp(lv_exp-now_exp,where=qa_edit) # 增加pk 积分 if request.POST.get('add_pk_pt', 0): pvp_pt = int(request.POST.get('add_pk_pt')) user_real_pvp_obj.add_pt(pvp_pt) # 加功勋 if request.POST.get('add_honor',''): honor = int(request.POST.get('add_honor')) urp = UserRealPvp.get(user.uid) urp.add_honor(honor, where=qa_edit) # 加战魂 if request.POST.get('add_fight_soul',''): fight_soul_num = int(request.POST.get('add_fight_soul')) user_property_obj.add_fight_soul(fight_soul_num, where=qa_edit) #发邮件 if request.POST.get('mail_title') or request.POST.get('mail_goods'): from apps.models.user_mail import UserMail from apps.common import utils sid = 'system_%s' % (utils.create_gen_id()) mail_title = request.POST.get('mail_title', '') mail_content = request.POST.get('mail_content', '') goods_str = request.POST.get('mail_goods', '').strip() award = {} for goods_info in goods_str.split(";"): goods_info = goods_info.strip() print "debug guochen email", goods_info if not goods_info: continue goods_id, num = goods_info.strip().split(":") award.setdefault(goods_id, 0) award[goods_id] += int(num) mailtype = 'system_qa' user_mail_obj = UserMail.hget(uid, sid) user_mail_obj.set_mail(mailtype=mailtype, title=mail_title, content=mail_content, award=award) # 修改vip等级 if request.POST.get('modify_vip_lv'): vip_lv = request.POST.get('modify_vip_lv') vip_conf = game_config.user_vip_config.get(str(vip_lv)) if vip_conf: coin = vip_conf['coin'] user_property_obj.property_info["charge_coins"] = coin user_property_obj.put() #补武将 if request.POST.get("add_card_ex", ""): user_card_obj = UserCards.get(user.uid) strCardInfo = request.POST.get("add_card_ex") lstCardInfo = strCardInfo.strip().split(";") for strAddCard in lstCardInfo: cid = strAddCard.split(":")[0] cid = cid.strip() + '_card' num = int(strAddCard.split(":")[1]) for i in range(num): clv = 1 user_card_obj.add_card(cid,clv,where=qa_edit) #增加武将 if request.POST.getlist('add_card'): add_cids = request.POST.getlist('add_card') user_card_obj = UserCards.get(user.uid) for add_cid in add_cids: if add_cid in game_config.card_config: clv = 1 user_card_obj.add_card(add_cid,clv,where=qa_edit) #增加武将经验 if request.POST.get('add_card_exp',''): add_exp = int(request.POST.get('add_card_exp')) ucid = request.POST.get('ucid') user_card_obj.add_card_exp(ucid,add_exp) #增加武将技能级别 if request.POST.get('add_card_sk_lv',''): ucid = request.POST.get('ucid') user_card_obj.add_card_sk_lv(ucid) #卖掉卡片 if request.POST.get('sell_card',''): ucid = request.POST.get('ucid') #this_card = Card.get(user_card_obj.cards[ucid]['cid'],user_card_obj.cards[ucid]['lv']) user_card_obj.del_card_info([ucid]) #user.user_property.add_gold(this_card.sell_gold,where=qa_edit) #踢出队伍 if request.POST.get('kick_deck',''): kick_index = int(request.POST.get('deck_index')) if user_card_obj.deck[kick_index].get('ucid','') != user_card_obj.get_leader(user_card_obj.cur_deck_index): user_card_obj.deck[kick_index] = {} user_card_obj.put() #设置主将 if request.POST.get('set_deck_main',''): ucid = request.POST.get('ucid') find_fg = False for card in user_card_obj.deck: if card.get('leader',0): card['ucid'] = ucid user_card_obj.put() find_fg = True break if not find_fg: user_card_obj.deck[0] = {'ucid':ucid,'leader':1} user_card_obj.put() #设置副将 if request.POST.get('set_deck_sub',''): ucid = request.POST.get('ucid') for card in user_card_obj.deck: if not card: card['ucid'] = ucid user_card_obj.put() break #一键送所有武将碎片 if request.POST.get('give_all_card_soul',''): for cid in game_config.card_config: user_card_obj.add_card(cid,1,where=qa_edit) user_card_obj.put() #一键送所有武将 if request.POST.get('give_all_card',''): #一键送所有武将 for cid in all_cids: ucid = user_card_obj.add_card(cid, 1, where=qa_edit)[2] # if request.POST.get('give_all_card',''): # user_card_obj.cards = {} # user_card_obj.cards_info = { # "decks":[[{}] * 5] * 10, # "cur_deck_index":0, # } # for eid in user_equips_obj.equips: # if user_equips_obj.equips[eid].get("used_by"): # user_equips_obj.equips[eid]['used_by'] = '' # user_equips_obj.put() # card_index = 0 # for cid in all_cids: # clv = 1 # ucid = user_card_obj.add_card(cid,clv,where=qa_edit)[2] # if card_index < 5: # user_card_obj.deck[card_index]['ucid'] = ucid # card_index += 1 #一键删除军队外的所有武将 if request.POST.get('del_other_card',''): decks = [] for deck in user_card_obj.decks: decks.extend([card['ucid'] for card in deck if card.get('ucid','')]) del_cids = filter(lambda x:x not in decks,user_card_obj.cards.keys()) user_card_obj.del_card_info(del_cids) for eid in user_equips_obj.equips: if user_equips_obj.equips[eid].get("used_by"): user_equips_obj.equips[eid]['used_by'] = '' user_equips_obj.put() #开放战场 if request.POST.get('open_dungeon',''): open_dungeon = request.POST.get('open_dungeon') floor_id = open_dungeon.split('-')[0] room_id = open_dungeon.split('-')[1] user_dungeon_obj.dungeon_info['normal_current']['floor_id'] = floor_id user_dungeon_obj.dungeon_info['normal_current']['room_id'] = room_id user_dungeon_obj.dungeon_info['normal_current']['status'] = 0 user_dungeon_obj.put() #回复体力 if request.POST.get('add_stamina', ''): add_stamina = int(request.POST.get('add_stamina')) user_property_obj.add_stamina(add_stamina) #equip if request.POST.get("add_equips", ""): user_equips_obj = UserEquips.get(uid) strEquipsInfo = request.POST.get("add_equips") lstEquipsInfo = strEquipsInfo.strip().split(";") for strAddEquip in lstEquipsInfo: eid = strAddEquip.split(":")[0] eid = eid.strip() + '_equip' num = int(strAddEquip.split(":")[1]) for i in range(num): user_equips_obj.add_equip(eid,where=qa_edit) #材料 if request.POST.get("add_mats", ""): strItemsInfo = request.POST.get("add_mats") lstItemsInfo = strItemsInfo.strip().split(";") for strAddItem in lstItemsInfo: mid = strAddItem.split(":")[0] mid = mid.strip() + '_mat' num = int(strAddItem.split(":")[1]) user_pack_obj.add_material(mid,num,where=qa_edit) #道具 if request.POST.get("add_props", ""): strPropsInfo = request.POST.get("add_props") lstPropsInfo = strPropsInfo.strip().split(";") for strAddProps in lstPropsInfo: pid = strAddProps.split(":")[0] pid = pid.strip() + '_props' num = int(strAddProps.split(":")[1]) user_pack_obj.add_props(pid,num,where=qa_edit) if request.POST.get("add_materials_num", 0): mid = request.POST.get("mid") user_pack_obj.add_material(mid,int(request.POST.get("add_materials_num", 0)),where=qa_edit) if request.POST.get("add_props_num", 0): pid = request.POST["prop"] user_pack_obj.add_props(pid, int(request.POST.get("add_props_num", 0)),where=qa_edit) if request.POST.get('give_all_props'): num = int(request.POST.get('all_props_num'))if request.POST.get('all_props_num') else 99 for iid in game_config.props_config: user_pack_obj.add_props(iid,num,where=qa_edit) if request.POST.get('del_all_props'): user_pack_obj.props = {} user_pack_obj.put() if request.POST.get('give_all_equips'): user_equips = UserEquips.get(uid) for eid in game_config.equip_config: user_equips.add_equip(eid,where=qa_edit) #一键送所有的装备碎片 if request.POST.get('give_all_equip_soul'): user_souls_obj = UserSouls.get(uid) for eid in game_config.equip_config: if game_config.equip_config[eid].get('need_soul_types_num',0): parts = game_config.equip_config[eid].get('need_soul_types_num',0) for i in xrange(1,parts+1): user_souls_obj.add_equip_soul(eid+'_'+str(i),100,where=qa_edit) else: user_souls_obj.add_equip_soul(eid,1,where=qa_edit) #一键删除所有的装备碎片 if request.POST.get('del_all_equip_soul'): user_souls_obj = UserSouls.get(uid) user_souls_obj.equip_souls_info = {} user_souls_obj.put() #添加单个装备碎片 if request.POST.get('add_single_equip_soul'): sid = request.POST.get('sid') num = int(request.POST.get('add_single_equip_soul')) user_souls_obj = UserSouls.get_instance(uid) user_souls_obj.add_equip_soul(sid, num,where=qa_edit) user_souls_obj.put() if request.POST.get('del_other_equips'): user_equips = UserEquips.get(uid) ueids = [ ueid for ueid in user_equips.equips if not user_equips.is_used(ueid)] user_equips.delete_equip(ueids) if request.POST.get('give_all_materials'): num = int(request.POST.get('all_materials_num'))if request.POST.get('all_materials_num') else 99 user_pack_obj = UserPack.get_instance(uid) for mid in game_config.material_config: user_pack_obj.add_material(mid,num,where=qa_edit) if request.POST.get('del_all_materials'): user_pack_obj = UserPack.get_instance(uid) user_pack_obj.materials = {} user_pack_obj.put() #一键过新手引导 if request.POST.get('newbie_pass','') and user.user_property.newbie: newbie_steps_num = int(user.game_config.system_config.get('newbie_steps', 6)) user.user_property.property_info['newbie_steps'] = (1 << newbie_steps_num) - 1 user.user_property.set_newbie() user.user_property.do_put() data['status'] = 1 data['current_dungeon'] = user_dungeon_obj.dungeon_info['normal_current'] #配置中的所有战场 data['all_dungeon'] = [] floor_ids = sorted(map(lambda x:int(x),game_config.normal_dungeon_config.keys())) for floor_id in floor_ids: for room_id in sorted(game_config.normal_dungeon_config[str(floor_id)]['rooms'].keys()): data['all_dungeon'].append('%d-%s' % (floor_id,room_id)) #用户已经达到最深层时 if '%s-%s' % (data['current_dungeon']['floor_id'],data['current_dungeon']['room_id']) == data['all_dungeon'][-1]: data['max_dungeon'] = True else: data['max_dungeon'] = False now_index = data['all_dungeon'].index('%s-%s' % (data['current_dungeon']['floor_id'],data['current_dungeon']['room_id'])) data['all_dungeon'] = data['all_dungeon'][now_index + 1:] #装备 equips = user_equips_obj.equips eqids_dict = [user_equips_obj.get_equip_dict(ueid) for ueid in equips ] data['user_equips'] = [game_config.equip_config.get(eid_dict['eid']) for eid_dict in eqids_dict] all_equips_tag = sorted([int(i.split('_')[0]) for i in game_config.equip_config.keys()]) data['all_equips'] = [(i,game_config.equip_config.get(str(i)+'_equip')) for i in all_equips_tag] #mat data['user_materials'] = {mid :{'name':game_config.material_config.get(mid, {}).get('name', ''),'num':user_pack_obj.materials[mid]} for mid in user_pack_obj.materials } all_materials_tag = sorted([int(i.split('_')[0]) for i in game_config.material_config.keys()]) data['all_materials'] = [(i,game_config.material_config.get(str(i)+'_mat')) for i in all_materials_tag] #props data['user_props'] = {pid :{'name':game_config.props_config.get(pid, {}).get('name'),'num':user_pack_obj.props[pid]} for pid in user_pack_obj.props } all_props_tag = sorted([int(i.split('_')[0]) for i in game_config.props_config.keys()]) data['all_props'] = [(i,game_config.props_config.get(str(i)+'_props')) for i in all_props_tag] ######将魂系统 代码要在其他逻辑偏后 以保证是最新的信息############## user_souls_obj = UserSouls.get_instance(uid) # 添加 普通将魂 if request.POST.get('add_normal_soul',''): add_normal_soul_num = int(request.POST.get('add_normal_soul')) sid = request.POST.get('sid') user_souls_obj.add_normal_soul(sid, add_normal_soul_num, where=qa_edit) # 批量添加 普通将魂 if request.POST.get('dump_normal_soul'): dump_normal_soul_str = request.POST.get('dump_normal_soul').strip() for item in dump_normal_soul_str.split(';'): sid, num = item.split(':') user_souls_obj.add_normal_soul(sid + '_card', int(num), where=qa_edit) # 批量添加 装备碎片 if request.POST.get('add_equip_soul'): add_equip_soul_str = request.POST.get('add_equip_soul').strip() for equip_info in add_equip_soul_str.split(';'): eid, num = equip_info.split(':') user_souls_obj.add_equip_soul(eid, int(num), where=qa_edit) # 添加 英雄将魂 if request.POST.get('add_super_soul',''): add_super_soul_num = int(request.POST.get('add_super_soul')) if add_super_soul_num >= 0: user_souls_obj.add_super_soul(add_super_soul_num, where=qa_edit) else: user_souls_obj.minus_card_soul('super_soul', -add_super_soul_num, where=qa_edit) # 武将碎片兑换武将 if request.POST.get('soul_exchange_card'): sid = request.POST.get('sid') params = {'cid':sid} user['uid'] = uid soul.exchange_card(user, params) # 删除将魂 if request.POST.get('delete_card_soul'): sid = request.POST.get('sid') num = int(request.POST.get('num')) user_souls_obj = UserSouls.get_instance(uid) user_souls_obj.minus_card_soul(sid, num,where=qa_edit) user_souls_obj.put() data.update(copy.deepcopy(soul.get_all(user, None)[1])) #武将碎片的显示 for sid, soul_conf in data['normal_souls'].items(): soul_conf['name'] = game_config.card_config[sid].get('star','') + u'星 ' + game_config.card_config[sid].get('name','') + u' 碎片' #装备碎片的显示 for sid, soul_conf in data['equip_souls_info'].items(): all_parts = sid.split('_') if len(all_parts) == 2: soul_conf['name'] = str(game_config.equip_config[sid].get('star','')) + u'星 ' + game_config.equip_config[sid].get('name','') + u' 碎片' else: sid = '%s_%s'%(all_parts[0],all_parts[1]) soul_conf['name'] = str(game_config.equip_config[sid].get('star','')) + u'星 ' + game_config.equip_config[sid].get('name','') + u' 碎片第%s部分'%all_parts[2] # 获取玩家武将信息 代码往后放 以保证是最新的信息 deck_num = 0 for card in user_card_obj.deck: if card: ucid = card['ucid'] card_info = user_card_obj.cards[ucid] this_card = Card.get_from_dict(card_info) this_card.ucid = ucid this_card.is_leader = card.get('leader',0) eid = ''#user_card_obj.get_eid(ucid) if eid: this_card.equip = game_config.equip_config[eid]['name'] else: this_card.equip = '' this_card.now_exp = card_info['exp'] data['deck_cards'].append(this_card) deck_num += 1 else: data['deck_cards'].append(None) data['deck_num'] = deck_num other_ucids = user_card_obj.cards.keys() for card in user_card_obj.deck: ucid = card.get('ucid') if ucid and ucid in other_ucids: other_ucids.remove(ucid) for ucid in other_ucids: card_info = user_card_obj.cards[ucid] this_card = Card.get_from_dict(card_info) this_card.ucid = ucid this_card.now_exp = card_info['exp'] eid = ''#user_card_obj.get_eid(ucid) if eid: this_card.equip = game_config.equip_config[eid]['name'] else: this_card.equip = '' data['other_cards'].append(this_card) #重新整理 下编队 user_card_obj.decks # 邮件 show_mails = mails.show_mails(user, {})['show_mails'] temp_mails = show_mails.values() # 整理awards内容,就显示good_id和num for mail in temp_mails: for award in mail['awards'][:]: if not 'good_id' in award.values()[0]: continue mail['awards'].append({award.values()[0]['good_id']: award.values()[0].get('num', 0)}) mail['awards'].pop(0) data.update({ 'mails': sorted(temp_mails, key=operator.itemgetter('can_get', 'create_time'), reverse=True), 'user_property_obj':user_property_obj, 'user':user, 'add_time':timestamp_toString(user.add_time), 'last_login_time':timestamp_toString(user.user_property.login_time), 'login_record':UserLogin.get(uid).login_info['login_record'], 'user_real_pvp_obj': user_real_pvp_obj.pvp_detail, 'mystery_store': mystery_store.get_store_info(user, {}), 'pk_store': pk_store.get_store_info(user, {}), }) return 'user/edit.html', data