From a2fe3d5421241de6d363cf0b07eaa59c35ca54f2 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Thu, 27 Nov 2025 18:12:00 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E9=A2=84=E7=BA=A6=E6=AE=B5=20=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/BkContactListController.java | 122 ++++++++++++++ .../java/com/czg/account/dto/BkOrderDTO.java | 105 ++++++++++++ .../com/czg/account/entity/BkContactList.java | 67 ++++++++ .../java/com/czg/account/entity/BkOrder.java | 149 ++++++++++++++++++ .../com/czg/account/entity/BkOrderTable.java | 67 ++++++++ .../account/service/BkContactListService.java | 26 +++ .../czg/account/service/BkOrderService.java | 53 +++++++ .../java/com/czg/account/vo/BkTableVO.java | 28 ++++ .../account/mapper/BkContactListMapper.java | 22 +++ .../service/account/mapper/BkOrderMapper.java | 21 +++ .../account/mapper/BkOrderTableMapper.java | 37 +++++ .../impl/BkContactListServiceImpl.java | 39 +++++ .../service/impl/BkOrderServiceImpl.java | 98 ++++++++++++ .../resources/mapper/BkContactListMapper.xml | 20 +++ .../main/resources/mapper/BkOrderMapper.xml | 34 ++++ .../resources/mapper/BkOrderTableMapper.xml | 61 +++++++ 16 files changed, 949 insertions(+) create mode 100644 cash-api/account-server/src/main/java/com/czg/controller/admin/BkContactListController.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/dto/BkOrderDTO.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/entity/BkContactList.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/entity/BkOrder.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/entity/BkOrderTable.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/service/BkContactListService.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/service/BkOrderService.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/vo/BkTableVO.java create mode 100644 cash-service/account-service/src/main/java/com/czg/service/account/mapper/BkContactListMapper.java create mode 100644 cash-service/account-service/src/main/java/com/czg/service/account/mapper/BkOrderMapper.java create mode 100644 cash-service/account-service/src/main/java/com/czg/service/account/mapper/BkOrderTableMapper.java create mode 100644 cash-service/account-service/src/main/java/com/czg/service/account/service/impl/BkContactListServiceImpl.java create mode 100644 cash-service/account-service/src/main/java/com/czg/service/account/service/impl/BkOrderServiceImpl.java create mode 100644 cash-service/account-service/src/main/resources/mapper/BkContactListMapper.xml create mode 100644 cash-service/account-service/src/main/resources/mapper/BkOrderMapper.xml create mode 100644 cash-service/account-service/src/main/resources/mapper/BkOrderTableMapper.xml diff --git a/cash-api/account-server/src/main/java/com/czg/controller/admin/BkContactListController.java b/cash-api/account-server/src/main/java/com/czg/controller/admin/BkContactListController.java new file mode 100644 index 000000000..d2d132f1a --- /dev/null +++ b/cash-api/account-server/src/main/java/com/czg/controller/admin/BkContactListController.java @@ -0,0 +1,122 @@ +package com.czg.controller.admin; + +import com.czg.account.dto.BkOrderDTO; +import com.czg.account.dto.calltable.CallTablePage; +import com.czg.account.entity.BkContactList; +import com.czg.account.entity.BkOrder; +import com.czg.account.service.BkContactListService; +import com.czg.account.service.BkOrderService; +import com.czg.account.vo.BkTableVO; +import com.czg.annotation.SaAdminCheckPermission; +import com.czg.resp.CzgResult; +import com.czg.sa.StpKit; +import com.czg.utils.AssertUtil; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import java.time.LocalDate; +import java.util.List; +import java.util.Set; + + +/** + * 预约端-联系人列表 + * + * @author ww + * @description + */ +@RestController +@RequestMapping("/admin/bk/notify") +@Slf4j +public class BkContactListController { + + @Resource + private BkContactListService contactListService; + @Resource + private BkOrderService bkOrderService; + + /** + * 通讯录 获取联系人订单数等 + */ +// @SaAdminCheckPermission(value = "bk:bkContactList:list", name = "预约端-联系人列表") + @PostMapping("/contactList") + public CzgResult> getUserList(@RequestBody Set phones) { + return CzgResult.success(contactListService.getUserList(StpKit.USER.getShopId(), phones)); + } + + /** + * 预约端-台桌:查询台桌列表 + */ +// @SaAdminCheckPermission(value = "bk:bkOrder:table", name = "预约端-台桌:查询台桌列表") + @GetMapping("/bkOrder/table") + public CzgResult> table(@RequestParam(value = "areaId", required = false) Long areaId, + @RequestParam LocalDate day, + @RequestParam(value = "seatTimeType", required = false) String seatTimeType) { + List tables = bkOrderService.table(StpKit.USER.getShopId(), areaId, day, seatTimeType); + return CzgResult.success(tables); + } + + + /** + * 预约端-台桌:查询台桌列表 + */ +// @SaAdminCheckPermission(value = "bk:bkOrder:bookings", name = "预约端-预约单:列表") + @GetMapping("/bkOrder/bookings") + public CzgResult> bookings(@RequestParam(required = false) String search, + @RequestParam(required = false) LocalDate start, + @RequestParam(required = false) LocalDate end, + @RequestParam(required = false) String status) { + List tables = bkOrderService.bookings(StpKit.USER.getShopId(), search, start, end, status); + return CzgResult.success(tables); + } + + + /** + * 预约端-预约单:预约/修改预约 + */ +// @SaAdminCheckPermission(value = "bk:bkOrder:booking", name = "预约端-预约单:预约") + @PostMapping("/bkOrder/booking") + public CzgResult booking(@RequestBody BkOrderDTO bkOrder) { + Long shopId = StpKit.USER.getShopId(); + if (bkOrder.getShopId() != null && !bkOrder.getShopId().equals(shopId)) { + return CzgResult.failure("违规操作"); + } + bkOrderService.booking(shopId, bkOrder); + return CzgResult.success(); + } + + /** + * 预约端-预约单:取消预约 + */ +// @SaAdminCheckPermission(value = "bk:bkOrder:booking", name = "预约端-预约单:取消预约") + @PostMapping("/bkOrder/cancel") + public CzgResult cancel(@RequestBody BkOrderDTO bkOrder) { + AssertUtil.isNull(bkOrder.getId(), "需要撤销的预约单id不能为空"); + bkOrderService.upStatus(StpKit.USER.getShopId(), "已取消", bkOrder.getId(), bkOrder.getCancelReason()); + return CzgResult.success(); + } +} + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/BkOrderDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/BkOrderDTO.java new file mode 100644 index 000000000..283259f2b --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/BkOrderDTO.java @@ -0,0 +1,105 @@ + +package com.czg.account.dto; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import com.alibaba.fastjson2.annotation.JSONField; +import com.czg.account.entity.BkOrderTable; +import lombok.experimental.Accessors; +import java.io.Serial; +import java.util.List; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 预约单 实体类。 + * + * @author ww + * @since 2025-11-27 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Accessors(chain = true) +public class BkOrderDTO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + private Long id; + private Long shopId; + /** + * 预约用餐人数 + */ + private Integer seatNum; + + /** + * 就餐类型 普通用餐 + */ + private String seatType; + + /** + * 备注 80字以内 + */ + private String remark; + + /** + * 就餐时段类型 午餐/晚餐 + */ + private String seatTimeType; + + /** + * 来电电话 + */ + private String callPhone; + + /** + * 来电用户名 + */ + private String callUsername; + + /** + * 预留电话 + */ + private String bookingPhone; + + /** + * 预留称呼 + */ + private String bookingUsername; + + /** + * 预定台桌 + */ + private List bookingTables; + + /** + * 预定台桌数 + */ + private Integer bookingTableNum; + + /** + * 预约的到店时间 + */ + private LocalDateTime bookingTime; + + /** + * 餐标 + */ + private BigDecimal standardPrice; + + /** + * 元/人 元/桌 + */ + private String standardPriceType; + + + /** + * 取消原因 80字限制 + */ + private String cancelReason; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/BkContactList.java b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/BkContactList.java new file mode 100644 index 000000000..b2e0e0dad --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/BkContactList.java @@ -0,0 +1,67 @@ +package com.czg.account.entity; + +import com.mybatisflex.annotation.Column; +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.KeyType; +import com.mybatisflex.annotation.Table; +import java.io.Serializable; +import java.time.LocalDateTime; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 通讯录联系人列表 实体类。 + * + * @author ww + * @since 2025-11-27 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("bk_contact_list") +public class BkContactList implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 暂无意义 + */ + @Id(keyType = KeyType.Auto) + private Long id; + + /** + * 店铺 + */ + private Long shopId; + + /** + * 电话号码 + */ + private String phone; + + /** + * 历史订单数 + */ + @Column(ignore = true) + private Integer orderNum; + + /** + * 取消数 + */ + @Column(ignore = true) + private Integer cannelNum; + + /** + * 最后一次预约时间 + */ + @Column(ignore = true) + private LocalDateTime lastBookingTime; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/BkOrder.java b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/BkOrder.java new file mode 100644 index 000000000..83058d54a --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/BkOrder.java @@ -0,0 +1,149 @@ +package com.czg.account.entity; + +import com.mybatisflex.annotation.Column; +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.KeyType; +import com.mybatisflex.annotation.Table; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 预约单 实体类。 + * + * @author ww + * @since 2025-11-27 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("bk_order") +public class BkOrder implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 暂无意义 + */ + @Id(keyType = KeyType.Auto) + private Long id; + + /** + * 店铺 + */ + private Long shopId; + + /** + * 预约订单号 + */ + private String bookingOrderNo; + + /** + * 预约用餐人数 + */ + private Integer seatNum; + + /** + * 就餐类型 普通用餐 + */ + private String seatType; + + /** + * 创建时间 + */ + @Column(onInsertValue = "now()") + private LocalDateTime createTime; + + /** + * 备注 80字以内 + */ + private String remark; + + /** + * 状态 '待到店', '已到店', '已超时', '已取消' + */ + private String status; + + /** + * 就餐时段类型 午餐/晚餐 + */ + private String seatTimeType; + + /** + * 来电电话 + */ + private String callPhone; + + /** + * 来电用户名 + */ + private String callUsername; + + /** + * 预留电话 + */ + private String bookingPhone; + + /** + * 预留称呼 + */ + private String bookingUsername; + + /** + * 预定台桌数 + */ + private Integer bookingTableNum; + + /** + * 餐标 钱 + */ + private BigDecimal standardPrice; + /** + * 餐标 元/人 元/桌 字符串表示 + */ + private String standardPriceStr; + + /** + * 自留字段 钱 元/人 + */ + private BigDecimal standardPricePerson; + + /** + * 预约的到店时间 + */ + private LocalDateTime bookingTime; + /** + * 修改预约时间 (修改预约的到店时间) 触发的时间 + */ + private LocalDateTime upBookingTime; + + /** + * 取消原因 80字限制 + */ + private String cancelReason; + + /** + * 到店时间 + */ + private LocalDateTime arrivalTime; + /** + * 取消时间 + */ + private LocalDateTime cancelTime; + + /** + * 预约的台桌名称 + */ + @Column(ignore = true) + private String tableInFos; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/BkOrderTable.java b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/BkOrderTable.java new file mode 100644 index 000000000..83348b180 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/BkOrderTable.java @@ -0,0 +1,67 @@ +package com.czg.account.entity; + +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.KeyType; +import com.mybatisflex.annotation.Table; +import java.io.Serializable; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 预约单台桌关联 实体类。 + * + * @author ww + * @since 2025-11-27 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("bk_order_table") +public class BkOrderTable implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 暂无意义 + */ + @Id(keyType = KeyType.Auto) + private Long id; + + /** + * 店铺 + */ + private Long shopId; + + /** + * 预约单Id + */ + private Long bookOrderId; + + /** + * 台桌区域id + */ + private Long tableAreaId; + + /** + * 台桌区域名称 + */ + private String tableAreaName; + + /** + * 台桌id + */ + private Long tableId; + + /** + * 台桌名称 + */ + private String tableName; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/service/BkContactListService.java b/cash-common/cash-common-service/src/main/java/com/czg/account/service/BkContactListService.java new file mode 100644 index 000000000..cb4595fe0 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/service/BkContactListService.java @@ -0,0 +1,26 @@ +package com.czg.account.service; + +import com.mybatisflex.core.service.IService; +import com.czg.account.entity.BkContactList; + +import java.util.List; +import java.util.Set; + +/** + * 通讯录联系人列表 服务层。 + * + * @author ww + * @since 2025-11-27 + */ +public interface BkContactListService extends IService { + + /** + * 获取用户联系人列表 + * + * @param shopId 店铺id + * @param phones 电话号码列表 + * @return 联系人列表 + */ + List getUserList(Long shopId, Set phones); + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/service/BkOrderService.java b/cash-common/cash-common-service/src/main/java/com/czg/account/service/BkOrderService.java new file mode 100644 index 000000000..e0c6422ad --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/service/BkOrderService.java @@ -0,0 +1,53 @@ +package com.czg.account.service; + +import com.czg.account.dto.BkOrderDTO; +import com.czg.account.vo.BkTableVO; +import com.mybatisflex.core.service.IService; +import com.czg.account.entity.BkOrder; + +import java.time.LocalDate; +import java.util.List; + +/** + * 预约单 服务层。 + * + * @author ww + * @since 2025-11-27 + */ +public interface BkOrderService extends IService { + + /** + * 查询预约单列表 + * @param shopId 店铺id + * @param search 搜索关键词 客户姓名/客户手机号 + * @param start 开始日期 + * @param end 结束日期 + * @param status 预约单状态 + * @return 预约单列表 + */ + List bookings(Long shopId, String search, LocalDate start, LocalDate end, String status); + + /** + * 预约 + */ + void booking(Long shopId, BkOrderDTO bkOrder); + /** + * 更新预约状态 + * @param shopId 店铺id + * @param status 预约单状态 已取消/已到店 + * @param bkOrderId 预约单id + * @param cancelReason 取消原因 + */ + void upStatus(Long shopId, String status, Long bkOrderId,String cancelReason); + + /** + * 查询台桌列表 + * @param shopId 店铺id + * @param areaId 区域id + * @param day 预约日期 + * @param seatTimeType 预约时间类型 + * @return 台桌列表 + */ + List table(Long shopId, Long areaId, LocalDate day, String seatTimeType); + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/vo/BkTableVO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/BkTableVO.java new file mode 100644 index 000000000..5dcbe9b63 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/BkTableVO.java @@ -0,0 +1,28 @@ +package com.czg.account.vo; + +import lombok.Data; + +import java.util.List; + +/** + * @author ww + * @description + */ +@Data +public class BkTableVO { + private Long areaId; + + private String areaName; + + private List tables; + + record tableVO( + String tableName, List bkOrders + ) { + } + + record BkOrder( + String callPhone, String callUsername, String bookingPhone, String bookingUsername + ) { + } +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/mapper/BkContactListMapper.java b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/BkContactListMapper.java new file mode 100644 index 000000000..32fed0153 --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/BkContactListMapper.java @@ -0,0 +1,22 @@ +package com.czg.service.account.mapper; + +import com.mybatisflex.core.BaseMapper; +import com.czg.account.entity.BkContactList; + +import java.util.List; + +/** + * 通讯录联系人列表 映射层。 + * + * @author ww + * @since 2025-11-27 + */ +public interface BkContactListMapper extends BaseMapper { + + /** + * 获取店铺的通讯录联系人列表 + * @param shopId 店铺ID + * @return 通讯录联系人列表 + */ + List getUserList(Long shopId); +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/mapper/BkOrderMapper.java b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/BkOrderMapper.java new file mode 100644 index 000000000..cc321451d --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/BkOrderMapper.java @@ -0,0 +1,21 @@ +package com.czg.service.account.mapper; + +import com.mybatisflex.core.BaseMapper; +import com.czg.account.entity.BkOrder; + +import java.time.LocalDate; +import java.util.List; + +/** + * 预约单 映射层。 + * + * @author ww + * @since 2025-11-27 + */ +public interface BkOrderMapper extends BaseMapper { + + /** + * 查询预约单列表 + */ + List bookings(Long shopId, String search, LocalDate start, LocalDate end, String status); +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/mapper/BkOrderTableMapper.java b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/BkOrderTableMapper.java new file mode 100644 index 000000000..0cb03d2b8 --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/BkOrderTableMapper.java @@ -0,0 +1,37 @@ +package com.czg.service.account.mapper; + +import com.czg.account.vo.BkTableVO; +import com.mybatisflex.core.BaseMapper; +import com.czg.account.entity.BkOrderTable; + +import java.time.LocalDate; +import java.util.List; + +/** + * 预约单台桌关联 映射层。 + * + * @author ww + * @since 2025-11-27 + */ +public interface BkOrderTableMapper extends BaseMapper { + + /** + * 批量插入预约单台桌关联 + * + * @param shopId 店铺id + * @param bookOrderId 预约单id + * @param bkOrderTables 台桌信息 + */ + void customInsertBatch(Long shopId, Long bookOrderId, List bkOrderTables); + + /** + * 查询预约单台桌关联 + * + * @param shopId 店铺id + * @param areaId 台桌区域id + * @param day 预约日期 + * @param seatTimeType 预约时间类型 + * @return 预约单台桌关联列表 + */ + List table(Long shopId, Long areaId, LocalDate day, String seatTimeType); +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/BkContactListServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/BkContactListServiceImpl.java new file mode 100644 index 000000000..f93d5b345 --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/BkContactListServiceImpl.java @@ -0,0 +1,39 @@ +package com.czg.service.account.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.mybatisflex.core.query.QueryWrapper; +import com.mybatisflex.spring.service.impl.ServiceImpl; +import com.czg.account.entity.BkContactList; +import com.czg.account.service.BkContactListService; +import com.czg.service.account.mapper.BkContactListMapper; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 通讯录联系人列表 服务层实现。 + * + * @author ww + * @since 2025-11-27 + */ +@Service +public class BkContactListServiceImpl extends ServiceImpl implements BkContactListService{ + + @Override + public List getUserList(Long shopId, Set phones) { + remove(QueryWrapper.create().eq(BkContactList::getShopId, shopId)); + saveBatch(phones.stream() + .filter(StrUtil::isNotEmpty) + .map(phone -> { + BkContactList bkContact = new BkContactList(); + bkContact.setShopId(shopId); + bkContact.setPhone(phone.trim()); + return bkContact; + }) + .collect(Collectors.toList())); + return mapper.getUserList(shopId); + } +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/BkOrderServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/BkOrderServiceImpl.java new file mode 100644 index 000000000..15576459e --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/BkOrderServiceImpl.java @@ -0,0 +1,98 @@ +package com.czg.service.account.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.IdUtil; +import com.czg.account.dto.BkOrderDTO; +import com.czg.account.entity.BkOrderTable; +import com.czg.account.vo.BkTableVO; +import com.czg.exception.CzgException; +import com.czg.service.account.mapper.BkOrderTableMapper; +import com.mybatisflex.core.query.QueryWrapper; +import com.mybatisflex.core.update.UpdateWrapper; +import com.mybatisflex.spring.service.impl.ServiceImpl; +import com.czg.account.entity.BkOrder; +import com.czg.account.service.BkOrderService; +import com.czg.service.account.mapper.BkOrderMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +/** + * 预约单 服务层实现。 + * + * @author ww + * @since 2025-11-27 + */ +@Service +public class BkOrderServiceImpl extends ServiceImpl implements BkOrderService { + + @Resource + private BkOrderTableMapper tableMapper; + + /** + * 预约端-预约单:列表 + */ + @Override + public List bookings(Long shopId, String search, LocalDate start, LocalDate end, String status) { + return mapper.bookings(shopId, search, start, end, status); + } + + + @Override + public void booking(Long shopId, BkOrderDTO bkOrder) { + BkOrder bkOrderEntity = BeanUtil.copyProperties(bkOrder, BkOrder.class); + bkOrderEntity.setShopId(shopId); + if (bkOrder.getId() != null) { + bkOrderEntity.setUpBookingTime(LocalDateTime.now()); + tableMapper.deleteByQuery(QueryWrapper.create().eq(BkOrderTable::getBookOrderId, bkOrderEntity.getId())); + tableMapper.customInsertBatch(shopId, bkOrderEntity.getId(), bkOrder.getBookingTables()); + } else { + bkOrderEntity.setBookingOrderNo("BK" + IdUtil.getSnowflakeNextId()); + } + + bkOrderEntity.setStatus("待到店"); + bkOrderEntity.setStandardPricePerson(BigDecimal.ZERO); + if (bkOrderEntity.getStandardPrice() != null && bkOrderEntity.getStandardPrice().compareTo(BigDecimal.ZERO) > 0) { + if (bkOrderEntity.getStandardPriceStr().contains("桌")) { + BigDecimal seatNumBd = new BigDecimal(bkOrderEntity.getSeatNum()); + BigDecimal bookingTableNumBd = new BigDecimal(bkOrderEntity.getBookingTableNum()); + BigDecimal seatPerTable = seatNumBd.divide(bookingTableNumBd, 2, RoundingMode.HALF_UP); + BigDecimal divide = bkOrderEntity.getStandardPrice().divide(seatPerTable, 2, RoundingMode.HALF_UP); + bkOrderEntity.setStandardPricePerson(divide); + } else { + bkOrderEntity.setStandardPricePerson(bkOrderEntity.getStandardPrice()); + } + } + saveOrUpdate(bkOrderEntity); + if (bkOrder.getId() == null) { + tableMapper.customInsertBatch(shopId, bkOrderEntity.getId(), bkOrder.getBookingTables()); + } + } + + @Override + public void upStatus(Long shopId, String status, Long bkOrderId, String cancelReason) { + BkOrder upBkOrder = new BkOrder(); + if ("已取消".equals(status)) { + upBkOrder.setStatus(status); + upBkOrder.setCancelReason(cancelReason); + upBkOrder.setCancelTime(LocalDateTime.now()); + } else if ("已到店".equals(status)) { + upBkOrder.setStatus(status); + upBkOrder.setArrivalTime(LocalDateTime.now()); + } + boolean update = update(upBkOrder, QueryWrapper.create().eq(BkOrder::getId, bkOrderId).eq(BkOrder::getShopId, shopId)); + if (!update) { + throw new CzgException("修改失败"); + } + } + + @Override + public List table(Long shopId, Long areaId, LocalDate day, String seatTimeType) { + return tableMapper.table(shopId, areaId, day, seatTimeType); + } +} diff --git a/cash-service/account-service/src/main/resources/mapper/BkContactListMapper.xml b/cash-service/account-service/src/main/resources/mapper/BkContactListMapper.xml new file mode 100644 index 000000000..6af02096e --- /dev/null +++ b/cash-service/account-service/src/main/resources/mapper/BkContactListMapper.xml @@ -0,0 +1,20 @@ + + + + + + diff --git a/cash-service/account-service/src/main/resources/mapper/BkOrderMapper.xml b/cash-service/account-service/src/main/resources/mapper/BkOrderMapper.xml new file mode 100644 index 000000000..6e0ec3a00 --- /dev/null +++ b/cash-service/account-service/src/main/resources/mapper/BkOrderMapper.xml @@ -0,0 +1,34 @@ + + + + + + diff --git a/cash-service/account-service/src/main/resources/mapper/BkOrderTableMapper.xml b/cash-service/account-service/src/main/resources/mapper/BkOrderTableMapper.xml new file mode 100644 index 000000000..ea13408ad --- /dev/null +++ b/cash-service/account-service/src/main/resources/mapper/BkOrderTableMapper.xml @@ -0,0 +1,61 @@ + + + + + + insert into bk_order_table (shop_id, book_order_id, table_area_id ,table_area_name,table_id,table_name) + values + + (#{shopId}, #{bookOrderId}, #{item.tableAreaId}, #{item.tableAreaName}, #{item.tableId}, #{item.tableName}) + + + + + + + + + + + + + + + + + + + + + + From 661a13c29d809e3ae72737c976c6aa5033cab69d Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Thu, 27 Nov 2025 18:21:19 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E9=A2=84=E7=BA=A6=E6=AE=B5=20=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=20=E5=B1=82=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/czg/controller/admin/BkContactListController.java | 2 +- .../src/main/java/com/czg/account/vo/BkTableVO.java | 4 ++-- .../src/main/resources/mapper/BkOrderTableMapper.xml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cash-api/account-server/src/main/java/com/czg/controller/admin/BkContactListController.java b/cash-api/account-server/src/main/java/com/czg/controller/admin/BkContactListController.java index d2d132f1a..c9d7aa843 100644 --- a/cash-api/account-server/src/main/java/com/czg/controller/admin/BkContactListController.java +++ b/cash-api/account-server/src/main/java/com/czg/controller/admin/BkContactListController.java @@ -59,7 +59,7 @@ public class BkContactListController { /** - * 预约端-台桌:查询台桌列表 + * 预约端-台桌:查询预约单列表 */ // @SaAdminCheckPermission(value = "bk:bkOrder:bookings", name = "预约端-预约单:列表") @GetMapping("/bkOrder/bookings") diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/vo/BkTableVO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/BkTableVO.java index 5dcbe9b63..a511520eb 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/vo/BkTableVO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/BkTableVO.java @@ -14,9 +14,9 @@ public class BkTableVO { private String areaName; - private List tables; + private List tables; - record tableVO( + record TableVO( String tableName, List bkOrders ) { } diff --git a/cash-service/account-service/src/main/resources/mapper/BkOrderTableMapper.xml b/cash-service/account-service/src/main/resources/mapper/BkOrderTableMapper.xml index ea13408ad..4f5418913 100644 --- a/cash-service/account-service/src/main/resources/mapper/BkOrderTableMapper.xml +++ b/cash-service/account-service/src/main/resources/mapper/BkOrderTableMapper.xml @@ -48,9 +48,9 @@ - + - + From 92a12430ed9a18f66df68fc94ddda47f5e5ececf Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Thu, 27 Nov 2025 18:31:54 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E5=90=8E=E5=8E=A8=20=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/czg/controller/admin/BkContactListController.java | 2 +- .../java/com/czg/controller/kitchen/TableController.java | 6 +++--- .../src/main/java/com/czg/account/vo/BkTableVO.java | 2 +- .../src/main/resources/mapper/BkOrderMapper.xml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cash-api/account-server/src/main/java/com/czg/controller/admin/BkContactListController.java b/cash-api/account-server/src/main/java/com/czg/controller/admin/BkContactListController.java index c9d7aa843..f213a111e 100644 --- a/cash-api/account-server/src/main/java/com/czg/controller/admin/BkContactListController.java +++ b/cash-api/account-server/src/main/java/com/czg/controller/admin/BkContactListController.java @@ -59,7 +59,7 @@ public class BkContactListController { /** - * 预约端-台桌:查询预约单列表 + * 预约端-预定单:查询预约单列表 */ // @SaAdminCheckPermission(value = "bk:bkOrder:bookings", name = "预约端-预约单:列表") @GetMapping("/bkOrder/bookings") diff --git a/cash-api/order-server/src/main/java/com/czg/controller/kitchen/TableController.java b/cash-api/order-server/src/main/java/com/czg/controller/kitchen/TableController.java index aca99b1a6..3ef6e4cab 100644 --- a/cash-api/order-server/src/main/java/com/czg/controller/kitchen/TableController.java +++ b/cash-api/order-server/src/main/java/com/czg/controller/kitchen/TableController.java @@ -35,7 +35,7 @@ public class TableController { * 按台桌查看 */ @GetMapping("getKitchenTable") - @SaAdminCheckPermission(value = "kitchen:table", name = "后厨-按台桌查看") +// @SaAdminCheckPermission(value = "kitchen:table", name = "后厨-按台桌查看") public CzgResult> getKitchenTable(@RequestParam(required = false) String tableName, @RequestParam(required = false) Long areaId) { Long shopId = StpKit.USER.getShopId(); List kitchenTables = kitchenDetailMapper.getKitchenTable(shopId, tableName, areaId); @@ -46,7 +46,7 @@ public class TableController { * 按台桌查看 商品内容 */ @GetMapping("getKitchenTableFoods") - @SaAdminCheckPermission(value = "kitchen:tableFood", name = "后厨-按台桌查看商品内容") +// @SaAdminCheckPermission(value = "kitchen:tableFood", name = "后厨-按台桌查看商品内容") public CzgResult> getKitchenTableFoods(@RequestParam(required = false) Long orderId, @RequestParam(required = false) String tableCode, @RequestParam(required = false) Long isNoTable) { @@ -63,7 +63,7 @@ public class TableController { * 按商品查看 */ @GetMapping("getKitchenFood") - @SaAdminCheckPermission(value = "kitchen:table", name = "后厨-按台桌查看") +// @SaAdminCheckPermission(value = "kitchen:table", name = "后厨-按台桌查看") public CzgResult> getKitchenFood(@RequestParam(required = false) String productName) { Long shopId = StpKit.USER.getShopId(); List kitchenFood = kitchenDetailMapper.getKitchenFood(shopId, productName); diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/vo/BkTableVO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/BkTableVO.java index a511520eb..abd9e1120 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/vo/BkTableVO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/BkTableVO.java @@ -17,7 +17,7 @@ public class BkTableVO { private List tables; record TableVO( - String tableName, List bkOrders + Long tableId,String tableName, List bkOrders ) { } diff --git a/cash-service/account-service/src/main/resources/mapper/BkOrderMapper.xml b/cash-service/account-service/src/main/resources/mapper/BkOrderMapper.xml index 6e0ec3a00..cfb6ac62e 100644 --- a/cash-service/account-service/src/main/resources/mapper/BkOrderMapper.xml +++ b/cash-service/account-service/src/main/resources/mapper/BkOrderMapper.xml @@ -6,7 +6,7 @@ - - - + + - - - - - - - - - - + + + + + + + + + + + + + + + + +