查询时间段内的订单分账记录

This commit is contained in:
Guoqs
2025-01-17 16:40:33 +08:00
parent 2785d91b4f
commit 1683ccd968
6 changed files with 80 additions and 67 deletions

View File

@@ -99,6 +99,11 @@ public class OrderSplitRecord {
*/ */
private BigDecimal serviceSplitAmount; private BigDecimal serviceSplitAmount;
/**
* 手续费(只能有一方承担手续费)
*/
private BigDecimal feeAmount;
/** /**
* 备注 * 备注
*/ */

View File

@@ -2,6 +2,7 @@ package com.jsowell.pile.service;
import com.jsowell.adapay.dto.PaymentConfirmParam; import com.jsowell.adapay.dto.PaymentConfirmParam;
import com.jsowell.adapay.dto.SplitData; import com.jsowell.adapay.dto.SplitData;
import com.jsowell.adapay.response.PaymentConfirmResponse;
import com.jsowell.pile.domain.OrderSplitRecord; import com.jsowell.pile.domain.OrderSplitRecord;
import com.jsowell.pile.vo.OrderInfoDetailVO; import com.jsowell.pile.vo.OrderInfoDetailVO;
import com.jsowell.pile.vo.web.OrderSplitDailySummaryData; import com.jsowell.pile.vo.web.OrderSplitDailySummaryData;
@@ -27,6 +28,7 @@ public interface OrderSplitRecordService {
/** /**
* 批量保存订单分账记录 * 批量保存订单分账记录
*
* @param list * @param list
* @return * @return
*/ */
@@ -35,12 +37,13 @@ public interface OrderSplitRecordService {
/** /**
* 保存订单分账记录 * 保存订单分账记录
*/ */
void saveOrderSplitRecord(PaymentConfirmParam param, String id, List<SplitData> stationSplitConfigList, OrderInfoDetailVO orderInfoDetailVO); void saveOrderSplitRecord(PaymentConfirmParam param, PaymentConfirmResponse response, List<SplitData> stationSplitConfigList, OrderInfoDetailVO orderInfoDetailVO);
List<OrderSplitRecordVO> selectByOrderCode(String orderCode); List<OrderSplitRecordVO> selectByOrderCode(String orderCode);
/** /**
* 根据入参拉出时间段内所有订单的分账记录 * 根据入参拉出时间段内所有订单的分账记录
*
* @param merchantId 运营商id * @param merchantId 运营商id
* @param stationId 站点id * @param stationId 站点id
* @param startTime 开始时间 * @param startTime 开始时间

View File

@@ -1708,7 +1708,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
.build(); .build();
splitDataList.add(splitData); splitDataList.add(splitData);
OrderInfoDetailVO orderInfoDetailVO = getOrderInfoDetailVO(orderBasicInfo, orderDetail); OrderInfoDetailVO orderInfoDetailVO = getOrderInfoDetailVO(orderBasicInfo, orderDetail);
orderSplitRecordService.saveOrderSplitRecord(param, paymentConfirmResponse.getId(), splitDataList, orderInfoDetailVO); orderSplitRecordService.saveOrderSplitRecord(param, paymentConfirmResponse, splitDataList, orderInfoDetailVO);
} }
} }
return result; return result;
@@ -1879,7 +1879,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
PaymentConfirmResponse paymentConfirmRequest = adapayService.createPaymentConfirmRequest(param); PaymentConfirmResponse paymentConfirmRequest = adapayService.createPaymentConfirmRequest(param);
// 保存订单分账记录 // 保存订单分账记录
OrderInfoDetailVO orderInfoDetailVO = getOrderInfoDetailVO(orderCode); OrderInfoDetailVO orderInfoDetailVO = getOrderInfoDetailVO(orderCode);
orderSplitRecordService.saveOrderSplitRecord(param, paymentConfirmRequest.getId(), splitDataList, orderInfoDetailVO); orderSplitRecordService.saveOrderSplitRecord(param, paymentConfirmRequest, splitDataList, orderInfoDetailVO);
return paymentConfirmRequest; return paymentConfirmRequest;
} }

View File

@@ -4,6 +4,7 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.jsowell.adapay.dto.PaymentConfirmParam; import com.jsowell.adapay.dto.PaymentConfirmParam;
import com.jsowell.adapay.dto.SplitData; import com.jsowell.adapay.dto.SplitData;
import com.jsowell.adapay.response.PaymentConfirmResponse;
import com.jsowell.common.constant.Constants; import com.jsowell.common.constant.Constants;
import com.jsowell.common.enums.DelFlagEnum; import com.jsowell.common.enums.DelFlagEnum;
import com.jsowell.common.enums.adapay.AdapayStatusEnum; import com.jsowell.common.enums.adapay.AdapayStatusEnum;
@@ -38,66 +39,33 @@ public class OrderSplitRecordServiceImpl implements OrderSplitRecordService {
@Autowired @Autowired
private AdapayMemberAccountService adapayMemberAccountService; private AdapayMemberAccountService adapayMemberAccountService;
// @Override
// public int deleteByPrimaryKey(Integer id) {
// return orderSplitRecordMapper.deleteByPrimaryKey(id);
// }
// @Override
// public int insertOrUpdate(OrderSplitRecord record) {
// return orderSplitRecordMapper.insertOrUpdate(record);
// }
// @Override
// public int insertOrUpdateSelective(OrderSplitRecord record) {
// return orderSplitRecordMapper.insertOrUpdateSelective(record);
// }
// @Override
// public int insertSelective(OrderSplitRecord record) {
// return orderSplitRecordMapper.insertSelective(record);
// }
// @Override
// public OrderSplitRecord selectByPrimaryKey(Integer id) {
// return orderSplitRecordMapper.selectByPrimaryKey(id);
// }
// @Override
// public int updateByPrimaryKeySelective(OrderSplitRecord record) {
// return orderSplitRecordMapper.updateByPrimaryKeySelective(record);
// }
// @Override
// public int updateBatchSelective(List<OrderSplitRecord> list) {
// return orderSplitRecordMapper.updateBatchSelective(list);
// }
@Override @Override
public int batchInsert(List<OrderSplitRecord> list) { public int batchInsert(List<OrderSplitRecord> list) {
return orderSplitRecordMapper.batchInsert(list); return orderSplitRecordMapper.batchInsert(list);
} }
@Override @Override
public void saveOrderSplitRecord(PaymentConfirmParam param, String paymentConfirmId, List<SplitData> splitDataList, OrderInfoDetailVO orderInfoDetailVO) { public void saveOrderSplitRecord(PaymentConfirmParam param, PaymentConfirmResponse response, List<SplitData> splitDataList, OrderInfoDetailVO orderInfoDetailVO) {
List<OrderSplitRecord> list = Lists.newArrayList(); // 判断入参
if (param == null || response == null || CollectionUtils.isEmpty(param.getDivMemberList()) || orderInfoDetailVO == null) {
String orderCode = param.getOrderCode(); return;
BigDecimal settleAmount = param.getConfirmAmt(); }
String paymentId = param.getPaymentId(); String paymentConfirmId = response.getId(); // 支付确认id
String feeAmt = response.getFee_amt(); // 手续费
String orderCode = param.getOrderCode(); // 订单号
BigDecimal settleAmount = param.getConfirmAmt(); // 结算金额
String paymentId = param.getPaymentId(); // 支付id
List<OrderSplitRecord> list = Lists.newArrayList(); // 订单分账记录集合
for (SplitData splitData : splitDataList) { for (SplitData splitData : splitDataList) {
OrderSplitRecord orderSplitRecord = new OrderSplitRecord(); OrderSplitRecord orderSplitRecord = new OrderSplitRecord();
orderSplitRecord.setOrderCode(orderCode); orderSplitRecord.setOrderCode(orderCode);
orderSplitRecord.setStatus(AdapayStatusEnum.SUCCEEDED.getValue()); orderSplitRecord.setStatus(AdapayStatusEnum.SUCCEEDED.getValue());
orderSplitRecord.setSettleAmount(settleAmount); orderSplitRecord.setSettleAmount(settleAmount);
orderSplitRecord.setTradeDate(DateUtils.getDate()); // 订单结算日期 yyyy-MM-dd orderSplitRecord.setTradeDate(DateUtils.getDate()); // 订单结算日期 yyyy-MM-dd
if (orderInfoDetailVO != null) {
orderSplitRecord.setMerchantId(orderInfoDetailVO.getMerchantId()); orderSplitRecord.setMerchantId(orderInfoDetailVO.getMerchantId());
orderSplitRecord.setStationId(orderInfoDetailVO.getStationId()); orderSplitRecord.setStationId(orderInfoDetailVO.getStationId());
orderSplitRecord.setElectricityAmount(orderInfoDetailVO.getTotalElectricityAmount()); orderSplitRecord.setElectricityAmount(orderInfoDetailVO.getTotalElectricityAmount());
orderSplitRecord.setServiceAmount(orderInfoDetailVO.getTotalServiceAmount()); orderSplitRecord.setServiceAmount(orderInfoDetailVO.getTotalServiceAmount());
}
orderSplitRecord.setAdapayMemberId(splitData.getMemberId()); orderSplitRecord.setAdapayMemberId(splitData.getMemberId());
orderSplitRecord.setPaymentId(paymentId); orderSplitRecord.setPaymentId(paymentId);
orderSplitRecord.setPaymentConfirmId(paymentConfirmId); orderSplitRecord.setPaymentConfirmId(paymentConfirmId);
@@ -109,6 +77,12 @@ public class OrderSplitRecordServiceImpl implements OrderSplitRecordService {
orderSplitRecord.setDelFlag(DelFlagEnum.NORMAL.getValue()); orderSplitRecord.setDelFlag(DelFlagEnum.NORMAL.getValue());
orderSplitRecord.setCreateBy(Constants.SYSTEM); orderSplitRecord.setCreateBy(Constants.SYSTEM);
orderSplitRecord.setCreateTime(DateUtils.getNowDate()); orderSplitRecord.setCreateTime(DateUtils.getNowDate());
// 如果是手续费承担方, 保存feeAmt, 否则保存0
if (StringUtils.equals(splitData.getFeeFlag(), Constants.Y)) {
orderSplitRecord.setFeeAmount(new BigDecimal(feeAmt));
} else {
orderSplitRecord.setFeeAmount(BigDecimal.ZERO);
}
list.add(orderSplitRecord); list.add(orderSplitRecord);
} }
this.batchInsert(list); this.batchInsert(list);
@@ -144,6 +118,7 @@ public class OrderSplitRecordServiceImpl implements OrderSplitRecordService {
/** /**
* 根据入参拉出时间段内所有订单的分账记录 * 根据入参拉出时间段内所有订单的分账记录
*
* @param merchantId 运营商id * @param merchantId 运营商id
* @param stationId 站点id * @param stationId 站点id
* @param startTime 开始时间 * @param startTime 开始时间
@@ -254,3 +229,4 @@ public class OrderSplitRecordServiceImpl implements OrderSplitRecordService {
} }

View File

@@ -20,6 +20,7 @@
<result column="electricity_split_amount" jdbcType="DECIMAL" property="electricitySplitAmount" /> <result column="electricity_split_amount" jdbcType="DECIMAL" property="electricitySplitAmount" />
<result column="service_split_ratio" jdbcType="DECIMAL" property="serviceSplitRatio" /> <result column="service_split_ratio" jdbcType="DECIMAL" property="serviceSplitRatio" />
<result column="service_split_amount" jdbcType="DECIMAL" property="serviceSplitAmount" /> <result column="service_split_amount" jdbcType="DECIMAL" property="serviceSplitAmount" />
<result column="fee_amount" jdbcType="DECIMAL" property="feeAmount" />
<result column="remark" jdbcType="VARCHAR" property="remark" /> <result column="remark" jdbcType="VARCHAR" property="remark" />
<result column="create_by" jdbcType="VARCHAR" property="createBy" /> <result column="create_by" jdbcType="VARCHAR" property="createBy" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" /> <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
@@ -31,8 +32,8 @@
<!--@mbg.generated--> <!--@mbg.generated-->
id, order_code, merchant_id, station_id, `status`, settle_amount, electricity_amount, id, order_code, merchant_id, station_id, `status`, settle_amount, electricity_amount,
service_amount, trade_date, adapay_member_id, payment_id, payment_confirm_id, electricity_split_ratio, service_amount, trade_date, adapay_member_id, payment_id, payment_confirm_id, electricity_split_ratio,
electricity_split_amount, service_split_ratio, service_split_amount, remark, create_by, electricity_split_amount, service_split_ratio, service_split_amount, fee_amount,
create_time, update_by, update_time, del_flag remark, create_by, create_time, update_by, update_time, del_flag
</sql> </sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap"> <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
<!--@mbg.generated--> <!--@mbg.generated-->
@@ -95,6 +96,9 @@
<if test="serviceSplitAmount != null"> <if test="serviceSplitAmount != null">
service_split_amount, service_split_amount,
</if> </if>
<if test="feeAmount != null">
fee_amount,
</if>
<if test="remark != null"> <if test="remark != null">
remark, remark,
</if> </if>
@@ -160,6 +164,9 @@
<if test="serviceSplitAmount != null"> <if test="serviceSplitAmount != null">
#{serviceSplitAmount,jdbcType=DECIMAL}, #{serviceSplitAmount,jdbcType=DECIMAL},
</if> </if>
<if test="feeAmount != null">
#{feeAmount,jdbcType=DECIMAL},
</if>
<if test="remark != null"> <if test="remark != null">
#{remark,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR},
</if> </if>
@@ -229,6 +236,9 @@
<if test="serviceSplitAmount != null"> <if test="serviceSplitAmount != null">
service_split_amount = #{serviceSplitAmount,jdbcType=DECIMAL}, service_split_amount = #{serviceSplitAmount,jdbcType=DECIMAL},
</if> </if>
<if test="feeAmount != null">
fee_amount = #{feeAmount,jdbcType=DECIMAL},
</if>
<if test="remark != null"> <if test="remark != null">
remark = #{remark,jdbcType=VARCHAR}, remark = #{remark,jdbcType=VARCHAR},
</if> </if>
@@ -359,6 +369,13 @@
</if> </if>
</foreach> </foreach>
</trim> </trim>
<trim prefix="fee_amount = case" suffix="end,">
<foreach collection="list" index="index" item="item">
<if test="item.feeAmount != null">
when id = #{item.id,jdbcType=INTEGER} then #{item.feeAmount,jdbcType=DECIMAL}
</if>
</foreach>
</trim>
<trim prefix="remark = case" suffix="end,"> <trim prefix="remark = case" suffix="end,">
<foreach collection="list" index="index" item="item"> <foreach collection="list" index="index" item="item">
<if test="item.remark != null"> <if test="item.remark != null">
@@ -412,8 +429,8 @@
insert into order_split_record insert into order_split_record
(order_code, merchant_id, station_id, `status`, settle_amount, electricity_amount, (order_code, merchant_id, station_id, `status`, settle_amount, electricity_amount,
service_amount, trade_date, adapay_member_id, payment_id, payment_confirm_id, electricity_split_ratio, service_amount, trade_date, adapay_member_id, payment_id, payment_confirm_id, electricity_split_ratio,
electricity_split_amount, service_split_ratio, service_split_amount, remark, create_by, electricity_split_amount, service_split_ratio, service_split_amount, fee_amount,
create_time, update_by, update_time, del_flag) remark, create_by, create_time, update_by, update_time, del_flag)
values values
<foreach collection="list" item="item" separator=","> <foreach collection="list" item="item" separator=",">
(#{item.orderCode,jdbcType=VARCHAR}, #{item.merchantId,jdbcType=VARCHAR}, #{item.stationId,jdbcType=VARCHAR}, (#{item.orderCode,jdbcType=VARCHAR}, #{item.merchantId,jdbcType=VARCHAR}, #{item.stationId,jdbcType=VARCHAR},
@@ -422,9 +439,9 @@
#{item.paymentId,jdbcType=VARCHAR}, #{item.paymentConfirmId,jdbcType=VARCHAR}, #{item.paymentId,jdbcType=VARCHAR}, #{item.paymentConfirmId,jdbcType=VARCHAR},
#{item.electricitySplitRatio,jdbcType=DECIMAL}, #{item.electricitySplitAmount,jdbcType=DECIMAL}, #{item.electricitySplitRatio,jdbcType=DECIMAL}, #{item.electricitySplitAmount,jdbcType=DECIMAL},
#{item.serviceSplitRatio,jdbcType=DECIMAL}, #{item.serviceSplitAmount,jdbcType=DECIMAL}, #{item.serviceSplitRatio,jdbcType=DECIMAL}, #{item.serviceSplitAmount,jdbcType=DECIMAL},
#{item.remark,jdbcType=VARCHAR}, #{item.createBy,jdbcType=VARCHAR}, #{item.createTime,jdbcType=TIMESTAMP}, #{item.feeAmount,jdbcType=DECIMAL}, #{item.remark,jdbcType=VARCHAR}, #{item.createBy,jdbcType=VARCHAR},
#{item.updateBy,jdbcType=VARCHAR}, #{item.updateTime,jdbcType=TIMESTAMP}, #{item.delFlag,jdbcType=VARCHAR} #{item.createTime,jdbcType=TIMESTAMP}, #{item.updateBy,jdbcType=VARCHAR}, #{item.updateTime,jdbcType=TIMESTAMP},
) #{item.delFlag,jdbcType=VARCHAR})
</foreach> </foreach>
</insert> </insert>
<insert id="insertOrUpdate" keyColumn="id" keyProperty="id" parameterType="com.jsowell.pile.domain.OrderSplitRecord" useGeneratedKeys="true"> <insert id="insertOrUpdate" keyColumn="id" keyProperty="id" parameterType="com.jsowell.pile.domain.OrderSplitRecord" useGeneratedKeys="true">
@@ -449,6 +466,7 @@
electricity_split_amount, electricity_split_amount,
service_split_ratio, service_split_ratio,
service_split_amount, service_split_amount,
fee_amount,
remark, remark,
create_by, create_by,
create_time, create_time,
@@ -476,6 +494,7 @@
#{electricitySplitAmount,jdbcType=DECIMAL}, #{electricitySplitAmount,jdbcType=DECIMAL},
#{serviceSplitRatio,jdbcType=DECIMAL}, #{serviceSplitRatio,jdbcType=DECIMAL},
#{serviceSplitAmount,jdbcType=DECIMAL}, #{serviceSplitAmount,jdbcType=DECIMAL},
#{feeAmount,jdbcType=DECIMAL},
#{remark,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR},
#{createBy,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR},
#{createTime,jdbcType=TIMESTAMP}, #{createTime,jdbcType=TIMESTAMP},
@@ -503,6 +522,7 @@
electricity_split_amount = #{electricitySplitAmount,jdbcType=DECIMAL}, electricity_split_amount = #{electricitySplitAmount,jdbcType=DECIMAL},
service_split_ratio = #{serviceSplitRatio,jdbcType=DECIMAL}, service_split_ratio = #{serviceSplitRatio,jdbcType=DECIMAL},
service_split_amount = #{serviceSplitAmount,jdbcType=DECIMAL}, service_split_amount = #{serviceSplitAmount,jdbcType=DECIMAL},
fee_amount = #{feeAmount,jdbcType=DECIMAL},
remark = #{remark,jdbcType=VARCHAR}, remark = #{remark,jdbcType=VARCHAR},
create_by = #{createBy,jdbcType=VARCHAR}, create_by = #{createBy,jdbcType=VARCHAR},
create_time = #{createTime,jdbcType=TIMESTAMP}, create_time = #{createTime,jdbcType=TIMESTAMP},
@@ -563,6 +583,9 @@
<if test="serviceSplitAmount != null"> <if test="serviceSplitAmount != null">
service_split_amount, service_split_amount,
</if> </if>
<if test="feeAmount != null">
fee_amount,
</if>
<if test="remark != null"> <if test="remark != null">
remark, remark,
</if> </if>
@@ -632,6 +655,9 @@
<if test="serviceSplitAmount != null"> <if test="serviceSplitAmount != null">
#{serviceSplitAmount,jdbcType=DECIMAL}, #{serviceSplitAmount,jdbcType=DECIMAL},
</if> </if>
<if test="feeAmount != null">
#{feeAmount,jdbcType=DECIMAL},
</if>
<if test="remark != null"> <if test="remark != null">
#{remark,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR},
</if> </if>
@@ -701,6 +727,9 @@
<if test="serviceSplitAmount != null"> <if test="serviceSplitAmount != null">
service_split_amount = #{serviceSplitAmount,jdbcType=DECIMAL}, service_split_amount = #{serviceSplitAmount,jdbcType=DECIMAL},
</if> </if>
<if test="feeAmount != null">
fee_amount = #{feeAmount,jdbcType=DECIMAL},
</if>
<if test="remark != null"> <if test="remark != null">
remark = #{remark,jdbcType=VARCHAR}, remark = #{remark,jdbcType=VARCHAR},
</if> </if>