puzhibing
2023-11-24 328ac3b6130819a31a7ba2d6af84ceec5c9584bf
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -955,6 +955,41 @@
            R<com.alibaba.fastjson.JSONObject> r = HuiFuTianXiaUtil.weixinPayment(outTradeNo, description, payMoney.doubleValue(), openid, request.getNotifyUrl());
            if(r.getCode() != 200){
                throw new ServiceException(r.getMsg());
            }else{
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
                        int time = 0;
                        for (int i = 0; i < 13; i++) {
                            try {
                                time += (5000 * i);
                                Thread.sleep(time);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                            R<WeixinPaymentNotifyVo> voR = HuiFuTianXiaUtil.queryPayment(outTradeNo, sdf.format(new Date()));
                            if(voR.getCode() == 200){
                                WeixinPaymentNotifyVo data = voR.getData();
                                //P:处理中;S:成功;F:失败;I: 初始(初始状态很罕见,请联系汇付技术人员处理);
                                String transStat = data.getTransStat();
                                if("S".equals(transStat)){
                                    PartnerTransactionsResult transaction = new PartnerTransactionsResult();
                                    transaction.setOutTradeNo(data.getReqSeqId());
                                    payBack(transaction, data.getFeeFlag() == 1 ? BigDecimal.ZERO : new BigDecimal(data.getFeeAmount()));
                                    return;
                                }
                                if("P".equals(transStat) || "F".equals(transStat)){
                                    continue;
                                }
                                log.error("支付失败,流水号:{}, 状态码:{}", outTradeNo, transStat);
                                return;
                            }else{
                                log.error("支付查询失败!流水号:{},结果:{}", outTradeNo, voR.getMsg());
                            }
                        }
                    }
                }).start();
            }
            com.alibaba.fastjson.JSONObject data = r.getData();
            String mainMchId = WxPayConfiguration.getPlatformTyMacId();
@@ -3191,8 +3226,6 @@
        Order order = this.getById(orderId);
        // 获取会员信息
        Member member = remoteMemberService.getMember(order.getUserId()).getData();
        // 获取商店信息
        Shop shop = remoteShopService.getShop(order.getShopId()).getData();
        // 获取订单商品详细信息
        List<MgtOrderGoodsDetailVo> orderGoodsDetailVoList = orderGoodsService.listMgtVoByOrderId(orderId);
        // 设置MgtOrderDetailVo属性
@@ -3222,6 +3255,7 @@
        }
        // 设置订单编号
        mgtOrderDetailVo.setOrderNo(order.getOrderNo());
        mgtOrderDetailVo.setOutTradeNo(order.getOutTradeNo());
        // 设置订单来源
        switch (order.getOrderFrom()) {
            case 1:
@@ -3252,10 +3286,12 @@
        mgtOrderDetailVo.setCancelTime(order.getCancelTime());
        mgtOrderDetailVo.setOrderRemark(order.getOrderRemark());
        mgtOrderDetailVo.setShopId(order.getShopId());
        if (shop != null) {
        if (3 == order.getOrderStatus()) {
            // 获取商店信息
            Shop shop = remoteShopService.getShop(order.getShopId()).getData();
            mgtOrderDetailVo.setShopName(shop.getShopName());
        } else {
            mgtOrderDetailVo.setShopName("商户已被删除");
            mgtOrderDetailVo.setShopName("");
        }
        mgtOrderDetailVo.setVerifyTime(order.getUseTime());
        //获取支付记录
@@ -6231,4 +6267,22 @@
        ProfitSharingResult profitSharingResult = wxService.getEcommerceService().queryProfitSharing(request);
        return profitSharingResult;
    }
    @Override
    public List<String> getActivityOrderGoods(String activityId) {
        List<Order> orders = this.baseMapper.selectList(new QueryWrapper<Order>()
                .eq("del_flag", 0)
                .in("order_status", Arrays.asList(1, 2, 3))
                .eq("activity_id", activityId)
        );
        if(orders.size() > 0){
            List<String> collect = orders.stream().map(Order::getOrderId).collect(Collectors.toList());
            List<OrderGoods> list = orderGoodsService.list(new QueryWrapper<OrderGoods>()
                    .eq("del_flag", 0)
                    .in("order_id", collect)
            );
            return list.stream().map(OrderGoods::getGoodsId).collect(Collectors.toList());
        }
        return new ArrayList<>();
    }
}