Browse Source

init from phab

xielq 4 years ago
parent
commit
48411d6b6f
32 changed files with 1584 additions and 0 deletions
  1. 0 0
      README.md
  2. 43 0
      build.gradle
  3. 28 0
      gradle/dependencies-base.gradle
  4. 11 0
      gradle/tasks.gradle
  5. BIN
      gradle/wrapper/gradle-wrapper.jar
  6. 6 0
      gradle/wrapper/gradle-wrapper.properties
  7. 164 0
      gradlew
  8. 90 0
      gradlew.bat
  9. 1 0
      settings.gradle
  10. 5 0
      src/main/docker/Dockerfile
  11. 17 0
      src/main/java/com/diymall/schedule/DiymallApplication.java
  12. 29 0
      src/main/java/com/diymall/schedule/SSOConfiguration.java
  13. 15 0
      src/main/java/com/diymall/schedule/controller/IndexController.java
  14. 47 0
      src/main/java/com/diymall/schedule/controller/LoanDownController.java
  15. 22 0
      src/main/java/com/diymall/schedule/data/DiymallOrderRepository.java
  16. 13 0
      src/main/java/com/diymall/schedule/data/EnterpriseRepository.java
  17. 63 0
      src/main/java/com/diymall/schedule/filter/AccessSignatureInterceptor.java
  18. 439 0
      src/main/java/com/diymall/schedule/model/DiymallOrder.java
  19. 194 0
      src/main/java/com/diymall/schedule/model/DiymallOrderItem.java
  20. 96 0
      src/main/java/com/diymall/schedule/model/Enterprise.java
  21. 18 0
      src/main/java/com/diymall/schedule/service/EnterpriseService.java
  22. 25 0
      src/main/java/com/diymall/schedule/service/LoanDownService.java
  23. 19 0
      src/main/java/com/diymall/schedule/service/impl/EnterpriseServiceImpl.java
  24. 35 0
      src/main/java/com/diymall/schedule/service/impl/LoanDownServiceImpl.java
  25. 43 0
      src/main/java/com/diymall/schedule/util/AgentUtils.java
  26. 19 0
      src/main/java/com/diymall/schedule/util/CollectionUtils.java
  27. 58 0
      src/main/java/com/diymall/schedule/util/HmacEncoder.java
  28. 31 0
      src/main/java/com/diymall/schedule/util/HmacUtils.java
  29. 16 0
      src/main/resources/application-dev.yml
  30. 16 0
      src/main/resources/application-prod.yml
  31. 16 0
      src/main/resources/application-test.yml
  32. 5 0
      src/main/resources/application.yml

+ 0 - 0
README.md


+ 43 - 0
build.gradle

@@ -0,0 +1,43 @@
+buildscript {
+	ext {
+		springBootVersion = '1.4.4.RELEASE'
+		// 0.12.0 升级到了 Gradle 3.4,Gradle 2.14.1 只能使用 0.11.0及以下
+		dockerVersion = '0.12.0'
+		dcokerRegistry = "10.10.100.200:5000"
+	}
+	repositories {
+		maven { url "https://plugins.gradle.org/m2/" }
+		maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
+		mavenCentral()
+		jcenter()
+	}
+	dependencies {
+		classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
+		classpath "gradle.plugin.com.palantir.gradle.docker:gradle-docker:${dockerVersion}"
+	}
+}
+
+group 'com.diymall.schedule'
+version '0.0.10'
+
+apply plugin: 'java'
+apply plugin: "com.palantir.docker"
+apply plugin: "org.springframework.boot"
+
+apply from: "$rootDir/gradle/tasks.gradle"
+apply from: "$rootDir/gradle/dependencies-base.gradle"
+
+jar {
+	baseName = project.name
+	version = ''
+}
+
+allprojects {
+	sourceCompatibility = 1.8
+}
+
+dependencies {
+	compile "org.springframework.boot:spring-boot-starter-data-jpa"
+	compile "mysql:mysql-connector-java:5.1.21"
+	compile "com.alibaba:fastjson:1.2.24"
+}

+ 28 - 0
gradle/dependencies-base.gradle

@@ -0,0 +1,28 @@
+// Gradle Base Dependencies Configurations
+// Created by huxz on 2017-3-17 14:39:36
+repositories {
+	mavenLocal()
+	maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
+	maven {
+		url 'http://10.10.101.21:8081/artifactory/libs-release'
+	}
+	maven {
+		url 'http://10.10.101.21:8081/artifactory/libs-snapshot'
+	}
+	maven {
+		url 'http://10.10.101.21:8081/artifactory/plugins-snapshot'
+	}
+	mavenCentral()
+}
+
+dependencyManagement {
+	imports {
+		mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Camden.SR5'
+	}
+}
+
+dependencies {
+	compile 'org.springframework.cloud:spring-cloud-starter-config'
+	compile "org.springframework.cloud:spring-cloud-starter-eureka"
+	testCompile 'org.springframework.boot:spring-boot-starter-test'
+}

+ 11 - 0
gradle/tasks.gradle

@@ -0,0 +1,11 @@
+// Gradle Tasks Configurations
+// Created by huxz on 2017-3-17 14:39:36
+bootRun {
+	addResources = true
+}
+
+docker {
+	name "${dcokerRegistry}/${project.name}:${project.version}"
+	dockerfile "${projectDir}/src/main/docker/Dockerfile"
+	files "${buildDir}/libs/${project.name}.jar"
+}.dependsOn build

BIN
gradle/wrapper/gradle-wrapper.jar


+ 6 - 0
gradle/wrapper/gradle-wrapper.properties

@@ -0,0 +1,6 @@
+#Thu Mar 02 17:40:45 CST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-bin.zip

+ 164 - 0
gradlew

@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+  NONSTOP* )
+    nonstop=true
+    ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+    JAVACMD=`cygpath --unix "$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"

+ 90 - 0
gradlew.bat

@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem  Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega

+ 1 - 0
settings.gradle

@@ -0,0 +1 @@
+rootProject.name = 'diymall-schedule'

+ 5 - 0
src/main/docker/Dockerfile

@@ -0,0 +1,5 @@
+FROM hub.c.163.com/library/java:8-jre-alpine
+VOLUME /tmp
+ADD diymall-schedule.jar /app.jar
+ENV JAVA_OPTS=""
+ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar --spring.profiles.active=prod"]

+ 17 - 0
src/main/java/com/diymall/schedule/DiymallApplication.java

@@ -0,0 +1,17 @@
+package com.diymall.schedule;
+
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+
+/**
+ * 定制商城订单服务
+ * <p>
+ * Created by huangct on 17/12/25.
+ */
+
+@SpringBootApplication
+public class DiymallApplication {
+    public static void main(String[] args) {
+        new SpringApplicationBuilder(DiymallApplication.class).web(true).run(args);
+    }
+}

+ 29 - 0
src/main/java/com/diymall/schedule/SSOConfiguration.java

@@ -0,0 +1,29 @@
+package com.diymall.schedule;
+
+import com.diymall.schedule.filter.AccessSignatureInterceptor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+
+
+/**
+ * SSOconfig 配置
+ *
+ * @author hejq
+ */
+@Configuration
+public class SSOConfiguration extends WebMvcConfigurerAdapter {
+
+    @Autowired
+    private AccessSignatureInterceptor accessSignatureInterceptor;
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        /**
+         * 拦截器配置
+         */
+        registry.addInterceptor(accessSignatureInterceptor).addPathPatterns("/erp/**");
+    }
+
+}

+ 15 - 0
src/main/java/com/diymall/schedule/controller/IndexController.java

@@ -0,0 +1,15 @@
+package com.diymall.schedule.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping(value = "/")
+@RestController
+public class IndexController {
+    @RequestMapping(method = RequestMethod.GET)
+    public String index() {
+        return "diymall-schedule home";
+    }
+
+}

+ 47 - 0
src/main/java/com/diymall/schedule/controller/LoanDownController.java

@@ -0,0 +1,47 @@
+package com.diymall.schedule.controller;
+
+import com.diymall.schedule.model.DiymallOrder;
+import com.diymall.schedule.service.LoanDownService;
+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.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.List;
+
+/**
+ * erp下载定制商城订单数据接口
+ * Created by huangct on 2017-12-25.
+ */
+@RequestMapping(value = "/erp/loan")
+@RestController
+public class LoanDownController {
+
+    @Autowired
+    private LoanDownService loanDownService;
+
+    /**
+     * 获取未下载的数据
+     *
+     * @return
+     */
+    @RequestMapping(method = RequestMethod.GET)
+    public List<DiymallOrder> getLoan() {
+        return loanDownService.findByStatus(0);
+    }
+
+    /**
+     * 下载完成后返回ids更新下载状态
+     *
+     * @param data
+     */
+    @RequestMapping(value = "/back", method = RequestMethod.POST)
+    public void updateAfterCheck(@RequestParam("data") String data) throws UnsupportedEncodingException {
+        String idStr = URLDecoder.decode(data, "UTF-8");
+        loanDownService.updateStatus(idStr);
+
+    }
+}

+ 22 - 0
src/main/java/com/diymall/schedule/data/DiymallOrderRepository.java

@@ -0,0 +1,22 @@
+package com.diymall.schedule.data;
+
+import com.diymall.schedule.model.DiymallOrder;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface DiymallOrderRepository extends JpaSpecificationExecutor<DiymallOrder>, JpaRepository<DiymallOrder, Long> {
+    /**
+     * 通过下载状态查询数据   暂时查找已付款的  之后只获取待发货的
+     *
+     * @param synData
+     * @return
+     */
+    @Query("from DiymallOrder where synData = :synData and status != 0")
+    List<DiymallOrder> findDiymallOrders(@Param("synData")Integer synData);
+}

+ 13 - 0
src/main/java/com/diymall/schedule/data/EnterpriseRepository.java

@@ -0,0 +1,13 @@
+package com.diymall.schedule.data;
+
+import com.diymall.schedule.model.Enterprise;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * Created by huangct on 2017-12-25.
+ */
+@Repository
+public interface EnterpriseRepository extends JpaRepository<Enterprise, Long>, JpaSpecificationExecutor<Enterprise> {
+}

+ 63 - 0
src/main/java/com/diymall/schedule/filter/AccessSignatureInterceptor.java

@@ -0,0 +1,63 @@
+package com.diymall.schedule.filter;
+
+import com.diymall.schedule.model.Enterprise;
+import com.diymall.schedule.service.EnterpriseService;
+import com.diymall.schedule.util.AgentUtils;
+import com.diymall.schedule.util.HmacUtils;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * 对需要签名认证的请求进行拦截认证
+ * 
+ * @author yingp
+ *
+ */
+@SuppressWarnings("deprecation")
+@Component
+public class AccessSignatureInterceptor extends HandlerInterceptorAdapter {
+
+	private final static String idParam = "access_id";
+	private final static String signatureParam = "_signature";
+
+	private static final Logger logger = Logger.getLogger(AccessSignatureInterceptor.class);
+
+	@Autowired
+	private EnterpriseService enterpriseService;
+
+
+	@Override
+	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+		String id = request.getParameter(idParam);
+		String sign = request.getParameter(signatureParam);
+		if (id != null && sign != null) {
+			Enterprise enterprise = enterpriseService.findByEnuu(Long.parseLong(id));
+			if (enterprise != null && enterprise.getAccessSecret() != null) {
+				String urlMessage = request.getRequestURL() + "?"
+						+ request.getQueryString().substring(0, request.getQueryString().indexOf(signatureParam) - 1);
+				if (sign.equals(HmacUtils.encode(urlMessage, enterprise.getAccessSecret()))) {
+					// 将企业信息、企业管理员信息写入SystemSession
+                    //SystemSession.setEnterprise(enterprise);
+                    return true;
+				}
+				logger.error(String.format("FORBIDDEN FROM %s@%s, REQUEST: %s, SIGNATURE: %s", AgentUtils.getIp(request), id, urlMessage,
+						sign));
+			}
+		}
+		response.setStatus(HttpStatus.FORBIDDEN.value());
+		return false;
+	}
+
+	@Override
+	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
+		super.afterCompletion(request, response, handler, ex);
+		//SystemSession.clear();
+	}
+
+}

+ 439 - 0
src/main/java/com/diymall/schedule/model/DiymallOrder.java

@@ -0,0 +1,439 @@
+package com.diymall.schedule.model;
+
+import javax.persistence.*;
+import java.util.Date;
+import java.util.Set;
+
+@Entity
+@Table(name = "db_orders")
+public class DiymallOrder {
+  @Id
+  @Column(name = "id")
+  private Long id;
+
+  @Column(name = "code")
+  private String code;
+
+  @Column(name = "payment")
+  private Integer payment;
+
+  @Column(name = "user_id")
+  private Integer userId;
+
+  @Column(name = "status")
+  private Integer status;
+
+  @Column(name = "display")
+  private Integer display;
+
+  @Column(name = "take_name")
+  private String takeName;
+
+  @Column(name = "take_phone")
+  private String takePhone;
+
+  @Column(name = "take_post_code")
+  private String takePostCode;
+
+  @Column(name = "take_area_id")
+  private Integer takeAreaId;
+
+  @Column(name = "take_area_msg")
+  private String takeAreaMsg;
+
+  @Column(name = "take_address")
+  private String takeAddress;
+
+  @Column(name = "to_bank_number")
+  private String toBankNumber;
+
+  @Column(name = "to_bank_name")
+  private String toBankName;
+
+  @Column(name = "to_bank_type")
+  private String toBankType;
+
+  @Column(name = "to_bank_address")
+  private String toBbankAddress;
+
+  @Column(name = "from_bank_number")
+  private String fromBankNumber;
+
+  @Column(name = "from_bank_name")
+  private String fromBankName;
+
+  @Column(name = "remark")
+  private String remark;
+
+  @Column(name = "admin_remark")
+  private String adminRemark;
+
+  @Column(name = "invoice_name")
+  private String invoiceName;
+
+  @Column(name = "invoice_number")
+  private String invoiceNumber;
+
+  @Column(name = "freight_id")
+  private Integer freightId;
+
+  @Column(name = "freight_price")
+  private Double freightPrice;
+
+  @Column(name = "subtotal")
+  private Double subtotal;
+
+  @Column(name = "grand_total")
+  private Double grandTotal;
+
+  @Column(name = "tracking_code")
+  private String trackingCode;
+
+  @Column(name = "tracking_company")
+  private String trackingCompany;
+
+  @Column(name = "tracking_kdn_code")
+  private String trackingKdnCode;
+
+  @Column(name = "tracking_status")
+  private Integer trackingStatus;
+
+  @Column(name = "tracking_update_date")
+  private Date trackingUpdateDate;
+
+  @Column(name = "create_date")
+  private Date createDate;
+
+  @Column(name = "payment_date")
+  private Date paymentDate;
+
+  @Column(name = "tracking_date")
+  private Date trackingDate;
+
+  @Column(name = "received_date")
+  private Date receivedDate;
+
+  @Column(name = "finish_date")
+  private Date finishDate;
+
+  @Column(name = "refund_date")
+  private Date refundDate;
+
+  @Column(name = "syn_data")
+  private Integer synData;
+
+  @OneToMany(mappedBy = "diymallOrder", cascade = { CascadeType.REFRESH }, fetch = FetchType.EAGER)
+  private Set<DiymallOrderItem> diymallOrderItems;
+
+  public Long getId() {
+    return id;
+  }
+
+  public void setId(Long id) {
+    this.id = id;
+  }
+
+  public String getCode() {
+    return code;
+  }
+
+  public void setCode(String code) {
+    this.code = code;
+  }
+
+  public Integer getPayment() {
+    return payment;
+  }
+
+  public void setPayment(Integer payment) {
+    this.payment = payment;
+  }
+
+  public Integer getUserId() {
+    return userId;
+  }
+
+  public void setUserId(Integer userId) {
+    this.userId = userId;
+  }
+
+  public Integer getStatus() {
+    return status;
+  }
+
+  public void setStatus(Integer status) {
+    this.status = status;
+  }
+
+  public Integer getDisplay() {
+    return display;
+  }
+
+  public void setDisplay(Integer display) {
+    this.display = display;
+  }
+
+  public String getTakeName() {
+    return takeName;
+  }
+
+  public void setTakeName(String takeName) {
+    this.takeName = takeName;
+  }
+
+  public String getTakePhone() {
+    return takePhone;
+  }
+
+  public void setTakePhone(String takePhone) {
+    this.takePhone = takePhone;
+  }
+
+  public String getTakePostCode() {
+    return takePostCode;
+  }
+
+  public void setTakePostCode(String takePostCode) {
+    this.takePostCode = takePostCode;
+  }
+
+  public Integer getTakeAreaId() {
+    return takeAreaId;
+  }
+
+  public void setTakeAreaId(Integer takeAreaId) {
+    this.takeAreaId = takeAreaId;
+  }
+
+  public String getTakeAreaMsg() {
+    return takeAreaMsg;
+  }
+
+  public void setTakeAreaMsg(String takeAreaMsg) {
+    this.takeAreaMsg = takeAreaMsg;
+  }
+
+  public String getTakeAddress() {
+    return takeAddress;
+  }
+
+  public void setTakeAddress(String takeAddress) {
+    this.takeAddress = takeAddress;
+  }
+
+  public String getToBankNumber() {
+    return toBankNumber;
+  }
+
+  public void setToBankNumber(String toBankNumber) {
+    this.toBankNumber = toBankNumber;
+  }
+
+  public String getToBankName() {
+    return toBankName;
+  }
+
+  public void setToBankName(String toBankName) {
+    this.toBankName = toBankName;
+  }
+
+  public String getToBankType() {
+    return toBankType;
+  }
+
+  public void setToBankType(String toBankType) {
+    this.toBankType = toBankType;
+  }
+
+  public String getToBbankAddress() {
+    return toBbankAddress;
+  }
+
+  public void setToBbankAddress(String toBbankAddress) {
+    this.toBbankAddress = toBbankAddress;
+  }
+
+  public String getFromBankNumber() {
+    return fromBankNumber;
+  }
+
+  public void setFromBankNumber(String fromBankNumber) {
+    this.fromBankNumber = fromBankNumber;
+  }
+
+  public String getFromBankName() {
+    return fromBankName;
+  }
+
+  public void setFromBankName(String fromBankName) {
+    this.fromBankName = fromBankName;
+  }
+
+  public String getRemark() {
+    return remark;
+  }
+
+  public void setRemark(String remark) {
+    this.remark = remark;
+  }
+
+  public String getAdminRemark() {
+    return adminRemark;
+  }
+
+  public void setAdminRemark(String adminRemark) {
+    this.adminRemark = adminRemark;
+  }
+
+  public String getInvoiceName() {
+    return invoiceName;
+  }
+
+  public void setInvoiceName(String invoiceName) {
+    this.invoiceName = invoiceName;
+  }
+
+  public String getInvoiceNumber() {
+    return invoiceNumber;
+  }
+
+  public void setInvoiceNumber(String invoiceNumber) {
+    this.invoiceNumber = invoiceNumber;
+  }
+
+  public Integer getFreightId() {
+    return freightId;
+  }
+
+  public void setFreightId(Integer freightId) {
+    this.freightId = freightId;
+  }
+
+  public Double getFreightPrice() {
+    return freightPrice;
+  }
+
+  public void setFreightPrice(Double freightPrice) {
+    this.freightPrice = freightPrice;
+  }
+
+  public Double getSubtotal() {
+    return subtotal;
+  }
+
+  public void setSubtotal(Double subtotal) {
+    this.subtotal = subtotal;
+  }
+
+  public Double getGrandTotal() {
+    return grandTotal;
+  }
+
+  public void setGrandTotal(Double grandTotal) {
+    this.grandTotal = grandTotal;
+  }
+
+  public String getTrackingCode() {
+    return trackingCode;
+  }
+
+  public void setTrackingCode(String trackingCode) {
+    this.trackingCode = trackingCode;
+  }
+
+  public String getTrackingCompany() {
+    return trackingCompany;
+  }
+
+  public void setTrackingCompany(String trackingCompany) {
+    this.trackingCompany = trackingCompany;
+  }
+
+  public String getTrackingKdnCode() {
+    return trackingKdnCode;
+  }
+
+  public void setTrackingKdnCode(String trackingKdnCode) {
+    this.trackingKdnCode = trackingKdnCode;
+  }
+
+  public Integer getTrackingStatus() {
+    return trackingStatus;
+  }
+
+  public void setTrackingStatus(Integer trackingStatus) {
+    this.trackingStatus = trackingStatus;
+  }
+
+  public Date getTrackingUpdateDate() {
+    return trackingUpdateDate;
+  }
+
+  public void setTrackingUpdateDate(Date trackingUpdateDate) {
+    this.trackingUpdateDate = trackingUpdateDate;
+  }
+
+  public Date getCreateDate() {
+    return createDate;
+  }
+
+  public void setCreateDate(Date createDate) {
+    this.createDate = createDate;
+  }
+
+  public Date getPaymentDate() {
+    return paymentDate;
+  }
+
+  public void setPaymentDate(Date paymentDate) {
+    this.paymentDate = paymentDate;
+  }
+
+  public Date getTrackingDate() {
+    return trackingDate;
+  }
+
+  public void setTrackingDate(Date trackingDate) {
+    this.trackingDate = trackingDate;
+  }
+
+  public Date getReceivedDate() {
+    return receivedDate;
+  }
+
+  public void setReceivedDate(Date receivedDate) {
+    this.receivedDate = receivedDate;
+  }
+
+  public Date getFinishDate() {
+    return finishDate;
+  }
+
+  public void setFinishDate(Date finishDate) {
+    this.finishDate = finishDate;
+  }
+
+  public Date getRefundDate() {
+    return refundDate;
+  }
+
+  public void setRefundDate(Date refundDate) {
+    this.refundDate = refundDate;
+  }
+
+  public Integer getSynData() {
+    return synData;
+  }
+
+  public void setSynData(Integer synData) {
+    this.synData = synData;
+  }
+
+  public Set<DiymallOrderItem> getDiymallOrderItems() {
+    return diymallOrderItems;
+  }
+
+  public void setDiymallOrderItems(Set<DiymallOrderItem> diymallOrderItems) {
+    this.diymallOrderItems = diymallOrderItems;
+  }
+}

+ 194 - 0
src/main/java/com/diymall/schedule/model/DiymallOrderItem.java

@@ -0,0 +1,194 @@
+package com.diymall.schedule.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "db_orders_item")
+public class DiymallOrderItem {
+
+    @Id
+    @Column(name = "id")
+    private Integer id;
+
+    @Column(name = "orders_id")
+    private Integer ordersId;
+
+    /**
+     * 订单主记录
+     */
+    @ManyToOne(cascade = { CascadeType.REFRESH })
+    @JoinColumn(name = "orders_id", insertable = false, updatable = false)
+    private DiymallOrder diymallOrder;
+
+    @Column(name = "user_diy_id")
+    private Integer userDiyId;
+
+    @Column(name = "diy_title")
+    private String diyTitle;
+
+    @Column(name = "diy_remark")
+    private String diyRemark;
+
+    @Column(name = "diy_img_url")
+    private String diyImgUrl;
+
+    @Transient
+    private String diyContent;
+
+    @Column(name = "bottle_id")
+    private Integer bottleId;
+
+    @Column(name = "bottle_title")
+    private String bottleTitle;
+
+    @Column(name = "bottle_weight")
+    private Double bottleWeight;
+
+    @Column(name = "bottle_type_id")
+    private Integer bottleTypeId;
+
+    @Column(name = "bottle_type_title")
+    private String bottleTypeTitle;
+
+    @Column(name = "item_price")
+    private Double itemPrice;
+
+    @Column(name = "item_number")
+    private Integer itemNumber;
+
+    @Column(name = "subtotal")
+    private Double subtotal;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getOrdersId() {
+        return ordersId;
+    }
+
+    public void setOrdersId(Integer ordersId) {
+        this.ordersId = ordersId;
+    }
+
+    @JsonIgnore
+    @JSONField(serialize = false)
+    public DiymallOrder getDiymallOrder() {
+        return diymallOrder;
+    }
+
+    public void setDiymallOrder(DiymallOrder diymallOrder) {
+        this.diymallOrder = diymallOrder;
+    }
+
+    public Integer getUserDiyId() {
+        return userDiyId;
+    }
+
+    public void setUserDiyId(Integer userDiyId) {
+        this.userDiyId = userDiyId;
+    }
+
+    public String getDiyTitle() {
+        return diyTitle;
+    }
+
+    public void setDiyTitle(String diyTitle) {
+        this.diyTitle = diyTitle;
+    }
+
+    public String getDiyRemark() {
+        return diyRemark;
+    }
+
+    public void setDiyRemark(String diyRemark) {
+        this.diyRemark = diyRemark;
+    }
+
+    public String getDiyImgUrl() {
+        return diyImgUrl;
+    }
+
+    public void setDiyImgUrl(String diyImgUrl) {
+        this.diyImgUrl = diyImgUrl;
+    }
+
+    public String getDiyContent() {
+        return diyContent;
+    }
+
+    public void setDiyContent(String diyContent) {
+        this.diyContent = diyContent;
+    }
+
+    public Integer getBottleId() {
+        return bottleId;
+    }
+
+    public void setBottleId(Integer bottleId) {
+        this.bottleId = bottleId;
+    }
+
+    public String getBottleTitle() {
+        return bottleTitle;
+    }
+
+    public void setBottleTitle(String bottleTitle) {
+        this.bottleTitle = bottleTitle;
+    }
+
+    public Double getBottleWeight() {
+        return bottleWeight;
+    }
+
+    public void setBottleWeight(Double bottleWeight) {
+        this.bottleWeight = bottleWeight;
+    }
+
+    public Integer getBottleTypeId() {
+        return bottleTypeId;
+    }
+
+    public void setBottleTypeId(Integer bottleTypeId) {
+        this.bottleTypeId = bottleTypeId;
+    }
+
+    public String getBottleTypeTitle() {
+        return bottleTypeTitle;
+    }
+
+    public void setBottleTypeTitle(String bottleTypeTitle) {
+        this.bottleTypeTitle = bottleTypeTitle;
+    }
+
+    public Double getItemPrice() {
+        return itemPrice;
+    }
+
+    public void setItemPrice(Double itemPrice) {
+        this.itemPrice = itemPrice;
+    }
+
+    public Integer getItemNumber() {
+        return itemNumber;
+    }
+
+    public void setItemNumber(Integer itemNumber) {
+        this.itemNumber = itemNumber;
+    }
+
+    public Double getSubtotal() {
+        return subtotal;
+    }
+
+    public void setSubtotal(Double subtotal) {
+        this.subtotal = subtotal;
+    }
+}

+ 96 - 0
src/main/java/com/diymall/schedule/model/Enterprise.java

@@ -0,0 +1,96 @@
+/*CopyRright (c)2014: <www.usoftchina.com>
+ */
+package com.diymall.schedule.model;
+
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 可以从定制商城获取数据的企业信息
+ *
+ * @author huangct
+ */
+@Entity
+@Table(name = "enterprise")
+public class Enterprise implements Serializable {
+
+	/**
+	 * 序列号
+	 */
+	private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue(strategy= GenerationType.IDENTITY)
+	@Column(name = "en_uu")
+	private Long uu;
+
+	/**
+	 * 公司名称
+	 */
+	@NotNull
+	@Column(name = "en_name")
+	private String enName;
+
+	/**
+	 * 简称
+	 */
+	@Column(name = "en_shortname")
+	private String enShortname;
+
+	/**
+	 * 商业登记证号
+	 */
+	@Column(name = "en_businesscode")
+	private String enBussinessCode;
+
+	/**
+	 * 私钥
+	 */
+	@Column(name = "en_accesssecret")
+	private String accessSecret;
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Long getUu() {
+        return uu;
+    }
+
+    public void setUu(Long uu) {
+        this.uu = uu;
+    }
+
+    public String getEnName() {
+        return enName;
+    }
+
+    public void setEnName(String enName) {
+        this.enName = enName;
+    }
+
+    public String getEnShortname() {
+        return enShortname;
+    }
+
+    public void setEnShortname(String enShortname) {
+        this.enShortname = enShortname;
+    }
+
+    public String getEnBussinessCode() {
+        return enBussinessCode;
+    }
+
+    public void setEnBussinessCode(String enBussinessCode) {
+        this.enBussinessCode = enBussinessCode;
+    }
+
+    public String getAccessSecret() {
+        return accessSecret;
+    }
+
+    public void setAccessSecret(String accessSecret) {
+        this.accessSecret = accessSecret;
+    }
+}

+ 18 - 0
src/main/java/com/diymall/schedule/service/EnterpriseService.java

@@ -0,0 +1,18 @@
+package com.diymall.schedule.service;
+
+
+import com.diymall.schedule.model.Enterprise;
+
+/**
+ * Created by huangct on 2017-12-25.
+ */
+public interface EnterpriseService {
+
+    /**
+     * 通过企业UU号查询企业信息
+     *
+     * @param enuu
+     * @return
+     */
+    Enterprise findByEnuu(Long enuu);
+}

+ 25 - 0
src/main/java/com/diymall/schedule/service/LoanDownService.java

@@ -0,0 +1,25 @@
+package com.diymall.schedule.service;
+
+import com.diymall.schedule.model.DiymallOrder;
+
+import java.util.List;
+
+/**
+ * Created by hejq on 2017-11-24.
+ */
+public interface LoanDownService {
+
+    /**
+     * 通过下载状态下载数据
+     *
+     * @return
+     */
+    List<DiymallOrder> findByStatus(Integer status);
+
+    /**
+     * 通过id更新下载状态
+     *
+     * @param ids
+     */
+    void updateStatus(String ids);
+}

+ 19 - 0
src/main/java/com/diymall/schedule/service/impl/EnterpriseServiceImpl.java

@@ -0,0 +1,19 @@
+package com.diymall.schedule.service.impl;
+
+import com.diymall.schedule.data.EnterpriseRepository;
+import com.diymall.schedule.model.Enterprise;
+import com.diymall.schedule.service.EnterpriseService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class EnterpriseServiceImpl implements EnterpriseService {
+
+    @Autowired
+    private EnterpriseRepository enterpriseRepository;
+
+    @Override
+    public Enterprise findByEnuu(Long enuu) {
+        return enterpriseRepository.findOne(enuu);
+    }
+}

+ 35 - 0
src/main/java/com/diymall/schedule/service/impl/LoanDownServiceImpl.java

@@ -0,0 +1,35 @@
+package com.diymall.schedule.service.impl;
+
+import com.diymall.schedule.data.DiymallOrderRepository;
+import com.diymall.schedule.model.DiymallOrder;
+import com.diymall.schedule.service.LoanDownService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * Created by huangct on 2017-12-26.
+ */
+@Service
+public class LoanDownServiceImpl implements LoanDownService {
+
+    @Autowired
+    private DiymallOrderRepository diymallOrderRepository;
+
+    @Autowired
+    private JdbcTemplate jdbcTemplate;
+
+    @Override
+    public List<DiymallOrder> findByStatus(Integer status) {
+        List<DiymallOrder> diymallOrders = diymallOrderRepository.findDiymallOrders(status);
+        return diymallOrders;
+    }
+
+    @Override
+    public void updateStatus(String ids) {
+        jdbcTemplate.update("update db_orders set syn_data = 1 where id in(" + ids +")");
+    }
+
+}

+ 43 - 0
src/main/java/com/diymall/schedule/util/AgentUtils.java

@@ -0,0 +1,43 @@
+package com.diymall.schedule.util;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * Created by hejq on 2017-11-24.
+ */
+public class AgentUtils {
+    public AgentUtils() {
+    }
+
+    public static String getIp(HttpServletRequest request) {
+        String ipAddress = null;
+        ipAddress = request.getHeader("X-Forwarded-For");
+        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+            ipAddress = request.getHeader("Proxy-Client-IP");
+        }
+
+        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+            ipAddress = request.getHeader("WL-Proxy-Client-IP");
+        }
+
+        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+            ipAddress = request.getRemoteAddr();
+        }
+
+        if (ipAddress != null && ipAddress.length() > 15 && ipAddress.indexOf(",") > 0) {
+            ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
+        }
+
+        if (ipAddress != null && "0:0:0:0:0:0:0:1".equals(ipAddress)) {
+            ipAddress = "127.0.0.1";
+        }
+
+        return ipAddress;
+    }
+
+    public static String getHost(HttpServletRequest request) {
+        String url = request.getRequestURL().toString();
+        return url.substring(0, url.length() - request.getRequestURI().length()) + request.getContextPath() + "/";
+    }
+
+}

+ 19 - 0
src/main/java/com/diymall/schedule/util/CollectionUtils.java

@@ -0,0 +1,19 @@
+package com.diymall.schedule.util;
+
+import java.util.Collection;
+import java.util.Map;
+
+/**
+ * @author sunyj
+ * @since 2017年4月21日 下午9:43:31
+ */
+public class CollectionUtils {
+
+	public static boolean isEmpty(Collection<?> coll) {
+		return (coll == null || coll.isEmpty());
+	}
+
+	public static boolean isEmpty(Map<?, ?> map) {
+		return (map == null || map.isEmpty());
+	}
+}

+ 58 - 0
src/main/java/com/diymall/schedule/util/HmacEncoder.java

@@ -0,0 +1,58 @@
+package com.diymall.schedule.util;
+
+import javax.crypto.KeyGenerator;
+import javax.crypto.Mac;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.NoSuchAlgorithmException;
+
+/**
+ * Created by hejq on 2017-11-24.
+ */
+public class HmacEncoder {
+    private final String algorithm;
+
+    public HmacEncoder(String algorithm) {
+        this.algorithm = algorithm;
+    }
+
+    public byte[] getKey() {
+        KeyGenerator keyGenerator = null;
+
+        try {
+            keyGenerator = KeyGenerator.getInstance(this.algorithm);
+        } catch (NoSuchAlgorithmException var3) {
+            throw new RuntimeException(var3.getMessage());
+        }
+
+        SecretKey secretKey = keyGenerator.generateKey();
+        return secretKey.getEncoded();
+    }
+
+    private static Key toKey(byte[] key, String algorithm) {
+        return new SecretKeySpec(key, algorithm);
+    }
+
+    public byte[] encode(byte[] data, Key key) {
+        Mac mac = null;
+
+        try {
+            mac = Mac.getInstance(this.algorithm);
+            mac.init(key);
+        } catch (NoSuchAlgorithmException var5) {
+            var5.printStackTrace();
+            return new byte[0];
+        } catch (InvalidKeyException var6) {
+            var6.printStackTrace();
+            return new byte[0];
+        }
+
+        return mac.doFinal(data);
+    }
+
+    public byte[] encode(byte[] data, byte[] key) {
+        return this.encode(data, toKey(key, this.algorithm));
+    }
+}

+ 31 - 0
src/main/java/com/diymall/schedule/util/HmacUtils.java

@@ -0,0 +1,31 @@
+package com.diymall.schedule.util;
+
+import org.springframework.security.crypto.codec.Hex;
+
+/**
+ * Created by hejq on 2017-11-24.
+ */
+public class HmacUtils {
+
+    private static HmacEncoder hmacEncoder = new HmacSHA256Encoder();
+    private static final byte[] key = new byte[]{104, 116, 116, 112, 58, 47, 47, 119, 119, 119, 46, 117, 98, 116, 111, 98, 46, 99, 111, 109, 47, 101, 114, 112, 47, 115, 97, 108, 101, 47, 111, 114, 100, 101, 114, 115, 63, 115, 111, 109, 101, 116, 104, 105, 110, 103};
+
+    public HmacUtils() {
+    }
+
+    public static String encode(Object message) {
+        byte[] encodeData = hmacEncoder.encode(String.valueOf(message).getBytes(), key);
+        return new String(Hex.encode(encodeData));
+    }
+
+    public static String encode(Object message, String key) {
+        byte[] encodeData = hmacEncoder.encode(String.valueOf(message).getBytes(), key.getBytes());
+        return new String(Hex.encode(encodeData));
+    }
+
+    private static class HmacSHA256Encoder extends HmacEncoder {
+        public HmacSHA256Encoder() {
+            super("HmacSHA256");
+        }
+    }
+}

+ 16 - 0
src/main/resources/application-dev.yml

@@ -0,0 +1,16 @@
+server:
+  port: 20215
+
+spring:
+  jpa:
+    properties:
+      hibernate:
+#        hbm2ddl:
+#          auto: update
+        dialect: org.hibernate.dialect.MySQL5Dialect
+    open-in-view: false
+  datasource:
+    url: jdbc:mysql://14.116.191.225:3306/zhongfudingzhi?characterEncoding=utf-8
+    username: root
+    password: zfdzZFDZ2017
+    driver-class-name: com.mysql.jdbc.Driver

+ 16 - 0
src/main/resources/application-prod.yml

@@ -0,0 +1,16 @@
+server:
+  port: 20215
+
+spring:
+  jpa:
+    properties:
+      hibernate:
+        hbm2ddl:
+          auto: update
+        dialect: org.hibernate.dialect.MySQL5Dialect
+    open-in-view: false
+  datasource:
+    url: jdbc:mysql://14.116.191.225:3306/zhongfudingzhi?characterEncoding=utf-8
+    username: root
+    password: zfdzZFDZ2017
+    driver-class-name: com.mysql.jdbc.Driver

+ 16 - 0
src/main/resources/application-test.yml

@@ -0,0 +1,16 @@
+server:
+  port: 20215
+
+spring:
+  jpa:
+    properties:
+      hibernate:
+        hbm2ddl:
+          auto: update
+        dialect: org.hibernate.dialect.MySQL5Dialect
+    open-in-view: false
+  datasource:
+    url: jdbc:mysql://14.116.191.225:3306/zhongfudingzhi?characterEncoding=utf-8
+    username: root
+    password: zfdzZFDZ2017
+    driver-class-name: com.mysql.jdbc.Driver

+ 5 - 0
src/main/resources/application.yml

@@ -0,0 +1,5 @@
+spring:
+  application:
+    name: diymall-schedule
+  profiles:
+    active: prod