liujie
2026-03-15 dc5b73b77494c2016146d399c55d7193b56d285e
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCouponController.java
@@ -99,20 +99,28 @@
            }
        }
        // 优先用满足条件且抵扣金额最大的
        List<XpAppUserCoupon> discountUserCoupons = couponList.stream().filter(e -> e.getCouponType() == 1).sorted(Comparator.comparing(XpAppUserCoupon::getMoney).reversed()).collect(Collectors.toList());
        if(!discountUserCoupons.isEmpty()){
            userCouponVo.setId(discountUserCoupons.get(0).getId());
            userCouponVo.setMoney(discountUserCoupons.get(0).getMoney().doubleValue());
        if(dto.getUserCouponId()!=null){
            XpAppUserCoupon coupon = couponList.get(0);
            userCouponVo.setId(coupon.getId());
            userCouponVo.setMoney(coupon.getMoney().doubleValue());
            return R.ok(userCouponVo);
        }else {
            // 优先用满足条件且抵扣金额最大的
            List<XpAppUserCoupon> discountUserCoupons = couponList.stream().filter(e -> e.getCouponType() == 1).sorted(Comparator.comparing(XpAppUserCoupon::getMoney).reversed()).collect(Collectors.toList());
            if(!discountUserCoupons.isEmpty()){
                userCouponVo.setId(discountUserCoupons.get(0).getId());
                userCouponVo.setMoney(discountUserCoupons.get(0).getMoney().doubleValue());
                return R.ok(userCouponVo);
            }
            List<XpAppUserCoupon> fullUserCoupons = couponList.stream().filter(e -> e.getCouponType() == 2 && e.getFullMoney().doubleValue()>dto.getTotalAmount()).sorted(Comparator.comparing(XpAppUserCoupon::getMoney).reversed()).collect(Collectors.toList());
            if(!fullUserCoupons.isEmpty()){
                userCouponVo.setId(fullUserCoupons.get(0).getId());
                userCouponVo.setMoney(fullUserCoupons.get(0).getMoney().doubleValue());
                return R.ok(userCouponVo);
            }
            return R.ok(userCouponVo);
        }
        List<XpAppUserCoupon> fullUserCoupons = couponList.stream().filter(e -> e.getCouponType() == 2 && e.getFullMoney().doubleValue()>dto.getTotalAmount()).sorted(Comparator.comparing(XpAppUserCoupon::getMoney).reversed()).collect(Collectors.toList());
        if(!fullUserCoupons.isEmpty()){
            userCouponVo.setId(fullUserCoupons.get(0).getId());
            userCouponVo.setMoney(fullUserCoupons.get(0).getMoney().doubleValue());
            return R.ok(userCouponVo);
        }
        return R.ok(userCouponVo);
    }
    @PostMapping("/inner/appUserCoupon/useUserCoupon")
    public R<BigDecimal> useUserCoupon(@RequestBody UseUserCouponDto dto) {