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