From 6432a0c004476c3c52ec19d02e83f3c9aca88588 Mon Sep 17 00:00:00 2001 From: "liang.chao" <1360241448@qq.com> Date: Tue, 26 Nov 2024 17:52:44 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=AD=E7=89=A9=E8=BD=A6=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E5=92=8C=E8=AE=A2=E5=8D=95=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/controller/OrderController.java | 51 ++++++++ .../material/order/domain/OrderDetailDto.java | 53 ++++++++ .../material/order/domain/OrderInfoDto.java | 82 ++++++++++++ .../material/order/mapper/OrderMapper.java | 27 ++++ .../material/order/service/OrderService.java | 17 +++ .../order/service/impl/OrderServiceImpl.java | 78 ++++++++++++ .../mapper/material/order/OrderInfoMapper.xml | 120 ++++++++++++++++++ 7 files changed, 428 insertions(+) create mode 100644 bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/controller/OrderController.java create mode 100644 bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderDetailDto.java create mode 100644 bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderInfoDto.java create mode 100644 bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/mapper/OrderMapper.java create mode 100644 bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/OrderService.java create mode 100644 bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java create mode 100644 bonus-modules/bonus-material-mall/src/main/resources/mapper/material/order/OrderInfoMapper.xml diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/controller/OrderController.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/controller/OrderController.java new file mode 100644 index 0000000..138a569 --- /dev/null +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/controller/OrderController.java @@ -0,0 +1,51 @@ +package com.bonus.material.order.controller; + +import com.bonus.common.core.web.controller.BaseController; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.material.book.domain.BookCarInfoDto; +import com.bonus.material.order.domain.OrderDetailDto; +import com.bonus.material.order.domain.OrderInfoDto; +import com.bonus.material.order.service.OrderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author:liang.chao + * @Date:2024/11/26 - 10:04 + */ + +@Api(value = "订单模块", tags = {"订单模块"}) +@RestController +@RequestMapping("/order") +public class OrderController extends BaseController { + + @Resource + private OrderService orderService; + + /** + * 提交预约车到订单 + */ + @ApiOperation(value = "提交预约车到订单") + @PostMapping("/submitBookCar") + public AjaxResult submitBookCar(@RequestBody OrderInfoDto orderInfoDto) { + Integer i = orderService.submitOrderInfo(orderInfoDto); + if (i > 0) { + return success("下单成功"); + } else { + return error("下单失败"); + } + } + + /** + * 提交预约车到订单 + */ + @ApiOperation(value = "获取订单详情") + @GetMapping("/getOrderDetails") + public AjaxResult getOrderDetails(OrderInfoDto orderInfoDto) { + return AjaxResult.success(orderService.getOrderDetails(orderInfoDto)); + } +} diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderDetailDto.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderDetailDto.java new file mode 100644 index 0000000..56f8dd6 --- /dev/null +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderDetailDto.java @@ -0,0 +1,53 @@ +package com.bonus.material.order.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Author:liang.chao + * @Date:2024/11/26 - 10:28 + */ +@Data +public class OrderDetailDto { + + @ApiModelProperty(value = "主键id") + private Integer id; + + @ApiModelProperty(value = "订单id") + private Integer orderId; + + @ApiModelProperty(value = "设备id") + private Integer maId; + + @ApiModelProperty(value = "租期开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date rentBeginTime; + + @ApiModelProperty(value = "租期结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date rentEndTime; + + @ApiModelProperty(value = "天数") + private String days; + + @ApiModelProperty(value = "数量") + private Integer num; + + @ApiModelProperty(value = "总金额") + private BigDecimal costs; + + @ApiModelProperty(value = "设备类型(0:编码 1:数量)") + private String manageType; + + @ApiModelProperty(value = "创建日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + + @ApiModelProperty(value = "修改日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date updateTime; +} diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderInfoDto.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderInfoDto.java new file mode 100644 index 0000000..c957bf5 --- /dev/null +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderInfoDto.java @@ -0,0 +1,82 @@ +package com.bonus.material.order.domain; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * @Author:liang.chao + * @Date:2024/11/26 - 10:28 + */ +@Data +public class OrderInfoDto { + @ApiModelProperty(value = "主键id") + private Integer orderId; + + @ApiModelProperty(value = "父id(续租原订单)") + private Integer pId; + + @ApiModelProperty(value = "订单编号") + private String code; + + @ApiModelProperty(value = "订单日期") + private Date orderTime; + + @ApiModelProperty(value = "开始日期") + private Date startTime; + + @ApiModelProperty(value = "结束日期") + private Date endTime; + + @ApiModelProperty(value = "订单金额") + private BigDecimal cost; + + @ApiModelProperty(value = " 订单状态") + private String orderStatus; + + @ApiModelProperty(value = " 装备名称") + private String deviceName; + + @ApiModelProperty(value = "下单地址") + private String address; + + @ApiModelProperty(value = "下单用户id") + private Long orderUser; + + @ApiModelProperty(value = "创建人") + private Long creater; + + @ApiModelProperty(value = "创建日期") + private Date createTime; + + @ApiModelProperty(value = "修改人") + private Long updater; + + @ApiModelProperty(value = "修改日期") + private Date updateTime; + + private List detailsList; + + @ApiModelProperty(value = "承租方公司名称") + private String companyName; + + @ApiModelProperty(value = "出租方公司名称") + private String czcompanyName; + + @ApiModelProperty(value = "出租方联系电话") + private String personPhone; + + @ApiModelProperty(value = "承租方联系电话") + private String phoneNumber; + + @ApiModelProperty(value = "租金区间字段") + private BigDecimal lowerBound; + + private BigDecimal upperBound; + + private String ids; + +} diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/mapper/OrderMapper.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/mapper/OrderMapper.java new file mode 100644 index 0000000..309958c --- /dev/null +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/mapper/OrderMapper.java @@ -0,0 +1,27 @@ +package com.bonus.material.order.mapper; + +import com.bonus.material.device.domain.DevInfo; +import com.bonus.material.order.domain.OrderDetailDto; +import com.bonus.material.order.domain.OrderInfoDto; + +import java.util.List; + +/** + * @Author:liang.chao + * @Date:2024/11/26 - 10:36 + */ +public interface OrderMapper { + Integer insertOrderInfo(OrderInfoDto orderInfoDto); + + Integer insertOrderDetail(OrderDetailDto orderDetailDto); + + DevInfo getdeviceCount(OrderDetailDto orderDetailDto); + + Integer updateDeviceStatus(OrderDetailDto orderDetailDto); + + List getOrderDetails(OrderInfoDto orderInfoDto); + + OrderDetailDto selectOrderDetailsById(String id); + + void updateMaStatus(OrderDetailDto orderDetailDto); +} diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/OrderService.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/OrderService.java new file mode 100644 index 0000000..ae43828 --- /dev/null +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/OrderService.java @@ -0,0 +1,17 @@ +package com.bonus.material.order.service; + +import com.bonus.material.order.domain.OrderDetailDto; +import com.bonus.material.order.domain.OrderInfoDto; + +import java.util.List; + +/** + * @Author:liang.chao + * @Date:2024/11/26 - 10:34 + */ +public interface OrderService { + + Integer submitOrderInfo(OrderInfoDto orderInfoDto); + + List getOrderDetails(OrderInfoDto orderInfoDto); +} diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java new file mode 100644 index 0000000..d836b79 --- /dev/null +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java @@ -0,0 +1,78 @@ +package com.bonus.material.order.service.impl; + +import com.bonus.common.security.utils.SecurityUtils; +import com.bonus.material.device.domain.DevInfo; +import com.bonus.material.order.domain.OrderDetailDto; +import com.bonus.material.order.domain.OrderInfoDto; +import com.bonus.material.order.mapper.OrderMapper; +import com.bonus.material.order.service.OrderService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Author:liang.chao + * @Date:2024/11/26 - 10:34 + */ + +@Service +public class OrderServiceImpl implements OrderService { + + @Resource + private OrderMapper orderMapper; + + @Override + @Transactional + public Integer submitOrderInfo(OrderInfoDto orderInfoDto) { + // 首先判断库存是否足够 + List orderDetailDtos = orderInfoDto.getDetailsList(); + for (OrderDetailDto orderDetailDto : orderDetailDtos) { + // 如果是数量设备 ,改库存 + if ("1".equals(orderDetailDto.getManageType())) { + // 先查询库存是否足够 + DevInfo devInfo = orderMapper.getdeviceCount(orderDetailDto); + if (devInfo.getDeviceCount() < orderDetailDto.getNum()) { + throw new RuntimeException(devInfo.getDeviceName() + "库存不足"); + } + } else { + //如果是编码设备,改设备状态为在租 + orderMapper.updateDeviceStatus(orderDetailDto); + } + // 更改购物车状态为已下单 + orderMapper.updateMaStatus(orderDetailDto); + } + //生成订单信息 + String code = "D" + System.currentTimeMillis(); + orderInfoDto.setOrderStatus("2"); + orderInfoDto.setCode(code); + Long userid = SecurityUtils.getLoginUser().getUserid(); + orderInfoDto.setOrderUser(userid); + orderInfoDto.setCreater(userid); + Integer i = orderMapper.insertOrderInfo(orderInfoDto); + if (i > 0) { + for (OrderDetailDto orderDetailDto : orderDetailDtos) { + orderDetailDto.setOrderId(orderInfoDto.getOrderId()); + orderMapper.insertOrderDetail(orderDetailDto); + } + } + return i; + } + + @Override + public List getOrderDetails(OrderInfoDto orderInfoDto) { + List list = new ArrayList(); + List orderInfoDtos = orderMapper.getOrderDetails(orderInfoDto); + for (OrderInfoDto dto : orderInfoDtos) { + String ids = dto.getIds(); + for (String id : ids.split(",")) { + OrderDetailDto orderDetailDto = orderMapper.selectOrderDetailsById(id); + list.add(orderDetailDto); + } + dto.setDetailsList(list); + } + return orderInfoDtos; + } +} diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/order/OrderInfoMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/order/OrderInfoMapper.xml new file mode 100644 index 0000000..2a6b53f --- /dev/null +++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/order/OrderInfoMapper.xml @@ -0,0 +1,120 @@ + + + + + + insert into ma_order_info (code, order_time, cost, order_status, order_user, address, creater, create_time) + values + (#{code}, now(), #{cost}, #{orderStatus}, #{orderUser}, #{address}, #{creater}, now()) + + + INSERT INTO `ma_order_details` ( + `order_id`, + `ma_id`, + `rent_begin_time`, + `rent_end_time`, + `days`, + `num`, + `costs`, + `create_time`, + `update_time` + ) VALUES ( + #{orderId}, + #{maId}, + #{rentBeginTime}, + #{rentEndTime}, + #{days}, + #{num}, + #{costs}, + now(), + #{updateTime}) + + + update ma_dev_info set ma_status = 3 where ma_id = #{maId} and is_active = 1 + + + update book_car_detail set order_status = 1 where id = #{id} + + + + + \ No newline at end of file