diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java index 7ff72a8..6c46b11 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java @@ -139,7 +139,6 @@ public class OrderController { JSONObject jsonObject = TokenUtil.parseParamFromToken(token); String userId = jsonObject.getString("accountId"); orderVo.setMerchantId(Integer.valueOf(userId)); - orderVo.setUserId(jsonObject.getString("staffId")); return orderService.createOrder(orderVo, clientType, token, null, true); } 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 a0af361..b012363 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -159,7 +159,12 @@ public class OrderService { */ public ShopEatTypeInfoDTO checkEatModel(Object shopId, String tableId) { String eatModel = StrUtil.isBlank(tableId) ? ShopInfoEatModelEnum.TAKE_OUT.getValue() : ShopInfoEatModelEnum.DINE_IN.getValue(); - return getShopEatTypeInfoDTO(shopId, eatModel, tableId); + return getShopEatTypeInfoDTO(shopId, eatModel, tableId, true); + } + + public ShopEatTypeInfoDTO getEatModelUnCheck(Object shopId, String tableId) { + String eatModel = StrUtil.isBlank(tableId) ? ShopInfoEatModelEnum.TAKE_OUT.getValue() : ShopInfoEatModelEnum.DINE_IN.getValue(); + return getShopEatTypeInfoDTO(shopId, eatModel, tableId, false); } /** @@ -171,7 +176,7 @@ public class OrderService { */ public ShopEatTypeInfoDTO checkEatModel(Object shopId, String tableId, String useType) { String eatModel = OrderUseTypeEnum.TAKEOUT.getValue().equals(useType) ? ShopInfoEatModelEnum.TAKE_OUT.getValue() : ShopInfoEatModelEnum.DINE_IN.getValue(); - return getShopEatTypeInfoDTO(shopId, eatModel, tableId); + return getShopEatTypeInfoDTO(shopId, eatModel, tableId, true); } /** @@ -182,14 +187,14 @@ public class OrderService { * @param tableId 台桌id * @return just餐类型信息 */ - private ShopEatTypeInfoDTO getShopEatTypeInfoDTO(Object shopId, String eatModel, String tableId) { + private ShopEatTypeInfoDTO getShopEatTypeInfoDTO(Object shopId, String eatModel, String tableId, boolean isCheckModel) { TbShopInfo shopInfo = mpShopInfoMapper.selectOne(new LambdaQueryWrapper() .eq(TbShopInfo::getId, shopId)); if (shopInfo == null) { throw new MsgException("店铺信息不存在"); } - if (!shopInfo.getEatModel().contains(eatModel)) { + if (!shopInfo.getEatModel().contains(eatModel) && isCheckModel) { throw new MsgException("当前店铺未开启此就餐模式"); } boolean isTakeout = ShopInfoEatModelEnum.TAKE_OUT.getValue().equals(eatModel); @@ -273,8 +278,13 @@ public class OrderService { if (number == null) { return Result.fail(CodeEnum.PARAM); } - ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(shopId, tableId); + ShopEatTypeInfoDTO shopEatTypeInfoDTO; + if (StrUtil.isBlank(tableId)) { + shopEatTypeInfoDTO = getEatModelUnCheck(shopId, tableId); + }else { + shopEatTypeInfoDTO = checkEatModel(shopId, tableId); + } // 台桌点单 boolean isSeatCart = productId != null && TableConstant.CashierCart.ID.equals(productId.toString()); @@ -633,8 +643,12 @@ public class OrderService { if (StringUtils.isEmpty(shopId)) { return Result.fail(CodeEnum.SHOPINFONOEXIST); } - - ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(Integer.valueOf(shopId), tableId); + ShopEatTypeInfoDTO shopEatTypeInfoDTO; + if (StrUtil.isBlank(tableId)) { + shopEatTypeInfoDTO = getEatModelUnCheck(Integer.valueOf(shopId), tableId); + }else { + shopEatTypeInfoDTO = checkEatModel(Integer.valueOf(shopId), tableId); + } String day = DateUtils.getDay(); String finalMasterId1 = masterId; @@ -889,8 +903,12 @@ public class OrderService { if (shopInfo == null) { throw new MsgException("店铺信息不存在"); } - - ShopEatTypeInfoDTO eatTypeInfoDTO = checkEatModel(orderVo.getShopId(), orderVo.getTableId()); + ShopEatTypeInfoDTO eatTypeInfoDTO; + if (StrUtil.isBlank(orderVo.getTableId())) { + eatTypeInfoDTO = getEatModelUnCheck(orderVo.getShopId(), orderVo.getTableId()); + }else { + eatTypeInfoDTO = checkEatModel(orderVo.getShopId(), orderVo.getTableId()); + } if (ShopInfoEatModelEnum.DINE_IN.getValue().equals(eatTypeInfoDTO.getUseType()) && StrUtil.isBlank(eatTypeInfoDTO.getUseType())) { throw new MsgException("店内就餐必须选择桌码"); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java index 489a943..a6ec140 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java @@ -941,6 +941,7 @@ public class PayService { orderInfo.setStatus("closed"); orderInfo.setPayOrderNo("deposit".concat(SnowFlakeUtil.generateOrderNo())); orderInfo.setMemberId(vipUserId.toString()); + orderInfo.setUserId(shopUser.getUserId()); tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo); //更新购物车状态 mpCashierCartService.updateStateByOrderId(TableConstant.OrderInfo.Status.CLOSED, orderInfo.getId()); @@ -1252,7 +1253,7 @@ public class PayService { hasNormalReturn = true; saleAmount = saleAmount.add(orderDetail.getPrice()); if (remainNum.compareTo(BigDecimal.ZERO) <= 0) { - returnAmount = orderDetail.getPriceAmount(); + returnAmount = returnAmount.add(orderDetail.getPriceAmount()); packAMount = orderDetail.getPackAmount(); } else { currentDetailAMount = orderDetail.getPriceAmount() @@ -1297,7 +1298,7 @@ public class PayService { throw new MsgException("退款金额必须大于0"); } - oldOrderInfo.setCouponInfoList(JSONObject.toJSONString(couponInfoDTO)); + oldOrderInfo.setCouponInfoList(couponInfoDTO == null ? null : JSONObject.toJSONString(couponInfoDTO)); // 保存剩余未退款的订单详情 if (!remainOrderDetailList.isEmpty()) { @@ -1325,6 +1326,9 @@ public class PayService { returnOrder.setPayAmount(returnAmount); mPOrderInfoMapper.insert(returnOrder); + for (TbOrderDetail orderDetail : detailList) { + orderDetail.setOrderId(returnOrder.getId()); + } updateStockAndRecord(detailList); mpOrderDetailService.updateBatchById(detailList); @@ -1399,7 +1403,7 @@ public class PayService { } - @Transactional + @Transactional(rollbackFor = Exception.class) public Object returnOrder(ReturnOrderDTO returnOrderDTO) { TbOrderInfo orderInfo = mPOrderInfoMapper.selectOne(new LambdaQueryWrapper() .eq(TbOrderInfo::getId, returnOrderDTO.getOrderId()) @@ -1500,8 +1504,10 @@ public class PayService { if (count == 0) { returnCoupon(orderInfo, true); // 返还积分 - memberPointsService.addPoints(Long.valueOf(orderInfo.getMemberId()), orderInfo.getPointsNum(), - "用户退款订单积分返还: " + orderInfo.getPointsNum() + "积分", Long.valueOf(orderInfo.getId())); + if (orderInfo.getMemberId() != null && orderInfo.getPointsNum() != null && orderInfo.getPointsNum() > 0) { + memberPointsService.addPoints(Long.valueOf(orderInfo.getMemberId()), orderInfo.getPointsNum(), + "用户退款订单积分返还: " + orderInfo.getPointsNum() + "积分", Long.valueOf(orderInfo.getId())); + } } } mPOrderInfoMapper.updateById(orderInfo); diff --git a/src/main/resources/mapper/TbProductMapper.xml b/src/main/resources/mapper/TbProductMapper.xml index 6e95051..bf0d4c5 100644 --- a/src/main/resources/mapper/TbProductMapper.xml +++ b/src/main/resources/mapper/TbProductMapper.xml @@ -486,6 +486,7 @@ and a.name like CONCAT('%',#{commdityName},'%') + and type != 'coupon' and b.is_grounding=1 GROUP BY a.id ORDER BY a.`sort` @@ -512,6 +513,8 @@ and a.name like CONCAT('%',#{commdityName},'%') + and type != 'coupon' + and b.is_grounding=1 GROUP BY a.id ORDER BY a.`sort` @@ -524,6 +527,8 @@ and a.name like CONCAT('%',#{commdityName},'%') + and type != 'coupon' + and b.is_grounding=0 GROUP BY a.id ORDER BY a.`sort`