核销服务:优惠券与商品类型匹配疑惑

来源:2-2 赋值时自动拆箱出现空指针

qq_电耗子_0

2020-10-14

单优惠券商品类型匹配方法,要求商品类型与优惠券适用范围存在交集

protected boolean isGoodsTypeSatisfy(SettlementInfo settlement) {
        List<Integer> goodsType = settlement.getGoodsInfos()
                .stream().map(GoodsInfo::getType)
                .collect(Collectors.toList());
                
        List<Integer> templateGoodsType = JSON.parseObject(
                settlement.getCouponAndTemplateInfos().get(0).getTemplate()
                        .getRule().getUsage().getGoodsType(), List.class);

        //立减、折扣、满减执行器,存在交集即可
        return CollectionUtils.isNotEmpty(
                CollectionUtils.intersection(goodsType, templateGoodsType)
        );
    }

满减+折扣执行器重写改了return,改成要求差集为空

        //如果想要多个优惠券,则必须所有的商品类型必须包含在内,即差集为空
        //差集 subtract(param1,param2) 存在于param1不存在与param2的
        return CollectionUtils.isEmpty(CollectionUtils.subtract(
                goodsType, templateGoodsType
        ));

目前的优惠计算都是使用总额直接扣除优惠额度(立减、满减、折扣)
1、单优惠券执行器会不会出现十个商品十种类型只有一种满足优惠券适用范围,然后十个商品都可以享受折扣(总价*折扣)的情况,满减也可能出现类似情况。是否需要单独计算每个商品类型的金额再减免优惠券最后汇总付款额度。
2、在满减+折扣中使用差集会不会出现一个商品满足满减券,另一个满足折扣券的情况?
3、今天休假吗

写回答

1回答

张勤一

2020-10-14

电耗子(莫非你就是韭菜弟弟)同学你好:

    其实你这里提出的问题跟具体的代码实现是没有关系的,因为你这里的疑问就是“业务设计”的问题。那么,对于这些疑问应该怎么做呢?或者说到底应该怎么做业务设计呢?

    (1)模仿或者说学习别人,提到优惠券你应该可以想到京东、淘宝、滴滴、美团等等,它们都存在完善的优惠券设计,再或者,你直接看慕课网的优惠券设计,也是分类别使用的。有了产品设计,实现只是代码逻辑的事情,无非就是些 if、else 的判断,无他;

    (2)有了产品设计,剩下的就是实现了,关于实现,多看别人的代码,主要是代码设计,因为功能实现一般都是很简单的事。

    那么,可能你会说,作为一个程序员,有必要去搞产品设计吗?当然,在 PM 给出设计方案后,你得评估下这个设计的合理性,要不到时候一堆问题,找你修改实现。最终,受苦的还是你。

    最后,我近期不会休假,有很多事情和工作需要处理!不过,有问题,随时提出来,我会以最快的速度回复你!记住,有问题,找老勤!


    我是勤一,致力于将这门课程的问答区打造为 Java 知识体系知识库,Java 知识体系 BBS!共同建造、维护这门课程,我需要每一个你!

2
1
qq_电耗子_0
非常感谢!
2020-10-15
共1条回复

Java实操避坑指南 SpringBoot/MySQL/Redis错误详解

掌握业务开发中各种类型的坑,,Java web开发领域通用

452 学习 · 204 问题

查看课程