From 0863764b5e04c171c8a750bf016c1edbb44d98a3 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Tue, 29 Oct 2024 15:59:50 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=B4=AD=E7=89=A9=E8=BD=A6=E5=85=A8?= =?UTF-8?q?=E4=B8=BA=E9=80=80=E6=AC=BE=E8=AE=A2=E5=8D=95=E6=B8=85=E7=A9=BA?= =?UTF-8?q?=E8=B4=AD=E7=89=A9=E8=BD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bean/constant/TableConstant.java | 157 ++++++++++++++++++ .../service/MpCashierCartService.java | 10 ++ .../service/MpOrderDetailService.java | 11 ++ .../service/MpOrderInfoService.java | 27 +++ .../cashierservice/service/OrderService.java | 46 ++++- .../impl/MpCashierCartServiceImpl.java | 11 ++ .../impl/MpOrderDetailServiceImpl.java | 11 ++ .../service/impl/MpOrderInfoServiceImpl.java | 33 ++++ 8 files changed, 300 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderInfoService.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderInfoServiceImpl.java diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/bean/constant/TableConstant.java b/src/main/java/com/chaozhanggui/system/cashierservice/bean/constant/TableConstant.java index 76667c5..b601c14 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/bean/constant/TableConstant.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/bean/constant/TableConstant.java @@ -1,6 +1,163 @@ package com.chaozhanggui.system.cashierservice.bean.constant; +import lombok.Getter; + +import java.util.Objects; + public interface TableConstant { String CART_SEAT_ID = "-999"; + @Getter + enum Status { + REFUNDING("refunding"), REFUND("refund"), CLOSED("closed"), CREATE("create"), + UNPAID("unpaid"), PAYING("paying"), RETURN("return"), CANCEL("cancel"); + private final String value; + Status(String value) { + this.value = value; + } + public boolean equalsVals(String value) { + return this.value.equals(value); + } + } + + class ShopTable { + @Getter + public enum State { + IDLE("idle"), CLOSED("closed"), PAYING("paying"), PENDING("pending"), USING("using"), CLEANING("cleaning"); + private final String value; + + State(String value) { + this.value = value; + } + } + } + + class OrderInfo { + @Getter + public enum Status { + REFUNDING("refunding"), REFUND("refund"), CLOSED("closed"), CREATE("create"), + UNPAID("unpaid"), PAYING("paying"), RETURN("return"); + private final String value; + + Status(String value) { + this.value = value; + } + } + + @Getter + public enum UseType { + TAKEOUT("takeout"), + DINE_IN_AFTER("dine-in-after"), + DINE_IN_BEFORE("dine-in-before"); + private final String value; + + UseType(String value) { + this.value = value; + } + + public boolean equalsVals(String value) { + return this.value.equals(value); + } + } + } + + class CashierCart { + @Getter + public enum Status { + REFUNDING("refunding"), REFUND("refund"), CLOSED("closed"), CREATE("create"), + UNPAID("unpaid"), PAYING("paying"), RETURN("return"), CANCEL("cancel"); + private final String value; + Status(String value) { + this.value = value; + } + public boolean equalsVals(String value) { + return this.value.equals(value); + } + } + + @Getter + public enum UseType { + TAKEOUT("takeout"), + DINE_IN_AFTER("dine-in-after"), + DINE_IN_BEFORE("dine-in-before"); + private final String value; + + UseType(String value) { + this.value = value; + } + + public boolean equalsVals(String value) { + return this.value.equals(value); + } + } + } + + class ShopInfo { + @Getter + public enum EatModel { + TAKEOUT("takeout"), + DINE_IN("dine-in"); + private final String value; + + EatModel(String value) { + this.value = value; + } + + public boolean equalsVals(String value) { + return this.value.equals(value); + } + } + } + + class MemberIn { + @Getter + public enum Type { + NORMAL(0), + FREE_DINE(1); + private final Integer value; + + Type(Integer value) { + this.value = value; + } + + public boolean equalsVals(Integer value) { + return Objects.equals(this.value, value); + } + } + } + + class ActivateOutRecord { + @Getter + public enum Type { + // 满减 + FULL_REDUCTION(1), + // 商品 + PRODUCT(2); + private final Integer value; + + Type(Integer value) { + this.value = value; + } + + public boolean equalsVals(Integer value) { + return Objects.equals(this.value, value); + } + } + @Getter + public enum Status { + CREATE("create"), + CANCEL("cancel"), + // 商品 + CLOSED("closed"); + private final String value; + + Status(String value) { + this.value = value; + } + + public boolean equalsVals(String value) { + return this.value.equals(value); + } + } + } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpCashierCartService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpCashierCartService.java index 8a6beb9..225268c 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpCashierCartService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpCashierCartService.java @@ -1,9 +1,12 @@ package com.chaozhanggui.system.cashierservice.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.chaozhanggui.system.cashierservice.bean.constant.TableConstant; import com.chaozhanggui.system.cashierservice.entity.TbCashierCart; import com.chaozhanggui.system.cashierservice.entity.TbOrderDetail; +import java.util.List; + /** * (TbShopPermission)表服务接口 * @@ -12,5 +15,12 @@ import com.chaozhanggui.system.cashierservice.entity.TbOrderDetail; */ public interface MpCashierCartService extends IService { + /** + * 根据id修改状态 + * @param cartIds id + * @param status 状态 + * @return 是否成功 + */ + boolean updateStateByIds(Integer shopId, List cartIds, TableConstant.Status status); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderDetailService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderDetailService.java index a9f3203..2b7f1b3 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderDetailService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderDetailService.java @@ -1,10 +1,13 @@ package com.chaozhanggui.system.cashierservice.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.chaozhanggui.system.cashierservice.bean.constant.TableConstant; import com.chaozhanggui.system.cashierservice.entity.TbOrderDetail; import com.chaozhanggui.system.cashierservice.entity.TbShopPermission; import com.chaozhanggui.system.cashierservice.sign.Result; +import java.util.List; + /** * (TbShopPermission)表服务接口 * @@ -13,5 +16,13 @@ import com.chaozhanggui.system.cashierservice.sign.Result; */ public interface MpOrderDetailService extends IService { + /** + * 根据购物车id修改详情状态 + * @param shopId 店铺id + * @param cartIds 购物车id + * @param status 状态 + * @return 是否成功 + */ + boolean updateStateByCartIds(Integer shopId, List cartIds, TableConstant.Status status); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderInfoService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderInfoService.java new file mode 100644 index 0000000..fcebf1e --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderInfoService.java @@ -0,0 +1,27 @@ +package com.chaozhanggui.system.cashierservice.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.chaozhanggui.system.cashierservice.bean.constant.TableConstant; +import com.chaozhanggui.system.cashierservice.entity.TbOrderDetail; +import com.chaozhanggui.system.cashierservice.entity.TbOrderInfo; + +import java.util.List; + +/** + * (TbShopPermission)表服务接口 + * + * @author makejava + * @since 2024-09-14 17:08:48 + */ +public interface MpOrderInfoService extends IService { + + /** + * 根据id修改详情状态 + * @param shopId 店铺id + * @param orderId 订单id + * @param status 状态 + * @return 是否成功 + */ + boolean updateStateById(Integer shopId, Integer orderId, TableConstant.Status status); +} + diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java index d5f4ae8..f37bd56 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -95,6 +95,7 @@ public class OrderService { private final TbShopOpenIdMapper shopOpenIdMapper; private final MpShopTableMapper mpShopTableMapper; + private final MpOrderInfoService mpOrderInfoService; @Autowired TbConsInfoMapper tbConsInfoMapper; @@ -131,12 +132,13 @@ public class OrderService { public OrderService(WxAccountUtil wxAccountUtil, MPCashierCartMapper mpCashierCartMapper, - TbShopOpenIdMapper shopOpenIdMapper, MpShopTableMapper mpShopTableMapper, + TbShopOpenIdMapper shopOpenIdMapper, MpShopTableMapper mpShopTableMapper, MpOrderInfoService mpOrderInfoService, TbCashierCartMapper tbCashierCartMapper, MpCashierCartService mpCashierCartService) { this.wxAccountUtil = wxAccountUtil; this.mpCashierCartMapper = mpCashierCartMapper; this.shopOpenIdMapper = shopOpenIdMapper; this.mpShopTableMapper = mpShopTableMapper; + this.mpOrderInfoService = mpOrderInfoService; this.tbCashierCartMapper = tbCashierCartMapper; this.mpCashierCartService = mpCashierCartService; } @@ -498,12 +500,44 @@ public class OrderService { List list = mpCashierCartMapper.selectList(queryWrapper); AtomicReference mealCashierCart = new AtomicReference<>(); - list.forEach(item -> { - item.setPlaceNum(item.getPlaceNum() == null ? 0 : item.getPlaceNum()); - if (item.getProductId().equals("-999")) { - mealCashierCart.set(item); + ArrayList returnCashierCarts = new ArrayList<>(); + String orderId = null; + for (TbCashierCart cart : list) { + if (cart.getOrderId() != null) { + orderId = cart.getOrderId(); } - }); + if (TableConstant.CashierCart.Status.RETURN.equalsVals(cart.getStatus())) { + returnCashierCarts.add(cart); + } + cart.setPlaceNum(cart.getPlaceNum() == null ? 0 : cart.getPlaceNum()); + if (cart.getProductId().equals("-999")) { + mealCashierCart.set(cart); + } + } + + // 检查购物车商品是否已经全部退款 + if (!returnCashierCarts.isEmpty() && returnCashierCarts.size() == list.size()) { + List cartIds = returnCashierCarts.stream().map(TbCashierCart::getId).collect(Collectors.toList()); + mpCashierCartService.updateStateByIds(Integer.valueOf(shopId), cartIds, TableConstant.Status.CANCEL); + mpOrderDetailService.updateStateByCartIds(Integer.valueOf(shopId), cartIds, TableConstant.Status.CANCEL); + if (StrUtil.isNotBlank(orderId)) { + mpOrderInfoService.updateStateById(Integer.valueOf(shopId), Integer.valueOf(orderId), TableConstant.Status.CANCEL); + } + + String finalMasterId = masterId; + return Result.success(CodeEnum.SUCCESS, new HashMap(){{ + put("list", new ArrayList<>()); + put("masterId", finalMasterId); + put("num", 0); + put("seatFee", null); + put("amount", new HashMap(){{ + put("packAmount", 0); + put("productNum", 0); + put("productSum", 0); + put("totalAmount", 0); + }}); + }}); + } // 根据placeNum进行分组 Map> groupedByPlaceNum = list.stream() diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpCashierCartServiceImpl.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpCashierCartServiceImpl.java index 5b7df60..25686d8 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpCashierCartServiceImpl.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpCashierCartServiceImpl.java @@ -1,6 +1,8 @@ package com.chaozhanggui.system.cashierservice.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.chaozhanggui.system.cashierservice.bean.constant.TableConstant; import com.chaozhanggui.system.cashierservice.entity.TbCashierCart; import com.chaozhanggui.system.cashierservice.entity.TbOrderDetail; import com.chaozhanggui.system.cashierservice.mybatis.MPCashierCartMapper; @@ -9,6 +11,8 @@ import com.chaozhanggui.system.cashierservice.service.MpCashierCartService; import com.chaozhanggui.system.cashierservice.service.MpOrderDetailService; import org.springframework.stereotype.Service; +import java.util.List; + /** * (TbShopPermission)表服务实现类 * @@ -18,5 +22,12 @@ import org.springframework.stereotype.Service; @Service public class MpCashierCartServiceImpl extends ServiceImpl implements MpCashierCartService { + @Override + public boolean updateStateByIds(Integer shopId, List cartIds, TableConstant.Status status) { + return update(new LambdaUpdateWrapper() + .eq(TbCashierCart::getShopId, shopId) + .in(TbCashierCart::getId, cartIds) + .set(TbCashierCart::getStatus, status.getValue())); + } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderDetailServiceImpl.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderDetailServiceImpl.java index 8c885f2..c04126e 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderDetailServiceImpl.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderDetailServiceImpl.java @@ -1,7 +1,9 @@ package com.chaozhanggui.system.cashierservice.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.chaozhanggui.system.cashierservice.bean.constant.TableConstant; import com.chaozhanggui.system.cashierservice.dao.TbOrderDetailMapper; import com.chaozhanggui.system.cashierservice.dao.TbShopPermissionDao; import com.chaozhanggui.system.cashierservice.entity.TbOrderDetail; @@ -17,6 +19,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Service; +import java.util.List; + /** * (TbShopPermission)表服务实现类 * @@ -26,5 +30,12 @@ import org.springframework.stereotype.Service; @Service public class MpOrderDetailServiceImpl extends ServiceImpl implements MpOrderDetailService { + @Override + public boolean updateStateByCartIds(Integer shopId, List cartIds, TableConstant.Status status) { + return update(new LambdaUpdateWrapper() + .eq(TbOrderDetail::getShopId, shopId) + .in(TbOrderDetail::getCartId, cartIds) + .set(TbOrderDetail::getStatus, status)); + } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderInfoServiceImpl.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderInfoServiceImpl.java new file mode 100644 index 0000000..96cbeb7 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderInfoServiceImpl.java @@ -0,0 +1,33 @@ +package com.chaozhanggui.system.cashierservice.service.impl; + +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.chaozhanggui.system.cashierservice.bean.constant.TableConstant; +import com.chaozhanggui.system.cashierservice.entity.TbOrderDetail; +import com.chaozhanggui.system.cashierservice.entity.TbOrderInfo; +import com.chaozhanggui.system.cashierservice.mybatis.MPOrderDetailMapper; +import com.chaozhanggui.system.cashierservice.mybatis.MPOrderInfoMapper; +import com.chaozhanggui.system.cashierservice.service.MpOrderDetailService; +import com.chaozhanggui.system.cashierservice.service.MpOrderInfoService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * (TbShopPermission)表服务实现类 + * + * @author makejava + * @since 2024-09-14 17:08:49 + */ +@Service +public class MpOrderInfoServiceImpl extends ServiceImpl implements MpOrderInfoService { + + @Override + public boolean updateStateById(Integer shopId, Integer orderId, TableConstant.Status status) { + return update(new LambdaUpdateWrapper() + .eq(TbOrderInfo::getShopId, shopId) + .eq(TbOrderInfo::getId, orderId) + .set(TbOrderInfo::getStatus, status)); + } +} +