自动退款 填充

This commit is contained in:
2025-12-19 16:33:02 +08:00
parent 903121aa61
commit be40c1e273
2 changed files with 18 additions and 8 deletions

View File

@@ -115,6 +115,10 @@ public class GbOrderDetail implements Serializable {
* 取消原因(默认空,取消/退款时填充) * 取消原因(默认空,取消/退款时填充)
*/ */
private String cancelReason; private String cancelReason;
/**
* 自动退款标记(默认空,退款时填充 成团失败)
*/
private String refundMark;
/** /**
* 删除标记 0-未删 1-已删 * 删除标记 0-未删 1-已删

View File

@@ -287,7 +287,7 @@ public class GbOrderServiceImpl extends ServiceImpl<GbOrderMapper, GbOrder> impl
if (ware == null || ware.getOnlineStatus() == 0 || ware.getIsDel()) { if (ware == null || ware.getOnlineStatus() == 0 || ware.getIsDel()) {
order.setStatus("fail"); order.setStatus("fail");
order.setGroupEndTime(LocalDateTime.now()); order.setGroupEndTime(LocalDateTime.now());
}else if (ware.getGroupPeopleNum() == 1) { } else if (ware.getGroupPeopleNum() == 1) {
order.setStatus("success"); order.setStatus("success");
} }
save(order); save(order);
@@ -323,7 +323,7 @@ public class GbOrderServiceImpl extends ServiceImpl<GbOrderMapper, GbOrder> impl
} }
detailService.updateById(record); detailService.updateById(record);
if (ware == null || ware.getOnlineStatus() == 0 || ware.getIsDel()) { if (ware == null || ware.getOnlineStatus() == 0 || ware.getIsDel()) {
refundByGbOrderDetail(record, "商品已下架 自动退款。"); refundByGbOrderDetail(record, true, "商品已下架 自动退款。");
} }
} }
@@ -338,7 +338,7 @@ public class GbOrderServiceImpl extends ServiceImpl<GbOrderMapper, GbOrder> impl
throw new CzgException("申请失败,该商品不可申请退款"); throw new CzgException("申请失败,该商品不可申请退款");
} }
if ("待成团".equals(record.getStatus())) { if ("待成团".equals(record.getStatus())) {
return refundByGbOrderDetail(record, param.getReason()); return refundByGbOrderDetail(record, false, param.getReason());
} }
GbOrderDetail upRecord = new GbOrderDetail(); GbOrderDetail upRecord = new GbOrderDetail();
upRecord.setStatus("退款中"); upRecord.setStatus("退款中");
@@ -400,7 +400,7 @@ public class GbOrderServiceImpl extends ServiceImpl<GbOrderMapper, GbOrder> impl
if (!"待核销".equals(record.getStatus()) && !"待成团".equals(record.getStatus()) && !"退款中".equals(record.getStatus())) { if (!"待核销".equals(record.getStatus()) && !"待成团".equals(record.getStatus()) && !"退款中".equals(record.getStatus())) {
throw new CzgException("退款失败,订单不处于待退款"); throw new CzgException("退款失败,订单不处于待退款");
} }
return refundByGbOrderDetail(record, param.getReason()); return refundByGbOrderDetail(record, false, param.getReason());
} }
@Override @Override
@@ -448,7 +448,7 @@ public class GbOrderServiceImpl extends ServiceImpl<GbOrderMapper, GbOrder> impl
} }
//单个退 //单个退
public boolean refundByGbOrderDetail(GbOrderDetail record, String reason) { public boolean refundByGbOrderDetail(GbOrderDetail record, boolean isAuto, String reason) {
//回退 人数 //回退 人数
GbOrder gbOrder = getOne(query().eq(GbOrder::getGroupOrderNo, record.getGroupOrderNo()).eq(GbOrder::getShopId, record.getShopId())); GbOrder gbOrder = getOne(query().eq(GbOrder::getGroupOrderNo, record.getGroupOrderNo()).eq(GbOrder::getShopId, record.getShopId()));
if (gbOrder != null) { if (gbOrder != null) {
@@ -461,7 +461,7 @@ public class GbOrderServiceImpl extends ServiceImpl<GbOrderMapper, GbOrder> impl
} }
updateById(upOrder); updateById(upOrder);
} }
FunUtils.safeRunVoid(() -> refundAmount(record, reason), "订单详情{}退款失败", record.getId()); FunUtils.safeRunVoid(() -> refundAmount(record, isAuto, reason), "订单详情{}退款失败", record.getId());
return false; return false;
} }
@@ -475,7 +475,7 @@ public class GbOrderServiceImpl extends ServiceImpl<GbOrderMapper, GbOrder> impl
.eq(GbOrderDetail::getGroupOrderNo, gbOrder.getGroupOrderNo()) .eq(GbOrderDetail::getGroupOrderNo, gbOrder.getGroupOrderNo())
.ne(GbOrderDetail::getStatus, "已退款") .ne(GbOrderDetail::getStatus, "已退款")
.eq(GbOrderDetail::getIsDel, SystemConstants.OneZero.ZERO)); .eq(GbOrderDetail::getIsDel, SystemConstants.OneZero.ZERO));
details.forEach(item -> FunUtils.safeRunVoid(() -> refundAmount(item, reason), "订单详情{}退款失败", item.getId())); details.forEach(item -> FunUtils.safeRunVoid(() -> refundAmount(item, true, reason), "订单详情{}退款失败", item.getId()));
GbOrder upOrder = new GbOrder(); GbOrder upOrder = new GbOrder();
upOrder.setStatus("fail"); upOrder.setStatus("fail");
update(upOrder, query().eq(GbOrder::getId, gbOrder.getId())); update(upOrder, query().eq(GbOrder::getId, gbOrder.getId()));
@@ -483,13 +483,19 @@ public class GbOrderServiceImpl extends ServiceImpl<GbOrderMapper, GbOrder> impl
} }
private boolean refundAmount(GbOrderDetail record, String reason) { /**
* @param isAuto 是否自动退款
*/
private boolean refundAmount(GbOrderDetail record, boolean isAuto, String reason) {
//退钱 //退钱
String refPayOrderNo = CzgRandomUtils.snowflake(OrderNoPrefixEnum.REP); String refPayOrderNo = CzgRandomUtils.snowflake(OrderNoPrefixEnum.REP);
payService.unifyRefund(record.getShopId(), record.getId(), record.getPayOrderId(), refPayOrderNo, payService.unifyRefund(record.getShopId(), record.getId(), record.getPayOrderId(), refPayOrderNo,
StrUtil.isBlankIfStr(reason) ? "拼团退款" : reason, record.getPayAmount()); StrUtil.isBlankIfStr(reason) ? "拼团退款" : reason, record.getPayAmount());
GbOrderDetail upRecord = new GbOrderDetail(); GbOrderDetail upRecord = new GbOrderDetail();
upRecord.setStatus("已退款"); upRecord.setStatus("已退款");
if (isAuto) {
upRecord.setRefundMark("(成团失败)");
}
upRecord.setCancelReason(reason); upRecord.setCancelReason(reason);
return detailService.update(upRecord, query().eq(GbOrderDetail::getId, record.getId())); return detailService.update(upRecord, query().eq(GbOrderDetail::getId, record.getId()));
} }