Commit 036262af by 程裕兵

feat:refund

parent ecff6b75
package com.jiejing.fitness.finance.api.merchant.request;
import com.jiejing.fitness.enums.finance.PayOrderTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
......@@ -37,7 +38,15 @@ public class StudioMerchantRefundRequest {
@NotBlank(message = "退款原因不能为空")
private String refundReason;
@ApiModelProperty(name = "上层业务退款单号")
@ApiModelProperty(name = "上层业务退款单号", required = true)
@NotBlank(message = "上层业务退款单号不能为空")
private String orderNo;
@ApiModelProperty(name = "上层业务子订单号")
private String subOrderNo;
@ApiModelProperty(name = "订单类型", required = true)
@NotNull(message = "订单类型不能为空")
private PayOrderTypeEnum orderType;
}
......@@ -3,6 +3,7 @@ package com.jiejing.fitness.finance.service.pay.convert;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.jiejing.common.utils.convert.BeanUtil;
import com.jiejing.fitness.enums.finance.BrandCashierTransStateEnum;
import com.jiejing.fitness.enums.finance.BrandCashierTransTypeEnum;
import com.jiejing.fitness.finance.api.merchant.vo.StudioMerchantRefundVO;
import com.jiejing.fitness.finance.api.merchant.vo.StudioMerchantRefundVO.CheckRefundCodeEnum;
import com.jiejing.fitness.finance.repository.entity.StudioCashierRecord;
......@@ -24,24 +25,41 @@ public class RefundConvert {
public static StudioCashierRecord convertRefundInit(StudioMerchantRefundParams params,
StudioCashierRecord pay, BigDecimal historyRefundActualAmount) {
StudioCashierRecord record = BeanUtil.map(pay, StudioCashierRecord.class);
record.setId(IdWorker.getId());
record.setTransNo(record.getId().toString());
record.setOrderNo(params.getOrderNo());
record.setRelatedTransNo(params.getPayTransNo());
record.setTransAmount(params.getTransAmount());
record.setFeeRate(pay.getFeeRate());
record.setFee(
FeeUtil.calculateRefundFee(params.getTransAmount(), pay.getTransAmount(), pay.getActualAmount(),
pay.getFee(), historyRefundActualAmount));
record.setActualAmount(MoneyUtil.subtract(record.getTransAmount(), record.getFee()));
record.setRemark(params.getRefundReason());
record.setStudioId(params.getStudioId());
record.setTransState(BrandCashierTransStateEnum.REFUND_INIT.getCode());
record.setTradingTime(new Date());
record.setCreateTime(new Date());
record.setUpdateTime(new Date());
return record;
Long id = IdWorker.getId();
BigDecimal fee = FeeUtil.calculateRefundFee(params.getTransAmount(), pay.getTransAmount(),
pay.getActualAmount(), pay.getFee(), historyRefundActualAmount);
BigDecimal actualAmount = MoneyUtil.subtract(params.getTransAmount(), fee);
Date now = new Date();
return StudioCashierRecord.builder()
.id(id)
.transNo(id.toString())
.orderNo(params.getOrderNo())
.businessNo(params.getBusinessNo())
.orderType(params.getOrderType().getCode())
.subOrderNo(params.getSubOrderNo())
.transType(BrandCashierTransTypeEnum.REFUND.getCode())
.brandId(pay.getBrandId())
.studioId(pay.getStudioId())
.studioName(pay.getStudioName())
.merchantId(pay.getMerchantId())
.merchantNo(pay.getMerchantNo())
.channelNo(pay.getChannelNo())
.subChannel(pay.getSubChannel())
.transAmount(params.getTransAmount())
.feeRate(pay.getFeeRate())
.fee(fee)
.actualAmount(actualAmount)
.transState(BrandCashierTransStateEnum.REFUND_INIT.getCode())
.buyerName(pay.getBuyerName())
.buyerPhone(pay.getBuyerPhone())
.goods(pay.getGoods())
.remark(params.getRefundReason())
.existRelatedTrans(true)
.relatedTransNo(params.getPayTransNo())
.tradingTime(now)
.createTime(now)
.updateTime(now)
.build();
}
public static RefundPayRequest convert(StudioMerchantRefundParams params, StudioCashierRecord record) {
......
......@@ -34,12 +34,10 @@ import com.jiejing.paycenter.common.model.vo.RefundVO;
import com.xiaomai.event.EventAgent;
import java.math.BigDecimal;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.Executor;
import java.util.stream.Collectors;
import javax.annotation.Resource;
......
package com.jiejing.fitness.finance.service.pay.params;
import com.jiejing.fitness.enums.finance.PayOrderTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
......@@ -37,7 +38,18 @@ public class StudioMerchantRefundParams {
@NotBlank(message = "退款原因不能为空")
private String refundReason;
@ApiModelProperty(name = "上层业务退款单号")
@ApiModelProperty(name = "上层业务退款ID", required = true)
@NotBlank(message = "上层业务退款ID不能为空")
private String orderNo;
@ApiModelProperty(name = "上层业务退款订单号")
private String businessNo;
@ApiModelProperty(name = "上层业务子订单号")
private String subOrderNo;
@ApiModelProperty(name = "订单类型", required = true)
@NotNull(message = "订单类型不能为空")
private PayOrderTypeEnum orderType;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment