日期:2014-05-17  浏览次数:20437 次

asp.net mvc的一个系统设计问题,有经验的请进,欢迎指导
我做的是一个中医医疗系统,现在有个这样的需求,有个服务表Service,有个理疗表Physiotherapy(如针灸,推拿等),在服务表里会存储理疗的Id,添加服务时会选择添加理疗,现在最难的就是这个服务的优惠问题,优惠是有选择性的,但是服务是面向所有人的。怎么说呢,这样说吧,我一个服务A,如果顾客的年龄满足某个条件,就打个8折或者直接减金额100,如果顾客是会员,打个9折等等,这只是我举例的一部分。但是这些是由系统自动算出来的,这个顾客是否满足这些条件,而不是人去选的。所以我会定义一个表,专门存储优惠条件,以及优惠金额,打多大折扣。顾客的年龄可以获取,顾客是否有会员可以获取,顾客光临次数可以获取。但是我在创建服务时,一旦选择了某个优惠项目或者几个优惠项目,在结账时会自动减去这部分优惠钱的,但是这样的话,每个人都要去计算,而且容易出错,不知道你有什么好的设计方案。

 总体设计方案就是,服务是同一个服务,面对的顾客不同就会有不同的优惠。我们生活中是商品一旦有优惠,就面对所有人都是优惠。不像我说的这样。另一个难点,就是操作员不用知道打折情况,系统自动计算出来。

 难啊,想了几天了,没有出好的方案,你有啥好建议,或者建议改方案,欢迎指正,谢谢!!!

------解决方案--------------------
所有的优惠都只是流程的不同,但是我们的目标都是一样的,我们要做的就是将所有的策略列举出来然后封装起来,根据不同的情况调用不同的方法,所以很符合策略模式的应用情况。但是程序是善变的,所以工作量还是很大的。
------解决方案--------------------
利用决策树方式构建,同时可能会使用到的东西:多播委托,表达式树构建,lua或ironpython(有些计算模式可能需要随时在现场修改,而且可能还不好使用那种依靠数据库配置方式完成,这种情况引入一些文本型的动态解释类语言比较方便)