1.添加mybatisPlus依赖
2.排队取号接口
This commit is contained in:
30
pom.xml
30
pom.xml
@@ -20,6 +20,13 @@
|
|||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
<!--Spring boot 测试-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.belerweb</groupId>
|
<groupId>com.belerweb</groupId>
|
||||||
<artifactId >pinyin4j</artifactId>
|
<artifactId >pinyin4j</artifactId>
|
||||||
@@ -107,6 +114,22 @@
|
|||||||
<version>1.3.5</version>
|
<version>1.3.5</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.baomidou</groupId>
|
||||||
|
<artifactId>mybatis-plus-boot-starter</artifactId>
|
||||||
|
<version>3.3.1</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.mybatis</groupId>
|
||||||
|
<artifactId>mybatis-spring</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-jdbc</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-validation</artifactId>
|
<artifactId>spring-boot-starter-validation</artifactId>
|
||||||
@@ -219,6 +242,11 @@
|
|||||||
<artifactId>weixin-java-miniapp</artifactId>
|
<artifactId>weixin-java-miniapp</artifactId>
|
||||||
<version>3.8.0</version>
|
<version>3.8.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
|
||||||
@@ -278,4 +306,4 @@
|
|||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package com.chaozhanggui.system.cashierservice.controller;
|
||||||
|
|
||||||
|
import com.chaozhanggui.system.cashierservice.entity.dto.TakeNumberDTO;
|
||||||
|
import com.chaozhanggui.system.cashierservice.service.TbCallService;
|
||||||
|
import com.chaozhanggui.system.cashierservice.sign.Result;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 叫号
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/callTable")
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class TbCallTableController {
|
||||||
|
|
||||||
|
private final TbCallService tbCallService;
|
||||||
|
|
||||||
|
@PostMapping("takeNumber")
|
||||||
|
public Result takeNumber(
|
||||||
|
@Validated @RequestBody TakeNumberDTO takeNumberDTO
|
||||||
|
) {
|
||||||
|
return Result.successWithData(tbCallService.takeNumber(takeNumberDTO));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 排号列表
|
||||||
|
* @param openId openId
|
||||||
|
* @param shopId 店铺id
|
||||||
|
* @return data
|
||||||
|
*/
|
||||||
|
@GetMapping
|
||||||
|
public Result get(
|
||||||
|
@RequestParam String openId,
|
||||||
|
@RequestParam Integer shopId
|
||||||
|
) {
|
||||||
|
return Result.successWithData(tbCallService.getList(shopId, openId));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -56,5 +56,6 @@ public interface TbCashierCartMapper {
|
|||||||
List<TbCashierCart> selectByOrderId(@Param("orderId") String orderId,@Param("status") String status);
|
List<TbCashierCart> selectByOrderId(@Param("orderId") String orderId,@Param("status") String status);
|
||||||
|
|
||||||
void updateStatusByTableId(@Param("tableId")String tableId,@Param("status") String status);
|
void updateStatusByTableId(@Param("tableId")String tableId,@Param("status") String status);
|
||||||
|
void updateStatusByOrderIdForMini(@Param("tableId")String tableId,@Param("status") String status);
|
||||||
void updateStatusById(@Param("id")Integer id,@Param("status") String status);
|
void updateStatusById(@Param("id")Integer id,@Param("status") String status);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,197 @@
|
|||||||
|
package com.chaozhanggui.system.cashierservice.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @TableName tb_call_queue
|
||||||
|
*/
|
||||||
|
@TableName(value ="tb_call_queue")
|
||||||
|
@Data
|
||||||
|
public class TbCallQueue implements Serializable {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableId(type = IdType.AUTO)
|
||||||
|
private Integer id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 叫号台桌类型id
|
||||||
|
*/
|
||||||
|
private Integer callTableId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手机号
|
||||||
|
*/
|
||||||
|
private String phone;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 姓名
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 店铺名称
|
||||||
|
*/
|
||||||
|
private String shopName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 店铺id
|
||||||
|
*/
|
||||||
|
private Integer shopId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* -1已取消 0排队中 1叫号中 2已入座 3 已过号
|
||||||
|
*/
|
||||||
|
private Integer state;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 排号时间
|
||||||
|
*/
|
||||||
|
private Date createTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 叫号时间
|
||||||
|
*/
|
||||||
|
private Date callTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 叫号次数
|
||||||
|
*/
|
||||||
|
private Integer callCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 过号时间
|
||||||
|
*/
|
||||||
|
private Date passTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 取消时间
|
||||||
|
*/
|
||||||
|
private Date cancelTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private String note;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private Integer userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private String openId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订阅提醒 0未订阅 1已订阅
|
||||||
|
*/
|
||||||
|
private Integer subState;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 确认时间
|
||||||
|
*/
|
||||||
|
private Date confirmTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 叫号号码
|
||||||
|
*/
|
||||||
|
private String callNum;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object that) {
|
||||||
|
if (this == that) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (that == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (getClass() != that.getClass()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
TbCallQueue other = (TbCallQueue) that;
|
||||||
|
return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
|
||||||
|
&& (this.getCallTableId() == null ? other.getCallTableId() == null : this.getCallTableId().equals(other.getCallTableId()))
|
||||||
|
&& (this.getPhone() == null ? other.getPhone() == null : this.getPhone().equals(other.getPhone()))
|
||||||
|
&& (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))
|
||||||
|
&& (this.getShopName() == null ? other.getShopName() == null : this.getShopName().equals(other.getShopName()))
|
||||||
|
&& (this.getShopId() == null ? other.getShopId() == null : this.getShopId().equals(other.getShopId()))
|
||||||
|
&& (this.getState() == null ? other.getState() == null : this.getState().equals(other.getState()))
|
||||||
|
&& (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
|
||||||
|
&& (this.getCallTime() == null ? other.getCallTime() == null : this.getCallTime().equals(other.getCallTime()))
|
||||||
|
&& (this.getCallCount() == null ? other.getCallCount() == null : this.getCallCount().equals(other.getCallCount()))
|
||||||
|
&& (this.getPassTime() == null ? other.getPassTime() == null : this.getPassTime().equals(other.getPassTime()))
|
||||||
|
&& (this.getCancelTime() == null ? other.getCancelTime() == null : this.getCancelTime().equals(other.getCancelTime()))
|
||||||
|
&& (this.getNote() == null ? other.getNote() == null : this.getNote().equals(other.getNote()))
|
||||||
|
&& (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))
|
||||||
|
&& (this.getOpenId() == null ? other.getOpenId() == null : this.getOpenId().equals(other.getOpenId()))
|
||||||
|
&& (this.getSubState() == null ? other.getSubState() == null : this.getSubState().equals(other.getSubState()))
|
||||||
|
&& (this.getConfirmTime() == null ? other.getConfirmTime() == null : this.getConfirmTime().equals(other.getConfirmTime()))
|
||||||
|
&& (this.getCallNum() == null ? other.getCallNum() == null : this.getCallNum().equals(other.getCallNum()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
final int prime = 31;
|
||||||
|
int result = 1;
|
||||||
|
result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
|
||||||
|
result = prime * result + ((getCallTableId() == null) ? 0 : getCallTableId().hashCode());
|
||||||
|
result = prime * result + ((getPhone() == null) ? 0 : getPhone().hashCode());
|
||||||
|
result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
|
||||||
|
result = prime * result + ((getShopName() == null) ? 0 : getShopName().hashCode());
|
||||||
|
result = prime * result + ((getShopId() == null) ? 0 : getShopId().hashCode());
|
||||||
|
result = prime * result + ((getState() == null) ? 0 : getState().hashCode());
|
||||||
|
result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
|
||||||
|
result = prime * result + ((getCallTime() == null) ? 0 : getCallTime().hashCode());
|
||||||
|
result = prime * result + ((getCallCount() == null) ? 0 : getCallCount().hashCode());
|
||||||
|
result = prime * result + ((getPassTime() == null) ? 0 : getPassTime().hashCode());
|
||||||
|
result = prime * result + ((getCancelTime() == null) ? 0 : getCancelTime().hashCode());
|
||||||
|
result = prime * result + ((getNote() == null) ? 0 : getNote().hashCode());
|
||||||
|
result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());
|
||||||
|
result = prime * result + ((getOpenId() == null) ? 0 : getOpenId().hashCode());
|
||||||
|
result = prime * result + ((getSubState() == null) ? 0 : getSubState().hashCode());
|
||||||
|
result = prime * result + ((getConfirmTime() == null) ? 0 : getConfirmTime().hashCode());
|
||||||
|
result = prime * result + ((getCallNum() == null) ? 0 : getCallNum().hashCode());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append(getClass().getSimpleName());
|
||||||
|
sb.append(" [");
|
||||||
|
sb.append("Hash = ").append(hashCode());
|
||||||
|
sb.append(", id=").append(id);
|
||||||
|
sb.append(", callTableId=").append(callTableId);
|
||||||
|
sb.append(", phone=").append(phone);
|
||||||
|
sb.append(", name=").append(name);
|
||||||
|
sb.append(", shopName=").append(shopName);
|
||||||
|
sb.append(", shopId=").append(shopId);
|
||||||
|
sb.append(", state=").append(state);
|
||||||
|
sb.append(", createTime=").append(createTime);
|
||||||
|
sb.append(", callTime=").append(callTime);
|
||||||
|
sb.append(", callCount=").append(callCount);
|
||||||
|
sb.append(", passTime=").append(passTime);
|
||||||
|
sb.append(", cancelTime=").append(cancelTime);
|
||||||
|
sb.append(", note=").append(note);
|
||||||
|
sb.append(", userId=").append(userId);
|
||||||
|
sb.append(", openId=").append(openId);
|
||||||
|
sb.append(", subState=").append(subState);
|
||||||
|
sb.append(", confirmTime=").append(confirmTime);
|
||||||
|
sb.append(", callNum=").append(callNum);
|
||||||
|
sb.append(", serialVersionUID=").append(serialVersionUID);
|
||||||
|
sb.append("]");
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,149 @@
|
|||||||
|
package com.chaozhanggui.system.cashierservice.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @TableName tb_call_table
|
||||||
|
*/
|
||||||
|
@TableName(value ="tb_call_table")
|
||||||
|
@Data
|
||||||
|
public class TbCallTable implements Serializable {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableId(type = IdType.AUTO)
|
||||||
|
private Integer id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 描述
|
||||||
|
*/
|
||||||
|
private String note;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 等待时间分钟
|
||||||
|
*/
|
||||||
|
private Integer waitTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 前缀
|
||||||
|
*/
|
||||||
|
private String prefix;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 起始号码
|
||||||
|
*/
|
||||||
|
private Integer start;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 临近几桌提醒
|
||||||
|
*/
|
||||||
|
private Integer nearNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 0禁用 1使用
|
||||||
|
*/
|
||||||
|
private Integer state;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 店铺id
|
||||||
|
*/
|
||||||
|
private Integer shopId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 二维码地址
|
||||||
|
*/
|
||||||
|
private String qrcode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private Date createTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private Date updateTime;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object that) {
|
||||||
|
if (this == that) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (that == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (getClass() != that.getClass()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
TbCallTable other = (TbCallTable) that;
|
||||||
|
return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
|
||||||
|
&& (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))
|
||||||
|
&& (this.getNote() == null ? other.getNote() == null : this.getNote().equals(other.getNote()))
|
||||||
|
&& (this.getWaitTime() == null ? other.getWaitTime() == null : this.getWaitTime().equals(other.getWaitTime()))
|
||||||
|
&& (this.getPrefix() == null ? other.getPrefix() == null : this.getPrefix().equals(other.getPrefix()))
|
||||||
|
&& (this.getStart() == null ? other.getStart() == null : this.getStart().equals(other.getStart()))
|
||||||
|
&& (this.getNearNum() == null ? other.getNearNum() == null : this.getNearNum().equals(other.getNearNum()))
|
||||||
|
&& (this.getState() == null ? other.getState() == null : this.getState().equals(other.getState()))
|
||||||
|
&& (this.getShopId() == null ? other.getShopId() == null : this.getShopId().equals(other.getShopId()))
|
||||||
|
&& (this.getQrcode() == null ? other.getQrcode() == null : this.getQrcode().equals(other.getQrcode()))
|
||||||
|
&& (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
|
||||||
|
&& (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
final int prime = 31;
|
||||||
|
int result = 1;
|
||||||
|
result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
|
||||||
|
result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
|
||||||
|
result = prime * result + ((getNote() == null) ? 0 : getNote().hashCode());
|
||||||
|
result = prime * result + ((getWaitTime() == null) ? 0 : getWaitTime().hashCode());
|
||||||
|
result = prime * result + ((getPrefix() == null) ? 0 : getPrefix().hashCode());
|
||||||
|
result = prime * result + ((getStart() == null) ? 0 : getStart().hashCode());
|
||||||
|
result = prime * result + ((getNearNum() == null) ? 0 : getNearNum().hashCode());
|
||||||
|
result = prime * result + ((getState() == null) ? 0 : getState().hashCode());
|
||||||
|
result = prime * result + ((getShopId() == null) ? 0 : getShopId().hashCode());
|
||||||
|
result = prime * result + ((getQrcode() == null) ? 0 : getQrcode().hashCode());
|
||||||
|
result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
|
||||||
|
result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append(getClass().getSimpleName());
|
||||||
|
sb.append(" [");
|
||||||
|
sb.append("Hash = ").append(hashCode());
|
||||||
|
sb.append(", id=").append(id);
|
||||||
|
sb.append(", name=").append(name);
|
||||||
|
sb.append(", note=").append(note);
|
||||||
|
sb.append(", waitTime=").append(waitTime);
|
||||||
|
sb.append(", prefix=").append(prefix);
|
||||||
|
sb.append(", start=").append(start);
|
||||||
|
sb.append(", nearNum=").append(nearNum);
|
||||||
|
sb.append(", state=").append(state);
|
||||||
|
sb.append(", shopId=").append(shopId);
|
||||||
|
sb.append(", qrcode=").append(qrcode);
|
||||||
|
sb.append(", createTime=").append(createTime);
|
||||||
|
sb.append(", updateTime=").append(updateTime);
|
||||||
|
sb.append(", serialVersionUID=").append(serialVersionUID);
|
||||||
|
sb.append("]");
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package com.chaozhanggui.system.cashierservice.entity.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class BaseCallTableDTO {
|
||||||
|
@NotNull
|
||||||
|
private Integer callTableId;
|
||||||
|
@NotNull
|
||||||
|
private Integer shopId;
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.chaozhanggui.system.cashierservice.entity.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Data
|
||||||
|
public class TakeNumberDTO extends BaseCallTableDTO{
|
||||||
|
@NotNull
|
||||||
|
private String phone;
|
||||||
|
private String note;
|
||||||
|
private String name;
|
||||||
|
@NotBlank
|
||||||
|
private String openId;
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.chaozhanggui.system.cashierservice.entity.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class CallQueueInfoVO {
|
||||||
|
private Integer id;
|
||||||
|
private String tableName;
|
||||||
|
private String tableNote;
|
||||||
|
private Integer waitingCount;
|
||||||
|
private Integer waitTime;
|
||||||
|
private Integer state;
|
||||||
|
private String callNum;
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package com.chaozhanggui.system.cashierservice.mapper;
|
||||||
|
|
||||||
|
import com.chaozhanggui.system.cashierservice.entity.TbCallQueue;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.chaozhanggui.system.cashierservice.entity.vo.CallQueueInfoVO;
|
||||||
|
import org.apache.ibatis.annotations.Select;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Administrator
|
||||||
|
* @description 针对表【tb_call_queue】的数据库操作Mapper
|
||||||
|
* @createDate 2024-09-13 13:44:26
|
||||||
|
* @Entity com.chaozhanggui.system.cashierservice.entity.TbCallQueue
|
||||||
|
*/
|
||||||
|
public interface TbCallQueueMapper extends BaseMapper<TbCallQueue> {
|
||||||
|
|
||||||
|
List<CallQueueInfoVO> selectInfoByOpenId(Integer shopId, String openId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.chaozhanggui.system.cashierservice.mapper;
|
||||||
|
|
||||||
|
import com.chaozhanggui.system.cashierservice.entity.TbCallTable;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Administrator
|
||||||
|
* @description 针对表【tb_call_table】的数据库操作Mapper
|
||||||
|
* @createDate 2024-09-13 13:44:34
|
||||||
|
* @Entity com.chaozhanggui.system.cashierservice.entity.TbCallTable
|
||||||
|
*/
|
||||||
|
public interface TbCallTableMapper extends BaseMapper<TbCallTable> {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -26,13 +26,31 @@ public class RedisCst {
|
|||||||
public static final String CREATE_ORDER_LOCK = "CREATE_ORDER_LOCK:";
|
public static final String CREATE_ORDER_LOCK = "CREATE_ORDER_LOCK:";
|
||||||
public static final String SEND_STOCK_WARN_MSG = "SEND_STOCK_WARN_MSG:";
|
public static final String SEND_STOCK_WARN_MSG = "SEND_STOCK_WARN_MSG:";
|
||||||
public static final String SONG_PAY_LOCK = "song_pay_lock:";
|
public static final String SONG_PAY_LOCK = "song_pay_lock:";
|
||||||
public static final String ORDER_PRINT_PRO = "ORDER_PRINT_PRODUCT:";
|
public static final String ORDER_PRINT_PRO = "ORDER_PRINT_PRODUCT:";
|
||||||
public static final String ORDER_PRINT = "ORDER_PRINT:";
|
public static final String ORDER_PRINT = "ORDER_PRINT:";
|
||||||
|
|
||||||
static String CURRENT_TABLE_ORDER = "CURRENT_TABLE_ORDER:";
|
static final String CURRENT_TABLE_ORDER = "CURRENT_TABLE_ORDER:";
|
||||||
|
|
||||||
|
// 排队取号全局号码
|
||||||
|
public static final String TABLE_CALL_NUMBER = "TABLE_CALL_NUMBER:";
|
||||||
|
|
||||||
|
// 全局锁
|
||||||
|
public static final String LOCK_KEY = "LOCK:";
|
||||||
|
|
||||||
|
|
||||||
public static String getCurrentOrderKey(String tableId, String shopId) {
|
public static String getCurrentOrderKey(String tableId, String shopId) {
|
||||||
return CURRENT_TABLE_ORDER + shopId + ":" + tableId;
|
return CURRENT_TABLE_ORDER + shopId + ":" + tableId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getTableCallNumKey(Integer shopId, Integer callTableId) {
|
||||||
|
return TABLE_CALL_NUMBER + shopId + ":" + callTableId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getLockKey(String sign, Object... args) {
|
||||||
|
StringBuilder key = new StringBuilder(LOCK_KEY + ":" + sign + ":");
|
||||||
|
for (Object arg : args) {
|
||||||
|
key.append(":").append(arg.toString());
|
||||||
|
}
|
||||||
|
return key.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package com.chaozhanggui.system.cashierservice.service;
|
||||||
|
|
||||||
|
import com.chaozhanggui.system.cashierservice.entity.TbCallQueue;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Administrator
|
||||||
|
* @description 针对表【tb_call_queue】的数据库操作Service
|
||||||
|
* @createDate 2024-09-13 13:44:26
|
||||||
|
*/
|
||||||
|
public interface TbCallQueueService extends IService<TbCallQueue> {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package com.chaozhanggui.system.cashierservice.service;
|
||||||
|
|
||||||
|
import com.chaozhanggui.system.cashierservice.entity.dto.TakeNumberDTO;
|
||||||
|
|
||||||
|
public interface TbCallService {
|
||||||
|
Object takeNumber(TakeNumberDTO takeNumberDTO);
|
||||||
|
|
||||||
|
Object getList(Integer shopId, String openId);
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package com.chaozhanggui.system.cashierservice.service;
|
||||||
|
|
||||||
|
import com.chaozhanggui.system.cashierservice.entity.TbCallTable;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import org.springframework.context.annotation.Primary;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Administrator
|
||||||
|
* @description 针对表【tb_call_table】的数据库操作Service
|
||||||
|
* @createDate 2024-09-13 13:44:34
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public interface TbCallTableService extends IService<TbCallTable> {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.chaozhanggui.system.cashierservice.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.chaozhanggui.system.cashierservice.entity.TbCallQueue;
|
||||||
|
import com.chaozhanggui.system.cashierservice.service.TbCallQueueService;
|
||||||
|
import com.chaozhanggui.system.cashierservice.mapper.TbCallQueueMapper;
|
||||||
|
import org.springframework.context.annotation.Primary;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Administrator
|
||||||
|
* @description 针对表【tb_call_queue】的数据库操作Service实现
|
||||||
|
* @createDate 2024-09-13 13:44:26
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Primary
|
||||||
|
public class TbCallQueueServiceImpl extends ServiceImpl<TbCallQueueMapper, TbCallQueue>
|
||||||
|
implements TbCallQueueService{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,98 @@
|
|||||||
|
package com.chaozhanggui.system.cashierservice.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.chaozhanggui.system.cashierservice.dao.TbShopInfoMapper;
|
||||||
|
import com.chaozhanggui.system.cashierservice.entity.TbCallQueue;
|
||||||
|
import com.chaozhanggui.system.cashierservice.entity.TbCallTable;
|
||||||
|
import com.chaozhanggui.system.cashierservice.entity.TbShopInfo;
|
||||||
|
import com.chaozhanggui.system.cashierservice.entity.dto.TakeNumberDTO;
|
||||||
|
import com.chaozhanggui.system.cashierservice.exception.MsgException;
|
||||||
|
import com.chaozhanggui.system.cashierservice.mapper.TbCallQueueMapper;
|
||||||
|
import com.chaozhanggui.system.cashierservice.redis.RedisCst;
|
||||||
|
import com.chaozhanggui.system.cashierservice.service.TbCallQueueService;
|
||||||
|
import com.chaozhanggui.system.cashierservice.service.TbCallService;
|
||||||
|
import com.chaozhanggui.system.cashierservice.service.TbCallTableService;
|
||||||
|
import com.chaozhanggui.system.cashierservice.util.Utils;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import org.springframework.context.annotation.Primary;
|
||||||
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Primary
|
||||||
|
public class TbCallServiceImpl implements TbCallService {
|
||||||
|
private final TbCallQueueService callQueueService;
|
||||||
|
private final TbCallTableService callTableService;
|
||||||
|
private final TbShopInfoMapper shopInfoMapper;
|
||||||
|
private final TbCallQueueMapper callQueueMapper;
|
||||||
|
private final StringRedisTemplate redisTemplate;
|
||||||
|
|
||||||
|
private String getCallNumber(Integer shopId, TbCallTable callTable) {
|
||||||
|
return Utils.runFunAndCheckKey(() -> {
|
||||||
|
String callNumKey = RedisCst.getTableCallNumKey(shopId, callTable.getId());
|
||||||
|
String value = redisTemplate.opsForValue().get(callNumKey);
|
||||||
|
AtomicReference<String> newVal = new AtomicReference<>("");
|
||||||
|
// 初始化
|
||||||
|
if (StrUtil.isBlank(value)) {
|
||||||
|
Boolean setFlag = Utils.runFunAndRetry(() -> redisTemplate.opsForValue().setIfAbsent(callNumKey, callTable.getStart().toString()), flag -> !flag,
|
||||||
|
r -> newVal.set(redisTemplate.opsForValue().get(callNumKey)));
|
||||||
|
|
||||||
|
if (setFlag) {
|
||||||
|
return callTable.getPrefix() + callTable.getStart();
|
||||||
|
}else if (StrUtil.isNotBlank(newVal.get())){
|
||||||
|
value = String.valueOf((Integer.parseInt(newVal.get()) + 1));
|
||||||
|
redisTemplate.opsForValue().set(callNumKey, value);
|
||||||
|
return callTable.getPrefix() + value;
|
||||||
|
}else {
|
||||||
|
throw new MsgException("生成排队号码失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
}else {
|
||||||
|
value = String.valueOf((Integer.parseInt(value) + 1));
|
||||||
|
redisTemplate.opsForValue().set(callNumKey, value);
|
||||||
|
return callTable.getPrefix() + value;
|
||||||
|
}
|
||||||
|
}, redisTemplate, RedisCst.getLockKey("UPDATE_TABLE", shopId, callTable.getId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object takeNumber(TakeNumberDTO takeNumberDTO) {
|
||||||
|
TbShopInfo shopInfo = shopInfoMapper.selectByPrimaryKey(takeNumberDTO.getShopId());
|
||||||
|
if (shopInfo == null) {
|
||||||
|
throw new MsgException("店铺信息不存在");
|
||||||
|
}
|
||||||
|
|
||||||
|
TbCallTable callTable = callTableService.lambdaQuery()
|
||||||
|
.eq(TbCallTable::getShopId, takeNumberDTO.getShopId())
|
||||||
|
.eq(TbCallTable::getId, takeNumberDTO.getCallTableId()).one();
|
||||||
|
if (callTable == null) {
|
||||||
|
throw new MsgException("桌型不存在");
|
||||||
|
}
|
||||||
|
|
||||||
|
TbCallQueue callQueue = callQueueService.lambdaQuery()
|
||||||
|
.eq(TbCallQueue::getPhone, takeNumberDTO.getPhone())
|
||||||
|
.eq(TbCallQueue::getShopId, takeNumberDTO.getShopId())
|
||||||
|
.eq(TbCallQueue::getCallTableId, takeNumberDTO.getCallTableId()).one();
|
||||||
|
if (callQueue != null) {
|
||||||
|
throw new MsgException("您已取号,请勿重复取号");
|
||||||
|
}
|
||||||
|
|
||||||
|
callQueue = BeanUtil.copyProperties(takeNumberDTO, TbCallQueue.class);
|
||||||
|
callQueue.setSubState(1);
|
||||||
|
callQueue.setCreateTime(DateUtil.date());
|
||||||
|
callQueue.setShopId(shopInfo.getId());
|
||||||
|
callQueue.setShopName(shopInfo.getShopName());
|
||||||
|
callQueue.setCallNum(getCallNumber(takeNumberDTO.getShopId(), callTable));
|
||||||
|
return callQueueService.save(callQueue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object getList(Integer shopId, String openId) {
|
||||||
|
return callQueueMapper.selectInfoByOpenId(shopId, openId);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.chaozhanggui.system.cashierservice.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.chaozhanggui.system.cashierservice.entity.TbCallTable;
|
||||||
|
import com.chaozhanggui.system.cashierservice.service.TbCallTableService;
|
||||||
|
import com.chaozhanggui.system.cashierservice.mapper.TbCallTableMapper;
|
||||||
|
import org.springframework.context.annotation.Primary;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Administrator
|
||||||
|
* @description 针对表【tb_call_table】的数据库操作Service实现
|
||||||
|
* @createDate 2024-09-13 13:44:34
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Primary
|
||||||
|
public class TbCallTableServiceImpl extends ServiceImpl<TbCallTableMapper, TbCallTable>
|
||||||
|
implements TbCallTableService{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
package com.chaozhanggui.system.cashierservice.util;
|
||||||
|
|
||||||
|
import com.chaozhanggui.system.cashierservice.exception.MsgException;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
public class Utils {
|
||||||
|
public static int retryCount = 5;
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(Utils.class);
|
||||||
|
|
||||||
|
public static <T> void catchErrNoReturn(Supplier<T> supplier) {
|
||||||
|
try {
|
||||||
|
supplier.get();
|
||||||
|
}catch (Exception e) {
|
||||||
|
log.error("执行方法出现异常", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T, R> void runFunAndRetryNoReturn(
|
||||||
|
Supplier<R> function,
|
||||||
|
Function<R, Boolean> check, Consumer<R> errFun) {
|
||||||
|
log.info("工具类开始执行函数");
|
||||||
|
R result = function.get();
|
||||||
|
boolean flag = check.apply(result);
|
||||||
|
|
||||||
|
log.info("执行结果: {}", result);
|
||||||
|
|
||||||
|
while (flag && retryCount-- > 0) {
|
||||||
|
log.info("执行函数失败, 剩余尝试次数{}", retryCount);
|
||||||
|
result = function.get();
|
||||||
|
log.info("执行结果: {}", result);
|
||||||
|
flag = check.apply(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flag) {
|
||||||
|
errFun.accept(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static<T> T runFunAndCheckKey(Supplier<T> supplier, StringRedisTemplate redisTemplate, String lockKey) {
|
||||||
|
try{
|
||||||
|
// 创建线程id, 用作判断
|
||||||
|
String clientId = UUID.randomUUID().toString();
|
||||||
|
// 设置分布式锁
|
||||||
|
boolean lock = Boolean.TRUE.equals(redisTemplate.opsForValue().setIfAbsent(lockKey, clientId, 30, TimeUnit.MILLISECONDS));
|
||||||
|
int count = 0;
|
||||||
|
while (!lock) {
|
||||||
|
if (count++ > 100) {
|
||||||
|
throw new MsgException("系统繁忙, 稍后再试");
|
||||||
|
}
|
||||||
|
Thread.sleep(20);
|
||||||
|
lock = Boolean.TRUE.equals(redisTemplate.opsForValue().setIfAbsent(lockKey, clientId, 30, TimeUnit.MILLISECONDS));
|
||||||
|
}
|
||||||
|
return supplier.get();
|
||||||
|
} catch (RuntimeException e){
|
||||||
|
log.info("执行出错:{}", e.getMessage());
|
||||||
|
throw e;
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
} finally{
|
||||||
|
redisTemplate.delete(lockKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T, R> R runFunAndRetry(
|
||||||
|
Supplier<R> function,
|
||||||
|
Function<R, Boolean> check, Consumer<R> errFun) {
|
||||||
|
log.info("工具类开始执行函数");
|
||||||
|
R result = function.get();
|
||||||
|
boolean flag = check.apply(result);
|
||||||
|
|
||||||
|
log.info("执行结果: {}", result);
|
||||||
|
|
||||||
|
while (flag && retryCount-- > 0) {
|
||||||
|
log.info("执行函数失败, 剩余尝试次数{}", retryCount);
|
||||||
|
result = function.get();
|
||||||
|
log.info("执行结果: {}", result);
|
||||||
|
flag = check.apply(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flag) {
|
||||||
|
errFun.accept(result);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
62
src/main/resources/mapper/TbCallQueueMapper.xml
Normal file
62
src/main/resources/mapper/TbCallQueueMapper.xml
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.chaozhanggui.system.cashierservice.mapper.TbCallQueueMapper">
|
||||||
|
|
||||||
|
<resultMap id="BaseResultMap" type="com.chaozhanggui.system.cashierservice.entity.TbCallQueue">
|
||||||
|
<id property="id" column="id" jdbcType="INTEGER"/>
|
||||||
|
<result property="callTableId" column="call_table_id" jdbcType="INTEGER"/>
|
||||||
|
<result property="phone" column="phone" jdbcType="VARCHAR"/>
|
||||||
|
<result property="name" column="name" jdbcType="VARCHAR"/>
|
||||||
|
<result property="shopName" column="shop_name" jdbcType="VARCHAR"/>
|
||||||
|
<result property="shopId" column="shop_id" jdbcType="INTEGER"/>
|
||||||
|
<result property="state" column="state" jdbcType="TINYINT"/>
|
||||||
|
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
|
||||||
|
<result property="callTime" column="call_time" jdbcType="TIMESTAMP"/>
|
||||||
|
<result property="callCount" column="call_count" jdbcType="INTEGER"/>
|
||||||
|
<result property="passTime" column="pass_time" jdbcType="TIMESTAMP"/>
|
||||||
|
<result property="cancelTime" column="cancel_time" jdbcType="TIMESTAMP"/>
|
||||||
|
<result property="note" column="note" jdbcType="VARCHAR"/>
|
||||||
|
<result property="userId" column="user_id" jdbcType="INTEGER"/>
|
||||||
|
<result property="openId" column="open_id" jdbcType="VARCHAR"/>
|
||||||
|
<result property="subState" column="sub_state" jdbcType="TINYINT"/>
|
||||||
|
<result property="confirmTime" column="confirm_time" jdbcType="TIMESTAMP"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<sql id="Base_Column_List">
|
||||||
|
id,call_table_id,phone,
|
||||||
|
name,shop_name,shop_id,
|
||||||
|
state,create_time,call_time,
|
||||||
|
call_count,pass_time,cancel_time,
|
||||||
|
note,user_id,open_id,
|
||||||
|
sub_state,confirm_time
|
||||||
|
</sql>
|
||||||
|
<select id="selectInfoByOpenId"
|
||||||
|
resultType="com.chaozhanggui.system.cashierservice.entity.vo.CallQueueInfoVO">
|
||||||
|
SELECT
|
||||||
|
a.call_num,
|
||||||
|
a.id, -- 用户的排队记录ID
|
||||||
|
a.state,
|
||||||
|
a.user_id, -- 用户ID
|
||||||
|
b.name AS table_name, -- 桌子名称
|
||||||
|
b.note AS table_note, -- 桌子备注
|
||||||
|
COUNT(c.id) AS waiting_count, -- 前面有几个人
|
||||||
|
COUNT(c.id) * b.wait_time AS wait_time -- 预计等待时间
|
||||||
|
FROM
|
||||||
|
tb_call_queue a
|
||||||
|
LEFT JOIN
|
||||||
|
tb_call_table b ON a.call_table_id = b.id
|
||||||
|
LEFT JOIN
|
||||||
|
tb_call_queue c ON c.call_table_id = a.call_table_id
|
||||||
|
AND c.create_time < a.create_time
|
||||||
|
AND c.state IN (0, 1) -- 前面的人
|
||||||
|
WHERE
|
||||||
|
a.open_id=#{openId} and a.shop_id=#{shopId} -- 替换为目标用户的user_id
|
||||||
|
GROUP BY
|
||||||
|
a.id, a.user_id, b.name, b.note, b.wait_time
|
||||||
|
ORDER BY
|
||||||
|
a.create_time ASC;
|
||||||
|
|
||||||
|
</select>
|
||||||
|
</mapper>
|
||||||
28
src/main/resources/mapper/TbCallTableMapper.xml
Normal file
28
src/main/resources/mapper/TbCallTableMapper.xml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.chaozhanggui.system.cashierservice.mapper.TbCallTableMapper">
|
||||||
|
|
||||||
|
<resultMap id="BaseResultMap" type="com.chaozhanggui.system.cashierservice.entity.TbCallTable">
|
||||||
|
<id property="id" column="id" jdbcType="INTEGER"/>
|
||||||
|
<result property="name" column="name" jdbcType="VARCHAR"/>
|
||||||
|
<result property="note" column="note" jdbcType="VARCHAR"/>
|
||||||
|
<result property="waitTime" column="wait_time" jdbcType="INTEGER"/>
|
||||||
|
<result property="prefix" column="prefix" jdbcType="VARCHAR"/>
|
||||||
|
<result property="start" column="start" jdbcType="INTEGER"/>
|
||||||
|
<result property="nearNum" column="near_num" jdbcType="INTEGER"/>
|
||||||
|
<result property="state" column="state" jdbcType="TINYINT"/>
|
||||||
|
<result property="shopId" column="shop_id" jdbcType="INTEGER"/>
|
||||||
|
<result property="qrcode" column="qrcode" jdbcType="VARCHAR"/>
|
||||||
|
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
|
||||||
|
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<sql id="Base_Column_List">
|
||||||
|
id,name,note,
|
||||||
|
wait_time,prefix,start,
|
||||||
|
near_num,state,shop_id,
|
||||||
|
qrcode,create_time,update_time
|
||||||
|
</sql>
|
||||||
|
</mapper>
|
||||||
@@ -369,6 +369,10 @@
|
|||||||
update tb_cashier_cart set status = #{status} where table_id = #{tableId} and status = 'create'
|
update tb_cashier_cart set status = #{status} where table_id = #{tableId} and status = 'create'
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<update id="updateStatusByOrderIdForMini">
|
||||||
|
update tb_cashier_cart set status = #{status} where table_id = #{tableId} and status = 'create' and master_id is null
|
||||||
|
</update>
|
||||||
|
|
||||||
<update id="updateStatusById">
|
<update id="updateStatusById">
|
||||||
update tb_cashier_cart set status = #{status} where id = #{id}
|
update tb_cashier_cart set status = #{status} where id = #{id}
|
||||||
</update>
|
</update>
|
||||||
@@ -382,4 +386,4 @@
|
|||||||
|
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
Reference in New Issue
Block a user