oi

def discount_price(self,price=None):
        """折扣后的价格"""
        if price is None: # 如果没有传递参数,则默认采用当前原价
            price = self.price

        price = float(price) # 默认获取到的数据时Decimal类型的
        try:
            activity = self.course_prices.get(activity__start_time__lt=datetime.now(), activity__end_time__gt=datetime.now(),is_show=True,is_delete=False)
        except:
            return price

        # 计算参与活动后的真实价格
        condition = activity.discount.condition
        # 判断当前课程原价是否满足活动的参与条件
        if condition > price:
            return price

        sale = activity.discount.sale
        if sale == "0":
            """限时免费"""
            price = 0
        elif sale[0] == "*":
            """限时折扣"""
            num = float( sale[1:] ) # 折扣数值
            price = price * num

        elif sale[0] == "-":
            """限时减免"""
            num = float( sale[1:] ) # 减免数值
            price = price - num

        elif sale[0] == "满":
            """限时满减"""
            num_list = sale.split("\r\n")
            sale_list = []
            for item in num_list:
                sale_condition,sale_num = item[1:].split("-")
                if price > float(sale_condition):
                    sale_list.append( float(sale_num) )

            current_sale = max(sale_list)
            price = price - current_sale

        return "%.2f" % price

    def __str__(self):
        return "%s" % self.name

  

posted @ 2019-12-02 12:59  God_with_us  阅读(85)  评论(0)    收藏  举报