Merge branch 'refs/heads/dev' into test

This commit is contained in:
2024-10-29 09:18:16 +08:00
23 changed files with 320 additions and 126 deletions

View File

@@ -27,6 +27,8 @@ public interface RedisConstant {
// 选择人数锁 // 选择人数锁
String CHOSE_TABLE_COUNT = "CHOSE_TABLE_COUNT"; String CHOSE_TABLE_COUNT = "CHOSE_TABLE_COUNT";
String MASTER_ID = "SHOP:CODE:USER:pc:";
static String getCurrentOrderKey(String tableId, String shopId) { static String getCurrentOrderKey(String tableId, String shopId) {
return CURRENT_TABLE_ORDER + shopId + ":" + tableId; return CURRENT_TABLE_ORDER + shopId + ":" + tableId;
} }
@@ -48,4 +50,8 @@ public interface RedisConstant {
static String getTableCallNumKey(Integer shopId, Integer callTableId) { static String getTableCallNumKey(Integer shopId, Integer callTableId) {
return TABLE_CALL_NUMBER + shopId + ":" + callTableId; return TABLE_CALL_NUMBER + shopId + ":" + callTableId;
} }
static String getMasterIdKey(Integer shopId, String day, String tableId) {
return MASTER_ID + shopId + ":" + day + ":" + tableId;
}
} }

View File

@@ -1,6 +1,38 @@
package cn.ysk.cashier.cons; package cn.ysk.cashier.cons;
import lombok.Getter;
public interface TableConstant { public interface TableConstant {
String CART_SEAT_ID = "-999"; String CART_SEAT_ID = "-999";
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"),
NONE_TABLE("dine-in"),
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);
}
}
}
} }

View File

@@ -1,10 +1,12 @@
package cn.ysk.cashier.controller.product; package cn.ysk.cashier.controller.product;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.ysk.cashier.annotation.AnonymousAccess; import cn.ysk.cashier.annotation.AnonymousAccess;
import cn.ysk.cashier.annotation.Log; import cn.ysk.cashier.annotation.Log;
import cn.ysk.cashier.config.security.security.TokenProvider; import cn.ysk.cashier.config.security.security.TokenProvider;
import cn.ysk.cashier.dto.shoptable.*; import cn.ysk.cashier.dto.shoptable.*;
import cn.ysk.cashier.exception.BadRequestException;
import cn.ysk.cashier.mybatis.mapper.TbMerchantAccountMapper; import cn.ysk.cashier.mybatis.mapper.TbMerchantAccountMapper;
import cn.ysk.cashier.pojo.TbToken; import cn.ysk.cashier.pojo.TbToken;
import cn.ysk.cashier.pojo.order.TbCashierCart; import cn.ysk.cashier.pojo.order.TbCashierCart;
@@ -199,6 +201,13 @@ public class TbPlaceController {
@ApiOperation("代客下单 选择用餐人数") @ApiOperation("代客下单 选择用餐人数")
public ResponseEntity<Object> choseCount(@Validated @RequestBody ChoseCountDTO choseCountDTO) { public ResponseEntity<Object> choseCount(@Validated @RequestBody ChoseCountDTO choseCountDTO) {
if (StrUtil.isBlank(choseCountDTO.getTableId())) {
return ResponseEntity.ok(null);
}
if (StrUtil.isNotBlank(choseCountDTO.getTableId()) && choseCountDTO.getNum() == null) {
throw new BadRequestException("人数不为空");
}
return ResponseEntity.ok(tbShopTableService.choseCount(choseCountDTO)); return ResponseEntity.ok(tbShopTableService.choseCount(choseCountDTO));
} }

View File

@@ -53,8 +53,8 @@ public class TbShopTableController {
@GetMapping @GetMapping
@ApiOperation("查询/shop/table") @ApiOperation("查询/shop/table")
public ResponseEntity<Object> queryTbShopTable(TbShopTableQueryCriteria criteria){ public ResponseEntity<Object> queryTbShopTable(@Validated TbShopTableQueryCriteria criteria){
return new ResponseEntity<>(tbShopTableService.queryAllNoPage(criteria),HttpStatus.OK); return new ResponseEntity<>(tbShopTableService.queryAllPage(criteria),HttpStatus.OK);
} }
@PostMapping @PostMapping

View File

@@ -16,6 +16,7 @@
package cn.ysk.cashier.dto.order; package cn.ysk.cashier.dto.order;
import cn.ysk.cashier.pojo.order.TbCashierCart; import cn.ysk.cashier.pojo.order.TbCashierCart;
import cn.ysk.cashier.pojo.order.TbFullOrderDetail;
import cn.ysk.cashier.pojo.order.TbOrderDetail; import cn.ysk.cashier.pojo.order.TbOrderDetail;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@@ -159,7 +160,7 @@ public class TbOrderInfoDto implements Serializable {
private String remark; private String remark;
private List<TbOrderDetail> detailList; private List<? extends TbOrderDetail> detailList;
private String payRemark; private String payRemark;

View File

@@ -15,9 +15,12 @@
*/ */
package cn.ysk.cashier.dto.shop; package cn.ysk.cashier.dto.shop;
import cn.ysk.cashier.enums.TableStateEnum;
import lombok.Data; import lombok.Data;
import cn.ysk.cashier.annotation.Query; import cn.ysk.cashier.annotation.Query;
import javax.validation.constraints.NotNull;
/** /**
* @website https://eladmin.vip * @website https://eladmin.vip
* @author lyf * @author lyf
@@ -32,6 +35,7 @@ public class TbShopTableQueryCriteria{
/** 精确 */ /** 精确 */
@Query @Query
@NotNull
private Integer shopId; private Integer shopId;
@Query @Query
@@ -39,4 +43,8 @@ public class TbShopTableQueryCriteria{
@Query @Query
private Long qrcode; private Long qrcode;
private String state;
private Integer page = 1;
private Integer size = 99999;
} }

View File

@@ -12,9 +12,7 @@ public class ChoseCountDTO {
private String masterId; private String masterId;
@NotNull @NotNull
private Integer shopId; private Integer shopId;
@NotEmpty
private String tableId; private String tableId;
@NotNull
@Min(1) @Min(1)
private Integer num; private Integer num;
@NotEmpty @NotEmpty

View File

@@ -12,5 +12,7 @@ public class ChoseTableDTO {
private String masterId; private String masterId;
@NotBlank @NotBlank
private String tableId; private String tableId;
@NotNull
private Boolean isClear;
} }

View File

@@ -19,6 +19,8 @@ public class ShopEatTypeInfoDTO {
private boolean needSeatFee; private boolean needSeatFee;
// 是否无桌台下单 // 是否无桌台下单
private boolean isNoneTable; private boolean isNoneTable;
// 是否增加masterId
private boolean isIncrMaterId;
private TbShopInfo shopInfo; private TbShopInfo shopInfo;
private String useType; private String useType;
private Object shopId; private Object shopId;

View File

@@ -1,9 +1,13 @@
package cn.ysk.cashier.mybatis.mapper; package cn.ysk.cashier.mybatis.mapper;
import cn.ysk.cashier.pojo.order.TbFullOrderDetail;
import cn.ysk.cashier.pojo.order.TbOrderDetail; import cn.ysk.cashier.pojo.order.TbOrderDetail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import org.apache.ibatis.annotations.Update;
import java.util.List;
public interface TbOrderDetailMapper extends BaseMapper<TbOrderDetail> { public interface TbOrderDetailMapper extends BaseMapper<TbOrderDetail> {
/** /**
@@ -16,4 +20,11 @@ public interface TbOrderDetailMapper extends BaseMapper<TbOrderDetail> {
@Update("update tb_order_detail set status=#{status}, price_amount=(num+#{changeNum})*price,num=num+#{changeNum} " + @Update("update tb_order_detail set status=#{status}, price_amount=(num+#{changeNum})*price,num=num+#{changeNum} " +
"where id=#{id}") "where id=#{id}")
int updateNumAmountStatus(Integer id, String status, int changeNum); int updateNumAmountStatus(Integer id, String status, int changeNum);
/**
* 查询包含打包费和是否赠送的订单详情信息
* @param orderId 订单id
*/
@Select("select a.*, b.is_gift, b.is_pack from tb_order_detail as a left join tb_cashier_cart as b on a.cart_id=b.id where a.order_id=#{orderId}")
List<TbFullOrderDetail> selectFullInfoByOrderId(Integer orderId);
} }

View File

@@ -2,7 +2,6 @@ package cn.ysk.cashier.mybatis.service;
import cn.ysk.cashier.enums.OrderStatusEnums; import cn.ysk.cashier.enums.OrderStatusEnums;
import cn.ysk.cashier.pojo.order.TbCashierCart; import cn.ysk.cashier.pojo.order.TbCashierCart;
import cn.ysk.cashier.pojo.order.TbOrderDetail;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List; import java.util.List;
@@ -23,6 +22,14 @@ public interface MpCashierCartService extends IService<TbCashierCart> {
*/ */
List<TbCashierCart> selectTakeoutCart(String masterId, Integer shopId); List<TbCashierCart> selectTakeoutCart(String masterId, Integer shopId);
/**
* 查询无台桌购物车商品
* @param masterId 取餐码
* @param shopId 店铺did
*/
List<TbCashierCart> selectUnTableCart(String masterId, Integer shopId);
/** /**
* 统计当前台桌购物车数量 * 统计当前台桌购物车数量
* @param shopId 店铺id * @param shopId 店铺id
@@ -31,5 +38,15 @@ public interface MpCashierCartService extends IService<TbCashierCart> {
* @return 购物车数量 * @return 购物车数量
*/ */
long countByTableId(Integer shopId, String tableId, OrderStatusEnums... statusEnums); long countByTableId(Integer shopId, String tableId, OrderStatusEnums... statusEnums);
/**
* 根据tableIdId和用餐类型清空购物车
*
* @param tableId 台桌id
* @param useType 用餐类型
* @param shopId 店铺id
*/
boolean clearCartByTableIdAndUseType(String tableId, String useType, Integer shopId);
} }

View File

@@ -2,6 +2,7 @@ package cn.ysk.cashier.mybatis.service;
import cn.ysk.cashier.dto.shoptable.ReturnOrderDTO; import cn.ysk.cashier.dto.shoptable.ReturnOrderDTO;
import cn.ysk.cashier.enums.OrderStatusEnums; import cn.ysk.cashier.enums.OrderStatusEnums;
import cn.ysk.cashier.pojo.order.TbFullOrderDetail;
import cn.ysk.cashier.pojo.order.TbOrderDetail; import cn.ysk.cashier.pojo.order.TbOrderDetail;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
@@ -33,5 +34,13 @@ public interface MpOrderDetailService extends IService<TbOrderDetail> {
* @return 是否成功 * @return 是否成功
*/ */
boolean updateUseTypeByCartIds(ArrayList<Integer> cartIds, String useType); boolean updateUseTypeByCartIds(ArrayList<Integer> cartIds, String useType);
/**
* 根据订单id查询订单详情
* @param orderId 订单id
* @return 详情信息
*/
List<TbOrderDetail> selectByOrderId(Integer orderId);
} }

View File

@@ -1,14 +1,18 @@
package cn.ysk.cashier.mybatis.service.impl; package cn.ysk.cashier.mybatis.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.ysk.cashier.cons.TableConstant;
import cn.ysk.cashier.enums.OrderStatusEnums; import cn.ysk.cashier.enums.OrderStatusEnums;
import cn.ysk.cashier.enums.OrderUseTypeEnum; import cn.ysk.cashier.enums.OrderUseTypeEnum;
import cn.ysk.cashier.enums.ShopInfoEatModelEnum;
import cn.ysk.cashier.enums.ShopInfoRegisterlEnum;
import cn.ysk.cashier.exception.BadRequestException;
import cn.ysk.cashier.mybatis.mapper.MpShopInfoMapper;
import cn.ysk.cashier.mybatis.mapper.TbCashierCartMapper; import cn.ysk.cashier.mybatis.mapper.TbCashierCartMapper;
import cn.ysk.cashier.mybatis.mapper.TbOrderDetailMapper;
import cn.ysk.cashier.mybatis.service.MpCashierCartService; import cn.ysk.cashier.mybatis.service.MpCashierCartService;
import cn.ysk.cashier.mybatis.service.MpOrderDetailService;
import cn.ysk.cashier.pojo.order.TbCashierCart; import cn.ysk.cashier.pojo.order.TbCashierCart;
import cn.ysk.cashier.pojo.order.TbOrderDetail; import cn.ysk.cashier.pojo.shop.TbShopInfo;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -25,6 +29,12 @@ import java.util.List;
*/ */
@Service @Service
public class MpCashierCartServiceImpl extends ServiceImpl<TbCashierCartMapper, TbCashierCart> implements MpCashierCartService { public class MpCashierCartServiceImpl extends ServiceImpl<TbCashierCartMapper, TbCashierCart> implements MpCashierCartService {
private final MpShopInfoMapper mpShopInfoMapper;
public MpCashierCartServiceImpl(MpShopInfoMapper mpShopInfoMapper) {
this.mpShopInfoMapper = mpShopInfoMapper;
}
@Override @Override
public List<TbCashierCart> selectTakeoutCart(String masterId, Integer shopId) { public List<TbCashierCart> selectTakeoutCart(String masterId, Integer shopId) {
return list(new LambdaQueryWrapper<TbCashierCart>() return list(new LambdaQueryWrapper<TbCashierCart>()
@@ -34,6 +44,22 @@ public class MpCashierCartServiceImpl extends ServiceImpl<TbCashierCartMapper, T
.gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime())); .gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime()));
} }
@Override
public List<TbCashierCart> selectUnTableCart(String masterId, Integer shopId) {
TbShopInfo shopInfo = mpShopInfoMapper.selectOne(new LambdaQueryWrapper<TbShopInfo>()
.eq(TbShopInfo::getId, shopId)
.eq(TbShopInfo::getStatus, 1));
if (shopInfo == null) {
throw new BadRequestException("店铺信息不存在");
}
return list(new LambdaQueryWrapper<TbCashierCart>()
.eq(TbCashierCart::getShopId, shopId)
.eq(TbCashierCart::getMasterId, masterId)
.eq(TbCashierCart::getUseType, TableConstant.OrderInfo.UseType.NONE_TABLE.getValue())
.gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime()));
}
@Override @Override
public long countByTableId(Integer shopId, String tableId, OrderStatusEnums... statusEnums) { public long countByTableId(Integer shopId, String tableId, OrderStatusEnums... statusEnums) {
LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>() LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>()
@@ -49,5 +75,15 @@ public class MpCashierCartServiceImpl extends ServiceImpl<TbCashierCartMapper, T
} }
return count(queryWrapper); return count(queryWrapper);
} }
@Override
public boolean clearCartByTableIdAndUseType(String tableId, String useType, Integer shopId) {
return remove(new LambdaQueryWrapper<TbCashierCart>()
.in(TbCashierCart::getStatus, OrderStatusEnums.CREATE.getValue(), OrderStatusEnums.RETURN.getValue())
.gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime())
.eq(TbCashierCart::getShopId, shopId)
.eq(TbCashierCart::getTableId, tableId)
.eq(TbCashierCart::getUseType, useType));
}
} }

View File

@@ -5,11 +5,13 @@ import cn.ysk.cashier.enums.OrderStatusEnums;
import cn.ysk.cashier.mybatis.mapper.TbOrderDetailMapper; import cn.ysk.cashier.mybatis.mapper.TbOrderDetailMapper;
import cn.ysk.cashier.mybatis.service.MpOrderDetailService; import cn.ysk.cashier.mybatis.service.MpOrderDetailService;
import cn.ysk.cashier.pojo.order.TbOrderDetail; import cn.ysk.cashier.pojo.order.TbOrderDetail;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
/** /**
@@ -38,5 +40,11 @@ public class MpOrderDetailServiceImpl extends ServiceImpl<TbOrderDetailMapper, T
.in(TbOrderDetail::getCartId, cartIds) .in(TbOrderDetail::getCartId, cartIds)
.set(TbOrderDetail::getUseType, useType)); .set(TbOrderDetail::getUseType, useType));
} }
@Override
public List<TbOrderDetail> selectByOrderId(Integer orderId) {
return list(new LambdaQueryWrapper<TbOrderDetail>()
.eq(TbOrderDetail::getOrderId, orderId));
}
} }

View File

@@ -176,8 +176,7 @@ public class PayServiceImpl implements PayService {
.eq(TbOrderDetail::getOrderId, orderInfo.getId()) .eq(TbOrderDetail::getOrderId, orderInfo.getId())
.eq(TbOrderDetail::getUseType, orderInfo.getUseType()) .eq(TbOrderDetail::getUseType, orderInfo.getUseType())
.in(TbOrderDetail::getStatus, "unpaid") .in(TbOrderDetail::getStatus, "unpaid")
.setSql(StrUtil.format("price_amount=price*num*{}", orderInfo.getDiscountRatio())) .setSql(StrUtil.format("price_amount=price*num*{}", orderInfo.getDiscountRatio() == null ? 1 : orderInfo.getDiscountRatio()))
.set(TbOrderDetail::getStatus, "closed")); .set(TbOrderDetail::getStatus, "closed"));
//修改主单状态 //修改主单状态

View File

@@ -16,10 +16,13 @@ import cn.ysk.cashier.mapper.product.TbProductSkuMapper;
import cn.ysk.cashier.mybatis.entity.*; import cn.ysk.cashier.mybatis.entity.*;
import cn.ysk.cashier.mybatis.mapper.TbCashierCartMapper; import cn.ysk.cashier.mybatis.mapper.TbCashierCartMapper;
import cn.ysk.cashier.mybatis.mapper.TbMShopUserMapper; import cn.ysk.cashier.mybatis.mapper.TbMShopUserMapper;
import cn.ysk.cashier.mybatis.mapper.TbOrderDetailMapper;
import cn.ysk.cashier.mybatis.mapper.TbShopUserFlowMapper; import cn.ysk.cashier.mybatis.mapper.TbShopUserFlowMapper;
import cn.ysk.cashier.mybatis.service.MpOrderDetailService;
import cn.ysk.cashier.mybatis.service.TbActivateInRecordService; import cn.ysk.cashier.mybatis.service.TbActivateInRecordService;
import cn.ysk.cashier.mybatis.service.TbActivateOutRecordService; import cn.ysk.cashier.mybatis.service.TbActivateOutRecordService;
import cn.ysk.cashier.mybatis.service.TbOrderPaymentService; import cn.ysk.cashier.mybatis.service.TbOrderPaymentService;
import cn.ysk.cashier.mybatis.service.impl.MpOrderDetailServiceImpl;
import cn.ysk.cashier.pojo.TbShopPayType; import cn.ysk.cashier.pojo.TbShopPayType;
import cn.ysk.cashier.pojo.order.TbCashierCart; import cn.ysk.cashier.pojo.order.TbCashierCart;
import cn.ysk.cashier.pojo.order.TbFullOrderDetail; import cn.ysk.cashier.pojo.order.TbFullOrderDetail;
@@ -105,6 +108,8 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
private final TbCashierCartMapper tbCashierCartMapper; private final TbCashierCartMapper tbCashierCartMapper;
private final PayService payService; private final PayService payService;
private final MpOrderDetailService mpOrderDetailService;
private final TbOrderDetailMapper tbOrderDetailMapper;
@Value("${thirdPay.url}") @Value("${thirdPay.url}")
private String url; private String url;
@@ -167,7 +172,7 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
for (TbOrderInfo tbOrderInfo : page.getContent()) { for (TbOrderInfo tbOrderInfo : page.getContent()) {
TbOrderInfoVo orderInfoVo = new TbOrderInfoVo(); TbOrderInfoVo orderInfoVo = new TbOrderInfoVo();
BigDecimal refundAmount = BigDecimal.ZERO; BigDecimal refundAmount = BigDecimal.ZERO;
List<TbOrderDetail> details = tbOrderDetailRepository.searchDetailByOrderId(tbOrderInfo.getId()); List<TbFullOrderDetail> details = tbOrderDetailMapper.selectFullInfoByOrderId(tbOrderInfo.getId());
if (!tbOrderInfo.getOrderType().equals("return")) { if (!tbOrderInfo.getOrderType().equals("return")) {
List<TbOrderInfo> tbOrderInfos = tbOrderInfoRepository.selTbOrdersBysource(tbOrderInfo.getId(), tbOrderInfo.getShopId()); List<TbOrderInfo> tbOrderInfos = tbOrderInfoRepository.selTbOrdersBysource(tbOrderInfo.getId(), tbOrderInfo.getShopId());
Map<Integer, Integer> map; Map<Integer, Integer> map;
@@ -190,8 +195,19 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
detail.setRefundNumber(detail.getNum()); detail.setRefundNumber(detail.getNum());
}); });
} }
TbOrderDetail seatInfo = null;
ArrayList<TbFullOrderDetail> detailList = new ArrayList<>();
for (TbFullOrderDetail detail : details) {
if (TableConstant.CART_SEAT_ID.equals(detail.getProductId().toString())) {
seatInfo = detail;
}else {
detailList.add(detail);
}
}
orderInfoVo.setTableName(tbOrderInfo.getTableName()); orderInfoVo.setTableName(tbOrderInfo.getTableName());
orderInfoVo.setDetailList(details); orderInfoVo.setDetailList(detailList);
orderInfoVo.setSeatInfo(seatInfo);
BeanUtils.copyProperties(tbOrderInfo, orderInfoVo); BeanUtils.copyProperties(tbOrderInfo, orderInfoVo);
orderInfoVo.setRefundAmount(refundAmount); orderInfoVo.setRefundAmount(refundAmount);
orderInfoVoList.add(orderInfoVo); orderInfoVoList.add(orderInfoVo);
@@ -291,7 +307,7 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
dto.setPayType("退单"); dto.setPayType("退单");
} }
} }
List<TbOrderDetail> details = tbOrderDetailRepository.searchDetailByOrderId(tbOrderInfo.getId()); List<TbFullOrderDetail> details = tbOrderDetailMapper.selectFullInfoByOrderId(tbOrderInfo.getId());
dto.setIsRefund(0); dto.setIsRefund(0);
dto.setRefundAmount(BigDecimal.ZERO); dto.setRefundAmount(BigDecimal.ZERO);
dto.setRefundRemark(tbOrderInfo.getRefundRemark()); dto.setRefundRemark(tbOrderInfo.getRefundRemark());

View File

@@ -762,6 +762,7 @@ public class TbProductServiceImpl implements TbProductService {
com.baomidou.mybatisplus.extension.plugins.pagination.Page<TbProduct> page1 = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page, size); com.baomidou.mybatisplus.extension.plugins.pagination.Page<TbProduct> page1 = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page, size);
QueryWrapper<TbProduct> queryWrapper = new QueryWrapper<>(); QueryWrapper<TbProduct> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("is_del", 0) queryWrapper.eq("is_del", 0)
.in("type_enum", "sku", "normal")
.eq("shop_id", shopId) .eq("shop_id", shopId)
.eq("is_delete", 0) .eq("is_delete", 0)
.eq("status", 1) .eq("status", 1)

View File

@@ -49,13 +49,13 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.rabbit.connection.CorrelationData; import org.springframework.amqp.rabbit.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.persistence.criteria.Order;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
@@ -166,11 +166,11 @@ public class TbShopTableServiceImpl implements TbShopTableService {
/** /**
* 通过店铺id和就餐模式获取当前店铺的就餐类型信息 * 通过店铺id和就餐模式获取当前店铺的就餐类型信息
* *
* @param shopId 店铺id * @param shopId 店铺id
* @param eatModel 就餐模式 * @param eatModel 就餐模式
* @param tableId 台桌id * @param tableId 台桌id
* @return just餐类型信息 * @return just餐类型信息
* */ */
private ShopEatTypeInfoDTO getShopEatTypeInfoDTO(Object shopId, String eatModel, String tableId) { private ShopEatTypeInfoDTO getShopEatTypeInfoDTO(Object shopId, String eatModel, String tableId) {
TbShopInfo shopInfo = mpShopInfoMapper.selectOne(new LambdaQueryWrapper<TbShopInfo>() TbShopInfo shopInfo = mpShopInfoMapper.selectOne(new LambdaQueryWrapper<TbShopInfo>()
.eq(TbShopInfo::getId, shopId) .eq(TbShopInfo::getId, shopId)
@@ -187,14 +187,19 @@ public class TbShopTableServiceImpl implements TbShopTableService {
boolean isMunchies = StrUtil.isNotBlank(shopInfo.getRegisterType()) && boolean isMunchies = StrUtil.isNotBlank(shopInfo.getRegisterType()) &&
ShopInfoRegisterlEnum.MUNCHIES.getValue().equals(shopInfo.getRegisterType()); ShopInfoRegisterlEnum.MUNCHIES.getValue().equals(shopInfo.getRegisterType());
boolean isDineInAfter = !isMunchies && !isTakeout; boolean hasTable = StrUtil.isNotBlank(tableId);
boolean isDineInBefore = isMunchies && !isTakeout; // 是否先付费
boolean isDineInAfter = hasTable && !isMunchies && !isTakeout;
// 是否后付费
boolean isDineInBefore = hasTable && isMunchies && !isTakeout;
// 是否无台桌
boolean isNoneTable = !hasTable && !isTakeout;
boolean needSeatFee = shopInfo.getIsTableFee() == null || shopInfo.getIsTableFee() == 0; boolean needSeatFee = shopInfo.getIsTableFee() == null || shopInfo.getIsTableFee() == 0;
boolean isNoneTable = StrUtil.isBlank(tableId) && !isTakeout; boolean isIncrMasterId = isTakeout || isNoneTable;
return new ShopEatTypeInfoDTO(isTakeout, isMunchies, isDineInAfter, isDineInBefore, needSeatFee, isNoneTable, shopInfo, isTakeout ? OrderUseTypeEnum.TAKEOUT.getValue() : return new ShopEatTypeInfoDTO(isTakeout, isMunchies, isDineInAfter, isDineInBefore, needSeatFee, isNoneTable, isIncrMasterId, shopInfo, isTakeout ? TableConstant.OrderInfo.UseType.TAKEOUT.getValue() :
isMunchies ? OrderUseTypeEnum.DINE_IN_BEFORE.getValue() : OrderUseTypeEnum.DINE_IN_AFTER.getValue(), isDineInBefore ? TableConstant.OrderInfo.UseType.DINE_IN_BEFORE.getValue() : isNoneTable ? TableConstant.OrderInfo.UseType.NONE_TABLE.getValue() : TableConstant.OrderInfo.UseType.DINE_IN_AFTER.getValue(),
shopId, tableId, isTakeout ? OrderSendTypeEnums.TAKE_SELF.getValue() : OrderSendTypeEnums.TABLE.getValue()); shopId, tableId, isTakeout ? OrderSendTypeEnums.TAKE_SELF.getValue() : OrderSendTypeEnums.TABLE.getValue());
} }
@@ -217,11 +222,32 @@ public class TbShopTableServiceImpl implements TbShopTableService {
} }
@Override @Override
public Map<String, Object> queryAllNoPage(TbShopTableQueryCriteria criteria) { public Map<String, Object> queryAllPage(TbShopTableQueryCriteria criteria) {
if (null == criteria.getAreaId() || criteria.getAreaId() == 0) { if (null == criteria.getAreaId() || criteria.getAreaId() == 0) {
criteria.setAreaId(null); criteria.setAreaId(null);
} }
List<TbShopTable> tbShopTableList = tbShopTableRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder));
LambdaQueryWrapper<TbShopTable> query = new LambdaQueryWrapper<TbShopTable>()
.eq(TbShopTable::getShopId, criteria.getShopId());
if (StrUtil.isNotBlank(criteria.getName())) {
query.like(TbShopTable::getName, criteria.getName());
}
if (criteria.getAreaId() != null) {
query.eq(TbShopTable::getAreaId, criteria.getAreaId());
}
if (criteria.getQrcode() != null) {
query.eq(TbShopTable::getQrcode, criteria.getQrcode());
}
if (StrUtil.isNotBlank(criteria.getState())) {
query.eq(TbShopTable::getStatus, criteria.getState()).isNotNull(TbShopTable::getQrcode).ne(TbShopTable::getQrcode, "");
}
com.baomidou.mybatisplus.extension.plugins.pagination.Page<TbShopTable> shopTablePage =
mpShopTableService.page(new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(criteria.getPage(), criteria.getSize()), query);
List<TbShopTable> tbShopTableList = shopTablePage.getRecords();
ArrayList<Map<String, Object>> infoList = new ArrayList<>(); ArrayList<Map<String, Object>> infoList = new ArrayList<>();
for (TbShopTable date : tbShopTableList) { for (TbShopTable date : tbShopTableList) {
if (StrUtil.isBlank(date.getQrcode())) { if (StrUtil.isBlank(date.getQrcode())) {
@@ -264,10 +290,9 @@ public class TbShopTableServiceImpl implements TbShopTableService {
itemMap.put("masterId", orderInfo == null ? null : orderInfo.getMasterId()); itemMap.put("masterId", orderInfo == null ? null : orderInfo.getMasterId());
infoList.add(itemMap); infoList.add(itemMap);
} }
int i = tbShopTableRepository.countAllByShopId(criteria.getShopId());
HashMap<String, Object> map = new HashMap<>(); HashMap<String, Object> map = new HashMap<>();
map.put("content", infoList); map.put("content", infoList);
map.put("total", i); map.put("total", shopTablePage.getTotal());
return map; return map;
} }
@@ -401,7 +426,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
tbCashierCart.setIsPack(updateCartDTO.getIsPack() ? "true" : "false"); tbCashierCart.setIsPack(updateCartDTO.getIsPack() ? "true" : "false");
} }
if (updateCartDTO.getIsGift() != null ) { if (updateCartDTO.getIsGift() != null) {
tbCashierCart.setTotalAmount(updateCartDTO.getIsGift() ? tbCashierCart.getPackFee() : tbCashierCart.getTotalAmount()); tbCashierCart.setTotalAmount(updateCartDTO.getIsGift() ? tbCashierCart.getPackFee() : tbCashierCart.getTotalAmount());
tbCashierCart.setIsGift(updateCartDTO.getIsGift() ? "true" : "false"); tbCashierCart.setIsGift(updateCartDTO.getIsGift() ? "true" : "false");
} }
@@ -443,7 +468,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
throw new BadRequestException("商品不存在或已下架, id: " + addCartDTO.getSkuId()); throw new BadRequestException("商品不存在或已下架, id: " + addCartDTO.getSkuId());
} }
if (product.getIsStock() != null && product.getIsStock() == 1 &&product.getStockNumber() < 1) { if (product.getIsStock() != null && product.getIsStock() == 1 && product.getStockNumber() < 1) {
throw new BadRequestException(product.getName() + "商品库存不足"); throw new BadRequestException(product.getName() + "商品库存不足");
} }
@@ -474,7 +499,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
// 首次加入 // 首次加入
if (tbCashierCart == null) { if (tbCashierCart == null) {
tbCashierCart = new TbCashierCart(); tbCashierCart = new TbCashierCart();
tbCashierCart.setUseType(addCartDTO.getUseType()); tbCashierCart.setUseType(shopEatTypeInfoDTO.getUseType());
tbCashierCart.setCoverImg(product.getCoverImg()); tbCashierCart.setCoverImg(product.getCoverImg());
tbCashierCart.setCreatedAt(System.currentTimeMillis()); tbCashierCart.setCreatedAt(System.currentTimeMillis());
tbCashierCart.setIsSku(product.getTypeEnum()); tbCashierCart.setIsSku(product.getTypeEnum());
@@ -576,9 +601,6 @@ public class TbShopTableServiceImpl implements TbShopTableService {
@Override @Override
public void removeCart(RemoveCartDTO removeCartDTO) { public void removeCart(RemoveCartDTO removeCartDTO) {
ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(removeCartDTO.getShopId(), removeCartDTO.getTableId());
int currentPlaceNum = getCurrentPlaceNum(shopEatTypeInfoDTO);
// 会员点单 // 会员点单
TbCashierCart cashierCart = cashierCartMapper.selectOne(new LambdaQueryWrapper<TbCashierCart>() TbCashierCart cashierCart = cashierCartMapper.selectOne(new LambdaQueryWrapper<TbCashierCart>()
.eq(TbCashierCart::getShopId, removeCartDTO.getShopId()) .eq(TbCashierCart::getShopId, removeCartDTO.getShopId())
@@ -588,7 +610,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
throw new BadRequestException("购物车商品不存在"); throw new BadRequestException("购物车商品不存在");
} }
if (removeCartDTO.getTableId() != null && cashierCart.getPlaceNum() != null && !cashierCart.getPlaceNum().equals(currentPlaceNum)) { if (removeCartDTO.getTableId() != null && cashierCart.getPlaceNum() != null) {
throw new BadRequestException("已下单商品仅支持退单操作"); throw new BadRequestException("已下单商品仅支持退单操作");
} }
@@ -615,7 +637,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
if (cashierCart.getTableId() != null && removeCartDTO.getTableId() != null) { if (cashierCart.getTableId() != null && removeCartDTO.getTableId() != null) {
// 清空购物车 出票 // 清空购物车 出票
long carCount = countCar(Long.valueOf(cashierCart.getTableId()), cashierCart.getShopId(), cashierCart.getMasterId()); long carCount = countCar(Long.valueOf(cashierCart.getTableId()), cashierCart.getShopId());
log.info("购物车数量: {}", carCount); log.info("购物车数量: {}", carCount);
setRedisTableCartInfo(removeCartDTO.getTableId(), removeCartDTO.getShopId().toString(), Collections.singletonList(cashierCart), false); setRedisTableCartInfo(removeCartDTO.getTableId(), removeCartDTO.getShopId().toString(), Collections.singletonList(cashierCart), false);
} }
@@ -627,7 +649,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
// 会员点单 // 会员点单
TbCashierCart cashierCart = cashierCartMapper.selectOne(new LambdaQueryWrapper<TbCashierCart>() TbCashierCart cashierCart = cashierCartMapper.selectOne(new LambdaQueryWrapper<TbCashierCart>()
.eq(TbCashierCart::getShopId, removeCartDTO.getShopId()) .eq(TbCashierCart::getShopId, removeCartDTO.getShopId())
.in(TbCashierCart::getStatus, "create", "refund") .in(TbCashierCart::getStatus, OrderStatusEnums.CREATE.getValue())
.isNotNull(TbCashierCart::getOrderId) .isNotNull(TbCashierCart::getOrderId)
.eq(TbCashierCart::getId, removeCartDTO.getCartId())); .eq(TbCashierCart::getId, removeCartDTO.getCartId()));
@@ -639,15 +661,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
throw new BadRequestException("最大退菜数量为: {}", cashierCart.getNumber()); throw new BadRequestException("最大退菜数量为: {}", cashierCart.getNumber());
} }
TbOrderDetail tbOrderDetail = orderDetailMapper.selectOne(new LambdaQueryWrapper<TbOrderDetail>()
.eq(TbOrderDetail::getShopId, removeCartDTO.getShopId())
.eq(TbOrderDetail::getCartId, cashierCart.getId())
.eq(TbOrderDetail::getProductId, cashierCart.getProductId())
.eq(TbOrderDetail::getProductSkuId, cashierCart.getSkuId())
.eq(TbOrderDetail::getOrderId, cashierCart.getOrderId()));
if (tbOrderDetail == null) {
throw new BadRequestException("购物车商品不存在或已退单");
}
if (cashierCart.getOrderId() == null) { if (cashierCart.getOrderId() == null) {
throw new BadRequestException("此商品还未下单,无需退单"); throw new BadRequestException("此商品还未下单,无需退单");
@@ -657,21 +671,27 @@ public class TbShopTableServiceImpl implements TbShopTableService {
TbOrderDetail orderDetail = orderDetailMapper.selectOne(new LambdaQueryWrapper<TbOrderDetail>() TbOrderDetail orderDetail = orderDetailMapper.selectOne(new LambdaQueryWrapper<TbOrderDetail>()
.eq(TbOrderDetail::getCartId, cashierCart.getId())); .eq(TbOrderDetail::getCartId, cashierCart.getId()));
if (cashierCart.getId() == -999) { if (cashierCart.getProductId().equals("-999")) {
cashierCartMapper.deleteById(cashierCart.getId()); cashierCartMapper.deleteById(cashierCart.getId());
if (cashierCart.getOrderId() != null) { cashierCartMapper.update(null, new LambdaUpdateWrapper<TbCashierCart>()
orderDetailMapper.delete(new LambdaQueryWrapper<TbOrderDetail>() .eq(TbCashierCart::getId, cashierCart.getId())
.eq(TbOrderDetail::getCartId, cashierCart.getId())); .set(TbCashierCart::getStatus, "return"));
orderDetailMapper.update(null, new LambdaUpdateWrapper<TbOrderDetail>()
orderInfoMapper.update(null, new LambdaUpdateWrapper<TbOrderInfo>() .eq(TbOrderDetail::getCartId, cashierCart.getId())
.eq(TbOrderInfo::getId, cashierCart.getOrderId()) .eq(TbOrderDetail::getId, orderDetail.getId())
.eq(TbOrderInfo::getShopId, removeCartDTO.getShopId()) .set(TbOrderDetail::getUpdateTime, DateUtil.date())
.set(TbOrderInfo::getSeatCount, null) .set(TbOrderDetail::getStatus, "return"));
.set(TbOrderInfo::getSeatAmount, null));
}
} else { } else {
TbOrderDetail tbOrderDetail = orderDetailMapper.selectOne(new LambdaQueryWrapper<TbOrderDetail>()
.eq(TbOrderDetail::getShopId, removeCartDTO.getShopId())
.eq(TbOrderDetail::getCartId, cashierCart.getId())
.eq(TbOrderDetail::getProductId, cashierCart.getProductId())
.eq(TbOrderDetail::getProductSkuId, cashierCart.getSkuId())
.eq(TbOrderDetail::getOrderId, cashierCart.getOrderId()));
if (tbOrderDetail == null) {
throw new BadRequestException("购物车商品不存在或已退单");
}
if (cashierCart.getNumber().equals(removeCartDTO.getNum())) { if (cashierCart.getNumber().equals(removeCartDTO.getNum())) {
cashierCartMapper.update(null, new LambdaUpdateWrapper<TbCashierCart>() cashierCartMapper.update(null, new LambdaUpdateWrapper<TbCashierCart>()
.eq(TbCashierCart::getId, cashierCart.getId()) .eq(TbCashierCart::getId, cashierCart.getId())
@@ -681,7 +701,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
.set(TbOrderDetail::getUpdateTime, DateUtil.date()) .set(TbOrderDetail::getUpdateTime, DateUtil.date())
.set(TbOrderDetail::getStatus, "return")); .set(TbOrderDetail::getStatus, "return"));
rabbitMsgUtils.printDishesTicket(tbOrderDetail.getOrderId(), true, tbOrderDetail); rabbitMsgUtils.printDishesTicket(tbOrderDetail.getOrderId(), true, tbOrderDetail);
}else { } else {
//生成退菜的购物车记录 //生成退菜的购物车记录
TbCashierCart returnCart = BeanUtil.copyProperties(cashierCart, TbCashierCart.class); TbCashierCart returnCart = BeanUtil.copyProperties(cashierCart, TbCashierCart.class);
returnCart.setNumber(removeCartDTO.getNum()); returnCart.setNumber(removeCartDTO.getNum());
@@ -722,36 +742,27 @@ public class TbShopTableServiceImpl implements TbShopTableService {
@Override @Override
public void clearCart(ClearCartDTO clearCartDTO) { public void clearCart(ClearCartDTO clearCartDTO) {
Integer orderId; ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(clearCartDTO.getShopId(), clearCartDTO.getTableId(), clearCartDTO.getUseType());
ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(clearCartDTO.getShopId(), clearCartDTO.getTableId());
if (clearCartDTO.getTableId() != null) {
orderId = getCurrentOrderId(shopEatTypeInfoDTO);
} else {
orderId = null;
}
LambdaQueryWrapper<TbCashierCart> query = new LambdaQueryWrapper<TbCashierCart>() LambdaQueryWrapper<TbCashierCart> query = new LambdaQueryWrapper<TbCashierCart>()
.eq(TbCashierCart::getShopId, clearCartDTO.getShopId()) .eq(TbCashierCart::getShopId, clearCartDTO.getShopId())
.isNull(TbCashierCart::getPlaceNum) .isNull(TbCashierCart::getPlaceNum)
.eq(TbCashierCart::getUseType, clearCartDTO.getUseType()) .eq(TbCashierCart::getUseType, shopEatTypeInfoDTO.getUseType())
.and(q -> q.eq(TbCashierCart::getMasterId, clearCartDTO.getMasterId()) .and(q -> q.eq(TbCashierCart::getMasterId, clearCartDTO.getMasterId())
.or() .or()
.isNull(TbCashierCart::getMasterId) .isNull(TbCashierCart::getMasterId)
.or() .or()
.eq(TbCashierCart::getMasterId, "")) .eq(TbCashierCart::getMasterId, ""))
.and(q -> q.eq(TbCashierCart::getOrderId, orderId) .isNull(TbCashierCart::getOrderId);
.or()
.isNull(TbCashierCart::getOrderId));
if (clearCartDTO.getTableId() != null) { if (StrUtil.isNotBlank(clearCartDTO.getTableId())) {
query.eq(TbCashierCart::getTableId, clearCartDTO.getTableId()); query.eq(TbCashierCart::getTableId, clearCartDTO.getTableId());
} }
cashierCartMapper.delete(query); cashierCartMapper.delete(query);
} }
private long countCar(Long tableId, String shopId, String masterId) { private long countCar(Long tableId, String shopId) {
String orderId = redisTemplate.opsForValue().get(RedisConstant.getCurrentOrderKey(tableId.toString(), shopId)); String orderId = redisTemplate.opsForValue().get(RedisConstant.getCurrentOrderKey(tableId.toString(), shopId));
return tbOrderDetailMapper.selectCount(new LambdaQueryWrapper<TbOrderDetail>() return tbOrderDetailMapper.selectCount(new LambdaQueryWrapper<TbOrderDetail>()
.eq(TbOrderDetail::getShopId, shopId) .eq(TbOrderDetail::getShopId, shopId)
@@ -762,16 +773,20 @@ public class TbShopTableServiceImpl implements TbShopTableService {
@Override @Override
public Map<String, Object> getCart(String tableId, Integer page, public Map<String, Object> getCart(String tableId, Integer page,
Integer size, Integer shopId, String masterId, String useType) { Integer size, Integer shopId, String masterId, String useType) {
ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(shopId, OrderUseTypeEnum.TAKEOUT.getValue().equals(useType) ? null : tableId); ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(shopId, OrderUseTypeEnum.TAKEOUT.getValue().equals(useType) ? null : tableId, useType);
LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>() LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>()
.in(TbCashierCart::getStatus, "create", "return") .in(TbCashierCart::getStatus, "create", "return")
.eq(TbCashierCart::getShopId, shopId) .eq(TbCashierCart::getShopId, shopId)
.eq(TbCashierCart::getUseType, useType) .eq(TbCashierCart::getUseType, shopEatTypeInfoDTO.getUseType())
.gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime()) .gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime())
.and(q -> q.eq(TbCashierCart::getMasterId, masterId).or().isNull(TbCashierCart::getMasterId)); .and(q -> q.eq(TbCashierCart::getMasterId, masterId).or().isNull(TbCashierCart::getMasterId));
if (!shopEatTypeInfoDTO.isTakeout()) { if (!shopEatTypeInfoDTO.isTakeout()) {
queryWrapper.eq(TbCashierCart::getTableId, tableId); if (StrUtil.isBlank(tableId)) {
queryWrapper.isNull(TbCashierCart::getTableId);
} else {
queryWrapper.eq(TbCashierCart::getTableId, tableId);
}
} else { } else {
queryWrapper.and(q -> q.isNull(TbCashierCart::getTableId).or().eq(TbCashierCart::getTableId, "")) queryWrapper.and(q -> q.isNull(TbCashierCart::getTableId).or().eq(TbCashierCart::getTableId, ""))
.in(TbCashierCart::getPlatformType, OrderPlatformTypeEnum.PC.getValue(), OrderPlatformTypeEnum.CASH.getValue()); .in(TbCashierCart::getPlatformType, OrderPlatformTypeEnum.PC.getValue(), OrderPlatformTypeEnum.CASH.getValue());
@@ -1046,11 +1061,10 @@ public class TbShopTableServiceImpl implements TbShopTableService {
if (account == null) { if (account == null) {
throw new BadRequestException("token解析失败"); throw new BadRequestException("token解析失败");
} }
TbMerchantAccount merchantAccount = merchantAccountMapper.selectOne(new LambdaQueryWrapper<TbMerchantAccount>().eq(TbMerchantAccount::getAccount, account));
String day = DateUtils.getDay(); String day = DateUtils.getDay();
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
// 当前台桌码 // 当前台桌码
String key = "SHOP:CODE:USER:pc" + ":" + shopId + ":" + day + ":" + tableId + useType; String key = RedisConstant.getMasterIdKey(shopId, day, tableId);
String userCode = redisTemplate.opsForValue().get(key); String userCode = redisTemplate.opsForValue().get(key);
if (StringUtils.isEmpty(userCode) || "null".equals(userCode) || "#null".equals(userCode)) { if (StringUtils.isEmpty(userCode) || "null".equals(userCode) || "#null".equals(userCode)) {
@@ -1087,7 +1101,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
if (shopInfo == null) throw new BadRequestException("店铺信息不存在"); if (shopInfo == null) throw new BadRequestException("店铺信息不存在");
// 就餐模式信息 // 就餐模式信息
ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(createOrderDTO.getShopId(), createOrderDTO.getTableId()); ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(createOrderDTO.getShopId(), createOrderDTO.getTableId(), createOrderDTO.getUseType());
// 传递orderId直接取否则取当前缓存id // 传递orderId直接取否则取当前缓存id
Integer orderId = shopEatTypeInfoDTO.isDineInAfter() ? Integer orderId = shopEatTypeInfoDTO.isDineInAfter() ?
@@ -1095,7 +1109,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>() LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>()
.eq(TbCashierCart::getShopId, createOrderDTO.getShopId()) .eq(TbCashierCart::getShopId, createOrderDTO.getShopId())
.eq(TbCashierCart::getUseType, createOrderDTO.getUseType()) .eq(TbCashierCart::getUseType, shopEatTypeInfoDTO.getUseType())
.in(TbCashierCart::getStatus, "create", "return") .in(TbCashierCart::getStatus, "create", "return")
.gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime()) .gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime())
.and(q -> q.eq(TbCashierCart::getMasterId, createOrderDTO.getMasterId()).or().isNull(TbCashierCart::getMasterId)); .and(q -> q.eq(TbCashierCart::getMasterId, createOrderDTO.getMasterId()).or().isNull(TbCashierCart::getMasterId));
@@ -1106,15 +1120,18 @@ public class TbShopTableServiceImpl implements TbShopTableService {
queryWrapper.and(q -> q.isNull(TbCashierCart::getTableId).or().eq(TbCashierCart::getTableId, "")) queryWrapper.and(q -> q.isNull(TbCashierCart::getTableId).or().eq(TbCashierCart::getTableId, ""))
.in(TbCashierCart::getPlatformType, OrderPlatformTypeEnum.PC.getValue(), OrderPlatformTypeEnum.CASH.getValue()); .in(TbCashierCart::getPlatformType, OrderPlatformTypeEnum.PC.getValue(), OrderPlatformTypeEnum.CASH.getValue());
} else { } else {
queryWrapper.eq(TbCashierCart::getTableId, createOrderDTO.getTableId()); if (StrUtil.isNotBlank(createOrderDTO.getTableId())) {
tbShopTable = mpShopTableMapper.selectOne(new LambdaQueryWrapper<TbShopTable>()
tbShopTable = mpShopTableMapper.selectOne(new LambdaQueryWrapper<TbShopTable>() .eq(TbShopTable::getQrcode, createOrderDTO.getTableId())
.eq(TbShopTable::getQrcode, createOrderDTO.getTableId()) .in(TbShopTable::getStatus, "idle", "using"));
.in(TbShopTable::getStatus, "idle", "using")); if (tbShopTable == null) {
if (tbShopTable == null) { throw new BadRequestException("台桌未开台或不存在");
throw new BadRequestException("台桌未开台或不存在"); }
queryWrapper.eq(TbCashierCart::getTableId, createOrderDTO.getTableId());
} else {
queryWrapper.isNull(TbCashierCart::getTableId);
} }
queryWrapper.eq(TbCashierCart::getTableId, createOrderDTO.getTableId());
} }
List<TbCashierCart> allCashierCarts = cashierCartMapper List<TbCashierCart> allCashierCarts = cashierCartMapper
@@ -1132,11 +1149,17 @@ public class TbShopTableServiceImpl implements TbShopTableService {
} }
} }
if (allCashierCarts.isEmpty() || (shopEatTypeInfoDTO.isNeedSeatFee() && !shopEatTypeInfoDTO.isTakeout() && seatCart != null && allCashierCarts.size() < 2) if (StrUtil.isNotBlank(createOrderDTO.getTableId())
|| (shopEatTypeInfoDTO.isNeedSeatFee() && !shopEatTypeInfoDTO.isTakeout() && seatCart == null)) { && (cashierCarts.isEmpty() ||
(shopEatTypeInfoDTO.isNeedSeatFee() && !shopEatTypeInfoDTO.isTakeout() && seatCart != null && cashierCarts.size() < 2)
|| (shopEatTypeInfoDTO.isNeedSeatFee() && !shopEatTypeInfoDTO.isTakeout() && seatCart == null))) {
throw new BadRequestException("购物车为空或未选择餐位费,请先添加商品或选择餐位费"); throw new BadRequestException("购物车为空或未选择餐位费,请先添加商品或选择餐位费");
} }
if (cashierCarts.isEmpty()) {
throw new BadRequestException("购物车为空");
}
ArrayList<Integer> cartIdList = new ArrayList<>(); ArrayList<Integer> cartIdList = new ArrayList<>();
for (TbCashierCart tbCashierCart : cashierCarts) { for (TbCashierCart tbCashierCart : cashierCarts) {
if (tbCashierCart.getOrderId() != null) { if (tbCashierCart.getOrderId() != null) {
@@ -1173,7 +1196,6 @@ public class TbShopTableServiceImpl implements TbShopTableService {
List<TbOrderDetail> addOrderDetails = new ArrayList<>(); List<TbOrderDetail> addOrderDetails = new ArrayList<>();
boolean hasNewInfo = false; boolean hasNewInfo = false;
for (TbCashierCart cashierCart : cashierCarts) { for (TbCashierCart cashierCart : cashierCarts) {
if (!"return".equals(cashierCart.getStatus())) { if (!"return".equals(cashierCart.getStatus())) {
@@ -1210,7 +1232,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
orderDetail.setShopId(Integer.valueOf(cashierCart.getShopId())); orderDetail.setShopId(Integer.valueOf(cashierCart.getShopId()));
orderDetail.setPackAmount(cashierCart.getPackFee()); orderDetail.setPackAmount(cashierCart.getPackFee());
orderDetail.setStatus("unpaid"); orderDetail.setStatus("unpaid");
orderDetail.setUseType(createOrderDTO.getUseType()); orderDetail.setUseType(shopEatTypeInfoDTO.getUseType());
orderDetail.setProductImg(cashierCart.getCoverImg()); orderDetail.setProductImg(cashierCart.getCoverImg());
orderDetail.setCartId(cashierCart.getId()); orderDetail.setCartId(cashierCart.getId());
if (cashierCart.getOrderId() != null) { if (cashierCart.getOrderId() != null) {
@@ -1242,7 +1264,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
orderInfo.setFreightAmount(feeAmount); orderInfo.setFreightAmount(feeAmount);
orderInfo.setProductAmount(saleAmount); orderInfo.setProductAmount(saleAmount);
orderInfo.setTradeDay(DateUtils.getDay()); orderInfo.setTradeDay(DateUtils.getDay());
orderInfo.setUseType(createOrderDTO.getUseType()); orderInfo.setUseType(shopEatTypeInfoDTO.getUseType());
orderInfo.setCreatedAt(DateUtil.current()); orderInfo.setCreatedAt(DateUtil.current());
if (seatCart != null) { if (seatCart != null) {
orderInfo.setSeatAmount(seatCart.getTotalAmount()); orderInfo.setSeatAmount(seatCart.getTotalAmount());
@@ -1282,7 +1304,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
orderInfo.setCreatedAt(DateUtil.current()); orderInfo.setCreatedAt(DateUtil.current());
orderInfo.setTableName(tbShopTable != null ? tbShopTable.getName() : null); orderInfo.setTableName(tbShopTable != null ? tbShopTable.getName() : null);
orderInfo.setPlaceNum(placeNum); orderInfo.setPlaceNum(placeNum);
orderInfo.setUseType(createOrderDTO.getUseType()); orderInfo.setUseType(shopEatTypeInfoDTO.getUseType());
if (StrUtil.isNotBlank(createOrderDTO.getVipUserId())) { if (StrUtil.isNotBlank(createOrderDTO.getVipUserId())) {
orderInfo.setUserId(createOrderDTO.getVipUserId()); orderInfo.setUserId(createOrderDTO.getVipUserId());
} }
@@ -1334,7 +1356,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
} }
// 先付费模式,结束购物车状态 // 先付费模式,结束购物车状态
if (shopEatTypeInfoDTO.isDineInBefore() || shopEatTypeInfoDTO.isTakeout()) { if (!shopEatTypeInfoDTO.isDineInAfter() || StrUtil.isBlank(createOrderDTO.getTableId())) {
cashierCart.setStatus("final"); cashierCart.setStatus("final");
} }
cashierCartMapper.updateById(cashierCart); cashierCartMapper.updateById(cashierCart);
@@ -1355,12 +1377,12 @@ public class TbShopTableServiceImpl implements TbShopTableService {
if (isFirst) { if (isFirst) {
// 后付费,不增加当前台桌取餐号 // 后付费,不增加当前台桌取餐号
if (!shopEatTypeInfoDTO.isTakeout()) { if (!shopEatTypeInfoDTO.isIncrMaterId()) {
addGlobalCode(cn.ysk.cashier.utils.DateUtils.getDay(), "pc", String.valueOf(createOrderDTO.getShopId())); addGlobalCode(cn.ysk.cashier.utils.DateUtils.getDay(), "pc", String.valueOf(createOrderDTO.getShopId()));
} }
if (!shopEatTypeInfoDTO.isTakeout() || (addMaterId && "pending".equals(orderInfo.getStatus()))) { if (shopEatTypeInfoDTO.isIncrMaterId() && "pending".equals(orderInfo.getStatus())) {
String key = "SHOP:CODE:USER:pc" + ":" + createOrderDTO.getShopId() + ":" + cn.ysk.cashier.utils.DateUtils.getDay() + ":" + orderInfo.getTableId(); String key = RedisConstant.getMasterIdKey(createOrderDTO.getShopId(), cn.ysk.cashier.utils.DateUtils.getDay(), orderInfo.getTableId());;
redisTemplate.delete(key); redisTemplate.delete(key);
} }
} }
@@ -1368,7 +1390,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
// 推送耗材信息 // 推送耗材信息
pushConsMsg(orderInfo, cashierCarts); pushConsMsg(orderInfo, cashierCarts);
if (!shopEatTypeInfoDTO.isTakeout()) { if (!shopEatTypeInfoDTO.isTakeout() && StrUtil.isNotBlank(createOrderDTO.getTableId())) {
// 清空台桌信息 // 清空台桌信息
if (shopEatTypeInfoDTO.isDineInBefore()) { if (shopEatTypeInfoDTO.isDineInBefore()) {
mpShopTableMapper.update(null, new LambdaUpdateWrapper<TbShopTable>() mpShopTableMapper.update(null, new LambdaUpdateWrapper<TbShopTable>()
@@ -1398,8 +1420,10 @@ public class TbShopTableServiceImpl implements TbShopTableService {
} }
String tableCartKey = RedisConstant.getTableCartKey(createOrderDTO.getTableId(), createOrderDTO.getShopId().toString()); if (StrUtil.isNotBlank(createOrderDTO.getTableId())) {
redisTemplate.delete(tableCartKey); String tableCartKey = RedisConstant.getTableCartKey(createOrderDTO.getTableId(), createOrderDTO.getShopId().toString());
redisTemplate.delete(tableCartKey);
}
return orderInfo; return orderInfo;
}, stringRedisTemplate, RedisConstant.getLockKey(RedisConstant.CREATE_ORDER, createOrderDTO.getShopId(), }, stringRedisTemplate, RedisConstant.getLockKey(RedisConstant.CREATE_ORDER, createOrderDTO.getShopId(),
createOrderDTO.getTableId(), createOrderDTO.getMasterId(), createOrderDTO.getUseType())); createOrderDTO.getTableId(), createOrderDTO.getMasterId(), createOrderDTO.getUseType()));
@@ -1570,8 +1594,6 @@ public class TbShopTableServiceImpl implements TbShopTableService {
throw new BadRequestException("订单非未支付状态"); throw new BadRequestException("订单非未支付状态");
} }
ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(payDTO.getShopId(), orderInfo.getTableId());
if (payDTO.getDiscount() == null) { if (payDTO.getDiscount() == null) {
payDTO.setDiscount((double) 1); payDTO.setDiscount((double) 1);
} }
@@ -1611,8 +1633,10 @@ public class TbShopTableServiceImpl implements TbShopTableService {
orderInfo.setPaidTime(DateUtil.current()); orderInfo.setPaidTime(DateUtil.current());
orderInfo.setPayAmount(finalAmount); orderInfo.setPayAmount(finalAmount);
orderInfo.setStatus("closed"); orderInfo.setStatus("closed");
orderInfo.setDiscountRatio(BigDecimal.valueOf(payDTO.getDiscount())); if (payDTO.getDiscount() != null) {
orderInfo.setDiscountAmount(orderInfo.getAmount().subtract(finalAmount)); orderInfo.setDiscountRatio(BigDecimal.valueOf(payDTO.getDiscount()));
orderInfo.setDiscountAmount(orderInfo.getAmount().subtract(finalAmount));
}
orderInfoMapper.updateById(orderInfo); orderInfoMapper.updateById(orderInfo);
//更新购物车状态 //更新购物车状态
@@ -1629,17 +1653,17 @@ public class TbShopTableServiceImpl implements TbShopTableService {
.eq(TbOrderDetail::getOrderId, orderInfo.getId()) .eq(TbOrderDetail::getOrderId, orderInfo.getId())
.eq(TbOrderDetail::getUseType, orderInfo.getUseType()) .eq(TbOrderDetail::getUseType, orderInfo.getUseType())
.eq(TbOrderDetail::getStatus, "unpaid") .eq(TbOrderDetail::getStatus, "unpaid")
.setSql(StrUtil.format("price_amount=price*num*{}", payDTO.getDiscount())) .setSql(StrUtil.format("price_amount=price*num*{}", payDTO.getDiscount() == null ? 1: payDTO.getDiscount()))
.set(TbOrderDetail::getStatus, "closed")); .set(TbOrderDetail::getStatus, "closed"));
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("token", payDTO.getToken()); jsonObject.put("token", payDTO.getToken());
jsonObject.put("type", "create"); jsonObject.put("type", "create");
jsonObject.put("orderId", orderInfo.getId()); jsonObject.put("orderId", orderInfo.getId());
rabbitMsgUtils.sendOrderCollectMsg(jsonObject,3); rabbitMsgUtils.sendOrderCollectMsg(jsonObject, 3);
// 打印消息 // 打印消息
if (!shopEatTypeInfoDTO.isDineInAfter()) { if (!OrderUseTypeEnum.DINE_IN_AFTER.getValue().equals(orderInfo.getUseType())) {
List<TbOrderDetail> detailList = orderDetailMapper.selectList(new LambdaQueryWrapper<TbOrderDetail>() List<TbOrderDetail> detailList = orderDetailMapper.selectList(new LambdaQueryWrapper<TbOrderDetail>()
.eq(TbOrderDetail::getOrderId, orderInfo.getId()) .eq(TbOrderDetail::getOrderId, orderInfo.getId())
.eq(TbOrderDetail::getStatus, "closed")); .eq(TbOrderDetail::getStatus, "closed"));
@@ -1654,7 +1678,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
rabbitTemplate.convertAndSend(RabbitConstants.EXCHANGE_STOCK_RECORD, RabbitConstants.ROUTING_STOCK_RECORD_SALE, mqData.toJSONString(), new CorrelationData(UUID.randomUUID().toString())); rabbitTemplate.convertAndSend(RabbitConstants.EXCHANGE_STOCK_RECORD, RabbitConstants.ROUTING_STOCK_RECORD_SALE, mqData.toJSONString(), new CorrelationData(UUID.randomUUID().toString()));
// 修改台桌状态 // 修改台桌状态
if (!shopEatTypeInfoDTO.isTakeout()) { if (!OrderUseTypeEnum.TAKEOUT.getValue().equals(orderInfo.getUseType()) && StrUtil.isNotBlank(orderInfo.getTableId())) {
TbShopTable tbShopTable = mpShopTableMapper.selectOne(new LambdaQueryWrapper<TbShopTable>() TbShopTable tbShopTable = mpShopTableMapper.selectOne(new LambdaQueryWrapper<TbShopTable>()
.eq(TbShopTable::getShopId, payDTO.getShopId()) .eq(TbShopTable::getShopId, payDTO.getShopId())
.eq(TbShopTable::getQrcode, orderInfo.getTableId())); .eq(TbShopTable::getQrcode, orderInfo.getTableId()));
@@ -1670,16 +1694,12 @@ public class TbShopTableServiceImpl implements TbShopTableService {
.set(TbShopTable::getEndTime, DateUtil.date()) .set(TbShopTable::getEndTime, DateUtil.date())
.set(TbShopTable::getStatus, TableStateEnum.CLEANING.getState())); .set(TbShopTable::getStatus, TableStateEnum.CLEANING.getState()));
} }
}
if (!shopEatTypeInfoDTO.isTakeout()) {
String day = DateUtils.getDay(); String day = DateUtils.getDay();
String key = "SHOP:CODE:USER:pc" + ":" + payDTO.getShopId() + ":" + day + ":" + orderInfo.getTableId(); String key = "SHOP:CODE:USER:pc" + ":" + payDTO.getShopId() + ":" + day + ":" + orderInfo.getTableId();
redisTemplate.delete(key); redisTemplate.delete(key);
} }
String currentOrderKey = RedisConstant.CURRENT_TABLE_ORDER + payDTO.getShopId() + ":" + orderInfo.getTableId(); String currentOrderKey = RedisConstant.CURRENT_TABLE_ORDER + payDTO.getShopId() + ":" + orderInfo.getTableId();
redisTemplate.delete(currentOrderKey); redisTemplate.delete(currentOrderKey);
@@ -1762,18 +1782,27 @@ public class TbShopTableServiceImpl implements TbShopTableService {
throw new BadRequestException("台桌不存在或不处于空闲状态"); throw new BadRequestException("台桌不存在或不处于空闲状态");
} }
List<TbCashierCart> tbCashierCarts = mpCashierCartService.selectTakeoutCart(choseTableDTO.getMasterId(), choseTableDTO.getShopId()); List<TbCashierCart> tbCashierCarts = mpCashierCartService.selectUnTableCart(choseTableDTO.getMasterId(), choseTableDTO.getShopId());
if (tbCashierCarts.isEmpty()) { if (tbCashierCarts.isEmpty()) {
throw new BadRequestException("购物车为空"); throw new BadRequestException("购物车为空");
} }
ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(choseTableDTO.getShopId(), choseTableDTO.getTableId()); ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(choseTableDTO.getShopId(), choseTableDTO.getTableId());
// 清空原有桌台商品
if (choseTableDTO.getIsClear()) {
mpCashierCartService.clearCartByTableIdAndUseType(choseTableDTO.getTableId(), shopEatTypeInfoDTO.getUseType(), choseTableDTO.getShopId());
}
String masterId = getMasterId(choseTableDTO.getShopId(), choseTableDTO.getTableId(), "", null).getString("masterId");
ArrayList<Integer> cartIds = new ArrayList<>(); ArrayList<Integer> cartIds = new ArrayList<>();
Integer orderId = null; Integer orderId = null;
for (TbCashierCart item : tbCashierCarts) { for (TbCashierCart item : tbCashierCarts) {
item.setTableId(choseTableDTO.getTableId()); item.setTableId(choseTableDTO.getTableId());
item.setUseType(shopEatTypeInfoDTO.getUseType()); item.setUseType(shopEatTypeInfoDTO.getUseType());
item.setMasterId(masterId);
cartIds.add(item.getId()); cartIds.add(item.getId());
if (item.getOrderId() != null) { if (item.getOrderId() != null) {
orderId = item.getOrderId(); orderId = item.getOrderId();
@@ -1785,7 +1814,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
mpOrderDetailService.updateUseTypeByCartIds(cartIds, shopEatTypeInfoDTO.getUseType()); mpOrderDetailService.updateUseTypeByCartIds(cartIds, shopEatTypeInfoDTO.getUseType());
// 修改订单表台桌信息 // 修改订单表台桌信息
if(orderId != null) { if (orderId != null) {
mpOrderInfoService.updateTableIdAndUseTypeById(orderId, shopEatTypeInfoDTO.getUseType(), choseTableDTO.getTableId()); mpOrderInfoService.updateTableIdAndUseTypeById(orderId, shopEatTypeInfoDTO.getUseType(), choseTableDTO.getTableId());
mpShopTableService.updateStateByTableId(TableStateEnum.USING, choseTableDTO.getTableId()); mpShopTableService.updateStateByTableId(TableStateEnum.USING, choseTableDTO.getTableId());
// 将台桌redis数据迁移 // 将台桌redis数据迁移
@@ -1820,7 +1849,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
.eq(TbCashierCart::getProductId, TableConstant.CART_SEAT_ID) .eq(TbCashierCart::getProductId, TableConstant.CART_SEAT_ID)
.eq(TbCashierCart::getUseType, choseCountDTO.getUseType()) .eq(TbCashierCart::getUseType, choseCountDTO.getUseType())
.gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime()) .gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime())
.in(TbCashierCart::getStatus, OrderStatusEnums.CREATE.getValue(), OrderStatusEnums.RETURN.getValue()) .in(TbCashierCart::getStatus, OrderStatusEnums.CREATE.getValue(), OrderStatusEnums.RETURN.getValue())
.eq(TbCashierCart::getTableId, choseCountDTO.getTableId()); .eq(TbCashierCart::getTableId, choseCountDTO.getTableId());
TbCashierCart tbCashierCart = cashierCartMapper.selectOne(query); TbCashierCart tbCashierCart = cashierCartMapper.selectOne(query);
@@ -2089,7 +2118,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
returnOrder.setSource(oldOrderInfo.getId()); returnOrder.setSource(oldOrderInfo.getId());
returnOrder.setRefundRemark(returnOrderDTO.getNote()); returnOrder.setRefundRemark(returnOrderDTO.getNote());
orderInfoMapper.insert(returnOrder); orderInfoMapper.insert(returnOrder);
}else { } else {
returnOrder.setUpdatedAt(DateUtil.current()); returnOrder.setUpdatedAt(DateUtil.current());
returnOrder.setRefundRemark(returnOrderDTO.getNote()); returnOrder.setRefundRemark(returnOrderDTO.getNote());
returnOrder.setRefundAmount(returnOrder.getRefundAmount().add(returnAmount)); returnOrder.setRefundAmount(returnOrder.getRefundAmount().add(returnAmount));
@@ -2142,7 +2171,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
@Transactional @Transactional
public Object returnOrder(ReturnOrderDTO returnOrderDTO) { public Object returnOrder(ReturnOrderDTO returnOrderDTO) {
TbOrderInfo orderInfo = orderInfoMapper.selectOne(new LambdaQueryWrapper<TbOrderInfo>() TbOrderInfo orderInfo = orderInfoMapper.selectOne(new LambdaQueryWrapper<TbOrderInfo>()
.eq(TbOrderInfo::getId, returnOrderDTO.getOrderId()) .eq(TbOrderInfo::getId, returnOrderDTO.getOrderId())
.in(TbOrderInfo::getStatus, OrderStatusEnums.REFUND.getValue(), OrderStatusEnums.CLOSED.getValue()) .in(TbOrderInfo::getStatus, OrderStatusEnums.REFUND.getValue(), OrderStatusEnums.CLOSED.getValue())
// .eq(TbOrderInfo::getStatus, "closed") // .eq(TbOrderInfo::getStatus, "closed")
); );
@@ -2196,7 +2225,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
public Object getShopState(Integer shopId, String tableId) { public Object getShopState(Integer shopId, String tableId) {
TbShopTable tbShopTable = mpShopTableService.selectByTableId(tableId, shopId); TbShopTable tbShopTable = mpShopTableService.selectByTableId(tableId, shopId);
if (tbShopTable != null) { if (tbShopTable != null) {
long cartCount = mpCashierCartService.countByTableId(shopId, tableId); long cartCount = mpCashierCartService.countByTableId(shopId, tableId, OrderStatusEnums.CREATE, OrderStatusEnums.RETURN);
Map<String, Object> map = BeanUtil.beanToMap(tbShopTable, false, false); Map<String, Object> map = BeanUtil.beanToMap(tbShopTable, false, false);
map.put("cartCount", cartCount); map.put("cartCount", cartCount);
return map; return map;

View File

@@ -43,7 +43,7 @@ public interface TbShopTableService {
*/ */
Map<String,Object> queryAll(TbShopTableQueryCriteria criteria, Pageable pageable); Map<String,Object> queryAll(TbShopTableQueryCriteria criteria, Pageable pageable);
Map<String,Object> queryAllNoPage(TbShopTableQueryCriteria criteria); Map<String,Object> queryAllPage(TbShopTableQueryCriteria criteria);
/** /**
* 查询所有数据不分页 * 查询所有数据不分页

View File

@@ -114,5 +114,7 @@ public class TbOrderInfoVo {
private String remark; private String remark;
private List<TbOrderDetail> detailList; private List<? extends TbOrderDetail> detailList;
private TbOrderDetail seatInfo;
} }

View File

@@ -4,8 +4,9 @@ spring:
druid: druid:
db-type: com.alibaba.druid.pool.DruidDataSource db-type: com.alibaba.druid.pool.DruidDataSource
# driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy # driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:p6spy:mysql://rm-bp1kn7h89nz62cno1ro.mysql.rds.aliyuncs.com:3306/fycashier_test?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useJDBCCompliantTimezoneShift=true&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true # url: jdbc:p6spy:mysql://rm-bp1kn7h89nz62cno1ro.mysql.rds.aliyuncs.com:3306/fycashier_test?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useJDBCCompliantTimezoneShift=true&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true
# url: jdbc:mysql://127.0.0.1:3306/fycashier?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useJDBCCompliantTimezoneShift=true&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true # url: jdbc:mysql://127.0.0.1:3306/fycashier?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useJDBCCompliantTimezoneShift=true&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true
url: jdbc:p6spy:mysql://rm-bp1kn7h89nz62cno1ro.mysql.rds.aliyuncs.com:3306/fycashier_pre?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useJDBCCompliantTimezoneShift=true&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true
username: cashier username: cashier
password: Cashier@1@ password: Cashier@1@
# driver-class-name: com.mysql.cj.jdbc.Driver # driver-class-name: com.mysql.cj.jdbc.Driver
@@ -147,3 +148,9 @@ decorator:
cashier: cashier:
server: server:
wx: https://wxcashiertest.sxczgkj.cn/ wx: https://wxcashiertest.sxczgkj.cn/
# 三方支付回调信息
thirdPay:
notify:
fstPay: https://admintestpapi.sxczgkj.cn/notify/fstPay
fstReturn: https://admintestpapi.sxczgkj.cn/notify/fstReturn

View File

@@ -138,3 +138,8 @@ file:
cashier: cashier:
server: server:
wx: https://pre-cashier.sxczgkj.cn/ wx: https://pre-cashier.sxczgkj.cn/
thirdPay:
notify:
fstPay: https://pre-cashieradmin.sxczgkj.cn/notify/fstPay
fstReturn: https://pre-cashieradmin.sxczgkj.cn/notify/fstReturn

View File

@@ -65,11 +65,7 @@ qrcode: https://kysh.sxczgkj.cn/codeplate?code=
thirdPay: thirdPay:
groupCallBack: https://wxcashiertest.sxczgkj.cn/cashierService/notify/notifyCallBackGroup groupCallBack: https://wxcashiertest.sxczgkj.cn/cashierService/notify/notifyCallBackGroup
payType: fushangtong payType: fushangtong
callBack: https://cashierclient.sxczgkj.cn/cashier-client/notify/notifyPay
url: https://paymentapi.sxczgkj.cn url: https://paymentapi.sxczgkj.cn
notify:
fstPay: https://admintestpapi.sxczgkj.cn/notify/fstPay
fstReturn: https://admintestpapi.sxczgkj.cn/notify/fstReturn
mybatis-plus: mybatis-plus:
mapper-locations: classpath*:/mapper/plus/*.xml mapper-locations: classpath*:/mapper/plus/*.xml