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 51221d37..2b3e134e 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 @@ -24,4 +24,8 @@ public interface RabbitConstants { String EXCHANGE_PRINT = "exchange.print"; String ROUTING_KEY_PRINT_DISHES = "routing.dishes.print"; + // 订单打印 + String QUEUE_PRINT_PLACE = "queue.place.order.print"; + String ROUTING_KEY_PRINT_PLACE = "routing.place.order.print"; + } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbPlaceController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbPlaceController.java index a620268a..925a74b6 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbPlaceController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbPlaceController.java @@ -236,6 +236,16 @@ public class TbPlaceController { return ResponseEntity.ok(tbShopTableService.updateVip(updateVipDTO)); } + @AnonymousAccess + @PostMapping("/printOrder") + @Log("代客下单 打印订单") + @ApiOperation("代客下单 查询购物车 /shop/table") + public ResponseEntity printOrder( + @Validated @RequestBody BaseTableDTO baseTableDTO + ) { + return ResponseEntity.ok(tbShopTableService.printOrder(baseTableDTO)); + } + private final RabbitTemplate rabbitTemplate; @AnonymousAccess @GetMapping("/test") diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopTableController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopTableController.java index 70ab3a66..e62f214c 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopTableController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopTableController.java @@ -15,10 +15,12 @@ */ package cn.ysk.cashier.controller.shop; +import cn.ysk.cashier.annotation.AnonymousAccess; import cn.ysk.cashier.annotation.Log; import cn.ysk.cashier.dto.shoptable.AddCartDTO; import cn.ysk.cashier.dto.shoptable.ClearCartDTO; import cn.ysk.cashier.dto.shoptable.RemoveCartDTO; +import cn.ysk.cashier.dto.shoptable.TableGenerateDTO; import cn.ysk.cashier.pojo.shop.TbShopTable; import cn.ysk.cashier.service.shop.TbShopTableService; import cn.ysk.cashier.dto.shop.TbShopTableQueryCriteria; @@ -87,6 +89,15 @@ public class TbShopTableController { return new ResponseEntity<>(HttpStatus.OK); } + @PostMapping("/generate") + @ApiOperation("查询/shop/table") + public ResponseEntity generate(@Validated @RequestBody TableGenerateDTO generateDTO){ + if (generateDTO.getStart() >= generateDTO.getEnd()){ + return ResponseEntity.badRequest().body("起始数不能大于结束数"); + } + return new ResponseEntity<>(tbShopTableService.generate(generateDTO),HttpStatus.OK); + } + } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/BaseTableDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/BaseTableDTO.java new file mode 100644 index 00000000..cafdb4e5 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/BaseTableDTO.java @@ -0,0 +1,15 @@ +package cn.ysk.cashier.dto.shoptable; + +import lombok.Data; +import org.hibernate.validator.constraints.Range; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +@Data +public class BaseTableDTO { + @NotNull + private Integer shopId; + @NotEmpty + private String tableId; +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/TableGenerateDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/TableGenerateDTO.java new file mode 100644 index 00000000..9e19f372 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/TableGenerateDTO.java @@ -0,0 +1,28 @@ +package cn.ysk.cashier.dto.shoptable; + +import lombok.Data; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +@Data +public class TableGenerateDTO { + @NotNull + private Integer shopId; + @NotEmpty + private String sign; + private Integer areaId; + @Min(1) + @NotNull + private Integer start; + @Min(2) + @Max(1000) + @NotNull + private Integer end; + @NotNull + @Min(1) + private Integer capacity; + private Integer autoClear = 1; +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/MpShopAreaMapper.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/MpShopAreaMapper.java new file mode 100644 index 00000000..1a64808d --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/MpShopAreaMapper.java @@ -0,0 +1,8 @@ +package cn.ysk.cashier.mybatis.mapper; + +import cn.ysk.cashier.pojo.shop.TbShopArea; +import cn.ysk.cashier.pojo.shop.TbShopTable; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface MpShopAreaMapper extends BaseMapper { +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpShopTableService.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpShopTableService.java new file mode 100644 index 00000000..65ee8e88 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpShopTableService.java @@ -0,0 +1,7 @@ +package cn.ysk.cashier.mybatis.service; + +import cn.ysk.cashier.pojo.shop.TbShopTable; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface MpShopTableService extends IService { +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpShopTableServiceImpl.java new file mode 100644 index 00000000..986aa570 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpShopTableServiceImpl.java @@ -0,0 +1,15 @@ +package cn.ysk.cashier.mybatis.service.impl; + +import cn.ysk.cashier.mapper.shop.TbShopTableMapper; +import cn.ysk.cashier.mybatis.entity.TagProductDepts; +import cn.ysk.cashier.mybatis.mapper.MpShopTableMapper; +import cn.ysk.cashier.mybatis.mapper.TagProductDeptsMapper; +import cn.ysk.cashier.mybatis.service.MpShopTableService; +import cn.ysk.cashier.mybatis.service.TagProductDeptsService; +import cn.ysk.cashier.pojo.shop.TbShopTable; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service +public class MpShopTableServiceImpl extends ServiceImpl implements MpShopTableService { +} 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 e6eb44d5..5e02d17c 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 @@ -30,6 +30,7 @@ import cn.ysk.cashier.exception.BadRequestException; import cn.ysk.cashier.mybatis.entity.TbShopOpenId; import cn.ysk.cashier.mybatis.entity.TbShopUserFlow; import cn.ysk.cashier.mybatis.mapper.*; +import cn.ysk.cashier.mybatis.service.MpShopTableService; import cn.ysk.cashier.pojo.TbShopPayType; import cn.ysk.cashier.pojo.order.TbCashierCart; import cn.ysk.cashier.pojo.order.TbOrderDetail; @@ -37,6 +38,7 @@ 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.shop.TbMerchantAccount; +import cn.ysk.cashier.pojo.shop.TbShopArea; import cn.ysk.cashier.pojo.shop.TbShopInfo; import cn.ysk.cashier.pojo.shop.TbShopTable; import cn.ysk.cashier.repository.TbShopPayTypeRepository; @@ -111,6 +113,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { private final TbShopPayTypeRepository payTypeRepository; private final MpShopTableMapper mpShopTableMapper; private final TbShopPayTypeMapper tbShopPayTypeMapper; + private final MpShopTableService mpShopTableService; /** @@ -122,6 +125,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { private final TbCashierCartMapper tbCashierCartMapper; private final TbOrderDetailMapper tbOrderDetailMapper; private final StringRedisTemplate stringRedisTemplate; + private final MpShopAreaMapper mpShopAreaMapper; @Override public Map queryAll(TbShopTableQueryCriteria criteria, Pageable pageable) { @@ -1567,7 +1571,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { LambdaQueryWrapper query = new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, choseCountDTO.getShopId()) .eq(TbCashierCart::getMasterId, choseCountDTO.getMasterId()) - .eq(TbCashierCart::getProductId, -999) + .eq(TbCashierCart::getProductId, "-999") + .eq(TbCashierCart::getSkuId, "-999") .eq(TbCashierCart::getTableId, choseCountDTO.getTableId()); TbCashierCart tbCashierCart = cashierCartMapper.selectOne(query); @@ -1597,4 +1602,65 @@ public class TbShopTableServiceImpl implements TbShopTableService { return tbCashierCart; } + + @Override + public Object printOrder(BaseTableDTO baseTableDTO) { + TbShopTable tbShopTable = mpShopTableMapper.selectOne(new LambdaQueryWrapper() + .eq(TbShopTable::getQrcode, baseTableDTO.getTableId()) + .in(TbShopTable::getStatus, TableStateEnum.USING.getState(), TableStateEnum.PAYING.getState(), TableStateEnum.CLEANING.getState())); + if (tbShopTable == null) { + throw new BadRequestException("台桌不存在或当前台桌未开台"); + } + String currentOrderId = getCurrentOrderId(baseTableDTO.getTableId(), baseTableDTO.getShopId().toString()); + if (StrUtil.isBlank(currentOrderId)) { + throw new BadRequestException("当前台桌不存在订单"); + } + TbOrderInfo orderInfo = orderInfoMapper.selectById(currentOrderId); + rabbitMsgUtils.printPlaceTicket(orderInfo.getId(), false); + return true; + } + + @Override + public Object generate(TableGenerateDTO generateDTO) { + TbShopArea shopArea = mpShopAreaMapper.selectOne(new LambdaQueryWrapper() + .eq(TbShopArea::getShopId, generateDTO.getShopId()) + .eq(TbShopArea::getId, generateDTO.getAreaId())); + if (shopArea == null) { + throw new BadRequestException("台桌区域不存在"); + } + + List tbShopTables = mpShopTableMapper.selectList(new LambdaQueryWrapper() + .eq(TbShopTable::getShopId, generateDTO.getShopId()) + .select(TbShopTable::getName)); + + HashMap tableMap = new HashMap<>(); + tbShopTables.forEach(item -> { + tableMap.put(item.getName(), item); + }); + + StringBuilder msg = new StringBuilder(); + ArrayList tableArrayList = new ArrayList<>(); + for (int i = generateDTO.getStart(); i <= generateDTO.getEnd(); i++) { + String name = generateDTO.getSign() + i; + if (tableMap.get(name) != null) { + msg.append(name).append(";"); + continue; + } + TbShopTable shopTable = new TbShopTable(); + shopTable.setShopId(generateDTO.getShopId()); + shopTable.setName(name); + shopTable.setMaxCapacity(generateDTO.getCapacity()); + shopTable.setAreaId(generateDTO.getAreaId()); + shopTable.setCreatedAt(DateUtil.current()); + shopTable.setStatus(TableStateEnum.CLOSED.getState()); + tableArrayList.add(shopTable); + } + + mpShopTableService.saveBatch(tableArrayList); + if (StrUtil.isNotBlank(msg.toString())) { + msg.append("台桌名已存在,未添加"); + throw new BadRequestException(msg.toString()); + } + return true; + } } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopTableService.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopTableService.java index 12516322..91c666f0 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopTableService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopTableService.java @@ -130,4 +130,8 @@ public interface TbShopTableService { Object choseTable(ChoseTableDTO choseTableDTO); Object choseCount(ChoseCountDTO choseCountDTO); + + Object printOrder(BaseTableDTO baseTableDTO); + + Object generate(TableGenerateDTO generateDTO); } 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 cd22a2dc..d3585244 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 @@ -54,4 +54,12 @@ public class RabbitMsgUtils implements RabbitTemplate.ConfirmCallback { jsonObject.put("isReturn", true); sendMsg(RabbitConstants.EXCHANGE_PRINT, RabbitConstants.ROUTING_KEY_PRINT_DISHES, jsonObject, "菜品退单", false); } + + public void printPlaceTicket(Integer id, boolean isReturn) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("orderId", id); + jsonObject.put("isReturn", isReturn); + sendMsg(RabbitConstants.EXCHANGE_PRINT, RabbitConstants.ROUTING_KEY_PRINT_PLACE, jsonObject, "订单打印", false); + + } }