如何在java代码里实现用户提交订单时展示优惠券时同类优惠券只展示一张
时间: 2023-06-01 22:03:10 浏览: 139
生成唯一优惠码程序,均不重复
可以采用Map来实现同类优惠券只展示一张的功能。具体实现步骤如下:
1. 定义一个Coupon类,包含优惠券的属性信息,如优惠券编号、优惠金额、优惠券类型等。
2. 在用户提交订单时,获取用户选择的商品信息,然后根据商品类型查询可用的优惠券列表。
3. 将查询出来的优惠券列表存入一个Map中,以优惠券类型为key,优惠券对象为value。如果同一个类型的优惠券已经存在于Map中,则不再添加。
4. 将Map中的优惠券列表展示给用户,让用户选择可用的优惠券。
下面是一份示例代码:
```
public class Coupon {
private String couponCode;
private double discount;
private String couponType;
// getters and setters
}
public class Order {
private List<Product> products;
private Map<String, Coupon> coupons;
public void addProduct(Product product) {
products.add(product);
}
public void addCoupon(Coupon coupon) {
if (coupons.containsKey(coupon.getCouponType())) {
return; // 如果已存在同类型的优惠券,则不再添加
}
coupons.put(coupon.getCouponType(), coupon);
}
public Map<String, Coupon> getAvailableCoupons() {
Map<String, Coupon> availableCoupons = new HashMap<>();
for (Product product : products) {
String productType = product.getProductType();
List<Coupon> couponsForProduct = CouponService.getCouponsByProductType(productType);
for (Coupon coupon : couponsForProduct) {
if (!coupons.containsKey(coupon.getCouponType())) {
availableCoupons.put(coupon.getCouponType(), coupon);
}
}
}
return availableCoupons;
}
}
public class CouponService {
private static List<Coupon> coupons = new ArrayList<>();
public static List<Coupon> getCouponsByProductType(String productType) {
List<Coupon> result = new ArrayList<>();
for (Coupon coupon : coupons) {
if (coupon.getCouponType().equals(productType)) {
result.add(coupon);
}
}
return result;
}
}
public class Main {
public static void main(String[] args) {
Order order = new Order();
order.addProduct(new Product("001", "手机", "电子产品"));
order.addProduct(new Product("002", "电视", "家电"));
Coupon coupon1 = new Coupon("1001", 50.0, "电子产品");
Coupon coupon2 = new Coupon("1002", 30.0, "电子产品");
Coupon coupon3 = new Coupon("1003", 20.0, "家电");
Coupon coupon4 = new Coupon("1004", 10.0, "家电");
CouponService.coupons.add(coupon1);
CouponService.coupons.add(coupon2);
CouponService.coupons.add(coupon3);
CouponService.coupons.add(coupon4);
Map<String, Coupon> availableCoupons = order.getAvailableCoupons();
for (Coupon coupon : availableCoupons.values()) {
System.out.println("优惠券编号:" + coupon.getCouponCode() + ",优惠金额:" + coupon.getDiscount());
}
}
}
```
阅读全文