mirror of
https://gitee.com/hhyykk/ipms-sjy.git
synced 2025-07-25 00:15:06 +08:00
mall + pay:
1. 将 amount 统一都修改成 price 2. 将 payed 统一改成 payStatus
This commit is contained in:
@ -28,7 +28,7 @@ public class PayDemoOrderRespVO {
|
||||
private Integer price;
|
||||
|
||||
@Schema(description = "是否已支付", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Boolean payed;
|
||||
private Boolean payStatus;
|
||||
|
||||
@Schema(description = "支付订单编号", example = "16863")
|
||||
private Long payOrderId;
|
||||
|
@ -49,17 +49,13 @@ public class PayOrderBaseVO {
|
||||
|
||||
@Schema(description = "支付金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "支付金额,单位:分不能为空")
|
||||
private Long amount;
|
||||
|
||||
@Schema(description = "支付金额,单位:分", required = true)
|
||||
@NotNull(message = "支付金额,单位:分不能为空")
|
||||
private Long price;
|
||||
|
||||
@Schema(description = "渠道手续费,单位:百分比")
|
||||
private Double channelFeeRate;
|
||||
|
||||
@Schema(description = "渠道手续金额,单位:分")
|
||||
private Long channelFeeAmount;
|
||||
private Long channelFeePrice;
|
||||
|
||||
@Schema(description = "支付状态", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "支付状态不能为空")
|
||||
@ -95,7 +91,7 @@ public class PayOrderBaseVO {
|
||||
|
||||
@Schema(description = "退款总金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "退款总金额,单位:分不能为空")
|
||||
private Long refundAmount;
|
||||
private Long refundPrice;
|
||||
|
||||
@Schema(description = "渠道用户编号")
|
||||
private String channelUserId;
|
||||
|
@ -35,10 +35,10 @@ public class PayOrderExcelVO {
|
||||
private String no;
|
||||
|
||||
@ExcelProperty("支付金额,单位:元")
|
||||
private String amount;
|
||||
private String price;
|
||||
|
||||
@ExcelProperty("渠道手续金额,单位:元")
|
||||
private String channelFeeAmount;
|
||||
private String channelFeePrice;
|
||||
|
||||
@ExcelProperty("渠道手续费,单位:百分比")
|
||||
private String channelFeeRate;
|
||||
@ -80,7 +80,7 @@ public class PayOrderExcelVO {
|
||||
private Integer refundTimes;
|
||||
|
||||
@ExcelProperty("退款总金额,单位:元")
|
||||
private String refundAmount;
|
||||
private String refundPrice;
|
||||
|
||||
@ExcelProperty("商品描述")
|
||||
private String body;
|
||||
|
@ -37,13 +37,13 @@ public class PayOrderExportReqVO {
|
||||
private Integer notifyStatus;
|
||||
|
||||
@Schema(description = "支付金额,单位:分")
|
||||
private Long amount;
|
||||
private Long price;
|
||||
|
||||
@Schema(description = "渠道手续费,单位:百分比")
|
||||
private Double channelFeeRate;
|
||||
|
||||
@Schema(description = "渠道手续金额,单位:分")
|
||||
private Long channelFeeAmount;
|
||||
private Long channelFeePrice;
|
||||
|
||||
@Schema(description = "支付状态")
|
||||
private Integer status;
|
||||
@ -73,7 +73,7 @@ public class PayOrderExportReqVO {
|
||||
private Integer refundTimes;
|
||||
|
||||
@Schema(description = "退款总金额,单位:分")
|
||||
private Long refundAmount;
|
||||
private Long refundPrice;
|
||||
|
||||
@Schema(description = "渠道用户编号")
|
||||
private String channelUserId;
|
||||
|
@ -42,13 +42,13 @@ public class PayOrderPageReqVO extends PageParam {
|
||||
private Integer notifyStatus;
|
||||
|
||||
@Schema(description = "支付金额,单位:分")
|
||||
private Long amount;
|
||||
private Long price;
|
||||
|
||||
@Schema(description = "渠道手续费,单位:百分比")
|
||||
private Double channelFeeRate;
|
||||
|
||||
@Schema(description = "渠道手续金额,单位:分")
|
||||
private Long channelFeeAmount;
|
||||
private Long channelFeePrice;
|
||||
|
||||
@Schema(description = "支付状态")
|
||||
private Integer status;
|
||||
@ -78,7 +78,7 @@ public class PayOrderPageReqVO extends PageParam {
|
||||
private Integer refundTimes;
|
||||
|
||||
@Schema(description = "退款总金额,单位:分")
|
||||
private Long refundAmount;
|
||||
private Long refundPrice;
|
||||
|
||||
@Schema(description = "渠道用户编号")
|
||||
private String channelUserId;
|
||||
|
@ -53,10 +53,10 @@ public class PayRefundExcelVO {
|
||||
private Integer type;
|
||||
|
||||
@ExcelProperty("支付金额,单位:元")
|
||||
private String payAmount;
|
||||
private String payPrice;
|
||||
|
||||
@ExcelProperty("退款金额,单位:元")
|
||||
private String refundAmount;
|
||||
private String refundPrice;
|
||||
|
||||
@ExcelProperty("退款原因")
|
||||
private String reason;
|
||||
|
@ -46,10 +46,10 @@ public class PayRefundExportReqVO {
|
||||
private Integer type;
|
||||
|
||||
@Schema(description = "支付金额,单位分")
|
||||
private Long payAmount;
|
||||
private Long payPrice;
|
||||
|
||||
@Schema(description = "退款金额,单位分")
|
||||
private Long refundAmount;
|
||||
private Long refundPrice;
|
||||
|
||||
@Schema(description = "退款原因")
|
||||
private String reason;
|
||||
|
@ -51,10 +51,10 @@ public class PayRefundPageReqVO extends PageParam {
|
||||
private Integer type;
|
||||
|
||||
@Schema(description = "支付金额,单位分")
|
||||
private Long payAmount;
|
||||
private Long payPrice;
|
||||
|
||||
@Schema(description = "退款金额,单位分")
|
||||
private Long refundAmount;
|
||||
private Long refundPrice;
|
||||
|
||||
@Schema(description = "退款原因")
|
||||
private String reason;
|
||||
|
@ -27,7 +27,6 @@ public interface PayOrderConvert {
|
||||
|
||||
PayOrderConvert INSTANCE = Mappers.getMapper(PayOrderConvert.class);
|
||||
|
||||
@Mapping(source = "amount", target = "price")
|
||||
PayOrderRespVO convert(PayOrderDO bean);
|
||||
|
||||
PayOrderRespDTO convert2(PayOrderDO order);
|
||||
@ -40,8 +39,6 @@ public interface PayOrderConvert {
|
||||
|
||||
PageResult<PayOrderRespVO> convertPage(PageResult<PayOrderDO> page);
|
||||
|
||||
List<PayOrderExcelVO> convertList02(List<PayOrderDO> list);
|
||||
|
||||
/**
|
||||
* 订单 DO 转自定义分页对象
|
||||
*
|
||||
@ -76,14 +73,14 @@ public interface PayOrderConvert {
|
||||
|
||||
BigDecimal multiple = new BigDecimal(100);
|
||||
|
||||
payOrderExcelVO.setAmount(BigDecimal.valueOf(bean.getAmount())
|
||||
payOrderExcelVO.setPrice(BigDecimal.valueOf(bean.getPrice())
|
||||
.divide(multiple, 2, RoundingMode.HALF_UP).toString());
|
||||
|
||||
payOrderExcelVO.setChannelFeeAmount(BigDecimal.valueOf(bean.getChannelFeeAmount())
|
||||
payOrderExcelVO.setChannelFeePrice(BigDecimal.valueOf(bean.getChannelFeePrice())
|
||||
.divide(multiple, 2, RoundingMode.HALF_UP).toString());
|
||||
payOrderExcelVO.setChannelFeeRate(java.math.BigDecimal.valueOf(bean.getChannelFeeRate())
|
||||
.multiply(multiple).toString());
|
||||
payOrderExcelVO.setRefundAmount(BigDecimal.valueOf(bean.getRefundAmount())
|
||||
payOrderExcelVO.setRefundPrice(BigDecimal.valueOf(bean.getRefundPrice())
|
||||
.divide(multiple, 2, RoundingMode.HALF_UP).toString());
|
||||
|
||||
return payOrderExcelVO;
|
||||
|
@ -77,9 +77,9 @@ public interface PayRefundConvert {
|
||||
payRefundExcelVO.setCreateTime(bean.getCreateTime());
|
||||
|
||||
BigDecimal multiple = new BigDecimal(100);
|
||||
payRefundExcelVO.setPayAmount(BigDecimal.valueOf(bean.getPayAmount())
|
||||
payRefundExcelVO.setPayPrice(BigDecimal.valueOf(bean.getPayPrice())
|
||||
.divide(multiple, 2, RoundingMode.HALF_UP).toString());
|
||||
payRefundExcelVO.setRefundAmount(BigDecimal.valueOf(bean.getRefundAmount())
|
||||
payRefundExcelVO.setRefundPrice(BigDecimal.valueOf(bean.getRefundPrice())
|
||||
.divide(multiple, 2, RoundingMode.HALF_UP).toString());
|
||||
|
||||
return payRefundExcelVO;
|
||||
@ -87,7 +87,7 @@ public interface PayRefundConvert {
|
||||
|
||||
//TODO 太多需要处理了, 暂时不用
|
||||
@Mappings(value = {
|
||||
@Mapping(source = "amount", target = "payAmount"),
|
||||
@Mapping(source = "price", target = "payPrice"),
|
||||
@Mapping(source = "id", target = "orderId"),
|
||||
@Mapping(target = "status",ignore = true)
|
||||
})
|
||||
|
@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.*;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 示例订单
|
||||
@ -53,7 +52,7 @@ public class PayDemoOrderDO extends BaseDO {
|
||||
/**
|
||||
* 是否支付
|
||||
*/
|
||||
private Boolean payed;
|
||||
private Boolean payStatus;
|
||||
/**
|
||||
* 支付订单编号
|
||||
*
|
||||
|
@ -67,7 +67,7 @@ public class MemberWalletTransactionDO extends BaseDO {
|
||||
/**
|
||||
* 交易金额, 单位分
|
||||
*/
|
||||
private Integer amount;
|
||||
private Integer price;
|
||||
|
||||
/**
|
||||
* 余额, 单位分
|
||||
@ -83,4 +83,4 @@ public class MemberWalletTransactionDO extends BaseDO {
|
||||
* 交易时间
|
||||
*/
|
||||
private LocalDateTime transactionTime;
|
||||
}
|
||||
}
|
||||
|
@ -76,17 +76,13 @@ public class PayOrderDO extends BaseDO {
|
||||
* 枚举 {@link PayOrderNotifyStatusEnum}
|
||||
*/
|
||||
private Integer notifyStatus;
|
||||
// /**
|
||||
// * 商户拓展参数
|
||||
// */
|
||||
// private Map<String, String> merchantExtras;
|
||||
|
||||
// ========== 订单相关字段 ==========
|
||||
|
||||
/**
|
||||
* 支付金额,单位:分
|
||||
*/
|
||||
private Integer amount;
|
||||
private Integer price;
|
||||
/**
|
||||
* 渠道手续费,单位:百分比
|
||||
*
|
||||
@ -96,7 +92,7 @@ public class PayOrderDO extends BaseDO {
|
||||
/**
|
||||
* 渠道手续金额,单位:分
|
||||
*/
|
||||
private Long channelFeeAmount;
|
||||
private Long channelFeePrice;
|
||||
/**
|
||||
* 支付状态
|
||||
*
|
||||
@ -140,7 +136,7 @@ public class PayOrderDO extends BaseDO {
|
||||
/**
|
||||
* 退款总金额,单位:分
|
||||
*/
|
||||
private Long refundAmount;
|
||||
private Long refundPrice;
|
||||
|
||||
// ========== 渠道相关字段 ==========
|
||||
/**
|
||||
|
@ -124,11 +124,11 @@ public class PayRefundDO extends BaseDO {
|
||||
/**
|
||||
* 支付金额,单位:分
|
||||
*/
|
||||
private Integer payAmount;
|
||||
private Integer payPrice;
|
||||
/**
|
||||
* 退款金额,单位:分
|
||||
*/
|
||||
private Integer refundAmount;
|
||||
private Integer refundPrice;
|
||||
|
||||
/**
|
||||
* 退款原因
|
||||
|
@ -22,7 +22,7 @@ public interface PayDemoOrderMapper extends BaseMapperX<PayDemoOrderDO> {
|
||||
|
||||
default int updateByIdAndPayed(Long id, boolean wherePayed, PayDemoOrderDO updateObj) {
|
||||
return update(updateObj, new LambdaQueryWrapperX<PayDemoOrderDO>()
|
||||
.eq(PayDemoOrderDO::getId, id).eq(PayDemoOrderDO::getPayed, wherePayed));
|
||||
.eq(PayDemoOrderDO::getId, id).eq(PayDemoOrderDO::getPayStatus, wherePayed));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,10 +1,8 @@
|
||||
package cn.iocoder.yudao.module.pay.service.demo;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
||||
import cn.iocoder.yudao.module.pay.api.order.PayOrderApi;
|
||||
import cn.iocoder.yudao.module.pay.api.order.dto.PayOrderCreateReqDTO;
|
||||
import cn.iocoder.yudao.module.pay.api.order.dto.PayOrderRespDTO;
|
||||
@ -85,14 +83,14 @@ public class PayDemoOrderServiceImpl implements PayDemoOrderService {
|
||||
// 1.2 插入 demo 订单
|
||||
PayDemoOrderDO demoOrder = new PayDemoOrderDO().setUserId(userId)
|
||||
.setSpuId(createReqVO.getSpuId()).setSpuName(spuName)
|
||||
.setPrice(price).setPayed(false).setRefundPrice(0);
|
||||
.setPrice(price).setPayStatus(false).setRefundPrice(0);
|
||||
payDemoOrderMapper.insert(demoOrder);
|
||||
|
||||
// 2.1 创建支付单
|
||||
Long payOrderId = payOrderApi.createOrder(new PayOrderCreateReqDTO()
|
||||
.setAppId(PAY_APP_ID).setUserIp(getClientIP()) // 支付应用
|
||||
.setMerchantOrderId(demoOrder.getId().toString()) // 业务的订单编号
|
||||
.setSubject(spuName).setBody("").setAmount(price) // 价格信息
|
||||
.setSubject(spuName).setBody("").setPrice(price) // 价格信息
|
||||
.setExpireTime(addTime(Duration.ofHours(2L)))); // 支付的过期时间
|
||||
// 2.2 更新支付单到 demo 订单
|
||||
payDemoOrderMapper.updateById(new PayDemoOrderDO().setId(demoOrder.getId())
|
||||
@ -101,12 +99,6 @@ public class PayDemoOrderServiceImpl implements PayDemoOrderService {
|
||||
return demoOrder.getId();
|
||||
}
|
||||
|
||||
// private void validateDemoOrderExists(Long id) {
|
||||
// if (demoOrderMapper.selectById(id) == null) {
|
||||
// throw exception(DEMO_ORDER_NOT_EXISTS);
|
||||
// }
|
||||
// }
|
||||
|
||||
@Override
|
||||
public PayDemoOrderDO getDemoOrder(Long id) {
|
||||
return payDemoOrderMapper.selectById(id);
|
||||
@ -124,7 +116,7 @@ public class PayDemoOrderServiceImpl implements PayDemoOrderService {
|
||||
|
||||
// 更新 PayDemoOrderDO 状态为已支付
|
||||
int updateCount = payDemoOrderMapper.updateByIdAndPayed(id, false,
|
||||
new PayDemoOrderDO().setPayed(true).setPayTime(LocalDateTime.now())
|
||||
new PayDemoOrderDO().setPayStatus(true).setPayTime(LocalDateTime.now())
|
||||
.setPayChannelCode(payOrder.getChannelCode()));
|
||||
if (updateCount == 0) {
|
||||
throw exception(PAY_DEMO_ORDER_UPDATE_PAID_STATUS_NOT_UNPAID);
|
||||
@ -148,7 +140,7 @@ public class PayDemoOrderServiceImpl implements PayDemoOrderService {
|
||||
throw exception(PAY_DEMO_ORDER_NOT_FOUND);
|
||||
}
|
||||
// 1.2 校验订单未支付
|
||||
if (order.getPayed()) {
|
||||
if (order.getPayStatus()) {
|
||||
log.error("[validateDemoOrderCanPaid][order({}) 不处于待支付状态,请进行处理!order 数据是:{}]",
|
||||
id, toJsonString(order));
|
||||
throw exception(PAY_DEMO_ORDER_UPDATE_PAID_STATUS_NOT_UNPAID);
|
||||
@ -173,7 +165,7 @@ public class PayDemoOrderServiceImpl implements PayDemoOrderService {
|
||||
throw exception(PAY_DEMO_ORDER_UPDATE_PAID_FAIL_PAY_ORDER_STATUS_NOT_SUCCESS);
|
||||
}
|
||||
// 2.3 校验支付金额一致
|
||||
if (notEqual(payOrder.getAmount(), order.getPrice())) {
|
||||
if (notEqual(payOrder.getPrice(), order.getPrice())) {
|
||||
log.error("[validateDemoOrderCanPaid][order({}) payOrder({}) 支付金额不匹配,请进行处理!order 数据是:{},payOrder 数据是:{}]",
|
||||
id, payOrderId, toJsonString(order), toJsonString(payOrder));
|
||||
throw exception(PAY_DEMO_ORDER_UPDATE_PAID_FAIL_PAY_PRICE_NOT_MATCH);
|
||||
@ -196,7 +188,7 @@ public class PayDemoOrderServiceImpl implements PayDemoOrderService {
|
||||
Long payRefundId = payRefundApi.createPayRefund(new PayRefundCreateReqDTO()
|
||||
.setAppId(PAY_APP_ID).setUserIp(getClientIP()) // 支付应用
|
||||
.setPayOrderId(order.getPayOrderId()) // 支付单号
|
||||
.setReason("想退钱").setAmount(order.getPrice()));// 价格信息
|
||||
.setReason("想退钱").setPrice(order.getPrice()));// 价格信息
|
||||
// 2.2 更新退款单到 demo 订单
|
||||
payDemoOrderMapper.updateById(new PayDemoOrderDO().setId(id)
|
||||
.setPayRefundId(payRefundId).setRefundPrice(order.getPrice()));
|
||||
@ -209,7 +201,7 @@ public class PayDemoOrderServiceImpl implements PayDemoOrderService {
|
||||
throw exception(PAY_DEMO_ORDER_NOT_FOUND);
|
||||
}
|
||||
// 校验订单是否支付
|
||||
if (!order.getPayed()) {
|
||||
if (!order.getPayStatus()) {
|
||||
throw exception(PAY_DEMO_ORDER_REFUND_FAIL_NOT_PAID);
|
||||
}
|
||||
// 校验订单是否已退款
|
||||
@ -251,7 +243,7 @@ public class PayDemoOrderServiceImpl implements PayDemoOrderService {
|
||||
throw exception(PAY_DEMO_ORDER_REFUND_FAIL_REFUND_NOT_SUCCESS);
|
||||
}
|
||||
// 2.3 校验退款金额一致
|
||||
if (notEqual(payRefund.getRefundAmount(), order.getPrice())) {
|
||||
if (notEqual(payRefund.getRefundPrice(), order.getPrice())) {
|
||||
log.error("[validateDemoOrderCanRefunded][order({}) payRefund({}) 退款金额不匹配,请进行处理!order 数据是:{},payRefund 数据是:{}]",
|
||||
id, payRefundId, toJsonString(order), toJsonString(payRefund));
|
||||
throw exception(PAY_DEMO_ORDER_REFUND_FAIL_REFUND_PRICE_NOT_MATCH);
|
||||
|
@ -118,7 +118,7 @@ public class PayOrderServiceImpl implements PayOrderService {
|
||||
// 退款相关字段
|
||||
// todo @芋艿 创建支付的订单的退款状态枚举是不是有问题,应该是 PayRefundTypeEnum 吧 您这填写的是 PayOrderNotifyStatusEnum 回调状态枚举
|
||||
order.setRefundStatus(PayOrderNotifyStatusEnum.NO.getStatus())
|
||||
.setRefundTimes(0).setRefundAmount(0L);
|
||||
.setRefundTimes(0).setRefundPrice(0L);
|
||||
orderMapper.insert(order);
|
||||
// 最终返回
|
||||
return order.getId();
|
||||
@ -147,7 +147,7 @@ public class PayOrderServiceImpl implements PayOrderService {
|
||||
.setNotifyUrl(genChannelPayNotifyUrl(channel))
|
||||
.setReturnUrl(reqVO.getReturnUrl())
|
||||
// 订单相关字段
|
||||
.setAmount(order.getAmount()).setExpireTime(order.getExpireTime());
|
||||
.setAmount(order.getPrice()).setExpireTime(order.getExpireTime());
|
||||
PayOrderUnifiedRespDTO unifiedOrderRespDTO = client.unifiedOrder(unifiedOrderReqDTO);
|
||||
|
||||
// TODO 轮询三方接口,是否已经支付的任务
|
||||
|
@ -117,7 +117,7 @@ public class PayRefundServiceImpl implements PayRefundService {
|
||||
validatePayRefund(reqDTO, order);
|
||||
// 退款类型
|
||||
PayRefundTypeEnum refundType = PayRefundTypeEnum.SOME;
|
||||
if (Objects.equals(reqDTO.getAmount(), order.getAmount())) {
|
||||
if (Objects.equals(reqDTO.getPrice(), order.getPrice())) {
|
||||
refundType = PayRefundTypeEnum.ALL;
|
||||
}
|
||||
PayOrderExtensionDO orderExtensionDO = orderExtensionService.getOrderExtension(order.getSuccessExtensionId());
|
||||
@ -144,8 +144,8 @@ public class PayRefundServiceImpl implements PayRefundService {
|
||||
.orderId(order.getId())
|
||||
.merchantRefundNo(merchantRefundId) // TODO 芋艿:需要优化
|
||||
.notifyUrl(app.getRefundNotifyUrl())
|
||||
.payAmount(order.getAmount())
|
||||
.refundAmount(reqDTO.getAmount())
|
||||
.payPrice(order.getPrice())
|
||||
.refundPrice(reqDTO.getPrice())
|
||||
.userIp(reqDTO.getUserIp())
|
||||
.merchantOrderId(order.getMerchantOrderId())
|
||||
.tradeNo(orderExtensionDO.getNo())
|
||||
@ -159,7 +159,7 @@ public class PayRefundServiceImpl implements PayRefundService {
|
||||
// TODO @jason:搞到 convert 里。一些额外的自动,手动 set 下;
|
||||
PayRefundUnifiedReqDTO unifiedReqDTO = new PayRefundUnifiedReqDTO();
|
||||
unifiedReqDTO.setUserIp(reqDTO.getUserIp())
|
||||
.setAmount(reqDTO.getAmount())
|
||||
.setAmount(reqDTO.getPrice())
|
||||
.setChannelOrderNo(order.getChannelOrderNo())
|
||||
.setPayTradeNo(orderExtensionDO.getNo())
|
||||
.setMerchantRefundId(merchantRefundId) // TODO 芋艿:需要优化
|
||||
@ -209,17 +209,17 @@ public class PayRefundServiceImpl implements PayRefundService {
|
||||
|
||||
// 得到已退金额
|
||||
PayOrderDO payOrderDO = orderService.getOrder(refundDO.getOrderId());
|
||||
Long refundedAmount = payOrderDO.getRefundAmount();
|
||||
Long refundedAmount = payOrderDO.getRefundPrice();
|
||||
|
||||
PayOrderStatusEnum orderStatus = PayOrderStatusEnum.SUCCESS;
|
||||
if(Objects.equals(payOrderDO.getAmount(), refundedAmount+ refundDO.getRefundAmount())){
|
||||
if(Objects.equals(payOrderDO.getPrice(), refundedAmount+ refundDO.getRefundPrice())){
|
||||
//支付金额 = 已退金额 + 本次退款金额。
|
||||
orderStatus = PayOrderStatusEnum.CLOSED;
|
||||
}
|
||||
// 更新支付订单
|
||||
PayOrderDO updateOrderDO = new PayOrderDO();
|
||||
updateOrderDO.setId(refundDO.getOrderId())
|
||||
.setRefundAmount(refundedAmount + refundDO.getRefundAmount())
|
||||
.setRefundPrice(refundedAmount + refundDO.getRefundPrice())
|
||||
.setStatus(orderStatus.getStatus())
|
||||
.setRefundTimes(payOrderDO.getRefundTimes() + 1)
|
||||
.setRefundStatus(refundDO.getType());
|
||||
@ -257,8 +257,8 @@ public class PayRefundServiceImpl implements PayRefundService {
|
||||
throw ServiceExceptionUtil.exception(ErrorCodeConstants.PAY_REFUND_ALL_REFUNDED);
|
||||
}
|
||||
// 校验金额 退款金额不能大于 原定的金额
|
||||
if (reqDTO.getAmount() + order.getRefundAmount() > order.getAmount()){
|
||||
throw ServiceExceptionUtil.exception(ErrorCodeConstants.PAY_REFUND_AMOUNT_EXCEED);
|
||||
if (reqDTO.getPrice() + order.getRefundPrice() > order.getPrice()){
|
||||
throw ServiceExceptionUtil.exception(ErrorCodeConstants.PAY_PRICE_PRICE_EXCEED);
|
||||
}
|
||||
// 校验渠道订单号
|
||||
if (StrUtil.isEmpty(order.getChannelOrderNo())) {
|
||||
|
@ -30,7 +30,7 @@ public class PayOrderServiceIntegrationTest extends BaseDbIntegrationTest {
|
||||
reqDTO.setMerchantOrderId(String.valueOf(System.currentTimeMillis()));
|
||||
reqDTO.setSubject("标题");
|
||||
reqDTO.setBody("内容");
|
||||
reqDTO.setAmount(100);
|
||||
reqDTO.setPrice(100);
|
||||
reqDTO.setExpireTime(DateUtils.addTime(Duration.ofDays(1)));
|
||||
// 发起请求
|
||||
payOrderService.createPayOrder(reqDTO);
|
||||
|
@ -75,9 +75,9 @@ public class PayOrderServiceTest extends BaseDbUnitTest {
|
||||
o.setBody("斌斌子送给灿灿子的炸弹猫");
|
||||
o.setNotifyUrl("https://hc.com/lbh");
|
||||
o.setNotifyStatus(PayOrderNotifyStatusEnum.SUCCESS.getStatus());
|
||||
o.setAmount(10000);
|
||||
o.setPrice(10000);
|
||||
o.setChannelFeeRate(0.01);
|
||||
o.setChannelFeeAmount(1L);
|
||||
o.setChannelFeePrice(1L);
|
||||
o.setStatus(PayOrderStatusEnum.SUCCESS.getStatus());
|
||||
o.setUserIp("127.0.0.1");
|
||||
o.setCreateTime(LocalDateTime.of(2018, 1, 1, 10, 1, 0));
|
||||
@ -87,7 +87,7 @@ public class PayOrderServiceTest extends BaseDbUnitTest {
|
||||
o.setSuccessExtensionId(1L);
|
||||
o.setRefundStatus(PayRefundTypeEnum.NO.getStatus());
|
||||
o.setRefundTimes(0);
|
||||
o.setRefundAmount(0L);
|
||||
o.setRefundPrice(0L);
|
||||
o.setChannelUserId("1008611");
|
||||
o.setChannelOrderNo(channelOrderId);
|
||||
o.setUpdateTime(LocalDateTime.of(2018, 1, 1, 10, 10, 15));
|
||||
@ -143,9 +143,9 @@ public class PayOrderServiceTest extends BaseDbUnitTest {
|
||||
o.setBody("斌斌子送给灿灿子的炸弹猫");
|
||||
o.setNotifyUrl("https://hc.com/lbh");
|
||||
o.setNotifyStatus(PayOrderNotifyStatusEnum.SUCCESS.getStatus());
|
||||
o.setAmount(10000);
|
||||
o.setPrice(10000);
|
||||
o.setChannelFeeRate(0.01);
|
||||
o.setChannelFeeAmount(1L);
|
||||
o.setChannelFeePrice(1L);
|
||||
o.setStatus(PayOrderStatusEnum.SUCCESS.getStatus());
|
||||
o.setUserIp("127.0.0.1");
|
||||
o.setCreateTime(LocalDateTime.of(2018, 1, 1, 10, 1, 0));
|
||||
@ -155,7 +155,7 @@ public class PayOrderServiceTest extends BaseDbUnitTest {
|
||||
o.setSuccessExtensionId(1L);
|
||||
o.setRefundStatus(PayRefundTypeEnum.NO.getStatus());
|
||||
o.setRefundTimes(0);
|
||||
o.setRefundAmount(0L);
|
||||
o.setRefundPrice(0L);
|
||||
o.setChannelUserId("1008611");
|
||||
o.setChannelOrderNo(channelOrderId);
|
||||
o.setUpdateTime(LocalDateTime.of(2018, 1, 1, 10, 10, 15));
|
||||
|
@ -69,8 +69,8 @@ public class PayRefundServiceTest extends BaseDbUnitTest {
|
||||
o.setNotifyStatus(PayOrderNotifyStatusEnum.SUCCESS.getStatus());
|
||||
o.setStatus(PayRefundStatusEnum.SUCCESS.getStatus());
|
||||
o.setType(PayRefundTypeEnum.SOME.getStatus());
|
||||
o.setPayAmount(100);
|
||||
o.setRefundAmount(500);
|
||||
o.setPayPrice(100);
|
||||
o.setRefundPrice(500);
|
||||
o.setReason("就是想退款了,你有意见吗");
|
||||
o.setUserIp("127.0.0.1");
|
||||
o.setChannelOrderNo("CH0000001");
|
||||
@ -134,8 +134,8 @@ public class PayRefundServiceTest extends BaseDbUnitTest {
|
||||
o.setNotifyStatus(PayOrderNotifyStatusEnum.SUCCESS.getStatus());
|
||||
o.setStatus(PayRefundStatusEnum.SUCCESS.getStatus());
|
||||
o.setType(PayRefundTypeEnum.SOME.getStatus());
|
||||
o.setPayAmount(100);
|
||||
o.setRefundAmount(500);
|
||||
o.setPayPrice(100);
|
||||
o.setRefundPrice(500);
|
||||
o.setReason("就是想退款了,你有意见吗");
|
||||
o.setUserIp("127.0.0.1");
|
||||
o.setChannelOrderNo("CH0000001");
|
||||
|
Reference in New Issue
Block a user