New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> |
| | | <component name="FacetManager"> |
| | | <facet type="Spring" name="Spring"> |
| | | <configuration /> |
| | | </facet> |
| | | <facet type="web" name="Web"> |
| | | <configuration> |
| | | <webroots> |
| | | <root url="file://$MODULE_DIR$/lib" relative="WEB-INF/lib/" /> |
| | | <root url="file://$MODULE_DIR$/src/main/webapp" relative="/" /> |
| | | </webroots> |
| | | <sourceRoots> |
| | | <root url="file://$MODULE_DIR$/lib" /> |
| | | <root url="file://$MODULE_DIR$/src/main/java" /> |
| | | <root url="file://$MODULE_DIR$/src/main/resources" /> |
| | | <root url="file://$MODULE_DIR$/src/main/webapp" /> |
| | | </sourceRoots> |
| | | </configuration> |
| | | </facet> |
| | | </component> |
| | | <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8"> |
| | | <output url="file://$MODULE_DIR$/target/classes" /> |
| | | <output-test url="file://$MODULE_DIR$/target/test-classes" /> |
| | | <content url="file://$MODULE_DIR$"> |
| | | <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> |
| | | <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> |
| | | <sourceFolder url="file://$MODULE_DIR$/src/main/webapp" type="java-resource" /> |
| | | <sourceFolder url="file://$MODULE_DIR$/lib" type="java-resource" /> |
| | | <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> |
| | | <excludeFolder url="file://$MODULE_DIR$/target" /> |
| | | </content> |
| | | <orderEntry type="inheritedJdk" /> |
| | | <orderEntry type="sourceFolder" forTests="false" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-eureka-client:2.0.1.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter:2.0.1.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-context:2.0.1.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.security:spring-security-crypto:5.0.4.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-commons:2.0.1.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.security:spring-security-rsa:1.0.5.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.56" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-core:2.0.1.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-eureka-client:2.0.1.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.netflix.eureka:eureka-client:1.9.3" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.netflix-commons:netflix-eventbus:0.3.0" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.netflix-commons:netflix-infix:0.3.0" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: commons-jxpath:commons-jxpath:1.3" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: joda-time:joda-time:2.9.9" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: org.antlr:antlr-runtime:3.4" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: org.antlr:stringtemplate:3.2.1" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: antlr:antlr:2.7.7" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.commons:commons-math:2.2" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.netflix.archaius:archaius-core:0.7.6" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: javax.ws.rs:jsr311-api:1.1.1" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.servo:servo-core:0.12.21" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey:jersey-core:1.19.1" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey:jersey-client:1.19.1" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey.contribs:jersey-apache-client4:1.19.1" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: com.google.inject:guice:4.1.0" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: javax.inject:javax.inject:1" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: aopalliance:aopalliance:1.0" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: com.github.vlsi.compactmap:compactmap:1.2.1" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: com.github.andrewoma.dexx:dexx-collections:0.2" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.5" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.netflix.eureka:eureka-core:1.9.3" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: org.codehaus.woodstox:woodstox-core-asl:4.4.1" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: javax.xml.stream:stax-api:1.0-2" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: org.codehaus.woodstox:stax2-api:3.1.4" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-archaius:2.0.1.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-archaius:2.0.1.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: commons-configuration:commons-configuration:1.8" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-ribbon:2.0.1.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon:2.2.5" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.ribbon:ribbon-transport:2.2.5" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty-contexts:0.4.9" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty-servo:0.4.9" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty:0.4.9" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-codec-http:4.1.23.Final" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-codec:4.1.23.Final" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-epoll:4.1.23.Final" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-common:4.1.23.Final" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-buffer:4.1.23.Final" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-unix-common:4.1.23.Final" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport:4.1.23.Final" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-resolver:4.1.23.Final" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-core:2.2.5" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-httpclient:2.2.5" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.netflix-commons:netflix-commons-util:0.3.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-loadbalancer:2.2.5" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.netflix-commons:netflix-statistics:0.1.1" level="project" /> |
| | | <orderEntry type="library" name="Maven: io.reactivex:rxjava:1.3.8" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-eureka:2.2.5" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.10" level="project" /> |
| | | <orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" /> |
| | | <orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-hystrix:2.0.1.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-ribbon:2.0.1.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-core:1.5.12" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.hdrhistogram:HdrHistogram:2.1.9" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-serialization:1.5.12" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: com.fasterxml.jackson.module:jackson-module-afterburner:2.9.5" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-metrics-event-stream:1.5.12" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-javanica:1.5.12" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: org.ow2.asm:asm:5.0.4" level="project" /> |
| | | <orderEntry type="library" name="Maven: io.reactivex:rxjava-reactive-streams:1.2.1" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: org.reactivestreams:reactive-streams:1.0.2" level="project" /> |
| | | <orderEntry type="module" module-name="guns-core" /> |
| | | <orderEntry type="library" name="Maven: com.baomidou:mybatisplus-spring-boot-starter:1.0.5" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-configuration-processor:2.0.4.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:2.3" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-support:2.3" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:2.3" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:1.1" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:1.3.2" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.4.6" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.apache.velocity:velocity:1.7" level="project" /> |
| | | <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" /> |
| | | <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.4" level="project" /> |
| | | <orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.11" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: com.google.protobuf:protobuf-java:2.6.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.0.4.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:2.7.9" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.0.5.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.0.5.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.alibaba:druid:1.1.10" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.47" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.7" level="project" /> |
| | | <orderEntry type="module" module-name="guns-generator" /> |
| | | <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-generate:2.3" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.0.4.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.0.4.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.0.4.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" /> |
| | | <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.10.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.10.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.25" level="project" /> |
| | | <orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.19" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.0.5.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.0.5.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.8.13" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.0.4.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.0.4.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.5" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.5" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.5" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.11.Final" level="project" /> |
| | | <orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework:spring-web:5.0.5.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.0.5.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.0.5.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-cache:2.0.4.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework:spring-context:5.0.5.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.0.5.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:2.0.4.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:8.5.32" level="project" /> |
| | | <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.0.4.RELEASE" level="project" /> |
| | | <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.0.4.RELEASE" level="project" /> |
| | | <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.0.4.RELEASE" level="project" /> |
| | | <orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.4.0" level="project" /> |
| | | <orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.3" level="project" /> |
| | | <orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.2" level="project" /> |
| | | <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" /> |
| | | <orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.9.1" level="project" /> |
| | | <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:2.15.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.7.11" level="project" /> |
| | | <orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.7.11" level="project" /> |
| | | <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.6" level="project" /> |
| | | <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" /> |
| | | <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" /> |
| | | <orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" /> |
| | | <orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework:spring-core:5.0.8.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.0.5.RELEASE" level="project" /> |
| | | <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.0.5.RELEASE" level="project" /> |
| | | <orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.5.1" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-devtools:2.0.4.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.0.4.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.0.4.RELEASE" level="project" /> |
| | | <orderEntry type="library" scope="PROVIDED" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.0.4.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" /> |
| | | <orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:8.5.32" level="project" /> |
| | | <orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.5.32" level="project" /> |
| | | <orderEntry type="library" scope="PROVIDED" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.7.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.7.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.apache.shiro:shiro-cache:1.7.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-hash:1.7.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-core:1.7.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-cipher:1.7.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-core:1.7.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-ogdl:1.7.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.4" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.apache.shiro:shiro-event:1.7.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring:1.7.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.apache.shiro:shiro-web:1.7.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.owasp.encoder:encoder:1.2.2" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.apache.shiro:shiro-ehcache:1.7.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: net.sf.ehcache:ehcache-core:2.6.11" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.ehcache:ehcache:3.3.1" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.github.penggle:kaptcha:2.3.2" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.jhlabs:filters:2.0.235-1" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.google.zxing:core:3.2.1" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.ibeetl:beetl:2.8.5" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.antlr:antlr4-runtime:4.2" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.abego.treelayout:org.abego.treelayout.core:1.0.1" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.antlr:antlr4-annotations:4.2" level="project" /> |
| | | <orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" /> |
| | | <orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.20" level="project" /> |
| | | <orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.20" level="project" /> |
| | | <orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" /> |
| | | <orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" /> |
| | | <orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" /> |
| | | <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.9.2" level="project" /> |
| | | <orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.9.2" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.google.guava:guava:20.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.3.4" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" level="project" /> |
| | | <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" level="project" /> |
| | | <orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.5" level="project" /> |
| | | <orderEntry type="library" name="Maven: redis.clients:jedis:2.9.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.5.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: cn.jpush.api:jpush-client:3.3.10" level="project" /> |
| | | <orderEntry type="library" name="Maven: cn.jpush.api:jiguang-common:1.1.3" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.6" level="project" /> |
| | | <orderEntry type="library" name="Maven: io.netty:netty-all:4.1.23.Final" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.5" level="project" /> |
| | | <orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" /> |
| | | <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.4.01" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.alipay.sdk:alipay-sdk-java:4.8.10.ALL" level="project" /> |
| | | <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.1" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.62" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.aliyun.oss:aliyun-sdk-oss:3.8.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.jdom:jdom:1.1" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.codehaus.jettison:jettison:1.1" level="project" /> |
| | | <orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-ram:3.0.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-sts:3.0.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-ecs:4.2.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-core:4.4.3" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.10" level="project" /> |
| | | <orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.0" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.jacoco:org.jacoco.agent:runtime:0.8.3" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.ini4j:ini4j:0.5.4" level="project" /> |
| | | <orderEntry type="library" name="Maven: org.gavaghan:geodesy:1.1.3" level="project" /> |
| | | <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.13" level="project" /> |
| | | </component> |
| | | </module> |
New file |
| | |
| | | <?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <modelVersion>4.0.0</modelVersion> |
| | | <parent> |
| | | <groupId>com.stylefeng</groupId> |
| | | <artifactId>guns-parent</artifactId> |
| | | <version>1.0.0</version> |
| | | <relativePath>../pom.xml</relativePath> |
| | | </parent> |
| | | |
| | | <artifactId>guns-admin</artifactId> |
| | | <name>guns-admin</name> |
| | | <description>guns 的spring boot版本</description> |
| | | |
| | | <packaging>jar</packaging> |
| | | |
| | | <dependencies> |
| | | <dependency> |
| | | <groupId>org.springframework.cloud</groupId> |
| | | <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> |
| | | </dependency> |
| | | <!--整合hystrix--> |
| | | <dependency> |
| | | <groupId>org.springframework.cloud</groupId> |
| | | <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.stylefeng</groupId> |
| | | <artifactId>guns-core</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.stylefeng</groupId> |
| | | <artifactId>guns-generator</artifactId> |
| | | </dependency> |
| | | |
| | | <!--spring boot依赖--> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-aop</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-web</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-cache</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-validation</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-test</artifactId> |
| | | <scope>test</scope> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-devtools</artifactId> |
| | | <optional>true</optional> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-tomcat</artifactId> |
| | | <scope>provided</scope> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>javax.servlet</groupId> |
| | | <artifactId>javax.servlet-api</artifactId> |
| | | <version>3.1.0</version> |
| | | <scope>provided</scope> |
| | | </dependency> |
| | | |
| | | <!--shiro依赖--> |
| | | <dependency> |
| | | <groupId>org.apache.shiro</groupId> |
| | | <artifactId>shiro-core</artifactId> |
| | | <exclusions> |
| | | <exclusion> |
| | | <artifactId>slf4j-api</artifactId> |
| | | <groupId>org.slf4j</groupId> |
| | | </exclusion> |
| | | </exclusions> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.apache.shiro</groupId> |
| | | <artifactId>shiro-spring</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.apache.shiro</groupId> |
| | | <artifactId>shiro-ehcache</artifactId> |
| | | <exclusions> |
| | | <exclusion> |
| | | <artifactId>slf4j-api</artifactId> |
| | | <groupId>org.slf4j</groupId> |
| | | </exclusion> |
| | | </exclusions> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.ehcache</groupId> |
| | | <artifactId>ehcache</artifactId> |
| | | </dependency> |
| | | |
| | | <!--需要分布式session的话需要放开注释--> |
| | | <!--<dependency>--> |
| | | <!--<groupId>org.springframework.session</groupId>--> |
| | | <!--<artifactId>spring-session-data-redis</artifactId>--> |
| | | <!--</dependency>--> |
| | | <!--<dependency>--> |
| | | <!--<groupId>org.springframework.boot</groupId>--> |
| | | <!--<artifactId>spring-boot-starter-data-redis</artifactId>--> |
| | | <!--</dependency>--> |
| | | |
| | | <dependency> |
| | | <groupId>com.github.penggle</groupId> |
| | | <artifactId>kaptcha</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.google.zxing</groupId> |
| | | <artifactId>core</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.ibeetl</groupId> |
| | | <artifactId>beetl</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>io.springfox</groupId> |
| | | <artifactId>springfox-swagger2</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>io.springfox</groupId> |
| | | <artifactId>springfox-swagger-ui</artifactId> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>io.jsonwebtoken</groupId> |
| | | <artifactId>jjwt</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>redis.clients</groupId> |
| | | <artifactId>jedis</artifactId> |
| | | <version>2.9.0</version> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>cn.jpush.api</groupId> |
| | | <artifactId>jpush-client</artifactId> |
| | | <version>3.3.10</version> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>dom4j</groupId> |
| | | <artifactId>dom4j</artifactId> |
| | | <version>1.6.1</version> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>com.alipay.sdk</groupId> |
| | | <artifactId>alipay-sdk-java</artifactId> |
| | | <version>4.8.10.ALL</version> |
| | | </dependency> |
| | | <!-- oos对象存储 --> |
| | | <dependency> |
| | | <groupId>com.aliyun.oss</groupId> |
| | | <artifactId>aliyun-sdk-oss</artifactId> |
| | | <version>3.8.0</version> |
| | | </dependency> |
| | | <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-core --> |
| | | <dependency> |
| | | <groupId>com.aliyun</groupId> |
| | | <artifactId>aliyun-java-sdk-core</artifactId> |
| | | <version>4.4.3</version> |
| | | </dependency> |
| | | |
| | | <!-- 计算两坐标间的直线距离 --> |
| | | <dependency> |
| | | <groupId>org.gavaghan</groupId> |
| | | <artifactId>geodesy</artifactId> |
| | | <version>1.1.3</version> |
| | | </dependency> |
| | | |
| | | <!--引入本地工行支付jar start--> |
| | | <!--<dependency>--> |
| | | <!--<groupId>com.icbc</groupId>--> |
| | | <!--<artifactId>icbc</artifactId>--> |
| | | <!--<version>v2</version>--> |
| | | <!--<scope>system</scope>--> |
| | | <!--<systemPath>${project.basedir}/lib/icbc-api-sdk-cop.jar</systemPath>--> |
| | | <!--</dependency>--> |
| | | <!--<dependency>--> |
| | | <!--<groupId>com.icbc.api</groupId>--> |
| | | <!--<artifactId>icbc</artifactId>--> |
| | | <!--<version>v2</version>--> |
| | | <!--<scope>system</scope>--> |
| | | <!--<systemPath>${project.basedir}/lib/icbc-api-sdk-cop-io.jar</systemPath>--> |
| | | <!--</dependency>--> |
| | | <!--<dependency>--> |
| | | <!--<groupId>cn.com.infosec</groupId>--> |
| | | <!--<artifactId>icbc</artifactId>--> |
| | | <!--<version>v2</version>--> |
| | | <!--<scope>system</scope>--> |
| | | <!--<systemPath>${project.basedir}/lib/icbc-ca.jar</systemPath>--> |
| | | <!--</dependency>--> |
| | | <!--<dependency>--> |
| | | <!--<groupId>cn.com.infosecCrypto</groupId>--> |
| | | <!--<artifactId>icbc</artifactId>--> |
| | | <!--<version>v2</version>--> |
| | | <!--<scope>system</scope>--> |
| | | <!--<systemPath>${project.basedir}/lib/InfosecCrypto_Java1_02_JDK14+.jar</systemPath>--> |
| | | <!--</dependency>--> |
| | | <!--<dependency>--> |
| | | <!--<groupId>proguard</groupId>--> |
| | | <!--<artifactId>icbc</artifactId>--> |
| | | <!--<version>v2</version>--> |
| | | <!--<scope>system</scope>--> |
| | | <!--<systemPath>${project.basedir}/lib/proguard.jar</systemPath>--> |
| | | <!--</dependency>--> |
| | | <!--引入本地工行支付jar end--> |
| | | |
| | | <dependency> |
| | | <groupId>commons-codec</groupId> |
| | | <artifactId>commons-codec</artifactId> |
| | | <version>1.13</version> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | <build> |
| | | |
| | | <!--打包jar包方式--> |
| | | <plugins> |
| | | <plugin> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-maven-plugin</artifactId> |
| | | <configuration> |
| | | <fork>true</fork><!-- 如果没有该项配置,肯呢个devtools不会起作用,即应用不会restart --> |
| | | </configuration> |
| | | </plugin> |
| | | </plugins> |
| | | |
| | | <!--打包war包引入本地jar的打包方式--> |
| | | <!--<plugins>--> |
| | | <!--<plugin>--> |
| | | <!--<groupId>org.apache.maven.plugins</groupId>--> |
| | | <!--<artifactId>maven-war-plugin</artifactId>--> |
| | | <!--<configuration>--> |
| | | <!--<!– 设置成false,否则检查web.xml是否存在。因为springboot是没有web.xml的 –>--> |
| | | <!--<failOnMissingWebXml>false</failOnMissingWebXml>--> |
| | | <!--<!–打包后的项目名–>--> |
| | | <!--<!–<warName>example</warName>–>--> |
| | | <!--<webResources>--> |
| | | <!--<resource>--> |
| | | <!--<!–把本地lib里面的jar复制到lib–>--> |
| | | <!--<directory>${project.basedir}/lib</directory>--> |
| | | <!--<targetPath>WEB-INF/lib/</targetPath>--> |
| | | <!--<includes>--> |
| | | <!--<include>**/*.jar</include>--> |
| | | <!--</includes>--> |
| | | <!--</resource>--> |
| | | <!--</webResources>--> |
| | | <!--</configuration>--> |
| | | <!--</plugin>--> |
| | | <!--</plugins>--> |
| | | |
| | | |
| | | <resources> |
| | | <resource> |
| | | <directory>lib</directory> |
| | | <targetPath>/BOOT-INF/lib/</targetPath> |
| | | <includes> |
| | | <include>**/*.jar</include> |
| | | </includes> |
| | | </resource> |
| | | <resource> |
| | | <directory>src/main/webapp</directory> |
| | | </resource> |
| | | <resource> |
| | | <directory>src/main/resources</directory> |
| | | <filtering>true</filtering> |
| | | </resource> |
| | | <resource> |
| | | <directory>src/main/java</directory> |
| | | <includes> |
| | | <include>**/*.xml</include> |
| | | </includes> |
| | | </resource> |
| | | </resources> |
| | | </build> |
| | | |
| | | </project> |
New file |
| | |
| | | package com.stylefeng.guns; |
| | | |
| | | import com.stylefeng.guns.modular.system.util.GDFalconUtil; |
| | | import org.apache.http.client.HttpClient; |
| | | import org.apache.http.config.SocketConfig; |
| | | import org.apache.http.impl.client.HttpClientBuilder; |
| | | import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.SpringApplication; |
| | | import org.springframework.boot.autoconfigure.SpringBootApplication; |
| | | import org.springframework.boot.builder.SpringApplicationBuilder; |
| | | import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; |
| | | import org.springframework.cloud.client.loadbalancer.LoadBalanced; |
| | | import org.springframework.cloud.netflix.eureka.EnableEurekaClient; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; |
| | | import org.springframework.http.converter.StringHttpMessageConverter; |
| | | import org.springframework.scheduling.annotation.EnableScheduling; |
| | | import org.springframework.transaction.annotation.EnableTransactionManagement; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | import java.nio.charset.StandardCharsets; |
| | | |
| | | /** |
| | | * SpringBoot方式启动类 |
| | | * |
| | | * @author stylefeng |
| | | * @Date 2017/5/21 12:06 |
| | | */ |
| | | @EnableEurekaClient//注册为服务提供者 |
| | | @SpringBootApplication |
| | | @EnableScheduling//开启定时任务 |
| | | @EnableTransactionManagement//启动事务功能 |
| | | public class GunsApplication { |
| | | |
| | | private final static Logger logger = LoggerFactory.getLogger(GunsApplication.class); |
| | | |
| | | public static void main(String[] args) { |
| | | SpringApplication.run(GunsApplication.class, args); |
| | | logger.info("GunsApplication is success!"); |
| | | |
| | | GDFalconUtil gdFalconUtil = new GDFalconUtil(); |
| | | gdFalconUtil.init();//初始化猎鹰服务 |
| | | } |
| | | |
| | | |
| | | @Bean //SpringCloud内部服务质检使用服务名调用 |
| | | @LoadBalanced |
| | | public RestTemplate internalRestTemplate() { |
| | | PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(); |
| | | connectionManager.setDefaultSocketConfig(SocketConfig.custom().setTcpNoDelay(true).build()); |
| | | connectionManager.setDefaultMaxPerRoute(100);//最大并发连接 |
| | | connectionManager.setMaxTotal(200); // 总的最大连接数 |
| | | HttpClient httpClient = HttpClientBuilder.create().setConnectionManager(connectionManager).build(); |
| | | HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(httpClient); |
| | | httpRequestFactory.setConnectionRequestTimeout(30 * 1000); |
| | | httpRequestFactory.setConnectTimeout(30 * 3000); |
| | | httpRequestFactory.setReadTimeout(30 * 3000); |
| | | RestTemplate restTemplate = new RestTemplate(httpRequestFactory); |
| | | restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8)); |
| | | return restTemplate; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 向Spring容器中定义RestTemplate对象 |
| | | * @return |
| | | */ |
| | | @Bean //必须new 一个RestTemplate并放入spring容器当中,否则启动时报错 |
| | | public RestTemplate restTemplate() { |
| | | PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(); |
| | | connectionManager.setDefaultSocketConfig(SocketConfig.custom().setTcpNoDelay(true).build()); |
| | | connectionManager.setDefaultMaxPerRoute(100);//最大并发连接 |
| | | connectionManager.setMaxTotal(200); // 总的最大连接数 |
| | | HttpClient httpClient = HttpClientBuilder.create().setConnectionManager(connectionManager).build(); |
| | | HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(httpClient); |
| | | httpRequestFactory.setConnectionRequestTimeout(30 * 1000); |
| | | httpRequestFactory.setConnectTimeout(30 * 3000); |
| | | httpRequestFactory.setReadTimeout(30 * 3000); |
| | | RestTemplate restTemplate = new RestTemplate(httpRequestFactory); |
| | | restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8)); |
| | | return restTemplate; |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns; |
| | | |
| | | import org.springframework.boot.builder.SpringApplicationBuilder; |
| | | import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; |
| | | |
| | | /** |
| | | * Guns Web程序启动类 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-21 9:43 |
| | | */ |
| | | public class GunsServletInitializer extends SpringBootServletInitializer { |
| | | |
| | | @Override |
| | | protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { |
| | | return builder.sources(GunsApplication.class); |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.config; |
| | | |
| | | import net.sf.ehcache.CacheManager; |
| | | import org.springframework.cache.annotation.EnableCaching; |
| | | import org.springframework.cache.ehcache.EhCacheCacheManager; |
| | | import org.springframework.cache.ehcache.EhCacheManagerFactoryBean; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.core.io.ClassPathResource; |
| | | |
| | | /** |
| | | * ehcache配置 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-20 23:11 |
| | | */ |
| | | @Configuration |
| | | @EnableCaching |
| | | public class EhCacheConfig { |
| | | |
| | | /** |
| | | * EhCache的配置 |
| | | */ |
| | | @Bean |
| | | public EhCacheCacheManager cacheManager(CacheManager cacheManager) { |
| | | return new EhCacheCacheManager(cacheManager); |
| | | } |
| | | |
| | | /** |
| | | * EhCache的配置 |
| | | */ |
| | | @Bean |
| | | public EhCacheManagerFactoryBean ehcache() { |
| | | EhCacheManagerFactoryBean ehCacheManagerFactoryBean = new EhCacheManagerFactoryBean(); |
| | | ehCacheManagerFactoryBean.setConfigLocation(new ClassPathResource("ehcache.xml")); |
| | | ehCacheManagerFactoryBean.setShared(true);//共享缓存,避免tomcat启动报错 |
| | | return ehCacheManagerFactoryBean; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.config; |
| | | |
| | | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
| | | |
| | | /** |
| | | * spring session配置 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-07-13 21:05 |
| | | */ |
| | | //@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800) //session过期时间 如果部署多机环境,需要打开注释 |
| | | @ConditionalOnProperty(prefix = "guns", name = "spring-session-open", havingValue = "true") |
| | | public class SpringSessionConfig { |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.config; |
| | | |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
| | | 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; |
| | | import springfox.documentation.swagger2.annotations.EnableSwagger2; |
| | | |
| | | /** |
| | | * swagger配置类 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017年6月1日19:42:59 |
| | | */ |
| | | @Configuration |
| | | @EnableSwagger2 |
| | | @ConditionalOnProperty(prefix = "guns", name = "swagger-open", havingValue = "true") |
| | | public class SwaggerConfig{ |
| | | |
| | | @Bean |
| | | public Docket createRestApi() { |
| | | return new Docket(DocumentationType.SWAGGER_2) |
| | | .apiInfo(apiInfo()) |
| | | .select() |
| | | .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //这里采用包含注解的方式来确定要显示的接口 |
| | | //.apis(RequestHandlerSelectors.basePackage("com.stylefeng.guns.modular.system.controller")) //这里采用包扫描的方式来确定要显示的接口 |
| | | .paths(PathSelectors.any()) |
| | | .build(); |
| | | } |
| | | |
| | | private ApiInfo apiInfo() { |
| | | return new ApiInfoBuilder() |
| | | .title("OK出行 Doc") |
| | | .description("所有接口前需要加 /driver 前缀,例如:/driver/base/agreement/queryByType <br>所有以 /api/*** 路径的接口需要上传签名参数sign") |
| | | // .termsOfServiceUrl("http://git.oschina.net/naan1993/guns") |
| | | .contact("stylefeng") |
| | | .version("1.0") |
| | | .build(); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.config.datasource; |
| | | |
| | | import com.alibaba.druid.pool.DruidDataSource; |
| | | import com.baomidou.mybatisplus.plugins.OptimisticLockerInterceptor; |
| | | import com.baomidou.mybatisplus.plugins.PaginationInterceptor; |
| | | import com.stylefeng.guns.core.config.properties.DruidProperties; |
| | | import com.stylefeng.guns.core.config.properties.MutiDataSourceProperties; |
| | | import com.stylefeng.guns.core.datascope.DataScopeInterceptor; |
| | | import com.stylefeng.guns.core.mutidatasource.DynamicDataSource; |
| | | import com.stylefeng.guns.core.mutidatasource.aop.MultiSourceExAop; |
| | | import org.mybatis.spring.annotation.MapperScan; |
| | | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
| | | import org.springframework.boot.context.properties.ConfigurationProperties; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.jdbc.datasource.DataSourceTransactionManager; |
| | | import org.springframework.transaction.annotation.EnableTransactionManagement; |
| | | |
| | | import java.sql.SQLException; |
| | | import java.util.HashMap; |
| | | |
| | | /** |
| | | * 多数据源配置<br/> |
| | | * <p> |
| | | * 注:由于引入多数据源,所以让spring事务的aop要在多数据源切换aop的后面 |
| | | * |
| | | * @author stylefeng |
| | | * @Date 2017/5/20 21:58 |
| | | */ |
| | | @Configuration |
| | | @ConditionalOnProperty(prefix = "guns.muti-datasource", name = "open", havingValue = "true") |
| | | @EnableTransactionManagement(order = 2) |
| | | @MapperScan(basePackages = {"com.stylefeng.guns.modular.*.dao","com.stylefeng.guns.multi.mapper"}) |
| | | public class MultiDataSourceConfig { |
| | | |
| | | @Bean |
| | | @ConfigurationProperties(prefix = "guns.muti-datasource") |
| | | public MutiDataSourceProperties mutiDataSourceProperties() { |
| | | return new MutiDataSourceProperties(); |
| | | } |
| | | |
| | | @Bean |
| | | public MultiSourceExAop multiSourceExAop() { |
| | | return new MultiSourceExAop(); |
| | | } |
| | | |
| | | /** |
| | | * guns的数据源 |
| | | */ |
| | | private DruidDataSource dataSource(DruidProperties druidProperties) { |
| | | DruidDataSource dataSource = new DruidDataSource(); |
| | | druidProperties.config(dataSource); |
| | | return dataSource; |
| | | } |
| | | |
| | | /** |
| | | * 多数据源,第二个数据源 |
| | | */ |
| | | private DruidDataSource bizDataSource(DruidProperties druidProperties, MutiDataSourceProperties mutiDataSourceProperties) { |
| | | DruidDataSource dataSource = new DruidDataSource(); |
| | | druidProperties.config(dataSource); |
| | | mutiDataSourceProperties.config(dataSource); |
| | | return dataSource; |
| | | } |
| | | |
| | | /** |
| | | * 多数据源连接池配置 |
| | | */ |
| | | @Bean |
| | | public DynamicDataSource mutiDataSource(DruidProperties druidProperties, MutiDataSourceProperties mutiDataSourceProperties) { |
| | | |
| | | DruidDataSource dataSourceGuns = dataSource(druidProperties); |
| | | DruidDataSource bizDataSource = bizDataSource(druidProperties, mutiDataSourceProperties); |
| | | |
| | | try { |
| | | dataSourceGuns.init(); |
| | | bizDataSource.init(); |
| | | } catch (SQLException sql) { |
| | | sql.printStackTrace(); |
| | | } |
| | | |
| | | DynamicDataSource dynamicDataSource = new DynamicDataSource(); |
| | | HashMap<Object, Object> hashMap = new HashMap<>(); |
| | | hashMap.put(mutiDataSourceProperties.getDataSourceNames()[0], dataSourceGuns); |
| | | hashMap.put(mutiDataSourceProperties.getDataSourceNames()[1], bizDataSource); |
| | | dynamicDataSource.setTargetDataSources(hashMap); |
| | | dynamicDataSource.setDefaultTargetDataSource(dataSourceGuns); |
| | | return dynamicDataSource; |
| | | } |
| | | |
| | | /** |
| | | * mybatis-plus分页插件 |
| | | */ |
| | | @Bean |
| | | public PaginationInterceptor paginationInterceptor() { |
| | | return new PaginationInterceptor(); |
| | | } |
| | | |
| | | /** |
| | | * 数据范围mybatis插件 |
| | | */ |
| | | @Bean |
| | | public DataScopeInterceptor dataScopeInterceptor() { |
| | | return new DataScopeInterceptor(); |
| | | } |
| | | |
| | | /** |
| | | * 乐观锁mybatis插件 |
| | | */ |
| | | @Bean |
| | | public OptimisticLockerInterceptor optimisticLockerInterceptor() { |
| | | return new OptimisticLockerInterceptor(); |
| | | } |
| | | |
| | | /** |
| | | * 事务配置 |
| | | * |
| | | * @author stylefeng |
| | | * @Date 2018/6/27 23:11 |
| | | */ |
| | | @Bean |
| | | public DataSourceTransactionManager dataSourceTransactionManager(DynamicDataSource mutiDataSource) { |
| | | return new DataSourceTransactionManager(mutiDataSource); |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.config.datasource; |
| | | |
| | | import com.alibaba.druid.pool.DruidDataSource; |
| | | import com.baomidou.mybatisplus.plugins.OptimisticLockerInterceptor; |
| | | import com.baomidou.mybatisplus.plugins.PaginationInterceptor; |
| | | import com.stylefeng.guns.core.config.properties.DruidProperties; |
| | | import com.stylefeng.guns.core.datascope.DataScopeInterceptor; |
| | | import org.mybatis.spring.annotation.MapperScan; |
| | | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.transaction.annotation.EnableTransactionManagement; |
| | | |
| | | /** |
| | | * 多数据源配置 |
| | | * |
| | | * @author stylefeng |
| | | * @Date 2017/5/20 21:58 |
| | | */ |
| | | @Configuration |
| | | @ConditionalOnProperty(prefix = "guns.muti-datasource", name = "open", havingValue = "false", matchIfMissing = true) |
| | | @EnableTransactionManagement |
| | | @MapperScan(basePackages = {"com.stylefeng.guns.modular.*.dao"}) |
| | | public class SingleDataSourceConfig { |
| | | |
| | | /** |
| | | * 单数据源连接池配置 |
| | | */ |
| | | @Bean |
| | | public DruidDataSource dataSource(DruidProperties druidProperties) { |
| | | DruidDataSource dataSource = new DruidDataSource(); |
| | | druidProperties.config(dataSource); |
| | | return dataSource; |
| | | } |
| | | |
| | | /** |
| | | * mybatis-plus分页插件 |
| | | */ |
| | | @Bean |
| | | public PaginationInterceptor paginationInterceptor() { |
| | | return new PaginationInterceptor(); |
| | | } |
| | | |
| | | /** |
| | | * 数据范围mybatis插件 |
| | | */ |
| | | @Bean |
| | | public DataScopeInterceptor dataScopeInterceptor() { |
| | | return new DataScopeInterceptor(); |
| | | } |
| | | |
| | | /** |
| | | * 乐观锁mybatis插件 |
| | | */ |
| | | @Bean |
| | | public OptimisticLockerInterceptor optimisticLockerInterceptor() { |
| | | return new OptimisticLockerInterceptor(); |
| | | } |
| | | |
| | | } |
| | | |
New file |
| | |
| | | package com.stylefeng.guns.config.properties; |
| | | |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.boot.context.properties.ConfigurationProperties; |
| | | import org.springframework.context.annotation.Configuration; |
| | | |
| | | import java.util.Properties; |
| | | |
| | | /** |
| | | * beetl配置(如果需要配置别的配置可参照这个形式自己添加) |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-24 20:37 |
| | | */ |
| | | @Configuration |
| | | @ConfigurationProperties(prefix = BeetlProperties.BEETLCONF_PREFIX) |
| | | public class BeetlProperties { |
| | | |
| | | public static final String BEETLCONF_PREFIX = "beetl"; |
| | | |
| | | private String delimiterStatementStart; |
| | | |
| | | private String delimiterStatementEnd; |
| | | |
| | | private String resourceTagroot; |
| | | |
| | | private String resourceTagsuffix; |
| | | |
| | | private String resourceAutoCheck; |
| | | |
| | | @Value("${spring.mvc.view.prefix}") |
| | | private String prefix; |
| | | |
| | | public Properties getProperties(){ |
| | | Properties properties = new Properties(); |
| | | if(ToolUtil.isNotEmpty(delimiterStatementStart)){ |
| | | if(delimiterStatementStart.startsWith("\\")){ |
| | | delimiterStatementStart = delimiterStatementStart.substring(1); |
| | | } |
| | | properties.setProperty("DELIMITER_STATEMENT_START",delimiterStatementStart); |
| | | } |
| | | if(ToolUtil.isNotEmpty(delimiterStatementEnd)){ |
| | | properties.setProperty("DELIMITER_STATEMENT_END",delimiterStatementEnd); |
| | | }else{ |
| | | properties.setProperty("DELIMITER_STATEMENT_END","null"); |
| | | } |
| | | if(ToolUtil.isNotEmpty(resourceTagroot)){ |
| | | properties.setProperty("RESOURCE.tagRoot",resourceTagroot); |
| | | } |
| | | if(ToolUtil.isNotEmpty(resourceTagsuffix)){ |
| | | properties.setProperty("RESOURCE.tagSuffix",resourceTagsuffix); |
| | | } |
| | | if(ToolUtil.isNotEmpty(resourceAutoCheck)){ |
| | | properties.setProperty("RESOURCE.autoCheck",resourceAutoCheck); |
| | | } |
| | | return properties; |
| | | } |
| | | |
| | | public String getPrefix() { |
| | | return prefix; |
| | | } |
| | | |
| | | public String getDelimiterStatementStart() { |
| | | return delimiterStatementStart; |
| | | } |
| | | |
| | | public void setDelimiterStatementStart(String delimiterStatementStart) { |
| | | this.delimiterStatementStart = delimiterStatementStart; |
| | | } |
| | | |
| | | public String getDelimiterStatementEnd() { |
| | | return delimiterStatementEnd; |
| | | } |
| | | |
| | | public void setDelimiterStatementEnd(String delimiterStatementEnd) { |
| | | this.delimiterStatementEnd = delimiterStatementEnd; |
| | | } |
| | | |
| | | public String getResourceTagroot() { |
| | | return resourceTagroot; |
| | | } |
| | | |
| | | public void setResourceTagroot(String resourceTagroot) { |
| | | this.resourceTagroot = resourceTagroot; |
| | | } |
| | | |
| | | public String getResourceTagsuffix() { |
| | | return resourceTagsuffix; |
| | | } |
| | | |
| | | public void setResourceTagsuffix(String resourceTagsuffix) { |
| | | this.resourceTagsuffix = resourceTagsuffix; |
| | | } |
| | | |
| | | public String getResourceAutoCheck() { |
| | | return resourceAutoCheck; |
| | | } |
| | | |
| | | public void setResourceAutoCheck(String resourceAutoCheck) { |
| | | this.resourceAutoCheck = resourceAutoCheck; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.config.properties; |
| | | |
| | | import org.springframework.boot.context.properties.ConfigurationProperties; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.io.File; |
| | | |
| | | import static com.stylefeng.guns.core.util.ToolUtil.getTempPath; |
| | | import static com.stylefeng.guns.core.util.ToolUtil.isEmpty; |
| | | |
| | | /** |
| | | * guns项目配置 |
| | | * |
| | | * @author stylefeng |
| | | * @Date 2017/5/23 22:31 |
| | | */ |
| | | @Component |
| | | @ConfigurationProperties(prefix = GunsProperties.PREFIX) |
| | | public class GunsProperties { |
| | | |
| | | public static final String PREFIX = "guns"; |
| | | |
| | | private Boolean kaptchaOpen = false; |
| | | |
| | | private Boolean swaggerOpen = false; |
| | | |
| | | private String fileUploadPath; |
| | | |
| | | private Boolean haveCreatePath = false; |
| | | |
| | | private Boolean springSessionOpen = false; |
| | | |
| | | /** |
| | | * session 失效时间(默认为30分钟 单位:秒) |
| | | */ |
| | | private Integer sessionInvalidateTime = 30 * 60; |
| | | |
| | | /** |
| | | * session 验证失效时间(默认为15分钟 单位:秒) |
| | | */ |
| | | private Integer sessionValidationInterval = 15 * 60; |
| | | |
| | | public String getFileUploadPath() { |
| | | //如果没有写文件上传路径,保存到临时目录 |
| | | if (isEmpty(fileUploadPath)) { |
| | | return getTempPath(); |
| | | } else { |
| | | //判断有没有结尾符,没有得加上 |
| | | if (!fileUploadPath.endsWith(File.separator)) { |
| | | fileUploadPath = fileUploadPath + File.separator; |
| | | } |
| | | //判断目录存不存在,不存在得加上 |
| | | if (!haveCreatePath) { |
| | | File file = new File(fileUploadPath); |
| | | file.mkdirs(); |
| | | haveCreatePath = true; |
| | | } |
| | | return fileUploadPath; |
| | | } |
| | | } |
| | | |
| | | public void setFileUploadPath(String fileUploadPath) { |
| | | this.fileUploadPath = fileUploadPath; |
| | | } |
| | | |
| | | public Boolean getKaptchaOpen() { |
| | | return kaptchaOpen; |
| | | } |
| | | |
| | | public void setKaptchaOpen(Boolean kaptchaOpen) { |
| | | this.kaptchaOpen = kaptchaOpen; |
| | | } |
| | | |
| | | public Boolean getSwaggerOpen() { |
| | | return swaggerOpen; |
| | | } |
| | | |
| | | public void setSwaggerOpen(Boolean swaggerOpen) { |
| | | this.swaggerOpen = swaggerOpen; |
| | | } |
| | | |
| | | public Boolean getSpringSessionOpen() { |
| | | return springSessionOpen; |
| | | } |
| | | |
| | | public void setSpringSessionOpen(Boolean springSessionOpen) { |
| | | this.springSessionOpen = springSessionOpen; |
| | | } |
| | | |
| | | public Integer getSessionInvalidateTime() { |
| | | return sessionInvalidateTime; |
| | | } |
| | | |
| | | public void setSessionInvalidateTime(Integer sessionInvalidateTime) { |
| | | this.sessionInvalidateTime = sessionInvalidateTime; |
| | | } |
| | | |
| | | public Integer getSessionValidationInterval() { |
| | | return sessionValidationInterval; |
| | | } |
| | | |
| | | public void setSessionValidationInterval(Integer sessionValidationInterval) { |
| | | this.sessionValidationInterval = sessionValidationInterval; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.config.web; |
| | | |
| | | import com.stylefeng.guns.config.properties.BeetlProperties; |
| | | import com.stylefeng.guns.core.beetl.BeetlConfiguration; |
| | | import org.beetl.core.resource.ClasspathResourceLoader; |
| | | import org.beetl.ext.spring.BeetlSpringViewResolver; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.context.properties.ConfigurationProperties; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | |
| | | /** |
| | | * web 配置类 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2016年11月12日 下午5:03:32 |
| | | */ |
| | | @Configuration |
| | | public class BeetlConfig { |
| | | |
| | | @Autowired |
| | | BeetlProperties beetlProperties; |
| | | |
| | | /** |
| | | * beetl的配置 |
| | | */ |
| | | @Bean(initMethod = "init") |
| | | public BeetlConfiguration beetlConfiguration() { |
| | | BeetlConfiguration beetlConfiguration = new BeetlConfiguration(); |
| | | beetlConfiguration.setResourceLoader(new ClasspathResourceLoader(BeetlConfig.class.getClassLoader(), beetlProperties.getPrefix())); |
| | | beetlConfiguration.setConfigProperties(beetlProperties.getProperties()); |
| | | return beetlConfiguration; |
| | | } |
| | | |
| | | /** |
| | | * beetl的视图解析器 |
| | | */ |
| | | @Bean |
| | | public BeetlSpringViewResolver beetlViewResolver() { |
| | | BeetlSpringViewResolver beetlSpringViewResolver = new BeetlSpringViewResolver(); |
| | | beetlSpringViewResolver.setConfig(beetlConfiguration()); |
| | | beetlSpringViewResolver.setContentType("text/html;charset=UTF-8"); |
| | | beetlSpringViewResolver.setOrder(0); |
| | | return beetlSpringViewResolver; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.config.web; |
| | | |
| | | import com.stylefeng.guns.config.properties.GunsProperties; |
| | | import com.stylefeng.guns.core.intercept.GunsUserFilter; |
| | | import com.stylefeng.guns.core.shiro.ShiroDbRealm; |
| | | import org.apache.shiro.cache.CacheManager; |
| | | import org.apache.shiro.cache.ehcache.EhCacheManager; |
| | | import org.apache.shiro.codec.Base64; |
| | | import org.apache.shiro.session.mgt.SessionManager; |
| | | import org.apache.shiro.spring.LifecycleBeanPostProcessor; |
| | | import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; |
| | | import org.apache.shiro.spring.web.ShiroFilterFactoryBean; |
| | | import org.apache.shiro.web.mgt.CookieRememberMeManager; |
| | | import org.apache.shiro.web.mgt.DefaultWebSecurityManager; |
| | | import org.apache.shiro.web.servlet.Cookie; |
| | | import org.apache.shiro.web.servlet.ShiroHttpSession; |
| | | import org.apache.shiro.web.servlet.SimpleCookie; |
| | | import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; |
| | | import org.apache.shiro.web.session.mgt.ServletContainerSessionManager; |
| | | import org.springframework.beans.factory.config.MethodInvokingFactoryBean; |
| | | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
| | | import org.springframework.cache.ehcache.EhCacheManagerFactoryBean; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | |
| | | import javax.servlet.Filter; |
| | | import java.util.HashMap; |
| | | import java.util.LinkedHashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * shiro权限管理的配置 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2016年11月14日 下午3:03:44 |
| | | */ |
| | | @Configuration |
| | | public class ShiroConfig { |
| | | |
| | | /** |
| | | * 安全管理器 |
| | | */ |
| | | @Bean |
| | | public DefaultWebSecurityManager securityManager(CookieRememberMeManager rememberMeManager, CacheManager cacheShiroManager, SessionManager sessionManager) { |
| | | DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); |
| | | securityManager.setRealm(this.shiroDbRealm()); |
| | | securityManager.setCacheManager(cacheShiroManager); |
| | | securityManager.setRememberMeManager(rememberMeManager); |
| | | securityManager.setSessionManager(sessionManager); |
| | | return securityManager; |
| | | } |
| | | |
| | | /** |
| | | * spring session管理器(多机环境) |
| | | */ |
| | | @Bean |
| | | @ConditionalOnProperty(prefix = "guns", name = "spring-session-open", havingValue = "true") |
| | | public ServletContainerSessionManager servletContainerSessionManager() { |
| | | return new ServletContainerSessionManager(); |
| | | } |
| | | |
| | | /** |
| | | * session管理器(单机环境) |
| | | */ |
| | | @Bean |
| | | @ConditionalOnProperty(prefix = "guns", name = "spring-session-open", havingValue = "false") |
| | | public DefaultWebSessionManager defaultWebSessionManager(CacheManager cacheShiroManager, GunsProperties gunsProperties) { |
| | | DefaultWebSessionManager sessionManager = new DefaultWebSessionManager(); |
| | | sessionManager.setCacheManager(cacheShiroManager); |
| | | sessionManager.setSessionValidationInterval(gunsProperties.getSessionValidationInterval() * 1000); |
| | | sessionManager.setGlobalSessionTimeout(gunsProperties.getSessionInvalidateTime() * 1000); |
| | | sessionManager.setDeleteInvalidSessions(true); |
| | | sessionManager.setSessionValidationSchedulerEnabled(true); |
| | | Cookie cookie = new SimpleCookie(ShiroHttpSession.DEFAULT_SESSION_ID_NAME); |
| | | cookie.setName("shiroCookie"); |
| | | cookie.setHttpOnly(true); |
| | | sessionManager.setSessionIdCookie(cookie); |
| | | return sessionManager; |
| | | } |
| | | |
| | | /** |
| | | * 缓存管理器 使用Ehcache实现 |
| | | */ |
| | | @Bean |
| | | public CacheManager getCacheShiroManager(EhCacheManagerFactoryBean ehcache) { |
| | | EhCacheManager ehCacheManager = new EhCacheManager(); |
| | | ehCacheManager.setCacheManager(ehcache.getObject()); |
| | | return ehCacheManager; |
| | | } |
| | | |
| | | /** |
| | | * 项目自定义的Realm |
| | | */ |
| | | @Bean |
| | | public ShiroDbRealm shiroDbRealm() { |
| | | return new ShiroDbRealm(); |
| | | } |
| | | |
| | | /** |
| | | * rememberMe管理器, cipherKey生成见{@code Base64Test.java} |
| | | */ |
| | | @Bean |
| | | public CookieRememberMeManager rememberMeManager(SimpleCookie rememberMeCookie) { |
| | | CookieRememberMeManager manager = new CookieRememberMeManager(); |
| | | manager.setCipherKey(Base64.decode("Z3VucwAAAAAAAAAAAAAAAA==")); |
| | | manager.setCookie(rememberMeCookie); |
| | | return manager; |
| | | } |
| | | |
| | | /** |
| | | * 记住密码Cookie |
| | | */ |
| | | @Bean |
| | | public SimpleCookie rememberMeCookie() { |
| | | SimpleCookie simpleCookie = new SimpleCookie("rememberMe"); |
| | | simpleCookie.setHttpOnly(true); |
| | | simpleCookie.setMaxAge(7 * 24 * 60 * 60);//7天 |
| | | return simpleCookie; |
| | | } |
| | | |
| | | /** |
| | | * Shiro的过滤器链 |
| | | */ |
| | | @Bean |
| | | public ShiroFilterFactoryBean shiroFilter(DefaultWebSecurityManager securityManager) { |
| | | ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean(); |
| | | shiroFilter.setSecurityManager(securityManager); |
| | | /** |
| | | * 默认的登陆访问url |
| | | */ |
| | | shiroFilter.setLoginUrl("/login"); |
| | | /** |
| | | * 登陆成功后跳转的url |
| | | */ |
| | | shiroFilter.setSuccessUrl("/"); |
| | | /** |
| | | * 没有权限跳转的url |
| | | */ |
| | | shiroFilter.setUnauthorizedUrl("/global/error"); |
| | | |
| | | /** |
| | | * 覆盖默认的user拦截器(默认拦截器解决不了ajax请求 session超时的问题,若有更好的办法请及时反馈作者) |
| | | */ |
| | | HashMap<String, Filter> myFilters = new HashMap<>(); |
| | | myFilters.put("user", new GunsUserFilter()); |
| | | shiroFilter.setFilters(myFilters); |
| | | |
| | | /** |
| | | * 配置shiro拦截器链 |
| | | * |
| | | * anon 不需要认证 |
| | | * authc 需要认证 |
| | | * user 验证通过或RememberMe登录的都可以 |
| | | * |
| | | * 当应用开启了rememberMe时,用户下次访问时可以是一个user,但不会是authc,因为authc是需要重新认证的 |
| | | * |
| | | * 顺序从上到下,优先级依次降低 |
| | | * |
| | | * api开头的接口,走rest api鉴权,不走shiro鉴权 |
| | | * |
| | | */ |
| | | Map<String, String> hashMap = new LinkedHashMap<>(); |
| | | hashMap.put("/swagger-ui.html", "anon"); |
| | | hashMap.put("/swagger-resources/**", "anon"); |
| | | hashMap.put("/v2/**", "anon"); |
| | | hashMap.put("/webjars/**", "anon"); |
| | | hashMap.put("/swagger-resources/configuration/ui/**", "anon"); |
| | | hashMap.put("/swagger-resources/configuration/security/**", "anon"); |
| | | |
| | | hashMap.put("/base/**", "anon"); |
| | | hashMap.put("/api/**", "anon"); |
| | | hashMap.put("/static/**", "anon"); |
| | | hashMap.put("/gunsApi/**", "anon"); |
| | | hashMap.put("/login", "anon"); |
| | | hashMap.put("/global/sessionError", "anon"); |
| | | hashMap.put("/kaptcha", "anon"); |
| | | hashMap.put("/**", "user"); |
| | | shiroFilter.setFilterChainDefinitionMap(hashMap); |
| | | return shiroFilter; |
| | | } |
| | | |
| | | /** |
| | | * 在方法中 注入 securityManager,进行代理控制 |
| | | */ |
| | | @Bean |
| | | public MethodInvokingFactoryBean methodInvokingFactoryBean(DefaultWebSecurityManager securityManager) { |
| | | MethodInvokingFactoryBean bean = new MethodInvokingFactoryBean(); |
| | | bean.setStaticMethod("org.apache.shiro.SecurityUtils.setSecurityManager"); |
| | | bean.setArguments(new Object[]{securityManager}); |
| | | return bean; |
| | | } |
| | | |
| | | /** |
| | | * Shiro生命周期处理器: |
| | | * 用于在实现了Initializable接口的Shiro bean初始化时调用Initializable接口回调(例如:UserRealm) |
| | | * 在实现了Destroyable接口的Shiro bean销毁时调用 Destroyable接口回调(例如:DefaultSecurityManager) |
| | | */ |
| | | @Bean |
| | | public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() { |
| | | return new LifecycleBeanPostProcessor(); |
| | | } |
| | | |
| | | /** |
| | | * 启用shrio授权注解拦截方式,AOP式方法级权限检查 |
| | | */ |
| | | @Bean |
| | | public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(DefaultWebSecurityManager securityManager) { |
| | | AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = |
| | | new AuthorizationAttributeSourceAdvisor(); |
| | | authorizationAttributeSourceAdvisor.setSecurityManager(securityManager); |
| | | return authorizationAttributeSourceAdvisor; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.config.web; |
| | | |
| | | import com.alibaba.druid.pool.DruidDataSource; |
| | | import com.alibaba.druid.support.http.StatViewServlet; |
| | | import com.alibaba.druid.support.http.WebStatFilter; |
| | | import com.alibaba.druid.support.spring.stat.BeanTypeAutoProxyCreator; |
| | | import com.alibaba.druid.support.spring.stat.DruidStatInterceptor; |
| | | import com.google.code.kaptcha.impl.DefaultKaptcha; |
| | | import com.google.code.kaptcha.util.Config; |
| | | import com.stylefeng.guns.config.properties.GunsProperties; |
| | | import com.stylefeng.guns.core.intercept.RestApiInteceptor; |
| | | import com.stylefeng.guns.core.listener.ConfigListener; |
| | | import com.stylefeng.guns.core.xss.XssFilter; |
| | | import org.springframework.aop.Advisor; |
| | | import org.springframework.aop.support.DefaultPointcutAdvisor; |
| | | import org.springframework.aop.support.JdkRegexpMethodPointcut; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.web.servlet.FilterRegistrationBean; |
| | | import org.springframework.boot.web.servlet.ServletListenerRegistrationBean; |
| | | import org.springframework.boot.web.servlet.ServletRegistrationBean; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.web.context.request.RequestContextListener; |
| | | import org.springframework.web.servlet.config.annotation.InterceptorRegistry; |
| | | import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; |
| | | import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; |
| | | |
| | | import java.util.Arrays; |
| | | import java.util.Properties; |
| | | |
| | | /** |
| | | * web 配置类 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2016年11月12日 下午5:03:32 |
| | | */ |
| | | @Configuration |
| | | public class WebConfig extends WebMvcConfigurerAdapter { |
| | | |
| | | @Autowired |
| | | private GunsProperties gunsProperties; |
| | | |
| | | /** |
| | | * 增加swagger的支持 |
| | | */ |
| | | @Override |
| | | public void addResourceHandlers(ResourceHandlerRegistry registry) { |
| | | if (gunsProperties.getSwaggerOpen()) { |
| | | registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); |
| | | registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 增加对rest api鉴权的spring mvc拦截器 |
| | | */ |
| | | @Override |
| | | public void addInterceptors(InterceptorRegistry registry) { |
| | | registry.addInterceptor(new RestApiInteceptor()).addPathPatterns("/api/**"); |
| | | } |
| | | |
| | | /** |
| | | * druidServlet注册 |
| | | */ |
| | | @Bean |
| | | public ServletRegistrationBean druidServletRegistration() { |
| | | ServletRegistrationBean registration = new ServletRegistrationBean(new StatViewServlet()); |
| | | registration.addUrlMappings("/druid/*"); |
| | | return registration; |
| | | } |
| | | |
| | | /** |
| | | * druid监控 配置URI拦截策略 |
| | | */ |
| | | @Bean |
| | | public FilterRegistrationBean druidStatFilter() { |
| | | FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter()); |
| | | //添加过滤规则. |
| | | filterRegistrationBean.addUrlPatterns("/*"); |
| | | //添加不需要忽略的格式信息. |
| | | filterRegistrationBean.addInitParameter( |
| | | "exclusions", "/static/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid,/druid/*"); |
| | | //用于session监控页面的用户名显示 需要登录后主动将username注入到session里 |
| | | filterRegistrationBean.addInitParameter("principalSessionName", "username"); |
| | | return filterRegistrationBean; |
| | | } |
| | | |
| | | /** |
| | | * druid数据库连接池监控 |
| | | */ |
| | | @Bean |
| | | public DruidStatInterceptor druidStatInterceptor() { |
| | | return new DruidStatInterceptor(); |
| | | } |
| | | |
| | | @Bean |
| | | public JdkRegexpMethodPointcut druidStatPointcut() { |
| | | JdkRegexpMethodPointcut druidStatPointcut = new JdkRegexpMethodPointcut(); |
| | | String patterns = "com.stylefeng.guns.modular.*.service.*"; |
| | | //可以set多个 |
| | | druidStatPointcut.setPatterns(patterns); |
| | | return druidStatPointcut; |
| | | } |
| | | |
| | | /** |
| | | * druid数据库连接池监控 |
| | | */ |
| | | @Bean |
| | | public BeanTypeAutoProxyCreator beanTypeAutoProxyCreator() { |
| | | BeanTypeAutoProxyCreator beanTypeAutoProxyCreator = new BeanTypeAutoProxyCreator(); |
| | | beanTypeAutoProxyCreator.setTargetBeanType(DruidDataSource.class); |
| | | beanTypeAutoProxyCreator.setInterceptorNames("druidStatInterceptor"); |
| | | return beanTypeAutoProxyCreator; |
| | | } |
| | | |
| | | /** |
| | | * druid 为druidStatPointcut添加拦截 |
| | | * |
| | | * @return |
| | | */ |
| | | @Bean |
| | | public Advisor druidStatAdvisor() { |
| | | return new DefaultPointcutAdvisor(druidStatPointcut(), druidStatInterceptor()); |
| | | } |
| | | |
| | | /** |
| | | * xssFilter注册 |
| | | */ |
| | | @Bean |
| | | public FilterRegistrationBean xssFilterRegistration() { |
| | | XssFilter xssFilter = new XssFilter(); |
| | | xssFilter.setUrlExclusion(Arrays.asList("/notice/update", "/notice/add")); |
| | | FilterRegistrationBean registration = new FilterRegistrationBean(xssFilter); |
| | | registration.addUrlPatterns("/*"); |
| | | return registration; |
| | | } |
| | | |
| | | /** |
| | | * RequestContextListener注册 |
| | | */ |
| | | @Bean |
| | | public ServletListenerRegistrationBean<RequestContextListener> requestContextListenerRegistration() { |
| | | return new ServletListenerRegistrationBean<>(new RequestContextListener()); |
| | | } |
| | | |
| | | /** |
| | | * ConfigListener注册 |
| | | */ |
| | | @Bean |
| | | public ServletListenerRegistrationBean<ConfigListener> configListenerRegistration() { |
| | | return new ServletListenerRegistrationBean<>(new ConfigListener()); |
| | | } |
| | | |
| | | /** |
| | | * 验证码生成相关 |
| | | */ |
| | | @Bean |
| | | public DefaultKaptcha kaptcha() { |
| | | Properties properties = new Properties(); |
| | | properties.put("kaptcha.border", "no"); |
| | | properties.put("kaptcha.border.color", "105,179,90"); |
| | | properties.put("kaptcha.textproducer.font.color", "blue"); |
| | | properties.put("kaptcha.image.width", "125"); |
| | | properties.put("kaptcha.image.height", "45"); |
| | | properties.put("kaptcha.textproducer.font.size", "45"); |
| | | properties.put("kaptcha.session.key", "code"); |
| | | properties.put("kaptcha.textproducer.char.length", "4"); |
| | | properties.put("kaptcha.textproducer.font.names", "宋体,楷体,微软雅黑"); |
| | | Config config = new Config(properties); |
| | | DefaultKaptcha defaultKaptcha = new DefaultKaptcha(); |
| | | defaultKaptcha.setConfig(config); |
| | | return defaultKaptcha; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.aop; |
| | | |
| | | import com.stylefeng.guns.core.common.exception.BizExceptionEnum; |
| | | import com.stylefeng.guns.core.common.exception.InvalidKaptchaException; |
| | | import com.stylefeng.guns.core.base.tips.ErrorTip; |
| | | import com.stylefeng.guns.core.exception.GunsException; |
| | | import com.stylefeng.guns.core.log.LogManager; |
| | | import com.stylefeng.guns.core.log.factory.LogTaskFactory; |
| | | import com.stylefeng.guns.core.shiro.ShiroKit; |
| | | import org.apache.shiro.authc.AuthenticationException; |
| | | import org.apache.shiro.authc.CredentialsException; |
| | | import org.apache.shiro.authc.DisabledAccountException; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.core.annotation.Order; |
| | | import org.springframework.http.HttpStatus; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.bind.annotation.ControllerAdvice; |
| | | import org.springframework.web.bind.annotation.ExceptionHandler; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.bind.annotation.ResponseStatus; |
| | | |
| | | import java.lang.reflect.UndeclaredThrowableException; |
| | | |
| | | import static com.stylefeng.guns.core.support.HttpKit.getIp; |
| | | import static com.stylefeng.guns.core.support.HttpKit.getRequest; |
| | | |
| | | /** |
| | | * 全局的的异常拦截器(拦截所有的控制器)(带有@RequestMapping注解的方法上都会拦截) |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2016年11月12日 下午3:19:56 |
| | | */ |
| | | @ControllerAdvice |
| | | @Order(-1) |
| | | public class GlobalExceptionHandler { |
| | | |
| | | private Logger log = LoggerFactory.getLogger(this.getClass()); |
| | | |
| | | /** |
| | | * 拦截业务异常 |
| | | */ |
| | | @ExceptionHandler(GunsException.class) |
| | | @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) |
| | | @ResponseBody |
| | | public ErrorTip notFount(GunsException e) { |
| | | LogManager.me().executeLog(LogTaskFactory.exceptionLog(ShiroKit.getUser().getId(), e)); |
| | | getRequest().setAttribute("tip", e.getMessage()); |
| | | log.error("业务异常:", e); |
| | | return new ErrorTip(e.getCode(), e.getMessage()); |
| | | } |
| | | |
| | | /** |
| | | * 用户未登录异常 |
| | | */ |
| | | @ExceptionHandler(AuthenticationException.class) |
| | | @ResponseStatus(HttpStatus.UNAUTHORIZED) |
| | | public String unAuth(AuthenticationException e) { |
| | | log.error("用户未登陆:", e); |
| | | return "/login.html"; |
| | | } |
| | | |
| | | /** |
| | | * 账号被冻结异常 |
| | | */ |
| | | @ExceptionHandler(DisabledAccountException.class) |
| | | @ResponseStatus(HttpStatus.UNAUTHORIZED) |
| | | public String accountLocked(DisabledAccountException e, Model model) { |
| | | String username = getRequest().getParameter("username"); |
| | | LogManager.me().executeLog(LogTaskFactory.loginLog(username, "账号被冻结", getIp())); |
| | | model.addAttribute("tips", "账号被冻结"); |
| | | return "/login.html"; |
| | | } |
| | | |
| | | /** |
| | | * 账号密码错误异常 |
| | | */ |
| | | @ExceptionHandler(CredentialsException.class) |
| | | @ResponseStatus(HttpStatus.UNAUTHORIZED) |
| | | public String credentials(CredentialsException e, Model model) { |
| | | String username = getRequest().getParameter("username"); |
| | | LogManager.me().executeLog(LogTaskFactory.loginLog(username, "账号密码错误", getIp())); |
| | | model.addAttribute("tips", "账号密码错误"); |
| | | return "/login.html"; |
| | | } |
| | | |
| | | /** |
| | | * 验证码错误异常 |
| | | */ |
| | | @ExceptionHandler(InvalidKaptchaException.class) |
| | | @ResponseStatus(HttpStatus.BAD_REQUEST) |
| | | public String credentials(InvalidKaptchaException e, Model model) { |
| | | String username = getRequest().getParameter("username"); |
| | | LogManager.me().executeLog(LogTaskFactory.loginLog(username, "验证码错误", getIp())); |
| | | model.addAttribute("tips", "验证码错误"); |
| | | return "/login.html"; |
| | | } |
| | | |
| | | /** |
| | | * 无权访问该资源异常 |
| | | */ |
| | | @ExceptionHandler(UndeclaredThrowableException.class) |
| | | @ResponseStatus(HttpStatus.UNAUTHORIZED) |
| | | @ResponseBody |
| | | public ErrorTip credentials(UndeclaredThrowableException e) { |
| | | getRequest().setAttribute("tip", "权限异常"); |
| | | log.error("权限异常!", e); |
| | | return new ErrorTip(BizExceptionEnum.NO_PERMITION.getCode(), BizExceptionEnum.NO_PERMITION.getMessage()); |
| | | } |
| | | |
| | | /** |
| | | * 拦截未知的运行时异常 |
| | | */ |
| | | @ExceptionHandler(RuntimeException.class) |
| | | @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) |
| | | @ResponseBody |
| | | public ErrorTip notFount(RuntimeException e) { |
| | | LogManager.me().executeLog(LogTaskFactory.exceptionLog(ShiroKit.getUser().getId(), e)); |
| | | getRequest().setAttribute("tip", "服务器未知运行时异常"); |
| | | log.error("运行时异常:", e); |
| | | return new ErrorTip(BizExceptionEnum.SERVER_ERROR.getCode(), BizExceptionEnum.SERVER_ERROR.getMessage()); |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.aop; |
| | | |
| | | import com.stylefeng.guns.core.common.annotion.BussinessLog; |
| | | import com.stylefeng.guns.core.common.constant.dictmap.base.AbstractDictMap; |
| | | import com.stylefeng.guns.core.log.LogManager; |
| | | import com.stylefeng.guns.core.log.LogObjectHolder; |
| | | import com.stylefeng.guns.core.log.factory.LogTaskFactory; |
| | | import com.stylefeng.guns.core.shiro.ShiroKit; |
| | | import com.stylefeng.guns.core.shiro.ShiroUser; |
| | | import com.stylefeng.guns.core.support.HttpKit; |
| | | import com.stylefeng.guns.core.util.Contrast; |
| | | import org.aspectj.lang.ProceedingJoinPoint; |
| | | import org.aspectj.lang.Signature; |
| | | import org.aspectj.lang.annotation.Around; |
| | | import org.aspectj.lang.annotation.Aspect; |
| | | import org.aspectj.lang.annotation.Pointcut; |
| | | import org.aspectj.lang.reflect.MethodSignature; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.lang.reflect.Method; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 日志记录 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2016年12月6日 下午8:48:30 |
| | | */ |
| | | @Aspect |
| | | @Component |
| | | public class LogAop { |
| | | |
| | | private Logger log = LoggerFactory.getLogger(this.getClass()); |
| | | |
| | | @Pointcut(value = "@annotation(com.stylefeng.guns.core.common.annotion.BussinessLog)") |
| | | public void cutService() { |
| | | } |
| | | |
| | | @Around("cutService()") |
| | | public Object recordSysLog(ProceedingJoinPoint point) throws Throwable { |
| | | |
| | | //先执行业务 |
| | | Object result = point.proceed(); |
| | | |
| | | try { |
| | | handle(point); |
| | | } catch (Exception e) { |
| | | log.error("日志记录出错!", e); |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | |
| | | private void handle(ProceedingJoinPoint point) throws Exception { |
| | | |
| | | //获取拦截的方法名 |
| | | Signature sig = point.getSignature(); |
| | | MethodSignature msig = null; |
| | | if (!(sig instanceof MethodSignature)) { |
| | | throw new IllegalArgumentException("该注解只能用于方法"); |
| | | } |
| | | msig = (MethodSignature) sig; |
| | | Object target = point.getTarget(); |
| | | Method currentMethod = target.getClass().getMethod(msig.getName(), msig.getParameterTypes()); |
| | | String methodName = currentMethod.getName(); |
| | | |
| | | //如果当前用户未登录,不做日志 |
| | | ShiroUser user = ShiroKit.getUser(); |
| | | if (null == user) { |
| | | return; |
| | | } |
| | | |
| | | //获取拦截方法的参数 |
| | | String className = point.getTarget().getClass().getName(); |
| | | Object[] params = point.getArgs(); |
| | | |
| | | //获取操作名称 |
| | | BussinessLog annotation = currentMethod.getAnnotation(BussinessLog.class); |
| | | String bussinessName = annotation.value(); |
| | | String key = annotation.key(); |
| | | Class dictClass = annotation.dict(); |
| | | |
| | | StringBuilder sb = new StringBuilder(); |
| | | for (Object param : params) { |
| | | sb.append(param); |
| | | sb.append(" & "); |
| | | } |
| | | |
| | | //如果涉及到修改,比对变化 |
| | | String msg; |
| | | if (bussinessName.indexOf("修改") != -1 || bussinessName.indexOf("编辑") != -1) { |
| | | Object obj1 = LogObjectHolder.me().get(); |
| | | Map<String, String> obj2 = HttpKit.getRequestParameters(); |
| | | msg = Contrast.contrastObj(dictClass, key, obj1, obj2); |
| | | } else { |
| | | Map<String, String> parameters = HttpKit.getRequestParameters(); |
| | | AbstractDictMap dictMap = (AbstractDictMap) dictClass.newInstance(); |
| | | msg = Contrast.parseMutiKey(dictMap,key,parameters); |
| | | } |
| | | |
| | | LogManager.me().executeLog(LogTaskFactory.bussinessLog(user.getId(), bussinessName, className, methodName, msg)); |
| | | } |
| | | } |
New file |
| | |
| | | /** |
| | | * Copyright (c) 2015-2017, Chill Zhuang 庄骞 (smallchill@163.com). |
| | | * <p> |
| | | * Licensed under the Apache License, Version 2.0 (the "License"); |
| | | * you may not use this file except in compliance with the License. |
| | | * You may obtain a copy of the License at |
| | | * <p> |
| | | * http://www.apache.org/licenses/LICENSE-2.0 |
| | | * <p> |
| | | * Unless required by applicable law or agreed to in writing, software |
| | | * distributed under the License is distributed on an "AS IS" BASIS, |
| | | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | * See the License for the specific language governing permissions and |
| | | * limitations under the License. |
| | | */ |
| | | package com.stylefeng.guns.core.aop; |
| | | |
| | | import com.stylefeng.guns.core.common.annotion.Permission; |
| | | import com.stylefeng.guns.core.shiro.check.PermissionCheckManager; |
| | | import org.aspectj.lang.ProceedingJoinPoint; |
| | | import org.aspectj.lang.annotation.Around; |
| | | import org.aspectj.lang.annotation.Aspect; |
| | | import org.aspectj.lang.annotation.Pointcut; |
| | | import org.aspectj.lang.reflect.MethodSignature; |
| | | import org.springframework.core.annotation.Order; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.naming.NoPermissionException; |
| | | import java.lang.reflect.Method; |
| | | |
| | | /** |
| | | * AOP 权限自定义检查 |
| | | */ |
| | | @Aspect |
| | | @Component |
| | | @Order(200) |
| | | public class PermissionAop { |
| | | |
| | | @Pointcut(value = "@annotation(com.stylefeng.guns.core.common.annotion.Permission)") |
| | | private void cutPermission() { |
| | | |
| | | } |
| | | |
| | | @Around("cutPermission()") |
| | | public Object doPermission(ProceedingJoinPoint point) throws Throwable { |
| | | MethodSignature ms = (MethodSignature) point.getSignature(); |
| | | Method method = ms.getMethod(); |
| | | Permission permission = method.getAnnotation(Permission.class); |
| | | Object[] permissions = permission.value(); |
| | | if (permissions == null || permissions.length == 0) { |
| | | //检查全体角色 |
| | | boolean result = PermissionCheckManager.checkAll(); |
| | | if (result) { |
| | | return point.proceed(); |
| | | } else { |
| | | throw new NoPermissionException(); |
| | | } |
| | | } else { |
| | | //检查指定角色 |
| | | boolean result = PermissionCheckManager.check(permissions); |
| | | if (result) { |
| | | return point.proceed(); |
| | | } else { |
| | | throw new NoPermissionException(); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.beetl; |
| | | |
| | | import com.stylefeng.guns.core.tag.DictSelectorTag; |
| | | import com.stylefeng.guns.core.util.KaptchaUtil; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import org.beetl.core.Context; |
| | | import org.beetl.core.Function; |
| | | import org.beetl.core.Tag; |
| | | import org.beetl.core.TagFactory; |
| | | import org.beetl.ext.spring.BeetlGroupUtilConfiguration; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.ApplicationContext; |
| | | import org.springframework.core.env.Environment; |
| | | |
| | | import java.io.UnsupportedEncodingException; |
| | | |
| | | /** |
| | | * beetl拓展配置,绑定一些工具类,方便在模板中直接调用 |
| | | * |
| | | * @author stylefeng |
| | | * @Date 2018/2/22 21:03 |
| | | */ |
| | | public class BeetlConfiguration extends BeetlGroupUtilConfiguration { |
| | | |
| | | @Autowired |
| | | Environment env; |
| | | |
| | | @Autowired |
| | | ApplicationContext applicationContext; |
| | | |
| | | @Autowired |
| | | DictSelectorTag dictSelectorTag; |
| | | |
| | | |
| | | |
| | | @Override |
| | | public void initOther() { |
| | | groupTemplate.registerFunctionPackage("shiro", new ShiroExt()); |
| | | groupTemplate.registerFunctionPackage("tool", new ToolUtil()); |
| | | groupTemplate.registerFunctionPackage("kaptcha", new KaptchaUtil()); |
| | | groupTemplate.registerTagFactory("dictSelector", new TagFactory() { |
| | | @Override |
| | | public Tag createTag() { |
| | | return dictSelectorTag; |
| | | } |
| | | }); |
| | | |
| | | groupTemplate.registerFunction("env", new Function() { |
| | | @Override |
| | | public String call(Object[] paras, Context ctx) { |
| | | String key = (String)paras[0]; |
| | | String value = env.getProperty(key); |
| | | if(value!=null) { |
| | | return getStr(value); |
| | | } |
| | | if(paras.length==2) { |
| | | return (String)paras[1]; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | protected String getStr(String str) { |
| | | try { |
| | | return new String(str.getBytes("iso8859-1"),"UTF-8"); |
| | | } catch (UnsupportedEncodingException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | } |
New file |
| | |
| | | /** |
| | | * Copyright (c) 2015-2017, Chill Zhuang 庄骞 (smallchill@163.com). |
| | | * <p> |
| | | * Licensed under the Apache License, Version 2.0 (the "License"); |
| | | * you may not use this file except in compliance with the License. |
| | | * You may obtain a copy of the License at |
| | | * <p> |
| | | * http://www.apache.org/licenses/LICENSE-2.0 |
| | | * <p> |
| | | * Unless required by applicable law or agreed to in writing, software |
| | | * distributed under the License is distributed on an "AS IS" BASIS, |
| | | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | * See the License for the specific language governing permissions and |
| | | * limitations under the License. |
| | | */ |
| | | package com.stylefeng.guns.core.beetl; |
| | | |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.apache.shiro.subject.Subject; |
| | | import org.beetl.core.GroupTemplate; |
| | | |
| | | import com.stylefeng.guns.core.shiro.ShiroUser; |
| | | |
| | | public class ShiroExt { |
| | | private static final String NAMES_DELIMETER = ","; |
| | | |
| | | /** |
| | | * 获取当前 Subject |
| | | * |
| | | * @return Subject |
| | | */ |
| | | protected static Subject getSubject() { |
| | | return SecurityUtils.getSubject(); |
| | | } |
| | | |
| | | /** |
| | | * 获取封装的 ShiroUser |
| | | * |
| | | * @return ShiroUser |
| | | */ |
| | | public ShiroUser getUser() { |
| | | if (isGuest()) { |
| | | return null; |
| | | } else { |
| | | return (ShiroUser) getSubject().getPrincipals().getPrimaryPrincipal(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 验证当前用户是否属于该角色?,使用时与lacksRole 搭配使用 |
| | | * |
| | | * @param roleName 角色名 |
| | | * @return 属于该角色:true,否则false |
| | | */ |
| | | public boolean hasRole(String roleName) { |
| | | return getSubject() != null && roleName != null |
| | | && roleName.length() > 0 && getSubject().hasRole(roleName); |
| | | } |
| | | |
| | | /** |
| | | * 与hasRole标签逻辑相反,当用户不属于该角色时验证通过。 |
| | | * |
| | | * @param roleName 角色名 |
| | | * @return 不属于该角色:true,否则false |
| | | */ |
| | | public boolean lacksRole(String roleName) { |
| | | return !hasRole(roleName); |
| | | } |
| | | |
| | | /** |
| | | * 验证当前用户是否属于以下任意一个角色。 |
| | | * |
| | | * @param roleNames 角色列表 |
| | | * @return 属于:true,否则false |
| | | */ |
| | | public boolean hasAnyRoles(String roleNames) { |
| | | boolean hasAnyRole = false; |
| | | Subject subject = getSubject(); |
| | | if (subject != null && roleNames != null && roleNames.length() > 0) { |
| | | for (String role : roleNames.split(NAMES_DELIMETER)) { |
| | | if (subject.hasRole(role.trim())) { |
| | | hasAnyRole = true; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | return hasAnyRole; |
| | | } |
| | | |
| | | /** |
| | | * 验证当前用户是否属于以下所有角色。 |
| | | * |
| | | * @param roleNames 角色列表 |
| | | * @return 属于:true,否则false |
| | | */ |
| | | public boolean hasAllRoles(String roleNames) { |
| | | boolean hasAllRole = true; |
| | | Subject subject = getSubject(); |
| | | if (subject != null && roleNames != null && roleNames.length() > 0) { |
| | | for (String role : roleNames.split(NAMES_DELIMETER)) { |
| | | if (!subject.hasRole(role.trim())) { |
| | | hasAllRole = false; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | return hasAllRole; |
| | | } |
| | | |
| | | /** |
| | | * 验证当前用户是否拥有指定权限,使用时与lacksPermission 搭配使用 |
| | | * |
| | | * @param permission 权限名 |
| | | * @return 拥有权限:true,否则false |
| | | */ |
| | | public boolean hasPermission(String permission) { |
| | | return getSubject() != null && permission != null |
| | | && permission.length() > 0 |
| | | && getSubject().isPermitted(permission); |
| | | } |
| | | |
| | | /** |
| | | * 与hasPermission标签逻辑相反,当前用户没有制定权限时,验证通过。 |
| | | * |
| | | * @param permission 权限名 |
| | | * @return 拥有权限:true,否则false |
| | | */ |
| | | public boolean lacksPermission(String permission) { |
| | | return !hasPermission(permission); |
| | | } |
| | | |
| | | /** |
| | | * 已认证通过的用户。不包含已记住的用户,这是与user标签的区别所在。与notAuthenticated搭配使用 |
| | | * |
| | | * @return 通过身份验证:true,否则false |
| | | */ |
| | | public boolean authenticated() { |
| | | return getSubject() != null && getSubject().isAuthenticated(); |
| | | } |
| | | |
| | | /** |
| | | * 未认证通过用户,与authenticated标签相对应。与guest标签的区别是,该标签包含已记住用户。。 |
| | | * |
| | | * @return 没有通过身份验证:true,否则false |
| | | */ |
| | | public boolean notAuthenticated() { |
| | | return !authenticated(); |
| | | } |
| | | |
| | | /** |
| | | * 认证通过或已记住的用户。与guset搭配使用。 |
| | | * |
| | | * @return 用户:true,否则 false |
| | | */ |
| | | public boolean isUser() { |
| | | return getSubject() != null && getSubject().getPrincipal() != null; |
| | | } |
| | | |
| | | /** |
| | | * 验证当前用户是否为“访客”,即未认证(包含未记住)的用户。用user搭配使用 |
| | | * |
| | | * @return 访客:true,否则false |
| | | */ |
| | | public boolean isGuest() { |
| | | return !isUser(); |
| | | } |
| | | |
| | | /** |
| | | * 输出当前用户信息,通常为登录帐号信息。 |
| | | * |
| | | * @return 当前用户信息 |
| | | */ |
| | | public String principal() { |
| | | if (getSubject() != null) { |
| | | Object principal = getSubject().getPrincipal(); |
| | | return principal.toString(); |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | GroupTemplate gt = new GroupTemplate(); |
| | | gt.registerFunctionPackage("shiro", new ShiroExt()); |
| | | |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.annotion; |
| | | |
| | | import com.stylefeng.guns.core.common.constant.dictmap.base.AbstractDictMap; |
| | | import com.stylefeng.guns.core.common.constant.dictmap.base.SystemDict; |
| | | |
| | | import java.lang.annotation.*; |
| | | |
| | | /** |
| | | * 标记需要做业务日志的方法 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-03-31 12:46 |
| | | */ |
| | | @Inherited |
| | | @Retention(RetentionPolicy.RUNTIME) |
| | | @Target({ElementType.METHOD}) |
| | | public @interface BussinessLog { |
| | | |
| | | /** |
| | | * 业务的名称,例如:"修改菜单" |
| | | */ |
| | | String value() default ""; |
| | | |
| | | /** |
| | | * 被修改的实体的唯一标识,例如:菜单实体的唯一标识为"id" |
| | | */ |
| | | String key() default "id"; |
| | | |
| | | /** |
| | | * 字典(用于查找key的中文名称和字段的中文名称) |
| | | */ |
| | | Class<? extends AbstractDictMap> dict() default SystemDict.class; |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.annotion; |
| | | |
| | | import java.lang.annotation.*; |
| | | |
| | | /** |
| | | * 权限注解 用于检查权限 规定访问权限 |
| | | * |
| | | * @example @Permission({role1,role2}) |
| | | * @example @Permission |
| | | */ |
| | | @Inherited |
| | | @Retention(RetentionPolicy.RUNTIME) |
| | | @Target({ElementType.METHOD}) |
| | | public @interface Permission { |
| | | |
| | | /** |
| | | * <p>角色英文名称</p> |
| | | * <p>使用注解时加上这个值表示限制只有某个角色的才可以访问对应的资源</p> |
| | | * <p>常用在某些资源限制只有超级管理员角色才可访问</p> |
| | | */ |
| | | String[] value() default {}; |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant; |
| | | |
| | | /** |
| | | * 系统常量 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017年2月12日 下午9:42:53 |
| | | */ |
| | | public interface Const { |
| | | |
| | | /** |
| | | * 系统默认的管理员密码 |
| | | */ |
| | | String DEFAULT_PWD = "111111"; |
| | | |
| | | /** |
| | | * 管理员角色的名字 |
| | | */ |
| | | String ADMIN_NAME = "administrator"; |
| | | |
| | | /** |
| | | * 管理员id |
| | | */ |
| | | Integer ADMIN_ID = 1; |
| | | |
| | | /** |
| | | * 超级管理员角色id |
| | | */ |
| | | Integer ADMIN_ROLE_ID = 1; |
| | | |
| | | /** |
| | | * 接口文档的菜单名 |
| | | */ |
| | | String API_MENU_NAME = "接口文档"; |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant; |
| | | |
| | | /** |
| | | * |
| | | * 多数据源的枚举 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017年3月5日 上午10:15:02 |
| | | */ |
| | | public interface DatasourceEnum { |
| | | |
| | | String DATA_SOURCE_GUNS = "dataSourceGuns"; //guns数据源 |
| | | |
| | | String DATA_SOURCE_BIZ = "dataSourceBiz"; //其他业务的数据源 |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant; |
| | | |
| | | /** |
| | | * jwt相关配置 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-08-23 9:23 |
| | | */ |
| | | public interface JwtConstants { |
| | | |
| | | String AUTH_HEADER = "Authorization"; |
| | | |
| | | String SECRET = "defaultSecret"; |
| | | |
| | | Long EXPIRATION = 604800L; |
| | | |
| | | String AUTH_PATH = "/gunsApi/auth"; |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.cache; |
| | | |
| | | /** |
| | | * 所有缓存名称的集合 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-04-24 21:56 |
| | | */ |
| | | public interface Cache { |
| | | |
| | | /** |
| | | * 常量缓存 |
| | | */ |
| | | String CONSTANT = "CONSTANT"; |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.cache; |
| | | |
| | | /** |
| | | * 缓存标识前缀集合,常用在ConstantFactory类中 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-04-25 9:37 |
| | | */ |
| | | public interface CacheKey { |
| | | |
| | | /** |
| | | * 角色名称(多个) |
| | | */ |
| | | String ROLES_NAME = "roles_name_"; |
| | | |
| | | /** |
| | | * 角色名称(单个) |
| | | */ |
| | | String SINGLE_ROLE_NAME = "single_role_name_"; |
| | | |
| | | /** |
| | | * 角色英文名称 |
| | | */ |
| | | String SINGLE_ROLE_TIP = "single_role_tip_"; |
| | | |
| | | /** |
| | | * 部门名称 |
| | | */ |
| | | String DEPT_NAME = "dept_name_"; |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.dictmap; |
| | | |
| | | import com.stylefeng.guns.core.common.constant.dictmap.base.AbstractDictMap; |
| | | |
| | | /** |
| | | * 用于删除业务的字典 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-06 15:01 |
| | | */ |
| | | public class DeleteDict extends AbstractDictMap { |
| | | |
| | | @Override |
| | | public void init() { |
| | | put("roleId","角色名称"); |
| | | put("deptId", "部门名称"); |
| | | put("menuId", "菜单名称"); |
| | | put("dictId", "字典名称"); |
| | | put("noticeId", "标题"); |
| | | } |
| | | |
| | | @Override |
| | | protected void initBeWrapped() { |
| | | putFieldWrapperMethodName("roleId","getCacheObject"); |
| | | putFieldWrapperMethodName("deptId","getCacheObject"); |
| | | putFieldWrapperMethodName("menuId","getCacheObject"); |
| | | putFieldWrapperMethodName("dictId","getCacheObject"); |
| | | putFieldWrapperMethodName("noticeId","getCacheObject"); |
| | | |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.dictmap; |
| | | |
| | | import com.stylefeng.guns.core.common.constant.dictmap.base.AbstractDictMap; |
| | | |
| | | /** |
| | | * 部门的映射 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-06 15:01 |
| | | */ |
| | | public class DeptDict extends AbstractDictMap { |
| | | |
| | | @Override |
| | | public void init() { |
| | | put("deptId", "部门名称"); |
| | | put("num", "部门排序"); |
| | | put("pid", "上级名称"); |
| | | put("simplename", "部门简称"); |
| | | put("fullname", "部门全称"); |
| | | put("tips", "备注"); |
| | | } |
| | | |
| | | @Override |
| | | protected void initBeWrapped() { |
| | | putFieldWrapperMethodName("deptId", "getDeptName"); |
| | | putFieldWrapperMethodName("pid", "getDeptName"); |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.dictmap; |
| | | |
| | | import com.stylefeng.guns.core.common.constant.dictmap.base.AbstractDictMap; |
| | | |
| | | /** |
| | | * 字典map |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-06 15:43 |
| | | */ |
| | | public class DictMap extends AbstractDictMap { |
| | | |
| | | @Override |
| | | public void init() { |
| | | put("dictId","字典名称"); |
| | | put("dictName","字典名称"); |
| | | put("dictValues","字典内容"); |
| | | } |
| | | |
| | | @Override |
| | | protected void initBeWrapped() { |
| | | |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.dictmap; |
| | | |
| | | import com.stylefeng.guns.core.common.constant.dictmap.base.AbstractDictMap; |
| | | |
| | | /** |
| | | * 日志的字典 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-06 15:01 |
| | | */ |
| | | public class LogDict extends AbstractDictMap { |
| | | |
| | | @Override |
| | | public void init() { |
| | | put("tips","备注"); |
| | | } |
| | | |
| | | @Override |
| | | protected void initBeWrapped() { |
| | | |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.dictmap; |
| | | |
| | | import com.stylefeng.guns.core.common.constant.dictmap.base.AbstractDictMap; |
| | | |
| | | /** |
| | | * 菜单的字典 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-06 15:01 |
| | | */ |
| | | public class MenuDict extends AbstractDictMap { |
| | | |
| | | @Override |
| | | public void init() { |
| | | put("menuId","菜单id"); |
| | | put("id","菜单id"); |
| | | put("code","菜单编号"); |
| | | put("pcode","菜单父编号"); |
| | | put("name","菜单名称"); |
| | | put("icon","菜单图标"); |
| | | put("url","url地址"); |
| | | put("num","菜单排序号"); |
| | | put("levels","菜单层级"); |
| | | put("tips","备注"); |
| | | put("status","菜单状态"); |
| | | put("isopen","是否打开"); |
| | | put("",""); |
| | | } |
| | | |
| | | @Override |
| | | protected void initBeWrapped() { |
| | | |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.dictmap; |
| | | |
| | | import com.stylefeng.guns.core.common.constant.dictmap.base.AbstractDictMap; |
| | | |
| | | /** |
| | | * 通知的映射 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-06 15:01 |
| | | */ |
| | | public class NoticeMap extends AbstractDictMap { |
| | | |
| | | @Override |
| | | public void init() { |
| | | put("title", "标题"); |
| | | put("content", "内容"); |
| | | } |
| | | |
| | | @Override |
| | | protected void initBeWrapped() { |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.dictmap; |
| | | |
| | | import com.stylefeng.guns.core.common.constant.dictmap.base.AbstractDictMap; |
| | | |
| | | /** |
| | | * 角色的字典 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-06 15:01 |
| | | */ |
| | | public class RoleDict extends AbstractDictMap { |
| | | |
| | | @Override |
| | | public void init() { |
| | | put("roleId","角色名称"); |
| | | put("num","角色排序"); |
| | | put("pid","角色的父级"); |
| | | put("name","角色名称"); |
| | | put("deptid","部门名称"); |
| | | put("tips","备注"); |
| | | put("ids","资源名称"); |
| | | } |
| | | |
| | | @Override |
| | | protected void initBeWrapped() { |
| | | putFieldWrapperMethodName("pid","getSingleRoleName"); |
| | | putFieldWrapperMethodName("deptid","getDeptName"); |
| | | putFieldWrapperMethodName("roleId","getSingleRoleName"); |
| | | putFieldWrapperMethodName("ids","getMenuNames"); |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.dictmap; |
| | | |
| | | import com.stylefeng.guns.core.common.constant.dictmap.base.AbstractDictMap; |
| | | |
| | | /** |
| | | * 用户的字典 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-06 15:01 |
| | | */ |
| | | public class UserDict extends AbstractDictMap { |
| | | |
| | | @Override |
| | | public void init() { |
| | | put("userId","账号"); |
| | | put("avatar","头像"); |
| | | put("account","账号"); |
| | | put("name","名字"); |
| | | put("birthday","生日"); |
| | | put("sex","性别"); |
| | | put("email","电子邮件"); |
| | | put("phone","电话"); |
| | | put("roleid","角色名称"); |
| | | put("deptid","部门名称"); |
| | | put("roleIds","角色名称集合"); |
| | | } |
| | | |
| | | @Override |
| | | protected void initBeWrapped() { |
| | | putFieldWrapperMethodName("sex","getSexName"); |
| | | putFieldWrapperMethodName("deptid","getDeptName"); |
| | | putFieldWrapperMethodName("roleid","getSingleRoleName"); |
| | | putFieldWrapperMethodName("userId","getUserAccountById"); |
| | | putFieldWrapperMethodName("roleIds","getRoleName"); |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.dictmap.base; |
| | | |
| | | import java.util.HashMap; |
| | | |
| | | /** |
| | | * 字典映射抽象类 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-06 14:58 |
| | | */ |
| | | public abstract class AbstractDictMap { |
| | | |
| | | protected HashMap<String, String> dictory = new HashMap<>(); |
| | | protected HashMap<String, String> fieldWarpperDictory = new HashMap<>(); |
| | | |
| | | public AbstractDictMap(){ |
| | | put("id","主键id"); |
| | | init(); |
| | | initBeWrapped(); |
| | | } |
| | | |
| | | /** |
| | | * 初始化字段英文名称和中文名称对应的字典 |
| | | * |
| | | * @author stylefeng |
| | | * @Date 2017/5/9 19:39 |
| | | */ |
| | | public abstract void init(); |
| | | |
| | | /** |
| | | * 初始化需要被包装的字段(例如:性别为1:男,2:女,需要被包装为汉字) |
| | | * |
| | | * @author stylefeng |
| | | * @Date 2017/5/9 19:35 |
| | | */ |
| | | protected abstract void initBeWrapped(); |
| | | |
| | | public String get(String key) { |
| | | return this.dictory.get(key); |
| | | } |
| | | |
| | | public void put(String key, String value) { |
| | | this.dictory.put(key, value); |
| | | } |
| | | |
| | | public String getFieldWarpperMethodName(String key){ |
| | | return this.fieldWarpperDictory.get(key); |
| | | } |
| | | |
| | | public void putFieldWrapperMethodName(String key,String methodName){ |
| | | this.fieldWarpperDictory.put(key,methodName); |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.dictmap.base; |
| | | |
| | | /** |
| | | * 系统相关的字典 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-06 15:48 |
| | | */ |
| | | public class SystemDict extends AbstractDictMap { |
| | | |
| | | @Override |
| | | public void init() { |
| | | |
| | | } |
| | | |
| | | @Override |
| | | protected void initBeWrapped() { |
| | | |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.dictmap.factory; |
| | | |
| | | import com.stylefeng.guns.core.common.constant.factory.ConstantFactory; |
| | | import com.stylefeng.guns.core.common.constant.factory.IConstantFactory; |
| | | import com.stylefeng.guns.core.common.exception.BizExceptionEnum; |
| | | import com.stylefeng.guns.core.exception.GunsException; |
| | | |
| | | import java.lang.reflect.Method; |
| | | |
| | | /** |
| | | * 字典字段的包装器(从ConstantFactory中获取包装值) |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-06 15:12 |
| | | */ |
| | | public class DictFieldWarpperFactory { |
| | | |
| | | public static Object createFieldWarpper(Object parameter, String methodName) { |
| | | IConstantFactory constantFactory = ConstantFactory.me(); |
| | | try { |
| | | Method method = IConstantFactory.class.getMethod(methodName, parameter.getClass()); |
| | | return method.invoke(constantFactory, parameter); |
| | | } catch (Exception e) { |
| | | try { |
| | | Method method = IConstantFactory.class.getMethod(methodName, Integer.class); |
| | | return method.invoke(constantFactory, Integer.parseInt(parameter.toString())); |
| | | } catch (Exception e1) { |
| | | throw new GunsException(BizExceptionEnum.ERROR_WRAPPER_FIELD); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.factory; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.mapper.Wrapper; |
| | | import com.stylefeng.guns.core.common.constant.cache.Cache; |
| | | import com.stylefeng.guns.core.common.constant.cache.CacheKey; |
| | | import com.stylefeng.guns.core.common.constant.state.ManagerStatus; |
| | | import com.stylefeng.guns.core.common.constant.state.MenuStatus; |
| | | import com.stylefeng.guns.modular.system.dao.*; |
| | | import com.stylefeng.guns.modular.system.model.*; |
| | | import com.stylefeng.guns.core.log.LogObjectHolder; |
| | | import com.stylefeng.guns.core.support.StrKit; |
| | | import com.stylefeng.guns.core.util.Convert; |
| | | import com.stylefeng.guns.core.util.SpringContextHolder; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import org.springframework.cache.annotation.Cacheable; |
| | | import org.springframework.context.annotation.DependsOn; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 常量的生产工厂 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017年2月13日 下午10:55:21 |
| | | */ |
| | | @Component |
| | | @DependsOn("springContextHolder") |
| | | public class ConstantFactory implements IConstantFactory { |
| | | |
| | | private RoleMapper roleMapper = SpringContextHolder.getBean(RoleMapper.class); |
| | | private DeptMapper deptMapper = SpringContextHolder.getBean(DeptMapper.class); |
| | | private DictMapper dictMapper = SpringContextHolder.getBean(DictMapper.class); |
| | | private UserMapper userMapper = SpringContextHolder.getBean(UserMapper.class); |
| | | private MenuMapper menuMapper = SpringContextHolder.getBean(MenuMapper.class); |
| | | private NoticeMapper noticeMapper = SpringContextHolder.getBean(NoticeMapper.class); |
| | | |
| | | public static IConstantFactory me() { |
| | | return SpringContextHolder.getBean("constantFactory"); |
| | | } |
| | | |
| | | /** |
| | | * 根据用户id获取用户名称 |
| | | * |
| | | * @author stylefeng |
| | | * @Date 2017/5/9 23:41 |
| | | */ |
| | | @Override |
| | | public String getUserNameById(Integer userId) { |
| | | User user = userMapper.selectById(userId); |
| | | if (user != null) { |
| | | return user.getName(); |
| | | } else { |
| | | return "--"; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 根据用户id获取用户账号 |
| | | * |
| | | * @author stylefeng |
| | | * @date 2017年5月16日21:55:371 |
| | | */ |
| | | @Override |
| | | public String getUserAccountById(Integer userId) { |
| | | User user = userMapper.selectById(userId); |
| | | if (user != null) { |
| | | return user.getAccount(); |
| | | } else { |
| | | return "--"; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 通过角色ids获取角色名称 |
| | | */ |
| | | @Override |
| | | @Cacheable(value = Cache.CONSTANT, key = "'" + CacheKey.ROLES_NAME + "'+#roleIds") |
| | | public String getRoleName(String roleIds) { |
| | | Integer[] roles = Convert.toIntArray(roleIds); |
| | | StringBuilder sb = new StringBuilder(); |
| | | for (int role : roles) { |
| | | Role roleObj = roleMapper.selectById(role); |
| | | if (ToolUtil.isNotEmpty(roleObj) && ToolUtil.isNotEmpty(roleObj.getName())) { |
| | | sb.append(roleObj.getName()).append(","); |
| | | } |
| | | } |
| | | return StrKit.removeSuffix(sb.toString(), ","); |
| | | } |
| | | |
| | | /** |
| | | * 通过角色id获取角色名称 |
| | | */ |
| | | @Override |
| | | @Cacheable(value = Cache.CONSTANT, key = "'" + CacheKey.SINGLE_ROLE_NAME + "'+#roleId") |
| | | public String getSingleRoleName(Integer roleId) { |
| | | if (0 == roleId) { |
| | | return "--"; |
| | | } |
| | | Role roleObj = roleMapper.selectById(roleId); |
| | | if (ToolUtil.isNotEmpty(roleObj) && ToolUtil.isNotEmpty(roleObj.getName())) { |
| | | return roleObj.getName(); |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | /** |
| | | * 通过角色id获取角色英文名称 |
| | | */ |
| | | @Override |
| | | @Cacheable(value = Cache.CONSTANT, key = "'" + CacheKey.SINGLE_ROLE_TIP + "'+#roleId") |
| | | public String getSingleRoleTip(Integer roleId) { |
| | | if (0 == roleId) { |
| | | return "--"; |
| | | } |
| | | Role roleObj = roleMapper.selectById(roleId); |
| | | if (ToolUtil.isNotEmpty(roleObj) && ToolUtil.isNotEmpty(roleObj.getName())) { |
| | | return roleObj.getTips(); |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | /** |
| | | * 获取部门名称 |
| | | */ |
| | | @Override |
| | | @Cacheable(value = Cache.CONSTANT, key = "'" + CacheKey.DEPT_NAME + "'+#deptId") |
| | | public String getDeptName(Integer deptId) { |
| | | Dept dept = deptMapper.selectById(deptId); |
| | | if (ToolUtil.isNotEmpty(dept) && ToolUtil.isNotEmpty(dept.getFullname())) { |
| | | return dept.getFullname(); |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | /** |
| | | * 获取菜单的名称们(多个) |
| | | */ |
| | | @Override |
| | | public String getMenuNames(String menuIds) { |
| | | Integer[] menus = Convert.toIntArray(menuIds); |
| | | StringBuilder sb = new StringBuilder(); |
| | | for (int menu : menus) { |
| | | Menu menuObj = menuMapper.selectById(menu); |
| | | if (ToolUtil.isNotEmpty(menuObj) && ToolUtil.isNotEmpty(menuObj.getName())) { |
| | | sb.append(menuObj.getName()).append(","); |
| | | } |
| | | } |
| | | return StrKit.removeSuffix(sb.toString(), ","); |
| | | } |
| | | |
| | | /** |
| | | * 获取菜单名称 |
| | | */ |
| | | @Override |
| | | public String getMenuName(Long menuId) { |
| | | if (ToolUtil.isEmpty(menuId)) { |
| | | return ""; |
| | | } else { |
| | | Menu menu = menuMapper.selectById(menuId); |
| | | if (menu == null) { |
| | | return ""; |
| | | } else { |
| | | return menu.getName(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取菜单名称通过编号 |
| | | */ |
| | | @Override |
| | | public String getMenuNameByCode(String code) { |
| | | if (ToolUtil.isEmpty(code)) { |
| | | return ""; |
| | | } else { |
| | | Menu param = new Menu(); |
| | | param.setCode(code); |
| | | Menu menu = menuMapper.selectOne(param); |
| | | if (menu == null) { |
| | | return ""; |
| | | } else { |
| | | return menu.getName(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取字典名称 |
| | | */ |
| | | @Override |
| | | public String getDictName(Integer dictId) { |
| | | if (ToolUtil.isEmpty(dictId)) { |
| | | return ""; |
| | | } else { |
| | | Dict dict = dictMapper.selectById(dictId); |
| | | if (dict == null) { |
| | | return ""; |
| | | } else { |
| | | return dict.getName(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取通知标题 |
| | | */ |
| | | @Override |
| | | public String getNoticeTitle(Integer dictId) { |
| | | if (ToolUtil.isEmpty(dictId)) { |
| | | return ""; |
| | | } else { |
| | | Notice notice = noticeMapper.selectById(dictId); |
| | | if (notice == null) { |
| | | return ""; |
| | | } else { |
| | | return notice.getTitle(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 根据字典名称和字典中的值获取对应的名称 |
| | | */ |
| | | @Override |
| | | public String getDictsByName(String name, Integer val) { |
| | | Dict temp = new Dict(); |
| | | temp.setName(name); |
| | | Dict dict = dictMapper.selectOne(temp); |
| | | if (dict == null) { |
| | | return ""; |
| | | } else { |
| | | Wrapper<Dict> wrapper = new EntityWrapper<>(); |
| | | wrapper = wrapper.eq("pid", dict.getId()); |
| | | List<Dict> dicts = dictMapper.selectList(wrapper); |
| | | for (Dict item : dicts) { |
| | | if (item.getNum() != null && item.getNum().equals(val)) { |
| | | return item.getName(); |
| | | } |
| | | } |
| | | return ""; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取性别名称 |
| | | */ |
| | | @Override |
| | | public String getSexName(Integer sex) { |
| | | return getDictsByName("性别", sex); |
| | | } |
| | | |
| | | /** |
| | | * 获取用户登录状态 |
| | | */ |
| | | @Override |
| | | public String getStatusName(Integer status) { |
| | | return ManagerStatus.valueOf(status); |
| | | } |
| | | |
| | | /** |
| | | * 获取菜单状态 |
| | | */ |
| | | @Override |
| | | public String getMenuStatusName(Integer status) { |
| | | return MenuStatus.valueOf(status); |
| | | } |
| | | |
| | | /** |
| | | * 查询字典 |
| | | */ |
| | | @Override |
| | | public List<Dict> findInDict(Integer id) { |
| | | if (ToolUtil.isEmpty(id)) { |
| | | return null; |
| | | } else { |
| | | EntityWrapper<Dict> wrapper = new EntityWrapper<>(); |
| | | List<Dict> dicts = dictMapper.selectList(wrapper.eq("pid", id)); |
| | | if (dicts == null || dicts.size() == 0) { |
| | | return null; |
| | | } else { |
| | | return dicts; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取被缓存的对象(用户删除业务) |
| | | */ |
| | | @Override |
| | | public String getCacheObject(String para) { |
| | | return LogObjectHolder.me().get().toString(); |
| | | } |
| | | |
| | | /** |
| | | * 获取子部门id |
| | | */ |
| | | @Override |
| | | public List<Integer> getSubDeptId(Integer deptid) { |
| | | Wrapper<Dept> wrapper = new EntityWrapper<>(); |
| | | wrapper = wrapper.like("pids", "%[" + deptid + "]%"); |
| | | List<Dept> depts = this.deptMapper.selectList(wrapper); |
| | | |
| | | ArrayList<Integer> deptids = new ArrayList<>(); |
| | | |
| | | if(depts != null && depts.size() > 0){ |
| | | for (Dept dept : depts) { |
| | | deptids.add(dept.getId()); |
| | | } |
| | | } |
| | | |
| | | return deptids; |
| | | } |
| | | |
| | | /** |
| | | * 获取所有父部门id |
| | | */ |
| | | @Override |
| | | public List<Integer> getParentDeptIds(Integer deptid) { |
| | | Dept dept = deptMapper.selectById(deptid); |
| | | String pids = dept.getPids(); |
| | | String[] split = pids.split(","); |
| | | ArrayList<Integer> parentDeptIds = new ArrayList<>(); |
| | | for (String s : split) { |
| | | parentDeptIds.add(Integer.valueOf(StrKit.removeSuffix(StrKit.removePrefix(s, "["), "]"))); |
| | | } |
| | | return parentDeptIds; |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.factory; |
| | | |
| | | import com.stylefeng.guns.modular.system.model.Dict; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 常量生产工厂的接口 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-06-14 21:12 |
| | | */ |
| | | public interface IConstantFactory { |
| | | |
| | | /** |
| | | * 根据用户id获取用户名称 |
| | | * |
| | | * @author stylefeng |
| | | * @Date 2017/5/9 23:41 |
| | | */ |
| | | String getUserNameById(Integer userId); |
| | | |
| | | /** |
| | | * 根据用户id获取用户账号 |
| | | * |
| | | * @author stylefeng |
| | | * @date 2017年5月16日21:55:371 |
| | | */ |
| | | String getUserAccountById(Integer userId); |
| | | |
| | | /** |
| | | * 通过角色ids获取角色名称 |
| | | */ |
| | | String getRoleName(String roleIds); |
| | | |
| | | /** |
| | | * 通过角色id获取角色名称 |
| | | */ |
| | | String getSingleRoleName(Integer roleId); |
| | | |
| | | /** |
| | | * 通过角色id获取角色英文名称 |
| | | */ |
| | | String getSingleRoleTip(Integer roleId); |
| | | |
| | | /** |
| | | * 获取部门名称 |
| | | */ |
| | | String getDeptName(Integer deptId); |
| | | |
| | | /** |
| | | * 获取菜单的名称们(多个) |
| | | */ |
| | | String getMenuNames(String menuIds); |
| | | |
| | | /** |
| | | * 获取菜单名称 |
| | | */ |
| | | String getMenuName(Long menuId); |
| | | |
| | | /** |
| | | * 获取菜单名称通过编号 |
| | | */ |
| | | String getMenuNameByCode(String code); |
| | | |
| | | /** |
| | | * 获取字典名称 |
| | | */ |
| | | String getDictName(Integer dictId); |
| | | |
| | | /** |
| | | * 获取通知标题 |
| | | */ |
| | | String getNoticeTitle(Integer dictId); |
| | | |
| | | /** |
| | | * 根据字典名称和字典中的值获取对应的名称 |
| | | */ |
| | | String getDictsByName(String name, Integer val); |
| | | |
| | | /** |
| | | * 获取性别名称 |
| | | */ |
| | | String getSexName(Integer sex); |
| | | |
| | | /** |
| | | * 获取用户登录状态 |
| | | */ |
| | | String getStatusName(Integer status); |
| | | |
| | | /** |
| | | * 获取菜单状态 |
| | | */ |
| | | String getMenuStatusName(Integer status); |
| | | |
| | | /** |
| | | * 查询字典 |
| | | */ |
| | | List<Dict> findInDict(Integer id); |
| | | |
| | | /** |
| | | * 获取被缓存的对象(用户删除业务) |
| | | */ |
| | | String getCacheObject(String para); |
| | | |
| | | /** |
| | | * 获取子部门id |
| | | */ |
| | | List<Integer> getSubDeptId(Integer deptid); |
| | | |
| | | /** |
| | | * 获取所有父部门id |
| | | */ |
| | | List<Integer> getParentDeptIds(Integer deptid); |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.factory; |
| | | |
| | | import com.stylefeng.guns.core.support.StrKit; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 组合字符串生产者 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-04-27 16:42 |
| | | */ |
| | | public class MutiStrFactory { |
| | | |
| | | /** |
| | | * 每个条目之间的分隔符 |
| | | */ |
| | | public static final String ITEM_SPLIT = ";"; |
| | | |
| | | /** |
| | | * 属性之间的分隔符 |
| | | */ |
| | | public static final String ATTR_SPLIT = ":"; |
| | | |
| | | /** |
| | | * 拼接字符串的id |
| | | */ |
| | | public static final String MUTI_STR_ID = "ID"; |
| | | |
| | | /** |
| | | * 拼接字符串的CODE |
| | | */ |
| | | public static final String MUTI_STR_CODE = "CODE"; |
| | | |
| | | /** |
| | | * 拼接字符串的NAME |
| | | */ |
| | | public static final String MUTI_STR_NAME = "NAME"; |
| | | |
| | | /** |
| | | * 拼接字符串的NUM |
| | | */ |
| | | public static final String MUTI_STR_NUM = "NUM"; |
| | | |
| | | /** |
| | | * 解析一个组合字符串(例如: "1:启用;2:禁用;3:冻结" 这样的字符串) |
| | | * |
| | | * @author fengshuonan |
| | | * @Date 2017/4/27 16:44 |
| | | */ |
| | | public static List<Map<String,String>> parseKeyValue(String mutiString){ |
| | | if(ToolUtil.isEmpty(mutiString)){ |
| | | return new ArrayList<>(); |
| | | }else{ |
| | | ArrayList<Map<String,String>> results = new ArrayList<>(); |
| | | String[] items = StrKit.split(StrKit.removeSuffix(mutiString, ITEM_SPLIT), ITEM_SPLIT); |
| | | for (String item : items) { |
| | | String[] attrs = item.split(ATTR_SPLIT); |
| | | HashMap<String, String> itemMap = new HashMap<>(); |
| | | itemMap.put(MUTI_STR_CODE,attrs[0]); |
| | | itemMap.put(MUTI_STR_NAME,attrs[1]); |
| | | itemMap.put(MUTI_STR_NUM,attrs[2]); |
| | | results.add(itemMap); |
| | | } |
| | | return results; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 解析id:key:value这样类型的字符串 |
| | | * |
| | | * @author fengshuonan |
| | | * @Date 2017/4/28 11:06 |
| | | */ |
| | | public static List<Map<String,String>> parseIdKeyValue(String mutiString){ |
| | | if(ToolUtil.isEmpty(mutiString)){ |
| | | return new ArrayList<>(); |
| | | }else{ |
| | | ArrayList<Map<String,String>> results = new ArrayList<>(); |
| | | String[] items = StrKit.split(StrKit.removeSuffix(mutiString, ITEM_SPLIT), ITEM_SPLIT); |
| | | for (String item : items) { |
| | | String[] attrs = item.split(ATTR_SPLIT); |
| | | HashMap<String, String> itemMap = new HashMap<>(); |
| | | itemMap.put(MUTI_STR_CODE,attrs[0]); |
| | | itemMap.put(MUTI_STR_NAME,attrs[1]); |
| | | itemMap.put(MUTI_STR_NUM,attrs[2]); |
| | | results.add(itemMap); |
| | | } |
| | | return results; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.factory; |
| | | |
| | | import com.baomidou.mybatisplus.plugins.Page; |
| | | import com.stylefeng.guns.core.common.constant.state.Order; |
| | | import com.stylefeng.guns.core.support.HttpKit; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | |
| | | /** |
| | | * BootStrap Table默认的分页参数创建 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-04-05 22:25 |
| | | */ |
| | | public class PageFactory<T> { |
| | | |
| | | public Page<T> defaultPage() { |
| | | HttpServletRequest request = HttpKit.getRequest(); |
| | | int limit = Integer.valueOf(request.getParameter("limit")); //每页多少条数据 |
| | | int offset = Integer.valueOf(request.getParameter("offset")); //每页的偏移量(本页当前有多少条) |
| | | String sort = request.getParameter("sort"); //排序字段名称 |
| | | String order = request.getParameter("order"); //asc或desc(升序或降序) |
| | | if (ToolUtil.isEmpty(sort)) { |
| | | Page<T> page = new Page<>((offset / limit + 1), limit); |
| | | page.setOpenSort(false); |
| | | return page; |
| | | } else { |
| | | Page<T> page = new Page<>((offset / limit + 1), limit, sort); |
| | | if (Order.ASC.getDes().equals(order)) { |
| | | page.setAsc(true); |
| | | } else { |
| | | page.setAsc(false); |
| | | } |
| | | return page; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.state; |
| | | |
| | | /** |
| | | * 业务日志类型 |
| | | * |
| | | * @author fengshuonan |
| | | * @Date 2017年1月22日 下午12:14:59 |
| | | */ |
| | | public enum BizLogType { |
| | | |
| | | ALL(0, null),//全部日志 |
| | | BUSSINESS(1, "业务日志"), |
| | | EXCEPTION(2, "异常日志"); |
| | | |
| | | Integer val; |
| | | String message; |
| | | |
| | | BizLogType(Integer val, String message) { |
| | | this.val = val; |
| | | this.message = message; |
| | | } |
| | | |
| | | public String getMessage() { |
| | | return message; |
| | | } |
| | | |
| | | public void setMessage(String message) { |
| | | this.message = message; |
| | | } |
| | | |
| | | public Integer getVal() { |
| | | return val; |
| | | } |
| | | |
| | | public void setVal(Integer val) { |
| | | this.val = val; |
| | | } |
| | | |
| | | public static String valueOf(Integer value) { |
| | | if (value == null) { |
| | | return null; |
| | | } else { |
| | | for (BizLogType bizLogType : BizLogType.values()) { |
| | | if (bizLogType.getVal().equals(value)) { |
| | | return bizLogType.getMessage(); |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.state; |
| | | |
| | | /** |
| | | * 是否是菜单的枚举 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017年6月1日22:50:11 |
| | | */ |
| | | public enum ExpenseState { |
| | | |
| | | SUBMITING(1, "待提交"), |
| | | CHECKING(2, "待审核"), |
| | | PASS(3, "审核通过"), |
| | | UN_PASS(4, "未通过"); |
| | | |
| | | int code; |
| | | String message; |
| | | |
| | | ExpenseState(int code, String message) { |
| | | this.code = code; |
| | | this.message = message; |
| | | } |
| | | |
| | | public int getCode() { |
| | | return code; |
| | | } |
| | | |
| | | public void setCode(int code) { |
| | | this.code = code; |
| | | } |
| | | |
| | | public String getMessage() { |
| | | return message; |
| | | } |
| | | |
| | | public void setMessage(String message) { |
| | | this.message = message; |
| | | } |
| | | |
| | | public static String valueOf(Integer status) { |
| | | if (status == null) { |
| | | return ""; |
| | | } else { |
| | | for (ExpenseState s : ExpenseState.values()) { |
| | | if (s.getCode() == status) { |
| | | return s.getMessage(); |
| | | } |
| | | } |
| | | return ""; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.state; |
| | | |
| | | /** |
| | | * 业务是否成功的日志记录 |
| | | * |
| | | * @author fengshuonan |
| | | * @Date 2017年1月22日 下午12:14:59 |
| | | */ |
| | | public enum LogSucceed { |
| | | |
| | | SUCCESS("成功"), |
| | | FAIL("失败"); |
| | | |
| | | String message; |
| | | |
| | | LogSucceed(String message) { |
| | | this.message = message; |
| | | } |
| | | |
| | | public String getMessage() { |
| | | return message; |
| | | } |
| | | |
| | | public void setMessage(String message) { |
| | | this.message = message; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.state; |
| | | |
| | | /** |
| | | * 日志类型 |
| | | * |
| | | * @author fengshuonan |
| | | * @Date 2017年1月22日 下午12:14:59 |
| | | */ |
| | | public enum LogType { |
| | | |
| | | LOGIN("登录日志"), |
| | | LOGIN_FAIL("登录失败日志"), |
| | | EXIT("退出日志"), |
| | | EXCEPTION("异常日志"), |
| | | BUSSINESS("业务日志"); |
| | | |
| | | String message; |
| | | |
| | | LogType(String message) { |
| | | this.message = message; |
| | | } |
| | | |
| | | public String getMessage() { |
| | | return message; |
| | | } |
| | | |
| | | public void setMessage(String message) { |
| | | this.message = message; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.state; |
| | | |
| | | /** |
| | | * 管理员的状态 |
| | | * |
| | | * @author fengshuonan |
| | | * @Date 2017年1月10日 下午9:54:13 |
| | | */ |
| | | public enum ManagerStatus { |
| | | |
| | | OK(1, "启用"), FREEZED(2, "冻结"), DELETED(3, "被删除"); |
| | | |
| | | int code; |
| | | String message; |
| | | |
| | | ManagerStatus(int code, String message) { |
| | | this.code = code; |
| | | this.message = message; |
| | | } |
| | | |
| | | public int getCode() { |
| | | return code; |
| | | } |
| | | |
| | | public void setCode(int code) { |
| | | this.code = code; |
| | | } |
| | | |
| | | public String getMessage() { |
| | | return message; |
| | | } |
| | | |
| | | public void setMessage(String message) { |
| | | this.message = message; |
| | | } |
| | | |
| | | public static String valueOf(Integer value) { |
| | | if (value == null) { |
| | | return ""; |
| | | } else { |
| | | for (ManagerStatus ms : ManagerStatus.values()) { |
| | | if (ms.getCode() == value) { |
| | | return ms.getMessage(); |
| | | } |
| | | } |
| | | return ""; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.state; |
| | | |
| | | /** |
| | | * 菜单是否打开的状态 |
| | | * |
| | | * @author fengshuonan |
| | | * @Date 2017年4月8日10:12:15 |
| | | */ |
| | | public enum MenuOpenStatus { |
| | | |
| | | OPEN(1, "打开"), |
| | | CLOSE(0, "关闭"); |
| | | |
| | | int code; |
| | | String message; |
| | | |
| | | MenuOpenStatus(int code, String message) { |
| | | this.code = code; |
| | | this.message = message; |
| | | } |
| | | |
| | | public int getCode() { |
| | | return code; |
| | | } |
| | | |
| | | public void setCode(int code) { |
| | | this.code = code; |
| | | } |
| | | |
| | | public String getMessage() { |
| | | return message; |
| | | } |
| | | |
| | | public void setMessage(String message) { |
| | | this.message = message; |
| | | } |
| | | |
| | | public static String valueOf(Integer status) { |
| | | if (status == null) { |
| | | return ""; |
| | | } else { |
| | | for (MenuOpenStatus s : MenuOpenStatus.values()) { |
| | | if (s.getCode() == status) { |
| | | return s.getMessage(); |
| | | } |
| | | } |
| | | return ""; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.state; |
| | | |
| | | /** |
| | | * 菜单的状态 |
| | | * |
| | | * @author fengshuonan |
| | | * @Date 2017年1月22日 下午12:14:59 |
| | | */ |
| | | public enum MenuStatus { |
| | | |
| | | ENABLE(1, "启用"), |
| | | DISABLE(0, "禁用"); |
| | | |
| | | int code; |
| | | String message; |
| | | |
| | | MenuStatus(int code, String message) { |
| | | this.code = code; |
| | | this.message = message; |
| | | } |
| | | |
| | | public int getCode() { |
| | | return code; |
| | | } |
| | | |
| | | public void setCode(int code) { |
| | | this.code = code; |
| | | } |
| | | |
| | | public String getMessage() { |
| | | return message; |
| | | } |
| | | |
| | | public void setMessage(String message) { |
| | | this.message = message; |
| | | } |
| | | |
| | | public static String valueOf(Integer status) { |
| | | if (status == null) { |
| | | return ""; |
| | | } else { |
| | | for (MenuStatus s : MenuStatus.values()) { |
| | | if (s.getCode() == status) { |
| | | return s.getMessage(); |
| | | } |
| | | } |
| | | return ""; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.constant.state; |
| | | |
| | | /** |
| | | * 数据库排序 |
| | | * |
| | | * @author fengshuonan |
| | | * @Date 2017年5月31日20:48:41 |
| | | */ |
| | | public enum Order { |
| | | |
| | | ASC("asc"), DESC("desc"); |
| | | |
| | | private String des; |
| | | |
| | | Order(String des) { |
| | | this.des = des; |
| | | } |
| | | |
| | | public String getDes() { |
| | | return des; |
| | | } |
| | | |
| | | public void setDes(String des) { |
| | | this.des = des; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.exception; |
| | | |
| | | import com.stylefeng.guns.core.exception.ServiceExceptionEnum; |
| | | |
| | | /** |
| | | * @author fengshuonan |
| | | * @Description 所有业务异常的枚举 |
| | | * @date 2016年11月12日 下午5:04:51 |
| | | */ |
| | | public enum BizExceptionEnum implements ServiceExceptionEnum { |
| | | |
| | | /** |
| | | * 字典 |
| | | */ |
| | | DICT_EXISTED(400, "字典已经存在"), |
| | | ERROR_CREATE_DICT(500, "创建字典失败"), |
| | | ERROR_WRAPPER_FIELD(500, "包装字典属性失败"), |
| | | ERROR_CODE_EMPTY(500, "字典类型不能为空"), |
| | | |
| | | /** |
| | | * 文件上传 |
| | | */ |
| | | FILE_READING_ERROR(400, "FILE_READING_ERROR!"), |
| | | FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"), |
| | | UPLOAD_ERROR(500, "上传图片出错"), |
| | | |
| | | /** |
| | | * 权限和数据问题 |
| | | */ |
| | | DB_RESOURCE_NULL(400, "数据库中没有该资源"), |
| | | NO_PERMITION(405, "权限异常"), |
| | | REQUEST_INVALIDATE(400, "请求数据格式不正确"), |
| | | INVALID_KAPTCHA(400, "验证码不正确"), |
| | | CANT_DELETE_ADMIN(600, "不能删除超级管理员"), |
| | | CANT_FREEZE_ADMIN(600, "不能冻结超级管理员"), |
| | | CANT_CHANGE_ADMIN(600, "不能修改超级管理员角色"), |
| | | |
| | | /** |
| | | * 账户问题 |
| | | */ |
| | | USER_ALREADY_REG(401, "该用户已经注册"), |
| | | NO_THIS_USER(400, "没有此用户"), |
| | | USER_NOT_EXISTED(400, "没有此用户"), |
| | | ACCOUNT_FREEZED(401, "账号被冻结"), |
| | | OLD_PWD_NOT_RIGHT(402, "原密码不正确"), |
| | | TWO_PWD_NOT_MATCH(405, "两次输入密码不一致"), |
| | | |
| | | /** |
| | | * 错误的请求 |
| | | */ |
| | | MENU_PCODE_COINCIDENCE(400, "菜单编号和副编号不能一致"), |
| | | EXISTED_THE_MENU(400, "菜单编号重复,不能添加"), |
| | | DICT_MUST_BE_NUMBER(400, "字典的值必须为数字"), |
| | | REQUEST_NULL(400, "请求有错误"), |
| | | SESSION_TIMEOUT(400, "会话超时"), |
| | | SERVER_ERROR(500, "服务器异常"), |
| | | |
| | | /** |
| | | * token异常 |
| | | */ |
| | | TOKEN_EXPIRED(600, "token过期"), |
| | | TOKEN_ERROR(600, "token验证失败"), |
| | | |
| | | /** |
| | | * 签名异常 |
| | | */ |
| | | SIGN_ERROR(700, "签名验证失败"), |
| | | |
| | | /** |
| | | * 其他 |
| | | */ |
| | | AUTH_REQUEST_ERROR(400, "账号密码错误"); |
| | | |
| | | BizExceptionEnum(int code, String message) { |
| | | this.code = code; |
| | | this.message = message; |
| | | } |
| | | |
| | | private Integer code; |
| | | |
| | | private String message; |
| | | |
| | | @Override |
| | | public Integer getCode() { |
| | | return code; |
| | | } |
| | | |
| | | public void setCode(Integer code) { |
| | | this.code = code; |
| | | } |
| | | |
| | | @Override |
| | | public String getMessage() { |
| | | return message; |
| | | } |
| | | |
| | | public void setMessage(String message) { |
| | | this.message = message; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.common.exception; |
| | | |
| | | /** |
| | | * 验证码错误异常 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-05-05 23:52 |
| | | */ |
| | | public class InvalidKaptchaException extends RuntimeException { |
| | | } |
New file |
| | |
| | | /* |
| | | * Licensed to the Apache Software Foundation (ASF) under one |
| | | * or more contributor license agreements. See the NOTICE file |
| | | * distributed with this work for additional information |
| | | * regarding copyright ownership. The ASF licenses this file |
| | | * to you under the Apache License, Version 2.0 (the |
| | | * "License"); you may not use this file except in compliance |
| | | * with the License. You may obtain a copy of the License at |
| | | * |
| | | * http://www.apache.org/licenses/LICENSE-2.0 |
| | | * |
| | | * Unless required by applicable law or agreed to in writing, |
| | | * software distributed under the License is distributed on an |
| | | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| | | * KIND, either express or implied. See the License for the |
| | | * specific language governing permissions and limitations |
| | | * under the License. |
| | | */ |
| | | package com.stylefeng.guns.core.intercept; |
| | | |
| | | import com.stylefeng.guns.core.shiro.ShiroKit; |
| | | import org.apache.shiro.subject.Subject; |
| | | import org.apache.shiro.web.filter.AccessControlFilter; |
| | | import org.apache.shiro.web.util.WebUtils; |
| | | |
| | | import javax.servlet.ServletRequest; |
| | | import javax.servlet.ServletResponse; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | |
| | | /** |
| | | * Filter that allows access to resources if the accessor is a known user, which is defined as |
| | | * having a known principal. This means that any user who is authenticated or remembered via a |
| | | * 'remember me' feature will be allowed access from this filter. |
| | | * <p/> |
| | | * If the accessor is not a known user, then they will be redirected to the {@link #setLoginUrl(String) loginUrl}</p> |
| | | * |
| | | * @since 0.9 |
| | | */ |
| | | public class GunsUserFilter extends AccessControlFilter { |
| | | |
| | | /** |
| | | * Returns <code>true</code> if the request is a |
| | | * {@link #isLoginRequest(javax.servlet.ServletRequest, javax.servlet.ServletResponse) loginRequest} or |
| | | * if the current {@link #getSubject(javax.servlet.ServletRequest, javax.servlet.ServletResponse) subject} |
| | | * is not <code>null</code>, <code>false</code> otherwise. |
| | | * |
| | | * @return <code>true</code> if the request is a |
| | | * {@link #isLoginRequest(javax.servlet.ServletRequest, javax.servlet.ServletResponse) loginRequest} or |
| | | * if the current {@link #getSubject(javax.servlet.ServletRequest, javax.servlet.ServletResponse) subject} |
| | | * is not <code>null</code>, <code>false</code> otherwise. |
| | | */ |
| | | protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) { |
| | | if (isLoginRequest(request, response)) { |
| | | return true; |
| | | } else { |
| | | Subject subject = getSubject(request, response); |
| | | // If principal is not null, then the user is known and should be allowed access. |
| | | return subject.getPrincipal() != null; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * This default implementation simply calls |
| | | * {@link #saveRequestAndRedirectToLogin(javax.servlet.ServletRequest, javax.servlet.ServletResponse) saveRequestAndRedirectToLogin} |
| | | * and then immediately returns <code>false</code>, thereby preventing the chain from continuing so the redirect may |
| | | * execute. |
| | | */ |
| | | protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { |
| | | HttpServletRequest httpServletRequest = WebUtils.toHttp(request); |
| | | HttpServletResponse httpServletResponse = WebUtils.toHttp(response); |
| | | |
| | | /** |
| | | * 如果是ajax请求则不进行跳转 |
| | | */ |
| | | if (httpServletRequest.getHeader("x-requested-with") != null |
| | | && httpServletRequest.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) { |
| | | httpServletResponse.setHeader("sessionstatus", "timeout"); |
| | | return false; |
| | | } else { |
| | | |
| | | /** |
| | | * 第一次点击页面 |
| | | */ |
| | | String referer = httpServletRequest.getHeader("Referer"); |
| | | if (referer == null) { |
| | | saveRequestAndRedirectToLogin(request, response); |
| | | return false; |
| | | } else { |
| | | |
| | | /** |
| | | * 从别的页面跳转过来的 |
| | | */ |
| | | if (ShiroKit.getSession().getAttribute("sessionFlag") == null) { |
| | | httpServletRequest.setAttribute("tips", "session超时"); |
| | | httpServletRequest.getRequestDispatcher("/login").forward(request, response); |
| | | return false; |
| | | } else { |
| | | saveRequestAndRedirectToLogin(request, response); |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.intercept; |
| | | |
| | | import com.stylefeng.guns.core.base.tips.ErrorTip; |
| | | import com.stylefeng.guns.core.common.constant.JwtConstants; |
| | | import com.stylefeng.guns.core.common.exception.BizExceptionEnum; |
| | | import com.stylefeng.guns.core.util.JwtTokenUtil; |
| | | import com.stylefeng.guns.core.util.RenderUtil; |
| | | import io.jsonwebtoken.JwtException; |
| | | import org.springframework.web.method.HandlerMethod; |
| | | import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | |
| | | |
| | | /** |
| | | * Rest Api接口鉴权 |
| | | * |
| | | * @author stylefeng |
| | | * @Date 2018/7/20 23:11 |
| | | */ |
| | | public class RestApiInteceptor extends HandlerInterceptorAdapter { |
| | | |
| | | @Override |
| | | public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { |
| | | if (handler instanceof org.springframework.web.servlet.resource.ResourceHttpRequestHandler) { |
| | | return true; |
| | | } |
| | | HandlerMethod handlerMethod = (HandlerMethod) handler; |
| | | return check(request, response, handlerMethod); |
| | | } |
| | | |
| | | private boolean check(HttpServletRequest request, HttpServletResponse response, HandlerMethod handlerMethod) { |
| | | if (request.getServletPath().equals(JwtConstants.AUTH_PATH)) { |
| | | return true; |
| | | } |
| | | final String requestHeader = request.getHeader(JwtConstants.AUTH_HEADER); |
| | | String authToken; |
| | | if (requestHeader != null && requestHeader.startsWith("Bearer ")) { |
| | | authToken = requestHeader.substring(7); |
| | | |
| | | //验证token是否过期,包含了验证jwt是否正确 |
| | | try { |
| | | boolean flag = JwtTokenUtil.isTokenExpired(authToken); |
| | | if (flag) { |
| | | RenderUtil.renderJson(response, new ErrorTip(BizExceptionEnum.TOKEN_EXPIRED.getCode(), BizExceptionEnum.TOKEN_EXPIRED.getMessage())); |
| | | return false; |
| | | } |
| | | } catch (JwtException e) { |
| | | //有异常就是token解析失败 |
| | | RenderUtil.renderJson(response, new ErrorTip(BizExceptionEnum.TOKEN_ERROR.getCode(), BizExceptionEnum.TOKEN_ERROR.getMessage())); |
| | | return false; |
| | | } |
| | | } else { |
| | | //header没有带Bearer字段 |
| | | RenderUtil.renderJson(response, new ErrorTip(BizExceptionEnum.TOKEN_ERROR.getCode(), BizExceptionEnum.TOKEN_ERROR.getMessage())); |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.intercept; |
| | | |
| | | import com.stylefeng.guns.core.base.controller.BaseController; |
| | | import com.stylefeng.guns.core.util.HttpSessionHolder; |
| | | import org.aspectj.lang.ProceedingJoinPoint; |
| | | import org.aspectj.lang.annotation.Around; |
| | | import org.aspectj.lang.annotation.Aspect; |
| | | import org.aspectj.lang.annotation.Pointcut; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | /** |
| | | * 静态调用session的拦截器 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2016年11月13日 下午10:15:42 |
| | | */ |
| | | @Aspect |
| | | @Component |
| | | public class SessionHolderInterceptor extends BaseController { |
| | | |
| | | @Pointcut("execution(* com.stylefeng.guns.*..controller.*.*(..))") |
| | | public void cutService() { |
| | | } |
| | | |
| | | @Around("cutService()") |
| | | public Object sessionKit(ProceedingJoinPoint point) throws Throwable { |
| | | HttpSessionHolder.put(super.getHttpServletRequest().getSession()); |
| | | try { |
| | | return point.proceed(); |
| | | } finally { |
| | | HttpSessionHolder.remove(); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | /** |
| | | * Copyright (c) 2015-2017, Chill Zhuang 庄骞 (smallchill@163.com). |
| | | * <p> |
| | | * Licensed under the Apache License, Version 2.0 (the "License"); |
| | | * you may not use this file except in compliance with the License. |
| | | * You may obtain a copy of the License at |
| | | * <p> |
| | | * http://www.apache.org/licenses/LICENSE-2.0 |
| | | * <p> |
| | | * Unless required by applicable law or agreed to in writing, software |
| | | * distributed under the License is distributed on an "AS IS" BASIS, |
| | | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | * See the License for the specific language governing permissions and |
| | | * limitations under the License. |
| | | */ |
| | | package com.stylefeng.guns.core.listener; |
| | | |
| | | import javax.servlet.ServletContext; |
| | | import javax.servlet.ServletContextEvent; |
| | | import javax.servlet.ServletContextListener; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * ServletContext监听器 |
| | | * |
| | | * @author stylefeng |
| | | * @Date 2018/2/22 21:07 |
| | | */ |
| | | public class ConfigListener implements ServletContextListener { |
| | | |
| | | private static Map<String, String> conf = new HashMap<>(); |
| | | |
| | | public static Map<String, String> getConf() { |
| | | return conf; |
| | | } |
| | | |
| | | @Override |
| | | public void contextDestroyed(ServletContextEvent arg0) { |
| | | conf.clear(); |
| | | } |
| | | |
| | | @Override |
| | | public void contextInitialized(ServletContextEvent evt) { |
| | | ServletContext sc = evt.getServletContext(); |
| | | |
| | | //项目发布,当前运行环境的绝对路径 |
| | | conf.put("realPath", sc.getRealPath("/").replaceFirst("/", "")); |
| | | |
| | | //servletContextPath,默认"" |
| | | conf.put("contextPath", sc.getContextPath()); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.log; |
| | | |
| | | import java.util.TimerTask; |
| | | import java.util.concurrent.ScheduledThreadPoolExecutor; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | | * 日志管理器 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-03-30 16:29 |
| | | */ |
| | | public class LogManager { |
| | | |
| | | //日志记录操作延时 |
| | | private final int OPERATE_DELAY_TIME = 10; |
| | | |
| | | //异步操作记录日志的线程池 |
| | | private ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(10); |
| | | |
| | | private LogManager() { |
| | | } |
| | | |
| | | public static LogManager logManager = new LogManager(); |
| | | |
| | | public static LogManager me() { |
| | | return logManager; |
| | | } |
| | | |
| | | public void executeLog(TimerTask task) { |
| | | executor.schedule(task, OPERATE_DELAY_TIME, TimeUnit.MILLISECONDS); |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.log; |
| | | |
| | | import com.stylefeng.guns.core.util.SpringContextHolder; |
| | | import org.springframework.context.annotation.Scope; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.web.context.WebApplicationContext; |
| | | |
| | | import java.io.Serializable; |
| | | |
| | | /** |
| | | * 被修改的bean临时存放的地方 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-03-31 11:19 |
| | | */ |
| | | @Component |
| | | @Scope(scopeName = WebApplicationContext.SCOPE_SESSION) |
| | | public class LogObjectHolder implements Serializable{ |
| | | |
| | | private Object object = null; |
| | | |
| | | public void set(Object obj) { |
| | | this.object = obj; |
| | | } |
| | | |
| | | public Object get() { |
| | | return object; |
| | | } |
| | | |
| | | public static LogObjectHolder me(){ |
| | | LogObjectHolder bean = SpringContextHolder.getBean(LogObjectHolder.class); |
| | | return bean; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.log.factory; |
| | | |
| | | import com.stylefeng.guns.core.common.constant.state.LogSucceed; |
| | | import com.stylefeng.guns.core.common.constant.state.LogType; |
| | | import com.stylefeng.guns.modular.system.model.LoginLog; |
| | | import com.stylefeng.guns.modular.system.model.OperationLog; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * 日志对象创建工厂 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2016年12月6日 下午9:18:27 |
| | | */ |
| | | public class LogFactory { |
| | | |
| | | /** |
| | | * 创建操作日志 |
| | | */ |
| | | public static OperationLog createOperationLog(LogType logType, Integer userId, String bussinessName, String clazzName, String methodName, String msg, LogSucceed succeed) { |
| | | OperationLog operationLog = new OperationLog(); |
| | | operationLog.setLogtype(logType.getMessage()); |
| | | operationLog.setLogname(bussinessName); |
| | | operationLog.setUserid(userId); |
| | | operationLog.setClassname(clazzName); |
| | | operationLog.setMethod(methodName); |
| | | operationLog.setCreatetime(new Date()); |
| | | operationLog.setSucceed(succeed.getMessage()); |
| | | operationLog.setMessage(msg); |
| | | return operationLog; |
| | | } |
| | | |
| | | /** |
| | | * 创建登录日志 |
| | | */ |
| | | public static LoginLog createLoginLog(LogType logType, Integer userId, String msg, String ip) { |
| | | LoginLog loginLog = new LoginLog(); |
| | | loginLog.setLogname(logType.getMessage()); |
| | | loginLog.setUserid(userId); |
| | | loginLog.setCreatetime(new Date()); |
| | | loginLog.setSucceed(LogSucceed.SUCCESS.getMessage()); |
| | | loginLog.setIp(ip); |
| | | loginLog.setMessage(msg); |
| | | return loginLog; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.log.factory; |
| | | |
| | | import com.stylefeng.guns.core.common.constant.state.LogSucceed; |
| | | import com.stylefeng.guns.core.common.constant.state.LogType; |
| | | import com.stylefeng.guns.modular.system.dao.LoginLogMapper; |
| | | import com.stylefeng.guns.modular.system.dao.OperationLogMapper; |
| | | import com.stylefeng.guns.modular.system.model.LoginLog; |
| | | import com.stylefeng.guns.modular.system.model.OperationLog; |
| | | import com.stylefeng.guns.core.db.Db; |
| | | import com.stylefeng.guns.core.log.LogManager; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | |
| | | import java.util.TimerTask; |
| | | |
| | | /** |
| | | * 日志操作任务创建工厂 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2016年12月6日 下午9:18:27 |
| | | */ |
| | | public class LogTaskFactory { |
| | | |
| | | private static Logger logger = LoggerFactory.getLogger(LogManager.class); |
| | | private static LoginLogMapper loginLogMapper = Db.getMapper(LoginLogMapper.class); |
| | | private static OperationLogMapper operationLogMapper = Db.getMapper(OperationLogMapper.class); |
| | | |
| | | public static TimerTask loginLog(final Integer userId, final String ip) { |
| | | return new TimerTask() { |
| | | @Override |
| | | public void run() { |
| | | try { |
| | | LoginLog loginLog = LogFactory.createLoginLog(LogType.LOGIN, userId, null, ip); |
| | | loginLogMapper.insert(loginLog); |
| | | } catch (Exception e) { |
| | | logger.error("创建登录日志异常!", e); |
| | | } |
| | | } |
| | | }; |
| | | } |
| | | |
| | | public static TimerTask loginLog(final String username, final String msg, final String ip) { |
| | | return new TimerTask() { |
| | | @Override |
| | | public void run() { |
| | | LoginLog loginLog = LogFactory.createLoginLog( |
| | | LogType.LOGIN_FAIL, null, "账号:" + username + "," + msg, ip); |
| | | try { |
| | | loginLogMapper.insert(loginLog); |
| | | } catch (Exception e) { |
| | | logger.error("创建登录失败异常!", e); |
| | | } |
| | | } |
| | | }; |
| | | } |
| | | |
| | | public static TimerTask exitLog(final Integer userId, final String ip) { |
| | | return new TimerTask() { |
| | | @Override |
| | | public void run() { |
| | | LoginLog loginLog = LogFactory.createLoginLog(LogType.EXIT, userId, null,ip); |
| | | try { |
| | | loginLogMapper.insert(loginLog); |
| | | } catch (Exception e) { |
| | | logger.error("创建退出日志异常!", e); |
| | | } |
| | | } |
| | | }; |
| | | } |
| | | |
| | | public static TimerTask bussinessLog(final Integer userId, final String bussinessName, final String clazzName, final String methodName, final String msg) { |
| | | return new TimerTask() { |
| | | @Override |
| | | public void run() { |
| | | OperationLog operationLog = LogFactory.createOperationLog( |
| | | LogType.BUSSINESS, userId, bussinessName, clazzName, methodName, msg, LogSucceed.SUCCESS); |
| | | try { |
| | | operationLogMapper.insert(operationLog); |
| | | } catch (Exception e) { |
| | | logger.error("创建业务日志异常!", e); |
| | | } |
| | | } |
| | | }; |
| | | } |
| | | |
| | | public static TimerTask exceptionLog(final Integer userId, final Exception exception) { |
| | | return new TimerTask() { |
| | | @Override |
| | | public void run() { |
| | | String msg = ToolUtil.getExceptionMsg(exception); |
| | | OperationLog operationLog = LogFactory.createOperationLog( |
| | | LogType.EXCEPTION, userId, "", null, null, msg, LogSucceed.FAIL); |
| | | try { |
| | | operationLogMapper.insert(operationLog); |
| | | } catch (Exception e) { |
| | | logger.error("创建异常日志异常!", e); |
| | | } |
| | | } |
| | | }; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.shiro; |
| | | |
| | | import com.stylefeng.guns.core.shiro.factory.IShiro; |
| | | import com.stylefeng.guns.core.shiro.factory.ShiroFactroy; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.system.model.User; |
| | | import org.apache.shiro.authc.AuthenticationException; |
| | | import org.apache.shiro.authc.AuthenticationInfo; |
| | | import org.apache.shiro.authc.AuthenticationToken; |
| | | import org.apache.shiro.authc.UsernamePasswordToken; |
| | | import org.apache.shiro.authc.credential.CredentialsMatcher; |
| | | import org.apache.shiro.authc.credential.HashedCredentialsMatcher; |
| | | import org.apache.shiro.authz.AuthorizationInfo; |
| | | import org.apache.shiro.authz.SimpleAuthorizationInfo; |
| | | import org.apache.shiro.realm.AuthorizingRealm; |
| | | import org.apache.shiro.subject.PrincipalCollection; |
| | | |
| | | import java.util.HashSet; |
| | | import java.util.List; |
| | | import java.util.Set; |
| | | |
| | | public class ShiroDbRealm extends AuthorizingRealm { |
| | | |
| | | /** |
| | | * 登录认证 |
| | | */ |
| | | @Override |
| | | protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken) |
| | | throws AuthenticationException { |
| | | IShiro shiroFactory = ShiroFactroy.me(); |
| | | UsernamePasswordToken token = (UsernamePasswordToken) authcToken; |
| | | User user = shiroFactory.user(token.getUsername()); |
| | | ShiroUser shiroUser = shiroFactory.shiroUser(user); |
| | | return shiroFactory.info(shiroUser, user, super.getName()); |
| | | } |
| | | |
| | | /** |
| | | * 权限认证 |
| | | */ |
| | | @Override |
| | | protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { |
| | | IShiro shiroFactory = ShiroFactroy.me(); |
| | | ShiroUser shiroUser = (ShiroUser) principals.getPrimaryPrincipal(); |
| | | List<Integer> roleList = shiroUser.getRoleList(); |
| | | |
| | | Set<String> permissionSet = new HashSet<>(); |
| | | Set<String> roleNameSet = new HashSet<>(); |
| | | |
| | | for (Integer roleId : roleList) { |
| | | List<String> permissions = shiroFactory.findPermissionsByRoleId(roleId); |
| | | if (permissions != null) { |
| | | for (String permission : permissions) { |
| | | if (ToolUtil.isNotEmpty(permission)) { |
| | | permissionSet.add(permission); |
| | | } |
| | | } |
| | | } |
| | | String roleName = shiroFactory.findRoleNameByRoleId(roleId); |
| | | roleNameSet.add(roleName); |
| | | } |
| | | |
| | | SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); |
| | | info.addStringPermissions(permissionSet); |
| | | info.addRoles(roleNameSet); |
| | | return info; |
| | | } |
| | | |
| | | /** |
| | | * 设置认证加密方式 |
| | | */ |
| | | @Override |
| | | public void setCredentialsMatcher(CredentialsMatcher credentialsMatcher) { |
| | | HashedCredentialsMatcher md5CredentialsMatcher = new HashedCredentialsMatcher(); |
| | | md5CredentialsMatcher.setHashAlgorithmName(ShiroKit.hashAlgorithmName); |
| | | md5CredentialsMatcher.setHashIterations(ShiroKit.hashIterations); |
| | | super.setCredentialsMatcher(md5CredentialsMatcher); |
| | | } |
| | | } |
New file |
| | |
| | | /** |
| | | * Copyright (c) 2015-2017, Chill Zhuang 庄骞 (smallchill@163.com). |
| | | * <p> |
| | | * Licensed under the Apache License, Version 2.0 (the "License"); |
| | | * you may not use this file except in compliance with the License. |
| | | * You may obtain a copy of the License at |
| | | * <p> |
| | | * http://www.apache.org/licenses/LICENSE-2.0 |
| | | * <p> |
| | | * Unless required by applicable law or agreed to in writing, software |
| | | * distributed under the License is distributed on an "AS IS" BASIS, |
| | | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | * See the License for the specific language governing permissions and |
| | | * limitations under the License. |
| | | */ |
| | | package com.stylefeng.guns.core.shiro; |
| | | |
| | | import com.stylefeng.guns.core.common.constant.Const; |
| | | import com.stylefeng.guns.core.common.constant.factory.ConstantFactory; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.apache.shiro.crypto.hash.Md5Hash; |
| | | import org.apache.shiro.crypto.hash.SimpleHash; |
| | | import org.apache.shiro.session.Session; |
| | | import org.apache.shiro.subject.Subject; |
| | | import org.apache.shiro.util.ByteSource; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * shiro工具类 |
| | | * |
| | | * @author dafei, Chill Zhuang |
| | | */ |
| | | public class ShiroKit { |
| | | |
| | | private static final String NAMES_DELIMETER = ","; |
| | | |
| | | /** |
| | | * 加盐参数 |
| | | */ |
| | | public final static String hashAlgorithmName = "MD5"; |
| | | |
| | | /** |
| | | * 循环次数 |
| | | */ |
| | | public final static int hashIterations = 1024; |
| | | |
| | | /** |
| | | * shiro密码加密工具类 |
| | | * |
| | | * @param credentials 密码 |
| | | * @param saltSource 密码盐 |
| | | * @return |
| | | */ |
| | | public static String md5(String credentials, String saltSource) { |
| | | ByteSource salt = new Md5Hash(saltSource); |
| | | return new SimpleHash(hashAlgorithmName, credentials, salt, hashIterations).toString(); |
| | | } |
| | | |
| | | /** |
| | | * 获取随机盐值 |
| | | * @param length |
| | | * @return |
| | | */ |
| | | public static String getRandomSalt(int length) { |
| | | return ToolUtil.getRandomString(length); |
| | | } |
| | | |
| | | /** |
| | | * 获取当前 Subject |
| | | * |
| | | * @return Subject |
| | | */ |
| | | public static Subject getSubject() { |
| | | return SecurityUtils.getSubject(); |
| | | } |
| | | |
| | | /** |
| | | * 获取封装的 ShiroUser |
| | | * |
| | | * @return ShiroUser |
| | | */ |
| | | public static ShiroUser getUser() { |
| | | if (isGuest()) { |
| | | return null; |
| | | } else { |
| | | return (ShiroUser) getSubject().getPrincipals().getPrimaryPrincipal(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 从shiro获取session |
| | | * |
| | | */ |
| | | public static Session getSession() { |
| | | return getSubject().getSession(); |
| | | } |
| | | |
| | | /** |
| | | * 获取shiro指定的sessionKey |
| | | * |
| | | */ |
| | | @SuppressWarnings("unchecked") |
| | | public static <T> T getSessionAttr(String key) { |
| | | Session session = getSession(); |
| | | return session != null ? (T) session.getAttribute(key) : null; |
| | | } |
| | | |
| | | /** |
| | | * 设置shiro指定的sessionKey |
| | | * |
| | | */ |
| | | public static void setSessionAttr(String key, Object value) { |
| | | Session session = getSession(); |
| | | session.setAttribute(key, value); |
| | | } |
| | | |
| | | /** |
| | | * 移除shiro指定的sessionKey |
| | | */ |
| | | public static void removeSessionAttr(String key) { |
| | | Session session = getSession(); |
| | | if (session != null) |
| | | session.removeAttribute(key); |
| | | } |
| | | |
| | | /** |
| | | * 验证当前用户是否属于该角色?,使用时与lacksRole 搭配使用 |
| | | * |
| | | * @param roleName |
| | | * 角色名 |
| | | * @return 属于该角色:true,否则false |
| | | */ |
| | | public static boolean hasRole(String roleName) { |
| | | return getSubject() != null && roleName != null |
| | | && roleName.length() > 0 && getSubject().hasRole(roleName); |
| | | } |
| | | |
| | | /** |
| | | * 与hasRole标签逻辑相反,当用户不属于该角色时验证通过。 |
| | | * |
| | | * @param roleName |
| | | * 角色名 |
| | | * @return 不属于该角色:true,否则false |
| | | */ |
| | | public static boolean lacksRole(String roleName) { |
| | | return !hasRole(roleName); |
| | | } |
| | | |
| | | /** |
| | | * 验证当前用户是否属于以下任意一个角色。 |
| | | * |
| | | * @param roleNames |
| | | * 角色列表 |
| | | * @return 属于:true,否则false |
| | | */ |
| | | public static boolean hasAnyRoles(String roleNames) { |
| | | boolean hasAnyRole = false; |
| | | Subject subject = getSubject(); |
| | | if (subject != null && roleNames != null && roleNames.length() > 0) { |
| | | for (String role : roleNames.split(NAMES_DELIMETER)) { |
| | | if (subject.hasRole(role.trim())) { |
| | | hasAnyRole = true; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | return hasAnyRole; |
| | | } |
| | | |
| | | /** |
| | | * 验证当前用户是否属于以下所有角色。 |
| | | * |
| | | * @param roleNames |
| | | * 角色列表 |
| | | * @return 属于:true,否则false |
| | | */ |
| | | public static boolean hasAllRoles(String roleNames) { |
| | | boolean hasAllRole = true; |
| | | Subject subject = getSubject(); |
| | | if (subject != null && roleNames != null && roleNames.length() > 0) { |
| | | for (String role : roleNames.split(NAMES_DELIMETER)) { |
| | | if (!subject.hasRole(role.trim())) { |
| | | hasAllRole = false; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | return hasAllRole; |
| | | } |
| | | |
| | | /** |
| | | * 验证当前用户是否拥有指定权限,使用时与lacksPermission 搭配使用 |
| | | * |
| | | * @param permission |
| | | * 权限名 |
| | | * @return 拥有权限:true,否则false |
| | | */ |
| | | public static boolean hasPermission(String permission) { |
| | | return getSubject() != null && permission != null |
| | | && permission.length() > 0 |
| | | && getSubject().isPermitted(permission); |
| | | } |
| | | |
| | | /** |
| | | * 与hasPermission标签逻辑相反,当前用户没有制定权限时,验证通过。 |
| | | * |
| | | * @param permission |
| | | * 权限名 |
| | | * @return 拥有权限:true,否则false |
| | | */ |
| | | public static boolean lacksPermission(String permission) { |
| | | return !hasPermission(permission); |
| | | } |
| | | |
| | | /** |
| | | * 已认证通过的用户。不包含已记住的用户,这是与user标签的区别所在。与notAuthenticated搭配使用 |
| | | * |
| | | * @return 通过身份验证:true,否则false |
| | | */ |
| | | public static boolean isAuthenticated() { |
| | | return getSubject() != null && getSubject().isAuthenticated(); |
| | | } |
| | | |
| | | /** |
| | | * 未认证通过用户,与authenticated标签相对应。与guest标签的区别是,该标签包含已记住用户。。 |
| | | * |
| | | * @return 没有通过身份验证:true,否则false |
| | | */ |
| | | public static boolean notAuthenticated() { |
| | | return !isAuthenticated(); |
| | | } |
| | | |
| | | /** |
| | | * 认证通过或已记住的用户。与guset搭配使用。 |
| | | * |
| | | * @return 用户:true,否则 false |
| | | */ |
| | | public static boolean isUser() { |
| | | return getSubject() != null && getSubject().getPrincipal() != null; |
| | | } |
| | | |
| | | /** |
| | | * 验证当前用户是否为“访客”,即未认证(包含未记住)的用户。用user搭配使用 |
| | | * |
| | | * @return 访客:true,否则false |
| | | */ |
| | | public static boolean isGuest() { |
| | | return !isUser(); |
| | | } |
| | | |
| | | /** |
| | | * 输出当前用户信息,通常为登录帐号信息。 |
| | | * |
| | | * @return 当前用户信息 |
| | | */ |
| | | public static String principal() { |
| | | if (getSubject() != null) { |
| | | Object principal = getSubject().getPrincipal(); |
| | | return principal.toString(); |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | /** |
| | | * 获取当前用户的部门数据范围的集合 |
| | | */ |
| | | public static List<Integer> getDeptDataScope() { |
| | | Integer deptId = getUser().getDeptId(); |
| | | List<Integer> subDeptIds = ConstantFactory.me().getSubDeptId(deptId); |
| | | subDeptIds.add(deptId); |
| | | return subDeptIds; |
| | | } |
| | | |
| | | /** |
| | | * 判断当前用户是否是超级管理员 |
| | | */ |
| | | public static boolean isAdmin() { |
| | | List<Integer> roleList = ShiroKit.getUser().getRoleList(); |
| | | for (Integer integer : roleList) { |
| | | String singleRoleTip = ConstantFactory.me().getSingleRoleTip(integer); |
| | | if (singleRoleTip.equals(Const.ADMIN_NAME)) { |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.shiro; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 自定义Authentication对象,使得Subject除了携带用户的登录名外还可以携带更多信息 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2016年12月5日 上午10:26:43 |
| | | */ |
| | | public class ShiroUser implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | public Integer id; // 主键ID |
| | | public String account; // 账号 |
| | | public String name; // 姓名 |
| | | public Integer deptId; // 部门id |
| | | public List<Integer> roleList; // 角色集 |
| | | public String deptName; // 部门名称 |
| | | public List<String> roleNames; // 角色名称集 |
| | | |
| | | |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(Integer id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public String getAccount() { |
| | | return account; |
| | | } |
| | | |
| | | public void setAccount(String account) { |
| | | this.account = account; |
| | | } |
| | | |
| | | public String getName() { |
| | | return name; |
| | | } |
| | | |
| | | public void setName(String name) { |
| | | this.name = name; |
| | | } |
| | | |
| | | public Integer getDeptId() { |
| | | return deptId; |
| | | } |
| | | |
| | | public void setDeptId(Integer deptId) { |
| | | this.deptId = deptId; |
| | | } |
| | | |
| | | public List<Integer> getRoleList() { |
| | | return roleList; |
| | | } |
| | | |
| | | public void setRoleList(List<Integer> roleList) { |
| | | this.roleList = roleList; |
| | | } |
| | | |
| | | public String getDeptName() { |
| | | return deptName; |
| | | } |
| | | |
| | | public void setDeptName(String deptName) { |
| | | this.deptName = deptName; |
| | | } |
| | | |
| | | public List<String> getRoleNames() { |
| | | return roleNames; |
| | | } |
| | | |
| | | public void setRoleNames(List<String> roleNames) { |
| | | this.roleNames = roleNames; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | /** |
| | | * Copyright (c) 2015-2017, Chill Zhuang 庄骞 (smallchill@163.com). |
| | | * <p> |
| | | * Licensed under the Apache License, Version 2.0 (the "License"); |
| | | * you may not use this file except in compliance with the License. |
| | | * You may obtain a copy of the License at |
| | | * <p> |
| | | * http://www.apache.org/licenses/LICENSE-2.0 |
| | | * <p> |
| | | * Unless required by applicable law or agreed to in writing, software |
| | | * distributed under the License is distributed on an "AS IS" BASIS, |
| | | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | * See the License for the specific language governing permissions and |
| | | * limitations under the License. |
| | | */ |
| | | package com.stylefeng.guns.core.shiro.check; |
| | | |
| | | /** |
| | | * 检查用接口 |
| | | */ |
| | | public interface ICheck { |
| | | |
| | | /** |
| | | * 检查当前登录用户是否拥有指定的角色访问当 |
| | | */ |
| | | boolean check(Object[] permissions); |
| | | |
| | | /** |
| | | * 检查当前登录用户是否拥有当前请求的servlet的权限 |
| | | */ |
| | | boolean checkAll(); |
| | | } |
New file |
| | |
| | | /** |
| | | * Copyright (c) 2015-2017, Chill Zhuang 庄骞 (smallchill@163.com). |
| | | * <p> |
| | | * Licensed under the Apache License, Version 2.0 (the "License"); |
| | | * you may not use this file except in compliance with the License. |
| | | * You may obtain a copy of the License at |
| | | * <p> |
| | | * http://www.apache.org/licenses/LICENSE-2.0 |
| | | * <p> |
| | | * Unless required by applicable law or agreed to in writing, software |
| | | * distributed under the License is distributed on an "AS IS" BASIS, |
| | | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | * See the License for the specific language governing permissions and |
| | | * limitations under the License. |
| | | */ |
| | | package com.stylefeng.guns.core.shiro.check; |
| | | |
| | | import com.stylefeng.guns.core.listener.ConfigListener; |
| | | import com.stylefeng.guns.core.shiro.ShiroKit; |
| | | import com.stylefeng.guns.core.shiro.ShiroUser; |
| | | import com.stylefeng.guns.core.support.CollectionKit; |
| | | import com.stylefeng.guns.core.support.HttpKit; |
| | | import com.stylefeng.guns.core.util.SpringContextHolder; |
| | | import org.springframework.context.annotation.DependsOn; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | |
| | | /** |
| | | * 权限自定义检查 |
| | | */ |
| | | @Service |
| | | @DependsOn("springContextHolder") |
| | | @Transactional(readOnly = true) |
| | | public class PermissionCheckFactory implements ICheck { |
| | | |
| | | public static ICheck me() { |
| | | return SpringContextHolder.getBean(ICheck.class); |
| | | } |
| | | |
| | | @Override |
| | | public boolean check(Object[] permissions) { |
| | | ShiroUser user = ShiroKit.getUser(); |
| | | if (null == user) { |
| | | return false; |
| | | } |
| | | String join = CollectionKit.join(permissions, ","); |
| | | if (ShiroKit.hasAnyRoles(join)) { |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | public boolean checkAll() { |
| | | HttpServletRequest request = HttpKit.getRequest(); |
| | | ShiroUser user = ShiroKit.getUser(); |
| | | if (null == user) { |
| | | return false; |
| | | } |
| | | String requestURI = request.getRequestURI().replaceFirst(ConfigListener.getConf().get("contextPath"), ""); |
| | | String[] str = requestURI.split("/"); |
| | | if (str.length > 3) { |
| | | requestURI = "/" + str[1] + "/" + str[2]; |
| | | } |
| | | if (ShiroKit.hasPermission(requestURI)) { |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | /** |
| | | * Copyright (c) 2015-2017, Chill Zhuang 庄骞 (smallchill@163.com). |
| | | * <p> |
| | | * Licensed under the Apache License, Version 2.0 (the "License"); |
| | | * you may not use this file except in compliance with the License. |
| | | * You may obtain a copy of the License at |
| | | * <p> |
| | | * http://www.apache.org/licenses/LICENSE-2.0 |
| | | * <p> |
| | | * Unless required by applicable law or agreed to in writing, software |
| | | * distributed under the License is distributed on an "AS IS" BASIS, |
| | | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | * See the License for the specific language governing permissions and |
| | | * limitations under the License. |
| | | */ |
| | | package com.stylefeng.guns.core.shiro.check; |
| | | |
| | | import com.stylefeng.guns.core.util.SpringContextHolder; |
| | | |
| | | /** |
| | | * 权限检查管理器(入口) |
| | | */ |
| | | public class PermissionCheckManager { |
| | | private final static PermissionCheckManager me = new PermissionCheckManager(); |
| | | |
| | | private ICheck defaultCheckFactory = SpringContextHolder.getBean(ICheck.class); |
| | | |
| | | public static PermissionCheckManager me() { |
| | | return me; |
| | | } |
| | | |
| | | private PermissionCheckManager() { |
| | | } |
| | | |
| | | public PermissionCheckManager(ICheck checkFactory) { |
| | | this.defaultCheckFactory = checkFactory; |
| | | } |
| | | |
| | | public void setDefaultCheckFactory(ICheck defaultCheckFactory) { |
| | | this.defaultCheckFactory = defaultCheckFactory; |
| | | } |
| | | |
| | | public static boolean check(Object[] permissions) { |
| | | return me.defaultCheckFactory.check(permissions); |
| | | } |
| | | |
| | | public static boolean checkAll() { |
| | | return me.defaultCheckFactory.checkAll(); |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.shiro.factory; |
| | | |
| | | import com.stylefeng.guns.core.shiro.ShiroUser; |
| | | import com.stylefeng.guns.modular.system.model.User; |
| | | import org.apache.shiro.authc.SimpleAuthenticationInfo; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 定义shirorealm所需数据的接口 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2016年12月5日 上午10:23:34 |
| | | */ |
| | | public interface IShiro { |
| | | |
| | | /** |
| | | * 根据账号获取登录用户 |
| | | * |
| | | * @param account 账号 |
| | | */ |
| | | User user(String account); |
| | | |
| | | /** |
| | | * 根据系统用户获取Shiro的用户 |
| | | * |
| | | * @param user 系统用户 |
| | | */ |
| | | ShiroUser shiroUser(User user); |
| | | |
| | | /** |
| | | * 获取权限列表通过角色id |
| | | * |
| | | * @param roleId 角色id |
| | | */ |
| | | List<String> findPermissionsByRoleId(Integer roleId); |
| | | |
| | | /** |
| | | * 根据角色id获取角色名称 |
| | | * |
| | | * @param roleId 角色id |
| | | */ |
| | | String findRoleNameByRoleId(Integer roleId); |
| | | |
| | | /** |
| | | * 获取shiro的认证信息 |
| | | */ |
| | | SimpleAuthenticationInfo info(ShiroUser shiroUser, User user, String realmName); |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.shiro.factory; |
| | | |
| | | import com.stylefeng.guns.core.common.constant.factory.ConstantFactory; |
| | | import com.stylefeng.guns.core.common.constant.state.ManagerStatus; |
| | | import com.stylefeng.guns.core.shiro.ShiroUser; |
| | | import com.stylefeng.guns.core.util.Convert; |
| | | import com.stylefeng.guns.core.util.SpringContextHolder; |
| | | import com.stylefeng.guns.modular.system.dao.MenuMapper; |
| | | import com.stylefeng.guns.modular.system.dao.UserMapper; |
| | | import com.stylefeng.guns.modular.system.model.User; |
| | | import org.apache.shiro.authc.CredentialsException; |
| | | import org.apache.shiro.authc.LockedAccountException; |
| | | import org.apache.shiro.authc.SimpleAuthenticationInfo; |
| | | import org.apache.shiro.crypto.hash.Md5Hash; |
| | | import org.apache.shiro.util.ByteSource; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.annotation.DependsOn; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | @Service |
| | | @DependsOn("springContextHolder") |
| | | @Transactional(readOnly = true) |
| | | public class ShiroFactroy implements IShiro { |
| | | |
| | | @Autowired |
| | | private UserMapper userMapper; |
| | | |
| | | @Autowired |
| | | private MenuMapper menuMapper; |
| | | |
| | | public static IShiro me() { |
| | | return SpringContextHolder.getBean(IShiro.class); |
| | | } |
| | | |
| | | @Override |
| | | public User user(String account) { |
| | | |
| | | User user = userMapper.getByAccount(account); |
| | | |
| | | // 账号不存在 |
| | | if (null == user) { |
| | | throw new CredentialsException(); |
| | | } |
| | | // 账号被冻结 |
| | | if (user.getStatus() != ManagerStatus.OK.getCode()) { |
| | | throw new LockedAccountException(); |
| | | } |
| | | return user; |
| | | } |
| | | |
| | | @Override |
| | | public ShiroUser shiroUser(User user) { |
| | | ShiroUser shiroUser = new ShiroUser(); |
| | | |
| | | shiroUser.setId(user.getId()); |
| | | shiroUser.setAccount(user.getAccount()); |
| | | shiroUser.setDeptId(user.getDeptid()); |
| | | shiroUser.setDeptName(ConstantFactory.me().getDeptName(user.getDeptid())); |
| | | shiroUser.setName(user.getName()); |
| | | |
| | | Integer[] roleArray = Convert.toIntArray(user.getRoleid()); |
| | | List<Integer> roleList = new ArrayList<Integer>(); |
| | | List<String> roleNameList = new ArrayList<String>(); |
| | | for (int roleId : roleArray) { |
| | | roleList.add(roleId); |
| | | roleNameList.add(ConstantFactory.me().getSingleRoleName(roleId)); |
| | | } |
| | | shiroUser.setRoleList(roleList); |
| | | shiroUser.setRoleNames(roleNameList); |
| | | |
| | | return shiroUser; |
| | | } |
| | | |
| | | @Override |
| | | public List<String> findPermissionsByRoleId(Integer roleId) { |
| | | return menuMapper.getResUrlsByRoleId(roleId); |
| | | } |
| | | |
| | | @Override |
| | | public String findRoleNameByRoleId(Integer roleId) { |
| | | return ConstantFactory.me().getSingleRoleTip(roleId); |
| | | } |
| | | |
| | | @Override |
| | | public SimpleAuthenticationInfo info(ShiroUser shiroUser, User user, String realmName) { |
| | | String credentials = user.getPassword(); |
| | | |
| | | // 密码加盐处理 |
| | | String source = user.getSalt(); |
| | | ByteSource credentialsSalt = new Md5Hash(source); |
| | | return new SimpleAuthenticationInfo(shiroUser, credentials, credentialsSalt, realmName); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.tag; |
| | | |
| | | import com.stylefeng.guns.core.common.exception.BizExceptionEnum; |
| | | import com.stylefeng.guns.core.exception.GunsException; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.system.model.Dict; |
| | | import com.stylefeng.guns.modular.system.service.IDictService; |
| | | import org.beetl.core.Tag; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.annotation.Scope; |
| | | import org.springframework.stereotype.Component; |
| | | import java.io.IOException; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 字典标签渲染 |
| | | * |
| | | * @author zhangjiajia |
| | | * @Date 2018年6月4日17:33:32 |
| | | */ |
| | | @Component |
| | | @Scope("prototype") |
| | | public class DictSelectorTag extends Tag { |
| | | |
| | | @Autowired |
| | | IDictService iDictService; |
| | | |
| | | @Override |
| | | public void render(){ |
| | | //String tagName = (String) this.args[0]; |
| | | Map attrs = (Map) args[1]; |
| | | if(ToolUtil.isEmpty(attrs.get("code"))){ |
| | | throw new GunsException(BizExceptionEnum.ERROR_CODE_EMPTY); |
| | | } |
| | | |
| | | //字典类型编码 |
| | | String code = attrs.get("code").toString(); |
| | | //控件显示类型select 选择框,radio 单选按钮,checkbox 多选按钮 |
| | | String type = ToolUtil.isNotEmpty(attrs.get("type"))?attrs.get("type").toString():"select"; |
| | | //开启多选 |
| | | String multiple = ToolUtil.isNotEmpty(attrs.get("multiple"))?attrs.get("multiple").toString():""; |
| | | //字典名称 |
| | | String label = ToolUtil.isNotEmpty(attrs.get("label"))?attrs.get("label").toString():""; |
| | | //提示 |
| | | String placeholder = (ToolUtil.isNotEmpty(attrs.get("placeholder"))?attrs.get("placeholder").toString():""); |
| | | //宽度 |
| | | String width = ToolUtil.isNotEmpty(attrs.get("width"))?attrs.get("width").toString():"248"; |
| | | //默认值 |
| | | String value = ToolUtil.isNotEmpty(attrs.get("value"))?attrs.get("value").toString():""; |
| | | //id |
| | | String id = ToolUtil.isNotEmpty(attrs.get("id"))?attrs.get("id").toString():""; |
| | | //name |
| | | String name = ToolUtil.isNotEmpty(attrs.get("name"))?attrs.get("name").toString():""; |
| | | //分割线 |
| | | String underline = ToolUtil.isNotEmpty(attrs.get("underline"))?attrs.get("underline").toString():""; |
| | | //onchange事件 |
| | | String onchange = ToolUtil.isNotEmpty(attrs.get("onchange"))?attrs.get("onchange").toString():""; |
| | | //readonly属性 |
| | | String readonly = ToolUtil.isNotEmpty(attrs.get("readonly"))?attrs.get("readonly").toString():""; |
| | | //disabled属性 |
| | | String disabled = ToolUtil.isNotEmpty(attrs.get("disabled"))?attrs.get("disabled").toString():""; |
| | | //searchnum 下拉选项数量达到多少启用搜索,默认10 |
| | | int searchnum = ToolUtil.isNum(attrs.get("searchnum"))?Integer.parseInt(attrs.get("searchnum").toString()):10; |
| | | //根据code查询字典数据 |
| | | List<Dict> list = iDictService.selectByParentCode(code); |
| | | |
| | | StringBuffer html = new StringBuffer(); |
| | | html.append("<div class=\"form-group\">\r\n"); |
| | | html.append("<label class=\"col-sm-3 control-label\">"+label+"</label>\r\n"); |
| | | html.append("<div class=\"col-sm-9\">\r\n"); |
| | | |
| | | //单选按钮 |
| | | if("radio".equals(type)) { |
| | | |
| | | list.forEach(obj->{ |
| | | html.append("<label class=\"radio-inline i-checks\">\r\n<input type=\"radio\" "); |
| | | //判断控件是否禁用 |
| | | if("true".equals(disabled)||"disabled".equals(disabled)) { |
| | | html.append("disabled "); |
| | | }else{ |
| | | if(ToolUtil.isNotEmpty(name)){ |
| | | html.append("name=\""+name+"\" "); |
| | | } |
| | | } |
| | | if("true".equals(readonly)||"disabled".equals(readonly)) { |
| | | html.append("disabled "); |
| | | } |
| | | if(ToolUtil.isNotEmpty(value)&&value.equals(obj.getCode())){ |
| | | html.append("checked "); |
| | | } |
| | | |
| | | html.append("value=\""+obj.getCode()+"\" >"+obj.getName()+"</label>\r\n"); |
| | | }); |
| | | |
| | | //多选按钮 |
| | | }else if("checkbox".equals(type)){ |
| | | list.forEach(obj->{ |
| | | html.append("<label class=\"checkbox-inline i-checks\">\r\n<input type=\"checkbox\" "); |
| | | //判断控件是否禁用 |
| | | if("true".equals(disabled)||"disabled".equals(disabled)) { |
| | | html.append("disabled "); |
| | | }else{ |
| | | if(ToolUtil.isNotEmpty(name)){ |
| | | html.append("name=\""+name+"\" "); |
| | | } |
| | | } |
| | | if("true".equals(readonly)||"disabled".equals(readonly)) { |
| | | html.append("disabled "); |
| | | } |
| | | if(ToolUtil.isNotEmpty(value)&&value.equals(obj.getCode())){ |
| | | html.append("checked "); |
| | | } |
| | | |
| | | html.append("value=\""+obj.getCode()+"\" >"+obj.getName()+"</label>\r\n"); |
| | | }); |
| | | |
| | | //默认select |
| | | }else{ |
| | | //开启多选 |
| | | if("true".equals(multiple)){ |
| | | if(list.size()>=searchnum) { |
| | | html.append("<select multiple "); |
| | | }else{ |
| | | html.append("<select multiple=\"multiple\" size=\"10\" "); |
| | | } |
| | | }else{ |
| | | html.append("<select "); |
| | | } |
| | | |
| | | //判断控件是否启用提示 |
| | | if(ToolUtil.isNotEmpty(placeholder)){ |
| | | html.append(" data-placeholder=\""+placeholder+"\" "); |
| | | } |
| | | |
| | | //判断控件是否禁用 |
| | | if("true".equals(disabled)||"disabled".equals(disabled)) { |
| | | html.append("disabled=\"disabled\" "); |
| | | }else{ |
| | | //启用 |
| | | if(ToolUtil.isNotEmpty(id)){ |
| | | html.append("id=\""+id+"\" "); |
| | | } |
| | | |
| | | if(ToolUtil.isNotEmpty(name)){ |
| | | html.append("name=\""+name+"\" "); |
| | | } |
| | | } |
| | | |
| | | //判断是否启用搜索框 |
| | | //判断下拉数据,如果查询出来的条数达到启用搜索的数量就启用 |
| | | |
| | | |
| | | if(list.size()>=searchnum){ |
| | | html.append("class=\"form-control chosen-select\" style=\"width:"+width+"px\" tabindex=\"1\" \r\n"); |
| | | } else{ |
| | | html.append("class=\"form-control\" style=\"width:"+width+"px\" \r\n"); |
| | | } |
| | | |
| | | //判断控件是否只读 |
| | | if("true".equals(readonly)||"readonly".equals(readonly)) { |
| | | if(list.size()>=searchnum) { |
| | | html.append("disabled=\"disabled\" "); |
| | | }else{ |
| | | html.append("onfocus=\"this.defaultIndex=this.selectedIndex;\" onchange=\"this.selectedIndex=this.defaultIndex;\" "); |
| | | } |
| | | } |
| | | |
| | | //判断是否绑定onchange事件 |
| | | if(ToolUtil.isNotEmpty(onchange)){ |
| | | html.append("onchange=\""+onchange+"($(this).children('option:selected').val())\" "); |
| | | } |
| | | |
| | | html.append(">"); |
| | | if(ToolUtil.isNotEmpty(placeholder)){ |
| | | html.append("<option value=\"\">"+placeholder+"</option>\r\n"); |
| | | } |
| | | //将查询出来的数据添加到select中 |
| | | list.forEach(obj->{ |
| | | if(ToolUtil.isNotEmpty(value)&&value.equals(obj.getCode())){ |
| | | html.append("<option selected value=\""+obj.getCode()+"\">"+obj.getName()+"</option>\r\n"); |
| | | }else{ |
| | | html.append("<option value=\""+obj.getCode()+"\">"+obj.getName()+"</option>\r\n"); |
| | | } |
| | | }); |
| | | html.append("</select>\r\n"); |
| | | } |
| | | |
| | | html.append("</div>\r\n</div>\r\n"); |
| | | //判断是否添加分割线 |
| | | if(ToolUtil.isNotEmpty(underline) && "true".equals(underline)) { |
| | | html.append("<div class=\"hr-line-dashed\" ></div >\r\n"); |
| | | } |
| | | |
| | | try{ |
| | | this.ctx.byteWriter.writeString(html.toString()); |
| | | }catch (IOException e){ |
| | | throw new RuntimeException("输出字典标签错误"); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.util; |
| | | |
| | | import com.stylefeng.guns.core.common.constant.Const; |
| | | import com.stylefeng.guns.config.properties.GunsProperties; |
| | | import com.stylefeng.guns.core.node.MenuNode; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * api接口文档显示过滤 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-08-17 16:55 |
| | | */ |
| | | public class ApiMenuFilter extends MenuNode { |
| | | |
| | | public static List<MenuNode> build(List<MenuNode> nodes) { |
| | | |
| | | //如果关闭了接口文档,则不显示接口文档菜单 |
| | | GunsProperties gunsProperties = SpringContextHolder.getBean(GunsProperties.class); |
| | | if (!gunsProperties.getSwaggerOpen()) { |
| | | List<MenuNode> menuNodesCopy = new ArrayList<>(); |
| | | for (MenuNode menuNode : nodes) { |
| | | if (Const.API_MENU_NAME.equals(menuNode.getName())) { |
| | | continue; |
| | | } else { |
| | | menuNodesCopy.add(menuNode); |
| | | } |
| | | } |
| | | nodes = menuNodesCopy; |
| | | } |
| | | |
| | | return nodes; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.util; |
| | | |
| | | import com.stylefeng.guns.core.common.constant.dictmap.base.AbstractDictMap; |
| | | import com.stylefeng.guns.core.common.constant.dictmap.factory.DictFieldWarpperFactory; |
| | | import com.stylefeng.guns.core.support.StrKit; |
| | | |
| | | import java.beans.PropertyDescriptor; |
| | | import java.lang.reflect.Field; |
| | | import java.lang.reflect.Method; |
| | | import java.util.Date; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 对比两个对象的变化的工具类 |
| | | * |
| | | * @author fengshuonan |
| | | * @Date 2017/3/31 10:36 |
| | | */ |
| | | public class Contrast { |
| | | |
| | | //记录每个修改字段的分隔符 |
| | | public static final String separator = ";;;"; |
| | | |
| | | /** |
| | | * 比较两个对象,并返回不一致的信息 |
| | | * |
| | | * @author stylefeng |
| | | * @Date 2017/5/9 19:34 |
| | | */ |
| | | public static String contrastObj(Object pojo1, Object pojo2) { |
| | | String str = ""; |
| | | try { |
| | | Class clazz = pojo1.getClass(); |
| | | Field[] fields = pojo1.getClass().getDeclaredFields(); |
| | | int i = 1; |
| | | for (Field field : fields) { |
| | | if ("serialVersionUID".equals(field.getName())) { |
| | | continue; |
| | | } |
| | | PropertyDescriptor pd = new PropertyDescriptor(field.getName(), clazz); |
| | | Method getMethod = pd.getReadMethod(); |
| | | Object o1 = getMethod.invoke(pojo1); |
| | | Object o2 = getMethod.invoke(pojo2); |
| | | if (o1 == null || o2 == null) { |
| | | continue; |
| | | } |
| | | if (o1 instanceof Date) { |
| | | o1 = DateUtil.getDay((Date) o1); |
| | | } |
| | | if (!o1.toString().equals(o2.toString())) { |
| | | if (i != 1) { |
| | | str += separator; |
| | | } |
| | | str += "字段名称" + field.getName() + ",旧值:" + o1 + ",新值:" + o2; |
| | | i++; |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return str; |
| | | } |
| | | |
| | | /** |
| | | * 比较两个对象pojo1和pojo2,并输出不一致信息 |
| | | * |
| | | * @author stylefeng |
| | | * @Date 2017/5/9 19:34 |
| | | */ |
| | | public static String contrastObj(Class dictClass, String key, Object pojo1, Map<String, String> pojo2) throws IllegalAccessException, InstantiationException { |
| | | AbstractDictMap dictMap = (AbstractDictMap) dictClass.newInstance(); |
| | | String str = parseMutiKey(dictMap, key, pojo2) + separator; |
| | | try { |
| | | Class clazz = pojo1.getClass(); |
| | | Field[] fields = pojo1.getClass().getDeclaredFields(); |
| | | int i = 1; |
| | | for (Field field : fields) { |
| | | if ("serialVersionUID".equals(field.getName())) { |
| | | continue; |
| | | } |
| | | PropertyDescriptor pd = new PropertyDescriptor(field.getName(), clazz); |
| | | Method getMethod = pd.getReadMethod(); |
| | | Object o1 = getMethod.invoke(pojo1); |
| | | Object o2 = pojo2.get(StrKit.firstCharToLowerCase(getMethod.getName().substring(3))); |
| | | if (o1 == null || o2 == null) { |
| | | continue; |
| | | } |
| | | if (o1 instanceof Date) { |
| | | o1 = DateUtil.getDay((Date) o1); |
| | | } else if (o1 instanceof Integer) { |
| | | o2 = Integer.parseInt(o2.toString()); |
| | | } |
| | | if (!o1.toString().equals(o2.toString())) { |
| | | if (i != 1) { |
| | | str += separator; |
| | | } |
| | | String fieldName = dictMap.get(field.getName()); |
| | | String fieldWarpperMethodName = dictMap.getFieldWarpperMethodName(field.getName()); |
| | | if (fieldWarpperMethodName != null) { |
| | | Object o1Warpper = DictFieldWarpperFactory.createFieldWarpper(o1, fieldWarpperMethodName); |
| | | Object o2Warpper = DictFieldWarpperFactory.createFieldWarpper(o2, fieldWarpperMethodName); |
| | | str += "字段名称:" + fieldName + ",旧值:" + o1Warpper + ",新值:" + o2Warpper; |
| | | } else { |
| | | str += "字段名称:" + fieldName + ",旧值:" + o1 + ",新值:" + o2; |
| | | } |
| | | i++; |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return str; |
| | | } |
| | | |
| | | /** |
| | | * 比较两个对象pojo1和pojo2,并输出不一致信息 |
| | | * |
| | | * @author stylefeng |
| | | * @Date 2017/5/9 19:34 |
| | | */ |
| | | public static String contrastObjByName(Class dictClass, String key, Object pojo1, Map<String, String> pojo2) throws IllegalAccessException, InstantiationException { |
| | | AbstractDictMap dictMap = (AbstractDictMap) dictClass.newInstance(); |
| | | String str = parseMutiKey(dictMap, key, pojo2) + separator; |
| | | try { |
| | | Class clazz = pojo1.getClass(); |
| | | Field[] fields = pojo1.getClass().getDeclaredFields(); |
| | | int i = 1; |
| | | for (Field field : fields) { |
| | | if ("serialVersionUID".equals(field.getName())) { |
| | | continue; |
| | | } |
| | | String prefix = "get"; |
| | | int prefixLength = 3; |
| | | if (field.getType().getName().equals("java.lang.Boolean")) { |
| | | prefix = "is"; |
| | | prefixLength = 2; |
| | | } |
| | | Method getMethod = null; |
| | | try { |
| | | getMethod = clazz.getDeclaredMethod(prefix + StrKit.firstCharToUpperCase(field.getName())); |
| | | } catch (java.lang.NoSuchMethodException e) { |
| | | System.err.println("this className:" + clazz.getName() + " is not methodName: " + e.getMessage()); |
| | | continue; |
| | | } |
| | | Object o1 = getMethod.invoke(pojo1); |
| | | Object o2 = pojo2.get(StrKit.firstCharToLowerCase(getMethod.getName().substring(prefixLength))); |
| | | if (o1 == null || o2 == null) { |
| | | continue; |
| | | } |
| | | if (o1 instanceof Date) { |
| | | o1 = DateUtil.getDay((Date) o1); |
| | | } else if (o1 instanceof Integer) { |
| | | o2 = Integer.parseInt(o2.toString()); |
| | | } |
| | | if (!o1.toString().equals(o2.toString())) { |
| | | if (i != 1) { |
| | | str += separator; |
| | | } |
| | | String fieldName = dictMap.get(field.getName()); |
| | | String fieldWarpperMethodName = dictMap.getFieldWarpperMethodName(field.getName()); |
| | | if (fieldWarpperMethodName != null) { |
| | | Object o1Warpper = DictFieldWarpperFactory.createFieldWarpper(o1, fieldWarpperMethodName); |
| | | Object o2Warpper = DictFieldWarpperFactory.createFieldWarpper(o2, fieldWarpperMethodName); |
| | | str += "字段名称:" + fieldName + ",旧值:" + o1Warpper + ",新值:" + o2Warpper; |
| | | } else { |
| | | str += "字段名称:" + fieldName + ",旧值:" + o1 + ",新值:" + o2; |
| | | } |
| | | i++; |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return str; |
| | | } |
| | | |
| | | /** |
| | | * 解析多个key(逗号隔开的) |
| | | * |
| | | * @author stylefeng |
| | | * @Date 2017/5/16 22:19 |
| | | */ |
| | | public static String parseMutiKey(AbstractDictMap dictMap, String key, Map<String, String> requests) { |
| | | StringBuilder sb = new StringBuilder(); |
| | | if (key.indexOf(",") != -1) { |
| | | String[] keys = key.split(","); |
| | | for (String item : keys) { |
| | | String fieldWarpperMethodName = dictMap.getFieldWarpperMethodName(item); |
| | | String value = requests.get(item); |
| | | if (fieldWarpperMethodName != null) { |
| | | Object valueWarpper = DictFieldWarpperFactory.createFieldWarpper(value, fieldWarpperMethodName); |
| | | sb.append(dictMap.get(item) + "=" + valueWarpper + ","); |
| | | } else { |
| | | sb.append(dictMap.get(item) + "=" + value + ","); |
| | | } |
| | | } |
| | | return StrKit.removeSuffix(sb.toString(), ","); |
| | | } else { |
| | | String fieldWarpperMethodName = dictMap.getFieldWarpperMethodName(key); |
| | | String value = requests.get(key); |
| | | if (fieldWarpperMethodName != null) { |
| | | Object valueWarpper = DictFieldWarpperFactory.createFieldWarpper(value, fieldWarpperMethodName); |
| | | sb.append(dictMap.get(key) + "=" + valueWarpper); |
| | | } else { |
| | | sb.append(dictMap.get(key) + "=" + value); |
| | | } |
| | | return sb.toString(); |
| | | } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.util; |
| | | |
| | | import com.stylefeng.guns.core.common.constant.JwtConstants; |
| | | import io.jsonwebtoken.*; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p>jwt token工具类</p> |
| | | * <pre> |
| | | * jwt的claim里一般包含以下几种数据: |
| | | * 1. iss -- token的发行者 |
| | | * 2. sub -- 该JWT所面向的用户 |
| | | * 3. aud -- 接收该JWT的一方 |
| | | * 4. exp -- token的失效时间 |
| | | * 5. nbf -- 在此时间段之前,不会被处理 |
| | | * 6. iat -- jwt发布时间 |
| | | * 7. jti -- jwt唯一标识,防止重复使用 |
| | | * </pre> |
| | | * |
| | | * @author fengshuonan |
| | | * @Date 2017/8/25 10:59 |
| | | */ |
| | | @Component |
| | | public class JwtTokenUtil { |
| | | |
| | | /** |
| | | * 获取用户名从token中 |
| | | */ |
| | | public static String getUsernameFromToken(String token) { |
| | | return getClaimFromToken(token).getSubject(); |
| | | } |
| | | |
| | | /** |
| | | * 获取jwt发布时间 |
| | | */ |
| | | public static Date getIssuedAtDateFromToken(String token) { |
| | | return getClaimFromToken(token).getIssuedAt(); |
| | | } |
| | | |
| | | /** |
| | | * 获取jwt失效时间 |
| | | */ |
| | | public static Date getExpirationDateFromToken(String token) { |
| | | return getClaimFromToken(token).getExpiration(); |
| | | } |
| | | |
| | | /** |
| | | * 获取jwt接收者 |
| | | */ |
| | | public static String getAudienceFromToken(String token) { |
| | | return getClaimFromToken(token).getAudience(); |
| | | } |
| | | |
| | | /** |
| | | * 获取私有的jwt claim |
| | | */ |
| | | public static String getPrivateClaimFromToken(String token, String key) { |
| | | return getClaimFromToken(token).get(key).toString(); |
| | | } |
| | | |
| | | /** |
| | | * 获取jwt的payload部分 |
| | | */ |
| | | public static Claims getClaimFromToken(String token) { |
| | | return Jwts.parser() |
| | | .setSigningKey(JwtConstants.SECRET) |
| | | .parseClaimsJws(token) |
| | | .getBody(); |
| | | } |
| | | |
| | | /** |
| | | * 解析token是否正确,不正确会报异常<br> |
| | | */ |
| | | public static void parseToken(String token) throws JwtException { |
| | | Jwts.parser().setSigningKey(JwtConstants.SECRET).parseClaimsJws(token).getBody(); |
| | | } |
| | | |
| | | /** |
| | | * <pre> |
| | | * 验证token是否失效 |
| | | * true:过期 false:没过期 |
| | | * </pre> |
| | | */ |
| | | public static Boolean isTokenExpired(String token) { |
| | | try { |
| | | final Date expiration = getExpirationDateFromToken(token); |
| | | return expiration.before(new Date()); |
| | | } catch (ExpiredJwtException expiredJwtException) { |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 生成token(通过用户名和签名时候用的随机数) |
| | | */ |
| | | public static String generateToken(String userId) { |
| | | Map<String, Object> claims = new HashMap<>(); |
| | | return doGenerateToken(claims, userId); |
| | | } |
| | | |
| | | /** |
| | | * 生成token |
| | | */ |
| | | private static String doGenerateToken(Map<String, Object> claims, String subject) { |
| | | final Date createdDate = new Date(); |
| | | final Date expirationDate = new Date(createdDate.getTime() + JwtConstants.EXPIRATION * 1000); |
| | | |
| | | return Jwts.builder() |
| | | .setClaims(claims) |
| | | .setSubject(subject) |
| | | .setIssuedAt(createdDate) |
| | | .setExpiration(expirationDate) |
| | | .signWith(SignatureAlgorithm.HS512, JwtConstants.SECRET) |
| | | .compact(); |
| | | } |
| | | |
| | | /** |
| | | * 获取混淆MD5签名用的随机字符串 |
| | | */ |
| | | public static String getRandomKey() { |
| | | return ToolUtil.getRandomString(6); |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.core.util; |
| | | |
| | | import com.stylefeng.guns.config.properties.GunsProperties; |
| | | |
| | | /** |
| | | * 验证码工具类 |
| | | */ |
| | | public class KaptchaUtil { |
| | | |
| | | /** |
| | | * 获取验证码开关 |
| | | */ |
| | | public static Boolean getKaptchaOnOff() { |
| | | return SpringContextHolder.getBean(GunsProperties.class).getKaptchaOpen(); |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.api; |
| | | |
| | | import com.stylefeng.guns.modular.system.service.IAgreementService; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import com.stylefeng.guns.modular.system.warpper.BaseWarpper; |
| | | import io.swagger.annotations.Api; |
| | | 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.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | /** |
| | | * 协议控制器 |
| | | */ |
| | | @Api |
| | | @RestController |
| | | @RequestMapping("/base/agreement") |
| | | public class AgreementController { |
| | | |
| | | @Autowired |
| | | private IAgreementService agreementService; |
| | | |
| | | |
| | | /** |
| | | * 获取各种协议 |
| | | * @param type |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/queryByType") |
| | | @ApiOperation(value = "获取各种协议及H5页面", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "数据类型(1:隐私协议,2:用户协议,3:用户指南,4:法律条款,5:关于我们,6=注册协议,7=取消订单说明,8=充值领券规则设置)", name = "type", required = true, dataType = "int") |
| | | }) |
| | | public ResultUtil<BaseWarpper> queryByType(Integer type){ |
| | | try { |
| | | String s = agreementService.queryByType(type); |
| | | BaseWarpper baseWarpper = new BaseWarpper(); |
| | | baseWarpper.setContent(s); |
| | | return ResultUtil.success(baseWarpper); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.api; |
| | | |
| | | import com.stylefeng.guns.core.base.controller.BaseController; |
| | | import com.stylefeng.guns.core.base.tips.ErrorTip; |
| | | import com.stylefeng.guns.core.shiro.ShiroKit; |
| | | import com.stylefeng.guns.core.shiro.ShiroUser; |
| | | import com.stylefeng.guns.core.util.JwtTokenUtil; |
| | | import com.stylefeng.guns.modular.system.dao.UserMapper; |
| | | import com.stylefeng.guns.modular.system.model.User; |
| | | import org.apache.shiro.authc.SimpleAuthenticationInfo; |
| | | import org.apache.shiro.authc.UsernamePasswordToken; |
| | | import org.apache.shiro.authc.credential.HashedCredentialsMatcher; |
| | | import org.apache.shiro.crypto.hash.Md5Hash; |
| | | import org.apache.shiro.util.ByteSource; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RequestMethod; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.util.HashMap; |
| | | |
| | | /** |
| | | * 接口控制器提供 |
| | | * |
| | | * @author stylefeng |
| | | * @Date 2018/7/20 23:39 |
| | | */ |
| | | @RestController |
| | | @RequestMapping("/gunsApi") |
| | | public class ApiController extends BaseController { |
| | | |
| | | @Autowired |
| | | private UserMapper userMapper; |
| | | |
| | | /** |
| | | * api登录接口,通过账号密码获取token |
| | | */ |
| | | @RequestMapping("/auth") |
| | | public Object auth(@RequestParam("username") String username, |
| | | @RequestParam("password") String password) { |
| | | |
| | | //封装请求账号密码为shiro可验证的token |
| | | UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(username, password.toCharArray()); |
| | | |
| | | //获取数据库中的账号密码,准备比对 |
| | | User user = userMapper.getByAccount(username); |
| | | |
| | | String credentials = user.getPassword(); |
| | | String salt = user.getSalt(); |
| | | ByteSource credentialsSalt = new Md5Hash(salt); |
| | | SimpleAuthenticationInfo simpleAuthenticationInfo = new SimpleAuthenticationInfo( |
| | | new ShiroUser(), credentials, credentialsSalt, ""); |
| | | |
| | | //校验用户账号密码 |
| | | HashedCredentialsMatcher md5CredentialsMatcher = new HashedCredentialsMatcher(); |
| | | md5CredentialsMatcher.setHashAlgorithmName(ShiroKit.hashAlgorithmName); |
| | | md5CredentialsMatcher.setHashIterations(ShiroKit.hashIterations); |
| | | boolean passwordTrueFlag = md5CredentialsMatcher.doCredentialsMatch( |
| | | usernamePasswordToken, simpleAuthenticationInfo); |
| | | |
| | | if (passwordTrueFlag) { |
| | | HashMap<String, Object> result = new HashMap<>(); |
| | | result.put("token", JwtTokenUtil.generateToken(String.valueOf(user.getId()))); |
| | | return result; |
| | | } else { |
| | | return new ErrorTip(500, "账号密码错误!"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 测试接口是否走鉴权 |
| | | */ |
| | | @RequestMapping(value = "/test", method = RequestMethod.POST) |
| | | public Object test() { |
| | | return SUCCESS_TIP; |
| | | } |
| | | |
| | | } |
| | | |
New file |
| | |
| | | package com.stylefeng.guns.modular.api; |
| | | |
| | | |
| | | import com.stylefeng.guns.modular.system.model.BankCard; |
| | | import com.stylefeng.guns.modular.system.service.IBankCardService; |
| | | import com.stylefeng.guns.modular.system.service.IDriverService; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import io.swagger.annotations.Api; |
| | | 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.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.List; |
| | | |
| | | |
| | | @Api |
| | | @RestController |
| | | @RequestMapping("/api/bankCard") |
| | | public class BankCardController { |
| | | |
| | | @Autowired |
| | | private IBankCardService bankCardService; |
| | | |
| | | @Autowired |
| | | private IDriverService driverService; |
| | | |
| | | |
| | | /** |
| | | * 保存银行卡号 |
| | | * @param bank |
| | | * @param name |
| | | * @param code |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/saveBankCard") |
| | | @ApiOperation(value = "保存银行卡信息", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "银行名称", name = "bank", required = true, dataType = "String"), |
| | | @ApiImplicitParam(value = "开户人姓名", name = "name", required = true, dataType = "String"), |
| | | @ApiImplicitParam(value = "银行卡号", name = "code", required = true, dataType = "String"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil saveBankCard(String bank, String name, String code, HttpServletRequest request){ |
| | | try { |
| | | Integer driverId = driverService.getUserIdFormRedis(request); |
| | | if(null == driverId){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return bankCardService.saveBankCard(bank, name, code, driverId); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 删除银行卡号 |
| | | * @param id |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/delBankCard") |
| | | @ApiOperation(value = "删除银行卡信息", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "银行卡id", name = "id", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil delBankCard(Integer id, HttpServletRequest request){ |
| | | try { |
| | | Integer driverId = driverService.getUserIdFormRedis(request); |
| | | if(null == driverId){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return bankCardService.delBankCard(id, driverId); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取银行卡号列表 |
| | | * @param pageNum |
| | | * @param size |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/queryBankCard") |
| | | @ApiOperation(value = "获取银行卡号列表", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil queryBankCard(Integer pageNum, Integer size, HttpServletRequest request){ |
| | | try { |
| | | Integer driverId = driverService.getUserIdFormRedis(request); |
| | | if(null == driverId){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | List<BankCard> bankCards = bankCardService.queryBankCard(pageNum, size, driverId); |
| | | return ResultUtil.success(bankCards); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.api; |
| | | |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.system.service.IReassignService; |
| | | import com.stylefeng.guns.modular.system.service.ISystemNoticeService; |
| | | //import com.stylefeng.guns.modular.system.util.ICBCPayUtil; |
| | | import com.stylefeng.guns.modular.system.util.PayMoneyUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.PrintWriter; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 第三方支付回调控制器 |
| | | */ |
| | | @RestController |
| | | @RequestMapping("/base") |
| | | public class CallbackController { |
| | | |
| | | @Autowired |
| | | private IReassignService reassignService; |
| | | // @Autowired |
| | | // private ICBCPayUtil icbcPayUtil; |
| | | |
| | | @Autowired |
| | | private PayMoneyUtil payMoneyUtil; |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 订单改派微信回调 |
| | | * @param request |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/wxReassign") |
| | | public void wxReassign(HttpServletRequest request, HttpServletResponse response){ |
| | | try { |
| | | Map<String, String> map = payMoneyUtil.weixinpayCallback(request); |
| | | if(null != map){ |
| | | String id = map.get("out_trade_no"); |
| | | String order_id = map.get("transaction_id"); |
| | | String result = map.get("result"); |
| | | if(ToolUtil.isNotEmpty(id) && ToolUtil.isNotEmpty(order_id)){ |
| | | PrintWriter out = response.getWriter(); |
| | | out.write(result); |
| | | out.flush(); |
| | | out.close(); |
| | | reassignService.payReassign(id, order_id, 1); |
| | | } |
| | | } |
| | | |
| | | // Map<String, String> map = icbcPayUtil.payCallback(request); |
| | | // if(null != map){ |
| | | // String id = map.get("out_trade_no"); |
| | | // String order_id = map.get("order_id"); |
| | | // //调用查询 |
| | | // String s = icbcPayUtil.queryTransaction("", order_id); |
| | | // if(s.equals("0")){ |
| | | // icbcPayUtil.answer(response);//回调应答 |
| | | // } |
| | | // if(ToolUtil.isNotEmpty(id) && ToolUtil.isNotEmpty(order_id) && s.equals("0")){ |
| | | // reassignService.payReassign(id, order_id, 1); |
| | | // } |
| | | // } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 订单改派支付宝回调 |
| | | * @param request |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/aliReassign") |
| | | public void aliReassign(HttpServletRequest request, HttpServletResponse response){ |
| | | try { |
| | | Map<String, String> map = payMoneyUtil.alipayCallback(request); |
| | | if(null != map){ |
| | | String id = map.get("out_trade_no"); |
| | | String order_id = map.get("trade_no"); |
| | | if(ToolUtil.isNotEmpty(id) && ToolUtil.isNotEmpty(order_id)){ |
| | | reassignService.payReassign(id, order_id, 2); |
| | | } |
| | | } |
| | | |
| | | |
| | | // Map<String, String> map = icbcPayUtil.payCallback(request); |
| | | // if(null != map){ |
| | | // String id = map.get("out_trade_no"); |
| | | // String order_id = map.get("order_id"); |
| | | // //调用查询 |
| | | // String s = icbcPayUtil.queryTransaction("", order_id); |
| | | // if(s.equals("0")){ |
| | | // icbcPayUtil.answer(response);//回调应答 |
| | | // } |
| | | // if(ToolUtil.isNotEmpty(id) && ToolUtil.isNotEmpty(order_id) && s.equals("0")){ |
| | | // reassignService.payReassign(id, order_id, 2); |
| | | // } |
| | | // } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.api; |
| | | |
| | | import com.stylefeng.guns.modular.system.service.ICarService; |
| | | import com.stylefeng.guns.modular.system.service.IDriverService; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | 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.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 车辆相关控制器 |
| | | */ |
| | | @RestController |
| | | @RequestMapping("/api/car") |
| | | public class CarController { |
| | | |
| | | @Autowired |
| | | private ICarService carService; |
| | | |
| | | @Autowired |
| | | private IDriverService driverService; |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取所有车辆品牌 |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/queryAllBrand") |
| | | @ApiOperation(value = "获取所有车辆品牌", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil queryAllBrand(){ |
| | | try { |
| | | List<Map<String, Object>> list = carService.queryAllBrand(); |
| | | return ResultUtil.success(list); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 查询车辆品牌型号 |
| | | * @param brandId |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/queryCarModel") |
| | | @ApiOperation(value = "查询车辆品牌型号", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "车辆品牌id", name = "brandId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil queryCarModel(Integer brandId){ |
| | | try { |
| | | List<Map<String, Object>> list = carService.queryCarModel(brandId); |
| | | return ResultUtil.success(list); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 添加车辆 |
| | | * @param modelId |
| | | * @param color |
| | | * @param licensePlate |
| | | * @param time |
| | | * @param drivingLicensePhoto |
| | | * @param carPhoto |
| | | * @param insurancePhoto |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/addCar") |
| | | @ApiOperation(value = "添加车辆", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "车辆型号id", name = "modelId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "车辆颜色", name = "color", required = true, dataType = "string"), |
| | | @ApiImplicitParam(value = "车牌号", name = "licensePlate", required = true, dataType = "string"), |
| | | @ApiImplicitParam(value = "年审日期(需要格式化)", name = "time", required = true, dataType = "string"), |
| | | @ApiImplicitParam(value = "行驶证照片", name = "drivingLicensePhoto", required = true, dataType = "string"), |
| | | @ApiImplicitParam(value = "车辆照片", name = "carPhoto", required = true, dataType = "string"), |
| | | @ApiImplicitParam(value = "保险照片", name = "insurancePhoto", required = true, dataType = "string"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil addCar(Integer modelId, String color, String licensePlate, Date time, String drivingLicensePhoto, |
| | | String carPhoto, String insurancePhoto, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return carService.addCar(modelId, color, licensePlate, time, drivingLicensePhoto, carPhoto, insurancePhoto, uid); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.api; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity; |
| | | import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService; |
| | | import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics; |
| | | import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService; |
| | | import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar; |
| | | import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService; |
| | | import com.stylefeng.guns.modular.system.model.Income; |
| | | import com.stylefeng.guns.modular.system.model.UserInfo; |
| | | import com.stylefeng.guns.modular.system.util.ALiSendSms; |
| | | //import com.stylefeng.guns.modular.system.util.ICBCPayUtil; |
| | | import com.stylefeng.guns.modular.system.util.HuaWeiSMSUtil; |
| | | import com.stylefeng.guns.modular.system.warpper.ActivityWarpper; |
| | | import com.stylefeng.guns.modular.system.model.Driver; |
| | | import com.stylefeng.guns.modular.system.model.OrderPosition; |
| | | import com.stylefeng.guns.modular.system.service.*; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import com.stylefeng.guns.modular.system.warpper.*; |
| | | import com.stylefeng.guns.modular.taxi.model.OrderTaxi; |
| | | import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; |
| | | import io.swagger.annotations.Api; |
| | | 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.web.bind.annotation.*; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 司机控制器 |
| | | */ |
| | | @Api |
| | | @CrossOrigin |
| | | @RestController |
| | | @RequestMapping("") |
| | | public class DriverController { |
| | | |
| | | @Autowired |
| | | private IDriverService driverService; |
| | | |
| | | @Autowired |
| | | private IOrderPositionService orderPositionService; |
| | | |
| | | @Autowired |
| | | private ISmsrecordService smsrecordService; |
| | | |
| | | @Autowired |
| | | private IDriverOrdersService driverOrdersService; |
| | | |
| | | @Autowired |
| | | private ICarService carService; |
| | | |
| | | @Autowired |
| | | private ALiSendSms aLiSendSms; |
| | | |
| | | @Autowired |
| | | private IOrderTaxiService orderTaxiService; |
| | | |
| | | @Autowired |
| | | private IIncomeService incomeService; |
| | | |
| | | @Autowired |
| | | private IOrderPrivateCarService orderPrivateCarService; |
| | | |
| | | @Autowired |
| | | private IOrderCrossCityService orderCrossCityService; |
| | | |
| | | @Autowired |
| | | private IOrderLogisticsService orderLogisticsService; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取短信验证码 |
| | | * @param phone |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/driver/queryCaptcha") |
| | | @ApiOperation(value = "获取短信验证码", tags = {"司机端-注册"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "手机号码", name = "phone", required = true, dataType = "String"), |
| | | @ApiImplicitParam(value = "场景类型(1=身份验证,2=登录确认,3=用户注册,4=修改密码)", name = "type", required = true, dataType = "String") |
| | | }) |
| | | public ResultUtil queryCaptcha(String phone, Integer type){ |
| | | if(ToolUtil.isNotEmpty(phone)){ |
| | | try { |
| | | return driverService.queryCaptcha(phone, type); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | }else{ |
| | | return ResultUtil.paranErr(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 验证短信验证码 |
| | | * @param phone |
| | | * @param code |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/driver/checkCaptcha") |
| | | @ApiOperation(value = "验证短信验证码", tags = {"司机端-注册"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "手机号码", name = "phone", required = true, dataType = "String"), |
| | | @ApiImplicitParam(value = "短信验证码", name = "code", required = true, dataType = "String") |
| | | }) |
| | | public ResultUtil checkCaptcha(String phone, String code){ |
| | | try { |
| | | boolean b = driverService.checkCaptcha(phone, code); |
| | | if(b){ |
| | | Driver driver = driverService.queryByPhone(phone); |
| | | smsrecordService.saveData(null == driver ? 5 : 8, phone, code, "短信验证码【" + code + "】已发到您的手机,验证码将在5分钟后失效,请及时登录!"); |
| | | } |
| | | return b ? ResultUtil.success() : ResultUtil.error("验证码无效"); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 司机提交注册申请 |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/driver/registeredDriver") |
| | | @ApiOperation(value = "司机提交注册申请", tags = {"分享专用"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "手机号码", name = "phone", required = true, dataType = "String"), |
| | | @ApiImplicitParam(value = "短信验证码", name = "code", required = true, dataType = "String"), |
| | | @ApiImplicitParam(value = "密码", name = "password", required = true, dataType = "String"), |
| | | @ApiImplicitParam(value = "分享的用户id", name = "uid", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "用户类型(1=用户,2=司机)", name = "type", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "注册类型(1=司机注册,2=用户注册)", name = "userType", required = true, dataType = "int") |
| | | }) |
| | | public ResultUtil registeredDriver(String phone, String code, String password, Integer uid, Integer type, Integer userType){ |
| | | try { |
| | | return driverService.registeredDriver(phone, code, password, uid, type, userType); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 司机注册 |
| | | * @param phone |
| | | * @param code |
| | | * @param password |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/driver/registeredDriver_") |
| | | @ApiOperation(value = "司机提交注册申请", tags = {"司机端-注册"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "手机号码", name = "phone", required = true, dataType = "String"), |
| | | @ApiImplicitParam(value = "短信验证码", name = "code", required = true, dataType = "String"), |
| | | @ApiImplicitParam(value = "密码", name = "password", required = true, dataType = "String") |
| | | }) |
| | | public ResultUtil<LoginWarpper> registeredDriver_(String phone, String code, String password){ |
| | | try { |
| | | return driverService.registeredDriver(phone, code, password); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/base/driver/queryNeedCertificate") |
| | | @ApiOperation(value = "注册完善个人信息根据选择的从业地判断是否需要网约车资格证", tags = {"司机端-注册"}, notes = "0=城市未开通,1=是,2=否") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "城市行政编号", name = "code", required = true, dataType = "String") |
| | | }) |
| | | public ResultUtil queryNeedCertificate(String code){ |
| | | try { |
| | | Integer integer = driverService.queryNeedCertificate(code); |
| | | return ResultUtil.success(integer == null ? 0 : integer); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 司机注册后完善个人信息 |
| | | * @param registeredWarpper |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/driver/updateDriver") |
| | | @ApiOperation(value = "司机注册后完善个人信息", tags = {"司机端-注册"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "司机id", name = "uid", required = true, dataType = "int") |
| | | }) |
| | | public ResultUtil updateDriver(RegisteredWarpper registeredWarpper, Integer uid){ |
| | | try { |
| | | return driverService.updateDriver(registeredWarpper, uid); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 司机注册审核后的短信 |
| | | * @param uid |
| | | * @param type |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/driver/sendsms") |
| | | public ResultUtil sendsms(Integer uid, Integer type){ |
| | | try { |
| | | Driver driver = driverService.selectById(uid); |
| | | String templateCode = null; |
| | | switch (type){ |
| | | case 1: |
| | | templateCode = "8212979ba98f4918823986481ae2e104";//身份验证 |
| | | break; |
| | | case 2: |
| | | templateCode = "08b2c59bdce945549c0ee6bbe46252f8";//登录确认 |
| | | break; |
| | | case 3: |
| | | templateCode = "c39681463441496aaa4d96a642ff4227";//用户注册 |
| | | break; |
| | | case 4: |
| | | templateCode = "c230a6b92504473c97c17741e1cc0b9d";//修改密码 |
| | | break; |
| | | case 5: |
| | | templateCode = "2d1ebdfbe1e440459afd98498fc1fda4";//司机注册成功 |
| | | break; |
| | | case 6: |
| | | templateCode = "a8af3c2972db4c9e91add990dff22f65";//司机注册失败 |
| | | break; |
| | | } |
| | | // HuaWeiSMSUtil.sendSms("", driver.getPhone(), "8822061324669", templateCode); |
| | | // String s = aLiSendSms.sendSms(driver.getPhone(), "SMS_147415322", "{\"code\":\"" + authCode + "\"}"); |
| | | return ResultUtil.success(); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 忘记密码操作 |
| | | * @param phone |
| | | * @param code |
| | | * @param password |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/driver/resetPassword") |
| | | @ApiOperation(value = "忘记密码操作", tags = {"司机端-登录"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "手机号码", name = "phone", required = true, dataType = "String"), |
| | | @ApiImplicitParam(value = "短信验证码", name = "code", required = true, dataType = "String"), |
| | | @ApiImplicitParam(value = "新密码", name = "password", required = true, dataType = "String") |
| | | }) |
| | | public ResultUtil resetPassword(String phone, String code, String password){ |
| | | try { |
| | | return driverService.resetPassword(phone, code, password); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取忘记密码页面的电话 |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/driver/queryPhone") |
| | | @ApiOperation(value = "获取忘记密码页面的电话", tags = {"司机端-登录"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "当前定位城市行政编号(510100)", name = "code", required = true, dataType = "String") |
| | | }) |
| | | public ResultUtil queryPhone(String code){ |
| | | try { |
| | | Map<String, Object> map = driverService.queryPhone(code); |
| | | return ResultUtil.success(map); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 司机登录操作 |
| | | * @param phone |
| | | * @param password |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/driver/driverLogin") |
| | | @ApiOperation(value = "登录操作", tags = {"司机端-登录"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "手机号码", name = "phone", required = true, dataType = "String"), |
| | | @ApiImplicitParam(value = "密码", name = "password", required = true, dataType = "String") |
| | | }) |
| | | public ResultUtil<LoginWarpper> driverLogin(String phone, String password){ |
| | | try { |
| | | return driverService.driverLogin(phone, password); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取首页统计数据 |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/queryHomeData") |
| | | @ApiOperation(value = "获取首页统计数据", tags = {"司机端-首页"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<HomeWarpper> queryHomeData(HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | Map<String, Object> map = driverService.queryHomeData(uid); |
| | | return ResultUtil.success(HomeWarpper.getHomeWarpper(map)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 司机上下班操作 |
| | | * @param type |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/work") |
| | | @ApiOperation(value = "司机上下班操作", tags = {"司机端-首页"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "上班的业务类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城)多个已逗号分隔", name = "type", required = false, dataType = "String"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil work(String type, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return driverService.work(uid, type); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/work2") |
| | | @ApiOperation(value = "司机上下班操作,同时设置接单类型", tags = {"司机端-车载端"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "上班的业务类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城)多个已逗号分隔", name = "type", required = false, dataType = "String"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil work2(String type, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return driverService.work2(uid, type); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/queryHomeNum") |
| | | @ApiOperation(value = "获取首页统计数据", tags = {"司机端-车载端"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil queryHomeNum(HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | Map<String, Object> map = driverService.queryHomeNum(uid); |
| | | return ResultUtil.success(map); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 上班时选择的业务类型 |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/queryMyBusiness") |
| | | @ApiOperation(value = "上班时选择的业务类型", tags = {"司机端-首页"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<List<BaseWarpper>> queryMyBusiness(HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | // TODO: 2020/7/21 修改为个人中心中设置的接单业务类型。 |
| | | List<BaseWarpper> list = driverService.queryMyBusiness(uid); |
| | | List<Integer> integers = driverOrdersService.queryOrders(uid); |
| | | List<BaseWarpper> data = new ArrayList<>(); |
| | | for(BaseWarpper baseWarpper : list){ |
| | | if(integers.contains(baseWarpper.getId())){ |
| | | data.add(baseWarpper); |
| | | } |
| | | } |
| | | return ResultUtil.success(data); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 存储订单服务中的司机位置 |
| | | * @param orderPosition |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/savePosition") |
| | | public String savePosition(OrderPosition orderPosition){ |
| | | try { |
| | | orderPositionService.saveData(orderPosition); |
| | | return JSON.toJSONString(ResultUtil.success()); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return JSON.toJSONString(ResultUtil.runErr()); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/base/driver/queryInfo_") |
| | | @ApiOperation(value = "根据用户id获取数据", tags = {"司机端-注册"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "司机id", name = "uid", required = true, dataType = "int"), |
| | | }) |
| | | public ResultUtil<DriverInfoWarpper> queryInfo_(Integer uid){ |
| | | try { |
| | | Map<String, Object> map = driverService.queryInfo(uid); |
| | | return ResultUtil.success(DriverInfoWarpper.getDriverInfoWarpper(map)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取个人中心详情 |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/queryInfo") |
| | | @ApiOperation(value = "获取个人中心详情", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<DriverInfoWarpper> queryInfo(HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | Map<String, Object> map = driverService.queryInfo(uid); |
| | | return ResultUtil.success(DriverInfoWarpper.getDriverInfoWarpper(map)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 修改手机号码 |
| | | * @param phone |
| | | * @param code |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/updatePhone") |
| | | @ApiOperation(value = "修改手机号码", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "新电话号码", name = "phone", required = true, dataType = "String"), |
| | | @ApiImplicitParam(value = "短信验证码", name = "code", required = true, dataType = "String"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil updatePhone(String phone, String code, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return driverService.updatePhone(phone, code, uid); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 修改密码 |
| | | * @param password |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/updatePassword") |
| | | @ApiOperation(value = "修改密码", tags = {"司机端-个人中心"}, notes = "修改前需要验证短信验证码") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "新密码", name = "password", required = true, dataType = "String"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil updatePassword(String password, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | driverService.updatePassword(password, uid); |
| | | return ResultUtil.success(); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取设置接单的业务类型列表 |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/querySetOrders") |
| | | @ApiOperation(value = "获取设置接单的业务类型列表", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<List<OrdersWarpper>> querySetOrders(HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | List<BaseWarpper> list = driverService.queryMyBusiness(uid); |
| | | List<Integer> integers = driverOrdersService.queryOrders(uid); |
| | | List<OrdersWarpper> data = new ArrayList<>(); |
| | | for(BaseWarpper b : list){ |
| | | OrdersWarpper ordersWarpper = new OrdersWarpper(); |
| | | ordersWarpper.setType(b.getId()); |
| | | ordersWarpper.setName(b.getName()); |
| | | ordersWarpper.setState(integers.contains(b.getId()) ? 2 : 1); |
| | | data.add(ordersWarpper); |
| | | } |
| | | return ResultUtil.success(data); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 设置接单规则 |
| | | * @param type |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/updateOrders") |
| | | @ApiOperation(value = "设置接单规则", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城)", name = "type", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil updateOrders(Integer type, HttpServletRequest request){ |
| | | try{ |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return driverOrdersService.updateOrders(uid, type); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取当前车辆及空闲车辆 |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/queryMyCar") |
| | | @ApiOperation(value = "获取当前车辆及空闲车辆", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil queryMyCar(HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | Map<String, Object> map = carService.queryCars(uid); |
| | | return ResultUtil.success(map); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 更换车辆 |
| | | * @param carId |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/replaceCar") |
| | | @ApiOperation(value = "更换车辆", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "车辆id", name = "carId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil replaceCar(Integer carId, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return driverService.replaceCar(carId, uid); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取客服电话 |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/queryPhone") |
| | | @ApiOperation(value = "获取客服电话", tags = {"司机端-个人中心"}, notes = "车队=franchisee,分公司=branch,平台=platform") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil queryPhone(HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | Map<String, Object> map = driverService.queryPhone(uid); |
| | | return ResultUtil.success(map); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取扣款明细 |
| | | * @param pageNum |
| | | * @param size |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/queryPenalties") |
| | | @ApiOperation(value = "获取扣款明细", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<List<BaseWarpper>> queryPenalties(Integer pageNum, Integer size, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | List<Map<String, Object>> list = driverService.queryPenalties(pageNum, size, uid); |
| | | List<BaseWarpper> data = new ArrayList<>(); |
| | | for(Map<String, Object> map : list){ |
| | | BaseWarpper baseWarpper = new BaseWarpper(); |
| | | baseWarpper.setAmount(Double.valueOf(String.valueOf(map.get("amount")))); |
| | | baseWarpper.setName(String.valueOf(map.get("name"))); |
| | | baseWarpper.setDay(String.valueOf(map.get("day"))); |
| | | data.add(baseWarpper); |
| | | } |
| | | return ResultUtil.success(data); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取收益明细 |
| | | * @param pageNum |
| | | * @param size |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/queryActivityIncome") |
| | | @ApiOperation(value = "获取收益明细", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<List<BaseWarpper>> queryActivityIncome(Integer pageNum, Integer size, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | List<Map<String, Object>> list = driverService.queryActivityIncome(uid, pageNum, size); |
| | | List<BaseWarpper> data = new ArrayList<>(); |
| | | for(Map<String, Object> map : list){ |
| | | BaseWarpper baseWarpper = new BaseWarpper(); |
| | | baseWarpper.setDay(String.valueOf(null != map.get("time") ? map.get("time") : "")); |
| | | baseWarpper.setAmount(Double.valueOf(String.valueOf(null != map.get("money") ? map.get("money") : 0))); |
| | | baseWarpper.setName("活动奖励"); |
| | | data.add(baseWarpper); |
| | | } |
| | | return ResultUtil.success(data); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取收入明细 |
| | | * @param pageNum |
| | | * @param size |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/queryTotalRevenue") |
| | | @ApiOperation(value = "获取收入明细", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<List<BaseWarpper>> queryTotalRevenue(Integer pageNum, Integer size, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | List<Map<String, Object>> list = driverService.queryTotalRevenue(uid, pageNum, size); |
| | | List<BaseWarpper> data = new ArrayList<>(); |
| | | for(Map<String, Object> map : list){ |
| | | BaseWarpper baseWarpper = new BaseWarpper(); |
| | | baseWarpper.setDay(String.valueOf(null != map.get("time") ? map.get("time") : "")); |
| | | baseWarpper.setAmount(Double.valueOf(String.valueOf(null != map.get("money") ? map.get("money") : 0))); |
| | | switch (Integer.valueOf(String.valueOf(null != map.get("orderType") ? map.get("orderType") : 0))){ |
| | | case 1: |
| | | baseWarpper.setName("快车"); |
| | | break; |
| | | case 2: |
| | | baseWarpper.setName("出租车"); |
| | | break; |
| | | case 3: |
| | | baseWarpper.setName("直通车"); |
| | | break; |
| | | case 4: |
| | | baseWarpper.setName("同城小件物流"); |
| | | break; |
| | | case 5: |
| | | baseWarpper.setName("跨城小件物流"); |
| | | break; |
| | | } |
| | | Map<String, Object> map1 = new HashMap<>(); |
| | | switch (Integer.valueOf(map.get("orderType").toString())){ |
| | | case 1: |
| | | OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(map.get("incomeId").toString()); |
| | | if(null != orderPrivateCar){ |
| | | List<Income> incomes = incomeService.queryData(1, null, 2, orderPrivateCar.getId(), 1); |
| | | map1.put("travelMoney", null != orderPrivateCar.getOrderMoney() ? orderPrivateCar.getOrderMoney() : 0);//行程费 |
| | | map1.put("parkMoney", null != orderPrivateCar.getParkMoney() ? orderPrivateCar.getParkMoney() : 0);//停车费 |
| | | map1.put("tipMoney", 0);//小费 |
| | | map1.put("roadTollMoney", null != orderPrivateCar.getRoadTollMoney() ? orderPrivateCar.getRoadTollMoney() : 0);//过路费 |
| | | map1.put("rakeMoney", incomes.size() > 0 ? incomes.get(0).getMoney() : 0);//抽成 |
| | | } |
| | | |
| | | break; |
| | | case 2: |
| | | OrderTaxi orderTaxi = orderTaxiService.selectById(map.get("incomeId").toString()); |
| | | if(null != orderTaxi){ |
| | | List<Income> incomes1 = incomeService.queryData(1, null, 2, orderTaxi.getId(), 2); |
| | | map1.put("travelMoney", null != orderTaxi.getTravelMoney() ? orderTaxi.getTravelMoney() : 0);//行程费 |
| | | map1.put("parkMoney", null != orderTaxi.getParkMoney() ? orderTaxi.getParkMoney() : 0);//停车费 |
| | | map1.put("tipMoney", null != orderTaxi.getTipMoney() ? orderTaxi.getTipMoney(): 0);//小费 |
| | | map1.put("roadTollMoney", null != orderTaxi.getRoadTollMoney() ? orderTaxi.getRoadTollMoney() : 0);//过路费 |
| | | map1.put("rakeMoney", incomes1.size() > 0 ? incomes1.get(0).getMoney() : 0);//抽成 |
| | | } |
| | | |
| | | break; |
| | | case 3: |
| | | OrderCrossCity orderCrossCity = orderCrossCityService.selectById(map.get("incomeId").toString()); |
| | | if(null != orderCrossCity){ |
| | | List<Income> incomes2 = incomeService.queryData(1, null, 2, orderCrossCity.getId(), 3); |
| | | map1.put("travelMoney", null != orderCrossCity.getOrderMoney() ? orderCrossCity.getOrderMoney() : 0);//行程费 |
| | | map1.put("parkMoney", 0);//停车费 |
| | | map1.put("tipMoney", 0);//小费 |
| | | map1.put("roadTollMoney", 0);//过路费 |
| | | map1.put("rakeMoney", incomes2.size() > 0 ? incomes2.get(0).getMoney() : 0);//抽成 |
| | | } |
| | | break; |
| | | case 4: |
| | | OrderLogistics orderLogistics = orderLogisticsService.selectById(map.get("incomeId").toString()); |
| | | if(null != orderLogistics){ |
| | | List<Income> incomes3 = incomeService.queryData(1, null, 2, orderLogistics.getId(), 4); |
| | | map1.put("travelMoney", null != orderLogistics.getTravelMoney() ? orderLogistics.getTravelMoney() : 0);//行程费 |
| | | map1.put("parkMoney", 0);//停车费 |
| | | map1.put("tipMoney", null != orderLogistics.getTipMoney() ? orderLogistics.getTipMoney() : 0);//小费 |
| | | map1.put("roadTollMoney", 0);//过路费 |
| | | map1.put("rakeMoney", incomes3.size() > 0 ? incomes3.get(0).getMoney() : 0);//抽成 |
| | | } |
| | | break; |
| | | case 5: |
| | | OrderLogistics orderLogistics1 = orderLogisticsService.selectById(map.get("incomeId").toString()); |
| | | if(null != orderLogistics1){ |
| | | List<Income> incomes4 = incomeService.queryData(1, null, 2, orderLogistics1.getId(), 5); |
| | | map1.put("travelMoney", null != orderLogistics1.getTravelMoney() ? orderLogistics1.getTravelMoney() : 0);//行程费 |
| | | map1.put("parkMoney", 0);//停车费 |
| | | map1.put("tipMoney", orderLogistics1.getTipMoney());//小费 |
| | | map1.put("roadTollMoney", 0);//过路费 |
| | | map1.put("rakeMoney", incomes4.size() > 0 ? incomes4.get(0).getMoney() : 0);//抽成 |
| | | } |
| | | break; |
| | | } |
| | | |
| | | baseWarpper.setData(map1); |
| | | data.add(baseWarpper); |
| | | } |
| | | return ResultUtil.success(data); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取当前有效的活动列表 |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/queryMyActivity") |
| | | @ApiOperation(value = "获取当前有效的活动列表", tags = {"司机端-首页"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<List<ActivityWarpper>> queryMyActivity(HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return ResultUtil.success(driverService.queryMyActivity(uid, new Date())); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取历史活动列表 |
| | | * @param pageNum |
| | | * @param size |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/queryHistoryActivity") |
| | | @ApiOperation(value = "获取历史活动列表", tags = {"司机端-首页"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil queryHistoryActivity(Integer pageNum, Integer size, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | List<Map<String, Object>> list = driverService.queryHistory(uid, pageNum, size); |
| | | return ResultUtil.success(list); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取历史日期中的活动内容 |
| | | * @param time |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/queryHistoryActivityInfo") |
| | | @ApiOperation(value = "获取历史日期中的活动内容", tags = {"司机端-首页"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "查询的给定日期", name = "time", required = true, dataType = "string"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil queryHistoryActivityInfo(String time, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd"); |
| | | List<ActivityWarpper> activityWarppers = driverService.queryMyActivity(uid, sdf.parse(time)); |
| | | return ResultUtil.success(activityWarppers); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 工号登录(仅出租车) |
| | | * @param jobNum |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/driver/loginByJobNumber") |
| | | @ApiOperation(value = "工号登录", tags = {"司机端-登录"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "工号", name = "jobNum", required = true, dataType = "String"), |
| | | }) |
| | | public ResultUtil loginByJobNumber(String jobNum){ |
| | | try { |
| | | return driverService.loginByJobNumber(jobNum); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 身份证号码登录 |
| | | * @param identification |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/driver/loginByIdentification") |
| | | @ApiOperation(value = "身份证号码登录", tags = {"司机端-登录"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "身份证号码", name = "identification", required = true, dataType = "String"), |
| | | }) |
| | | public ResultUtil loginByIdentification(String identification){ |
| | | try { |
| | | return driverService.loginByIdentification(identification); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 出租车资格证号码登录 |
| | | * @param taxiAptitudeCard |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/driver/loginByTaxiAptitudeCard") |
| | | @ApiOperation(value = "出租车资格证号登录", tags = {"司机端-登录"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "出租车资格证号", name = "taxiAptitudeCard", required = true, dataType = "String"), |
| | | }) |
| | | public ResultUtil loginByTaxiAptitudeCard(String taxiAptitudeCard){ |
| | | try { |
| | | return driverService.loginByTaxiAptitudeCard(taxiAptitudeCard); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 验证登录密码是否有效 |
| | | * @param password |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/verificationPassword") |
| | | @ApiOperation(value = "验证登录密码是否有效", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "登录密码", name = "password", required = true, dataType = "String"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil verificationPassword(String password, HttpServletRequest request){ |
| | | try { |
| | | Integer driverId = driverService.getUserIdFormRedis(request); |
| | | if(null == driverId){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return driverService.verificationPassword(password, driverId); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 设置提现密码 |
| | | * @param withdrawPassword |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/setWithdrawPassword") |
| | | @ApiOperation(value = "设置提现密码", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "提现密码", name = "withdrawPassword", required = true, dataType = "String"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil setWithdrawPassword(String withdrawPassword, HttpServletRequest request){ |
| | | try { |
| | | Integer driverId = driverService.getUserIdFormRedis(request); |
| | | if(null == driverId){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return driverService.setWithdrawPassword(withdrawPassword, driverId); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 验证提现密码是否有效 |
| | | * @param withdrawPassword |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/verificationWithdrawPassword") |
| | | @ApiOperation(value = "验证提现密码是否有效", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "提现密码", name = "withdrawPassword", required = true, dataType = "String"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil verificationWithdrawPassword(String withdrawPassword, HttpServletRequest request){ |
| | | try { |
| | | Integer driverId = driverService.getUserIdFormRedis(request); |
| | | if(null == driverId){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return driverService.verificationWithdrawPassword(withdrawPassword, driverId); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 退出登录 |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/loginOut") |
| | | @ApiOperation(value = "退出登录", tags = {"司机端-车载端"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil loginOut(HttpServletRequest request){ |
| | | try { |
| | | Integer driverId = driverService.getUserIdFormRedis(request); |
| | | if(null == driverId){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return driverService.loginOut(driverId); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 注销账号 |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/driver/cancelAccount") |
| | | @ApiOperation(value = "注销账号", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil cancelAccount(HttpServletRequest request){ |
| | | try { |
| | | Integer driverId = driverService.getUserIdFormRedis(request); |
| | | if(null == driverId){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | Driver driver = driverService.selectById(driverId); |
| | | driver.setFlag(3); |
| | | driverService.updateById(driver); |
| | | return ResultUtil.success(); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.api; |
| | | |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.stylefeng.guns.modular.system.service.IDriverOnlineService; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | @RestController |
| | | @RequestMapping("/base/driverOnline") |
| | | public class DriverOnlineController { |
| | | |
| | | @Autowired |
| | | private IDriverOnlineService driverOnlineService; |
| | | |
| | | |
| | | /** |
| | | * 存储司机在线数据 |
| | | * @param driverId |
| | | * @param device |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/addDriverOnline") |
| | | public String addDriverOnline(Integer driverId, Integer device, String version){ |
| | | try { |
| | | driverOnlineService.addDriverOnline(driverId, device, version); |
| | | return JSON.toJSONString(ResultUtil.success()); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return JSON.toJSONString(ResultUtil.runErr()); |
| | | } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.api; |
| | | |
| | | import com.stylefeng.guns.modular.system.service.IDriverService; |
| | | import com.stylefeng.guns.modular.system.service.IFeedbackService; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import io.swagger.annotations.Api; |
| | | 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.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | |
| | | /** |
| | | * 反馈控制器 |
| | | */ |
| | | @Api |
| | | @RestController |
| | | @RequestMapping("/api/feedback") |
| | | public class FeedbackController { |
| | | |
| | | @Autowired |
| | | private IFeedbackService feedbackService; |
| | | |
| | | @Autowired |
| | | private IDriverService driverService; |
| | | |
| | | |
| | | /** |
| | | * 提交反馈意见 |
| | | * @param content |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/feedback") |
| | | @ApiOperation(value = "提交反馈意见", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "反馈内容", name = "content", required = true, dataType = "string"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil feedback(String content, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(uid == null){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return feedbackService.feedback(content, uid); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.api; |
| | | |
| | | |
| | | import com.stylefeng.guns.modular.system.model.OrderPosition; |
| | | import com.stylefeng.guns.modular.system.service.IDriverService; |
| | | import com.stylefeng.guns.modular.system.service.INettyService; |
| | | import com.stylefeng.guns.modular.system.util.PushUtil; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import com.stylefeng.guns.modular.system.warpper.OrderStatusWarpper; |
| | | 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.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 替换socket无法正常连接的备选方案 |
| | | * 通过前端主动调用接口上传数据或者获取需要下发的数据 |
| | | */ |
| | | @RestController |
| | | @RequestMapping("") |
| | | public class NettyController { |
| | | |
| | | @Autowired |
| | | private INettyService nettyService; |
| | | |
| | | @Autowired |
| | | private IDriverService driverService; |
| | | |
| | | @Autowired |
| | | private PushUtil pushUtil; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 司机端主动调用该接口上传位置信息 |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/netty/positionSocket") |
| | | @ApiOperation(value = "司机端主动调用该接口上传位置信息", tags = {"司机端-仿socket接口"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id", name = "orderId", required = false, dataType = "int"), |
| | | @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城)", name = "orderType", required = false, dataType = "int"), |
| | | @ApiImplicitParam(value = "经度", name = "lon", required = true, dataType = "string"), |
| | | @ApiImplicitParam(value = "纬度", name = "lat", required = true, dataType = "string"), |
| | | @ApiImplicitParam(value = "方向角", name = "directionAngle", required = true, dataType = "string"), |
| | | @ApiImplicitParam(value = "海拔", name = "altitude", required = true, dataType = "string"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil positionSocket(OrderPosition orderPosition, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return nettyService.positionSocket(orderPosition, uid); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 删除服务中的定时任务 |
| | | * @param orderId |
| | | * @param orderType |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/netty/deleteTask") |
| | | public ResultUtil deleteTask(Integer orderId, Integer orderType){ |
| | | try { |
| | | pushUtil.removeTask(orderId, orderType); |
| | | return ResultUtil.success(); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 主动调用获取订单状态 |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/netty/orderStateSocket") |
| | | @ApiOperation(value = "主动调用获取订单状态", tags = {"司机端-仿socket接口"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<List<OrderStatusWarpper>> orderStateSocket(HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return nettyService.orderStateSocket(uid); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.api; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService; |
| | | import com.stylefeng.guns.modular.system.model.Reassign; |
| | | import com.stylefeng.guns.modular.system.service.IDriverService; |
| | | import com.stylefeng.guns.modular.system.service.IOrderService; |
| | | import com.stylefeng.guns.modular.system.service.IReassignService; |
| | | import com.stylefeng.guns.modular.system.util.ChinaMobileUtil; |
| | | import com.stylefeng.guns.modular.system.util.PushUtil; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import com.stylefeng.guns.modular.system.util.SystemException; |
| | | import com.stylefeng.guns.modular.system.warpper.BaseWarpper; |
| | | import com.stylefeng.guns.modular.system.warpper.MoneyInfoWarpper; |
| | | import com.stylefeng.guns.modular.system.warpper.OrderInfoWarpper; |
| | | import com.stylefeng.guns.modular.system.warpper.OrderListWarpper; |
| | | 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.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 订单相关控制器 |
| | | */ |
| | | @RestController |
| | | @RequestMapping("") |
| | | public class OrderController { |
| | | |
| | | @Autowired |
| | | private IOrderService orderService; |
| | | |
| | | @Autowired |
| | | private IDriverService driverService; |
| | | |
| | | @Autowired |
| | | private IReassignService reassignService; |
| | | |
| | | @Autowired |
| | | private PushUtil pushUtil; |
| | | |
| | | @Autowired |
| | | private ChinaMobileUtil chinaMobileUtil; |
| | | |
| | | @Autowired |
| | | private IOrderLogisticsService orderLogisticsService; |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 司机端获取首页订单列表 |
| | | * @param state |
| | | * @param pageNum |
| | | * @param size |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/order/queryOrderList") |
| | | @ApiOperation(value = "获取首页订单列表", tags = {"司机端-首页"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "数据类型(1=服务中,2=待服务)", name = "state", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<List<OrderListWarpper>> queryOrderList(Integer state, Integer pageNum, Integer size, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | List<Map<String, Object>> list = orderService.queryOrderList(state, pageNum, size, uid); |
| | | return ResultUtil.success(OrderListWarpper.getOrderListWarpper(list)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 司机端获取首页订单列表 |
| | | * @param state |
| | | * @param pageNum |
| | | * @param size |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/order/queryOrderList1") |
| | | @ApiOperation(value = "获取首页订单列表", tags = {"司机端-车载端"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "数据类型(1=服务中,2=待服务)", name = "state", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "订单类型(1=其他订单,2=小件物流)", name = "type", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<List<OrderListWarpper>> queryOrderList1(Integer state, Integer type, Integer pageNum, Integer size, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | List<Map<String, Object>> list = orderService.queryOrderList1(state, type, pageNum, size, uid); |
| | | return ResultUtil.success(OrderListWarpper.getOrderListWarpper(list)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取我的订单列表 |
| | | * @param state |
| | | * @param pageNum |
| | | * @param size |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/order/queryMyAllOrder") |
| | | @ApiOperation(value = "获取我的订单列表", tags = {"司机端-首页"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "数据类型(1=全部,2=待支付,3=已取消,4=已完成)", name = "state", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<List<OrderListWarpper>> queryMyAllOrder(Integer state, Integer pageNum, Integer size, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | List<OrderListWarpper> listWarppers = orderService.queryMyAllOrder(state, pageNum, size, uid); |
| | | return ResultUtil.success(listWarppers); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取我的订单列表 |
| | | * @param pageNum |
| | | * @param size |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/order/queryMyAllOrder1") |
| | | @ApiOperation(value = "获取我的订单列表", tags = {"司机端-车载端"}, notes = "只含出租车") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<List<OrderListWarpper>> queryMyAllOrder1(Integer pageNum, Integer size, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | List<OrderListWarpper> listWarppers = orderService.queryMyAllOrder1(pageNum, size, uid); |
| | | return ResultUtil.success(listWarppers); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取抢单界面的订单详情 |
| | | * @param orderId |
| | | * @param orderType |
| | | * @param lon |
| | | * @param lat |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/order/queryPushOrder") |
| | | @ApiOperation(value = "获取抢单界面的订单详情", tags = {"司机端-首页"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城)", name = "orderType", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "当前定位经度", name = "lon", required = true, dataType = "string"), |
| | | @ApiImplicitParam(value = "当前定位纬度", name = "lat", required = true, dataType = "string"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<OrderInfoWarpper> queryPushOrder(Integer orderId, Integer orderType, String lon, String lat){ |
| | | try { |
| | | Map<String, Object> map = orderService.queryPushOrder(orderId, orderType, lon, lat); |
| | | return ResultUtil.success(OrderInfoWarpper.getOrderInfoWarpper(map)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 司机抢单操作 |
| | | * @param orderId |
| | | * @param orderType |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/order/grabOrder") |
| | | @ApiOperation(value = "司机抢单操作", tags = {"司机端-首页"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城)", name = "orderType", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil grabOrder(Integer orderId, Integer orderType, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return orderService.grabOrder(orderId, orderType, uid); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取服务中页面订单详情 |
| | | * @param orderId |
| | | * @param orderType |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/order/queryOrderInfo") |
| | | @ApiOperation(value = "获取服务中页面订单详情", tags = {"司机端-服务中"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,4=小件物流-同城,5=小件物流-跨城)", name = "orderType", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<OrderInfoWarpper> queryOrderInfo(Integer orderId, Integer orderType){ |
| | | try { |
| | | Map<String, Object> map = orderService.queryOrderInfo(orderId, orderType); |
| | | return ResultUtil.success(OrderInfoWarpper.getOrderInfoWarpper(map)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取订单的改派金额 |
| | | * @param orderId |
| | | * @param orderType |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/order/queryReassignMoney") |
| | | @ApiOperation(value = "获取改派支付金额", tags = {"司机端-服务中"}, notes = "返回金额为0不需要调用支付") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id(跨城多个订单使用逗号分隔)", name = "orderId", required = true, dataType = "string"), |
| | | @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城)", name = "orderType", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<BaseWarpper> queryReassignMoney(String orderId, Integer orderType){ |
| | | try { |
| | | String[] split = orderId.split(","); |
| | | Double aDouble = orderService.queryReassignMoney(Integer.valueOf(split[0]), orderType); |
| | | BaseWarpper baseWarpper = new BaseWarpper(); |
| | | if(orderType == 3){ |
| | | aDouble = aDouble * split.length; |
| | | } |
| | | baseWarpper.setAmount(aDouble); |
| | | return ResultUtil.success(baseWarpper); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 司机提交改派申请 |
| | | * @param reassign |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/order/reassign") |
| | | @ApiOperation(value = "提交改派申请", tags = {"司机端-服务中"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,4=小件物流-同城,5=小件物流-跨城)", name = "orderType", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "改派支付方式(1=微信,2=支付宝,3=余额)", name = "payType", required = false, dataType = "int"), |
| | | @ApiImplicitParam(value = "改派原因", name = "reason", required = true, dataType = "string"), |
| | | @ApiImplicitParam(value = "备注", name = "remark", required = false, dataType = "string"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil reassign(Reassign reassign, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return reassignService.saveData(reassign, uid, null); |
| | | }catch (SystemException s){ |
| | | return ResultUtil.error(s.getMsg()); |
| | | } catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 司机走流程操作 |
| | | * @param orderId |
| | | * @param orderType |
| | | * @param state |
| | | * @param lon |
| | | * @param lat |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/order/process") |
| | | @ApiOperation(value = "司机走流程操作", tags = {"司机端-服务中"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城)", name = "orderType", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "流程操作状态(3=开始出发预约点,4=到达预约点,5=开始服务,6=服务结束)", name = "state", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "当前经度", name = "lon", required = true, dataType = "double"), |
| | | @ApiImplicitParam(value = "当前纬度", name = "lat", required = true, dataType = "double"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil process(Integer orderId, Integer orderType, Integer state, Double lon, Double lat, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return orderService.process(orderId, orderType, state, uid, lon, lat); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 司机抢单操作(车载端) |
| | | * @param orderId |
| | | * @param orderType |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/order/grabOrder_") |
| | | @ApiOperation(value = "司机抢单操作", tags = {"司机端-车载端"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "订单类型(2=出租车,4=小件物流-同城,5=小件物流-跨城)", name = "orderType", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil grabOrder_(Integer orderId, Integer orderType, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return orderService.grabOrder_(orderId, orderType, uid); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 司机确认费用 |
| | | * @param orderId |
| | | * @param orderType |
| | | * @param type |
| | | * @param travelFee |
| | | * @param parkingFee |
| | | * @param crossingFee |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/order/confirmFees") |
| | | @ApiOperation(value = "司机确认费用", tags = {"司机端-服务中"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际)", name = "orderType", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "支付方式(1=OK平台收款,2=其他方式收款)", name = "type", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "行程费用(出租车必传)", name = "travelFee", required = false, dataType = "double"), |
| | | @ApiImplicitParam(value = "停车费", name = "parkingFee", required = false, dataType = "double"), |
| | | @ApiImplicitParam(value = "过路费", name = "crossingFee", required = false, dataType = "double"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil confirmFees(Integer orderId, Integer orderType, Integer type, Double travelFee, Double parkingFee, Double crossingFee){ |
| | | try{ |
| | | return orderService.confirmFees(orderId, orderType, type, travelFee, parkingFee, crossingFee); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 司机确认费用(车载端) |
| | | * @param orderId |
| | | * @param orderType |
| | | * @param type |
| | | * @param travelFee |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/order/confirmFees_") |
| | | @ApiOperation(value = "司机确认费用(车载端)", tags = {"司机端-车载端"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "订单类型(2=出租车)", name = "orderType", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "支付方式(1=OK平台收款)", name = "type", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "行程费用", name = "travelFee", required = false, dataType = "double"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil confirmFees_(Integer orderId, Integer orderType, Integer type, Double travelFee, Double lon, Double lat){ |
| | | try{ |
| | | return orderService.confirmFees_(orderId, orderType, type, travelFee, lon, lat); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | System.err.println(lon + "," + lat); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取待支付页详情 |
| | | * @param orderId |
| | | * @param orderType |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/order/queryToBePaidPage") |
| | | @ApiOperation(value = "获取待支付页详情", tags = {"司机端-服务中"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "订单类型(1=专车,2=出租车)", name = "orderType", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<OrderInfoWarpper> queryToBePaidPage(Integer orderId, Integer orderType){ |
| | | try { |
| | | Map<String, Object> map = orderService.queryToBePaidPage(orderId, orderType); |
| | | return ResultUtil.success(OrderInfoWarpper.getOrderInfoWarpper(map)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 后台改派成功后的推送接口 |
| | | * @param orderId |
| | | * @param orderType |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/order/pushOrderState") |
| | | public String pushOrderState(Integer orderId, Integer orderType){ |
| | | try { |
| | | Map<String, Object> map = orderService.queryOrderInfo(orderId, orderType); |
| | | //更新小号绑定关系 |
| | | orderService.RebindMidAxbBindSend(orderId, orderType); |
| | | |
| | | pushUtil.pushOrderReassign(Integer.valueOf(String.valueOf(map.get("driverId"))), 2,Integer.valueOf(String.valueOf(map.get("orderId"))), orderType); |
| | | |
| | | pushUtil.pushOrderReassign(Integer.valueOf(String.valueOf(map.get("userId"))), 1,Integer.valueOf(String.valueOf(map.get("orderId"))), orderType); |
| | | pushUtil.pushOrderState(1, Integer.valueOf(String.valueOf(map.get("userId"))), Integer.valueOf(String.valueOf(map.get("orderId"))), orderType, |
| | | Integer.valueOf(String.valueOf(map.get("orderState")))); |
| | | return JSON.toJSONString(ResultUtil.success()); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return JSON.toJSONString(ResultUtil.runErr()); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/base/order/reassign_") |
| | | @ApiOperation(value = "提交改派申请", tags = {"司机端-服务中"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城,6=包车)", name = "orderType", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "改派支付方式(1=微信,2=支付宝,3=余额)", name = "payType", required = false, dataType = "int"), |
| | | @ApiImplicitParam(value = "改派原因", name = "reason", required = true, dataType = "string"), |
| | | @ApiImplicitParam(value = "备注", name = "remark", required = false, dataType = "string"), |
| | | }) |
| | | public String reassign_(Reassign reassign, Integer uid){ |
| | | try { |
| | | ResultUtil resultUtil = reassignService.saveData(reassign, uid, 3); |
| | | return JSON.toJSONString(resultUtil); |
| | | }catch (SystemException s){ |
| | | return JSON.toJSONString(ResultUtil.error(s.getMsg())); |
| | | } catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return JSON.toJSONString(ResultUtil.runErr()); |
| | | } |
| | | } |
| | | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/base/order/test") |
| | | public String test(String phoneA, String phoneB){ |
| | | try { |
| | | Map<String, String> map = chinaMobileUtil.midAxbBindSend(phoneA, phoneB, 28); |
| | | System.err.println(JSON.toJSONString(map)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ""; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/base/order/test_") |
| | | public String test(String bindId){ |
| | | try { |
| | | Map<String, String> map = chinaMobileUtil.midAxbUnBindSend(bindId); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ""; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 司机确认费用(车载端)不管之前数据状态直接修改到待支付(流程断网情况的处理流程) |
| | | * @param orderId |
| | | * @param orderType |
| | | * @param type |
| | | * @param travelFee |
| | | * @param lon |
| | | * @param lat |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/order/confirmFees$") |
| | | @ApiOperation(value = "司机确认费用(车载端)不管之前数据状态直接修改到已完成(流程断网情况的处理流程)", tags = {"司机端-车载端"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "订单类型(2=出租车)", name = "orderType", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "支付方式(1=OK平台收款)", name = "type", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "行程费用", name = "travelFee", required = false, dataType = "double"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil confirmFees$(Integer orderId, Integer orderType, Integer type, Double travelFee, Double lon, Double lat){ |
| | | try{ |
| | | return orderService.confirmFees$(orderId, orderType, type, travelFee, lon, lat); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/api/order/queryVoiceBroadcast") |
| | | @ApiOperation(value = "接单后获取语音播报内容", tags = {"司机端-首页"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城)", name = "orderType", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "当前位置经度", name = "lon", required = true, dataType = "string"), |
| | | @ApiImplicitParam(value = "当前位置纬度", name = "lat", required = true, dataType = "string"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil queryVoiceBroadcast(Integer orderId, Integer orderType, String lon, String lat){ |
| | | try { |
| | | String s = orderService.queryVoiceBroadcast(orderId, orderType, lon, lat); |
| | | return ResultUtil.success(s); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 手动确认订单完成 |
| | | * @param orderId |
| | | * @param orderType |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/order/completeOrder") |
| | | @ApiOperation(value = "手动确认订单完成", tags = {"司机端-服务中"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "订单类型(1=专车,2=出租车)", name = "orderType", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil completeOrder(Integer orderId, Integer orderType){ |
| | | try { |
| | | return orderService.completeOrder(orderId, orderType); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/api/order/queryMoneyInfo") |
| | | @ApiOperation(value = "获取订单费用明细", tags = {"司机端-服务中"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "订单类型(1=专车)", name = "orderType", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<MoneyInfoWarpper> queryMoneyInfo(Integer orderId, Integer orderType){ |
| | | try { |
| | | Map<String, Object> map = orderService.queryMoneyInfo(orderId, orderType); |
| | | return ResultUtil.success(MoneyInfoWarpper.getMoneyInfoWarpper(map)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/api/order/fillInPickUpCode") |
| | | @ApiOperation(value = "验证小件物流取件码", tags = {"司机端-服务中"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "取件码", name = "pickUpCode", required = true, dataType = "string"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil fillInPickUpCode(Integer orderId, String pickUpCode){ |
| | | try { |
| | | return orderLogisticsService.fillInPickUpCode(orderId, pickUpCode); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/api/order/makeUpTheDifference") |
| | | @ApiOperation(value = "设置小件物流差价", tags = {"司机端-服务中"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "差价金额", name = "difference", required = true, dataType = "double"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil makeUpTheDifference(Integer orderId, Double difference){ |
| | | try { |
| | | return orderLogisticsService.makeUpTheDifference(orderId, difference); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/api/order/sendVerificationCode") |
| | | @ApiOperation(value = "小件物流发送收货码", tags = {"司机端-服务中"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil sendVerificationCode(Integer orderId){ |
| | | try { |
| | | orderLogisticsService.sendVerificationCode(orderId); |
| | | return ResultUtil.success(); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.api; |
| | | |
| | | |
| | | import com.stylefeng.guns.modular.system.service.IDriverService; |
| | | import com.stylefeng.guns.modular.system.service.IOrderEvaluateService; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import com.stylefeng.guns.modular.system.warpper.OrderEvaluateWarpper; |
| | | 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.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.Map; |
| | | |
| | | @RestController |
| | | @RequestMapping("/api/orderEvaluate") |
| | | public class OrderEvaluateController { |
| | | |
| | | @Autowired |
| | | private IDriverService driverService; |
| | | |
| | | @Autowired |
| | | private IOrderEvaluateService orderEvaluateService; |
| | | |
| | | |
| | | /** |
| | | * 获取评价列表 |
| | | * @param pageNum |
| | | * @param size |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/queryEvaluate") |
| | | @ApiOperation(value = "获取评价列表", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<OrderEvaluateWarpper> queryEvaluate(Integer pageNum, Integer size, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | Map<String, Object> map = orderEvaluateService.queryEvaluate(pageNum, size, uid); |
| | | return ResultUtil.success(OrderEvaluateWarpper.getOrderEvaluateWarpper(map)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.api; |
| | | |
| | | import com.stylefeng.guns.modular.system.model.Phone; |
| | | import com.stylefeng.guns.modular.system.service.IPhoneService; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import io.swagger.annotations.Api; |
| | | 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.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 系统电话控制器 |
| | | */ |
| | | @Api |
| | | @RestController |
| | | @RequestMapping("/base/phone") |
| | | public class PhoneController { |
| | | |
| | | @Autowired |
| | | private IPhoneService phoneService; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取个人中心的客服电话 |
| | | * @param code |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/queryCustomerPhone") |
| | | @ApiOperation(value = "获取个人中心的客服电话", tags = {"司机端-首页"}, notes = "platform(平台电话),company(本地电话),scheduling(调度电话)") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "当前定位行政区域编号", name = "code", required = true, dataType = "string"), |
| | | }) |
| | | public ResultUtil queryCustomerPhone(String code){ |
| | | try { |
| | | Map<String, Object> map = phoneService.queryCustomerPhone(code); |
| | | return ResultUtil.success(map); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.api; |
| | | |
| | | import com.stylefeng.guns.modular.system.service.IDriverService; |
| | | import com.stylefeng.guns.modular.system.service.ISystemNoticeService; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import com.stylefeng.guns.modular.system.warpper.BaseWarpper; |
| | | import com.stylefeng.guns.modular.system.warpper.SystemNoticeWarpper; |
| | | import io.swagger.annotations.Api; |
| | | 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.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 个人系统消息和公告控制器 |
| | | */ |
| | | @Api |
| | | @RestController |
| | | @RequestMapping("/api/systemNotice") |
| | | public class SystemNoticeController { |
| | | |
| | | @Autowired |
| | | private ISystemNoticeService systemNoticeService; |
| | | |
| | | @Autowired |
| | | private IDriverService driverService; |
| | | |
| | | |
| | | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/queryNoReadNoticeNum") |
| | | @ApiOperation(value = "获取未读的消息数量", tags = {"司机端-首页"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<BaseWarpper> queryNoReadNoticeNum(HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | int num = systemNoticeService.queryNoReadNoticeNum(uid); |
| | | BaseWarpper baseWarpper = new BaseWarpper(); |
| | | baseWarpper.setNumber(num); |
| | | return ResultUtil.success(baseWarpper); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取系统消息和公告 |
| | | * @param type |
| | | * @param pageNum |
| | | * @param size |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/queryNotices") |
| | | @ApiOperation(value = "获取系统消息和公告", tags = {"司机端-消息"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "数据类型(1=公告,2=系统消息)", name = "type", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<List<SystemNoticeWarpper>> queryNotices(Integer type, Integer pageNum, Integer size, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | List<Map<String, Object>> list = systemNoticeService.queryList(type, pageNum, size, uid); |
| | | return ResultUtil.success(SystemNoticeWarpper.getSystemNoticeWarpper(list)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 阅读操作 |
| | | * @param id |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/readSystemNotice") |
| | | @ApiOperation(value = "阅读系统消息和公告操作", tags = {"司机端-消息"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "消息id", name = "id", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil readSystemNotice(Integer id, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | systemNoticeService.readSystemNotice(id, uid); |
| | | return ResultUtil.success(); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 删除单个消息或公告 |
| | | * @param id |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/delSystemNotice") |
| | | @ApiOperation(value = "删除单个消息或公告", tags = {"司机端-消息"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "消息id", name = "id", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil delSystemNotice(Integer id, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | systemNoticeService.delSystemNotice(id, uid); |
| | | return ResultUtil.success(); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 清除所有消息或公告 |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/clearSystemNotice") |
| | | @ApiOperation(value = "清除所有消息或公告", tags = {"司机端-消息"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil clearSystemNotice(HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | systemNoticeService.clearSystemNotice(uid); |
| | | return ResultUtil.success(); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.api; |
| | | |
| | | |
| | | import com.stylefeng.guns.modular.system.service.IVersionManagementService; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import com.stylefeng.guns.modular.system.warpper.VersionWarpper; |
| | | import io.swagger.annotations.Api; |
| | | 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.web.bind.annotation.*; |
| | | |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 版本管理 |
| | | */ |
| | | @Api |
| | | @CrossOrigin |
| | | @RestController |
| | | @RequestMapping("") |
| | | public class VersionManagementController { |
| | | |
| | | @Autowired |
| | | private IVersionManagementService versionManagementService; |
| | | |
| | | |
| | | /** |
| | | * 获取最新版本数据 |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/version/queryNewData") |
| | | @ApiOperation(value = "获取最新版本数据", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<VersionWarpper> queryNewData(){ |
| | | try { |
| | | Map<String, Object> map = versionManagementService.queryNewVersion(2); |
| | | return ResultUtil.success(VersionWarpper.getVersionWarpper(map)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取最新版本数据 |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/version/queryNewData1") |
| | | @ApiOperation(value = "获取最新版本数据", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | }) |
| | | public ResultUtil<VersionWarpper> queryNewData1(){ |
| | | try { |
| | | Map<String, Object> map = versionManagementService.queryNewVersion(2); |
| | | return ResultUtil.success(VersionWarpper.getVersionWarpper(map)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取最新版本数据(车载端) |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/version/queryNewData_") |
| | | @ApiOperation(value = "获取最新版本数据", tags = {"司机端-车载端"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<VersionWarpper> queryNewData_(){ |
| | | try { |
| | | Map<String, Object> map = versionManagementService.queryNewVersion(3); |
| | | return ResultUtil.success(VersionWarpper.getVersionWarpper(map)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.api; |
| | | |
| | | |
| | | import com.stylefeng.guns.modular.system.model.Withdrawal; |
| | | import com.stylefeng.guns.modular.system.service.IDriverService; |
| | | import com.stylefeng.guns.modular.system.service.IWithdrawalService; |
| | | //import com.stylefeng.guns.modular.system.util.ICBCPayUtil; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import com.stylefeng.guns.modular.system.warpper.WithdrawalWarpper; |
| | | import io.swagger.annotations.Api; |
| | | 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.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 提现控制器 |
| | | */ |
| | | @Api |
| | | @RestController |
| | | @RequestMapping("") |
| | | public class WithdrawalController { |
| | | |
| | | @Autowired |
| | | private IWithdrawalService withdrawalService; |
| | | |
| | | @Autowired |
| | | private IDriverService driverService; |
| | | |
| | | |
| | | /** |
| | | * 账户余额提现操作 |
| | | * @param money |
| | | * @param code |
| | | * @param name |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/withdrawal/withdrawal") |
| | | @ApiOperation(value = "账户余额提现", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "提现金额", name = "money", required = true, dataType = "double"), |
| | | @ApiImplicitParam(value = "银行卡号", name = "code", required = true, dataType = "string"), |
| | | @ApiImplicitParam(value = "银行卡持有人姓名", name = "name", required = true, dataType = "string"), |
| | | @ApiImplicitParam(value = "提现类型(1=活动收入提现,2=业务收入提现)", name = "type", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil withdrawal(Double money, String code, String name, Integer type, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return withdrawalService.withdrawal(money, code, name, uid, type); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 提现后台审核后的处理接口 |
| | | * @param id |
| | | * @param state |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/withdrawal/withdrawalAudit") |
| | | public ResultUtil withdrawalAudit(Integer id, Integer state){ |
| | | try { |
| | | return withdrawalService.withdrawalAudit(id, state); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取历史提现数据 |
| | | * @param pageNum |
| | | * @param size |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/withdrawal/queryWithdrawal") |
| | | @ApiOperation(value = "获取历史提现数据", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "提现类型(1=活动收入提现,2=业务收入提现)", name = "type", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<List<WithdrawalWarpper>> queryWithdrawal(Integer pageNum, Integer size, Integer type, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | List<Map<String, Object>> list = withdrawalService.queryWithdrawal(uid, type, pageNum, size); |
| | | return ResultUtil.success(WithdrawalWarpper.getWithdrawalWarpper(list)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.code.controller; |
| | | |
| | | import com.stylefeng.guns.core.base.controller.BaseController; |
| | | import com.stylefeng.guns.core.config.properties.DruidProperties; |
| | | import com.stylefeng.guns.generator.action.config.WebGeneratorConfig; |
| | | import com.stylefeng.guns.generator.action.model.GenQo; |
| | | import com.stylefeng.guns.modular.code.factory.DefaultTemplateFactory; |
| | | import com.stylefeng.guns.modular.code.service.TableService; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RequestMethod; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | |
| | | /** |
| | | * 代码生成控制器 |
| | | * |
| | | * @author fengshuonan |
| | | * @Date 2017年11月30日16:39:19 |
| | | */ |
| | | @Controller |
| | | @RequestMapping("/code") |
| | | public class CodeController extends BaseController { |
| | | |
| | | private static String PREFIX = "/code"; |
| | | |
| | | @Autowired |
| | | private TableService tableService; |
| | | |
| | | @Autowired |
| | | private DruidProperties druidProperties; |
| | | |
| | | /** |
| | | * 跳转到代码生成主页 |
| | | */ |
| | | @RequestMapping("") |
| | | public String blackboard(Model model) { |
| | | model.addAttribute("tables", tableService.getAllTables()); |
| | | model.addAttribute("params", DefaultTemplateFactory.getDefaultParams()); |
| | | model.addAttribute("templates", DefaultTemplateFactory.getDefaultTemplates()); |
| | | return PREFIX + "/code.html"; |
| | | } |
| | | |
| | | /** |
| | | * 生成代码 |
| | | */ |
| | | @ApiOperation("生成代码") |
| | | @RequestMapping(value = "/generate", method = RequestMethod.POST) |
| | | @ResponseBody |
| | | public Object generate(GenQo genQo) { |
| | | genQo.setUrl(druidProperties.getUrl()); |
| | | genQo.setUserName(druidProperties.getUsername()); |
| | | genQo.setPassword(druidProperties.getPassword()); |
| | | WebGeneratorConfig webGeneratorConfig = new WebGeneratorConfig(genQo); |
| | | webGeneratorConfig.doMpGeneration(); |
| | | webGeneratorConfig.doGunsGeneration(); |
| | | return SUCCESS_TIP; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.code.factory; |
| | | |
| | | |
| | | import com.stylefeng.guns.GunsApplication; |
| | | import com.stylefeng.guns.core.CoreFlag; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.generator.action.model.GenQo; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 模板种类构建器 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-12-04-下午2:59 |
| | | */ |
| | | public class DefaultTemplateFactory { |
| | | |
| | | /** |
| | | * 获取所有的模板种类 |
| | | */ |
| | | public static List<Map<String,Object>> getDefaultTemplates(){ |
| | | ArrayList<Map<String, Object>> templates = new ArrayList<>(); |
| | | templates.add(create("controllerSwitch","controller-控制器模板")); |
| | | templates.add(create("entitySwitch","entity-实体模板")); |
| | | templates.add(create("serviceSwitch","service-service模板")); |
| | | templates.add(create("daoSwitch","dao-dao模板")); |
| | | templates.add(create("indexPageSwitch","indexPage-首页模板")); |
| | | templates.add(create("addPageSwitch","addPage-添加页面模板")); |
| | | templates.add(create("editPageSwitch","editPage-编辑页面模板")); |
| | | templates.add(create("jsSwitch","indexJs-主页js模板")); |
| | | templates.add(create("infoJsSwitch","infoJs-详情页js模板")); |
| | | templates.add(create("sqlSwitch","sql-sql语句模板")); |
| | | return templates; |
| | | } |
| | | |
| | | /** |
| | | * 获取默认的参数 |
| | | */ |
| | | public static GenQo getDefaultParams(){ |
| | | GenQo genQo = new GenQo(); |
| | | genQo.setProjectPath(ToolUtil.getWebRootPath(null)); |
| | | genQo.setAuthor("stylefeng"); |
| | | genQo.setProjectPackage(GunsApplication.class.getPackage().getName()); |
| | | genQo.setCorePackage(CoreFlag.class.getPackage().getName()); |
| | | genQo.setIgnoreTabelPrefix("sys_"); |
| | | genQo.setModuleName("system"); |
| | | genQo.setParentMenuName("系统管理"); |
| | | return genQo; |
| | | } |
| | | |
| | | private static Map<String,Object> create(String key,String desc){ |
| | | HashMap<String, Object> template = new HashMap<>(); |
| | | template.put("key",key); |
| | | template.put("desc",desc); |
| | | return template; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.code.service; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.SqlRunner; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 获取数据库所有的表 |
| | | * |
| | | * @author fengshuonan |
| | | * @date 2017-12-04-下午1:37 |
| | | */ |
| | | @Service |
| | | public class TableService { |
| | | |
| | | @Value("${spring.datasource.db-name}") |
| | | private String dbName; |
| | | |
| | | /** |
| | | * 获取当前数据库所有的表信息 |
| | | */ |
| | | public List<Map<String, Object>> getAllTables() { |
| | | String sql = "select TABLE_NAME as tableName,TABLE_COMMENT as tableComment from information_schema.`TABLES` where TABLE_SCHEMA = '" + dbName + "'"; |
| | | return SqlRunner.db().selectList(sql); |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.controller; |
| | | |
| | | |
| | | import com.stylefeng.guns.modular.crossCity.server.ILineService; |
| | | import com.stylefeng.guns.modular.crossCity.server.ILineShiftDriverService; |
| | | import com.stylefeng.guns.modular.crossCity.server.ILineSiteService; |
| | | import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService; |
| | | import com.stylefeng.guns.modular.crossCity.warpper.LineShiftWarpper; |
| | | import com.stylefeng.guns.modular.crossCity.warpper.LineWarpper; |
| | | import com.stylefeng.guns.modular.system.service.IDriverService; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import com.stylefeng.guns.modular.system.warpper.BaseWarpper; |
| | | import io.swagger.annotations.Api; |
| | | 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.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RequestMethod; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 线路控制器 |
| | | */ |
| | | @Api |
| | | @RestController |
| | | @RequestMapping("/api/line") |
| | | public class LineController { |
| | | |
| | | @Autowired |
| | | private ILineService lineService; |
| | | |
| | | @Autowired |
| | | private IDriverService driverService; |
| | | |
| | | @Autowired |
| | | private ILineSiteService lineSiteService; |
| | | |
| | | @Autowired |
| | | private ILineShiftDriverService lineShiftDriverService; |
| | | |
| | | @Autowired |
| | | private IOrderCrossCityService orderCrossCityService; |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取司机对应的线路 |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @RequestMapping(value = "/scanCodeQueryLines", method = RequestMethod.POST) |
| | | @ApiOperation(value = "获取司机对应的线路", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<List<BaseWarpper>> scanCodeQueryLines(HttpServletRequest request){ |
| | | try { |
| | | Integer driverId = driverService.getUserIdFormRedis(request); |
| | | if(null == driverId){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | List<Map<String, Object>> list = lineService.scanCodeQueryLines(driverId); |
| | | return ResultUtil.success(BaseWarpper.getBaseWarppers(list)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 根据选择的起点和终点获取线路 |
| | | * @param startId |
| | | * @param endId |
| | | * @param driverId |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @RequestMapping(value = "/queryLines", method = RequestMethod.POST) |
| | | @ApiOperation(value = "根据选择的起点和终点获取线路", tags = {"司机端-首页"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "起始站点id", name = "startId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "终点站点id", name = "endId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "司机id", name = "driverId", required = false, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<List<LineWarpper>> queryLines(Integer startId, Integer endId, Integer driverId){ |
| | | try { |
| | | List<Map<String, Object>> list = lineService.queryLines(startId, endId, driverId); |
| | | return ResultUtil.success(LineWarpper.getLineWarppers(list)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取线路的班次数据 |
| | | * @param lineId |
| | | * @param time |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @RequestMapping(value = "/queryLineShiftInfo", method = RequestMethod.POST) |
| | | @ApiOperation(value = "获取线路的班次数据", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "线路id", name = "lineId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "日期(2020-10-13)", name = "time", required = true, dataType = "string"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<List<LineShiftWarpper>> queryLineShiftInfo(Integer lineId, String time, HttpServletRequest request){ |
| | | try { |
| | | Integer driverId = driverService.getUserIdFormRedis(request); |
| | | if(null == driverId){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | List<Map<String, Object>> list = lineSiteService.queryLineShiftInfo(lineId, time, driverId); |
| | | return ResultUtil.success(LineShiftWarpper.getLineShiftWarppers(list)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | @ResponseBody |
| | | @RequestMapping(value = "/reservation", method = RequestMethod.POST) |
| | | @ApiOperation(value = "预约/取消预约", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "操作类型(1=预约,2=取消预约)", name = "type", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "预约的班次id", name = "lineShiftId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "日期(2020-10-13)", name = "time", required = true, dataType = "string"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil reservation(Integer type, Integer lineShiftId, String time, HttpServletRequest request){ |
| | | try { |
| | | Integer driverId = driverService.getUserIdFormRedis(request); |
| | | if(null == driverId){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return lineShiftDriverService.reservation(type, lineShiftId, time, driverId); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | @ResponseBody |
| | | @RequestMapping(value = "/queryOrderMoney", method = RequestMethod.POST) |
| | | @ApiOperation(value = "获取跨城的支付金额", tags = {"司机端-首页"}, notes = "distance:距离数(米),price:支付金额") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "起点坐标(103.32123,30.6232)", name = "startLonLat", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "终点坐标(103.32123,30.6232)", name = "endLonLat", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "乘车人数", name = "peopleNumber", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "出行方式(1=拼车,2=包车)", name = "travelMode", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "线路id", name = "lineId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "服务车型id", name = "serverCarModelId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "车辆总座位数", name = "totalSeat", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "座位编号(1,3,4)", name = "seatNumber", required = true, dataType = "int") |
| | | }) |
| | | public ResultUtil queryOrderMoney(String startLonLat, String endLonLat, Integer peopleNumber, Integer travelMode, |
| | | Integer lineId, Integer serverCarModelId, Integer totalSeat, String seatNumber){ |
| | | try { |
| | | return orderCrossCityService.queryOrderMoney(startLonLat, endLonLat, peopleNumber, travelMode, lineId, serverCarModelId, totalSeat, seatNumber); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.controller; |
| | | |
| | | |
| | | import com.stylefeng.guns.modular.crossCity.server.ILineSiteService; |
| | | import com.stylefeng.guns.modular.crossCity.warpper.LineSiteWarpper; |
| | | import com.stylefeng.guns.modular.crossCity.warpper.LocationWarpper; |
| | | import com.stylefeng.guns.modular.crossCity.warpper.SiteWarpper; |
| | | import com.stylefeng.guns.modular.system.service.IDriverService; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import com.stylefeng.guns.modular.system.warpper.BaseWarpper; |
| | | import io.swagger.annotations.Api; |
| | | 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.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RequestMethod; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 线路排班控制器 |
| | | */ |
| | | @Api |
| | | @RestController |
| | | @RequestMapping("") |
| | | public class LineSiteController { |
| | | |
| | | @Autowired |
| | | private ILineSiteService lineSiteService; |
| | | |
| | | @Autowired |
| | | private IDriverService driverService; |
| | | |
| | | |
| | | /** |
| | | * 根据线路id获取线路排班数据 |
| | | * @param lineId |
| | | * @param day |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @RequestMapping(value = "/api/lineSite/queryDriver", method = RequestMethod.POST) |
| | | @ApiOperation(value = "根据线路id获取线路排班数据", tags = {"司机端-首页"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "线路id", name = "lineId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "查询天(2020-09-03)", name = "day", required = true, dataType = "string"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<List<LineSiteWarpper>> queryDriver(Integer lineId, String day, HttpServletRequest request){ |
| | | try { |
| | | Integer driverId = driverService.getUserIdFormRedis(request); |
| | | if(null == driverId){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | List<Map<String, Object>> list = lineSiteService.queryDriver(lineId, day, driverId); |
| | | return ResultUtil.success(LineSiteWarpper.getLineSiteWarppers(list)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 根据司机的排班id获取剩余座位数据 |
| | | * @param id |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @RequestMapping(value = "/api/lineSite/querySeat", method = RequestMethod.POST) |
| | | @ApiOperation(value = "根据司机的排班id获取剩余座位数据", tags = {"司机端-首页"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "司机排班id", name = "id", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<BaseWarpper> querySeat(Integer id){ |
| | | try { |
| | | Map<String, Object> map = lineSiteService.querySeat(id); |
| | | return ResultUtil.success(BaseWarpper.getBaseWarpper(map)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取所有站点 |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @RequestMapping(value = "/api/lineSite/querySite", method = RequestMethod.POST) |
| | | @ApiOperation(value = "获取起点和终点的站点", tags = {"司机端-首页"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "起点站点id", name = "startSiteId", required = false, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<List<SiteWarpper>> querySite(Integer startSiteId){ |
| | | try { |
| | | List<SiteWarpper> list = lineSiteService.querySite(startSiteId); |
| | | return ResultUtil.success(list); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | @ResponseBody |
| | | @RequestMapping(value = "/api/lineSite/queryLocation", method = RequestMethod.POST) |
| | | @ApiOperation(value = "根据站点id获取站点的区域范围数据(设置上车点和下车点)", tags = {"司机端-首页"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "站点id", name = "siteId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<List<LocationWarpper>> queryLocation(Integer siteId){ |
| | | try { |
| | | List<Map<String, Object>> list = lineSiteService.queryLocation(siteId); |
| | | return ResultUtil.success(LocationWarpper.getLocationWarppers(list)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 判断一个点是是否在区域范围内 |
| | | * @param siteId |
| | | * @param code |
| | | * @param lonLat |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @RequestMapping(value = "/api/lineSite/areaMonitoring", method = RequestMethod.POST) |
| | | @ApiOperation(value = "判断一个点是是否在区域范围内", tags = {"司机端-首页"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "站点id", name = "siteId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "行政区域编号(510100)", name = "code", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "经纬度", name = "lonLat", required = true, dataType = "string"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil areaMonitoring(Integer siteId, String code, String lonLat){ |
| | | try { |
| | | boolean b = lineSiteService.areaMonitoring(siteId, code, lonLat); |
| | | return ResultUtil.success(b ? 1 : -1); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.controller; |
| | | |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService; |
| | | import com.stylefeng.guns.modular.crossCity.warpper.OrderCrossCityInfoWrapper; |
| | | import com.stylefeng.guns.modular.crossCity.warpper.OrderCrossCityWarpper; |
| | | import com.stylefeng.guns.modular.crossCity.warpper.OrderWarpper; |
| | | import com.stylefeng.guns.modular.system.model.Reassign; |
| | | import com.stylefeng.guns.modular.system.service.IDriverService; |
| | | import com.stylefeng.guns.modular.system.service.IReassignService; |
| | | //import com.stylefeng.guns.modular.system.util.ICBCPayUtil; |
| | | import com.stylefeng.guns.modular.system.util.PayMoneyUtil; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import com.stylefeng.guns.modular.system.util.SystemException; |
| | | import com.stylefeng.guns.modular.system.warpper.BaseWarpper; |
| | | import io.swagger.annotations.Api; |
| | | 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.web.bind.annotation.*; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.PrintWriter; |
| | | import java.util.Map; |
| | | |
| | | |
| | | @Api |
| | | @RestController |
| | | @RequestMapping("") |
| | | public class OrderCrossCityController { |
| | | |
| | | @Autowired |
| | | private IOrderCrossCityService orderCrossCityService; |
| | | |
| | | @Autowired |
| | | private IDriverService driverService; |
| | | |
| | | @Autowired |
| | | private IReassignService reassignService; |
| | | |
| | | // @Autowired |
| | | // private ICBCPayUtil icbcPayUtil; |
| | | |
| | | @Autowired |
| | | private PayMoneyUtil payMoneyUtil; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取服务中页面订单详情 |
| | | * @param orderId |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/orderCrossCity/queryOrderInfo") |
| | | @ApiOperation(value = "获取跨城订单服务中详情", tags = {"司机端-服务中"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<OrderWarpper> queryOrderInfo(Integer orderId){ |
| | | try { |
| | | Map<String, Object> map = orderCrossCityService.queryOrderInfo(orderId); |
| | | return ResultUtil.success(OrderWarpper.getOrderWarpper(map)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 提交改派申请 |
| | | * @param reassign |
| | | * @param orderIds |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/orderCrossCity/reassignOrderCrossCityReassign") |
| | | @ApiOperation(value = "提交改派申请(跨城)", tags = {"司机端-服务中"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "订单id(多个以逗号分隔)", name = "orderIds", required = true, dataType = "string"), |
| | | @ApiImplicitParam(value = "改派支付方式(1=微信,2=支付宝,3=余额)", name = "payType", required = false, dataType = "int"), |
| | | @ApiImplicitParam(value = "改派原因", name = "reason", required = true, dataType = "string"), |
| | | @ApiImplicitParam(value = "备注", name = "remark", required = false, dataType = "string"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil reassignOrderCrossCityReassign(Reassign reassign, String orderIds, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return reassignService.saveData_(reassign, orderIds, uid, null); |
| | | }catch (SystemException s){ |
| | | return ResultUtil.error(s.getMsg()); |
| | | } catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取已完成订单明细 |
| | | * @param orderId |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/orderCrossCity/queryOrderCrossCityInfo") |
| | | @ApiOperation(value = "获取已完成的订单明细(跨城)", tags = {"司机端-服务中"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "跨城订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<OrderCrossCityInfoWrapper> queryOrderCrossCityInfo(Integer orderId){ |
| | | try { |
| | | Map<String, Object> map = orderCrossCityService.queryOrderCrossCityInfo(orderId); |
| | | return ResultUtil.success(OrderCrossCityInfoWrapper.getOrderInfoWarpper(map)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 修改订单顺序 |
| | | * @param orderId |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/orderCrossCity/setOrderCrossCitySort") |
| | | @ApiOperation(value = "修改订单顺序(跨城)", tags = {"司机端-服务中"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "跨城订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil setOrderCrossCitySort(Integer orderId){ |
| | | try { |
| | | orderCrossCityService.setOrderCrossCitySort(orderId); |
| | | return ResultUtil.success(); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 跨城出行下单操作 |
| | | * @param orderCrossCityWarpper |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @RequestMapping(value = "/api/order/orderCrossCity", method = RequestMethod.POST) |
| | | @ApiOperation(value = "跨城出行下单操作", tags = {"司机端-首页"}, notes = "先进行下单操作,再根据返回数据生成收款二维码") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil<BaseWarpper> orderCrossCity(OrderCrossCityWarpper orderCrossCityWarpper, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | return orderCrossCityService.orderCrossCity(orderCrossCityWarpper, uid); |
| | | }catch (SystemException se){ |
| | | return ResultUtil.error(se.getMessage()); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 扫码支付成功回调处理 |
| | | * @param request |
| | | * @param response |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/order/generatePay") |
| | | public void generatePay(HttpServletRequest request, HttpServletResponse response){ |
| | | try { |
| | | // Map<String, String> map = icbcPayUtil.generatePayCallback(request); |
| | | // if(null != map){ |
| | | // String out_trade_no = map.get("out_trade_no"); |
| | | // String order_id = map.get("order_id"); |
| | | // String s = icbcPayUtil.queryGeneratePayState("", order_id); |
| | | // if(s.equals("1")){ |
| | | // icbcPayUtil.answer(response);//回调应答 |
| | | // } |
| | | // if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id) && s.equals("1")){ |
| | | // String[] split = out_trade_no.split(","); |
| | | // Integer id = Integer.valueOf(split[0]); |
| | | // Integer type = Integer.valueOf(split[1]); |
| | | // switch (type){ |
| | | // case 1: |
| | | // break; |
| | | // case 2: |
| | | // break; |
| | | // case 3: |
| | | // orderCrossCityService.generatePayCallback(id, order_id); |
| | | // break; |
| | | // } |
| | | // } |
| | | // } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 订单完成支付订单操作 |
| | | * @param payType |
| | | * @param orderId |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/api/order/payTaxiOrder") |
| | | @ApiOperation(value = "订单完成支付订单操作", tags = {"司机端-首页"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "支付方式(1=微信,2=支付宝,3=扫码支付)", name = "payType", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "订单类型(3=跨城)", name = "orderType", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "优惠券id", name = "couponId", required = false, dataType = "int"), |
| | | @ApiImplicitParam(value = "支付端(1=用户APP端,2=司机APP端,3=用户小程序端)", name = "type", required = true, dataType = "int"), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") |
| | | }) |
| | | public ResultUtil payTaxiOrder(Integer payType, Integer orderId, Integer orderType, Integer couponId, Integer type, HttpServletRequest request){ |
| | | try { |
| | | Integer uid = driverService.getUserIdFormRedis(request); |
| | | if(null == uid){ |
| | | return ResultUtil.tokenErr(); |
| | | } |
| | | switch (orderType){ |
| | | case 3: |
| | | return orderCrossCityService.payCrossCityOrder(payType, orderId, couponId, type); |
| | | } |
| | | return ResultUtil.success(); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 完成订单微信支付回调 |
| | | * @param request |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/wxPayCrossCity") |
| | | public void wxPayCrossCity(HttpServletRequest request, HttpServletResponse response){ |
| | | try { |
| | | Map<String, String> map = payMoneyUtil.weixinpayCallback(request); |
| | | // System.err.println(JSON.toJSONString(map)); |
| | | if(null != map){ |
| | | String out_trade_no = map.get("out_trade_no"); |
| | | String transaction_id = map.get("transaction_id"); |
| | | String result = map.get("result"); |
| | | if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(transaction_id)){ |
| | | PrintWriter out = response.getWriter(); |
| | | out.write(result); |
| | | out.flush(); |
| | | out.close(); |
| | | |
| | | String[] split = out_trade_no.split("_"); |
| | | Integer id = Integer.valueOf(split[0]); |
| | | Integer type = Integer.valueOf(split[1]); |
| | | switch (type){ |
| | | case 3: |
| | | orderCrossCityService.payOrderCrossCityCallback(id, transaction_id, 1); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/base/aliPayCrossCity") |
| | | public void aliPayCrossCity(HttpServletRequest request, HttpServletResponse response){ |
| | | try { |
| | | Map<String, String> map = payMoneyUtil.alipayCallback(request); |
| | | if(null != map){ |
| | | String out_trade_no = map.get("out_trade_no"); |
| | | String trade_no = map.get("trade_no"); |
| | | if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(trade_no)){ |
| | | String[] split = out_trade_no.split("_"); |
| | | Integer id = Integer.valueOf(split[0]); |
| | | Integer type = Integer.valueOf(split[1]); |
| | | switch (type){ |
| | | case 3: |
| | | orderCrossCityService.payOrderCrossCityCallback(id, trade_no, 2); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.dao; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import com.stylefeng.guns.modular.crossCity.model.Line; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | public interface LineMapper extends BaseMapper<Line> { |
| | | |
| | | |
| | | /** |
| | | * 根据站点id获取匹配的线路数据 |
| | | * @param siteId |
| | | * @param type |
| | | * @return |
| | | */ |
| | | List<Map<String, Object>> queryLines(@Param("siteId") Integer siteId, @Param("type") Integer type); |
| | | |
| | | |
| | | /** |
| | | * 根据司机id获取线路 |
| | | * @param driverId |
| | | * @return |
| | | */ |
| | | List<Map<String, Object>> scanCodeQueryLines(@Param("driverId") Integer driverId); |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.dao; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import com.stylefeng.guns.modular.crossCity.model.LinePrice; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.Map; |
| | | |
| | | public interface LinePriceMapper extends BaseMapper<LinePrice> { |
| | | |
| | | |
| | | /** |
| | | * 获取价格计算规则 |
| | | * @param lineId |
| | | * @param serverCarModelId |
| | | * @return |
| | | */ |
| | | Map<String, Object> query(@Param("lineId") Integer lineId, @Param("serverCarModelId") Integer serverCarModelId); |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.dao; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import com.stylefeng.guns.modular.crossCity.model.LineShiftDriver; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | public interface LineShiftDriverMapper extends BaseMapper<LineShiftDriver> { |
| | | |
| | | |
| | | /** |
| | | * 获取司机的预约数据 |
| | | * @param driverId |
| | | * @param time |
| | | * @return |
| | | */ |
| | | List<LineShiftDriver> queryByDriver(@Param("lineShiftId") Integer lineShiftId, @Param("driverId") Integer driverId, |
| | | @Param("time") Date time); |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.dao; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import com.stylefeng.guns.modular.crossCity.model.LineShift; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface LineShiftMapper extends BaseMapper<LineShift> { |
| | | |
| | | |
| | | List<LineShift> queryByLineId(@Param("lineId") Integer lineId); |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.dao; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import com.stylefeng.guns.modular.crossCity.model.LineSite; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | public interface LineSiteMapper extends BaseMapper<LineSite> { |
| | | |
| | | |
| | | /** |
| | | * 获取线路排班数据 |
| | | * @param lineId |
| | | * @param day |
| | | * @return |
| | | */ |
| | | List<Map<String, Object>> queryDriver(@Param("lineId") Integer lineId, @Param("day") Date day, |
| | | @Param("driverId") Integer driverId); |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.dao; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import com.stylefeng.guns.modular.crossCity.model.Location; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | public interface LocationMapper extends BaseMapper<Location> { |
| | | |
| | | /** |
| | | * 根据站点id获取区域数据 |
| | | * @param siteId |
| | | * @return |
| | | */ |
| | | List<Map<String, Object>> queryLocation(@Param("siteId") Integer siteId); |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.dao; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | public interface OrderCrossCityMapper extends BaseMapper<OrderCrossCity> { |
| | | |
| | | |
| | | /** |
| | | * 获取司机端抢单页的订单信息 |
| | | * @param orderId |
| | | * @return |
| | | */ |
| | | Map<String, Object> queryPushOrder(@Param("orderId") Integer orderId); |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取司机端首页订单列表 |
| | | * @param state 1=服务中,2=待服务(30分钟定义预约) |
| | | * @param driverId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<Map<String, Object>> queryOrderList(@Param("state") Integer state, @Param("driverId") Integer driverId); |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取司机端我的订单列表 |
| | | * @param state 1=全部,2=待支付,3=已取消 |
| | | * @param driverId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<Map<String, Object>> queryMyAllOrder(@Param("state") Integer state, @Param("driverId") Integer driverId); |
| | | |
| | | |
| | | /** |
| | | * 获取订单详情页(服务中的页面) |
| | | * @param orderNum |
| | | * @return |
| | | */ |
| | | List<Map<String, Object>> queryOrderInfo(@Param("orderNum") String orderNum); |
| | | |
| | | |
| | | /** |
| | | * 获取订单明细 |
| | | * @param orderId |
| | | * @return |
| | | */ |
| | | Map<String, Object> queryOrderCrossCityInfo(@Param("orderId") Integer orderId); |
| | | |
| | | |
| | | /** |
| | | * 获取司机的出行时间在30分钟内的数据 |
| | | * @param driverId |
| | | * @param state |
| | | * @return |
| | | */ |
| | | List<OrderCrossCity> queryWithin30Minutes(@Param("driverId") Integer driverId, @Param("state") Integer...state); |
| | | |
| | | |
| | | List<OrderCrossCity> queryOrders(@Param("driverId") Integer driverId, @Param("lineShiftDriverId") Integer lineShiftDriverId, |
| | | @Param("state") List<Integer> state); |
| | | /** |
| | | * 根据司机id查询数据 |
| | | * @param driverId |
| | | * @param state |
| | | * @return |
| | | */ |
| | | List<OrderCrossCity> queryByDriverId(@Param("driverId") Integer driverId, @Param("state") Integer...state); |
| | | |
| | | |
| | | |
| | | List<OrderCrossCity> query(@Param("start") Date start, @Param("end") Date end); |
| | | |
| | | |
| | | /** |
| | | * 根据用户id获取数据 |
| | | * @param uid |
| | | * @param state |
| | | * @return |
| | | */ |
| | | List<OrderCrossCity> queryByState(@Param("uid") Integer uid, @Param("state") Integer...state); |
| | | |
| | | |
| | | List<OrderCrossCity> queryListOrder(@Param("driverId") Integer driverId, @Param("lineShiftId") Integer lineShiftId, |
| | | @Param("state") List<Integer> state, @Param("day") String day); |
| | | |
| | | |
| | | /** |
| | | * 获取所有快到期的预约单(出行时间在30分钟内) |
| | | * @return |
| | | */ |
| | | List<OrderCrossCity> queryMaturity(); |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.dao; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import com.stylefeng.guns.modular.crossCity.model.Site; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | public interface SiteMapper extends BaseMapper<Site> { |
| | | |
| | | |
| | | /** |
| | | * 根据起点站点获取线路相关的终点站点 |
| | | * @param startSiteId |
| | | * @return |
| | | */ |
| | | List<Map<String, Object>> querySite(@Param("startSiteId") Integer startSiteId); |
| | | } |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.stylefeng.guns.modular.crossCity.dao.LineMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.crossCity.model.Line"> |
| | | <id column="id" property="id"/> |
| | | <result column="name" property="name"/> |
| | | <result column="shiftInterval" property="shiftInterval"/> |
| | | <result column="rakeRate" property="rakeRate"/> |
| | | <result column="state" property="state"/> |
| | | <result column="insertTime" property="insertTime"/> |
| | | </resultMap> |
| | | |
| | | |
| | | <select id="queryLines" resultType="map"> |
| | | select |
| | | a.id as id, |
| | | a.name as name |
| | | from t_line a |
| | | left join t_line_site b on (a.id = b.lineId) |
| | | where a.state = 1 and b.siteId = #{siteId} and b.type = #{type} |
| | | </select> |
| | | |
| | | |
| | | <select id="scanCodeQueryLines" resultType="map"> |
| | | select |
| | | b.id as id, |
| | | b.`name` as `name` |
| | | from t_driver_line a |
| | | left join t_line b on (a.lineId = b.id) |
| | | where b.state = 1 and a.driverId = #{driverId} |
| | | </select> |
| | | </mapper> |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.stylefeng.guns.modular.crossCity.dao.LinePriceMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.crossCity.model.LinePrice"> |
| | | <id column="id" property="id"/> |
| | | <result column="lineId" property="lineId"/> |
| | | <result column="serverCarModelId" property="serverCarModelId"/> |
| | | <result column="type" property="type"/> |
| | | <result column="content" property="content"/> |
| | | <result column="state" property="state"/> |
| | | <result column="insertTime" property="insertTime"/> |
| | | </resultMap> |
| | | |
| | | |
| | | <select id="query" resultType="map"> |
| | | select |
| | | `type` as `type`, |
| | | content as content |
| | | from t_line_price where state = 1 and lineId = #{lineId} and serverCarModelId = #{serverCarModelId} |
| | | </select> |
| | | </mapper> |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.stylefeng.guns.modular.crossCity.dao.LineShiftDriverMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.crossCity.model.LineShiftDriver"> |
| | | <id column="id" property="id"/> |
| | | <result column="lineShiftId" property="lineShiftId"/> |
| | | <result column="driverId" property="driverId"/> |
| | | <result column="day" property="day"/> |
| | | <result column="laveSeat" property="laveSeat"/> |
| | | <result column="laveSeatNumber" property="laveSeatNumber"/> |
| | | <result column="totalSeat" property="totalSeat"/> |
| | | <result column="inserTime" property="inserTime"/> |
| | | </resultMap> |
| | | |
| | | |
| | | <select id="queryByDriver" resultType="LineShiftDriver"> |
| | | select |
| | | id as id, |
| | | lineShiftId as lineShiftId, |
| | | driverId as driverId, |
| | | `day` as `day`, |
| | | laveSeat as laveSeat, |
| | | laveSeatNumber as laveSeatNumber, |
| | | totalSeat as totalSeat, |
| | | inserTime as inserTime |
| | | from t_line_shift_driver where 1 = 1 |
| | | <if test="null != driverId"> |
| | | and driverId = #{driverId} |
| | | </if> |
| | | <if test="null != lineShiftId"> |
| | | and lineShiftId = #{lineShiftId} |
| | | </if> |
| | | <if test="null != time"> |
| | | and DATE_FORMAT(`day`, '%Y-%m%-%d') = DATE_FORMAT(#{time}, '%Y-%m%-%d') |
| | | </if> |
| | | order by `day` |
| | | </select> |
| | | </mapper> |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.stylefeng.guns.modular.crossCity.dao.LineShiftMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.crossCity.model.LineShift"> |
| | | <id column="id" property="id"/> |
| | | <result column="lineId" property="lineId"/> |
| | | <result column="startTime" property="startTime"/> |
| | | <result column="endTime" property="endTime"/> |
| | | <result column="carNum" property="carNum"/> |
| | | <result column="state" property="state"/> |
| | | <result column="insertTime" property="insertTime"/> |
| | | </resultMap> |
| | | |
| | | |
| | | |
| | | <select id="queryByLineId" resultType="LineShift"> |
| | | select |
| | | id as id, |
| | | lineId as lineId, |
| | | startTime as startTime, |
| | | endTime as endTime, |
| | | carNum as carNum, |
| | | state as state, |
| | | insertTime as insertTime |
| | | from t_line_shift where lineId = #{lineId} and state = 1 order by startTime |
| | | </select> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.stylefeng.guns.modular.crossCity.dao.LineSiteMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.crossCity.model.LineSite"> |
| | | <id column="id" property="id"/> |
| | | <result column="lineId" property="lineId"/> |
| | | <result column="startTime" property="startTime"/> |
| | | <result column="endTime" property="endTime"/> |
| | | <result column="carNum" property="carNum"/> |
| | | <result column="state" property="state"/> |
| | | <result column="insertTime" property="insertTime"/> |
| | | </resultMap> |
| | | |
| | | |
| | | <select id="queryDriver" resultType="map"> |
| | | select |
| | | b.id as id, |
| | | a.id as lineShiftDriverId, |
| | | b.startTime as startTime, |
| | | c.headImgUrl as headImgUrl, |
| | | CONCAT(left(c.`name`, 1), '师傅') as `name`, |
| | | d.carLicensePlate as carLicensePlate, |
| | | CONCAT(e.`name`, f.`name`) as brand, |
| | | d.carColor as carColor, |
| | | CONCAT((a.totalSeat - a.laveSeat), '/', a.totalSeat) as `number`, |
| | | (select sum(fraction)/count(fraction) from t_order_evaluate where driverId = a.driverId) as evaluate, |
| | | h.type as priceType, |
| | | h.content as content, |
| | | a.driverId as driverId, |
| | | c.carId as carId, |
| | | a.totalSeat as totalSeat, |
| | | g.serverCarModelId as serverCarModelId, |
| | | a.laveSeatNumber as laveSeatNumber, |
| | | a.laveSeat as laveSeat |
| | | from t_line_shift_driver a |
| | | left join t_line_shift b on (a.lineShiftId = b.id) |
| | | left join t_driver c on (a.driverId = c.id) |
| | | left join t_car d on (c.carId = d.id) |
| | | left join t_car_brand e on (d.carBrandId = e.id) |
| | | left join t_car_model f on (d.carModelId = f.id) |
| | | left join t_car_service g on (d.id = g.carId and g.`type` = 3) |
| | | left join t_line_price h on (g.serverCarModelId = h.serverCarModelId and b.lineId = h.lineId) |
| | | where 1 = 1 |
| | | <if test="null != lineId"> |
| | | and b.lineId = #{lineId} |
| | | </if> |
| | | <if test="null != day"> |
| | | and a.day = #{day} |
| | | </if> |
| | | <if test="null != driverId"> |
| | | and a.driverId = #{driverId} |
| | | </if> |
| | | order by b.startTime |
| | | </select> |
| | | </mapper> |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.stylefeng.guns.modular.crossCity.dao.LocationMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.crossCity.model.Location"> |
| | | <id column="id" property="id"/> |
| | | <result column="siteId" property="siteId"/> |
| | | <result column="type" property="type"/> |
| | | <result column="province" property="province"/> |
| | | <result column="provinceCode" property="provinceCode"/> |
| | | <result column="city" property="city"/> |
| | | <result column="cityCode" property="cityCode"/> |
| | | <result column="district" property="district"/> |
| | | <result column="districtCode" property="districtCode"/> |
| | | <result column="coordinate" property="coordinate"/> |
| | | <result column="gid" property="gid"/> |
| | | <result column="state" property="state"/> |
| | | <result column="insertTime" property="insertTime"/> |
| | | </resultMap> |
| | | |
| | | |
| | | <select id="queryLocation" resultType="map"> |
| | | select |
| | | `type` as `type`, |
| | | province as province, |
| | | provinceCode as provinceCode, |
| | | city as city, |
| | | cityCode as cityCode, |
| | | district as district, |
| | | districtCode as districtCode, |
| | | coordinate as coordinate, |
| | | gid as gid |
| | | from t_location where state = 1 and siteId = #{siteId} |
| | | </select> |
| | | </mapper> |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.stylefeng.guns.modular.crossCity.dao.OrderCrossCityMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.crossCity.model.OrderCrossCity"> |
| | | <id column="id" property="id"/> |
| | | <result column="userId" property="userId"/> |
| | | <result column="serverCarModelId" property="serverCarModelId"/> |
| | | <result column="driverId" property="driverId"/> |
| | | <result column="lineId" property="lineId"/> |
| | | <result column="lineShiftDriverId" property="lineShiftDriverId"/> |
| | | <result column="carId" property="carId"/> |
| | | <result column="orderNum" property="orderNum"/> |
| | | <result column="placementLon" property="placementLon"/> |
| | | <result column="placementLat" property="placementLat"/> |
| | | <result column="placementAddress" property="placementAddress"/> |
| | | <result column="startLon" property="startLon"/> |
| | | <result column="startLat" property="startLat"/> |
| | | <result column="startAddress" property="startAddress"/> |
| | | <result column="endLon" property="endLon"/> |
| | | <result column="endLat" property="endLat"/> |
| | | <result column="endAddress" property="endAddress"/> |
| | | <result column="boardingLon" property="boardingLon"/> |
| | | <result column="boardingLat" property="boardingLat"/> |
| | | <result column="boardingAddress" property="boardingAddress"/> |
| | | <result column="boardingTime" property="boardingTime"/> |
| | | <result column="getoffLon" property="getoffLon"/> |
| | | <result column="getoffLat" property="getoffLat"/> |
| | | <result column="getoffAddress" property="getoffAddress"/> |
| | | <result column="getoffTime" property="getoffTime"/> |
| | | <result column="mileage" property="mileage"/> |
| | | <result column="payManner" property="payManner"/> |
| | | <result column="payType" property="payType"/> |
| | | <result column="orderMoney" property="orderMoney"/> |
| | | <result column="redPacketMoney" property="redPacketMoney"/> |
| | | <result column="couponMoney" property="couponMoney"/> |
| | | <result column="redPacketId" property="redPacketId"/> |
| | | <result column="couponId" property="couponId"/> |
| | | <result column="discount" property="discount"/> |
| | | <result column="discountMoney" property="discountMoney"/> |
| | | <result column="peopleNumber" property="peopleNumber"/> |
| | | <result column="seatNumber" property="seatNumber" /> |
| | | <result column="activityId" property="activityId"/> |
| | | <result column="companyId" property="companyId"/> |
| | | <result column="payMoney" property="payMoney"/> |
| | | <result column="passengers" property="passengers"/> |
| | | <result column="passengersPhone" property="passengersPhone"/> |
| | | <result column="sort" property="sort"/> |
| | | <result column="state" property="state"/> |
| | | <result column="insertTime" property="insertTime"/> |
| | | <result column="travelTime" property="travelTime"/> |
| | | <result column="snatchOrderTime" property="snatchOrderTime"/> |
| | | <result column="setOutTime" property="setOutTime"/> |
| | | <result column="arriveTime" property="arriveTime"/> |
| | | <result column="startServiceTime" property="startServiceTime"/> |
| | | <result column="endServiceTime" property="endServiceTime"/> |
| | | <result column="travelMode" property="travelMode"/> |
| | | <result column="orderSource" property="orderSource"/> |
| | | <result column="isReassign" property="isReassign"/> |
| | | <result column="reassignNotice" property="reassignNotice"/> |
| | | <result column="invoiceId" property="invoiceId"/> |
| | | <result column="trackId" property="trackId"/> |
| | | <result column="isDelete" property="isDelete"/> |
| | | <result column="oldState" property="oldState"/> |
| | | <result column="telX" property="telX"/> |
| | | <result column="bindId" property="bindId"/> |
| | | <result column="remark" property="remark"/> |
| | | </resultMap> |
| | | |
| | | |
| | | <select id="queryPushOrder" resultType="map"> |
| | | select |
| | | a.id as orderId, |
| | | a.state as orderState, |
| | | ('直通车订单') as orderName, |
| | | CONCAT(DATE_FORMAT(a.travelTime, '%m月%d日'), ' ', c.startTime) as travelTime, |
| | | a.startAddress as startAddress, |
| | | a.endAddress as endAddress, |
| | | a.startLon as startLon, |
| | | a.startLat as startLat, |
| | | a.endLon as endLon, |
| | | a.endLat as endLat, |
| | | a.isReassign as isReassign, |
| | | a.orderSource as orderSource, |
| | | a.companyId as companyId, |
| | | a.peopleNumber as peopleNumber, |
| | | a.remark as remark |
| | | from t_order_cross_city a |
| | | left join t_line_shift_driver b on (a.lineShiftDriverId = b.id) |
| | | left join t_line_shift c on (b.lineShiftId = c.id) |
| | | where a.id = #{orderId} |
| | | </select> |
| | | |
| | | |
| | | |
| | | <select id="queryOrderList" resultType="map"> |
| | | <if test="state == 1"> |
| | | select |
| | | a.id as id, |
| | | (3) as type, |
| | | ('直通车订单') as `name`, |
| | | CONCAT(DATE_FORMAT(a.travelTime, '%Y-%m-%d'), ' ', c.startTime) as time, |
| | | a.startAddress as startAddress, |
| | | a.endAddress as endAddress, |
| | | a.state as state, |
| | | a.driverId as driverId, |
| | | a.peopleNumber as peopleNumber, |
| | | (select nickName from t_user where id = a.userId)as `user`, |
| | | a.remark as remark |
| | | from t_order_cross_city a |
| | | left join t_line_shift_driver b on (a.lineShiftDriverId = b.id) |
| | | left join t_line_shift c on (b.lineShiftId = c.id) |
| | | where 1 = 1 |
| | | <if test="null != driverId"> |
| | | and a.driverId = #{driverId} |
| | | </if> |
| | | and a.state = 2 and (UNIX_TIMESTAMP(a.travelTime) - UNIX_TIMESTAMP(now())) < 1800 |
| | | |
| | | UNION ALL |
| | | |
| | | select |
| | | a.id as id, |
| | | (3) as type, |
| | | ('直通车订单') as `name`, |
| | | CONCAT(DATE_FORMAT(a.travelTime, '%Y-%m-%d'), ' ', c.startTime) as time, |
| | | a.startAddress as startAddress, |
| | | a.endAddress as endAddress, |
| | | a.state as state, |
| | | a.driverId as driverId, |
| | | a.peopleNumber as peopleNumber, |
| | | (select nickName from t_user where id = a.userId)as `user`, |
| | | a.remark as remark |
| | | from t_order_cross_city a |
| | | left join t_line_shift_driver b on (a.lineShiftDriverId = b.id) |
| | | left join t_line_shift c on (b.lineShiftId = c.id) |
| | | where 1 = 1 |
| | | <if test="null != driverId"> |
| | | and a.driverId = #{driverId} |
| | | </if> |
| | | and a.state in (3, 4, 5, 6, 11) |
| | | </if> |
| | | <if test="state == 2"> |
| | | select |
| | | a.id as id, |
| | | (3) as type, |
| | | ('直通车行订单') as `name`, |
| | | CONCAT(DATE_FORMAT(a.travelTime, '%Y-%m-%d'), ' ', c.startTime) as time, |
| | | a.startAddress as startAddress, |
| | | a.endAddress as endAddress, |
| | | a.state as state, |
| | | a.driverId as driverId, |
| | | a.peopleNumber as peopleNumber, |
| | | (select nickName from t_user where id = a.userId)as `user`, |
| | | a.remark as remark |
| | | from t_order_cross_city a |
| | | left join t_line_shift_driver b on (a.lineShiftDriverId = b.id) |
| | | left join t_line_shift c on (b.lineShiftId = c.id) |
| | | where 1 = 1 |
| | | <if test="null != driverId"> |
| | | and a.driverId = #{driverId} |
| | | </if> |
| | | and a.state = 2 and (UNIX_TIMESTAMP(a.travelTime) - UNIX_TIMESTAMP(now())) >= 1800 |
| | | </if> |
| | | </select> |
| | | |
| | | |
| | | |
| | | <select id="queryMyAllOrder" resultType="map"> |
| | | select |
| | | a.id as id, |
| | | (3) as type, |
| | | ('直通车订单') as `name`, |
| | | CONCAT(DATE_FORMAT(a.travelTime, '%Y-%m-%d'), ' ', c.startTime) as time, |
| | | a.startAddress as startAddress, |
| | | a.endAddress as endAddress, |
| | | a.state as state, |
| | | a.orderMoney as orderMoney, |
| | | a.peopleNumber as peopleNumber, |
| | | UNIX_TIMESTAMP(a.travelTime) as travelTime, |
| | | a.remark as remark |
| | | from t_order_cross_city a |
| | | left join t_line_shift_driver b on (a.lineShiftDriverId = b.id) |
| | | left join t_line_shift c on (b.lineShiftId = c.id) |
| | | where a.driverId = #{driverId} |
| | | <if test="state == 1"> |
| | | and a.state != 1 |
| | | </if> |
| | | <if test="state == 2"> |
| | | and a.state = 7 |
| | | </if> |
| | | <if test="state == 3"> |
| | | and a.state = 10 |
| | | </if> |
| | | <if test="state == 4"> |
| | | and a.state in (6, 8, 9) |
| | | </if> |
| | | order by a.insertTime desc |
| | | </select> |
| | | |
| | | |
| | | |
| | | <select id="queryOrderInfo" resultType="map"> |
| | | select |
| | | a.id as orderId, |
| | | a.companyId as companyId, |
| | | a.userId as userId, |
| | | a.driverId as driverId, |
| | | a.state as orderState, |
| | | CONCAT(DATE_FORMAT(a.travelTime, '%m月%d日'), ' ', d.startTime) as travelTime_, |
| | | CONCAT(DATE_FORMAT(a.travelTime, '%Y-%m-%d'), ' ', d.startTime) as travelTime, |
| | | DATE_FORMAT(a.arriveTime, '%Y-%m-%d %H:%i:%s') as arriveTime, |
| | | a.startAddress as startAddress, |
| | | a.endAddress as endAddress, |
| | | a.startLon as startLon, |
| | | a.startLat as startLat, |
| | | a.endLon as endLon, |
| | | a.endLat as endLat, |
| | | a.trackId as trackId, |
| | | b.nickName as nickName, |
| | | a.passengersPhone as phone, |
| | | a.telX as telX, |
| | | a.bindId as bindId, |
| | | a.peopleNumber as peopleNumber, |
| | | a.payMoney as payMoney, |
| | | a.payManner as payManner, |
| | | a.seatNumber as seatNumber |
| | | from t_order_cross_city a |
| | | left join t_user b on (a.userId = b.id) |
| | | left join t_line_shift_driver c on (a.lineShiftDriverId = c.id) |
| | | left join t_line_shift d on (c.lineShiftId = d.id) |
| | | where a.orderNum = #{orderNum} and a.state in (2, 3, 4, 5, 6, 8, 9, 11) order by a.sort |
| | | </select> |
| | | |
| | | |
| | | |
| | | <select id="queryOrderCrossCityInfo" resultType="map"> |
| | | select |
| | | a.id as orderId, |
| | | a.userId as userId, |
| | | a.driverId as driverId, |
| | | a.state as orderState, |
| | | a.travelTime as travelTime, |
| | | CONCAT(DATE_FORMAT(a.travelTime, '%m月%d日'), ' ', d.startTime) as travelTime_, |
| | | CONCAT(DATE_FORMAT(a.arriveTime, '%Y-%m-%d'), ' ', d.startTime) as arriveTime, |
| | | a.startAddress as startAddress, |
| | | a.endAddress as endAddress, |
| | | a.startLon as startLon, |
| | | a.startLat as startLat, |
| | | a.endLon as endLon, |
| | | a.endLat as endLat, |
| | | a.trackId as trackId, |
| | | b.nickName as nickName, |
| | | a.passengersPhone as phone, |
| | | a.telX as telX, |
| | | a.bindId as bindId, |
| | | a.peopleNumber as peopleNumber, |
| | | a.payMoney as payMoney, |
| | | a.payManner as payManner, |
| | | a.seatNumber as seatNumber, |
| | | (select phone from t_phone where companyId = a.companyId and `type` = 1) as emergencyCall |
| | | from t_order_cross_city a |
| | | left join t_user b on (a.userId = b.id) |
| | | left join t_line_shift_driver c on (a.lineShiftDriverId = c.id) |
| | | left join t_line_shift d on (c.lineShiftId = d.id) |
| | | where a.id = #{orderId} |
| | | </select> |
| | | |
| | | |
| | | <select id="queryWithin30Minutes" resultType="OrderCrossCity"> |
| | | select |
| | | id as id, |
| | | userId as userId, |
| | | serverCarModelId as serverCarModelId, |
| | | driverId as driverId, |
| | | lineId as lineId, |
| | | lineShiftDriverId as lineShiftDriverId, |
| | | carId as carId, |
| | | orderNum as orderNum, |
| | | placementLon as placementLon, |
| | | placementLat as placementLat, |
| | | placementAddress as placementAddress, |
| | | startLon as startLon, |
| | | startLat as startLat, |
| | | startAddress as startAddress, |
| | | endLon as endLon, |
| | | endLat as endLat, |
| | | endAddress as endAddress, |
| | | boardingLon as boardingLon, |
| | | boardingLat as boardingLat, |
| | | boardingAddress as boardingAddress, |
| | | boardingTime as boardingTime, |
| | | getoffLon as getoffLon, |
| | | getoffLat as getoffLat, |
| | | getoffAddress as getoffAddress, |
| | | getoffTime as getoffTime, |
| | | mileage as mileage, |
| | | payManner as payManner, |
| | | payType as payType, |
| | | orderMoney as orderMoney, |
| | | redPacketMoney as redPacketMoney, |
| | | couponMoney as couponMoney, |
| | | redPacketId as redPacketId, |
| | | couponId as couponId, |
| | | discount as discount, |
| | | discountMoney as discountMoney, |
| | | peopleNumber as peopleNumber, |
| | | seatNumber as seatNumber, |
| | | activityId as activityId, |
| | | companyId as companyId, |
| | | payMoney as payMoney, |
| | | passengers as passengers, |
| | | passengersPhone as passengersPhone, |
| | | sort as sort, |
| | | state as state, |
| | | insertTime as insertTime, |
| | | travelTime as travelTime, |
| | | snatchOrderTime as snatchOrderTime, |
| | | setOutTime as setOutTime, |
| | | arriveTime as arriveTime, |
| | | startServiceTime as startServiceTime, |
| | | endServiceTime as endServiceTime, |
| | | travelMode as travelMode, |
| | | orderSource as orderSource, |
| | | isReassign as isReassign, |
| | | reassignNotice as reassignNotice, |
| | | invoiceId as invoiceId, |
| | | trackId as trackId, |
| | | isDelete as isDelete, |
| | | oldState as oldState, |
| | | telX as telX, |
| | | bindId as bindId |
| | | from t_order_cross_city where isDelete = 1 and (UNIX_TIMESTAMP(travelTime) - UNIX_TIMESTAMP(now())) < 1800 |
| | | <if test="null != driverId"> |
| | | and driverId = #{driverId} |
| | | </if> |
| | | <if test="null != state"> |
| | | and state in |
| | | <foreach collection="state" item="item" index="index" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | </select> |
| | | |
| | | |
| | | |
| | | <select id="queryByDriverId" resultType="OrderCrossCity"> |
| | | select |
| | | id as id, |
| | | userId as userId, |
| | | serverCarModelId as serverCarModelId, |
| | | driverId as driverId, |
| | | lineId as lineId, |
| | | lineShiftDriverId as lineShiftDriverId, |
| | | carId as carId, |
| | | orderNum as orderNum, |
| | | placementLon as placementLon, |
| | | placementLat as placementLat, |
| | | placementAddress as placementAddress, |
| | | startLon as startLon, |
| | | startLat as startLat, |
| | | startAddress as startAddress, |
| | | endLon as endLon, |
| | | endLat as endLat, |
| | | endAddress as endAddress, |
| | | boardingLon as boardingLon, |
| | | boardingLat as boardingLat, |
| | | boardingAddress as boardingAddress, |
| | | boardingTime as boardingTime, |
| | | getoffLon as getoffLon, |
| | | getoffLat as getoffLat, |
| | | getoffAddress as getoffAddress, |
| | | getoffTime as getoffTime, |
| | | mileage as mileage, |
| | | payManner as payManner, |
| | | payType as payType, |
| | | orderMoney as orderMoney, |
| | | redPacketMoney as redPacketMoney, |
| | | couponMoney as couponMoney, |
| | | redPacketId as redPacketId, |
| | | couponId as couponId, |
| | | discount as discount, |
| | | discountMoney as discountMoney, |
| | | activityId as activityId, |
| | | companyId as companyId, |
| | | payMoney as payMoney, |
| | | passengers as passengers, |
| | | passengersPhone as passengersPhone, |
| | | peopleNumber as peopleNumber, |
| | | seatNumber as seatNumber, |
| | | sort as sort, |
| | | state as state, |
| | | insertTime as insertTime, |
| | | travelTime as travelTime, |
| | | snatchOrderTime as snatchOrderTime, |
| | | setOutTime as setOutTime, |
| | | arriveTime as arriveTime, |
| | | startServiceTime as startServiceTime, |
| | | endServiceTime as endServiceTime, |
| | | travelMode as travelMode, |
| | | orderSource as orderSource, |
| | | isReassign as isReassign, |
| | | reassignNotice as reassignNotice, |
| | | invoiceId as invoiceId, |
| | | trackId as trackId, |
| | | isDelete as isDelete, |
| | | oldState as oldState, |
| | | telX as telX, |
| | | bindId as bindId |
| | | from t_order_cross_city where isDelete = 1 |
| | | <if test="null != driverId"> |
| | | and driverId = #{driverId} |
| | | </if> |
| | | <if test="null != state"> |
| | | and state in |
| | | <foreach collection="state" item="item" index="index" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | </select> |
| | | |
| | | |
| | | <select id="query" resultType="OrderCrossCity"> |
| | | select |
| | | id as id, |
| | | userId as userId, |
| | | serverCarModelId as serverCarModelId, |
| | | driverId as driverId, |
| | | lineId as lineId, |
| | | lineShiftDriverId as lineShiftDriverId, |
| | | carId as carId, |
| | | orderNum as orderNum, |
| | | placementLon as placementLon, |
| | | placementLat as placementLat, |
| | | placementAddress as placementAddress, |
| | | startLon as startLon, |
| | | startLat as startLat, |
| | | startAddress as startAddress, |
| | | endLon as endLon, |
| | | endLat as endLat, |
| | | endAddress as endAddress, |
| | | boardingLon as boardingLon, |
| | | boardingLat as boardingLat, |
| | | boardingAddress as boardingAddress, |
| | | boardingTime as boardingTime, |
| | | getoffLon as getoffLon, |
| | | getoffLat as getoffLat, |
| | | getoffAddress as getoffAddress, |
| | | getoffTime as getoffTime, |
| | | mileage as mileage, |
| | | payManner as payManner, |
| | | payType as payType, |
| | | orderMoney as orderMoney, |
| | | redPacketMoney as redPacketMoney, |
| | | couponMoney as couponMoney, |
| | | redPacketId as redPacketId, |
| | | couponId as couponId, |
| | | discount as discount, |
| | | discountMoney as discountMoney, |
| | | activityId as activityId, |
| | | companyId as companyId, |
| | | payMoney as payMoney, |
| | | passengers as passengers, |
| | | passengersPhone as passengersPhone, |
| | | peopleNumber as peopleNumber, |
| | | seatNumber as seatNumber, |
| | | sort as sort, |
| | | state as state, |
| | | insertTime as insertTime, |
| | | travelTime as travelTime, |
| | | snatchOrderTime as snatchOrderTime, |
| | | setOutTime as setOutTime, |
| | | arriveTime as arriveTime, |
| | | startServiceTime as startServiceTime, |
| | | endServiceTime as endServiceTime, |
| | | travelMode as travelMode, |
| | | orderSource as orderSource, |
| | | isReassign as isReassign, |
| | | reassignNotice as reassignNotice, |
| | | invoiceId as invoiceId, |
| | | trackId as trackId, |
| | | isDelete as isDelete, |
| | | oldState as oldState, |
| | | telX as telX, |
| | | bindId as bindId |
| | | from t_order_cross_city where isDelete = 1 |
| | | <if test="null != start and null != end"> |
| | | and travelTime between #{start} and #{end} |
| | | </if> |
| | | </select> |
| | | |
| | | |
| | | <select id="queryOrders" resultType="OrderCrossCity"> |
| | | select |
| | | id as id, |
| | | userId as userId, |
| | | serverCarModelId as serverCarModelId, |
| | | driverId as driverId, |
| | | lineId as lineId, |
| | | lineShiftDriverId as lineShiftDriverId, |
| | | carId as carId, |
| | | orderNum as orderNum, |
| | | placementLon as placementLon, |
| | | placementLat as placementLat, |
| | | placementAddress as placementAddress, |
| | | startLon as startLon, |
| | | startLat as startLat, |
| | | startAddress as startAddress, |
| | | endLon as endLon, |
| | | endLat as endLat, |
| | | endAddress as endAddress, |
| | | boardingLon as boardingLon, |
| | | boardingLat as boardingLat, |
| | | boardingAddress as boardingAddress, |
| | | boardingTime as boardingTime, |
| | | getoffLon as getoffLon, |
| | | getoffLat as getoffLat, |
| | | getoffAddress as getoffAddress, |
| | | getoffTime as getoffTime, |
| | | mileage as mileage, |
| | | payManner as payManner, |
| | | payType as payType, |
| | | orderMoney as orderMoney, |
| | | redPacketMoney as redPacketMoney, |
| | | couponMoney as couponMoney, |
| | | redPacketId as redPacketId, |
| | | couponId as couponId, |
| | | discount as discount, |
| | | discountMoney as discountMoney, |
| | | activityId as activityId, |
| | | companyId as companyId, |
| | | payMoney as payMoney, |
| | | passengers as passengers, |
| | | passengersPhone as passengersPhone, |
| | | peopleNumber as peopleNumber, |
| | | seatNumber as seatNumber, |
| | | sort as sort, |
| | | state as state, |
| | | insertTime as insertTime, |
| | | travelTime as travelTime, |
| | | snatchOrderTime as snatchOrderTime, |
| | | setOutTime as setOutTime, |
| | | arriveTime as arriveTime, |
| | | startServiceTime as startServiceTime, |
| | | endServiceTime as endServiceTime, |
| | | travelMode as travelMode, |
| | | orderSource as orderSource, |
| | | isReassign as isReassign, |
| | | reassignNotice as reassignNotice, |
| | | invoiceId as invoiceId, |
| | | trackId as trackId, |
| | | isDelete as isDelete, |
| | | oldState as oldState, |
| | | telX as telX, |
| | | bindId as bindId |
| | | from t_order_cross_city where isDelete = 1 |
| | | <if test="null != driverId"> |
| | | and driverId = #{driverId} |
| | | </if> |
| | | <if test="null != lineShiftDriverId"> |
| | | and lineShiftDriverId = #{lineShiftDriverId} |
| | | </if> |
| | | <if test="null != state"> |
| | | and state in |
| | | <foreach collection="state" item="item" index="index" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | </select> |
| | | |
| | | |
| | | <select id="queryByState" resultType="OrderCrossCity"> |
| | | select |
| | | id as id, |
| | | userId as userId, |
| | | serverCarModelId as serverCarModelId, |
| | | driverId as driverId, |
| | | lineId as lineId, |
| | | lineShiftDriverId as lineShiftDriverId, |
| | | carId as carId, |
| | | orderNum as orderNum, |
| | | placementLon as placementLon, |
| | | placementLat as placementLat, |
| | | placementAddress as placementAddress, |
| | | startLon as startLon, |
| | | startLat as startLat, |
| | | startAddress as startAddress, |
| | | endLon as endLon, |
| | | endLat as endLat, |
| | | endAddress as endAddress, |
| | | boardingLon as boardingLon, |
| | | boardingLat as boardingLat, |
| | | boardingAddress as boardingAddress, |
| | | boardingTime as boardingTime, |
| | | getoffLon as getoffLon, |
| | | getoffLat as getoffLat, |
| | | getoffAddress as getoffAddress, |
| | | getoffTime as getoffTime, |
| | | mileage as mileage, |
| | | payManner as payManner, |
| | | payType as payType, |
| | | orderMoney as orderMoney, |
| | | redPacketMoney as redPacketMoney, |
| | | couponMoney as couponMoney, |
| | | redPacketId as redPacketId, |
| | | couponId as couponId, |
| | | discount as discount, |
| | | discountMoney as discountMoney, |
| | | activityId as activityId, |
| | | companyId as companyId, |
| | | payMoney as payMoney, |
| | | passengers as passengers, |
| | | passengersPhone as passengersPhone, |
| | | peopleNumber as peopleNumber, |
| | | seatNumber as seatNumber, |
| | | sort as sort, |
| | | state as state, |
| | | insertTime as insertTime, |
| | | travelTime as travelTime, |
| | | snatchOrderTime as snatchOrderTime, |
| | | setOutTime as setOutTime, |
| | | arriveTime as arriveTime, |
| | | startServiceTime as startServiceTime, |
| | | endServiceTime as endServiceTime, |
| | | travelMode as travelMode, |
| | | orderSource as orderSource, |
| | | isReassign as isReassign, |
| | | reassignNotice as reassignNotice, |
| | | invoiceId as invoiceId, |
| | | trackId as trackId, |
| | | isDelete as isDelete, |
| | | oldState as oldState, |
| | | telX as telX, |
| | | bindId as bindId, |
| | | remark as remark |
| | | from t_order_cross_city where isDelete = 1 |
| | | <if test="null != uid"> |
| | | and userId = #{uid} |
| | | </if> |
| | | <if test="null != state"> |
| | | and state in |
| | | <foreach collection="state" item="item" index="index" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | </select> |
| | | |
| | | |
| | | <select id="queryListOrder" resultType="OrderCrossCity"> |
| | | select |
| | | a.id as id, |
| | | a.userId as userId, |
| | | a.serverCarModelId as serverCarModelId, |
| | | a.driverId as driverId, |
| | | a.lineId as lineId, |
| | | a.lineShiftDriverId as lineShiftDriverId, |
| | | a.carId as carId, |
| | | a.orderNum as orderNum, |
| | | a.placementLon as placementLon, |
| | | a.placementLat as placementLat, |
| | | a.placementAddress as placementAddress, |
| | | a.startLon as startLon, |
| | | a.startLat as startLat, |
| | | a.startAddress as startAddress, |
| | | a.endLon as endLon, |
| | | a.endLat as endLat, |
| | | a.endAddress as endAddress, |
| | | a.boardingLon as boardingLon, |
| | | a.boardingLat as boardingLat, |
| | | a.boardingAddress as boardingAddress, |
| | | a.boardingTime as boardingTime, |
| | | a.getoffLon as getoffLon, |
| | | a.getoffLat as getoffLat, |
| | | a.getoffAddress as getoffAddress, |
| | | a.getoffTime as getoffTime, |
| | | a.mileage as mileage, |
| | | a.payManner as payManner, |
| | | a.payType as payType, |
| | | a.orderMoney as orderMoney, |
| | | a.redPacketMoney as redPacketMoney, |
| | | a.couponMoney as couponMoney, |
| | | a.redPacketId as redPacketId, |
| | | a.couponId as couponId, |
| | | a.discount as discount, |
| | | a.discountMoney as discountMoney, |
| | | a.activityId as activityId, |
| | | a.companyId as companyId, |
| | | a.payMoney as payMoney, |
| | | a.passengers as passengers, |
| | | a.passengersPhone as passengersPhone, |
| | | a.peopleNumber as peopleNumber, |
| | | a.seatNumber as seatNumber, |
| | | a.sort as sort, |
| | | a.state as state, |
| | | a.insertTime as insertTime, |
| | | a.travelTime as travelTime, |
| | | a.snatchOrderTime as snatchOrderTime, |
| | | a.setOutTime as setOutTime, |
| | | a.arriveTime as arriveTime, |
| | | a.startServiceTime as startServiceTime, |
| | | a.endServiceTime as endServiceTime, |
| | | a.travelMode as travelMode, |
| | | a.orderSource as orderSource, |
| | | a.isReassign as isReassign, |
| | | a.reassignNotice as reassignNotice, |
| | | a.invoiceId as invoiceId, |
| | | a.trackId as trackId, |
| | | a.isDelete as isDelete, |
| | | a.oldState as oldState, |
| | | a.telX as telX, |
| | | a.bindId as bindId, |
| | | a.remark as remark |
| | | from t_order_cross_city a |
| | | left join t_line_shift_driver b on (a.lineShiftDriverId = b.id) |
| | | where a.isDelete = 1 |
| | | <if test="null != driverId"> |
| | | and a.driverId = #{driverId} |
| | | </if> |
| | | <if test="null != lineShiftId"> |
| | | and b.lineShiftId = #{lineShiftId} |
| | | </if> |
| | | <if test="null != state"> |
| | | and a.state in |
| | | <foreach collection="state" item="item" index="index" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | <if test="null != day and '' != day"> |
| | | and DATE_FORMAT(a.travelTime, '%Y-%m-%d') = #{day} |
| | | </if> |
| | | </select> |
| | | |
| | | |
| | | |
| | | <select id="queryMaturity" resultType="OrderCrossCity"> |
| | | select |
| | | id as id, |
| | | userId as userId, |
| | | serverCarModelId as serverCarModelId, |
| | | driverId as driverId, |
| | | lineId as lineId, |
| | | lineShiftDriverId as lineShiftDriverId, |
| | | carId as carId, |
| | | orderNum as orderNum, |
| | | placementLon as placementLon, |
| | | placementLat as placementLat, |
| | | placementAddress as placementAddress, |
| | | startLon as startLon, |
| | | startLat as startLat, |
| | | startAddress as startAddress, |
| | | endLon as endLon, |
| | | endLat as endLat, |
| | | endAddress as endAddress, |
| | | boardingLon as boardingLon, |
| | | boardingLat as boardingLat, |
| | | boardingAddress as boardingAddress, |
| | | boardingTime as boardingTime, |
| | | getoffLon as getoffLon, |
| | | getoffLat as getoffLat, |
| | | getoffAddress as getoffAddress, |
| | | getoffTime as getoffTime, |
| | | mileage as mileage, |
| | | payManner as payManner, |
| | | payType as payType, |
| | | orderMoney as orderMoney, |
| | | redPacketMoney as redPacketMoney, |
| | | couponMoney as couponMoney, |
| | | redPacketId as redPacketId, |
| | | couponId as couponId, |
| | | discount as discount, |
| | | discountMoney as discountMoney, |
| | | peopleNumber as peopleNumber, |
| | | seatNumber as seatNumber, |
| | | activityId as activityId, |
| | | companyId as companyId, |
| | | payMoney as payMoney, |
| | | passengers as passengers, |
| | | passengersPhone as passengersPhone, |
| | | sort as sort, |
| | | state as state, |
| | | insertTime as insertTime, |
| | | travelTime as travelTime, |
| | | snatchOrderTime as snatchOrderTime, |
| | | setOutTime as setOutTime, |
| | | arriveTime as arriveTime, |
| | | startServiceTime as startServiceTime, |
| | | endServiceTime as endServiceTime, |
| | | travelMode as travelMode, |
| | | orderSource as orderSource, |
| | | isReassign as isReassign, |
| | | reassignNotice as reassignNotice, |
| | | invoiceId as invoiceId, |
| | | trackId as trackId, |
| | | isDelete as isDelete, |
| | | oldState as oldState, |
| | | telX as telX, |
| | | bindId as bindId |
| | | from t_order_cross_city where state = 2 and (UNIX_TIMESTAMP(travelTime) - UNIX_TIMESTAMP(now())) between 1710 and 1800 |
| | | </select> |
| | | </mapper> |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.stylefeng.guns.modular.crossCity.dao.SiteMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.crossCity.model.Site"> |
| | | <id column="id" property="id"/> |
| | | <result column="name" property="name"/> |
| | | <result column="province" property="province"/> |
| | | <result column="provinceCode" property="provinceCode"/> |
| | | <result column="city" property="city"/> |
| | | <result column="cityCode" property="cityCode"/> |
| | | <result column="district" property="district"/> |
| | | <result column="districtCode" property="districtCode"/> |
| | | <result column="state" property="state"/> |
| | | <result column="insertTime" property="insertTime"/> |
| | | <result column="insertUserId" property="insertUserId"/> |
| | | </resultMap> |
| | | |
| | | |
| | | |
| | | |
| | | <select id="querySite" resultType="map"> |
| | | select * from |
| | | ( |
| | | select id as id, `name` as `name`, provinceCode as cityCode, province as cityName from t_site where province like '%市' and state = 1 |
| | | UNION ALL |
| | | select id as id, `name` as `name`, cityCode as cityCode, city as cityName from t_site where province not like '%市' and state = 1 |
| | | ) as a where 1 = 1 |
| | | <if test="null != startSiteId"> |
| | | and a.id in(select siteId from t_line_site where lineId in(select lineId from t_line_site where siteId = #{startSiteId} and type = 1) and type = 2) |
| | | </if> |
| | | </select> |
| | | </mapper> |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.model; |
| | | |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * 跨城线路 |
| | | */ |
| | | @TableName("t_line") |
| | | public class Line { |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @TableField("id") |
| | | private Integer id; |
| | | /** |
| | | * 线路名称 |
| | | */ |
| | | @TableField("name") |
| | | private String name; |
| | | /** |
| | | * 排班申请间隔(分钟) |
| | | */ |
| | | @TableField("shiftInterval") |
| | | private Integer shiftInterval; |
| | | /** |
| | | * 抽成比例(80) |
| | | */ |
| | | @TableField("rakeRate") |
| | | private Integer rakeRate; |
| | | /** |
| | | * 状态(1=正常,2=冻结,3=删除) |
| | | */ |
| | | @TableField("state") |
| | | private Integer state; |
| | | /** |
| | | * 添加时间 |
| | | */ |
| | | @TableField("insertTime") |
| | | private Date insertTime; |
| | | |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(Integer id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public String getName() { |
| | | return name; |
| | | } |
| | | |
| | | public void setName(String name) { |
| | | this.name = name; |
| | | } |
| | | |
| | | public Integer getShiftInterval() { |
| | | return shiftInterval; |
| | | } |
| | | |
| | | public void setShiftInterval(Integer shiftInterval) { |
| | | this.shiftInterval = shiftInterval; |
| | | } |
| | | |
| | | public Integer getRakeRate() { |
| | | return rakeRate; |
| | | } |
| | | |
| | | public void setRakeRate(Integer rakeRate) { |
| | | this.rakeRate = rakeRate; |
| | | } |
| | | |
| | | public Integer getState() { |
| | | return state; |
| | | } |
| | | |
| | | public void setState(Integer state) { |
| | | this.state = state; |
| | | } |
| | | |
| | | public Date getInsertTime() { |
| | | return insertTime; |
| | | } |
| | | |
| | | public void setInsertTime(Date insertTime) { |
| | | this.insertTime = insertTime; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "Line{" + |
| | | "id=" + id + |
| | | ", name='" + name + '\'' + |
| | | ", shiftInterval=" + shiftInterval + |
| | | ", rakeRate=" + rakeRate + |
| | | ", state=" + state + |
| | | ", insertTime=" + insertTime + |
| | | '}'; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.model; |
| | | |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * 线路价格 |
| | | */ |
| | | @TableName("t_line_price") |
| | | public class LinePrice { |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @TableField("id") |
| | | private Integer id; |
| | | /** |
| | | * 线路id |
| | | */ |
| | | @TableField("lineId") |
| | | private Integer lineId; |
| | | /** |
| | | * 服务车型id |
| | | */ |
| | | @TableField("serverCarModelId") |
| | | private Integer serverCarModelId; |
| | | /** |
| | | * 价格类型(1=固定金额,2=浮动计费) |
| | | */ |
| | | @TableField("type") |
| | | private Integer type; |
| | | /** |
| | | * 价格计算规则 |
| | | */ |
| | | @TableField("content") |
| | | private String content; |
| | | /** |
| | | * 状态(1=正常,2=冻结,3=删除) |
| | | */ |
| | | @TableField("state") |
| | | private Integer state; |
| | | /** |
| | | * 添加时间 |
| | | */ |
| | | @TableField("insertTime") |
| | | private Date insertTime; |
| | | |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(Integer id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public Integer getLineId() { |
| | | return lineId; |
| | | } |
| | | |
| | | public void setLineId(Integer lineId) { |
| | | this.lineId = lineId; |
| | | } |
| | | |
| | | public Integer getServerCarModelId() { |
| | | return serverCarModelId; |
| | | } |
| | | |
| | | public void setServerCarModelId(Integer serverCarModelId) { |
| | | this.serverCarModelId = serverCarModelId; |
| | | } |
| | | |
| | | public Integer getType() { |
| | | return type; |
| | | } |
| | | |
| | | public void setType(Integer type) { |
| | | this.type = type; |
| | | } |
| | | |
| | | public String getContent() { |
| | | return content; |
| | | } |
| | | |
| | | public void setContent(String content) { |
| | | this.content = content; |
| | | } |
| | | |
| | | public Integer getState() { |
| | | return state; |
| | | } |
| | | |
| | | public void setState(Integer state) { |
| | | this.state = state; |
| | | } |
| | | |
| | | public Date getInsertTime() { |
| | | return insertTime; |
| | | } |
| | | |
| | | public void setInsertTime(Date insertTime) { |
| | | this.insertTime = insertTime; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "LinePrice{" + |
| | | "id=" + id + |
| | | ", lineId=" + lineId + |
| | | ", serverCarModelId=" + serverCarModelId + |
| | | ", type=" + type + |
| | | ", content='" + content + '\'' + |
| | | ", state=" + state + |
| | | ", insertTime=" + insertTime + |
| | | '}'; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.model; |
| | | |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | |
| | | import java.util.Date; |
| | | |
| | | @TableName("t_line_shift") |
| | | public class LineShift { |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @TableField("id") |
| | | private Integer id; |
| | | /** |
| | | * 线路id |
| | | */ |
| | | @TableField("lineId") |
| | | private Integer lineId; |
| | | /** |
| | | * 开始时间段 |
| | | */ |
| | | @TableField("startTime") |
| | | private String startTime; |
| | | /** |
| | | * 结束时间段 |
| | | */ |
| | | @TableField("endTime") |
| | | private String endTime; |
| | | /** |
| | | * 车次数 |
| | | */ |
| | | @TableField("carNum") |
| | | private Integer carNum; |
| | | /** |
| | | * 状态(1=正常,2=冻结,3=删除) |
| | | */ |
| | | @TableField("state") |
| | | private Integer state; |
| | | /** |
| | | * 添加时间 |
| | | */ |
| | | @TableField("insertTime") |
| | | private Date insertTime; |
| | | |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(Integer id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public Integer getLineId() { |
| | | return lineId; |
| | | } |
| | | |
| | | public void setLineId(Integer lineId) { |
| | | this.lineId = lineId; |
| | | } |
| | | |
| | | public String getStartTime() { |
| | | return startTime; |
| | | } |
| | | |
| | | public void setStartTime(String startTime) { |
| | | this.startTime = startTime; |
| | | } |
| | | |
| | | public String getEndTime() { |
| | | return endTime; |
| | | } |
| | | |
| | | public void setEndTime(String endTime) { |
| | | this.endTime = endTime; |
| | | } |
| | | |
| | | public Integer getCarNum() { |
| | | return carNum; |
| | | } |
| | | |
| | | public void setCarNum(Integer carNum) { |
| | | this.carNum = carNum; |
| | | } |
| | | |
| | | public Integer getState() { |
| | | return state; |
| | | } |
| | | |
| | | public void setState(Integer state) { |
| | | this.state = state; |
| | | } |
| | | |
| | | public Date getInsertTime() { |
| | | return insertTime; |
| | | } |
| | | |
| | | public void setInsertTime(Date insertTime) { |
| | | this.insertTime = insertTime; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "LineShift{" + |
| | | "id=" + id + |
| | | ", lineId=" + lineId + |
| | | ", startTime='" + startTime + '\'' + |
| | | ", endTime='" + endTime + '\'' + |
| | | ", carNum=" + carNum + |
| | | ", state=" + state + |
| | | ", insertTime=" + insertTime + |
| | | '}'; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.model; |
| | | |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * 司机预约排班记录 |
| | | */ |
| | | @TableName("t_line_shift_driver") |
| | | public class LineShiftDriver { |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @TableField("id") |
| | | private Integer id; |
| | | /** |
| | | * 线路班次id |
| | | */ |
| | | @TableField("lineShiftId") |
| | | private Integer lineShiftId; |
| | | /** |
| | | * 司机id |
| | | */ |
| | | @TableField("driverId") |
| | | private Integer driverId; |
| | | /** |
| | | * 预约日期 |
| | | */ |
| | | @TableField("day") |
| | | private Date day; |
| | | /** |
| | | * 剩余座位数 |
| | | */ |
| | | @TableField("laveSeat") |
| | | private Integer laveSeat; |
| | | /** |
| | | * 剩余座位号(多个以逗号分隔) |
| | | */ |
| | | @TableField("laveSeatNumber") |
| | | private String laveSeatNumber; |
| | | /** |
| | | * 总座位数 |
| | | */ |
| | | @TableField("totalSeat") |
| | | private Integer totalSeat; |
| | | /** |
| | | * 添加时间 |
| | | */ |
| | | @TableField("inserTime") |
| | | private Date inserTime; |
| | | |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(Integer id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public Integer getLineShiftId() { |
| | | return lineShiftId; |
| | | } |
| | | |
| | | public void setLineShiftId(Integer lineShiftId) { |
| | | this.lineShiftId = lineShiftId; |
| | | } |
| | | |
| | | public Integer getDriverId() { |
| | | return driverId; |
| | | } |
| | | |
| | | public void setDriverId(Integer driverId) { |
| | | this.driverId = driverId; |
| | | } |
| | | |
| | | public Date getDay() { |
| | | return day; |
| | | } |
| | | |
| | | public void setDay(Date day) { |
| | | this.day = day; |
| | | } |
| | | |
| | | public Integer getLaveSeat() { |
| | | return laveSeat; |
| | | } |
| | | |
| | | public void setLaveSeat(Integer laveSeat) { |
| | | this.laveSeat = laveSeat; |
| | | } |
| | | |
| | | public String getLaveSeatNumber() { |
| | | return laveSeatNumber; |
| | | } |
| | | |
| | | public void setLaveSeatNumber(String laveSeatNumber) { |
| | | this.laveSeatNumber = laveSeatNumber; |
| | | } |
| | | |
| | | public Integer getTotalSeat() { |
| | | return totalSeat; |
| | | } |
| | | |
| | | public void setTotalSeat(Integer totalSeat) { |
| | | this.totalSeat = totalSeat; |
| | | } |
| | | |
| | | public Date getInserTime() { |
| | | return inserTime; |
| | | } |
| | | |
| | | public void setInserTime(Date inserTime) { |
| | | this.inserTime = inserTime; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "LineShiftDriver{" + |
| | | "id=" + id + |
| | | ", lineShiftId=" + lineShiftId + |
| | | ", driverId=" + driverId + |
| | | ", day=" + day + |
| | | ", laveSeat=" + laveSeat + |
| | | ", laveSeatNumber='" + laveSeatNumber + '\'' + |
| | | ", totalSeat=" + totalSeat + |
| | | ", inserTime=" + inserTime + |
| | | '}'; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.model; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * 线路排班 |
| | | */ |
| | | @TableName("t_line_shift") |
| | | public class LineSite { |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @TableField("id") |
| | | private Integer id; |
| | | /** |
| | | * 线路id |
| | | */ |
| | | @TableField("lineId") |
| | | private Integer lineId; |
| | | /** |
| | | * 开始时间段 |
| | | */ |
| | | @TableField("startTime") |
| | | private String startTime; |
| | | /** |
| | | * 结束时间段 |
| | | */ |
| | | @TableField("endTime") |
| | | private String endTime; |
| | | /** |
| | | * 车次数 |
| | | */ |
| | | @TableField("carNum") |
| | | private Integer carNum; |
| | | /** |
| | | * 状态(1=正常,2=冻结,3=删除) |
| | | */ |
| | | @TableField("state") |
| | | private Integer state; |
| | | /** |
| | | * 添加时间 |
| | | */ |
| | | @TableField("insertTime") |
| | | private Date insertTime; |
| | | |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(Integer id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public Integer getLineId() { |
| | | return lineId; |
| | | } |
| | | |
| | | public void setLineId(Integer lineId) { |
| | | this.lineId = lineId; |
| | | } |
| | | |
| | | public String getStartTime() { |
| | | return startTime; |
| | | } |
| | | |
| | | public void setStartTime(String startTime) { |
| | | this.startTime = startTime; |
| | | } |
| | | |
| | | public String getEndTime() { |
| | | return endTime; |
| | | } |
| | | |
| | | public void setEndTime(String endTime) { |
| | | this.endTime = endTime; |
| | | } |
| | | |
| | | public Integer getCarNum() { |
| | | return carNum; |
| | | } |
| | | |
| | | public void setCarNum(Integer carNum) { |
| | | this.carNum = carNum; |
| | | } |
| | | |
| | | public Integer getState() { |
| | | return state; |
| | | } |
| | | |
| | | public void setState(Integer state) { |
| | | this.state = state; |
| | | } |
| | | |
| | | public Date getInsertTime() { |
| | | return insertTime; |
| | | } |
| | | |
| | | public void setInsertTime(Date insertTime) { |
| | | this.insertTime = insertTime; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "LineSite{" + |
| | | "id=" + id + |
| | | ", lineId=" + lineId + |
| | | ", startTime='" + startTime + '\'' + |
| | | ", endTime='" + endTime + '\'' + |
| | | ", carNum=" + carNum + |
| | | ", state=" + state + |
| | | ", insertTime=" + insertTime + |
| | | '}'; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.model; |
| | | |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * 站点区域数据 |
| | | */ |
| | | @TableName("t_location") |
| | | public class Location { |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @TableField("id") |
| | | private Integer id; |
| | | /** |
| | | * 站点id |
| | | */ |
| | | @TableField("siteId") |
| | | private Integer siteId; |
| | | /** |
| | | * 地点类型(1=行政区域,2=电子围栏) |
| | | */ |
| | | @TableField("type") |
| | | private Integer type; |
| | | /** |
| | | * 省名称 |
| | | */ |
| | | @TableField("province") |
| | | private String province; |
| | | /** |
| | | * 省编号 |
| | | */ |
| | | @TableField("provinceCode") |
| | | private String provinceCode; |
| | | /** |
| | | * 市名称 |
| | | */ |
| | | @TableField("city") |
| | | private String city; |
| | | /** |
| | | * 市编号 |
| | | */ |
| | | @TableField("cityCode") |
| | | private String cityCode; |
| | | /** |
| | | * 区县名称 |
| | | */ |
| | | @TableField("district") |
| | | private String district; |
| | | /** |
| | | * 区县编号 |
| | | */ |
| | | @TableField("districtCode") |
| | | private String districtCode; |
| | | /** |
| | | * 电子围栏坐标(多个以分号分隔) |
| | | */ |
| | | @TableField("coordinate") |
| | | private String coordinate; |
| | | /** |
| | | * 电子围栏gid |
| | | */ |
| | | @TableField("gid") |
| | | private String gid; |
| | | /** |
| | | * 状态(1=正常,2=冻结,3=删除) |
| | | */ |
| | | @TableField("state") |
| | | private Integer state; |
| | | /** |
| | | * 添加时间 |
| | | */ |
| | | @TableField("insertTime") |
| | | private Date insertTime; |
| | | |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(Integer id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public Integer getSiteId() { |
| | | return siteId; |
| | | } |
| | | |
| | | public void setSiteId(Integer siteId) { |
| | | this.siteId = siteId; |
| | | } |
| | | |
| | | public Integer getType() { |
| | | return type; |
| | | } |
| | | |
| | | public void setType(Integer type) { |
| | | this.type = type; |
| | | } |
| | | |
| | | public String getProvince() { |
| | | return province; |
| | | } |
| | | |
| | | public void setProvince(String province) { |
| | | this.province = province; |
| | | } |
| | | |
| | | public String getProvinceCode() { |
| | | return provinceCode; |
| | | } |
| | | |
| | | public void setProvinceCode(String provinceCode) { |
| | | this.provinceCode = provinceCode; |
| | | } |
| | | |
| | | public String getCity() { |
| | | return city; |
| | | } |
| | | |
| | | public void setCity(String city) { |
| | | this.city = city; |
| | | } |
| | | |
| | | public String getCityCode() { |
| | | return cityCode; |
| | | } |
| | | |
| | | public void setCityCode(String cityCode) { |
| | | this.cityCode = cityCode; |
| | | } |
| | | |
| | | public String getDistrict() { |
| | | return district; |
| | | } |
| | | |
| | | public void setDistrict(String district) { |
| | | this.district = district; |
| | | } |
| | | |
| | | public String getDistrictCode() { |
| | | return districtCode; |
| | | } |
| | | |
| | | public void setDistrictCode(String districtCode) { |
| | | this.districtCode = districtCode; |
| | | } |
| | | |
| | | public String getCoordinate() { |
| | | return coordinate; |
| | | } |
| | | |
| | | public void setCoordinate(String coordinate) { |
| | | this.coordinate = coordinate; |
| | | } |
| | | |
| | | public String getGid() { |
| | | return gid; |
| | | } |
| | | |
| | | public void setGid(String gid) { |
| | | this.gid = gid; |
| | | } |
| | | |
| | | public Integer getState() { |
| | | return state; |
| | | } |
| | | |
| | | public void setState(Integer state) { |
| | | this.state = state; |
| | | } |
| | | |
| | | public Date getInsertTime() { |
| | | return insertTime; |
| | | } |
| | | |
| | | public void setInsertTime(Date insertTime) { |
| | | this.insertTime = insertTime; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "Location{" + |
| | | "id=" + id + |
| | | ", siteId=" + siteId + |
| | | ", type=" + type + |
| | | ", province='" + province + '\'' + |
| | | ", provinceCode='" + provinceCode + '\'' + |
| | | ", city='" + city + '\'' + |
| | | ", cityCode='" + cityCode + '\'' + |
| | | ", district='" + district + '\'' + |
| | | ", districtCode='" + districtCode + '\'' + |
| | | ", coordinate='" + coordinate + '\'' + |
| | | ", state=" + state + |
| | | ", insertTime=" + insertTime + |
| | | '}'; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.model; |
| | | |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * 跨城订单 |
| | | */ |
| | | @TableName("t_order_cross_city") |
| | | public class OrderCrossCity { |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @TableField("id") |
| | | private Integer id; |
| | | /** |
| | | * 用户id |
| | | */ |
| | | @TableField("userId") |
| | | private Integer userId; |
| | | /** |
| | | * 服务车型id |
| | | */ |
| | | @TableField("serverCarModelId") |
| | | private Integer serverCarModelId; |
| | | /** |
| | | * 司机id |
| | | */ |
| | | @TableField("driverId") |
| | | private Integer driverId; |
| | | /** |
| | | * 线路id |
| | | */ |
| | | @TableField("lineId") |
| | | private Integer lineId; |
| | | /** |
| | | * 预约班次的id |
| | | */ |
| | | @TableField("lineShiftDriverId") |
| | | private Integer lineShiftDriverId; |
| | | /** |
| | | * 车辆id |
| | | */ |
| | | @TableField("carId") |
| | | private Integer carId; |
| | | /** |
| | | * 订单号 |
| | | */ |
| | | @TableField("orderNum") |
| | | private String orderNum; |
| | | /** |
| | | * 下单地点经度 |
| | | */ |
| | | @TableField("placementLon") |
| | | private Double placementLon; |
| | | /** |
| | | * 下单地点纬度 |
| | | */ |
| | | @TableField("placementLat") |
| | | private Double placementLat; |
| | | /** |
| | | * 下单地点 |
| | | */ |
| | | @TableField("placementAddress") |
| | | private String placementAddress; |
| | | /** |
| | | * 起点经度 |
| | | */ |
| | | @TableField("startLon") |
| | | private Double startLon; |
| | | /** |
| | | * 起点纬度 |
| | | */ |
| | | @TableField("startLat") |
| | | private Double startLat; |
| | | /** |
| | | * 起点 |
| | | */ |
| | | @TableField("startAddress") |
| | | private String startAddress; |
| | | /** |
| | | * 目的地经度 |
| | | */ |
| | | @TableField("endLon") |
| | | private Double endLon; |
| | | /** |
| | | * 目的地纬度 |
| | | */ |
| | | @TableField("endLat") |
| | | private Double endLat; |
| | | /** |
| | | * 目的地 |
| | | */ |
| | | @TableField("endAddress") |
| | | private String endAddress; |
| | | /** |
| | | * 上车点经度 |
| | | */ |
| | | @TableField("boardingLon") |
| | | private Double boardingLon; |
| | | /** |
| | | * 上车点纬度 |
| | | */ |
| | | @TableField("boardingLat") |
| | | private Double boardingLat; |
| | | /** |
| | | * 上车地点 |
| | | */ |
| | | @TableField("boardingAddress") |
| | | private String boardingAddress; |
| | | /** |
| | | * 上车时间 |
| | | */ |
| | | @TableField("boardingTime") |
| | | private Date boardingTime; |
| | | /** |
| | | * 下车点经度 |
| | | */ |
| | | @TableField("getoffLon") |
| | | private Double getoffLon; |
| | | /** |
| | | * 下车点纬度 |
| | | */ |
| | | @TableField("getoffLat") |
| | | private Double getoffLat; |
| | | /** |
| | | * 下车点 |
| | | */ |
| | | @TableField("getoffAddress") |
| | | private String getoffAddress; |
| | | /** |
| | | * 下车时间 |
| | | */ |
| | | @TableField("getoffTime") |
| | | private Date getoffTime; |
| | | /** |
| | | * 行驶里程数(米) |
| | | */ |
| | | @TableField("mileage") |
| | | private Double mileage; |
| | | /** |
| | | * 支付方式(1=OK平台支付,2=其他方式支付) |
| | | */ |
| | | @TableField("payManner") |
| | | private Integer payManner; |
| | | /** |
| | | * 支付方式(1=微信,2=支付宝,3=余额) |
| | | */ |
| | | @TableField("payType") |
| | | private Integer payType; |
| | | /** |
| | | * 订单金额 |
| | | */ |
| | | @TableField("orderMoney") |
| | | private Double orderMoney; |
| | | /** |
| | | * 红包抵扣金额 |
| | | */ |
| | | @TableField("redPacketMoney") |
| | | private Double redPacketMoney; |
| | | /** |
| | | * 优惠券抵扣金额 |
| | | */ |
| | | @TableField("couponMoney") |
| | | private Double couponMoney; |
| | | /** |
| | | * 红包id |
| | | */ |
| | | @TableField("redPacketId") |
| | | private Integer redPacketId; |
| | | /** |
| | | * 优惠券id |
| | | */ |
| | | @TableField("couponId") |
| | | private Integer couponId; |
| | | /** |
| | | * 折扣 |
| | | */ |
| | | @TableField("discount") |
| | | private Double discount; |
| | | /** |
| | | * 折扣优惠金额 |
| | | */ |
| | | @TableField("discountMoney") |
| | | private Double discountMoney; |
| | | /** |
| | | * 折扣活动id |
| | | */ |
| | | @TableField("activityId") |
| | | private Integer activityId; |
| | | /** |
| | | * 公司id |
| | | */ |
| | | @TableField("companyId") |
| | | private Integer companyId; |
| | | /** |
| | | * 支付金额 |
| | | */ |
| | | @TableField("payMoney") |
| | | private Double payMoney; |
| | | /** |
| | | * 乘车人姓名 |
| | | */ |
| | | @TableField("passengers") |
| | | private String passengers; |
| | | /** |
| | | * 乘车人电话 |
| | | */ |
| | | @TableField("passengersPhone") |
| | | private String passengersPhone; |
| | | /** |
| | | * 出行人数 |
| | | */ |
| | | @TableField("peopleNumber") |
| | | private Integer peopleNumber; |
| | | /** |
| | | * 座位编号 |
| | | */ |
| | | @TableField("seatNumber") |
| | | private String seatNumber; |
| | | /** |
| | | * 排序(订单为拼车时的排序-不是所有订单的排序) |
| | | */ |
| | | @TableField("sort") |
| | | private Integer sort; |
| | | /** |
| | | * 订单状态(1=待接单,2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,8=待评价,9=已完成,10=已取消,11=改派中,12=取消待支付) |
| | | */ |
| | | @TableField("state") |
| | | private Integer state; |
| | | /** |
| | | * 下单时间 |
| | | */ |
| | | @TableField("insertTime") |
| | | private Date insertTime; |
| | | /** |
| | | * 出行时间 |
| | | */ |
| | | @TableField("travelTime") |
| | | private Date travelTime; |
| | | /** |
| | | * 抢单时间 |
| | | */ |
| | | @TableField("snatchOrderTime") |
| | | private Date snatchOrderTime; |
| | | /** |
| | | * 司机点出发时间 |
| | | */ |
| | | @TableField("setOutTime") |
| | | private Date setOutTime; |
| | | /** |
| | | * 司机到达预约地点时间 |
| | | */ |
| | | @TableField("arriveTime") |
| | | private Date arriveTime; |
| | | /** |
| | | * 开始服务时间 |
| | | */ |
| | | @TableField("startServiceTime") |
| | | private Date startServiceTime; |
| | | /** |
| | | * 结束服务时间 |
| | | */ |
| | | @TableField("endServiceTime") |
| | | private Date endServiceTime; |
| | | /** |
| | | * 出行方式(1=拼车,2=包车) |
| | | */ |
| | | @TableField("travelMode") |
| | | private Integer travelMode; |
| | | /** |
| | | * 订单来源(1:APP下单,2:扫码下单,3:小程序下单,4:司机下单,5:调度下单) |
| | | */ |
| | | @TableField("orderSource") |
| | | private Integer orderSource; |
| | | /** |
| | | * 是否是改派单(1=否,2=是) |
| | | * @return |
| | | */ |
| | | @TableField("isReassign") |
| | | private Integer isReassign; |
| | | /** |
| | | * 改派通知标识(0=没有改派,1=改派中,2=已改派)用于通知前端获取新司机数据 |
| | | */ |
| | | @TableField("reassignNotice") |
| | | private Integer reassignNotice; |
| | | /** |
| | | * 发票id |
| | | */ |
| | | @TableField("invoiceId") |
| | | private Integer invoiceId; |
| | | /** |
| | | * 高德猎鹰轨迹id |
| | | * @return |
| | | */ |
| | | @TableField("trackId") |
| | | private String trackId; |
| | | /** |
| | | * 是否删除(1=否,2=是) |
| | | */ |
| | | @TableField("isDelete") |
| | | private Integer isDelete; |
| | | /** |
| | | * 该派前的订单状态 |
| | | * @return |
| | | */ |
| | | @TableField("oldState") |
| | | private Integer oldState; |
| | | /** |
| | | * 移动小号 |
| | | * @return |
| | | */ |
| | | @TableField("telX") |
| | | private String telX; |
| | | /** |
| | | * 绑定小号关系id |
| | | * @return |
| | | */ |
| | | @TableField("bindId") |
| | | private String bindId; |
| | | |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(Integer id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public Integer getUserId() { |
| | | return userId; |
| | | } |
| | | |
| | | public void setUserId(Integer userId) { |
| | | this.userId = userId; |
| | | } |
| | | |
| | | public Integer getServerCarModelId() { |
| | | return serverCarModelId; |
| | | } |
| | | |
| | | public void setServerCarModelId(Integer serverCarModelId) { |
| | | this.serverCarModelId = serverCarModelId; |
| | | } |
| | | |
| | | public Integer getDriverId() { |
| | | return driverId; |
| | | } |
| | | |
| | | public void setDriverId(Integer driverId) { |
| | | this.driverId = driverId; |
| | | } |
| | | |
| | | public Integer getLineId() { |
| | | return lineId; |
| | | } |
| | | |
| | | public void setLineId(Integer lineId) { |
| | | this.lineId = lineId; |
| | | } |
| | | |
| | | public Integer getLineShiftDriverId() { |
| | | return lineShiftDriverId; |
| | | } |
| | | |
| | | public void setLineShiftDriverId(Integer lineShiftDriverId) { |
| | | this.lineShiftDriverId = lineShiftDriverId; |
| | | } |
| | | |
| | | public Integer getCarId() { |
| | | return carId; |
| | | } |
| | | |
| | | public void setCarId(Integer carId) { |
| | | this.carId = carId; |
| | | } |
| | | |
| | | public String getOrderNum() { |
| | | return orderNum; |
| | | } |
| | | |
| | | public void setOrderNum(String orderNum) { |
| | | this.orderNum = orderNum; |
| | | } |
| | | |
| | | public Double getPlacementLon() { |
| | | return placementLon; |
| | | } |
| | | |
| | | public void setPlacementLon(Double placementLon) { |
| | | this.placementLon = placementLon; |
| | | } |
| | | |
| | | public Double getPlacementLat() { |
| | | return placementLat; |
| | | } |
| | | |
| | | public void setPlacementLat(Double placementLat) { |
| | | this.placementLat = placementLat; |
| | | } |
| | | |
| | | public String getPlacementAddress() { |
| | | return placementAddress; |
| | | } |
| | | |
| | | public void setPlacementAddress(String placementAddress) { |
| | | this.placementAddress = placementAddress; |
| | | } |
| | | |
| | | public Double getStartLon() { |
| | | return startLon; |
| | | } |
| | | |
| | | public void setStartLon(Double startLon) { |
| | | this.startLon = startLon; |
| | | } |
| | | |
| | | public Double getStartLat() { |
| | | return startLat; |
| | | } |
| | | |
| | | public void setStartLat(Double startLat) { |
| | | this.startLat = startLat; |
| | | } |
| | | |
| | | public String getStartAddress() { |
| | | return startAddress; |
| | | } |
| | | |
| | | public void setStartAddress(String startAddress) { |
| | | this.startAddress = startAddress; |
| | | } |
| | | |
| | | public Double getEndLon() { |
| | | return endLon; |
| | | } |
| | | |
| | | public void setEndLon(Double endLon) { |
| | | this.endLon = endLon; |
| | | } |
| | | |
| | | public Double getEndLat() { |
| | | return endLat; |
| | | } |
| | | |
| | | public void setEndLat(Double endLat) { |
| | | this.endLat = endLat; |
| | | } |
| | | |
| | | public String getEndAddress() { |
| | | return endAddress; |
| | | } |
| | | |
| | | public void setEndAddress(String endAddress) { |
| | | this.endAddress = endAddress; |
| | | } |
| | | |
| | | public Double getBoardingLon() { |
| | | return boardingLon; |
| | | } |
| | | |
| | | public void setBoardingLon(Double boardingLon) { |
| | | this.boardingLon = boardingLon; |
| | | } |
| | | |
| | | public Double getBoardingLat() { |
| | | return boardingLat; |
| | | } |
| | | |
| | | public void setBoardingLat(Double boardingLat) { |
| | | this.boardingLat = boardingLat; |
| | | } |
| | | |
| | | public String getBoardingAddress() { |
| | | return boardingAddress; |
| | | } |
| | | |
| | | public void setBoardingAddress(String boardingAddress) { |
| | | this.boardingAddress = boardingAddress; |
| | | } |
| | | |
| | | public Date getBoardingTime() { |
| | | return boardingTime; |
| | | } |
| | | |
| | | public void setBoardingTime(Date boardingTime) { |
| | | this.boardingTime = boardingTime; |
| | | } |
| | | |
| | | public Double getGetoffLon() { |
| | | return getoffLon; |
| | | } |
| | | |
| | | public void setGetoffLon(Double getoffLon) { |
| | | this.getoffLon = getoffLon; |
| | | } |
| | | |
| | | public Double getGetoffLat() { |
| | | return getoffLat; |
| | | } |
| | | |
| | | public void setGetoffLat(Double getoffLat) { |
| | | this.getoffLat = getoffLat; |
| | | } |
| | | |
| | | public String getGetoffAddress() { |
| | | return getoffAddress; |
| | | } |
| | | |
| | | public void setGetoffAddress(String getoffAddress) { |
| | | this.getoffAddress = getoffAddress; |
| | | } |
| | | |
| | | public Date getGetoffTime() { |
| | | return getoffTime; |
| | | } |
| | | |
| | | public void setGetoffTime(Date getoffTime) { |
| | | this.getoffTime = getoffTime; |
| | | } |
| | | |
| | | public Double getMileage() { |
| | | return mileage; |
| | | } |
| | | |
| | | public void setMileage(Double mileage) { |
| | | this.mileage = mileage; |
| | | } |
| | | |
| | | public Integer getPayManner() { |
| | | return payManner; |
| | | } |
| | | |
| | | public void setPayManner(Integer payManner) { |
| | | this.payManner = payManner; |
| | | } |
| | | |
| | | public Integer getPayType() { |
| | | return payType; |
| | | } |
| | | |
| | | public void setPayType(Integer payType) { |
| | | this.payType = payType; |
| | | } |
| | | |
| | | public Double getOrderMoney() { |
| | | return orderMoney; |
| | | } |
| | | |
| | | public void setOrderMoney(Double orderMoney) { |
| | | this.orderMoney = orderMoney; |
| | | } |
| | | |
| | | public Double getRedPacketMoney() { |
| | | return redPacketMoney; |
| | | } |
| | | |
| | | public void setRedPacketMoney(Double redPacketMoney) { |
| | | this.redPacketMoney = redPacketMoney; |
| | | } |
| | | |
| | | public Double getCouponMoney() { |
| | | return couponMoney; |
| | | } |
| | | |
| | | public void setCouponMoney(Double couponMoney) { |
| | | this.couponMoney = couponMoney; |
| | | } |
| | | |
| | | public Integer getRedPacketId() { |
| | | return redPacketId; |
| | | } |
| | | |
| | | public void setRedPacketId(Integer redPacketId) { |
| | | this.redPacketId = redPacketId; |
| | | } |
| | | |
| | | public Integer getCouponId() { |
| | | return couponId; |
| | | } |
| | | |
| | | public void setCouponId(Integer couponId) { |
| | | this.couponId = couponId; |
| | | } |
| | | |
| | | public Double getDiscount() { |
| | | return discount; |
| | | } |
| | | |
| | | public void setDiscount(Double discount) { |
| | | this.discount = discount; |
| | | } |
| | | |
| | | public Double getDiscountMoney() { |
| | | return discountMoney; |
| | | } |
| | | |
| | | public void setDiscountMoney(Double discountMoney) { |
| | | this.discountMoney = discountMoney; |
| | | } |
| | | |
| | | public Integer getActivityId() { |
| | | return activityId; |
| | | } |
| | | |
| | | public void setActivityId(Integer activityId) { |
| | | this.activityId = activityId; |
| | | } |
| | | |
| | | public Integer getCompanyId() { |
| | | return companyId; |
| | | } |
| | | |
| | | public void setCompanyId(Integer companyId) { |
| | | this.companyId = companyId; |
| | | } |
| | | |
| | | public Double getPayMoney() { |
| | | return payMoney; |
| | | } |
| | | |
| | | public void setPayMoney(Double payMoney) { |
| | | this.payMoney = payMoney; |
| | | } |
| | | |
| | | public String getPassengers() { |
| | | return passengers; |
| | | } |
| | | |
| | | public void setPassengers(String passengers) { |
| | | this.passengers = passengers; |
| | | } |
| | | |
| | | public String getPassengersPhone() { |
| | | return passengersPhone; |
| | | } |
| | | |
| | | public void setPassengersPhone(String passengersPhone) { |
| | | this.passengersPhone = passengersPhone; |
| | | } |
| | | |
| | | public Integer getPeopleNumber() { |
| | | return peopleNumber; |
| | | } |
| | | |
| | | public void setPeopleNumber(Integer peopleNumber) { |
| | | this.peopleNumber = peopleNumber; |
| | | } |
| | | |
| | | public String getSeatNumber() { |
| | | return seatNumber; |
| | | } |
| | | |
| | | public void setSeatNumber(String seatNumber) { |
| | | this.seatNumber = seatNumber; |
| | | } |
| | | |
| | | public Integer getSort() { |
| | | return sort; |
| | | } |
| | | |
| | | public void setSort(Integer sort) { |
| | | this.sort = sort; |
| | | } |
| | | |
| | | public Integer getState() { |
| | | return state; |
| | | } |
| | | |
| | | public void setState(Integer state) { |
| | | this.state = state; |
| | | } |
| | | |
| | | public Date getInsertTime() { |
| | | return insertTime; |
| | | } |
| | | |
| | | public void setInsertTime(Date insertTime) { |
| | | this.insertTime = insertTime; |
| | | } |
| | | |
| | | public Date getTravelTime() { |
| | | return travelTime; |
| | | } |
| | | |
| | | public void setTravelTime(Date travelTime) { |
| | | this.travelTime = travelTime; |
| | | } |
| | | |
| | | public Date getSnatchOrderTime() { |
| | | return snatchOrderTime; |
| | | } |
| | | |
| | | public void setSnatchOrderTime(Date snatchOrderTime) { |
| | | this.snatchOrderTime = snatchOrderTime; |
| | | } |
| | | |
| | | public Date getSetOutTime() { |
| | | return setOutTime; |
| | | } |
| | | |
| | | public void setSetOutTime(Date setOutTime) { |
| | | this.setOutTime = setOutTime; |
| | | } |
| | | |
| | | public Date getArriveTime() { |
| | | return arriveTime; |
| | | } |
| | | |
| | | public void setArriveTime(Date arriveTime) { |
| | | this.arriveTime = arriveTime; |
| | | } |
| | | |
| | | public Date getStartServiceTime() { |
| | | return startServiceTime; |
| | | } |
| | | |
| | | public void setStartServiceTime(Date startServiceTime) { |
| | | this.startServiceTime = startServiceTime; |
| | | } |
| | | |
| | | public Date getEndServiceTime() { |
| | | return endServiceTime; |
| | | } |
| | | |
| | | public void setEndServiceTime(Date endServiceTime) { |
| | | this.endServiceTime = endServiceTime; |
| | | } |
| | | |
| | | public Integer getTravelMode() { |
| | | return travelMode; |
| | | } |
| | | |
| | | public void setTravelMode(Integer travelMode) { |
| | | this.travelMode = travelMode; |
| | | } |
| | | |
| | | public Integer getOrderSource() { |
| | | return orderSource; |
| | | } |
| | | |
| | | public void setOrderSource(Integer orderSource) { |
| | | this.orderSource = orderSource; |
| | | } |
| | | |
| | | public Integer getInvoiceId() { |
| | | return invoiceId; |
| | | } |
| | | |
| | | public void setInvoiceId(Integer invoiceId) { |
| | | this.invoiceId = invoiceId; |
| | | } |
| | | |
| | | public String getTrackId() { |
| | | return trackId; |
| | | } |
| | | |
| | | public void setTrackId(String trackId) { |
| | | this.trackId = trackId; |
| | | } |
| | | |
| | | public Integer getIsDelete() { |
| | | return isDelete; |
| | | } |
| | | |
| | | public void setIsDelete(Integer isDelete) { |
| | | this.isDelete = isDelete; |
| | | } |
| | | |
| | | public String getTelX() { |
| | | return telX; |
| | | } |
| | | |
| | | public void setTelX(String telX) { |
| | | this.telX = telX; |
| | | } |
| | | |
| | | public String getBindId() { |
| | | return bindId; |
| | | } |
| | | |
| | | public void setBindId(String bindId) { |
| | | this.bindId = bindId; |
| | | } |
| | | |
| | | public Integer getIsReassign() { |
| | | return isReassign; |
| | | } |
| | | |
| | | public void setIsReassign(Integer isReassign) { |
| | | this.isReassign = isReassign; |
| | | } |
| | | |
| | | public Integer getReassignNotice() { |
| | | return reassignNotice; |
| | | } |
| | | |
| | | public void setReassignNotice(Integer reassignNotice) { |
| | | this.reassignNotice = reassignNotice; |
| | | } |
| | | |
| | | public Integer getOldState() { |
| | | return oldState; |
| | | } |
| | | |
| | | public void setOldState(Integer oldState) { |
| | | this.oldState = oldState; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "OrderCrossCity{" + |
| | | "id=" + id + |
| | | ", userId=" + userId + |
| | | ", serverCarModelId=" + serverCarModelId + |
| | | ", driverId=" + driverId + |
| | | ", lineId=" + lineId + |
| | | ", lineShiftDriverId=" + lineShiftDriverId + |
| | | ", carId=" + carId + |
| | | ", orderNum='" + orderNum + '\'' + |
| | | ", placementLon=" + placementLon + |
| | | ", placementLat=" + placementLat + |
| | | ", placementAddress='" + placementAddress + '\'' + |
| | | ", startLon=" + startLon + |
| | | ", startLat=" + startLat + |
| | | ", startAddress='" + startAddress + '\'' + |
| | | ", endLon=" + endLon + |
| | | ", endLat=" + endLat + |
| | | ", endAddress='" + endAddress + '\'' + |
| | | ", boardingLon=" + boardingLon + |
| | | ", boardingLat=" + boardingLat + |
| | | ", boardingAddress='" + boardingAddress + '\'' + |
| | | ", boardingTime=" + boardingTime + |
| | | ", getoffLon=" + getoffLon + |
| | | ", getoffLat=" + getoffLat + |
| | | ", getoffAddress='" + getoffAddress + '\'' + |
| | | ", getoffTime=" + getoffTime + |
| | | ", mileage=" + mileage + |
| | | ", payManner=" + payManner + |
| | | ", payType=" + payType + |
| | | ", orderMoney=" + orderMoney + |
| | | ", redPacketMoney=" + redPacketMoney + |
| | | ", couponMoney=" + couponMoney + |
| | | ", redPacketId=" + redPacketId + |
| | | ", couponId=" + couponId + |
| | | ", discount=" + discount + |
| | | ", discountMoney=" + discountMoney + |
| | | ", activityId=" + activityId + |
| | | ", companyId=" + companyId + |
| | | ", payMoney=" + payMoney + |
| | | ", passengers='" + passengers + '\'' + |
| | | ", passengersPhone='" + passengersPhone + '\'' + |
| | | ", peopleNumber=" + peopleNumber + |
| | | ", seatNumber='" + seatNumber + '\'' + |
| | | ", sort=" + sort + |
| | | ", state=" + state + |
| | | ", insertTime=" + insertTime + |
| | | ", travelTime=" + travelTime + |
| | | ", snatchOrderTime=" + snatchOrderTime + |
| | | ", setOutTime=" + setOutTime + |
| | | ", arriveTime=" + arriveTime + |
| | | ", startServiceTime=" + startServiceTime + |
| | | ", endServiceTime=" + endServiceTime + |
| | | ", travelMode=" + travelMode + |
| | | ", orderSource=" + orderSource + |
| | | ", isReassign=" + isReassign + |
| | | ", reassignNotice=" + reassignNotice + |
| | | ", invoiceId=" + invoiceId + |
| | | ", trackId='" + trackId + '\'' + |
| | | ", isDelete=" + isDelete + |
| | | ", oldState=" + oldState + |
| | | ", telX='" + telX + '\'' + |
| | | ", bindId='" + bindId + '\'' + |
| | | '}'; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.model; |
| | | |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * 线路站点 |
| | | */ |
| | | @TableName("t_site") |
| | | public class Site { |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @TableField("id") |
| | | private Integer id; |
| | | /** |
| | | * 站点名称 |
| | | */ |
| | | @TableField("name") |
| | | private String name; |
| | | /** |
| | | * 省名称 |
| | | */ |
| | | @TableField("province") |
| | | private String province; |
| | | /** |
| | | * 省编号 |
| | | */ |
| | | @TableField("provinceCode") |
| | | private String provinceCode; |
| | | /** |
| | | * 市名称 |
| | | */ |
| | | @TableField("city") |
| | | private String city; |
| | | /** |
| | | * 市编号 |
| | | */ |
| | | @TableField("cityCode") |
| | | private String cityCode; |
| | | /** |
| | | * 区县名称 |
| | | */ |
| | | @TableField("district") |
| | | private String district; |
| | | /** |
| | | * 区县编号 |
| | | */ |
| | | @TableField("districtCode") |
| | | private String districtCode; |
| | | /** |
| | | * 状态(1=正常,2=冻结,3=删除) |
| | | */ |
| | | @TableField("state") |
| | | private Integer state; |
| | | /** |
| | | * 添加时间 |
| | | */ |
| | | @TableField("insertTime") |
| | | private Date insertTime; |
| | | /** |
| | | * 添加人id |
| | | */ |
| | | @TableField("insertUserId") |
| | | private Integer insertUserId; |
| | | |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(Integer id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public String getName() { |
| | | return name; |
| | | } |
| | | |
| | | public void setName(String name) { |
| | | this.name = name; |
| | | } |
| | | |
| | | public String getProvince() { |
| | | return province; |
| | | } |
| | | |
| | | public void setProvince(String province) { |
| | | this.province = province; |
| | | } |
| | | |
| | | public String getProvinceCode() { |
| | | return provinceCode; |
| | | } |
| | | |
| | | public void setProvinceCode(String provinceCode) { |
| | | this.provinceCode = provinceCode; |
| | | } |
| | | |
| | | public String getCity() { |
| | | return city; |
| | | } |
| | | |
| | | public void setCity(String city) { |
| | | this.city = city; |
| | | } |
| | | |
| | | public String getCityCode() { |
| | | return cityCode; |
| | | } |
| | | |
| | | public void setCityCode(String cityCode) { |
| | | this.cityCode = cityCode; |
| | | } |
| | | |
| | | public String getDistrict() { |
| | | return district; |
| | | } |
| | | |
| | | public void setDistrict(String district) { |
| | | this.district = district; |
| | | } |
| | | |
| | | public String getDistrictCode() { |
| | | return districtCode; |
| | | } |
| | | |
| | | public void setDistrictCode(String districtCode) { |
| | | this.districtCode = districtCode; |
| | | } |
| | | |
| | | public Integer getState() { |
| | | return state; |
| | | } |
| | | |
| | | public void setState(Integer state) { |
| | | this.state = state; |
| | | } |
| | | |
| | | public Date getInsertTime() { |
| | | return insertTime; |
| | | } |
| | | |
| | | public void setInsertTime(Date insertTime) { |
| | | this.insertTime = insertTime; |
| | | } |
| | | |
| | | public Integer getInsertUserId() { |
| | | return insertUserId; |
| | | } |
| | | |
| | | public void setInsertUserId(Integer insertUserId) { |
| | | this.insertUserId = insertUserId; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "Site{" + |
| | | "id=" + id + |
| | | ", name='" + name + '\'' + |
| | | ", province='" + province + '\'' + |
| | | ", provinceCode='" + provinceCode + '\'' + |
| | | ", city='" + city + '\'' + |
| | | ", cityCode='" + cityCode + '\'' + |
| | | ", district='" + district + '\'' + |
| | | ", districtCode='" + districtCode + '\'' + |
| | | ", state=" + state + |
| | | ", insertTime=" + insertTime + |
| | | ", insertUserId=" + insertUserId + |
| | | '}'; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.server; |
| | | |
| | | import com.baomidou.mybatisplus.service.IService; |
| | | import com.stylefeng.guns.modular.crossCity.model.Line; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | public interface ILineService extends IService<Line> { |
| | | |
| | | |
| | | |
| | | /** |
| | | * 根据站点id获取线路数据 |
| | | * @param driverId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<Map<String, Object>> scanCodeQueryLines(Integer driverId) throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 获取线路对应的排班数据 |
| | | * @param lineId |
| | | * @param time |
| | | * @param driverId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<Map<String, Object>> queryLineShiftInfo(Integer lineId, String time, Integer driverId) throws Exception; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 根据站点id获取线路数据 |
| | | * @param startId |
| | | * @param endId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<Map<String, Object>> queryLines(Integer startId, Integer endId, Integer driverId) throws Exception; |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.server; |
| | | |
| | | import com.baomidou.mybatisplus.service.IService; |
| | | import com.stylefeng.guns.modular.crossCity.model.LineShiftDriver; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | |
| | | public interface ILineShiftDriverService extends IService<LineShiftDriver> { |
| | | |
| | | |
| | | /** |
| | | * 预约班次操作 |
| | | * @param lineShiftId |
| | | * @param time |
| | | * @param driverId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | ResultUtil reservation(Integer type, Integer lineShiftId, String time, Integer driverId) throws Exception; |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.server; |
| | | |
| | | import com.baomidou.mybatisplus.service.IService; |
| | | import com.stylefeng.guns.modular.crossCity.model.LineSite; |
| | | import com.stylefeng.guns.modular.crossCity.warpper.SiteWarpper; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | public interface ILineSiteService extends IService<LineSite> { |
| | | |
| | | |
| | | /** |
| | | * 根据线路获取排班数据 |
| | | * @param lineId |
| | | * @param day |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<Map<String, Object>> queryDriver(Integer lineId, String day, Integer driverId) throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 根据司机排班数据id获取数据(剩余座位号和总座位数) |
| | | * @param id |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | Map<String, Object> querySeat(Integer id) throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 获取线路班次及司机预约情况 |
| | | * @param lineId |
| | | * @param time |
| | | * @param driverId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<Map<String, Object>> queryLineShiftInfo(Integer lineId, String time, Integer driverId) throws Exception; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取所有站点 |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<SiteWarpper> querySite(Integer startSiteId) throws Exception; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 根据站点获取地点区域数据 |
| | | * @param siteId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<Map<String, Object>> queryLocation(Integer siteId) throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 判断坐标点是否在站点范围内 |
| | | * @param siteId |
| | | * @param code |
| | | * @param lonLat |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | boolean areaMonitoring(Integer siteId, String code, String lonLat) throws Exception; |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.server; |
| | | |
| | | import com.baomidou.mybatisplus.service.IService; |
| | | import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity; |
| | | import com.stylefeng.guns.modular.crossCity.warpper.OrderCrossCityWarpper; |
| | | import com.stylefeng.guns.modular.system.model.OrderPosition; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import com.stylefeng.guns.modular.system.warpper.BaseWarpper; |
| | | import com.stylefeng.guns.modular.taxi.model.OrderTaxi; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | public interface IOrderCrossCityService extends IService<OrderCrossCity> { |
| | | |
| | | |
| | | /** |
| | | * 获取司机的抢单页面订单详情 |
| | | * @param orderId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | Map<String, Object> queryPushOrder(Integer orderId) throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 获取司机端首页订单列表 |
| | | * @param state 1=服务中,2=待服务(30分钟定义预约) |
| | | * @param driverId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<Map<String, Object>> queryOrderList(Integer state, Integer driverId) throws Exception; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取司机端我的订单列表 |
| | | * @param state 1=全部,2=待支付,3=已取消 |
| | | * @param uid |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<Map<String, Object>> queryMyAllOrder(Integer state, Integer uid) throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 获取订单详情页(服务中的页面) |
| | | * @param orderId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | Map<String, Object> queryOrderInfo(Integer orderId) throws Exception; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 走订单流程操作 |
| | | * @param orderId |
| | | * @param state |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | ResultUtil process(Integer orderId, Integer state, Double lon, Double lat, String address) throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 获取订单明细 |
| | | * @param orderId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | Map<String, Object> queryOrderCrossCityInfo(Integer orderId) throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 修改跨城订单顺序 |
| | | * @param orderId |
| | | * @throws Exception |
| | | */ |
| | | void setOrderCrossCitySort(Integer orderId) throws Exception; |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 跨城下单操作 |
| | | * @param orderCrossCityWarpper |
| | | * @param uid |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | ResultUtil<BaseWarpper> orderCrossCity(OrderCrossCityWarpper orderCrossCityWarpper, Integer uid) throws Exception; |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 扫码支付回调处理 |
| | | * @param orderId 订单id |
| | | * @param order_id 工行订单号 |
| | | * @throws Exception |
| | | */ |
| | | void generatePayCallback(Integer orderId, String order_id) throws Exception; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 计算支付金额 |
| | | * @param startLonLat |
| | | * @param endLonLat |
| | | * @param peopleNumber |
| | | * @param travelMode |
| | | * @param lineId |
| | | * @param serverCarModelId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | ResultUtil queryOrderMoney(String startLonLat, String endLonLat, Integer peopleNumber, Integer travelMode, Integer lineId, |
| | | Integer serverCarModelId, Integer totalSeat, String seatNumber) throws Exception; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 订单完成支付订单操作 |
| | | * @param payType |
| | | * @param orderId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | ResultUtil payCrossCityOrder(Integer payType, Integer orderId, Integer couponId, Integer type)throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 支付完成后的订单处理 |
| | | * @param id 订单=id |
| | | * @param order_id 工行支付单号 |
| | | * @param type 1=微信,2=支付宝 |
| | | * @throws Exception |
| | | */ |
| | | void payOrderCrossCityCallback(Integer id, String order_id, Integer type) throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 计算已服务的实时里程 |
| | | */ |
| | | boolean calculateMileage(OrderPosition orderPosition) throws Exception; |
| | | |
| | | |
| | | List<OrderCrossCity> queryListOrder(Integer driverId, Integer lineShiftId, List<Integer> state, String day) throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 获取所有快到期的预约单(出行时间在30分钟内) |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<OrderCrossCity> queryMaturity() throws Exception; |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.server.impl; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import com.stylefeng.guns.modular.crossCity.dao.LineMapper; |
| | | import com.stylefeng.guns.modular.crossCity.dao.LineShiftDriverMapper; |
| | | import com.stylefeng.guns.modular.crossCity.dao.LineShiftMapper; |
| | | import com.stylefeng.guns.modular.crossCity.model.Line; |
| | | import com.stylefeng.guns.modular.crossCity.model.LineShift; |
| | | import com.stylefeng.guns.modular.crossCity.model.LineShiftDriver; |
| | | import com.stylefeng.guns.modular.crossCity.server.ILineService; |
| | | import com.stylefeng.guns.modular.system.util.DateUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.*; |
| | | |
| | | |
| | | @Service |
| | | public class LineServiceImpl extends ServiceImpl<LineMapper, Line> implements ILineService { |
| | | |
| | | @Resource |
| | | private LineMapper lineMapper; |
| | | |
| | | @Resource |
| | | private LineShiftMapper lineShiftMapper; |
| | | |
| | | @Resource |
| | | private LineShiftDriverMapper lineShiftDriverMapper; |
| | | |
| | | @Autowired |
| | | private DateUtil dateUtil; |
| | | |
| | | |
| | | /** |
| | | * 扫码获取司机的所有线路 |
| | | * @param driverId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public List<Map<String, Object>> scanCodeQueryLines(Integer driverId) throws Exception { |
| | | return lineMapper.scanCodeQueryLines(driverId); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取线路对应的排班数据 |
| | | * @param lineId |
| | | * @param time |
| | | * @param driverId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public List<Map<String, Object>> queryLineShiftInfo(Integer lineId, String time, Integer driverId) throws Exception { |
| | | List<LineShift> lineShifts = lineShiftMapper.queryByLineId(lineId); |
| | | Map<String, Date> date = dateUtil.getStartAndEndDate(time); |
| | | Calendar s = Calendar.getInstance(); |
| | | s.setTime(new Date()); |
| | | long timeInMillis = s.getTimeInMillis(); |
| | | List<Map<String, Object>> list = new ArrayList<>(); |
| | | for(LineShift lineShift : lineShifts){ |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("id", lineShift.getId()); |
| | | map.put("time", lineShift.getStartTime() + "-" + lineShift.getEndTime()); |
| | | List<LineShiftDriver> lineShiftDriver = lineShiftDriverMapper.queryByDriver(lineShift.getId(), driverId, date.get("startTime")); |
| | | s.set(Calendar.HOUR_OF_DAY, Integer.valueOf(lineShift.getEndTime().split(":")[0])); |
| | | s.set(Calendar.MINUTE, Integer.valueOf(lineShift.getEndTime().split(":")[1])); |
| | | long timeInMillis1 = s.getTimeInMillis(); |
| | | if(lineShiftDriver.size() == 0 && timeInMillis > timeInMillis1){ |
| | | map.put("state", 1);//不可预约 |
| | | } |
| | | if(lineShiftDriver.size() > 0){ |
| | | map.put("state", 2);//已预约 |
| | | } |
| | | map.put("state", 3);//未预约 |
| | | list.add(map); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 根据站点id获取线路 |
| | | * @param startId |
| | | * @param endId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public List<Map<String, Object>> queryLines(Integer startId, Integer endId, Integer driverId) throws Exception { |
| | | List<Map<String, Object>> list1 = lineMapper.queryLines(startId, 1); |
| | | List<Map<String, Object>> list2 = lineMapper.queryLines(endId, 2); |
| | | List<Map<String, Object>> list = new ArrayList<>(); |
| | | for(Map<String, Object> map1 : list1){ |
| | | Integer id1 = Integer.valueOf(map1.get("id").toString()); |
| | | for(Map<String, Object> map2 : list2){ |
| | | Integer id2 = Integer.valueOf(map2.get("id").toString()); |
| | | if(id1.compareTo(id2) == 0){ |
| | | map1.put("startAddress", map1.get("siteName")); |
| | | map1.put("endAddress", map2.get("siteName")); |
| | | list.add(map1); |
| | | } |
| | | } |
| | | } |
| | | if(null != driverId){ |
| | | List<Map<String, Object>> lists = new ArrayList<>(); |
| | | List<Map<String, Object>> list3 = lineMapper.scanCodeQueryLines(driverId); |
| | | for(Map<String, Object> map1 : list){ |
| | | Integer id2 = Integer.valueOf(map1.get("id").toString()); |
| | | for(Map<String, Object> map : list3){ |
| | | Integer id1 = Integer.valueOf(map.get("id").toString()); |
| | | if(id1.compareTo(id2) == 0){ |
| | | lists.add(map1); |
| | | } |
| | | } |
| | | } |
| | | list = lists; |
| | | } |
| | | return list; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.server.impl; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import com.stylefeng.guns.modular.crossCity.dao.LinePriceMapper; |
| | | import com.stylefeng.guns.modular.crossCity.dao.LineShiftDriverMapper; |
| | | import com.stylefeng.guns.modular.crossCity.dao.LineShiftMapper; |
| | | import com.stylefeng.guns.modular.crossCity.model.LineShift; |
| | | import com.stylefeng.guns.modular.crossCity.model.LineShiftDriver; |
| | | import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity; |
| | | import com.stylefeng.guns.modular.crossCity.server.ILineService; |
| | | import com.stylefeng.guns.modular.crossCity.server.ILineShiftDriverService; |
| | | import com.stylefeng.guns.modular.crossCity.server.ILineSiteService; |
| | | import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService; |
| | | import com.stylefeng.guns.modular.system.dao.CarModelMapper; |
| | | import com.stylefeng.guns.modular.system.dao.CarServiceMapper; |
| | | import com.stylefeng.guns.modular.system.dao.ServerCarModelMapper; |
| | | import com.stylefeng.guns.modular.system.model.CarModel; |
| | | import com.stylefeng.guns.modular.system.model.CarService; |
| | | import com.stylefeng.guns.modular.system.service.ICarService; |
| | | import com.stylefeng.guns.modular.system.service.IDriverService; |
| | | import com.stylefeng.guns.modular.system.util.DateUtil; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | | |
| | | @Service |
| | | public class LineShiftDriverServiceImpl extends ServiceImpl<LineShiftDriverMapper, LineShiftDriver> implements ILineShiftDriverService { |
| | | |
| | | @Resource |
| | | private LineShiftDriverMapper lineShiftDriverMapper; |
| | | |
| | | @Autowired |
| | | private DateUtil dateUtil; |
| | | |
| | | @Autowired |
| | | private ICarService carService; |
| | | |
| | | @Autowired |
| | | private IDriverService driverService; |
| | | |
| | | @Resource |
| | | private CarModelMapper carModelMapper; |
| | | |
| | | @Resource |
| | | private LineShiftMapper lineShiftMapper; |
| | | |
| | | @Resource |
| | | private LinePriceMapper linePriceMapper; |
| | | |
| | | @Resource |
| | | private CarServiceMapper carServiceMapper; |
| | | |
| | | @Autowired |
| | | private IOrderCrossCityService orderCrossCityService; |
| | | |
| | | @Autowired |
| | | private ILineService lineService; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 预约班次操作 |
| | | * @param lineShiftId |
| | | * @param time |
| | | * @param driverId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public synchronized ResultUtil reservation(Integer type, Integer lineShiftId, String time, Integer driverId) throws Exception { |
| | | Map<String, Date> date = dateUtil.getStartAndEndDate(time); |
| | | List<LineShiftDriver> startTime = lineShiftDriverMapper.queryByDriver(lineShiftId, driverId, date.get("startTime")); |
| | | if(type == 1 && startTime.size() > 0){ |
| | | return ResultUtil.error("不能重复预约"); |
| | | } |
| | | if(type == 2 && startTime.size() == 0){ |
| | | return ResultUtil.error("您还没预约呢"); |
| | | } |
| | | if(type == 1){//预约操作 |
| | | boolean b = this.judgeTime(driverId, lineShiftId, date.get("startTime")); |
| | | if(b){ |
| | | return ResultUtil.error("预约间隔超出给定可预约范围"); |
| | | } |
| | | int num = lineShiftDriverMapper.queryByDriver(lineShiftId, null, date.get("startTime")).size(); |
| | | LineShift lineShift = lineShiftMapper.selectById(lineShiftId); |
| | | Integer carNum = lineShift.getCarNum(); |
| | | if(num >= carNum){ |
| | | return ResultUtil.error("该班次已经超出了可预约车次"); |
| | | } |
| | | CarService query = carServiceMapper.query(3, driverService.selectById(driverId).getCarId()); |
| | | Map<String, Object> query1 = linePriceMapper.query(lineShift.getLineId(), query.getServerCarModelId()); |
| | | if(null == query1){ |
| | | return ResultUtil.error("该线路还未设置服务车型相关数据,请联系管理员!"); |
| | | } |
| | | CarModel carModel = carModelMapper.selectById(carService.selectById(driverService.selectById(driverId).getCarId()).getCarModelId()); |
| | | LineShiftDriver lineShiftDriver = new LineShiftDriver(); |
| | | lineShiftDriver.setLineShiftId(lineShiftId); |
| | | lineShiftDriver.setDriverId(driverId); |
| | | lineShiftDriver.setDay(date.get("startTime")); |
| | | lineShiftDriver.setLaveSeat(carModel.getSeat() - 1); |
| | | String seatNumber = ""; |
| | | for(int i = 1; i < carModel.getSeat(); i++){ |
| | | seatNumber += i + ","; |
| | | } |
| | | lineShiftDriver.setLaveSeatNumber(seatNumber.substring(0, seatNumber.length() - 1)); |
| | | lineShiftDriver.setTotalSeat(carModel.getSeat() - 1); |
| | | lineShiftDriver.setInserTime(new Date()); |
| | | lineShiftDriverMapper.insert(lineShiftDriver); |
| | | } |
| | | if(type == 2){//取消预约 |
| | | Integer id = startTime.get(0).getId(); |
| | | int i = orderCrossCityService.selectCount( |
| | | new EntityWrapper<OrderCrossCity>() |
| | | .eq("driverId", driverId) |
| | | .eq("lineShiftDriverId", id) |
| | | .eq("isDelete", 1) |
| | | .in("state", Arrays.asList(2, 3, 4, 5, 6, 7, 8, 9, 11)) |
| | | ); |
| | | if(i > 0){ |
| | | return ResultUtil.error("班次已使用,不允许取消"); |
| | | } |
| | | |
| | | lineShiftDriverMapper.deleteById(id); |
| | | } |
| | | return ResultUtil.success(); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 判断当前预约的班次时间与之前已经预约的班次时间的间隔是否大于设定的间隔时间 |
| | | * @param driverId |
| | | * @param shiftId |
| | | * @param day |
| | | * @return |
| | | */ |
| | | public boolean judgeTime(Integer driverId, Integer shiftId, Date day) throws Exception{ |
| | | //获取当前预约班次的开始时间 |
| | | LineShift lineShift = lineShiftMapper.selectById(shiftId); |
| | | String startTime = lineShift.getStartTime();//需要预约的班次开始时间 |
| | | String endTime1 = lineShift.getEndTime();//需要预约的班次结束时间 |
| | | |
| | | List<Integer> list = new ArrayList<>();//存储给定天的预约的班次 |
| | | List<LineShiftDriver> lineShiftDrivers = lineShiftDriverMapper.queryByDriver(null, driverId, day); |
| | | for(LineShiftDriver lineShiftDriver : lineShiftDrivers){ |
| | | list.add(lineShiftDriver.getLineShiftId()); |
| | | } |
| | | |
| | | if(list.size() == 0){ |
| | | return false; |
| | | } |
| | | |
| | | List<LineShift> lineShifts_ = lineShiftMapper.selectList(new EntityWrapper<LineShift>().eq("lineId", lineShift.getLineId()).eq("state", 1).orderBy("endTime")); |
| | | int index = 0;//需要预约的数据下标 |
| | | for(int i = 0; i < lineShifts_.size(); i++){ |
| | | if(startTime.equals(lineShifts_.get(i).getStartTime()) && endTime1.equals(lineShifts_.get(i).getEndTime())){ |
| | | index = i; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | //找出预约数据最近的预约了的数据 |
| | | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss"); |
| | | Integer shiftInterval = lineService.selectById(lineShift.getLineId()).getShiftInterval();//获取可预约的间隔(分钟) |
| | | long time = simpleDateFormat.parse("1999-01-01 " + startTime + ":00").getTime();//当前预约的班次的开始时间 |
| | | long time1 = simpleDateFormat.parse("1999-01-01 " + endTime1 + ":00").getTime();//当前预约的班次的结束时间 |
| | | if(index == 0 && lineShifts_.size() > 1){ |
| | | for(LineShift lineShift1 : lineShifts_){ |
| | | if(list.contains(lineShift1.getId())){ |
| | | long s = simpleDateFormat.parse("1999-01-01 " + lineShift1.getStartTime() + ":00").getTime(); |
| | | long e = simpleDateFormat.parse("1999-01-01 " + lineShift1.getEndTime() + ":00").getTime(); |
| | | if((s - time1) < (Long.valueOf(shiftInterval) * 60 * 1000)){ |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | if(index == lineShifts_.size() - 1 && lineShifts_.size() > 1){ |
| | | for(LineShift lineShift1 : lineShifts_){ |
| | | if(list.contains(lineShift1.getId())){ |
| | | long s = simpleDateFormat.parse("1999-01-01 " + lineShift1.getStartTime() + ":00").getTime(); |
| | | long e = simpleDateFormat.parse("1999-01-01 " + lineShift1.getEndTime() + ":00").getTime(); |
| | | if((time - e) < (Long.valueOf(shiftInterval) * 60 * 1000)){ |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | if(index > 0 && index < lineShifts_.size() - 1 && lineShifts_.size() > 2){ |
| | | for(int i = index + 1; i < lineShifts_.size(); i++){ |
| | | if(list.contains(lineShifts_.get(i).getId())){ |
| | | long s = simpleDateFormat.parse("1999-01-01 " + lineShifts_.get(i).getStartTime() + ":00").getTime(); |
| | | long e = simpleDateFormat.parse("1999-01-01 " + lineShifts_.get(i).getEndTime() + ":00").getTime(); |
| | | if((s - time1) < (Long.valueOf(shiftInterval) * 60 * 1000)){ |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | | for(int i = 0; i < index; i++){ |
| | | if(list.contains(lineShifts_.get(i).getId())){ |
| | | long s = simpleDateFormat.parse("1999-01-01 " + lineShifts_.get(i).getStartTime() + ":00").getTime(); |
| | | long e = simpleDateFormat.parse("1999-01-01 " + lineShifts_.get(i).getEndTime() + ":00").getTime(); |
| | | if((time - e) < (Long.valueOf(shiftInterval) * 60 * 1000)){ |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | return false; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.server.impl; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.crossCity.dao.*; |
| | | import com.stylefeng.guns.modular.crossCity.model.*; |
| | | import com.stylefeng.guns.modular.crossCity.server.ILineSiteService; |
| | | import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService; |
| | | import com.stylefeng.guns.modular.crossCity.warpper.SiteWarpper; |
| | | import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar; |
| | | import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService; |
| | | import com.stylefeng.guns.modular.system.util.DateUtil; |
| | | import com.stylefeng.guns.modular.system.util.GDMapElectricFenceUtil; |
| | | import com.stylefeng.guns.modular.system.util.RedisUtil; |
| | | import com.stylefeng.guns.modular.system.util.SystemException; |
| | | import com.stylefeng.guns.modular.taxi.model.OrderTaxi; |
| | | import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | | |
| | | @Service |
| | | public class LineSiteServiceImpl extends ServiceImpl<LineSiteMapper, LineSite> implements ILineSiteService { |
| | | |
| | | @Resource |
| | | private LineSiteMapper lineSiteMapper; |
| | | |
| | | @Resource |
| | | private SiteMapper siteMapper; |
| | | |
| | | @Resource |
| | | private LineShiftDriverMapper lineShiftDriverMapper; |
| | | |
| | | @Resource |
| | | private LineShiftMapper lineShiftMapper; |
| | | |
| | | @Resource |
| | | private LocationMapper locationMapper; |
| | | |
| | | @Autowired |
| | | private DateUtil dateUtil; |
| | | |
| | | @Autowired |
| | | private GDMapElectricFenceUtil gdMapElectricFenceUtil; |
| | | |
| | | @Autowired |
| | | private RedisUtil redisUtil; |
| | | |
| | | @Autowired |
| | | private IOrderTaxiService orderTaxiService; |
| | | |
| | | @Autowired |
| | | private IOrderPrivateCarService orderPrivateCarService; |
| | | |
| | | @Autowired |
| | | private IOrderCrossCityService orderCrossCityService; |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 根据线路id获取排班数据 |
| | | * @param lineId |
| | | * @param day |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public List<Map<String, Object>> queryDriver(Integer lineId, String day, Integer driverId) throws Exception { |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | Calendar c = Calendar.getInstance(); |
| | | c.setTime(new Date()); |
| | | c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH), 0, 0, 0); |
| | | c.set(Calendar.MILLISECOND, 0); |
| | | if(c.getTimeInMillis() > sdf.parse(day).getTime()){ |
| | | throw new SystemException("日期不能小于当天"); |
| | | } |
| | | List<Map<String, Object>> list = new ArrayList<>(); |
| | | List<LineShift> lineShifts = lineShiftMapper.queryByLineId(lineId); |
| | | List<Map<String, Object>> s = lineSiteMapper.queryDriver(lineId, sdf.parse(day), driverId); |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(sdf.parse(day)); |
| | | String vehicle = redisUtil.getValue("VEHICLE"); |
| | | List<Integer> integers = new ArrayList<>(); |
| | | if(ToolUtil.isNotEmpty(vehicle)){ |
| | | integers = JSON.parseArray(vehicle).toJavaList(Integer.class); |
| | | } |
| | | for(LineShift lineShift : lineShifts){ |
| | | boolean b = true; |
| | | String[] split = lineShift.getEndTime().split(":"); |
| | | calendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0])); |
| | | calendar.set(Calendar.MINUTE, Integer.valueOf(split[1])); |
| | | if(calendar.getTimeInMillis() < System.currentTimeMillis()){//结束时间小于当前时间不显示 |
| | | continue; |
| | | } |
| | | |
| | | Map<String, Object> data = new HashMap<>(); |
| | | for(Map<String, Object> map : s){ |
| | | //先判断司机是否在限制接单范围内 |
| | | boolean bo = false; |
| | | for(Integer integer : integers){ |
| | | if(integer.compareTo(Integer.valueOf(map.get("driverId").toString())) == 0){ |
| | | bo = true; |
| | | break; |
| | | } |
| | | } |
| | | if(bo){ |
| | | continue; |
| | | } |
| | | |
| | | int i = orderTaxiService.selectCount(new EntityWrapper<OrderTaxi>().eq("driverId", map.get("driverId")).in("state", Arrays.asList(2, 3, 4, 5, 11)).eq("DATE_FORMAT(travelTime, '%Y-%m-%d')", day)); |
| | | if(i > 0){ |
| | | continue; |
| | | } |
| | | i = orderPrivateCarService.selectCount(new EntityWrapper<OrderPrivateCar>().eq("driverId", map.get("driverId")).in("state", Arrays.asList(2, 3, 4, 5, 11)).eq("DATE_FORMAT(travelTime, '%Y-%m-%d')", day)); |
| | | if(i > 0){ |
| | | continue; |
| | | } |
| | | List<OrderCrossCity> driverId1 = orderCrossCityService.queryListOrder(Integer.valueOf(map.get("driverId").toString()), lineShift.getId(), Arrays.asList(5), day); |
| | | if(driverId1.size() > 0){ |
| | | continue; |
| | | } |
| | | if(Integer.valueOf(map.get("laveSeat").toString()) <= 0){ |
| | | continue; |
| | | } |
| | | if(lineShift.getId().intValue() == Integer.valueOf(map.get("id").toString()).intValue()){ |
| | | b = false; |
| | | String content = map.get("content").toString(); |
| | | JSONObject jsonObject = JSON.parseObject(content); |
| | | map.put("price", jsonObject.getString("num1")); |
| | | data = map; |
| | | list.add(data); |
| | | } |
| | | } |
| | | if(b){ |
| | | data.put("id", lineShift.getId()); |
| | | data.put("startTime", lineShift.getStartTime()); |
| | | list.add(data); |
| | | } |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 根据司机排班数据id获取数据(剩余座位号和总座位数) |
| | | * @param id |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public Map<String, Object> querySeat(Integer id) throws Exception { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(id); |
| | | map.put("totalNumber", lineShiftDriver.getTotalSeat()); |
| | | map.put("number", lineShiftDriver.getLaveSeat()); |
| | | map.put("content", lineShiftDriver.getLaveSeatNumber()); |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 获取线路班次及司机预约情况 |
| | | * @param lineId |
| | | * @param time |
| | | * @param driverId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public List<Map<String, Object>> queryLineShiftInfo(Integer lineId, String time, Integer driverId) throws Exception { |
| | | List<LineShift> lineShifts = lineShiftMapper.selectList(new EntityWrapper<LineShift>().eq("lineId", lineId).eq("state", 1).orderBy("startTime")); |
| | | List<Map<String, Object>> list = new ArrayList<>(); |
| | | Map<String, Date> date = dateUtil.getStartAndEndDate(time); |
| | | for(LineShift lineShift : lineShifts){ |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("id", lineShift.getId()); |
| | | map.put("time", lineShift.getStartTime() + "-" + lineShift.getEndTime()); |
| | | map.put("state", 3); |
| | | List<LineShiftDriver> lineShiftDrivers = lineShiftDriverMapper.queryByDriver(lineShift.getId(), null, (null != date ? date.get("startTime") : null)); |
| | | if(lineShiftDrivers.size() >= lineShift.getCarNum()){ |
| | | map.put("state", 1); |
| | | } |
| | | lineShiftDrivers = lineShiftDriverMapper.queryByDriver(lineShift.getId(), driverId, (null != date ? date.get("startTime") : null)); |
| | | if(lineShiftDrivers.size() > 0){ |
| | | map.put("state", 2); |
| | | } |
| | | |
| | | //判断时间(当天时间已经过了的班次) |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | if(time.trim().equals(sdf.format(new Date()))){ |
| | | Calendar s = Calendar.getInstance(); |
| | | String[] split = lineShift.getEndTime().split(":"); |
| | | s.setTime(new Date()); |
| | | s.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0])); |
| | | s.set(Calendar.MINUTE, Integer.valueOf(split[1])); |
| | | if(s.getTimeInMillis() < System.currentTimeMillis()){ |
| | | map.put("state", 1); |
| | | } |
| | | } |
| | | |
| | | list.add(map); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取站点 |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public List<SiteWarpper> querySite(Integer startSiteId) throws Exception { |
| | | List<Map<String, Object>> sites = null; |
| | | if(null == startSiteId){ |
| | | sites = siteMapper.querySite(null); |
| | | }else{ |
| | | sites = siteMapper.querySite(startSiteId); |
| | | } |
| | | Set<String> set = new HashSet<>(); |
| | | for(Map<String, Object> site : sites) { |
| | | set.add(site.get("cityCode").toString()); |
| | | } |
| | | |
| | | List<SiteWarpper> list = new ArrayList<>(); |
| | | for(String c : set){ |
| | | SiteWarpper siteWarpper = new SiteWarpper(); |
| | | List<Object> data = new ArrayList<>(); |
| | | String name = ""; |
| | | String code = ""; |
| | | for(Map<String, Object> s : sites){ |
| | | if(c.equals(s.get("cityCode").toString())){ |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("id", s.get("id")); |
| | | map.put("name", s.get("name").toString()); |
| | | name = s.get("cityName").toString(); |
| | | code = s.get("cityCode").toString(); |
| | | data.add(map); |
| | | } |
| | | } |
| | | siteWarpper.setName(name); |
| | | siteWarpper.setCode(code); |
| | | siteWarpper.setSites(data); |
| | | list.add(siteWarpper); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 根据站点id获取地点区域 |
| | | * @param siteId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public List<Map<String, Object>> queryLocation(Integer siteId) throws Exception { |
| | | return locationMapper.queryLocation(siteId); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 判断点是都在区域范围内 |
| | | * @param siteId |
| | | * @param code |
| | | * @param lonLat |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public boolean areaMonitoring(Integer siteId, String code, String lonLat) throws Exception { |
| | | List<Map<String, Object>> list = this.queryLocation(siteId); |
| | | for(Map<String, Object> map : list){ |
| | | if(Integer.valueOf(map.get("type").toString()) == 1){//行政区域 |
| | | if(null != map.get("districtCode")){ |
| | | if(code.equals(map.get("districtCode").toString())){ |
| | | return true; |
| | | } |
| | | continue; |
| | | } |
| | | if(null != map.get("cityCode")){ |
| | | if(code.equals(map.get("cityCode").toString())){ |
| | | return true; |
| | | } |
| | | code = code.substring(0, 4) + "00"; |
| | | if(code.equals(map.get("cityCode").toString())){ |
| | | return true; |
| | | } |
| | | continue; |
| | | } |
| | | if(null != map.get("provinceCode")){ |
| | | code = code.substring(0, 2) + "0000"; |
| | | if(code.equals(map.get("provinceCode").toString())){ |
| | | return true; |
| | | } |
| | | continue; |
| | | } |
| | | } |
| | | if(Integer.valueOf(map.get("type").toString()) == 2){//电子围栏 |
| | | String gid = map.get("gid").toString(); |
| | | List<String> list1 = gdMapElectricFenceUtil.monitorElectricFenc("", lonLat); |
| | | if(list1.contains(gid)){ |
| | | return true; |
| | | } |
| | | continue; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.server.impl; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import com.stylefeng.guns.core.shiro.ShiroKit; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.crossCity.dao.LinePriceMapper; |
| | | import com.stylefeng.guns.modular.crossCity.dao.LineShiftDriverMapper; |
| | | import com.stylefeng.guns.modular.crossCity.dao.OrderCrossCityMapper; |
| | | import com.stylefeng.guns.modular.crossCity.model.Line; |
| | | import com.stylefeng.guns.modular.crossCity.model.LineShiftDriver; |
| | | import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity; |
| | | import com.stylefeng.guns.modular.crossCity.server.ILineService; |
| | | import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService; |
| | | import com.stylefeng.guns.modular.crossCity.warpper.OrderCrossCityWarpper; |
| | | import com.stylefeng.guns.modular.specialTrain.dao.OrderPrivateCarMapper; |
| | | import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar; |
| | | import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService; |
| | | import com.stylefeng.guns.modular.system.dao.PhoneMapper; |
| | | import com.stylefeng.guns.modular.system.dao.RegionMapper; |
| | | import com.stylefeng.guns.modular.system.dao.SysIntegralMapper; |
| | | import com.stylefeng.guns.modular.system.dao.UserInfoMapper; |
| | | import com.stylefeng.guns.modular.system.model.*; |
| | | import com.stylefeng.guns.modular.system.service.*; |
| | | import com.stylefeng.guns.modular.system.util.*; |
| | | import com.stylefeng.guns.modular.system.warpper.BaseWarpper; |
| | | import com.stylefeng.guns.modular.taxi.dao.OrderTaxiMapper; |
| | | import com.stylefeng.guns.modular.taxi.model.OrderTaxi; |
| | | import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Isolation; |
| | | import org.springframework.transaction.annotation.Propagation; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.io.File; |
| | | import java.io.FileWriter; |
| | | import java.io.PrintWriter; |
| | | import java.math.BigDecimal; |
| | | import java.math.MathContext; |
| | | import java.math.RoundingMode; |
| | | import java.util.*; |
| | | |
| | | |
| | | @Service |
| | | @Transactional(isolation = Isolation.READ_UNCOMMITTED, propagation = Propagation.REQUIRED, rollbackFor = Exception.class) |
| | | public class OrderCrossCityServiceImpl extends ServiceImpl<OrderCrossCityMapper, OrderCrossCity> implements IOrderCrossCityService { |
| | | |
| | | @Resource |
| | | private OrderCrossCityMapper orderCrossCityMapper; |
| | | |
| | | @Resource |
| | | private LineShiftDriverMapper lineShiftDriverMapper; |
| | | |
| | | @Autowired |
| | | private ILineService lineService; |
| | | |
| | | @Autowired |
| | | private ISystemNoticeService systemNoticeService; |
| | | |
| | | @Autowired |
| | | private PushUtil pushUtil; |
| | | |
| | | @Autowired |
| | | private IIncomeService incomeService; |
| | | |
| | | @Autowired |
| | | private IDriverService driverService; |
| | | |
| | | @Resource |
| | | private UserInfoMapper userInfoMapper; |
| | | |
| | | @Autowired |
| | | private DateUtil dateUtil; |
| | | |
| | | @Resource |
| | | private LinePriceMapper linePriceMapper; |
| | | |
| | | @Autowired |
| | | private GDMapGeocodingUtil gdMapGeocodingUtil; |
| | | |
| | | @Autowired |
| | | private GDFalconUtil gdFalconUtil; |
| | | |
| | | @Resource |
| | | private RegionMapper regionMapper; |
| | | |
| | | @Autowired |
| | | private ChinaMobileUtil chinaMobileUtil; |
| | | |
| | | // @Autowired |
| | | // private ICBCPayUtil icbcPayUtil; |
| | | |
| | | @Autowired |
| | | private ITransactionDetailsService transactionDetailsService; |
| | | |
| | | @Autowired |
| | | private GDMapElectricFenceUtil gdMapElectricFenceUtil; |
| | | |
| | | @Autowired |
| | | private IPaymentRecordService paymentRecordService; |
| | | |
| | | @Resource |
| | | private SysIntegralMapper sysIntegralMapper; |
| | | |
| | | @Resource |
| | | private OrderPrivateCarMapper orderPrivateCarMapper; |
| | | |
| | | @Resource |
| | | private OrderTaxiMapper orderTaxiMapper; |
| | | |
| | | @Resource |
| | | private PhoneMapper phoneMapper; |
| | | |
| | | @Autowired |
| | | private IOrderPositionService orderPositionService; |
| | | |
| | | @Autowired |
| | | private PushMinistryOfTransportUtil pushMinistryOfTransportUtil; |
| | | |
| | | @Autowired |
| | | private IOrderCancelService orderCancelService; |
| | | |
| | | @Autowired |
| | | private GeodesyUtil geodesyUtil; |
| | | |
| | | @Autowired |
| | | private PayMoneyUtil payMoneyUtil; |
| | | |
| | | @Value("${filePath}") |
| | | private String filePath; |
| | | |
| | | @Value("${pushMinistryOfTransport}") |
| | | private boolean pushMinistryOfTransport; |
| | | |
| | | @Value("${callbackPath}") |
| | | private String callbackPath; |
| | | |
| | | |
| | | /** |
| | | * 获取司机抢单页面的订单详情 |
| | | * @param orderId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public Map<String, Object> queryPushOrder(Integer orderId) throws Exception { |
| | | return orderCrossCityMapper.queryPushOrder(orderId); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取司机端首页订单列表 |
| | | * @param state 1=服务中,2=待服务(30分钟定义预约) |
| | | * @param driverId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public List<Map<String, Object>> queryOrderList(Integer state, Integer driverId) throws Exception { |
| | | return orderCrossCityMapper.queryOrderList(state, driverId); |
| | | } |
| | | |
| | | /** |
| | | * 获取我的订单列表数据 |
| | | * @param state 1=全部,2=待支付,3=已取消 |
| | | * @param uid |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public List<Map<String, Object>> queryMyAllOrder(Integer state, Integer uid) throws Exception { |
| | | return orderCrossCityMapper.queryMyAllOrder(state, uid); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取订单详情页(服务中的页面) |
| | | * @param orderId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public Map<String, Object> queryOrderInfo(Integer orderId) throws Exception { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | OrderCrossCity orderCrossCity = this.selectById(orderId); |
| | | List<Map<String, Object>> order = orderCrossCityMapper.queryOrderInfo(orderCrossCity.getOrderNum()); |
| | | int num = 0; |
| | | Double serverMoney = 0D; |
| | | Double totalMoney = 0D; |
| | | for(Map<String, Object> m : order){ |
| | | num += Integer.valueOf(m.get("peopleNumber").toString()); |
| | | totalMoney += Double.valueOf(m.get("payMoney").toString()); |
| | | List<Income> incomes = incomeService.queryData(1, null, 2, Integer.valueOf(m.get("orderId").toString()), 3); |
| | | for (Income income : incomes){ |
| | | serverMoney += income.getMoney(); |
| | | } |
| | | } |
| | | Line line = lineService.selectById(orderCrossCity.getLineId()); |
| | | |
| | | map.put("line", line.getName()); |
| | | map.put("peopleNumber", num); |
| | | map.put("orderNumber", orderCrossCity.getOrderNum()); |
| | | map.put("totalMoney", new BigDecimal(totalMoney).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | map.put("serverMoney", new BigDecimal(serverMoney).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | Phone phone = phoneMapper.queryInfo(Integer.valueOf(order.get(0).get("companyId").toString()), 1); |
| | | map.put("emergencyCall", null != phone ? phone.getPhone() : "110"); |
| | | map.put("orders", JSON.toJSONString(order)); |
| | | return map; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 走订单流程操作 |
| | | * @param orderId |
| | | * @param state |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public ResultUtil process(Integer orderId, Integer state, Double lon, Double lat, String address) throws Exception { |
| | | OrderCrossCity orderCrossCity = this.selectById(orderId); |
| | | switch (state){ |
| | | case 3://出发前往预约点 |
| | | orderCrossCity.setState(3); |
| | | orderCrossCity.setSetOutTime(new Date()); |
| | | systemNoticeService.addSystemNotice(1, "司机已出发,请耐心等待", orderCrossCity.getUserId()); |
| | | break; |
| | | case 4://到达预约点,等待客户上车 |
| | | orderCrossCity.setState(4); |
| | | orderCrossCity.setArriveTime(new Date()); |
| | | systemNoticeService.addSystemNotice(1, "司机已到达您设置的预约地点,请及时上车", orderCrossCity.getUserId()); |
| | | break; |
| | | case 5://开始服务 |
| | | orderCrossCity.setBoardingLon(lon); |
| | | orderCrossCity.setBoardingLat(lat); |
| | | orderCrossCity.setBoardingAddress(address); |
| | | orderCrossCity.setBoardingTime(new Date()); |
| | | orderCrossCity.setState(5); |
| | | orderCrossCity.setStartServiceTime(new Date()); |
| | | |
| | | pushUtil.pushDriverPosition(orderCrossCity.getId(), 3);//主动推送司机定位 |
| | | break; |
| | | case 6://结束服务 |
| | | orderCrossCity.setGetoffLon(lon); |
| | | orderCrossCity.setGetoffLat(lat); |
| | | orderCrossCity.setGetoffAddress(address); |
| | | orderCrossCity.setGetoffTime(new Date()); |
| | | orderCrossCity.setState(8);//跨城直接到待评价 |
| | | orderCrossCity.setEndServiceTime(new Date()); |
| | | |
| | | //还原座位数 |
| | | LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCity.getLineShiftDriverId()); |
| | | lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber()); |
| | | lineShiftDriver.setLaveSeatNumber( |
| | | (ToolUtil.isNotEmpty(lineShiftDriver.getLaveSeatNumber()) ? lineShiftDriver.getLaveSeatNumber() + "," : "") + |
| | | orderCrossCity.getSeatNumber() |
| | | ); |
| | | lineShiftDriverMapper.updateById(lineShiftDriver); |
| | | |
| | | //修改司机空闲状态 |
| | | List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.queryWithin30Minutes(orderCrossCity.getDriverId(), 2, 3, 4, 5, 11); |
| | | if(orderCrossCities.size() == 0){ |
| | | Driver driver = driverService.selectById(orderCrossCity.getDriverId()); |
| | | driver.setState(2); |
| | | driverService.updateById(driver); |
| | | } |
| | | |
| | | pushUtil.removeTask(orderId, 3);//删除定时任务,结束推送数据 |
| | | systemNoticeService.addSystemNotice(1, "司机已结束本次行程,谢谢使用", orderCrossCity.getUserId()); |
| | | break; |
| | | } |
| | | this.updateById(orderCrossCity); |
| | | |
| | | // TODO: 2020/6/5 推送状态 |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | pushUtil.pushOrderState(1, orderCrossCity.getUserId(), orderCrossCity.getId(), 2, orderCrossCity.getState()); |
| | | pushUtil.pushOrderState(2, orderCrossCity.getDriverId(), orderCrossCity.getId(), 2, orderCrossCity.getState()); |
| | | } |
| | | }).start(); |
| | | return ResultUtil.success(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取订单明细 |
| | | * @param orderId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public Map<String, Object> queryOrderCrossCityInfo(Integer orderId) throws Exception { |
| | | return orderCrossCityMapper.queryOrderCrossCityInfo(orderId); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 修改订单顺序 |
| | | * @param orderId |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public void setOrderCrossCitySort(Integer orderId) throws Exception { |
| | | OrderCrossCity orderCrossCity = this.selectById(orderId); |
| | | List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.selectList(new EntityWrapper<OrderCrossCity>().eq("orderNum", orderCrossCity.getOrderNum()).ne("state", 10).orderBy("sort")); |
| | | for(int i = 0; i < orderCrossCities.size(); i++){ |
| | | if(orderCrossCities.get(i).getId().compareTo(orderId) == 0){ |
| | | if(i == 0){ |
| | | break; |
| | | } |
| | | OrderCrossCity orderCrossCity2 = orderCrossCities.get(i); |
| | | Integer sort = orderCrossCity2.getSort(); |
| | | OrderCrossCity orderCrossCity1 = orderCrossCities.get(i - 1); |
| | | orderCrossCity2.setSort(orderCrossCity1.getSort()); |
| | | orderCrossCity1.setSort(sort); |
| | | orderCrossCityMapper.updateById(orderCrossCity2); |
| | | orderCrossCityMapper.updateById(orderCrossCity1); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 跨城下单操作 |
| | | * @param orderCrossCityWarpper |
| | | * @param uid |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public synchronized ResultUtil<BaseWarpper> orderCrossCity(OrderCrossCityWarpper orderCrossCityWarpper, Integer uid) throws Exception { |
| | | /** |
| | | * 先判断司机座位数是否符合出行人数 |
| | | */ |
| | | LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCityWarpper.getLineShiftDriverId()); |
| | | if(orderCrossCityWarpper.getTravelMode() == 1){ |
| | | if(lineShiftDriver.getLaveSeat() < orderCrossCityWarpper.getPeopleNumber()){ |
| | | return ResultUtil.error("司机剩余座位数小于出行人数"); |
| | | } |
| | | }else{ |
| | | if(lineShiftDriver.getLaveSeat() != lineShiftDriver.getTotalSeat()){ |
| | | return ResultUtil.error("司机车辆上已经有人占座了,不能下包车订单"); |
| | | } |
| | | if(lineShiftDriver.getLaveSeat() == 0){ |
| | | return ResultUtil.error("司机剩余座位数不足"); |
| | | } |
| | | } |
| | | Driver driver = driverService.selectById(orderCrossCityWarpper.getDriverId()); |
| | | if(driver.getState() == 1){ |
| | | return ResultUtil.error("司机处于离线状态"); |
| | | } |
| | | OrderCrossCity orderCrossCity = new OrderCrossCity(); |
| | | UserInfo userInfo = userInfoMapper.queryByPhone(orderCrossCityWarpper.getPassengersPhone()); |
| | | if(userInfo == null){//添加用户信息 |
| | | userInfo = new UserInfo(); |
| | | Integer integer = userInfoMapper.selectCount(null) + 1000001; |
| | | userInfo.setNickName(ToolUtil.isNotEmpty(orderCrossCityWarpper.getPassengers()) ? orderCrossCityWarpper.getPassengers() : "OK" + String.valueOf(integer).substring(1)); |
| | | userInfo.setName(orderCrossCityWarpper.getPassengers()); |
| | | userInfo.setPhone(orderCrossCityWarpper.getPassengersPhone()); |
| | | userInfo.setPassWord(ShiroKit.md5("", "&a.s")); |
| | | userInfo.setState(1); |
| | | userInfo.setFlag(1); |
| | | userInfo.setInsertTime(new Date()); |
| | | userInfo.setInsertUser(uid); |
| | | userInfoMapper.insert(userInfo); |
| | | } |
| | | orderCrossCity.setUserId(userInfo.getId()); |
| | | |
| | | /** |
| | | * 1.下了即时单就不能下预约单和即时单 |
| | | * 2.下了预约单和再下一张即时单不能再下预约单 |
| | | */ |
| | | List<OrderPrivateCar> orderPrivateCars = orderPrivateCarMapper.queryByState(orderCrossCity.getUserId(), 1, 1, 1, 2, 3, 4, 5, 6, 7, 11); |
| | | if(orderPrivateCars.size() > 0){ |
| | | return ResultUtil.error("有未完成的订单"); |
| | | } |
| | | List<OrderTaxi> list = orderTaxiMapper.queryByState_(orderCrossCity.getUserId(), 1, 1, 1, 2, 3, 4, 5, 6, 11); |
| | | if(list.size() > 0){ |
| | | return ResultUtil.error("有未完成的订单"); |
| | | } |
| | | List<OrderCrossCity> orderCrossCities1 = orderCrossCityMapper.queryByState(orderCrossCity.getUserId(), 1, 2, 3, 4, 5, 7, 11); |
| | | if(orderCrossCities1.size() > 0){ |
| | | return ResultUtil.error("有未完成的订单"); |
| | | } |
| | | |
| | | List<OrderCrossCity> orderCrossCities2 = orderCrossCityMapper.queryOrders(orderCrossCityWarpper.getDriverId(), orderCrossCityWarpper.getLineShiftDriverId(), Arrays.asList(5)); |
| | | if(orderCrossCities2.size() > 0){ |
| | | return ResultUtil.error("司机正在服务中"); |
| | | } |
| | | |
| | | |
| | | orderCrossCity.setPassengers(orderCrossCityWarpper.getPassengers()); |
| | | orderCrossCity.setPassengersPhone(orderCrossCityWarpper.getPassengersPhone()); |
| | | orderCrossCity.setServerCarModelId(orderCrossCityWarpper.getServerCarModelId()); |
| | | orderCrossCity.setDriverId(orderCrossCityWarpper.getDriverId()); |
| | | orderCrossCity.setLineId(orderCrossCityWarpper.getLineId()); |
| | | orderCrossCity.setCarId(orderCrossCityWarpper.getCarId()); |
| | | orderCrossCity.setOrderNum(this.getOrderNum(orderCrossCityWarpper.getDriverId(), orderCrossCityWarpper.getLineShiftDriverId())); |
| | | orderCrossCity.setPlacementLon(orderCrossCityWarpper.getPlacementLon()); |
| | | orderCrossCity.setPlacementLat(orderCrossCityWarpper.getPlacementLat()); |
| | | String placementAddress = orderCrossCityWarpper.getPlacementAddress(); |
| | | placementAddress = placementAddress.replaceAll("& #40;", "("); |
| | | placementAddress = placementAddress.replaceAll("& #41;", ")"); |
| | | orderCrossCity.setPlacementAddress(placementAddress); |
| | | orderCrossCity.setStartLon(orderCrossCityWarpper.getStartLon()); |
| | | orderCrossCity.setStartLat(orderCrossCityWarpper.getStartLat()); |
| | | String startAddress = orderCrossCityWarpper.getStartAddress(); |
| | | startAddress = startAddress.replaceAll("& #40;", "("); |
| | | startAddress = startAddress.replaceAll("& #41;", ")"); |
| | | orderCrossCity.setStartAddress(startAddress); |
| | | orderCrossCity.setEndLon(orderCrossCityWarpper.getEndLon()); |
| | | orderCrossCity.setEndLat(orderCrossCityWarpper.getEndLat()); |
| | | String endAddress = orderCrossCityWarpper.getEndAddress(); |
| | | endAddress = endAddress.replaceAll("& #40;", "("); |
| | | endAddress = endAddress.replaceAll("& #41;", ")"); |
| | | orderCrossCity.setEndAddress(endAddress); |
| | | orderCrossCity.setMileage(0D); |
| | | ResultUtil<Map<String, Object>> price = this.getPrice(orderCrossCityWarpper.getDistance(), orderCrossCityWarpper.getPeopleNumber(), orderCrossCityWarpper.getTravelMode(), orderCrossCityWarpper.getLineId(), |
| | | orderCrossCityWarpper.getServerCarModelId(), orderCrossCityWarpper.getTotalSeat(), orderCrossCityWarpper.getSeatNumber()); |
| | | Double money = Double.valueOf(price.getData().get("price").toString()); |
| | | orderCrossCity.setOrderMoney(money); |
| | | Integer companyId = driver.getCompanyId(); |
| | | orderCrossCity.setCompanyId(companyId); |
| | | orderCrossCity.setPeopleNumber(orderCrossCityWarpper.getPeopleNumber()); |
| | | orderCrossCity.setSeatNumber(orderCrossCityWarpper.getSeatNumber()); |
| | | List<OrderCrossCity> orderCrossCities = this.selectList(new EntityWrapper<OrderCrossCity>().eq("orderNum", orderCrossCity.getOrderNum()).eq("isDelete", 1)); |
| | | orderCrossCity.setSort(orderCrossCities.size() + 1); |
| | | orderCrossCity.setState(7);//待支付 |
| | | orderCrossCity.setInsertTime(new Date()); |
| | | orderCrossCity.setTravelTime(orderCrossCityWarpper.getTravelTime()); |
| | | orderCrossCity.setSnatchOrderTime(new Date()); |
| | | orderCrossCity.setTravelMode(orderCrossCityWarpper.getTravelMode()); |
| | | orderCrossCity.setOrderSource(orderCrossCityWarpper.getOrderSource()); |
| | | orderCrossCity.setIsDelete(1); |
| | | orderCrossCity.setIsReassign(1); |
| | | orderCrossCity.setLineShiftDriverId(orderCrossCityWarpper.getLineShiftDriverId()); |
| | | //调用高德创建轨迹 |
| | | String s = gdFalconUtil.selectTerminal(driver.getPhone()); |
| | | String track = gdFalconUtil.createTrack(s); |
| | | orderCrossCity.setTrackId(track); |
| | | |
| | | //调用移动的小号接口 |
| | | // Map<String, String> geocode = gdMapGeocodingUtil.geocode(orderCrossCity.getStartLon().toString(), orderCrossCity.getStartLat().toString()); |
| | | // Region region = regionMapper.query(geocode.get("districtCode")); |
| | | // Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderCrossCity.getPassengersPhone(), driver.getPhone(), Integer.valueOf(region.getCitycode().substring(1))); |
| | | // if(String.valueOf(map.get("code")).equals("200")){ |
| | | // orderCrossCity.setTelX(map.get("telX")); |
| | | // orderCrossCity.setBindId(map.get("bindId")); |
| | | // } |
| | | if(orderCrossCityWarpper.getTravelMode() == 2){//包车 |
| | | orderCrossCity.setSeatNumber(lineShiftDriver.getLaveSeatNumber()); |
| | | orderCrossCity.setPeopleNumber(lineShiftDriver.getLaveSeat()); |
| | | } |
| | | this.insert(orderCrossCity); |
| | | |
| | | if(driver.getState() == 2){ |
| | | driver.setState(3); |
| | | driverService.updateById(driver); |
| | | } |
| | | |
| | | //修改预约班次的数据 |
| | | if(orderCrossCity.getTravelMode() == 2){//包车 |
| | | lineShiftDriver.setLaveSeat(0); |
| | | lineShiftDriver.setLaveSeatNumber(""); |
| | | }else{//拼车 |
| | | lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() - orderCrossCity.getPeopleNumber()); |
| | | String[] split = orderCrossCity.getSeatNumber().split(","); |
| | | String[] split1 = lineShiftDriver.getLaveSeatNumber().split(","); |
| | | String seatNumber = ""; |
| | | //先判断选中座位号和剩余座位号是否匹配 |
| | | for(String spl : split){ |
| | | boolean b = true; |
| | | for(String sp : split1){ |
| | | if(ToolUtil.isNotEmpty(spl) && ToolUtil.isNotEmpty(sp) && sp.equals(spl)){ |
| | | b = false; |
| | | break; |
| | | } |
| | | } |
| | | if(b){ |
| | | throw new SystemException("您选中的" + spl + "号座位已被占用,请选择其他座位!"); |
| | | } |
| | | } |
| | | for(String sp : split1){ |
| | | boolean b = true; |
| | | for(String spl : split){ |
| | | if(ToolUtil.isNotEmpty(spl) && ToolUtil.isNotEmpty(sp) && sp.equals(spl)){ |
| | | b = false; |
| | | break; |
| | | } |
| | | } |
| | | if(b && ToolUtil.isNotEmpty(sp)){ |
| | | seatNumber += (sp + ","); |
| | | } |
| | | } |
| | | lineShiftDriver.setLaveSeatNumber(ToolUtil.isNotEmpty(seatNumber) ? seatNumber.substring(0, seatNumber.length() - 1) : ""); |
| | | } |
| | | lineShiftDriverMapper.updateById(lineShiftDriver); |
| | | |
| | | //添加消息 |
| | | systemNoticeService.addSystemNotice(1, "您的直通车订单已下单成功!", orderCrossCity.getUserId()); |
| | | |
| | | BaseWarpper baseWarpper = new BaseWarpper(); |
| | | baseWarpper.setId(orderCrossCity.getId()); |
| | | baseWarpper.setAmount(orderCrossCity.getOrderMoney()); |
| | | |
| | | //创建定时任务,取消订单30分钟 |
| | | TimerTask timerTask = new TimerTask() { |
| | | @Override |
| | | public void run() { |
| | | OrderCrossCity orderCrossCity1 = orderCrossCityMapper.selectById(orderCrossCity.getId()); |
| | | if(orderCrossCity1.getState() == 7 && orderCrossCity1.getPayMoney() == null){ |
| | | orderCrossCity1.setState(10); |
| | | orderCrossCityMapper.updateById(orderCrossCity1); |
| | | |
| | | OrderCancel orderCancel = new OrderCancel(); |
| | | orderCancel.setOrderId(orderCrossCity.getId()); |
| | | orderCancel.setOrderType(3); |
| | | orderCancel.setReason("用户未及时付款,系统自动取消订单"); |
| | | orderCancel.setRemark("用户未及时付款,系统自动取消订单"); |
| | | orderCancel.setState(2); |
| | | orderCancel.setInsertTime(new Date()); |
| | | orderCancel.setUserType(2); |
| | | orderCancelService.insert(orderCancel); |
| | | |
| | | //修改司机座位 |
| | | LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCity.getLineShiftDriverId()); |
| | | lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber()); |
| | | lineShiftDriver.setLaveSeatNumber(lineShiftDriver.getLaveSeatNumber() + (orderCrossCity.getTravelMode() == 1 ? "," : "") + orderCrossCity.getSeatNumber()); |
| | | lineShiftDriverMapper.updateById(lineShiftDriver); |
| | | |
| | | //修改司机为空闲 |
| | | List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.queryByDriverId(orderCrossCity.getDriverId(), 2, 3, 4, 5, 11); |
| | | if(orderCrossCities.size() == 0){ |
| | | Driver driver = driverService.selectById(orderCrossCity.getDriverId()); |
| | | driver.setState(2); |
| | | driverService.updateById(driver); |
| | | } |
| | | } |
| | | } |
| | | }; |
| | | Timer timer = new Timer(); |
| | | timer.schedule(timerTask, 30 * 60 * 1000); |
| | | |
| | | return ResultUtil.success(baseWarpper); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 扫码支付回调处理 |
| | | * @param orderId 订单id |
| | | * @param order_id 工行订单号 |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public void generatePayCallback(Integer orderId, String order_id) throws Exception { |
| | | OrderCrossCity orderCrossCity = orderCrossCityMapper.selectById(orderId); |
| | | orderCrossCity.setPayManner(1); |
| | | orderCrossCity.setPayMoney(orderCrossCity.getOrderMoney()); |
| | | orderCrossCity.setState(2); |
| | | orderCrossCityMapper.updateById(orderCrossCity); |
| | | |
| | | paymentRecordService.saveData(1, orderCrossCity.getDriverId(), orderCrossCity.getPayType(), orderId, 3, 2, orderCrossCity.getPayMoney(), order_id, 2);//添加预支付数据 |
| | | |
| | | //添加交易明细 |
| | | transactionDetailsService.saveData(orderCrossCity.getUserId(), "订单完成支付", orderCrossCity.getOrderMoney(), 2, 1, 1, 3, orderId); |
| | | |
| | | //添加已收入明细 |
| | | Line line = lineService.selectById(orderCrossCity.getLineId()); |
| | | Double speMoney = Double.valueOf(line.getRakeRate()); |
| | | BigDecimal d = new BigDecimal(orderCrossCity.getOrderMoney()).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_EVEN);//企业收入 |
| | | BigDecimal c = new BigDecimal(orderCrossCity.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);//司机收入 |
| | | incomeService.saveData(1, orderCrossCity.getCompanyId(), 2, orderCrossCity.getId(), 1, d.doubleValue()); |
| | | incomeService.saveData(2, orderCrossCity.getDriverId(), 2, orderCrossCity.getId(), 1, c.doubleValue()); |
| | | Driver driver = driverService.selectById(orderCrossCity.getDriverId()); |
| | | driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | driverService.updateById(driver); |
| | | |
| | | // TODO: 2020/5/24 这里需要给司机和用户推送订单状态 |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | pushUtil.pushOrderState(1, orderCrossCity.getUserId(), orderCrossCity.getId(), 3, orderCrossCity.getState()); |
| | | pushUtil.pushOrderState(2, orderCrossCity.getDriverId(), orderCrossCity.getId(), 3, orderCrossCity.getState()); |
| | | pushUtil.pushDriverPosition(orderCrossCity.getId(), 3); |
| | | } |
| | | }).start(); |
| | | |
| | | systemNoticeService.addSystemNotice(1, "您已成功完成出行订单支付,谢谢使用!", orderCrossCity.getUserId()); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 计算支付金额 |
| | | * @param startLonLat |
| | | * @param endLonLat |
| | | * @param peopleNumber |
| | | * @param travelMode |
| | | * @param lineId |
| | | * @param serverCarModelId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public ResultUtil queryOrderMoney(String startLonLat, String endLonLat, Integer peopleNumber, Integer travelMode, Integer lineId, |
| | | Integer serverCarModelId, Integer totalSeat, String seatNumber) throws Exception { |
| | | Map<String, String> distance = gdMapElectricFenceUtil.getDistance(startLonLat, endLonLat, 1);//调用高德计算距离 |
| | | if(null != distance){ |
| | | return this.getPrice(Double.valueOf(distance.get("distance")), peopleNumber, travelMode, lineId, serverCarModelId, totalSeat, seatNumber); |
| | | } |
| | | return ResultUtil.error("计算行程距离出错啦!"); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 订单支付 |
| | | * @param payType |
| | | * @param orderId |
| | | * @param couponId |
| | | * @param type |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public ResultUtil payCrossCityOrder(Integer payType, Integer orderId, Integer couponId, Integer type) throws Exception { |
| | | OrderCrossCity orderCrossCity = this.selectById(orderId); |
| | | if(orderCrossCity.getState() != 7){ |
| | | return ResultUtil.error("订单已被支付,不允许重复支付"); |
| | | } |
| | | Integer uid = orderCrossCity.getUserId(); |
| | | Double orderMoney = orderCrossCity.getOrderMoney(); |
| | | ResultUtil resultUtil = ResultUtil.success(""); |
| | | orderCrossCity.setCouponMoney(0D);//初始化历史数据 |
| | | orderCrossCity.setCouponId(null); |
| | | |
| | | if(payType == 1){//微信支付 |
| | | resultUtil = payMoneyUtil.weixinpay("完成订单", "", "", orderId + "_3_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayCrossCity", "APP", ""); |
| | | paymentRecordService.saveData(1, orderCrossCity.getDriverId(), 2, orderId, 3, 1, orderMoney, "", 1);//添加预支付数据 |
| | | } |
| | | if(payType == 2){//支付宝支付 |
| | | resultUtil = payMoneyUtil.alipay("完成订单", "完成订单", "", orderId + "_3_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/aliPayCrossCity"); |
| | | paymentRecordService.saveData(1, orderCrossCity.getDriverId(), 2, orderId, 3, 2, orderMoney, "", 1);//添加预支付数据 |
| | | } |
| | | if(payType == 3){//扫码支付 |
| | | //调用支付获取收款二维码数据 |
| | | resultUtil = payMoneyUtil.weixinpay("完成订单", orderId.toString(), "", orderId + "_3_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayCrossCity", "NATIVE", ""); |
| | | paymentRecordService.saveData(1, orderCrossCity.getDriverId(), 2, orderId, 3, 1, orderMoney, "", 1);//添加预支付数据 |
| | | } |
| | | |
| | | this.updateAllColumnById(orderCrossCity); |
| | | return resultUtil; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 支付成功后的回调操作 |
| | | * @param id 订单=id |
| | | * @param order_id 工行支付单号 |
| | | * @param type 1=微信,2=支付宝 |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public void payOrderCrossCityCallback(Integer id, String order_id, Integer type) throws Exception { |
| | | OrderCrossCity orderCrossCity = this.selectById(id); |
| | | if(orderCrossCity.getState() == 7){ |
| | | PaymentRecord query = paymentRecordService.query(1, orderCrossCity.getDriverId(), 2, id, 3, type, 1); |
| | | if(null == query){ |
| | | System.err.println("预支付数据异常(orderId = " + id + ")"); |
| | | } |
| | | //添加交易明细 |
| | | transactionDetailsService.saveData(orderCrossCity.getUserId(), "完成订单", query.getAmount(), 2, 1, 1, 3, query.getOrderId()); |
| | | orderCrossCity.setState(2);//先支付再服务 |
| | | orderCrossCity.setPayType(type); |
| | | orderCrossCity.setPayMoney(query.getAmount()); |
| | | this.updateById(orderCrossCity); |
| | | |
| | | UserInfo userInfo = userInfoMapper.selectById(orderCrossCity.getUserId()); |
| | | SysIntegral query1 = sysIntegralMapper.query(orderCrossCity.getCompanyId()); |
| | | userInfo.setIntegral(userInfo.getIntegral() + (query.getAmount().intValue() * query1.getIntegral()));//积分 |
| | | userInfoMapper.updateById(userInfo); |
| | | |
| | | query.setState(2); |
| | | query.setCode(order_id); |
| | | paymentRecordService.updateById(query); |
| | | |
| | | //添加已收入明细 |
| | | Line line = lineService.selectById(orderCrossCity.getLineId()); |
| | | Double speMoney = Double.valueOf(line.getRakeRate()); |
| | | BigDecimal d = new BigDecimal(orderCrossCity.getOrderMoney()).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_EVEN);//企业收入 |
| | | BigDecimal c = new BigDecimal(orderCrossCity.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);//司机收入 |
| | | incomeService.saveData(1, orderCrossCity.getCompanyId(), 2, orderCrossCity.getId(), 3, d.doubleValue()); |
| | | incomeService.saveData(2, orderCrossCity.getDriverId(), 2, orderCrossCity.getId(), 3, c.doubleValue()); |
| | | Driver driver = driverService.selectById(orderCrossCity.getDriverId()); |
| | | driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | driverService.updateById(driver); |
| | | |
| | | // TODO: 2020/5/24 这里需要给司机和用户推送订单状态 |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | pushUtil.pushOrderState(1, orderCrossCity.getUserId(), orderCrossCity.getId(), 3, orderCrossCity.getState()); |
| | | pushUtil.pushOrderState(2, orderCrossCity.getDriverId(), orderCrossCity.getId(), 3, orderCrossCity.getState()); |
| | | pushUtil.pushDriverPosition(orderCrossCity.getId(), 3); |
| | | } |
| | | }).start(); |
| | | |
| | | |
| | | systemNoticeService.addSystemNotice(1, "您已使用" + (type == 1 ? "微信" : "支付宝") + "成功完成出行订单支付,谢谢使用!", orderCrossCity.getUserId()); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public boolean calculateMileage(OrderPosition orderPosition) throws Exception { |
| | | Integer orderId = orderPosition.getOrderId(); |
| | | String lon = orderPosition.getLon(); |
| | | String lat = orderPosition.getLat(); |
| | | OrderCrossCity order = this.selectById(orderId); |
| | | if(null == order){ |
| | | System.err.println("订单数据异常:" + orderId); |
| | | return false; |
| | | } |
| | | |
| | | //跨城记录所有服务完成之前的订单服务距离 |
| | | List<OrderCrossCity> orderCrossCities = this.selectList(new EntityWrapper<OrderCrossCity>().eq("orderNum", order.getOrderNum()).eq("isDelete", 1).in("state", Arrays.asList(2, 3, 4, 5))); |
| | | for(OrderCrossCity orderCrossCity : orderCrossCities){ |
| | | boolean b = false; |
| | | OrderPosition orderPosition1 = orderPositionService.queryNew(orderCrossCity.getId(), 3); |
| | | if(null != orderPosition1){ |
| | | String now = lon + "," + lat; |
| | | String old = orderPosition1.getLon() + "," + orderPosition1.getLat(); |
| | | // Map<String, String> distance = gdMapElectricFenceUtil.getDistance(now, old, 0);//直线距离 |
| | | Map<String, Double> distance = geodesyUtil.getDistance(now, old); |
| | | if(null != distance){ |
| | | Double distance1 = distance.get("WGS84"); |
| | | if(Double.valueOf(distance1) > 50 && orderCrossCity.getState() == 5){//大于50米表示在移动 |
| | | orderCrossCity.setMileage(new BigDecimal(orderCrossCity.getMileage()).add(new BigDecimal(distance1)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | this.updateById(orderCrossCity); |
| | | b = true; |
| | | } |
| | | }else{ |
| | | System.err.println("调用高德计算距离出错"); |
| | | } |
| | | }else{ |
| | | orderCrossCity.setMileage(0D); |
| | | this.updateById(orderCrossCity); |
| | | b = true;//第一条数据不作处理,直接存储 |
| | | } |
| | | if(b){ |
| | | //先计算里程,在存储最新位置 |
| | | orderPosition.setInsertTime(new Date()); |
| | | //将数据存储到文件中 |
| | | List<OrderPosition> orderPositions = orderPositionService.queryPosition(orderCrossCity.getId(), 3); |
| | | File file = new File(filePath + orderCrossCity.getId() + "_3" + ".txt"); |
| | | if(!file.exists()){ |
| | | file.getParentFile().mkdirs(); |
| | | file.createNewFile(); |
| | | } |
| | | //写入相应的文件 |
| | | PrintWriter out = new PrintWriter(new FileWriter(file)); |
| | | orderPositions.add(orderPosition); |
| | | System.err.println("存储新数据:" + JSON.toJSONString(orderPositions)); |
| | | out.write(JSON.toJSONString(orderPositions)); |
| | | out.flush(); |
| | | out.close(); |
| | | } |
| | | } |
| | | return false;//上层不需要处理 |
| | | } |
| | | |
| | | @Override |
| | | public List<OrderCrossCity> queryListOrder(Integer driverId, Integer lineShiftId, List<Integer> state, String day) throws Exception { |
| | | return orderCrossCityMapper.queryListOrder(driverId, lineShiftId, state, day); |
| | | } |
| | | |
| | | /** |
| | | * 获取所有快到期的预约单(出行时间在30分钟内) |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public List<OrderCrossCity> queryMaturity() throws Exception { |
| | | return orderCrossCityMapper.queryMaturity(); |
| | | } |
| | | |
| | | /** |
| | | * 计算价格 |
| | | * @param distance |
| | | * @param peopleNumber |
| | | * @param travelMode |
| | | * @param lineId |
| | | * @param serverCarModelId |
| | | * @param totalSeat |
| | | * @param seatNumber |
| | | * @return |
| | | */ |
| | | public ResultUtil<Map<String, Object>> getPrice(Double distance, Integer peopleNumber, Integer travelMode, Integer lineId, Integer serverCarModelId, Integer totalSeat, String seatNumber){ |
| | | if(0 >= peopleNumber && peopleNumber > 6){ |
| | | return ResultUtil.error("请输入正确的乘车人数"); |
| | | } |
| | | |
| | | Map<String, Object> map = new HashMap<>(); |
| | | double distance1 = distance.doubleValue() / 1000;//公里 |
| | | map.put("distance", distance); |
| | | |
| | | /** |
| | | * 1.固定价格的包车是整车价格 |
| | | * 2.五座车和七座车的优惠系数是中间特殊位置的优惠折扣 |
| | | * 3.包车的情况不享受中间特殊位置的优惠折扣 |
| | | * 4.浮动计费拼车如果选中中间特殊位置既享受优惠系数又享受中间特殊位置的优惠折扣 |
| | | */ |
| | | Map<String, Object> query = linePriceMapper.query(lineId, serverCarModelId); |
| | | if(null == query){ |
| | | map.put("distance", 0); |
| | | map.put("price", 0); |
| | | return ResultUtil.success(map); |
| | | } |
| | | String content = query.get("content").toString(); |
| | | JSONObject jsonObject = JSON.parseObject(content); |
| | | if(Integer.valueOf(query.get("type").toString()) == 1){//固定金额 |
| | | double num1 = Double.valueOf(jsonObject.getString("num1")).doubleValue(); |
| | | double num2 = Double.valueOf(jsonObject.getString("num2")).doubleValue(); |
| | | double num3 = Double.valueOf(jsonObject.getString("num3")).doubleValue(); |
| | | double num4 = Double.valueOf(jsonObject.getString("num4")).doubleValue(); |
| | | if(travelMode == 1){//拼车 |
| | | String[] split = seatNumber.split(","); |
| | | boolean b = false; |
| | | for(String s : split){ |
| | | if((totalSeat == 4 && s.equals("3")) || (totalSeat == 6 && s.equals("5"))){ |
| | | b = true; |
| | | break; |
| | | } |
| | | } |
| | | double price1 = 0D; |
| | | if(b){ |
| | | price1 = num1 * (totalSeat == 4 ? num3 : num4); |
| | | peopleNumber -= 1; |
| | | } |
| | | double price = (num1 * peopleNumber) + price1; |
| | | map.put("price", new BigDecimal(price).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | }else{ |
| | | map.put("price", num2);//包车价 |
| | | } |
| | | |
| | | }else{//浮动计费 |
| | | //计算公式:实际历程 * 基础单价 * (参考费用 / (参考里程 * 基础单价)) + (实际历程 - 参考里程) * 基础单价 * 优惠系数 |
| | | double num1 = Double.valueOf(jsonObject.getString("num1")).doubleValue();//参考费用 |
| | | double num2 = Double.valueOf(jsonObject.getString("num2")).doubleValue();//参考里程 |
| | | double num3 = Double.valueOf(jsonObject.getString("num3")).doubleValue();//基础单价 |
| | | double num4 = Double.valueOf(jsonObject.getString("num4")).doubleValue();//优惠系数 |
| | | double num5 = Double.valueOf(jsonObject.getString("num5")).doubleValue();//包车系数 |
| | | double num6 = Double.valueOf(jsonObject.getString("num6")).doubleValue();//五座系数 |
| | | double num7 = Double.valueOf(jsonObject.getString("num7")).doubleValue();//七座系数 |
| | | if(travelMode == 1){//拼车 |
| | | double unitPrice = (distance1 * num3 * (num1 / (num2 * num3))) + ((distance1 - num2) * num3 * num4); |
| | | String[] split = seatNumber.split(","); |
| | | boolean b = false; |
| | | for(String s : split){ |
| | | if((totalSeat == 4 && s.equals("3")) || (totalSeat == 6 && s.equals("5"))){ |
| | | b = true; |
| | | break; |
| | | } |
| | | } |
| | | double price1 = 0D; |
| | | if(b){ |
| | | price1 = unitPrice * (totalSeat == 4 ? num6 : num7); |
| | | peopleNumber -= 1; |
| | | } |
| | | double price = (unitPrice * peopleNumber) + price1; |
| | | map.put("price", new BigDecimal(price).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | }else{ |
| | | double unitPrice = (distance1 * num3 * (num1 / (num2 * num3))) + ((distance1 - num2) * num3 * num5); |
| | | double price = unitPrice * totalSeat; |
| | | map.put("price", new BigDecimal(price).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | } |
| | | } |
| | | return ResultUtil.success(map); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取订单编号 |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public synchronized String getOrderNum(Integer driverId, Integer lineShiftDriverId) throws Exception{ |
| | | List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.queryOrders(driverId, lineShiftDriverId, Arrays.asList(2, 3, 4, 7)); |
| | | if(orderCrossCities.size() > 0){ |
| | | return orderCrossCities.get(0).getOrderNum(); |
| | | } |
| | | int size = this.selectCount(null); |
| | | while (true){ |
| | | String orderNum = "CROSS" + String.valueOf(1000000 + size + 1).substring(1); |
| | | List<OrderCrossCity> orderNum1 = this.selectList(new EntityWrapper<OrderCrossCity>().eq("orderNum", orderNum)); |
| | | if(orderNum1.size() == 0){ |
| | | return orderNum; |
| | | } |
| | | size++; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.warpper; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @ApiModel("预约班次详情") |
| | | public class LineShiftWarpper { |
| | | @ApiModelProperty("班次id") |
| | | private Integer id; |
| | | @ApiModelProperty("班次时间段") |
| | | private String time; |
| | | @ApiModelProperty("预约状态(1=不可预约,2=已预约,3=未预约)") |
| | | private Integer state; |
| | | |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(Integer id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public String getTime() { |
| | | return time; |
| | | } |
| | | |
| | | public void setTime(String time) { |
| | | this.time = time; |
| | | } |
| | | |
| | | public Integer getState() { |
| | | return state; |
| | | } |
| | | |
| | | public void setState(Integer state) { |
| | | this.state = state; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "LineShiftWarpper{" + |
| | | "id=" + id + |
| | | ", time='" + time + '\'' + |
| | | ", state='" + state + '\'' + |
| | | '}'; |
| | | } |
| | | |
| | | public static LineShiftWarpper getLineShiftWarpper(Map<String, Object> map){ |
| | | LineShiftWarpper lineShiftWarpper = new LineShiftWarpper(); |
| | | if(null != map){ |
| | | lineShiftWarpper.setId(null != map.get("id") ? Integer.valueOf(map.get("id").toString()) : 0); |
| | | lineShiftWarpper.setTime(null != map.get("time") ? map.get("time").toString() : ""); |
| | | lineShiftWarpper.setState(null != map.get("state") ? Integer.valueOf(map.get("state").toString()) : 0); |
| | | } |
| | | return lineShiftWarpper; |
| | | } |
| | | |
| | | public static List<LineShiftWarpper> getLineShiftWarppers(List<Map<String, Object>> maps){ |
| | | List<LineShiftWarpper> list = new ArrayList<>(); |
| | | if(null != maps){ |
| | | for(Map<String, Object> map : maps){ |
| | | list.add(LineShiftWarpper.getLineShiftWarpper(map)); |
| | | } |
| | | } |
| | | return list; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.warpper; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @ApiModel("线路排班") |
| | | public class LineSiteWarpper { |
| | | @ApiModelProperty("排班id") |
| | | private Integer id; |
| | | @ApiModelProperty("司机排班id") |
| | | private Integer lineShiftDriverId; |
| | | @ApiModelProperty("发车时间") |
| | | private String startTime; |
| | | @ApiModelProperty("司机头像") |
| | | private String headImgUrl; |
| | | @ApiModelProperty("司机姓名") |
| | | private String name; |
| | | @ApiModelProperty("车牌") |
| | | private String carLicensePlate; |
| | | @ApiModelProperty("车辆品牌") |
| | | private String brand; |
| | | @ApiModelProperty("车辆颜色") |
| | | private String carColor; |
| | | @ApiModelProperty("座位数") |
| | | private String number; |
| | | @ApiModelProperty("评分") |
| | | private Double evaluate; |
| | | @ApiModelProperty("预估价") |
| | | private Double price; |
| | | @ApiModelProperty("司机id") |
| | | private Integer driverId; |
| | | @ApiModelProperty("车辆id") |
| | | private Integer carId; |
| | | @ApiModelProperty("车辆总座位数") |
| | | private Integer totalSeat; |
| | | @ApiModelProperty("服务车型id") |
| | | private Integer serverCarModelId; |
| | | @ApiModelProperty("剩余座位编号") |
| | | private String laveSeatNumber; |
| | | @ApiModelProperty("剩余座位数") |
| | | private Integer laveSeat; |
| | | |
| | | |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(Integer id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public Integer getLineShiftDriverId() { |
| | | return lineShiftDriverId; |
| | | } |
| | | |
| | | public void setLineShiftDriverId(Integer lineShiftDriverId) { |
| | | this.lineShiftDriverId = lineShiftDriverId; |
| | | } |
| | | |
| | | public String getStartTime() { |
| | | return startTime; |
| | | } |
| | | |
| | | public void setStartTime(String startTime) { |
| | | this.startTime = startTime; |
| | | } |
| | | |
| | | public String getHeadImgUrl() { |
| | | return headImgUrl; |
| | | } |
| | | |
| | | public void setHeadImgUrl(String headImgUrl) { |
| | | this.headImgUrl = headImgUrl; |
| | | } |
| | | |
| | | public String getName() { |
| | | return name; |
| | | } |
| | | |
| | | public void setName(String name) { |
| | | this.name = name; |
| | | } |
| | | |
| | | public String getCarLicensePlate() { |
| | | return carLicensePlate; |
| | | } |
| | | |
| | | public void setCarLicensePlate(String carLicensePlate) { |
| | | this.carLicensePlate = carLicensePlate; |
| | | } |
| | | |
| | | public String getBrand() { |
| | | return brand; |
| | | } |
| | | |
| | | public void setBrand(String brand) { |
| | | this.brand = brand; |
| | | } |
| | | |
| | | public String getCarColor() { |
| | | return carColor; |
| | | } |
| | | |
| | | public void setCarColor(String carColor) { |
| | | this.carColor = carColor; |
| | | } |
| | | |
| | | public String getNumber() { |
| | | return number; |
| | | } |
| | | |
| | | public void setNumber(String number) { |
| | | this.number = number; |
| | | } |
| | | |
| | | public Double getEvaluate() { |
| | | return evaluate; |
| | | } |
| | | |
| | | public void setEvaluate(Double evaluate) { |
| | | this.evaluate = evaluate; |
| | | } |
| | | |
| | | public Double getPrice() { |
| | | return price; |
| | | } |
| | | |
| | | public void setPrice(Double price) { |
| | | this.price = price; |
| | | } |
| | | |
| | | public Integer getDriverId() { |
| | | return driverId; |
| | | } |
| | | |
| | | public void setDriverId(Integer driverId) { |
| | | this.driverId = driverId; |
| | | } |
| | | |
| | | public Integer getCarId() { |
| | | return carId; |
| | | } |
| | | |
| | | public void setCarId(Integer carId) { |
| | | this.carId = carId; |
| | | } |
| | | |
| | | public Integer getTotalSeat() { |
| | | return totalSeat; |
| | | } |
| | | |
| | | public void setTotalSeat(Integer totalSeat) { |
| | | this.totalSeat = totalSeat; |
| | | } |
| | | |
| | | public Integer getServerCarModelId() { |
| | | return serverCarModelId; |
| | | } |
| | | |
| | | public void setServerCarModelId(Integer serverCarModelId) { |
| | | this.serverCarModelId = serverCarModelId; |
| | | } |
| | | |
| | | public String getLaveSeatNumber() { |
| | | return laveSeatNumber; |
| | | } |
| | | |
| | | public void setLaveSeatNumber(String laveSeatNumber) { |
| | | this.laveSeatNumber = laveSeatNumber; |
| | | } |
| | | |
| | | public Integer getLaveSeat() { |
| | | return laveSeat; |
| | | } |
| | | |
| | | public void setLaveSeat(Integer laveSeat) { |
| | | this.laveSeat = laveSeat; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "LineSiteWarpper{" + |
| | | "id=" + id + |
| | | ", startTime='" + startTime + '\'' + |
| | | ", headImgUrl='" + headImgUrl + '\'' + |
| | | ", name='" + name + '\'' + |
| | | ", carLicensePlate='" + carLicensePlate + '\'' + |
| | | ", brand='" + brand + '\'' + |
| | | ", carColor='" + carColor + '\'' + |
| | | ", number='" + number + '\'' + |
| | | ", evaluate=" + evaluate + |
| | | ", price=" + price + |
| | | ", driverId=" + driverId + |
| | | ", carId=" + carId + |
| | | ", totalSeat=" + totalSeat + |
| | | ", serverCarModelId=" + serverCarModelId + |
| | | ", laveSeatNumber='" + laveSeatNumber + '\'' + |
| | | ", laveSeat=" + laveSeat + |
| | | '}'; |
| | | } |
| | | |
| | | public static List<LineSiteWarpper> getLineSiteWarppers(List<Map<String, Object>> list){ |
| | | List<LineSiteWarpper> data = new ArrayList<>(); |
| | | if(null != list){ |
| | | for(Map<String, Object> map : list){ |
| | | if(null != map){ |
| | | LineSiteWarpper lineSiteWarpper = new LineSiteWarpper(); |
| | | lineSiteWarpper.setId(null != map.get("id") ? Integer.valueOf(map.get("id").toString()) : 0); |
| | | lineSiteWarpper.setLineShiftDriverId(null != map.get("lineShiftDriverId") ? Integer.valueOf(map.get("lineShiftDriverId").toString()) : 0); |
| | | lineSiteWarpper.setStartTime(null != map.get("startTime") ? map.get("startTime").toString() : ""); |
| | | lineSiteWarpper.setHeadImgUrl(null != map.get("headImgUrl") ? map.get("headImgUrl").toString() : ""); |
| | | lineSiteWarpper.setName(null != map.get("name") ? map.get("name").toString() : ""); |
| | | lineSiteWarpper.setCarLicensePlate(null != map.get("carLicensePlate") ? map.get("carLicensePlate").toString() : ""); |
| | | lineSiteWarpper.setBrand(null != map.get("brand") ? map.get("brand").toString() : ""); |
| | | lineSiteWarpper.setCarColor(null != map.get("carColor") ? map.get("carColor").toString() : ""); |
| | | lineSiteWarpper.setNumber(null != map.get("number") ? map.get("number").toString() : ""); |
| | | lineSiteWarpper.setEvaluate(null != map.get("evaluate") ? Double.valueOf(map.get("evaluate").toString()) : 0); |
| | | lineSiteWarpper.setPrice(null != map.get("price") ? Double.valueOf(map.get("price").toString()) : 0); |
| | | lineSiteWarpper.setDriverId(null != map.get("driverId") ? Integer.valueOf(map.get("driverId").toString()) : 0); |
| | | lineSiteWarpper.setCarId(null != map.get("carId") ? Integer.valueOf(map.get("carId").toString()) : 0); |
| | | lineSiteWarpper.setTotalSeat(null != map.get("totalSeat") ? Integer.valueOf(map.get("totalSeat").toString()) : 0); |
| | | lineSiteWarpper.setServerCarModelId(null != map.get("serverCarModelId") ? Integer.valueOf(map.get("serverCarModelId").toString()) : 0); |
| | | lineSiteWarpper.setLaveSeatNumber(null != map.get("laveSeatNumber") ? map.get("laveSeatNumber").toString() : ""); |
| | | lineSiteWarpper.setLaveSeat(null != map.get("laveSeat") ? Integer.valueOf(map.get("laveSeat").toString()) : 0); |
| | | data.add(lineSiteWarpper); |
| | | } |
| | | } |
| | | } |
| | | return data; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.warpper; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @ApiModel("线路") |
| | | public class LineWarpper { |
| | | @ApiModelProperty("线路id") |
| | | private Integer id; |
| | | @ApiModelProperty("线路名称") |
| | | private String name; |
| | | @ApiModelProperty("起点") |
| | | private String startAddress; |
| | | @ApiModelProperty("终点") |
| | | private String endAddress; |
| | | |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(Integer id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public String getName() { |
| | | return name; |
| | | } |
| | | |
| | | public void setName(String name) { |
| | | this.name = name; |
| | | } |
| | | |
| | | public String getStartAddress() { |
| | | return startAddress; |
| | | } |
| | | |
| | | public void setStartAddress(String startAddress) { |
| | | this.startAddress = startAddress; |
| | | } |
| | | |
| | | public String getEndAddress() { |
| | | return endAddress; |
| | | } |
| | | |
| | | public void setEndAddress(String endAddress) { |
| | | this.endAddress = endAddress; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "LineWarpper{" + |
| | | "id=" + id + |
| | | ", name='" + name + '\'' + |
| | | ", startAddress='" + startAddress + '\'' + |
| | | ", endAddress='" + endAddress + '\'' + |
| | | '}'; |
| | | } |
| | | |
| | | |
| | | public static LineWarpper getLineWarpper(Map<String, Object> map){ |
| | | LineWarpper lineWarpper = new LineWarpper(); |
| | | if(null != map){ |
| | | lineWarpper.setId(null != map.get("id") ? Integer.valueOf(map.get("id").toString()) : 0); |
| | | lineWarpper.setName(null != map.get("name") ? map.get("name").toString() : ""); |
| | | lineWarpper.setStartAddress(null != map.get("startAddress") ? map.get("startAddress").toString() : ""); |
| | | lineWarpper.setEndAddress(null != map.get("endAddress") ? map.get("endAddress").toString() : ""); |
| | | } |
| | | return lineWarpper; |
| | | } |
| | | |
| | | |
| | | public static List<LineWarpper> getLineWarppers(List<Map<String, Object>> maps){ |
| | | List<LineWarpper> list = new ArrayList<>(); |
| | | if(null != maps){ |
| | | for(Map<String, Object> map : maps){ |
| | | list.add(LineWarpper.getLineWarpper(map)); |
| | | } |
| | | } |
| | | return list; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.warpper; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @ApiModel("站点区域") |
| | | public class LocationWarpper { |
| | | @ApiModelProperty("区域类型(1=行政区域,2=电子围栏)") |
| | | private Integer type; |
| | | @ApiModelProperty("省名称") |
| | | private String province; |
| | | @ApiModelProperty("省编号") |
| | | private String provinceCode; |
| | | @ApiModelProperty("市名称") |
| | | private String city; |
| | | @ApiModelProperty("市编号") |
| | | private String cityCode; |
| | | @ApiModelProperty("区县名称") |
| | | private String district; |
| | | @ApiModelProperty("区县编号") |
| | | private String districtCode; |
| | | @ApiModelProperty("电子围栏坐标多组以分号分隔") |
| | | private String coordinate; |
| | | |
| | | public Integer getType() { |
| | | return type; |
| | | } |
| | | |
| | | public void setType(Integer type) { |
| | | this.type = type; |
| | | } |
| | | |
| | | public String getProvince() { |
| | | return province; |
| | | } |
| | | |
| | | public void setProvince(String province) { |
| | | this.province = province; |
| | | } |
| | | |
| | | public String getProvinceCode() { |
| | | return provinceCode; |
| | | } |
| | | |
| | | public void setProvinceCode(String provinceCode) { |
| | | this.provinceCode = provinceCode; |
| | | } |
| | | |
| | | public String getCity() { |
| | | return city; |
| | | } |
| | | |
| | | public void setCity(String city) { |
| | | this.city = city; |
| | | } |
| | | |
| | | public String getCityCode() { |
| | | return cityCode; |
| | | } |
| | | |
| | | public void setCityCode(String cityCode) { |
| | | this.cityCode = cityCode; |
| | | } |
| | | |
| | | public String getDistrict() { |
| | | return district; |
| | | } |
| | | |
| | | public void setDistrict(String district) { |
| | | this.district = district; |
| | | } |
| | | |
| | | public String getDistrictCode() { |
| | | return districtCode; |
| | | } |
| | | |
| | | public void setDistrictCode(String districtCode) { |
| | | this.districtCode = districtCode; |
| | | } |
| | | |
| | | public String getCoordinate() { |
| | | return coordinate; |
| | | } |
| | | |
| | | public void setCoordinate(String coordinate) { |
| | | this.coordinate = coordinate; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "LocationWarpper{" + |
| | | "type=" + type + |
| | | ", province='" + province + '\'' + |
| | | ", provinceCode='" + provinceCode + '\'' + |
| | | ", city='" + city + '\'' + |
| | | ", cityCode='" + cityCode + '\'' + |
| | | ", district='" + district + '\'' + |
| | | ", districtCode='" + districtCode + '\'' + |
| | | ", coordinate='" + coordinate + '\'' + |
| | | '}'; |
| | | } |
| | | |
| | | |
| | | public static List<LocationWarpper> getLocationWarppers(List<Map<String, Object>> list){ |
| | | List<LocationWarpper> data = new ArrayList<>(); |
| | | if(null != list){ |
| | | for(Map<String, Object> map : list){ |
| | | if(null != map){ |
| | | LocationWarpper locationWarpper = new LocationWarpper(); |
| | | locationWarpper.setType(null != map.get("type") ? Integer.valueOf(map.get("type").toString()) : 0); |
| | | locationWarpper.setProvince(null != map.get("province") ? map.get("province").toString() : ""); |
| | | locationWarpper.setProvinceCode(null != map.get("provinceCode") ? map.get("provinceCode").toString() : ""); |
| | | locationWarpper.setCity(null != map.get("city") ? map.get("city").toString() : ""); |
| | | locationWarpper.setCityCode(null != map.get("cityCode") ? map.get("cityCode").toString() : ""); |
| | | locationWarpper.setDistrict(null != map.get("district") ? map.get("district").toString() : ""); |
| | | locationWarpper.setDistrictCode(null != map.get("districtCode") ? map.get("districtCode").toString() : ""); |
| | | locationWarpper.setCoordinate(null != map.get("coordinate") ? map.get("coordinate").toString() : ""); |
| | | data.add(locationWarpper); |
| | | } |
| | | } |
| | | } |
| | | return data; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.warpper; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | |
| | | import java.util.Date; |
| | | import java.util.Map; |
| | | |
| | | @ApiModel("订单详情") |
| | | public class OrderCrossCityInfoWrapper { |
| | | @ApiModelProperty("订单id") |
| | | private Integer orderId; |
| | | @ApiModelProperty("用户id") |
| | | private Integer userId; |
| | | @ApiModelProperty("司机id") |
| | | private Integer driverId; |
| | | @ApiModelProperty("订单状态(1=待接单,2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,8=待评价,9=已完成,10=已取消,11=改派中,12=取消待支付)") |
| | | private Integer orderState; |
| | | @ApiModelProperty("出行时间") |
| | | private String travelTime; |
| | | @ApiModelProperty("出行时间") |
| | | private String travelTime_; |
| | | @ApiModelProperty("到达预约点时间") |
| | | private String arriveTime; |
| | | @ApiModelProperty("起点地址") |
| | | private String startAddress; |
| | | @ApiModelProperty("终点地址") |
| | | private String endAddress; |
| | | @ApiModelProperty("起点经度") |
| | | private String startLon; |
| | | @ApiModelProperty("起点纬度") |
| | | private String startLat; |
| | | @ApiModelProperty("终点经度") |
| | | private String endLon; |
| | | @ApiModelProperty("终点纬度") |
| | | private String endLat; |
| | | @ApiModelProperty("高德猎鹰轨迹id(订单开始后需要上传坐标到指定轨迹中)") |
| | | private String trackId; |
| | | @ApiModelProperty("乘客昵称") |
| | | private String nickName; |
| | | @ApiModelProperty("乘客电话") |
| | | private String phone; |
| | | @ApiModelProperty("出行人数") |
| | | private Integer peopleNumber; |
| | | @ApiModelProperty("支付金额") |
| | | private Double payMoney; |
| | | @ApiModelProperty("座位") |
| | | private String seatNumber; |
| | | |
| | | public Integer getOrderId() { |
| | | return orderId; |
| | | } |
| | | |
| | | public void setOrderId(Integer orderId) { |
| | | this.orderId = orderId; |
| | | } |
| | | |
| | | public Integer getUserId() { |
| | | return userId; |
| | | } |
| | | |
| | | public void setUserId(Integer userId) { |
| | | this.userId = userId; |
| | | } |
| | | |
| | | public Integer getDriverId() { |
| | | return driverId; |
| | | } |
| | | |
| | | public void setDriverId(Integer driverId) { |
| | | this.driverId = driverId; |
| | | } |
| | | |
| | | public Integer getOrderState() { |
| | | return orderState; |
| | | } |
| | | |
| | | public void setOrderState(Integer orderState) { |
| | | this.orderState = orderState; |
| | | } |
| | | |
| | | public String getTravelTime() { |
| | | return travelTime; |
| | | } |
| | | |
| | | public void setTravelTime(String travelTime) { |
| | | this.travelTime = travelTime; |
| | | } |
| | | |
| | | public String getTravelTime_() { |
| | | return travelTime_; |
| | | } |
| | | |
| | | public void setTravelTime_(String travelTime_) { |
| | | this.travelTime_ = travelTime_; |
| | | } |
| | | |
| | | public String getArriveTime() { |
| | | return arriveTime; |
| | | } |
| | | |
| | | public void setArriveTime(String arriveTime) { |
| | | this.arriveTime = arriveTime; |
| | | } |
| | | |
| | | public String getStartAddress() { |
| | | return startAddress; |
| | | } |
| | | |
| | | public void setStartAddress(String startAddress) { |
| | | this.startAddress = startAddress; |
| | | } |
| | | |
| | | public String getEndAddress() { |
| | | return endAddress; |
| | | } |
| | | |
| | | public void setEndAddress(String endAddress) { |
| | | this.endAddress = endAddress; |
| | | } |
| | | |
| | | public String getStartLon() { |
| | | return startLon; |
| | | } |
| | | |
| | | public void setStartLon(String startLon) { |
| | | this.startLon = startLon; |
| | | } |
| | | |
| | | public String getStartLat() { |
| | | return startLat; |
| | | } |
| | | |
| | | public void setStartLat(String startLat) { |
| | | this.startLat = startLat; |
| | | } |
| | | |
| | | public String getEndLon() { |
| | | return endLon; |
| | | } |
| | | |
| | | public void setEndLon(String endLon) { |
| | | this.endLon = endLon; |
| | | } |
| | | |
| | | public String getEndLat() { |
| | | return endLat; |
| | | } |
| | | |
| | | public void setEndLat(String endLat) { |
| | | this.endLat = endLat; |
| | | } |
| | | |
| | | public String getTrackId() { |
| | | return trackId; |
| | | } |
| | | |
| | | public void setTrackId(String trackId) { |
| | | this.trackId = trackId; |
| | | } |
| | | |
| | | public String getNickName() { |
| | | return nickName; |
| | | } |
| | | |
| | | public void setNickName(String nickName) { |
| | | this.nickName = nickName; |
| | | } |
| | | |
| | | public String getPhone() { |
| | | return phone; |
| | | } |
| | | |
| | | public void setPhone(String phone) { |
| | | this.phone = phone; |
| | | } |
| | | |
| | | public Integer getPeopleNumber() { |
| | | return peopleNumber; |
| | | } |
| | | |
| | | public void setPeopleNumber(Integer peopleNumber) { |
| | | this.peopleNumber = peopleNumber; |
| | | } |
| | | |
| | | public Double getPayMoney() { |
| | | return payMoney; |
| | | } |
| | | |
| | | public void setPayMoney(Double payMoney) { |
| | | this.payMoney = payMoney; |
| | | } |
| | | |
| | | public String getSeatNumber() { |
| | | return seatNumber; |
| | | } |
| | | |
| | | public void setSeatNumber(String seatNumber) { |
| | | this.seatNumber = seatNumber; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "OrderCrossCityInfoWrapper{" + |
| | | "orderId=" + orderId + |
| | | ", userId=" + userId + |
| | | ", driverId=" + driverId + |
| | | ", orderState=" + orderState + |
| | | ", travelTime='" + travelTime + '\'' + |
| | | ", travelTime_='" + travelTime_ + '\'' + |
| | | ", arriveTime='" + arriveTime + '\'' + |
| | | ", startAddress='" + startAddress + '\'' + |
| | | ", endAddress='" + endAddress + '\'' + |
| | | ", startLon='" + startLon + '\'' + |
| | | ", startLat='" + startLat + '\'' + |
| | | ", endLon='" + endLon + '\'' + |
| | | ", endLat='" + endLat + '\'' + |
| | | ", trackId='" + trackId + '\'' + |
| | | ", nickName='" + nickName + '\'' + |
| | | ", phone='" + phone + '\'' + |
| | | ", peopleNumber=" + peopleNumber + |
| | | ", payMoney=" + payMoney + |
| | | ", seatNumber='" + seatNumber + '\'' + |
| | | '}'; |
| | | } |
| | | |
| | | public static OrderCrossCityInfoWrapper getOrderInfoWarpper(Map<String, Object> map){ |
| | | OrderCrossCityInfoWrapper orderInfoWarpper = new OrderCrossCityInfoWrapper(); |
| | | if(null != map){ |
| | | orderInfoWarpper.setOrderId(null != map.get("orderId") ? Integer.valueOf(String.valueOf(map.get("orderId"))) : 0); |
| | | orderInfoWarpper.setUserId(null != map.get("userId") ? Integer.valueOf(String.valueOf(map.get("userId"))) : 0); |
| | | orderInfoWarpper.setDriverId(null != map.get("driverId") ? Integer.valueOf(String.valueOf(map.get("driverId"))) : 0); |
| | | orderInfoWarpper.setOrderState(null != map.get("orderState") ? Integer.valueOf(String.valueOf(map.get("orderState"))) : 0); |
| | | orderInfoWarpper.setTravelTime(null != map.get("travelTime") ? String.valueOf(map.get("travelTime")) : ""); |
| | | orderInfoWarpper.setTravelTime_(null != map.get("travelTime_") ? String.valueOf(map.get("travelTime_")) : ""); |
| | | orderInfoWarpper.setArriveTime(null != map.get("arriveTime") ? String.valueOf(map.get("arriveTime")) : ""); |
| | | orderInfoWarpper.setStartAddress(null != map.get("startAddress") ? String.valueOf(map.get("startAddress")) : ""); |
| | | orderInfoWarpper.setEndAddress(null != map.get("endAddress") ? String.valueOf(map.get("endAddress")) : ""); |
| | | orderInfoWarpper.setStartLon(null != map.get("startLon") ? String.valueOf(map.get("startLon")) : ""); |
| | | orderInfoWarpper.setStartLat(null != map.get("startLat") ? String.valueOf(map.get("startLat")) : ""); |
| | | orderInfoWarpper.setEndLon(null != map.get("endLon") ? String.valueOf(map.get("endLon")) : ""); |
| | | orderInfoWarpper.setEndLat(null != map.get("endLat") ? String.valueOf(map.get("endLat")) : ""); |
| | | orderInfoWarpper.setNickName(null != map.get("nickName") ? String.valueOf(map.get("nickName")) : ""); |
| | | orderInfoWarpper.setPhone(null != map.get("phone") ? String.valueOf(map.get("phone")) : ""); |
| | | orderInfoWarpper.setTrackId(null != map.get("trackId") ? String.valueOf(map.get("trackId")) : ""); |
| | | orderInfoWarpper.setPeopleNumber(null != map.get("peopleNumber") ? Integer.valueOf(String.valueOf(map.get("peopleNumber"))) : 0); |
| | | orderInfoWarpper.setPayMoney(null != map.get("payMoney") ? Double.valueOf(String.valueOf(map.get("payMoney"))) : 0); |
| | | orderInfoWarpper.setSeatNumber(null != map.get("seatNumber") ? String.valueOf(map.get("seatNumber")) : ""); |
| | | } |
| | | return orderInfoWarpper; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.warpper; |
| | | |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | |
| | | import java.util.Date; |
| | | |
| | | @ApiModel("跨城订单") |
| | | public class OrderCrossCityWarpper { |
| | | @ApiModelProperty(value = "服务车型id", required = true, dataType = "int") |
| | | private Integer serverCarModelId; |
| | | @ApiModelProperty(value = "排班id", required = true, dataType = "int") |
| | | private Integer lineShiftDriverId; |
| | | @ApiModelProperty(value = "司机id", required = true, dataType = "int") |
| | | private Integer driverId; |
| | | @ApiModelProperty(value = "线路id", required = true, dataType = "int") |
| | | private Integer lineId; |
| | | @ApiModelProperty(value = "车辆id", required = true, dataType = "int") |
| | | private Integer carId; |
| | | @ApiModelProperty(value = "下单地点经度", required = true, dataType = "double") |
| | | private Double placementLon; |
| | | @ApiModelProperty(value = "下单地点纬度", required = true, dataType = "double") |
| | | private Double placementLat; |
| | | @ApiModelProperty(value = "下单详细地址", required = true, dataType = "string") |
| | | private String placementAddress; |
| | | @ApiModelProperty(value = "起点经度", required = true, dataType = "double") |
| | | private Double startLon; |
| | | @ApiModelProperty(value = "起点纬度", required = true, dataType = "double") |
| | | private Double startLat; |
| | | @ApiModelProperty(value = "起点", required = true, dataType = "string") |
| | | private String startAddress; |
| | | @ApiModelProperty(value = "终点经度", required = true, dataType = "double") |
| | | private Double endLon; |
| | | @ApiModelProperty(value = "终点纬度", required = true, dataType = "double") |
| | | private Double endLat; |
| | | @ApiModelProperty(value = "终点详细地址", required = true, dataType = "string") |
| | | private String endAddress; |
| | | @ApiModelProperty(value = "出行时间(2020-09-04 12:00:00)", required = true, dataType = "string") |
| | | private Date travelTime; |
| | | @ApiModelProperty(value = "出行方式(1=拼车,2=包车)", required = true, dataType = "int") |
| | | private Integer travelMode; |
| | | @ApiModelProperty(value = "订单来源(1:APP下单,2:扫码下单,3:小程序下单,4:司机下单,5:调度下单)", required = true, dataType = "int") |
| | | private Integer orderSource; |
| | | @ApiModelProperty(value = "出行人数", required = true, dataType = "int") |
| | | private Integer peopleNumber; |
| | | @ApiModelProperty(value = "车辆总座位数", required = true, dataType = "int") |
| | | private Integer totalSeat; |
| | | @ApiModelProperty(value = "座位编号(1,3,4)", required = true, dataType = "string") |
| | | private String seatNumber; |
| | | @ApiModelProperty(value = "备注", required = false, dataType = "string") |
| | | private String remark; |
| | | @ApiModelProperty(value = "行驶里程数", required = true, dataType = "double") |
| | | private Double distance; |
| | | @ApiModelProperty(value = "乘车人电话", required = true, dataType = "string") |
| | | private String passengersPhone; |
| | | @ApiModelProperty(value = "乘车人姓名", required = true, dataType = "string") |
| | | private String passengers; |
| | | |
| | | public Integer getServerCarModelId() { |
| | | return serverCarModelId; |
| | | } |
| | | |
| | | public void setServerCarModelId(Integer serverCarModelId) { |
| | | this.serverCarModelId = serverCarModelId; |
| | | } |
| | | |
| | | public Integer getLineShiftDriverId() { |
| | | return lineShiftDriverId; |
| | | } |
| | | |
| | | public void setLineShiftDriverId(Integer lineShiftDriverId) { |
| | | this.lineShiftDriverId = lineShiftDriverId; |
| | | } |
| | | |
| | | public Integer getDriverId() { |
| | | return driverId; |
| | | } |
| | | |
| | | public void setDriverId(Integer driverId) { |
| | | this.driverId = driverId; |
| | | } |
| | | |
| | | public Integer getLineId() { |
| | | return lineId; |
| | | } |
| | | |
| | | public void setLineId(Integer lineId) { |
| | | this.lineId = lineId; |
| | | } |
| | | |
| | | public Integer getCarId() { |
| | | return carId; |
| | | } |
| | | |
| | | public void setCarId(Integer carId) { |
| | | this.carId = carId; |
| | | } |
| | | |
| | | public Double getPlacementLon() { |
| | | return placementLon; |
| | | } |
| | | |
| | | public void setPlacementLon(Double placementLon) { |
| | | this.placementLon = placementLon; |
| | | } |
| | | |
| | | public Double getPlacementLat() { |
| | | return placementLat; |
| | | } |
| | | |
| | | public void setPlacementLat(Double placementLat) { |
| | | this.placementLat = placementLat; |
| | | } |
| | | |
| | | public String getPlacementAddress() { |
| | | return placementAddress; |
| | | } |
| | | |
| | | public void setPlacementAddress(String placementAddress) { |
| | | this.placementAddress = placementAddress; |
| | | } |
| | | |
| | | public Double getStartLon() { |
| | | return startLon; |
| | | } |
| | | |
| | | public void setStartLon(Double startLon) { |
| | | this.startLon = startLon; |
| | | } |
| | | |
| | | public Double getStartLat() { |
| | | return startLat; |
| | | } |
| | | |
| | | public void setStartLat(Double startLat) { |
| | | this.startLat = startLat; |
| | | } |
| | | |
| | | public String getStartAddress() { |
| | | return startAddress; |
| | | } |
| | | |
| | | public void setStartAddress(String startAddress) { |
| | | this.startAddress = startAddress; |
| | | } |
| | | |
| | | public Double getEndLon() { |
| | | return endLon; |
| | | } |
| | | |
| | | public void setEndLon(Double endLon) { |
| | | this.endLon = endLon; |
| | | } |
| | | |
| | | public Double getEndLat() { |
| | | return endLat; |
| | | } |
| | | |
| | | public void setEndLat(Double endLat) { |
| | | this.endLat = endLat; |
| | | } |
| | | |
| | | public String getEndAddress() { |
| | | return endAddress; |
| | | } |
| | | |
| | | public void setEndAddress(String endAddress) { |
| | | this.endAddress = endAddress; |
| | | } |
| | | |
| | | public Date getTravelTime() { |
| | | return travelTime; |
| | | } |
| | | |
| | | public void setTravelTime(Date travelTime) { |
| | | this.travelTime = travelTime; |
| | | } |
| | | |
| | | public Integer getTravelMode() { |
| | | return travelMode; |
| | | } |
| | | |
| | | public void setTravelMode(Integer travelMode) { |
| | | this.travelMode = travelMode; |
| | | } |
| | | |
| | | public Integer getOrderSource() { |
| | | return orderSource; |
| | | } |
| | | |
| | | public void setOrderSource(Integer orderSource) { |
| | | this.orderSource = orderSource; |
| | | } |
| | | |
| | | public Integer getTotalSeat() { |
| | | return totalSeat; |
| | | } |
| | | |
| | | public void setTotalSeat(Integer totalSeat) { |
| | | this.totalSeat = totalSeat; |
| | | } |
| | | |
| | | public Integer getPeopleNumber() { |
| | | return peopleNumber; |
| | | } |
| | | |
| | | public void setPeopleNumber(Integer peopleNumber) { |
| | | this.peopleNumber = peopleNumber; |
| | | } |
| | | |
| | | public String getSeatNumber() { |
| | | return seatNumber; |
| | | } |
| | | |
| | | public void setSeatNumber(String seatNumber) { |
| | | this.seatNumber = seatNumber; |
| | | } |
| | | |
| | | public String getRemark() { |
| | | return remark; |
| | | } |
| | | |
| | | public void setRemark(String remark) { |
| | | this.remark = remark; |
| | | } |
| | | |
| | | public Double getDistance() { |
| | | return distance; |
| | | } |
| | | |
| | | public void setDistance(Double distance) { |
| | | this.distance = distance; |
| | | } |
| | | |
| | | public String getPassengersPhone() { |
| | | return passengersPhone; |
| | | } |
| | | |
| | | public void setPassengersPhone(String passengersPhone) { |
| | | this.passengersPhone = passengersPhone; |
| | | } |
| | | |
| | | public String getPassengers() { |
| | | return passengers; |
| | | } |
| | | |
| | | public void setPassengers(String passengers) { |
| | | this.passengers = passengers; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.warpper; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @ApiModel("跨城出行详情") |
| | | public class OrderWarpper { |
| | | @ApiModelProperty("线路名称") |
| | | private String line; |
| | | @ApiModelProperty("总人数") |
| | | private Integer peopleNumber; |
| | | @ApiModelProperty("订单编号") |
| | | private String orderNumber; |
| | | @ApiModelProperty("总金额") |
| | | private Double totalMoney; |
| | | @ApiModelProperty("平台服务费") |
| | | private Double serverMoney; |
| | | @ApiModelProperty("报警电话") |
| | | private String emergencyCall; |
| | | @ApiModelProperty("订单列表") |
| | | private List<OrderCrossCityInfoWrapper> orders; |
| | | |
| | | public String getLine() { |
| | | return line; |
| | | } |
| | | |
| | | public void setLine(String line) { |
| | | this.line = line; |
| | | } |
| | | |
| | | public Integer getPeopleNumber() { |
| | | return peopleNumber; |
| | | } |
| | | |
| | | public void setPeopleNumber(Integer peopleNumber) { |
| | | this.peopleNumber = peopleNumber; |
| | | } |
| | | |
| | | public String getOrderNumber() { |
| | | return orderNumber; |
| | | } |
| | | |
| | | public void setOrderNumber(String orderNumber) { |
| | | this.orderNumber = orderNumber; |
| | | } |
| | | |
| | | public Double getTotalMoney() { |
| | | return totalMoney; |
| | | } |
| | | |
| | | public void setTotalMoney(Double totalMoney) { |
| | | this.totalMoney = totalMoney; |
| | | } |
| | | |
| | | public Double getServerMoney() { |
| | | return serverMoney; |
| | | } |
| | | |
| | | public void setServerMoney(Double serverMoney) { |
| | | this.serverMoney = serverMoney; |
| | | } |
| | | |
| | | public List<OrderCrossCityInfoWrapper> getOrders() { |
| | | return orders; |
| | | } |
| | | |
| | | public void setOrders(List<OrderCrossCityInfoWrapper> orders) { |
| | | this.orders = orders; |
| | | } |
| | | |
| | | public String getEmergencyCall() { |
| | | return emergencyCall; |
| | | } |
| | | |
| | | public void setEmergencyCall(String emergencyCall) { |
| | | this.emergencyCall = emergencyCall; |
| | | } |
| | | |
| | | public static OrderWarpper getOrderWarpper(Map<String, Object> map){ |
| | | OrderWarpper orderWarpper = new OrderWarpper(); |
| | | if(null != map){ |
| | | orderWarpper.setLine(null != map.get("line") ? map.get("line").toString() : ""); |
| | | orderWarpper.setPeopleNumber(null != map.get("peopleNumber") ? Integer.valueOf(map.get("peopleNumber").toString()) : 0); |
| | | orderWarpper.setOrderNumber(null != map.get("orderNumber") ? map.get("orderNumber").toString() : ""); |
| | | orderWarpper.setTotalMoney(null != map.get("totalMoney") ? Double.valueOf(map.get("totalMoney").toString()) : 0); |
| | | orderWarpper.setServerMoney(null != map.get("serverMoney") ? Double.valueOf(map.get("serverMoney").toString()) : 0); |
| | | orderWarpper.setOrders(null != map.get("orders") ? JSON.parseArray(map.get("orders").toString(), OrderCrossCityInfoWrapper.class) : new ArrayList<>()); |
| | | orderWarpper.setEmergencyCall(null != map.get("emergencyCall") ? map.get("emergencyCall").toString() : ""); |
| | | } |
| | | return orderWarpper; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.crossCity.warpper; |
| | | |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | |
| | | import java.util.List; |
| | | |
| | | @ApiModel("站点") |
| | | public class SiteWarpper { |
| | | @ApiModelProperty("所属地区名称") |
| | | private String name; |
| | | @ApiModelProperty("所属地区编号") |
| | | private String code; |
| | | @ApiModelProperty("站点列表") |
| | | private List<Object> sites; |
| | | |
| | | public String getName() { |
| | | return name; |
| | | } |
| | | |
| | | public void setName(String name) { |
| | | this.name = name; |
| | | } |
| | | |
| | | public String getCode() { |
| | | return code; |
| | | } |
| | | |
| | | public void setCode(String code) { |
| | | this.code = code; |
| | | } |
| | | |
| | | public List<Object> getSites() { |
| | | return sites; |
| | | } |
| | | |
| | | public void setSites(List<Object> sites) { |
| | | this.sites = sites; |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.smallLogistics.dao; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | public interface OrderLogisticsMapper extends BaseMapper<OrderLogistics> { |
| | | |
| | | |
| | | /** |
| | | * 获取司机抢单界面详情 |
| | | * @param orderId |
| | | * @return |
| | | */ |
| | | Map<String, Object> queryPushOrder(@Param("orderId") Integer orderId); |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取订单详情页(服务中的页面) |
| | | * @param orderId |
| | | * @return |
| | | */ |
| | | Map<String, Object> queryOrderInfo(@Param("orderId") Integer orderId); |
| | | |
| | | |
| | | /** |
| | | * 获取司机首页订单数据 |
| | | * @param driverId |
| | | * @return |
| | | */ |
| | | List<Map<String, Object>> queryOrderList(@Param("driverId") Integer driverId); |
| | | |
| | | |
| | | /** |
| | | * 获取我的订单列表 |
| | | * @param state |
| | | * @param uid |
| | | * @return |
| | | */ |
| | | List<Map<String, Object>> queryMyAllOrder(@Param("state") Integer state, @Param("uid") Integer uid); |
| | | |
| | | |
| | | /** |
| | | * 获取订单数据 |
| | | * @param state |
| | | * @param driverId |
| | | * @return |
| | | */ |
| | | List<OrderLogistics> query(@Param("state") List<Integer> state, @Param("driverId") Integer driverId); |
| | | |
| | | |
| | | /** |
| | | * 获取所有快到期的预约单(出行时间在30分钟内) |
| | | * @return |
| | | */ |
| | | List<OrderLogistics> queryMaturity(); |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.smallLogistics.dao; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import com.stylefeng.guns.modular.smallLogistics.model.OrderLogisticsSpread; |
| | | |
| | | public interface OrderLogisticsSpreadMapper extends BaseMapper<OrderLogisticsSpread> { |
| | | |
| | | |
| | | } |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.stylefeng.guns.modular.smallLogistics.dao.OrderLogisticsMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics"> |
| | | <id column="id" property="id"/> |
| | | <result column="type" property="type"/> |
| | | <result column="userId" property="userId"/> |
| | | <result column="driverId" property="driverId"/> |
| | | <result column="carId" property="carId"/> |
| | | <result column="orderNum" property="orderNum"/> |
| | | <result column="cargoType" property="cargoType"/> |
| | | <result column="urgent" property="urgent"/> |
| | | <result column="cargoNumber" property="cargoNumber"/> |
| | | <result column="remark" property="remark"/> |
| | | <result column="placementLon" property="placementLon"/> |
| | | <result column="placementLat" property="placementLat"/> |
| | | <result column="placementAddress" property="placementAddress"/> |
| | | <result column="startLon" property="startLon"/> |
| | | <result column="startLat" property="startLat"/> |
| | | <result column="startAddress" property="startAddress"/> |
| | | <result column="endLon" property="endLon"/> |
| | | <result column="endLat" property="endLat"/> |
| | | <result column="endAddress" property="endAddress"/> |
| | | <result column="recipient" property="recipient"/> |
| | | <result column="recipientPhone" property="recipientPhone"/> |
| | | <result column="boardingLon" property="boardingLon"/> |
| | | <result column="boardingLat" property="boardingLat"/> |
| | | <result column="boardingAddress" property="boardingAddress"/> |
| | | <result column="boardingTime" property="boardingTime"/> |
| | | <result column="getoffLon" property="getoffLon"/> |
| | | <result column="getoffLat" property="getoffLat"/> |
| | | <result column="getoffAddress" property="getoffAddress"/> |
| | | <result column="getoffTime" property="getoffTime"/> |
| | | <result column="mileage" property="mileage"/> |
| | | <result column="payManner" property="payManner"/> |
| | | <result column="payType" property="payType"/> |
| | | <result column="orderMoney" property="orderMoney"/> |
| | | <result column="travelMoney" property="travelMoney"/> |
| | | <result column="tipMoney" property="tipMoney"/> |
| | | <result column="redPacketMoney" property="redPacketMoney"/> |
| | | <result column="couponMoney" property="couponMoney"/> |
| | | <result column="redPacketId" property="redPacketId"/> |
| | | <result column="couponId" property="couponId"/> |
| | | <result column="discount" property="discount"/> |
| | | <result column="discountMoney" property="discountMoney"/> |
| | | <result column="activityId" property="activityId"/> |
| | | <result column="companyId" property="companyId"/> |
| | | <result column="payMoney" property="payMoney"/> |
| | | <result column="state" property="state"/> |
| | | <result column="insertTime" property="insertTime"/> |
| | | <result column="travelTime" property="travelTime"/> |
| | | <result column="snatchOrderTime" property="snatchOrderTime"/> |
| | | <result column="setOutTime" property="setOutTime"/> |
| | | <result column="arriveTime" property="arriveTime"/> |
| | | <result column="startServiceTime" property="startServiceTime"/> |
| | | <result column="endServiceTime" property="endServiceTime"/> |
| | | <result column="orderSource" property="orderSource"/> |
| | | <result column="invoiceId" property="invoiceId"/> |
| | | <result column="trackId" property="trackId"/> |
| | | <result column="isDelete" property="isDelete"/> |
| | | <result column="oldState" property="oldState"/> |
| | | <result column="telX" property="telX"/> |
| | | <result column="bindId" property="bindId"/> |
| | | <result column="pickUpCode" property="pickUpCode"/> |
| | | <result column="isReassign" property="isReassign"/> |
| | | <result column="reassignNotice" property="reassignNotice"/> |
| | | </resultMap> |
| | | |
| | | |
| | | |
| | | <select id="queryPushOrder" resultType="map"> |
| | | select |
| | | a.id as id, |
| | | a.state as orderState, |
| | | if(a.type = 4, '同城小件物流订单', '跨城小件物流订单') as orderName, |
| | | DATE_FORMAT(a.travelTime, '%m月%d日 %H:%i') as travelTime, |
| | | a.startAddress as startAddress, |
| | | a.endAddress as endAddress, |
| | | a.startLon as startLon, |
| | | a.startLat as startLat, |
| | | a.endLon as endLon, |
| | | a.endLat as endLat, |
| | | a.recipient as nickName, |
| | | a.recipientPhone as phone, |
| | | a.orderSource as orderSource, |
| | | a.companyId as companyId, |
| | | a.cargoType as cargoType, |
| | | a.cargoNumber as peopleNumber, |
| | | a.urgent as urgent, |
| | | a.tipMoney as tipMoney, |
| | | a.remark as remark, |
| | | a.cargoType as cargoType, |
| | | a.isReassign as isReassign |
| | | from t_order_logistics a |
| | | left join t_user b on (a.userId = b.id) |
| | | where a.id = #{orderId} |
| | | </select> |
| | | |
| | | |
| | | <select id="queryOrderInfo" resultType="map"> |
| | | select |
| | | a.id as orderId, |
| | | a.userId as userId, |
| | | a.driverId as driverId, |
| | | a.state as orderState, |
| | | DATE_FORMAT(a.travelTime, '%m月%d日 %H:%i') as travelTime_, |
| | | DATE_FORMAT(a.travelTime, '%Y-%m-%d %H:%i:%s') as travelTime, |
| | | DATE_FORMAT(a.arriveTime, '%Y-%m-%d %H:%i:%s') as arriveTime, |
| | | a.startAddress as startAddress, |
| | | a.endAddress as endAddress, |
| | | a.startLon as startLon, |
| | | a.startLat as startLat, |
| | | a.endLon as endLon, |
| | | a.endLat as endLat, |
| | | a.orderMoney as orderMoney, |
| | | a.payManner as payManner, |
| | | a.trackId as trackId, |
| | | b.nickName as userName, |
| | | a.recipient as nickName, |
| | | a.recipientPhone as phone, |
| | | a.urgent as urgent, |
| | | a.tipMoney as tipMoney, |
| | | a.cargoNumber as peopleNumber, |
| | | a.cargoType as cargoType, |
| | | (select price from t_order_logistics_spread where orderLogisticsId = a.id) as differenceMoney, |
| | | a.telX as telX, |
| | | a.bindId as bindId, |
| | | (select count(id) from t_order_logistics where userId = b.id and state in (6, 9)) as historyNum, |
| | | (select phone from t_phone where companyId = a.companyId and `type` = 1) as emergencyCall, |
| | | c.reason as cancelReason, |
| | | c.remark as cancelRemark, |
| | | c.money as cancelPayMoney, |
| | | if(c.userType = 1, '用户取消', '平台取消') as cancelUser, |
| | | (select isSpecialCar from t_sys_reformist where companyId = a.companyId) as reassign |
| | | from t_order_logistics a |
| | | left join t_user b on (a.userId = b.id) |
| | | left join t_order_cancel c on (a.id = c.orderId and c.orderType = a.type and c.state = 2) |
| | | where a.id = #{orderId} |
| | | </select> |
| | | |
| | | |
| | | <select id="queryOrderList" resultType="map"> |
| | | select |
| | | id as id, |
| | | type as type, |
| | | if(type = 4, '同城小件物流订单', '跨城小件物流订单') as `name`, |
| | | DATE_FORMAT(travelTime, '%Y-%m-%d %H:%i:%s') as `time`, |
| | | startAddress as startAddress, |
| | | endAddress as endAddress, |
| | | state as state, |
| | | CONCAT(recipient, '-', recipientPhone) as `user`, |
| | | CONCAT(if(cargoType = 1, '普通小件 x ', '普通大件 x '), cargoNumber) as cargoNumber, |
| | | driverId as driverId, |
| | | tipMoney as redMoney |
| | | from t_order_logistics where 1 = 1 |
| | | <if test="null != driverId"> |
| | | and driverId = #{driverId} |
| | | </if> |
| | | and state in (2, 3, 4, 5, 8, 11, 12) |
| | | </select> |
| | | |
| | | |
| | | |
| | | <select id="queryMyAllOrder" resultType="map"> |
| | | select |
| | | id as id, |
| | | type as type, |
| | | if(type = 4, '同城小件物流订单', '跨城小件物流订单') as `name`, |
| | | DATE_FORMAT(travelTime, '%Y-%m-%d %H:%i:%s') as time, |
| | | startAddress as startAddress, |
| | | endAddress as endAddress, |
| | | state as state, |
| | | CONCAT(recipient, '-', recipientPhone) as `user`, |
| | | CONCAT(if(cargoType = 1, '普通小件 x ', '普通大件 x '), cargoNumber) as cargoNumber, |
| | | orderMoney as orderMoney, |
| | | payManner as payManner, |
| | | UNIX_TIMESTAMP(travelTime) as travelTime, |
| | | remark as remark, |
| | | tipMoney as redMoney |
| | | from t_order_logistics where driverId = #{uid} |
| | | <if test="state == 1"> |
| | | and state not in (1, 7) |
| | | </if> |
| | | <if test="state == 2"> |
| | | and state = 8 |
| | | </if> |
| | | <if test="state == 3"> |
| | | and state = 10 |
| | | </if> |
| | | <if test="state == 4"> |
| | | and state in (6, 9) |
| | | </if> |
| | | order by insertTime desc |
| | | </select> |
| | | |
| | | |
| | | |
| | | <select id="query" resultType="OrderLogistics"> |
| | | select |
| | | id as id, |
| | | userId as userId, |
| | | driverId as driverId, |
| | | carId as carId, |
| | | orderNum as orderNum, |
| | | placementLon as placementLon, |
| | | placementLat as placementLat, |
| | | placementAddress as placementAddress, |
| | | startLon as startLon, |
| | | startLat as startLat, |
| | | startAddress as startAddress, |
| | | endLon as endLon, |
| | | endLat as endLat, |
| | | endAddress as endAddress, |
| | | boardingLon as boardingLon, |
| | | boardingLat as boardingLat, |
| | | boardingAddress as boardingAddress, |
| | | boardingTime as boardingTime, |
| | | getoffLon as getoffLon, |
| | | getoffLat as getoffLat, |
| | | getoffAddress as getoffAddress, |
| | | getoffTime as getoffTime, |
| | | mileage as mileage, |
| | | payManner as payManner, |
| | | payType as payType, |
| | | orderMoney as orderMoney, |
| | | redPacketMoney as redPacketMoney, |
| | | couponMoney as couponMoney, |
| | | redPacketId as redPacketId, |
| | | couponId as couponId, |
| | | discount as discount, |
| | | discountMoney as discountMoney, |
| | | activityId as activityId, |
| | | companyId as companyId, |
| | | payMoney as payMoney, |
| | | state as state, |
| | | insertTime as insertTime, |
| | | travelTime as travelTime, |
| | | snatchOrderTime as snatchOrderTime, |
| | | setOutTime as setOutTime, |
| | | arriveTime as arriveTime, |
| | | startServiceTime as startServiceTime, |
| | | endServiceTime as endServiceTime, |
| | | orderSource as orderSource, |
| | | invoiceId as invoiceId, |
| | | isReassign as isReassign, |
| | | trackId as trackId |
| | | from t_order_logistics where 1 = 1 |
| | | <if test="null != state"> |
| | | and state in |
| | | <foreach collection="state" item="item" index="index" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | <if test="null != driverId"> |
| | | and driverId = #{driverId} |
| | | </if> |
| | | </select> |
| | | |
| | | |
| | | <select id="queryMaturity" resultType="OrderLogistics"> |
| | | select |
| | | id as id, |
| | | userId as userId, |
| | | driverId as driverId, |
| | | carId as carId, |
| | | orderNum as orderNum, |
| | | placementLon as placementLon, |
| | | placementLat as placementLat, |
| | | placementAddress as placementAddress, |
| | | startLon as startLon, |
| | | startLat as startLat, |
| | | startAddress as startAddress, |
| | | endLon as endLon, |
| | | endLat as endLat, |
| | | endAddress as endAddress, |
| | | boardingLon as boardingLon, |
| | | boardingLat as boardingLat, |
| | | boardingAddress as boardingAddress, |
| | | boardingTime as boardingTime, |
| | | getoffLon as getoffLon, |
| | | getoffLat as getoffLat, |
| | | getoffAddress as getoffAddress, |
| | | getoffTime as getoffTime, |
| | | mileage as mileage, |
| | | payManner as payManner, |
| | | payType as payType, |
| | | orderMoney as orderMoney, |
| | | redPacketMoney as redPacketMoney, |
| | | couponMoney as couponMoney, |
| | | redPacketId as redPacketId, |
| | | couponId as couponId, |
| | | discount as discount, |
| | | discountMoney as discountMoney, |
| | | activityId as activityId, |
| | | companyId as companyId, |
| | | payMoney as payMoney, |
| | | state as state, |
| | | insertTime as insertTime, |
| | | travelTime as travelTime, |
| | | snatchOrderTime as snatchOrderTime, |
| | | setOutTime as setOutTime, |
| | | arriveTime as arriveTime, |
| | | startServiceTime as startServiceTime, |
| | | endServiceTime as endServiceTime, |
| | | orderSource as orderSource, |
| | | invoiceId as invoiceId, |
| | | isReassign as isReassign, |
| | | trackId as trackId |
| | | from t_order_logistics where state = 2 and (UNIX_TIMESTAMP(travelTime) - UNIX_TIMESTAMP(now())) between 1710 and 1800 |
| | | </select> |
| | | </mapper> |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.stylefeng.guns.modular.smallLogistics.dao.OrderLogisticsSpreadMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.smallLogistics.model.OrderLogisticsSpread"> |
| | | <id column="id" property="id"/> |
| | | <result column="orderLogisticsId" property="orderLogisticsId"/> |
| | | <result column="price" property="price"/> |
| | | <result column="payType" property="payType"/> |
| | | <result column="payTime" property="payTime"/> |
| | | <result column="payMoney" property="payMoney"/> |
| | | </resultMap> |
| | | </mapper> |
New file |
| | |
| | | package com.stylefeng.guns.modular.smallLogistics.model; |
| | | |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * 小件物流订单 |
| | | */ |
| | | @TableName("t_order_logistics") |
| | | public class OrderLogistics { |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @TableField("id") |
| | | private Integer id; |
| | | /** |
| | | * 订单类型(4=同城物流,5=跨城物流) |
| | | */ |
| | | @TableField("type") |
| | | private Integer type; |
| | | /** |
| | | * 用户id |
| | | */ |
| | | @TableField("userId") |
| | | private Integer userId; |
| | | /** |
| | | * 司机id |
| | | */ |
| | | @TableField("driverId") |
| | | private Integer driverId; |
| | | /** |
| | | * 车辆id |
| | | */ |
| | | @TableField("carId") |
| | | private Integer carId; |
| | | /** |
| | | * 订单号 |
| | | */ |
| | | @TableField("orderNum") |
| | | private String orderNum; |
| | | /** |
| | | * 货物类型(1=普通货物,2=贵重货物) |
| | | */ |
| | | @TableField("cargoType") |
| | | private Integer cargoType; |
| | | /** |
| | | * 是否加急(1=否,2=是) |
| | | */ |
| | | @TableField("urgent") |
| | | private Integer urgent; |
| | | /** |
| | | * 货物数量 |
| | | */ |
| | | @TableField("cargoNumber") |
| | | private Integer cargoNumber; |
| | | /** |
| | | * 备注信息 |
| | | */ |
| | | @TableField("remark") |
| | | private String remark; |
| | | /** |
| | | * 下单地点经度 |
| | | */ |
| | | @TableField("placementLon") |
| | | private Double placementLon; |
| | | /** |
| | | * 下单地点纬度 |
| | | */ |
| | | @TableField("placementLat") |
| | | private Double placementLat; |
| | | /** |
| | | * 下单地点 |
| | | */ |
| | | @TableField("placementAddress") |
| | | private String placementAddress; |
| | | /** |
| | | * 起点经度 |
| | | */ |
| | | @TableField("startLon") |
| | | private Double startLon; |
| | | /** |
| | | * 起点纬度 |
| | | */ |
| | | @TableField("startLat") |
| | | private Double startLat; |
| | | /** |
| | | * 起点 |
| | | */ |
| | | @TableField("startAddress") |
| | | private String startAddress; |
| | | /** |
| | | * 目的地经度 |
| | | */ |
| | | @TableField("endLon") |
| | | private Double endLon; |
| | | /** |
| | | * 目的地纬度 |
| | | */ |
| | | @TableField("endLat") |
| | | private Double endLat; |
| | | /** |
| | | * 目的地 |
| | | */ |
| | | @TableField("endAddress") |
| | | private String endAddress; |
| | | /** |
| | | * 收件人姓名 |
| | | */ |
| | | @TableField("recipient") |
| | | private String recipient; |
| | | /** |
| | | * 收件人电话 |
| | | */ |
| | | @TableField("recipientPhone") |
| | | private String recipientPhone; |
| | | /** |
| | | * 上车点经度 |
| | | */ |
| | | @TableField("boardingLon") |
| | | private Double boardingLon; |
| | | /** |
| | | * 上车点纬度 |
| | | */ |
| | | @TableField("boardingLat") |
| | | private Double boardingLat; |
| | | /** |
| | | * 上车地点 |
| | | */ |
| | | @TableField("boardingAddress") |
| | | private String boardingAddress; |
| | | /** |
| | | * 上车时间 |
| | | */ |
| | | @TableField("boardingTime") |
| | | private Date boardingTime; |
| | | /** |
| | | * 下车点经度 |
| | | */ |
| | | @TableField("getoffLon") |
| | | private Double getoffLon; |
| | | /** |
| | | * 下车点纬度 |
| | | */ |
| | | @TableField("getoffLat") |
| | | private Double getoffLat; |
| | | /** |
| | | * 下车点 |
| | | */ |
| | | @TableField("getoffAddress") |
| | | private String getoffAddress; |
| | | /** |
| | | * 下车时间 |
| | | */ |
| | | @TableField("getoffTime") |
| | | private Date getoffTime; |
| | | /** |
| | | * 行驶里程数(米) |
| | | */ |
| | | @TableField("mileage") |
| | | private Double mileage; |
| | | /** |
| | | * 支付方式(1=OK平台支付,2=其他方式支付) |
| | | */ |
| | | @TableField("payManner") |
| | | private Integer payManner; |
| | | /** |
| | | * 支付方式(1=微信,2=支付宝,3=余额) |
| | | */ |
| | | @TableField("payType") |
| | | private Integer payType; |
| | | /** |
| | | * 订单金额 |
| | | */ |
| | | @TableField("orderMoney") |
| | | private Double orderMoney; |
| | | /** |
| | | * 行程费 |
| | | */ |
| | | @TableField("travelMoney") |
| | | private Double travelMoney; |
| | | /** |
| | | * 小费 |
| | | */ |
| | | @TableField("tipMoney") |
| | | private Double tipMoney; |
| | | /** |
| | | * 红包抵扣金额 |
| | | */ |
| | | @TableField("redPacketMoney") |
| | | private Double redPacketMoney; |
| | | /** |
| | | * 优惠券抵扣金额 |
| | | */ |
| | | @TableField("couponMoney") |
| | | private Double couponMoney; |
| | | /** |
| | | * 红包id |
| | | */ |
| | | @TableField("redPacketId") |
| | | private Integer redPacketId; |
| | | /** |
| | | * 优惠券id |
| | | */ |
| | | @TableField("couponId") |
| | | private Integer couponId; |
| | | /** |
| | | * 折扣 |
| | | */ |
| | | @TableField("discount") |
| | | private Double discount; |
| | | /** |
| | | * 折扣优惠金额 |
| | | */ |
| | | @TableField("discountMoney") |
| | | private Double discountMoney; |
| | | /** |
| | | * 折扣活动id |
| | | */ |
| | | @TableField("activityId") |
| | | private Integer activityId; |
| | | /** |
| | | * 公司id |
| | | */ |
| | | @TableField("companyId") |
| | | private Integer companyId; |
| | | /** |
| | | * 支付金额 |
| | | */ |
| | | @TableField("payMoney") |
| | | private Double payMoney; |
| | | /** |
| | | * 状态(1=待接单,2=待出发,3=待到达预约地点,4=待取货,5=送货中,6=已送达,7=待支付,8=需补差价,9=已取货,10=已取消,11=改派中,12=已支付差价) |
| | | */ |
| | | @TableField("state") |
| | | private Integer state; |
| | | /** |
| | | * 下单时间 |
| | | */ |
| | | @TableField("insertTime") |
| | | private Date insertTime; |
| | | /** |
| | | * 预约取货时间 |
| | | */ |
| | | @TableField("travelTime") |
| | | private Date travelTime; |
| | | /** |
| | | * 抢单时间 |
| | | */ |
| | | @TableField("snatchOrderTime") |
| | | private Date snatchOrderTime; |
| | | /** |
| | | * 司机点出发时间 |
| | | */ |
| | | @TableField("setOutTime") |
| | | private Date setOutTime; |
| | | /** |
| | | * 司机到达预约地点时间 |
| | | */ |
| | | @TableField("arriveTime") |
| | | private Date arriveTime; |
| | | /** |
| | | * 开始服务时间 |
| | | */ |
| | | @TableField("startServiceTime") |
| | | private Date startServiceTime; |
| | | /** |
| | | * 结束服务时间 |
| | | */ |
| | | @TableField("endServiceTime") |
| | | private Date endServiceTime; |
| | | /** |
| | | * 订单来源(1:APP下单,2:扫码下单,3:小程序下单,4:司机下单,5:调度下单) |
| | | */ |
| | | @TableField("orderSource") |
| | | private Integer orderSource; |
| | | /** |
| | | * 发票id |
| | | */ |
| | | @TableField("invoiceId") |
| | | private Integer invoiceId; |
| | | /** |
| | | * 高德猎鹰轨迹id |
| | | * @return |
| | | */ |
| | | @TableField("trackId") |
| | | private String trackId; |
| | | /** |
| | | * 是否删除(1=否,2=是) |
| | | */ |
| | | @TableField("isDelete") |
| | | private Integer isDelete; |
| | | /** |
| | | * 该派前的订单状态 |
| | | * @return |
| | | */ |
| | | @TableField("oldState") |
| | | private Integer oldState; |
| | | /** |
| | | * 移动小号 |
| | | * @return |
| | | */ |
| | | @TableField("telX") |
| | | private String telX; |
| | | /** |
| | | * 绑定小号关系id |
| | | * @return |
| | | */ |
| | | @TableField("bindId") |
| | | private String bindId; |
| | | /** |
| | | * 取件码 |
| | | * @return |
| | | */ |
| | | @TableField("pickUpCode") |
| | | private String pickUpCode; |
| | | /** |
| | | * 是否是改派单(1=否,=是) |
| | | * @return |
| | | */ |
| | | @TableField("isReassign") |
| | | private Integer isReassign; |
| | | /** |
| | | * 改派通知标识(0=没有改派,1=改派中,2=已改派)用于通知前端获取新司机数据 |
| | | */ |
| | | @TableField("reassignNotice") |
| | | private Integer reassignNotice; |
| | | |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(Integer id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public Integer getType() { |
| | | return type; |
| | | } |
| | | |
| | | public void setType(Integer type) { |
| | | this.type = type; |
| | | } |
| | | |
| | | public Integer getUserId() { |
| | | return userId; |
| | | } |
| | | |
| | | public void setUserId(Integer userId) { |
| | | this.userId = userId; |
| | | } |
| | | |
| | | public Integer getDriverId() { |
| | | return driverId; |
| | | } |
| | | |
| | | public void setDriverId(Integer driverId) { |
| | | this.driverId = driverId; |
| | | } |
| | | |
| | | public Integer getCarId() { |
| | | return carId; |
| | | } |
| | | |
| | | public void setCarId(Integer carId) { |
| | | this.carId = carId; |
| | | } |
| | | |
| | | public String getOrderNum() { |
| | | return orderNum; |
| | | } |
| | | |
| | | public void setOrderNum(String orderNum) { |
| | | this.orderNum = orderNum; |
| | | } |
| | | |
| | | public Integer getCargoType() { |
| | | return cargoType; |
| | | } |
| | | |
| | | public void setCargoType(Integer cargoType) { |
| | | this.cargoType = cargoType; |
| | | } |
| | | |
| | | public Integer getUrgent() { |
| | | return urgent; |
| | | } |
| | | |
| | | public void setUrgent(Integer urgent) { |
| | | this.urgent = urgent; |
| | | } |
| | | |
| | | public Integer getCargoNumber() { |
| | | return cargoNumber; |
| | | } |
| | | |
| | | public void setCargoNumber(Integer cargoNumber) { |
| | | this.cargoNumber = cargoNumber; |
| | | } |
| | | |
| | | public String getRemark() { |
| | | return remark; |
| | | } |
| | | |
| | | public void setRemark(String remark) { |
| | | this.remark = remark; |
| | | } |
| | | |
| | | public Double getPlacementLon() { |
| | | return placementLon; |
| | | } |
| | | |
| | | public void setPlacementLon(Double placementLon) { |
| | | this.placementLon = placementLon; |
| | | } |
| | | |
| | | public Double getPlacementLat() { |
| | | return placementLat; |
| | | } |
| | | |
| | | public void setPlacementLat(Double placementLat) { |
| | | this.placementLat = placementLat; |
| | | } |
| | | |
| | | public String getPlacementAddress() { |
| | | return placementAddress; |
| | | } |
| | | |
| | | public void setPlacementAddress(String placementAddress) { |
| | | this.placementAddress = placementAddress; |
| | | } |
| | | |
| | | public Double getStartLon() { |
| | | return startLon; |
| | | } |
| | | |
| | | public void setStartLon(Double startLon) { |
| | | this.startLon = startLon; |
| | | } |
| | | |
| | | public Double getStartLat() { |
| | | return startLat; |
| | | } |
| | | |
| | | public void setStartLat(Double startLat) { |
| | | this.startLat = startLat; |
| | | } |
| | | |
| | | public String getStartAddress() { |
| | | return startAddress; |
| | | } |
| | | |
| | | public void setStartAddress(String startAddress) { |
| | | this.startAddress = startAddress; |
| | | } |
| | | |
| | | public Double getEndLon() { |
| | | return endLon; |
| | | } |
| | | |
| | | public void setEndLon(Double endLon) { |
| | | this.endLon = endLon; |
| | | } |
| | | |
| | | public Double getEndLat() { |
| | | return endLat; |
| | | } |
| | | |
| | | public void setEndLat(Double endLat) { |
| | | this.endLat = endLat; |
| | | } |
| | | |
| | | public String getEndAddress() { |
| | | return endAddress; |
| | | } |
| | | |
| | | public void setEndAddress(String endAddress) { |
| | | this.endAddress = endAddress; |
| | | } |
| | | |
| | | public String getRecipient() { |
| | | return recipient; |
| | | } |
| | | |
| | | public void setRecipient(String recipient) { |
| | | this.recipient = recipient; |
| | | } |
| | | |
| | | public String getRecipientPhone() { |
| | | return recipientPhone; |
| | | } |
| | | |
| | | public void setRecipientPhone(String recipientPhone) { |
| | | this.recipientPhone = recipientPhone; |
| | | } |
| | | |
| | | public Double getBoardingLon() { |
| | | return boardingLon; |
| | | } |
| | | |
| | | public void setBoardingLon(Double boardingLon) { |
| | | this.boardingLon = boardingLon; |
| | | } |
| | | |
| | | public Double getBoardingLat() { |
| | | return boardingLat; |
| | | } |
| | | |
| | | public void setBoardingLat(Double boardingLat) { |
| | | this.boardingLat = boardingLat; |
| | | } |
| | | |
| | | public String getBoardingAddress() { |
| | | return boardingAddress; |
| | | } |
| | | |
| | | public void setBoardingAddress(String boardingAddress) { |
| | | this.boardingAddress = boardingAddress; |
| | | } |
| | | |
| | | public Date getBoardingTime() { |
| | | return boardingTime; |
| | | } |
| | | |
| | | public void setBoardingTime(Date boardingTime) { |
| | | this.boardingTime = boardingTime; |
| | | } |
| | | |
| | | public Double getGetoffLon() { |
| | | return getoffLon; |
| | | } |
| | | |
| | | public void setGetoffLon(Double getoffLon) { |
| | | this.getoffLon = getoffLon; |
| | | } |
| | | |
| | | public Double getGetoffLat() { |
| | | return getoffLat; |
| | | } |
| | | |
| | | public void setGetoffLat(Double getoffLat) { |
| | | this.getoffLat = getoffLat; |
| | | } |
| | | |
| | | public String getGetoffAddress() { |
| | | return getoffAddress; |
| | | } |
| | | |
| | | public void setGetoffAddress(String getoffAddress) { |
| | | this.getoffAddress = getoffAddress; |
| | | } |
| | | |
| | | public Date getGetoffTime() { |
| | | return getoffTime; |
| | | } |
| | | |
| | | public void setGetoffTime(Date getoffTime) { |
| | | this.getoffTime = getoffTime; |
| | | } |
| | | |
| | | public Double getMileage() { |
| | | return mileage; |
| | | } |
| | | |
| | | public void setMileage(Double mileage) { |
| | | this.mileage = mileage; |
| | | } |
| | | |
| | | public Integer getPayType() { |
| | | return payType; |
| | | } |
| | | |
| | | public void setPayType(Integer payType) { |
| | | this.payType = payType; |
| | | } |
| | | |
| | | public Double getOrderMoney() { |
| | | return orderMoney; |
| | | } |
| | | |
| | | public void setOrderMoney(Double orderMoney) { |
| | | this.orderMoney = orderMoney; |
| | | } |
| | | |
| | | public Double getTravelMoney() { |
| | | return travelMoney; |
| | | } |
| | | |
| | | public void setTravelMoney(Double travelMoney) { |
| | | this.travelMoney = travelMoney; |
| | | } |
| | | |
| | | public Double getTipMoney() { |
| | | return tipMoney; |
| | | } |
| | | |
| | | public void setTipMoney(Double tipMoney) { |
| | | this.tipMoney = tipMoney; |
| | | } |
| | | |
| | | public Double getRedPacketMoney() { |
| | | return redPacketMoney; |
| | | } |
| | | |
| | | public void setRedPacketMoney(Double redPacketMoney) { |
| | | this.redPacketMoney = redPacketMoney; |
| | | } |
| | | |
| | | public Double getCouponMoney() { |
| | | return couponMoney; |
| | | } |
| | | |
| | | public void setCouponMoney(Double couponMoney) { |
| | | this.couponMoney = couponMoney; |
| | | } |
| | | |
| | | public Integer getRedPacketId() { |
| | | return redPacketId; |
| | | } |
| | | |
| | | public void setRedPacketId(Integer redPacketId) { |
| | | this.redPacketId = redPacketId; |
| | | } |
| | | |
| | | public Integer getCouponId() { |
| | | return couponId; |
| | | } |
| | | |
| | | public void setCouponId(Integer couponId) { |
| | | this.couponId = couponId; |
| | | } |
| | | |
| | | public Integer getCompanyId() { |
| | | return companyId; |
| | | } |
| | | |
| | | public void setCompanyId(Integer companyId) { |
| | | this.companyId = companyId; |
| | | } |
| | | |
| | | public Double getPayMoney() { |
| | | return payMoney; |
| | | } |
| | | |
| | | public void setPayMoney(Double payMoney) { |
| | | this.payMoney = payMoney; |
| | | } |
| | | |
| | | public Integer getState() { |
| | | return state; |
| | | } |
| | | |
| | | public void setState(Integer state) { |
| | | this.state = state; |
| | | } |
| | | |
| | | public Date getInsertTime() { |
| | | return insertTime; |
| | | } |
| | | |
| | | public void setInsertTime(Date insertTime) { |
| | | this.insertTime = insertTime; |
| | | } |
| | | |
| | | public Date getTravelTime() { |
| | | return travelTime; |
| | | } |
| | | |
| | | public void setTravelTime(Date travelTime) { |
| | | this.travelTime = travelTime; |
| | | } |
| | | |
| | | public Date getSnatchOrderTime() { |
| | | return snatchOrderTime; |
| | | } |
| | | |
| | | public void setSnatchOrderTime(Date snatchOrderTime) { |
| | | this.snatchOrderTime = snatchOrderTime; |
| | | } |
| | | |
| | | public Date getSetOutTime() { |
| | | return setOutTime; |
| | | } |
| | | |
| | | public void setSetOutTime(Date setOutTime) { |
| | | this.setOutTime = setOutTime; |
| | | } |
| | | |
| | | public Date getArriveTime() { |
| | | return arriveTime; |
| | | } |
| | | |
| | | public void setArriveTime(Date arriveTime) { |
| | | this.arriveTime = arriveTime; |
| | | } |
| | | |
| | | public Date getStartServiceTime() { |
| | | return startServiceTime; |
| | | } |
| | | |
| | | public void setStartServiceTime(Date startServiceTime) { |
| | | this.startServiceTime = startServiceTime; |
| | | } |
| | | |
| | | public Date getEndServiceTime() { |
| | | return endServiceTime; |
| | | } |
| | | |
| | | public void setEndServiceTime(Date endServiceTime) { |
| | | this.endServiceTime = endServiceTime; |
| | | } |
| | | |
| | | public Integer getOrderSource() { |
| | | return orderSource; |
| | | } |
| | | |
| | | public void setOrderSource(Integer orderSource) { |
| | | this.orderSource = orderSource; |
| | | } |
| | | |
| | | |
| | | public Integer getInvoiceId() { |
| | | return invoiceId; |
| | | } |
| | | |
| | | public void setInvoiceId(Integer invoiceId) { |
| | | this.invoiceId = invoiceId; |
| | | } |
| | | |
| | | public Integer getPayManner() { |
| | | return payManner; |
| | | } |
| | | |
| | | public void setPayManner(Integer payManner) { |
| | | this.payManner = payManner; |
| | | } |
| | | |
| | | public String getTrackId() { |
| | | return trackId; |
| | | } |
| | | |
| | | public void setTrackId(String trackId) { |
| | | this.trackId = trackId; |
| | | } |
| | | |
| | | public Double getDiscount() { |
| | | return discount; |
| | | } |
| | | |
| | | public void setDiscount(Double discount) { |
| | | this.discount = discount; |
| | | } |
| | | |
| | | public Double getDiscountMoney() { |
| | | return discountMoney; |
| | | } |
| | | |
| | | public void setDiscountMoney(Double discountMoney) { |
| | | this.discountMoney = discountMoney; |
| | | } |
| | | |
| | | public Integer getActivityId() { |
| | | return activityId; |
| | | } |
| | | |
| | | public void setActivityId(Integer activityId) { |
| | | this.activityId = activityId; |
| | | } |
| | | |
| | | public Integer getIsDelete() { |
| | | return isDelete; |
| | | } |
| | | |
| | | public void setIsDelete(Integer isDelete) { |
| | | this.isDelete = isDelete; |
| | | } |
| | | |
| | | public Integer getOldState() { |
| | | return oldState; |
| | | } |
| | | |
| | | public void setOldState(Integer oldState) { |
| | | this.oldState = oldState; |
| | | } |
| | | |
| | | public String getTelX() { |
| | | return telX; |
| | | } |
| | | |
| | | public void setTelX(String telX) { |
| | | this.telX = telX; |
| | | } |
| | | |
| | | public String getBindId() { |
| | | return bindId; |
| | | } |
| | | |
| | | public void setBindId(String bindId) { |
| | | this.bindId = bindId; |
| | | } |
| | | |
| | | public String getPickUpCode() { |
| | | return pickUpCode; |
| | | } |
| | | |
| | | public void setPickUpCode(String pickUpCode) { |
| | | this.pickUpCode = pickUpCode; |
| | | } |
| | | |
| | | public Integer getIsReassign() { |
| | | return isReassign; |
| | | } |
| | | |
| | | public void setIsReassign(Integer isReassign) { |
| | | this.isReassign = isReassign; |
| | | } |
| | | |
| | | public Integer getReassignNotice() { |
| | | return reassignNotice; |
| | | } |
| | | |
| | | public void setReassignNotice(Integer reassignNotice) { |
| | | this.reassignNotice = reassignNotice; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "OrderLogistics{" + |
| | | "id=" + id + |
| | | ", type=" + type + |
| | | ", userId=" + userId + |
| | | ", driverId=" + driverId + |
| | | ", carId=" + carId + |
| | | ", orderNum='" + orderNum + '\'' + |
| | | ", cargoType=" + cargoType + |
| | | ", cargoNumber=" + cargoNumber + |
| | | ", remark=" + remark + |
| | | ", placementLon=" + placementLon + |
| | | ", placementLat=" + placementLat + |
| | | ", placementAddress='" + placementAddress + '\'' + |
| | | ", startLon=" + startLon + |
| | | ", startLat=" + startLat + |
| | | ", startAddress='" + startAddress + '\'' + |
| | | ", endLon=" + endLon + |
| | | ", endLat=" + endLat + |
| | | ", endAddress='" + endAddress + '\'' + |
| | | ", recipient='" + recipient + '\'' + |
| | | ", recipientPhone='" + recipientPhone + '\'' + |
| | | ", boardingLon=" + boardingLon + |
| | | ", boardingLat=" + boardingLat + |
| | | ", boardingAddress='" + boardingAddress + '\'' + |
| | | ", boardingTime=" + boardingTime + |
| | | ", getoffLon=" + getoffLon + |
| | | ", getoffLat=" + getoffLat + |
| | | ", getoffAddress='" + getoffAddress + '\'' + |
| | | ", getoffTime=" + getoffTime + |
| | | ", mileage=" + mileage + |
| | | ", payManner=" + payManner + |
| | | ", payType=" + payType + |
| | | ", orderMoney=" + orderMoney + |
| | | ", travelMoney=" + travelMoney + |
| | | ", tipMoney=" + tipMoney + |
| | | ", redPacketMoney=" + redPacketMoney + |
| | | ", couponMoney=" + couponMoney + |
| | | ", redPacketId=" + redPacketId + |
| | | ", couponId=" + couponId + |
| | | ", discount=" + discount + |
| | | ", discountMoney=" + discountMoney + |
| | | ", activityId=" + activityId + |
| | | ", companyId=" + companyId + |
| | | ", payMoney=" + payMoney + |
| | | ", state=" + state + |
| | | ", insertTime=" + insertTime + |
| | | ", travelTime=" + travelTime + |
| | | ", snatchOrderTime=" + snatchOrderTime + |
| | | ", setOutTime=" + setOutTime + |
| | | ", arriveTime=" + arriveTime + |
| | | ", startServiceTime=" + startServiceTime + |
| | | ", endServiceTime=" + endServiceTime + |
| | | ", orderSource=" + orderSource + |
| | | ", invoiceId=" + invoiceId + |
| | | ", trackId='" + trackId + '\'' + |
| | | ", isDelete=" + isDelete + |
| | | ", telX='" + telX + '\'' + |
| | | ", bindId='" + bindId + '\'' + |
| | | '}'; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.smallLogistics.model; |
| | | |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * 小件物流差价 |
| | | */ |
| | | @TableName("t_order_logistics_spread") |
| | | public class OrderLogisticsSpread { |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @TableField("id") |
| | | private Integer id; |
| | | /** |
| | | * 小件物流订单id |
| | | */ |
| | | @TableField("orderLogisticsId") |
| | | private Integer orderLogisticsId; |
| | | /** |
| | | * 需要支付的差价金额 |
| | | */ |
| | | @TableField("price") |
| | | private Double price; |
| | | /** |
| | | * 支付方式(1=微信,2=支付宝,3=其他) |
| | | */ |
| | | @TableField("payType") |
| | | private Integer payType; |
| | | /** |
| | | * 支付时间 |
| | | */ |
| | | @TableField("payTime") |
| | | private Date payTime; |
| | | /** |
| | | * 支付金额 |
| | | */ |
| | | @TableField("payMoney") |
| | | private Double payMoney; |
| | | |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(Integer id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public Integer getOrderLogisticsId() { |
| | | return orderLogisticsId; |
| | | } |
| | | |
| | | public void setOrderLogisticsId(Integer orderLogisticsId) { |
| | | this.orderLogisticsId = orderLogisticsId; |
| | | } |
| | | |
| | | public Double getPrice() { |
| | | return price; |
| | | } |
| | | |
| | | public void setPrice(Double price) { |
| | | this.price = price; |
| | | } |
| | | |
| | | public Integer getPayType() { |
| | | return payType; |
| | | } |
| | | |
| | | public void setPayType(Integer payType) { |
| | | this.payType = payType; |
| | | } |
| | | |
| | | public Date getPayTime() { |
| | | return payTime; |
| | | } |
| | | |
| | | public void setPayTime(Date payTime) { |
| | | this.payTime = payTime; |
| | | } |
| | | |
| | | public Double getPayMoney() { |
| | | return payMoney; |
| | | } |
| | | |
| | | public void setPayMoney(Double payMoney) { |
| | | this.payMoney = payMoney; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "OrderLogisticsSpread{" + |
| | | "id=" + id + |
| | | ", orderLogisticsId=" + orderLogisticsId + |
| | | ", price=" + price + |
| | | ", payType=" + payType + |
| | | ", payTime=" + payTime + |
| | | ", payMoney=" + payMoney + |
| | | '}'; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.smallLogistics.server; |
| | | |
| | | import com.baomidou.mybatisplus.service.IService; |
| | | import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | public interface IOrderLogisticsService extends IService<OrderLogistics> { |
| | | |
| | | |
| | | /** |
| | | * 获取司机的抢单页面订单详情 |
| | | * @param orderId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | Map<String, Object> queryPushOrder(Integer orderId) throws Exception; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 抢单操作 |
| | | * @param orderId |
| | | * @param uid |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | ResultUtil grabOrder(Integer orderId, Integer uid) throws Exception; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取订单详情页(服务中的页面) |
| | | * @param orderId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | Map<String, Object> queryOrderInfo(Integer orderId) throws Exception; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 走订单流程操作 |
| | | * @param orderId |
| | | * @param state |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | ResultUtil process(Integer orderId, Integer state, Double lon, Double lat, String address) throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 设置取件码(小件物流) |
| | | * @param orderId |
| | | * @param pickUpCode |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | ResultUtil fillInPickUpCode(Integer orderId, String pickUpCode) throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 司机设置补差价 |
| | | * @param orderId |
| | | * @param difference |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | ResultUtil makeUpTheDifference(Integer orderId, Double difference) throws Exception; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取司机端首页订单列表 |
| | | * @param driverId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<Map<String, Object>> queryOrderList(Integer driverId) throws Exception; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取司机端我的订单列表 |
| | | * @param state 1=全部,2=待支付,3=已取消 |
| | | * @param uid |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<Map<String, Object>> queryMyAllOrder(Integer state, Integer uid) throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 抢单操作(车载端) |
| | | * @param orderId |
| | | * @param uid |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | ResultUtil grabOrder_(Integer orderId, Integer uid) throws Exception; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取订单数据 |
| | | * @param state |
| | | * @param driverId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<OrderLogistics> query(Integer driverId, Integer...state) throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 发送验证码 |
| | | * @param orderId |
| | | * @throws Exception |
| | | */ |
| | | void sendVerificationCode(Integer orderId) throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 获取所有快到期的预约单(出行时间在30分钟内) |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<OrderLogistics> queryMaturity() throws Exception; |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.smallLogistics.server; |
| | | |
| | | import com.baomidou.mybatisplus.service.IService; |
| | | import com.stylefeng.guns.modular.smallLogistics.model.OrderLogisticsSpread; |
| | | |
| | | import java.util.Map; |
| | | |
| | | public interface IOrderLogisticsSpreadService extends IService<OrderLogisticsSpread> { |
| | | |
| | | /** |
| | | * 获取差价信息 |
| | | * @param orderLogisticsId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | OrderLogisticsSpread query(Integer orderLogisticsId) throws Exception; |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.smallLogistics.server.impl; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.smallLogistics.dao.OrderLogisticsMapper; |
| | | import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics; |
| | | import com.stylefeng.guns.modular.smallLogistics.model.OrderLogisticsSpread; |
| | | import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService; |
| | | import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsSpreadService; |
| | | import com.stylefeng.guns.modular.system.dao.RegionMapper; |
| | | import com.stylefeng.guns.modular.system.model.Company; |
| | | import com.stylefeng.guns.modular.system.model.Driver; |
| | | import com.stylefeng.guns.modular.system.model.Region; |
| | | import com.stylefeng.guns.modular.system.service.ICompanyService; |
| | | import com.stylefeng.guns.modular.system.service.IDriverService; |
| | | import com.stylefeng.guns.modular.system.service.IIncomeService; |
| | | import com.stylefeng.guns.modular.system.service.ISystemNoticeService; |
| | | import com.stylefeng.guns.modular.system.util.*; |
| | | import com.stylefeng.guns.modular.taxi.model.OrderTaxi; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | |
| | | |
| | | @Service |
| | | public class OrderLogisticsServiceImpl extends ServiceImpl<OrderLogisticsMapper, OrderLogistics> implements IOrderLogisticsService { |
| | | |
| | | @Resource |
| | | private OrderLogisticsMapper orderLogisticsMapper; |
| | | |
| | | @Autowired |
| | | private IDriverService driverService; |
| | | |
| | | @Autowired |
| | | private GDFalconUtil gdFalconUtil; |
| | | |
| | | @Autowired |
| | | private GDMapGeocodingUtil gdMapGeocodingUtil; |
| | | |
| | | @Resource |
| | | private RegionMapper regionMapper; |
| | | |
| | | @Autowired |
| | | private ChinaMobileUtil chinaMobileUtil; |
| | | |
| | | @Autowired |
| | | private PushUtil pushUtil; |
| | | |
| | | @Autowired |
| | | private ISystemNoticeService systemNoticeService; |
| | | |
| | | @Autowired |
| | | private IOrderLogisticsSpreadService orderLogisticsSpreadService; |
| | | |
| | | @Autowired |
| | | private RedisUtil redisUtil; |
| | | |
| | | @Autowired |
| | | private ICompanyService companyService; |
| | | |
| | | @Autowired |
| | | private IIncomeService incomeService; |
| | | |
| | | @Autowired |
| | | private ALiSendSms aLiSendSms; |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取司机抢单界面详情 |
| | | * @param orderId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public Map<String, Object> queryPushOrder(Integer orderId) throws Exception { |
| | | return orderLogisticsMapper.queryPushOrder(orderId); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 司机抢单操作 |
| | | * @param orderId |
| | | * @param uid |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public synchronized ResultUtil grabOrder(Integer orderId, Integer uid) throws Exception { |
| | | OrderLogistics orderLogistics = this.selectById(orderId); |
| | | if(orderLogistics.getState() == 10){ |
| | | return ResultUtil.error("订单已取消"); |
| | | } |
| | | if(orderLogistics.getState() != 1){ |
| | | return ResultUtil.error("手速有点慢哦,订单已被抢啦!"); |
| | | } |
| | | Driver driver = driverService.selectById(uid); |
| | | orderLogistics.setDriverId(uid); |
| | | orderLogistics.setCarId(driver.getCarId()); |
| | | orderLogistics.setCompanyId(driver.getFranchiseeId() != null && driver.getFranchiseeId() != 0 ? driver.getFranchiseeId() : ( |
| | | driver.getCompanyId() != null && driver.getCompanyId() != 0 ? driver.getCompanyId() : 1)); |
| | | orderLogistics.setState(2); |
| | | orderLogistics.setSnatchOrderTime(new Date()); |
| | | |
| | | //调用高德创建轨迹 |
| | | String s = gdFalconUtil.selectTerminal(driver.getPhone()); |
| | | String track = gdFalconUtil.createTrack(s); |
| | | orderLogistics.setTrackId(track); |
| | | |
| | | //调用移动的小号接口 |
| | | Map<String, String> geocode = gdMapGeocodingUtil.geocode(orderLogistics.getStartLon().toString(), orderLogistics.getStartLat().toString()); |
| | | Region region = regionMapper.query(geocode.get("districtCode")); |
| | | // Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderLogistics.getRecipientPhone(), driver.getPhone(), Integer.valueOf(region.getCitycode().substring(1))); |
| | | // if(String.valueOf(map.get("code")).equals("200")){ |
| | | // orderLogistics.setTelX(map.get("telX")); |
| | | // orderLogistics.setBindId(map.get("bindId")); |
| | | // } |
| | | |
| | | this.updateById(orderLogistics); |
| | | |
| | | //添加已收入明细 |
| | | Company company = companyService.selectById(driver.getCompanyId()); |
| | | Double speMoney = orderLogistics.getType() == 4 ? company.getSameLogisticsMoney() : company.getCrossLogisticsMoney(); |
| | | BigDecimal d = null;//企业收入 |
| | | BigDecimal c = null;//司机收入 |
| | | if(company.getIsSpeFixedOrProportional() == 2){//固定 |
| | | d = new BigDecimal(speMoney); |
| | | c = new BigDecimal(orderLogistics.getOrderMoney()).subtract(d);//只有出行金额参与抽成,其余归属司机 |
| | | } |
| | | if(company.getIsSpeFixedOrProportional() == 1){//比例 |
| | | Double price = orderLogistics.getTravelMoney(); |
| | | d = new BigDecimal(price).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_EVEN); |
| | | c = new BigDecimal(orderLogistics.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN); |
| | | } |
| | | incomeService.saveData(1, orderLogistics.getCompanyId(), 2, orderLogistics.getId(), orderLogistics.getType(), d.doubleValue()); |
| | | incomeService.saveData(2, orderLogistics.getDriverId(), 2, orderLogistics.getId(), orderLogistics.getType(), c.doubleValue()); |
| | | driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | driverService.updateById(driver); |
| | | |
| | | |
| | | |
| | | //推送相关代码------------------start---------------- |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | pushUtil.pushOrderState(1, orderLogistics.getUserId(), orderLogistics.getId(), orderLogistics.getType(), orderLogistics.getState()); |
| | | pushUtil.pushOrderState(2, orderLogistics.getDriverId(), orderLogistics.getId(), orderLogistics.getType(), orderLogistics.getState()); |
| | | } |
| | | }).start(); |
| | | |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | pushUtil.pushDriverPosition(orderId, orderLogistics.getType()); |
| | | } |
| | | }).start(); |
| | | |
| | | systemNoticeService.addSystemNotice(2, "您已成功抢得小件物流订单,请及时联系客户!", orderLogistics.getDriverId()); |
| | | systemNoticeService.addSystemNotice(1, "您的订单已指派给" + driver.getName().substring(0, 1) + "师傅,请保持电话畅通!", orderLogistics.getUserId()); |
| | | |
| | | return ResultUtil.success(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取订单详情页(服务中的页面) |
| | | * @param orderId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public Map<String, Object> queryOrderInfo(Integer orderId) throws Exception { |
| | | return orderLogisticsMapper.queryOrderInfo(orderId); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 走订单流程 |
| | | * @param orderId |
| | | * @param state |
| | | * @param lon |
| | | * @param lat |
| | | * @param address |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public ResultUtil process(Integer orderId, Integer state, Double lon, Double lat, String address) throws Exception { |
| | | OrderLogistics orderLogistics = this.selectById(orderId); |
| | | switch (state){ |
| | | case 3://出发前往预约点 |
| | | orderLogistics.setState(3); |
| | | orderLogistics.setSetOutTime(new Date()); |
| | | systemNoticeService.addSystemNotice(1, "司机已出发,请耐心等待", orderLogistics.getUserId()); |
| | | break; |
| | | case 4://到达预约点,等待客户上车 |
| | | orderLogistics.setState(4); |
| | | orderLogistics.setArriveTime(new Date()); |
| | | systemNoticeService.addSystemNotice(1, "司机已到达您设置的预约地点。", orderLogistics.getUserId()); |
| | | break; |
| | | case 5://开始服务 |
| | | orderLogistics.setBoardingLon(lon); |
| | | orderLogistics.setBoardingLat(lat); |
| | | orderLogistics.setBoardingAddress(address); |
| | | orderLogistics.setBoardingTime(new Date()); |
| | | orderLogistics.setState(5); |
| | | orderLogistics.setStartServiceTime(new Date()); |
| | | |
| | | pushUtil.pushDriverPosition(orderLogistics.getId(), orderLogistics.getType());//主动推送司机定位 |
| | | break; |
| | | case 6://结束服务(专车可以返回继续服务)不修改状态 |
| | | orderLogistics.setGetoffLon(lon); |
| | | orderLogistics.setGetoffLat(lat); |
| | | orderLogistics.setGetoffAddress(address); |
| | | orderLogistics.setGetoffTime(new Date()); |
| | | orderLogistics.setEndServiceTime(new Date()); |
| | | orderLogistics.setState(6); |
| | | break; |
| | | } |
| | | this.updateById(orderLogistics); |
| | | |
| | | // TODO: 2020/6/5 推送状态 |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | pushUtil.pushOrderState(1, orderLogistics.getUserId(), orderLogistics.getId(), orderLogistics.getType(), orderLogistics.getState()); |
| | | pushUtil.pushOrderState(2, orderLogistics.getDriverId(), orderLogistics.getId(), orderLogistics.getType(), orderLogistics.getState()); |
| | | } |
| | | }).start(); |
| | | return ResultUtil.success(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 验证取件码(小件物流) |
| | | * @param orderId |
| | | * @param pickUpCode |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public ResultUtil fillInPickUpCode(Integer orderId, String pickUpCode) throws Exception { |
| | | OrderLogistics orderLogistics = this.selectById(orderId); |
| | | if(!orderLogistics.getPickUpCode().equals(pickUpCode)){ |
| | | return ResultUtil.error("验证失败"); |
| | | } |
| | | orderLogistics.setState(9); |
| | | this.updateById(orderLogistics); |
| | | return ResultUtil.success(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 司机设置补差价金额 |
| | | * @param orderId |
| | | * @param difference |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public ResultUtil makeUpTheDifference(Integer orderId, Double difference) throws Exception { |
| | | OrderLogisticsSpread query = orderLogisticsSpreadService.query(orderId); |
| | | OrderLogistics orderLogistics = this.selectById(orderId); |
| | | if(orderLogistics.getState() != 4 && orderLogistics.getState() != 8){ |
| | | return ResultUtil.error("不允许设置差价"); |
| | | } |
| | | if(query != null){ |
| | | query.setPrice(difference); |
| | | orderLogisticsSpreadService.updateById(query); |
| | | return ResultUtil.success(); |
| | | } |
| | | OrderLogisticsSpread orderLogisticsSpread = new OrderLogisticsSpread(); |
| | | orderLogisticsSpread.setOrderLogisticsId(orderId); |
| | | orderLogisticsSpread.setPrice(difference); |
| | | orderLogisticsSpreadService.insert(orderLogisticsSpread); |
| | | orderLogistics.setState(8); |
| | | this.updateById(orderLogistics); |
| | | |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | pushUtil.pushPayDifference(1, orderLogistics.getUserId(), orderId, orderLogistics.getType(), difference); |
| | | } |
| | | }).start(); |
| | | return ResultUtil.success(); |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> queryOrderList(Integer driverId) throws Exception { |
| | | return orderLogisticsMapper.queryOrderList(driverId); |
| | | } |
| | | |
| | | /** |
| | | * 获取我的订单列表 |
| | | * @param state 1=全部,2=待支付,3=已取消 |
| | | * @param uid |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public List<Map<String, Object>> queryMyAllOrder(Integer state, Integer uid) throws Exception { |
| | | return orderLogisticsMapper.queryMyAllOrder(state, uid); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 抢单操作(车载端) |
| | | * @param orderId |
| | | * @param uid |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public synchronized ResultUtil grabOrder_(Integer orderId, Integer uid) throws Exception { |
| | | OrderLogistics orderLogistics = this.selectById(orderId); |
| | | if(orderLogistics.getState() == 10){ |
| | | return ResultUtil.error("订单已取消"); |
| | | } |
| | | if(orderLogistics.getState() != 1){ |
| | | return ResultUtil.error("手速有点慢哦,订单已被抢啦!"); |
| | | } |
| | | Driver driver = driverService.selectById(uid); |
| | | orderLogistics.setDriverId(uid); |
| | | orderLogistics.setCarId(driver.getCarId()); |
| | | orderLogistics.setCompanyId(driver.getFranchiseeId() != null && driver.getFranchiseeId() != 0 ? driver.getFranchiseeId() : ( |
| | | driver.getCompanyId() != null && driver.getCompanyId() != 0 ? driver.getCompanyId() : 1)); |
| | | orderLogistics.setState(2); |
| | | Date date = new Date(); |
| | | orderLogistics.setSnatchOrderTime(date); |
| | | orderLogistics.setSetOutTime(date); |
| | | orderLogistics.setArriveTime(date); |
| | | orderLogistics.setStartServiceTime(date); |
| | | orderLogistics.setBoardingTime(date); |
| | | |
| | | String value = redisUtil.getValue("DRIVER" + uid); |
| | | if(ToolUtil.isNotEmpty(value)){ |
| | | String[] split = value.split(","); |
| | | Map<String, String> geocode1 = gdMapGeocodingUtil.geocode(split[0], split[1]); |
| | | orderLogistics.setBoardingAddress(geocode1.get("address")); |
| | | orderLogistics.setBoardingLon(Double.valueOf(split[0])); |
| | | orderLogistics.setBoardingLat(Double.valueOf(split[1])); |
| | | } |
| | | |
| | | //调用高德创建轨迹 |
| | | String s = gdFalconUtil.selectTerminal(driver.getPhone()); |
| | | String track = gdFalconUtil.createTrack(s); |
| | | orderLogistics.setTrackId(track); |
| | | |
| | | //调用移动的小号接口 TODO 车载端使用真实号码 |
| | | // Map<String, String> geocode = gdMapGeocodingUtil.geocode(orderTaxi.getStartLon().toString(), orderTaxi.getStartLat().toString()); |
| | | // Region region = regionMapper.query(geocode.get("districtCode")); |
| | | // Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderTaxi.getPassengersPhone(), driver.getPhone(), Integer.valueOf(region.getCitycode().substring(1))); |
| | | //// if(String.valueOf(map.get("code")).equals("200")){ |
| | | //// orderTaxi.setTelX(map.get("telX")); |
| | | //// orderTaxi.setBindId(map.get("bindId")); |
| | | //// } |
| | | |
| | | this.updateById(orderLogistics); |
| | | |
| | | //推送相关代码------------------start---------------- |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | pushUtil.pushOrderState(1, orderLogistics.getUserId(), orderLogistics.getId(), orderLogistics.getType(), orderLogistics.getState()); |
| | | pushUtil.pushOrderState(2, orderLogistics.getDriverId(), orderLogistics.getId(), orderLogistics.getType(), orderLogistics.getState()); |
| | | } |
| | | }).start(); |
| | | |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | pushUtil.pushDriverPosition(orderId, orderLogistics.getType()); |
| | | } |
| | | }).start(); |
| | | |
| | | systemNoticeService.addSystemNotice(2, "您已成功抢得出租车订单,请及时联系客户!", orderLogistics.getDriverId()); |
| | | systemNoticeService.addSystemNotice(1, "您的订单已指派给" + driver.getName().substring(0, 1) + "师傅,请保持电话畅通!", orderLogistics.getUserId()); |
| | | |
| | | return ResultUtil.success(); |
| | | } |
| | | |
| | | @Override |
| | | public List<OrderLogistics> query(Integer driverId, Integer... state) throws Exception { |
| | | return orderLogisticsMapper.query(Arrays.asList(state), driverId); |
| | | } |
| | | |
| | | @Override |
| | | public void sendVerificationCode(Integer orderId) throws Exception { |
| | | OrderLogistics orderLogistics = this.selectById(orderId); |
| | | String random = ""; |
| | | for(int i = 0; i < 6; i++){ |
| | | random += Double.valueOf(Math.random() * 10).intValue(); |
| | | } |
| | | orderLogistics.setPickUpCode(random); |
| | | this.updateById(orderLogistics); |
| | | //发送短信 |
| | | // HuaWeiSMSUtil.sendSms("[\"" + random + "\"]", orderLogistics.getRecipientPhone(), "8822072510762", "3f8a36fe5265433783655dcb6fb51465"); |
| | | aLiSendSms.sendSms(orderLogistics.getRecipientPhone(), "SMS_147415322", "{\"code\":\"" + random + "\"}"); |
| | | } |
| | | |
| | | @Override |
| | | public List<OrderLogistics> queryMaturity() throws Exception { |
| | | return orderLogisticsMapper.queryMaturity(); |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.smallLogistics.server.impl; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import com.stylefeng.guns.modular.smallLogistics.dao.OrderLogisticsSpreadMapper; |
| | | import com.stylefeng.guns.modular.smallLogistics.model.OrderLogisticsSpread; |
| | | import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsSpreadService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.Map; |
| | | |
| | | |
| | | @Service |
| | | public class OrderLogisticsSpreadService extends ServiceImpl<OrderLogisticsSpreadMapper, OrderLogisticsSpread> implements IOrderLogisticsSpreadService { |
| | | |
| | | @Resource |
| | | private OrderLogisticsSpreadMapper orderLogisticsSpreadMapper; |
| | | |
| | | |
| | | /** |
| | | * 获取差价信息 |
| | | * @param orderLogisticsId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public OrderLogisticsSpread query(Integer orderLogisticsId) throws Exception { |
| | | return this.selectOne(new EntityWrapper<OrderLogisticsSpread>().eq("orderLogisticsId", orderLogisticsId)); |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.specialTrain.dao; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | public interface OrderPrivateCarMapper extends BaseMapper<OrderPrivateCar> { |
| | | |
| | | |
| | | /** |
| | | * 获取司机端首页订单列表 |
| | | * @param state 1=服务中,2=待服务(30分钟定义预约) |
| | | * @param driverId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<Map<String, Object>> queryOrderList(@Param("state") Integer state, @Param("driverId") Integer driverId); |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取司机端我的订单列表 |
| | | * @param state 1=全部,2=待支付,3=已取消 |
| | | * @param driverId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<Map<String, Object>> queryMyAllOrder(@Param("state") Integer state, @Param("driverId") Integer driverId); |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取司机端抢单页的订单信息 |
| | | * @param orderId |
| | | * @return |
| | | */ |
| | | Map<String, Object> queryPushOrder(@Param("orderId") Integer orderId); |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取订单详情页(服务中的页面) |
| | | * @param orderId |
| | | * @return |
| | | */ |
| | | Map<String, Object> queryOrderInfo(@Param("orderId") Integer orderId); |
| | | |
| | | |
| | | /** |
| | | * 根据状态数据订单数据 |
| | | * @param uid |
| | | * @param orderType |
| | | * @param state |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<OrderPrivateCar> queryByState(@Param("uid") Integer uid, @Param("orderType") Integer orderType, |
| | | @Param("type") Integer type, @Param("state") Integer...state) throws Exception; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取订单数据 |
| | | * @param state |
| | | * @param driverId |
| | | * @return |
| | | */ |
| | | List<OrderPrivateCar> query(@Param("state") List<Integer> state, @Param("driverId") Integer driverId); |
| | | |
| | | |
| | | /** |
| | | * 获取所有快到期的预约单(出行时间在30分钟内) |
| | | * @return |
| | | */ |
| | | List<OrderPrivateCar> queryMaturity(); |
| | | } |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.stylefeng.guns.modular.specialTrain.dao.OrderPrivateCarMapper"> |
| | | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar"> |
| | | <id column="id" property="id"/> |
| | | <result column="type" property="type"/> |
| | | <result column="crossCityOrderId" property="crossCityOrderId"/> |
| | | <result column="place" property="place"/> |
| | | <result column="userId" property="userId"/> |
| | | <result column="serverCarModelId" property="serverCarModelId"/> |
| | | <result column="driverId" property="driverId"/> |
| | | <result column="carId" property="carId"/> |
| | | <result column="orderNum" property="orderNum"/> |
| | | <result column="placementLon" property="placementLon"/> |
| | | <result column="placementLat" property="placementLat"/> |
| | | <result column="placementAddress" property="placementAddress"/> |
| | | <result column="startLon" property="startLon"/> |
| | | <result column="startLat" property="startLat"/> |
| | | <result column="startAddress" property="startAddress"/> |
| | | <result column="endLon" property="endLon"/> |
| | | <result column="endLat" property="endLat"/> |
| | | <result column="endAddress" property="endAddress"/> |
| | | <result column="boardingLon" property="boardingLon"/> |
| | | <result column="boardingLat" property="boardingLat"/> |
| | | <result column="boardingAddress" property="boardingAddress"/> |
| | | <result column="boardingTime" property="boardingTime"/> |
| | | <result column="getoffLon" property="getoffLon"/> |
| | | <result column="getoffLat" property="getoffLat"/> |
| | | <result column="getoffAddress" property="getoffAddress"/> |
| | | <result column="getoffTime" property="getoffTime"/> |
| | | <result column="mileage" property="mileage"/> |
| | | <result column="payManner" property="payManner"/> |
| | | <result column="payType" property="payType"/> |
| | | <result column="orderMoney" property="orderMoney"/> |
| | | <result column="startMileage" property="startMileage"/> |
| | | <result column="startMoney" property="startMoney"/> |
| | | <result column="mileageKilometers" property="mileageKilometers"/> |
| | | <result column="mileageMoney" property="mileageMoney"/> |
| | | <result column="duration" property="duration"/> |
| | | <result column="durationMoney" property="durationMoney"/> |
| | | <result column="wait" property="wait"/> |
| | | <result column="waitMoney" property="waitMoney"/> |
| | | <result column="longDistance" property="longDistance"/> |
| | | <result column="longDistanceMoney" property="longDistanceMoney"/> |
| | | <result column="parkMoney" property="parkMoney"/> |
| | | <result column="roadTollMoney" property="roadTollMoney"/> |
| | | <result column="redPacketMoney" property="redPacketMoney"/> |
| | | <result column="couponMoney" property="couponMoney"/> |
| | | <result column="redPacketId" property="redPacketId"/> |
| | | <result column="couponId" property="couponId"/> |
| | | <result column="discount" property="discount"/> |
| | | <result column="discountMoney" property="discountMoney"/> |
| | | <result column="activityId" property="activityId"/> |
| | | <result column="companyId" property="companyId"/> |
| | | <result column="payMoney" property="payMoney"/> |
| | | <result column="substitute" property="substitute"/> |
| | | <result column="passengers" property="passengers"/> |
| | | <result column="passengersPhone" property="passengersPhone"/> |
| | | <result column="state" property="state"/> |
| | | <result column="insertTime" property="insertTime"/> |
| | | <result column="travelTime" property="travelTime"/> |
| | | <result column="snatchOrderTime" property="snatchOrderTime"/> |
| | | <result column="setOutTime" property="setOutTime"/> |
| | | <result column="arriveTime" property="arriveTime"/> |
| | | <result column="startServiceTime" property="startServiceTime"/> |
| | | <result column="endServiceTime" property="endServiceTime"/> |
| | | <result column="orderType" property="orderType"/> |
| | | <result column="orderSource" property="orderSource"/> |
| | | <result column="invoiceId" property="invoiceId"/> |
| | | <result column="isReassign" property="isReassign"/> |
| | | <result column="reassignNotice" property="reassignNotice"/> |
| | | <result column="trackId" property="trackId"/> |
| | | <result column="isDelete" property="isDelete"/> |
| | | <result column="oldState" property="oldState"/> |
| | | <result column="telX" property="telX"/> |
| | | <result column="bindId" property="bindId"/> |
| | | </resultMap> |
| | | |
| | | |
| | | |
| | | <select id="queryOrderList" resultType="map"> |
| | | <if test="state == 1"> |
| | | select |
| | | id as id, |
| | | (1) as type, |
| | | ('专车订单') as `name`, |
| | | DATE_FORMAT(travelTime, '%Y-%m-%d %H:%i:%s') as time, |
| | | startAddress as startAddress, |
| | | endAddress as endAddress, |
| | | state as state, |
| | | orderType as reservation, |
| | | driverId as driverId |
| | | from t_order_private_car where 1 = 1 |
| | | <if test="null != driverId"> |
| | | and driverId = #{driverId} |
| | | </if> |
| | | and state = 2 and (UNIX_TIMESTAMP(travelTime) - UNIX_TIMESTAMP(now())) < 1800 |
| | | |
| | | UNION ALL |
| | | |
| | | select |
| | | id as id, |
| | | (1) as type, |
| | | ('专车订单') as `name`, |
| | | DATE_FORMAT(travelTime, '%Y-%m-%d %H:%i:%s') as time, |
| | | startAddress as startAddress, |
| | | endAddress as endAddress, |
| | | state as state, |
| | | orderType as reservation, |
| | | driverId as driverId |
| | | from t_order_private_car where 1 = 1 |
| | | <if test="null != driverId"> |
| | | and driverId = #{driverId} |
| | | </if> |
| | | and state in (3, 4, 5, 6, 11) |
| | | </if> |
| | | <if test="state == 2"> |
| | | select |
| | | id as id, |
| | | (1) as type, |
| | | ('专车订单') as `name`, |
| | | DATE_FORMAT(travelTime, '%Y-%m-%d %H:%i:%s') as time, |
| | | startAddress as startAddress, |
| | | endAddress as endAddress, |
| | | state as state, |
| | | orderType as reservation, |
| | | driverId as driverId |
| | | from t_order_private_car where 1 = 1 |
| | | <if test="null != driverId"> |
| | | and driverId = #{driverId} |
| | | </if> |
| | | and state = 2 and (UNIX_TIMESTAMP(travelTime) - UNIX_TIMESTAMP(now())) >= 1800 |
| | | </if> |
| | | </select> |
| | | |
| | | |
| | | |
| | | |
| | | <select id="queryMyAllOrder" resultType="map"> |
| | | select |
| | | id as id, |
| | | (1) as type, |
| | | ('专车订单') as `name`, |
| | | DATE_FORMAT(travelTime, '%Y-%m-%d %H:%i:%s') as time, |
| | | startAddress as startAddress, |
| | | endAddress as endAddress, |
| | | state as state, |
| | | orderType as reservation, |
| | | orderMoney as orderMoney, |
| | | payManner as payManner, |
| | | UNIX_TIMESTAMP(travelTime) as travelTime, |
| | | remark as remark |
| | | from t_order_private_car where driverId = #{driverId} |
| | | <if test="state == 1"> |
| | | and state != 1 |
| | | </if> |
| | | <if test="state == 2"> |
| | | and state = 7 |
| | | </if> |
| | | <if test="state == 3"> |
| | | and state = 10 |
| | | </if> |
| | | <if test="state == 4"> |
| | | and state in (6, 7, 8, 9) |
| | | </if> |
| | | order by insertTime desc |
| | | </select> |
| | | |
| | | |
| | | |
| | | <select id="queryPushOrder" resultType="map"> |
| | | select |
| | | id as orderId, |
| | | state as orderState, |
| | | ('专车订单') as orderName, |
| | | DATE_FORMAT(travelTime, '%m月%d日 %H:%i') as travelTime, |
| | | startAddress as startAddress, |
| | | endAddress as endAddress, |
| | | startLon as startLon, |
| | | startLat as startLat, |
| | | endLon as endLon, |
| | | endLat as endLat, |
| | | isReassign as isReassign, |
| | | orderType as reservation, |
| | | orderSource as orderSource, |
| | | orderType as orderType, |
| | | isReassign as isReassign, |
| | | companyId as companyId |
| | | from t_order_private_car where id = #{orderId} |
| | | </select> |
| | | |
| | | |
| | | |
| | | <select id="queryOrderInfo" resultType="map"> |
| | | select |
| | | a.id as orderId, |
| | | a.userId as userId, |
| | | a.driverId as driverId, |
| | | a.state as orderState, |
| | | DATE_FORMAT(a.travelTime, '%m月%d日 %H:%i') as travelTime_, |
| | | DATE_FORMAT(a.travelTime, '%Y-%m-%d %H:%i:%s') as travelTime, |
| | | DATE_FORMAT(a.arriveTime, '%Y-%m-%d %H:%i:%s') as arriveTime, |
| | | a.startAddress as startAddress, |
| | | a.endAddress as endAddress, |
| | | a.startLon as startLon, |
| | | a.startLat as startLat, |
| | | a.endLon as endLon, |
| | | a.endLat as endLat, |
| | | a.orderMoney as orderMoney, |
| | | a.payManner as payManner, |
| | | a.trackId as trackId, |
| | | b.nickName as nickName, |
| | | a.passengersPhone as phone, |
| | | a.orderType as reservation, |
| | | a.telX as telX, |
| | | a.bindId as bindId, |
| | | ( |
| | | (select count(id) from t_order_private_car where userId = b.id and state in (8, 9)) + |
| | | (select count(id) from t_order_taxi where userId = b.id and state in (8, 9)) + |
| | | (select count(id) from t_order_cross_city where userId = b.id and state in (8, 9)) |
| | | ) as historyNum, |
| | | (select phone from t_phone where companyId = a.companyId and `type` = 1) as emergencyCall, |
| | | c.reason as cancelReason, |
| | | c.remark as cancelRemark, |
| | | c.money as cancelPayMoney, |
| | | if(c.userType = 1, '用户取消', '平台取消') as cancelUser, |
| | | (select isSpecialCar from t_sys_reformist where companyId = a.companyId) as reassign |
| | | from t_order_private_car a |
| | | left join t_user b on (a.userId = b.id) |
| | | left join t_order_cancel c on (a.id = c.orderId and c.orderType = 1 and c.state = 2) |
| | | where a.id = #{orderId} |
| | | </select> |
| | | |
| | | |
| | | |
| | | <select id="queryByState" resultType="OrderPrivateCar"> |
| | | select |
| | | id as id, |
| | | `type` as `type`, |
| | | userId as userId, |
| | | serverCarModelId as serverCarModelId, |
| | | driverId as driverId, |
| | | carId as carId, |
| | | orderNum as orderNum, |
| | | placementLon as placementLon, |
| | | placementLat as placementLat, |
| | | placementAddress as placementAddress, |
| | | startLon as startLon, |
| | | startLat as startLat, |
| | | startAddress as startAddress, |
| | | endLon as endLon, |
| | | endLat as endLat, |
| | | endAddress as endAddress, |
| | | boardingLon as boardingLon, |
| | | boardingLat as boardingLat, |
| | | boardingAddress as boardingAddress, |
| | | boardingTime as boardingTime, |
| | | getoffLon as getoffLon, |
| | | getoffLat as getoffLat, |
| | | getoffAddress as getoffAddress, |
| | | getoffTime as getoffTime, |
| | | mileage as mileage, |
| | | payManner as payManner, |
| | | payType as payType, |
| | | orderMoney as orderMoney, |
| | | startMileage as startMileage, |
| | | startMoney as startMoney, |
| | | mileageKilometers as mileageKilometers, |
| | | mileageMoney as mileageMoney, |
| | | duration as duration, |
| | | durationMoney as durationMoney, |
| | | wait as wait, |
| | | waitMoney as waitMoney, |
| | | longDistance as longDistance, |
| | | longDistanceMoney as longDistanceMoney, |
| | | parkMoney as parkMoney, |
| | | roadTollMoney as roadTollMoney, |
| | | redPacketMoney as redPacketMoney, |
| | | couponMoney as couponMoney, |
| | | redPacketId as redPacketId, |
| | | couponId as couponId, |
| | | discount as discount, |
| | | discountMoney as discountMoney, |
| | | activityId as activityId, |
| | | companyId as companyId, |
| | | payMoney as payMoney, |
| | | substitute as substitute, |
| | | passengers as passengers, |
| | | passengersPhone as passengersPhone, |
| | | state as state, |
| | | insertTime as insertTime, |
| | | travelTime as travelTime, |
| | | snatchOrderTime as snatchOrderTime, |
| | | setOutTime as setOutTime, |
| | | arriveTime as arriveTime, |
| | | startServiceTime as startServiceTime, |
| | | endServiceTime as endServiceTime, |
| | | orderType as orderType, |
| | | orderSource as orderSource, |
| | | invoiceId as invoiceId, |
| | | isReassign as isReassign, |
| | | reassignNotice as reassignNotice, |
| | | trackId as trackId, |
| | | isDelete as isDelete, |
| | | oldState as oldState, |
| | | telX as telX, |
| | | bindId as bindId |
| | | from t_order_private_car where isDelete = 1 and userId = #{uid} |
| | | <if test="null != orderType"> |
| | | and orderType = #{orderType} |
| | | </if> |
| | | <if test="null != state"> |
| | | and state in |
| | | <foreach collection="state" item="item" index="index" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | <if test="null != type"> |
| | | and `type` = #{type} |
| | | </if> |
| | | </select> |
| | | |
| | | |
| | | <select id="query" resultType="OrderPrivateCar"> |
| | | select |
| | | id as id, |
| | | userId as userId, |
| | | driverId as driverId, |
| | | carId as carId, |
| | | orderNum as orderNum, |
| | | placementLon as placementLon, |
| | | placementLat as placementLat, |
| | | placementAddress as placementAddress, |
| | | startLon as startLon, |
| | | startLat as startLat, |
| | | startAddress as startAddress, |
| | | endLon as endLon, |
| | | endLat as endLat, |
| | | endAddress as endAddress, |
| | | boardingLon as boardingLon, |
| | | boardingLat as boardingLat, |
| | | boardingAddress as boardingAddress, |
| | | boardingTime as boardingTime, |
| | | getoffLon as getoffLon, |
| | | getoffLat as getoffLat, |
| | | getoffAddress as getoffAddress, |
| | | getoffTime as getoffTime, |
| | | mileage as mileage, |
| | | payManner as payManner, |
| | | payType as payType, |
| | | orderMoney as orderMoney, |
| | | parkMoney as parkMoney, |
| | | roadTollMoney as roadTollMoney, |
| | | redPacketMoney as redPacketMoney, |
| | | couponMoney as couponMoney, |
| | | redPacketId as redPacketId, |
| | | couponId as couponId, |
| | | discount as discount, |
| | | discountMoney as discountMoney, |
| | | activityId as activityId, |
| | | companyId as companyId, |
| | | payMoney as payMoney, |
| | | substitute as substitute, |
| | | passengers as passengers, |
| | | passengersPhone as passengersPhone, |
| | | state as state, |
| | | insertTime as insertTime, |
| | | travelTime as travelTime, |
| | | snatchOrderTime as snatchOrderTime, |
| | | setOutTime as setOutTime, |
| | | arriveTime as arriveTime, |
| | | startServiceTime as startServiceTime, |
| | | endServiceTime as endServiceTime, |
| | | orderType as orderType, |
| | | orderSource as orderSource, |
| | | invoiceId as invoiceId, |
| | | isReassign as isReassign, |
| | | trackId as trackId, |
| | | orderType as reservation |
| | | from t_order_private_car where 1 = 1 |
| | | <if test="null != state"> |
| | | and state in |
| | | <foreach collection="state" item="item" index="index" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | <if test="null != driverId"> |
| | | and driverId = #{driverId} |
| | | </if> |
| | | </select> |
| | | |
| | | |
| | | |
| | | <select id="queryMaturity" resultType="OrderPrivateCar"> |
| | | select |
| | | id as id, |
| | | `type` as `type`, |
| | | userId as userId, |
| | | serverCarModelId as serverCarModelId, |
| | | driverId as driverId, |
| | | carId as carId, |
| | | orderNum as orderNum, |
| | | placementLon as placementLon, |
| | | placementLat as placementLat, |
| | | placementAddress as placementAddress, |
| | | startLon as startLon, |
| | | startLat as startLat, |
| | | startAddress as startAddress, |
| | | endLon as endLon, |
| | | endLat as endLat, |
| | | endAddress as endAddress, |
| | | boardingLon as boardingLon, |
| | | boardingLat as boardingLat, |
| | | boardingAddress as boardingAddress, |
| | | boardingTime as boardingTime, |
| | | getoffLon as getoffLon, |
| | | getoffLat as getoffLat, |
| | | getoffAddress as getoffAddress, |
| | | getoffTime as getoffTime, |
| | | mileage as mileage, |
| | | payManner as payManner, |
| | | payType as payType, |
| | | orderMoney as orderMoney, |
| | | startMileage as startMileage, |
| | | startMoney as startMoney, |
| | | mileageKilometers as mileageKilometers, |
| | | mileageMoney as mileageMoney, |
| | | duration as duration, |
| | | durationMoney as durationMoney, |
| | | wait as wait, |
| | | waitMoney as waitMoney, |
| | | longDistance as longDistance, |
| | | longDistanceMoney as longDistanceMoney, |
| | | parkMoney as parkMoney, |
| | | roadTollMoney as roadTollMoney, |
| | | redPacketMoney as redPacketMoney, |
| | | couponMoney as couponMoney, |
| | | redPacketId as redPacketId, |
| | | couponId as couponId, |
| | | discount as discount, |
| | | discountMoney as discountMoney, |
| | | activityId as activityId, |
| | | companyId as companyId, |
| | | payMoney as payMoney, |
| | | substitute as substitute, |
| | | passengers as passengers, |
| | | passengersPhone as passengersPhone, |
| | | state as state, |
| | | insertTime as insertTime, |
| | | travelTime as travelTime, |
| | | snatchOrderTime as snatchOrderTime, |
| | | setOutTime as setOutTime, |
| | | arriveTime as arriveTime, |
| | | startServiceTime as startServiceTime, |
| | | endServiceTime as endServiceTime, |
| | | orderType as orderType, |
| | | orderSource as orderSource, |
| | | invoiceId as invoiceId, |
| | | isReassign as isReassign, |
| | | reassignNotice as reassignNotice, |
| | | trackId as trackId, |
| | | isDelete as isDelete, |
| | | oldState as oldState, |
| | | telX as telX, |
| | | bindId as bindId |
| | | from t_order_private_car where orderType = 2 and state = 2 and (UNIX_TIMESTAMP(travelTime) - UNIX_TIMESTAMP(now())) between 1710 and 1800 |
| | | </select> |
| | | |
| | | </mapper> |
New file |
| | |
| | | package com.stylefeng.guns.modular.specialTrain.model; |
| | | |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * 专车车订单 |
| | | */ |
| | | @TableName("t_order_private_car") |
| | | public class OrderPrivateCar { |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | @TableField("id") |
| | | private Integer id; |
| | | /** |
| | | * 订单类型(1=普通订单,2=摆渡订单) |
| | | */ |
| | | @TableField("type") |
| | | private Integer type; |
| | | /** |
| | | * 跨城订单id(摆渡车专用) |
| | | */ |
| | | @TableField("crossCityOrderId") |
| | | private Integer crossCityOrderId; |
| | | /** |
| | | * 摆渡方位(1=跨城起点,2=跨城终点) |
| | | */ |
| | | @TableField("place") |
| | | private Integer place; |
| | | /** |
| | | * 用户id |
| | | */ |
| | | @TableField("userId") |
| | | private Integer userId; |
| | | /** |
| | | * 服务车型id |
| | | */ |
| | | @TableField("serverCarModelId") |
| | | private Integer serverCarModelId; |
| | | /** |
| | | * 司机id |
| | | */ |
| | | @TableField("driverId") |
| | | private Integer driverId; |
| | | /** |
| | | * 车辆id |
| | | */ |
| | | @TableField("carId") |
| | | private Integer carId; |
| | | /** |
| | | * 订单号 |
| | | */ |
| | | @TableField("orderNum") |
| | | private String orderNum; |
| | | /** |
| | | * 下单地点经度 |
| | | */ |
| | | @TableField("placementLon") |
| | | private Double placementLon; |
| | | /** |
| | | * 下单地点纬度 |
| | | */ |
| | | @TableField("placementLat") |
| | | private Double placementLat; |
| | | /** |
| | | * 下单地点 |
| | | */ |
| | | @TableField("placementAddress") |
| | | private String placementAddress; |
| | | /** |
| | | * 起点经度 |
| | | */ |
| | | @TableField("startLon") |
| | | private Double startLon; |
| | | /** |
| | | * 起点纬度 |
| | | */ |
| | | @TableField("startLat") |
| | | private Double startLat; |
| | | /** |
| | | * 起点 |
| | | */ |
| | | @TableField("startAddress") |
| | | private String startAddress; |
| | | /** |
| | | * 目的地经度 |
| | | */ |
| | | @TableField("endLon") |
| | | private Double endLon; |
| | | /** |
| | | * 目的地纬度 |
| | | */ |
| | | @TableField("endLat") |
| | | private Double endLat; |
| | | /** |
| | | * 目的地 |
| | | */ |
| | | @TableField("endAddress") |
| | | private String endAddress; |
| | | /** |
| | | * 上车点经度 |
| | | */ |
| | | @TableField("boardingLon") |
| | | private Double boardingLon; |
| | | /** |
| | | * 上车点纬度 |
| | | */ |
| | | @TableField("boardingLat") |
| | | private Double boardingLat; |
| | | /** |
| | | * 上车地点 |
| | | */ |
| | | @TableField("boardingAddress") |
| | | private String boardingAddress; |
| | | /** |
| | | * 上车时间 |
| | | */ |
| | | @TableField("boardingTime") |
| | | private Date boardingTime; |
| | | /** |
| | | * 下车点经度 |
| | | */ |
| | | @TableField("getoffLon") |
| | | private Double getoffLon; |
| | | /** |
| | | * 下车点纬度 |
| | | */ |
| | | @TableField("getoffLat") |
| | | private Double getoffLat; |
| | | /** |
| | | * 下车点 |
| | | */ |
| | | @TableField("getoffAddress") |
| | | private String getoffAddress; |
| | | /** |
| | | * 下车时间 |
| | | */ |
| | | @TableField("getoffTime") |
| | | private Date getoffTime; |
| | | /** |
| | | * 行驶里程数(米) |
| | | */ |
| | | @TableField("mileage") |
| | | private Double mileage; |
| | | /** |
| | | * 支付方式(1=OK平台支付,2=其他方式支付) |
| | | */ |
| | | @TableField("payManner") |
| | | private Integer payManner; |
| | | /** |
| | | * 支付方式(1=微信,2=支付宝,3=余额) |
| | | */ |
| | | @TableField("payType") |
| | | private Integer payType; |
| | | /** |
| | | * 订单金额 |
| | | */ |
| | | @TableField("orderMoney") |
| | | private Double orderMoney; |
| | | /** |
| | | * 起步里程 |
| | | */ |
| | | @TableField("startMileage") |
| | | private Double startMileage; |
| | | /** |
| | | * 起步价 |
| | | */ |
| | | @TableField("startMoney") |
| | | private Double startMoney; |
| | | /** |
| | | * 里程公里 |
| | | */ |
| | | @TableField("mileageKilometers") |
| | | private Double mileageKilometers; |
| | | /** |
| | | * 里程费 |
| | | */ |
| | | @TableField("mileageMoney") |
| | | private Double mileageMoney; |
| | | /** |
| | | * 时长分钟 |
| | | */ |
| | | @TableField("duration") |
| | | private Double duration; |
| | | /** |
| | | * 时长费 |
| | | */ |
| | | @TableField("durationMoney") |
| | | private Double durationMoney; |
| | | /** |
| | | * 等待分钟 |
| | | */ |
| | | @TableField("wait") |
| | | private Double wait; |
| | | /** |
| | | * 等待费 |
| | | */ |
| | | @TableField("waitMoney") |
| | | private Double waitMoney; |
| | | /** |
| | | * 远途公里 |
| | | */ |
| | | @TableField("longDistance") |
| | | private Double longDistance; |
| | | /** |
| | | * 远途费 |
| | | */ |
| | | @TableField("longDistanceMoney") |
| | | private Double longDistanceMoney; |
| | | /** |
| | | * 停车费 |
| | | */ |
| | | @TableField("parkMoney") |
| | | private Double parkMoney; |
| | | /** |
| | | * 过路费 |
| | | */ |
| | | @TableField("roadTollMoney") |
| | | private Double roadTollMoney; |
| | | /** |
| | | * 红包抵扣金额 |
| | | */ |
| | | @TableField("redPacketMoney") |
| | | private Double redPacketMoney; |
| | | /** |
| | | * 优惠券抵扣金额 |
| | | */ |
| | | @TableField("couponMoney") |
| | | private Double couponMoney; |
| | | /** |
| | | * 红包id |
| | | */ |
| | | @TableField("redPacketId") |
| | | private Integer redPacketId; |
| | | /** |
| | | * 优惠券id |
| | | */ |
| | | @TableField("couponId") |
| | | private Integer couponId; |
| | | /** |
| | | * 折扣 |
| | | */ |
| | | @TableField("discount") |
| | | private Double discount; |
| | | /** |
| | | * 折扣优惠金额 |
| | | */ |
| | | @TableField("discountMoney") |
| | | private Double discountMoney; |
| | | /** |
| | | * 折扣活动id |
| | | */ |
| | | @TableField("activityId") |
| | | private Integer activityId; |
| | | /** |
| | | * 公司id |
| | | */ |
| | | @TableField("companyId") |
| | | private Integer companyId; |
| | | /** |
| | | * 支付金额 |
| | | */ |
| | | @TableField("payMoney") |
| | | private Double payMoney; |
| | | /** |
| | | * 是否是代下单(0:否,1:是) |
| | | */ |
| | | @TableField("substitute") |
| | | private Integer substitute; |
| | | /** |
| | | * 乘车人姓名 |
| | | */ |
| | | @TableField("passengers") |
| | | private String passengers; |
| | | /** |
| | | * 乘车人电话 |
| | | */ |
| | | @TableField("passengersPhone") |
| | | private String passengersPhone; |
| | | /** |
| | | * 订单状态(1=待接单,2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,8=待评价,9=已完成,10=已取消,11=改派中,12=取消待支付) |
| | | */ |
| | | @TableField("state") |
| | | private Integer state; |
| | | /** |
| | | * 下单时间 |
| | | */ |
| | | @TableField("insertTime") |
| | | private Date insertTime; |
| | | /** |
| | | * 出行时间 |
| | | */ |
| | | @TableField("travelTime") |
| | | private Date travelTime; |
| | | /** |
| | | * 抢单时间 |
| | | */ |
| | | @TableField("snatchOrderTime") |
| | | private Date snatchOrderTime; |
| | | /** |
| | | * 司机点出发时间 |
| | | */ |
| | | @TableField("setOutTime") |
| | | private Date setOutTime; |
| | | /** |
| | | * 司机到达预约地点时间 |
| | | */ |
| | | @TableField("arriveTime") |
| | | private Date arriveTime; |
| | | /** |
| | | * 开始服务时间 |
| | | */ |
| | | @TableField("startServiceTime") |
| | | private Date startServiceTime; |
| | | /** |
| | | * 结束服务时间 |
| | | */ |
| | | @TableField("endServiceTime") |
| | | private Date endServiceTime; |
| | | /** |
| | | * 订单类型(1=普通,2=预约) |
| | | */ |
| | | @TableField("orderType") |
| | | private Integer orderType; |
| | | /** |
| | | * 订单来源(1:APP下单,2:扫码下单,3:小程序下单,4:司机下单,5:调度下单) |
| | | */ |
| | | @TableField("orderSource") |
| | | private Integer orderSource; |
| | | /** |
| | | * 发票id |
| | | */ |
| | | @TableField("invoiceId") |
| | | private Integer invoiceId; |
| | | /** |
| | | * 是否是改派单(1=否,=是) |
| | | * @return |
| | | */ |
| | | @TableField("isReassign") |
| | | private Integer isReassign; |
| | | /** |
| | | * 改派通知标识(0=没有改派,1=改派中,2=已改派)用于通知前端获取新司机数据 |
| | | */ |
| | | @TableField("reassignNotice") |
| | | private Integer reassignNotice; |
| | | /** |
| | | * 高德猎鹰轨迹id |
| | | * @return |
| | | */ |
| | | @TableField("trackId") |
| | | private String trackId; |
| | | /** |
| | | * 是否删除(1=否,2=是) |
| | | */ |
| | | @TableField("isDelete") |
| | | private Integer isDelete; |
| | | /** |
| | | * 该派前的订单状态 |
| | | * @return |
| | | */ |
| | | @TableField("oldState") |
| | | private Integer oldState; |
| | | /** |
| | | * 移动小号 |
| | | * @return |
| | | */ |
| | | @TableField("telX") |
| | | private String telX; |
| | | /** |
| | | * 绑定小号关系id |
| | | * @return |
| | | */ |
| | | @TableField("bindId") |
| | | private String bindId; |
| | | |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(Integer id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public Integer getType() { |
| | | return type; |
| | | } |
| | | |
| | | public void setType(Integer type) { |
| | | this.type = type; |
| | | } |
| | | |
| | | public Integer getCrossCityOrderId() { |
| | | return crossCityOrderId; |
| | | } |
| | | |
| | | public void setCrossCityOrderId(Integer crossCityOrderId) { |
| | | this.crossCityOrderId = crossCityOrderId; |
| | | } |
| | | |
| | | public Integer getPlace() { |
| | | return place; |
| | | } |
| | | |
| | | public void setPlace(Integer place) { |
| | | this.place = place; |
| | | } |
| | | |
| | | public Integer getUserId() { |
| | | return userId; |
| | | } |
| | | |
| | | public void setUserId(Integer userId) { |
| | | this.userId = userId; |
| | | } |
| | | |
| | | public Integer getServerCarModelId() { |
| | | return serverCarModelId; |
| | | } |
| | | |
| | | public void setServerCarModelId(Integer serverCarModelId) { |
| | | this.serverCarModelId = serverCarModelId; |
| | | } |
| | | |
| | | public Integer getDriverId() { |
| | | return driverId; |
| | | } |
| | | |
| | | public void setDriverId(Integer driverId) { |
| | | this.driverId = driverId; |
| | | } |
| | | |
| | | public Integer getCarId() { |
| | | return carId; |
| | | } |
| | | |
| | | public void setCarId(Integer carId) { |
| | | this.carId = carId; |
| | | } |
| | | |
| | | public String getOrderNum() { |
| | | return orderNum; |
| | | } |
| | | |
| | | public void setOrderNum(String orderNum) { |
| | | this.orderNum = orderNum; |
| | | } |
| | | |
| | | public Double getPlacementLon() { |
| | | return placementLon; |
| | | } |
| | | |
| | | public void setPlacementLon(Double placementLon) { |
| | | this.placementLon = placementLon; |
| | | } |
| | | |
| | | public Double getPlacementLat() { |
| | | return placementLat; |
| | | } |
| | | |
| | | public void setPlacementLat(Double placementLat) { |
| | | this.placementLat = placementLat; |
| | | } |
| | | |
| | | public String getPlacementAddress() { |
| | | return placementAddress; |
| | | } |
| | | |
| | | public void setPlacementAddress(String placementAddress) { |
| | | this.placementAddress = placementAddress; |
| | | } |
| | | |
| | | public Double getStartLon() { |
| | | return startLon; |
| | | } |
| | | |
| | | public void setStartLon(Double startLon) { |
| | | this.startLon = startLon; |
| | | } |
| | | |
| | | public Double getStartLat() { |
| | | return startLat; |
| | | } |
| | | |
| | | public void setStartLat(Double startLat) { |
| | | this.startLat = startLat; |
| | | } |
| | | |
| | | public String getStartAddress() { |
| | | return startAddress; |
| | | } |
| | | |
| | | public void setStartAddress(String startAddress) { |
| | | this.startAddress = startAddress; |
| | | } |
| | | |
| | | public Double getEndLon() { |
| | | return endLon; |
| | | } |
| | | |
| | | public void setEndLon(Double endLon) { |
| | | this.endLon = endLon; |
| | | } |
| | | |
| | | public Double getEndLat() { |
| | | return endLat; |
| | | } |
| | | |
| | | public void setEndLat(Double endLat) { |
| | | this.endLat = endLat; |
| | | } |
| | | |
| | | public String getEndAddress() { |
| | | return endAddress; |
| | | } |
| | | |
| | | public void setEndAddress(String endAddress) { |
| | | this.endAddress = endAddress; |
| | | } |
| | | |
| | | public Double getBoardingLon() { |
| | | return boardingLon; |
| | | } |
| | | |
| | | public void setBoardingLon(Double boardingLon) { |
| | | this.boardingLon = boardingLon; |
| | | } |
| | | |
| | | public Double getBoardingLat() { |
| | | return boardingLat; |
| | | } |
| | | |
| | | public void setBoardingLat(Double boardingLat) { |
| | | this.boardingLat = boardingLat; |
| | | } |
| | | |
| | | public String getBoardingAddress() { |
| | | return boardingAddress; |
| | | } |
| | | |
| | | public void setBoardingAddress(String boardingAddress) { |
| | | this.boardingAddress = boardingAddress; |
| | | } |
| | | |
| | | public Date getBoardingTime() { |
| | | return boardingTime; |
| | | } |
| | | |
| | | public void setBoardingTime(Date boardingTime) { |
| | | this.boardingTime = boardingTime; |
| | | } |
| | | |
| | | public Double getGetoffLon() { |
| | | return getoffLon; |
| | | } |
| | | |
| | | public void setGetoffLon(Double getoffLon) { |
| | | this.getoffLon = getoffLon; |
| | | } |
| | | |
| | | public Double getGetoffLat() { |
| | | return getoffLat; |
| | | } |
| | | |
| | | public void setGetoffLat(Double getoffLat) { |
| | | this.getoffLat = getoffLat; |
| | | } |
| | | |
| | | public String getGetoffAddress() { |
| | | return getoffAddress; |
| | | } |
| | | |
| | | public void setGetoffAddress(String getoffAddress) { |
| | | this.getoffAddress = getoffAddress; |
| | | } |
| | | |
| | | public Date getGetoffTime() { |
| | | return getoffTime; |
| | | } |
| | | |
| | | public void setGetoffTime(Date getoffTime) { |
| | | this.getoffTime = getoffTime; |
| | | } |
| | | |
| | | public Double getMileage() { |
| | | return mileage; |
| | | } |
| | | |
| | | public void setMileage(Double mileage) { |
| | | this.mileage = mileage; |
| | | } |
| | | |
| | | public Integer getPayManner() { |
| | | return payManner; |
| | | } |
| | | |
| | | public void setPayManner(Integer payManner) { |
| | | this.payManner = payManner; |
| | | } |
| | | |
| | | public Integer getPayType() { |
| | | return payType; |
| | | } |
| | | |
| | | public void setPayType(Integer payType) { |
| | | this.payType = payType; |
| | | } |
| | | |
| | | public Double getOrderMoney() { |
| | | return orderMoney; |
| | | } |
| | | |
| | | public void setOrderMoney(Double orderMoney) { |
| | | this.orderMoney = orderMoney; |
| | | } |
| | | |
| | | public Double getStartMoney() { |
| | | return startMoney; |
| | | } |
| | | |
| | | public void setStartMoney(Double startMoney) { |
| | | this.startMoney = startMoney; |
| | | } |
| | | |
| | | public Double getMileageMoney() { |
| | | return mileageMoney; |
| | | } |
| | | |
| | | public void setMileageMoney(Double mileageMoney) { |
| | | this.mileageMoney = mileageMoney; |
| | | } |
| | | |
| | | public Double getDurationMoney() { |
| | | return durationMoney; |
| | | } |
| | | |
| | | public void setDurationMoney(Double durationMoney) { |
| | | this.durationMoney = durationMoney; |
| | | } |
| | | |
| | | public Double getLongDistanceMoney() { |
| | | return longDistanceMoney; |
| | | } |
| | | |
| | | public void setLongDistanceMoney(Double longDistanceMoney) { |
| | | this.longDistanceMoney = longDistanceMoney; |
| | | } |
| | | |
| | | public Double getParkMoney() { |
| | | return parkMoney; |
| | | } |
| | | |
| | | public void setParkMoney(Double parkMoney) { |
| | | this.parkMoney = parkMoney; |
| | | } |
| | | |
| | | public Double getRoadTollMoney() { |
| | | return roadTollMoney; |
| | | } |
| | | |
| | | public void setRoadTollMoney(Double roadTollMoney) { |
| | | this.roadTollMoney = roadTollMoney; |
| | | } |
| | | |
| | | public Double getRedPacketMoney() { |
| | | return redPacketMoney; |
| | | } |
| | | |
| | | public void setRedPacketMoney(Double redPacketMoney) { |
| | | this.redPacketMoney = redPacketMoney; |
| | | } |
| | | |
| | | public Double getCouponMoney() { |
| | | return couponMoney; |
| | | } |
| | | |
| | | public void setCouponMoney(Double couponMoney) { |
| | | this.couponMoney = couponMoney; |
| | | } |
| | | |
| | | public Integer getRedPacketId() { |
| | | return redPacketId; |
| | | } |
| | | |
| | | public void setRedPacketId(Integer redPacketId) { |
| | | this.redPacketId = redPacketId; |
| | | } |
| | | |
| | | public Integer getCouponId() { |
| | | return couponId; |
| | | } |
| | | |
| | | public void setCouponId(Integer couponId) { |
| | | this.couponId = couponId; |
| | | } |
| | | |
| | | public Double getDiscount() { |
| | | return discount; |
| | | } |
| | | |
| | | public void setDiscount(Double discount) { |
| | | this.discount = discount; |
| | | } |
| | | |
| | | public Double getDiscountMoney() { |
| | | return discountMoney; |
| | | } |
| | | |
| | | public void setDiscountMoney(Double discountMoney) { |
| | | this.discountMoney = discountMoney; |
| | | } |
| | | |
| | | public Integer getActivityId() { |
| | | return activityId; |
| | | } |
| | | |
| | | public void setActivityId(Integer activityId) { |
| | | this.activityId = activityId; |
| | | } |
| | | |
| | | public Integer getCompanyId() { |
| | | return companyId; |
| | | } |
| | | |
| | | public void setCompanyId(Integer companyId) { |
| | | this.companyId = companyId; |
| | | } |
| | | |
| | | public Double getPayMoney() { |
| | | return payMoney; |
| | | } |
| | | |
| | | public void setPayMoney(Double payMoney) { |
| | | this.payMoney = payMoney; |
| | | } |
| | | |
| | | public Integer getSubstitute() { |
| | | return substitute; |
| | | } |
| | | |
| | | public void setSubstitute(Integer substitute) { |
| | | this.substitute = substitute; |
| | | } |
| | | |
| | | public String getPassengers() { |
| | | return passengers; |
| | | } |
| | | |
| | | public void setPassengers(String passengers) { |
| | | this.passengers = passengers; |
| | | } |
| | | |
| | | public String getPassengersPhone() { |
| | | return passengersPhone; |
| | | } |
| | | |
| | | public void setPassengersPhone(String passengersPhone) { |
| | | this.passengersPhone = passengersPhone; |
| | | } |
| | | |
| | | public Integer getState() { |
| | | return state; |
| | | } |
| | | |
| | | public void setState(Integer state) { |
| | | this.state = state; |
| | | } |
| | | |
| | | public Date getInsertTime() { |
| | | return insertTime; |
| | | } |
| | | |
| | | public void setInsertTime(Date insertTime) { |
| | | this.insertTime = insertTime; |
| | | } |
| | | |
| | | public Date getTravelTime() { |
| | | return travelTime; |
| | | } |
| | | |
| | | public void setTravelTime(Date travelTime) { |
| | | this.travelTime = travelTime; |
| | | } |
| | | |
| | | public Date getSnatchOrderTime() { |
| | | return snatchOrderTime; |
| | | } |
| | | |
| | | public void setSnatchOrderTime(Date snatchOrderTime) { |
| | | this.snatchOrderTime = snatchOrderTime; |
| | | } |
| | | |
| | | public Date getSetOutTime() { |
| | | return setOutTime; |
| | | } |
| | | |
| | | public void setSetOutTime(Date setOutTime) { |
| | | this.setOutTime = setOutTime; |
| | | } |
| | | |
| | | public Date getArriveTime() { |
| | | return arriveTime; |
| | | } |
| | | |
| | | public void setArriveTime(Date arriveTime) { |
| | | this.arriveTime = arriveTime; |
| | | } |
| | | |
| | | public Date getStartServiceTime() { |
| | | return startServiceTime; |
| | | } |
| | | |
| | | public void setStartServiceTime(Date startServiceTime) { |
| | | this.startServiceTime = startServiceTime; |
| | | } |
| | | |
| | | public Date getEndServiceTime() { |
| | | return endServiceTime; |
| | | } |
| | | |
| | | public void setEndServiceTime(Date endServiceTime) { |
| | | this.endServiceTime = endServiceTime; |
| | | } |
| | | |
| | | public Integer getOrderType() { |
| | | return orderType; |
| | | } |
| | | |
| | | public void setOrderType(Integer orderType) { |
| | | this.orderType = orderType; |
| | | } |
| | | |
| | | public Integer getOrderSource() { |
| | | return orderSource; |
| | | } |
| | | |
| | | public void setOrderSource(Integer orderSource) { |
| | | this.orderSource = orderSource; |
| | | } |
| | | |
| | | public Integer getInvoiceId() { |
| | | return invoiceId; |
| | | } |
| | | |
| | | public void setInvoiceId(Integer invoiceId) { |
| | | this.invoiceId = invoiceId; |
| | | } |
| | | |
| | | public Integer getIsReassign() { |
| | | return isReassign; |
| | | } |
| | | |
| | | public void setIsReassign(Integer isReassign) { |
| | | this.isReassign = isReassign; |
| | | } |
| | | |
| | | public Integer getReassignNotice() { |
| | | return reassignNotice; |
| | | } |
| | | |
| | | public void setReassignNotice(Integer reassignNotice) { |
| | | this.reassignNotice = reassignNotice; |
| | | } |
| | | |
| | | public String getTrackId() { |
| | | return trackId; |
| | | } |
| | | |
| | | public void setTrackId(String trackId) { |
| | | this.trackId = trackId; |
| | | } |
| | | |
| | | public Integer getIsDelete() { |
| | | return isDelete; |
| | | } |
| | | |
| | | public void setIsDelete(Integer isDelete) { |
| | | this.isDelete = isDelete; |
| | | } |
| | | |
| | | public Integer getOldState() { |
| | | return oldState; |
| | | } |
| | | |
| | | public void setOldState(Integer oldState) { |
| | | this.oldState = oldState; |
| | | } |
| | | |
| | | public String getTelX() { |
| | | return telX; |
| | | } |
| | | |
| | | public void setTelX(String telX) { |
| | | this.telX = telX; |
| | | } |
| | | |
| | | public String getBindId() { |
| | | return bindId; |
| | | } |
| | | |
| | | public void setBindId(String bindId) { |
| | | this.bindId = bindId; |
| | | } |
| | | |
| | | public Double getWaitMoney() { |
| | | return waitMoney; |
| | | } |
| | | |
| | | public void setWaitMoney(Double waitMoney) { |
| | | this.waitMoney = waitMoney; |
| | | } |
| | | |
| | | public Double getMileageKilometers() { |
| | | return mileageKilometers; |
| | | } |
| | | |
| | | public void setMileageKilometers(Double mileageKilometers) { |
| | | this.mileageKilometers = mileageKilometers; |
| | | } |
| | | |
| | | public Double getDuration() { |
| | | return duration; |
| | | } |
| | | |
| | | public void setDuration(Double duration) { |
| | | this.duration = duration; |
| | | } |
| | | |
| | | public Double getWait() { |
| | | return wait; |
| | | } |
| | | |
| | | public void setWait(Double wait) { |
| | | this.wait = wait; |
| | | } |
| | | |
| | | public Double getLongDistance() { |
| | | return longDistance; |
| | | } |
| | | |
| | | public void setLongDistance(Double longDistance) { |
| | | this.longDistance = longDistance; |
| | | } |
| | | |
| | | public Double getStartMileage() { |
| | | return startMileage; |
| | | } |
| | | |
| | | public void setStartMileage(Double startMileage) { |
| | | this.startMileage = startMileage; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "OrderPrivateCar{" + |
| | | "id=" + id + |
| | | ", type=" + type + |
| | | ", crossCityOrderId=" + crossCityOrderId + |
| | | ", place=" + place + |
| | | ", userId=" + userId + |
| | | ", serverCarModelId=" + serverCarModelId + |
| | | ", driverId=" + driverId + |
| | | ", carId=" + carId + |
| | | ", orderNum='" + orderNum + '\'' + |
| | | ", placementLon=" + placementLon + |
| | | ", placementLat=" + placementLat + |
| | | ", placementAddress='" + placementAddress + '\'' + |
| | | ", startLon=" + startLon + |
| | | ", startLat=" + startLat + |
| | | ", startAddress='" + startAddress + '\'' + |
| | | ", endLon=" + endLon + |
| | | ", endLat=" + endLat + |
| | | ", endAddress='" + endAddress + '\'' + |
| | | ", boardingLon=" + boardingLon + |
| | | ", boardingLat=" + boardingLat + |
| | | ", boardingAddress='" + boardingAddress + '\'' + |
| | | ", boardingTime=" + boardingTime + |
| | | ", getoffLon=" + getoffLon + |
| | | ", getoffLat=" + getoffLat + |
| | | ", getoffAddress='" + getoffAddress + '\'' + |
| | | ", getoffTime=" + getoffTime + |
| | | ", mileage=" + mileage + |
| | | ", payManner=" + payManner + |
| | | ", payType=" + payType + |
| | | ", orderMoney=" + orderMoney + |
| | | ", startMileage=" + startMileage + |
| | | ", startMoney=" + startMoney + |
| | | ", mileageKilometers=" + mileageKilometers + |
| | | ", mileageMoney=" + mileageMoney + |
| | | ", duration=" + duration + |
| | | ", durationMoney=" + durationMoney + |
| | | ", wait=" + wait + |
| | | ", waitMoney=" + waitMoney + |
| | | ", longDistance=" + longDistance + |
| | | ", longDistanceMoney=" + longDistanceMoney + |
| | | ", parkMoney=" + parkMoney + |
| | | ", roadTollMoney=" + roadTollMoney + |
| | | ", redPacketMoney=" + redPacketMoney + |
| | | ", couponMoney=" + couponMoney + |
| | | ", redPacketId=" + redPacketId + |
| | | ", couponId=" + couponId + |
| | | ", discount=" + discount + |
| | | ", discountMoney=" + discountMoney + |
| | | ", activityId=" + activityId + |
| | | ", companyId=" + companyId + |
| | | ", payMoney=" + payMoney + |
| | | ", substitute=" + substitute + |
| | | ", passengers='" + passengers + '\'' + |
| | | ", passengersPhone='" + passengersPhone + '\'' + |
| | | ", state=" + state + |
| | | ", insertTime=" + insertTime + |
| | | ", travelTime=" + travelTime + |
| | | ", snatchOrderTime=" + snatchOrderTime + |
| | | ", setOutTime=" + setOutTime + |
| | | ", arriveTime=" + arriveTime + |
| | | ", startServiceTime=" + startServiceTime + |
| | | ", endServiceTime=" + endServiceTime + |
| | | ", orderType=" + orderType + |
| | | ", orderSource=" + orderSource + |
| | | ", invoiceId=" + invoiceId + |
| | | ", isReassign=" + isReassign + |
| | | ", reassignNotice=" + reassignNotice + |
| | | ", trackId='" + trackId + '\'' + |
| | | ", isDelete=" + isDelete + |
| | | ", oldState=" + oldState + |
| | | ", telX='" + telX + '\'' + |
| | | ", bindId='" + bindId + '\'' + |
| | | '}'; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.specialTrain.server; |
| | | |
| | | import com.baomidou.mybatisplus.service.IService; |
| | | import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import com.stylefeng.guns.modular.system.warpper.BaseWarpper; |
| | | import com.stylefeng.guns.modular.taxi.model.OrderTaxi; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | public interface IOrderPrivateCarService extends IService<OrderPrivateCar> { |
| | | |
| | | |
| | | /** |
| | | * 获取司机端首页订单列表 |
| | | * @param state 1=服务中,2=待服务(30分钟定义预约) |
| | | * @param driverId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<Map<String, Object>> queryOrderList(Integer state, Integer driverId) throws Exception; |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取司机端我的订单列表 |
| | | * @param state 1=全部,2=待支付,3=已取消 |
| | | * @param uid |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<Map<String, Object>> queryMyAllOrder(Integer state, Integer uid) throws Exception; |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取司机的抢单页面订单详情 |
| | | * @param orderId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | Map<String, Object> queryPushOrder(Integer orderId) throws Exception; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 抢单操作 |
| | | * @param orderId |
| | | * @param uid |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | ResultUtil grabOrder(Integer orderId, Integer uid) throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 获取订单详情页(服务中的页面) |
| | | * @param orderId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | Map<String, Object> queryOrderInfo(Integer orderId) throws Exception; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 走订单流程操作 |
| | | * @param orderId |
| | | * @param state |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | ResultUtil process(Integer orderId, Integer state, Double lon, Double lat, String address) throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 确认费用操作 |
| | | * @param orderId |
| | | * @param type |
| | | * @param parkingFee |
| | | * @param crossingFee |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | ResultUtil confirmFees(Integer orderId, Integer type, Double parkingFee, Double crossingFee) throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 获取费用明细 |
| | | * @param orderId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | Map<String, Object> queryMoneyInfo(Integer orderId) throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 计算已服务的实时里程 |
| | | * @param orderId |
| | | * @param lon |
| | | * @param lat |
| | | */ |
| | | boolean calculateMileage(Integer orderId, String lon, String lat) throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 获取订单数据 |
| | | * @param state |
| | | * @param driverId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<OrderPrivateCar> query(Integer driverId, Integer...state) throws Exception; |
| | | |
| | | |
| | | /** |
| | | * 获取所有快到期的预约单(出行时间在30分钟内) |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | List<OrderPrivateCar> queryMaturity() throws Exception; |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.specialTrain.server.impl; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import com.stylefeng.guns.modular.specialTrain.dao.OrderPrivateCarMapper; |
| | | import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar; |
| | | import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService; |
| | | import com.stylefeng.guns.modular.system.dao.RegionMapper; |
| | | import com.stylefeng.guns.modular.system.dao.SystemPriceMapper; |
| | | import com.stylefeng.guns.modular.system.model.Driver; |
| | | import com.stylefeng.guns.modular.system.model.OrderPosition; |
| | | import com.stylefeng.guns.modular.system.model.Region; |
| | | import com.stylefeng.guns.modular.system.service.IDriverService; |
| | | import com.stylefeng.guns.modular.system.service.IOrderPositionService; |
| | | import com.stylefeng.guns.modular.system.service.ISystemNoticeService; |
| | | import com.stylefeng.guns.modular.system.util.*; |
| | | import com.stylefeng.guns.modular.taxi.model.OrderTaxi; |
| | | import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | |
| | | |
| | | @Service |
| | | public class OrderPrivateCarServiceImpl extends ServiceImpl<OrderPrivateCarMapper, OrderPrivateCar> implements IOrderPrivateCarService { |
| | | |
| | | @Resource |
| | | private OrderPrivateCarMapper orderPrivateCarMapper; |
| | | |
| | | @Resource |
| | | private SystemPriceMapper systemPriceMapper; |
| | | |
| | | @Autowired |
| | | private IDriverService driverService; |
| | | |
| | | @Autowired |
| | | private PushUtil pushUtil; |
| | | |
| | | @Autowired |
| | | private GDFalconUtil gdFalconUtil; |
| | | |
| | | @Autowired |
| | | private GDMapGeocodingUtil gdMapGeocodingUtil; |
| | | |
| | | @Autowired |
| | | private ChinaMobileUtil chinaMobileUtil; |
| | | |
| | | @Resource |
| | | private RegionMapper regionMapper; |
| | | |
| | | @Autowired |
| | | private ISystemNoticeService systemNoticeService; |
| | | |
| | | @Autowired |
| | | private IOrderPositionService orderPositionService; |
| | | |
| | | @Autowired |
| | | private GDMapElectricFenceUtil gdMapElectricFenceUtil; |
| | | |
| | | @Autowired |
| | | private PushMinistryOfTransportUtil pushMinistryOfTransportUtil; |
| | | |
| | | @Autowired |
| | | private IOrderTaxiService orderTaxiService; |
| | | |
| | | @Autowired |
| | | private GeodesyUtil geodesyUtil; |
| | | |
| | | @Value("${pushMinistryOfTransport}") |
| | | private boolean pushMinistryOfTransport; |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取司机端首页订单列表 |
| | | * @param state 1=服务中,2=待服务(30分钟定义预约) |
| | | * @param driverId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public List<Map<String, Object>> queryOrderList(Integer state, Integer driverId) throws Exception { |
| | | return orderPrivateCarMapper.queryOrderList(state, driverId); |
| | | } |
| | | |
| | | /** |
| | | * 获取司机端我的订单列表 |
| | | * @param state 1=全部,2=待支付,3=已取消 |
| | | * @param uid |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public List<Map<String, Object>> queryMyAllOrder(Integer state, Integer uid) throws Exception { |
| | | return orderPrivateCarMapper.queryMyAllOrder(state, uid); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取司机抢单页面的订单详情 |
| | | * @param orderId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public Map<String, Object> queryPushOrder(Integer orderId) throws Exception { |
| | | return orderPrivateCarMapper.queryPushOrder(orderId); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 抢单操作 |
| | | * @param orderId |
| | | * @param uid |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public synchronized ResultUtil grabOrder(Integer orderId, Integer uid) throws Exception { |
| | | OrderPrivateCar orderPrivateCar = this.selectById(orderId); |
| | | //处理摆渡车的情况 |
| | | if(orderPrivateCar.getType() == 2){ |
| | | //查看用户下的摆渡车是否已被人抢了 |
| | | List<OrderPrivateCar> list = this.selectList( |
| | | new EntityWrapper<OrderPrivateCar>() |
| | | .eq("type", 2) |
| | | .eq("userId", orderPrivateCar.getUserId()) |
| | | .ne("state", 1) |
| | | .eq("crossCityOrderId", orderPrivateCar.getCrossCityOrderId()) |
| | | .eq("place", orderPrivateCar.getPlace()) |
| | | ); |
| | | List<OrderTaxi> list1 = orderTaxiService.selectList( |
| | | new EntityWrapper<OrderTaxi>() |
| | | .eq("type", 2) |
| | | .eq("userId", orderPrivateCar.getUserId()) |
| | | .ne("state", 1) |
| | | .eq("crossCityOrderId", orderPrivateCar.getCrossCityOrderId()) |
| | | .eq("place", orderPrivateCar.getPlace()) |
| | | ); |
| | | if(list.size() > 0 || list1.size() > 0){ |
| | | return ResultUtil.error("手速有点慢哦,订单已被抢啦!"); |
| | | } |
| | | } |
| | | |
| | | if(orderPrivateCar.getState() == 9){ |
| | | return ResultUtil.error("订单已取消"); |
| | | } |
| | | if(orderPrivateCar.getState() != 1){ |
| | | return ResultUtil.error("手速有点慢哦,订单已被抢啦!"); |
| | | } |
| | | Driver driver = driverService.selectById(uid); |
| | | orderPrivateCar.setDriverId(uid); |
| | | orderPrivateCar.setCarId(driver.getCarId()); |
| | | orderPrivateCar.setCompanyId(driver.getFranchiseeId() != null && driver.getFranchiseeId() != 0 ? driver.getFranchiseeId() : ( |
| | | driver.getCompanyId() != null && driver.getCompanyId() != 0 ? driver.getCompanyId() : 1)); |
| | | orderPrivateCar.setState(2); |
| | | orderPrivateCar.setSnatchOrderTime(new Date()); |
| | | |
| | | //调用高德创建轨迹 |
| | | String s = gdFalconUtil.selectTerminal(driver.getPhone()); |
| | | String track = gdFalconUtil.createTrack(s); |
| | | orderPrivateCar.setTrackId(track); |
| | | |
| | | //调用移动的小号接口 |
| | | // Map<String, String> geocode = gdMapGeocodingUtil.geocode(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString()); |
| | | // Region region = regionMapper.query(geocode.get("districtCode")); |
| | | // Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderPrivateCar.getPassengersPhone(), driver.getPhone(), Integer.valueOf(region.getCitycode().substring(1))); |
| | | // if(String.valueOf(map.get("code")).equals("200")){ |
| | | // orderPrivateCar.setTelX(map.get("telX")); |
| | | // orderPrivateCar.setBindId(map.get("bindId")); |
| | | // } |
| | | |
| | | //处理摆渡车的情况 |
| | | if(orderPrivateCar.getType() == 2){ |
| | | //查看用户下的摆渡车是否已被人抢了 |
| | | List<OrderPrivateCar> list = this.selectList( |
| | | new EntityWrapper<OrderPrivateCar>() |
| | | .eq("type", 2) |
| | | .eq("userId", orderPrivateCar.getUserId()) |
| | | .ne("state", 1) |
| | | .eq("crossCityOrderId", orderPrivateCar.getCrossCityOrderId()) |
| | | .eq("place", orderPrivateCar.getPlace()) |
| | | ); |
| | | List<OrderTaxi> list1 = orderTaxiService.selectList( |
| | | new EntityWrapper<OrderTaxi>() |
| | | .eq("type", 2) |
| | | .eq("userId", orderPrivateCar.getUserId()) |
| | | .ne("state", 1) |
| | | .eq("crossCityOrderId", orderPrivateCar.getCrossCityOrderId()) |
| | | .eq("place", orderPrivateCar.getPlace()) |
| | | ); |
| | | for(OrderPrivateCar orderPrivateCar1 : list){ |
| | | orderPrivateCar1.setState(10); |
| | | this.updateById(orderPrivateCar1); |
| | | } |
| | | for(OrderTaxi orderTaxi : list1){ |
| | | orderTaxi.setState(10); |
| | | orderTaxiService.updateById(orderTaxi); |
| | | } |
| | | } |
| | | |
| | | this.updateById(orderPrivateCar); |
| | | |
| | | //如果是预约单,则不修改司机为服务中 |
| | | if(orderPrivateCar.getOrderType() != 2 || (orderPrivateCar.getOrderType() == 2 && orderPrivateCar.getTravelTime().getTime() < System.currentTimeMillis() + 600000)){ |
| | | //修改司机为服务中 |
| | | driver.setState(3); |
| | | driverService.updateById(driver); |
| | | } |
| | | |
| | | //推送相关代码------------------start---------------- |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState()); |
| | | pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState()); |
| | | if(orderPrivateCar.getType() == 2){ |
| | | pushUtil.pushFerryOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, 2); |
| | | } |
| | | } |
| | | }).start(); |
| | | |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | pushUtil.pushDriverPosition(orderId, 1); |
| | | } |
| | | }).start(); |
| | | |
| | | systemNoticeService.addSystemNotice(2, "您已成功抢得专车订单,请及时联系客户!", orderPrivateCar.getDriverId()); |
| | | systemNoticeService.addSystemNotice(1, "您的订单已指派给" + driver.getName().substring(0, 1) + "师傅,请保持电话畅通!", orderPrivateCar.getUserId()); |
| | | |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | if(pushMinistryOfTransport){ |
| | | //上传数据 |
| | | pushMinistryOfTransportUtil.orderCreate(orderId); |
| | | pushMinistryOfTransportUtil.orderMatch(orderId); |
| | | } |
| | | } |
| | | }).start(); |
| | | |
| | | return ResultUtil.success(); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取订单详情页(服务中的页面) |
| | | * @param orderId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public Map<String, Object> queryOrderInfo(Integer orderId) throws Exception { |
| | | return orderPrivateCarMapper.queryOrderInfo(orderId); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 走订单流程操作 |
| | | * @param orderId |
| | | * @param state |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public ResultUtil process(Integer orderId, Integer state, Double lon, Double lat, String address) throws Exception { |
| | | OrderPrivateCar orderPrivateCar = this.selectById(orderId); |
| | | switch (state){ |
| | | case 3://出发前往预约点 |
| | | orderPrivateCar.setState(3); |
| | | orderPrivateCar.setSetOutTime(new Date()); |
| | | systemNoticeService.addSystemNotice(1, "司机已出发,请耐心等待", orderPrivateCar.getUserId()); |
| | | break; |
| | | case 4://到达预约点,等待客户上车 |
| | | orderPrivateCar.setState(4); |
| | | orderPrivateCar.setArriveTime(new Date()); |
| | | systemNoticeService.addSystemNotice(1, "司机已到达您设置的预约地点,请及时上车", orderPrivateCar.getUserId()); |
| | | break; |
| | | case 5://开始服务 |
| | | orderPrivateCar.setBoardingLon(lon); |
| | | orderPrivateCar.setBoardingLat(lat); |
| | | orderPrivateCar.setBoardingAddress(address); |
| | | orderPrivateCar.setBoardingTime(new Date()); |
| | | orderPrivateCar.setState(5); |
| | | orderPrivateCar.setStartServiceTime(new Date()); |
| | | |
| | | pushUtil.pushDriverPosition(orderPrivateCar.getId(), 1);//主动推送司机定位 |
| | | break; |
| | | case 6://结束服务(专车可以返回继续服务)不修改状态 |
| | | orderPrivateCar.setGetoffLon(lon); |
| | | orderPrivateCar.setGetoffLat(lat); |
| | | orderPrivateCar.setGetoffAddress(address); |
| | | orderPrivateCar.setGetoffTime(new Date()); |
| | | orderPrivateCar.setEndServiceTime(new Date()); |
| | | break; |
| | | } |
| | | this.updateById(orderPrivateCar); |
| | | |
| | | // TODO: 2020/6/5 推送状态 |
| | | OrderPrivateCar finalOrderPrivateCar = orderPrivateCar; |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | pushUtil.pushOrderState(1, finalOrderPrivateCar.getUserId(), finalOrderPrivateCar.getId(), 1, finalOrderPrivateCar.getState()); |
| | | pushUtil.pushOrderState(2, finalOrderPrivateCar.getDriverId(), finalOrderPrivateCar.getId(), 1, finalOrderPrivateCar.getState()); |
| | | if(finalOrderPrivateCar.getState() == 5 && pushMinistryOfTransport){//上传数据 |
| | | pushMinistryOfTransportUtil.operateDepart(orderId); |
| | | } |
| | | } |
| | | }).start(); |
| | | return ResultUtil.success(); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 确认费用操作 |
| | | * @param orderId |
| | | * @param type |
| | | * @param parkingFee |
| | | * @param crossingFee |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public ResultUtil confirmFees(Integer orderId, Integer type, Double parkingFee, Double crossingFee) throws Exception { |
| | | OrderPrivateCar orderPrivateCar = this.selectById(orderId); |
| | | orderPrivateCar = this.setMoney(orderPrivateCar, 0D, 0D);//计算费用 |
| | | orderPrivateCar.setPayManner(type); |
| | | orderPrivateCar.setParkMoney(null == parkingFee ? 0D : parkingFee); |
| | | orderPrivateCar.setRoadTollMoney(null == crossingFee ? 0D : crossingFee); |
| | | orderPrivateCar.setOrderMoney(orderPrivateCar.getOrderMoney() + orderPrivateCar.getParkMoney() + orderPrivateCar.getRoadTollMoney()); |
| | | orderPrivateCar.setState(7); |
| | | this.updateById(orderPrivateCar); |
| | | |
| | | pushUtil.removeTask(orderId, 1);//删除定时任务,结束推送数据 |
| | | systemNoticeService.addSystemNotice(1, "司机已结束本次行程,谢谢使用", orderPrivateCar.getUserId()); |
| | | |
| | | //回滚司机状态为空闲 |
| | | Driver driver = driverService.selectById(orderPrivateCar.getDriverId()); |
| | | driver.setState(2); |
| | | driverService.updateById(driver); |
| | | |
| | | OrderPrivateCar finalOrderTaxi = orderPrivateCar; |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | pushUtil.pushOrderState(1, finalOrderTaxi.getUserId(), finalOrderTaxi.getId(), 1, finalOrderTaxi.getState()); |
| | | pushUtil.pushOrderState(2, finalOrderTaxi.getDriverId(), finalOrderTaxi.getId(), 1, finalOrderTaxi.getState()); |
| | | } |
| | | }).start(); |
| | | |
| | | OrderPrivateCar finalOrderPrivateCar = orderPrivateCar; |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | if(pushMinistryOfTransport){//上传交通数据 |
| | | pushMinistryOfTransportUtil.baseInfoVehicleTotalMile(finalOrderPrivateCar.getCarId()); |
| | | pushMinistryOfTransportUtil.operateArrive(orderId); |
| | | } |
| | | } |
| | | }).start(); |
| | | |
| | | |
| | | return ResultUtil.success(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取订单费用明细 |
| | | * @param orderId |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public Map<String, Object> queryMoneyInfo(Integer orderId) throws Exception { |
| | | OrderPrivateCar orderPrivateCar = this.selectById(orderId); |
| | | if(orderPrivateCar.getState() == 5){//服务中的时候获取实时费用数据 |
| | | this.setMoney(orderPrivateCar, 0D, 0D); |
| | | } |
| | | |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("orderMoney", orderPrivateCar.getOrderMoney());//订单金额 |
| | | map.put("startMileage", orderPrivateCar.getStartMileage());//起步价 |
| | | map.put("startMoney", orderPrivateCar.getStartMoney());//起步价 |
| | | map.put("mileageKilometers", orderPrivateCar.getMileageKilometers());//里程费 |
| | | map.put("mileageMoney", orderPrivateCar.getMileageMoney());//里程费 |
| | | map.put("duration", orderPrivateCar.getDuration());//时长费 |
| | | map.put("durationMoney", orderPrivateCar.getDurationMoney());//时长费 |
| | | map.put("wait", orderPrivateCar.getWait());//等待费 |
| | | map.put("waitMoney", orderPrivateCar.getWaitMoney());//等待费 |
| | | map.put("longDistance", orderPrivateCar.getLongDistance());//远途费 |
| | | map.put("longDistanceMoney", orderPrivateCar.getLongDistanceMoney());//远途费 |
| | | map.put("parkMoney", orderPrivateCar.getParkMoney());//停车费 |
| | | map.put("roadTollMoney", orderPrivateCar.getRoadTollMoney());//过路费 |
| | | map.put("redPacketMoney", orderPrivateCar.getRedPacketMoney());//红包抵扣金额 |
| | | map.put("couponMoney", orderPrivateCar.getCouponMoney());//优惠券抵扣金额 |
| | | map.put("discountMoney", orderPrivateCar.getDiscountMoney());//折扣抵扣金额 |
| | | map.put("discount", orderPrivateCar.getDiscount());//折扣 |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 计算已服务的实时里程 |
| | | * @param orderId |
| | | * @param lon |
| | | * @param lat |
| | | */ |
| | | @Override |
| | | public boolean calculateMileage(Integer orderId, String lon, String lat) throws Exception { |
| | | OrderPrivateCar orderPrivateCar = this.selectById(orderId); |
| | | OrderPosition orderPosition = orderPositionService.queryNew(orderId, 1); |
| | | String now = lon + "," + lat; |
| | | String old = null; |
| | | if(null != orderPosition){ |
| | | old = orderPosition.getLon() + "," + orderPosition.getLat(); |
| | | }else{ |
| | | orderPrivateCar.setMileage(0D); |
| | | this.updateById(orderPrivateCar); |
| | | return true;//第一条数据不作处理,直接存储 |
| | | } |
| | | // Map<String, String> distance = gdMapElectricFenceUtil.getDistance(now, old, 0);//直线距离 |
| | | Map<String, Double> distance = geodesyUtil.getDistance(now, old); |
| | | if(null != distance){ |
| | | Double distance1 = distance.get("WGS84"); |
| | | if(Double.valueOf(distance1) > 50 && orderPrivateCar.getState() == 5){//大于50米表示在移动,且在服务中的时候记录里程 |
| | | orderPrivateCar.setMileage(new BigDecimal(orderPrivateCar.getMileage()).add(new BigDecimal(distance1)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | this.updateById(orderPrivateCar); |
| | | return true; |
| | | } |
| | | return false; |
| | | }else{ |
| | | System.err.println("调用高德计算距离出错"); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | public List<OrderPrivateCar> query(Integer driverId, Integer... state) throws Exception { |
| | | return orderPrivateCarMapper.query(Arrays.asList(state), driverId); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取所有快到期的预约单(出行时间在30分钟内) |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public List<OrderPrivateCar> queryMaturity() throws Exception { |
| | | return orderPrivateCarMapper.queryMaturity(); |
| | | } |
| | | |
| | | /** |
| | | * 计算价格 |
| | | * @param orderPrivateCar |
| | | * @param parkingFee |
| | | * @param crossingFee |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public OrderPrivateCar setMoney(OrderPrivateCar orderPrivateCar, Double parkingFee, Double crossingFee) throws Exception { |
| | | Map<String, Object> query1 = systemPriceMapper.query(orderPrivateCar.getCompanyId(), 1, orderPrivateCar.getServerCarModelId()); |
| | | //开始根据不同的方式计算金额 |
| | | double amount = 0; |
| | | JSONObject jsonObject = JSON.parseObject(query1.get("content").toString()); |
| | | Double num1 = jsonObject.getDouble("num1");//起步价(元) |
| | | Double num2 = jsonObject.getDouble("num2");//起步公里(公里) |
| | | Double num3 = jsonObject.getDouble("num3");//起步时间(分钟) |
| | | Double num4 = jsonObject.getDouble("num4");//里程费(元) |
| | | Double num5 = jsonObject.getDouble("num5");//时长费(分钟) |
| | | Double num6 = jsonObject.getDouble("num6");//等待费(分钟) |
| | | Double num7 = jsonObject.getDouble("num7");//等待费(元) |
| | | Double num8 = jsonObject.getDouble("num8");//远途费(公里) |
| | | Double num9 = jsonObject.getDouble("num9");//远途费(公里) |
| | | Double num10 = jsonObject.getDouble("num10");//远途费(元) |
| | | Double num11 = jsonObject.getDouble("num11");//远途费(公里) |
| | | Double num12 = jsonObject.getDouble("num12");//远途费(公里) |
| | | Double num13 = jsonObject.getDouble("num13");//远途费(元) |
| | | Double num14 = jsonObject.getDouble("num14");//远途费(公里) |
| | | Double num15 = jsonObject.getDouble("num15");//远途费(元) |
| | | String num16 = jsonObject.getString("num16");//夜间费(开始时间) |
| | | Double num17 = jsonObject.getDouble("num17");//夜间费(元) |
| | | Double num18 = jsonObject.getDouble("num18");//夜间费(元) |
| | | Double num19 = jsonObject.getDouble("num19");//夜间费(元) |
| | | Double num20 = jsonObject.getDouble("num20");//夜间费(元) |
| | | Double num21 = jsonObject.getDouble("num21");//夜间费(元) |
| | | Double num22 = jsonObject.getDouble("num22");//夜间费(元) |
| | | String num23 = jsonObject.getString("num23");//高峰费(开始时间) |
| | | String num24 = jsonObject.getString("num24");//高峰费(开始时间) |
| | | Double num25 = jsonObject.getDouble("num25");//高峰费(元) |
| | | Double num26 = jsonObject.getDouble("num26");//高峰费(元) |
| | | Double num27 = jsonObject.getDouble("num27");//高峰费(元) |
| | | Double num28 = jsonObject.getDouble("num28");//高峰费(元) |
| | | Double num29 = jsonObject.getDouble("num29");//高峰费(元) |
| | | Double num30 = jsonObject.getDouble("num30");//高峰费(元) |
| | | |
| | | Date date = new Date(); |
| | | double d = (null == orderPrivateCar.getMileage() ? 0D : orderPrivateCar.getMileage()) / 1000;//实际公里 |
| | | double t = ((orderPrivateCar.getEndServiceTime().getTime() - orderPrivateCar.getStartServiceTime().getTime()) / 60000) + 1;//实际时间(不满一分钟按一分钟算) |
| | | double w = ((orderPrivateCar.getStartServiceTime().getTime() - orderPrivateCar.getArriveTime().getTime()) / 60000) + 1;//等待分钟(不满一分钟按一分钟算) |
| | | double d1 = (d - num2) < 0 ? 0 : d - num2;//超出起步里程的公里 |
| | | double t1 = (t - num3) < 0 ? 0 : new BigDecimal(t - num3).setScale(0, BigDecimal.ROUND_UP).doubleValue();//超过起步分钟数的时间 |
| | | double w1 = (w - num6) < 0 ? 0 : new BigDecimal(w - num6).setScale(0, BigDecimal.ROUND_UP).doubleValue();//超出等待时间的时间 |
| | | double yt1 = 0;//远途1段 |
| | | double yt2 = 0;//远途2段 |
| | | double yt3 = 0;//远途3段 |
| | | |
| | | |
| | | //夜间服务处理逻辑 |
| | | Calendar s = Calendar.getInstance(); |
| | | s.setTime(date); |
| | | s.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num16.split(" - ")[0].split(":")[0])); |
| | | s.set(Calendar.MINUTE, Integer.valueOf(num16.split(" - ")[0].split(":")[1])); |
| | | |
| | | Calendar e = Calendar.getInstance(); |
| | | e.setTime(date); |
| | | e.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num16.split(" - ")[1].split(":")[0])); |
| | | e.set(Calendar.MINUTE, Integer.valueOf(num16.split(" - ")[1].split(":")[1])); |
| | | |
| | | if(date.getTime() > s.getTimeInMillis() && date.getTime() < e.getTimeInMillis()){ |
| | | if(d > num8.doubleValue() && d <= num9.doubleValue()){ |
| | | yt1 = num20 * (d - num8); |
| | | } |
| | | if(d > num9.doubleValue()){ |
| | | yt1 = num20 * (num9 - num8); |
| | | } |
| | | if(d > num11.doubleValue() && d <= num12.doubleValue()){ |
| | | yt2 = num21 * (d - num11); |
| | | } |
| | | if(d > num12.doubleValue()){ |
| | | yt2 = num21 * (num12 - num11); |
| | | } |
| | | if(d > num14.doubleValue()){ |
| | | yt3 = num22 * (d - num14); |
| | | } |
| | | amount = num17 + (d1 * num18) + (t1 * num19) + (w1 * num7) + yt1 + yt2 + yt3; |
| | | orderPrivateCar.setStartMileage(num2); |
| | | orderPrivateCar.setStartMoney(num17);//起步价 |
| | | orderPrivateCar.setMileageKilometers(new BigDecimal(d1).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | orderPrivateCar.setMileageMoney(new BigDecimal(d1 * num18).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//里程费 |
| | | orderPrivateCar.setDuration(new BigDecimal(t1).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | orderPrivateCar.setDurationMoney(new BigDecimal(t1 * num19).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//时长费 |
| | | orderPrivateCar.setWait(new BigDecimal(w1).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | orderPrivateCar.setWaitMoney(new BigDecimal(w1 * num7).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//等待费 |
| | | orderPrivateCar.setLongDistance(new BigDecimal((d > num8) ? d - num8 : 0).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | orderPrivateCar.setLongDistanceMoney(new BigDecimal(yt1 + yt2 + yt3).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//远途费 |
| | | orderPrivateCar.setParkMoney(parkingFee);//停车费 |
| | | orderPrivateCar.setRoadTollMoney(crossingFee);//过路费 |
| | | orderPrivateCar.setRedPacketMoney(0D);//红包抵扣 |
| | | orderPrivateCar.setCouponMoney(0D);//优惠券抵扣 |
| | | orderPrivateCar.setDiscount(0D);//优惠抵扣 |
| | | orderPrivateCar.setPayMoney(0D);//支付金额 |
| | | orderPrivateCar.setOrderMoney(new BigDecimal(amount + parkingFee + crossingFee).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | return orderPrivateCar; |
| | | } |
| | | |
| | | |
| | | //高峰时段处理逻辑 |
| | | Calendar s1 = Calendar.getInstance(); |
| | | s1.setTime(date); |
| | | s1.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num23.split(" - ")[0].split(":")[0])); |
| | | s1.set(Calendar.MINUTE, Integer.valueOf(num23.split(" - ")[0].split(":")[1])); |
| | | |
| | | Calendar e1 = Calendar.getInstance(); |
| | | e1.setTime(date); |
| | | e1.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num23.split(" - ")[1].split(":")[0])); |
| | | e1.set(Calendar.MINUTE, Integer.valueOf(num23.split(" - ")[1].split(":")[1])); |
| | | |
| | | Calendar s2 = Calendar.getInstance(); |
| | | s2.setTime(date); |
| | | s2.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num24.split(" - ")[0].split(":")[0])); |
| | | s2.set(Calendar.MINUTE, Integer.valueOf(num24.split(" - ")[0].split(":")[1])); |
| | | |
| | | Calendar e2 = Calendar.getInstance(); |
| | | e2.setTime(date); |
| | | e2.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num24.split(" - ")[1].split(":")[0])); |
| | | e2.set(Calendar.MINUTE, Integer.valueOf(num24.split(" - ")[1].split(":")[1])); |
| | | |
| | | if((date.getTime() > s1.getTimeInMillis() && date.getTime() < e1.getTimeInMillis()) || (date.getTime() > s2.getTimeInMillis() && date.getTime() < e2.getTimeInMillis())){ |
| | | if(d > num8.doubleValue() && d <= num9.doubleValue()){ |
| | | yt1 = num28 * (d - num8); |
| | | } |
| | | if(d > num9.doubleValue()){ |
| | | yt1 = num28 * (num9 - num8); |
| | | } |
| | | if(d > num11.doubleValue() && d <= num12.doubleValue()){ |
| | | yt2 = num29 * (d - num11); |
| | | } |
| | | if(d > num12.doubleValue()){ |
| | | yt2 = num29 * (num12 - num11); |
| | | } |
| | | if(d > num14.doubleValue()){ |
| | | yt3 = num30 * (d - num14); |
| | | } |
| | | amount = num25 + (d1 * num26) + (t1 * num27) + (w1 * num7) + yt1 + yt2 + yt3; |
| | | orderPrivateCar.setStartMileage(num2); |
| | | orderPrivateCar.setStartMoney(num25);//起步价 |
| | | orderPrivateCar.setMileageKilometers(new BigDecimal(d1).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | orderPrivateCar.setMileageMoney(new BigDecimal(d1 * num26).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//里程费 |
| | | orderPrivateCar.setDuration(new BigDecimal(t1).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | orderPrivateCar.setDurationMoney(new BigDecimal(t1 * num27).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//时长费 |
| | | orderPrivateCar.setWait(new BigDecimal(w1).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | orderPrivateCar.setWaitMoney(new BigDecimal(w1 * num7).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//等待费 |
| | | orderPrivateCar.setLongDistance(new BigDecimal((d > num8) ? d - num8 : 0).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | orderPrivateCar.setLongDistanceMoney(new BigDecimal(yt1 + yt2 + yt3).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//远途费 |
| | | orderPrivateCar.setParkMoney(parkingFee);//停车费 |
| | | orderPrivateCar.setRoadTollMoney(crossingFee);//过路费 |
| | | orderPrivateCar.setRedPacketMoney(0D);//红包抵扣 |
| | | orderPrivateCar.setCouponMoney(0D);//优惠券抵扣 |
| | | orderPrivateCar.setDiscount(0D);//优惠抵扣 |
| | | orderPrivateCar.setPayMoney(0D);//支付金额 |
| | | orderPrivateCar.setOrderMoney(new BigDecimal(amount + parkingFee + crossingFee).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | return orderPrivateCar; |
| | | } |
| | | |
| | | //其他时间段的计算 |
| | | if(d > num8.doubleValue() && d <= num9.doubleValue()){ |
| | | yt1 = num10 * (d - num8); |
| | | } |
| | | if(d > num9.doubleValue()){ |
| | | yt1 = num10 * (num9 - num8); |
| | | } |
| | | if(d > num11.doubleValue() && d <= num12.doubleValue()){ |
| | | yt2 = num13 * (d - num11); |
| | | } |
| | | if(d > num12.doubleValue()){ |
| | | yt2 = num13 * (num12 - num11); |
| | | } |
| | | if(d > num14.doubleValue()){ |
| | | yt3 = num15 * (d - num14); |
| | | } |
| | | amount = num1 + (d1 * num4) + (t1 * num5) + (w1 * num7) + yt1 + yt2 + yt3; |
| | | orderPrivateCar.setStartMileage(num2); |
| | | orderPrivateCar.setStartMoney(num1);//起步价 |
| | | orderPrivateCar.setMileageKilometers(new BigDecimal(d1).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | orderPrivateCar.setMileageMoney(new BigDecimal(d1 * num4).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//里程费 |
| | | orderPrivateCar.setDuration(new BigDecimal(t1).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | orderPrivateCar.setDurationMoney(new BigDecimal(t1 * num5).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//时长费 |
| | | orderPrivateCar.setWait(new BigDecimal(w1).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | orderPrivateCar.setWaitMoney(new BigDecimal(w1 * num7).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//等待费 |
| | | orderPrivateCar.setLongDistance(new BigDecimal((d > num8) ? d - num8 : 0).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | orderPrivateCar.setLongDistanceMoney(new BigDecimal(yt1 + yt2 + yt3).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//远途费 |
| | | orderPrivateCar.setParkMoney(parkingFee);//停车费 |
| | | orderPrivateCar.setRoadTollMoney(crossingFee);//过路费 |
| | | orderPrivateCar.setRedPacketMoney(0D);//红包抵扣 |
| | | orderPrivateCar.setCouponMoney(0D);//优惠券抵扣 |
| | | orderPrivateCar.setDiscount(0D);//优惠抵扣 |
| | | orderPrivateCar.setPayMoney(0D);//支付金额 |
| | | orderPrivateCar.setOrderMoney(new BigDecimal(amount + parkingFee + crossingFee).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | return orderPrivateCar; |
| | | } |
| | | } |
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/auth/AuthIntercepter.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/auth/AuthService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/auth/AuthenticationKit.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/auth/Configuration.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/auth/HMACSHA1.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/auth/HashKit.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/auth/UrlEncoderUtils.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/BlackboardController.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/DeptController.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/DictController.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/KaptchaController.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/LogController.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/LoginController.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/LoginLogController.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/MenuController.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/NoticeController.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/RoleController.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/UserMgrController.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/AgreementMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/BankCardMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/CarBrandMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/CarMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/CarModelMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/CarServiceMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/CompanyCityMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/CompanyMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DeptMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DictMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DispatchMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverActivityHistoryMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverActivityMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverActivityOnlineMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverActivityOrderMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverActivityRegisteredMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverOnlineMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverOrdersMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverServiceMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverWorkMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/ExpenseMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/FeedbackMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/GDInterfaceMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/IncomeMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/LoginLogMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/MenuMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/NoticeMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/OperationLogMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/OrderCancelMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/OrderEvaluateMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/OrderPositionMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/PaymentRecordMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/PhoneMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/PushAuxiliaryMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/PushOrderMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/ReassignMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/RegionMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/RelationMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/RoleMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SensitiveWordsMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/ServerCarModelMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SmsrecordMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SysIntegralMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SysReformistMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SystemNoticeMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SystemPriceMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TNoticesMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TransactionDetailsMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/UserActivityInviteMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/UserCouponRecordMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/UserInfoMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/UserMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/UserRedPacketRecordMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/VersionManagementMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/WithdrawalMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/AgreementMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/BankCardMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/CarBrandMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/CarMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/CarModelMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/CarServiceMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/CompanyCityMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/CompanyMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DeptMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DictMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DispatchMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverActivityHistoryMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverActivityMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverActivityOnlineMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverActivityOrderMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverActivityRegisteredMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverOnlineMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverOrdersMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverServiceMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverWorkMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/ExpenseMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/FeedbackMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/GDInterfaceMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/IncomeMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/LoginLogMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/MenuMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/NoticeMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/OperationLogMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/OrderCancelMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/OrderEvaluateMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/OrderPositionMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/PaymentRecordMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/PhoneMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/PushAuxiliaryMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/PushOrderMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/ReassignMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/RegionMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/RelationMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/RoleMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SensitiveWordsMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/ServerCarModelMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SmsrecordMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SysIntegralMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SysReformistMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SystemNoticeMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SystemPriceMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TNoticesMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TransactionDetailsMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/UserActivityInviteMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/UserCouponRecordMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/UserInfoMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/UserMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/UserRedPacketRecordMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/VersionManagementMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/WithdrawalMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/factory/UserFactory.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Agreement.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/BankCard.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/BaseBean.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Car.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/CarBrand.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/CarModel.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/CarService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Company.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/CompanyCity.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Dept.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Dict.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Dispatch.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Driver.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverActivity.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverActivityHistory.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverActivityOnline.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverActivityOrder.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverActivityRegistered.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverOnline.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverOrders.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverWork.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Expense.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Feedback.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/GDInterface.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Income.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/LoginLog.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Menu.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Notice.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/OperationLog.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/OrderCancel.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/OrderEvaluate.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/OrderPosition.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/PaymentRecord.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Phone.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/PushAuxiliary.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/PushOrder.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Reassign.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Region.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Relation.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Role.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SensitiveWords.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/ServerCarModel.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Smsrecord.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SysIntegral.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SysReformist.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SystemNotice.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SystemPrice.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TNotices.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TransactionDetails.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/User.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserActivityInvite.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserCouponRecord.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserInfo.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserRedPacketRecord.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/VersionManagement.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Withdrawal.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IAgreementService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IBankCardService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICarService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICompanyCityService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICompanyService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDeptService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDictService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverOnlineService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverOrdersService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IFeedbackService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IGDInterfaceService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IIncomeService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ILoginLogService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IMenuService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/INettyService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/INoticeService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IOperationLogService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IOrderCancelService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IOrderEvaluateService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IOrderPositionService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IOrderService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IPaymentRecordService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IPhoneService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IReassignService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IRelationService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IRoleService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISmsrecordService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISystemNoticeService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITransactionDetailsService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IUserRedPacketRecordService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IUserService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IVersionManagementService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IWithdrawalService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/AgreementServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/BankCardServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CarServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CompanyCityServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CompanyServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DeptServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DictServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverOnlineServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverOrdersServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/FeedbackServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/GDInterfaceServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/IncomeServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/LoginLogServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/MenuServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/NettyServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/NoticeServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OperationLogServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderCancelServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderEvaluateServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderPositionServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PaymentRecordServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PhoneServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/RelationServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/RoleServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SmsrecordServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SystemNoticeServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TransactionDetailsServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserRedPacketRecordServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/VersionManagementServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/WithdrawalServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/transfer/ManagerUser.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/transfer/ReqAddManager.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/transfer/ReqEditManager.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/transfer/UserDto.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ALiApiUtil.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ALiSendSms.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ChinaMobileUtil.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/DateUtil.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDFalconUtil.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapElectricFenceUtil.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapGeocodingUtil.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GeodesyUtil.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/HttpClientUtil.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/HuaWeiSMSUtil.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ICBCPayUtil.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/JGPushUtil.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/JuHeUtil.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MD5AndKL.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PayMoneyUtil.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushMinistryOfTransportUtil.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/RedisUtil.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ResultUtil.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/SystemException.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/UUIDUtil.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/ActivityWarpper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/BaseWarpper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/DeptWarpper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/DictWarpper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/DriverInfoWarpper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/HomeWarpper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/LogWarpper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/LoginWarpper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/MenuWarpper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/MoneyInfoWarpper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/NoticeWrapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderEvaluateWarpper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderInfoWarpper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderListWarpper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderStatusWarpper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrdersWarpper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/RegisteredWarpper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/RoleWarpper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/SystemNoticeWarpper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/UserWarpper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/VersionWarpper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/WithdrawalWarpper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/dao/OrderTaxiMapper.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/dao/mapping/OrderTaxiMapper.xml
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/IOrderTaxiService.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/warpper/OrderTaxiWarpper.java
DriverNTTravel/guns-admin/src/main/resources/META-INF/spring-devtools.properties
DriverNTTravel/guns-admin/src/main/resources/application.yml
DriverNTTravel/guns-admin/src/main/resources/ehcache.xml
DriverNTTravel/guns-admin/src/main/resources/logback-spring.xml
DriverNTTravel/guns-admin/src/main/resources/redis.properties
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/404.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/blackboard.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/code/code.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/common/_container.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/common/_right.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/common/_tab.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/common/_theme.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/common/tags/NameCon.tag
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/common/tags/SelectCon.tag
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/common/tags/TimeCon.tag
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/common/tags/avatar.tag
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/common/tags/button.tag
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/common/tags/input.tag
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/common/tags/select.tag
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/common/tags/table.tag
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/common/tags/tag_tips
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/index.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/login.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/code/code.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/dept/dept.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/dept/dept_add.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/dept/dept_edit.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/dict/dict.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/dict/dict_add.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/dict/dict_edit.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/log/log.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/log/login_log.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/menu/menu.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/menu/menu_add.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/menu/menu_edit.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/notice/notice.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/notice/notice_add.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/notice/notice_edit.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/role/role.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/role/role_add.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/role/role_assign.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/role/role_edit.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/user/user.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/user/user_add.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/user/user_chpwd.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/user/user_edit.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/user/user_roleassign.html
DriverNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/user/user_view.html
DriverNTTravel/guns-admin/src/main/webapp/static/css/_fstyle.css
DriverNTTravel/guns-admin/src/main/webapp/static/css/bootstrap-rtl.css
DriverNTTravel/guns-admin/src/main/webapp/static/css/bootstrap.min.css
DriverNTTravel/guns-admin/src/main/webapp/static/css/font-awesome.css
DriverNTTravel/guns-admin/src/main/webapp/static/css/font-awesome.min.css
DriverNTTravel/guns-admin/src/main/webapp/static/css/login.css
DriverNTTravel/guns-admin/src/main/webapp/static/css/patterns/header-profile-skin-1.png
DriverNTTravel/guns-admin/src/main/webapp/static/css/patterns/header-profile-skin-3.png
DriverNTTravel/guns-admin/src/main/webapp/static/css/patterns/header-profile.png
DriverNTTravel/guns-admin/src/main/webapp/static/css/patterns/shattered.png
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/bootstrap-table/bootstrap-table.min.css
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/bootstrap-treetable/bootstrap-treetable.css
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/chosen/chosen-sprite.png
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/chosen/chosen-sprite@2x.png
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/chosen/chosen.css
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/iCheck/custom.css
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/iCheck/green.png
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/iCheck/green@2x.png
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/images/sprite-skin-flat.png
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/validate/bootstrapValidator.min.css
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/webuploader/webuploader.css
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/ztree/demo.css
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/ztree/img/diy/1_close.png
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/ztree/img/diy/1_open.png
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/ztree/img/diy/2.png
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/ztree/img/diy/3.png
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/ztree/img/diy/4.png
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/ztree/img/diy/5.png
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/ztree/img/diy/6.png
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/ztree/img/diy/7.png
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/ztree/img/diy/8.png
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/ztree/img/diy/9.png
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/ztree/img/line_conn.gif
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/ztree/img/loading.gif
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/ztree/img/zTreeStandard.gif
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/ztree/img/zTreeStandard.png
DriverNTTravel/guns-admin/src/main/webapp/static/css/plugins/ztree/zTreeStyle.css
DriverNTTravel/guns-admin/src/main/webapp/static/css/style.css
DriverNTTravel/guns-admin/src/main/webapp/static/favicon.ico
DriverNTTravel/guns-admin/src/main/webapp/static/fonts/FontAwesome.otf
DriverNTTravel/guns-admin/src/main/webapp/static/fonts/fontawesome-webfont.eot
DriverNTTravel/guns-admin/src/main/webapp/static/fonts/fontawesome-webfont.svg
DriverNTTravel/guns-admin/src/main/webapp/static/fonts/fontawesome-webfont.ttf
DriverNTTravel/guns-admin/src/main/webapp/static/fonts/fontawesome-webfont.woff
DriverNTTravel/guns-admin/src/main/webapp/static/fonts/fontawesome-webfont.woff2
DriverNTTravel/guns-admin/src/main/webapp/static/fonts/glyphicons-halflings-regular.eot
DriverNTTravel/guns-admin/src/main/webapp/static/fonts/glyphicons-halflings-regular.svg
DriverNTTravel/guns-admin/src/main/webapp/static/fonts/glyphicons-halflings-regular.ttf
DriverNTTravel/guns-admin/src/main/webapp/static/fonts/glyphicons-halflings-regular.woff
DriverNTTravel/guns-admin/src/main/webapp/static/fonts/glyphicons-halflings-regular.woff2
DriverNTTravel/guns-admin/src/main/webapp/static/img/bg.png
DriverNTTravel/guns-admin/src/main/webapp/static/img/boy.gif
DriverNTTravel/guns-admin/src/main/webapp/static/img/girl.gif
DriverNTTravel/guns-admin/src/main/webapp/static/img/icons.png
DriverNTTravel/guns-admin/src/main/webapp/static/img/loading-upload.gif
DriverNTTravel/guns-admin/src/main/webapp/static/img/locked.png
DriverNTTravel/guns-admin/src/main/webapp/static/img/user.png
DriverNTTravel/guns-admin/src/main/webapp/static/js/bootstrap.min.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/common/DateUtils.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/common/Feng.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/common/ajax-object.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/common/bootstrap-table-object.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/common/select-list-object.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/common/tree-table-object.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/common/web-upload-object.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/common/ztree-object.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/contabs.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/content.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/hplus.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/jquery.min.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/jquery.min.map
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/bootstrap-table/bootstrap-table-mobile.min.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/bootstrap-table/bootstrap-table.min.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.min.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/bootstrap-treetable/bootstrap-treetable.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/chosen/chosen.jquery.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/iCheck/icheck.min.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/laydate/laydate.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/laydate/theme/default/font/iconfont.eot
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/laydate/theme/default/font/iconfont.svg
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/laydate/theme/default/font/iconfont.ttf
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/laydate/theme/default/font/iconfont.woff
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/laydate/theme/default/laydate.css
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/layer/layer.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/layer/mobile/layer.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/layer/mobile/need/layer.css
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/layer/theme/default/icon-ext.png
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/layer/theme/default/icon.png
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/layer/theme/default/layer.css
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/layer/theme/default/loading-0.gif
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/layer/theme/default/loading-1.gif
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/layer/theme/default/loading-2.gif
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/metisMenu/jquery.metisMenu.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/pace/pace.min.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/slimscroll/jquery.slimscroll.min.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/validate/additional-methods.min.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/validate/bootstrapValidator.min.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/validate/zh_CN.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/wangEditor/wangEditor.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/webuploader/Uploader.swf
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/webuploader/webuploader.css
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/webuploader/webuploader.custom.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/webuploader/webuploader.custom.min.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/webuploader/webuploader.fis.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/webuploader/webuploader.flashonly.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/webuploader/webuploader.flashonly.min.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/webuploader/webuploader.html5only.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/webuploader/webuploader.html5only.min.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/webuploader/webuploader.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/webuploader/webuploader.min.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/webuploader/webuploader.noimage.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/webuploader/webuploader.noimage.min.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/webuploader/webuploader.nolog.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/webuploader/webuploader.nolog.min.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/webuploader/webuploader.withoutimage.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/webuploader/webuploader.withoutimage.min.js
DriverNTTravel/guns-admin/src/main/webapp/static/js/plugins/ztree/jquery.ztree.all.min.js
DriverNTTravel/guns-admin/src/main/webapp/static/modular/code/gen.js
DriverNTTravel/guns-admin/src/main/webapp/static/modular/flowable/expense/expense.js
DriverNTTravel/guns-admin/src/main/webapp/static/modular/flowable/expense/expense_info.js
DriverNTTravel/guns-admin/src/main/webapp/static/modular/flowable/process/process.js
DriverNTTravel/guns-admin/src/main/webapp/static/modular/flowable/process/process_info.js
DriverNTTravel/guns-admin/src/main/webapp/static/modular/system/code/code.js
DriverNTTravel/guns-admin/src/main/webapp/static/modular/system/dept/dept.js
DriverNTTravel/guns-admin/src/main/webapp/static/modular/system/dept/dept_info.js
DriverNTTravel/guns-admin/src/main/webapp/static/modular/system/dict/dict.js
DriverNTTravel/guns-admin/src/main/webapp/static/modular/system/dict/dict_info.js
DriverNTTravel/guns-admin/src/main/webapp/static/modular/system/log/log.js
DriverNTTravel/guns-admin/src/main/webapp/static/modular/system/log/login_log.js
DriverNTTravel/guns-admin/src/main/webapp/static/modular/system/menu/menu.js
DriverNTTravel/guns-admin/src/main/webapp/static/modular/system/menu/menu_info.js
DriverNTTravel/guns-admin/src/main/webapp/static/modular/system/notice/notice.js
DriverNTTravel/guns-admin/src/main/webapp/static/modular/system/notice/notice_info.js
DriverNTTravel/guns-admin/src/main/webapp/static/modular/system/role/role.js
DriverNTTravel/guns-admin/src/main/webapp/static/modular/system/role/role_info.js
DriverNTTravel/guns-admin/src/main/webapp/static/modular/system/user/user.js
DriverNTTravel/guns-admin/src/main/webapp/static/modular/system/user/user_info.js
DriverNTTravel/guns-admin/src/test/java/com/stylefeng/guns/GunsApplicationTest.java |