增加二维码重复使用校验
This commit is contained in:
@@ -1,10 +1,8 @@
|
||||
package com.sv.netty.netty.service.impl;
|
||||
|
||||
import com.enums.BarCodeStatusEnum;
|
||||
import com.enums.EnterEnum;
|
||||
import com.sv.entity.Member;
|
||||
import com.sv.entity.MemberEnterVenueLog;
|
||||
import com.sv.entity.MemberMoneyLog;
|
||||
import com.sv.entity.Venue;
|
||||
import com.sv.entity.*;
|
||||
import com.sv.mapper.BarcodeMapper;
|
||||
import com.sv.netty.config.*;
|
||||
import com.sv.netty.netty.service.MessageService;
|
||||
@@ -110,6 +108,9 @@ public class ServerMessageHandlerAdapter implements MessageService {
|
||||
public void outVenue(String barcode) {
|
||||
VenueBarCode venueBarCode = MakeCode.decodeCode(barcode);
|
||||
barcode = MakeCode.reWriteBarcode(barcode);
|
||||
if (!checkBarcode(barcode)){
|
||||
throw new ServiceException("二维码已经使用");
|
||||
}
|
||||
Channel channel = getCurrentChannel(venueBarCode.getDeviceName(),venueBarCode.getVenueId());
|
||||
Member member = memberService.findByMember(venueBarCode.getMemberId());
|
||||
if (member != null) {
|
||||
@@ -139,6 +140,9 @@ public class ServerMessageHandlerAdapter implements MessageService {
|
||||
public void enterVenue(String barcode) {
|
||||
VenueBarCode venueBarCode = MakeCode.decodeCode(barcode);
|
||||
barcode = MakeCode.reWriteBarcode(barcode);
|
||||
if (!checkBarcode(barcode)){
|
||||
throw new ServiceException("二维码已经使用");
|
||||
}
|
||||
Channel channel = getCurrentChannel(venueBarCode.getDeviceName(), venueBarCode.getVenueId());
|
||||
Member member = memberService.findByMember(venueBarCode.getMemberId());
|
||||
if (member != null) {
|
||||
@@ -155,6 +159,22 @@ public class ServerMessageHandlerAdapter implements MessageService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验二维码是否已被使用
|
||||
* @param barcode
|
||||
* @return
|
||||
*/
|
||||
private boolean checkBarcode(String barcode) {
|
||||
Barcode code = barcodeMapper.checkCodeStatus(barcode);
|
||||
if (code == null) {
|
||||
throw new ServiceException("二维码不存在或者已经被使用");
|
||||
}
|
||||
if (BarCodeStatusEnum.INIT.getValue()==code.getStatus()){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void writeOffCode(String barcode) {
|
||||
barcodeMapper.writeOffCode(barcode);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
package com.sv.barcode;
|
||||
|
||||
import com.sv.barcode.button.EnterClick;
|
||||
import com.sv.barcode.button.OutClick;
|
||||
import com.sv.barcode.button.TestCodeClick;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
|
||||
@@ -7,13 +11,25 @@ public class ListenKeyFrame extends Thread{
|
||||
|
||||
Frame frame;
|
||||
|
||||
public void newFrame (int i) {
|
||||
frame = new Frame("智慧云馆门禁" + i);
|
||||
public void newFrame (String title) {
|
||||
frame = new Frame("智慧云馆门禁" + title);
|
||||
frame.setBounds(300,100,600,500);
|
||||
frame.setLayout(new FlowLayout(FlowLayout.CENTER,5,200));//设计布局
|
||||
frame.setLayout(new FlowLayout(FlowLayout.CENTER,20,50));//设计布局
|
||||
JLabel label = new JLabel("请保持该界面被选中,否则将无法监听二维码扫描!");
|
||||
JButton buttonIn = new JButton("入场开门");
|
||||
buttonIn.addActionListener(new EnterClick());
|
||||
JButton buttonOut = new JButton("出场开门");
|
||||
buttonOut.addActionListener(new OutClick());
|
||||
JTextField jTextField = new JTextField(33);
|
||||
//设置输入框大小
|
||||
JButton buttonSubmit = new JButton("验证二维码(测试专用)");
|
||||
buttonSubmit.addActionListener(new TestCodeClick(jTextField));
|
||||
frame.addKeyListener(new ScanBarCode());
|
||||
frame.add(label);
|
||||
frame.add(buttonIn);
|
||||
frame.add(buttonOut);
|
||||
// frame.add(jTextField); // 注释
|
||||
// frame.add(buttonSubmit); // 注释
|
||||
frame.setVisible(true);
|
||||
frame.setFocusable(true);
|
||||
}
|
||||
@@ -24,4 +40,10 @@ public class ListenKeyFrame extends Thread{
|
||||
}
|
||||
}
|
||||
|
||||
public void focus() {
|
||||
if (frame != null) {
|
||||
frame.setFocusable(true);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.sv.barcode.button;
|
||||
|
||||
import com.sv.netty.ClientHandler;
|
||||
import com.sv.netty.ClientThread;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
public class EnterClick implements ActionListener {
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(ClientHandler.class);
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
// 开门
|
||||
logger.error("开门成功!!!!!!!");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.sv.barcode.button;
|
||||
|
||||
import com.sv.netty.ClientHandler;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
public class OutClick implements ActionListener {
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(ClientHandler.class);
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
// 开门
|
||||
logger.error("开门成功!!!!!!!");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.sv.barcode.button;
|
||||
|
||||
import com.sv.netty.ClientHandler;
|
||||
import com.sv.netty.ClientThread;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
public class TestCodeClick implements ActionListener {
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(ClientHandler.class);
|
||||
|
||||
private JTextField barcode;
|
||||
|
||||
public TestCodeClick(JTextField barcode) {
|
||||
this.barcode = barcode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
logger.error("发送验证二维码消息!!!=========" + barcode.getText());
|
||||
ClientThread.getInstance().checkBarcode(barcode.getText());
|
||||
}
|
||||
}
|
||||
@@ -40,19 +40,19 @@ public class ClientService {
|
||||
|
||||
Thread.sleep(3000);
|
||||
ListenKeyFrame listenKeyFrame = new ListenKeyFrame();
|
||||
listenKeyFrame.newFrame(1);
|
||||
listenKeyFrame.newFrame("-加载中12%");
|
||||
Thread.sleep(3000);
|
||||
listenKeyFrame.close();
|
||||
ListenKeyFrame listenKeyFrame1 = new ListenKeyFrame();
|
||||
listenKeyFrame1.newFrame(2);
|
||||
listenKeyFrame1.newFrame("-加载中53%");
|
||||
Thread.sleep(3000);
|
||||
listenKeyFrame1.close();
|
||||
ListenKeyFrame listenKeyFrame2 = new ListenKeyFrame();
|
||||
listenKeyFrame2.newFrame(3);
|
||||
listenKeyFrame2.newFrame("-加载中53%");
|
||||
Thread.sleep(3000);
|
||||
listenKeyFrame2.close();
|
||||
ListenKeyFrame listenKeyFrame3 = new ListenKeyFrame();
|
||||
listenKeyFrame3.newFrame(4);
|
||||
listenKeyFrame3.newFrame("");
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -23,4 +23,7 @@ public interface BarcodeMapper {
|
||||
|
||||
@NoPlatform
|
||||
Barcode findBarcode(@Param("venueId") Integer venueId,@Param("memberId") Integer memberId);
|
||||
|
||||
@NoPlatform
|
||||
Barcode checkCodeStatus(@Param("barcode") String barcode);
|
||||
}
|
||||
|
||||
@@ -168,4 +168,12 @@
|
||||
and status = 0
|
||||
</select>
|
||||
|
||||
<select id="checkCodeStatus" resultMap="BaseResultMap" parameterType="String" >
|
||||
select
|
||||
<include refid="Base_Column_List" />
|
||||
from sv_barcode
|
||||
where barcode = #{barcode,jdbcType=VARCHAR}
|
||||
and status = 0
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user