无关风月
2025-08-05 2134c13b7b2815983281fdc819e3138ffde1bc48
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
@@ -20,10 +20,15 @@
import com.ruoyi.order.enums.OrderStatus;
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.*;
@@ -36,10 +41,14 @@
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 org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@@ -69,6 +78,8 @@
    @Resource
    private OrderService orderService;
    @Resource
    private ChargeOrderService chargeOrderService;
    @Resource
    private TokenService tokenService;
    @Resource
    private BaseSettingClient baseSettingClient;
@@ -81,7 +92,10 @@
    @Resource
    private ShopClient shopClient;
    @Resource
    private PayMoneyUtil payMoneyUtil;
    @Resource
    private WechatPayService wechatPayService;
    @ResponseBody
@@ -103,12 +117,19 @@
     * 订单支付回调通知
     */
    @ResponseBody
    @GetMapping("/orderPaymentCallback")
    public void orderPaymentCallback(UniPayCallbackResult uniPayCallbackResult, HttpServletResponse response){
        String jsonString = JSONObject.toJSONString(uniPayCallbackResult);
    @PostMapping("/orderPaymentCallback")
    public void orderPaymentCallback(HttpServletRequest request, HttpServletResponse response){
//        String jsonString = JSONObject.toJSONString(uniPayCallbackResult);
        System.err.println("1111111111111");
        PayResult  payResult= null;
        try {
            payResult = wechatPayService.processNotify(request);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        System.out.println("1111111111111111111111");
        System.out.println(jsonString);
        R callback = orderService.orderPaymentCallback(uniPayCallbackResult);
//        System.out.println(jsonString);
        R callback = orderService.orderPaymentCallback(payResult);
        if(callback.getCode() == 200){
            response.setStatus(200);
            PrintWriter out = null;
@@ -161,14 +182,11 @@
     * 扫码校验
     */
    @ApiOperation(value = "扫码校验", tags = {"小程序-个人中心-门店管理"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "分享id", name = "shareId", required = true, dataType = "int", paramType = "query"),
    })
    @GetMapping("/check/{orderNumber}/{shopId}")
    public R<Boolean> check(@PathVariable("orderNumber") String orderNumber, @PathVariable("shopId") Integer shopId) {
        LoginUser loginUserApplet = tokenService.getLoginUserApplet();
        Order order = orderService.getOne(new LambdaQueryWrapper<Order>()
                .eq(Order::getOrderNumber, orderNumber));
                .eq(Order::getId, orderNumber));
        return R.ok(orderService.check(order, shopId, loginUserApplet.getUserid()));
    }
@@ -176,12 +194,9 @@
     * 订单核销
     */
    @ApiOperation(value = "订单核销", tags = {"小程序-个人中心-门店管理"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "订单id", name = "id", required = true, dataType = "String"),
    })
    @GetMapping("/writeOff")
    public R<Void> writeOff(String code, Integer shopId) {
        orderService.writeOff(code, shopId);
    public R<Void> writeOff(@ApiParam("id") String id, @ApiParam("shopId") Integer shopId) {
        orderService.writeOff(id, shopId);
        return R.ok();
    }
@@ -193,6 +208,17 @@
                                                      @ApiParam("页码") @RequestParam("pageNum") Integer pageNum,
                                                      @ApiParam("每一页数据大小") @RequestParam("pageSize") Integer pageSize) {
        return R.ok(orderService.getShopOrderList(content,status,shopId,pageNum,pageSize));
    }
    @PostMapping("/importExpress")
    @ApiOperation(value = "2.0新增导入订单", tags = {"门店后台-订单管理"})
    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);
    }
    @PutMapping("/shopCancelOrder/{orderId}")
@@ -411,31 +437,31 @@
*/
    /**
     * 订单取消支付回退
     *
     * @param refundCallbackResult
     * @param response
     * @return
     */
    @ResponseBody
    @GetMapping("/refundPayMoneyCallback")
    public void refundPayMoneyCallback(RefundCallbackResult refundCallbackResult, HttpServletResponse response) {
        R callback = orderService.refundPayMoneyCallback(refundCallbackResult);
    @PostMapping("/refundPayMoneyCallback")
    public String refundPayMoneyCallback( @RequestBody(required = false) String xmlData) {
        R callback = orderService.refundPayMoneyCallback(xmlData);
        if (callback.getCode() == 200) {
            response.setStatus(200);
            PrintWriter out = null;
            try {
                out = response.getWriter();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            out.println("success");
            out.flush();
            out.close();
          return "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
        }else {
            System.err.println("支付回退错误:"+callback.getMsg());
            return "<xml><return_code><![CDATA[FAIL]]></return_code></xml>";
        }
    }
    /**
     * 获取商品销售数量
     *
     * @param goodsId
     * @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);
    }
    /**
     * 获取商品销售数量
     *
@@ -583,11 +609,26 @@
            orderPage.setAppUserIds(orderPage.getAppUserIds().stream().distinct().collect(Collectors.toList()));
        }
//        UserAddress userAddress = JSON.parseObject(order.getAddressJson(), UserAddress.class);
//        orderInfo.setRecipient(userAddress.getRecieveName() + "-" + userAddress.getRecievePhone());
//        userAddress.setRecieveAddress(userAddress.getProvince() + userAddress.getCity() + userAddress.getDistrict() + userAddress.getRecieveAddress());
//        orderInfo.setAddress(userAddress.getRecieveAddress());
        //搜索条件 店铺名称
        if (StringUtils.isNotEmpty(orderPage.getShopName())){
            List<Integer> shopSet = new ArrayList<>(shopClient.getShopIdByName(orderPage.getShopName()).getData());
            if (CollectionUtils.isEmpty(shopSet)) {
                return ;
            }
            if (null != orderPage.getShopIds()) {
                List<Integer> shopIds = orderPage.getShopIds();
                if (!containsIntegerAny(shopIds, shopSet)) {
                    return ;
                }
                shopIds.addAll(shopSet);
                orderPage.setShopIds(shopIds);
            } else {
                orderPage.setShopIds(shopSet);
            }
        }
        if (null != orderPage.getShopIds()) {
            orderPage.setShopIds(orderPage.getShopIds().stream().distinct().collect(Collectors.toList()));
        }
        List<OrderExport> orderExportList = orderMapper.getOrderExportList(orderPage);
        orderExportList.forEach(orderExport -> {
@@ -603,13 +644,6 @@
                orderExport.setGoodsName(goods.getName());
           /*     orderExport.setCompanyCostPrice(goods.getOperatingCost());
                orderExport.setSupplierCostPrice(goods.getShopCost());*/
            }
            String expressJson = orderExport.getExpressJson();
            if (StringUtils.isNotEmpty(expressJson) && !expressJson.equals("NULL")) {
                JSONObject jsonObject = JSONObject.parseObject(expressJson);
                orderExport.setExpressNum(jsonObject.getString("num"));
                orderExport.setExpressName(ExpressCompanyMap.getCompanyNameByCode(jsonObject.getString("com")));
            }
        });
@@ -639,6 +673,27 @@
        // 如果没有找到共同元素,返回 false
        return false;
    }
    /**
     * 判断 list1 是否包含 list2 中的至少一个元素
     *
     * @param list1 第一个列表
     * @param list2 第二个列表
     * @return 如果 list1 包含 list2 中的至少一个元素,返回 true;否则返回 false
     */
    private boolean containsIntegerAny(List<Integer> list1, List<Integer> list2) {
        // 将 list1 转换为 HashSet 以提高查询效率
        Set<Integer> set1 = new HashSet<>(list1);
        // 遍历 list2,检查是否有元素存在于 set1 中
        for (Integer element : list2) {
            if (set1.contains(element)) {
                return true;
            }
        }
        // 如果没有找到共同元素,返回 false
        return false;
    }
    /**
@@ -650,8 +705,10 @@
    @PostMapping("/getOrderCountByAppUserId")
    public R<Long> getOrderCountByAppUserId(@RequestParam("id") Long appUserId) {
        long count = orderService.count(new LambdaQueryWrapper<Order>().eq(Order::getDelFlag, 0)
                .eq(Order::getAppUserId, appUserId).in(Order::getOrderStatus, Arrays.asList(1, 2, 3, 4, 7, 8))
                .eq(Order::getPayStatus, 2));
                .eq(Order::getAppUserId, appUserId)
                .in(Order::getOrderStatus, Arrays.asList(1, 2, 3, 4, 7, 8))
                .eq(Order::getPayStatus, 2)
        );
        return R.ok(count);
    }
@@ -730,7 +787,7 @@
        //折线图
        List<OrderStatisticsDetail> orderStatisticsDetailList=orderService.getOrderListGroupByDate(shopAnalysisDTO.getStartTime(), shopAnalysisDTO.getEndTime());
        List<OrderStatisticsDetail> orderStatisticsDetailList=orderService.getOrderListGroupByDate(shopAnalysisDTO.getStartTime(), shopAnalysisDTO.getEndTime(),shopAnalysisDTO.getShopId());
        shopAnalysisVO.setOrderStatisticsDetailList(orderStatisticsDetailList);
        return R.ok(shopAnalysisVO);
    }
@@ -738,7 +795,7 @@
    /**
     * 统计用户总消费积分数和现金支付金额
     */
    @GetMapping("/getOrderCountByAppUserId/")
    @GetMapping("/getConsumeScoreAndPayAmount")
    R<Map<String ,Object>> getConsumeScoreAndPayAmount(@RequestParam(value = "userId",required = false) Long userId){
        QueryWrapper<Order> queryWrapper = new QueryWrapper<>();
        // 条件构造  统计充值积分
@@ -747,10 +804,20 @@
        queryWrapper.in("order_status", Arrays.asList(3,4,8));//待核销  已完成  已评价
        queryWrapper.eq("pay_status",2);
        if (userId != null) {
            queryWrapper.eq("user_id", userId);
            queryWrapper.eq("app_user_id", userId);
        }
        return R.ok(orderService.getMap(queryWrapper));
    }
    /**
     * 获取商户RSA加密公钥
     */
    @GetMapping("/getRsaPublicKey")
    public R<Void> getRsaPublicKey(){
        wechatPayService.getRsaPublicKey();
        return R.ok();
    }
}