@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 13:07:24 浏览: 51
这是一个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类型的形式返回。
相关问题
@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; }解析该段代码
这段代码是一个Spring MVC框架中的控制器方法,使用@GetMapping注解来映射HTTP GET请求,请求路径为"/getLessPress"。@ResponseBody注解表示返回值会被序列化成JSON格式,并作为HTTP响应的body部分返回。该方法的参数为ids和nums,分别表示商品ID和数量,通过逗号分隔。首先将ids和nums转换为字符串数组,然后遍历数组中的每个商品,根据商品ID获取商品信息,计算该商品的总金额,并将该商品加入到一个Map中,Map的key为活动ID,value为该活动下所有商品的总金额。接下来遍历Map中的每个活动,如果该活动的总金额达到了活动的阈值,则计算该活动的折扣金额,并将折扣金额累加到lessPrice中。最后根据折扣金额计算出折扣后的总金额并返回。
@GetMapping("/ok") public String ok(){ return "/ok"; }
这是一个 Java 的控制器方法,用于处理 GET 请求方式的 "/ok" 请求。具体来说,该方法使用了 @GetMapping("/ok") 注解,表示它可以处理 GET 请求方式的 "/ok" 请求。
方法的处理逻辑非常简单,只是返回一个名为 "/ok" 的视图,用于展示订单支付成功的页面。因为该方法的返回值是一个字符串,所以 Spring MVC 会自动将其解析为视图的名称,并在视图解析器中查找对应的视图进行渲染。
在实际应用中,该方法通常会执行一些具体的业务逻辑,例如更新订单状态、发送邮件通知、生成支付凭证等。这些操作可以根据具体的需求来进行实现,以实现订单支付成功后的相关操作。