Selaa lähdekoodia

add:退款同步

ct 1 viikko sitten
vanhempi
commit
ed3b05ef2c

+ 1 - 0
fs-service/src/main/java/com/fs/his/enums/FsStoreOrderLogEnum.java

@@ -33,6 +33,7 @@ public enum FsStoreOrderLogEnum {
     PLATFORM_REVIEW_SALES("PLATFORM_REVIEW_SALES","平台已审核"),
     WAREHOUSE_REVIEW_SALES("WAREHOUSE_REVIEW_SALES","仓库已审核"),
     FINANCE_REVIEW_SALES("FINANCE_REVIEW_SALES","财务已审核"),
+    SYS_REVIEW_SALES("SYS_REVIEW_SALES","后台退款"),
     PLATFORM_REVIEW_CANCEL("PLATFORM_REVIEW_CANCEL","平台已取消售后"),
 
     SET_PUSH_MOBILE("SET_PUSH_MOBILE","设置推送手机号"),

+ 169 - 58
fs-service/src/main/java/com/fs/his/service/impl/FsStorePaymentServiceImpl.java

@@ -11,6 +11,7 @@ import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeUnit;
 
 import cn.binarywang.wx.miniapp.api.WxMaService;
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONObject;
@@ -46,16 +47,16 @@ import com.fs.course.service.IFsUserCourseOrderService;
 import com.fs.course.service.IFsUserVipOrderService;
 import com.fs.his.domain.*;
 import com.fs.his.dto.PayConfigDTO;
+import com.fs.his.enums.FsStoreAfterSalesStatusEnum;
+import com.fs.his.enums.FsStoreOrderLogEnum;
+import com.fs.his.enums.FsStoreOrderStatusEnum;
 import com.fs.his.enums.PaymentMethodEnum;
 import com.fs.his.mapper.*;
 import com.fs.his.param.*;
-import com.fs.his.service.IFsInquiryOrderService;
+import com.fs.his.service.*;
 
 import com.fs.his.param.WxSendRedPacketParam;
 import com.fs.his.service.IFsInquiryOrderService;
-import com.fs.his.service.IFsPackageOrderService;
-import com.fs.his.service.IFsStoreOrderService;
-import com.fs.his.service.IFsStorePaymentService;
 import com.fs.his.utils.PhoneUtil;
 import com.fs.his.vo.FsStorePaymentExcelVO;
 import com.fs.his.vo.FsStorePaymentVO;
@@ -69,6 +70,7 @@ import com.fs.huifuPay.domain.HuiFuRefundResult;
 import com.fs.huifuPay.domain.HuifuCreateOrderResult;
 import com.fs.huifuPay.sdk.opps.core.request.V2TradePaymentScanpayQueryRequest;
 import com.fs.huifuPay.sdk.opps.core.request.V2TradePaymentScanpayRefundRequest;
+import com.fs.huifuPay.sdk.opps.core.request.V2TradePaymentScanpayRefundqueryRequest;
 import com.fs.huifuPay.sdk.opps.core.utils.HuiFuUtils;
 import com.fs.huifuPay.service.HuiFuService;
 import com.fs.system.domain.SysConfig;
@@ -218,6 +220,24 @@ public class FsStorePaymentServiceImpl implements IFsStorePaymentService {
     @Autowired
     private FsStorePaymentErrorMapper fsStorePaymentErrorMapper;
 
+    @Autowired
+    private FsStoreAfterSalesMapper fsStoreAfterSalesMapper;
+
+    @Autowired
+    private FsStoreAfterSalesLogsMapper fsStoreAfterSalesLogsMapper;
+
+    @Autowired
+    private IFsStoreOrderLogsService fsStoreOrderLogsService;
+
+    @Autowired
+    private FsStoreOrderLogsMapper fsStoreOrderLogsMapper;
+
+    @Autowired
+    FsPackageOrderMapper fsPackageOrderMapper;
+
+    @Autowired
+    FsInquiryOrderMapper inquiryOrderMapper;
+
     /**
      * 红包账户锁
      */
@@ -337,69 +357,158 @@ public class FsStorePaymentServiceImpl implements IFsStorePaymentService {
     }
 
     @Override
+    @Transactional
     public String updateFsStorePaymentByDecryptForm(Long paymentId) {
         FsStorePayment fsStorePayment = fsStorePaymentMapper.selectFsStorePaymentByPaymentId(paymentId);
-        logger.info("手动查询单号:" + paymentId + ":" + fsStorePayment);
-        if (fsStorePayment.getPayMode().equals("tz")) {
-            payQueryOrder payQueryOrder = new payQueryOrder();
-            payQueryOrder.setOrderFlowNo(fsStorePayment.getTradeNo());
-            TzBankResult<QueryOrderResult> result = tzBankService.queryOrder(payQueryOrder);
-            logger.info("手动查询内容:" + paymentId + ":" + result);
-            if (result.getRetType().equals("S") && result.getBody().getStatus().equals("90")) {
-                QueryOrderResult body = result.getBody();
-                logger.info("手动回调内容:" + body);
-                if (fsStorePayment.getBusinessType() == 1) {
-                    inquiryOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), body.getPayType(), 1,null,null);
-                } else if (fsStorePayment.getBusinessType() == 2) {
-                    storeOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), body.getPayType(), 1,null,null);
-                } else if (fsStorePayment.getBusinessType() == 3) {
-                    packageOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), body.getPayType(), 1,null,null);
-                }else if (fsStorePayment.getBusinessType() == 4) {
-                    courseOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "", 1,null,null);
-                }else if (fsStorePayment.getBusinessType() == 5) {
-                    vipOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "", 1,null,null);
+        if (fsStorePayment != null && fsStorePayment.getStatus() == 1) {
+            //退款同步
+            if (fsStorePayment.getPayMode().equals("hf")) {
+                V2TradePaymentScanpayRefundqueryRequest refundQueryRequest = new V2TradePaymentScanpayRefundqueryRequest();
+                // 退款请求日期
+                refundQueryRequest.setOrgReqDate(new SimpleDateFormat("yyyyMMdd").format(DateUtils.getNowDate()));
+//                refundQueryRequest.setOrgReqDate("20260128");
+                //自己传的
+                refundQueryRequest.setOrgReqSeqId("refund-"+fsStorePayment.getPayCode());
+                refundQueryRequest.setAppId(fsStorePayment.getAppId());
+                try {
+                    HuiFuRefundResult huiFuRefundResult = huiFuService.queryRefundOrder(refundQueryRequest);
+                    Long packageOrderId = Long.valueOf(fsStorePayment.getBusinessId());
+                    logger.info("订单查询退款返回结果:退款订单id:" + packageOrderId + huiFuRefundResult);
+                    if ((huiFuRefundResult.getResp_code().equals("00000000") || huiFuRefundResult.getResp_code().equals("00000100"))) {
+                        if(huiFuRefundResult.getBank_message().contains("成功")){
+                            FsStorePayment paymentMap = new FsStorePayment();
+                            paymentMap.setPaymentId(fsStorePayment.getPaymentId());
+                            paymentMap.setStatus(-1);
+                            paymentMap.setRefundTime(DateUtils.getNowDate());
+                            paymentMap.setRefundMoney(new BigDecimal(huiFuRefundResult.getActual_ref_amt()));
+                            fsStorePaymentMapper.updateFsStorePayment(paymentMap);
+
+                            if (packageOrderId != null) {
+                                String orderType = "package";
+                                FsPackageOrder fsPackageOrder = fsPackageOrderMapper.selectFsPackageOrderByOrderId(packageOrderId);
+                                if (fsPackageOrder != null) {
+                                    fsPackageOrder.setStatus(-2);
+                                    fsPackageOrder.setRefundStatus(2);
+                                    fsPackageOrderMapper.updateFsPackageOrder(fsPackageOrder);
+                                }
+                                if (fsPackageOrder.getInquiryOrderId() != null) {
+                                    FsInquiryOrder fsInquiryOrder = new FsInquiryOrder();
+                                    fsInquiryOrder.setOrderId(fsPackageOrder.getInquiryOrderId());
+                                    fsInquiryOrder.setStatus(-2);
+                                    inquiryOrderMapper.updateFsInquiryOrder(fsInquiryOrder);
+                                }
+                                Long orderId = fsPackageOrder.getStoreOrderId();
+                                if (orderId != null) {
+                                    FsStoreAfterSales queryParam = new FsStoreAfterSales();
+                                    queryParam.setOrderId(orderId);
+                                    List<FsStoreAfterSales> fsStoreAfterSalesList = fsStoreAfterSalesMapper.selectFsStoreAfterSalesList(queryParam);
+                                    if (fsStoreAfterSalesList != null && fsStoreAfterSalesList.size() > 0) {
+                                        //更改售后订单状态
+                                        FsStoreAfterSales fsStoreAfterSales = fsStoreAfterSalesList.get(0);
+                                        fsStoreAfterSales.setId(fsStoreAfterSales.getId());
+                                        fsStoreAfterSales.setStatus(4);
+                                        fsStoreAfterSales.setSalesStatus(3);
+                                        int i = fsStoreAfterSalesMapper.updateFsStoreAfterSales(fsStoreAfterSales);
+                                        FsStoreAfterSalesLogs logs = new FsStoreAfterSalesLogs();
+                                        logs.setChangeTime(new DateTime());
+                                        logs.setChangeType(FsStoreAfterSalesStatusEnum.STATUS_4.getValue());
+                                        logs.setStoreAfterSalesId(fsStoreAfterSales.getId());
+                                        logs.setChangeMessage(FsStoreAfterSalesStatusEnum.STATUS_4.getDesc());
+                                        logs.setOperator(fsStoreAfterSales.getOperator());
+                                        fsStoreAfterSalesLogsMapper.insertFsStoreAfterSalesLogs(logs);
+                                    }
+
+
+                                    //添加订单日志
+                                    fsStoreOrderLogsService.create(orderId, FsStoreOrderLogEnum.SYS_REVIEW_SALES.getValue(),
+                                            "同步退款 " + FsStoreOrderLogEnum.SYS_REVIEW_SALES.getDesc());
+                                    //更改订单状态
+                                    FsStoreOrder or = new FsStoreOrder();
+                                    or.setOrderId(orderId);
+                                    or.setStatus(-2);
+                                    or.setRefundTime(DateUtils.getNowDate());
+                                    storeOrderService.updateFsStoreOrder(or);
+                                    FsStoreOrderLogs Logs = new FsStoreOrderLogs();
+                                    Logs.setChangeMessage(FsStoreOrderStatusEnum.REFUND_STATUS_2.getDesc());
+                                    Logs.setOrderId(orderId);
+                                    Logs.setChangeTime(new DateTime());
+                                    Logs.setChangeType(FsStoreOrderStatusEnum.REFUND_STATUS_2.getValue().toString());
+                                    fsStoreOrderLogsMapper.insertFsStoreOrderLogs(Logs);
+                                }
+
+                            }
+                        }
+                    } else {
+                        throw new CustomException("退款请求失败" + huiFuRefundResult.getResp_desc());
+                    }
+
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
                 }
             }
-        }
-        if (fsStorePayment.getPayMode().equals("yb")) {
-            OrderQueryDTO o = new OrderQueryDTO();
-            o.setUpOrderId(fsStorePayment.getTradeNo());
-            OrderResult orderResult = ybPayService.getOrder(o);
-
-            if ("0".equals(orderResult.getState())) {
-                if (orderResult.getStatus().equals("100")) {
-                    logger.info("手动查询内容:" + paymentId + ":" + orderResult);
+
+        } else if (fsStorePayment != null && fsStorePayment.getStatus() == 0) {
+            logger.info("手动查询单号:" + paymentId + ":" + fsStorePayment);
+            if (fsStorePayment.getPayMode().equals("tz")) {
+                payQueryOrder payQueryOrder = new payQueryOrder();
+                payQueryOrder.setOrderFlowNo(fsStorePayment.getTradeNo());
+                TzBankResult<QueryOrderResult> result = tzBankService.queryOrder(payQueryOrder);
+                logger.info("手动查询内容:" + paymentId + ":" + result);
+                if (result.getRetType().equals("S") && result.getBody().getStatus().equals("90")) {
+                    QueryOrderResult body = result.getBody();
+                    logger.info("手动回调内容:" + body);
+                    if (fsStorePayment.getBusinessType() == 1) {
+                        inquiryOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), body.getPayType(), 1,null,null);
+                    } else if (fsStorePayment.getBusinessType() == 2) {
+                        storeOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), body.getPayType(), 1,null,null);
+                    } else if (fsStorePayment.getBusinessType() == 3) {
+                        packageOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), body.getPayType(), 1,null,null);
+                    }else if (fsStorePayment.getBusinessType() == 4) {
+                        courseOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "", 1,null,null);
+                    }else if (fsStorePayment.getBusinessType() == 5) {
+                        vipOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "", 1,null,null);
+                    }
+                }
+            }
+            if (fsStorePayment.getPayMode().equals("yb")) {
+                OrderQueryDTO o = new OrderQueryDTO();
+                o.setUpOrderId(fsStorePayment.getTradeNo());
+                OrderResult orderResult = ybPayService.getOrder(o);
+
+                if ("0".equals(orderResult.getState())) {
                     if (orderResult.getStatus().equals("100")) {
-                        if (fsStorePayment.getBusinessType() == 1) {
-                            inquiryOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "14", 1,null,null);
-                        } else if (fsStorePayment.getBusinessType() == 2) {
-                            storeOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "14", 1,null,null);
-                        } else if (fsStorePayment.getBusinessType() == 3) {
-                            packageOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "14", 1,null,null);
-                        }else if (fsStorePayment.getBusinessType() == 4) {
-                            courseOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "", 1,null,null);
-                        }else if (fsStorePayment.getBusinessType() == 5) {
-                            vipOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "", 1,null,null);
+                        logger.info("手动查询内容:" + paymentId + ":" + orderResult);
+                        if (orderResult.getStatus().equals("100")) {
+                            if (fsStorePayment.getBusinessType() == 1) {
+                                inquiryOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "14", 1,null,null);
+                            } else if (fsStorePayment.getBusinessType() == 2) {
+                                storeOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "14", 1,null,null);
+                            } else if (fsStorePayment.getBusinessType() == 3) {
+                                packageOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "14", 1,null,null);
+                            }else if (fsStorePayment.getBusinessType() == 4) {
+                                courseOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "", 1,null,null);
+                            }else if (fsStorePayment.getBusinessType() == 5) {
+                                vipOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "", 1,null,null);
+                            }
                         }
                     }
                 }
             }
-        }
-        if (fsStorePayment.getPayMode().equals("hf")) {
-            V2TradePaymentScanpayQueryRequest request = new V2TradePaymentScanpayQueryRequest();
-            request.setOrgReqDate(new SimpleDateFormat("yyyyMMdd").format(fsStorePayment.getCreateTime()));
-            request.setOrgHfSeqId(fsStorePayment.getTradeNo());
-            request.setAppId(fsStorePayment.getAppId());
-            HuiFuQueryOrderResult queryOrderResult = null;
-            try {
-                queryOrderResult = huiFuService.queryOrder(request);
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            }
-            logger.info("汇付返回"+queryOrderResult);
-            if ("00000000".equals(queryOrderResult.getResp_code())) {
-                if (queryOrderResult.getTrans_stat().equals("S")) {
-                    logger.info("手动查询内容:" + paymentId + ":" + request);
+            if (fsStorePayment.getPayMode().equals("hf")) {
+                V2TradePaymentScanpayQueryRequest request = new V2TradePaymentScanpayQueryRequest();
+                request.setOrgReqDate(new SimpleDateFormat("yyyyMMdd").format(fsStorePayment.getCreateTime()));
+                request.setOrgHfSeqId(fsStorePayment.getTradeNo());
+                request.setAppId(fsStorePayment.getAppId());
+                HuiFuQueryOrderResult queryOrderResult = null;
+                try {
+                    queryOrderResult = huiFuService.queryOrder(request);
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+                logger.info("汇付返回"+queryOrderResult);
+                if ("00000000".equals(queryOrderResult.getResp_code())) {
+                    if (queryOrderResult.getTrans_stat().equals("S")) {
+                        logger.info("手动查询内容:" + paymentId + ":" + request);
                         if (fsStorePayment.getBusinessType() == 1) {
                             inquiryOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "14", 1,queryOrderResult.getOut_trans_id(),queryOrderResult.getParty_order_id());
                         } else if (fsStorePayment.getBusinessType() == 2) {
@@ -412,9 +521,11 @@ public class FsStorePaymentServiceImpl implements IFsStorePaymentService {
                             vipOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "", 1,queryOrderResult.getOut_trans_id(),queryOrderResult.getParty_order_id());
                         }
 
+                    }
                 }
             }
         }
+
         return "同步完成";
 }
     @Autowired

+ 12 - 0
fs-service/src/main/java/com/fs/huifuPay/sdk/opps/core/request/V2TradePaymentScanpayRefundqueryRequest.java

@@ -37,6 +37,9 @@ public class V2TradePaymentScanpayRefundqueryRequest extends BaseRequest {
     @JSONField(name = "mer_ord_id")
     private String merOrdId;
 
+
+    private String appId;
+
     @Override
     public FunctionCodeEnum getFunctionCode() {
         return FunctionCodeEnum.V2_TRADE_PAYMENT_SCANPAY_REFUNDQUERY;
@@ -93,4 +96,13 @@ public class V2TradePaymentScanpayRefundqueryRequest extends BaseRequest {
         this.merOrdId = merOrdId;
     }
 
+
+    public String getAppId() {
+        return appId;
+    }
+
+    public void setAppId(String appId) {
+        this.appId = appId;
+    }
+
 }

+ 13 - 1
fs-service/src/main/java/com/fs/huifuPay/service/impl/HuiFuServiceImpl.java

@@ -190,7 +190,19 @@ public class HuiFuServiceImpl implements HuiFuService {
 
     @Override
     public HuiFuRefundResult queryRefundOrder(V2TradePaymentScanpayRefundqueryRequest request)throws Exception {
-        doInit(getMerConfig());
+        if (request.getAppId() != null) {
+            FsHfpayConfigMapper fsHfpayConfigMapper = SpringUtils.getBean(FsHfpayConfigMapper.class);
+            FsHfpayConfig fsHfpayConfig = fsHfpayConfigMapper.selectByAppId(request.getAppId());
+            if (fsHfpayConfig != null) {
+                //多汇付支付获取配置
+                doInit(getMerConfig(fsHfpayConfig));
+            } else {
+                //多小程序
+                doInit(getMerConfig());
+            }
+        } else {
+            doInit(getMerConfig());
+        }
         Map<String, Object> extendInfoMap = request.getExtendInfos();
         extendInfoMap.put("notify_url", config.getHfRefundNotifyUrl());
         request.setExtendInfo(extendInfoMap);

+ 1 - 0
fs-service/src/main/resources/mapper/his/FsStoreAfterSalesMapper.xml

@@ -62,6 +62,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="isPackage != null "> and is_package = #{isPackage}</if>
             <if test="packageJson != null  and packageJson != ''"> and package_json = #{packageJson}</if>
         </where>
+        order by id desc
     </select>
 
     <select id="selectFsStoreAfterSalesById" parameterType="Long" resultMap="FsStoreAfterSalesResult">