无关风月
2025-08-25 48d3f1b77adea0609bb2453c7b4a660f2222871f
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
@@ -1,62 +1,63 @@
package com.ruoyi.order.controller;
import com.alibaba.fastjson2.JSON;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.common.core.constant.ExpressCompanyMap;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.WebUtils;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.order.dto.ConfirmOrderDTO;
import com.ruoyi.order.enums.OrderStatus;
import com.ruoyi.order.export.ChargeOrderExport;
import com.ruoyi.order.mapper.OrderMapper;
import com.ruoyi.order.model.ChargeOrder;
import com.ruoyi.order.model.Order;
import com.ruoyi.order.service.ChargeOrderService;
import com.ruoyi.order.service.OrderService;
import com.ruoyi.order.util.payment.model.RefundCallbackResult;
import com.ruoyi.order.util.payment.model.UniPayCallbackResult;
import com.ruoyi.order.util.payment.wechat.PayMoneyUtil;
import com.ruoyi.order.util.payment.wx.WechatPayService;
import com.ruoyi.order.util.payment.wx.vo.PayResult;
import com.ruoyi.order.util.vo.MapTrackKD100Vo;
import com.ruoyi.order.util.vo.ShopAnalysisVO;
import com.ruoyi.order.vo.*;
import com.ruoyi.other.api.domain.BaseSetting;
import com.ruoyi.other.api.domain.Goods;
import com.ruoyi.other.api.domain.Shop;
import com.ruoyi.other.api.dto.ShopAnalysisDTO;
import com.ruoyi.other.api.feignClient.BaseSettingClient;
import com.ruoyi.other.api.feignClient.ShopClient;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.feignClient.SysUserClient;
import com.ruoyi.system.api.model.LoginUser;
import io.swagger.annotations.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@@ -74,6 +75,8 @@
public class OrderController extends BaseController {
    @Resource
    private OrderService orderService;
    @Resource
    private ChargeOrderService chargeOrderService;
    @Resource
    private TokenService tokenService;
    @Resource
@@ -95,7 +98,7 @@
    @ResponseBody
    @PostMapping("/confirmOrder")
    @ApiOperation(value = "确定订单", tags = {"商城-订单-小程序"})
    @ApiOperation(value = "确定订单", tags = {"商城-订单-小程序-确定订单"})
    public R<ConfirmOrderVo> confirmOrder(@RequestBody ConfirmOrderDTO confirmOrderDTO) {
        ConfirmOrderVo confirmOrderVo = orderService.confirmOrder(confirmOrderDTO.getGoodId(),confirmOrderDTO.getType());
        return R.ok(confirmOrderVo);
@@ -103,7 +106,7 @@
    @ResponseBody
    @PostMapping("/orderPayment")
    @ApiOperation(value = "订单支付", tags = {"商城-订单支付-小程序"})
    @ApiOperation(value = "订单支付", tags = {"商城-订单支付-小程序-订单支付"})
    public R orderPayment(@RequestBody OrderPayment orderPayment){
        return orderService.orderPayment(orderPayment);
    }
@@ -142,12 +145,12 @@
    /**
     * 我的订单列表
     */
    @ApiOperation(value = "我的订单列表", tags = {"小程序-个人中心-我的订单"})
    @ApiOperation(value = "我的订单列表", tags = {"小程序-个人中心-我的订单-我的订单列表"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "订单状态", name = "status", required = true, dataType = "int"),
    })
    @GetMapping("/getMyOrderList")
    public TableDataInfo<OrderVO> getMyOrderList(@ApiParam("订单状态") Integer status) {
    public TableDataInfo<OrderVO> getMyOrderList(@RequestParam("status") Integer status) {
        startPage();
        LoginUser loginUserApplet = tokenService.getLoginUserApplet();
        return getDataTable(orderService.selectOrderListByUserId(status, loginUserApplet.getUserid()));
@@ -176,7 +179,7 @@
    /**
     * 扫码校验
     */
    @ApiOperation(value = "扫码校验", tags = {"小程序-个人中心-门店管理"})
    @ApiOperation(value = "扫码校验", tags = {"小程序-个人中心-门店管理-扫码校验"})
    @GetMapping("/check/{orderNumber}/{shopId}")
    public R<Boolean> check(@PathVariable("orderNumber") String orderNumber, @PathVariable("shopId") Integer shopId) {
        LoginUser loginUserApplet = tokenService.getLoginUserApplet();
@@ -188,25 +191,63 @@
    /**
     * 订单核销
     */
    @ApiOperation(value = "订单核销", tags = {"小程序-个人中心-门店管理"})
    @ApiOperation(value = "订单核销", tags = {"小程序-个人中心-门店管理-订单核销"})
    @GetMapping("/writeOff")
    public R<Void> writeOff(@ApiParam("id") String id, @ApiParam("shopId") Integer shopId) {
    public R<Void> writeOff(@RequestParam("id") String id, @RequestParam("shopId") Integer shopId) {
        orderService.writeOff(id, shopId);
        return R.ok();
    }
    @GetMapping("/getShopOrderList")
    @ApiOperation(value = "获取订单列表", tags = {"门店后台-订单管理", })
    public R<IPage<OrderPageListVo>> getShopOrderList(@ApiParam("模糊查询:订单编号/商品名/手机号 ") String content ,
                                                      @ApiParam("订单状态") Integer status,
                                                      @ApiParam("门店id") Integer shopId,
                                                      @ApiParam("页码") @RequestParam("pageNum") Integer pageNum,
                                                      @ApiParam("每一页数据大小") @RequestParam("pageSize") Integer pageSize) {
    @ApiOperation(value = "获取订单列表", tags = {"门店后台-订单管理-获取订单列表"})
    public R<IPage<OrderPageListVo>> getShopOrderList(@RequestParam("content") String content ,
                                                      @RequestParam("status") Integer status,
                                                      @RequestParam("shopId") Integer shopId,
                                                      @RequestParam("pageNum") Integer pageNum,
                                                      @RequestParam("pageSize") Integer pageSize) {
        return R.ok(orderService.getShopOrderList(content,status,shopId,pageNum,pageSize));
    }
    @PostMapping("/importExpress")
    @ApiOperation(value = "2.0新增导入订单", tags = {"门店后台-订单管理-2.0新增导入订单"})
    public R importExpress(@RequestParam("file") MultipartFile file) {
       /* JSONObject jsonObject = JSONObject.parseObject(url);
        String url2 = jsonObject.getString("url");*/
        if (file.isEmpty()) {
            return R.fail("请选择要上传的文件");
        }
        return orderService.importExpress(file);
    }
    @ApiOperation(value = "2.0订单导入模板下载", tags = {"门店后台-订单管理-2.0订单导入模板下载"})
    @GetMapping("/importOrder")
    public void importOrder() {
        List<OrderExport> orderExports = new ArrayList<>();
        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), OrderExport.class, orderExports);
        HttpServletResponse response = WebUtils.response();
        ServletOutputStream outputStream = null;
        try {
            String fileName = URLEncoder.encode("订单导入模板.xls", "utf-8");
            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
            response.setHeader("content-Type", "application/vnd.ms-excel");
            response.setHeader("Pragma", "no-cache");
            response.setHeader("Cache-Control", "no-cache");
            outputStream = response.getOutputStream();
            workbook.write(outputStream);
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("订单导入模板下载失败!");
        } finally {
            try {
                outputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    @PutMapping("/shopCancelOrder/{orderId}")
    @ApiOperation(value = "取消订单", tags = {"门店后台-订单管理"})
    @ApiOperation(value = "取消订单", tags = {"门店后台-订单管理-取消订单"})
    public R shopCancelOrder(@PathVariable("orderId") Long orderId) {
        return orderService.shopCancelOrder(orderId);
    }
@@ -216,7 +257,7 @@
    /**
     * 取消订单
     */
    @ApiOperation(value = "取消订单", tags = {"小程序-个人中心-我的订单"})
    @ApiOperation(value = "取消订单小程序", tags = {"小程序-个人中心-我的订单-取消订单小程序"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"),
    })
@@ -228,7 +269,7 @@
    /**
     * 确认收货
     */
    @ApiOperation(value = "确认收货", tags = {"小程序-个人中心-我的订单"})
    @ApiOperation(value = "确认收货", tags = {"小程序-个人中心-我的订单-确认收货"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"),
    })
@@ -256,7 +297,7 @@
    /**
     * 更新订单状态
     */
    @ApiOperation(value = "更新订单状态", tags = {"后台-订单管理"})
    @ApiOperation(value = "更新订单状态", tags = {"后台-订单管理-更新订单状态"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "订单对象", name = "order", required = true, dataType = "Order"),
    })
@@ -311,20 +352,20 @@
    @PutMapping("/cancelOrder/{orderId}")
    @ApiOperation(value = "取消订单操作", tags = {"后台-订单管理"})
    @ApiOperation(value = "取消订单操作", tags = {"后台-订单管理-取消订单操作"})
    public R cancelOrder(@PathVariable("orderId") Long orderId) {
        return orderService.cancelOrder(orderId);
    }
    @PutMapping("/receivingOperation/{orderId}")
    @ApiOperation(value = "收货操作", tags = {"管理后台-订单管理"})
    @ApiOperation(value = "收货操作", tags = {"管理后台-订单管理-收货操作"})
    public R receivingOperation(@PathVariable("orderId") Long orderId) {
        return orderService.receivingOperation(orderId);
    }
    @GetMapping("/getOrderInfo/{orderId}")
    @ApiOperation(value = "查询订单详情", tags = {"管理后台-订单管理"})
    @ApiOperation(value = "查询订单详情", tags = {"管理后台-订单管理-查询订单详情"})
    public R<OrderInfoVo> getOrderInfo(@PathVariable("orderId") Long orderId) {
        OrderInfoVo orderInfo = orderService.getOrderInfo(orderId);
        return R.ok(orderInfo);
@@ -332,8 +373,14 @@
    @GetMapping("/getOrderPageList")
    @ApiOperation(value = "获取订单列表", tags = {"后台-订单管理", })
//    @ApiOperation(value = "获取订单列表后台", tags = {"管理后台-订单管理-获取订单列表后台"})
    public R<PageInfo<OrderManagePageListVO>> getOrderPageList(OrderPageList orderPageList) {
        return R.ok(orderService.getOrderPageList(orderPageList));
    }
    @PostMapping("/queryOrderPageList")
    @ApiOperation(value = "获取订单列表后台", tags = {"管理后台-订单管理-获取订单列表后台"})
    public R<PageInfo<OrderManagePageListVO>> queryOrderPageList(@RequestBody OrderPageList orderPageList) {
        return R.ok(orderService.getOrderPageList(orderPageList));
    }
@@ -341,7 +388,7 @@
     * 订单统计
     */
 /*   @GetMapping("/getOrderStatistics")
    @ApiOperation(value = "订单统计", tags = {"管理后台-首页统计"})
    //@ApiOperation(value = "订单统计", tags = {"管理后台-首页统计"})
    public R<OrderStatistics> getOrderStatistics(@RequestParam("startTime") String startTime,
                                                 @RequestParam("endTime") String endTime) {
@@ -434,8 +481,17 @@
        }
    }
    /**
     * 获取商品销售数量
     *
     * @return
     */
    @PostMapping(value = "/getList")
    R<List<ChargeOrder>> getList(@RequestParam("siteId") Integer siteId) {
        List<ChargeOrder> list = chargeOrderService.lambdaQuery().eq(ChargeOrder::getPowerStationId, siteId).list();
        return R.ok(list);
    }
    /**
     * 获取商品销售数量
     *
@@ -501,7 +557,7 @@
     * @return
     *//*
    @GetMapping("/getOrderExpress/{id}")
    @ApiOperation(value = "获取订单快递明细", tags = {"小程序-订单管理"})
    //@ApiOperation(value = "获取订单快递明细", tags = {"小程序-订单管理"})
    public R<MapTrackKD100Vo> getOrderExpress(@PathVariable("id") Long id) {
        Order order = orderService.getById(id);
        String expressResult = order.getExpressResult();
@@ -620,7 +676,15 @@
                orderExport.setSupplierCostPrice(goods.getShopCost());*/
            }
        });
        List<Shop> data = shopClient.getAllShop().getData();
        // 转化为map
        Map<Integer, Shop> shopMap = data.stream().collect(Collectors.toMap(Shop::getId, shop -> shop));
        for (OrderExport orderExport : orderExportList) {
            Shop shop = shopMap.get(orderExport.getShopId());
            if (shop!=null){
                orderExport.setShopName(shop.getName());
            }
        }
        ExcelUtil<OrderExport> util = new ExcelUtil<OrderExport>(OrderExport.class);
        util.exportExcel(response, orderExportList, "订单数据");
    }