package com.gxyan.service.impl;
import com.github.pagehelper.PageHelper;
import com.gxyan.common.Const;
import com.gxyan.common.ServerResponse;
import com.gxyan.dao.CarMapper;
import com.gxyan.dao.OrderDetailsMapper;
import com.gxyan.dao.OrderMapper;
import com.gxyan.pojo.Order;
import com.gxyan.pojo.OrderDetails;
import com.gxyan.service.IOrderService;
import com.gxyan.vo.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Random;
import java.util.UUID;
/**
* @author gxyan
* @date 2019/1/3 13:05
*/
@Slf4j
@Service
public class OrderServiceImpl implements IOrderService {
@Autowired
private CarMapper carMapper;
@Autowired
private OrderMapper orderMapper;
@Autowired
private OrderDetailsMapper detailsMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public ServerResponse addOrder(OrderVo orderVo) {
log.info(orderVo.toString());
Order order = new Order();
Long orderId = createOrderId();
order.setId(orderId);
order.setCustomerId(orderVo.getCustomerId());
order.setEmployeeId(orderVo.getEmployeeId());
order.setStatus(orderVo.getStatus());
order.setTotalPrice(orderVo.getTotalPrice());
int result = orderMapper.insert(order);
if (result == 0) {
// 手动回滚
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ServerResponse.createByErrorMessage("添加订单失败");
}
if (orderVo.getStatus().equals(Const.Number.ONE)) {
result = orderMapper.updatePayTimeByPrimaryKey(orderId);
if (result == 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ServerResponse.createByErrorMessage("添加订单失败");
}
}
for (OrderDetailVo detailVo: orderVo.getDetailVos()) {
OrderDetails orderDetails = new OrderDetails();
orderDetails.setId(createOrderDetailsId());
orderDetails.setCarId(detailVo.getCarId());
int num = detailVo.getCarNumber();
orderDetails.setCarNumber(num);
orderDetails.setOrderId(orderId);
result = detailsMapper.insert(orderDetails);
if (result == 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ServerResponse.createByErrorMessage("添加订单失败");
}
int repertory = carMapper.selectRepertoryByPrimaryKey(detailVo.getCarId());
num = repertory - num;
if (num >= 0){
result = carMapper.updateRepertoryByPrimaryKey(detailVo.getCarId(), num);
if (result == 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ServerResponse.createByErrorMessage("添加订单失败");
}
} else {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ServerResponse.createByErrorMessage("库存不足,添加订单失败");
}
}
return ServerResponse.createBySuccess();
}
@Override
public ServerResponse getList(OrderQuery orderQuery) {
List<OrderList> list = PageHelper.startPage(orderQuery.getPage(), orderQuery.getLimit()).doSelectPage(()-> orderMapper.selectSale(orderQuery));
if (list != null) {
for (OrderList orderList: list) {
List<Details> details = detailsMapper.selectDetailsByOrderId(orderList.getOrderId());
orderList.setDetails(details);
}
ListVo listVo = new ListVo();
listVo.setItems(list);
listVo.setTotal(PageHelper.count(()->orderMapper.selectSale(orderQuery)));
return ServerResponse.createBySuccess(listVo);
}
return ServerResponse.createByErrorMessage("获取订单列表失败");
}
@Override
@Transactional(rollbackFor = Exception.class)
public ServerResponse update(Long orderId, String status) {
int result = orderMapper.updateStatusByPrimaryKey(orderId, status);
if (result == 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ServerResponse.createByErrorMessage("更新订单失败");
}
if (status.equals(Const.Number.ONE)) {
// status=1,支付订单,更新支付时间
result = orderMapper.updatePayTimeByPrimaryKey(orderId);
if (result == 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ServerResponse.createByErrorMessage("更新订单失败");
}
} else if (status.equals(Const.Number.TWO)) {
// status=2,取消订单,车辆回库
List <OrderDetails> details = detailsMapper.selectByOrderId(orderId);
for (OrderDetails orderDetails: details) {
result = carMapper.addRepertoryByPrimaryKey(orderDetails.getCarId(), orderDetails.getCarNumber());
if (result == 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ServerResponse.createByErrorMessage("更新订单失败");
}
}
}
return ServerResponse.createBySuccess();
}
@Override
@Transactional(rollbackFor = Exception.class)
public ServerResponse updateDetail(OrderDetails orderDetails) {
OrderDetails oldDetails = detailsMapper.selectByPrimaryKey(orderDetails.getId());
int result = carMapper.addRepertoryByPrimaryKey(oldDetails.getCarId(), oldDetails.getCarNumber());
if (result == 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ServerResponse.createByErrorMessage("更新失败");
}
int num = carMapper.selectRepertoryByPrimaryKey(orderDetails.getCarId()) - orderDetails.getCarNumber();
if (num >= 0){
result = carMapper.updateRepertoryByPrimaryKey(orderDetails.getCarId(), num);
if (result == 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ServerResponse.createByErrorMessage("添加订单失败");
}
} else {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ServerResponse.createByErrorMessage("库存不足,添加订单失败");
}
result = detailsMapper.updateByPrimaryKey(orderDetails);
if (result == 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ServerResponse.createByErrorMessage("更新失败");
}
BigDecimal oldPrice = carMapper.selectSalePriceByPrimaryKey(oldDetails.getCarId()).multiply(BigDecimal.valueOf(oldDetails.getCarNumber()));
BigDecimal newPrice = carMapper.selectSalePriceByPrimaryKey(orderDetails.getCarId()).multiply(BigDecimal.valueOf(orderDetails.getCarNumber()));
result = orderMapper.addTotalPriceByPrimaryKey(orderDetails.getOrderId(), newPrice.subtract(oldPrice));
if (result == 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ServerResponse.createByErrorMessage("更新失败");
}
return ServerResponse.createBySuccess();
}
@Overri
没有合适的资源?快使用搜索试试~ 我知道了~
springboot+vue汽车销售统制系统(含数据库文件)
共618个文件
js:115个
xml:102个
gif:63个
需积分: 10 4 下载量 95 浏览量
2022-09-28
09:03:19
上传
评论 1
收藏 4.21MB ZIP 举报
温馨提示
springboot+vue项目,汽车销售统制系统(含数据库文件)
资源详情
资源评论
资源推荐
收起资源包目录
springboot+vue汽车销售统制系统(含数据库文件) (618个子文件)
.babelrc 313B
OrderServiceImpl.class 11KB
StoreServiceImpl.class 7KB
OrderList.class 7KB
Details.class 6KB
EmployeeServiceImpl.class 6KB
DetailsList.class 5KB
DetailsQuery.class 5KB
CustomerServiceImpl.class 5KB
UserController.class 4KB
EmployeeQuery.class 4KB
InitServiceImpl.class 4KB
ServerResponse.class 4KB
Employee.class 4KB
OrderQuery.class 4KB
OrderVo.class 4KB
CustomerQuery.class 4KB
Car.class 4KB
StoreList.class 3KB
Order.class 3KB
ChartServiceImpl.class 3KB
SalesChart.class 3KB
StoreQuery.class 3KB
StoreController.class 2KB
Customer.class 2KB
OrderMapperTest.class 2KB
OrderController.class 2KB
OrderDetailVo.class 2KB
IndexSales.class 2KB
ChartController.class 2KB
EmpChart.class 2KB
ListVo.class 2KB
OrderDetails.class 2KB
UserServiceImpl.class 2KB
OrderDetailsMapper.class 2KB
Series.class 2KB
CustomerController.class 2KB
ResponseCode.class 2KB
InitController.class 1KB
CarMapperTest.class 1KB
EmployeeController.class 1KB
CORSConfig.class 1KB
Brand.class 1KB
OrderMapper.class 1KB
SeriesTree.class 1KB
CarMapper.class 1KB
EmployeeMapper.class 1KB
EmployeeMapperTest.class 1KB
OrderServiceImplTest.class 934B
SeriesMapper.class 921B
CarsaleApplication.class 809B
IOrderService.class 799B
CustomerMapper.class 780B
IStoreService.class 736B
IEmployeeService.class 692B
BrandMapper.class 689B
IChartService.class 664B
IInitService.class 606B
Const.class 434B
ICustomerService.class 404B
IUserService.class 390B
Const$Number.class 308B
index.css 414KB
chunk-libs.9adc5ec3.css 205KB
chunk-libs.9adc5ec3.css 205KB
skin.min.css 42KB
skin.min.css 42KB
skin.min.css 42KB
app.6448790f.css 13KB
app.6448790f.css 13KB
visualblocks.css 5KB
visualblocks.css 5KB
visualblocks.css 5KB
chunk-343b.4102efdc.css 5KB
chunk-343b.4102efdc.css 5KB
chunk-cdc7.a00cce64.css 4KB
chunk-cdc7.a00cce64.css 4KB
content.min.css 4KB
content.min.css 4KB
content.min.css 4KB
content.inline.min.css 3KB
content.inline.min.css 3KB
content.inline.min.css 3KB
prism.css 2KB
prism.css 2KB
prism.css 2KB
chunk-04bd.4df66e48.css 2KB
chunk-04bd.4df66e48.css 2KB
waves.css 825B
chunk-720a.784534d9.css 763B
chunk-30e8.784534d9.css 763B
chunk-1e34.784534d9.css 763B
chunk-10c4.c3874ac2.css 763B
chunk-7ac7.c3874ac2.css 763B
chunk-1e34.784534d9.css 763B
chunk-30e8.784534d9.css 763B
chunk-720a.784534d9.css 763B
chunk-7ac7.c3874ac2.css 763B
chunk-10c4.c3874ac2.css 763B
chunk-4de4.65ff90d7.css 745B
共 618 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
拾月拾
- 粉丝: 10
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 杨辉三角(Pascal's Triangle)是一个在数学中非常著名的数列,它以一种特定的模式排列数字,内容以5种代码实例实现
- yolov5数据集:CT图像肾脏、结石检测(2类别,包含训练集、验证集)
- 电力102规约请求报文实录
- RTL8723 linux+安卓驱动 2020版本
- ISO 26262 道路车辆-功能安全-系统级产品开发
- 数据挖掘期末题 选择填空简答
- EKF在CTRV模型上的建模推导
- 用于:https://laoshifu.blog.csdn.net/article/details/138191428 多层创建
- 电力102规约(电能累计量的传输规约)培训
- 「常用」E9外部流程接口
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0