netty-netty与api进行合并,这样可以方便我们进行之后的人脸切换到二维码的操作
This commit is contained in:
@@ -1,22 +1,25 @@
|
|||||||
|
buildscript {
|
||||||
|
ext {
|
||||||
|
springBootVersion = '1.5.6.RELEASE'
|
||||||
|
}
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
url 'http://maven.aliyun.com/nexus/content/groups/public/'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
group 'SmartVenue'
|
group 'SmartVenue'
|
||||||
version '1.0.0'
|
version '2.0.0'
|
||||||
|
|
||||||
apply plugin: 'java'
|
apply plugin: 'java'
|
||||||
apply plugin: 'org.springframework.boot'
|
apply plugin: 'org.springframework.boot'
|
||||||
|
|
||||||
sourceCompatibility = 1.8
|
sourceCompatibility = 1.8
|
||||||
|
|
||||||
buildscript {
|
|
||||||
repositories {
|
|
||||||
//mavenCentral()
|
|
||||||
maven {
|
|
||||||
url 'http://maven.aliyun.com/nexus/content/groups/public/'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
dependencies {
|
|
||||||
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.4.RELEASE")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
repositories {
|
repositories {
|
||||||
//mavenCentral()
|
//mavenCentral()
|
||||||
maven {
|
maven {
|
||||||
@@ -27,11 +30,14 @@ repositories {
|
|||||||
jar {
|
jar {
|
||||||
baseName = 'sv-api'
|
baseName = 'sv-api'
|
||||||
}
|
}
|
||||||
|
ext {
|
||||||
|
nettyVersion = '4.1.10.Final'
|
||||||
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
testCompile group: 'junit', name: 'junit', version: '4.12'
|
testCompile group: 'junit', name: 'junit', version: '4.12'
|
||||||
compile fileTree(include: '*.jar', dir: 'src/libs')
|
compile fileTree(include: '*.jar', dir: 'src/libs')
|
||||||
compile project(':service')
|
compile project(':service')
|
||||||
|
compile "io.netty:netty-all:${nettyVersion}"
|
||||||
compile 'mysql:mysql-connector-java:6.0.6'
|
compile 'mysql:mysql-connector-java:6.0.6'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
package com;
|
|
||||||
|
|
||||||
import org.mybatis.spring.annotation.MapperScan;
|
|
||||||
import org.springframework.boot.SpringApplication;
|
|
||||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|
||||||
import org.springframework.scheduling.annotation.EnableAsync;
|
|
||||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 项目入口
|
|
||||||
*
|
|
||||||
* @author xingkong1221
|
|
||||||
* @since 2017-06-19
|
|
||||||
*/
|
|
||||||
@SpringBootApplication
|
|
||||||
@EnableScheduling
|
|
||||||
@EnableAsync
|
|
||||||
@MapperScan(value = {"com.sv.mapper"})
|
|
||||||
public class Application {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 启动项目
|
|
||||||
*
|
|
||||||
* @param args 启动参数
|
|
||||||
*/
|
|
||||||
public static void main(String[] args) {
|
|
||||||
SpringApplication.run(Application.class, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
65
api/src/main/java/com/NettyWeiXinApplication.java
Normal file
65
api/src/main/java/com/NettyWeiXinApplication.java
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
package com;
|
||||||
|
|
||||||
|
import com.sv.netty.config.SpringContextHolder;
|
||||||
|
import com.sv.netty.netty.BootService;
|
||||||
|
import org.mybatis.spring.annotation.MapperScan;
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
|
import org.springframework.scheduling.annotation.EnableAsync;
|
||||||
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目入口
|
||||||
|
*/
|
||||||
|
@SpringBootApplication
|
||||||
|
@EnableScheduling
|
||||||
|
@EnableAsync
|
||||||
|
@MapperScan(value = {"com.sv.mapper"})
|
||||||
|
public class NettyWeiXinApplication {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 启动项目
|
||||||
|
*
|
||||||
|
* @param args 启动参数
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// SpringApplication.run(NettyWeiXinApplication.class, args);
|
||||||
|
ConfigurableApplicationContext context = SpringApplication.run(NettyWeiXinApplication.class, args);
|
||||||
|
SpringContextHolder.setContext(context);
|
||||||
|
//启动netty
|
||||||
|
BootService bootService = (BootService) context.getBean("bootService");
|
||||||
|
bootService.run();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目可能又使用计划任务的
|
||||||
|
*/
|
||||||
|
// private int corePoolSize = 5;//线程池维护线程的最少数量
|
||||||
|
//
|
||||||
|
// private int maxPoolSize = 15;//线程池维护线程的最大数量
|
||||||
|
//
|
||||||
|
// private int queueCapacity = 5; //缓存队列
|
||||||
|
//
|
||||||
|
// private int keepAlive = 60;//允许的空闲时间
|
||||||
|
// @Bean("scheduledExecutorService")
|
||||||
|
// public ScheduledExecutorService initScheduledExecutorService() {
|
||||||
|
// ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(400,
|
||||||
|
// new BasicThreadFactory.Builder().namingPattern("example-schedule-pool-%d").daemon(true).build());
|
||||||
|
// return executorService;
|
||||||
|
// }
|
||||||
|
// @Bean
|
||||||
|
// public Executor executor() {
|
||||||
|
// ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
|
||||||
|
// executor.setCorePoolSize(corePoolSize);
|
||||||
|
// executor.setMaxPoolSize(maxPoolSize);
|
||||||
|
// executor.setQueueCapacity(queueCapacity);
|
||||||
|
// executor.setThreadNamePrefix("mqExecutor-");
|
||||||
|
// executor.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardOldestPolicy());
|
||||||
|
// executor.setKeepAliveSeconds(keepAlive);
|
||||||
|
// executor.initialize();
|
||||||
|
// return executor;
|
||||||
|
// }
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
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));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -33,17 +33,21 @@ public class MemberCardUpdate {
|
|||||||
public void execute(){
|
public void execute(){
|
||||||
// 查询用户已过期的会员卡
|
// 查询用户已过期的会员卡
|
||||||
List<MemberCard> cards = memberCardService.findAllCard();
|
List<MemberCard> cards = memberCardService.findAllCard();
|
||||||
// 查询出用户顺延的会员卡,正好是今日
|
if (cards != null && cards.size() > 0){
|
||||||
List<MemberCard> memberCards = memberCardService.findAllMemberCard(cards);
|
//修改过期的会员卡为未激活
|
||||||
|
memberCardService.updateStatus(cards,0);
|
||||||
//修改过期的会员卡为未激活
|
// 查询出用户顺延的会员卡,正好是今日
|
||||||
memberCardService.updateStatus(cards,0);
|
List<MemberCard> memberCards = memberCardService.findAllMemberCard(cards);
|
||||||
|
//修改用户默认会员卡
|
||||||
//修改用户默认会员卡
|
if (memberCards!= null && memberCards.size() > 0){
|
||||||
for (MemberCard memberCard : memberCards){
|
for (MemberCard memberCard : memberCards){
|
||||||
MemberCard lists = memberCardService.findMemberCardByVenue(memberCard.getMemberId(),memberCard.getVenueId(),memberCard.getVeneuType());
|
MemberCard mem = memberCardService.findMemberCardByVenue(memberCard.getMemberId(),memberCard.getVenueId(),memberCard.getVeneuType());
|
||||||
lists.setStatus(1);
|
if (mem != null){
|
||||||
memberCardService.update(lists);
|
mem.setStatus(1);
|
||||||
|
memberCardService.update(mem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,8 +56,8 @@ public class TcpMessageHandlerAdapter implements MessageService {
|
|||||||
@Resource
|
@Resource
|
||||||
private ConfigService configService;
|
private ConfigService configService;
|
||||||
|
|
||||||
@Resource(name = "scheduledExecutorService")
|
// @Resource(name = "scheduledExecutorService")
|
||||||
private ScheduledExecutorService scheduledExecutorService;
|
// private ScheduledExecutorService scheduledExecutorService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private MemberEnterVenueLogService memberEnterVenueLogService;
|
private MemberEnterVenueLogService memberEnterVenueLogService;
|
||||||
@@ -184,15 +184,15 @@ public class TcpMessageHandlerAdapter implements MessageService {
|
|||||||
member = memberService.findByFaceId(response.getPerson().getId());
|
member = memberService.findByFaceId(response.getPerson().getId());
|
||||||
memberMessageDto.setAmount(member.getMoney());
|
memberMessageDto.setAmount(member.getMoney());
|
||||||
//5秒后开门
|
//5秒后开门
|
||||||
scheduledExecutorService.schedule(new Runnable() {
|
// scheduledExecutorService.schedule(new Runnable() {
|
||||||
@Override
|
// @Override
|
||||||
public void run() {
|
// public void run() {
|
||||||
// MessageDto messageDto = new MessageDto();
|
//// MessageDto messageDto = new MessageDto();
|
||||||
// messageDto.setCmdId(Cmd.OPEN_DOOR.id);
|
//// messageDto.setCmdId(Cmd.OPEN_DOOR.id);
|
||||||
// messageDto.setDoor(1);
|
//// messageDto.setDoor(1);
|
||||||
// sendOpenMessage(messageDto, 1);
|
//// sendOpenMessage(messageDto, 1);
|
||||||
}
|
// }
|
||||||
}, 5, TimeUnit.SECONDS);
|
// }, 5, TimeUnit.SECONDS);
|
||||||
} else {
|
} else {
|
||||||
//开门
|
//开门
|
||||||
// MessageDto messageDto = new MessageDto();
|
// MessageDto messageDto = new MessageDto();
|
||||||
@@ -73,6 +73,7 @@ mybatis:
|
|||||||
mapper-locations: classpath:mybatis/mapper/*/*.xml
|
mapper-locations: classpath:mybatis/mapper/*/*.xml
|
||||||
|
|
||||||
face:
|
face:
|
||||||
|
# url: 192.168.1.111
|
||||||
url: 23r3o72310.iask.in
|
url: 23r3o72310.iask.in
|
||||||
account: test@test.com
|
account: test@test.com
|
||||||
pwd: 123456
|
pwd: 123456
|
||||||
@@ -81,4 +82,20 @@ logging:
|
|||||||
level:
|
level:
|
||||||
com:
|
com:
|
||||||
sv:
|
sv:
|
||||||
mapper: DEBUG
|
mapper: DEBUG
|
||||||
|
|
||||||
|
|
||||||
|
#netty服务器配置
|
||||||
|
netty:
|
||||||
|
port: 56792
|
||||||
|
boss:
|
||||||
|
thread:
|
||||||
|
count: 1
|
||||||
|
worker:
|
||||||
|
thread:
|
||||||
|
count: 2
|
||||||
|
so:
|
||||||
|
keepalive: true
|
||||||
|
backlog: 128
|
||||||
|
reuseaddr: true
|
||||||
|
tcp_nodelay: true
|
||||||
@@ -37,6 +37,22 @@
|
|||||||
</encoder>
|
</encoder>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
|
<appender name="CONNECTION_APPENDER"
|
||||||
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${LOG_HOME}/connection.log</file>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>${LOG_HOME}/connection-%d{yyyy-MM-dd}.log
|
||||||
|
</fileNamePattern>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<logger name="com.sv.netty.netty" additivity="false" >
|
||||||
|
<appender-ref ref="CONNECTION_APPENDER"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
<!-- root -->
|
<!-- root -->
|
||||||
<root level="info">
|
<root level="info">
|
||||||
<appender-ref ref="STDOUT" />
|
<appender-ref ref="STDOUT" />
|
||||||
|
|||||||
@@ -1,80 +0,0 @@
|
|||||||
package com;
|
|
||||||
|
|
||||||
import com.sv.entity.Member;
|
|
||||||
import com.sv.entity.MemberFaceInfo;
|
|
||||||
import com.sv.mapper.MemberMapper;
|
|
||||||
import com.sv.service.api.MemberService;
|
|
||||||
import com.sv.service.common.FaceService;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
|
|
||||||
import org.springframework.core.env.MutablePropertySources;
|
|
||||||
import org.springframework.test.context.TestPropertySource;
|
|
||||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
@RunWith(SpringJUnit4ClassRunner.class)
|
|
||||||
@SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.NONE)
|
|
||||||
public class FaceServiceTest {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private FaceService faceService;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private MemberService memberService;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private MemberMapper memberMapper;
|
|
||||||
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void test(){
|
|
||||||
try {
|
|
||||||
faceService.login();
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void addFace() {
|
|
||||||
try {
|
|
||||||
faceService.login();
|
|
||||||
faceService.show("7","","");
|
|
||||||
faceService.show2();
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void addMember() throws IOException {
|
|
||||||
String faceUrl = "faceUrl";
|
|
||||||
faceService.login();
|
|
||||||
Member member = memberService.findById(521);
|
|
||||||
Integer memberId = member.getId();
|
|
||||||
Integer subjectId = faceService.addSubject(130,member);
|
|
||||||
MemberFaceInfo memberFaceInfo = memberMapper.findMemberFaceInfo(memberId);
|
|
||||||
if (memberFaceInfo == null) {
|
|
||||||
memberFaceInfo = new MemberFaceInfo();
|
|
||||||
memberFaceInfo.setMemberId(memberId);
|
|
||||||
memberFaceInfo.setPlatformId(1);
|
|
||||||
}
|
|
||||||
memberFaceInfo.setFaceId(subjectId);
|
|
||||||
memberFaceInfo.setFaceUrl(faceUrl);
|
|
||||||
memberFaceInfo.setModifiedTime(new Date());
|
|
||||||
if (memberFaceInfo.getId() == null) {
|
|
||||||
memberMapper.insertMemberFaceInfo(memberFaceInfo);
|
|
||||||
} else {
|
|
||||||
memberMapper.updateMemberFaceInfo(memberFaceInfo);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -32,7 +32,7 @@ public class ClientThread extends Thread{
|
|||||||
if (instance == null) {
|
if (instance == null) {
|
||||||
synchronized (ClientThread.class) {
|
synchronized (ClientThread.class) {
|
||||||
if (instance == null) {
|
if (instance == null) {
|
||||||
instance = new ClientThread("127.0.0.1", 56791);
|
instance = new ClientThread("127.0.0.1", 56792);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
buildscript {
|
|
||||||
ext {
|
|
||||||
springBootVersion = '1.5.6.RELEASE'
|
|
||||||
}
|
|
||||||
repositories {
|
|
||||||
maven {
|
|
||||||
url 'http://maven.aliyun.com/nexus/content/groups/public/'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
dependencies {
|
|
||||||
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
apply plugin: 'java'
|
|
||||||
apply plugin: 'org.springframework.boot'
|
|
||||||
|
|
||||||
group 'SmartVenue'
|
|
||||||
version '2.0.0'
|
|
||||||
|
|
||||||
sourceCompatibility = 1.8
|
|
||||||
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
// maven {url 'http://maven.ydd100.cn/repository/maven-public/'}
|
|
||||||
//mavenCentral()
|
|
||||||
maven {
|
|
||||||
url 'http://maven.aliyun.com/nexus/content/groups/public/'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ext {
|
|
||||||
version = '1.0'
|
|
||||||
springBootVersion = '1.5.4.RELEASE'
|
|
||||||
nettyVersion = '4.1.10.Final'
|
|
||||||
junitVersion = "4.11"
|
|
||||||
jacksonVersion = "2.5.0"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
[compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
compile fileTree(include: '*.jar', dir: 'src/libs')
|
|
||||||
compile project(':service')
|
|
||||||
|
|
||||||
compile "io.netty:netty-all:${nettyVersion}"
|
|
||||||
compile 'mysql:mysql-connector-java:6.0.6'
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,73 +0,0 @@
|
|||||||
package com;
|
|
||||||
|
|
||||||
import com.sv.netty.config.SpringContextHolder;
|
|
||||||
import com.sv.netty.netty.BootService;
|
|
||||||
import org.apache.commons.lang3.concurrent.BasicThreadFactory;
|
|
||||||
import org.mybatis.spring.annotation.MapperScan;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.boot.SpringApplication;
|
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|
||||||
import org.springframework.context.ConfigurableApplicationContext;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.ComponentScan;
|
|
||||||
import org.springframework.scheduling.annotation.EnableAsync;
|
|
||||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
|
||||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
|
||||||
|
|
||||||
import java.util.concurrent.Executor;
|
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
|
||||||
import java.util.concurrent.ScheduledThreadPoolExecutor;
|
|
||||||
import java.util.concurrent.ThreadPoolExecutor;
|
|
||||||
|
|
||||||
@SpringBootApplication
|
|
||||||
@EnableScheduling
|
|
||||||
@EnableAsync
|
|
||||||
@MapperScan(value = {"com.sv.mapper"})
|
|
||||||
public class NettyApplication {
|
|
||||||
|
|
||||||
private static Logger logger = LoggerFactory.getLogger(NettyApplication.class);
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
logger.debug("应用启动成功...");
|
|
||||||
ConfigurableApplicationContext context = SpringApplication.run(NettyApplication.class, args);
|
|
||||||
SpringContextHolder.setContext(context);
|
|
||||||
//启动netty
|
|
||||||
BootService bootService = (BootService) context.getBean("bootService");
|
|
||||||
bootService.run();
|
|
||||||
|
|
||||||
//启动任务队列,处理
|
|
||||||
// QueueTaskQueueDaemonThread queueTaskQueueDaemonThread = (QueueTaskQueueDaemonThread) context.getBean("queueTaskQueueDaemonThread");
|
|
||||||
// queueTaskQueueDaemonThread.init();
|
|
||||||
}
|
|
||||||
|
|
||||||
private int corePoolSize = 5;//线程池维护线程的最少数量
|
|
||||||
|
|
||||||
private int maxPoolSize = 15;//线程池维护线程的最大数量
|
|
||||||
|
|
||||||
private int queueCapacity = 5; //缓存队列
|
|
||||||
|
|
||||||
private int keepAlive = 60;//允许的空闲时间
|
|
||||||
|
|
||||||
|
|
||||||
@Bean("scheduledExecutorService")
|
|
||||||
public ScheduledExecutorService initScheduledExecutorService() {
|
|
||||||
ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(400,
|
|
||||||
new BasicThreadFactory.Builder().namingPattern("example-schedule-pool-%d").daemon(true).build());
|
|
||||||
return executorService;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public Executor executor() {
|
|
||||||
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
|
|
||||||
executor.setCorePoolSize(corePoolSize);
|
|
||||||
executor.setMaxPoolSize(maxPoolSize);
|
|
||||||
executor.setQueueCapacity(queueCapacity);
|
|
||||||
executor.setThreadNamePrefix("mqExecutor-");
|
|
||||||
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardOldestPolicy());
|
|
||||||
executor.setKeepAliveSeconds(keepAlive);
|
|
||||||
executor.initialize();
|
|
||||||
return executor;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
spring:
|
|
||||||
datasource:
|
|
||||||
url: jdbc:mysql://127.0.01:3306/smart_venue?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8&useAffectedRows=true&useSSL=false
|
|
||||||
username: root
|
|
||||||
password: 123456
|
|
||||||
|
|
||||||
jpa:
|
|
||||||
show-sql: true
|
|
||||||
|
|
||||||
oss:
|
|
||||||
accessKeyId: LTAIlbtS4W2Xe4OV
|
|
||||||
accessKeySecret: qWMYkSfmXFtRoIv9q9OCbszcF9U7dX
|
|
||||||
protocol: http
|
|
||||||
name: smartvenue
|
|
||||||
endPoint: http://oss-cn-beijing.aliyuncs.com
|
|
||||||
url: https://smartvenue.oss-cn-beijing.aliyuncs.com/
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
spring:
|
|
||||||
datasource:
|
|
||||||
url: jdbc:mysql://127.0.0.1:3306/smart_venue?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8&useAffectedRows=true
|
|
||||||
username: root
|
|
||||||
password: hyty1234
|
|
||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
|
||||||
|
|
||||||
jpa:
|
|
||||||
show-sql: true
|
|
||||||
|
|
||||||
oss:
|
|
||||||
accessKeyId: LTAIlbtS4W2Xe4OV
|
|
||||||
accessKeySecret: qWMYkSfmXFtRoIv9q9OCbszcF9U7dX
|
|
||||||
protocol: http
|
|
||||||
name: smartvenue
|
|
||||||
endPoint: http://oss-cn-beijing.aliyuncs.com
|
|
||||||
url: https://smartvenue.oss-cn-beijing.aliyuncs.com/
|
|
||||||
@@ -1,100 +0,0 @@
|
|||||||
server:
|
|
||||||
port: 8022
|
|
||||||
context-path: /netty
|
|
||||||
tomcat:
|
|
||||||
uri-encoding: utf-8
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
spring:
|
|
||||||
profiles:
|
|
||||||
include:
|
|
||||||
-dev
|
|
||||||
-prod
|
|
||||||
active: dev
|
|
||||||
|
|
||||||
|
|
||||||
# 数据库连接池配置
|
|
||||||
druid:
|
|
||||||
filters: stat
|
|
||||||
initialSize: 1
|
|
||||||
minIdle: 1
|
|
||||||
maxActive: 40
|
|
||||||
maxWait: 600000
|
|
||||||
timeBetweenEvictionRunsMillis: 60000
|
|
||||||
minEvictableIdleTimeMillis: 300000
|
|
||||||
validationQuery: SELECT 'x'
|
|
||||||
testWhileIdle: true
|
|
||||||
testOnBorrow: false
|
|
||||||
testOnReturn: false
|
|
||||||
poolPreparedStatements: true
|
|
||||||
maxPoolPreparedStatementPerConnectionSize: 20
|
|
||||||
WebStatFilter:
|
|
||||||
enabled: false
|
|
||||||
urlPattern:
|
|
||||||
exclusions:
|
|
||||||
sessionStatMaxCount:
|
|
||||||
sessionStatEnable:
|
|
||||||
principalSessionName:
|
|
||||||
principalCookieName:
|
|
||||||
profileEnable:
|
|
||||||
StatViewServlet:
|
|
||||||
enabled: true
|
|
||||||
urlPattern: /druid/*
|
|
||||||
resetEnable: true
|
|
||||||
loginUsername: druid
|
|
||||||
loginPassword: druid
|
|
||||||
allow:
|
|
||||||
deny:
|
|
||||||
aop:
|
|
||||||
auto: true
|
|
||||||
http:
|
|
||||||
encoding:
|
|
||||||
force: true
|
|
||||||
charset: utf-8
|
|
||||||
enabled: true
|
|
||||||
|
|
||||||
jackson:
|
|
||||||
date-format: yyyy-MM-dd HH:mm:ss
|
|
||||||
property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES
|
|
||||||
|
|
||||||
redis:
|
|
||||||
pool:
|
|
||||||
max-active: 1000
|
|
||||||
max-wait: -1
|
|
||||||
max-idle: 8
|
|
||||||
min-idle: 8
|
|
||||||
timeout: 60000
|
|
||||||
|
|
||||||
# MyBatis Configuration
|
|
||||||
mybatis:
|
|
||||||
type-aliases-package: com.ydd.oms.entity
|
|
||||||
config-location: classpath:mybatis/mybatis-config.xml
|
|
||||||
mapper-locations: classpath:mybatis/mapper/*/*.xml
|
|
||||||
|
|
||||||
|
|
||||||
face:
|
|
||||||
url: 192.168.1.111
|
|
||||||
account: test@test.com
|
|
||||||
pwd: 123456
|
|
||||||
|
|
||||||
#netty服务器配置
|
|
||||||
netty:
|
|
||||||
port: 56791
|
|
||||||
boss:
|
|
||||||
thread:
|
|
||||||
count: 1
|
|
||||||
worker:
|
|
||||||
thread:
|
|
||||||
count: 2
|
|
||||||
so:
|
|
||||||
keepalive: true
|
|
||||||
backlog: 128
|
|
||||||
reuseaddr: true
|
|
||||||
tcp_nodelay: true
|
|
||||||
|
|
||||||
logging:
|
|
||||||
level:
|
|
||||||
com:
|
|
||||||
sv:
|
|
||||||
mapper: DEBUG
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF8"?>
|
|
||||||
<configuration>
|
|
||||||
<jmxConfigurator />
|
|
||||||
<property name="LOG_HOME" value="/home/log/netty"/>
|
|
||||||
|
|
||||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
|
||||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
|
||||||
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
|
|
||||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<appender name="COMMON-DEFAULT"
|
|
||||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
||||||
<file>${LOG_HOME}/common-default.log</file>
|
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
|
||||||
<fileNamePattern>${LOG_HOME}/common-default-%d{yyyy-MM-dd}.log
|
|
||||||
</fileNamePattern>
|
|
||||||
</rollingPolicy>
|
|
||||||
<encoder>
|
|
||||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<appender name="COMMON-ERROR"
|
|
||||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
||||||
<file>${LOG_HOME}/common-error.log</file>
|
|
||||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
|
||||||
<level>ERROR</level>
|
|
||||||
</filter>
|
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
|
||||||
<fileNamePattern>${LOG_HOME}/common-error-%d{yyyy-MM-dd}.log
|
|
||||||
</fileNamePattern>
|
|
||||||
</rollingPolicy>
|
|
||||||
<encoder>
|
|
||||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<appender name="CONNECTION_APPENDER"
|
|
||||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
||||||
<file>${LOG_HOME}/connection.log</file>
|
|
||||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
|
||||||
<level>ERROR</level>
|
|
||||||
</filter>
|
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
|
||||||
<fileNamePattern>${LOG_HOME}/connection-%d{yyyy-MM-dd}.log
|
|
||||||
</fileNamePattern>
|
|
||||||
</rollingPolicy>
|
|
||||||
<encoder>
|
|
||||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<logger name="com.sv.netty.netty" level="INFO" additivity="true" >
|
|
||||||
<appender-ref ref="CONNECTION_APPENDER"/>
|
|
||||||
</logger>
|
|
||||||
|
|
||||||
<!-- root -->
|
|
||||||
<root level="info">
|
|
||||||
<appender-ref ref="STDOUT" />
|
|
||||||
<appender-ref ref="COMMON-DEFAULT" />
|
|
||||||
<appender-ref ref="COMMON-ERROR" />
|
|
||||||
</root>
|
|
||||||
</configuration>
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
<!DOCTYPE configuration
|
|
||||||
PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
|
|
||||||
|
|
||||||
|
|
||||||
<configuration>
|
|
||||||
<settings>
|
|
||||||
<setting name="cacheEnabled" value="true" />
|
|
||||||
<!-- 打印sql日志 -->
|
|
||||||
<setting name="logImpl" value="SLF4J" />
|
|
||||||
</settings>
|
|
||||||
<!--<settings>-->
|
|
||||||
<!--<setting name="cacheEnabled" value="true"/>-->
|
|
||||||
<!--<setting name="lazyLoadingEnabled" value="true"/>-->
|
|
||||||
<!--<setting name="multipleResultSetsEnabled" value="true"/>-->
|
|
||||||
<!--<setting name="useColumnLabel" value="true"/>-->
|
|
||||||
<!--<setting name="useGeneratedKeys" value="false"/>-->
|
|
||||||
<!--<setting name="autoMappingBehavior" value="PARTIAL"/>-->
|
|
||||||
<!--<setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>-->
|
|
||||||
<!--<setting name="defaultExecutorType" value="SIMPLE"/>-->
|
|
||||||
<!--<setting name="defaultStatementTimeout" value="25"/>-->
|
|
||||||
<!--<setting name="defaultFetchSize" value="100"/>-->
|
|
||||||
<!--<setting name="safeRowBoundsEnabled" value="false"/>-->
|
|
||||||
<!--<setting name="mapUnderscoreToCamelCase" value="false"/>-->
|
|
||||||
<!--<setting name="localCacheScope" value="SESSION"/>-->
|
|
||||||
<!--<setting name="jdbcTypeForNull" value="OTHER"/>-->
|
|
||||||
<!--<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>-->
|
|
||||||
<!--</settings>-->
|
|
||||||
|
|
||||||
<typeAliases>
|
|
||||||
<typeAlias alias="Integer" type="java.lang.Integer" />
|
|
||||||
<typeAlias alias="Byte" type="java.lang.Byte"/>
|
|
||||||
<typeAlias alias="String" type="java.lang.String" />
|
|
||||||
<typeAlias alias="Long" type="java.lang.Long" />
|
|
||||||
<typeAlias alias="HashMap" type="java.util.HashMap" />
|
|
||||||
<typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" />
|
|
||||||
<typeAlias alias="ArrayList" type="java.util.ArrayList" />
|
|
||||||
<typeAlias alias="LinkedList" type="java.util.LinkedList" />
|
|
||||||
</typeAliases>
|
|
||||||
|
|
||||||
</configuration>
|
|
||||||
50
service/src/main/java/com/sv/service/api/QRCodeService.java
Normal file
50
service/src/main/java/com/sv/service/api/QRCodeService.java
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
package com.sv.service.api;
|
||||||
|
|
||||||
|
import com.sv.entity.Venue;
|
||||||
|
import com.sv.mapper.DeviceMapper;
|
||||||
|
import com.sv.mapper.VenueMapper;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小程序扫二维码处理
|
||||||
|
*/
|
||||||
|
@Service("qrCodeService")
|
||||||
|
@Transactional(readOnly = true)
|
||||||
|
public class QRCodeService {
|
||||||
|
private final Logger logger = LoggerFactory.getLogger(ProtocolService.class);
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private VenueMapper venueMapper;
|
||||||
|
@Resource
|
||||||
|
private DeviceMapper deviceMapper;
|
||||||
|
|
||||||
|
public void enter(String deviceId) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public Venue initEnter(String deviceId) {
|
||||||
|
String deviceName = getDeviceName(deviceId);
|
||||||
|
String venueId = getVenueId(deviceId);
|
||||||
|
int i = Integer.parseInt(venueId);
|
||||||
|
Integer integer = deviceMapper.checkDevice(deviceName, i);
|
||||||
|
if (integer != 1){
|
||||||
|
logger.error("设备【"+deviceId + "】未链接,活着不存在");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return venueMapper.findById(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getVenueId(String deviceId){
|
||||||
|
return deviceId.split("$-$")[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getDeviceName(String deviceId){
|
||||||
|
return deviceId.split("$-$")[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -150,7 +150,7 @@ public class DeviceService extends BaseServiceImpl {
|
|||||||
device.setStatus(DeviceStatusEnum.ONLINE.value);
|
device.setStatus(DeviceStatusEnum.ONLINE.value);
|
||||||
device.setStream(deviceIp);
|
device.setStream(deviceIp);
|
||||||
if(deviceMapper.checkDevice(deviceName,venueId) > 0){
|
if(deviceMapper.checkDevice(deviceName,venueId) > 0){
|
||||||
logger.info(deviceName + venueId + "设备已存在,该设备。");
|
logger.info(deviceName + venueId + "设备已存在");
|
||||||
deviceMapper.online(venueId, deviceName);
|
deviceMapper.online(venueId, deviceName);
|
||||||
}else {
|
}else {
|
||||||
logger.info("落地客户端信息clientId = " + deviceIp + "&deviceName = " + deviceName + "&venueId = " + venueId);
|
logger.info("落地客户端信息clientId = " + deviceIp + "&deviceName = " + deviceName + "&venueId = " + venueId);
|
||||||
|
|||||||
@@ -473,7 +473,7 @@
|
|||||||
<update id="updateStatus" >
|
<update id="updateStatus" >
|
||||||
UPDATE sv_member_card
|
UPDATE sv_member_card
|
||||||
SET `status` = #{status}
|
SET `status` = #{status}
|
||||||
AND id IN
|
WHERE id IN
|
||||||
<foreach collection="cards" item="cards" index="index" open="(" close=")" separator=",">
|
<foreach collection="cards" item="cards" index="index" open="(" close=")" separator=",">
|
||||||
#{cards.id}
|
#{cards.id}
|
||||||
</foreach>
|
</foreach>
|
||||||
|
|||||||
@@ -2,6 +2,4 @@ rootProject.name = 'SmartVenue'
|
|||||||
include 'service'
|
include 'service'
|
||||||
include 'api'
|
include 'api'
|
||||||
include 'oms'
|
include 'oms'
|
||||||
include 'entity'
|
include 'entity'
|
||||||
include 'netty-pad'
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user