Maven
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<!--MyBatis-Plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
解决方案
Controller
/**
* 新建订单
* @return 订单详情
*/
@PostMapping("/submit")
public ResponseBean submitOrder(@RequestBody SubmitOrderDTO dto) {
User user = iUserService.getById(dto.getUid());
if (StringUtils.isEmpty(user.getAddress().trim())) {
//无收货地址
return ResponseBean.error(ResponseBeanMessage.NULL_ADDRESS_ERROR);
}
if (dto.getGoods().size() == 0) {
//购物车中无数据则跳转至错误页
return ResponseBean.error(ResponseBeanMessage.SHOPPING_ITEM_ERROR);
}
Order order = new Order();
order.setAmount(dto.getAmount());
order.setTotalnumber(String.valueOf(dto.getGoods().size()));
order.setStatus("未付款");
order.setAddress(user.getAddress()==null?dto.getAddress():user.getAddress());
order.setCustomerId(user.getId());
order.setEmployeeId(0);
order.setMessage(dto.getMessage());
order.setCreateTime(LocalDateTime.now());
order.setUpdateTime(LocalDateTime.now());
try{
//保存订单并返回订单号
return ResponseBean.success("订单编号",iOrderService.submitOrder(order,dto.getGoods()));
}catch (Exception e){
e.printStackTrace();
return ResponseBean.error(e.getMessage());
}
}
Service
/**
* 新建订单
* @param order 用户
* @param goods goods
* @return
*/
@Override
@Transactional
public Integer submitOrder(Order order, List<Integer> goods) {
BigDecimal priceTotal = new BigDecimal(0);
List<Goods> list = goodsMapper.selectBatchIds(goods);
for (Goods shop:list) {
//总价
priceTotal = priceTotal.add(shop.getGoodsPrice());
}
if (priceTotal.compareTo(new BigDecimal(0))<0) {
throw new RuntimeException(ResponseBeanMessage.ORDER_PRICE_ERROR);
}
order.setAmount(priceTotal.toString());
orderMapper.insert(order);
Integer id = order.getId();
for (Goods shop:list) {
OrderDetail detail = new OrderDetail();
detail.setOrderId(id);
detail.setGoodsId(shop.getId());
detail.setShoppingCartId(null);
detail.setDiscount("1");
detail.setTotalPrice(shop.getGoodsPrice());
detail.setMessage(order.getMessage());
detail.setSortNum((list.indexOf(shop)));
detail.setCreateTime(LocalDateTime.now());
detail.setUpdateTime(LocalDateTime.now());
orderDetailMapper.insert(detail);
}
return id;
}
参考文章