Пример #1
0
 def _Async_insert_result(self):
     '''异步插入数据
     '''
     sql = SQL['insert_center_player']
     insert_nums = 0
     try:
         conn = connections['write']
         cur = conn.cursor()
         print '-' * 40
         
         #conn.autocommit(True)
         while 1 : 
             lines = (yield)
             #print sql
             if isinstance(lines,(tuple,list)):
                 try:#尝试插入
                     insert_nums += len(lines)
                     #print sql % lines[0]
                    
                     cur.executemany(sql,lines)
                 except Exception,e:
                     _log.info(trace_msg())
                     traceback.print_exc()
             else:
                 break
     except Exception,e:
         print '-'*400
         _log.warning(trace_msg())
Пример #2
0
def sync_dict_to_game_server(server_id):
    '''同步字典到游戏服务表
    '''
    err_msg = ''
    values = []
    the_delete_sql = 'truncate table log_dict'
    the_insert_sql = '''INSERT INTO log_dict(`log_type`,`log_time`,`log_name`,`log_previous`,`log_now`)values(0,NOW(),%s,%s,%s)'''
    for d in DictDefine.objects.filter(type=0):
        try:
            dict_key = d.key
            for k, v in d.dict.iteritems():
                values.append((dict_key, k, v))
        except:
            err_msg = trace_msg()
    if values:
        try:
            conn = Server.get_conn(server_id)
            conn.autocommit(0)
            cur = conn.cursor()
            cur.execute(the_delete_sql)
            cur.executemany(the_insert_sql, values)
            conn.commit()
            conn.close()
        except:
            err_msg = trace_msg()
    return err_msg
Пример #3
0
    def _excute_server(self, s_obj):

        for i in xrange(10):
            try:
                sql = self.query_type.sql.replace('{{server_id}}', str(s_obj.id)) \
                    .replace('{{server_name}}', str(s_obj.name)) \
                    .replace('{{master_id}}', str(s_obj.master_id)) \
                    .replace('{{sdate}}', self.sdate_str) \
                    .replace('{{edate}}', self.edate_str) \
                    .replace('{{prefix}}', PREFIX)
                if self.query_type.is_center:  # 是否在中央服查询,连接的是MYSQL
                    conn = sm.get_conn(0)
                else:                # 优化查询
                    conn = sm.get_conn(s_obj.id)
                file_name = self.query_type.file_format.replace('{{server_id}}', str(s_obj.id)) \
                    .replace('{{edate}}', self.file_edate or self.edate.strftime(self.DAY_FORMAT)) \
                    .replace('{{plan_name}}', self.plan_name) \
                    .replace('{{prefix}}', PREFIX)
                _log.debug('%s querying...' % self._excute_server_log_str(s_obj))

                self.query_type.create_tmp_table(conn, s_obj, self)  # 创建金币临时表
                self.query_and_write(file_name, conn, sql)

                _log.info('%s done!' % self._excute_server_log_str(s_obj))
                break
            except Exception, e:
                print trace_msg()
                time.sleep(3)
                if i >= 9:
                    _msg = '%s %s %s(%s) %s - %s error count(%s): %s' % (
                    self.query_type.name, self.plan_name, s_obj.name, s_obj.id, self.sdate_str, self.edate_str, i,trace_msg())
                    _log.warning(_msg)
                    post_msg('qq', '%s 游爱自动备份错误 %s %s %s(%s)' % (PREFIX, self.query_type.name, self.plan_name, s_obj.name, s_obj.id), _msg, merge=True)
Пример #4
0
def get_7daysact(request):
    '''7天乐活动msg
    '''
    kid = int(request.GET.get('kid', '0') or 0)
    result = 'activity is not fand!'
    obj_list = Activity.objects.filter(type='7天乐活动')
    try:
        for model in obj_list:
            msg = json.loads(model.msg)
            if msg:
                if kid and kid == msg['kid']:
                    result = msg
                    for al in result['al']:
                        for tl in al:
                            for rw in tl['tl']:
                                for i in range(len(rw['rw'])):
                                    rw['rw'][i] = d2l(rw['rw'][i])

                    for tl in result['tl']:
                        for i in range(len(tl['rw'])):
                            tl['rw'][i] = d2l(tl['rw'][i])

                    if result['ar']['ty'] == 2:
                        rw = result['ar']['rw']
                        for i in range(len(rw)):
                            rw[i] = d2l(rw[i])

    except Exception, e:
        print trace_msg()
Пример #5
0
def _import_module_from_file():
    for pyfile in _get_pyfile(os.path.join(PROJECT_ROOT, VIEWS_DIR)):
        _p_m = pyfile.replace(PROJECT_ROOT, '',
                              1).replace('__init__', '').rstrip('py').replace(
                                  os.sep, '.').strip('.')
        try:
            __import__(_p_m)
        except Exception, e:
            print trace_msg()
Пример #6
0
    def field_config(self):
        '''字段定义 
        '''
        try:
            self.__cache_config = self.__cache_config or json.loads(
                self._field_config)
        except:
            print trace_msg()
            self.__cache_config = self._DEFAULT_FIELD_CONFIG

        return self.__cache_config
Пример #7
0
 def mysql_conn(self, select_db=True, connect_timeout=10):
     '''mysql的连接
     '''
     if not self.__conn:
         try:
             the_conn_str = self.get_log_db_config()
             the_conn = MySQLdb.connect(host=the_conn_str['host'], user=the_conn_str['user'],
                                        passwd=str(the_conn_str['password']), port=the_conn_str.get('port', 3306),
                                        charset='utf8', connect_timeout=connect_timeout)
             the_conn.autocommit(1)
             self.__conn = the_conn
         except  Exception, e:
             print trace_msg()
Пример #8
0
    def get_server_pay_user_login_data(self,s_obj,insert_generators):
        '''获取 充值用户 登录数据
        '''
        
        pay_user_ids = self.get_server_pay_user_ids(s_obj.id)
        pay_user_ids_str = ','.join(pay_user_ids)
        #登录表: user id,  user name,   登录日期
        sql = '''
SELECT c.log_user,c1.player_name,date_format(c.log_time,'%Y-%m-%d %H:%i:%S'),c.log_data,c.log_server 
FROM log_check_user c 
JOIN player_{sever_id}_tmp c1 
ON c.log_user=c1.player_id 
WHERE c1.create_time >='{sdate}' and c1.create_time<date_add('{sdate}',interval 1 month) 
AND c.log_user in ({pay_user_ids_str}) order by c.log_user,c.log_data
        '''.format(pay_user_ids_str=pay_user_ids_str,sdate=self.sdate_str,sever_id=s_obj.id)
                
        sql = '''
SELECT c.log_user,c1.player_name,date_format(c.log_time,'%Y-%m') dd,count(0),c.log_server 
FROM log_check_user c 
JOIN player_{sever_id}_tmp c1 
ON c.log_user=c1.player_id 
WHERE c1.create_time >='{sdate}' and c1.create_time<date_add('{sdate}',interval 1 month) 
AND c.log_user in ({pay_user_ids_str}) GROUP BY dd,c.log_user order by c.log_user,dd
        '''.format(pay_user_ids_str=pay_user_ids_str,sdate=self.sdate_str,sever_id=s_obj.id)
        
        pay_user_ids_count = len(pay_user_ids)
        if int(pay_user_ids[0]) == 0:
            return
        _log.info('%s(%s) %s 生成 %s个充值用户登录日志' % (s_obj.name,s_obj.id,self.sdate_str,pay_user_ids_count))
        
        conn = sm.get_conn(s_obj.id)
        cur = conn.cursor()
        try:
            cur.execute(sql)
            insert_size = 0
            self._INSERT_LOCK.acquire()
            while 1:
                result = cur.fetchmany(50000)
                if result:
                    try:
                        _log.info('%s(%s) %s 写入  %s 行充值用户登录日志' % (s_obj.name,s_obj.id,self.sdate_str,len(result)))
                        insert_generators.send(result)
                    except Exception,e:
                        _log.warning(trace_msg())
                else:
                    break
            
        except Exception,e:
            _log.warning(trace_msg())
Пример #9
0
def log_syncdb_do(request,server_id=0):
    '''同步数据库
    '''
    server_id = server_id or int(request.REQUEST.get('sid', '0'))
    is_ajax = request.is_ajax() or request.REQUEST.get('ajax','')
    err_msg = ''
    _r = {"code":1,"content":[]}
    sync_status = {}

    try:
        if server_id:
            is_center = False
            the_server = Server.objects.get(id=server_id)
            the_server.create_base_table()                          #创建数据库,创建player表,创建log基表
            conn = the_server.mysql_conn()
        else:
            is_center = True
            conn = Server.get_conn(0)
        
        table_status = {"tol_num":0,
                       "sync_num":0,
                       "already_num":0
                       }
        
        index_status = copy.deepcopy(table_status)
        
        status = LogDefine.Status.CENTER if is_center else LogDefine.Status.NORMAL
        cur = conn.cursor()
        log_defs = LogDefine.objects.filter(status=status)
        for log_def in log_defs:
            table_status["tol_num"] += 1
            create_tabls_sql = log_def.get_create_table_sql()
            try:
                cur.execute(create_tabls_sql) #同步表
                table_status["sync_num"] += 1
            except MySQLdb.Warning,e:
                table_status["already_num"] += 1
                
            for create_index_sql in log_def.get_create_index_sqls() : #同步索引
                index_status["tol_num"] += 1
                #print create_index_sql
                try:
                    cur.execute(create_index_sql)
                    index_status["sync_num"] += 1
                except MySQLdb.OperationalError,e:
                    index_status["already_num"] += 1  
                except:
                    err_msg = trace_msg()  
                    print trace_msg()  
Пример #10
0
def player_info(request):
    player = {
        'user_id': 0,
        'player_id': 0,
        'player_name': '',
        'level': 0,
        'server_id': 0
    }

    try:
        user_type = int(request.GET.get('type', '0'))
        template_name = request.GET.get('template', '')
        if template_name.find('/') > 0:
            template = 'client/%s.html' % template_name
        else:
            template = 'client/%s/player_info.html' % template_name if template_name else 'client/player_info.html'

        openid = get_argument(request, ['uid', 'openid', 'loginName'], 0)
        server_id = int(
            get_argument(request, ['serverid', 'server_id', 'sid', 's_id'], 0))
        player['server_id'] = server_id
        if server_id > 0 and openid != '':
            openid = filter_sql(str(openid))

            user_type = user_type
            server = Server.objects.get(id=server_id)
            conn = server.mysql_conn()
            cursor = conn.cursor()
            query_sql = 'select player_id,player_name from player_%d where user_type=%d and link_key="%s"' % (
                server_id, user_type, openid)

            cursor.execute(query_sql)
            player_list = cursor.fetchall()
            if len(player_list) > 0:
                player['user_id'] = openid
                player['player_id'] = player_list[0][0]
                player['player_name'] = player_list[0][1]
                try:
                    master_server = server.master_server
                    db_name, mongo_conn = master_server.get_mongo_conn()
                    record = mongo_conn[db_name].gl.player.find_one(
                        {'pi': player['player_id']}, {'lv': 1})
                    player['level'] = record['lv']
                    mongo_conn.close()
                except Exception, ex:
                    print trace_msg()

    except Exception, ex:
        print trace_msg()
Пример #11
0
def get_festival(request):
    '''节日活动msg
    '''
    kid = int(request.GET.get('kid', '0') or 0)
    result = 'activity is not fand!'
    obj_list = Activity.objects.filter(type='节日活动')
    try:
        for model in obj_list:
            msg = json.loads(model.msg)
            if msg:
                if kid and kid == msg['kid']:
                    result = msg

    except Exception, e:
        print trace_msg()
Пример #12
0
def equip_item_info(request,
                    player_id=0,
                    template='game/equip_item_info.html'):
    '''角色装备信息
    '''
    player_id = player_id or int(request.REQUEST.get('player_id', 0))
    server_id = int(request.REQUEST.get('server_id', 0))
    player_name = request.GET.get('player_name', '')

    gmp = GMProtocol(server_id)
    err_msg = ''
    try:
        gmp.time_out = 10
        # 1:核装,2:普装,3:摆摊挂单,4:法宝,5:血脉,6:道具,7:宠物
        # equip_type = [1,2,3,4,5]
        equip_item = [6]
        equip_item_list = gmp.get_equip_info(player_id, equip_item)
        if not equip_item_list:
            err_msg = "GM工具返回,没有此角色装备!"
        else:
            equip_item = get_equip_item(equip_item_list["6"])
            tol_equio_num = len(equip_item)
    except Exception, e:
        player_info = {}
        err_msg = trace_msg()
Пример #13
0
def activity_query(request):
    '''活动查询
    '''
    server_id = int(request.REQUEST.get('server_id', '') or 0)
    msg = request.REQUEST.get('msg', '')
    activity_model = get_activity_model(request)
    if not server_id:
        _r = {"code": -1, "msg": "", "content": []}
        try:
            model = get_activity_model(request)
            _r["code"] = 0
            _r["content"] = [json.loads(model.msg)]
        except:
            _r['msg'] = trace_msg()
        return _r
    result = activity_action(activity_model, 'query', server_id, msg,
                             request.admin.id, True)
    result = json.loads(result)
    # ((0,'未开始'),(1,'关闭成功'),(2,'开启成功'),(3,'服务器配置异常'),)
    if result["code"] == 0 and result["content"][0]["open"] == False:
        activity_model.status = 1
    elif result["code"] == 0 and result["content"][0]["open"] == True:
        activity_model.status = 2
    else:
        activity_model.status = 3
    activity_model.save()
    return HttpResponse(json.dumps(result))
Пример #14
0
def mail_info(request, template='game/mail_info.html'):
    ''' 查看邮件列表
    '''
    player_id = int(request.REQUEST.get('player_id', -1))
    server_id = int(request.REQUEST.get('server_id', 0))
    player_name = request.GET.get('player_name', '')
    page_num = int(request.GET.get('page_num', 1))
    page_size = 20
    total_record = 0

    gmp = GMProtocol(server_id)
    err_msg = ''
    mail_list = []
    try:
        result = gmp.get_mail(player_id, page_num - 1)
        if result and result.get('n'):
            total_record = result['n']
            mail_list = result['l']
            if mail_list and total_record:
                for mail in mail_list:
                    mail['m']['pl'] = json.dumps(mail['m']['pl'],
                                                 ensure_ascii=False)
                    mail['rw'] = json.dumps(
                        mail['rw'], ensure_ascii=False) if 'rw' in mail else ''
    except Exception, e:
        err_msg = trace_msg()
Пример #15
0
def role_info(request, player_id=0, template='game/role_info.html'):
    '''角色信息
    '''
    player_id = player_id or int(request.REQUEST.get('player_id', 0))
    server_id = int(request.REQUEST.get('server_id', 0))
    player_name = request.GET.get('player_name', '')

    gmp = GMProtocol(server_id)
    def_params = get_player_info_param()
    err_msg = ''
    #keji_map = KEJI_MAP
    #sj_map = SJ_MAP

    try:
        gmp.time_out = 10
        player_info = gmp.get_player_base_info(player_id)

        player_info = player_info[1] if not player_info[0] else []
        resource_list = gmp.get_player_resource(player_id)
        if player_info:  ##########默认玩家是存在的,不然就报错,player_info=返回[-1] ,历史遗留问题,我就不改
            player_info[2] = Occupation_Map[player_info[2]]
            player_info[5] = HEAD_TITLE[
                player_info[5]] if player_info[5] else ""
            player_info[6] = TRIBE_TITLE[
                player_info[6]] if player_info[6] else ""
        resource_list = resource_list[1] if resource_list else []

    except Exception, e:
        player_info = resource_list = []
        err_msg = trace_msg()
Пример #16
0
def activity_edit(request,
                  model=None,
                  err_msg='',
                  template="game/activity_edit.html"):
    '''活动编辑
    '''
    is_copy = request.REQUEST.get('is_copy', '')
    try:
        if not model:
            activity_id = int(request.REQUEST.get('activity_id', '') or 0)
            model = model or get_activity_model(request)
        model.id = model.id or 0
        if model.id:
            select_server_ids = [s.id for s in model.server.all()]

        if is_copy:
            model.id = 0
            msg = json.loads(model.msg)
            if isinstance(msg, dict):
                if not msg:
                    return HttpResponse('空配置的活动不能复制.')

                msg['kid'] = int(time.time())
                msg["id"] = 0
                model.msg = json.dumps(msg)
            model.name = '%s-copy' % model.name

    except Exception, e:
        err_msg = trace_msg()
Пример #17
0
def pilot_modify(request, player_id=0):
    '''武将修改
    '''
    _r = {"code": -1, "msg": ""}
    player_id = player_id or int(request.REQUEST.get('player_id', 0))
    server_id = int(request.REQUEST.get('server_id', 0))
    player_name = request.REQUEST.get('player_name', '')
    json_msg = request.REQUEST.get('msg', '')
    msg_wj = json.loads(json_msg)

    try:
        if 'wj' in msg_wj:
            wj_list = msg_wj.get('wj', '')
            gmp = GMProtocol(server_id)
            result = gmp.set_pilot_modify(player_id, wj_list)

        if 'add_wj' in msg_wj:
            wj_list = msg_wj.get('add_wj', '')
            gmp = GMProtocol(server_id)
            result = gmp.add_pilot(player_id, wj_list)

        _r['msg'] = gmp.rsp_map.get(result, result)
        _r['code'] = result
        gmp.save_log(request.admin.id,
                     gmp.req_type,
                     _r['code'],
                     role_name=player_name,
                     remark2=json_msg)
    except:
        err_msg = trace_msg()
        _r['msg'] = err_msg

    return HttpResponse(json.dumps(_r))
Пример #18
0
def admin_save(request, admin_id=0):
    '''管理员保存
    '''
    try:
        admin_id = int(request.REQUEST.get('id', '0'))
        if admin_id:
            the_admin = request.admin.get_manageable_admin().get(id=admin_id)
        else:
            the_admin = Admin()
        username = request.REQUEST.get('username', '')
        if not admin_id and Admin.objects.filter(username=username).exists():
            err_msg = '已存在相同登录名[%s]' % username
        else:
            the_admin.set_attr('username',
                               request.REQUEST.get('username', '').strip(),
                               null=False)
            the_admin.set_attr('alias',
                               request.REQUEST.get('alias', '').strip(),
                               null=False)
            the_admin.set_attr('password',
                               request.REQUEST.get('password', '').strip(),
                               the_admin.md5_password,
                               null=False)
            role_ids = request.REQUEST.getlist('role_id')
            if role_ids:
                the_admin.set_attr('role_ids',
                                   request.REQUEST.getlist('role_id'),
                                   null=True)
                the_admin.save()
            else:
                err_msg = '至少选择一个角色!'

    except Exception, e:
        err_msg = trace_msg()
Пример #19
0
def server_modify(request, server_id=0):
    '''修改服务器参数
    '''
    server_ids = list(set(request.REQUEST.getlist('server_id')))
    modify_param = request.REQUEST.get('msg', '')
    remark = ''
    try:
        if server_ids:
            modify_param = json.loads(modify_param)

            msg, remark = input_server_param_handle(modify_param)
            print msg
            servers_len = len(server_ids)
            if servers_len > 1:
                poll_num = 100 if servers_len > 100 else servers_len
                tp = ThreadPool(poll_num)
                for server_id in server_ids:
                    tp.append(server_modify_action,
                              (request, server_id, msg, remark))
                tp.close()
                result = tp.get_all_result()
                tp.join()
                del tp
            else:
                server_id = server_ids[0]
                result = [
                    server_modify_action(request, server_id, msg, remark)
                ]
            return HttpResponse('<br>'.join(result))
    except:
        err_msg = trace_msg()
    return HttpResponse(err_msg)
Пример #20
0
def shop_daily_edit(request):
    '''
    每日限购编辑
    '''
    MIN_ITEM_ID = 10000

    item_id = int(request.GET.get('item_id', 0))
    server_id = int(request.GET.get('server_id', 0))
    page_num = int(request.GET.get('page_num', 1))

    if item_id and item_id <= MIN_ITEM_ID:
        return HttpResponse("无法修改本地数据(商品ID < 10000)")

    item = []
    server_time = None
    res_info = None
    if item_id and server_id:
        try:
            gmp = GMProtocol(server_id)
            server_time = gmp.query_server_time()[0]
            shop_list, page_sum = gmp.get_shop_list(page_num)
            item = [i for i in shop_list if i[0] == item_id][0]
            res_info = convert_res_info(item[14], item[16])
        except Exception, e:
            err_msg = trace_msg()
Пример #21
0
def role_save(request, id=0):
    '''角色保存
    '''
    try:
        id = int(request.REQUEST.get('id', '0'))
        if id > 0:
            role = request.admin.get_resource('role').get(id=id)
        else:
            role = Role()
        role.set_attr('name',request.REQUEST.get('name',''),null=False)
        role.set_attr('remark',request.REQUEST.get('remark',''),null=True)
        role.set_attr('type',request.REQUEST.get('type',Role.RoleType.NORMAL),null=False)
        role.create_resource('menu',request.REQUEST.getlist('menu_id'))
        role.create_resource('channel',request.REQUEST.getlist('channel_id'))
        role.create_resource('agent',request.REQUEST.getlist('agent_id'))
        role.create_resource('server',request.REQUEST.getlist('server_id'))
        role.create_resource('server_group',request.REQUEST.getlist('server_group_id'))
        role.create_resource('platform',request.REQUEST.getlist('platform_id'))
        manager_role_ids = [] # 只有管理员才能管理其他角色
        if int(role.type) == Role.RoleType.ADMIN:
            manager_role_ids = request.REQUEST.getlist('manager_role_id')
        role.create_resource('role',manager_role_ids)
        role.save()
        for r in request.admin.get_roles().filter(type=Role.RoleType.ADMIN):
            r.add_resource_member('role',role.id)
            
    except Exception,e:
        err_msg = trace_msg()
Пример #22
0
 def remove(self,template='game/player_template_edit.html'):
     try:
         ActivityTemplate.objects.filter(id__in=self.ids).delete()
         msg = '成功!'
     except:
         msg = trace_msg()
     return self.HttpResponse(msg)       
Пример #23
0
def batch_upgrade_save(request):
    ids = request.REQUEST.getlist('file_id')
    update_params = {}
    msg = ''
    try:
        if ids:
            for k in request.REQUEST.keys():
                if k == 'file_id':
                    continue
                value = request.REQUEST.get(k, '')
                if value:
                    update_params[k] = value
                    msg += '%s:%s' % (k, value)
            if update_params:
                print update_params
                Upgrade.objects.using('write').filter(id__in=ids).update(
                    **update_params)
                msg += '\n更新成功!'
            else:
                msg = '没有更新配置!'
        else:
            msg = '没有选择更新'
    except:
        msg = trace_msg()
    return HttpResponse(msg)
Пример #24
0
    def update_player_all(self,s_obj,insert_generators):
        '''拉取全服的player表
        '''
        sql = SQL['get_player'].replace('{{server_id}}',str(s_obj.id))\
                               .replace('{{sdate}}',self.sdate_str)\
                               .replace('{{edate}}',self.edate_str)     
                                          

        try:
            conn = sm.get_conn(s_obj.id)
            cur = conn.cursor()
        
            BaseQuery.create_tmp_table(conn, s_obj)#先创建一下player_xx_tmp表
            #print sql
            cur.execute(sql)
            insert_size = 0
            while 1:
                result = cur.fetchmany(50000)
                if result:
                    insert_size += len(result)
                    _log.debug('%s player_%s has %s inserting....' % (s_obj.name,s_obj.id,insert_size))
                    try:
                        self._INSERT_LOCK.acquire()
                        insert_generators.send(result)
                    except Exception,e:
                        _log.warning(trace_msg())
                    finally:
                        self._INSERT_LOCK.release()
Пример #25
0
def cron_do():
    '''定时运行

    '''
    print 'start cron job !'
    while True:
        try:
            edate  = datetime.datetime.now()
            sdate  = edate + datetime.timedelta(days=-1)
            
            if edate.hour == 3 and edate.minute == 1:   #03:01 start
                close_connections()
                sm.update_server_config()               #1 更新服务列表
                update_dicts()                          #2 更新渠道列表
                CenterPlayer(sdate,edate).start()       #3 插入中央服player_all
                
                RollPlayer().start()                    #4 更新滚服 数据
                
                auto_backup_do('daily',sdate,edate)     #执行备份
                if edate.day == 1 :#每月1号执行的
                    sdate = get_previous_month_day(edate)
                    edate = edate.replace(day=1)
                    auto_backup_do('monthly',sdate,edate)
                remove_30ago_dir()
                
                post_msg('qq','%s 定时备份完成!' % PREFIX)
        except Exception,e:
            _msg = trace_msg()
            print _msg
            post_msg('qq','%s 定时备份错误!' % PREFIX,_msg)
        
        time.sleep(60)
Пример #26
0
    def run(self,s_obj):
        '''
        '''
        try:
            center_conn = connections['write']
            server_conn = sm.get_conn(s_obj.id)
            insert_server_conn  = sm.get_conn(s_obj.id)
            insert_server_conn.autocommit(False)
            
            self.__create_server_player_roll_table(server_conn)
            self.__create_server_player_roll_table(server_conn)
            insert_num = 0
            for pid,link_key,user_type,create_time in self.__get_roll_player(server_conn,s_obj):
                roll_num,player_infos = self.__get_center_roll_player(center_conn,link_key,user_type,create_time)

                if roll_num>0:
                    roll_num -= 1 if roll_num>=1 else 0
                    self.__insert_player_roll(insert_server_conn,roll_num,player_infos)
                    if roll_num > 0:
                        self.__update_center_roll_num(center_conn,roll_num,pid)
                insert_num += 1
            print '[%s] %s(%s) 更新  %s 条滚服数据' % (datetime.datetime.now(),s_obj.name,s_obj.id,insert_num)
            server_conn.close()
            center_conn.close()
        except Exception,e:
            _log.warning(trace_msg())
Пример #27
0
def auth(request, shard_id=0):
    '''认证完成访问页面
    '''
    http_protocol = 'https' if request.is_secure() else 'http'
    access_token = request.REQUEST.get('code', '')
    try:
        if shard_id and access_token:
            Log._meta.db_table = 'log_share'
            share_model = Log.objects.using('read').get(id=shard_id)
            share_type = share_model.f4
            share_type_cls = get_share_type_cls(share_type)
            share_type_obj = share_type_cls(request, share_model)

            return share_type_obj.get_share_result(access_token)
    except:
        print trace_msg()
    return HttpResponse('error')
Пример #28
0
def log_remove(request, log_id=0):
    '''删除日志类型
    '''
    try:
        log_ids = request.REQUEST.getlist('id')
        LogDefine.objects.filter(id__in=log_ids).delete()
    except Exception,e:
        err_msg = trace_msg()
Пример #29
0
def roll_broadcast(request, template='game/roll_broadcast.html'):
    '''滚动公告
    '''
    server_id = int(request.REQUEST.get('server_id', '') or 0)
    group_servers_dict = get_group_servers_dict(request)
    select_server_ids = [server_id]
    try:
        if server_id:
            gmp = GMProtocol(server_id)
            #server_time = gmp.query_server_time()[0]

            if request.method == 'POST':
                json_msg = request.REQUEST.get('msg', '')
                msg = json.loads(json_msg)

                _r = {"code": -1, "msg": ""}
                if request.REQUEST.get('req_type', '') == 'roll_broadcast_del':
                    result = gmp.roll_broadcast_del(msg)
                else:
                    msg[0]["bc"] = msg[0]["bc"].replace("<br />", "")
                    result = gmp.roll_broadcast_set(msg)
                _r['code'] = result
                _r['msg'] = gmp.rsp_map.get(result, result)
                gmp.save_log(request.admin.id,
                             gmp.req_type,
                             _r['code'],
                             remark1='remark',
                             remark2=json_msg)
                return HttpResponse(json.dumps(_r))
            else:
                roll_broadcasts = gmp.roll_broadcast_query()
                server_model = Server.objects.get(id=server_id)
        else:
            the_user = request.admin
            server_list = the_user.get_resource("server").all()
            # 返回所有正在滚动的公告
            roll_broadcasts = []
            # for g,servers in group_servers_dict.items():
            #     for s in servers:
            for s in server_list:
                gmp = GMProtocol(s.id)
                result = gmp.roll_broadcast_query()
                if result:
                    for i in range(len(result)):
                        result[i]['serverId'] = s.id
                        result[i]['serverName'] = s.name
                    roll_broadcasts.extend(result)

            # gmp = GMProtocol(7)
            # roll_broadcasts = gmp.roll_broadcast_query()
            # print roll_broadcasts
            # if roll_broadcasts:
            #     roll_broadcasts[0]['serverId'] = 7
            #     roll_broadcasts[0]['serverName'] = 'test'
            # server_model = Server.objects.get(id=7)
    except:
        err_msg = trace_msg()
    return render_to_response(template, locals())
Пример #30
0
def activity_upload(request):
    '''活动图片上传
    '''
    #上传登录公告图片
    img_path = os.path.join(ACTIVITY_PATH, 'img')
    rsp = {"msg": "没有图片"}
    file_ext = '.png'
    reqfile = request.FILES.get('fileToUpload', None)
    pid = request.REQUEST.get('pid', '')
    if reqfile:
        #创建目录
        try:
            if not os.path.isdir(img_path):
                os.makedirs(img_path)
        except Exception, e:
            return HttpResponse({"msg": "目录错误"})
        try:
            old_img_name, old_ext = os.path.splitext(str(reqfile))
            img_name = raw_img_name = hashlib.md5(old_img_name).hexdigest()
            count = 0
            path_name = os.path.join(img_path, img_name)
            while os.path.isfile(path_name + file_ext):
                count += 1
                img_name = '%s_%s' % (raw_img_name, count)
                path_name = os.path.join(img_path, img_name)
            img = Image.open(reqfile)
            img.save("%s" % path_name + file_ext, "png")

            # 取消 zip 保存 20160616
            # with zipfile.ZipFile(path_name + '.zip', 'w') as zipimg:
            #   zipimg.write(path_name+file_ext, img_name+file_ext)

            # for python 2.6
            #  import contextlib
            #  with contextlib.closing(zipfile.ZipFile(path_name + '.zip', 'w')) as zipimg:
            #  zipimg.write(path_name+file_ext, img_name+file_ext)

            rsp = {
                "pid": pid,
                "key": img_name,
                "msg": "保存成功",
            }
        except Exception, e:
            print trace_msg()
            return HttpResponse("Error %s" % e)