重构实战-1.原则:有boolean的if else 可将if 和 else 封装为方法。2. 查看传入的Bean用了哪些数据,是否可减少数据。

本文介绍了一种复杂的保险费用计算及分润处理方法,包括如何根据历史数据和当前退款情况来调整保险费和分润的具体算法。通过具体的代码实现,展示了不同场景下保险费用的计算逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何梳理和重构_含复杂性度量

最终效果:   // 计算保险费并生成保险费域的FeeShareBenefitBO
        FeeShareBenefitBO fee = null;
        if (shareBenefitHistory == null) {
            shareBenefitLogger.debug(LogUtil.f("shareBenefitHistory:{},", JsonUtil.toJson(shareBenefitHistory)));
            //部分历史数据没有shareBenefitHistory
            fee = calcFeeShareBenefitBO(refundFeeBo, shareBenefitHistory);
        } else {
            fee = calcFeeShareBenefitBO(originalPay, shareBenefitResultOld, refundFeeBo);
        }

最初效果:

long calcRefundInsure = calcRefundInsure(refundFeeBo, getPayTotoalRemoveRisk(prRefOriginalPay),
                shareBenefitRule);


        FeeShareBenefitBO fee = new FeeShareBenefitBO();


        long shared = 0;
        long tipShared = 0;
        long insureFromCShared = 0;
        long insureFromTipShared = 0;
        long refundInsure = 0;
        if (shareBenefitHistory != null) {
            //1.计算普通退款中保险费要退多少
            if (refundFeeBo.getShared() > shareBenefitHistory.getTotalCommonShare()) {
                //退款比之前分润的大,保险费要退
                insureFromCShared = refundFeeBo.getShared() - shareBenefitHistory.getTotalCommonShare();
                shared = shareBenefitHistory.getTotalCommonShare();
            } else {
                shared = refundFeeBo.getShared();
            }
            //2.计算小费退款中保险费要退多少
            if (refundFeeBo.getTipShared() > shareBenefitHistory.getTotalTipShare()) {
                //退款比之前分润的大,保险费要退
                insureFromTipShared = refundFeeBo.getTipShared() - shareBenefitHistory.getTotalTipShare();
                tipShared = shareBenefitHistory.getTotalTipShare();
            } else {
                tipShared = refundFeeBo.getTipShared();
            }
            refundInsure = insureFromCShared + insureFromTipShared;
            // refundInsure+tipShared+shared=最初订单域的小费+普通分润总额


        } else {

long calcRefundInsure = calcRefundInsure(refundFeeBo, getPayTotoalRemoveRisk(prRefOriginalPay),
                shareBenefitRule);


            long refundInsureLeft = 0;
            if (refundFeeBo.getShared() > calcRefundInsure) {
                refundInsureLeft = 0;
                shared = refundFeeBo.getShared() - calcRefundInsure;
            } else {
                shared = 0;
                refundInsureLeft = calcRefundInsure - refundFeeBo.getShared();
            }
            tipShared = refundFeeBo.getTipShared() - refundInsureLeft;
            refundInsure = calcRefundInsure;
            // refundInsure+tipShared+shared=最初订单域的小费+普通分润总额
        }


        fee.setCommonShared(shared);
        fee.setInsure(refundInsure);
        fee.setTipShared(tipShared);
        fee.setUnshared(refundFeeBo.getUnshared());
        return fee;
    }

ShareBenefitHistoryDO shareBenefitHistory = shareBenefitHistoryService.getShareBenefitHistory(prRefOriginalPay
            .getPayId());

 private FeeShareBenefitBO calacFeeShareBenefitBO(FeeBO refundFeeBo, ShareBenefitHistoryDO shareBenefitHistory,

                                                     long calcRefundInsure) {
        FeeShareBenefitBO fee = new FeeShareBenefitBO();


        long shared = 0;
        long tipShared = 0;
        long insureFromCShared = 0;
        long insureFromTipShared = 0;
        long refundInsure = 0;
        if (shareBenefitHistory != null) {
            //1.计算普通退款中保险费要退多少
            if (refundFeeBo.getShared() > shareBenefitHistory.getTotalCommonShare()) {
                //退款比之前分润的大,保险费要退
                insureFromCShared = refundFeeBo.getShared() - shareBenefitHistory.getTotalCommonShare();
                shared = shareBenefitHistory.getTotalCommonShare();
            } else {
                shared = refundFeeBo.getShared();
            }
            //2.计算小费退款中保险费要退多少
            if (refundFeeBo.getTipShared() > shareBenefitHistory.getTotalTipShare()) {
                //退款比之前分润的大,保险费要退
                insureFromTipShared = refundFeeBo.getTipShared() - shareBenefitHistory.getTotalTipShare();
                tipShared = shareBenefitHistory.getTotalTipShare();
            } else {
                tipShared = refundFeeBo.getTipShared();
            }
            refundInsure = insureFromCShared + insureFromTipShared;
            // refundInsure+tipShared+shared=最初订单域的小费+普通分润总额


        } else {
            long refundInsureLeft = 0;
            if (refundFeeBo.getShared() > calcRefundInsure) {
                refundInsureLeft = 0;
                shared = refundFeeBo.getShared() - calcRefundInsure;
            } else {
                shared = 0;
                refundInsureLeft = calcRefundInsure - refundFeeBo.getShared();
            }
            tipShared = refundFeeBo.getTipShared() - refundInsureLeft;
            refundInsure = calcRefundInsure;
            // refundInsure+tipShared+shared=最初订单域的小费+普通分润总额
        }


        fee.setCommonShared(shared);
        fee.setInsure(refundInsure);
        fee.setTipShared(tipShared);
        fee.setUnshared(refundFeeBo.getUnshared());
        return fee;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值