Browse Source

//update refun

release_toaliyun_real
xhxu 4 years ago
parent
commit
f67b58f148
4 changed files with 72 additions and 48 deletions
  1. +27
    -0
      mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java
  2. +34
    -34
      mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java
  3. +2
    -0
      mallinkService/src/main/java/com/iformall/service/WxRefundOrderService.java
  4. +9
    -14
      mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java

+ 27
- 0
mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java View File

@@ -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);
}

} }

+ 34
- 34
mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java View File

@@ -1997,7 +1997,7 @@ public class PosServiceImpl implements PosService {
Integer iSceneType, Integer iSceneType,
Long posOrderId, Long memId, Integer orderAmount, Date orderTime, String orderCreateSn) { Long posOrderId, Long memId, Integer orderAmount, Date orderTime, String orderCreateSn) {
// add to wx_order // 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); String refundDetail = params.get(WxPayConstant.NEU_REFUND_DETAIL);
JSONObject refundDetailObj = JSON.parseObject(refundDetail); JSONObject refundDetailObj = JSON.parseObject(refundDetail);
JSONArray refundDetailList = refundDetailObj.getJSONArray(WxPayConstant.NEU_REFUND_DETAIL_LIST); JSONArray refundDetailList = refundDetailObj.getJSONArray(WxPayConstant.NEU_REFUND_DETAIL_LIST);
@@ -2033,7 +2033,7 @@ public class PosServiceImpl implements PosService {
logger.error(e.getMessage()); logger.error(e.getMessage());
throw new MallinkException(ErrorCode.SYS_PARAMETER_CAST_ERROR.getCode(), e.getMessage()); throw new MallinkException(ErrorCode.SYS_PARAMETER_CAST_ERROR.getCode(), e.getMessage());
} }
refundOrderFromPos(buUser, refundOrder, memId,
refundOrderFromPos(buUser, wxOrder, memId,
posPayOrderId, posRefundOrderId, posRefundOrderTime, posPayOrderId, posRefundOrderId, posRefundOrderTime,
neuRefundPayOrderStatus, neuRefundAmount,neuRefundType, neuRefundPayOrderStatus, neuRefundAmount,neuRefundType,
neuRefundThirdNo); neuRefundThirdNo);
@@ -2341,21 +2341,21 @@ public class PosServiceImpl implements PosService {
/** /**
* 退款订单POS * 退款订单POS
* @param buUser * @param buUser
* @param refundOrder
* @param wxOrder
* @param memId * @param memId
* @return * @return
*/ */
public WxRefundOrder refundOrderFromPos( public WxRefundOrder refundOrderFromPos(
WxMerchantBUser buUser, WxOrder refundOrder, Long memId,
WxMerchantBUser buUser, WxOrder wxOrder, Long memId,
Long posPayOrderId, Long posRefundOrderId, Date posRefundOrderTime, Long posPayOrderId, Long posRefundOrderId, Date posRefundOrderTime,
Integer posRefundOrderStatus, Integer posRefundAmount, Integer posRefundType, Integer posRefundOrderStatus, Integer posRefundAmount, Integer posRefundType,
String neuRefundThirdNo) { String neuRefundThirdNo) {
// 1. pay order // 1. pay order
// 查找支付订单 // 查找支付订单
WxPayOrder payOrderQ = new WxPayOrder(); 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.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode());
payOrderQ.setPosPayOrderId(posPayOrderId); payOrderQ.setPosPayOrderId(posPayOrderId);


@@ -2371,39 +2371,39 @@ public class PosServiceImpl implements PosService {
// 2. insert into refund order // 2. insert into refund order
final IdWorker idWorker = IdWorker.get(); final IdWorker idWorker = IdWorker.get();
Long refundId = idWorker.nextId(); Long refundId = idWorker.nextId();
WxRefundOrder refundPayOrder = new WxRefundOrder();
WxRefundOrder refundOrder = new WxRefundOrder();


Date curDate = new Date(); 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) { 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); throw new MallinkException(ErrorCode.DB_FAIL);
} }


return refundPayOrder;
return refundOrder;
} }


/** /**


+ 2
- 0
mallinkService/src/main/java/com/iformall/service/WxRefundOrderService.java View File

@@ -100,4 +100,6 @@ public interface WxRefundOrderService {
boolean hasRefundOrder(Long orderId, Integer status); boolean hasRefundOrder(Long orderId, Integer status);


void actionAfterCouponOrder(WxOrder wxOrder, WxCUserBasicInfo basicInfo); void actionAfterCouponOrder(WxOrder wxOrder, WxCUserBasicInfo basicInfo);

WxRefundOrder findRefundOrder(TenantEntity tenantInfo, Long orderId);
} }

+ 9
- 14
mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java View File

@@ -1,7 +1,6 @@
package com.iformall.service.impl; 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.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
@@ -12,30 +11,18 @@ import com.iformall.common.ResultData;
import com.iformall.domain.po.*; import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.po.msg.FmInsideOrderRefundMsg; import com.iformall.domain.po.msg.FmInsideOrderRefundMsg;
import com.iformall.domain.po.msg.FmInsideOrderSuccessMsg;
import com.iformall.domain.po.msg.WxMsgRecord; import com.iformall.domain.po.msg.WxMsgRecord;
import com.iformall.enums.*; import com.iformall.enums.*;
import com.iformall.exception.MallinkException; import com.iformall.exception.MallinkException;
import com.iformall.mapper.*; import com.iformall.mapper.*;
import com.iformall.mq.MqBaseProducer; 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.WxAppinfoService;
import com.iformall.service.WxOrderService; import com.iformall.service.WxOrderService;
import com.iformall.service.WxRefundOrderService; 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.PayServiceFactory;
import com.iformall.service.pay.service.pay.entity.PayQueryAdapterResult; 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.RefundAdapterResult;
import com.iformall.service.pay.service.refund.entity.RefundNotifyAdapterResult; 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.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; 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));
}



} }

Loading…
Cancel
Save