yanghui
2022-11-17 b30e1a48f2bc5f65a0efd2e69e090fed2d7a627c
#feat 订单退款和查询
1个文件已添加
12个文件已修改
380 ■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/WxCallbackApi.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/PageComShopOrderSearchDTO.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopOrderCountVO.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopOrderSearchVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ShopFlowerApi.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ShopFlowerApi.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComShopFlowerOrderDAO.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComShopFlowerOrderPayDO.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComShopFlowerOrderService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopFlowerOrderServiceImpl.java 122 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopFlowerRefundOrderServiceImpl.java 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComShopFlowerOrderDAO.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/WxCallbackApi.java
@@ -348,4 +348,74 @@
    public R settle(String settleDate){
        return R.ok(umfPayUtil.settle(settleDate));
    }
    @PostMapping("flowerWxNotify")
    public void flowerWxNotify(HttpServletRequest request, HttpServletResponse response) {
        log.error("微信支付回调start");
        String inputLine = "";
        String notityXml = "";
        try {
            while ((inputLine = request.getReader().readLine()) != null) {
                notityXml += inputLine;
            }
            // 关闭流
            request.getReader().close();
            log.error("微信回调内容信息:" + notityXml);
            // 解析成Json
            org.json.JSONObject xmlJson = XML.toJSONObject(notityXml);
            if (StringUtils.isNotEmpty(xmlJson.toString())) {
                JSONObject resultData = JSON.parseObject(xmlJson.get("xml").toString());
                // 成功支付订单
                if (resultData.getString("result_code").equals("SUCCESS")
                        && resultData.getString("return_code").equals("SUCCESS")) {
                    WxPayNotifyOrderDTO notifyOrderDTO = new WxPayNotifyOrderDTO();
                    // 订单号
                    String orderTradeNo = resultData.getString("out_trade_no");
                    notifyOrderDTO.setOrderTradeNo(orderTradeNo);
                    // 微信支付订单号
                    String wxTradeNo = resultData.getString("transaction_id");
                    notifyOrderDTO.setWxTradeNo(wxTradeNo);
                    // 订单金额
                    String totalFee = resultData.getString("total_fee");
                    notifyOrderDTO.setTotalFee(totalFee);
                    // 支付完成时间
                    String payTime = resultData.getString("time_end");
                    notifyOrderDTO.setPayTime(payTime);
                    // 现金支付金额
                    String cashFee = resultData.getString("cash_fee");
                    notifyOrderDTO.setCashFee(cashFee);
                    // 根据订单号修改订单信息
                    communityService.wxOrderPayNotify(notifyOrderDTO);
                    // 封装 返回值
                    StringBuffer buffer = new StringBuffer();
                    buffer.append("<xml>");
                    buffer.append("<return_code>SUCCESS</return_code>");
                    buffer.append("<return_msg>OK</return_msg>");
                    buffer.append("</xml>");
                    // 给微信服务器返回 成功标示 否则会一直询问 咱们服务器 是否回调成功
                    PrintWriter writer = response.getWriter();
                    // 返回
                    writer.print(buffer.toString());
                } else {// 未成功支付订单
                    // 封装 返回值
                    StringBuffer buffer = new StringBuffer();
                    buffer.append("<xml>");
                    buffer.append("<return_code>FAIL</return_code>");
                    buffer.append("<return_msg>FAIL</return_msg>");
                    buffer.append("</xml>");
                    // 给微信服务器返回 成功标示 否则会一直询问 咱们服务器 是否回调成功
                    PrintWriter writer = response.getWriter();
                    // 返回
                    writer.print(buffer.toString());
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/PageComShopOrderSearchDTO.java
@@ -28,7 +28,7 @@
    private String goodsName;
    @ApiModelProperty(value = "店铺名称", example = "小二的店")
    private String storeName;
    @ApiModelProperty(value = "订单状态(1.待付款 2.代发货 3.待收货 4.待评价 5.已完成 6.已取消)", example = "1")
    @ApiModelProperty(value = "订单状态(1.等待配送 2.配送中 3.待收货 4.待评价 5.已完成 6.已取消 7.已退款)", example = "1")
    private Integer status;
    @ApiModelProperty(value = "下单时间-开始", example = "2021-4-10 10:38:25")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@@ -46,4 +46,7 @@
    private Long storeId;
    @ApiModelProperty(hidden = true)
    private Long storeUserId;
    @ApiModelProperty("配送方式(1.自提  2.快递)")
    private Integer deliveryType;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopOrderCountVO.java
New file
@@ -0,0 +1,31 @@
package com.panzhihua.common.model.vos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * @auther yh
 * @create 2022-11-08 17:25:45
 * @describe 统计订单数VO
 */
@Data
@ApiModel("统计订单数VO")
public class ComShopOrderCountVO {
    /**
     * 订单状态(1.等待配送 2.配送中 3.待收货 4.待评价 5.已完成 6.已取消 7.已退款)
     */
    @ApiModelProperty("订单状态(1.等待配送 2.配送中 3.待收货 4.待评价 5.已完成 6.已取消 7.已退款 8.总订单)")
    private Integer status;
    /**
     * 订单数量
     */
    @ApiModelProperty("订单数量")
    private Integer amount;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopOrderSearchVO.java
@@ -94,4 +94,7 @@
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createAt;
    private String address;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
@@ -10954,4 +10954,31 @@
     */
    @PostMapping("/shopFlower/pageOrderByStoreId")
    R pageOrderByStoreId(@RequestBody PageComFlowerOrderListDTO pageComFlowerOrderListDTO);
    /**
     * 微信支付订单回调
     *
     * @param wxPayNotifyOrderDTO
     *            订单支付回调参数
     */
    @PostMapping("/shopFlower/wxOrderPayNotify")
    void wxOrderPayNotifyFlower(@RequestBody WxPayNotifyOrderDTO wxPayNotifyOrderDTO);
    /**
     * 点击去支付订单
     *
     * @param orderPayDTO
     *            请求参数
     * @return 支付对象
     */
    @PostMapping("/shopFlower/wxPay")
    R wxPayFlower(@RequestBody OrderPayDTO orderPayDTO);
    /**
     * 统计查询订单数量
     * @param deliveryType
     * @return
     */
    @GetMapping("/shopFlower/selectCountByDeliveryType")
    R selectCountByDeliveryType(Integer deliveryType);
}
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ShopFlowerApi.java
@@ -3,10 +3,10 @@
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.model.dtos.community.convenient.ConvenientMerchantDTO;
import com.panzhihua.common.model.dtos.shop.PageComShopFlowerGoodsDTO;
import com.panzhihua.common.model.dtos.shop.PageComShopOrderSearchDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.convenient.ConvenientMerchantVO;
import com.panzhihua.common.model.vos.shop.AddShopFlowerGoodsVO;
import com.panzhihua.common.model.vos.shop.PageShopGoodsVO;
import com.panzhihua.common.model.vos.shop.*;
import com.panzhihua.common.service.community.CommunityService;
import com.panzhihua.common.service.user.UserService;
import com.panzhihua.common.validated.AddGroup;
@@ -104,22 +104,25 @@
        return communityService.getAllGoodsCategories();
    }
    /*@ApiOperation(value = "订单_分页列表", response = ComShopOrderSearchVO.class)
    @GetMapping("/order/selectCountByDeliveryType")
    public R selectCountByDeliveryType(Integer deliveryType){
        return communityService.selectCountByDeliveryType(deliveryType);
    }
    @ApiOperation(value = "商家查询 订单_分页列表", response = ComShopOrderSearchVO.class)
    @PostMapping("/order/page")
    public R page(@RequestBody @Validated PageComShopOrderSearchDTO pageComShopOrderSearchDTO) {
        // pageComShopOrderSearchDTO.setUserId(this.getUserId());
        ClazzUtils.setIfStringIsEmpty(pageComShopOrderSearchDTO);
        return communityService.pageShopOrder(pageComShopOrderSearchDTO);
         pageComShopOrderSearchDTO.setStoreUserId(this.getUserId());
        return communityService.pageShopOrderFlower(pageComShopOrderSearchDTO);
    }
    @ApiOperation(value = "订单_详细", response = ComShopOrderPageVO.class)
    @ApiOperation(value = "订单_详细", response = ComShopFlowerOrderPageVO.class)
    @GetMapping("/order/detail")
    @ShopOperLog(operType = 11)
    public R detail(@RequestParam("orderId") Long orderId) {
        return communityService.orderDetail(orderId);
        return communityService.orderDetailFlower(orderId);
    }
    @ApiOperation(value = "订单_导出表格")
    /*@ApiOperation(value = "订单_导出表格")
    @PostMapping("/order/export")
    @ShopOperLog(operType = 12)
    public R export(@RequestBody ComShopOrderExportDTO comShopOrderExportDTO) {
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ShopFlowerApi.java
@@ -409,7 +409,7 @@
     *            订单支付回调参数
     */
    @PostMapping("/wxOrderPayNotify")
    public void wxOrderPayNotify(@RequestBody WxPayNotifyOrderDTO wxPayNotifyOrderDTO) {
    public void wxOrderPayNotifyFlower(@RequestBody WxPayNotifyOrderDTO wxPayNotifyOrderDTO) {
        comShopFlowerOrderService.wxOrderPayNotify(wxPayNotifyOrderDTO);
    }
@@ -421,10 +421,15 @@
     * @return 支付对象
     */
    @PostMapping("/wxPay")
    public R wxPay(@RequestBody OrderPayDTO orderPayDTO) {
    public R wxPayFlower(@RequestBody OrderPayDTO orderPayDTO) {
        return comShopFlowerOrderService.wxPay(orderPayDTO);
    }
    @GetMapping("/selectCountByDeliveryType")
    public R selectCountByDeliveryType(Integer deliveryType){
        return comShopFlowerOrderService.selectCountByDeliveryType(deliveryType);
    }
    /**
     * 统计用户订单数量
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComShopFlowerOrderDAO.java
@@ -7,6 +7,7 @@
import com.panzhihua.common.model.dtos.shop.PageComShopOrderSearchDTO;
import com.panzhihua.common.model.vos.shop.ComShopFlowerOrderPageVO;
import com.panzhihua.common.model.vos.shop.ComShopFlowerOrderStoreListVO;
import com.panzhihua.common.model.vos.shop.ComShopOrderCountVO;
import com.panzhihua.common.model.vos.shop.ComShopOrderSearchVO;
import com.panzhihua.service_community.model.dos.ComShopFlowerOrderDO;
import org.apache.ibatis.annotations.Mapper;
@@ -58,4 +59,11 @@
    void updateOrderStatus(@Param("deliveryId") Long deliveryId, @Param("serviceTime") Date serviceTime, @Param("status") int status);
    IPage<ComShopFlowerOrderStoreListVO> pageOrderByStoreId(@Param("page") Page page,@Param("comOrderListDTO") PageComFlowerOrderListDTO comOrderListDTO);
    /**
     * 根据类型统计订单数量
     * @param deliveryType
     * @return
     */
    List<ComShopOrderCountVO>  selectCountByDeliveryType(@Param("deliveryType") Integer deliveryType);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComShopFlowerOrderPayDO.java
@@ -88,7 +88,7 @@
    /**
     * 原始订单id
     */
    private String orderId;
    private Long orderId;
    /**
     * 退款订单号
     */
@@ -96,11 +96,11 @@
    /**
     * 退款状态(1.处理中 2.退款成功 3.退款失败 4.已取消 5.退款中)
     */
    private String refundStatus;
    private Integer refundStatus;
    /**
     * 类型(1.支付 2.退款 3.取消)
     */
    private String payType;
    private Integer payType;
    /**
     * 支付状态(1.未支付 2.已支付)
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComShopFlowerOrderService.java
@@ -191,4 +191,11 @@
     * @return
     */
    R pageOrderByStoreId(PageComFlowerOrderListDTO pageComFlowerOrderListDTO);
    /**
     * 查询订单总数
     * @param deliveryType
     * @return
     */
    R selectCountByDeliveryType(Integer deliveryType);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopFlowerOrderServiceImpl.java
@@ -1,5 +1,6 @@
package com.panzhihua.service_community.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -14,6 +15,7 @@
import com.panzhihua.common.utlis.OrderNoUtils;
import com.panzhihua.common.utlis.StringUtils;
import com.panzhihua.common.utlis.WxPayUtils;
import com.panzhihua.common.utlis.wx.WXPayUtil;
import com.panzhihua.service_community.dao.*;
import com.panzhihua.service_community.model.dos.*;
import com.panzhihua.service_community.service.ComShopFlowerOrderService;
@@ -26,10 +28,8 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
import static java.util.Objects.nonNull;
@@ -67,22 +67,21 @@
    private ComShopFlowerEvaluateDAO comShopFlowerEvaluateDAO;
    @Value("${hc_min.app.isTest}")
    @Value("${hcMin.app.isTest}")
    private Boolean isTest;
    @Value("${hc_min.app.appid}")
    @Value("${hcMin.app.appid}")
    private String appid;
    @Value("${hc_min.app.payKey}")
    @Value("${hcMin.app.payKey}")
    private String payKey;
    @Value("${hc_min.app.mchId}")
    @Value("${hcMin.app.mchId}")
    private String mchId;
    @Value("${hc_min.app.notifyUrl}")
    @Value("${hcMin.app.notifyUrl}")
    private String notifyUrl;
    /**
     * 订单预览
     *
     * @param orderPreviewDTO
     *            请求参数
     * @param orderPreviewDTO 请求参数
     * @return 订单预览数据
     */
    @Override
@@ -198,8 +197,7 @@
    /**
     * 创建订单
     *
     * @param orderCreateDTO
     *            创建订单请求参数
     * @param orderCreateDTO 创建订单请求参数
     * @return 创建结果
     */
    @Transactional(rollbackFor = Exception.class)
@@ -329,8 +327,7 @@
    /**
     * 分页查询用户订单列表
     *
     * @param comOrderListDTO
     *            请求参数
     * @param comOrderListDTO 请求参数
     * @return 查询结果
     */
    @Override
@@ -375,8 +372,7 @@
    /**
     * 根据订单id查询订单详情
     *
     * @param orderId
     *            订单id
     * @param orderId 订单id
     * @return 订单详情
     */
    @Override
@@ -428,7 +424,7 @@
                    orderGoodsVO.setGoodsAttr(goodsAttrDO.getGoodsAttrName());
                }
                orderGoodsVOS.add(orderGoodsVO);
                sbr.append(orderGoods.getGoodsName() + " ");
                sbr.append(orderGoods.getGoodsName()).append(" ");
            });
        }
        orderVO.setOrderGoodsVOList(orderGoodsVOS);
@@ -469,15 +465,13 @@
        }
        return R.ok(orderVO);
    }
    /**
     * 根据订单id取消订单
     *
     * @param comShopOrderQueryDTO
     *            订单信息
     * @param comShopOrderQueryDTO 订单信息
     * @return 取消结果
     */
    @Transactional(rollbackFor = Exception.class)
@@ -493,6 +487,45 @@
        }
        // 取消订单
        shopOrderDO.setStatus(ComShopFlowerOrderDO.status.yqx);
        //退款
        String refundNo = WXPayUtil.generateNonceStr();
        try {
            String refundStr = WxPayUtils.refund(appid, mchId, shopOrderDO.getWxTardeNo(), 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);
                } else {
                    //退款失败
                    // 添加订单支付记录表
                    orderPayDO.setPayStatus(ComShopFlowerOrderPayDO.payStatus.no);
                    orderPayDO.setRefundStatus(ComShopFlowerOrderPayDO.refundStatus.tksb);
                    shopOrderDO.setRemark(shopOrderDO.getRemark() + "_" + return_msg);
                }
                comShopFlowerOrderPayDAO.insert(orderPayDO);
            }
        } catch (Exception e) {
            log.error("申请退款失败," + e.getMessage());
            e.printStackTrace();
        }
        if (this.baseMapper.updateById(shopOrderDO) > 0) {
            // 添加订单操作记录
            ComShopFlowerOrderOperateDO orderOperateDO = new ComShopFlowerOrderOperateDO();
@@ -517,8 +550,7 @@
    /**
     * 根据订单id删除订单
     *
     * @param orderId
     *            订单id
     * @param orderId 订单id
     * @return 删除结果
     */
    @Override
@@ -544,10 +576,8 @@
    /**
     * 根据订单id确认收货
     *
     * @param orderId
     *            订单id
     * @param phone
     *            手机号
     * @param orderId 订单id
     * @param phone   手机号
     * @return 确认结果
     */
    @Transactional(rollbackFor = Exception.class)
@@ -587,8 +617,7 @@
    /**
     * 统计用户订单数量
     *
     * @param userId
     *            用户id
     * @param userId 用户id
     * @return 统计结果
     */
    @Override
@@ -623,8 +652,7 @@
    /**
     * 订单发货
     *
     * @param orderShipDTO
     *            订单发货信息
     * @param orderShipDTO 订单发货信息
     * @return 发货结果
     */
    @Override
@@ -827,8 +855,7 @@
    /**
     * 微信支付订单回调
     *
     * @param wxPayNotifyOrderDTO
     *            订单支付回调参数
     * @param wxPayNotifyOrderDTO 订单支付回调参数
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
@@ -907,14 +934,17 @@
        orderPayDO.setPayStatus(ComShopFlowerOrderPayDO.payStatus.yes);
        orderPayDO.setPayAmount(shopOrderDO.getPayAmount());
        orderPayDO.setPayTime(shopOrderDO.getPayTime());
        orderPayDO.setStoreId(shopOrderDO.getStoreId());
        orderPayDO.setDeliveryType(shopOrderDO.getDeliveryType());
        orderPayDO.setOrderId(shopOrderDO.getId());
        orderPayDO.setPayType(ComShopFlowerOrderPayDO.payType.zf);
        comShopFlowerOrderPayDAO.insert(orderPayDO);
    }
    /**
     * 订单去支付
     *
     * @param orderPayDTO
     *            请求参数
     * @param orderPayDTO 请求参数
     * @return 支付对象
     */
    public R wxPay(OrderPayDTO orderPayDTO) {
@@ -953,4 +983,26 @@
        IPage<ComShopFlowerOrderStoreListVO> ipage = this.baseMapper.pageOrderByStoreId(page, pageComFlowerOrderListDTO);
        return R.ok(ipage);
    }
    @Override
    public R selectCountByDeliveryType(Integer deliveryType) {
        List<ComShopOrderCountVO> comShopOrderCountVOS = this.baseMapper.selectCountByDeliveryType(deliveryType);
        Map<Integer, Integer> collect = comShopOrderCountVOS.stream().collect(Collectors.toMap(ComShopOrderCountVO::getStatus, ComShopOrderCountVO::getAmount));
        ComShopOrderCountVO comShopOrderCountVO = new ComShopOrderCountVO();
        comShopOrderCountVO.setStatus(8);
        comShopOrderCountVO.setAmount(0);
        for (int i = 1; i < 8; i++) {
            if (collect.containsKey(i)) {
                Integer amount = collect.get(i);
                comShopOrderCountVO.setAmount(amount + comShopOrderCountVO.getAmount());
            }else {
                collect.put(i,0);
            }
        }
        collect.put(comShopOrderCountVO.getStatus(),comShopOrderCountVO.getAmount());
        return R.ok(collect);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopFlowerRefundOrderServiceImpl.java
@@ -1,5 +1,6 @@
package com.panzhihua.service_community.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -11,8 +12,10 @@
import com.panzhihua.common.utlis.WxPayUtils;
import com.panzhihua.common.utlis.wx.WXPayUtil;
import com.panzhihua.service_community.dao.ComShopFlowerOrderDAO;
import com.panzhihua.service_community.dao.ComShopFlowerOrderPayDAO;
import com.panzhihua.service_community.dao.ComShopFlowerRefundOrderDAO;
import com.panzhihua.service_community.model.dos.ComShopFlowerOrderDO;
import com.panzhihua.service_community.model.dos.ComShopFlowerOrderPayDO;
import com.panzhihua.service_community.model.dos.ComShopFlowerRefundOrderDO;
import com.panzhihua.service_community.service.ComShopFlowerRefundOrderService;
import lombok.extern.slf4j.Slf4j;
@@ -22,6 +25,7 @@
import javax.annotation.Resource;
import java.util.Date;
import java.util.Map;
import java.util.Objects;
/**
@@ -35,19 +39,21 @@
public class ComShopFlowerRefundOrderServiceImpl extends ServiceImpl<ComShopFlowerRefundOrderDAO, ComShopFlowerRefundOrderDO>
        implements ComShopFlowerRefundOrderService {
    @Value("${hc_min.app.isTest}")
    @Value("${hcMin.app.isTest}")
    private Boolean isTest;
    @Value("${hc_min.app.appid}")
    @Value("${hcMin.app.appid}")
    private String appid;
    @Value("${hc_min.app.payKey}")
    @Value("${hcMin.app.payKey}")
    private String payKey;
    @Value("${hc_min.app.mchId}")
    @Value("${hcMin.app.mchId}")
    private String mchId;
    @Value("${hc_min.app.notifyUrl}")
    @Value("${hcMin.app.notifyUrl}")
    private String notifyUrl;
    @Resource
    private ComShopFlowerOrderDAO comShopFlowerOrderDAO;
    @Resource
    private ComShopFlowerOrderPayDAO comShopFlowerOrderPayDAO;
    @Override
@@ -73,6 +79,7 @@
    @Override
    public R updateRefundOrder(ComShopFlowerRefundOrderDTO comShopFlowerRefundOrderDTO) {
        ComShopFlowerRefundOrderDO comShopFlowerRefundOrderDO = this.baseMapper.selectById(comShopFlowerRefundOrderDTO.getId());
        if (Objects.isNull(comShopFlowerRefundOrderDO)) {
            return R.fail("不存在该退款订单");
        }
@@ -80,19 +87,49 @@
            //处理退款事宜
            comShopFlowerRefundOrderDO.setRefundTime(new Date());
            comShopFlowerRefundOrderDO.setHandleTime(new Date());
            comShopFlowerRefundOrderDO.setHandleResult(ComShopFlowerRefundOrderDO.handleResult.agree);
            //微信处理退款
            try {
                String refundNo = WXPayUtil.generateNonceStr();
                ComShopFlowerOrderDO comShopFlowerOrderDO = comShopFlowerOrderDAO.selectById(comShopFlowerRefundOrderDO.getOrderId());
                String refundStr = WxPayUtils.refund(appid, mchId, comShopFlowerOrderDO.getWxTardeNo(), comShopFlowerRefundOrderDO.getPayAmount(),
                        comShopFlowerRefundOrderDO.getRefundAmount(), refundNo, isTest);
                log.info(refundStr);
                comShopFlowerRefundOrderDO.setStatus(ComShopFlowerRefundOrderDO.status.tkcg);
                comShopFlowerRefundOrderDO.setHandleResult(ComShopFlowerRefundOrderDO.handleResult.agree);
                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(comShopFlowerOrderDO.getOrderNo());
                    orderPayDO.setOrderAmount(comShopFlowerOrderDO.getTotalAmount());
                    orderPayDO.setPayTime(new Date());
                    orderPayDO.setStoreId(comShopFlowerOrderDO.getStoreId());
                    orderPayDO.setDeliveryType(comShopFlowerOrderDO.getDeliveryType());
                    orderPayDO.setOrderId(comShopFlowerOrderDO.getId());
                    orderPayDO.setPayType(ComShopFlowerOrderPayDO.payType.tk);
                    orderPayDO.setRefundOrderNo(comShopFlowerRefundOrderDO.getRefundOrderNo());
                    orderPayDO.setPayAmount(comShopFlowerRefundOrderDO.getRefundAmount());
                    if ("SUCCESS".equals(return_code) && return_code.equals(result_code)) {
                        //退款成功
                        comShopFlowerRefundOrderDO.setStatus(ComShopFlowerRefundOrderDO.status.tkcg);
                        // 添加订单支付记录表
//                        orderPayDO.setWxTradeNo(wxPayNotifyOrderDTO.getWxTradeNo());
                        orderPayDO.setPayStatus(ComShopFlowerOrderPayDO.payStatus.yes);
                        orderPayDO.setRefundStatus(ComShopFlowerOrderPayDO.refundStatus.tkcg);
                    }else {
                        //退款失败
                        comShopFlowerRefundOrderDO.setStatus(ComShopFlowerRefundOrderDO.status.tksb);
                        comShopFlowerRefundOrderDO.setRemark(comShopFlowerRefundOrderDO.getRemark() + "_"+return_msg);
                        // 添加订单支付记录表
                        orderPayDO.setPayStatus(ComShopFlowerOrderPayDO.payStatus.no);
                        orderPayDO.setRefundStatus(ComShopFlowerOrderPayDO.refundStatus.tksb);
                    }
                    comShopFlowerOrderPayDAO.insert(orderPayDO);
                }
            } catch (Exception e) {
                log.error(e.getMessage());
                log.error("申请退款失败,"+e.getMessage());
                e.printStackTrace();
            }
@@ -101,9 +138,7 @@
            comShopFlowerRefundOrderDO.setStatus(ComShopFlowerRefundOrderDO.status.tksb);
            comShopFlowerRefundOrderDO.setHandleResult(ComShopFlowerRefundOrderDO.handleResult.refuse);
        }
        this.baseMapper.updateById(comShopFlowerRefundOrderDO);
        return R.ok();
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComShopFlowerOrderDAO.xml
@@ -66,12 +66,13 @@
        sr.pay_time, sr.delivery_type, sr.delivery_status, sr.logistics_company,
        sr.logistics_no, sr.create_at, uad.name as receiver_name, uad.phone as receiver_phone,
        group_concat(og.goods_name)
        as goodsName, ss.name as store_name
        as goodsName, ss.name as store_name ,ccep.adress
        FROM com_shop_flower_order sr LEFT JOIN com_shop_flower_order_goods og ON sr.id = og.order_id
        LEFT JOIN com_shop_flower_goods_attr ga ON og.goods_attr_id = ga.id
        LEFT JOIN sys_user su ON sr.user_id = su.user_id
        LEFT JOIN com_shop_flower_user_address uad ON sr.receiver_id = uad.id
        LEFT JOIN com_convenient_merchants ss ON sr.store_id = ss.id
        LEFT JOIN  com_convenient_elevating_point ccep on ccep.id = sr.point_id
        WHERE sr.delete_status = 1
        <if test='pageComShopOrderSearchDTO.userId != null'>
            AND sr.user_id = #{pageComShopOrderSearchDTO.userId}
@@ -108,6 +109,9 @@
        </if>
        <if test='pageComShopOrderSearchDTO.storeUserId != null '>
            AND ss.sys_user_id = #{pageComShopOrderSearchDTO.storeUserId}
        </if>
        <if test='pageComShopOrderSearchDTO.deliveryType != null '>
            AND sr.delivery_type = #{pageComShopOrderSearchDTO.deliveryType}
        </if>
        GROUP BY sr.id ORDER BY sr.create_at DESC
    </select>
@@ -150,5 +154,9 @@
        </if>
    </select>
    <select id="selectCountByDeliveryType"
            resultType="com.panzhihua.common.model.vos.shop.ComShopOrderCountVO">
        SELECT count(1) amount , `status` FROM com_shop_flower_order WHERE delivery_type = #{deliveryType} GROUP BY `status`
    </select>
</mapper>