예제 #1
0
def card_create(request):
    '''创建礼包卡
    '''
    msg = ''
    card_count = int(request.REQUEST.get('card_count','0'))
    batch_id = int(request.REQUEST.get('batch_id','0'))
    record = int(request.REQUEST.get('record','0'))

    card_size = 2000
    if card_count < card_size:
        card_size = card_count
        
    if card_count - record < card_size:
        card_size = card_count - record
    
    is_finish = 0
    
    if card_count == record:
        is_finish = 1    
   
    if batch_id > 0 and card_count > 0 and card_size > 0 and is_finish == 0:
        try:
            card_batch = CardBatch.objects.using('card').get(id = batch_id)
            key = card_batch.key
            #card = Card()
            card_table_name = Card.get_card_table_name(key)
            Card._meta.db_table = Card.get_card_table_name(key)
            card = Card()      
            card.batch_id = batch_id     
            
            conn = connections['card']
            cursor = conn.cursor()              
            if card_batch:
                insert_sql = []
                add_time = datetime.datetime.now()
                number_cache_list = []
                for i in range(0,card_size):
                    while True:
                        number = Card.get_card_number(key)
                        if number not in number_cache_list:
                            number_cache_list.append(number)
                            break
                    count_sql = "SELECT COUNT(*) FROM `%s` c WHERE c.`number` = '%s' "%(card_table_name,number)
                    cursor.execute(count_sql)
                    count = cursor.fetchone()
                    repeat_count = int(count[0])   
                    if repeat_count == 0:          
                        insert_sql.append("('%s','%s','%s',0,0)"%(batch_id,number,add_time))
                        i = i + 1
                cursor.execute('INSERT INTO `%s`(`batch_id`,`number`,`add_time`,`status`,`use_count`) VALUES  %s'%(card_table_name, ','.join(insert_sql)))
                cursor.close()
                card_batch.total_count = card_batch.total_count + i
                card_batch.save(using='card')
                record = record + i
        except Exception, e:
            print('create card number error:', e)
            traceback.print_exc()
            msg = '%s'%e