当前位置: 首页 > news >正文

潍坊建站公司沧州网络科技有限公司

潍坊建站公司,沧州网络科技有限公司,江门关键词按天优化,网站建设公司推荐时代创信一、计算逻辑的类结构图 在这张图里#xff0c;顶层接口 RuleTemplate 定义了 calculate 方法#xff0c;抽象模板类 AbstractRuleTemplate 将通用的模板计算逻辑在 calculate 方法中实现#xff0c;同时它还定义了一个抽象方法 calculateNewPrice 作为子类的扩展点。各个具…一、计算逻辑的类结构图 在这张图里顶层接口 RuleTemplate 定义了 calculate 方法抽象模板类 AbstractRuleTemplate 将通用的模板计算逻辑在 calculate 方法中实现同时它还定义了一个抽象方法 calculateNewPrice 作为子类的扩展点。各个具体的优惠计算类通过继承 AbstractRuleTemplate并实现 calculateNewPrice 来编写自己的优惠计算方式。 二、代码实现 1、RuleTemplate.java public interface RuleTemplate {// 计算优惠券ShoppingCart calculate(ShoppingCart settlement); } 2、AbstractRuleTemplate.java public ShoppingCart calculate(ShoppingCart order) {// 获取订单总价Long orderTotalAmount getTotalPrice(order.getProducts());// 获取以shopId为维度的总价统计MapLong, Long sumAmount getTotalPriceGroupByShop(order.getProducts());CouponTemplateInfo template order.getCouponInfos().get(0).getTemplate();// 最低消费限制Long threshold template.getRule().getDiscount().getThreshold();// 优惠金额或者打折比例Long quota template.getRule().getDiscount().getQuota();// 如果优惠券未指定shopId则shopTotalAmountorderTotalAmount// 如果指定了shopId则shopTotalAmount对应门店下商品总价Long shopId template.getShopId();Long shopTotalAmount (shopId null) ? orderTotalAmount : sumAmount.get(shopId);// 如果不符合优惠券使用标准, 则直接按原价走不使用优惠券if (shopTotalAmount null || shopTotalAmount threshold) {log.debug(Totals of amount not meet);order.setCost(orderTotalAmount);order.setCouponInfos(Collections.emptyList());return order;}// 子类中实现calculateNewPrice计算新的价格Long newCost calculateNewPrice(orderTotalAmount, shopTotalAmount, quota);if (newCost minCost()) {newCost minCost();}order.setCost(newCost);log.debug(original price{}, new price{}, orderTotalAmount, newCost);return order; } 3、子类 MoneyOffTemplate.java Slf4j Component public class MoneyOffTemplate extends AbstractRuleTemplate implements RuleTemplate {Overrideprotected Long calculateNewPrice(Long totalAmount, Long shopAmount, Long quota) {// benefitAmount是扣减的价格// 如果当前门店的商品总价quota那么最多只能扣减shopAmount的钱数Long benefitAmount shopAmount quota ? shopAmount : quota;return totalAmount - benefitAmount;} } 4、工厂类 CouponTemplateFactory.java Component Slf4j public class CouponTemplateFactory {Autowiredprivate MoneyOffTemplate moneyOffTemplate;Autowiredprivate DiscountTemplate discountTemplate;Autowiredprivate RandomReductionTemplate randomReductionTemplate;Autowiredprivate LonelyNightTemplate lonelyNightTemplate;Autowiredprivate DummyTemplate dummyTemplate;Autowiredprivate AntiPauTemplate antiPauTemplate;public RuleTemplate getTemplate(ShoppingCart order) {// 不使用优惠券if (CollectionUtils.isEmpty(order.getCouponInfos())) {// dummy模板直接返回原价不进行优惠计算return dummyTemplate;}// 获取优惠券的类别// 目前每个订单只支持单张优惠券CouponTemplateInfo template order.getCouponInfos().get(0).getTemplate();CouponType category CouponType.convert(template.getType());switch (category) {// 订单满减券case MONEY_OFF:return moneyOffTemplate;// 随机立减券case RANDOM_DISCOUNT:return randomReductionTemplate;// 午夜下单优惠翻倍case LONELY_NIGHT_MONEY_OFF:return lonelyNightTemplate;// 打折券case DISCOUNT:return discountTemplate;case ANTI_PUA:return antiPauTemplate;// 未知类型的券模板default:return dummyTemplate;}}} 5、使用 CouponCalculationServiceImpl.java Autowiredprivate CouponTemplateFactory couponProcessorFactory;// 优惠券结算// 这里通过Factory类决定使用哪个底层Rule底层规则对上层透明Overridepublic ShoppingCart calculateOrderPrice(RequestBody ShoppingCart cart) {log.info(calculate order price: {}, JSON.toJSONString(cart));RuleTemplate ruleTemplate couponProcessorFactory.getTemplate(cart);return ruleTemplate.calculate(cart);}
http://www.hkea.cn/news/14564603/

相关文章:

  • 学习网站建设要报班吗自己建的网站如何做海外推广
  • 单页网站有哪些青海省教育厅门户网站登录
  • 校园网站建设的重要性png免费素材网站
  • 前端一般模仿什么网站计算机网络技术网站开发
  • 移动端网站优秀案例泉州seo外包平台
  • 西安网站建设畅网网站 营销方案
  • 鲤城区建设局网站dw用设计视图做网站
  • 怎么制作网站主页西安企业网站制作价格
  • 河南建设网站信息查询中心平面设计学费多少钱
  • 网站更新方法网站开发实验报告可行性分析
  • 做网站备案成功后怎么办网站建设质量保证
  • 惠州网站制作费用lisp 网站开发
  • 素材分享网站源码网站公司怎么做业务
  • 触屏版网站源码中文域名网站有哪些
  • 做网站去哪里做好猪八戒网网站设计
  • 网站的实施方案wordpress调整时间
  • 新手建站广告联盟赚钱自己可以做网站服务器
  • 扬之云公司网站建设桂林户外论坛
  • 产品网站怎么做佛山网签查询系统
  • 做网站送给女友意义wordpress彩虹插件
  • 怀化火车站优化改造怎样登陆东莞建设网
  • 云南网站建设公司有哪些小程序模板平台哪家好
  • 美术馆网站建设要求长沙望城区发布最新通告
  • 商丘做网站张做网站被黑后怎么办
  • 宁波五金网站建设重庆有哪些地方
  • 网站空间备份去百度建网站
  • 网站域名个人备案查询网络架构拓扑图
  • 济南做网站优化wordpress替换字体颜色
  • 博客网站做外贸可以吗最低价网首页
  • 商丘手机网站建设跨境网络营销是什么