JAVA全系列 教程
3762个小节阅读:7095k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
xxxxxxxxxx
public interface ITOrderService extends IService<TOrder> {
/**
* 创建订单
* @return
*/
String createOrder(Integer productId,Integer count);
}
xxxxxxxxxx
package com.itbaizhan.lock.service.impl;
import com.itbaizhan.lock.entity.OrderItem;
import com.itbaizhan.lock.entity.Product;
import com.itbaizhan.lock.entity.TOrder;
import com.itbaizhan.lock.mapper.OrderItemMapper;
import com.itbaizhan.lock.mapper.ProductMapper;
import com.itbaizhan.lock.mapper.TOrderMapper;
import com.itbaizhan.lock.service.ITOrderService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.concurrent.locks.ReentrantLock;
/**
* <p>
* 服务实现类
* </p>
*
* @author itbaizhan
* @since 05-25
*/
@Service
public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> implements ITOrderService {
@Resource
OrderItemMapper orderItemMapper;
@Resource
ProductMapper productMapper;
/**
* 创建订单
* @return
*/
@Transactional(rollbackFor = Exception.class)
@Override
public String createOrder(Integer productId,Integer count) {
// 1、根据商品id查询商品信息
Product product = productMapper.selectById(productId);
// 2、判断商品是否存在
if (product == null){
throw new RuntimeException("购买商品不存在:" + productId + "不存在");
}
// 3、校验库存
if( count > product.getCount() ){
throw new RuntimeException("商品" + productId + "仅剩" + product.getCount() + "件,无法购买");
}
// 4、计算库存
Integer leftCount = product.getCount() - count;
// 5、更新库存
product.setCount(leftCount);
productMapper.updateById(product);
// 6、 创建订单
TOrder order = new TOrder();
order.setOrderStatus(1);//待处理
order.setReceiverName("张三");
order.setReceiverMobile("18587781068");
order.setOrderAmount(product.getPrice().multiply(new BigDecimal(count)));//订单价格
baseMapper.insert(order);
// 7、 创建订单和商品关系数据
OrderItem orderItem = new OrderItem();
orderItem.setOrderId(order.getId());
orderItem.setProduceId(product.getId());
orderItem.setPurchasePrice(product.getPrice());
orderItem.setPurchaseNum(count);
orderItemMapper.insert(orderItem);
return order.getId();
}
}
xxxxxxxxxx
@RestController
@RequestMapping("/order")
public class OrderController {
@Autowired
private ITOrderService iOrderService;
/**
* 创建订单
* @param productId 商品id
* @param count 商品数量
* @return
*/
@PostMapping("/create")
public String createOrder(Integer productId,Integer count){
return iOrderService.createOrder(productId,count);
}
}