New file |
| | |
| | | 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; |
| | | import com.panzhihua.common.model.dtos.shop.ComShopFlowerRefundOrderDTO; |
| | | import com.panzhihua.common.model.dtos.shop.PageComOrderRefundDTO; |
| | | import com.panzhihua.common.model.vos.R; |
| | | import com.panzhihua.common.model.vos.shop.ComShopFlowerRefundOrderVO; |
| | | import com.panzhihua.common.utlis.OrderNoUtils; |
| | | 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; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.Date; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * @ClassName: ComShopFlowerRefundOrderServiceImpl |
| | | * @Author: yh |
| | | * @Date: 2022/11/16 14:36 |
| | | * @Description: 退款订单 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class ComShopFlowerRefundOrderServiceImpl extends ServiceImpl<ComShopFlowerRefundOrderDAO, ComShopFlowerRefundOrderDO> |
| | | implements ComShopFlowerRefundOrderService { |
| | | |
| | | @Value("${hcMin.app.isTest}") |
| | | private Boolean isTest; |
| | | @Value("${hcMin.app.appid}") |
| | | private String appid; |
| | | @Value("${hcMin.app.payKey}") |
| | | private String payKey; |
| | | @Value("${hcMin.app.mchId}") |
| | | private String mchId; |
| | | @Value("${hcMin.app.notifyUrl}") |
| | | private String notifyUrl; |
| | | |
| | | @Resource |
| | | private ComShopFlowerOrderDAO comShopFlowerOrderDAO; |
| | | @Resource |
| | | private ComShopFlowerOrderPayDAO comShopFlowerOrderPayDAO; |
| | | |
| | | |
| | | @Override |
| | | public R createRefundOrder(ComShopFlowerRefundOrderDTO comShopFlowerRefundOrderDTO) { |
| | | ComShopFlowerRefundOrderDO comShopFlowerRefundOrderDO = new ComShopFlowerRefundOrderDO(); |
| | | BeanUtils.copyProperties(comShopFlowerRefundOrderDTO, comShopFlowerRefundOrderDO); |
| | | // 生成退款订单号 |
| | | String refundOrderNo = OrderNoUtils.NextOrderNo(comShopFlowerRefundOrderDTO.getUserId()); |
| | | comShopFlowerRefundOrderDO.setRefundOrderNo(refundOrderNo); |
| | | comShopFlowerRefundOrderDO.setStatus(ComShopFlowerRefundOrderDO.status.clz); |
| | | comShopFlowerRefundOrderDO.setDeleteStatus(ComShopFlowerRefundOrderDO.deleteStatus.no); |
| | | this.baseMapper.insert(comShopFlowerRefundOrderDO); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @Override |
| | | public R pageRefundOrder(PageComOrderRefundDTO pageComOrderRefundDTO) { |
| | | Page page = new Page<>(pageComOrderRefundDTO.getPageNum(), pageComOrderRefundDTO.getPageSize()); |
| | | IPage<ComShopFlowerRefundOrderVO> pages = this.baseMapper.pageRefundOrder(page, pageComOrderRefundDTO); |
| | | return R.ok(pages); |
| | | } |
| | | |
| | | @Override |
| | | public R updateRefundOrder(ComShopFlowerRefundOrderDTO comShopFlowerRefundOrderDTO) { |
| | | ComShopFlowerRefundOrderDO comShopFlowerRefundOrderDO = this.baseMapper.selectById(comShopFlowerRefundOrderDTO.getId()); |
| | | |
| | | if (Objects.isNull(comShopFlowerRefundOrderDO)) { |
| | | return R.fail("不存在该退款订单"); |
| | | } |
| | | if (ComShopFlowerRefundOrderDO.handleResult.agree.equals(comShopFlowerRefundOrderDTO.getHandleResult())) { |
| | | //处理退款事宜 |
| | | 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); |
| | | 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()); |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | } else if (ComShopFlowerRefundOrderDO.handleResult.refuse.equals(comShopFlowerRefundOrderDTO.getHandleResult())) { |
| | | comShopFlowerRefundOrderDO.setHandleTime(new Date()); |
| | | comShopFlowerRefundOrderDO.setStatus(ComShopFlowerRefundOrderDO.status.tksb); |
| | | comShopFlowerRefundOrderDO.setHandleResult(ComShopFlowerRefundOrderDO.handleResult.refuse); |
| | | } |
| | | this.baseMapper.updateById(comShopFlowerRefundOrderDO); |
| | | return R.ok(); |
| | | } |
| | | } |