update 新增重新分账接口

This commit is contained in:
Lemon
2025-10-10 11:54:35 +08:00
parent f5a58a70ea
commit 28a712637f
8 changed files with 123 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
package com.jsowell.service;
import com.jsowell.common.constant.Constants;
import com.jsowell.pile.domain.OrderSplitRecord;
import com.jsowell.pile.dto.DebugOrderDTO;
import com.jsowell.pile.dto.QueryOrderSplitRecordDTO;
import com.jsowell.pile.service.OrderBasicInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Service
public class SplitBillService {
@Autowired
private OrderBasicInfoService orderBasicInfoService;
@Autowired
private TempService tempService;
/**
* 重试运营商分账
* @param dto
*/
public void retryMerchantSplit(QueryOrderSplitRecordDTO dto) {
// 首先根据 merchantId、startTime、endTime 查出日期区间内所有订单信息(包括 paymentId
List<OrderSplitRecord> recordList = orderBasicInfoService.getSplitOrders(dto);
// 判断订单是否已经成功分账
// adapayService.checkOrderSplitStatus(list);
// 将未分账的订单进行筛选、汇总
List<String> paymenIdList = new ArrayList<>();
// 将 paymentIdList 与 recordList 进行匹配,筛选出 orderCodeList
Set<String> paymentIdSet = new HashSet<>(paymenIdList);
List<String> orderCodeList = recordList.stream()
.filter(record -> paymentIdSet.contains(record.getPaymentId()))
.map(OrderSplitRecord::getOrderCode)
.collect(Collectors.toList());
// 调用 debugOrder 接口进行重新分账
for (String orderCode : orderCodeList) {
DebugOrderDTO debugOrderDTO = new DebugOrderDTO();
debugOrderDTO.setOrderCode(orderCode);
debugOrderDTO.setReSplitFlag(Constants.ONE);
tempService.debugOrder(debugOrderDTO);
}
}
}

View File

@@ -7,6 +7,7 @@ import com.jsowell.common.response.RestApiResponse;
import com.jsowell.pile.dto.QueryOrderSplitRecordDTO;
import com.jsowell.pile.service.OrderSplitRecordService;
import com.jsowell.pile.vo.web.OrderCommissionSummaryVO;
import com.jsowell.service.SplitBillService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -26,6 +27,9 @@ public class OrderSplitRecordController extends BaseController {
@Autowired
private OrderSplitRecordService orderSplitRecordService;
@Autowired
private SplitBillService splitBillService;
/**
* 后管查询引流抽成订单列表
* @param dto
@@ -61,4 +65,19 @@ public class OrderSplitRecordController extends BaseController {
}
return response;
}
/**
* 重试运营商分账
*/
public RestApiResponse<?> retryMerchantSplit(@RequestBody QueryOrderSplitRecordDTO dto) {
RestApiResponse<?> response = null;
try {
splitBillService.retryMerchantSplit(dto);
response = new RestApiResponse<>();
} catch (Exception e) {
logger.error("重试运营商分账 error", e);
response = new RestApiResponse<>(e);
}
return response;
}
}

View File

@@ -28,4 +28,6 @@ public class QueryOrderSplitRecordDTO {
private String orderCode;
private String transactionCode;
private String merchantId;
}

View File

@@ -3,6 +3,7 @@ package com.jsowell.pile.mapper;
import com.alipay.api.domain.ChargeOrderInfo;
import com.jsowell.pile.domain.OrderBasicInfo;
import com.jsowell.pile.domain.OrderDetail;
import com.jsowell.pile.domain.OrderSplitRecord;
import com.jsowell.pile.domain.UserFrequentedStationInfo;
import com.jsowell.pile.dto.*;
import com.jsowell.pile.dto.nanrui.NRQueryOrderDTO;
@@ -416,4 +417,11 @@ public interface OrderBasicInfoMapper {
List<OrderBasicInfo> getOrderBasicInfoByTimeInterval(@Param("stationIds") List<String> stationIds, @Param("startTime") String startTime, @Param("endTime") String endTime);
List<SupStationStatsVO> queryOrderListByStationIdAndTime(@Param("stationId") String stationId , @Param("startTime") String startTime , @Param("endTime") String endTime);
/**
* 查询分账订单信息
* @param dto
* @return
*/
List<OrderSplitRecord> getSplitOrders(@Param("dto") QueryOrderSplitRecordDTO dto);
}

View File

@@ -606,4 +606,11 @@ public interface OrderBasicInfoService{
* @param orderCode
*/
void closeOrderByOrderCode(String orderCode);
/**
* 获取订单分账记录
* @param dto
* @return
*/
List<OrderSplitRecord> getSplitOrders(QueryOrderSplitRecordDTO dto);
}

View File

@@ -5635,5 +5635,15 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
orderBasicInfo.setOrderStatus(OrderStatusEnum.ORDER_CLOSE_TIMEOUT.getValue());
updateOrderBasicInfo(orderBasicInfo);
}
/**
* 获取订单分账信息
* @param dto
* @return
*/
@Override
public List<OrderSplitRecord> getSplitOrders(QueryOrderSplitRecordDTO dto) {
return orderBasicInfoMapper.getSplitOrders(dto);
}
}

View File

@@ -9,6 +9,7 @@ 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;
@@ -27,6 +28,7 @@ import com.jsowell.pile.dto.QueryOrderSplitDTO;
import com.jsowell.pile.dto.QueryOrderSplitRecordDTO;
import com.jsowell.pile.dto.SplitConfigStationDTO;
import com.jsowell.pile.dto.SplitOrderDTO;
import com.jsowell.pile.mapper.OrderBasicInfoMapper;
import com.jsowell.pile.mapper.OrderSplitRecordMapper;
import com.jsowell.pile.service.AdapayMemberAccountService;
import com.jsowell.pile.service.OrderSplitRecordService;
@@ -56,6 +58,9 @@ public class OrderSplitRecordServiceImpl implements OrderSplitRecordService {
@Autowired
private AdapayMemberAccountService adapayMemberAccountService;
@Autowired
private OrderBasicInfoMapper orderBasicInfoMapper;
@Override
public int batchInsert(List<OrderSplitRecord> list) {
return orderSplitRecordMapper.batchInsert(list);
@@ -667,6 +672,8 @@ public class OrderSplitRecordServiceImpl implements OrderSplitRecordService {
return orderSplitRecordMapper.deleteOrderSplitRecord(orderCode);
}
/**
* 根据汇付会员id查询分账汇总数据
* @param dto

View File

@@ -3396,4 +3396,20 @@
and t1.create_time <![CDATA[ <= ]]> #{endTime,jdbcType=VARCHAR}
order by t1.create_time DESC
</select>
<select id="getSplitOrders" resultType="com.jsowell.pile.domain.OrderSplitRecord">
SELECT
t1.`order_code` as orderCode,
t1.`settle_amount` as settleAmount,
t2.payment_id as paymentId
FROM
`order_basic_info` t1
LEFT JOIN `adapay_callback_record` t2 ON `t1`.`order_code` = t2.`order_code`
WHERE
t1.`del_flag` = '0'
AND t1.`merchant_id` = #{dto.merchantId,jdbcType=VARCHAR}
AND t1.`settlement_time` BETWEEN #{dto.startTime,jdbcType=VARCHAR}
AND #{dto.endTime,jdbcType=VARCHAR}
AND t1.`settle_amount` > 0;
</select>
</mapper>