我有以下表格:
discount table:
id
name
description
amount
discount_exception
id
from_date
to_date
discount_id (foreign key to discount table)
折扣例外表用于存储折扣对用户不可用的日期范围,因此不应显示折扣。请注意,discount和discount_exception之间存在1:M的关系。换句话说,一个折扣可以有很多例外。
现在,我编写SQL的方法是获取所有折扣,然后在数组中循环它们,并查询discount_exception表,以确定每个折扣是否在特定的日期范围内
这是我在一次面试中被问到的,我得到的反馈是我缺乏OOD技能。所以我想知道我建议的设计有什么问题。
问题陈述:设计一个帮助计算购物车中项目的TotalCost的系统。您将得到购物车中的商品列表和折扣,如下例所示。清单将包括物品或折扣,顺序重要:
样品车:10美元书籍xyz,10%折扣所有项目,20美元固定,20%折扣下一项,100美元衬衫,15美元在第5种类型的书。
类型折扣:对所有项目的折扣为10%,下一项的折扣为20%,下一项的折扣为15美元,第5种类型的折扣可在系统中稍后添加更多类型的折扣。
我给出的解决方案:
这是我制作的类图:
这里是TotalCost()算法:
public d
假设我们的任务是实现一个API,以检查折扣计数是否可以应用于订单。Order域对象包含篮中的项以及客户id:
class Order(
val items: List<Item>,
val customerId: CustomerId
)
我们还有一个域对象DiscountCode,表示要使用的折扣计数。
有几个验证规则可以检查给定的折扣计数是否可以应用于给定的订单:
discounted?Has 折扣是否过期?是否有不能使用的商品?该折扣代码已被其他人使用?(客户是否允许使用此折扣代码?)
对于规则1-3,我们可以说它们显然是业务逻辑,根据DDD,它们属于Disc
我有一张定价规则表。我使用以下查询检索每个ProductTypeID的最大折扣,该折扣指示产品的类型:
SELECT MAX(discount) as BiggestDiscount, ProductTypeID FROM dbo.SellingPriceRules
WHERE ProductTypeID is not null
GROUP by ProductTypeID
ORDER BY ProductTypeID
这是完美的工作,但是我需要在此基础上进行扩展,对于ProductID的列表,检索我最大的折扣。因此,我需要找到每个ProductID所属的ProductTypeID,并检查我的