package pers.szq.takeout.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.transaction.annotation.Transactional;
import pers.szq.takeout.common.BaseContext;
import pers.szq.takeout.common.CustomException;
import pers.szq.takeout.dto.OrdersDto;
import pers.szq.takeout.entity.*;
import pers.szq.takeout.service.*;
import pers.szq.takeout.mapper.OrderMapper;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
/**
* @author szq
* @description 针对表orders的数据库操作Service实现
* @createDate 2023-04-21 01:06:02
*/
@Service
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Orders>
implements OrderService{
@Autowired
private ShoppingCartService shoppingCartService;
@Autowired
private UserService userService;
@Autowired
private AddressBookService addressBookService;
@Autowired
private OrderDetailService orderDetailService;
@Override
@Transactional(rollbackFor = Exception.class)
public void submit(Orders orders) {
// 获取当前用户id
Long userId = BaseContext.getCurrentId();
// 查询当前用户购物车
LambdaQueryWrapper<ShoppingCart> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ShoppingCart::getUserId, userId);
List<ShoppingCart> shoppingCartList = shoppingCartService.list(queryWrapper);
if (shoppingCartList == null || shoppingCartList.size() == 0) {
throw new CustomException("购物车为空, 不能下单");
}
// 查询用户信息
User user = userService.getById(userId);
// 查询地址信息
Long addressBookId = orders.getAddressBookId();
AddressBook addressBook = addressBookService.getById(addressBookId);
if (addressBook == null) {
throw new CustomException("用户地址信息有误, 不能下单");
}
// 插入数据到orders表
long orderId = IdWorker.getId();
AtomicInteger amount = new AtomicInteger(0);
List<OrderDetail> orderDetailList = shoppingCartList.stream().map(shoppingCart -> {
OrderDetail orderDetail = new OrderDetail();
orderDetail.setName(shoppingCart.getName());
orderDetail.setImage(shoppingCart.getName());
orderDetail.setOrderId(orderId);
orderDetail.setDishId(shoppingCart.getDishId());
orderDetail.setSetmealId(shoppingCart.getSetmealId());
orderDetail.setDishFlavor(shoppingCart.getDishFlavor());
orderDetail.setNumber(shoppingCart.getNumber());
orderDetail.setAmount(shoppingCart.getAmount());
amount.addAndGet(shoppingCart.getAmount()
.multiply(new BigDecimal(shoppingCart.getNumber())).intValue());
return orderDetail;
}).collect(Collectors.toList());
orders.setId(orderId);
orders.setNumber(String.valueOf(orderId));
orders.setStatus(2);
orders.setUserId(userId);
orders.setOrderTime(LocalDateTime.now());
orders.setCheckoutTime(LocalDateTime.now());
orders.setAmount(new BigDecimal(amount.get()));
orders.setPhone(addressBook.getPhone());
orders.setUserName(user.getName());
orders.setConsignee(addressBook.getConsignee());
orders.setAddress((addressBook.getProvinceName() == null ? "" : addressBook.getProvinceName())
+ (addressBook.getCityName() == null ? "" : addressBook.getCityName())
+ (addressBook.getDistrictName() == null ? "" : addressBook.getDistrictName())
+ (addressBook.getDetail() == null ? "" : addressBook.getDetail()));
this.save(orders);
// 插入数据到order_detail表
orderDetailService.saveBatch(orderDetailList);
// 清空购物车数据
shoppingCartService.remove(queryWrapper);
}
@Override
public Page<OrdersDto> pageList(Integer page, Integer pageSize, String number,
LocalDateTime beginTime, LocalDateTime endTime) {
// 设置分页参数
Page<Orders> p = new Page<>(page, pageSize);
LambdaQueryWrapper<Orders> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(number != null, Orders::getNumber, number)
.gt(beginTime != null, Orders::getOrderTime, beginTime)
.lt(endTime != null, Orders::getOrderTime, endTime)
.orderByDesc(Orders::getOrderTime);
Page<Orders> ordersPage = this.page(p, queryWrapper);
// 对象拷贝
Page<OrdersDto> ordersDtoPage = new Page<>();
BeanUtils.copyProperties(ordersPage, ordersDtoPage, "records");
List<OrdersDto> ordersDtoList = p.getRecords().stream().map(item -> {
OrdersDto ordersDto = new OrdersDto();
BeanUtils.copyProperties(item, ordersDto);
Long orderId = item.getId();
LambdaQueryWrapper<OrderDetail> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(orderId != null, OrderDetail::getOrderId, orderId);
List<OrderDetail> orderDetailList = orderDetailService.list(wrapper);
ordersDto.setOrderDetails(orderDetailList);
return ordersDto;
}).collect(Collectors.toList());
ordersDtoPage.setRecords(ordersDtoList);
return ordersDtoPage;
}
@Override
public void updateStatus(Orders orders) {
LambdaUpdateWrapper<Orders> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(Orders::getId, orders.getId())
.set(orders.getStatus() != null, Orders::getStatus, orders.getStatus());
this.update(updateWrapper);
}
@Override
public Page<OrdersDto> pageHistory(Integer page, Integer pageSize) {
// 获取用户id
Long userId = BaseContext.getCurrentId();
// 设置分页参数
Page<Orders> p = new Page<>(page, pageSize);
LambdaQueryWrapper<Orders> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(userId != null, Orders::getUserId, userId)
.orderByDesc(Orders::getOrderTime);
Page<Orders> ordersPage = this.page(p, queryWrapper);
// 对象拷贝
Page<OrdersDto> ordersDtoPage = new Page<>();
BeanUtils.copyProperties(ordersPage, ordersDtoPage, "records");
List<OrdersDto> ordersDtoList = p.getRecords().stream().map(item -> {
OrdersDto ordersDto = new OrdersDto();
BeanUtils.copyProperties(item, ordersDto);
Long orderId = item.getId();
LambdaQueryWrapper<OrderDetail> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(orderId != null, OrderDetail::getOrderId, orderId);
List<OrderDetail> orderDetailList = orderDetailService.list(wrapper);
ordersDto.setOrderDetails(orderDetailList);
return ordersDto;
}).collect(Collectors.toList());
ordersDtoPage.setRecords(ordersDtoList);
return ordersDtoPage;
}
@Override
public void again(Orders orders) {
//查询订单的详情数据
LambdaQueryWrapper<OrderDetail> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(OrderDetail::getOrderId,orders.getId());
List<OrderDetail> detail
没有合适的资源?快使用搜索试试~ 我知道了~
基于SpringBoot+Vue的外卖订餐管理系统源码+数据库(高分毕业设计).zip
共192个文件
java:73个
png:30个
js:21个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 4 下载量 106 浏览量
2023-06-11
16:38:03
上传
评论 1
收藏 26.55MB ZIP 举报
温馨提示
基于SpringBoot+Vue的外卖订餐管理系统源码+数据库(高分毕业设计).zip 高分毕业设计项目,代码完整下载可用,纯手打高分毕业设计,也可作为期末大作业和课程设计,小白也可实战。 基于SpringBoot+Vue的外卖订餐管理系统源码+数据库(高分毕业设计).zip 高分毕业设计项目,代码完整下载可用,纯手打高分毕业设计,也可作为期末大作业和课程设计,小白也可实战。基于SpringBoot+Vue的外卖订餐管理系统源码+数据库(高分毕业设计).zip 高分毕业设计项目,代码完整下载可用,纯手打高分毕业设计,也可作为期末大作业和课程设计,小白也可实战。基于SpringBoot+Vue的外卖订餐管理系统源码+数据库(高分毕业设计).zip 高分毕业设计项目,代码完整下载可用,纯手打高分毕业设计,也可作为期末大作业和课程设计,小白也可实战。基于SpringBoot+Vue的外卖订餐管理系统源码+数据库(高分毕业设计).zip 高分毕业设计项目,代码完整下载可用,纯手打高分毕业设计,也可作为期末大作业和课程设计,小白也可实战。基于SpringBoot+Vue的外卖订餐管理系统源码
资源推荐
资源详情
资源评论
收起资源包目录
基于SpringBoot+Vue的外卖订餐管理系统源码+数据库(高分毕业设计).zip (192个子文件)
common.css 275KB
index.css 227KB
vant.min.css 141KB
main.css 17KB
add-order.css 6KB
index.css 6KB
user.css 4KB
page.css 4KB
address.css 3KB
address-edit.css 3KB
order.css 3KB
login.css 2KB
index.css 2KB
pay-success.css 2KB
login.css 2KB
no-wifi.css 1KB
iconfont.css 733B
.gitignore 436B
index.html 23KB
add.html 23KB
add.html 17KB
list.html 9KB
add-order.html 9KB
list.html 9KB
list.html 9KB
list.html 9KB
user.html 8KB
address-edit.html 8KB
add.html 7KB
order.html 7KB
index.html 7KB
list.html 6KB
address.html 5KB
login.html 4KB
login.html 4KB
pay-success.html 3KB
no-wifi.html 2KB
upload.html 2KB
favicon.ico 469B
favico.ico 469B
OrderServiceImpl.java 8KB
SetmealServiceImpl.java 8KB
DishServiceImpl.java 8KB
ShoppingCartServiceImpl.java 4KB
SetmealController.java 4KB
LoginCheckFilter.java 4KB
AliOssUtils.java 3KB
DishController.java 3KB
EmployeeServiceImpl.java 3KB
WebMvcConfig.java 3KB
AddressBookController.java 3KB
OrderController.java 3KB
EmployeeController.java 3KB
CategoryServiceImpl.java 3KB
UserServiceImpl.java 3KB
JacksonObjectMapper.java 3KB
CategoryController.java 2KB
AddressBookServiceImpl.java 2KB
ShoppingCartController.java 2KB
CommonController.java 2KB
AddressBook.java 2KB
UserController.java 2KB
SetmealService.java 2KB
DishService.java 2KB
Orders.java 1KB
Dish.java 1KB
SMSUtils.java 1KB
Setmeal.java 1KB
SetmealDish.java 1KB
ValidateCodeUtils.java 1KB
MyMetaObjectHandler.java 1KB
GlobalExceptionHandler.java 1KB
Employee.java 1KB
EmployeeService.java 1KB
OrderService.java 1KB
DishFlavor.java 1KB
ShoppingCart.java 1KB
Category.java 1KB
Result.java 1KB
OrderDetail.java 1KB
RedisConfig.java 1KB
User.java 896B
CategoryService.java 876B
ShoppingCartService.java 869B
AddressBookService.java 833B
MyBatisPlusConfig.java 810B
DishDto.java 712B
SetmealDto.java 631B
UserService.java 614B
TakeoutApplication.java 592B
OrderDetailController.java 578B
BaseContext.java 572B
SetmealDishServiceImpl.java 564B
OrderDetailServiceImpl.java 564B
DishFlavorServiceImpl.java 556B
OrdersDto.java 549B
AliOssProperties.java 531B
ShoppingCartMapper.java 432B
AddressBookMapper.java 426B
SetmealDishMapper.java 426B
共 192 条
- 1
- 2
资源评论
- 买女孩的小火柴3882024-01-09资源内容详尽,对我有使用价值,谢谢资源主的分享。
- 仰观宇宙2023-10-21内容与描述一致,超赞的资源,值得借鉴的内容很多,支持!
- 罗小猫的猫2023-09-13这个资源对我启发很大,受益匪浅,学到了很多,谢谢分享~
盈梓的博客
- 粉丝: 6871
- 资源: 1251
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功