@GetMapping ("/getLessPress") @ResponseBody public Object get(String ids,String nums){ String[] idArr = ids.split(","); String[] numArr = nums.split(","); Double price=0.00; Map<String,Double>map=new HashMap<>(); for (int i=0;i<idArr.length;i++){ String s = idArr[i]; String num = numArr[i]; Goods goods = goodsService.getGoodsById(s); String tprice = goods.getPrice(); Double c = new Double(tprice); double v = c * Integer.valueOf(num);//该商品的总金额 price+=v; String eventid = goods.getEventid(); if (StringUtils.isNotEmpty(eventid)){ if (!map.containsKey(eventid)){ map.put(eventid,v); }else { Double aDouble = map.get(eventid); map.put(eventid,aDouble+v); } } } final Double[] lessPrice = {0.00}; map.forEach((s, aDouble) -> { SaleEvent one = eventService.getById(s); Double total = one.getGeTotal(); if (aDouble>=total){ lessPrice[0] +=one.getLessPrice(); } }); double r=0.00; if (lessPrice[0]>0){ r = price - lessPrice[0];//折扣后的总金额 }else { return price; } r = Double.parseDouble(String.format("%.2f",r)); return r; }解析该代码
时间: 2023-06-19 11:07:24 浏览: 93
spring cloud feign不支持@RequestBody+ RequestMethod.GET报错的解决方法
5星 · 资源好评率100%
这是一个Java Spring Boot的控制器方法,使用了@GetMapping和@ResponseBody注解。
该方法接受两个参数ids和nums,分别是商品ID和商品数量,使用逗号分隔。
接着,该方法对每个商品进行处理,计算出每个商品的总金额,并将其加入到总金额price中,同时将每个商品对应的活动ID加入到map中,如果该活动ID已经存在于map中,则将该商品的总金额加入到map中对应的value中。
接下来,遍历map,对于每个活动ID,获取其对应的SaleEvent对象,计算出该活动所需的总金额total,如果该商品的总金额大于等于total,则将该活动的折扣价格lessPrice加入到总折扣价格lessPrice[0]中。
最后,如果总折扣价格大于0,则将总金额减去总折扣价格得到折扣后的总金额r,否则直接返回总金额price。最后将折扣后的总金额以Object类型的形式返回。
阅读全文