fix: 无桌台代客下单修改
This commit is contained in:
parent
7a9d226783
commit
9988723044
|
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -494,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());
|
||||||
|
|
@ -735,30 +740,21 @@ 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);
|
||||||
|
|
@ -779,7 +775,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||||
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));
|
||||||
|
|
||||||
|
|
@ -1063,11 +1059,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)) {
|
||||||
|
|
@ -1112,7 +1107,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));
|
||||||
|
|
@ -1235,7 +1230,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) {
|
||||||
|
|
@ -1267,7 +1262,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());
|
||||||
|
|
@ -1307,7 +1302,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());
|
||||||
}
|
}
|
||||||
|
|
@ -1359,7 +1354,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 先付费模式,结束购物车状态
|
// 先付费模式,结束购物车状态
|
||||||
if (shopEatTypeInfoDTO.isDineInBefore() || shopEatTypeInfoDTO.isTakeout() || StrUtil.isBlank(createOrderDTO.getTableId())) {
|
if (!shopEatTypeInfoDTO.isDineInAfter() || StrUtil.isBlank(createOrderDTO.getTableId())) {
|
||||||
cashierCart.setStatus("final");
|
cashierCart.setStatus("final");
|
||||||
}
|
}
|
||||||
cashierCartMapper.updateById(cashierCart);
|
cashierCartMapper.updateById(cashierCart);
|
||||||
|
|
@ -1380,12 +1375,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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue