Przeglądaj źródła

//update refun

release_toaliyun_real
xhxu 4 lat temu
rodzic
commit
f67b58f148
4 zmienionych plików z 72 dodań i 48 usunięć
  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 Wyświetl plik

@@ -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 Wyświetl plik

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

/**


+ 2
- 0
mallinkService/src/main/java/com/iformall/service/WxRefundOrderService.java Wyświetl plik

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

+ 9
- 14
mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java Wyświetl plik

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


}

Ładowanie…
Anuluj
Zapisz