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

微企点做的网站百度搜得到吗石家庄seo网站管理

微企点做的网站百度搜得到吗,石家庄seo网站管理,物联网系统开发,想自己做网站吗一、计算逻辑的类结构图 在这张图里,顶层接口 RuleTemplate 定义了 calculate 方法,抽象模板类 AbstractRuleTemplate 将通用的模板计算逻辑在 calculate 方法中实现,同时它还定义了一个抽象方法 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为维度的总价统计Map<Long, 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,则shopTotalAmount=orderTotalAmount// 如果指定了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.ds6.com.cn/news/110986.html

相关文章:

  • wordpress admin head厦门seo怎么做
  • 做租房信息网站策划公司排行榜
  • 网站备案 法人变更数据分析工具
  • 双鸭山网站开发自己做网站难吗
  • 黄页88网客服电话网站搜索优化官网
  • 菏泽最好的网站建设公司电脑系统优化软件
  • 广州做贸易网站百度app下载官方免费最新版
  • 如何自己做免费网站今日军事新闻头条视频
  • 嘉兴企业网站模板建站百度收录查询api
  • 新网站怎么做排名新产品宣传推广策划方案
  • 衡水企业网站建设价格哪家培训机构好
  • 字体中国设计网百度优化
  • 在北京网站建设的岗位职责seo是什么味
  • wordpress耗内存搜索引擎优化案例分析
  • 个人兼职做建设网站学校教育培训机构
  • 中国建筑网官网登录平台广州网站运营专业乐云seo
  • 凡科做的网站好垃圾吴忠seo
  • 济南建站网站网站制作公司官网
  • 怎么做网站策划的模板上海百度推广优化
  • 阿里云网站地图是怎么做的网络流量分析工具
  • 应用网站制作搜索引擎排行榜
  • 湘潭网站开发莱芜seo
  • 万网的怎么做网站地图微信推广平台收费标准
  • 才做的网站怎么搜不到seo工作内容
  • 苏州网站建设师百度排名
  • 让iis做跳转网站c++培训班学费一般多少
  • 页面设计所遵循的原则有哪些厦门seo小谢
  • 网站编程开发中国培训网是国家公认的吗
  • 淘宝网站建设目标是什么意思网上做推广怎么收费
  • 网站横幅图片网站怎么优化关键词