示例#1
0
文件: order.py 项目: zlisaiki/zss
    def import_orders(self, filename, user_id, platform):
        '''
        批量导入订单
        :param filename:文件名(绝对路径)
        :param user_id: 用户id
        :param platform: 订单平台
        :return:
        '''
        try:
            file = open(filename, 'r')
            reader = csv.reader(file)

            orders = []
            users = []
            for line in reader:
                if '订单编号' in line:
                    continue

                order = Order()
                order.id = line[0].strip('=').strip('"')
                order.user_id = user_id
                order.platform = platform
                order.amount = float(line[6])
                order.status = ORDER_STATUS[line[10]]
                order.add_time = datetime.strptime(line[17],
                                                   '%Y-%m-%d %H:%M:%S')
                order.remark = line[23]
                order.count = int(line[24])
                order.shop_id = int(line[25])
                orders.append(order)

                user = Customer()
                user.username = line[1]
                user.bid = user_id  # 商家id
                user.alipay = line[2]
                user.realname = line[12]
                user.address = line[13]
                user.mobile = line[16].strip("'")
                users.append(user)

            file.close()
            Order.objects.bulk_create(orders)  # 批量导入订单信息
            Customer.objects.bulk_create(users)  # 批量导入买家信息
            os.remove(filename)

        except Exception as e:
            return False

        return True
示例#2
0
    def import_orders(self, filename, user_id, platform):
        '''
        批量导入订单
        :param filename:文件名(绝对路径)
        :param user_id: 用户id
        :param platform: 订单平台
        :return:
        '''
        try:
            file = open(filename, 'r')
            reader = csv.reader(file)

            orders = []
            customers = []
            usernames = []
            ordernos = []
            for line in reader:
                if '订单编号' in line:
                    continue

                customer = Customer()
                customer.username = line[1]
                customer.seller_id = user_id  # 商家id
                customer.alipay = line[2]
                customer.realname = line[12]
                customer.address = line[13]
                customer.mobile = line[16].strip("'")
                usernames.append(customer.username)
                customers.append(customer)

                order = Order()
                order.id = line[0].strip('=').strip('"')
                order.seller_id = user_id
                order.customer_name = customer.username
                order.platform = platform
                order.amount = float(line[6])
                order.status = ORDER_STATUS[line[10]]
                order.add_time = datetime.strptime(line[17],
                                                   '%Y-%m-%d %H:%M:%S')
                order.remark = line[23]
                order.count = int(line[24])
                order.shop_id = int(line[25])
                ordernos.append(order.id)
                orders.append(order)

            file.close()
            os.remove(filename)

            # 排除已存在的会员
            exists_usernames = Customer.objects.filter(seller_id=user_id, username__in=usernames) \
                .values_list('username', flat=True)
            exists_usernames = list(exists_usernames)
            customers = list(
                filter(lambda u: u.username not in exists_usernames,
                       customers))

            # 排除已存在的订单
            exists_ordernos = Order.objects.filter(seller_id=user_id, id__in=ordernos) \
                .values_list('id', flat=True)
            exists_ordernos = list(exists_ordernos)
            orders = list(filter(lambda o: o.id not in exists_ordernos,
                                 orders))

            customer_ids = list(Customer.objects.values_list('id', flat=True))
            if len(customer_ids) == 0:
                customer_ids.append(0)

            if len(customers) > 0:
                Customer.objects.bulk_create(customers)  # 批量导入买家信息
            new_customers = Customer.objects.exclude(
                id__in=customer_ids).values('id', 'username')

            for order in orders:
                for customer in new_customers:
                    if order.customer_name == customer['username']:
                        order.customer_id = customer['id']

            if len(orders) > 0:
                Order.objects.bulk_create(orders)  # 批量导入订单信息

            msg = '成功导入订单:{0}条 成功导入会员:{1}位'.format(len(orders), len(customers))
            return True, msg

        except Exception as e:
            return False, '导入失败'