15810770710@163.com 4 rokov pred
rodič
commit
a6256a9da1
79 zmenil súbory, kde vykonal 2830 pridanie a 0 odobranie
  1. 138 0
      pom.xml
  2. 28 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/Application.java
  3. 81 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/config/RestTemplateConfig.java
  4. 51 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/config/SwaggerConfig.java
  5. 17 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/config/filter/PageController.java
  6. 47 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/config/filter/VueIndexFilter.java
  7. 119 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/controller/AnalysisController.java
  8. 58 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/controller/CarController.java
  9. 58 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/controller/CostController.java
  10. 53 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/controller/DriverController.java
  11. 55 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/controller/EidController.java
  12. 45 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/controller/LoginController.java
  13. 53 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/controller/OrderController.java
  14. 123 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/controller/ProductController.java
  15. 53 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/controller/WaybillController.java
  16. 42 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/controller/exception/GlobalExceptionHandle.java
  17. 22 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/GetTokenRequest.java
  18. 25 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/remote/CarQueryParam.java
  19. 18 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/remote/DriverDetailsRequest.java
  20. 37 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/remote/DriverInfoRequest.java
  21. 21 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/remote/IdentityQueryParam.java
  22. 20 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/remote/LivingQueryParam.java
  23. 26 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/remote/Produce.java
  24. 16 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/remote/ProduceList.java
  25. 20 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/remote/QueryParam.java
  26. 19 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/remote/UserProduce.java
  27. 21 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/remote/WaybillQueryParam.java
  28. 28 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/response/Result.java
  29. 37 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/enums/ResultEnum.java
  30. 26 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/exceptions/LoginAgainException.java
  31. 26 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/exceptions/ParamaterException.java
  32. 27 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/exceptions/SystemBusyException.java
  33. 27 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/exceptions/TokenAuthenticationFailure.java
  34. 23 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/exceptions/TokenIsEmptyException.java
  35. 26 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/exceptions/TokenTimeoutException.java
  36. 28 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/exceptions/UserNotExistException.java
  37. 191 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/service/YysjAgencyService.java
  38. 423 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/service/impl/YysjAgencyServiceImpl.java
  39. 142 0
      src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/utils/RSAUtil.java
  40. 35 0
      src/main/resources/application.yaml
  41. 195 0
      src/main/resources/static/index.html
  42. 2 0
      src/main/resources/static/static/assets/jquery-3.3.1.min.js
  43. 1 0
      src/main/resources/static/static/assets/json/map.json
  44. 256 0
      src/main/resources/static/static/assets/md5.js
  45. 7 0
      src/main/resources/static/static/assets/vue-resource.min.js
  46. 6 0
      src/main/resources/static/static/assets/vue-router.min.js
  47. 6 0
      src/main/resources/static/static/assets/vue.min.js
  48. 6 0
      src/main/resources/static/static/assets/vuex.min.js
  49. 1 0
      src/main/resources/static/static/css/app.fc390bdf8e3dc062da4fe34a0e440b64.css
  50. BIN
      src/main/resources/static/static/favicon.ico
  51. BIN
      src/main/resources/static/static/fonts/element-icons.535877f.woff
  52. BIN
      src/main/resources/static/static/fonts/element-icons.732389d.ttf
  53. BIN
      src/main/resources/static/static/img/404.a57b6f3.a57b6f3.png
  54. BIN
      src/main/resources/static/static/img/loginBg.a796f12.png
  55. 1 0
      src/main/resources/static/static/js/0.5d1998345a3c9cb5f4dd.js
  56. 1 0
      src/main/resources/static/static/js/1.7ca4d41478b3a1a36947.js
  57. 1 0
      src/main/resources/static/static/js/10.2693159687746b65372e.js
  58. 1 0
      src/main/resources/static/static/js/11.5c5c1b6318b6cae7d716.js
  59. 1 0
      src/main/resources/static/static/js/11.d79fdc31e4220c616446.js
  60. 1 0
      src/main/resources/static/static/js/12.149cdd1504177a31fe06.js
  61. 1 0
      src/main/resources/static/static/js/12.49d57b2d701c9e4d3ab6.js
  62. 1 0
      src/main/resources/static/static/js/13.850d643ce570d9bade7b.js
  63. 1 0
      src/main/resources/static/static/js/14.d5132ea3147f3c03d0fc.js
  64. 1 0
      src/main/resources/static/static/js/15.9a22a31a3feddf619e42.js
  65. 1 0
      src/main/resources/static/static/js/2.2b4a161c7b9820551733.js
  66. 1 0
      src/main/resources/static/static/js/2.c16a42eef07e6d9dbfc4.js
  67. 1 0
      src/main/resources/static/static/js/3.295af4e072705bcaff81.js
  68. 1 0
      src/main/resources/static/static/js/4.b9fa59c906918d3f7289.js
  69. 1 0
      src/main/resources/static/static/js/5.9bdf4c1e9c60ea8f0080.js
  70. 1 0
      src/main/resources/static/static/js/5.b60e6dce198e87eaf7a5.js
  71. 1 0
      src/main/resources/static/static/js/6.4509479f919ca29ce220.js
  72. 1 0
      src/main/resources/static/static/js/6.9cdfaf4c19b906d50ebe.js
  73. 1 0
      src/main/resources/static/static/js/7.9b64a4bc193313090484.js
  74. 1 0
      src/main/resources/static/static/js/8.c42d970fd506525408f1.js
  75. 1 0
      src/main/resources/static/static/js/9.c794c5fd895f0c7d77f4.js
  76. 1 0
      src/main/resources/static/static/js/app.77cb31aafaa38cde7dfa.js
  77. 1 0
      src/main/resources/static/static/js/manifest.9fa51aa0ff198a52b5f6.js
  78. 1 0
      src/main/resources/static/static/js/manifest.de844783d156286e0ae0.js
  79. 21 0
      src/main/resources/static/static/js/vendor.331ca8ea28861c548f78.js

+ 138 - 0
pom.xml

@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.springframework.boot</groupId>
+		<artifactId>spring-boot-starter-parent</artifactId>
+		<version>2.2.2.RELEASE</version>
+		<relativePath/> <!-- lookup parent from repository -->
+	</parent>
+	<groupId>info.aspirecn.cloud.yysj</groupId>
+	<artifactId>cloud-yysj-agency</artifactId>
+	<version>1.0.1</version>
+	<name>cloud-yysj-agency</name>
+	<description>Demo project for Spring Boot</description>
+
+	<properties>
+		<java.version>1.8</java.version>
+		<spring-cloud.version>Hoxton.RELEASE</spring-cloud.version>
+	</properties>
+
+
+	<dependencies>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.projectlombok</groupId>
+			<artifactId>lombok</artifactId>
+			<optional>true</optional>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.httpcomponents</groupId>
+			<artifactId>httpclient</artifactId>
+			<version>4.5.10</version>
+		</dependency>
+		<!--		swagger2-->
+		<dependency>
+			<groupId>io.springfox</groupId>
+			<artifactId>springfox-swagger2</artifactId>
+			<version>2.9.2</version>
+		</dependency>
+		<dependency>
+			<groupId>io.springfox</groupId>
+			<artifactId>springfox-swagger-ui</artifactId>
+			<version>2.9.2</version>
+		</dependency>
+		<dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>fastjson</artifactId>
+			<version>1.2.47</version>
+		</dependency>
+		<dependency>
+			<groupId>cn.hutool</groupId>
+			<artifactId>hutool-all</artifactId>
+			<version>5.1.0</version>
+		</dependency>
+		<!--actuator-->
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-actuator</artifactId>
+		</dependency>
+
+	</dependencies>
+
+	<dependencyManagement>
+		<dependencies>
+			<dependency>
+				<groupId>org.springframework.cloud</groupId>
+				<artifactId>spring-cloud-dependencies</artifactId>
+				<version>${spring-cloud.version}</version>
+				<type>pom</type>
+				<scope>import</scope>
+			</dependency>
+		</dependencies>
+	</dependencyManagement>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+			</plugin>
+			<!--<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-jar-plugin</artifactId>
+				<configuration>
+					<archive>
+						<manifest>
+							<addClasspath>true</addClasspath>
+							<classpathPrefix>lib/</classpathPrefix>
+						</manifest>
+					</archive>
+				</configuration>
+			</plugin>
+
+			&lt;!&ndash;   拷贝依赖jar到lib,排除自定义的jar&ndash;&gt;
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-dependency-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>copy-dependencies</id>
+						<phase>prepare-package</phase>
+						<goals>
+							<goal>copy-dependencies</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-resources-plugin</artifactId>
+				&lt;!&ndash;<executions>
+					<execution>
+						<id>default-resources</id>
+						<phase>validate</phase>
+						<goals>
+							<goal>copy-resources</goal>
+						</goals>
+						<configuration>
+							<outputDirectory>target/classes</outputDirectory>
+							<useDefaultDelimiters>false</useDefaultDelimiters>
+							<delimiters>
+								<delimiter>@</delimiter>
+							</delimiters>
+						</configuration>
+					</execution>
+				</executions>&ndash;&gt;
+			</plugin>-->
+		</plugins>
+	</build>
+
+</project>

+ 28 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/Application.java

@@ -0,0 +1,28 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency;
+
+import info.aspirecn.cloud.yysj.cloudyysjagency.config.filter.VueIndexFilter;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+@SpringBootApplication
+@EnableSwagger2
+public class Application {
+
+	public static void main(String[] args) {
+		SpringApplication.run(Application.class, args);
+	}
+
+	@Bean
+	public FilterRegistrationBean vueIndexFilter() {
+		FilterRegistrationBean registrationBean = new FilterRegistrationBean();
+		registrationBean.addUrlPatterns("/*");
+		registrationBean.setName("vueIndexFilter");
+		registrationBean.setOrder(1);
+		registrationBean.setFilter(new VueIndexFilter());
+		return registrationBean;
+	}
+
+}

+ 81 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/config/RestTemplateConfig.java

@@ -0,0 +1,81 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.config;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.client.HttpClient;
+import org.apache.http.config.Registry;
+import org.apache.http.config.RegistryBuilder;
+import org.apache.http.conn.socket.ConnectionSocketFactory;
+import org.apache.http.conn.socket.PlainConnectionSocketFactory;
+import org.apache.http.conn.ssl.NoopHostnameVerifier;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.conn.ssl.TrustStrategy;
+import org.apache.http.impl.client.DefaultHttpRequestRetryHandler;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
+import org.apache.http.ssl.SSLContextBuilder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
+import org.springframework.web.client.DefaultResponseErrorHandler;
+import org.springframework.web.client.RestTemplate;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.SSLContext;
+import java.security.KeyManagementException;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+
+/**
+ * 配置 SpringBoot 自带的 HTTP 工具类 RestTemplate
+ */
+@Slf4j
+@Configuration
+public class RestTemplateConfig {
+
+    @Bean
+    public RestTemplate restTemplate() {
+        RestTemplate restTemplate = new RestTemplate();
+        restTemplate.setRequestFactory(clientHttpRequestFactory());
+        restTemplate.setErrorHandler(new DefaultResponseErrorHandler());
+        return restTemplate;
+    }
+
+    @Bean
+    public HttpComponentsClientHttpRequestFactory clientHttpRequestFactory() {
+        try {
+            HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
+            SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, (TrustStrategy) (arg0, arg1) -> true).build();
+            httpClientBuilder.setSSLContext(sslContext);
+            HostnameVerifier hostnameVerifier = NoopHostnameVerifier.INSTANCE;
+            SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, hostnameVerifier);
+            Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder
+                    .<ConnectionSocketFactory>create()
+                    .register("http", PlainConnectionSocketFactory.getSocketFactory())
+                    .register("https", sslConnectionSocketFactory).build();
+            // 开始设置连接池
+            PoolingHttpClientConnectionManager poolingHttpClientConnectionManager = new PoolingHttpClientConnectionManager(
+                    socketFactoryRegistry);
+            // 最大连接数2700
+            poolingHttpClientConnectionManager.setMaxTotal(2700);
+            // 同路由并发数100
+            poolingHttpClientConnectionManager.setDefaultMaxPerRoute(100);
+            httpClientBuilder.setConnectionManager(poolingHttpClientConnectionManager);
+            // 重试次数
+            httpClientBuilder.setRetryHandler(new DefaultHttpRequestRetryHandler(3, true));
+            HttpClient httpClient = httpClientBuilder.build();
+            // httpClient连接配置
+            HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
+            // 连接超时
+            clientHttpRequestFactory.setConnectTimeout(20000);
+            // 数据读取超时时间
+            clientHttpRequestFactory.setReadTimeout(30000);
+            // 连接不够用的等待时间
+            clientHttpRequestFactory.setConnectionRequestTimeout(20000);
+            return clientHttpRequestFactory;
+        } catch (KeyManagementException | NoSuchAlgorithmException | KeyStoreException e) {
+            log.error("初始化HTTP连接池出错", e);
+        }
+        return null;
+    }
+
+}

+ 51 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/config/SwaggerConfig.java

@@ -0,0 +1,51 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.config;
+
+import com.google.common.base.Predicates;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+/**
+ * Swagger 配置
+ *
+ * @author dingliqiang
+ */
+@Configuration
+public class SwaggerConfig {
+    @Bean
+    public Docket createRestApi() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                // 项目组名
+                .apiInfo(apiInfo())
+                // 选择那些路径和api会生成document
+                .select()
+                // 对所有api进行监控
+                .apis(RequestHandlerSelectors.any())
+                // 对所有路径进行监控
+                .paths(PathSelectors.any())
+                //错误路径不监控
+                .paths(Predicates.not(PathSelectors.regex("/error")))
+                .paths(Predicates.not(PathSelectors.regex("/error.*")))
+                //actuator路径跳过
+                .paths(Predicates.not(PathSelectors.regex("/actuator.*")))
+                //异常捕捉路径跳过
+                .paths(Predicates.not(PathSelectors.regex("/exception.*")))
+                .build();
+    }
+
+    private ApiInfo apiInfo() {
+        return new ApiInfoBuilder()
+                // 文档标题
+                .title("swagger-example-service")
+                // 文档描述
+                .description("This is a swagger project.")
+                // 文档版本
+                .version("1.0.0")
+                .build();
+    }
+}

+ 17 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/config/filter/PageController.java

@@ -0,0 +1,17 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.config.filter;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+/**
+ * @author CY
+ */
+@Controller
+public class PageController {
+
+    @RequestMapping(value="/")
+    public String pageVisit() {
+        return "/index";
+    }
+
+}

+ 47 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/config/filter/VueIndexFilter.java

@@ -0,0 +1,47 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.config.filter;
+
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.util.AntPathMatcher;
+
+import javax.servlet.*;
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+
+/**
+ * @author jianggang
+ * @Date 2018/11/21 15:33:10
+ * @Description
+ */
+
+@Slf4j
+public class VueIndexFilter implements Filter {
+
+    //private String noforward = "assets;css;fonts;img;js;api;woff;ttf;authentication;analysisQuery;carQuery;";
+
+    @Override
+    public void init(FilterConfig filterConfig) throws ServletException {
+
+    }
+
+    @Override
+    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+        HttpServletRequest request = (HttpServletRequest)servletRequest;
+        String uri = request.getRequestURI();
+        AntPathMatcher antPathMatcher = new AntPathMatcher();
+        boolean isMatch = antPathMatcher.match("/*", uri);
+        if(isMatch){
+            servletRequest.getRequestDispatcher("/").forward(servletRequest,servletResponse);
+
+        }else {
+            filterChain.doFilter(servletRequest,servletResponse);
+        }
+    }
+
+    @Override
+    public void destroy() {
+
+    }
+
+}
+

+ 119 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/controller/AnalysisController.java

@@ -0,0 +1,119 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.controller;
+
+import info.aspirecn.cloud.yysj.cloudyysjagency.exceptions.SystemBusyException;
+import info.aspirecn.cloud.yysj.cloudyysjagency.exceptions.TokenIsEmptyException;
+import info.aspirecn.cloud.yysj.cloudyysjagency.service.YysjAgencyService;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@RestController
+@RequestMapping("/api/analysisQuery")
+public class AnalysisController {
+
+    @Autowired
+    private YysjAgencyService yysjAgencyService;
+
+    @ApiOperation(value = "账户信息", notes = "获取用户当日消费金额和账户余额。")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "userId", value = "用户ID", dataType = "string", required = true, paramType = "header")
+    })
+    @GetMapping("/accountInfo")
+    public Object getAccountInfo(HttpServletRequest request, HttpServletResponse response) {
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.getAccountInfo(token, response);
+        if (object == null) {
+            throw new SystemBusyException("账户信息接口返回为空");
+        }
+        return object;
+    }
+
+    @ApiOperation(value = "产品消费信息", notes = "获取账户当月订购产品的消费及占比信息。")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "userId", value = "用户ID", dataType = "string", required = true, paramType = "header")
+    })
+    @GetMapping("/consumptionInfo")
+    public Object getConsumptionInfo(HttpServletRequest request, HttpServletResponse response) {
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.getConsumptionInfo(token, response);
+        if (object == null) {
+            throw new SystemBusyException("产品消费信息接口返回为空");
+        }
+        return object;
+    }
+
+    @ApiOperation(value = "主订单统计信息", notes = "获取账户最新 15 天订单统计信息。")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "userId", value = "用户ID", dataType = "string", paramType = "header")
+    })
+    @GetMapping("/statisticsInfo")
+    public Object getOrderStatistics(HttpServletRequest request, HttpServletResponse response) {
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.getOrderStatistics(token, response);
+        if (object == null) {
+            throw new SystemBusyException("主订单统计信息接口返回为空");
+        }
+        return object;
+    }
+
+    @ApiOperation(value = "总订单统计信息", notes = "获取指定日期内,总订单统计结果信息。")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "endTime", value = "结束时间", dataType = "string", required = true, paramType = "query"),
+            @ApiImplicitParam(name = "startTime", value = "开始时间", dataType = "string", required = true, paramType = "query"),
+            @ApiImplicitParam(name = "userId", value = "用户ID", dataType = "string", required = true, paramType = "header")
+    })
+    @GetMapping("/countStatisticsInfo")
+    public Object getCountStatistics(@RequestParam(required = true) String startTime,
+                                     @RequestParam(required = true) String endTime,
+                                     HttpServletRequest request, HttpServletResponse response) {
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.getCountStatistics(startTime, endTime, token, response);
+        if (object == null) {
+            throw new SystemBusyException("总订单统计信息接口返回为空");
+        }
+        return object;
+
+    }
+
+    @ApiOperation(value = "异常效验统计信息", notes = "获取指定日期内,获取一致、不一致订单统计结果信息。")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "startTime", value = "开始时间", dataType = "string", required = true, paramType = "query"),
+            @ApiImplicitParam(name = "endTime", value = "结束时间", dataType = "string", required = true, paramType = "query"),
+            @ApiImplicitParam(name = "userId", value = "用户ID", dataType = "string", required = true, paramType = "header")
+    })
+
+    @GetMapping("/exceptionStatisticsInfo")
+    public Object getErrorStatistics(@RequestParam(required = true) String startTime,
+                                     @RequestParam(required = true) String endTime,
+                                     HttpServletRequest request, HttpServletResponse response) {
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.getErrorStatistics(startTime, endTime, token, response);
+        if (object == null) {
+            throw new SystemBusyException("异常效验统计信息接口返回为空");
+        }
+        return object;
+    }
+}

+ 58 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/controller/CarController.java

@@ -0,0 +1,58 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.controller;
+
+import info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.remote.CarQueryParam;
+import info.aspirecn.cloud.yysj.cloudyysjagency.exceptions.ParamaterException;
+import info.aspirecn.cloud.yysj.cloudyysjagency.exceptions.SystemBusyException;
+import info.aspirecn.cloud.yysj.cloudyysjagency.exceptions.TokenIsEmptyException;
+import info.aspirecn.cloud.yysj.cloudyysjagency.service.YysjAgencyService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@RestController
+@RequestMapping("/api/carQuery")
+public class CarController {
+
+    @Autowired
+    private YysjAgencyService yysjAgencyService;
+
+    @ApiOperation(value = "车辆列表", notes = "查询车辆信息列表")
+    @PostMapping("/querycar")
+    public Object queryCarList(@RequestBody CarQueryParam carQueryParam, HttpServletRequest request, HttpServletResponse response) {
+        //判断请求头token是否为空
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.queryCarList(carQueryParam, token, response);
+        if (object == null) {
+            throw new SystemBusyException("车辆列表接口返回值为空");
+        }
+        return object;
+    }
+    /**
+     * 车辆详情接口
+     */
+    @ApiOperation(value = "车辆详情", notes = "查询车辆详情")
+    @GetMapping("/querycarinfo/{carId}")
+    public Object queryCarInfo(@PathVariable(required = true) String carId, HttpServletRequest request, HttpServletResponse response) {
+        //判断参数不为空
+        if (StringUtils.isEmpty(carId)) {
+            throw new ParamaterException("请求参数为空");
+        }
+        //判断请求头参数不为空
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.queryCarInfo(carId, token, response);
+        if (object == null) {
+            throw new SystemBusyException("车辆详情接口返回值为空");
+        }
+        return object;
+    }
+}

+ 58 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/controller/CostController.java

@@ -0,0 +1,58 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.controller;
+
+import info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.remote.QueryParam;
+import info.aspirecn.cloud.yysj.cloudyysjagency.exceptions.SystemBusyException;
+import info.aspirecn.cloud.yysj.cloudyysjagency.exceptions.TokenIsEmptyException;
+import info.aspirecn.cloud.yysj.cloudyysjagency.service.YysjAgencyService;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@RestController
+@RequestMapping("/api/costQuery")
+public class CostController {
+    @Autowired
+    public YysjAgencyService yysjAgencyService;
+
+
+    @ApiOperation(value = "充值记录", notes = "充值记录列表")
+    @PostMapping("/queryrecharge")
+    public Object queryRechargeInfoList(@ApiParam(value = "用户ID")
+                                         @RequestBody QueryParam queryParam,
+                                         HttpServletRequest request, HttpServletResponse response) {
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.queryRechargeInfoList(queryParam, token, response);
+        if (object == null) {
+            throw new SystemBusyException("充值记录接口返回为空");
+        }
+        return object;
+    }
+
+    @ApiOperation(value = "账单明细管理", notes = "账单列表")
+    @PostMapping("/querybill")
+    public Object queryBillList(HttpServletResponse response,
+                                 @ApiParam(value = "用户ID")
+                                 @RequestBody QueryParam queryParam, HttpServletRequest request) {
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.queryBillList(response, queryParam, token);
+        if (object == null) {
+            throw new SystemBusyException("账单明细管理接口返回为空");
+        }
+        return object;
+    }
+
+}

+ 53 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/controller/DriverController.java

@@ -0,0 +1,53 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.controller;
+
+import info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.remote.DriverDetailsRequest;
+import info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.remote.DriverInfoRequest;
+import info.aspirecn.cloud.yysj.cloudyysjagency.exceptions.SystemBusyException;
+import info.aspirecn.cloud.yysj.cloudyysjagency.exceptions.TokenIsEmptyException;
+import info.aspirecn.cloud.yysj.cloudyysjagency.service.YysjAgencyService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@RestController
+@RequestMapping("/api/driverQuery")
+public class DriverController {
+    @Autowired
+    private YysjAgencyService yysjAgencyService;
+
+    @ApiOperation(value = "查询司机校验信息列表接口", notes = "获取司机校验信息列表接口。")
+    @PostMapping("/getDriverList")
+    public Object getDriverList(@RequestBody DriverInfoRequest driverInfoRequest, HttpServletRequest request, HttpServletResponse response) {
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.getDriverList(driverInfoRequest, token, response);
+        if (object == null) {
+            throw new SystemBusyException("查询司机校验信息列表接口返回为空");
+        }
+        return object;
+    }
+
+    @ApiOperation(value = "司机详情接口", notes = "司机详情接口。")
+    @PostMapping("/getDriverDetails")
+    public Object getDriverDetails(@RequestBody DriverDetailsRequest driverDetailsRequest,
+                                    HttpServletRequest request, HttpServletResponse response) {
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.getDriverDetails(driverDetailsRequest, token, response);
+        if (object == null) {
+            throw new SystemBusyException("查询司机详情信息接口返回为空");
+        }
+        return object;
+    }
+}

+ 55 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/controller/EidController.java

@@ -0,0 +1,55 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.controller;
+
+import info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.remote.IdentityQueryParam;
+import info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.remote.LivingQueryParam;
+import info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.remote.WaybillQueryParam;
+import info.aspirecn.cloud.yysj.cloudyysjagency.exceptions.SystemBusyException;
+import info.aspirecn.cloud.yysj.cloudyysjagency.exceptions.TokenIsEmptyException;
+import info.aspirecn.cloud.yysj.cloudyysjagency.service.YysjAgencyService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@RestController
+@RequestMapping("/api/eidQuery")
+public class EidController {
+
+    @Autowired
+    private YysjAgencyService yysjAgencyService;
+
+    @ApiOperation(value = "活体查询列表", notes = "活体信息列表")
+    @PostMapping("/queryLivingList")
+    public Object queryLivingList(HttpServletResponse response,
+                                    HttpServletRequest request,
+                                    @RequestBody LivingQueryParam livingQueryParam) {
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.queryLivingList(livingQueryParam,token,response);
+        if (object == null) {
+            throw new SystemBusyException("运单列表接口返回为空");
+        }
+        return object;
+    }
+
+    @ApiOperation(value = "身份认证查询列表", notes = "身份认证信息列表")
+    @PostMapping("/queryIdentityList")
+    public Object queryIdentityList(HttpServletResponse response,
+                                  HttpServletRequest request,
+                                  @RequestBody IdentityQueryParam identityQueryParam) {
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.queryIdentityList(identityQueryParam,token,response);
+        if (object == null) {
+            throw new SystemBusyException("运单列表接口返回为空");
+        }
+        return object;
+    }
+}

+ 45 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/controller/LoginController.java

@@ -0,0 +1,45 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.controller;
+
+import info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.GetTokenRequest;
+import info.aspirecn.cloud.yysj.cloudyysjagency.exceptions.ParamaterException;
+import info.aspirecn.cloud.yysj.cloudyysjagency.exceptions.TokenIsEmptyException;
+import info.aspirecn.cloud.yysj.cloudyysjagency.service.YysjAgencyService;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@RestController
+@RequestMapping("/api/authentication")
+public class LoginController {
+
+
+    @Autowired
+    private YysjAgencyService yysjAgencyService;
+
+    @PostMapping("/login")
+    public Object getTokenTest(@RequestBody GetTokenRequest getTokenRequest, HttpServletResponse response) {
+        if (StringUtils.isEmpty(getTokenRequest.getUserId()) || StringUtils.isEmpty(getTokenRequest.getPassword())) {
+            throw new ParamaterException("请求参数为空");
+
+        }
+        return yysjAgencyService.login(getTokenRequest, response);
+    }
+
+    @ApiOperation(value = "云验平台退出接口", notes = "退出接口")
+    @ApiImplicitParams({@ApiImplicitParam(name = "userId", value = "userId", required = true, dataType = "String")})
+    @GetMapping("/logout")
+    public Object logout(HttpServletRequest request, HttpServletResponse response) {
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.logout(token, response);
+        return object;
+    }
+}

+ 53 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/controller/OrderController.java

@@ -0,0 +1,53 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.controller;
+
+import info.aspirecn.cloud.yysj.cloudyysjagency.exceptions.SystemBusyException;
+import info.aspirecn.cloud.yysj.cloudyysjagency.exceptions.TokenIsEmptyException;
+import info.aspirecn.cloud.yysj.cloudyysjagency.service.YysjAgencyService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@RestController
+@RequestMapping("/api/orderQuery")
+public class OrderController {
+
+    @Autowired
+    private YysjAgencyService yysjAgencyService;
+
+    @GetMapping("/orderList")
+    public Object getOrderList(@RequestParam(required = false,defaultValue = "") String orderId,
+                                     @RequestParam(required = false,defaultValue = "") String startTime,
+                                     @RequestParam(required = false,defaultValue = "") String endTime,
+                                     @RequestParam(required = false, defaultValue = "1") Integer pageNum,
+                                     @RequestParam(required = false, defaultValue = "10") Integer pageSize,
+                                     HttpServletRequest request,
+                                     HttpServletResponse response) {
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.getOrderList(orderId,startTime, endTime,pageNum,pageSize,token, response);
+        if (object == null) {
+            throw new SystemBusyException("主订单列表接口返回为空");
+        }
+        return object;
+    }
+
+    @ApiOperation(value = "主订单详情查询", notes = "查询主订单详情信息(子订单信息)。")
+    @GetMapping("/order/{orderId}")
+    public Object getOrderDetail(@PathVariable(required = true) String orderId,HttpServletRequest request,HttpServletResponse response) {
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.getOrderDetail(orderId,token, response);
+        if (object == null) {
+            throw new SystemBusyException("主订单详情查询接口返回为空");
+        }
+        return object;
+    }
+}

+ 123 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/controller/ProductController.java

@@ -0,0 +1,123 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.controller;
+
+import info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.remote.*;
+import info.aspirecn.cloud.yysj.cloudyysjagency.exceptions.SystemBusyException;
+import info.aspirecn.cloud.yysj.cloudyysjagency.exceptions.TokenIsEmptyException;
+import info.aspirecn.cloud.yysj.cloudyysjagency.service.YysjAgencyService;
+import io.swagger.annotations.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@RestController
+@RequestMapping("/api/productConfig")
+@Api(tags = "云验平台登录接口")
+@ApiResponses({
+        @ApiResponse(code = 200, message = "请求成功"),
+        @ApiResponse(code = 400, message = "请求参数错误"),
+        @ApiResponse(code = 401, message = "请求token无效"),
+        @ApiResponse(code = 403, message = "请求token过期"),
+        @ApiResponse(code = 404, message = "请求地址没有发现"),
+        @ApiResponse(code = 500, message = "系统异常"),
+})
+public class ProductController {
+
+    @Autowired
+    private YysjAgencyService yysjAgencyService;
+
+
+//    @ApiOperation(value = "新建产品接口", notes = "新建产品接口")
+//    @PostMapping(value ="/saveProduce")
+//    public Object saveProduce(@RequestBody Produce produce, HttpServletRequest request, HttpServletResponse response) {
+//
+//        String token = request.getHeader("token");
+//        if (StringUtils.isEmpty(token)) {
+//            throw new TokenIsEmptyException("请求头token为空");
+//        }
+//        Object object = yysjAgencyService.saveProduce(produce, token, response);
+//        if (object == null) {
+//            throw new SystemBusyException("新建产品接口返回为空");
+//        }
+//        return object;
+//    }
+
+    @ApiOperation(value = "查询产品列表接口", notes = "获取产品列表接口")
+    @PostMapping("/productList")
+    public Object productList(@RequestBody ProduceList produceList, HttpServletRequest request, HttpServletResponse response) {
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.productList(produceList, token, response);
+        if (object == null) {
+            throw new SystemBusyException("查询产品列表接口返回为空");
+        }
+        return object;
+    }
+
+    @ApiOperation(value = "订购产品接口", notes = "订购产品接口")
+    @PostMapping(value = "/saveUserProduce")
+    public Object saveUserProduce(@RequestBody UserProduce userProduce, HttpServletRequest request, HttpServletResponse response) {
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.saveUserProduce(userProduce, token, response);
+        if (object == null) {
+            throw new SystemBusyException("订购产品接口返回为空");
+        }
+        return object;
+    }
+
+
+    @ApiOperation(value = "取消订购产品接口", notes = "取消订购产品接口")
+    @DeleteMapping(value = "/deleteUserProduce")
+    public Object deleteUserProduce(@RequestParam(required = true) Integer produceId,
+                                     @RequestParam(required = true) String produceName,
+                                     HttpServletRequest request,
+                                     HttpServletResponse response) {
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.deleteUserProduce(produceId,produceName, token, response);
+        if (object == null) {
+            throw new SystemBusyException("取消订购产品接口返回为空");
+        }
+        return object;
+
+    }
+
+    @ApiOperation(value = "获取订购产品数量接口", notes = "获取订购产品数量接口")
+    @GetMapping("/getOrderProductCount")
+    public Object getOrderProductCount(HttpServletRequest request, HttpServletResponse response) {
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.getOrderProductCount(token, response);
+        if (object == null) {
+            throw new SystemBusyException("获取订购产品数量接口返回为空");
+        }
+        return object;
+    }
+
+
+    @ApiOperation(value = "获取产品名称列表接口", notes = "获取产品名称列表接口")
+    @GetMapping("/getProductNameList")
+    public Object getProductNameList(HttpServletRequest request, HttpServletResponse response) {
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.getProductNameList(token, response);
+        if (object == null) {
+            throw new SystemBusyException("获取产品名称列表接口返回为空");
+        }
+        return object;
+    }
+
+
+}

+ 53 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/controller/WaybillController.java

@@ -0,0 +1,53 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.controller;
+
+import info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.remote.WaybillQueryParam;
+import info.aspirecn.cloud.yysj.cloudyysjagency.exceptions.SystemBusyException;
+import info.aspirecn.cloud.yysj.cloudyysjagency.exceptions.TokenIsEmptyException;
+import info.aspirecn.cloud.yysj.cloudyysjagency.service.YysjAgencyService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@RestController
+@RequestMapping("/api/waybillQuery")
+public class WaybillController {
+
+    @Autowired
+    private YysjAgencyService yysjAgencyService;
+
+    @ApiOperation(value = "运单列表", notes = "查询运单信息列表")
+    @PostMapping("/querywaybill")
+    public Object queryWaybillList(HttpServletResponse response,
+                                    HttpServletRequest request,
+                                    @RequestBody WaybillQueryParam waybillQueryParam) {
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.queryWaybillList(response, waybillQueryParam, token);
+        if (object == null) {
+            throw new SystemBusyException("运单列表接口返回为空");
+        }
+        return object;
+    }
+
+    @ApiOperation(value = "运单详情", notes = "查询运单详情")
+    @GetMapping("/querywaybillinfo/{waybillId}")
+    public Object querywaybillinfo(@PathVariable(required = true) String waybillId,
+                                    HttpServletRequest request,
+                                    HttpServletResponse response) {
+        String token = request.getHeader("token");
+        if (StringUtils.isEmpty(token)) {
+            throw new TokenIsEmptyException("请求头token为空");
+        }
+        Object object = yysjAgencyService.querywaybillinfo(waybillId, token, response);
+        if (object == null) {
+            throw new SystemBusyException("运单详情接口返回为空");
+        }
+        return object;
+    }
+}

+ 42 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/controller/exception/GlobalExceptionHandle.java

@@ -0,0 +1,42 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.controller.exception;
+
+import info.aspirecn.cloud.yysj.cloudyysjagency.controller.ProductController;
+import info.aspirecn.cloud.yysj.cloudyysjagency.entity.response.Result;
+import info.aspirecn.cloud.yysj.cloudyysjagency.enums.ResultEnum;
+import info.aspirecn.cloud.yysj.cloudyysjagency.exceptions.*;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+import javax.servlet.http.HttpServletResponse;
+
+@RestControllerAdvice(basePackageClasses = ProductController.class)
+@Slf4j
+public class GlobalExceptionHandle {
+    /**
+     * 自定义异常处理器
+     *
+     * @param response 响应对象
+     * @return ResponseInfo
+     */
+    @ExceptionHandler({RuntimeException.class})
+    public Result runtimeExceptionHandler(RuntimeException e, HttpServletResponse response) {
+        // 设置响应对象
+        Result resultResponse = new Result();
+        if (e instanceof SystemBusyException) {
+            resultResponse.setError(ResultEnum.YYSJ_SYSTEM_BUSY);
+            response.setStatus(ResultEnum.YYSJ_SYSTEM_BUSY.getStatus());
+        } else if (e instanceof TokenIsEmptyException) {
+            resultResponse.setError(ResultEnum.YYSJ_REQUEST_TOKEN_PARAMETER_ERROR);
+            response.setStatus(ResultEnum.YYSJ_REQUEST_TOKEN_PARAMETER_ERROR.getStatus());
+        } else if (e instanceof ParamaterException) {
+            resultResponse.setError(ResultEnum.YYSJ_REQUEST_PARAMETER_ERROR);
+            response.setStatus(ResultEnum.YYSJ_REQUEST_PARAMETER_ERROR.getStatus());
+        } else {
+            resultResponse.setError(ResultEnum.YYSJ_SYSTEM_ERROR);
+            response.setStatus(ResultEnum.YYSJ_SYSTEM_ERROR.getStatus());
+        }
+        log.error("", e);
+        return resultResponse;
+    }
+
+}

+ 22 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/GetTokenRequest.java

@@ -0,0 +1,22 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.entity.request;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+@Data
+@ToString
+public class GetTokenRequest {
+    /**
+     *用户名称
+     */
+    @ApiModelProperty(value = "用户名称")
+    private String userId;
+    /**
+     * 用户密码
+     */
+    @ApiModelProperty(value = "密码")
+    private String password;
+
+
+}

+ 25 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/remote/CarQueryParam.java

@@ -0,0 +1,25 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.remote;
+
+
+import lombok.Data;
+import lombok.ToString;
+
+/**
+ * Email:lixinxu@aspirecn.com
+ * Descrption:
+ */
+@Data
+@ToString
+public class CarQueryParam {
+
+    private String userId;
+    private String carNum;
+    private String carNumColor;
+    private String drivingLicenseCheck;
+    private String transportationLicenseCheck;
+    private String carIntoTheNetCheck;
+    private String beginTime;
+    private String endTime;
+    private int pageSize;
+    private int pageNum;
+}

+ 18 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/remote/DriverDetailsRequest.java

@@ -0,0 +1,18 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.remote;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+@ToString
+public class DriverDetailsRequest {
+
+    @ApiModelProperty(value = "司机姓名")
+    private String driverName;
+    @ApiModelProperty(value = "身份证号")
+    private String drivingLicense;
+
+}

+ 37 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/remote/DriverInfoRequest.java

@@ -0,0 +1,37 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.remote;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+@NoArgsConstructor
+@AllArgsConstructor
+public class DriverInfoRequest {
+
+	@ApiModelProperty(value = "司机姓名")
+	private String driverName;
+	@ApiModelProperty(value = "身份证号")
+	private String drivingLicense;
+	@ApiModelProperty(value = "驾驶证号")
+	private String driverLicenseNumber;
+	@ApiModelProperty(value = "从业资格证号")
+	private String qualificationCertificate;
+    @ApiModelProperty(value = "从业资格证核验结果")
+    private String qualificationCardResult;
+    @ApiModelProperty(value = "驾驶证核验结果")
+    private String driveCardResult;
+    @ApiModelProperty(value = "开始时间")
+    private String startTime;
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+    @ApiModelProperty(value = "页数")
+    private int pageNum;
+    @ApiModelProperty(value = "页面显示数量")
+    private int pageSize;
+
+}
+

+ 21 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/remote/IdentityQueryParam.java

@@ -0,0 +1,21 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.remote;
+
+
+import lombok.Data;
+import lombok.ToString;
+
+/**
+ *
+ * Descrption:
+ */
+@Data
+@ToString
+public class IdentityQueryParam {
+
+    private String reqID;
+    private String verificationResult;
+    private String startTime;
+    private String endTime;
+    private int pageNum;
+    private int pageSize;
+}

+ 20 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/remote/LivingQueryParam.java

@@ -0,0 +1,20 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.remote;
+
+
+import lombok.Data;
+import lombok.ToString;
+
+/**
+ *
+ * Descrption:
+ */
+@Data
+@ToString
+public class LivingQueryParam {
+    private String reqID;
+    private String verificationResult;
+    private String startTime;
+    private String endTime;
+    private int pageNum;
+    private int pageSize;
+}

+ 26 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/remote/Produce.java

@@ -0,0 +1,26 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.remote;
+
+import lombok.Data;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+
+@Data
+@Accessors(chain = true)
+@ToString
+public class Produce {
+
+    private Integer id;
+    private String produceName;
+    private String remark;
+    private Integer price;
+    private Integer type;
+    /**是否订购*/
+    private Integer isOrder;
+    private Date createTime;
+    private Date updateTime;
+    private Integer sjjhId;
+
+}

+ 16 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/remote/ProduceList.java

@@ -0,0 +1,16 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.remote;
+
+import lombok.Data;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+@ToString
+public class ProduceList {
+
+    private String productName;
+    private int pageNum;
+    private int pageSize;
+
+}

+ 20 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/remote/QueryParam.java

@@ -0,0 +1,20 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.remote;
+
+import lombok.Data;
+import lombok.ToString;
+
+/**
+ * Email:lixinxu@aspirecn.com
+ * Descrption:
+ */
+@Data
+@ToString
+public class QueryParam {
+    private String userId;
+    private String beginTime;
+    private String endTime;
+    private int pageSize;
+    private int pageNum;
+
+
+}

+ 19 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/remote/UserProduce.java

@@ -0,0 +1,19 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.remote;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+@Data
+@Accessors(chain = true)
+public class UserProduce {
+
+    private Integer id;
+    private Integer userId;
+    private Integer produceId;
+    private Date createTime;
+    private String produceName;
+    private Integer event;
+
+}

+ 21 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/request/remote/WaybillQueryParam.java

@@ -0,0 +1,21 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.remote;
+
+import lombok.Data;
+import lombok.ToString;
+
+/**
+ * Email:lixinxu@aspirecn.com
+ * Descrption:
+ */
+@Data
+@ToString
+public class WaybillQueryParam {
+    private String userId;
+    private String waybillNum;
+    private String carNum;
+    private String beginTime;
+    private String endTime;
+    private int pageSize;
+    private int pageNum;
+
+}

+ 28 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/entity/response/Result.java

@@ -0,0 +1,28 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.entity.response;
+
+import info.aspirecn.cloud.yysj.cloudyysjagency.enums.ResultEnum;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+@Data
+@ToString
+@Accessors(chain = true)
+public class Result {
+
+    /**状态码描述信息 */
+    @ApiModelProperty(value = "响应信息")
+    private String message ="";
+
+    /** 返回数据信息*/
+    @ApiModelProperty(value = "响应数据")
+    private Object data = "";
+
+    public void setError(ResultEnum resultEnum) {
+
+        this.message = resultEnum.getMessage();
+
+    }
+
+}

+ 37 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/enums/ResultEnum.java

@@ -0,0 +1,37 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.enums;
+
+public enum ResultEnum {
+    /**
+     * 查询成功
+     */
+    YYSJ_SUCCESS( 200, "请求成功"),
+    YYSJ_REQUEST_PARAMETER_ERROR(400,"请求参数错误"),
+    YYSJ_NO_USER(400,"用户名或密码错误"),
+    YYSJ_REQUEST_TOKEN_ERROR(401,"请求token无效"),
+    YYSJ_REQUEST_TOKEN_PARAMETER_ERROR(401,"请求头token为空"),
+    YYSJ_REQUEST_TOKEN_OUTTIME(403,"请求token过期"),
+    YYSJ_LOGIN_AGAIN(403,"请先登录"),
+    YYSJ_SYSTEM_ERROR(500,"系统异常"),
+    YYSJ_SYSTEM_BUSY(504,"系统繁忙,请稍后再试")
+    ;
+
+    private Integer status;
+    private String message;
+
+    ResultEnum(Integer status, String message) {
+        this.status = status;
+        this.message = message;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+}

+ 26 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/exceptions/LoginAgainException.java

@@ -0,0 +1,26 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.exceptions;
+
+/**
+ * 需要重新登录异常
+ */
+public class LoginAgainException extends RuntimeException {
+    public LoginAgainException() {
+        super();
+    }
+
+    public LoginAgainException(String message) {
+        super(message);
+    }
+
+    public LoginAgainException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public LoginAgainException(Throwable cause) {
+        super(cause);
+    }
+
+    protected LoginAgainException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+        super(message, cause, enableSuppression, writableStackTrace);
+    }
+}

+ 26 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/exceptions/ParamaterException.java

@@ -0,0 +1,26 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.exceptions;
+
+/**
+ *参数异常
+ */
+public class ParamaterException extends RuntimeException{
+    public ParamaterException() {
+        super();
+    }
+
+    public ParamaterException(String message) {
+        super(message);
+    }
+
+    public ParamaterException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public ParamaterException(Throwable cause) {
+        super(cause);
+    }
+
+    protected ParamaterException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+        super(message, cause, enableSuppression, writableStackTrace);
+    }
+}

+ 27 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/exceptions/SystemBusyException.java

@@ -0,0 +1,27 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.exceptions;
+
+/**
+ * 系统繁忙异常
+ */
+public class SystemBusyException extends RuntimeException{
+    public SystemBusyException() {
+        super();
+    }
+
+    public SystemBusyException(String message) {
+        super(message);
+    }
+
+    public SystemBusyException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public SystemBusyException(Throwable cause) {
+        super(cause);
+    }
+
+    protected SystemBusyException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+        super(message, cause, enableSuppression, writableStackTrace);
+    }
+
+}

+ 27 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/exceptions/TokenAuthenticationFailure.java

@@ -0,0 +1,27 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.exceptions;
+
+/**
+ * @author dingliqiang
+ */
+public class TokenAuthenticationFailure extends RuntimeException{
+
+    public TokenAuthenticationFailure() {
+        super();
+    }
+
+    public TokenAuthenticationFailure(String message) {
+        super(message);
+    }
+
+    public TokenAuthenticationFailure(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public TokenAuthenticationFailure(Throwable cause) {
+        super(cause);
+    }
+
+    protected TokenAuthenticationFailure(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+        super(message, cause, enableSuppression, writableStackTrace);
+    }
+}

+ 23 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/exceptions/TokenIsEmptyException.java

@@ -0,0 +1,23 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.exceptions;
+
+public class TokenIsEmptyException extends RuntimeException {
+    public TokenIsEmptyException() {
+        super();
+    }
+
+    public TokenIsEmptyException(String message) {
+        super(message);
+    }
+
+    public TokenIsEmptyException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public TokenIsEmptyException(Throwable cause) {
+        super(cause);
+    }
+
+    protected TokenIsEmptyException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+        super(message, cause, enableSuppression, writableStackTrace);
+    }
+}

+ 26 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/exceptions/TokenTimeoutException.java

@@ -0,0 +1,26 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.exceptions;
+
+/**
+ * token过期异常
+ */
+public class TokenTimeoutException extends RuntimeException{
+    public TokenTimeoutException() {
+        super();
+    }
+
+    public TokenTimeoutException(String message) {
+        super(message);
+    }
+
+    public TokenTimeoutException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public TokenTimeoutException(Throwable cause) {
+        super(cause);
+    }
+
+    protected TokenTimeoutException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+        super(message, cause, enableSuppression, writableStackTrace);
+    }
+}

+ 28 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/exceptions/UserNotExistException.java

@@ -0,0 +1,28 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.exceptions;
+
+/**
+ * 用户不存在的异常
+ */
+public class UserNotExistException extends RuntimeException {
+
+    public UserNotExistException() {
+        super();
+    }
+
+    public UserNotExistException(String message) {
+        super(message);
+    }
+
+    public UserNotExistException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public UserNotExistException(Throwable cause) {
+        super(cause);
+    }
+
+    protected UserNotExistException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+        super(message, cause, enableSuppression, writableStackTrace);
+    }
+
+}

+ 191 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/service/YysjAgencyService.java

@@ -0,0 +1,191 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.service;
+
+import info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.GetTokenRequest;
+import info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.remote.*;
+import javax.servlet.http.HttpServletResponse;
+
+public interface YysjAgencyService {
+    /**
+     * 登录接口
+     */
+    Object login(GetTokenRequest getTokenRequest, HttpServletResponse response);
+
+    /**
+     * 车辆查询接口
+     */
+    Object queryCarList(CarQueryParam carQueryParam, String token, HttpServletResponse response);
+
+    /**
+     * 车辆详情信息接口的实现
+     *
+     * @param carId
+     * @param token
+     * @return
+     */
+    Object queryCarInfo(String carId, String token, HttpServletResponse response);
+
+    /**
+     * 充值记录接口的实现
+     *
+     * @param queryParam
+     * @param token
+     * @return
+     */
+    Object queryRechargeInfoList(QueryParam queryParam, String token, HttpServletResponse response);
+
+    /**
+     * 调账单明细关系接口
+     */
+    Object queryBillList(HttpServletResponse response, QueryParam queryParam, String token);
+
+    /**
+     * 调运单列表
+     */
+    Object queryWaybillList(HttpServletResponse response,
+                                WaybillQueryParam waybillQueryParam,
+                                String token);
+
+    /**
+     * 调运单详情
+     *
+     * @param waybillId
+     * @param toekn
+     * @param response
+     * @return
+     */
+    Object querywaybillinfo(String waybillId,
+                            String token,
+                            HttpServletResponse response);
+
+    /**
+     * 查询司机校验信息列表接口
+     */
+    Object getDriverList(DriverInfoRequest driverInfoRequest,
+                         String token,
+                         HttpServletResponse response);
+
+    /**
+     * 查询司机详情信息接口
+     * @param driverDetailsRequest
+     * @param token
+     * @param response
+     * @return
+     */
+    Object getDriverDetails(DriverDetailsRequest driverDetailsRequest,
+                            String token,
+                            HttpServletResponse response);
+
+    /**
+     *
+     * @param token
+     * @param response
+     * @return
+     */
+    Object getAccountInfo(String token, HttpServletResponse response);
+
+    /**
+     * 产品消费信息接口
+     */
+    Object getConsumptionInfo(String token, HttpServletResponse response);
+
+    /**
+     * 主订单统计信息
+     * @param token
+     * @param response
+     * @return
+     */
+    Object getOrderStatistics(String token, HttpServletResponse response);
+
+    /**
+     * 总订单统计信息
+     * @param startTime
+     * @param endTime
+     * @param token
+     * @param response
+     * @return
+     */
+    Object getCountStatistics(String startTime,String endTime,String token,HttpServletResponse response);
+
+    /**
+     * 异常效验统计信息
+     * @return
+     */
+    Object getErrorStatistics(String startTime,String endTime,String token,HttpServletResponse response);
+
+    /**
+     * 新建产品接口
+     * @param produce
+     * @param token
+     * @param response
+     * @return
+     */
+    Object saveProduce(Produce produce, String token, HttpServletResponse response);
+
+    /**
+     * 查询产品列表接口
+     * @param produceList
+     * @param token
+     * @param response
+     * @return
+     */
+    Object productList(ProduceList produceList,String token, HttpServletResponse response);
+    
+    
+     /**
+     * 查询产品名称列表接口
+     * @param produceList
+     * @param token
+     * @param response
+     * @return
+     */
+    Object getProductNameList(String token, HttpServletResponse response);
+
+    /**
+     * 取消产品订购接口
+     * @return
+     */
+    Object deleteUserProduce(Integer produceId,
+                             String produceName,
+                             String token,
+                             HttpServletResponse response);
+
+    /**
+     * 订购产品接口
+     */
+    Object saveUserProduce(UserProduce userProduce,String token,HttpServletResponse response);
+
+    /**
+     * 获取订购产品数量
+     */
+    Object getOrderProductCount(String token,HttpServletResponse response);
+
+    /**
+     * 退出
+     * @param token
+     * @param response
+     * @return
+     */
+    Object logout(String token,HttpServletResponse response);
+
+    /**
+     * 订单
+     */
+    Object getOrderList(String orderId, String startTime,String endTime, Integer pageNum,Integer pageSize,String token,HttpServletResponse response);
+
+    /**
+     * 订单详情
+     */
+    Object getOrderDetail(String orderId,String token,HttpServletResponse response);
+
+
+    /**
+     * 身份认证列表查询接口
+     */
+    Object queryIdentityList(IdentityQueryParam identityQueryParam, String token, HttpServletResponse response);
+
+    /**
+     * 活体列表查询接口
+     */
+    Object queryLivingList(LivingQueryParam livingQueryParam, String token, HttpServletResponse response);
+
+}

+ 423 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/service/impl/YysjAgencyServiceImpl.java

@@ -0,0 +1,423 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.GetTokenRequest;
+import info.aspirecn.cloud.yysj.cloudyysjagency.entity.request.remote.*;
+import info.aspirecn.cloud.yysj.cloudyysjagency.service.YysjAgencyService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.*;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.HttpClientErrorException;
+import org.springframework.web.client.RestTemplate;
+import javax.servlet.http.HttpServletResponse;
+
+@Service
+public class YysjAgencyServiceImpl implements YysjAgencyService {
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Value("${yysj.host}")
+    private String host;
+
+    @Value("${yysj.url.authentication}")
+    private String authentication;
+
+    @Value("${yysj.url.carQuery}")
+    private String carQuery;
+
+    @Value("${yysj.url.costQuery}")
+    private String costQuery;
+
+    @Value("${yysj.url.waybillQuery}")
+    private String waybillQuery;
+
+
+    @Value("${yysj.url.eidQuery}")
+    private String eidQuery;
+
+    @Value("${yysj.url.driverQuery}")
+    private String driverQuery;
+
+    @Value("${yysj.url.analysisQuery}")
+    private String analysisQuery;
+
+    @Value("${yysj.url.productConfig}")
+    private String productConfig;
+
+    @Value("${yysj.url.orderQuery}")
+    private String orderQuery;
+
+    /**
+     * 登录
+     * @return Object
+     */
+    @Override
+    public Object login(GetTokenRequest getTokenRequest, HttpServletResponse response) {
+        String url = host + authentication + "/login";
+        Object object;
+        try {
+            object = restTemplate.postForObject(url, getTokenRequest, JSONObject.class);
+        } catch (HttpClientErrorException e) {
+            response.setStatus(e.getStatusCode().value());
+            object = JSONObject.parseObject(e.getResponseBodyAsString());
+
+        }
+        return object;
+    }
+
+    /**
+     * 车辆查询
+     *
+     * @return Object
+     */
+    @Override
+    public Object queryCarList(CarQueryParam carQueryParam, String token, HttpServletResponse response) {
+        String url = host + carQuery + "/querycar";
+        return postForObject(url,carQueryParam,token,response);
+    }
+
+    /**
+     * 车辆详情信息查询
+     * @return Object
+     */
+    @Override
+    public Object queryCarInfo(String carId, String token, HttpServletResponse response) {
+        String url = host + carQuery + "/querycarinfo/" + carId;
+        return getForObject(url,token,response);
+
+
+    }
+
+    /**
+     * 充值记录接口实现逻辑
+     * @return Object
+     */
+    @Override
+    public Object queryRechargeInfoList(QueryParam queryParam, String token, HttpServletResponse response) {
+        String url = host + costQuery +"/queryrecharge";
+        return postForObject(url,queryParam,token,response);
+    }
+
+    /**
+     * 调账单明细管理
+     * @return Object
+     */
+    @Override
+    public Object queryBillList(HttpServletResponse response, QueryParam queryParam, String token) {
+        String url = host + costQuery +"/querybill";
+        return postForObject(url,queryParam,token,response);
+    }
+
+    /**
+     * 调运单列表接口
+     * @return Object
+     */
+    @Override
+    public Object queryWaybillList(HttpServletResponse response, WaybillQueryParam waybillQueryParam, String token) {
+        String url = host + waybillQuery + "/querywaybill";
+        Object object;
+        HttpHeaders requestHeader = new HttpHeaders();
+        requestHeader.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
+        requestHeader.add("token", token);
+        String para = JSON.toJSONString(waybillQueryParam);
+        HttpEntity<String> requestEntity = new HttpEntity<>(para, requestHeader);
+        try {
+            object = restTemplate.postForEntity(url, requestEntity, JSONObject.class);
+        } catch (HttpClientErrorException e) {
+            response.setStatus(e.getStatusCode().value());
+            object = JSONObject.parseObject(e.getResponseBodyAsString());
+        }
+        return object;
+    }
+
+    /**
+     * 调运单详情
+     * @return Object
+     */
+
+    @Override
+    public Object querywaybillinfo(String waybillId, String token, HttpServletResponse response) {
+        String url =host + waybillQuery + "/querywaybillinfo/"+waybillId;
+
+        return getForObject(url,token,response);
+    }
+
+    /**
+     * 查询司机校验信息列表接口
+     * @return Object
+     */
+    @Override
+    public Object getDriverList(DriverInfoRequest driverInfoRequest, String token, HttpServletResponse response) {
+        String url = host + driverQuery + "/getDriverList";
+        return postForObject(url,driverInfoRequest,token,response);
+    }
+
+    /**
+     * 查询司机详情信息接口
+     * @return  Object
+     */
+    @Override
+    public Object getDriverDetails(DriverDetailsRequest driverDetailsRequest,
+                                   String token,
+                                   HttpServletResponse response) {
+        String url = host + driverQuery + "/getDriverDetails";
+
+        return postForObject(url,driverDetailsRequest,token,response);
+    }
+
+    /**
+     * 账户信息
+     * @return Object
+     */
+    @Override
+    public Object getAccountInfo(String token,HttpServletResponse response) {
+        String url = host + analysisQuery + "/accountInfo";
+        return getForObject(url,token,response);
+    }
+
+    /**
+     *  产品消费信息接口
+     * @return Object
+     */
+    @Override
+    public Object getConsumptionInfo(String token, HttpServletResponse response) {
+        String url = host + analysisQuery + "/consumptionInfo";
+        return getForObject(url,token,response);
+    }
+
+    /**
+     * 主订单统计信息
+     * @return Object
+     */
+    @Override
+    public Object getOrderStatistics(String token, HttpServletResponse response) {
+        String url = host + analysisQuery + "/statisticsInfo";
+        return getForObject(url,token,response);
+    }
+
+    /**
+     * 总订单统计信息
+     * @param startTime 开始日期
+     * @param endTime 结束日期
+     * @return Object
+     */
+    @Override
+    public Object getCountStatistics(String startTime, String endTime, String token, HttpServletResponse response) {
+        String url = host + analysisQuery + "/countStatisticsInfo?startTime="+startTime+"&endTime="+endTime;
+        return getForObject(url,token,response);
+    }
+
+    @Override
+    public Object getErrorStatistics(String startTime, String endTime, String token, HttpServletResponse response) {
+        String url = host + analysisQuery + "/exceptionStatisticsInfo?startTime="+startTime+"&endTime="+endTime;
+        return getForObject(url,token,response);
+    }
+
+    /**
+     * 新建产品接口
+     * @return Object
+     */
+    @Override
+    public Object saveProduce(Produce produce, String token, HttpServletResponse response) {
+        String url = host + productConfig + "/saveProduce";
+
+        return postForObject(url,produce,token,response);
+    }
+
+    /**
+     * 查询产品列表
+     * @return Object
+     */
+    @Override
+    public Object productList(ProduceList produceList, String token, HttpServletResponse response) {
+        String url = host + productConfig + "/productList";
+        return postForObject(url,produceList,token,response);
+    }
+
+ /**
+     * 查询产品名称列表
+     * @return Object
+     */
+    @Override
+    public Object getProductNameList(String token, HttpServletResponse response) {
+        String url = host + productConfig + "/getProductNameList";
+        return getForObject(url,token,response);
+    }
+
+
+    /**
+     * 取消产品订购接口
+     */
+    @Override
+    public Object deleteUserProduce(Integer produceId, String produceName, String token, HttpServletResponse response) {
+        Object object;
+        HttpHeaders requestHeader = new HttpHeaders();
+        requestHeader.add("token", token);
+        HttpEntity<String> requestEntity = new HttpEntity<>(requestHeader);
+        String url = host + productConfig + "/deleteUserProduce?produceId="+produceId+"&produceName="+produceName;
+        try {
+            object= restTemplate.exchange(url, HttpMethod.DELETE, requestEntity,Object.class, Object.class);
+        } catch (HttpClientErrorException e) {
+            response.setStatus(e.getStatusCode().value());
+            object = JSONObject.parseObject(e.getResponseBodyAsString());
+        }
+        return object;
+    }
+
+    /**
+     * 订购产品接口
+     * @return Object
+     */
+    @Override
+    public Object saveUserProduce(UserProduce userProduce, String token, HttpServletResponse response) {
+        String url = host + productConfig + "/saveUserProduce";
+        return postForObject(url,userProduce,token,response);
+    }
+
+
+    /**
+     * 获取订购产品数量
+     */
+    @Override
+    public Object getOrderProductCount(String token, HttpServletResponse response) {
+        String url = host + productConfig + "/getOrderProductCount";
+
+        return getForObject(url,token,response);
+    }
+
+    @Override
+    public Object logout(String token, HttpServletResponse response) {
+        String url = host + authentication + "/logout";
+        return getForObject(url,token,response);
+    }
+
+    /**
+     * 订单
+     * @param orderId
+     * @param startTime
+     * @param endTime
+     * @param pageNum
+     * @param pageSize
+     * @param token
+     * @param response
+     * @return
+     */
+    @Override
+    public Object getOrderList(String orderId, String startTime, String endTime, Integer pageNum, Integer pageSize, String token, HttpServletResponse response) {
+        String url = host + orderQuery + "/orderList?orderId="+orderId+"&startTime="+startTime+"&endTime="+endTime+"&pageNum="+pageNum+"&pageSize="+pageSize;
+        return getForObject(url,token,response);
+    }
+
+    /**
+     * 订单详情
+     * @param orderId
+     * @param token
+     * @param response
+     * @return
+     */
+    @Override
+    public Object getOrderDetail(String orderId, String token, HttpServletResponse response) {
+        String url = host + orderQuery + "/order/"+orderId;
+        return getForObject(url,token,response);
+    }
+
+
+    /**
+     * restTemplate post 接口
+     * @param url 请求url
+     * @param parama 请求参数
+     * @param token 请求token
+     * @param response 响应体
+     * @return Object
+     */
+    private Object postForObject(String url,Object parama,String token,HttpServletResponse response){
+        Object object;
+        HttpHeaders requestHeader = new HttpHeaders();
+        requestHeader.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
+        requestHeader.add("token", token);
+        String para = JSON.toJSONString(parama);
+        HttpEntity<String> requestEntity = new HttpEntity<>(para, requestHeader);
+        try {
+            object = restTemplate.postForEntity(url, requestEntity, JSONObject.class);
+        } catch (HttpClientErrorException e) {
+            response.setStatus(e.getStatusCode().value());
+            object = JSONObject.parseObject(e.getResponseBodyAsString());
+        }
+        return object;
+    }
+
+    /**
+     *  restTemplate get请求
+     * @param url 请求url
+     * @param token 请求头token
+     * @param response  response
+     * @return Object
+     */
+    private Object getForObject(String url,String token,HttpServletResponse response){
+        Object object;
+        HttpHeaders requestHeader = new HttpHeaders();
+        requestHeader.add("token", token);
+        HttpEntity<String> requestEntity = new HttpEntity<>(requestHeader);
+        try {
+            object = restTemplate.exchange(url, HttpMethod.GET, requestEntity, Object.class);
+        } catch (HttpClientErrorException e) {
+            response.setStatus(e.getStatusCode().value());
+            object = JSONObject.parseObject(e.getResponseBodyAsString());
+
+
+        }
+        return object;
+    }
+
+
+
+    /**
+     * 活体列表接口
+     * @return Object
+     */
+    @Override
+    public Object queryIdentityList(IdentityQueryParam identityQueryParam, String token, HttpServletResponse response) {
+        String url = host + eidQuery + "/getIdentityList";
+        Object object;
+        HttpHeaders requestHeader = new HttpHeaders();
+        requestHeader.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
+        requestHeader.add("token", token);
+        String para = JSON.toJSONString(identityQueryParam);
+        HttpEntity<String> requestEntity = new HttpEntity<>(para, requestHeader);
+        try {
+            object = restTemplate.postForEntity(url, requestEntity, JSONObject.class);
+        } catch (HttpClientErrorException e) {
+            response.setStatus(e.getStatusCode().value());
+            object = JSONObject.parseObject(e.getResponseBodyAsString());
+        }
+        return object;
+    }
+
+
+
+    /**
+     * 活体列表接口
+     * @return Object
+     */
+    @Override
+    public Object queryLivingList(LivingQueryParam livingQueryParam, String token, HttpServletResponse response) {
+        String url = host + eidQuery + "/getLivingList";
+        Object object;
+        HttpHeaders requestHeader = new HttpHeaders();
+        requestHeader.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
+        requestHeader.add("token", token);
+        String para = JSON.toJSONString(livingQueryParam);
+        HttpEntity<String> requestEntity = new HttpEntity<>(para, requestHeader);
+        try {
+            object = restTemplate.postForEntity(url, requestEntity, JSONObject.class);
+        } catch (HttpClientErrorException e) {
+            response.setStatus(e.getStatusCode().value());
+            object = JSONObject.parseObject(e.getResponseBodyAsString());
+        }
+        return object;
+    }
+
+}

+ 142 - 0
src/main/java/info/aspirecn/cloud/yysj/cloudyysjagency/utils/RSAUtil.java

@@ -0,0 +1,142 @@
+package info.aspirecn.cloud.yysj.cloudyysjagency.utils;
+
+import java.security.*;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.security.spec.X509EncodedKeySpec;
+import java.util.Base64;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 签名工具
+ */
+public class RSAUtil {
+
+    public static final String KEY_ALGORITHM = "RSA";
+    //设置长度
+    public static final int KEY_SIZE = 2048;
+    public static final String PUBLIC_KEY_NAME = "publicKey";
+    public static final String PRIVATE_KEY_NAME = "privateKey";
+    public static final String SIGNATURE_ALGORITHM = "SHA256withRSA";
+    public static final String ENCODE_ALGORITHM = "SHA-256";
+
+    /**
+     * 生成公、私钥
+     * 根据需要返回String或byte[]类型
+     * @return
+     */
+    public static Map<String, String> createRSAKeys(){
+        Map<String, String> keyPairMap = new HashMap<String, String>();
+        try {
+            KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
+            keyPairGenerator.initialize(KEY_SIZE, new SecureRandom());
+            KeyPair keyPair = keyPairGenerator.generateKeyPair();
+
+            PublicKey publicKey = keyPair.getPublic();
+            PrivateKey privateKey = keyPair.getPrivate();
+            /*Map<String, byte[]> byteMap = new HashMap<String, byte[]>();
+            byteMap.put(PUBLIC_KEY_NAME, publicKey.getEncoded());
+            byteMap.put(PRIVATE_KEY_NAME, privateKey.getEncoded());*/
+
+            //获取公、私钥值
+            String publicKeyValue = Base64.getEncoder().encodeToString(publicKey.getEncoded());
+            String privateKeyValue = Base64.getEncoder().encodeToString(privateKey.getEncoded());
+
+            //存入
+            keyPairMap.put(PUBLIC_KEY_NAME, publicKeyValue);
+            keyPairMap.put(PRIVATE_KEY_NAME, privateKeyValue);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return keyPairMap;
+    }
+    /**
+     * 解码PublicKey
+     * @param key
+     * @return
+     */
+    public static PublicKey getPublicKey(String key) {
+        try {
+            byte[] byteKey = Base64.getDecoder().decode(key);
+            X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(byteKey);
+            KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
+            return keyFactory.generatePublic(x509EncodedKeySpec);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+    /**
+     * 解码PrivateKey
+     * @param key
+     * @return
+     */
+    public static PrivateKey getPrivateKey(String key) {
+        try {
+            byte[] byteKey = Base64.getDecoder().decode(key);
+            PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(byteKey);
+            KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
+
+            return keyFactory.generatePrivate(pkcs8EncodedKeySpec);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
+
+    /**
+     * 签名
+     * @param key	私钥
+     * @param requestData	请求参数
+     * @return
+     */
+    public static String sign(String key, Object requestData){
+        String signature = null;
+        byte[] signed = null;
+        try {
+            PrivateKey privateKey = getPrivateKey(key);
+            String str = String.valueOf(requestData);
+            Signature Sign = Signature.getInstance(SIGNATURE_ALGORITHM);
+            Sign.initSign(privateKey);
+            Sign.update(str.getBytes());
+            signed = Sign.sign();
+            signature = Base64.getEncoder().encodeToString(signed);
+            System.out.println("===签名结果:"+signature);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return signature;
+    }
+
+    /**
+     * 验签
+     * @param key	公钥
+     * @param requestData	请求参数
+     * @param signature	签名
+     * @return
+     */
+    public static boolean verifySign(String key, String requestData, String signature){
+        boolean verifySignSuccess = false;
+        try {
+            PublicKey publicKey = getPublicKey(key);
+
+            Signature verifySign = Signature.getInstance(SIGNATURE_ALGORITHM);
+            System.err.println("verifySign:"+verifySign);
+            verifySign.initVerify(publicKey);
+            verifySign.update(requestData.getBytes());
+
+            verifySignSuccess = verifySign.verify(Base64.getDecoder().decode(signature));
+            System.out.println("===验签结果:"+verifySignSuccess);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return verifySignSuccess;
+    }
+
+
+}

+ 35 - 0
src/main/resources/application.yaml

@@ -0,0 +1,35 @@
+spring:
+  application:
+    name: cloud-yysj-agency
+  mvc:
+    view:
+      suffix: .html
+      prefix: /
+    static-path-pattern: /**
+  resources:
+    static-locations: classpath:/static
+#  monitor
+management:
+  server:
+    port: 8081
+  endpoint:
+    health:
+      show-details: always
+  endpoints:
+    enabled-by-default: true
+    web:
+      exposure:
+        include: "*"
+yysj:
+  host: "http://cloud-yysj-gateway-protal.cloud-yysj:8080"
+#  host: "http://api.aspire-data.cn/yysj"
+  url:
+    authentication: "/authentication"
+    carQuery: "/carQuery"
+    costQuery: "/costQuery"
+    waybillQuery: "/waybillQuery"
+    driverQuery: "/driverQuery"
+    analysisQuery: "/analysisQuery"
+    productConfig: "/productConfig"
+    orderQuery: "/orderQuery"
+    eidQuery: "/eidQuery"

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 195 - 0
src/main/resources/static/index.html


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 2 - 0
src/main/resources/static/static/assets/jquery-3.3.1.min.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/assets/json/map.json


+ 256 - 0
src/main/resources/static/static/assets/md5.js

@@ -0,0 +1,256 @@
+/*
+ * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
+ * Digest Algorithm, as defined in RFC 1321.
+ * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ * Distributed under the BSD License
+ * See http://pajhome.org.uk/crypt/md5 for more info.
+ */
+
+/*
+ * Configurable variables. You may need to tweak these to be compatible with
+ * the server-side, but the defaults work in most cases.
+ */
+var hexcase = 0;  /* hex output format. 0 - lowercase; 1 - uppercase        */
+var b64pad  = ""; /* base-64 pad character. "=" for strict RFC compliance   */
+var chrsz   = 8;  /* bits per input character. 8 - ASCII; 16 - Unicode      */
+
+/*
+ * These are the functions you'll usually want to call
+ * They take string arguments and return either hex or base-64 encoded strings
+ */
+function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
+function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
+function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
+function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
+function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
+function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }
+
+/*
+ * Perform a simple self-test to see if the VM is working
+ */
+function md5_vm_test()
+{
+  return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
+}
+
+/*
+ * Calculate the MD5 of an array of little-endian words, and a bit length
+ */
+function core_md5(x, len)
+{
+  /* append padding */
+  x[len >> 5] |= 0x80 << ((len) % 32);
+  x[(((len + 64) >>> 9) << 4) + 14] = len;
+
+  var a =  1732584193;
+  var b = -271733879;
+  var c = -1732584194;
+  var d =  271733878;
+
+  for(var i = 0; i < x.length; i += 16)
+  {
+    var olda = a;
+    var oldb = b;
+    var oldc = c;
+    var oldd = d;
+
+    a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
+    d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
+    c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
+    b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
+    a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
+    d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
+    c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
+    b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
+    a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
+    d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
+    c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
+    b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
+    a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
+    d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
+    c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
+    b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);
+
+    a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
+    d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
+    c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);
+    b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
+    a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
+    d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
+    c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
+    b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
+    a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
+    d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
+    c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
+    b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
+    a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
+    d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
+    c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
+    b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
+
+    a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
+    d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
+    c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
+    b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
+    a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
+    d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
+    c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
+    b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
+    a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
+    d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
+    c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
+    b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
+    a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
+    d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
+    c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);
+    b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
+
+    a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
+    d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
+    c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
+    b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
+    a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
+    d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
+    c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
+    b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
+    a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
+    d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
+    c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
+    b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
+    a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
+    d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
+    c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
+    b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
+
+    a = safe_add(a, olda);
+    b = safe_add(b, oldb);
+    c = safe_add(c, oldc);
+    d = safe_add(d, oldd);
+  }
+  return Array(a, b, c, d);
+
+}
+
+/*
+ * These functions implement the four basic operations the algorithm uses.
+ */
+function md5_cmn(q, a, b, x, s, t)
+{
+  return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
+}
+function md5_ff(a, b, c, d, x, s, t)
+{
+  return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
+}
+function md5_gg(a, b, c, d, x, s, t)
+{
+  return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
+}
+function md5_hh(a, b, c, d, x, s, t)
+{
+  return md5_cmn(b ^ c ^ d, a, b, x, s, t);
+}
+function md5_ii(a, b, c, d, x, s, t)
+{
+  return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
+}
+
+/*
+ * Calculate the HMAC-MD5, of a key and some data
+ */
+function core_hmac_md5(key, data)
+{
+  var bkey = str2binl(key);
+  if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
+
+  var ipad = Array(16), opad = Array(16);
+  for(var i = 0; i < 16; i++)
+  {
+    ipad[i] = bkey[i] ^ 0x36363636;
+    opad[i] = bkey[i] ^ 0x5C5C5C5C;
+  }
+
+  var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
+  return core_md5(opad.concat(hash), 512 + 128);
+}
+
+/*
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally
+ * to work around bugs in some JS interpreters.
+ */
+function safe_add(x, y)
+{
+  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
+  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+  return (msw << 16) | (lsw & 0xFFFF);
+}
+
+/*
+ * Bitwise rotate a 32-bit number to the left.
+ */
+function bit_rol(num, cnt)
+{
+  return (num << cnt) | (num >>> (32 - cnt));
+}
+
+/*
+ * Convert a string to an array of little-endian words
+ * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
+ */
+function str2binl(str)
+{
+  var bin = Array();
+  var mask = (1 << chrsz) - 1;
+  for(var i = 0; i < str.length * chrsz; i += chrsz)
+    bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
+  return bin;
+}
+
+/*
+ * Convert an array of little-endian words to a string
+ */
+function binl2str(bin)
+{
+  var str = "";
+  var mask = (1 << chrsz) - 1;
+  for(var i = 0; i < bin.length * 32; i += chrsz)
+    str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
+  return str;
+}
+
+/*
+ * Convert an array of little-endian words to a hex string.
+ */
+function binl2hex(binarray)
+{
+  var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
+  var str = "";
+  for(var i = 0; i < binarray.length * 4; i++)
+  {
+    str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
+           hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);
+  }
+  return str;
+}
+
+/*
+ * Convert an array of little-endian words to a base-64 string
+ */
+function binl2b64(binarray)
+{
+  var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+  var str = "";
+  for(var i = 0; i < binarray.length * 4; i += 3)
+  {
+    var triplet = (((binarray[i   >> 2] >> 8 * ( i   %4)) & 0xFF) << 16)
+                | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
+                |  ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
+    for(var j = 0; j < 4; j++)
+    {
+      if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
+      else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
+    }
+  }
+  return str;
+}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 7 - 0
src/main/resources/static/static/assets/vue-resource.min.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 6 - 0
src/main/resources/static/static/assets/vue-router.min.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 6 - 0
src/main/resources/static/static/assets/vue.min.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 6 - 0
src/main/resources/static/static/assets/vuex.min.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/css/app.fc390bdf8e3dc062da4fe34a0e440b64.css


BIN
src/main/resources/static/static/favicon.ico


BIN
src/main/resources/static/static/fonts/element-icons.535877f.woff


BIN
src/main/resources/static/static/fonts/element-icons.732389d.ttf


BIN
src/main/resources/static/static/img/404.a57b6f3.a57b6f3.png


BIN
src/main/resources/static/static/img/loginBg.a796f12.png


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/0.5d1998345a3c9cb5f4dd.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/1.7ca4d41478b3a1a36947.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/10.2693159687746b65372e.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/11.5c5c1b6318b6cae7d716.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/11.d79fdc31e4220c616446.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/12.149cdd1504177a31fe06.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/12.49d57b2d701c9e4d3ab6.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/13.850d643ce570d9bade7b.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/14.d5132ea3147f3c03d0fc.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/15.9a22a31a3feddf619e42.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/2.2b4a161c7b9820551733.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/2.c16a42eef07e6d9dbfc4.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/3.295af4e072705bcaff81.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/4.b9fa59c906918d3f7289.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/5.9bdf4c1e9c60ea8f0080.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/5.b60e6dce198e87eaf7a5.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/6.4509479f919ca29ce220.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/6.9cdfaf4c19b906d50ebe.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/7.9b64a4bc193313090484.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/8.c42d970fd506525408f1.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/9.c794c5fd895f0c7d77f4.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/app.77cb31aafaa38cde7dfa.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/manifest.9fa51aa0ff198a52b5f6.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
src/main/resources/static/static/js/manifest.de844783d156286e0ae0.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 21 - 0
src/main/resources/static/static/js/vendor.331ca8ea28861c548f78.js