diff --git a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/OrderBasicInfoController.java b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/OrderBasicInfoController.java index 1542ebf23..aabcbb880 100644 --- a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/OrderBasicInfoController.java +++ b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/OrderBasicInfoController.java @@ -313,4 +313,25 @@ public class OrderBasicInfoController extends BaseController { return response; } + /** + * 根据分账id撤销已分帐 + * @param paymentConfirmId + * @return + */ + @GetMapping("/confirmReverseByPaymentConfirmId/{paymentConfirmId}") + public RestApiResponse confirmReverseByPaymentConfirmId(@PathVariable("paymentConfirmId") String paymentConfirmId) { + RestApiResponse response = null; + try { + String result = orderSplitRecordService.confirmReverseByPaymentConfirmId(paymentConfirmId); + response = new RestApiResponse<>(result); + }catch (BusinessException businessException) { + response = new RestApiResponse<>(businessException.getCode(), businessException.getMessage()); + } catch (Exception e) { + logger.error("根据分账id撤销已分帐 error, ", e); + response = new RestApiResponse<>(e); + } + logger.info("根据分账id撤销已分帐 param:{}, result:{}", paymentConfirmId, response); + return response; + } + } diff --git a/jsowell-common/src/main/java/com/jsowell/common/constant/Constants.java b/jsowell-common/src/main/java/com/jsowell/common/constant/Constants.java index ad1303660..0e7d7f020 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/constant/Constants.java +++ b/jsowell-common/src/main/java/com/jsowell/common/constant/Constants.java @@ -68,6 +68,9 @@ public class Constants { public static final String JSOWELL = "举视"; + // 希晓运营商的merchantId + public static final String XIXIAO_MERCHANT_ID_PRD = "35"; + public static final String DEFAULT = "default"; // 默认 /** @@ -75,6 +78,8 @@ public class Constants { */ public static final String DEFAULT_APP_ID = "wxbb3e0d474569481d"; // 默认微信小程序appId + public static final String XIXIAO_APP_ID = "wx20abc5210391649c"; // 希晓微信小程序appId + public static final byte[] updateServerPort = new byte[]{port}; // FTP用户名 diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderSplitRecordMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderSplitRecordMapper.java index 51a02bb23..15ddfde3b 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderSplitRecordMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderSplitRecordMapper.java @@ -59,4 +59,6 @@ public interface OrderSplitRecordMapper { * @return */ List queryStationAggregateData(@Param("dto") SplitConfigStationDTO dto); + + List selectInfoByPaymentConfirmId(String paymentConfirmId); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderSplitRecordService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderSplitRecordService.java index 9e421f588..c66b10d95 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderSplitRecordService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderSplitRecordService.java @@ -1,5 +1,6 @@ package com.jsowell.pile.service; +import com.huifu.adapay.core.exception.BaseAdaPayException; import com.jsowell.adapay.dto.PaymentConfirmParam; import com.jsowell.adapay.dto.SplitData; import com.jsowell.adapay.response.PaymentConfirmResponse; @@ -92,5 +93,11 @@ public interface OrderSplitRecordService { * @return */ List queryOrderSplitDetail(String orderCode); + + /** + * 根据分账id撤销已分帐 + * @param paymentConfirmId + */ + String confirmReverseByPaymentConfirmId(String paymentConfirmId) throws BaseAdaPayException; } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderSplitRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderSplitRecordServiceImpl.java index 0bfb7d9fe..9a5255b24 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderSplitRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderSplitRecordServiceImpl.java @@ -1,21 +1,27 @@ package com.jsowell.pile.service.impl; +import com.alibaba.fastjson2.JSON; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import com.huifu.adapay.core.exception.BaseAdaPayException; +import com.huifu.adapay.model.AdapayCommon; import com.jsowell.adapay.dto.PaymentConfirmParam; import com.jsowell.adapay.dto.SplitData; import com.jsowell.adapay.response.PaymentConfirmResponse; +import com.jsowell.adapay.service.AdapayService; import com.jsowell.common.constant.Constants; import com.jsowell.common.core.domain.model.LoginUser; import com.jsowell.common.core.page.PageResponse; import com.jsowell.common.enums.DelFlagEnum; import com.jsowell.common.enums.adapay.AdapayStatusEnum; +import com.jsowell.common.enums.ykc.ReturnCodeEnum; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.SecurityUtils; import com.jsowell.common.util.StringUtils; +import com.jsowell.common.util.id.IdUtils; import com.jsowell.pile.domain.AdapayMemberAccount; import com.jsowell.pile.domain.OrderSplitRecord; import com.jsowell.pile.domain.PileMerchantInfo; @@ -498,6 +504,48 @@ public class OrderSplitRecordServiceImpl implements OrderSplitRecordService { return resultList; } + /** + * 根据分账id撤销已分帐 + * @param paymentConfirmId + */ + @Override + public String confirmReverseByPaymentConfirmId(String paymentConfirmId) throws BaseAdaPayException { + // 根据确认id查出订单信息 + List recordList = orderSplitRecordMapper.selectInfoByPaymentConfirmId(paymentConfirmId); + if (CollectionUtils.isEmpty(recordList)) { + throw new BusinessException(ReturnCodeEnum.CODE_SELECT_INFO_IS_NULL); + } + OrderSplitRecord orderSplitRecord = recordList.get(0); + String merchantId = orderSplitRecord.getMerchantId(); + String orderCode = orderSplitRecord.getOrderCode(); + + String wxappId = Constants.DEFAULT_APP_ID; + // 通过确认id查询会查出多条分账记录,需要先判断订单所属的运营商是举视还是希晓 + if (StringUtils.equals(merchantId, Constants.XIXIAO_MERCHANT_ID_PRD)) { + wxappId = Constants.XIXIAO_APP_ID; + } + // 确认请求参数 + String newOrderCode = orderCode + "_" + DateUtils.dateTimeNow(); + Map confirmReverseParams = Maps.newHashMap(); + confirmReverseParams.put("adapay_func_code", "payments.confirm.reverse"); + confirmReverseParams.put("payment_confirm_id", paymentConfirmId); + confirmReverseParams.put("reason", "后管支付管理页面撤销已分帐"); + confirmReverseParams.put("order_no", newOrderCode); + // 调用汇付接口 + Map confirmReverseResult = AdapayCommon.requestAdapay(confirmReverseParams, wxappId); + // 获取返回参数中的status + String status = String.valueOf(confirmReverseResult.get("status")); + if (StringUtils.equals("succeeded", status)) { + // 成功撤销,将之前该订单下的所有分账信息状态改为已撤销 + recordList.forEach( + x -> x.setStatus("revoked") + ); + // 批量修改 + orderSplitRecordMapper.updateBatchSelective(recordList); + } + return status; + } + /** * 根据汇付会员id查询分账汇总数据 * @param dto diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderSplitRecordMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderSplitRecordMapper.xml index fff7c663b..fe19f6d4f 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/OrderSplitRecordMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/OrderSplitRecordMapper.xml @@ -882,4 +882,11 @@ +