diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index d41087690..d7f48d466 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -603,4 +603,31 @@ public class WxOrderController extends BaseController { } } + @ApiOperation("查询退款") + @GetMapping("getRefund") + public ResultData getRefund(Long orderId) { + // c端用户应该只能看到自己的订单 + if (orderId == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + WxOrder wxOrder = wxOrderService.getById(orderId,getTenantInfo().getTenantId()); + if (wxOrder == null) { + logger.error("交易订单不存在:" + orderId); + return new ResultData(ErrorCode.ORDER_IS_NOT_FIND); + } + if(!EnumOrderStatus.ORDER_STATUS_PENDING_REFUND.getCode().equals(wxOrder.getOrderStatus()) + || !EnumOrderStatus.ORDER_STATUS_REFUND_SUCCESS.getCode().equals(wxOrder.getOrderStatus()) + || !EnumOrderStatus.ORDER_STATUS_REFUND_FAILD.getCode().equals(wxOrder.getOrderStatus())){ + logger.error("交易订单状态不是退款状态:" + EnumOrderStatus.getEnum(wxOrder.getOrderStatus()).getMessage()); + return new ResultData(ErrorCode.ORDER_IS_NOT_FIND.getCode(),"订单不是退款状态"); + } + + WxRefundOrder refundOrder = wxRefundOrderService.findRefundOrder(getTenantInfo(), orderId); + if(refundOrder == null){ + return new ResultData(ErrorCode.REFUND_ORDER_ERROR.getCode(),"退款订单不存在"); + } + + return new ResultData(refundOrder); + } + } diff --git a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java index 58fb469d3..788cb6de9 100644 --- a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java +++ b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java @@ -1997,7 +1997,7 @@ public class PosServiceImpl implements PosService { Integer iSceneType, Long posOrderId, Long memId, Integer orderAmount, Date orderTime, String orderCreateSn) { // add to wx_order - WxOrder refundOrder = createRefundByPos(buUser, memId, posOrderId, orderAmount, orderTime, orderCreateSn); + WxOrder wxOrder = createRefundByPos(buUser, memId, posOrderId, orderAmount, orderTime, orderCreateSn); String refundDetail = params.get(WxPayConstant.NEU_REFUND_DETAIL); JSONObject refundDetailObj = JSON.parseObject(refundDetail); JSONArray refundDetailList = refundDetailObj.getJSONArray(WxPayConstant.NEU_REFUND_DETAIL_LIST); @@ -2033,7 +2033,7 @@ public class PosServiceImpl implements PosService { logger.error(e.getMessage()); throw new MallinkException(ErrorCode.SYS_PARAMETER_CAST_ERROR.getCode(), e.getMessage()); } - refundOrderFromPos(buUser, refundOrder, memId, + refundOrderFromPos(buUser, wxOrder, memId, posPayOrderId, posRefundOrderId, posRefundOrderTime, neuRefundPayOrderStatus, neuRefundAmount,neuRefundType, neuRefundThirdNo); @@ -2341,21 +2341,21 @@ public class PosServiceImpl implements PosService { /** * 退款订单POS * @param buUser - * @param refundOrder + * @param wxOrder * @param memId * @return */ public WxRefundOrder refundOrderFromPos( - WxMerchantBUser buUser, WxOrder refundOrder, Long memId, + WxMerchantBUser buUser, WxOrder wxOrder, Long memId, Long posPayOrderId, Long posRefundOrderId, Date posRefundOrderTime, Integer posRefundOrderStatus, Integer posRefundAmount, Integer posRefundType, String neuRefundThirdNo) { // 1. pay order // 查找支付订单 WxPayOrder payOrderQ = new WxPayOrder(); - payOrderQ.updateTenantInfo(refundOrder); - payOrderQ.setCUserId(refundOrder.getCUserId()); - payOrderQ.setOrderId(refundOrder.getComposeOrderId()); + payOrderQ.updateTenantInfo(wxOrder); + payOrderQ.setCUserId(wxOrder.getCUserId()); + payOrderQ.setOrderId(wxOrder.getComposeOrderId()); payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); payOrderQ.setPosPayOrderId(posPayOrderId); @@ -2371,39 +2371,39 @@ public class PosServiceImpl implements PosService { // 2. insert into refund order final IdWorker idWorker = IdWorker.get(); Long refundId = idWorker.nextId(); - WxRefundOrder refundPayOrder = new WxRefundOrder(); + WxRefundOrder refundOrder = new WxRefundOrder(); Date curDate = new Date(); - refundPayOrder.setId(refundId); - refundPayOrder.setRefundId(String.valueOf(refundId)); - refundPayOrder.setTenantId(buUser.getTenantId()); - refundPayOrder.updateTenantInfo(buUser); - refundPayOrder.setCUserId(memId); - refundPayOrder.setOrderId(refundOrder.getComposeOrderId()); - refundPayOrder.setCreateTime(curDate); - refundPayOrder.setUpdateTime(curDate); - refundPayOrder.setRefundTimeStart(curDate); - refundPayOrder.setRefundTimeEnd(curDate); - refundPayOrder.setTotalFee(posRefundAmount); - refundPayOrder.setRefundFee(posRefundAmount); - refundPayOrder.setRefundFrom(EnumPayFrom.POS.getCode()); - refundPayOrder.setRefundOrderStatus(EnumRefundStatus.REFUND_SUCCESS.getCode()); - refundPayOrder.setPosPayOrderId(posPayOrderId); - refundPayOrder.setPosRefundOrderId(posRefundOrderId); - refundPayOrder.setPosRefundOrderTime(posRefundOrderTime.getTime()); - refundPayOrder.setPosRefundOrderStatus(posRefundOrderStatus); - refundPayOrder.setPosRefundType(posRefundType); - refundPayOrder.setPosRefundDes("POS退款"); - refundPayOrder.setPosRefundOrderNo(neuRefundThirdNo); - refundPayOrder.setPayOrderNo(String.valueOf(payOrderQ.getId())); - - int sqlRow = refundOrderMapper.insert(refundPayOrder); + refundOrder.setId(refundId); + refundOrder.setRefundId(String.valueOf(refundId)); + refundOrder.setTenantId(buUser.getTenantId()); + refundOrder.updateTenantInfo(buUser); + refundOrder.setCUserId(memId); + refundOrder.setOrderId(wxOrder.getId()); + refundOrder.setCreateTime(curDate); + refundOrder.setUpdateTime(curDate); + refundOrder.setRefundTimeStart(curDate); + refundOrder.setRefundTimeEnd(curDate); + refundOrder.setTotalFee(posRefundAmount); + refundOrder.setRefundFee(posRefundAmount); + refundOrder.setRefundFrom(EnumPayFrom.POS.getCode()); + refundOrder.setRefundOrderStatus(EnumRefundStatus.REFUND_SUCCESS.getCode()); + refundOrder.setPosPayOrderId(posPayOrderId); + refundOrder.setPosRefundOrderId(posRefundOrderId); + refundOrder.setPosRefundOrderTime(posRefundOrderTime.getTime()); + refundOrder.setPosRefundOrderStatus(posRefundOrderStatus); + refundOrder.setPosRefundType(posRefundType); + refundOrder.setPosRefundDes("POS退款"); + refundOrder.setPosRefundOrderNo(neuRefundThirdNo); + refundOrder.setPayOrderNo(String.valueOf(payOrderQ.getId())); + + int sqlRow = refundOrderMapper.insert(refundOrder); if (sqlRow != 1) { - logger.error("refund order insert error: " + refundPayOrder.toString()); + logger.error("refund order insert error: " + refundOrder.toString()); throw new MallinkException(ErrorCode.DB_FAIL); } - return refundPayOrder; + return refundOrder; } /** diff --git a/mallinkService/src/main/java/com/iformall/service/WxRefundOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxRefundOrderService.java index a6381d2b0..80e928e40 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxRefundOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxRefundOrderService.java @@ -100,4 +100,6 @@ public interface WxRefundOrderService { boolean hasRefundOrder(Long orderId, Integer status); void actionAfterCouponOrder(WxOrder wxOrder, WxCUserBasicInfo basicInfo); + + WxRefundOrder findRefundOrder(TenantEntity tenantInfo, Long orderId); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java index 24f4f6e84..4d5ac0e0b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java @@ -1,7 +1,6 @@ package com.iformall.service.impl; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; + import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -12,30 +11,18 @@ import com.iformall.common.ResultData; import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.msg.FmInsideOrderRefundMsg; -import com.iformall.domain.po.msg.FmInsideOrderSuccessMsg; import com.iformall.domain.po.msg.WxMsgRecord; import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; import com.iformall.mq.MqBaseProducer; -import com.iformall.pay.WxPay; -import com.iformall.pay.WxPayment; -import com.iformall.pay.WxRefundOrderP; -import com.iformall.pay.WxRefundOrderSP; import com.iformall.service.WxAppinfoService; import com.iformall.service.WxOrderService; import com.iformall.service.WxRefundOrderService; -import com.iformall.service.helper.WxPayOrderServiceHelper; -import com.iformall.service.order.OrderFactory; import com.iformall.service.pay.PayServiceFactory; import com.iformall.service.pay.service.pay.entity.PayQueryAdapterResult; import com.iformall.service.pay.service.refund.entity.RefundAdapterResult; import com.iformall.service.pay.service.refund.entity.RefundNotifyAdapterResult; -import com.iformall.utils.BeanUtils; -import com.iformall.utils.CipherUtil; -import com.iformall.utils.Utility; -import com.iformall.utils.XmlUtil; -import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -874,5 +861,13 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { } } + @Override + public WxRefundOrder findRefundOrder(TenantEntity tenantInfo, Long orderId) { + WxRefundOrder refundOrderQ = new WxRefundOrder(); + refundOrderQ.updateTenantInfo(tenantInfo); + refundOrderQ.setOrderId(orderId); + return wxRefundOrderMapper.selectOne(new QueryWrapper<>(refundOrderQ)); + } + }