/*
* Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.
*
* https://www.mall4j.com/
*
* 未经允许,不可做商业用途!
*
* 版权所有,侵权必究!
*/
package com.yami.shop.admin.controller;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.IORuntimeException;
import cn.hutool.core.io.IoUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.base.Objects;
import com.yami.shop.bean.enums.OrderStatus;
import com.yami.shop.bean.model.Order;
import com.yami.shop.bean.model.OrderItem;
import com.yami.shop.bean.model.UserAddrOrder;
import com.yami.shop.bean.param.DeliveryOrderParam;
import com.yami.shop.bean.param.OrderParam;
import com.yami.shop.common.exception.YamiShopBindException;
import com.yami.shop.common.response.ServerResponseEntity;
import com.yami.shop.common.util.PageParam;
import com.yami.shop.security.admin.util.SecurityUtils;
import com.yami.shop.service.*;
import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Sheet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* @author lgh on 2018/09/15.
*/
@Slf4j
@RestController
@RequestMapping("/order/order")
public class OrderController {
@Autowired
private OrderService orderService;
@Autowired
private OrderItemService orderItemService;
@Autowired
private UserAddrOrderService userAddrOrderService;
@Autowired
private ProductService productService;
@Autowired
private SkuService skuService;
/**
* 分页获取
*/
@GetMapping("/page")
@PreAuthorize("@pms.hasPermission('order:order:page')")
public ServerResponseEntity<IPage<Order>> page(OrderParam orderParam,PageParam<Order> page) {
Long shopId = SecurityUtils.getSysUser().getShopId();
orderParam.setShopId(shopId);
IPage<Order> orderPage = orderService.pageOrdersDetailByOrderParam(page, orderParam);
return ServerResponseEntity.success(orderPage);
}
/**
* 获取信息
*/
@GetMapping("/orderInfo/{orderNumber}")
@PreAuthorize("@pms.hasPermission('order:order:info')")
public ServerResponseEntity<Order> info(@PathVariable("orderNumber") String orderNumber) {
Long shopId = SecurityUtils.getSysUser().getShopId();
Order order = orderService.getOrderByOrderNumber(orderNumber);
if (!Objects.equal(shopId, order.getShopId())) {
throw new YamiShopBindException("您没有权限获取该订单信息");
}
List<OrderItem> orderItems = orderItemService.getOrderItemsByOrderNumber(orderNumber);
order.setOrderItems(orderItems);
UserAddrOrder userAddrOrder = userAddrOrderService.getById(order.getAddrOrderId());
order.setUserAddrOrder(userAddrOrder);
return ServerResponseEntity.success(order);
}
/**
* 预约
*/
@PutMapping("/delivery")
@PreAuthorize("@pms.hasPermission('order:order:delivery')")
public ServerResponseEntity<Void> delivery(@RequestBody DeliveryOrderParam deliveryOrderParam) {
Long shopId = SecurityUtils.getSysUser().getShopId();
Order order = orderService.getOrderByOrderNumber(deliveryOrderParam.getOrderNumber());
if (!Objects.equal(shopId, order.getShopId())) {
throw new YamiShopBindException("您没有权限修改该订单信息");
}
Order orderParam = new Order();
orderParam.setOrderId(order.getOrderId());
orderParam.setDvyId(deliveryOrderParam.getDvyId());
orderParam.setDvyFlowId(deliveryOrderParam.getDvyFlowId());
orderParam.setDvyTime(new Date());
orderParam.setStatus(OrderStatus.CONSIGNMENT.value());
orderParam.setUserId(order.getUserId());
orderService.delivery(orderParam);
List<OrderItem> orderItems = orderItemService.getOrderItemsByOrderNumber(deliveryOrderParam.getOrderNumber());
for (OrderItem orderItem : orderItems) {
productService.removeProductCacheByProdId(orderItem.getProdId());
skuService.removeSkuCacheBySkuId(orderItem.getSkuId(),orderItem.getProdId());
}
return ServerResponseEntity.success();
}
/**
* 打印待预约的订单表
*
* @param order
* @param consignmentName 发件人姓名
* @param consignmentMobile 预约人手机号
* @param consignmentAddr 预约地址
*/
@GetMapping("/waitingConsignmentExcel")
@PreAuthorize("@pms.hasPermission('order:order:waitingConsignmentExcel')")
public void waitingConsignmentExcel(Order order, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime,
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime, String consignmentName, String consignmentMobile,
String consignmentAddr, HttpServletResponse response) {
Long shopId = SecurityUtils.getSysUser().getShopId();
order.setShopId(shopId);
order.setStatus(OrderStatus.PADYED.value());
List<Order> orders = orderService.listOrdersDetailByOrder(order, startTime, endTime);
//通过工具类创建writer
ExcelWriter writer = ExcelUtil.getBigWriter();
Sheet sheet = writer.getSheet();
sheet.setColumnWidth(0, 20 * 256);
sheet.setColumnWidth(1, 20 * 256);
sheet.setColumnWidth(2, 20 * 256);
sheet.setColumnWidth(3, 60 * 256);
sheet.setColumnWidth(4, 60 * 256);
sheet.setColumnWidth(7, 60 * 256);
sheet.setColumnWidth(8, 60 * 256);
sheet.setColumnWidth(9, 60 * 256);
// 待预约
String[] hearder = {"订单编号", "收件人", "手机", "收货地址", "商品名称", "数量", "发件人姓名", "发件人手机号", "预约地址", "备注"};
writer.merge(hearder.length - 1, "预约信息整理");
writer.writeRow(Arrays.asList(hearder));
int row = 1;
for (Order dbOrder : orders) {
UserAddrOrder addr = dbOrder.getUserAddrOrder();
String addrInfo = addr.getProvince() + addr.getCity() + addr.getArea() + addr.getAddr();
List<OrderItem> orderItems = dbOrder.getOrderItems();
row++;
for (OrderItem orderItem : orderItems) {
// 第0列开始
int col = 0;
writer.writeCellValue(col++, row, dbOrder.getOrderNumber());
writer.writeCellValue(col++, row, addr.getReceiver());
writer.writeCellValue(col++, row, addr.getMobile());
writer.writeCellValue(col++, row, addrInfo);
writer.writeCellValue(col++, row, orderItem.getProdName());
writer.writeCellValue(col++, row, orderItem.getProdCount());
writer.writeCellValue(col++, row, consignmentName);
writer.writeCellValue(col++, row, consignmentMobile);
writer.writeCellValue(col++, row, consignmentAddr);
writer.writeCellValue(col++, row, dbOrder.getRemarks());
}
}
writeExcel(response, writer);
}
/**
* 已销售订单
*
* @param order
*/
@GetMapping("/soldExcel")
@PreAuthorize("@pms.hasPermission('order:order:soldExcel')")
public void soldExcel(Order order, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime,
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本项目为基于Java和Vue等技术的mall商城改造平台设计源码,包含865个文件,涵盖385个Java源文件、82个Vue组件、58个SVG图标、57个XML配置文件、42个JavaScript脚本、32个SCSS样式文件、11个JPG图片、8个JSON配置文件、8个YAML配置文件,以及若干其他格式文件。该平台致力于重构现有mall商城,提供高效、现代化的购物体验。
资源推荐
资源详情
资源评论
收起资源包目录
基于Java、Vue等技术的mall商城改造平台设计源码 (864个子文件)
com.anji.captcha.service.CaptchaCacheService 67B
.eslintrc.cjs 2KB
.eslintrc.cjs 2KB
nginx.conf 612B
nginx.conf 377B
app.css 2KB
.env.development 521B
.env.development 330B
Dockerfile 362B
Dockerfile 357B
Dockerfile 98B
Dockerfile 90B
.editorconfig 146B
.editorconfig 145B
.eslintignore 214B
.eslintignore 135B
.gitignore 561B
.gitignore 312B
.gitignore 307B
index.html 682B
index.html 510B
favicon.ico 66KB
OrderController.java 12KB
ShopCartController.java 11KB
SubmitOrderListener.java 11KB
MyOrderController.java 9KB
ProductController.java 8KB
BasketServiceImpl.java 8KB
OrderController.java 8KB
SysUserController.java 7KB
ProductServiceImpl.java 7KB
TokenStore.java 7KB
TransportServiceImpl.java 6KB
AddrController.java 6KB
SmsLogServiceImpl.java 6KB
OrderServiceImpl.java 6KB
TransportManagerServiceImpl.java 6KB
RedisCacheConfig.java 6KB
SysMenuController.java 6KB
ProdController.java 5KB
ServerResponseEntity.java 5KB
ShopDetailController.java 5KB
AdminLoginController.java 5KB
CategoryController.java 5KB
AreaController.java 5KB
CategoryServiceImpl.java 5KB
UserCollectionController.java 5KB
RedisUtil.java 5KB
ProdTagController.java 4KB
ShopDetailParam.java 4KB
SpecController.java 4KB
PayServiceImpl.java 4KB
IndexImgController.java 4KB
UserRegisterController.java 4KB
AuthFilter.java 4KB
MessageController.java 4KB
Arith.java 4KB
NoticeController.java 4KB
UserController.java 4KB
SearchController.java 4KB
OrderMapper.java 4KB
ProdPropServiceImpl.java 4KB
TransportController.java 4KB
ProdCommController.java 4KB
ConfirmOrderListener.java 3KB
LoginController.java 3KB
ProductMapper.java 3KB
SysRoleController.java 3KB
DefaultExceptionHandlerConfig.java 3KB
ProdCommController.java 3KB
SmsType.java 3KB
Order.java 3KB
HotSearchController.java 3KB
ProdTagReferenceController.java 3KB
AttachFileServiceImpl.java 3KB
AttributeController.java 3KB
BrandController.java 3KB
PickAddrController.java 3KB
Json.java 3KB
SysConfigController.java 3KB
BasketService.java 3KB
UserAddrController.java 3KB
OrderTask.java 3KB
AddrParam.java 3KB
HttpHandler.java 3KB
OrderService.java 3KB
ShopDetailServiceImpl.java 3KB
OrderRefund.java 3KB
XxlJobConfig.java 3KB
ShopDetail.java 3KB
CaptchaConfig.java 3KB
ProductService.java 3KB
ProductDto.java 3KB
SysMenuServiceImpl.java 3KB
ProdComm.java 3KB
Product.java 2KB
NoticeController.java 2KB
PageParam.java 2KB
SysUserServiceImpl.java 2KB
IdUtil.java 2KB
共 864 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论
wjs2024
- 粉丝: 1738
- 资源: 4947
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 电力系统风储联合一次调频MATLAB仿真模型 四机两区系统,采用频域模型法使得风电渗透率25%,附加惯性控制,储能附加下垂控制
- 基于Java Socket和I/O多路复用的高并发即时通信系统设计源码
- 基于Java技术的小说阅读后台服务源码设计
- 基于Python的代码生成器设计源码
- 基于Java语言的数码项目设计源码分享
- 基于Java开发的职工工作状态与效率监管系统设计源码
- O3DE需要Windows 10 64位版本1809或更高版本,至少2.5 GHz的Intel或AMD处理器,至少8 GB内存
- 基于HTML、JavaScript、CSS、Java技术的CRM系统设计源码
- 升级版Matlab基于A*算法的多agv路径规划仿真系统,地图自定义导入,改进A*算法平滑了路径,系统可输出路径长度,每个时间的
- 光伏储能三相PQ恒功率并网控制仿真(附参考文献及文档) ①网侧:采用PQ恒功率控制 参考文献《-微电网及其逆变器控制技术的研究》
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功