api-增加小程序扫码后初始化界面逻辑接口

This commit is contained in:
limqhz
2020-07-15 17:34:44 +08:00
parent 71512a5881
commit 759a0764be
12 changed files with 128 additions and 308 deletions

View File

@@ -1,40 +0,0 @@
package com.sv.api.controller;
import com.sv.service.api.QRCodeService;
import com.ydd.framework.core.common.dto.ResponseDTO;
import com.ydd.framework.core.controller.BaseApiController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* 二维码进场Controller
*/
@RestController
public class QREnterController extends BaseApiController {
private final Logger logger = LoggerFactory.getLogger(QREnterController.class);
@Resource
private QRCodeService qrCodeService;
/**
* 进场指令发布
*/
@RequestMapping(value = "/qr/enter", method = RequestMethod.GET)
public ResponseDTO enter(@RequestParam("deviceId") String deviceId) {
qrCodeService.enter(deviceId);
return ResponseDTO.ok();
}
/**
* 扫码结果页初始化
* 需要进场的场馆信息
*/
@RequestMapping(value = "/qr/init", method = RequestMethod.GET)
public ResponseDTO initEnter(@RequestParam("deviceId")String deviceId) {
return ResponseDTO.ok().addAttribute("init",qrCodeService.initEnter(deviceId));
}
}

View File

@@ -15,6 +15,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;
@Intercepts({
@@ -27,6 +29,7 @@ public class PlatformIdInterceptor implements Interceptor {
private static final Logger logger = LoggerFactory.getLogger(PlatformIdInterceptor.class);
private static final List<String> executeControllerList = Arrays.asList(new String [] {"/qrCode/init"});
/**
* 搜索前缀
*/
@@ -74,19 +77,26 @@ public class PlatformIdInterceptor implements Interceptor {
}catch (Exception e){}
if(request == null)
return sql;
if (checkUrl(request)){
return sql;
}
StringBuilder condition = new StringBuilder(" 1 = 1 ");
String platformKey = PlatformContext.getKey();
if(StringUtils.isEmpty(platformKey))
return sql;
condition.append(" and ").append(PlatformContext.getKey()).append(" = '").append(PlatformContext.getValue()).append("'");
String[] sqls = new String[2];
int index = sql.toLowerCase().lastIndexOf("where");
sqls[0] = sql.substring(0,index-1);
sqls[1] = sql.substring(index+5,sql.length());
sqls[1] = sql.substring(index+5);
return sqls[0] + " WHERE " + condition.toString() + (sqls.length == 2 ? " AND " + sqls[1] : "");
}
private boolean checkUrl(HttpServletRequest request) {
logger.error("request.getRequestURI()===========" + request.getRequestURI());
System.err.println(executeControllerList.toString());
return executeControllerList.contains(request.getRequestURI());
}
@Override

View File

@@ -26,4 +26,6 @@ public class Constant {
public final static String DELIMITER_WORD = "$_$";
public final static String SPIT_WORD = "#";
}

View File

@@ -1,11 +1,11 @@
package com.sv.netty.controller;
import com.sv.netty.dto.ResponseDTO;
import com.ydd.framework.core.common.dto.ResponseDTO;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController("/netty")
public class VenueLessonController {
@RestController
public class AppVenueLessonController {
@RequestMapping("/getLessonOrder")
public ResponseDTO sendMessage1() {

View File

@@ -2,13 +2,13 @@ package com.sv.netty.controller;
import com.sv.netty.config.ClientChannelCache;
import com.sv.netty.config.ErrorCode;
import com.sv.netty.dto.ResponseDTO;
import com.ydd.framework.core.common.dto.ResponseDTO;
import io.netty.channel.Channel;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController("/netty")
@RestController
public class QRCodeControler {
/**

View File

@@ -0,0 +1,64 @@
package com.sv.netty.controller;
import com.sv.netty.config.Constant;
import com.sv.service.api.QRCodeService;
import com.ydd.framework.core.common.dto.ResponseDTO;
import com.ydd.framework.core.controller.BaseApiController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* 小程序二维码进场Controller
*/
@RestController
public class QREnterController extends BaseApiController {
private final Logger logger = LoggerFactory.getLogger(QREnterController.class);
@Resource
private QRCodeService qrCodeService;
/**
* 进场指令发布
*/
@RequestMapping(value = "/qrCode/enter", method = RequestMethod.GET)
public ResponseDTO enter(@RequestParam("deviceId") String deviceId,@RequestParam("memberId") String memberId) {
Integer venueId = getVenueId(deviceId);
String deviceName = getDeviceName(deviceId);
qrCodeService.enter(venueId,deviceName);
return ResponseDTO.ok();
}
/**
* 扫码结果页初始化
* 需要进场的场馆信息
*/
@RequestMapping(value = "/qrCode/init", method = RequestMethod.GET)
public ResponseDTO initEnter(@RequestParam("deviceId")String deviceId) {
Integer venueId = getVenueId(deviceId);
String deviceName = getDeviceName(deviceId);
return ResponseDTO.ok().addAttribute("init",qrCodeService.initEnter(venueId,deviceName));
}
private Integer getVenueId(String deviceId){
String venueId = "0";
if (deviceId!=null && deviceId.contains(Constant.SPIT_WORD)){
venueId = deviceId.split(Constant.SPIT_WORD)[1];
}
try {
return Integer.parseInt(venueId);
}catch (Exception e){
return 0;
}
}
private String getDeviceName(String deviceId){
if (deviceId!=null){
return deviceId.split(Constant.SPIT_WORD)[0];
}
return null;
}
}

View File

@@ -1,148 +0,0 @@
package com.sv.netty.dto;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 会员基本信息
* MemberDto.java
*
* @author peakren
* @date 2018/12/20 8:39 PM
*/
public class MemberDto implements Serializable {
/**
* 头像
*/
private String avatar;
/**
* 姓名
*/
private String name;
/**
* 手机号码
*/
private String mobile;
/**
* 余额
*/
private BigDecimal amount;
/**
* 是否第一次进入
*/
private boolean first = false;
/**
* 场地价格
*/
private BigDecimal placePrice;
/**
* 场地名称
*/
private String placeName;
/**
* 会员卡名称
*/
private String cardName;
private String message;
/**
* 1成功进场 0不允许进场
*/
private int code;
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public BigDecimal getAmount() {
return amount;
}
public void setAmount(BigDecimal amount) {
this.amount = amount;
}
public String getPlaceName() {
return placeName;
}
public void setPlaceName(String placeName) {
this.placeName = placeName;
}
public String getCardName() {
return cardName;
}
public void setCardName(String cardName) {
this.cardName = cardName;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public BigDecimal getPlacePrice() {
return placePrice;
}
public void setPlacePrice(BigDecimal placePrice) {
this.placePrice = placePrice;
}
public boolean isFirst() {
return first;
}
public void setFirst(boolean first) {
this.first = first;
}
}

View File

@@ -1,60 +0,0 @@
package com.sv.netty.dto;
import org.springframework.util.Assert;
import java.util.LinkedHashMap;
public class ResponseDTO extends LinkedHashMap<String, Object> {
public static final String ERR_CODE = "err_code";
public static final String ERR_MSG = "err_msg";
public static final String TIMESTAMP = "timestamp";
private static final long serialVersionUID = 8410965932046471023L;
public ResponseDTO() {
this(0, "OK");
}
public ResponseDTO(Integer errCode, String errMsg) {
this(errCode, errMsg, System.currentTimeMillis() / 1000L);
}
public ResponseDTO(Integer errCode, String errMsg, Long timestamp) {
this.addAttribute("err_code", errCode);
this.addAttribute("err_msg", errMsg);
this.addAttribute("timestamp", timestamp);
}
public ResponseDTO(Integer errCode, String errMsg, String attrName, Object attrValue) {
this(errCode, errMsg);
this.addAttribute(attrName, attrValue);
}
public static ResponseDTO ok() {
return new ResponseDTO();
}
public static ResponseDTO ok(String msg) {
ResponseDTO ret = ok();
ret.setErrorMsg(msg);
return ret;
}
public ResponseDTO addAttribute(String attrName, Object attrValue) {
Assert.notNull(attrName, "属性名称不能为空");
this.put(attrName, attrValue);
return this;
}
public void setErrorCode(Integer errCode) {
this.addAttribute("err_code", errCode);
}
public void setErrorMsg(String errMsg) {
this.addAttribute("err_msg", errMsg);
}
}

View File

@@ -7,7 +7,6 @@ import com.sv.entity.MemberEnterVenueLog;
import com.sv.entity.Venue;
import com.sv.entity.face.FaceRecognizeResponse;
import com.sv.netty.config.ClientChannelCache;
import com.sv.netty.dto.MemberDto;
import com.sv.netty.netty.message.HeartBeat;
import com.sv.netty.netty.message.Result;
import com.sv.netty.netty.service.MessageService;
@@ -29,8 +28,6 @@ import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/**
@@ -66,7 +63,7 @@ public class TcpMessageHandlerAdapter implements MessageService {
@Resource
private RestTemplate restTemplate;
public void sendMessage(MemberDto memberDto, Integer deviceId) {
// public void sendMessage(MemberDto memberDto, Integer deviceId) {
// MessageDto messageDto = new MessageDto();
// messageDto.setCmdId(Cmd.FACEID.id);
// messageDto.setResult(memberDto);
@@ -78,7 +75,7 @@ public class TcpMessageHandlerAdapter implements MessageService {
// } else {
// out.writeAndFlush(messageDto);
// }
}
// }
/**
* 处理心跳信息,存储心跳信息
@@ -162,27 +159,27 @@ public class TcpMessageHandlerAdapter implements MessageService {
}
}
}
MemberDto memberMessageDto = new MemberDto();
memberMessageDto.setName(member.getNickname());
memberMessageDto.setAvatar(member.getAvatar());
memberMessageDto.setMobile(member.getMobile());
memberMessageDto.setPlaceName("");
member = memberService.findByFaceId(response.getPerson().getId());
memberMessageDto.setAmount(member.getMoney());
// MemberDto memberMessageDto = new MemberDto();
// memberMessageDto.setName(member.getNickname());
// memberMessageDto.setAvatar(member.getAvatar());
// memberMessageDto.setMobile(member.getMobile());
//
// memberMessageDto.setPlaceName("");
// member = memberService.findByFaceId(response.getPerson().getId());
// memberMessageDto.setAmount(member.getMoney());
if (code > 0) {
EnterResult result = venueService.enterVenue(response.getPerson().getId(), device.getId());
if (result.getStatus() >= 0) {
memberMessageDto.setCode(1);
// memberMessageDto.setCode(1);
if (result.getStatus() == 1) {
memberMessageDto.setCardName("会员卡");
// memberMessageDto.setCardName("会员卡");
}
if (result.getStatus() == 2) {
memberMessageDto.setPlacePrice(result.getMoney());
memberMessageDto.setFirst(true);
logger.info(member.getId() + "入场成功:" + member.getMoney().toString());
member = memberService.findByFaceId(response.getPerson().getId());
memberMessageDto.setAmount(member.getMoney());
// memberMessageDto.setPlacePrice(result.getMoney());
// memberMessageDto.setFirst(true);
// logger.info(member.getId() + "入场成功:" + member.getMoney().toString());
// member = memberService.findByFaceId(response.getPerson().getId());
// memberMessageDto.setAmount(member.getMoney());
//5秒后开门
// scheduledExecutorService.schedule(new Runnable() {
// @Override
@@ -202,22 +199,23 @@ public class TcpMessageHandlerAdapter implements MessageService {
logger.info(member.getId() + "入场成功:" + member.getMoney().toString());
}
memberMessageDto.setMessage("门禁已开,请入门");
// memberMessageDto.setMessage("门禁已开,请入门");
venueService.addNumber(venue.getId(), 1, member.getId());
venue = venueService.findById(venue.getId());
sendNumberChange(venue.getNumber());
} else {
logger.info(member.getId() + "入场失败:" + member.getMoney().toString());
memberMessageDto.setCode(-1);
memberMessageDto.setMessage(member.getName() + "您好,您的余额不足,请扫描门禁上张贴的小程序二维码充值");
// memberMessageDto.setCode(-1);
// memberMessageDto.setMessage(member.getName() + "您好,您的余额不足,请扫描门禁上张贴的小程序二维码充值");
}
} else {
logger.info(member.getId() + "入场失败:连续入场");
memberMessageDto.setCode(0);
// memberMessageDto.setCode(0);
Config config = configService.findById(1);
memberMessageDto.setMessage("无出门记录连续入场,请" + config.getValue() + "分钟之后再试");
// memberMessageDto.setMessage("无出门记录连续入场,请" + config.getValue() + "分钟之后再试");
}
sendMessage(memberMessageDto, device.getId());
// TODO 校验完,就可以进场了
// sendMessage(memberMessageDto, device.getId());
}
} catch (Exception e) {
@@ -238,19 +236,20 @@ public class TcpMessageHandlerAdapter implements MessageService {
memberEnterVenueLog.setPlatformId(member.getPlatformId());
memberEnterVenueLogService.save(memberEnterVenueLog);
logger.info("用户" + member.getNickname() + "出场");
MemberDto memberMessageDto = new MemberDto();
memberMessageDto.setAmount(member.getMoney());
memberMessageDto.setName(member.getNickname());
memberMessageDto.setAvatar(member.getAvatar());
memberMessageDto.setMobile(member.getMobile());
memberMessageDto.setPlaceName("");
memberMessageDto.setMessage("欢迎下次再来" + venue.getName());
memberMessageDto.setCode(2);
// MemberDto memberMessageDto = new MemberDto();
// memberMessageDto.setAmount(member.getMoney());
// memberMessageDto.setName(member.getNickname());
// memberMessageDto.setAvatar(member.getAvatar());
// memberMessageDto.setMobile(member.getMobile());
// memberMessageDto.setPlaceName("");
// memberMessageDto.setMessage("欢迎下次再来" + venue.getName());
// memberMessageDto.setCode(2);
// MessageDto messageDto = new MessageDto();
// messageDto.setCmdId(Cmd.OPEN_DOOR.id);
// messageDto.setDoor(2);
// sendOpenMessage(messageDto, device.getId());
sendMessage(memberMessageDto, device.getId());
// 校验玩就可以出场了
// sendMessage(memberMessageDto, device.getId());
venueService.addNumber(venue.getId(), -1, member.getId());
venue = venueService.findById(venue.getId());
sendNumberChange(venue.getNumber());

View File

@@ -51,5 +51,9 @@ public class ExceptionCodeTemplate {
public static final ExceptionCode VENUE_ERROR = ExceptionCode.init(30023, "场馆暂未开放");
public static final ExceptionCode DEVICE_ERROR = ExceptionCode.init(30024, "未找到该设备");
}

View File

@@ -3,6 +3,7 @@ package com.sv.service.api;
import com.sv.entity.Venue;
import com.sv.mapper.DeviceMapper;
import com.sv.mapper.VenueMapper;
import com.ydd.framework.core.exception.ServiceException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
@@ -23,28 +24,16 @@ public class QRCodeService {
@Resource
private DeviceMapper deviceMapper;
public void enter(String deviceId) {
public void enter(Integer venueId,String deviceName) {
}
public Venue initEnter(String deviceId) {
String deviceName = getDeviceName(deviceId);
String venueId = getVenueId(deviceId);
int i = Integer.parseInt(venueId);
Integer integer = deviceMapper.checkDevice(deviceName, i);
public Venue initEnter(Integer venueId,String deviceName) {
Integer integer = deviceMapper.checkDevice(deviceName, venueId);
if (integer != 1){
logger.error("设备【"+deviceId + "】未链接,活着不存在");
return null;
throw new ServiceException(com.sv.exception.api.ExceptionCodeTemplate.DEVICE_ERROR);
}
return venueMapper.findById(i);
return venueMapper.findById(venueId);
}
private String getVenueId(String deviceId){
return deviceId.split("$-$")[1];
}
private String getDeviceName(String deviceId){
return deviceId.split("$-$")[0];
}
}

View File

@@ -239,7 +239,7 @@
<select id="checkDevice" resultType="java.lang.Integer">
SELECT count(1) FROM sv_device
WHERE name = #{deviceName} and venue_id=#{venueId} and deleted = 0
WHERE 1=1 AND name = #{deviceName} and venue_id=#{venueId} and deleted = 0
</select>
</mapper>