if (requestParams.getCouponId()!=null && totalFee>=10000){ CouponVo couponVo = couponClient.getById(requestParams.getCouponId(), userId); if (couponVo==null){ throw new HmallException("用户劵不存在或已失效"); } if (couponVo.getRuleType()==CST.COUPON_RULE_TYPE_DEDUCE){ order.setTotalFee(totalFee-couponVo.getAmount()); }else if (couponVo.getRuleType()==CST.COUPON_RULE_TYPE_DISCOUNT){ order.setTotalFee(calc(totalFee,couponVo.getAmount())); } }
时间: 2024-04-16 07:28:44 浏览: 192
根据你提供的代码,看起来你想根据特条件对订单的总费用进行优惠操作。在这段代码中,你首先判断了请求参数中的优惠券ID是否不为空,并且订单的总费用是否大于等于10000。如果满足这两个条件,就根据优惠券的规则对订单的总费用进行处理。
然而,你需要注意一些潜在的问题。在Java中,使用"=="操作符比较两个对象是否相等时,它比较的是对象的引用地址,而不是对象的值。对于引用类型,应该使用equals()方法来比较两个对象的值是否相等。
另外,你在代码中使用了calc()方法来计算优惠后的总费用,但是代码中没有提供calc()方法的实现。
以下是修改后的代码示例:
```java
if (requestParams.getCouponId() != null && totalFee >= 10000) {
CouponVo couponVo = couponClient.getById(requestParams.getCouponId(), userId);
if (couponVo == null) {
throw new HmallException("用户券不存在或已失效");
}
if (couponVo.getRuleType().equals(CST.COUPON_RULE_TYPE_DEDUCE)) {
order.setTotalFee(totalFee - couponVo.getAmount());
} else if (couponVo.getRuleType().equals(CST.COUPON_RULE_TYPE_DISCOUNT)) {
// 使用calc()方法计算优惠后的总费用
order.setTotalFee(calc(totalFee, couponVo.getAmount()));
}
}
```
请注意,你需要根据实际情况调整代码中的字段和方法。希望能对你有所帮助!如有更多问题,请继续提问。
阅读全文