diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ReturnCartDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ReturnCartDTO.java index 982b343b..f8a9cc43 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ReturnCartDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ReturnCartDTO.java @@ -11,7 +11,6 @@ public class ReturnCartDTO { private Integer cartId; @NotNull private Integer shopId; - @NotNull private Long tableId; @NotNull @Min(value = 1, message = "最小数量为1") diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpCashierCartService.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpCashierCartService.java index daf32c47..43e679e2 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpCashierCartService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpCashierCartService.java @@ -1,5 +1,6 @@ package cn.ysk.cashier.mybatis.service; +import cn.ysk.cashier.cons.TableConstant; import cn.ysk.cashier.enums.OrderStatusEnums; import cn.ysk.cashier.pojo.order.TbCashierCart; import com.baomidou.mybatisplus.extension.service.IService; @@ -48,5 +49,11 @@ public interface MpCashierCartService extends IService { */ boolean clearCartByTableIdAndUseType(String tableId, String useType, Integer shopId); + /** + * 根据订单id更改购物车状态 + * @param status 状态 + * @param orderId 订单id + */ + boolean updateStateByOrderId(TableConstant.OrderInfo.Status status, Integer orderId); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpCashierCartServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpCashierCartServiceImpl.java index 5c16f701..24864521 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpCashierCartServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpCashierCartServiceImpl.java @@ -14,6 +14,7 @@ import cn.ysk.cashier.mybatis.service.MpCashierCartService; import cn.ysk.cashier.pojo.order.TbCashierCart; import cn.ysk.cashier.pojo.shop.TbShopInfo; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; @@ -85,5 +86,12 @@ public class MpCashierCartServiceImpl extends ServiceImpl() + .eq(TbCashierCart::getOrderId, orderId) + .set(TbCashierCart::getStatus, status.getValue())); + } } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java index 1ec56892..215e2cbf 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java @@ -14,14 +14,8 @@ import cn.ysk.cashier.mapper.order.TbOrderInfoMapper; import cn.ysk.cashier.mapper.product.TbProductMapper; import cn.ysk.cashier.mapper.product.TbProductSkuMapper; import cn.ysk.cashier.mybatis.entity.*; -import cn.ysk.cashier.mybatis.mapper.TbCashierCartMapper; -import cn.ysk.cashier.mybatis.mapper.TbMShopUserMapper; -import cn.ysk.cashier.mybatis.mapper.TbOrderDetailMapper; -import cn.ysk.cashier.mybatis.mapper.TbShopUserFlowMapper; -import cn.ysk.cashier.mybatis.service.MpOrderDetailService; -import cn.ysk.cashier.mybatis.service.TbActivateInRecordService; -import cn.ysk.cashier.mybatis.service.TbActivateOutRecordService; -import cn.ysk.cashier.mybatis.service.TbOrderPaymentService; +import cn.ysk.cashier.mybatis.mapper.*; +import cn.ysk.cashier.mybatis.service.*; import cn.ysk.cashier.mybatis.service.impl.MpOrderDetailServiceImpl; import cn.ysk.cashier.pojo.TbShopPayType; import cn.ysk.cashier.pojo.order.TbCashierCart; @@ -30,6 +24,7 @@ import cn.ysk.cashier.pojo.order.TbOrderDetail; import cn.ysk.cashier.pojo.order.TbOrderInfo; import cn.ysk.cashier.pojo.product.TbProduct; import cn.ysk.cashier.pojo.shop.TbMerchantThirdApply; +import cn.ysk.cashier.pojo.shop.TbShopInfo; import cn.ysk.cashier.pojo.shop.TbShopUser; import cn.ysk.cashier.repository.TbShopPayTypeRepository; import cn.ysk.cashier.repository.order.TbCashierCartRepository; @@ -110,6 +105,8 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { private final PayService payService; private final MpOrderDetailService mpOrderDetailService; private final TbOrderDetailMapper tbOrderDetailMapper; + private final MpCashierCartService mpCashierCartService; + private final MpShopInfoMapper mpShopInfoMapper; @Value("${thirdPay.url}") private String url; @@ -168,6 +165,13 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { return predicate; }, pageable); + List shopIds = page.getContent().stream().map(TbOrderInfo::getShopId).distinct().collect(Collectors.toList()); + HashMap shopInfoMap = new HashMap<>(); + if (!shopIds.isEmpty()) { + mpShopInfoMapper.selectBatchIds(shopIds).forEach(item -> { + shopInfoMap.put(item.getId().toString(), item); + }); + } List orderInfoVoList = new ArrayList<>(); for (TbOrderInfo tbOrderInfo : page.getContent()) { TbOrderInfoVo orderInfoVo = new TbOrderInfoVo(); @@ -210,6 +214,10 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { orderInfoVo.setSeatInfo(seatInfo); BeanUtils.copyProperties(tbOrderInfo, orderInfoVo); orderInfoVo.setRefundAmount(refundAmount); + TbShopInfo shopInfo = shopInfoMap.get(tbOrderInfo.getShopId()); + if (shopInfo != null) { + orderInfoVo.setRegisterType(shopInfo.getRegisterType()); + } orderInfoVoList.add(orderInfoVo); } return PageUtil.toPage(orderInfoVoList, page.getTotalElements()); @@ -422,13 +430,35 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { @Transactional(rollbackFor = Exception.class) public void upOrderStatus(TbOrderInfo tbOrderInfo) { tbOrderInfo.setStatus("cancelled"); + //订单取消 赠送商品数量返回 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("order_id", tbOrderInfo.getId()); + queryWrapper.eq("status", "create"); + List outRecords = outRecordService.list(queryWrapper); + for (TbActivateOutRecord outRecord : outRecords) { + TbActivateInRecord inRecord = inRecordService.getById(outRecord.getGiveId()); + inRecord.setOverNum(inRecord.getOverNum() + outRecord.getUseNum()); + inRecordService.updateById(inRecord); + } + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.eq(TbActivateOutRecord::getOrderId, tbOrderInfo.getId()) + .eq(TbActivateOutRecord::getStatus, "create") + .set(TbActivateOutRecord::getStatus, "cancel"); + outRecordService.update(lambdaUpdateWrapper); + List details = tbOrderDetailRepository.searchDetailByOrderId(tbOrderInfo.getId()); + Set keys = new HashSet<>(); for (TbOrderDetail detail : details) { detail.setStatus("cancelled"); // 返还库存 productService.returnStockByPro(detail.getProductId(), detail.getProductSkuId(), detail.getNum()); tbOrderDetailRepository.save(detail); + keys.add(CacheKey.PRODUCT_SKU + detail.getShopId() + ":" + detail.getId()); } + + mpCashierCartService.updateStateByOrderId(TableConstant.OrderInfo.Status.CLOSED, tbOrderInfo.getId()); + String[] keysArray = keys.toArray(new String[keys.size()]); + redisUtils.del(keysArray); } @Override 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 82b93771..bffc184e 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 @@ -2,6 +2,7 @@ package cn.ysk.cashier.service.impl.shopimpl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.ObjectUtil; @@ -55,7 +56,6 @@ import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.persistence.criteria.Order; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigDecimal; @@ -660,8 +660,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { throw new BadRequestException("最大退菜数量为: {}", cashierCart.getNumber()); } - - if (cashierCart.getOrderId() == null) { throw new BadRequestException("此商品还未下单,无需退单"); } @@ -1381,7 +1379,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { } if (shopEatTypeInfoDTO.isIncrMaterId() && "pending".equals(orderInfo.getStatus())) { - String key = RedisConstant.getMasterIdKey(createOrderDTO.getShopId(), cn.ysk.cashier.utils.DateUtils.getDay(), orderInfo.getTableId());; + String key = RedisConstant.getMasterIdKey(createOrderDTO.getShopId(), cn.ysk.cashier.utils.DateUtils.getDay(), orderInfo.getTableId()); + ; redisTemplate.delete(key); } } @@ -1636,6 +1635,9 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderInfo.setDiscountRatio(BigDecimal.valueOf(payDTO.getDiscount())); orderInfo.setDiscountAmount(orderInfo.getAmount().subtract(finalAmount)); } + if (StrUtil.isEmpty(orderInfo.getMemberId())) { + orderInfo.setMemberId(Convert.toStr(payDTO.getVipUserId())); + } orderInfoMapper.updateById(orderInfo); //更新购物车状态 @@ -1652,7 +1654,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { .eq(TbOrderDetail::getOrderId, orderInfo.getId()) .eq(TbOrderDetail::getUseType, orderInfo.getUseType()) .eq(TbOrderDetail::getStatus, "unpaid") - .setSql(StrUtil.format("price_amount=price*num*{}", payDTO.getDiscount() == null ? 1: payDTO.getDiscount())) + .setSql(StrUtil.format("price_amount=price*num*{}", payDTO.getDiscount() == null ? 1 : payDTO.getDiscount())) .set(TbOrderDetail::getStatus, "closed")); JSONObject jsonObject = new JSONObject(); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderInfoVo.java b/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderInfoVo.java index f8f6a1fc..ca102878 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderInfoVo.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderInfoVo.java @@ -117,4 +117,5 @@ public class TbOrderInfoVo { private List detailList; private TbOrderDetail seatInfo; + private String registerType; }