yanghui
2022-11-28 0ca6f34b7ba431f06d1a107731296c49d932333c
#feat 取消退款
1个文件已修改
138 ■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopFlowerOrderServiceImpl.java 138 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopFlowerOrderServiceImpl.java
@@ -367,13 +367,13 @@
                    BeanUtils.copyProperties(convenientMerchantDO, shopStoreVO);
                }
                orderVo.setConvenientMerchantVO(shopStoreVO);
                //已完成、已退款才有评论 TODO
//        if (ComShopFlowerOrderDO.status.ywc == shopOrderDO.getStatus() || ComShopFlowerOrderDO.status.ytk == shopOrderDO.getStatus()) {
                ComShopFlowerEvaluateVO comShopFlowerEvaluateVO = comShopFlowerEvaluateDAO.selectByOrderNo(orderVo.getOrderNo());
                if (nonNull(comShopFlowerEvaluateVO)) {
                    orderVo.setComShopFlowerEvaluateVO(comShopFlowerEvaluateVO);
                //已完成、已退款才有评论
                if (ComShopFlowerOrderDO.status.ywc == orderVo.getStatus() || ComShopFlowerOrderDO.status.ytk == orderVo.getStatus()) {
                    ComShopFlowerEvaluateVO comShopFlowerEvaluateVO = comShopFlowerEvaluateDAO.selectByOrderNo(orderVo.getOrderNo());
                    if (nonNull(comShopFlowerEvaluateVO)) {
                        orderVo.setComShopFlowerEvaluateVO(comShopFlowerEvaluateVO);
                    }
                }
//            }
            });
        }
        return R.ok(orderPageVOIPage);
@@ -478,13 +478,13 @@
            BeanUtils.copyProperties(convenientElevatingPointDO, convenientElevatingPointVO);
            orderVO.setConvenientElevatingPointVO(convenientElevatingPointVO);
        }
        //已完成、已退款才有评论 TODO
//        if (ComShopFlowerOrderDO.status.ywc == shopOrderDO.getStatus() || ComShopFlowerOrderDO.status.ytk == shopOrderDO.getStatus()) {
        ComShopFlowerEvaluateVO comShopFlowerEvaluateVO = comShopFlowerEvaluateDAO.selectByOrderNo(shopOrderDO.getOrderNo());
        if (nonNull(comShopFlowerEvaluateVO)) {
            orderVO.setComShopFlowerEvaluateVO(comShopFlowerEvaluateVO);
        //已完成、已退款才有评论
        if (ComShopFlowerOrderDO.status.ywc == shopOrderDO.getStatus() || ComShopFlowerOrderDO.status.ytk == shopOrderDO.getStatus()) {
            ComShopFlowerEvaluateVO comShopFlowerEvaluateVO = comShopFlowerEvaluateDAO.selectByOrderNo(shopOrderDO.getOrderNo());
            if (nonNull(comShopFlowerEvaluateVO)) {
                orderVO.setComShopFlowerEvaluateVO(comShopFlowerEvaluateVO);
            }
        }
//        }
        //设置退款金额
        ComShopFlowerRefundOrderDO comShopFlowerRefundOrderDO = comShopFlowerRefundOrderDAO.selectOne(new LambdaQueryWrapper<ComShopFlowerRefundOrderDO>().eq(ComShopFlowerRefundOrderDO::getOrderId, shopOrderDO.getOrderNo()));
        if (nonNull(comShopFlowerRefundOrderDO)) {
@@ -513,70 +513,72 @@
        if (shopOrderDO == null) {
            return R.fail("未查询到订单");
        }
        if (!shopOrderDO.getStatus().equals(ComShopFlowerOrderDO.status.ddps)) {
            return R.fail("已配送订单不可取消");
        }
        // 取消订单
        shopOrderDO.setStatus(ComShopFlowerOrderDO.status.yqx);
        //退款
        String refundNo = WXPayUtil.generateNonceStr();
        try {
            String refundStr = WxPayUtils.refund(appid, mchId, shopOrderDO.getOrderNo(), shopOrderDO.getPayAmount(),
                    shopOrderDO.getPayAmount(), refundNo, isTest);
            log.info("退款请求接口返回参数:{}", refundStr);
            Map<String, String> mapResult = WXPayUtil.xmlToMap(refundStr);
            if (CollUtil.isNotEmpty(mapResult)) {
                String return_code = (String) mapResult.get("return_code");
                String result_code = (String) mapResult.get("result_code");
                String return_msg = mapResult.get("return_msg");
                ComShopFlowerOrderPayDO orderPayDO = new ComShopFlowerOrderPayDO();
        if (shopOrderDO.getStatus().equals(ComShopFlowerOrderDO.status.ddps)||shopOrderDO.getStatus().equals(ComShopFlowerOrderDO.status.dfh)) {
            // 取消订单
            shopOrderDO.setStatus(ComShopFlowerOrderDO.status.yqx);
            //退款
            String refundNo = WXPayUtil.generateNonceStr();
            try {
                String refundStr = WxPayUtils.refund(appid, mchId, shopOrderDO.getOrderNo(), shopOrderDO.getPayAmount(),
                        shopOrderDO.getPayAmount(), refundNo, isTest);
                log.info("退款请求接口返回参数:{}", refundStr);
                Map<String, String> mapResult = WXPayUtil.xmlToMap(refundStr);
                if (CollUtil.isNotEmpty(mapResult)) {
                    String return_code = (String) mapResult.get("return_code");
                    String result_code = (String) mapResult.get("result_code");
                    String return_msg = mapResult.get("return_msg");
                    ComShopFlowerOrderPayDO orderPayDO = new ComShopFlowerOrderPayDO();
                orderPayDO.setOrderNo(shopOrderDO.getOrderNo());
                orderPayDO.setOrderAmount(shopOrderDO.getTotalAmount());
                orderPayDO.setPayTime(new Date());
                orderPayDO.setStoreId(shopOrderDO.getStoreId());
                orderPayDO.setDeliveryType(shopOrderDO.getDeliveryType());
                orderPayDO.setOrderId(shopOrderDO.getId());
                orderPayDO.setPayType(ComShopFlowerOrderPayDO.payType.qx);
                if ("SUCCESS".equals(return_code) && return_code.equals(result_code)) {
                    //退款成功
                    // 添加订单支付记录表
                    orderPayDO.setPayStatus(ComShopFlowerOrderPayDO.payStatus.yes);
                    orderPayDO.setRefundStatus(ComShopFlowerOrderPayDO.refundStatus.tkcg);
                    orderPayDO.setOrderNo(shopOrderDO.getOrderNo());
                    orderPayDO.setOrderAmount(shopOrderDO.getTotalAmount());
                    orderPayDO.setPayTime(new Date());
                    orderPayDO.setStoreId(shopOrderDO.getStoreId());
                    orderPayDO.setDeliveryType(shopOrderDO.getDeliveryType());
                    orderPayDO.setOrderId(shopOrderDO.getId());
                    orderPayDO.setPayType(ComShopFlowerOrderPayDO.payType.qx);
                    if ("SUCCESS".equals(return_code) && return_code.equals(result_code)) {
                        //退款成功
                        // 添加订单支付记录表
                        orderPayDO.setPayStatus(ComShopFlowerOrderPayDO.payStatus.yes);
                        orderPayDO.setRefundStatus(ComShopFlowerOrderPayDO.refundStatus.tkcg);
                } else {
                    //退款失败
                    // 添加订单支付记录表
                    orderPayDO.setPayStatus(ComShopFlowerOrderPayDO.payStatus.no);
                    orderPayDO.setRefundStatus(ComShopFlowerOrderPayDO.refundStatus.tksb);
                    shopOrderDO.setRemark(shopOrderDO.getRemark() + "_" + return_msg);
                    } else {
                        //退款失败
                        // 添加订单支付记录表
                        orderPayDO.setPayStatus(ComShopFlowerOrderPayDO.payStatus.no);
                        orderPayDO.setRefundStatus(ComShopFlowerOrderPayDO.refundStatus.tksb);
                        shopOrderDO.setRemark(shopOrderDO.getRemark() + "_" + return_msg);
                    }
                    comShopFlowerOrderPayDAO.insert(orderPayDO);
                }
                comShopFlowerOrderPayDAO.insert(orderPayDO);
            } catch (Exception e) {
                log.error("申请退款失败," + e.getMessage());
                e.printStackTrace();
                return R.fail("取消订单失败");
            }
        } catch (Exception e) {
            log.error("申请退款失败," + e.getMessage());
            e.printStackTrace();
            return R.fail("取消订单失败");
        }
        if (this.baseMapper.updateById(shopOrderDO) > 0) {
            // 添加订单操作记录
            ComShopFlowerOrderOperateDO orderOperateDO = new ComShopFlowerOrderOperateDO();
            orderOperateDO.setOrderNo(shopOrderDO.getOrderNo());
            orderOperateDO.setOperationType(ComShopOrderOperateDO.operationType.cancel);
            orderOperateDO.setOperationTime(new Date());
            if (comShopOrderQueryDTO.getIsAdmin()) {
                orderOperateDO.setOperationContent("管理员" + comShopOrderQueryDTO.getOperUserAccount() + "取消订单");
                orderOperateDO.setOperationBy("用户" + comShopOrderQueryDTO.getOperUserAccount());
            if (this.baseMapper.updateById(shopOrderDO) > 0) {
                // 添加订单操作记录
                ComShopFlowerOrderOperateDO orderOperateDO = new ComShopFlowerOrderOperateDO();
                orderOperateDO.setOrderNo(shopOrderDO.getOrderNo());
                orderOperateDO.setOperationType(ComShopOrderOperateDO.operationType.cancel);
                orderOperateDO.setOperationTime(new Date());
                if (comShopOrderQueryDTO.getIsAdmin()) {
                    orderOperateDO.setOperationContent("管理员" + comShopOrderQueryDTO.getOperUserAccount() + "取消订单");
                    orderOperateDO.setOperationBy("用户" + comShopOrderQueryDTO.getOperUserAccount());
                } else {
                    orderOperateDO.setOperationContent("用户取消订单");
                    orderOperateDO.setOperationBy("用户");
                }
                comShopFlowerOrderOperateDAO.insert(orderOperateDO);
                return R.ok();
            } else {
                orderOperateDO.setOperationContent("用户取消订单");
                orderOperateDO.setOperationBy("用户");
                return R.fail("取消订单失败");
            }
            comShopFlowerOrderOperateDAO.insert(orderOperateDO);
            return R.ok();
        } else {
            return R.fail("取消订单失败");
        }else {
            return R.fail("该订单不可取消");
        }
    }
    /**