This commit is contained in:
2025-12-17 10:11:09 +08:00
parent 01ca38079b
commit bf2eb85233
7 changed files with 93 additions and 27 deletions

View File

@@ -10,7 +10,6 @@ import com.czg.enums.OrderNoPrefixEnum;
import com.czg.enums.YesNoEnum;
import com.czg.exception.CzgException;
import com.czg.market.entity.GbWare;
import com.czg.market.entity.MkPointsGoodsRecord;
import com.czg.market.service.GbWareService;
import com.czg.order.dto.CommonRefundDTO;
import com.czg.order.dto.GbOrderQueryParam;
@@ -25,6 +24,7 @@ import com.czg.order.vo.GbOrderUserVO;
import com.czg.order.vo.GbWareOrderVO;
import com.czg.order.vo.GbWareVO;
import com.czg.resp.CzgResult;
import com.czg.sa.StpKit;
import com.czg.service.order.mapper.GbOrderMapper;
import com.czg.service.order.service.PayService;
import com.czg.utils.AssertUtil;
@@ -273,7 +273,7 @@ public class GbOrderServiceImpl extends ServiceImpl<GbOrderMapper, GbOrder> impl
throw new CzgException("申请失败,该商品不可申请退款");
}
if ("待成团".equals(record.getStatus())) {
return refundAmount(record, "");
return refundAmount(record, param.getReason());
}
GbOrderDetail upRecord = new GbOrderDetail();
record.setStatus("退款中");
@@ -338,16 +338,66 @@ public class GbOrderServiceImpl extends ServiceImpl<GbOrderMapper, GbOrder> impl
return refundAmount(record, param.getReason());
}
@Override
public boolean editGbWareOnlineStatus(Long id, Integer onlineStatus) {
GbWare gbWare = new GbWare();
gbWare.setOnlineStatus(onlineStatus);
boolean update = wareService.update(gbWare, query().eq(GbWare::getId, id).eq(GbWare::getShopId, StpKit.USER.getShopId()));
if (update && onlineStatus == 0) {
//退钱
wareDownRefund(id);
}
return update;
}
@Override
public boolean expireRefund(Long gbOrderId) {
GbOrder order = getOne(query().eq(GbOrder::getId, gbOrderId).eq(GbOrder::getStatus, "ing"));
return refundByGbOrder(order, "成团期限超时");
}
@Override
public boolean wareDownRefund(Long wareId) {
List<GbOrder> list = list(query().eq(GbOrder::getWareId, wareId).eq(GbOrder::getStatus, "ing"));
for (GbOrder gbOrder : list) {
refundByGbOrder(gbOrder, "所属活动变更为下架状态");
}
return true;
}
@Override
public boolean shopDownRefund(Long shopId) {
List<GbOrder> list = list(query().eq(GbOrder::getShopId, shopId).eq(GbOrder::getStatus, "ing"));
for (GbOrder gbOrder : list) {
refundByGbOrder(gbOrder, "商品拼团功能关闭");
}
return true;
}
public boolean refundByGbOrder(GbOrder gbOrder, String reason) {
if (gbOrder == null) {
return false;
}
List<GbOrderDetail> details = detailService.list(query()
.ne(GbOrderDetail::getShopId, gbOrder.getShopId())
.eq(GbOrderDetail::getGroupOrderNo, gbOrder.getGroupOrderNo())
.ne(GbOrderDetail::getStatus, "已退款")
.eq(GbOrderDetail::getIsDel, YesNoEnum.NO.value()));
details.forEach(item -> refundAmount(item, reason));
return true;
}
private boolean refundAmount(GbOrderDetail record, String reason) {
//退钱
String refPayOrderNo = CzgRandomUtils.snowflake(OrderNoPrefixEnum.REP);
payService.unifyRefund(record.getShopId(), record.getId(), record.getPayOrderId(), refPayOrderNo,
StrUtil.isBlankIfStr(reason) ? "拼团退款" : reason, record.getPayAmount());
//回退 人数
GbOrder gbOrder = getOne(query().eq(GbOrder::getGroupOrderNo, record.getGroupOrderNo()).eq(GbOrder::getShopId, record.getShopId()));
if (gbOrder != null) {
GbOrder upOrder = new GbOrder();
upOrder.setId(gbOrder.getId());
upOrder.setCurrentPeopleNum(gbOrder.getCurrentPeopleNum() - 1);
if (upOrder.getCurrentPeopleNum() == 0) {
upOrder.setStatus("fail");
@@ -357,6 +407,7 @@ public class GbOrderServiceImpl extends ServiceImpl<GbOrderMapper, GbOrder> impl
}
GbOrderDetail upRecord = new GbOrderDetail();
upRecord.setStatus("已退款");
upRecord.setCancelReason(reason);
return detailService.update(upRecord, query().eq(GbOrderDetail::getId, record.getId()));
}
}