From 185b50a84e64b5e0dc260ccadeb8ab725d2349a5 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Sun, 29 Sep 2024 10:40:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BC=9A=E5=91=98=E7=82=B9?= =?UTF-8?q?=E5=8D=95=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/cons/rabbit/RabbitConstants.java | 8 + .../cashier/dto/shoptable/UpdateVipDTO.java | 1 - .../mapper/MpProductStockDetailMapper.java | 8 + .../mybatis/mapper/MpShopUnitMapper.java | 8 + .../mybatis/mapper/TbProducSkutMapper.java | 3 + .../impl/order/TbOrderInfoServiceImpl.java | 2 +- .../impl/shopimpl/TbShopTableServiceImpl.java | 199 +++++++----------- .../cn/ysk/cashier/utils/RabbitMsgUtils.java | 9 + 8 files changed, 118 insertions(+), 120 deletions(-) create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/MpProductStockDetailMapper.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/MpShopUnitMapper.java diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/rabbit/RabbitConstants.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/rabbit/RabbitConstants.java index c04b990a..65509981 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/rabbit/RabbitConstants.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/rabbit/RabbitConstants.java @@ -31,4 +31,12 @@ public interface RabbitConstants { // 排队小票打印 String QUEUE_PRINT_CALL_TABLE = "queue.print.call.table"; String ROUTING_KEY_CALL_TABLE = "routing.call.table"; + + // 会员余额记录 + String EXCHANGE_BALANCE = "balance_put"; + String ROUTING_KEY_BALANCE = "balance_routingkey_put"; + + // 耗材 + String EXCHANGE_CONS = "cons_collect_put"; + String ROUTING_KEY_CONS = "cons_collect_routingkey_put"; } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/UpdateVipDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/UpdateVipDTO.java index bdd654c1..693c2c76 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/UpdateVipDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/UpdateVipDTO.java @@ -10,7 +10,6 @@ import javax.validation.constraints.NotNull; public class UpdateVipDTO { @NotNull private Integer shopId; - @NotEmpty private String tableId; @NotNull private String masterId; diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/MpProductStockDetailMapper.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/MpProductStockDetailMapper.java new file mode 100644 index 00000000..082b0724 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/MpProductStockDetailMapper.java @@ -0,0 +1,8 @@ +package cn.ysk.cashier.mybatis.mapper; + +import cn.ysk.cashier.pojo.product.TbProductStockDetail; +import cn.ysk.cashier.pojo.shop.TbShopTable; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface MpProductStockDetailMapper extends BaseMapper { +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/MpShopUnitMapper.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/MpShopUnitMapper.java new file mode 100644 index 00000000..a93144b8 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/MpShopUnitMapper.java @@ -0,0 +1,8 @@ +package cn.ysk.cashier.mybatis.mapper; + +import cn.ysk.cashier.pojo.shop.TbShopInfo; +import cn.ysk.cashier.pojo.shop.TbShopUnit; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface MpShopUnitMapper extends BaseMapper { +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbProducSkutMapper.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbProducSkutMapper.java index 4974cbde..66fb09e5 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbProducSkutMapper.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbProducSkutMapper.java @@ -27,4 +27,7 @@ public interface TbProducSkutMapper extends BaseMapper { @Update("update tb_product_sku set stock_number=stock_number-#{num} WHERE id=#{id} ") int decrStockUnCheck(String id, int num); + + @Update("update tb_product_sku set real_sales_number=real_sales_number-#{num} WHERE id=#{skuId}") + int decrRealSalesNumber(@Param("skuId") Integer skuId, @Param("num") Integer num); } 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 38f6d1bb..78e49d49 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 @@ -570,7 +570,7 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { baObj.put("balance", user.getAmount()); baObj.put("type", "退款"); baObj.put("time", flow.getCreateTime()); -// rabbitMsgUtils. + rabbitMsgUtils.addBalanceRecord(baObj); // producer.balance(baObj.toString()); } } 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 be1bb611..ebc13a4e 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 @@ -23,6 +23,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.product.TbProductSku; +import cn.ysk.cashier.pojo.product.TbProductStockDetail; import cn.ysk.cashier.pojo.shop.*; import cn.ysk.cashier.repository.TbShopPayTypeRepository; import cn.ysk.cashier.repository.order.TbCashierCartRepository; @@ -95,6 +96,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { private final MpShopTableMapper mpShopTableMapper; private final TbShopPayTypeMapper tbShopPayTypeMapper; private final MpShopTableService mpShopTableService; + private final MpShopUnitMapper mpShopUnitMapper; + private final MpProductStockDetailMapper mpProductStockDetailMapper; @Value("${thirdPay.payType}") private String thirdPayType; @@ -1609,19 +1612,35 @@ public class TbShopTableServiceImpl implements TbShopTableService { } @Override - public Object updateVip(UpdateVipDTO updateVipDTO) { - LambdaUpdateWrapper queryWrapper = new LambdaUpdateWrapper<>(); - queryWrapper.eq(TbCashierCart::getTableId, updateVipDTO.getTableId()) - .eq(TbCashierCart::getMasterId, updateVipDTO.getMasterId()) - .eq(TbCashierCart::getShopId, updateVipDTO.getShopId()); + public Object updateVip(UpdateVipDTO updateVipDTO) { + ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(updateVipDTO.getShopId(), updateVipDTO.getTableId()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .in(TbCashierCart::getStatus, "create", "return") + .eq(TbCashierCart::getShopId, updateVipDTO.getShopId()) + .eq(TbCashierCart::getUseType, shopEatTypeInfoDTO.getUseType()) + .and(q -> q.eq(TbCashierCart::getMasterId, updateVipDTO.getMasterId()).or().isNull(TbCashierCart::getMasterId)); - if (updateVipDTO.getType().equals(0)) { - queryWrapper.set(TbCashierCart::getUserId, null); - queryWrapper.eq(TbCashierCart::getUserId, updateVipDTO.getVipUserId()); + if (!shopEatTypeInfoDTO.isTakeout()) { + queryWrapper.eq(TbCashierCart::getTableId, updateVipDTO.getTableId()); } else { - queryWrapper.set(TbCashierCart::getUserId, updateVipDTO.getVipUserId()); + queryWrapper.and(q -> q.isNull(TbCashierCart::getTableId).or().eq(TbCashierCart::getTableId, "")) + .in(TbCashierCart::getPlatformType, OrderPlatformTypeEnum.PC.getValue(), OrderPlatformTypeEnum.CASH.getValue()); } - return cashierCartMapper.update(null, queryWrapper); + + List tbCashierCarts = cashierCartMapper.selectList(queryWrapper.isNotNull(TbCashierCart::getOrderId)); + if (!tbCashierCarts.isEmpty()) { + Integer orderId = tbCashierCarts.get(0).getOrderId(); + if (updateVipDTO.getType() == 0) { + return orderInfoMapper.update(null, new LambdaUpdateWrapper() + .eq(TbOrderInfo::getId, orderId) + .set(TbOrderInfo::getUserId, updateVipDTO.getVipUserId())); + }else { + return orderInfoMapper.update(null, new LambdaUpdateWrapper() + .eq(TbOrderInfo::getId, orderId) + .set(TbOrderInfo::getUserId, null)); + } + } + return true; } @@ -1946,9 +1965,46 @@ public class TbShopTableServiceImpl implements TbShopTableService { returnOrder.setSource(oldOrderInfo.getId()); orderInfoMapper.insert(returnOrder); + updateStockAndRecord(detailList); + return returnOrder; } + private void updateStockAndRecord(List orderDetailList) { + // 更新商品库存 + for (TbOrderDetail detail : orderDetailList) { + TbProductSku productSku = producSkutMapper.selectById(detail.getProductSkuId()); + TbProduct product = productMapper.selectById(detail.getProductId()); + + TbProductStockDetail tbProductStockDetail = new TbProductStockDetail(); + tbProductStockDetail.setCreatedAt(System.currentTimeMillis()); + tbProductStockDetail.setUpdatedAt(System.currentTimeMillis()); + tbProductStockDetail.setShopId(detail.getShopId().toString()); + tbProductStockDetail.setSourcePath("NORMAL"); + tbProductStockDetail.setType("退单"); + tbProductStockDetail.setSubType(1); + tbProductStockDetail.setRemark("退单: " + detail.getOrderId()); + tbProductStockDetail.setOrderId(String.valueOf(detail.getOrderId())); + + if (ObjectUtil.isNotEmpty(product)) { + TbShopUnit shopUnit = mpShopUnitMapper.selectById(product.getUnitId()); + tbProductStockDetail.setProductName(product.getName()); + tbProductStockDetail.setIsStock(product.getIsStock()); + tbProductStockDetail.setStockSnap(product.getSelectSpec()); + tbProductStockDetail.setUnitName(shopUnit.getName()); + tbProductStockDetail.setProductId(product.getId().toString()); + + productMapper.incrStock(product.getId(), detail.getNum()); + tbProductStockDetail.setLeftNumber(product.getStockNumber()); + tbProductStockDetail.setStockNumber(Double.valueOf(detail.getNum())); + + producSkutMapper.decrRealSalesNumber(productSku.getId(), detail.getNum()); + } + + mpProductStockDetailMapper.insert(tbProductStockDetail); + } + } + @Override public Object returnOrder(ReturnOrderDTO returnOrderDTO) { @@ -1970,118 +2026,25 @@ public class TbShopTableServiceImpl implements TbShopTableService { } TbOrderInfo returnOrderInfo = updateReturnOrderInfo(returnOrderDTO, orderInfo, true); - - String merchantId = orderInfo.getMerchantId(); String shopId = orderInfo.getShopId(); - String day = DateUtils.getDay(); - String masterId = orderInfo.getMasterId(); String payType = orderInfo.getPayType(); - BigDecimal orderAmount = orderInfo.getPayAmount(); - - - BigDecimal returnAmount = BigDecimal.ZERO; - BigDecimal packAMount = BigDecimal.ZERO; - BigDecimal saleAmount = BigDecimal.ZERO; - BigDecimal feeAmount = BigDecimal.ZERO; - BigDecimal payAmount = BigDecimal.ZERO; // // 线上退款 -// if ("scanCode".equals(payType) || "wx_lite".equals(payType)) { -// payService.returnOrder(Integer.valueOf(shopId), orderInfo, returnOrderInfo); -// -// // 储值卡支付退款 -// } else if ("deposit".equals(payType)) { -// orderInfoService.depositReturn(); -// -// -// } -// //添加退单数据 -// -// //更新子单表 -// if (ObjectUtil.isNotEmpty(detailPos) && detailPos.size() > 0) { -// tbOrderDetailMapper.updateBatchOrderDetail(detailPos); -// } -// -// //添加子表信息 -// if (ObjectUtil.isNotEmpty(returnDetail) && returnDetail.size() > 0) { -// tbOrderDetailMapper.batchInsert(returnDetail, newOrderInfo.getId().toString()); -// } -// -// -// JSONObject jsonObject = new JSONObject(); -// jsonObject.put("token", token); -// jsonObject.put("type", "return"); -// jsonObject.put("orderId", 0); -// jsonObject.put("amount", newOrderInfo.getPayAmount()); -//// jsonObject.put("data",new ReturnWTZInfo(orderId+"",newOrderInfo.getPayAmount(),details)); -// producer.putOrderCollect(jsonObject.toJSONString()); -// -// + if ("scanCode".equals(payType) || "wx_lite".equals(payType)) { + payService.returnOrder(Integer.valueOf(shopId), orderInfo, returnOrderInfo); + // 储值卡支付退款 + } else if ("deposit".equals(payType)) { + orderInfoService.depositReturn(Integer.valueOf(orderInfo.getUserId()), Integer.valueOf(orderInfo.getShopId()), returnOrderInfo.getRefundAmount()); + } + + // 打印退款小票 // producer.printMechine(newOrderInfo.getId().toString()); -// -// -// //修改耗材数据 -// JSONObject jsonObject1 = new JSONObject(); -// jsonObject1.put("orderId", newOrderInfo.getId()); -// jsonObject1.put("type", "delete"); -// producer.cons(jsonObject1.toString()); -// -// // 更新商品库存 -// for (TbOrderDetail detail : returnDetail) { -// detail = tbOrderDetailMapper.selectByPrimaryKey(detail.getId()); -// -// TbProductSku productSku = productSkuMapper.selectByPrimaryKey(detail.getProductSkuId()); -// TbProductWithBLOBs product = productMapper.selectByPrimaryKey(detail.getProductId()); -// -// TbProductStockDetail tbProductStockDetail = new TbProductStockDetail(); -// tbProductStockDetail.setCreatedAt(System.currentTimeMillis()); -// tbProductStockDetail.setUpdatedAt(System.currentTimeMillis()); -// tbProductStockDetail.setShopId(detail.getShopId().toString()); -// tbProductStockDetail.setSourcePath("NORMAL"); -// tbProductStockDetail.setType("退单"); -// tbProductStockDetail.setSubType((byte) 1); -// tbProductStockDetail.setRemark("退单: " + detail.getOrderId()); -// tbProductStockDetail.setOrderId(String.valueOf(detail.getOrderId())); -// -// if (ObjectUtil.isNotEmpty(product)) { -// TbShopUnit shopUnit = shopUnitMapper.selectByPrimaryKey(Integer.valueOf(product.getUnitId())); -// -// tbProductStockDetail.setProductName(product.getName()); -// tbProductStockDetail.setIsStock(product.getIsStock()); -// tbProductStockDetail.setStockSnap(product.getSelectSpec()); -// tbProductStockDetail.setUnitName(shopUnit.getName()); -// tbProductStockDetail.setProductId(product.getId().toString()); -// -// if (product.getIsDistribute() == 1) { -//// redisUtil.seckill(RedisCst.PRODUCT + shopId.toString() + ":product" + product.getId().toString(), String.valueOf(detail.getReturnNum() + product.getStockNumber().intValue())); -// productMapper.updateStockById(product.getId(), detail.getReturnNum() * -1); -// -// tbProductStockDetail.setLeftNumber(product.getStockNumber()); -// tbProductStockDetail.setStockNumber(Double.valueOf(detail.getReturnNum())); -// } else { -// if (ObjectUtil.isNotEmpty(productSku)) { -//// redisUtil.seckill(RedisCst.PRODUCT + shopId.toString() + ":" + productSku.getId().toString(), String.valueOf(detail.getReturnNum() + productSku.getStockNumber().intValue())); -// productSkuMapper.updateByskuIdSub(productSku.getId(), detail.getReturnNum() * -1); -// -// tbProductStockDetail.setSkuId(productSku.getId().toString()); -// tbProductStockDetail.setLeftNumber(productSku.getStockNumber().intValue()); -// tbProductStockDetail.setStockNumber(Double.valueOf(detail.getReturnNum())); -// } -// } -// productSkuMapper.decrRealSalesNumber(productSku.getId(), detail.getReturnNum()); -// } -// -// productStockDetailMapper.insert(tbProductStockDetail); -// } -// redisUtil.del("SHOP:CODE:USER:" + "pc" + ":" + orderInfo.getShopId() + ":" + DateUtils.getDay() + TokenUtil.parseParamFromToken(token).getString("accountId")); -// -// // 修改台桌状态 -// mpShopTableMapper.update(null, new LambdaUpdateWrapper() -// .eq(TbShopTable::getQrcode, orderInfo.getTableId()) -// .set(TbShopTable::getStatus, TableStateEnum.IDLE.getState())); -// -// -// return Result.success(CodeEnum.SUCCESS); - return null; + + //修改耗材数据 + JSONObject jsonObject1 = new JSONObject(); + jsonObject1.put("orderId", returnOrderInfo.getId()); + jsonObject1.put("type", "delete"); + rabbitMsgUtils.updateCons(jsonObject1); + return true; } } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/utils/RabbitMsgUtils.java b/eladmin-system/src/main/java/cn/ysk/cashier/utils/RabbitMsgUtils.java index 52c3811e..273322cb 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/utils/RabbitMsgUtils.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/utils/RabbitMsgUtils.java @@ -79,4 +79,13 @@ public class RabbitMsgUtils implements RabbitTemplate.ConfirmCallback { printDTO.setShopId(shopId); sendMsg(RabbitConstants.EXCHANGE_PRINT, RabbitConstants.ROUTING_KEY_CALL_TABLE, printDTO, "排号小票打印", true); } + + public void addBalanceRecord(JSONObject baObj) { + sendMsg(RabbitConstants.EXCHANGE_BALANCE, RabbitConstants.ROUTING_KEY_BALANCE, baObj, "储值卡记录", true); + } + + public void updateCons(JSONObject jsonObject1) { + sendMsg(RabbitConstants.EXCHANGE_CONS, RabbitConstants.ROUTING_KEY_CONS, jsonObject1, "储值卡记录", true); + + } }