diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderInfoService.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderInfoService.java new file mode 100644 index 00000000..9c3a86ae --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderInfoService.java @@ -0,0 +1,25 @@ +package cn.ysk.cashier.mybatis.service; + +import cn.ysk.cashier.enums.OrderStatusEnums; +import cn.ysk.cashier.pojo.order.TbOrderDetail; +import cn.ysk.cashier.pojo.order.TbOrderInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * (TbShopPermission)表服务接口 + * + * @author makejava + * @since 2024-09-14 17:08:48 + */ +public interface MpOrderInfoService extends IService { + + /** + * 根据原始订单查询退款订单 + * @param orderId 原始订单id + * @return 对应的退款订单 + */ + TbOrderInfo selectReturnOrderByOrderId(Integer orderId); +} + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderInfoServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderInfoServiceImpl.java new file mode 100644 index 00000000..23b95c86 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderInfoServiceImpl.java @@ -0,0 +1,28 @@ +package cn.ysk.cashier.mybatis.service.impl; + +import cn.ysk.cashier.mybatis.mapper.TbCashierCartMapper; +import cn.ysk.cashier.mybatis.mapper.TbOrderInfoMapper; +import cn.ysk.cashier.mybatis.service.MpCashierCartService; +import cn.ysk.cashier.mybatis.service.MpOrderInfoService; +import cn.ysk.cashier.pojo.order.TbCashierCart; +import cn.ysk.cashier.pojo.order.TbOrderInfo; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * (TbShopPermission)表服务实现类 + * + * @author makejava + * @since 2024-09-14 17:08:49 + */ +@Service +public class MpOrderInfoServiceImpl extends ServiceImpl implements MpOrderInfoService { + @Override + public TbOrderInfo selectReturnOrderByOrderId(Integer orderId) { + return getOne(new LambdaQueryWrapper() + .eq(TbOrderInfo::getSource, orderId) + .eq(TbOrderInfo::getOrderType, "return")); + } +} + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index 12d24d00..5f3ab61c 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -18,6 +18,7 @@ import cn.ysk.cashier.mapper.shop.TbShopTableMapper; import cn.ysk.cashier.mybatis.mapper.*; import cn.ysk.cashier.mybatis.service.MpCashierCartService; import cn.ysk.cashier.mybatis.service.MpOrderDetailService; +import cn.ysk.cashier.mybatis.service.MpOrderInfoService; import cn.ysk.cashier.mybatis.service.MpShopTableService; import cn.ysk.cashier.pojo.TbShopPayType; import cn.ysk.cashier.pojo.order.TbCashierCart; @@ -114,6 +115,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { private final MpMerchantThirdApplyMapper mpMerchantThirdApplyMapper; private final PayService payService; private final TbOrderInfoService orderInfoService; + private final MpOrderInfoService mpOrderInfoService; private TbOrderInfo getCurrentOrder(ShopEatTypeInfoDTO eatTypeInfoDTO) { // 获取当前台桌最新订单,先付款模式不获取 @@ -2048,20 +2050,29 @@ public class TbShopTableServiceImpl implements TbShopTableService { mpOrderDetailService.saveBatch(remainOrderDetailList); } - String orderNo = generateOrderNumber(isOnline ? "OLRO" : "RO"); - TbOrderInfo returnOrder = BeanUtil.copyProperties(oldOrderInfo, TbOrderInfo.class); - returnOrder.setId(null); - returnOrder.setOrderNo(orderNo); - returnOrder.setRefundAmount(returnAmount); - returnOrder.setOrderType("return"); - returnOrder.setStatus("refunding"); - returnOrder.setUpdatedAt(null); - returnOrder.setSystemTime(DateUtil.current()); - returnOrder.setCreatedAt(DateUtil.current()); - returnOrder.setPayOrderNo(null); - returnOrder.setSource(oldOrderInfo.getId()); - returnOrder.setRefundRemark(returnOrderDTO.getNote()); - orderInfoMapper.insert(returnOrder); + TbOrderInfo returnOrder = mpOrderInfoService.selectReturnOrderByOrderId(returnOrderDTO.getOrderId()); + if (returnOrder == null) { + String orderNo = generateOrderNumber(isOnline ? "OLRO" : "RO"); + returnOrder = BeanUtil.copyProperties(oldOrderInfo, TbOrderInfo.class); + returnOrder.setId(null); + returnOrder.setOrderNo(orderNo); + returnOrder.setRefundAmount(returnAmount); + returnOrder.setOrderType("return"); + returnOrder.setStatus("refunding"); + returnOrder.setUpdatedAt(null); + returnOrder.setSystemTime(DateUtil.current()); + returnOrder.setCreatedAt(DateUtil.current()); + returnOrder.setPayOrderNo(null); + returnOrder.setSource(oldOrderInfo.getId()); + returnOrder.setRefundRemark(returnOrderDTO.getNote()); + orderInfoMapper.insert(returnOrder); + }else { + returnOrder.setUpdatedAt(DateUtil.current()); + returnOrder.setRefundRemark(returnOrderDTO.getNote()); + returnOrder.setRefundAmount(returnOrder.getRefundAmount().add(returnAmount)); + orderInfoMapper.updateById(returnOrder); + } + updateStockAndRecord(detailList); mpOrderDetailService.updateBatchById(detailList);