/** * 创建订单 */ @RequestMapping("/order/create") @ResponseBody public JsonResult createOrder( @RequestParam("houseId") Long houseId, @RequestParam("endDate") String endDateStr) { if (getLoginUser() == null) {//用户未登录 return JsonResult.error("用户未登录"); } House house = houseService.get(houseId); if (house == null) { //房子不存在 return JsonResult.error("房子不存在"); } if (Objects.equals(house.getStatus(), HouseStatusEnum.HAS_RENT.getValue())) { return JsonResult.error("房子已租出或未释放"); } //是否出游有效的订单范围 Order checkOrser = orderService.getCurrentEffectiveOrder(houseId); if (checkOrser != null) { return JsonResult.error("房子已租出或未释放"); } User ownerUser = userService.get(house.getUserId()); if (ownerUser == null) { return JsonResult.error("房东用户不存在"); } // 计算总共多少天 Integer dayNum = DateUtil.daysBetween(startDate, endDate); if (dayNum < Constant.MIN_RENT_DAYS) { return JsonResult.error("最少租住" + Constant.MIN_RENT_DAYS + "天"); } //创建订单 Order order = new Order(); order.setCreateTime(new Date()); order.setCustomerUserId(getLoginUserId()); order.setOwnerUserId(house.getUserId()); order.setHouseId(houseId); order.setStatus(OrderStatusEnum.NOT_PAY.getValue()); order.setMonthRent(house.getMonthRent()); order.setDayNum(dayNum); order.setTotalAmount(house.getMonthRent() / 30 * dayNum); order.setStartDate(startDate); order.setEndDate(endDate); orderService.insert(order); return JsonResult.success("订单创建成功,支付订单", order.getId()); }
时间: 2024-01-29 19:03:32 浏览: 34
这是一个 Java SpringMVC 框架的控制器方法,用于创建订单。该方法接收两个参数:houseId 表示房子的 ID,endDateStr 表示租房的结束日期。该方法返回一个 JsonResult 对象,包含订单创建的结果和信息。
首先,该方法判断用户是否登录。如果用户未登录,则返回一个错误提示信息。接着,从 houseService 中获取 house 对象,如果该对象为空,则返回一个错误提示信息。如果房子的状态为已租出或未释放,则返回一个错误提示信息。然后,调用 orderService.getCurrentEffectiveOrder() 方法,查询是否有有效的订单存在。如果存在,则返回一个错误提示信息。
接下来,从 userService 中获取 ownerUser 对象,如果该对象为空,则返回一个错误提示信息。然后,计算租房的天数,如果天数小于最小租住天数,则返回一个错误提示信息。
最后,创建一个 Order 对象,设置订单相关属性,调用 orderService.insert() 方法,将订单保存到数据库中。最后,返回一个成功的 JsonResult 对象,包含订单创建成功的提示信息和订单 ID。
相关问题
@requestmapping /**
@RequestMapping注解是Spring MVC框架中的一个注解,用于将HTTP请求映射到控制器的处理方法上。
在引用和引用中,@RequestMapping注解被用于指定处理请求的URL路径和请求方法。例如,@RequestMapping(value="/editItem", method=RequestMethod.GET)表示当收到GET请求且路径为"/editItem"时,会调用相应的处理方法。
引用提供了一些使用@RequestMapping注解的示例。在这些示例中,@RequestMapping注解用于指定处理请求的URL路径和请求方法。例如,@RequestMapping(value="/hello", method=RequestMethod.GET)表示当收到GET请求且路径为"/hello"时,会调用hello()方法。
此外,@RequestMapping注解还可以用于指定多个URL路径和多个请求方法,以及其他参数,例如请求的媒体类型等。
总结起来,@RequestMapping注解是用于将HTTP请求映射到控制器的处理方法上的注解。它通过指定URL路径和请求方法来匹配请求,并调用相应的处理方法来处理请求。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [@RequestMapping 用法详解](https://blog.csdn.net/weixin_40009737/article/details/80810918)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [RequestMapping 使用教程](https://blog.csdn.net/xsj_blog/article/details/83150755)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
@RequestMapping("/shbz/*")
@RequestMapping("/shbz/*") 是Spring MVC框架中的一个注解,用于配置HTTP请求映射到特定的控制器方法。这个注解通常放在控制器方法上,`/shbz/*` 表示该方法将处理URL路径以"/shbz"开头,后面可以跟任意数量的路径参数(星号(*)代表匹配零个或多个字符)。
具体来说:
1. **"/shbz/"**: 定义了一个路由前缀,当访问像"/shbz"、"/shbz/home"、"/shbz/product"这样的URL时,Spring MVC会尝试找到匹配的方法执行。
2. **"*"**: 通配符,表示方法可以处理任何在"/shbz"路径之后的剩余部分,这使得方法可以接受动态的路径信息作为参数。
举个例子,如果有个方法定义如下:
```java
@GetMapping("/shbz/{product}")
public String showProductDetails(@PathVariable String product) {
// ...
}
```
当用户访问"/shbz/apple"或"/shbz/banana"时,`showProductDetails` 方法会被调用,`product` 参数会被设置为相应的值。