deason 7 年 前
コミット
5c1eef302b

+ 8 - 1
src/main/java/cn/com/qmth/examcloud/app/ApiApplication.java

@@ -9,12 +9,19 @@ package cn.com.qmth.examcloud.app;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.support.SpringBootServletInitializer;
 
 @SpringBootApplication
-public class ApiApplication {
+public class ApiApplication extends SpringBootServletInitializer {
 
     public static void main(String[] args) {
         SpringApplication.run(ApiApplication.class, args);
     }
 
+    @Override
+    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+        return application.sources(ApiApplication.class);
+    }
+
 }

+ 0 - 20
src/main/java/cn/com/qmth/examcloud/app/ServletInitializer.java

@@ -1,20 +0,0 @@
-/*
- * *************************************************
- * Copyright (c) 2018 QMTH. All Rights Reserved.
- * Created by Deason on 2018-07-16 15:00:21.
- * *************************************************
- */
-
-package cn.com.qmth.examcloud.app;
-
-import org.springframework.boot.builder.SpringApplicationBuilder;
-import org.springframework.boot.web.support.SpringBootServletInitializer;
-
-public class ServletInitializer extends SpringBootServletInitializer {
-
-    @Override
-    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
-        return application.sources(ApiApplication.class);
-    }
-
-}

+ 61 - 0
src/main/java/cn/com/qmth/examcloud/app/config/AccessInterceptor.java

@@ -0,0 +1,61 @@
+/*
+ * *************************************************
+ * Copyright (c) 2018 QMTH. All Rights Reserved.
+ * Created by Deason on 2018-07-20 14:15:02.
+ * *************************************************
+ */
+
+package cn.com.qmth.examcloud.app.config;
+
+import cn.com.qmth.examcloud.app.model.DeviceRecord;
+import cn.com.qmth.examcloud.app.service.DeviceRecordService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
+
+public class AccessInterceptor extends HandlerInterceptorAdapter {
+    private final static Logger log = LoggerFactory.getLogger(AccessInterceptor.class);
+    @Autowired
+    private DeviceRecordService deviceRecordService;
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+        String system = request.getHeader("system");
+        String deviceId = request.getHeader("deviceId");
+        String netType = request.getHeader("netType");
+        String brand = request.getHeader("brand");
+        String model = request.getHeader("model");
+        String sysVersion = request.getHeader("sysVersion");
+        String appVersion = request.getHeader("appVersion");
+        String appCode = request.getHeader("appCode");
+        String patchCode = request.getHeader("patchCode");
+        String account = request.getHeader("account");
+        String key = request.getHeader("key");
+        String token = request.getHeader("token");
+        String url = request.getServletPath();
+
+        DeviceRecord record = new DeviceRecord();
+        record.setSystem(system);
+        record.setDeviceId(deviceId);
+        record.setNetType(netType);
+        record.setBrand(brand);
+        record.setModel(model);
+        record.setSysVersion(sysVersion);
+        record.setAppVersion(appVersion);
+        record.setAppCode(appCode);
+        record.setPatchCode(patchCode);
+        record.setAccount(account);
+        record.setLoginKey(key);
+        record.setLoginToken(token);
+        record.setUrl(url);
+        record.setCreateDate(new Date());
+        deviceRecordService.addDeviceRecord(record);
+        return true;
+    }
+
+}

+ 31 - 0
src/main/java/cn/com/qmth/examcloud/app/config/InterceptorConfig.java

@@ -0,0 +1,31 @@
+/*
+ * *************************************************
+ * Copyright (c) 2018 QMTH. All Rights Reserved.
+ * Created by Deason on 2018-07-20 14:15:02.
+ * *************************************************
+ */
+
+package cn.com.qmth.examcloud.app.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+
+@Configuration
+public class InterceptorConfig extends WebMvcConfigurerAdapter {
+
+    @Bean
+    public AccessInterceptor accessInterceptor() {
+        return new AccessInterceptor();
+    }
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        registry.addInterceptor(accessInterceptor())
+                .addPathPatterns("/**")
+                .excludePathPatterns("/");
+        super.addInterceptors(registry);
+    }
+
+}

+ 2 - 2
src/main/java/cn/com/qmth/examcloud/app/SwaggerConfig.java → src/main/java/cn/com/qmth/examcloud/app/config/SwaggerConfig.java

@@ -1,11 +1,11 @@
 /*
  * *************************************************
  * Copyright (c) 2018 QMTH. All Rights Reserved.
- * Created by Deason on 2018-07-17 09:24:41.
+ * Created by Deason on 2018-07-20 14:15:16.
  * *************************************************
  */
 
-package cn.com.qmth.examcloud.app;
+package cn.com.qmth.examcloud.app.config;
 
 import io.swagger.annotations.ApiOperation;
 import org.springframework.context.annotation.Bean;

+ 4 - 3
src/main/java/cn/com/qmth/examcloud/app/controller/DeviceRecordController.java

@@ -14,6 +14,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
@@ -31,14 +32,14 @@ public class DeviceRecordController {
     private DeviceRecordService deviceRecordService;
 
     @RequestMapping(value = "/list", method = RequestMethod.GET)
-    public String main() {
+    public String list() {
         return "deviceRecord/list";
     }
 
     @ResponseBody
     @RequestMapping(value = "/list", method = RequestMethod.POST)
-    public Result<List<DeviceRecord>> list() throws Exception {
-        return deviceRecordService.getDeviceRecordList();
+    public Result<List<DeviceRecord>> list(@RequestBody DeviceRecord params) throws Exception {
+        return deviceRecordService.getDeviceRecordList(params);
     }
 
 }

+ 9 - 0
src/main/java/cn/com/qmth/examcloud/app/model/DeviceRecord.java

@@ -43,6 +43,7 @@ public class DeviceRecord extends IdEntity {
     private String loginKey;//登录认证KEY
     @Column(length = 50)
     private String loginToken;//登录认证TOKEN
+    private String url;//访问地址
     private Date createDate;//创建时间
 
     public String getSystem() {
@@ -141,6 +142,14 @@ public class DeviceRecord extends IdEntity {
         this.loginToken = loginToken;
     }
 
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
     public Date getCreateDate() {
         return createDate;
     }

+ 6 - 3
src/main/java/cn/com/qmth/examcloud/app/service/DeviceRecordService.java

@@ -14,7 +14,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.jpa.domain.Specification;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
 
 import java.util.List;
 
@@ -27,15 +29,16 @@ public class DeviceRecordService {
     @Autowired
     private DeviceRecordRepository deviceRecordRepository;
 
-    public Result<List<DeviceRecord>> getDeviceRecordList() {
+    public Result<List<DeviceRecord>> getDeviceRecordList(DeviceRecord params) {
         Specification<DeviceRecord> spec = null;
         List<DeviceRecord> list = deviceRecordRepository.findAll(spec);
         return new Result<>().success(list);
     }
 
-    public Result addDeviceRecord(DeviceRecord deviceRecord) {
+    @Async
+    public void addDeviceRecord(DeviceRecord deviceRecord) {
+        Assert.notNull(deviceRecord, "DeviceRecord must not be null.");
         deviceRecordRepository.save(deviceRecord);
-        return new Result<>().success();
     }
 
 }