瀏覽代碼

‘宁夏手机即时通信项目提交’

shilin 4 年之前
當前提交
59eb78f735
共有 100 個文件被更改,包括 54863 次插入0 次删除
  1. 17 0
      .gitignore
  2. 13 0
      .settings/.jsdtscope
  3. 5 0
      .settings/org.eclipse.core.resources.prefs
  4. 8 0
      .settings/org.eclipse.jdt.core.prefs
  5. 4 0
      .settings/org.eclipse.m2e.core.prefs
  6. 10 0
      .settings/org.eclipse.wst.common.component
  7. 7 0
      .settings/org.eclipse.wst.common.project.facet.core.xml
  8. 1 0
      .settings/org.eclipse.wst.jsdt.ui.superType.container
  9. 1 0
      .settings/org.eclipse.wst.jsdt.ui.superType.name
  10. 2 0
      .settings/org.eclipse.wst.validation.prefs
  11. 191 0
      LICENSE
  12. 194 0
      README.md
  13. 710 0
      doc/gyee_frame.sql
  14. 3719 0
      doc/t_sys_area.sql
  15. 431 0
      doc/t_sys_city.sql
  16. 74 0
      doc/t_sys_province.sql
  17. 42401 0
      doc/t_sys_street.sql
  18. 225 0
      mvnw
  19. 143 0
      mvnw.cmd
  20. 494 0
      pom.xml
  21. 199 0
      src/main/java/com/gyee/MpGenerator.java
  22. 25 0
      src/main/java/com/gyee/SpringbootStart.java
  23. 19 0
      src/main/java/com/gyee/SpringbootWebInitializer.java
  24. 188 0
      src/main/java/com/gyee/SqlSeverTicket.java
  25. 75 0
      src/main/java/com/gyee/frame/aspect/VerificationAspect.java
  26. 160 0
      src/main/java/com/gyee/frame/common/base/BaseController.java
  27. 33 0
      src/main/java/com/gyee/frame/common/base/BaseService.java
  28. 268 0
      src/main/java/com/gyee/frame/common/base/PageInfo.java
  29. 21 0
      src/main/java/com/gyee/frame/common/conf/DevelopMentPropsConfig.java
  30. 27 0
      src/main/java/com/gyee/frame/common/conf/ExceptJobConfig.java
  31. 25 0
      src/main/java/com/gyee/frame/common/conf/GoldenConfig.java
  32. 42 0
      src/main/java/com/gyee/frame/common/conf/ImgConfiguration.java
  33. 72 0
      src/main/java/com/gyee/frame/common/conf/KaptchaConfig.java
  34. 80 0
      src/main/java/com/gyee/frame/common/conf/MongodbConfig.java
  35. 119 0
      src/main/java/com/gyee/frame/common/conf/MybatisConfig.java
  36. 36 0
      src/main/java/com/gyee/frame/common/conf/PageHelperConf.java
  37. 82 0
      src/main/java/com/gyee/frame/common/conf/RedisConfig.java
  38. 59 0
      src/main/java/com/gyee/frame/common/conf/Swagger.java
  39. 10 0
      src/main/java/com/gyee/frame/common/conf/UserLoginContext.java
  40. 193 0
      src/main/java/com/gyee/frame/common/conf/V2Config.java
  41. 109 0
      src/main/java/com/gyee/frame/common/conf/redis/CacheConfig.java
  42. 20 0
      src/main/java/com/gyee/frame/common/conf/redis/CacheContext.java
  43. 66 0
      src/main/java/com/gyee/frame/common/conf/redis/Constant.java
  44. 21 0
      src/main/java/com/gyee/frame/common/dataSources/DataSource.java
  45. 77 0
      src/main/java/com/gyee/frame/common/dataSources/DataSourceAspect.java
  46. 50 0
      src/main/java/com/gyee/frame/common/dataSources/DataSourceContextHolder.java
  47. 13 0
      src/main/java/com/gyee/frame/common/dataSources/DataSourceType.java
  48. 27 0
      src/main/java/com/gyee/frame/common/dataSources/DynamicDataSource.java
  49. 111 0
      src/main/java/com/gyee/frame/common/domain/AjaxResult.java
  50. 80 0
      src/main/java/com/gyee/frame/common/druid/RemoveDruidAdConfig.java
  51. 131 0
      src/main/java/com/gyee/frame/common/exception/GlobalExceptionResolver.java
  52. 65 0
      src/main/java/com/gyee/frame/common/exception/QiNiuException.java
  53. 37 0
      src/main/java/com/gyee/frame/common/exception/TicketException.java
  54. 17 0
      src/main/java/com/gyee/frame/common/exception/demo/DemoModeException.java
  55. 52 0
      src/main/java/com/gyee/frame/common/exception/enums/QiNiuErrorEnum.java
  56. 41 0
      src/main/java/com/gyee/frame/common/exception/file/FileNameLengthLimitExceededException.java
  57. 73 0
      src/main/java/com/gyee/frame/common/exception/file/InvalidExtensionException.java
  58. 181 0
      src/main/java/com/gyee/frame/common/file/FileUploadUtils.java
  59. 114 0
      src/main/java/com/gyee/frame/common/file/FileUtils.java
  60. 174 0
      src/main/java/com/gyee/frame/common/interceptor/MyInterceptor.java
  61. 124 0
      src/main/java/com/gyee/frame/common/interceptor/MyWebAppConfigurer.java
  62. 31 0
      src/main/java/com/gyee/frame/common/log/Log.java
  63. 186 0
      src/main/java/com/gyee/frame/common/log/LogAspect.java
  64. 104 0
      src/main/java/com/gyee/frame/common/quartz/AbstractQuartzJob.java
  65. 29 0
      src/main/java/com/gyee/frame/common/quartz/QuartzConfig.java
  66. 23 0
      src/main/java/com/gyee/frame/common/quartz/QuartzDisallowConcurrentExecution.java
  67. 22 0
      src/main/java/com/gyee/frame/common/quartz/QuartzJobExecution.java
  68. 313 0
      src/main/java/com/gyee/frame/common/quartz/QuartzSchedulerUtil.java
  69. 66 0
      src/main/java/com/gyee/frame/common/quartz/ScheduleConstants.java
  70. 90 0
      src/main/java/com/gyee/frame/common/quartz/SocketTaskUtil.java
  71. 35 0
      src/main/java/com/gyee/frame/common/quartz/task/BraceletPushTask.java
  72. 51 0
      src/main/java/com/gyee/frame/common/quartz/task/Index_target_comprehensive_indicators.java
  73. 43 0
      src/main/java/com/gyee/frame/common/quartz/task/Index_windSpeed_power_target_detail.java
  74. 43 0
      src/main/java/com/gyee/frame/common/quartz/task/Targetdetail_curve.java
  75. 43 0
      src/main/java/com/gyee/frame/common/quartz/task/Targetdetail_histogram.java
  76. 46 0
      src/main/java/com/gyee/frame/common/quartz/task/Targetdetail_target.java
  77. 41 0
      src/main/java/com/gyee/frame/common/quartz/task/V2Task.java
  78. 49 0
      src/main/java/com/gyee/frame/common/quartz/task/WeatherfdPushTask_1.java
  79. 44 0
      src/main/java/com/gyee/frame/common/quartz/task/WeatherfdPushTask_40.java
  80. 50 0
      src/main/java/com/gyee/frame/common/quartz/task/WeatherfdPushTask_7.java
  81. 49 0
      src/main/java/com/gyee/frame/common/quartz/task/WeatherfdPushTask_8_15.java
  82. 52 0
      src/main/java/com/gyee/frame/common/quartz/task/WeatherfhPushTask_7Day_17Hour.java
  83. 45 0
      src/main/java/com/gyee/frame/common/quartz/task/Windpowerstationdetail_comprehensive_target.java
  84. 42 0
      src/main/java/com/gyee/frame/common/quartz/task/Windpowerstationdetail_sevendaycolumn_target.java
  85. 42 0
      src/main/java/com/gyee/frame/common/quartz/task/Windpowerstationdetail_springbox_target.java
  86. 46 0
      src/main/java/com/gyee/frame/common/quartz/task/Windpowerstationdetail_twentyfourhourlinechart_target.java
  87. 41 0
      src/main/java/com/gyee/frame/common/quartz/task/index_curve_columnar_five_loss.java
  88. 42 0
      src/main/java/com/gyee/frame/common/quartz/task/index_curve_columnar_windSpeed_power.java
  89. 47 0
      src/main/java/com/gyee/frame/common/quartz/task/index_electricQuantity.java
  90. 47 0
      src/main/java/com/gyee/frame/common/quartz/task/index_target_basic_indicators.java
  91. 51 0
      src/main/java/com/gyee/frame/common/quartz/task/index_target_windSpeed_power.java
  92. 41 0
      src/main/java/com/gyee/frame/common/quartz/task/index_windStation_card.java
  93. 51 0
      src/main/java/com/gyee/frame/common/quartz/task/index_windturbine_status.java
  94. 41 0
      src/main/java/com/gyee/frame/common/quartz/task/monitor_target_matrixMonitor.java
  95. 191 0
      src/main/java/com/gyee/frame/common/quartz/utils/JobInvokeUtil.java
  96. 321 0
      src/main/java/com/gyee/frame/common/spring/Constant.java
  97. 234 0
      src/main/java/com/gyee/frame/common/spring/InitialRunner.java
  98. 116 0
      src/main/java/com/gyee/frame/common/spring/SpringUtils.java
  99. 89 0
      src/main/java/com/gyee/frame/common/support/CharsetKit.java
  100. 0 0
      src/main/java/com/gyee/frame/common/support/Convert.java

+ 17 - 0
.gitignore

@@ -0,0 +1,17 @@
+*.class
+**/target
+**/webapp/userfiles
+**/WEB-INF/classes
+**/logs/log*.log
+
+.classpath
+.project
+
+.idea
+*.ipr
+*.iml
+*.iws
+*.lic
+rebel.xml
+/.factorypath
+/.springBeans

+ 13 - 0
.settings/.jsdtscope

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/main/webapp"/>
+	<classpathentry excluding="**/bower_components/*|**/node_modules/*|**/*.min.js" kind="src" path="target/m2e-wtp/web-resources"/>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
+		<attributes>
+			<attribute name="hide" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
+	<classpathentry kind="output" path=""/>
+</classpath>

+ 5 - 0
.settings/org.eclipse.core.resources.prefs

@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/main/resources=UTF-8
+encoding//src/test/java=UTF-8
+encoding/<project>=UTF-8

+ 8 - 0
.settings/org.eclipse.jdt.core.prefs

@@ -0,0 +1,8 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.8

+ 4 - 0
.settings/org.eclipse.m2e.core.prefs

@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1

+ 10 - 0
.settings/org.eclipse.wst.common.component

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
+    <wb-module deploy-name="springboot_v2-3.4">
+        <wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
+        <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
+        <property name="context-root" value="springboot_v2"/>
+        <property name="java-output-path" value="/Springboot_v2-master/target/classes"/>
+    </wb-module>
+</project-modules>

+ 7 - 0
.settings/org.eclipse.wst.common.project.facet.core.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+  <fixed facet="wst.jsdt.web"/>
+  <installed facet="java" version="1.8"/>
+  <installed facet="jst.web" version="3.1"/>
+  <installed facet="wst.jsdt.web" version="1.0"/>
+</faceted-project>

+ 1 - 0
.settings/org.eclipse.wst.jsdt.ui.superType.container

@@ -0,0 +1 @@
+org.eclipse.wst.jsdt.launching.baseBrowserLibrary

+ 1 - 0
.settings/org.eclipse.wst.jsdt.ui.superType.name

@@ -0,0 +1 @@
+Window

+ 2 - 0
.settings/org.eclipse.wst.validation.prefs

@@ -0,0 +1,2 @@
+disabled=06target
+eclipse.preferences.version=1

+ 191 - 0
LICENSE

@@ -0,0 +1,191 @@
+Apache License
+Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and
+distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright
+owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities
+that control, are controlled by, or are under common control with that entity.
+For the purposes of this definition, "control" means (i) the power, direct or
+indirect, to cause the direction or management of such entity, whether by
+contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
+outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising
+permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including
+but not limited to software source code, documentation source, and configuration
+files.
+
+"Object" form shall mean any form resulting from mechanical transformation or
+translation of a Source form, including but not limited to compiled object code,
+generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made
+available under the License, as indicated by a copyright notice that is included
+in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that
+is based on (or derived from) the Work and for which the editorial revisions,
+annotations, elaborations, or other modifications represent, as a whole, an
+original work of authorship. For the purposes of this License, Derivative Works
+shall not include works that remain separable from, or merely link (or bind by
+name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version
+of the Work and any modifications or additions to that Work or Derivative Works
+thereof, that is intentionally submitted to Licensor for inclusion in the Work
+by the copyright owner or by an individual or Legal Entity authorized to submit
+on behalf of the copyright owner. For the purposes of this definition,
+"submitted" means any form of electronic, verbal, or written communication sent
+to the Licensor or its representatives, including but not limited to
+communication on electronic mailing lists, source code control systems, and
+issue tracking systems that are managed by, or on behalf of, the Licensor for
+the purpose of discussing and improving the Work, but excluding communication
+that is conspicuously marked or otherwise designated in writing by the copyright
+owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
+of whom a Contribution has been received by Licensor and subsequently
+incorporated within the Work.
+
+2. Grant of Copyright License.
+
+Subject to the terms and conditions of this License, each Contributor hereby
+grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+irrevocable copyright license to reproduce, prepare Derivative Works of,
+publicly display, publicly perform, sublicense, and distribute the Work and such
+Derivative Works in Source or Object form.
+
+3. Grant of Patent License.
+
+Subject to the terms and conditions of this License, each Contributor hereby
+grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+irrevocable (except as stated in this section) patent license to make, have
+made, use, offer to sell, sell, import, and otherwise transfer the Work, where
+such license applies only to those patent claims licensable by such Contributor
+that are necessarily infringed by their Contribution(s) alone or by combination
+of their Contribution(s) with the Work to which such Contribution(s) was
+submitted. If You institute patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Work or a
+Contribution incorporated within the Work constitutes direct or contributory
+patent infringement, then any patent licenses granted to You under this License
+for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution.
+
+You may reproduce and distribute copies of the Work or Derivative Works thereof
+in any medium, with or without modifications, and in Source or Object form,
+provided that You meet the following conditions:
+
+You must give any other recipients of the Work or Derivative Works a copy of
+this License; and
+You must cause any modified files to carry prominent notices stating that You
+changed the files; and
+You must retain, in the Source form of any Derivative Works that You distribute,
+all copyright, patent, trademark, and attribution notices from the Source form
+of the Work, excluding those notices that do not pertain to any part of the
+Derivative Works; and
+If the Work includes a "NOTICE" text file as part of its distribution, then any
+Derivative Works that You distribute must include a readable copy of the
+attribution notices contained within such NOTICE file, excluding those notices
+that do not pertain to any part of the Derivative Works, in at least one of the
+following places: within a NOTICE text file distributed as part of the
+Derivative Works; within the Source form or documentation, if provided along
+with the Derivative Works; or, within a display generated by the Derivative
+Works, if and wherever such third-party notices normally appear. The contents of
+the NOTICE file are for informational purposes only and do not modify the
+License. You may add Your own attribution notices within Derivative Works that
+You distribute, alongside or as an addendum to the NOTICE text from the Work,
+provided that such additional attribution notices cannot be construed as
+modifying the License.
+You may add Your own copyright statement to Your modifications and may provide
+additional or different license terms and conditions for use, reproduction, or
+distribution of Your modifications, or for any such Derivative Works as a whole,
+provided Your use, reproduction, and distribution of the Work otherwise complies
+with the conditions stated in this License.
+
+5. Submission of Contributions.
+
+Unless You explicitly state otherwise, any Contribution intentionally submitted
+for inclusion in the Work by You to the Licensor shall be under the terms and
+conditions of this License, without any additional terms or conditions.
+Notwithstanding the above, nothing herein shall supersede or modify the terms of
+any separate license agreement you may have executed with Licensor regarding
+such Contributions.
+
+6. Trademarks.
+
+This License does not grant permission to use the trade names, trademarks,
+service marks, or product names of the Licensor, except as required for
+reasonable and customary use in describing the origin of the Work and
+reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty.
+
+Unless required by applicable law or agreed to in writing, Licensor provides the
+Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
+including, without limitation, any warranties or conditions of TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
+solely responsible for determining the appropriateness of using or
+redistributing the Work and assume any risks associated with Your exercise of
+permissions under this License.
+
+8. Limitation of Liability.
+
+In no event and under no legal theory, whether in tort (including negligence),
+contract, or otherwise, unless required by applicable law (such as deliberate
+and grossly negligent acts) or agreed to in writing, shall any Contributor be
+liable to You for damages, including any direct, indirect, special, incidental,
+or consequential damages of any character arising as a result of this License or
+out of the use or inability to use the Work (including but not limited to
+damages for loss of goodwill, work stoppage, computer failure or malfunction, or
+any and all other commercial damages or losses), even if such Contributor has
+been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability.
+
+While redistributing the Work or Derivative Works thereof, You may choose to
+offer, and charge a fee for, acceptance of support, warranty, indemnity, or
+other liability obligations and/or rights consistent with this License. However,
+in accepting such obligations, You may act only on Your own behalf and on Your
+sole responsibility, not on behalf of any other Contributor, and only if You
+agree to indemnify, defend, and hold each Contributor harmless for any liability
+incurred by, or claims asserted against, such Contributor by reason of your
+accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work
+
+To apply the Apache License to your work, attach the following boilerplate
+notice, with the fields enclosed by brackets "{}" replaced with your own
+identifying information. (Don't include the brackets!) The text should be
+enclosed in the appropriate comment syntax for the file format. We also
+recommend that a file or class name and description of purpose be included on
+the same "printed page" as the copyright notice for easier identification within
+third-party archives.
+
+   Copyright 2018 gyee
+
+   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
+
+     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.

+ 194 - 0
README.md

@@ -0,0 +1,194 @@
+
+
+### 组织架构
+
+```
+Springboot
+├─doc  项目SQL语句以及文档
+│
+├─common 公共模块
+│  ├─base Base继承通用类
+│  ├─conf springBoot所有配置
+│  ├─domain 前台返回包
+│  ├─druid druid连接池
+│  ├─exception 异常处理包
+│  ├─file 文件上传
+│  ├─interceptor 拦截器
+│  ├─log 日志记录AOP
+│  ├─domain 前台返回包
+│  ├─quartz Spring定时器
+│  └─support 工具包
+│
+├─controller 请求访问模块
+│  ├─admin 模版后台请求包
+│  ├─websocket websoket消息请求
+│  └─HomeController.java 首页访问类
+│
+├─Mapper Dao模块
+│  ├─auto mybatis-generator.xml自动生成Dao
+│  └─custom 自定义Dao
+│
+├─Model 实体类模块
+│  ├─auto mybatis-generator.xml自动生成实体包
+│  └─custom 自定义实体
+│
+├─Service 服务层模块[没写抽象模块,因为我觉得没什么用,可能我能力不足]
+│
+├─shiro 权限模块
+│  ├─config shiro配置
+│  ├─service shiro服务层
+│  └─util shiro通用方法
+│
+├─util 工具模块
+│
+├─SpringbootSwagger2Application 启动类
+│ 
+├─SpringbootWebInitializer tomcat启动类
+│
+├─test 测试类
+│
+├─resources 配置文件夹
+│  ├─ehcache shiro权限缓存配置
+│  ├─generator 自动生成模板以及配置目录
+│  │   ├─MyBatisGenerator mybates半自动生成工具
+│  │   │   ├─1.bat 执行批处理
+│  │   │   ├─generator.xml generator配置文件
+│  │   │   ├─mybatis-generator-core-1.3.2.jar generator1.3.2版本
+│  │   │   ├─mybatis-generator-core-1.3.7.jar generator1.3.7版本【默认】
+│  │   │   └─mysqldriver.jar mysql驱动【该驱动为8.0一下的版本不支持8.0自行替换】
+│  │   │
+│  │   ├─template 模板文件假
+│  │   │   ├─controller anction模板
+│  │   │   ├─html html页面模板
+│  │   │   ├─mapper dao模板
+│  │   │   ├─mapperxml daoxml模板
+│  │   │   ├─model 实体模板
+│  │   │   ├─service service模板
+│  │   │   └─sql sql模板
+│  │   │
+│  │   └─generator.properties 自动生成配置文件
+│  │
+│  ├─mybatis mybatis Mapper.xml生成文件夹
+│  │   ├─auto自动生成的Mapper.xml文件夹
+│  │   └─custom 手写Mapper.xml文件夹
+│  │
+│  ├─static 静态文件存放文件夹[后台模版就放在此文件夹下面。所有的模版页面都在下面]
+│  │   ├─admin 后台目录存放
+│  │   │  ├─assets js、css存放路径
+│  │   │  ├─assets js、css存放路径
+│  │   │  └─bootstarp 后台模板存放路径
+│  │   ├─js js存放
+│  │   └─login 登录页面js、css、image
+│  │
+│  ├─templates 前台HTML存放文件夹
+│  │   ├─admin 动态后台html模板
+│  │   ├─error 错误页面html模板
+│  │   └─login.html 登录html页面
+│  │
+│  ├─application-dev.yml 开发环境配置
+│  ├─application-prod.yml 生产环境配置
+│  ├─application.yml springboot配置
+│  ├─banner1.txt springboot 启动动画
+│  ├─logback.xml log4j配置文件
+│  └─mybatis-generator.xml mybates自动生成 xml、dao、model
+│  
+└─pom.xml   maven.xml
+
+
+```
+
+###技术选项
+
+技术|名称|官网|备注
+---|---|---|---
+springboot|springboot框架 ||
+Apache Shiro|权限框架||
+MyBatis Generator|代码生成||
+PageHelper|MyBatis物理分页插件||
+hikari|数据库连接池||
+Thymeleaf|模板引擎||
+Log4J|日志组件||
+Swagger2|接口测试框架||
+Maven|项目构建管理||
+Websocket|websocket消息通知||
+velocity|模板引擎||
+kaptcha|google验证码||
+devtools|热部署||
+GSON|谷歌json||
+druid|阿里连接池||
+quartz|定时框架||
+
+
+
+
+### 前端技术
+技术|名称|官网|备注
+---|---|---|---
+jQuery|函式库 || 
+bootstrap|前端页面框架||
+Font-awesome|字体图标||
+jquery.validate|jquery验证插件||
+vue|渐进式框架||
+ladda.min.js|按钮加载js||
+bootstrap-table|表格组件||
+layer.js|弹窗组件||
+jquery.blockUI.js|遮蔽层组件||
+bootstrap-table-export.js|前台导出组件||
+bootstrap-treeview|树结构组件||
+bootstrap-colorpicker|颜色组件||
+dropzone|文件上传||
+bootstrap-wysihtml5|富文本||
+bootstrap-switch|开关按钮||
+UEditor|百度富文本||
+
+### jar版本
+
+| 名称       | 版本          | 备注 |
+|------------|---------------|------|
+| springBoot | 2.0.0.RELEASE |      |
+| mybatis-spring 1.3.2 | 1.3.2         |      |
+| swagger2   | 2.7.0         |      |
+| swagger-ui | 2.7.0         |      |
+| gson       | 2.8.2         |      |
+| pagehelper | 4.1.4         |      |
+| mysql|5.1.40 OR   8.0.11      |      |
+| shiro|1.4.0         |      |
+| thymeleaf-extras-shiro|2.0.0         |      |
+| thymeleaf|2.0.0.RELEASE         |      |
+| commons-lang3|  3.7       |      |
+| commons-lang|2.4         |      |
+| commons-io|2.5         |      |
+| commons-fileupload|1.3.3         |      |
+| spring-boot-devtools|2.0.0.RELEASE         |      |
+| hutool| 4.1.10        |      |
+| druid| 1.1.10        |      |
+| kaptcha| 2.3.2        |      |
+| velocity| 1.7        |      |
+
+### 开发环境
+- JDK8.0
+- mysql5.7以上
+- eclipse
+
+### 资源下载
+- JDK8 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
+- Maven http://maven.apache.org/download.cgi
+
+
+### 部署流程
+1. 导入doc文件夹里面的gyee_frame.sql到数据库
+2. 确认自己的mysql版本 进行修改jar  在pom.xml 73-84行
+3. 修改application-dev.yml 里面自己数据库版本对应的jdbc链接
+4. 正常启动run SpringbootSwagger2Application.java
+
+
+### 打包发布编译流程
+- maven编译安装pom.xml文件即可打包成war
+
+### 登陆地址
+
+- 本地 http://localhost:8080   默认帐号密码: admin/admin
+- swagger  http://localhost:8080/swagger-ui.html
+
+### 启动类
+- SpringbootStart 启动类

+ 710 - 0
doc/gyee_frame.sql

@@ -0,0 +1,710 @@
+/*
+Navicat MySQL Data Transfer
+
+Source Server         : 127.0.0.1_3306
+Source Server Version : 50725
+Source Host           : 127.0.0.1:3306
+Source Database       : gyee
+
+Target Server Type    : MYSQL
+Target Server Version : 50725
+File Encoding         : 65001
+
+Date: 2019-11-21 00:26:22
+*/
+
+SET FOREIGN_KEY_CHECKS=0;
+
+-- ----------------------------
+-- Table structure for t_sys_area
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_area`;
+CREATE TABLE `t_sys_area` (
+  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增列',
+  `area_code` varchar(40) NOT NULL COMMENT '区代码',
+  `city_code` varchar(40) DEFAULT NULL COMMENT '父级市代码',
+  `area_name` varchar(40) NOT NULL COMMENT '市名称',
+  `short_name` varchar(20) NOT NULL COMMENT '简称',
+  `lng` varchar(20) DEFAULT NULL COMMENT '经度',
+  `lat` varchar(20) DEFAULT NULL COMMENT '纬度',
+  `sort` int(6) DEFAULT NULL COMMENT '排序',
+  `gmt_create` datetime DEFAULT NULL COMMENT '创建时间',
+  `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+  `memo` varchar(250) DEFAULT NULL COMMENT '备注',
+  `data_state` int(11) DEFAULT NULL COMMENT '状态',
+  PRIMARY KEY (`id`),
+  KEY `Index_1` (`area_code`)
+) ENGINE=InnoDB AUTO_INCREMENT=2013 DEFAULT CHARSET=utf8 COMMENT='地区设置';
+
+-- ----------------------------
+-- Records of t_sys_area
+-- ----------------------------
+INSERT INTO `t_sys_area` VALUES ('1975', '500101', '500100', '万州区', '万州', '108.380249', '30.807808', '28', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1976', '500102', '500100', '涪陵区', '涪陵', '107.394905', '29.703651', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1977', '500103', '500100', '渝中区', '渝中', '106.562881', '29.556742', '37', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1978', '500104', '500100', '大渡口区', '大渡口', '106.48613', '29.481003', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1979', '500105', '500100', '江北区', '江北', '106.532845', '29.575352', '13', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1980', '500106', '500100', '沙坪坝区', '沙坪坝', '106.454201', '29.541224', '24', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1981', '500107', '500100', '九龙坡区', '九龙坡', '106.480988', '29.523493', '15', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1982', '500108', '500100', '南岸区', '南岸', '106.560814', '29.523993', '18', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1983', '500109', '500100', '北碚区', '北碚', '106.437866', '29.82543', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1984', '500112', '500100', '渝北区', '渝北', '106.512848', '29.601452', '35', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1985', '500113', '500100', '巴南区', '巴南', '106.519424', '29.38192', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1986', '500114', '500100', '黔江区', '黔江', '108.782578', '29.527548', '21', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1987', '500115', '500100', '长寿区', '长寿', '107.074852', '29.833672', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1988', '500222', '500100', '綦江区', '綦江', '106.651421', '29.028091', '22', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1989', '500223', '500100', '潼南县', '潼南', '105.84182', '30.189554', '27', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1990', '500224', '500100', '铜梁县', '铜梁', '106.054947', '29.839945', '26', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1991', '500225', '500100', '大足区', '大足', '105.715317', '29.700499', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1992', '500226', '500100', '荣昌县', '荣昌', '105.594063', '29.403627', '23', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1993', '500227', '500100', '璧山县', '璧山', '106.231125', '29.59358', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1994', '500228', '500100', '梁平县', '梁平', '107.800034', '30.672169', '17', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1995', '500229', '500100', '城口县', '城口', '108.664902', '31.946293', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1996', '500230', '500100', '丰都县', '丰都', '107.732483', '29.866425', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1997', '500231', '500100', '垫江县', '垫江', '107.348694', '30.330011', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1998', '500232', '500100', '武隆县', '武隆', '107.756554', '29.323759', '29', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('1999', '500233', '500100', '忠县', '忠县', '108.037521', '30.291536', '38', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('2000', '500234', '500100', '开县', '开县', '108.413315', '31.167734', '16', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('2001', '500235', '500100', '云阳县', '云阳', '108.697701', '30.930529', '36', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('2002', '500236', '500100', '奉节县', '奉节', '109.465775', '31.019966', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('2003', '500237', '500100', '巫山县', '巫山', '109.878929', '31.074842', '30', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('2004', '500238', '500100', '巫溪县', '巫溪', '109.628914', '31.396601', '31', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('2005', '500240', '500100', '石柱土家族自治县', '石柱', '108.11245', '29.998529', '25', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('2006', '500241', '500100', '秀山土家族苗族自治县', '秀山', '108.99604', '28.444773', '32', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('2007', '500242', '500100', '酉阳土家族苗族自治县', '酉阳', '108.767204', '28.839828', '34', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('2008', '500243', '500100', '彭水苗族土家族自治县', '彭水', '108.16655', '29.293856', '20', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('2009', '500381', '500100', '江津区', '江津', '106.253159', '29.283386', '14', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('2010', '500382', '500100', '合川区', '合川', '106.265556', '29.990993', '12', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('2011', '500383', '500100', '永川区', '永川', '105.894714', '29.348747', '33', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_area` VALUES ('2012', '500384', '500100', '南川区', '南川', '107.098152', '29.156647', '19', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+
+-- ----------------------------
+-- Table structure for t_sys_city
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_city`;
+CREATE TABLE `t_sys_city` (
+  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增列',
+  `city_code` varchar(40) NOT NULL COMMENT '市代码',
+  `city_name` varchar(40) NOT NULL COMMENT '市名称',
+  `short_name` varchar(20) NOT NULL COMMENT '简称',
+  `province_code` varchar(40) DEFAULT NULL COMMENT '省代码',
+  `lng` varchar(20) DEFAULT NULL COMMENT '经度',
+  `lat` varchar(20) DEFAULT NULL COMMENT '纬度',
+  `sort` int(6) DEFAULT NULL COMMENT '排序',
+  `gmt_create` datetime DEFAULT NULL COMMENT '创建时间',
+  `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+  `memo` varchar(250) DEFAULT NULL COMMENT '备注',
+  `data_state` int(11) DEFAULT NULL COMMENT '状态',
+  PRIMARY KEY (`id`),
+  KEY `Index_1` (`city_code`)
+) ENGINE=InnoDB AUTO_INCREMENT=256 DEFAULT CHARSET=utf8 COMMENT='城市设置';
+
+-- ----------------------------
+-- Records of t_sys_city
+-- ----------------------------
+INSERT INTO `t_sys_city` VALUES ('255', '500100', '重庆市', '重庆', '500000', '106.504959', '29.533155', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+
+-- ----------------------------
+-- Table structure for t_sys_datas
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_datas`;
+CREATE TABLE `t_sys_datas` (
+  `id` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '主键',
+  `file_path` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '文件地址',
+  `file_suffix` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '后缀',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='文件表存储表';
+
+-- ----------------------------
+-- Records of t_sys_datas
+-- ----------------------------
+INSERT INTO `t_sys_datas` VALUES ('354984152409444352', 'static/images_upload/655e075657837d5f18a8371b66b8a230.jpg', '.jpg');
+
+-- ----------------------------
+-- Table structure for t_sys_dict_data
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_dict_data`;
+CREATE TABLE `t_sys_dict_data` (
+  `id` varchar(255) NOT NULL COMMENT '主键',
+  `dict_sort` int(4) DEFAULT '0' COMMENT '字典排序',
+  `dict_label` varchar(100) DEFAULT '' COMMENT '字典标签',
+  `dict_value` varchar(100) DEFAULT '' COMMENT '字典键值',
+  `dict_type` varchar(100) DEFAULT '' COMMENT '字典类型',
+  `css_class` varchar(100) DEFAULT '' COMMENT '样式属性(其他样式扩展)',
+  `list_class` varchar(100) DEFAULT '' COMMENT '表格回显样式',
+  `is_default` char(1) DEFAULT 'N' COMMENT '是否默认(Y是 N否)',
+  `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
+  `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
+  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+  `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
+  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+  `remark` varchar(500) DEFAULT '' COMMENT '备注',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='字典数据表';
+
+-- ----------------------------
+-- Records of t_sys_dict_data
+-- ----------------------------
+INSERT INTO `t_sys_dict_data` VALUES ('331043380933038080', '1', '一般', '1', 'sys_notice_type', '', 'info', 'Y', '0', 'admin', '2019-09-09 22:15:03', 'admin', '2019-09-09 22:15:43', '');
+INSERT INTO `t_sys_dict_data` VALUES ('331043525137403904', '2', '重要', '2', 'sys_notice_type', '', 'important', 'N', '0', 'admin', '2019-09-09 22:15:37', 'admin', '2019-09-11 00:30:04', '');
+INSERT INTO `t_sys_dict_data` VALUES ('340080322395901952', '1', '开启', '0', 'sys_province_state', '', 'info', 'Y', '0', 'admin', '2019-10-04 20:44:37', 'admin', '2019-10-04 20:46:41', '');
+INSERT INTO `t_sys_dict_data` VALUES ('340080779201744896', '2', '关闭', '-1', 'sys_province_state', '', 'important', 'Y', '0', 'admin', '2019-10-04 20:46:26', 'admin', '2019-10-04 20:46:45', '');
+
+-- ----------------------------
+-- Table structure for t_sys_dict_type
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_dict_type`;
+CREATE TABLE `t_sys_dict_type` (
+  `id` varchar(255) NOT NULL COMMENT '主键',
+  `dict_name` varchar(100) DEFAULT '' COMMENT '字典名称',
+  `dict_type` varchar(100) DEFAULT '' COMMENT '字典类型',
+  `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
+  `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
+  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+  `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
+  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+  `remark` varchar(500) DEFAULT '' COMMENT '备注',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `dict_type` (`dict_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='字典类型表';
+
+-- ----------------------------
+-- Records of t_sys_dict_type
+-- ----------------------------
+INSERT INTO `t_sys_dict_type` VALUES ('340079827459641344', '省份状态', 'sys_province_state', '0', 'admin', '2019-10-04 20:42:39', '', '2019-10-04 20:42:39', '省份状态');
+INSERT INTO `t_sys_dict_type` VALUES ('6', '通知类型', 'sys_notice_type', '0', 'admin', '2018-03-16 11:33:00', 'admin', '2019-09-15 00:29:19', '通知类型列表');
+
+-- ----------------------------
+-- Table structure for t_sys_email
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_email`;
+CREATE TABLE `t_sys_email` (
+  `id` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '主键',
+  `receivers_email` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '接收人电子邮件',
+  `title` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '邮件标题',
+  `content` text COLLATE utf8_bin COMMENT '内容',
+  `send_user_id` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '发送人id',
+  `send_user_name` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '发送人账号',
+  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='电子邮件';
+
+-- ----------------------------
+-- Records of t_sys_email
+-- ----------------------------
+INSERT INTO `t_sys_email` VALUES ('595001021625794560', '87766867@qq.com', 'springbootv2测试邮件', 0x3C703EE6B58BE8AF95E6B58BE6B58BE6B58B3C2F703E, '1', 'admin', '2019-06-30 21:21:38');
+
+-- ----------------------------
+-- Table structure for t_sys_file
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_file`;
+CREATE TABLE `t_sys_file` (
+  `id` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '主键',
+  `file_name` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '图片名字',
+  `create_user_id` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '创建人id',
+  `create_user_name` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '创建人名字',
+  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+  `update_user_id` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '修改人',
+  `update_user_name` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '修改人名字',
+  `update_time` datetime DEFAULT NULL COMMENT '修改时间',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='文件信息表';
+
+-- ----------------------------
+-- Records of t_sys_file
+-- ----------------------------
+INSERT INTO `t_sys_file` VALUES ('354984159875305472', '3333', '1', 'admin', '2019-11-14 23:47:09', null, null, null);
+
+-- ----------------------------
+-- Table structure for t_sys_file_data
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_file_data`;
+CREATE TABLE `t_sys_file_data` (
+  `id` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '主键',
+  `data_id` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '数据id',
+  `file_id` varchar(255) COLLATE utf8_bin DEFAULT '文件id' COMMENT '文件id',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='文件数据外键绑定表';
+
+-- ----------------------------
+-- Records of t_sys_file_data
+-- ----------------------------
+INSERT INTO `t_sys_file_data` VALUES ('354984159875305473', '354984152409444352', '354984159875305472');
+
+-- ----------------------------
+-- Table structure for t_sys_notice
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_notice`;
+CREATE TABLE `t_sys_notice` (
+  `id` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '主键',
+  `title` varchar(255) DEFAULT NULL COMMENT '标题',
+  `content` varchar(1000) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '内容',
+  `type` int(5) DEFAULT NULL COMMENT '类型',
+  `create_id` varchar(255) DEFAULT NULL COMMENT '创建人id',
+  `create_username` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '创建人name',
+  `create_time` datetime DEFAULT NULL COMMENT '发信时间',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='公告';
+
+-- ----------------------------
+-- Records of t_sys_notice
+-- ----------------------------
+INSERT INTO `t_sys_notice` VALUES ('330381411007729664', '测试公告', '<p>啊啊啊<img src=\"http://img.baidu.com/hi/jx2/j_0002.gif\"/><img src=\"http://img.baidu.com/hi/jx2/j_0024.gif\"/></p>', '1', '1', 'admin', '2019-09-08 02:24:37');
+INSERT INTO `t_sys_notice` VALUES ('330381806358630400', '鲜花视频', '<p>哈哈哈哈<img src=\"http://img.baidu.com/hi/jx2/j_0024.gif\"/></p>', '2', '1', 'admin', '2019-09-08 02:26:11');
+INSERT INTO `t_sys_notice` VALUES ('330622143597514752', '水水水水水水水', '<p>水水水水水水水水水水水水水水水水水水水</p>', '1', '1', 'admin', '2019-09-08 18:21:12');
+
+-- ----------------------------
+-- Table structure for t_sys_notice_user
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_notice_user`;
+CREATE TABLE `t_sys_notice_user` (
+  `id` varchar(255) NOT NULL COMMENT '主键',
+  `notice_id` varchar(255) DEFAULT NULL COMMENT '公告id',
+  `user_id` varchar(255) DEFAULT NULL COMMENT '用户id',
+  `state` int(2) DEFAULT NULL COMMENT '0未阅读 1 阅读',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='公告_用户外键';
+
+-- ----------------------------
+-- Records of t_sys_notice_user
+-- ----------------------------
+INSERT INTO `t_sys_notice_user` VALUES ('330381411037089792', '330381411007729664', '1', '1');
+INSERT INTO `t_sys_notice_user` VALUES ('330381411045478400', '330381411007729664', '488294747442511872', '0');
+INSERT INTO `t_sys_notice_user` VALUES ('330381806375407616', '330381806358630400', '1', '0');
+INSERT INTO `t_sys_notice_user` VALUES ('330381806379601920', '330381806358630400', '488294747442511872', '0');
+INSERT INTO `t_sys_notice_user` VALUES ('330622143622680576', '330622143597514752', '1', '1');
+INSERT INTO `t_sys_notice_user` VALUES ('330622143626874880', '330622143597514752', '488294747442511872', '0');
+INSERT INTO `t_sys_notice_user` VALUES ('354984345649418240', '354984345632641024', '1', '1');
+
+-- ----------------------------
+-- Table structure for t_sys_oper_log
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_oper_log`;
+CREATE TABLE `t_sys_oper_log` (
+  `id` varchar(255) COLLATE utf8_bin NOT NULL,
+  `title` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '标题',
+  `method` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '方法',
+  `oper_name` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '操作人',
+  `oper_url` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT 'url',
+  `oper_param` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '参数',
+  `error_msg` varchar(255) COLLATE utf8_bin DEFAULT NULL,
+  `oper_time` date DEFAULT NULL COMMENT '操作时间',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='日志记录表';
+
+-- ----------------------------
+-- Records of t_sys_oper_log
+-- ----------------------------
+INSERT INTO `t_sys_oper_log` VALUES ('353711021405376512', '用户新增', 'com.gyee.frame.controller.admin.UserController.add()', 'admin', '/UserController/add', '{\"username\":[\"admin1111\"],\"password\":[\"admin11111111111111\"],\"nickname\":[\"111111111111\"],\"roles\":[\"488289006124007424\"]}', null, '2019-11-11');
+INSERT INTO `t_sys_oper_log` VALUES ('353711251710414848', '用户新增', 'com.gyee.frame.controller.admin.UserController.add()', 'admin', '/UserController/add', '{\"username\":[\"admin22\"],\"password\":[\"admin22\"],\"nickname\":[\"222\"]}', null, '2019-11-11');
+INSERT INTO `t_sys_oper_log` VALUES ('353711483206635520', '用户新增', 'com.gyee.frame.controller.admin.UserController.add()', 'admin', '/UserController/add', '{\"username\":[\"admin1111111111111\"],\"password\":[\"admin1111111111111\"],\"nickname\":[\"111\"]}', null, '2019-11-11');
+INSERT INTO `t_sys_oper_log` VALUES ('353890395106709504', '用户新增', 'com.gyee.frame.controller.admin.UserController.add()', 'admin', '/springboot_v2/UserController/add', '{\"username\":[\"admin2\"],\"password\":[\"admin2\"],\"nickname\":[\"2\"]}', null, '2019-11-11');
+INSERT INTO `t_sys_oper_log` VALUES ('354984005894017024', '用户新增', 'com.gyee.frame.controller.admin.UserController.add()', 'admin', '/UserController/add', '{\"username\":[\"admin22\"],\"password\":[\"admin22\"],\"nickname\":[\"222\"],\"roles\":[\"488243256161730560\"]}', null, '2019-11-14');
+INSERT INTO `t_sys_oper_log` VALUES ('354988722611163136', '用户新增', 'com.gyee.frame.controller.admin.UserController.add()', 'admin', '/UserController/add', '{\"username\":[\"admin222\"],\"password\":[\"admin22\"],\"nickname\":[\"22222\"],\"roles\":[\"488243256161730560\"]}', null, '2019-11-15');
+INSERT INTO `t_sys_oper_log` VALUES ('354989789822455808', '用户新增', 'com.gyee.frame.controller.admin.UserController.add()', 'admin', '/UserController/add', '{\"username\":[\"admin33\"],\"password\":[\"admin33\"],\"nickname\":[\"333\"],\"roles\":[\"488305788310257664\"]}', null, '2019-11-15');
+
+-- ----------------------------
+-- Table structure for t_sys_permission
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_permission`;
+CREATE TABLE `t_sys_permission` (
+  `id` varchar(255) NOT NULL COMMENT 'id',
+  `name` varchar(255) DEFAULT NULL COMMENT '权限名称',
+  `descripion` varchar(255) DEFAULT NULL COMMENT '权限描述',
+  `url` varchar(255) DEFAULT NULL COMMENT '授权链接',
+  `is_blank` int(255) DEFAULT '0' COMMENT '是否跳转 0 不跳转 1跳转',
+  `pid` varchar(255) DEFAULT NULL COMMENT '父节点id',
+  `perms` varchar(255) DEFAULT NULL COMMENT '权限标识',
+  `type` int(11) DEFAULT NULL COMMENT '类型   0:目录   1:菜单   2:按钮',
+  `icon` varchar(255) DEFAULT NULL COMMENT '菜单图标',
+  `order_num` int(11) DEFAULT NULL COMMENT '排序',
+  `visible` int(255) DEFAULT NULL COMMENT '是否可见',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限表';
+
+-- ----------------------------
+-- Records of t_sys_permission
+-- ----------------------------
+INSERT INTO `t_sys_permission` VALUES ('1', '首页', '首页', '#', '0', '0', '#', '0', 'fa fa-home', '1', '0');
+INSERT INTO `t_sys_permission` VALUES ('10', '角色集合', '角色集合', '/RoleController/list', '0', '9', 'system:role:list', '2', '', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('11', '角色添加', '角色添加', '/RoleController/add', '0', '9', 'system:role:add', '2', 'entypo-plus-squared', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('12', '角色删除', '角色删除', '/RoleController/remove', '0', '9', 'system:role:remove', '2', 'entypo-trash', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('13', '角色修改', '角色修改', '/RoleController/edit', '0', '9', 'system:role:edit', '2', 'fa fa-wrench', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('14', '权限展示', '权限展示', '/PermissionController/view', '0', '592059865673760768', 'system:permission:view', '1', 'fa fa-key', '3', '0');
+INSERT INTO `t_sys_permission` VALUES ('15', '权限集合', '权限集合', '/PermissionController/list', '0', '14', 'system:permission:list', '2', '', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('16', '权限添加', '权限添加', '/permissionController/add', '0', '14', 'system:permission:add', '2', 'entypo-plus-squared', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('17', '权限删除', '权限删除', '/PermissionController/remove', '0', '14', 'system:permission:remove', '2', 'entypo-trash', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('18', '权限修改', '权限修改', '/PermissionController/edit', '0', '14', 'system:permission:edit', '2', 'fa fa-wrench', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('19', '文件展示', '文件展示', '/FileController/view', '0', '592059865673760768', 'system:file:view', '1', 'fa fa-file-image-o', '4', '0');
+INSERT INTO `t_sys_permission` VALUES ('20', '文件添加', '文件添加', '/FileController/add', '0', '19', 'system:file:add', '2', 'entypo-plus-squared', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('21', '文件删除', '文件删除', '/FileController/remove', '0', '19', 'system:file:remove', '2', 'entypo-trash', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('22', '文件修改', '文件修改', '/FileController/edit', '0', '19', 'system:file:edit', '2', 'fa fa-wrench', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('23', '文件集合', '文件集合', '/FileController/list', '0', '19', 'system:file:list', '2', '', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('330365026642825216', '公告管理', '公告展示', '/SysNoticeController/view', '0', '592059865673760768', 'gen:sysNotice:view', '1', 'fa fa-telegram', '10', '0');
+INSERT INTO `t_sys_permission` VALUES ('3303650266428252171', '公告集合', '公告集合', '/SysNoticeController/list', '0', '330365026642825216', 'gen:sysNotice:list', '2', '', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('3303650266428252182', '公告添加', '公告添加', '/SysNoticeController/add', '0', '330365026642825216', 'gen:sysNotice:add', '2', 'entypo-plus-squared', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('3303650266428252193', '公告删除', '公告删除', '/SysNoticeController/remove', '0', '330365026642825216', 'gen:sysNotice:remove', '2', 'entypo-trash', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('3303650266428252204', '公告修改', '公告修改', '/SysNoticeController/edit', '0', '330365026642825216', 'gen:sysNotice:edit', '2', 'fa fa-wrench', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('331778807298134016', '定时器表达式', '', '/quartz/view', '0', '592059865673760768', '#', '1', 'fa fa-flash', '12', '0');
+INSERT INTO `t_sys_permission` VALUES ('332157860920299520', '定时任务', '定时任务调度表展示', '/SysQuartzJobController/view', '0', '592059865673760768', 'gen:sysQuartzJob:view', '1', 'fa fa-hourglass-1', '13', '0');
+INSERT INTO `t_sys_permission` VALUES ('3321578609202995211', '定时任务调度表集合', '定时任务调度表集合', '/SysQuartzJobController/list', '0', '332157860920299520', 'gen:sysQuartzJob:list', '2', '', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('3321578609202995222', '定时任务调度表添加', '定时任务调度表添加', '/SysQuartzJobController/add', '0', '332157860920299520', 'gen:sysQuartzJob:add', '2', 'entypo-plus-squared', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('3321578609202995233', '定时任务调度表删除', '定时任务调度表删除', '/SysQuartzJobController/remove', '0', '332157860920299520', 'gen:sysQuartzJob:remove', '2', 'entypo-trash', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('3321578609202995244', '定时任务调度表修改', '定时任务调度表修改', '/SysQuartzJobController/edit', '0', '332157860920299520', 'gen:sysQuartzJob:edit', '2', 'fa fa-wrench', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('332857281479839744', '定时任务日志', '定时任务日志', '/SysQuartzJobLogController/view', '0', '592059865673760768', 'gen:sysQuartzJobLog:view', '1', 'fa fa-database', '14', '0');
+INSERT INTO `t_sys_permission` VALUES ('3328572814798397451', '定时任务调度日志表集合', '定时任务调度日志表集合', '/SysQuartzJobLogController/list', '0', '332857281479839744', 'gen:sysQuartzJobLog:list', '2', '', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('3328572814798397473', '定时任务调度日志表删除', '定时任务调度日志表删除', '/SysQuartzJobLogController/remove', '0', '332857281479839744', 'gen:sysQuartzJobLog:remove', '2', 'entypo-trash', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('335330315113467904', 'Json工具', 'Json格式化工具', '/Json/view', '1', '617766548966211584', '#', '1', 'fa fa-retweet', '10', '0');
+INSERT INTO `t_sys_permission` VALUES ('340066503263129600', '省份设置', '省份设置', null, '0', '1', null, '0', 'fa fa-building', '4', '0');
+INSERT INTO `t_sys_permission` VALUES ('340067579836108800', '省份管理', '', '#', '0', '340066503263129600', '#', '1', 'fa fa-building-o', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('340068151804956672', '省份表管理', '省份表展示', '/SysProvinceController/view', '0', '340067579836108800', 'gen:sysProvince:view', '1', 'fa fa-quora', '2', '0');
+INSERT INTO `t_sys_permission` VALUES ('3400681518049566731', '省份表集合', '省份表集合', '/SysProvinceController/list', '0', '340068151804956672', 'gen:sysProvince:list', '2', '', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('3400681518049566742', '省份表添加', '省份表添加', '/SysProvinceController/add', '0', '340068151804956672', 'gen:sysProvince:add', '2', 'entypo-plus-squared', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('3400681518049566753', '省份表删除', '省份表删除', '/SysProvinceController/remove', '0', '340068151804956672', 'gen:sysProvince:remove', '2', 'entypo-trash', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('3400681518049566764', '省份表修改', '省份表修改', '/SysProvinceController/edit', '0', '340068151804956672', 'gen:sysProvince:edit', '2', 'fa fa-wrench', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('340088022018166784', '城市表管理', '城市设置展示', '/SysCityController/view', '0', '340067579836108800', 'gen:sysCity:view', '1', 'fa fa-quora', '3', '0');
+INSERT INTO `t_sys_permission` VALUES ('3400880220181667851', '城市设置集合', '城市设置集合', '/SysCityController/list', '0', '340088022018166784', 'gen:sysCity:list', '2', '', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('3400880220181667862', '城市设置添加', '城市设置添加', '/SysCityController/add', '0', '340088022018166784', 'gen:sysCity:add', '2', 'entypo-plus-squared', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('3400880220181667873', '城市设置删除', '城市设置删除', '/SysCityController/remove', '0', '340088022018166784', 'gen:sysCity:remove', '2', 'entypo-trash', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('3400880220181667884', '城市设置修改', '城市设置修改', '/SysCityController/edit', '0', '340088022018166784', 'gen:sysCity:edit', '2', 'fa fa-wrench', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('340096183135506432', '地区设置管理', '地区设置展示', '/SysAreaController/view', '0', '340067579836108800', 'gen:sysArea:view', '1', 'fa fa-quora', '4', '0');
+INSERT INTO `t_sys_permission` VALUES ('3400961831355064331', '地区设置集合', '地区设置集合', '/SysAreaController/list', '0', '340096183135506432', 'gen:sysArea:list', '2', '', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('3400961831355064342', '地区设置添加', '地区设置添加', '/SysAreaController/add', '0', '340096183135506432', 'gen:sysArea:add', '2', 'entypo-plus-squared', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('3400961831355064353', '地区设置删除', '地区设置删除', '/SysAreaController/remove', '0', '340096183135506432', 'gen:sysArea:remove', '2', 'entypo-trash', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('3400961831355064364', '地区设置修改', '地区设置修改', '/SysAreaController/edit', '0', '340096183135506432', 'gen:sysArea:edit', '2', 'fa fa-wrench', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('340127412270534656', '街道设置管理', '街道设置展示', '/SysStreetController/view', '0', '340067579836108800', 'gen:sysStreet:view', '1', 'fa fa-quora', '5', '0');
+INSERT INTO `t_sys_permission` VALUES ('3401274122705346571', '街道设置集合', '街道设置集合', '/SysStreetController/list', '0', '340127412270534656', 'gen:sysStreet:list', '2', '', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('3401274122705346582', '街道设置添加', '街道设置添加', '/SysStreetController/add', '0', '340127412270534656', 'gen:sysStreet:add', '2', 'entypo-plus-squared', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('3401274122705346593', '街道设置删除', '街道设置删除', '/SysStreetController/remove', '0', '340127412270534656', 'gen:sysStreet:remove', '2', 'entypo-trash', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('3401274122705346604', '街道设置修改', '街道设置修改', '/SysStreetController/edit', '0', '340127412270534656', 'gen:sysStreet:edit', '2', 'fa fa-wrench', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('340301160042860544', '省份联动', '省份联动', '/ProvinceLinkageController/view', '0', '340067579836108800', '#', '1', 'fa fa-etsy', '1', '0');
+INSERT INTO `t_sys_permission` VALUES ('340381240911859712', 'JavaScript格式化', 'JavaScript格式化', '/static/admin/htmlformat/javascriptFormat.html', '1', '617766548966211584', '#', '1', 'fa fa-magic', '11', '0');
+INSERT INTO `t_sys_permission` VALUES ('354851114446884864', '七牛文件上传', '七牛文件上传', '/QiNiuCloudController/view', '0', '592059865673760768', 'system:qiNiuCloud:view', '1', 'fa fa-globe', '15', '0');
+INSERT INTO `t_sys_permission` VALUES ('354865752219717632', '云文件集合', '云文件集合', '/QiNiuCloudController/list', '0', '354851114446884864', 'system:qiNiuCloud:list', '2', null, null, '0');
+INSERT INTO `t_sys_permission` VALUES ('4', '用户管理', '用户展示', '/UserController/view', '0', '592059865673760768', 'system:user:view', '1', 'icon icon-user', '1', '0');
+INSERT INTO `t_sys_permission` VALUES ('486690002869157888', '用户密码修改', '用户密码修改', '/UserController/editPwd', '0', '4', 'system:user:editPwd', '2', 'entypo-tools', '3', '0');
+INSERT INTO `t_sys_permission` VALUES ('496126970468237312', '日志展示', '日志管理', '/LogController/view', '0', '592059865673760768', 'system:log:view', '1', 'fa fa-info', '9', '0');
+INSERT INTO `t_sys_permission` VALUES ('496127240363311104', '日志删除', '日志删除', '/LogController/remove', '0', '496126970468237312', 'system:log:remove', '2', 'entypo-trash', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('496127794879660032', '日志集合', '日志集合', '/LogController/list', '0', '496126970468237312', 'system:log:list', '2', null, null, '0');
+INSERT INTO `t_sys_permission` VALUES ('496782496638173184', '系统设置', '后台设置', null, '0', '1', null, '0', 'fa fa-gear', '3', '0');
+INSERT INTO `t_sys_permission` VALUES ('5', '用户集合', '用户集合', '/UserController/list', '0', '4', 'system:user:list', '2', '', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('581541547099553792', 'druid监控', 'druid监控', '/druid/', '0', '617766548966211584', 'user:list', '1', 'fa fa-line-chart', '6', '0');
+INSERT INTO `t_sys_permission` VALUES ('583063272123531264', 'API文档', 'API文档', '/swagger-ui.html', '1', '617766548966211584', '--', '1', 'fa fa-font', '8', '0');
+INSERT INTO `t_sys_permission` VALUES ('586003694080753664', '表单构建', '表单构建', '/ToolController/view', '0', '617766548966211584', 'system:tool:view', '1', 'fa fa-list-alt', '5', '0');
+INSERT INTO `t_sys_permission` VALUES ('587453033487532032', '后台模板', '后台模板', '/static/admin/bootstarp/index.html', '1', '617766548966211584', 'system:htmb:view', '1', 'fa fa-telegram', '9', '0');
+INSERT INTO `t_sys_permission` VALUES ('589559475422101504', '测试目录', '测试目录', null, '0', '1', null, '0', 'fa fa-etsy', '5', '0');
+INSERT INTO `t_sys_permission` VALUES ('589559748521623552', '一级菜单', '测试菜单', '#', '0', '589559475422101504', '#', '1', 'fa fa-address-book', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('589559916704825344', '二级菜单', '二级菜单', '#', '0', '589559748521623552', '#', '1', 'fa fa-address-book', '1', '0');
+INSERT INTO `t_sys_permission` VALUES ('592059865673760768', '系统管理', '后台管理', '#', '0', '496782496638173184', '#', '1', 'fa fa-home', '1', '0');
+INSERT INTO `t_sys_permission` VALUES ('592067570522128384', '测试跳转', '测试跳转', 'http://www.baidu.com', '1', '589559748521623552', '#', '1', 'fa fa-address-book', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('592167738407911424', '系统监控', '系统监控', '/ServiceController/view', '0', '617766548966211584', 'system:service:view', '1', 'fa fa-video-camera', '7', '0');
+INSERT INTO `t_sys_permission` VALUES ('594691026430459904', '电子邮件管理', '电子邮件展示', '/EmailController/view', '0', '592059865673760768', 'system:email:view', '1', 'fa fa-envelope', '8', '0');
+INSERT INTO `t_sys_permission` VALUES ('5946910264304599041', '电子邮件集合', '电子邮件集合', '/EmailController/list', '0', '594691026430459904', 'system:email:list', '2', '', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('5946910264304599042', '电子邮件添加', '电子邮件添加', '/EmailController/add', '0', '594691026430459904', 'system:email:add', '2', 'entypo-plus-squared', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('5946910264304599043', '电子邮件删除', '电子邮件删除', '/EmailController/remove', '0', '594691026430459904', 'system:email:remove', '2', 'entypo-trash', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('5946910264304599044', '电子邮件修改', '电子邮件修改', '/EmailController/edit', '0', '594691026430459904', 'system:email:edit', '2', 'fa fa-wrench', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('6', '用户添加', '用户添加', '/UserController/add', '0', '4', 'system:user:add', '2', 'entypo-plus-squared', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('610635485890478080', '代码生成新', '代码生成2', '#', '0', '617751079701970944', '#', '1', 'fa fa-blind', '1', '0');
+INSERT INTO `t_sys_permission` VALUES ('610635950447394816', '全局配置', '', '/autoCodeController/global', '0', '610635485890478080', 'system:autocode:global', '1', 'fa fa-university', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('610983815791247360', '单表生成', '', '/autoCodeController/one', '0', '610635485890478080', 'system:autocode:one', '1', 'fa fa-hand-peace-o', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('617751079701970944', '代码生成', '代码生成', null, '0', '1', null, '0', 'fa fa-500px', '4', '0');
+INSERT INTO `t_sys_permission` VALUES ('617766548966211584', '系统工具', '系统工具', '#', '0', '496782496638173184', '#', '1', 'fa fa-th-large', '2', '0');
+INSERT INTO `t_sys_permission` VALUES ('618918631769636864', '字典管理', '字典类型表展示', '/DictTypeController/view', '0', '592059865673760768', 'system:dictType:view', '1', 'fa fa-puzzle-piece', '11', '0');
+INSERT INTO `t_sys_permission` VALUES ('6189186317738311681', '字典类型表集合', '字典类型表集合', '/DictTypeController/list', '0', '618918631769636864', 'system:dictType:list', '2', null, null, '0');
+INSERT INTO `t_sys_permission` VALUES ('6189186317948026882', '字典类型表添加', '字典类型表添加', '/DictTypeController/add', '0', '618918631769636864', 'system:dictType:add', '2', null, null, '0');
+INSERT INTO `t_sys_permission` VALUES ('6189186317948026883', '字典类型表删除', '字典类型表删除', '/DictTypeController/remove', '0', '618918631769636864', 'system:dictType:remove', '2', null, null, '0');
+INSERT INTO `t_sys_permission` VALUES ('6189186317989969924', '字典类型表修改', '字典类型表修改', '/DictTypeController/edit', '0', '618918631769636864', 'system:dictType:edit', '2', null, null, '0');
+INSERT INTO `t_sys_permission` VALUES ('6192095214866268161', '字典数据表集合', '字典数据表集合', '/DictDataController/list', '0', '618918631769636864', 'system:dictData:list', '2', null, null, '0');
+INSERT INTO `t_sys_permission` VALUES ('6192095214866268162', '字典数据表添加', '字典数据表添加', '/DictDataController/add', '0', '618918631769636864', 'system:dictData:add', '2', null, null, '0');
+INSERT INTO `t_sys_permission` VALUES ('6192095215075983363', '字典数据表删除', '字典数据表删除', '/DictDataController/remove', '0', '618918631769636864', 'system:dictData:remove', '2', null, null, '0');
+INSERT INTO `t_sys_permission` VALUES ('6192095215075983364', '字典数据表修改', '字典数据表修改', '/DictDataController/edit', '0', '618918631769636864', 'system:dictData:edit', '2', null, null, '0');
+INSERT INTO `t_sys_permission` VALUES ('619836559427895296', '字典数据视图', '字典数据视图', '/DictDataController/view', '0', '618918631769636864', 'system:dictData:view', '2', null, null, '0');
+INSERT INTO `t_sys_permission` VALUES ('7', '用户删除', '用户删除', '/UserController/remove', '0', '4', 'system:user:remove', '2', 'entypo-trash', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('8', '用户修改', '用户修改', '/UserController/edit', '0', '4', 'system:user:edit', '2', 'fa fa-wrench', null, '0');
+INSERT INTO `t_sys_permission` VALUES ('9', '角色管理', '角色展示', '/RoleController/view', '0', '592059865673760768', 'system:role:view', '1', 'fa fa-group', '2', '0');
+
+-- ----------------------------
+-- Table structure for t_sys_permission_role
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_permission_role`;
+CREATE TABLE `t_sys_permission_role` (
+  `id` varchar(255) NOT NULL,
+  `role_id` varchar(255) DEFAULT NULL COMMENT '角色id',
+  `permission_id` varchar(255) DEFAULT NULL COMMENT '权限id',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色权限中间表';
+
+-- ----------------------------
+-- Records of t_sys_permission_role
+-- ----------------------------
+INSERT INTO `t_sys_permission_role` VALUES ('0090d5c9-1876-492f-bb3c-3efc7cb1c666', '488243256161730560', '3401274122705346604');
+INSERT INTO `t_sys_permission_role` VALUES ('03a88782-7d67-49f1-8bb8-b896ff887f28', '488243256161730560', '3400961831355064331');
+INSERT INTO `t_sys_permission_role` VALUES ('0c540c9e-b56c-442c-b387-3af08f25d0e4', '488243256161730560', '3400880220181667862');
+INSERT INTO `t_sys_permission_role` VALUES ('0d97d3d5-2e84-4048-9e94-1b14f32a29b2', '488243256161730560', '10');
+INSERT INTO `t_sys_permission_role` VALUES ('0e03ce36-bcaf-4f8e-ac09-df8ebfaa6f5d', '488243256161730560', '3303650266428252193');
+INSERT INTO `t_sys_permission_role` VALUES ('0f4498e2-5312-42f9-829c-bdad1ed62999', '488243256161730560', '9');
+INSERT INTO `t_sys_permission_role` VALUES ('1a7f2cdb-791b-443f-9864-432442b94f57', '488243256161730560', '14');
+INSERT INTO `t_sys_permission_role` VALUES ('1ebfcbc3-ae48-4b0e-938e-7c23606f8be5', '488243256161730560', '3303650266428252171');
+INSERT INTO `t_sys_permission_role` VALUES ('211fb1a5-dcd6-4ed9-a030-8d240db78ed3', '488243256161730560', '19');
+INSERT INTO `t_sys_permission_role` VALUES ('290c05af-d1a5-4ab2-99f5-b5ac3b9a8b3d', '488243256161730560', '6192095215075983363');
+INSERT INTO `t_sys_permission_role` VALUES ('299688d1-7693-4760-8003-a9dafb94a177', '488243256161730560', '354851114446884864');
+INSERT INTO `t_sys_permission_role` VALUES ('2d400632-a55e-4c51-8d55-d9f1f8393c63', '488243256161730560', '594691026430459904');
+INSERT INTO `t_sys_permission_role` VALUES ('2dcb219c-1c8b-4630-8d4f-1ad5c4bb4acf', '488243256161730560', '3303650266428252204');
+INSERT INTO `t_sys_permission_role` VALUES ('2e313899-b8e2-49f2-924d-4afea3e0218b', '488243256161730560', '496126970468237312');
+INSERT INTO `t_sys_permission_role` VALUES ('365b4bf9-4de4-46ed-948e-2ce634de3adb', '488243256161730560', '496127794879660032');
+INSERT INTO `t_sys_permission_role` VALUES ('37cb39da-1b96-471e-80fe-e9e5493b8575', '488243256161730560', '5946910264304599042');
+INSERT INTO `t_sys_permission_role` VALUES ('38fd8a7f-6c95-4bf6-8773-26d312e7359b', '488243256161730560', '6');
+INSERT INTO `t_sys_permission_role` VALUES ('39bc81c3-b9e7-4be4-a72e-1c70749abfea', '488243256161730560', '617751079701970944');
+INSERT INTO `t_sys_permission_role` VALUES ('3cbced01-80b1-41a6-b449-e33936ce9232', '488243256161730560', '17');
+INSERT INTO `t_sys_permission_role` VALUES ('4085b466-36f5-4d63-97fc-d1fa5e67813b', '488243256161730560', '619836559427895296');
+INSERT INTO `t_sys_permission_role` VALUES ('4405da52-6acd-4740-9b85-1ab47114c171', '488243256161730560', '340068151804956672');
+INSERT INTO `t_sys_permission_role` VALUES ('455c9886-28aa-44e4-bbff-a3308495662a', '488243256161730560', '4');
+INSERT INTO `t_sys_permission_role` VALUES ('457bdd8b-d0d1-4e52-bae1-3aadf255eeee', '488243256161730560', '332857281479839744');
+INSERT INTO `t_sys_permission_role` VALUES ('45fa8d8f-696f-44e9-887c-978700d21d4a', '488243256161730560', '3400961831355064342');
+INSERT INTO `t_sys_permission_role` VALUES ('46d1e57c-390c-434d-b5cd-0c5c56612adb', '488243256161730560', '592059865673760768');
+INSERT INTO `t_sys_permission_role` VALUES ('4b0744e9-822b-46ef-ba14-934edb980949', '488243256161730560', '1');
+INSERT INTO `t_sys_permission_role` VALUES ('4cdc3dd6-e413-486f-a5d9-d748d0805175', '488243256161730560', '21');
+INSERT INTO `t_sys_permission_role` VALUES ('4d739a52-e255-4765-a37b-1ab190009673', '488243256161730560', '610635950447394816');
+INSERT INTO `t_sys_permission_role` VALUES ('5522c3d4-a77b-40c2-84a9-98690bb19088', '488243256161730560', '589559748521623552');
+INSERT INTO `t_sys_permission_role` VALUES ('5885a0c0-b3ea-462a-982f-e3c2563879be', '488243256161730560', '16');
+INSERT INTO `t_sys_permission_role` VALUES ('5ab7408b-c4b2-40f1-a7c2-eba57c22f937', '488243256161730560', '3400961831355064364');
+INSERT INTO `t_sys_permission_role` VALUES ('5ac4b1e9-97d5-40da-ad54-37e8bc7170a9', '488243256161730560', '8');
+INSERT INTO `t_sys_permission_role` VALUES ('5d1fe335-b4d3-4b0d-9491-b516765f9021', '488243256161730560', '581541547099553792');
+INSERT INTO `t_sys_permission_role` VALUES ('5f3c2d58-db6c-45b7-ac60-7ebf04b71b0b', '488243256161730560', '3401274122705346571');
+INSERT INTO `t_sys_permission_role` VALUES ('63b4953c-92a2-45ee-9b98-9ebbf1ccf24f', '488243256161730560', '5');
+INSERT INTO `t_sys_permission_role` VALUES ('6913358e-ba94-4405-b57b-75a9e8403f6e', '488243256161730560', '6189186317738311681');
+INSERT INTO `t_sys_permission_role` VALUES ('6e555311-06e3-4c62-9efb-f22f2407f407', '488243256161730560', '332157860920299520');
+INSERT INTO `t_sys_permission_role` VALUES ('702060c9-127f-41aa-a215-da5b4bfce437', '488243256161730560', '6189186317948026883');
+INSERT INTO `t_sys_permission_role` VALUES ('73a1946a-cdb7-4e5a-bf8e-6c43ac5a2fa4', '488243256161730560', '3400681518049566742');
+INSERT INTO `t_sys_permission_role` VALUES ('73cf0a3f-b495-4826-9416-e2caefa7aed5', '488243256161730560', '496782496638173184');
+INSERT INTO `t_sys_permission_role` VALUES ('75b3c8a9-1d70-4886-b0fb-23b61bf8f229', '488243256161730560', '589559916704825344');
+INSERT INTO `t_sys_permission_role` VALUES ('76eac718-c28e-41bf-a7e7-b0cfe5aa160b', '488243256161730560', '3400681518049566731');
+INSERT INTO `t_sys_permission_role` VALUES ('77b52a5e-05d1-4412-bc77-fd937e4c3674', '488243256161730560', '617766548966211584');
+INSERT INTO `t_sys_permission_role` VALUES ('77f34e60-272f-4a08-93c1-c66cd57d61c1', '488243256161730560', '583063272123531264');
+INSERT INTO `t_sys_permission_role` VALUES ('7d18f463-7cef-4803-b2c7-619975d78ef7', '488243256161730560', '340381240911859712');
+INSERT INTO `t_sys_permission_role` VALUES ('7dcb14a8-c5de-4a62-90f9-6be1f9b21315', '488243256161730560', '7');
+INSERT INTO `t_sys_permission_role` VALUES ('7fc78a8f-68fb-413c-b467-42bd93dffbd5', '488243256161730560', '3400961831355064353');
+INSERT INTO `t_sys_permission_role` VALUES ('843d5d46-6bb0-4926-ac0a-29946db39ea3', '488243256161730560', '354865752219717632');
+INSERT INTO `t_sys_permission_role` VALUES ('868e4019-707c-408e-bd90-62ee48dd6777', '488243256161730560', '3321578609202995222');
+INSERT INTO `t_sys_permission_role` VALUES ('87f7b4a9-8154-4426-be27-2c8f0ac7ef09', '488243256161730560', '23');
+INSERT INTO `t_sys_permission_role` VALUES ('88c4a254-bd53-4d17-b03a-b7a5c0797aeb', '488243256161730560', '3321578609202995233');
+INSERT INTO `t_sys_permission_role` VALUES ('897c5817-6d87-44c8-97d5-28bd1d9003ad', '488243256161730560', '3328572814798397473');
+INSERT INTO `t_sys_permission_role` VALUES ('8a58798c-1345-4fa6-b8dd-55c53e0b044c', '488243256161730560', '5946910264304599043');
+INSERT INTO `t_sys_permission_role` VALUES ('8e4cffe8-cb39-4ff0-81e4-56930936506f', '488243256161730560', '12');
+INSERT INTO `t_sys_permission_role` VALUES ('94127884-ad8a-46dd-a410-f9b6e263efe4', '488243256161730560', '3400880220181667884');
+INSERT INTO `t_sys_permission_role` VALUES ('959b731d-ea12-41aa-a84e-94f86882ed68', '488243256161730560', '335330315113467904');
+INSERT INTO `t_sys_permission_role` VALUES ('969771a4-9b73-402b-8120-d3996ee9eb5a', '488243256161730560', '331778807298134016');
+INSERT INTO `t_sys_permission_role` VALUES ('96bdc02d-88e9-4371-9861-9a9681d217f0', '488243256161730560', '5946910264304599044');
+INSERT INTO `t_sys_permission_role` VALUES ('99819aea-4fe6-4768-8cfa-fc20a743c64f', '488243256161730560', '589559475422101504');
+INSERT INTO `t_sys_permission_role` VALUES ('9b762be6-c6a2-4f99-98cb-144ccd3f31d0', '488243256161730560', '340088022018166784');
+INSERT INTO `t_sys_permission_role` VALUES ('a4ef1c3a-cb65-4a31-95bb-ddea8a28ecad', '488243256161730560', '3400681518049566764');
+INSERT INTO `t_sys_permission_role` VALUES ('a53330e8-f331-445d-b173-048e90850499', '488243256161730560', '18');
+INSERT INTO `t_sys_permission_role` VALUES ('a7e62b90-8aac-4c68-b2b4-d1b94e6e9d35', '488243256161730560', '3401274122705346593');
+INSERT INTO `t_sys_permission_role` VALUES ('ab406df5-b01d-4628-b6fe-344b1938a6bc', '488243256161730560', '592067570522128384');
+INSERT INTO `t_sys_permission_role` VALUES ('aee228dd-098f-47d0-a957-c725e95e3a7c', '488243256161730560', '6192095214866268161');
+INSERT INTO `t_sys_permission_role` VALUES ('af7124d8-eba8-4aaf-94f5-d79a20b86555', '488243256161730560', '15');
+INSERT INTO `t_sys_permission_role` VALUES ('b3f83e32-031d-4f55-be06-f4db71b1d8a3', '488243256161730560', '5946910264304599041');
+INSERT INTO `t_sys_permission_role` VALUES ('ba501b39-f17b-4872-8df7-0cb70e3481bf', '488243256161730560', '610635485890478080');
+INSERT INTO `t_sys_permission_role` VALUES ('bcb7fede-678b-4bf1-b0c8-ffc8453e3504', '488243256161730560', '3400880220181667873');
+INSERT INTO `t_sys_permission_role` VALUES ('bd1a51b6-6af2-4f66-9279-b04a4958f2ac', '488243256161730560', '587453033487532032');
+INSERT INTO `t_sys_permission_role` VALUES ('bf7fc00a-0b2b-4db5-bc14-479a2576faf4', '488243256161730560', '6192095215075983364');
+INSERT INTO `t_sys_permission_role` VALUES ('c231a93a-9820-4eac-a275-b25b750d299f', '488243256161730560', '3401274122705346582');
+INSERT INTO `t_sys_permission_role` VALUES ('c2828dd0-a9a5-470a-8eef-7d81115b1f06', '488243256161730560', '20');
+INSERT INTO `t_sys_permission_role` VALUES ('c35923c4-db40-4fcd-be57-b481198d22f9', '488243256161730560', '3328572814798397451');
+INSERT INTO `t_sys_permission_role` VALUES ('c36838fd-2092-4e78-928f-27f4067442cc', '488243256161730560', '340066503263129600');
+INSERT INTO `t_sys_permission_role` VALUES ('c7bebb4a-09ab-4d7f-b8ba-790eff827181', '488243256161730560', '486690002869157888');
+INSERT INTO `t_sys_permission_role` VALUES ('c8106a7d-f233-4a59-b23c-485fc713a1dd', '488243256161730560', '330365026642825216');
+INSERT INTO `t_sys_permission_role` VALUES ('ccb23c0f-3a92-4c7e-aa28-9a4cd8ff3cb2', '488243256161730560', '340127412270534656');
+INSERT INTO `t_sys_permission_role` VALUES ('ceac98d2-393a-4096-a7c9-cc6fd037cf3b', '488243256161730560', '3321578609202995211');
+INSERT INTO `t_sys_permission_role` VALUES ('d0eb0e6e-e009-4a37-ab91-1da8305dcfc4', '488243256161730560', '22');
+INSERT INTO `t_sys_permission_role` VALUES ('d1069950-07df-4cc1-a84a-6be4582bb58b', '488243256161730560', '11');
+INSERT INTO `t_sys_permission_role` VALUES ('d1810151-6e20-41b1-803a-cb84ef03ffa8', '488243256161730560', '3303650266428252182');
+INSERT INTO `t_sys_permission_role` VALUES ('d28e1e18-7645-419d-bd3a-e9c1fa722d68', '488243256161730560', '586003694080753664');
+INSERT INTO `t_sys_permission_role` VALUES ('d383ffdf-9e79-4240-b743-a97771632b80', '488243256161730560', '618918631769636864');
+INSERT INTO `t_sys_permission_role` VALUES ('d7cbfd44-f4d8-4771-b91f-823750b81970', '488243256161730560', '6189186317989969924');
+INSERT INTO `t_sys_permission_role` VALUES ('d96c35d0-b836-4120-adc3-95cb6c3bc199', '488243256161730560', '3400880220181667851');
+INSERT INTO `t_sys_permission_role` VALUES ('de923fd7-934e-4a3e-b037-1840fec14c2c', '488243256161730560', '6189186317948026882');
+INSERT INTO `t_sys_permission_role` VALUES ('dff41a0f-2467-4f9c-bc63-a0d62c856807', '488243256161730560', '592167738407911424');
+INSERT INTO `t_sys_permission_role` VALUES ('e55a272d-c197-41df-97cc-6a6107d74f33', '488243256161730560', '3400681518049566753');
+INSERT INTO `t_sys_permission_role` VALUES ('e70fd931-f762-49a0-b84e-886cdc23c75c', '488243256161730560', '340301160042860544');
+INSERT INTO `t_sys_permission_role` VALUES ('ebe1b826-d30e-4463-ba6e-1855df4d67ed', '488243256161730560', '610983815791247360');
+INSERT INTO `t_sys_permission_role` VALUES ('f0b25019-fe8a-4f7c-af63-83ce1e78ee55', '488243256161730560', '340096183135506432');
+INSERT INTO `t_sys_permission_role` VALUES ('f14392d5-b6d4-442e-85cb-b203584594e6', '488243256161730560', '340067579836108800');
+INSERT INTO `t_sys_permission_role` VALUES ('f1d5389d-b3ee-401b-aa01-6e40250532a0', '488243256161730560', '496127240363311104');
+INSERT INTO `t_sys_permission_role` VALUES ('f8221a34-7759-4cdf-8215-f033e277a755', '488243256161730560', '3321578609202995244');
+INSERT INTO `t_sys_permission_role` VALUES ('f983b7ff-cca6-4df5-b789-4ee6c7302646', '488243256161730560', '13');
+INSERT INTO `t_sys_permission_role` VALUES ('fe51b7e1-ccf5-4e46-b4d7-c5fb6f3547cc', '488243256161730560', '6192095214866268162');
+
+-- ----------------------------
+-- Table structure for t_sys_province
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_province`;
+CREATE TABLE `t_sys_province` (
+  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增列',
+  `province_code` varchar(40) NOT NULL COMMENT '省份代码',
+  `province_name` varchar(50) NOT NULL COMMENT '省份名称',
+  `short_name` varchar(20) NOT NULL COMMENT '简称',
+  `lng` varchar(20) DEFAULT NULL COMMENT '经度',
+  `lat` varchar(20) DEFAULT NULL COMMENT '纬度',
+  `sort` int(6) DEFAULT NULL COMMENT '排序',
+  `gmt_create` datetime DEFAULT NULL COMMENT '创建时间',
+  `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+  `memo` varchar(250) DEFAULT NULL COMMENT '备注',
+  `data_state` int(11) DEFAULT NULL COMMENT '状态',
+  PRIMARY KEY (`id`),
+  KEY `Index_1` (`province_code`)
+) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8 COMMENT='省份表';
+
+-- ----------------------------
+-- Records of t_sys_province
+-- ----------------------------
+INSERT INTO `t_sys_province` VALUES ('22', '500000', '重庆', '重庆', '106.504959', '29.533155', '22', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+
+-- ----------------------------
+-- Table structure for t_sys_quartz_job
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_quartz_job`;
+CREATE TABLE `t_sys_quartz_job` (
+  `id` varchar(255) NOT NULL COMMENT '日志id',
+  `job_name` varchar(255) DEFAULT NULL COMMENT '任务名称',
+  `job_group` varchar(255) DEFAULT NULL COMMENT '任务组名',
+  `invoke_target` varchar(255) DEFAULT NULL COMMENT '调用目标字符串',
+  `cron_expression` varchar(255) DEFAULT NULL COMMENT 'cron执行表达式',
+  `misfire_policy` varchar(255) DEFAULT NULL COMMENT 'cron计划策略',
+  `concurrent` varchar(255) DEFAULT NULL COMMENT '是否并发执行(0允许 1禁止)',
+  `status` int(11) DEFAULT NULL COMMENT '任务状态(0正常 1暂停)',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='定时任务调度表';
+
+-- ----------------------------
+-- Records of t_sys_quartz_job
+-- ----------------------------
+INSERT INTO `t_sys_quartz_job` VALUES ('332182389491109888', 'v2Task2', 'SYSTEM', 'v2Task.runTask2(1,2l,\'asa\',true,2D)', '*/10 * * * * ?', '12', '1', '1');
+
+-- ----------------------------
+-- Table structure for t_sys_quartz_job_log
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_quartz_job_log`;
+CREATE TABLE `t_sys_quartz_job_log` (
+  `id` varchar(255) NOT NULL COMMENT '主键',
+  `job_name` varchar(255) DEFAULT NULL COMMENT '任务名称',
+  `job_group` varchar(255) DEFAULT NULL COMMENT '任务组名',
+  `invoke_target` varchar(255) DEFAULT NULL COMMENT '调用目标字符串',
+  `job_message` varchar(255) DEFAULT NULL COMMENT '日志信息',
+  `status` int(11) DEFAULT NULL COMMENT '执行状态(0正常 1失败)',
+  `exception_info` varchar(255) DEFAULT NULL COMMENT '异常信息',
+  `start_time` datetime DEFAULT NULL COMMENT '开始时间',
+  `end_time` datetime DEFAULT NULL COMMENT '结束时间',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='定时任务调度日志表';
+
+-- ----------------------------
+-- Records of t_sys_quartz_job_log
+-- ----------------------------
+INSERT INTO `t_sys_quartz_job_log` VALUES ('333610541354455040', 'v2Task2', 'SYSTEM', 'v2Task.runTask2(1,2l,\'asa\',true,2D)', 'v2Task2 总共耗时:3毫秒', '0', null, '2019-09-17 00:16:01', '2019-09-17 00:16:01');
+INSERT INTO `t_sys_quartz_job_log` VALUES ('333610547549442048', 'v2Task2', 'SYSTEM', 'v2Task.runTask2(1,2l,\'asa\',true,2D)', 'v2Task2 总共耗时:1毫秒', '0', null, '2019-09-17 00:16:03', '2019-09-17 00:16:03');
+INSERT INTO `t_sys_quartz_job_log` VALUES ('333610553832509440', 'v2Task2', 'SYSTEM', 'v2Task.runTask2(1,2l,\'asa\',true,2D)', 'v2Task2 总共耗时:0毫秒', '0', null, '2019-09-17 00:16:04', '2019-09-17 00:16:04');
+INSERT INTO `t_sys_quartz_job_log` VALUES ('333610558995697664', 'v2Task2', 'SYSTEM', 'v2Task.runTask2(1,2l,\'asa\',true,2D)', 'v2Task2 总共耗时:0毫秒', '0', null, '2019-09-17 00:16:06', '2019-09-17 00:16:06');
+INSERT INTO `t_sys_quartz_job_log` VALUES ('333610566486724608', 'v2Task2', 'SYSTEM', 'v2Task.runTask2(1,2l,\'asa\',true,2D)', 'v2Task2 总共耗时:0毫秒', '0', null, '2019-09-17 00:16:07', '2019-09-17 00:16:07');
+INSERT INTO `t_sys_quartz_job_log` VALUES ('333610572270669824', 'v2Task2', 'SYSTEM', 'v2Task.runTask2(1,2l,\'asa\',true,2D)', 'v2Task2 总共耗时:0毫秒', '0', null, '2019-09-17 00:16:09', '2019-09-17 00:16:09');
+INSERT INTO `t_sys_quartz_job_log` VALUES ('354984595927732224', 'v2Task2', 'SYSTEM', 'v2Task.runTask2(1,2l,\'asa\',true,2D)', 'v2Task2 总共耗时:3毫秒', '0', null, '2019-11-14 23:48:53', '2019-11-14 23:48:53');
+INSERT INTO `t_sys_quartz_job_log` VALUES ('354990312722141184', 'v2Task2', 'SYSTEM', 'v2Task.runTask2(1,2l,\'asa\',true,2D)', 'v2Task2 总共耗时:2毫秒', '0', null, '2019-11-15 00:11:36', '2019-11-15 00:11:36');
+INSERT INTO `t_sys_quartz_job_log` VALUES ('354996339316232192', 'v2Task2', 'SYSTEM', 'v2Task.runTask2(1,2l,\'asa\',true,2D)', 'v2Task2 总共耗时:3毫秒', '0', null, '2019-11-15 00:35:33', '2019-11-15 00:35:33');
+
+-- ----------------------------
+-- Table structure for t_sys_role
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_role`;
+CREATE TABLE `t_sys_role` (
+  `id` varchar(255) NOT NULL COMMENT 'id',
+  `name` varchar(255) DEFAULT NULL COMMENT '角色名称',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色表';
+
+-- ----------------------------
+-- Records of t_sys_role
+-- ----------------------------
+INSERT INTO `t_sys_role` VALUES ('488243256161730560', '管理员');
+INSERT INTO `t_sys_role` VALUES ('488289006124007424', '用户');
+INSERT INTO `t_sys_role` VALUES ('488305788310257664', '能修改用户密码角色');
+
+-- ----------------------------
+-- Table structure for t_sys_role_user
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_role_user`;
+CREATE TABLE `t_sys_role_user` (
+  `id` varchar(255) NOT NULL,
+  `sys_user_id` varchar(255) DEFAULT NULL COMMENT '用户id',
+  `sys_role_id` varchar(255) DEFAULT NULL COMMENT '角色id',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户角色中间表';
+
+-- ----------------------------
+-- Records of t_sys_role_user
+-- ----------------------------
+INSERT INTO `t_sys_role_user` VALUES ('353711021275353089', '353711021275353088', '488289006124007424');
+INSERT INTO `t_sys_role_user` VALUES ('353714370687143936', '488294747442511872', '488289006124007424');
+INSERT INTO `t_sys_role_user` VALUES ('354984037766533120', '354984005751410688', '488243256161730560');
+INSERT INTO `t_sys_role_user` VALUES ('354988722443390977', '354988722443390976', '488243256161730560');
+INSERT INTO `t_sys_role_user` VALUES ('354989789679849472', '354989789675655168', '488305788310257664');
+INSERT INTO `t_sys_role_user` VALUES ('594342089710370816', '1', '488243256161730560');
+INSERT INTO `t_sys_role_user` VALUES ('612107905532952576', '612107905532952576', '488289006124007424');
+INSERT INTO `t_sys_role_user` VALUES ('612107905537146880', '612107905532952576', '488305788310257664');
+
+-- ----------------------------
+-- Table structure for t_sys_street
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_street`;
+CREATE TABLE `t_sys_street` (
+  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增列',
+  `street_code` varchar(40) NOT NULL COMMENT '街道代码',
+  `area_code` varchar(40) DEFAULT NULL COMMENT '父级区代码',
+  `street_name` varchar(50) NOT NULL COMMENT '街道名称',
+  `short_name` varchar(30) NOT NULL COMMENT '简称',
+  `lng` varchar(20) DEFAULT NULL COMMENT '经度',
+  `lat` varchar(20) DEFAULT NULL COMMENT '纬度',
+  `sort` int(6) DEFAULT NULL COMMENT '排序',
+  `gmt_create` datetime DEFAULT NULL COMMENT '创建时间',
+  `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+  `memo` varchar(250) DEFAULT NULL COMMENT '备注',
+  `data_state` int(11) DEFAULT NULL COMMENT '状态',
+  PRIMARY KEY (`id`),
+  KEY `Index_1` (`street_code`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='街道设置';
+
+-- ----------------------------
+-- Records of t_sys_street
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for t_sys_user
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_user`;
+CREATE TABLE `t_sys_user` (
+  `id` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '主键',
+  `username` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '用户账号',
+  `password` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '用户密码',
+  `nickname` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '昵称',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='用户表';
+
+-- ----------------------------
+-- Records of t_sys_user
+-- ----------------------------
+INSERT INTO `t_sys_user` VALUES ('1', 'admin', '21232f297a57a5a743894a0e4a801fc3', '管理员');
+
+-- ----------------------------
+-- Table structure for t_test
+-- ----------------------------
+DROP TABLE IF EXISTS `t_test`;
+CREATE TABLE `t_test` (
+  `id` varchar(255) NOT NULL COMMENT '主键',
+  `name` varchar(255) DEFAULT NULL COMMENT '名称',
+  `age` int(11) DEFAULT NULL COMMENT '性别',
+  `cratetime` datetime DEFAULT NULL COMMENT '创建时间',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='测试表';
+
+-- ----------------------------
+-- Records of t_test
+-- ----------------------------

文件差異過大導致無法顯示
+ 3719 - 0
doc/t_sys_area.sql


+ 431 - 0
doc/t_sys_city.sql

@@ -0,0 +1,431 @@
+/*
+Navicat MySQL Data Transfer
+
+Source Server         : 127.0.0.1_3306
+Source Server Version : 50725
+Source Host           : 127.0.0.1:3306
+Source Database       : gyee
+
+Target Server Type    : MYSQL
+Target Server Version : 50725
+File Encoding         : 65001
+
+Date: 2019-10-05 01:42:59
+*/
+
+SET FOREIGN_KEY_CHECKS=0;
+
+-- ----------------------------
+-- Table structure for t_sys_city
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_city`;
+CREATE TABLE `t_sys_city` (
+  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增列',
+  `city_code` varchar(40) NOT NULL COMMENT '市代码',
+  `city_name` varchar(40) NOT NULL COMMENT '市名称',
+  `short_name` varchar(20) NOT NULL COMMENT '简称',
+  `province_code` varchar(40) DEFAULT NULL COMMENT '省代码',
+  `lng` varchar(20) DEFAULT NULL COMMENT '经度',
+  `lat` varchar(20) DEFAULT NULL COMMENT '纬度',
+  `sort` int(6) DEFAULT NULL COMMENT '排序',
+  `gmt_create` datetime DEFAULT NULL COMMENT '创建时间',
+  `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+  `memo` varchar(250) DEFAULT NULL COMMENT '备注',
+  `data_state` int(11) DEFAULT NULL COMMENT '状态',
+  PRIMARY KEY (`id`),
+  KEY `Index_1` (`city_code`)
+) ENGINE=InnoDB AUTO_INCREMENT=391 DEFAULT CHARSET=utf8 COMMENT='城市设置';
+
+-- ----------------------------
+-- Records of t_sys_city
+-- ----------------------------
+INSERT INTO `t_sys_city` VALUES ('1', '110100', '北京市', '北京', '110000', '116.405289', '39.904987', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('2', '120100', '天津市', '天津', '120000', '117.190186', '39.125595', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('3', '130100', '石家庄市', '石家庄', '130000', '114.502464', '38.045475', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('4', '130200', '唐山市', '唐山', '130000', '118.175392', '39.635113', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('5', '130300', '秦皇岛市', '秦皇岛', '130000', '119.586578', '39.942532', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('6', '130400', '邯郸市', '邯郸', '130000', '114.490685', '36.612274', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('7', '130500', '邢台市', '邢台', '130000', '114.50885', '37.068199', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('8', '130600', '保定市', '保定', '130000', '115.48233', '38.867657', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('9', '130700', '张家口市', '张家口', '130000', '114.884094', '40.811901', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('10', '130800', '承德市', '承德', '130000', '117.939156', '40.976204', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('11', '130900', '沧州市', '沧州', '130000', '116.85746', '38.310581', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('12', '131000', '廊坊市', '廊坊', '130000', '116.704437', '39.523926', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('13', '131100', '衡水市', '衡水', '130000', '115.665993', '37.735096', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('14', '140100', '太原市', '太原', '140000', '112.549248', '37.857014', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('15', '140200', '大同市', '大同', '140000', '113.295258', '40.090309', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('16', '140300', '阳泉市', '阳泉', '140000', '113.583282', '37.861187', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('17', '140400', '长治市', '长治', '140000', '113.113556', '36.191113', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('18', '140500', '晋城市', '晋城', '140000', '112.851273', '35.497555', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('19', '140600', '朔州市', '朔州', '140000', '112.433388', '39.331261', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('20', '140700', '晋中市', '晋中', '140000', '112.736465', '37.696495', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('21', '140800', '运城市', '运城', '140000', '111.00396', '35.022778', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('22', '140900', '忻州市', '忻州', '140000', '112.733536', '38.41769', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('23', '141000', '临汾市', '临汾', '140000', '111.517975', '36.084148', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('24', '141100', '吕梁市', '吕梁', '140000', '111.134338', '37.524364', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('25', '150100', '呼和浩特市', '呼和浩特', '150000', '111.670799', '40.81831', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('26', '150200', '包头市', '包头', '150000', '109.840408', '40.658169', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('27', '150300', '乌海市', '乌海', '150000', '106.825562', '39.673733', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('28', '150400', '赤峰市', '赤峰', '150000', '118.956802', '42.275318', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('29', '150500', '通辽市', '通辽', '150000', '122.263123', '43.617428', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('30', '150600', '鄂尔多斯市', '鄂尔多斯', '150000', '109.990288', '39.817181', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('31', '150700', '呼伦贝尔市', '呼伦贝尔', '150000', '119.758171', '49.215332', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('32', '150800', '巴彦淖尔市', '巴彦淖尔', '150000', '107.416962', '40.757401', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('33', '150900', '乌兰察布市', '乌兰察布', '150000', '113.11454', '41.034126', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('34', '152200', '兴安盟', '兴安', '150000', '122.07032', '46.076267', '12', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('35', '152500', '锡林郭勒盟', '锡林郭勒', '150000', '116.090996', '43.944019', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('36', '152900', '阿拉善盟', '阿拉善', '150000', '105.706421', '38.844814', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('37', '210100', '沈阳市', '沈阳', '210000', '123.429092', '41.796768', '12', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('38', '210200', '大连市', '大连', '210000', '121.618622', '38.914589', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('39', '210300', '鞍山市', '鞍山', '210000', '122.995628', '41.110626', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('40', '210400', '抚顺市', '抚顺', '210000', '123.921112', '41.875957', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('41', '210500', '本溪市', '本溪', '210000', '123.770515', '41.297909', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('42', '210600', '丹东市', '丹东', '210000', '124.383041', '40.124294', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('43', '210700', '锦州市', '锦州', '210000', '121.135742', '41.11927', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('44', '210800', '营口市', '营口', '210000', '122.235153', '40.667431', '14', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('45', '210900', '阜新市', '阜新', '210000', '121.648964', '42.011795', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('46', '211000', '辽阳市', '辽阳', '210000', '123.181519', '41.269402', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('47', '211100', '盘锦市', '盘锦', '210000', '122.069572', '41.124485', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('48', '211200', '铁岭市', '铁岭', '210000', '123.844276', '42.290585', '13', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('49', '211300', '朝阳市', '朝阳', '210000', '120.45118', '41.576759', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('50', '211400', '葫芦岛市', '葫芦岛', '210000', '120.856392', '40.755573', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('51', '220100', '长春市', '长春', '220000', '125.324501', '43.886841', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('52', '220200', '吉林市', '吉林', '220000', '126.553017', '43.843578', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('53', '220300', '四平市', '四平', '220000', '124.370789', '43.170345', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('54', '220400', '辽源市', '辽源', '220000', '125.145348', '42.902691', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('55', '220500', '通化市', '通化', '220000', '125.936501', '41.721176', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('56', '220600', '白山市', '白山', '220000', '126.427841', '41.942505', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('57', '220700', '松原市', '松原', '220000', '124.823608', '45.118244', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('58', '220800', '白城市', '白城', '220000', '122.84111', '45.619026', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('59', '222400', '延边朝鲜族自治州', '延边朝鲜族', '220000', '129.513229', '42.904823', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('60', '230100', '哈尔滨市', '哈尔滨', '230000', '126.642464', '45.756966', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('61', '230200', '齐齐哈尔市', '齐齐哈尔', '230000', '123.957916', '47.342079', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('62', '230300', '鸡西市', '鸡西', '230000', '130.975967', '45.300045', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('63', '230400', '鹤岗市', '鹤岗', '230000', '130.277481', '47.332085', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('64', '230500', '双鸭山市', '双鸭山', '230000', '131.157303', '46.64344', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('65', '230600', '大庆市', '大庆', '230000', '125.112717', '46.590733', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('66', '230700', '伊春市', '伊春', '230000', '128.899399', '47.724773', '13', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('67', '230800', '佳木斯市', '佳木斯', '230000', '130.361633', '46.809605', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('68', '230900', '七台河市', '七台河', '230000', '131.015579', '45.771267', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('69', '231000', '牡丹江市', '牡丹江', '230000', '129.618607', '44.582962', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('70', '231100', '黑河市', '黑河', '230000', '127.499023', '50.249584', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('71', '231200', '绥化市', '绥化', '230000', '126.992928', '46.637394', '12', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('72', '232700', '大兴安岭地区', '大兴安岭', '230000', '124.711525', '52.335262', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('73', '310100', '上海市', '上海', '310000', '121.472641', '31.231707', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('74', '320100', '南京市', '南京', '320000', '118.76741', '32.041546', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('75', '320200', '无锡市', '无锡', '320000', '120.301666', '31.57473', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('76', '320300', '徐州市', '徐州', '320000', '117.184814', '34.261791', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('77', '320400', '常州市', '常州', '320000', '119.946976', '31.772753', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('78', '320500', '苏州市', '苏州', '320000', '120.619583', '31.299379', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('79', '320600', '南通市', '南通', '320000', '120.864609', '32.016212', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('80', '320700', '连云港市', '连云港', '320000', '119.178818', '34.600018', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('81', '320800', '淮安市', '淮安', '320000', '119.021263', '33.597507', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('82', '320900', '盐城市', '盐城', '320000', '120.139999', '33.377632', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('83', '321000', '扬州市', '扬州', '320000', '119.421005', '32.393158', '12', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('84', '321100', '镇江市', '镇江', '320000', '119.452751', '32.204403', '13', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('85', '321200', '泰州市', '泰州', '320000', '119.915176', '32.484882', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('86', '321300', '宿迁市', '宿迁', '320000', '118.275162', '33.963009', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('87', '330100', '杭州市', '杭州', '330000', '120.15358', '30.287458', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('88', '330200', '宁波市', '宁波', '330000', '121.549789', '29.868387', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('89', '330300', '温州市', '温州', '330000', '120.672112', '28.000574', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('90', '330400', '嘉兴市', '嘉兴', '330000', '120.750862', '30.762653', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('91', '330500', '湖州市', '湖州', '330000', '120.102402', '30.867199', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('92', '330600', '绍兴市', '绍兴', '330000', '120.582115', '29.997116', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('93', '330700', '金华市', '金华', '330000', '119.649506', '29.089523', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('94', '330800', '衢州市', '衢州', '330000', '118.872627', '28.941708', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('95', '330900', '舟山市', '舟山', '330000', '122.106865', '30.016027', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('96', '331000', '台州市', '台州', '330000', '121.428596', '28.661379', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('97', '331100', '丽水市', '丽水', '330000', '119.921783', '28.451994', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('98', '340100', '合肥市', '合肥', '340000', '117.283043', '31.861191', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('99', '340200', '芜湖市', '芜湖', '340000', '118.37645', '31.326319', '15', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('100', '340300', '蚌埠市', '蚌埠', '340000', '117.363228', '32.939667', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('101', '340400', '淮南市', '淮南', '340000', '117.018326', '32.647575', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('102', '340500', '马鞍山市', '马鞍山', '340000', '118.507904', '31.689362', '12', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('103', '340600', '淮北市', '淮北', '340000', '116.794662', '33.971706', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('104', '340700', '铜陵市', '铜陵', '340000', '117.816574', '30.929935', '14', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('105', '340800', '安庆市', '安庆', '340000', '117.043549', '30.508829', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('106', '341000', '黄山市', '黄山', '340000', '118.317322', '29.709238', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('107', '341100', '滁州市', '滁州', '340000', '118.316261', '32.303627', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('108', '341200', '阜阳市', '阜阳', '340000', '115.819733', '32.896969', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('109', '341300', '宿州市', '宿州', '340000', '116.984085', '33.633892', '13', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('110', '341500', '六安市', '六安', '340000', '116.507675', '31.75289', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('111', '341600', '亳州市', '亳州', '340000', '115.782936', '33.869339', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('112', '341700', '池州市', '池州', '340000', '117.489159', '30.656036', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('113', '341800', '宣城市', '宣城', '340000', '118.757996', '30.945667', '16', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('114', '350100', '福州市', '福州', '350000', '119.306236', '26.075302', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('115', '350200', '厦门市', '厦门', '350000', '118.110222', '24.490475', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('116', '350300', '莆田市', '莆田', '350000', '119.007561', '25.431011', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('117', '350400', '三明市', '三明', '350000', '117.635002', '26.265444', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('118', '350500', '泉州市', '泉州', '350000', '118.589424', '24.908854', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('119', '350600', '漳州市', '漳州', '350000', '117.661804', '24.510897', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('120', '350700', '南平市', '南平', '350000', '118.178459', '26.635628', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('121', '350800', '龙岩市', '龙岩', '350000', '117.029778', '25.091602', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('122', '350900', '宁德市', '宁德', '350000', '119.527084', '26.659241', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('123', '360100', '南昌市', '南昌', '360000', '115.892151', '28.676493', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('124', '360200', '景德镇市', '景德镇', '360000', '117.214661', '29.292561', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('125', '360300', '萍乡市', '萍乡', '360000', '113.852188', '27.622946', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('126', '360400', '九江市', '九江', '360000', '115.992813', '29.712034', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('127', '360500', '新余市', '新余', '360000', '114.930832', '27.810835', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('128', '360600', '鹰潭市', '鹰潭', '360000', '117.033836', '28.238638', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('129', '360700', '赣州市', '赣州', '360000', '114.940277', '25.850969', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('130', '360800', '吉安市', '吉安', '360000', '114.986374', '27.111698', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('131', '360900', '宜春市', '宜春', '360000', '114.391136', '27.8043', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('132', '361000', '抚州市', '抚州', '360000', '116.358353', '27.98385', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('133', '361100', '上饶市', '上饶', '360000', '117.971184', '28.44442', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('134', '370100', '济南市', '济南', '370000', '117.000923', '36.675808', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('135', '370200', '青岛市', '青岛', '370000', '120.355171', '36.082981', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('136', '370300', '淄博市', '淄博', '370000', '118.047646', '36.814938', '17', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('137', '370400', '枣庄市', '枣庄', '370000', '117.557961', '34.856422', '16', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('138', '370500', '东营市', '东营', '370000', '118.664711', '37.434563', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('139', '370600', '烟台市', '烟台', '370000', '121.39138', '37.539295', '15', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('140', '370700', '潍坊市', '潍坊', '370000', '119.107079', '36.709251', '13', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('141', '370800', '济宁市', '济宁', '370000', '116.587242', '35.415394', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('142', '370900', '泰安市', '泰安', '370000', '117.129066', '36.194969', '12', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('143', '371000', '威海市', '威海', '370000', '122.116394', '37.509689', '14', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('144', '371100', '日照市', '日照', '370000', '119.461205', '35.428589', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('145', '371200', '莱芜市', '莱芜', '370000', '117.677734', '36.214397', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('146', '371300', '临沂市', '临沂', '370000', '118.326447', '35.065281', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('147', '371400', '德州市', '德州', '370000', '116.307426', '37.453968', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('148', '371500', '聊城市', '聊城', '370000', '115.98037', '36.456013', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('149', '371600', '滨州市', '滨州', '370000', '118.016975', '37.383541', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('150', '371700', '菏泽市', '菏泽', '370000', '115.469383', '35.246532', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('151', '410100', '郑州市', '郑州', '410000', '113.665413', '34.757977', '16', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('152', '410200', '开封市', '开封', '410000', '114.341446', '34.79705', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('153', '410300', '洛阳市', '洛阳', '410000', '112.434471', '34.66304', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('154', '410400', '平顶山市', '平顶山', '410000', '113.307716', '33.735241', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('155', '410500', '安阳市', '安阳', '410000', '114.352486', '36.103443', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('156', '410600', '鹤壁市', '鹤壁', '410000', '114.295441', '35.748238', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('157', '410700', '新乡市', '新乡', '410000', '113.883987', '35.302616', '14', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('158', '410800', '焦作市', '焦作', '410000', '113.238266', '35.23904', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('159', '410881', '济源市', '济源', '410000', '112.59005', '35.090378', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('160', '410900', '濮阳市', '濮阳', '410000', '115.041298', '35.768234', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('161', '411000', '许昌市', '许昌', '410000', '113.826065', '34.022957', '15', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('162', '411100', '漯河市', '漯河', '410000', '114.026405', '33.575855', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('163', '411200', '三门峡市', '三门峡', '410000', '111.194099', '34.777336', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('164', '411300', '南阳市', '南阳', '410000', '112.540916', '32.999081', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('165', '411400', '商丘市', '商丘', '410000', '115.650497', '34.437054', '12', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('166', '411500', '信阳市', '信阳', '410000', '114.075027', '32.123276', '13', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('167', '411600', '周口市', '周口', '410000', '114.649651', '33.620358', '17', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('168', '411700', '驻马店市', '驻马店', '410000', '114.024734', '32.980167', '18', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('169', '420100', '武汉市', '武汉', '420000', '114.298569', '30.584354', '12', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('170', '420200', '黄石市', '黄石', '420000', '115.077049', '30.220074', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('171', '420300', '十堰市', '十堰', '420000', '110.787918', '32.646908', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('172', '420500', '宜昌市', '宜昌', '420000', '111.29084', '30.702637', '17', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('173', '420600', '襄阳市', '襄阳', '420000', '112.14415', '32.042427', '13', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('174', '420700', '鄂州市', '鄂州', '420000', '114.890594', '30.396536', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('175', '420800', '荆门市', '荆门', '420000', '112.204254', '31.035419', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('176', '420900', '孝感市', '孝感', '420000', '113.926659', '30.926422', '16', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('177', '421000', '荆州市', '荆州', '420000', '112.238129', '30.326857', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('178', '421100', '黄冈市', '黄冈', '420000', '114.879364', '30.447712', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('179', '421200', '咸宁市', '咸宁', '420000', '114.328964', '29.832798', '14', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('180', '421300', '随州市', '随州', '420000', '113.373772', '31.717497', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('181', '422800', '恩施土家族苗族自治州', '恩施', '420000', '109.486992', '30.283113', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('182', '429004', '仙桃市', '仙桃', '420000', '113.453972', '30.364952', '15', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('183', '429005', '潜江市', '潜江', '420000', '112.896866', '30.421215', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('184', '429006', '天门市', '天门', '420000', '113.165863', '30.653061', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('185', '429021', '神农架林区', '神农架', '420000', '114.298569', '30.584354', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('186', '430100', '长沙市', '长沙', '430000', '112.982277', '28.19409', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('187', '430200', '株洲市', '株洲', '430000', '113.151733', '27.835806', '14', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('188', '430300', '湘潭市', '湘潭', '430000', '112.944054', '27.829729', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('189', '430400', '衡阳市', '衡阳', '430000', '112.607697', '26.900358', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('190', '430500', '邵阳市', '邵阳', '430000', '111.469231', '27.237843', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('191', '430600', '岳阳市', '岳阳', '430000', '113.132858', '29.370291', '12', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('192', '430700', '常德市', '常德', '430000', '111.691345', '29.040224', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('193', '430800', '张家界市', '张家界', '430000', '110.479919', '29.127401', '13', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('194', '430900', '益阳市', '益阳', '430000', '112.355042', '28.570066', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('195', '431000', '郴州市', '郴州', '430000', '113.032066', '25.793589', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('196', '431100', '永州市', '永州', '430000', '111.608017', '26.434517', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('197', '431200', '怀化市', '怀化', '430000', '109.978241', '27.550081', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('198', '431300', '娄底市', '娄底', '430000', '112.008499', '27.728136', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('199', '433100', '湘西土家族苗族自治州', '湘西', '430000', '109.739738', '28.314297', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('200', '440100', '广州市', '广州', '440000', '113.28064', '23.125177', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('201', '440200', '韶关市', '韶关', '440000', '113.591545', '24.801323', '15', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('202', '440300', '深圳市', '深圳', '440000', '114.085945', '22.547001', '16', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('203', '440400', '珠海市', '珠海', '440000', '113.553986', '22.224979', '22', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('204', '440500', '汕头市', '汕头', '440000', '116.708466', '23.371019', '13', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('205', '440600', '佛山市', '佛山', '440000', '113.122719', '23.028763', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('206', '440700', '江门市', '江门', '440000', '113.09494', '22.590431', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('207', '440800', '湛江市', '湛江', '440000', '110.364975', '21.274899', '19', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('208', '440900', '茂名市', '茂名', '440000', '110.919228', '21.659752', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('209', '441200', '肇庆市', '肇庆', '440000', '112.472527', '23.051546', '20', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('210', '441300', '惠州市', '惠州', '440000', '114.412598', '23.079405', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('211', '441400', '梅州市', '梅州', '440000', '116.117584', '24.299112', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('212', '441500', '汕尾市', '汕尾', '440000', '115.364235', '22.774485', '14', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('213', '441600', '河源市', '河源', '440000', '114.6978', '23.746265', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('214', '441700', '阳江市', '阳江', '440000', '111.975105', '21.859222', '17', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('215', '441800', '清远市', '清远', '440000', '113.051224', '23.685022', '12', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('216', '441900', '东莞市', '东莞', '440000', '113.746262', '23.046238', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('217', '442000', '中山市', '中山', '440000', '113.382393', '22.521112', '21', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('218', '442101', '东沙群岛', '东沙', '440000', '112.552948', '21.810463', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('219', '445100', '潮州市', '潮州', '440000', '116.632301', '23.661701', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('220', '445200', '揭阳市', '揭阳', '440000', '116.355736', '23.543777', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('221', '445300', '云浮市', '云浮', '440000', '112.044441', '22.929802', '18', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('222', '450100', '南宁市', '南宁', '450000', '108.320007', '22.82402', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('223', '450200', '柳州市', '柳州', '450000', '109.411705', '24.314617', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('224', '450300', '桂林市', '桂林', '450000', '110.299118', '25.274216', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('225', '450400', '梧州市', '梧州', '450000', '111.297607', '23.474804', '13', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('226', '450500', '北海市', '北海', '450000', '109.119255', '21.473343', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('227', '450600', '防城港市', '防城港', '450000', '108.345474', '21.614632', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('228', '450700', '钦州市', '钦州', '450000', '108.624176', '21.967127', '12', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('229', '450800', '贵港市', '贵港', '450000', '109.602142', '23.093599', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('230', '450900', '玉林市', '玉林', '450000', '110.154396', '22.631359', '14', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('231', '451000', '百色市', '百色', '450000', '106.616287', '23.897741', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('232', '451100', '贺州市', '贺州', '450000', '111.552055', '24.414141', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('233', '451200', '河池市', '河池', '450000', '108.062103', '24.695898', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('234', '451300', '来宾市', '来宾', '450000', '109.229774', '23.733767', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('235', '451400', '崇左市', '崇左', '450000', '107.353928', '22.404108', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('236', '460100', '海口市', '海口', '460000', '110.331192', '20.031971', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('237', '460200', '三亚市', '三亚', '460000', '109.50827', '18.247871', '15', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('238', '460300', '三沙市', '三沙', '460000', '112.348824', '16.831039', '14', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('239', '469001', '五指山市', '五指山', '460000', '109.516663', '18.77692', '19', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('240', '469002', '琼海市', '琼海', '460000', '110.466782', '19.246012', '12', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('241', '469003', '儋州市', '儋州', '460000', '109.576782', '19.517487', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('242', '469005', '文昌市', '文昌', '460000', '110.753975', '19.612986', '18', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('243', '469006', '万宁市', '万宁', '460000', '110.388794', '18.796215', '17', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('244', '469007', '东方市', '东方', '460000', '108.653786', '19.10198', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('245', '469025', '定安县', '定安', '460000', '110.349236', '19.684965', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('246', '469026', '屯昌县', '屯昌', '460000', '110.102776', '19.362917', '16', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('247', '469027', '澄迈县', '澄迈', '460000', '110.007149', '19.737095', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('248', '469028', '临高县', '临高', '460000', '109.687698', '19.908293', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('249', '469030', '白沙黎族自治县', '白沙', '460000', '109.452606', '19.224585', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('250', '469031', '昌江黎族自治县', '昌江', '460000', '109.053352', '19.260967', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('251', '469033', '乐东黎族自治县', '乐东', '460000', '109.175446', '18.74758', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('252', '469034', '陵水黎族自治县', '陵水', '460000', '110.037216', '18.505007', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('253', '469035', '保亭黎族苗族自治县', '保亭', '460000', '109.702454', '18.636372', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('254', '469036', '琼中黎族苗族自治县', '琼中', '460000', '109.839996', '19.03557', '13', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('255', '500100', '重庆市', '重庆', '500000', '106.504959', '29.533155', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('256', '510100', '成都市', '成都', '510000', '104.065735', '30.659462', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('257', '510300', '自贡市', '自贡', '510000', '104.773445', '29.352764', '20', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('258', '510400', '攀枝花市', '攀枝花', '510000', '101.716003', '26.580446', '16', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('259', '510500', '泸州市', '泸州', '510000', '105.443352', '28.889137', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('260', '510600', '德阳市', '德阳', '510000', '104.398651', '31.127991', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('261', '510700', '绵阳市', '绵阳', '510000', '104.741722', '31.46402', '13', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('262', '510800', '广元市', '广元', '510000', '105.829758', '32.433666', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('263', '510900', '遂宁市', '遂宁', '510000', '105.571327', '30.513311', '17', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('264', '511000', '内江市', '内江', '510000', '105.066139', '29.58708', '15', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('265', '511100', '乐山市', '乐山', '510000', '103.761261', '29.582024', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('266', '511300', '南充市', '南充', '510000', '106.082977', '30.79528', '14', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('267', '511400', '眉山市', '眉山', '510000', '103.831787', '30.048319', '12', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('268', '511500', '宜宾市', '宜宾', '510000', '104.630821', '28.760189', '19', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('269', '511600', '广安市', '广安', '510000', '106.633369', '30.456398', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('270', '511700', '达州市', '达州', '510000', '107.502258', '31.209484', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('271', '511800', '雅安市', '雅安', '510000', '103.00103', '29.987722', '18', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('272', '511900', '巴中市', '巴中', '510000', '106.75367', '31.858809', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('273', '512000', '资阳市', '资阳', '510000', '104.641914', '30.122211', '21', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('274', '513200', '阿坝藏族羌族自治州', '阿坝', '510000', '102.221375', '31.899792', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('275', '513300', '甘孜藏族自治州', '甘孜', '510000', '101.963814', '30.050663', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('276', '513400', '凉山彝族自治州', '凉山', '510000', '102.258743', '27.886763', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('277', '520100', '贵阳市', '贵阳', '520000', '106.713478', '26.578342', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('278', '520200', '六盘水市', '六盘水', '520000', '104.846741', '26.584642', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('279', '520300', '遵义市', '遵义', '520000', '106.937263', '27.706627', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('280', '520400', '安顺市', '安顺', '520000', '105.93219', '26.245544', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('281', '522200', '铜仁市', '铜仁', '520000', '109.191551', '27.718346', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('282', '522300', '黔西南布依族苗族自治州', '黔西南', '520000', '104.897972', '25.08812', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('283', '522400', '毕节市', '毕节', '520000', '105.285011', '27.301693', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('284', '522600', '黔东南苗族侗族自治州', '黔东南', '520000', '107.977486', '26.583351', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('285', '522700', '黔南布依族苗族自治州', '黔南', '520000', '107.517159', '26.258219', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('286', '530100', '昆明市', '昆明', '530000', '102.71225', '25.040609', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('287', '530300', '曲靖市', '曲靖', '530000', '103.797852', '25.501556', '12', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('288', '530400', '玉溪市', '玉溪', '530000', '102.543907', '24.35046', '15', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('289', '530500', '保山市', '保山', '530000', '99.16713', '25.111801', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('290', '530600', '昭通市', '昭通', '530000', '103.717216', '27.337', '16', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('291', '530700', '丽江市', '丽江', '530000', '100.233025', '26.872108', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('292', '530800', '普洱市', '普洱', '530000', '100.972343', '22.777321', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('293', '530900', '临沧市', '临沧', '530000', '100.086967', '23.886566', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('294', '532300', '楚雄彝族自治州', '楚雄', '530000', '101.546043', '25.041988', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('295', '532500', '红河哈尼族彝族自治州', '红河', '530000', '103.384186', '23.366776', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('296', '532600', '文山壮族苗族自治州', '文山', '530000', '104.244011', '23.369511', '13', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('297', '532800', '西双版纳傣族自治州', '西双版纳', '530000', '100.797943', '22.001724', '14', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('298', '532900', '大理白族自治州', '大理', '530000', '100.22567', '25.589449', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('299', '533100', '德宏傣族景颇族自治州', '德宏', '530000', '98.578362', '24.436693', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('300', '533300', '怒江傈僳族自治州', '怒江', '530000', '98.854301', '25.850948', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('301', '533400', '迪庆藏族自治州', '迪庆', '530000', '99.706467', '27.826853', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('302', '540100', '拉萨市', '拉萨', '540000', '91.13221', '29.66036', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('303', '542100', '昌都地区', '昌都', '540000', '97.178452', '31.136875', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('304', '542200', '山南地区', '山南', '540000', '91.766525', '29.236023', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('305', '542300', '日喀则地区', '日喀则', '540000', '88.885147', '29.267519', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('306', '542400', '那曲地区', '那曲', '540000', '92.060211', '31.476004', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('307', '542500', '阿里地区', '阿里', '540000', '80.105499', '32.503185', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('308', '542600', '林芝地区', '林芝', '540000', '94.36235', '29.654694', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('309', '610100', '西安市', '西安', '610000', '108.948021', '34.263161', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('310', '610200', '铜川市', '铜川', '610000', '108.979607', '34.91658', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('311', '610300', '宝鸡市', '宝鸡', '610000', '107.144867', '34.369316', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('312', '610400', '咸阳市', '咸阳', '610000', '108.705116', '34.333439', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('313', '610500', '渭南市', '渭南', '610000', '109.502884', '34.499382', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('314', '610600', '延安市', '延安', '610000', '109.490807', '36.596539', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('315', '610700', '汉中市', '汉中', '610000', '107.028618', '33.077667', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('316', '610800', '榆林市', '榆林', '610000', '109.741196', '38.290161', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('317', '610900', '安康市', '安康', '610000', '109.029274', '32.6903', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('318', '611000', '商洛市', '商洛', '610000', '109.939774', '33.86832', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('319', '620100', '兰州市', '兰州', '620000', '103.823555', '36.058041', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('320', '620200', '嘉峪关市', '嘉峪关', '620000', '98.277306', '39.78653', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('321', '620300', '金昌市', '金昌', '620000', '102.187889', '38.514236', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('322', '620400', '白银市', '白银', '620000', '104.173607', '36.545681', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('323', '620500', '天水市', '天水', '620000', '105.724998', '34.578529', '12', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('324', '620600', '武威市', '武威', '620000', '102.634697', '37.929996', '13', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('325', '620700', '张掖市', '张掖', '620000', '100.455475', '38.932896', '14', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('326', '620800', '平凉市', '平凉', '620000', '106.684692', '35.542789', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('327', '620900', '酒泉市', '酒泉', '620000', '98.510796', '39.744022', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('328', '621000', '庆阳市', '庆阳', '620000', '107.638374', '35.734219', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('329', '621100', '定西市', '定西', '620000', '104.626297', '35.579578', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('330', '621200', '陇南市', '陇南', '620000', '104.929382', '33.388599', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('331', '622900', '临夏回族自治州', '临夏', '620000', '103.212006', '35.599445', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('332', '623000', '甘南藏族自治州', '甘南', '620000', '102.911011', '34.986355', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('333', '630100', '西宁市', '西宁', '630000', '101.778915', '36.623177', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('334', '632100', '海东市', '海东', '630000', '102.103271', '36.502914', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('335', '632200', '海北藏族自治州', '海北', '630000', '100.901062', '36.959435', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('336', '632300', '黄南藏族自治州', '黄南', '630000', '102.019989', '35.517742', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('337', '632500', '海南藏族自治州', '海南藏族', '630000', '100.619545', '36.280354', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('338', '632600', '果洛藏族自治州', '果洛', '630000', '100.242142', '34.473598', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('339', '632700', '玉树藏族自治州', '玉树', '630000', '97.008522', '33.004047', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('340', '632800', '海西蒙古族藏族自治州', '海西', '630000', '97.370789', '37.374664', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('341', '640100', '银川市', '银川', '640000', '106.278175', '38.46637', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('342', '640200', '石嘴山市', '石嘴山', '640000', '106.376175', '39.013329', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('343', '640300', '吴忠市', '吴忠', '640000', '106.199409', '37.986164', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('344', '640400', '固原市', '固原', '640000', '106.28524', '36.004562', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('345', '640500', '中卫市', '中卫', '640000', '105.189568', '37.51495', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('346', '650100', '乌鲁木齐市', '乌鲁木齐', '650000', '87.617729', '43.792816', '17', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('347', '650200', '克拉玛依市', '克拉玛依', '650000', '84.873947', '45.595886', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('348', '652100', '吐鲁番地区', '吐鲁番', '650000', '89.184074', '42.947613', '14', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('349', '652200', '哈密地区', '哈密', '650000', '93.513161', '42.833248', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('350', '652300', '昌吉回族自治州', '昌吉', '650000', '87.304008', '44.014576', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('351', '652700', '博尔塔拉蒙古自治州', '博尔塔拉', '650000', '82.074776', '44.903259', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('352', '652800', '巴音郭楞蒙古自治州', '巴音郭楞', '650000', '86.15097', '41.768551', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('353', '652900', '阿克苏地区', '阿克苏', '650000', '80.265068', '41.170712', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('354', '653000', '克孜勒苏柯尔克孜自治州', '克孜勒苏柯尔克孜', '650000', '76.172829', '39.713432', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('355', '653100', '喀什地区', '喀什', '650000', '75.989136', '39.467663', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('356', '653200', '和田地区', '和田', '650000', '79.925331', '37.110687', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('357', '654000', '伊犁哈萨克自治州', '伊犁', '650000', '81.317947', '43.92186', '18', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('358', '654200', '塔城地区', '塔城', '650000', '82.985733', '46.7463', '13', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('359', '654300', '阿勒泰地区', '阿勒泰', '650000', '88.139633', '47.848392', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('360', '659001', '石河子市', '石河子', '650000', '86.041077', '44.305885', '12', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('361', '659002', '阿拉尔市', '阿拉尔', '650000', '81.285881', '40.541916', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('362', '659003', '图木舒克市', '图木舒克', '650000', '79.07798', '39.867317', '15', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('363', '659004', '五家渠市', '五家渠', '650000', '87.526886', '44.1674', '16', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('364', '710100', '台北市', '台北', '710000', '121.509064', '25.044333', '12', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('365', '710200', '高雄市', '高雄', '710000', '121.509064', '25.044333', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('366', '710300', '台南市', '台南', '710000', '121.509064', '25.044333', '14', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('367', '710400', '台中市', '台中', '710000', '121.509064', '25.044333', '15', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('368', '710500', '金门县', '金门', '710000', '121.509064', '25.044333', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('369', '710600', '南投县', '南投', '710000', '121.509064', '25.044333', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('370', '710700', '基隆市', '基隆', '710000', '121.509064', '25.044333', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('371', '710800', '新竹市', '新竹', '710000', '121.509064', '25.044333', '18', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('372', '710900', '嘉义市', '嘉义', '710000', '121.509064', '25.044333', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('373', '711100', '新北市', '新北', '710000', '121.509064', '25.044333', '17', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('374', '711200', '宜兰县', '宜兰', '710000', '121.509064', '25.044333', '20', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('375', '711300', '新竹县', '新竹', '710000', '121.509064', '25.044333', '19', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('376', '711400', '桃园县', '桃园', '710000', '121.509064', '25.044333', '16', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('377', '711500', '苗栗县', '苗栗', '710000', '121.509064', '25.044333', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('378', '711700', '彰化县', '彰化', '710000', '121.509064', '25.044333', '22', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('379', '711900', '嘉义县', '嘉义', '710000', '121.509064', '25.044333', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('380', '712100', '云林县', '云林', '710000', '121.509064', '25.044333', '21', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('381', '712400', '屏东县', '屏东', '710000', '121.509064', '25.044333', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('382', '712500', '台东县', '台东', '710000', '121.509064', '25.044333', '13', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('383', '712600', '花莲县', '花莲', '710000', '121.509064', '25.044333', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('384', '712700', '澎湖县', '澎湖', '710000', '121.509064', '25.044333', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('385', '712800', '连江县', '连江', '710000', '121.509064', '25.044333', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('386', '810100', '香港岛', '香港岛', '810000', '114.173355', '22.320047', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('387', '810200', '九龙', '九龙', '810000', '114.173355', '22.320047', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('388', '810300', '新界', '新界', '810000', '114.173355', '22.320047', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('389', '820100', '澳门半岛', '澳门半岛', '820000', '113.549133', '22.198751', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_city` VALUES ('390', '820200', '离岛', '离岛', '820000', '113.549088', '22.198952', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');

+ 74 - 0
doc/t_sys_province.sql

@@ -0,0 +1,74 @@
+/*
+Navicat MySQL Data Transfer
+
+Source Server         : 127.0.0.1_3306
+Source Server Version : 50725
+Source Host           : 127.0.0.1:3306
+Source Database       : gyee
+
+Target Server Type    : MYSQL
+Target Server Version : 50725
+File Encoding         : 65001
+
+Date: 2019-10-05 01:42:50
+*/
+
+SET FOREIGN_KEY_CHECKS=0;
+
+-- ----------------------------
+-- Table structure for t_sys_province
+-- ----------------------------
+DROP TABLE IF EXISTS `t_sys_province`;
+CREATE TABLE `t_sys_province` (
+  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增列',
+  `province_code` varchar(40) NOT NULL COMMENT '省份代码',
+  `province_name` varchar(50) NOT NULL COMMENT '省份名称',
+  `short_name` varchar(20) NOT NULL COMMENT '简称',
+  `lng` varchar(20) DEFAULT NULL COMMENT '经度',
+  `lat` varchar(20) DEFAULT NULL COMMENT '纬度',
+  `sort` int(6) DEFAULT NULL COMMENT '排序',
+  `gmt_create` datetime DEFAULT NULL COMMENT '创建时间',
+  `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
+  `memo` varchar(250) DEFAULT NULL COMMENT '备注',
+  `data_state` int(11) DEFAULT NULL COMMENT '状态',
+  PRIMARY KEY (`id`),
+  KEY `Index_1` (`province_code`)
+) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8 COMMENT='省份表';
+
+-- ----------------------------
+-- Records of t_sys_province
+-- ----------------------------
+INSERT INTO `t_sys_province` VALUES ('1', '110000', '北京', '北京', '116.405289', '39.904987', '1', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('2', '120000', '天津', '天津', '117.190186', '39.125595', '2', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('3', '130000', '河北省', '河北', '114.502464', '38.045475', '3', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('4', '140000', '山西省', '山西', '112.549248', '37.857014', '4', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('5', '150000', '内蒙古自治区', '内蒙古', '111.670799', '40.81831', '5', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('6', '210000', '辽宁省', '辽宁', '123.429092', '41.796768', '6', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('7', '220000', '吉林省', '吉林', '125.324501', '43.886841', '7', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('8', '230000', '黑龙江省', '黑龙江', '126.642464', '45.756966', '8', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('9', '310000', '上海', '上海', '121.472641', '31.231707', '9', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('10', '320000', '江苏省', '江苏', '118.76741', '32.041546', '10', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('11', '330000', '浙江省', '浙江', '120.15358', '30.287458', '11', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('12', '340000', '安徽省', '安徽', '117.283043', '31.861191', '12', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('13', '350000', '福建省', '福建', '119.306236', '26.075302', '13', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('14', '360000', '江西省', '江西', '115.892151', '28.676493', '14', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('15', '370000', '山东省', '山东', '117.000923', '36.675808', '15', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('16', '410000', '河南省', '河南', '113.665413', '34.757977', '16', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('17', '420000', '湖北省', '湖北', '114.298569', '30.584354', '17', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('18', '430000', '湖南省', '湖南', '112.982277', '28.19409', '18', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('19', '440000', '广东省', '广东', '113.28064', '23.125177', '19', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('20', '450000', '广西壮族自治区', '广西', '108.320007', '22.82402', '20', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('21', '460000', '海南省', '海南', '110.331192', '20.031971', '21', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('22', '500000', '重庆', '重庆', '106.504959', '29.533155', '22', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('23', '510000', '四川省', '四川', '104.065735', '30.659462', '23', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('24', '520000', '贵州省', '贵州', '106.713478', '26.578342', '24', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('25', '530000', '云南省', '云南', '102.71225', '25.040609', '25', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('26', '540000', '西藏自治区', '西藏', '91.13221', '29.66036', '26', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('27', '610000', '陕西省', '陕西', '108.948021', '34.263161', '27', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('28', '620000', '甘肃省', '甘肃', '103.823555', '36.058041', '28', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('29', '630000', '青海省', '青海', '101.778915', '36.623177', '29', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('30', '640000', '宁夏回族自治区', '宁夏', '106.278175', '38.46637', '30', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('31', '650000', '新疆维吾尔自治区', '新疆', '87.617729', '43.792816', '31', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('32', '710000', '台湾', '台湾', '121.509064', '25.044333', '34', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('33', '810000', '香港特别行政区', '香港', '114.173355', '22.320047', '32', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');
+INSERT INTO `t_sys_province` VALUES ('34', '820000', '澳门特别行政区', '澳门', '113.549088', '22.198952', '33', '2019-02-28 17:16:58', '2019-02-28 17:17:05', '', '0');

文件差異過大導致無法顯示
+ 42401 - 0
doc/t_sys_street.sql


+ 225 - 0
mvnw

@@ -0,0 +1,225 @@
+#!/bin/sh
+# ----------------------------------------------------------------------------
+# 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.
+# ----------------------------------------------------------------------------
+
+# ----------------------------------------------------------------------------
+# Maven2 Start Up Batch script
+#
+# Required ENV vars:
+# ------------------
+#   JAVA_HOME - location of a JDK home dir
+#
+# Optional ENV vars
+# -----------------
+#   M2_HOME - location of maven2's installed home dir
+#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
+#     e.g. to debug Maven itself, use
+#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+# ----------------------------------------------------------------------------
+
+if [ -z "$MAVEN_SKIP_RC" ] ; then
+
+  if [ -f /etc/mavenrc ] ; then
+    . /etc/mavenrc
+  fi
+
+  if [ -f "$HOME/.mavenrc" ] ; then
+    . "$HOME/.mavenrc"
+  fi
+
+fi
+
+# OS specific support.  $var _must_ be set to either true or false.
+cygwin=false;
+darwin=false;
+mingw=false
+case "`uname`" in
+  CYGWIN*) cygwin=true ;;
+  MINGW*) mingw=true;;
+  Darwin*) darwin=true
+    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
+    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
+    if [ -z "$JAVA_HOME" ]; then
+      if [ -x "/usr/libexec/java_home" ]; then
+        export JAVA_HOME="`/usr/libexec/java_home`"
+      else
+        export JAVA_HOME="/Library/Java/Home"
+      fi
+    fi
+    ;;
+esac
+
+if [ -z "$JAVA_HOME" ] ; then
+  if [ -r /etc/gentoo-release ] ; then
+    JAVA_HOME=`java-config --jre-home`
+  fi
+fi
+
+if [ -z "$M2_HOME" ] ; then
+  ## resolve links - $0 may be a link to maven's home
+  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
+
+  saveddir=`pwd`
+
+  M2_HOME=`dirname "$PRG"`/..
+
+  # make it fully qualified
+  M2_HOME=`cd "$M2_HOME" && pwd`
+
+  cd "$saveddir"
+  # echo Using m2 at $M2_HOME
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin ; then
+  [ -n "$M2_HOME" ] &&
+    M2_HOME=`cygpath --unix "$M2_HOME"`
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+  [ -n "$CLASSPATH" ] &&
+    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
+fi
+
+# For Migwn, ensure paths are in UNIX format before anything is touched
+if $mingw ; then
+  [ -n "$M2_HOME" ] &&
+    M2_HOME="`(cd "$M2_HOME"; pwd)`"
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
+  # TODO classpath?
+fi
+
+if [ -z "$JAVA_HOME" ]; then
+  javaExecutable="`which javac`"
+  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
+    # readlink(1) is not available as standard on Solaris 10.
+    readLink=`which readlink`
+    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
+      if $darwin ; then
+        javaHome="`dirname \"$javaExecutable\"`"
+        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
+      else
+        javaExecutable="`readlink -f \"$javaExecutable\"`"
+      fi
+      javaHome="`dirname \"$javaExecutable\"`"
+      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
+      JAVA_HOME="$javaHome"
+      export JAVA_HOME
+    fi
+  fi
+fi
+
+if [ -z "$JAVACMD" ] ; then
+  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
+  else
+    JAVACMD="`which java`"
+  fi
+fi
+
+if [ ! -x "$JAVACMD" ] ; then
+  echo "Error: JAVA_HOME is not defined correctly." >&2
+  echo "  We cannot execute $JAVACMD" >&2
+  exit 1
+fi
+
+if [ -z "$JAVA_HOME" ] ; then
+  echo "Warning: JAVA_HOME environment variable is not set."
+fi
+
+CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
+
+# traverses directory structure from process work directory to filesystem root
+# first directory with .mvn subdirectory is considered project base directory
+find_maven_basedir() {
+
+  if [ -z "$1" ]
+  then
+    echo "Path not specified to find_maven_basedir"
+    return 1
+  fi
+
+  basedir="$1"
+  wdir="$1"
+  while [ "$wdir" != '/' ] ; do
+    if [ -d "$wdir"/.mvn ] ; then
+      basedir=$wdir
+      break
+    fi
+    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
+    if [ -d "${wdir}" ]; then
+      wdir=`cd "$wdir/.."; pwd`
+    fi
+    # end of workaround
+  done
+  echo "${basedir}"
+}
+
+# concatenates all lines of a file
+concat_lines() {
+  if [ -f "$1" ]; then
+    echo "$(tr -s '\n' ' ' < "$1")"
+  fi
+}
+
+BASE_DIR=`find_maven_basedir "$(pwd)"`
+if [ -z "$BASE_DIR" ]; then
+  exit 1;
+fi
+
+export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
+echo $MAVEN_PROJECTBASEDIR
+MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+  [ -n "$M2_HOME" ] &&
+    M2_HOME=`cygpath --path --windows "$M2_HOME"`
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
+  [ -n "$CLASSPATH" ] &&
+    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
+  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
+    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
+fi
+
+WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+exec "$JAVACMD" \
+  $MAVEN_OPTS \
+  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
+  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
+  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"

+ 143 - 0
mvnw.cmd

@@ -0,0 +1,143 @@
+@REM ----------------------------------------------------------------------------
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements.  See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership.  The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License.  You may obtain a copy of the License at
+@REM
+@REM    http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied.  See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+@REM ----------------------------------------------------------------------------
+
+@REM ----------------------------------------------------------------------------
+@REM Maven2 Start Up Batch script
+@REM
+@REM Required ENV vars:
+@REM JAVA_HOME - location of a JDK home dir
+@REM
+@REM Optional ENV vars
+@REM M2_HOME - location of maven2's installed home dir
+@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
+@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
+@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
+@REM     e.g. to debug Maven itself, use
+@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+@REM ----------------------------------------------------------------------------
+
+@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
+@echo off
+@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
+@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
+
+@REM set %HOME% to equivalent of $HOME
+if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
+
+@REM Execute a user defined script before this one
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
+@REM check for pre script, once with legacy .bat ending and once with .cmd ending
+if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
+if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
+:skipRcPre
+
+@setlocal
+
+set ERROR_CODE=0
+
+@REM To isolate internal variables from possible post scripts, we use another setlocal
+@setlocal
+
+@REM ==== START VALIDATION ====
+if not "%JAVA_HOME%" == "" goto OkJHome
+
+echo.
+echo Error: JAVA_HOME not found in your environment. >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+:OkJHome
+if exist "%JAVA_HOME%\bin\java.exe" goto init
+
+echo.
+echo Error: JAVA_HOME is set to an invalid directory. >&2
+echo JAVA_HOME = "%JAVA_HOME%" >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+@REM ==== END VALIDATION ====
+
+:init
+
+@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
+@REM Fallback to current working directory if not found.
+
+set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
+IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
+
+set EXEC_DIR=%CD%
+set WDIR=%EXEC_DIR%
+:findBaseDir
+IF EXIST "%WDIR%"\.mvn goto baseDirFound
+cd ..
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
+set WDIR=%CD%
+goto findBaseDir
+
+:baseDirFound
+set MAVEN_PROJECTBASEDIR=%WDIR%
+cd "%EXEC_DIR%"
+goto endDetectBaseDir
+
+:baseDirNotFound
+set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
+cd "%EXEC_DIR%"
+
+:endDetectBaseDir
+
+IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
+
+@setlocal EnableExtensions EnableDelayedExpansion
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
+
+:endReadAdditionalConfig
+
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
+
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
+set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
+if ERRORLEVEL 1 goto error
+goto end
+
+:error
+set ERROR_CODE=1
+
+:end
+@endlocal & set ERROR_CODE=%ERROR_CODE%
+
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
+@REM check for post script, once with legacy .bat ending and once with .cmd ending
+if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
+if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
+:skipRcPost
+
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
+if "%MAVEN_BATCH_PAUSE%" == "on" pause
+
+if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
+
+exit /B %ERROR_CODE%

+ 494 - 0
pom.xml

@@ -0,0 +1,494 @@
+<?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>
+
+	<groupId>com.example</groupId>
+	<artifactId>springboot_v2</artifactId>
+	<version>3.4</version>
+	<packaging>jar</packaging>
+	<name>springboot_v2</name>
+	<description>springbootv2系统</description>
+
+	<parent>
+		<groupId>org.springframework.boot</groupId>
+		<artifactId>spring-boot-starter-parent</artifactId>
+		<version>2.0.0.RELEASE</version>
+		<relativePath /> <!-- 从存储库查找父级 -->
+	</parent>
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+		<java.version>1.8</java.version>
+		<commons.fileupload.version>1.3.3</commons.fileupload.version>
+		<commons.io.version>2.5</commons.io.version>
+		<tomcat.version>9.0.35</tomcat.version>
+	</properties>
+
+	<!-- https://mvnrepository.com/ 查找jar网站 -->
+	<dependencies>
+		<!-- SpringBoot Web容器 -->
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+		</dependency>
+
+		<!-- SpringBoot集成mybatis框架 -->
+<!--		<dependency>-->
+<!--			<groupId>org.mybatis.spring.boot</groupId>-->
+<!--			<artifactId>mybatis-spring-boot-starter</artifactId>-->
+<!--			<version>1.3.2</version>-->
+<!--		</dependency>-->
+
+
+		<!-- https://mvnrepository.com/artifact/io.netty/netty-all -->
+		<dependency>
+			<groupId>io.netty</groupId>
+			<artifactId>netty-all</artifactId>
+			<version>4.1.36.Final</version>
+		</dependency>
+
+		<!-- By Wang jiawen 从本地类库引入阿里巴巴 fastjson 版本1.27 系统级别 路径根目录lib文件夹下  云地址 https://mvnrepository.com/artifact/com.alibaba/fastjson  -->
+		<dependency>
+			<groupId>fastjson</groupId>
+			<artifactId>fastjson</artifactId>
+			<version>1.2.17</version>
+			<scope>system</scope>
+			<systemPath>${project.basedir}/src/main/resources/lib/fastjson-1.2.17.jar</systemPath>
+		</dependency>
+
+
+		<!--By Wang jiawen lombok 从云引入 目的提供get set方法-->
+		<dependency>
+			<groupId>org.projectlombok</groupId>
+			<artifactId>lombok</artifactId>
+			<version>1.18.12</version>
+		</dependency>
+
+
+
+		<!-- SpringBoot 测试 -->
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-test</artifactId>
+			<scope>test</scope>
+		</dependency>
+		<!-- 添加swagger2 -->
+		<dependency>
+			<groupId>io.springfox</groupId>
+			<artifactId>springfox-swagger2</artifactId>
+			<version>2.7.0</version>
+		</dependency>
+		<!-- swagger2-UI -->
+		<dependency>
+			<groupId>io.springfox</groupId>
+			<artifactId>springfox-swagger-ui</artifactId>
+			<version>2.7.0</version>
+		</dependency>
+		<!--GSON -->
+		<dependency>
+			<groupId>com.google.code.gson</groupId>
+			<artifactId>gson</artifactId>
+		</dependency>
+		<!-- pageHelper -->
+		<dependency>
+			<groupId>com.github.pagehelper</groupId>
+			<artifactId>pagehelper-spring-boot-starter</artifactId>
+			<version>1.2.5</version>
+		</dependency>
+		<!--GSON -->
+		<dependency>
+			<groupId>com.google.code.gson</groupId>
+			<artifactId>gson</artifactId>
+		</dependency>
+		<!-- pageHelper -->
+		<dependency>
+			<groupId>com.github.pagehelper</groupId>
+			<artifactId>pagehelper-spring-boot-starter</artifactId>
+			<version>1.2.5</version>
+		</dependency>
+		<!-- mysql驱动7.0-->
+		<dependency>
+			<groupId>mysql</groupId>
+			<artifactId>mysql-connector-java</artifactId>
+			<version>5.1.40</version>
+		</dependency>
+		<dependency>
+			<groupId>com.oracle</groupId>
+			<artifactId>ojdbc6</artifactId>
+			<version>11.2.0.3</version>
+		</dependency>
+
+		<!-- mysql驱动8.0
+		 <dependency>
+		 	<groupId>mysql</groupId>
+		 	<artifactId>mysql-connector-java</artifactId>
+			<version>8.0.11</version>
+		 </dependency>
+		 -->
+		<!--druid 数据源监控-->
+		<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
+		<dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>druid-spring-boot-starter</artifactId>
+			<version>1.1.10</version>
+		</dependency>
+		<!-- shiro权限 -->
+		<dependency>
+			<groupId>org.apache.shiro</groupId>
+			<artifactId>shiro-spring</artifactId>
+			<version>1.4.0</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-aop</artifactId>
+		</dependency>
+		<!-- shiro权限支持thymeleaf -->
+		<dependency>
+			<groupId>com.github.theborakompanioni</groupId>
+			<artifactId>thymeleaf-extras-shiro</artifactId>
+			<version>2.0.0</version>
+		</dependency>
+
+		<!-- thymeleaf模版 -->
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-thymeleaf</artifactId>
+		</dependency>
+
+		<!--常用工具类 -->
+		<dependency>
+			<groupId>org.apache.commons</groupId>
+			<artifactId>commons-lang3</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>commons-lang</groupId>
+			<artifactId>commons-lang</artifactId>
+			<version>2.4</version>
+		</dependency>
+
+		<!--io常用工具类 -->
+		<dependency>
+			<groupId>commons-io</groupId>
+			<artifactId>commons-io</artifactId>
+			<version>${commons.io.version}</version>
+		</dependency>
+
+		<!--文件上传工具类 -->
+		<dependency>
+			<groupId>commons-fileupload</groupId>
+			<artifactId>commons-fileupload</artifactId>
+			<version>${commons.fileupload.version}</version>
+		</dependency>
+
+
+		<!-- 热部署 -->
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-devtools</artifactId>
+			<optional>true</optional>
+		</dependency>
+
+		<!-- Hutool是一个Java工具包 http://hutool.cn/ -->
+		<dependency>
+			<groupId>cn.hutool</groupId>
+			<artifactId>hutool-all</artifactId>
+			<version>4.1.12</version>
+		</dependency>
+		<!-- google验证码 -->
+		<dependency>
+			<groupId>com.github.penggle</groupId>
+			<artifactId>kaptcha</artifactId>
+			<version>2.3.2</version>
+		</dependency>
+		<!-- https://mvnrepository.com/artifact/org.apache.velocity/velocity -->
+		<dependency>
+			<groupId>org.apache.velocity</groupId>
+			<artifactId>velocity</artifactId>
+			<version>1.7</version>
+		</dependency>
+		<!-- websocket -->
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-websocket</artifactId>
+		</dependency>
+		<!-- 配置文件读取 -->
+		<dependency>
+			<groupId>commons-configuration</groupId>
+			<artifactId>commons-configuration</artifactId>
+			<version>1.10</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-configuration-processor</artifactId>
+			<optional>true</optional>
+		</dependency>
+
+		<!-- mail -->
+		<dependency>
+			<groupId>javax.mail</groupId>
+			<artifactId>mail</artifactId>
+			<version>1.4.7</version>
+		</dependency>
+
+		<!--百度UEditor依赖的jar包 -->
+		<!--		<dependency>
+                    <groupId>org.json</groupId>
+                    <artifactId>json</artifactId>
+                    <version>20180813</version>
+                </dependency>-->
+		<dependency>
+			<groupId>commons-codec</groupId>
+			<artifactId>commons-codec</artifactId>
+			<version>1.9</version>
+		</dependency>
+		<dependency>
+			<groupId>ueditor</groupId>
+			<artifactId>1.1.2</artifactId>
+			<version>1.8</version>
+			<scope>system</scope>
+			<systemPath>${project.basedir}/src/main/resources/lib/ueditor-1.1.2.jar</systemPath>
+		</dependency>
+		<!--quartz依赖-->
+		<dependency>
+			<groupId>org.quartz-scheduler</groupId>
+			<artifactId>quartz</artifactId>
+			<version>2.2.1</version>
+		</dependency>
+		<!-- 七牛云 -->
+		<dependency>
+			<groupId>com.qiniu</groupId>
+			<artifactId>qiniu-java-sdk</artifactId>
+			<version>[7.2.0, 7.2.99]</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-configuration-processor</artifactId>
+			<optional>true</optional>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-data-redis</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.mongodb</groupId>
+			<artifactId>mongo-java-driver</artifactId>
+			<version>3.10.2</version>
+		</dependency>
+		<dependency>
+			<groupId>redis.clients</groupId>
+			<artifactId>jedis</artifactId>
+			<version>2.9.0</version>
+		</dependency>
+		<dependency>
+			<groupId>com.baomidou</groupId>
+			<artifactId>mybatis-plus-core</artifactId>
+			<version>3.3.2</version>
+		</dependency>
+		<dependency>
+			<groupId>com.baomidou</groupId>
+			<artifactId>mybatis-plus-boot-starter</artifactId>
+			<version>3.3.2</version>
+		</dependency>
+		<!--代码生成器-->
+		<dependency>
+			<groupId>com.baomidou</groupId>
+			<artifactId>mybatis-plus-generator</artifactId>
+			<version>3.3.2</version>
+		</dependency>
+		<dependency>
+			<groupId>com.baomidou</groupId>
+			<artifactId>mybatis-plus-extension</artifactId>
+			<version>3.3.2</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.tomcat</groupId>
+			<artifactId>tomcat-juli</artifactId>
+			<version>${tomcat.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.tomcat.embed</groupId>
+			<artifactId>tomcat-embed-core</artifactId>
+			<version>${tomcat.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.tomcat.embed</groupId>
+			<artifactId>tomcat-embed-el</artifactId>
+			<version>${tomcat.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.tomcat.embed</groupId>
+			<artifactId>tomcat-embed-websocket</artifactId>
+			<version>${tomcat.version}</version>
+		</dependency>
+	</dependencies>
+
+
+
+	<!--<build>
+		&lt;!&ndash; 打包不带版本号 &ndash;&gt;
+		&lt;!&ndash; <finalName>springboot_v2</finalName> &ndash;&gt;
+		<plugins>
+			&lt;!&ndash; JUnit 配置 &ndash;&gt;
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+	 			<artifactId>maven-surefire-plugin</artifactId>
+	 			&lt;!&ndash;忽略测试启动类 &ndash;&gt;
+				<configuration>
+					<skip>true</skip>
+				</configuration>
+			</plugin>
+			&lt;!&ndash; generator 配置&ndash;&gt;
+			<plugin>
+				<groupId>org.mybatis.generator</groupId>
+				<artifactId>mybatis-generator-maven-plugin</artifactId>
+				<version>1.3.7</version>
+				<configuration>
+					&lt;!&ndash;允许移动生成的文件 &ndash;&gt;
+					<verbose>false</verbose>
+					&lt;!&ndash;允许覆盖生成的文件 &ndash;&gt;
+					<overwrite>false</overwrite>
+					&lt;!&ndash;配置文件的路径 &ndash;&gt;
+					<configurationFile>src/main/resources/mybatis-generator.xml</configurationFile>
+				</configuration>
+				<dependencies>
+					<dependency>
+						<groupId>mysql</groupId>
+						<artifactId>mysql-connector-java</artifactId>
+						<version>${mysql.version}</version>
+					</dependency>
+				</dependencies>
+			</plugin>
+			&lt;!&ndash; jar运行配置 &ndash;&gt;
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>-->
+
+	<build>
+		<plugins>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<!--忽略测试启动类 -->
+				<configuration>
+					<skip>true</skip>
+				</configuration>
+			</plugin>
+			<!-- generator 配置-->
+			<plugin>
+				<groupId>org.mybatis.generator</groupId>
+				<artifactId>mybatis-generator-maven-plugin</artifactId>
+				<version>1.3.7</version>
+				<configuration>
+					<!--允许移动生成的文件 -->
+					<verbose>false</verbose>
+					<!--允许覆盖生成的文件 -->
+					<overwrite>false</overwrite>
+					<!--配置文件的路径 -->
+					<configurationFile>src/main/resources/mybatis-generator.xml</configurationFile>
+				</configuration>
+				<dependencies>
+<!--					<dependency>-->
+<!--						<groupId>mysql</groupId>-->
+<!--						<artifactId>mysql-connector-java</artifactId>-->
+<!--						<version>${mysql.version}</version>-->
+<!--					</dependency>-->
+					<dependency>
+						<groupId>com.microsoft.sqlserver</groupId>
+						<artifactId>sqljdbc4</artifactId>
+						<version>4.0</version>
+					</dependency>
+<!--					<dependency>-->
+<!--						<groupId>com.oracle</groupId>-->
+<!--						<artifactId>ojdbc6</artifactId>-->
+<!--						<version>11.2.0.3</version>-->
+<!--					</dependency>-->
+				</dependencies>
+			</plugin>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+				<configuration>
+					<fork>true</fork>
+				</configuration>
+			</plugin>
+
+
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+				<configuration>
+					<fork>true</fork>
+				</configuration>
+			</plugin>
+
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-war-plugin</artifactId>
+				<version>2.3</version>
+				<configuration>
+					<webResources>
+						<resource>
+							<directory>${project.basedir}/src/main/resources/lib</directory>
+							<targetPath>BOOT-INF/lib/</targetPath>
+							<includes>
+								<include>**/*.jar</include>
+							</includes>
+						</resource>
+					</webResources>
+				</configuration>
+			</plugin>
+
+		</plugins>
+		<!-- <resources>
+             <resource>
+                 <directory>src/main/resources/lib</directory>
+                 <targetPath>BOOT-INF/lib/</targetPath>
+                 <includes>
+                     <include>**/*.jar</include>
+                 </includes>
+             </resource>
+             <resource>
+                 <directory>src/main/resources</directory>
+                 <targetPath>BOOT-INF/classes/</targetPath>
+             </resource>
+     </resources>-->
+	</build>
+
+	<!-- 阿里云maven仓库 -->
+	<repositories>
+		<repository>
+			<id>public</id>
+			<name>aliyun nexus</name>
+			<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
+			<releases>
+				<enabled>true</enabled>
+			</releases>
+		</repository>
+	</repositories>
+
+	<pluginRepositories>
+		<pluginRepository>
+			<id>public</id>
+			<name>aliyun nexus</name>
+			<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
+			<releases>
+				<enabled>true</enabled>
+			</releases>
+			<snapshots>
+				<enabled>false</enabled>
+			</snapshots>
+		</pluginRepository>
+	</pluginRepositories>
+
+
+</project>

+ 199 - 0
src/main/java/com/gyee/MpGenerator.java

@@ -0,0 +1,199 @@
+package com.gyee;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.InjectionConfig;
+import com.baomidou.mybatisplus.generator.config.*;
+import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
+import com.baomidou.mybatisplus.generator.config.converts.SqlServerTypeConvert;
+import com.baomidou.mybatisplus.generator.config.po.TableInfo;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 图形开票代码生成器  mybatis-plus
+ */
+public class MpGenerator {
+
+    //项目路径
+    private static String canonicalPath = "";
+
+    //基本包名
+    private static String basePackage = "com.gyee.frame";
+    //作者
+    private static String authorName = "chenmh";
+    //要生成的表名
+    private static String[] tables = {"GYEEPERMISSION","GYEECONTACTS"};
+    //table前缀
+    private static String prefix = "";
+
+    //数据库类型
+    private static DbType dbType = DbType.SQL_SERVER;
+    //数据库配置四要素
+    private static String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
+    private static String url = "jdbc:sqlserver://10.155.32.2:1433;DatabaseName=test";
+//    private static String driverName = "com.mysql.jdbc.Driver";
+//    private static String url = "jdbc:mysql://localhost:3306/assemb?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false";
+    private static String username = "sa";
+    private static String password = "Gyee@321#!";
+
+    public static void main(String[] args) {
+        AutoGenerator gen = new AutoGenerator();
+
+        /**
+         * 获取项目路径
+         */
+        try {
+            canonicalPath = new File("").getCanonicalPath();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        /**
+         * 数据库配置
+         */
+        gen.setDataSource(new DataSourceConfig()
+                .setDbType(dbType)
+                .setDriverName(driverName)
+                .setUrl(url)
+                .setUsername(username)
+                .setPassword(password)
+                .setTypeConvert(new SqlServerTypeConvert() {
+                    // 自定义数据库表字段类型转换【可选】
+                    //@Override
+                    //public DbColumnType processTypeConvert(String fieldType) {
+                    ////System.out.println("转换类型:" + fieldType);
+                    // if ( fieldType.toLowerCase().contains( "tinyint" ) ) {
+                    //    return DbColumnType.BOOLEAN;
+                    // }
+                    //return super.processTypeConvert(fieldType);
+                    //}
+                }));
+
+        /**
+         * 全局配置
+         */
+        gen.setGlobalConfig(new GlobalConfig()
+                .setOutputDir( canonicalPath + "/src/main/java")//输出目录
+                .setFileOverride(true)// 是否覆盖文件
+                .setActiveRecord(true)// 开启 activeRecord 模式
+                .setEnableCache(false)// XML 二级缓存
+                .setBaseResultMap(true)// XML ResultMap
+                .setBaseColumnList(true)// XML columList
+                .setOpen(false)//生成后打开文件夹
+                .setAuthor(authorName)
+                // 自定义文件命名,注意 %s 会自动填充表实体属性!
+                .setMapperName("%sMapper")
+                .setXmlName("%sMapper")
+                .setServiceName("%sService")
+                .setServiceImplName("%sServiceImpl")
+                .setControllerName("%sController")
+        );
+
+        /**
+         * 策略配置
+         */
+        gen.setStrategy(new StrategyConfig()
+                        // .setCapitalMode(true)// 全局大写命名
+                        //.setDbColumnUnderline(true)//全局下划线命名
+                        .setTablePrefix(new String[]{prefix})// 此处可以修改为您的表前缀
+                        .setNaming(NamingStrategy.underline_to_camel)// 表名生成策略
+                        .setInclude(tables) // 需要生成的表
+                        .setRestControllerStyle(true)
+                        //.setExclude(new String[]{"test"}) // 排除生成的表
+                        // 自定义实体父类
+                        // .setSuperEntityClass("com.baomidou.demo.TestEntity")
+                        // 自定义实体,公共字段
+                        //.setSuperEntityColumns(new String[]{"test_id"})
+                        //.setTableFillList(tableFillList)
+                        // 自定义 mapper 父类 默认BaseMapper
+                        //.setSuperMapperClass("com.baomidou.mybatisplus.mapper.BaseMapper")
+                        // 自定义 service 父类 默认IService
+                        // .setSuperServiceClass("com.baomidou.demo.TestService")
+                        // 自定义 service 实现类父类 默认ServiceImpl
+                        // .setSuperServiceImplClass("com.baomidou.demo.TestServiceImpl")
+                        // 自定义 controller 父类
+                        //.setSuperControllerClass("com.kichun."+packageName+".controller.AbstractController")
+                        // 【实体】是否生成字段常量(默认 false)
+                        // public static final String ID = "test_id";
+                        // .setEntityColumnConstant(true)
+                        // 【实体】是否为构建者模型(默认 false)
+                        // public User setName(String name) {this.name = name; return this;}
+                        // .setEntityBuilderModel(true)
+                        // 【实体】是否为lombok模型(默认 false)<a href="https://projectlombok.org/">document</a>
+                        .setEntityLombokModel(true)
+                // Boolean类型字段是否移除is前缀处理
+                // .setEntityBooleanColumnRemoveIsPrefix(true)
+                // .setRestControllerStyle(true)
+                // .setControllerMappingHyphenStyle(true)
+        );
+
+        /**
+         * 包配置
+         */
+        gen.setPackageInfo(new PackageConfig()
+                //.setModuleName("User")
+                .setParent(basePackage)// 自定义包路径
+                .setController("controller.ticket")// 这里是控制器包名,默认 web
+                .setEntity("model.ticket") // 设置Entity包名,默认entity
+                .setMapper("mapper.ticket") // 设置Mapper包名,默认mapper
+                .setService("service.ticket") // 设置Service包名,默认service
+                .setServiceImpl("service.impl.ticket") // 设置Service Impl包名,默认service.impl
+//                .setXml("mapper") // 设置Mapper XML包名,默认mapper.xml
+        );
+
+        /**
+         * 注入自定义配置
+         */
+        // 注入自定义配置,可以在 VM 中使用 cfg.abc 设置的值
+        InjectionConfig abc = new InjectionConfig() {
+            @Override
+            public void initMap() {
+                Map<String, Object> map = new HashMap<String, Object>();
+                map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
+                this.setMap(map);
+            }
+        };
+        //自定义文件输出位置(非必须)
+        List<FileOutConfig> fileOutList = new ArrayList<FileOutConfig>();
+        fileOutList.add(new FileOutConfig("/templates/mapper.xml.vm") {
+            @Override
+            public String outputFile(TableInfo tableInfo) {
+                return canonicalPath + "/src/main/resources/mybatis/ticket/" + tableInfo.getEntityName() + "Mapper.xml";
+            }
+        });
+        abc.setFileOutConfigList(fileOutList);
+        gen.setCfg(abc);
+
+        /**
+         * 指定模板引擎 默认是VelocityTemplateEngine ,需要引入相关引擎依赖
+         */
+        //gen.setTemplateEngine(new FreemarkerTemplateEngine());
+
+        /**
+         * 模板配置
+         */
+        gen.setTemplate(
+                // 关闭默认 xml 生成,调整生成 至 根目录
+                new TemplateConfig().setXml(null)
+                // 自定义模板配置,模板可以参考源码 /mybatis-plus/src/main/resources/template 使用 copy
+                // 至您项目 src/main/resources/template 目录下,模板名称也可自定义如下配置:
+                // .setController("...");
+                // .setEntity("...");
+                // .setMapper("...");
+                // .setXml("...");
+                // .setService("...");
+                // .setServiceImpl("...");
+        );
+
+        // 执行生成
+        gen.execute();
+
+    }
+}

+ 25 - 0
src/main/java/com/gyee/SpringbootStart.java

@@ -0,0 +1,25 @@
+package com.gyee;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
+
+
+/**
+ * 项目启动方法
+ * @author gyee
+ *
+ */
+@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
+public class SpringbootStart {
+
+    public static void main(String[] args) throws Exception {
+
+    	
+        SpringApplication.run(SpringbootStart.class, args);
+
+        //System.out.println("******************项目启动完成*************************");
+    }
+}

+ 19 - 0
src/main/java/com/gyee/SpringbootWebInitializer.java

@@ -0,0 +1,19 @@
+package com.gyee;
+
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+
+/**
+* @ClassName: SpringbootWebInitializer
+* @Description: web容器中进行部署
+* @author gyee
+* @date 2018年8月18日
+*
+*/
+public class SpringbootWebInitializer  extends SpringBootServletInitializer{
+	@Override
+    protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
+    {
+        return application.sources(SpringbootStart.class);
+    }
+}

+ 188 - 0
src/main/java/com/gyee/SqlSeverTicket.java

@@ -0,0 +1,188 @@
+package com.gyee;
+
+
+import net.coobird.thumbnailator.Thumbnails;
+
+import javax.imageio.ImageIO;
+import java.awt.geom.AffineTransform;
+import java.awt.image.AffineTransformOp;
+import java.awt.image.BufferedImage;
+import java.io.*;
+import java.sql.*;
+import java.util.*;
+
+/**
+ * 图形开票 人员电子签名  数据库人员处理
+ */
+public class SqlSeverTicket {
+
+    public static void main(String []args) throws SQLException {
+
+        String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
+        //加载JDBC驱动
+        String dbURL = "jdbc:sqlserver://10.155.32.2:1433;DatabaseName=fdeam";
+        //连接服务器和数据库
+        String userName = "sa"; //默认用户名
+        String userPwd = "Gyee@321#!"; //密码
+        Connection conn = null;
+        try {
+            Class.forName(driverName);
+            conn = DriverManager.getConnection(dbURL, userName, userPwd);
+            //System.out.println("Connection Successful!");
+            //如果连接成功 控制台输出Connection  Successful!
+//            Map<String, List> labor = getLabor(conn);
+//            setLabor(conn, labor);
+//            List<String> list = getLabors(conn);
+//            for(int i = 0; i < list.size(); i++){
+//                setImage(conn, "D:/document/两票相关材料/人员电子签名/电子签名thumb2/" + list.get(i).toLowerCase() +".png", list.get(i).toLowerCase());
+//            }
+            setImage(conn, "D:/document/两票相关材料/zhongmy.png", "zhongmy");
+
+            //        String fileName = "wangbing.png";
+//
+//        String filePath1 = "D:/document/两票相关材料/人员电子签名/";
+//        String filePath2 = "D:/document/两票相关材料/";
+//        batchThumb(filePath1, filePath2);
+//        singleThumb(filePath1, filePath2, "zhongmy.png");
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            conn.close();
+        }
+    }
+
+    // 获取人员信息
+    public static Map<String, List> getLabor(Connection conn){
+        Map<String, List> labors = new HashMap<>();
+
+        try {
+            PreparedStatement ps = conn.prepareStatement("select * from LABOR");
+            ResultSet rs = ps.executeQuery();
+            while(rs.next()){
+                List<String> list = new ArrayList<>();
+                String laborNum = rs.getString("LABORNUM");
+                String laborName = rs.getString("LABORNAME");
+                String deptNum = rs.getString("DEPTNUM");
+                list.add(0, laborName);
+                list.add(1, deptNum);
+                labors.put(laborNum, list);
+            }
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+
+        return labors;
+    }
+
+    public static List<String> getLabors(Connection conn){
+        List<String> list = new ArrayList<>();
+
+        try {
+            PreparedStatement ps = conn.prepareStatement("select * from SIGNPICTURE");
+            ResultSet rs = ps.executeQuery();
+            while(rs.next()){
+                String laborNum = rs.getString("LABORNUM");
+                list.add(laborNum);
+            }
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+
+        return list;
+    }
+
+    // signpicture表插入人员信息
+    public static void setLabor(Connection conn, Map map) throws SQLException {
+        List<String> lists = new ArrayList<>();
+        try {
+            PreparedStatement ps = conn.prepareStatement("select * from SIGNPICTURE");
+            ResultSet rs = ps.executeQuery();
+            while(rs.next()){
+                String laborNum = rs.getString("LABORNUM");
+                lists.add(laborNum);
+            }
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+
+        PreparedStatement ps = null;
+        try {
+            ps = conn.prepareStatement("Insert into SIGNPICTURE (LABORNUM,LABORNAME,DEPTNUM) values (?,?,?)");
+            Iterator<Map.Entry<String, List>> entries = map.entrySet().iterator();
+            while(entries.hasNext()){
+                Map.Entry<String, List> entry = entries.next();
+                String key = entry.getKey();
+                if(!lists.contains(key))
+                {
+                    List list = entry.getValue();
+                    ps.setString(1,key);
+                    ps.setString(2, String.valueOf(list.get(0)));
+                    ps.setString(3, String.valueOf(list.get(1)));
+//                ps.setBinaryStream(3,fis,(int)file.length());
+                    ps.executeUpdate();
+                }
+            }
+            ps.close();
+        } catch (SQLException e) {
+            e.printStackTrace();
+        } finally {
+            ps.close();
+        }
+    }
+
+    /**
+     * 写入图片
+     * @param conn
+     * @param filePath
+     */
+    public static void setImage(Connection conn, String filePath, String laborNum)
+    {
+        FileInputStream fis=null;
+        File file = new File(filePath);
+        try{
+            fis = new FileInputStream(file);
+        }catch(FileNotFoundException e){
+            //System.out.println("Not find file!");
+        }
+        try{
+//            PreparedStatement ps = conn.prepareStatement("Insert into SIGNPICTURE (IMAGE) values (?)");
+            PreparedStatement ps = conn.prepareStatement("update SIGNPICTURE set IMAGE = ? where LABORNUM = '"+laborNum+"'");
+            ps.setBinaryStream(1,fis,(int)file.length());
+            ps.executeUpdate();
+            ps.close();
+            fis.close();
+            //System.out.println("写进去了!");
+        }catch(Exception e){
+            //System.out.println("fis cann't cloase!");
+        }
+    }
+
+
+    // 图片签名处理
+    private static void batchThumb(String filePath1, String filePath2){
+        File file = new File(filePath1);
+        File[] files = file.listFiles();
+        if(files != null){
+            for(int i = 0; i < files.length; i++){
+                String fileName = files[i].getName();
+
+                try {
+                    Thumbnails.of(filePath1 + fileName)
+                            .size(100, 40)
+                            .toFile(filePath2 + fileName);
+                } catch (IOException e) {
+                    e.printStackTrace();
+                } finally {
+                    continue;
+                }
+            }
+        }
+    }
+
+    // 图片签名处理
+    private static void singleThumb(String filePath1, String filePath2, String fileName) throws IOException {
+        Thumbnails.of(filePath1 + fileName)
+                .size(100, 40)
+                .toFile(filePath2 + fileName);
+    }
+}

+ 75 - 0
src/main/java/com/gyee/frame/aspect/VerificationAspect.java

@@ -0,0 +1,75 @@
+package com.gyee.frame.aspect;
+
+
+import com.gyee.frame.common.exception.TicketException;
+import com.gyee.frame.model.ticket.Ibsusers;
+import com.gyee.frame.model.ticket.TokenUser;
+import com.gyee.frame.service.ticket.IbsusersService;
+import com.gyee.frame.service.ticket.LaborService;
+import com.gyee.frame.service.ticket.ShiroService;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Date;
+
+@Aspect
+@Component
+public class VerificationAspect {
+
+    @Autowired
+    ShiroService shiroService;
+    @Autowired
+    IbsusersService ibsusersService;
+    @Autowired
+    LaborService laborService;
+
+
+    @Pointcut("execution(* com.gyee.frame.controller.ticket.*.*(..))")
+    public void pointcut(){}
+
+    @Before("pointcut()")
+    public void signVerification() {
+        ServletRequestAttributes requestAttributes =
+                (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+        HttpServletRequest request = requestAttributes.getRequest();
+
+        String url = request.getRequestURI();
+        String token = request.getHeader("token");
+        if (url != null && url.contains("sys/login")) {
+            /**
+             * 登录更新token
+             */
+            TokenUser user = shiroService.findToken(token);
+            /**
+             * user == null 表示第一次登录
+             */
+            if (user == null)
+                return;
+
+            Ibsusers users = ibsusersService.findUser(user.getLaborNum(), user.getPassword());
+            /**
+             *  如果users == null 表示之前的登录信息和现有的登录信息不一致
+             */
+            if (users == null)
+                throw new TicketException("请登录后使用");
+        } else {
+            TokenUser user = shiroService.findToken(token);
+            if (user == null)
+                throw new TicketException("请登录后使用");
+
+            long expireTime = user.getExpireTime();
+            long nowTime = new Date().getTime();
+            /**
+             * 判断登录是否过期
+             */
+            if (nowTime - expireTime > shiroService.EXPIRE)
+                throw new TicketException("请登录后使用");
+        }
+    }
+}

+ 160 - 0
src/main/java/com/gyee/frame/common/base/BaseController.java

@@ -0,0 +1,160 @@
+package com.gyee.frame.common.base;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.gyee.frame.common.domain.AjaxResult;
+import com.gyee.frame.model.custom.TitleVo;
+import com.gyee.frame.service.*;
+import com.gyee.frame.util.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.propertyeditors.CustomDateEditor;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.InitBinder;
+
+/**
+ * web层通用数据处理
+* @ClassName: BaseController
+* @author gyee
+* @date 2018年8月18日
+*
+ */
+@Controller
+public class BaseController
+{
+	//系统用户
+	@Autowired
+	public SysUserService sysUserService; 
+	
+	//系统角色
+	@Autowired
+	public SysRoleService sysRoleService; 
+	
+	//权限
+	@Autowired
+	public SysPermissionService sysPermissionService;
+	
+	//文件上传
+	@Autowired
+	public SysFileService sysFileService;
+	
+	//文件存储
+	@Autowired
+	public SysDatasService sysDatasService;
+	
+	//文件存储管理表
+	@Autowired
+	public SysFileDatasService sysFileDatasService;
+	
+	//日志操作
+	@Autowired
+	public SysOperLogService sysOperLogService;
+	//公告
+	@Autowired
+	public SysNoticeService sysNoticeService;
+
+	/*文件上传云库*/
+    @Autowired
+    public QiNiuCloudService qiNiuCloudService;
+    /**
+     * 将前台传递过来的日期格式的字符串,自动转化为Date类型
+     */
+    @InitBinder
+    public void initBinder(WebDataBinder binder)
+    {
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        dateFormat.setLenient(false);
+        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
+    }
+
+
+    /**
+     * 响应返回结果
+     * 
+     * @param rows 影响行数
+     * @return 操作结果
+     */
+    protected AjaxResult toAjax(int rows)
+    {
+        return rows > 0 ? success() : error();
+    }
+
+    /**
+     * 返回成功
+     */
+    public AjaxResult success()
+    {
+        return AjaxResult.success();
+    }
+
+    /**
+     * 返回失败消息
+     */
+    public AjaxResult error()
+    {
+        return AjaxResult.error();
+    }
+
+    /**
+     * 返回成功消息
+     */
+    public AjaxResult success(String message)
+    {
+        return AjaxResult.success(message);
+    }
+    
+
+    /**
+     * 返回失败消息
+     */
+    public AjaxResult error(String message)
+    {
+        return AjaxResult.error(message);
+    }
+
+    /**
+     * 返回错误码消息
+     */
+    public AjaxResult error(int code, String message)
+    {
+        return AjaxResult.error(code, message);
+    }
+    
+    /**
+     * 返回object数据
+     */
+    public AjaxResult retobject(int code, Object  data)
+    {
+        return AjaxResult.successData(code, data);
+    }
+
+    /**
+     * 页面跳转
+     */
+    public String redirect(String url)
+    {
+        return StringUtils.format("redirect:{}", url);
+    }
+    
+    
+    /**
+     * 设置标题通用方法
+     * @param model
+     */
+    public void setTitle(ModelMap map,TitleVo titleVo){
+    	//标题
+    	map.put("title",titleVo.getTitle());
+    	map.put("parenttitle",titleVo.getParenttitle());
+		//是否打开欢迎语
+    	map.put("isMsg",titleVo.isMsg());
+		//欢迎语
+    	map.put("msgHTML",titleVo.getMsgHtml());
+		//小控件
+    	map.put("isControl",titleVo.isControl());
+		map.put("isribbon", titleVo.isIsribbon());
+    }
+
+   
+}

+ 33 - 0
src/main/java/com/gyee/frame/common/base/BaseService.java

@@ -0,0 +1,33 @@
+package com.gyee.frame.common.base;
+
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+/**
+ * 抽象类BaseService
+* @ClassName: BaseService
+* @Description: TODO(Service实现这个)
+* @author gyee
+* @date 2018年6月3日
+*
+ */
+public interface BaseService<T,T2> {
+	
+    int deleteByPrimaryKey(String id);
+
+    int insertSelective(T record);
+
+    T selectByPrimaryKey(String id);
+   
+    int updateByPrimaryKeySelective(T record);
+    
+    int updateByExampleSelective(@Param("record") T record, @Param("example") T2 example);
+
+    int updateByExample(@Param("record") T record, @Param("example") T2 example);
+    
+    List<T> selectByExample(T2 example);
+
+    long countByExample(T2 example);
+
+    int deleteByExample(T2 example);
+
+}

+ 268 - 0
src/main/java/com/gyee/frame/common/base/PageInfo.java

@@ -0,0 +1,268 @@
+package com.gyee.frame.common.base;
+
+import java.io.Serializable;
+import java.util.List;
+
+import com.github.pagehelper.Page;
+
+@SuppressWarnings({"rawtypes", "unchecked"})
+public class PageInfo<T> implements Serializable {
+    private static final long serialVersionUID = 1L;
+    //当前页
+    private int pageNum;
+    //每页的数量
+    private int pageSize;
+    //当前页的数量
+    private int size;
+    //由于startRow和endRow不常用,这里说个具体的用法
+    //可以在页面中"显示startRow到endRow 共size条数据"
+
+    //当前页面第一个元素在数据库中的行号
+    private int startRow;
+    //当前页面最后一个元素在数据库中的行号
+    private int endRow;
+    //总记录数
+    private long total;
+    //总页数
+    private int pages;
+    //结果集
+    private List<T> list;
+
+    //第一页
+    private int firstPage;
+    //前一页
+    private int prePage;
+    //下一页
+    private int nextPage;
+    //最后一页
+    private int lastPage;
+
+    //是否为第一页
+    private boolean isFirstPage = false;
+    //是否为最后一页
+    private boolean isLastPage = false;
+    //是否有前一页
+    private boolean hasPreviousPage = false;
+    //是否有下一页
+    private boolean hasNextPage = false;
+    //导航页码数
+    private int navigatePages;
+    //所有导航页号
+    private int[] navigatepageNums;
+
+    /**
+     * 包装Page对象
+     *
+     * @param list
+     */
+    public PageInfo(List<T> list) {
+        this(list, 8);
+    }
+
+    /**
+     * 包装Page对象
+     *
+     * @param list          page结果
+     * @param navigatePages 页码数量
+     */
+    public PageInfo(List<T> list, int navigatePages) {
+        if (list instanceof Page) {
+            Page page = (Page) list;
+            this.pageNum = page.getPageNum();
+            this.pageSize = page.getPageSize();
+
+            this.total = page.getTotal();
+            this.pages = page.getPages();
+            this.list = page;
+            this.size = page.size();
+            //由于结果是>startRow的,所以实际的需要+1
+            if (this.size == 0) {
+                this.startRow = 0;
+                this.endRow = 0;
+            } else {
+                this.startRow = page.getStartRow() + 1;
+                //计算实际的endRow(最后一页的时候特殊)
+                this.endRow = this.startRow - 1 + this.size;
+            }
+            this.navigatePages = navigatePages;
+            //计算导航页
+            calcNavigatepageNums();
+            //计算前后页,第一页,最后一页
+            calcPage();
+            //判断页面边界
+            judgePageBoudary();
+        }
+    }
+
+    /**
+     * 计算导航页
+     */
+    private void calcNavigatepageNums() {
+        //当总页数小于或等于导航页码数时
+        if (pages <= navigatePages) {
+            navigatepageNums = new int[pages];
+            for (int i = 0; i < pages; i++) {
+                navigatepageNums[i] = i + 1;
+            }
+        } else { //当总页数大于导航页码数时
+            navigatepageNums = new int[navigatePages];
+            int startNum = pageNum - navigatePages / 2;
+            int endNum = pageNum + navigatePages / 2;
+
+            if (startNum < 1) {
+                startNum = 1;
+                //(最前navigatePages页
+                for (int i = 0; i < navigatePages; i++) {
+                    navigatepageNums[i] = startNum++;
+                }
+            } else if (endNum > pages) {
+                endNum = pages;
+                //最后navigatePages页
+                for (int i = navigatePages - 1; i >= 0; i--) {
+                    navigatepageNums[i] = endNum--;
+                }
+            } else {
+                //所有中间页
+                for (int i = 0; i < navigatePages; i++) {
+                    navigatepageNums[i] = startNum++;
+                }
+            }
+        }
+    }
+
+    /**
+     * 计算前后页,第一页,最后一页
+     */
+    private void calcPage() {
+        if (navigatepageNums != null && navigatepageNums.length > 0) {
+            firstPage = navigatepageNums[0];
+            lastPage = navigatepageNums[navigatepageNums.length - 1];
+            if (pageNum > 1) {
+                prePage = pageNum - 1;
+            }
+            if (pageNum < pages) {
+                nextPage = pageNum + 1;
+            }
+        }
+    }
+
+    /**
+     * 判定页面边界
+     */
+    private void judgePageBoudary() {
+        isFirstPage = pageNum == 1;
+        isLastPage = pageNum == pages;
+        hasPreviousPage = pageNum > 1;
+        hasNextPage = pageNum < pages;
+    }
+
+    public void setPageNum(int pageNum) {
+        this.pageNum = pageNum;
+    }
+
+    public int getPageNum() {
+        return pageNum;
+    }
+
+    public int getPageSize() {
+        return pageSize;
+    }
+
+    public int getSize() {
+        return size;
+    }
+
+    public int getStartRow() {
+        return startRow;
+    }
+
+    public int getEndRow() {
+        return endRow;
+    }
+
+    public long getTotal() {
+        return total;
+    }
+
+    public int getPages() {
+        return pages;
+    }
+
+    public List<T> getList() {
+        return list;
+    }
+
+    public int getFirstPage() {
+        return firstPage;
+    }
+
+    public int getPrePage() {
+        return prePage;
+    }
+
+    public int getNextPage() {
+        return nextPage;
+    }
+
+    public int getLastPage() {
+        return lastPage;
+    }
+
+    public boolean isIsFirstPage() {
+        return isFirstPage;
+    }
+
+    public boolean isIsLastPage() {
+        return isLastPage;
+    }
+
+    public boolean isHasPreviousPage() {
+        return hasPreviousPage;
+    }
+
+    public boolean isHasNextPage() {
+        return hasNextPage;
+    }
+
+    public int getNavigatePages() {
+        return navigatePages;
+    }
+
+    public int[] getNavigatepageNums() {
+        return navigatepageNums;
+    }
+
+    @Override
+    public String toString() {
+        final StringBuffer sb = new StringBuffer("PageInfo{");
+        sb.append("pageNum=").append(pageNum);
+        sb.append(", pageSize=").append(pageSize);
+        sb.append(", size=").append(size);
+        sb.append(", startRow=").append(startRow);
+        sb.append(", endRow=").append(endRow);
+        sb.append(", total=").append(total);
+        sb.append(", pages=").append(pages);
+        sb.append(", list=").append(list);
+        sb.append(", firstPage=").append(firstPage);
+        sb.append(", prePage=").append(prePage);
+        sb.append(", nextPage=").append(nextPage);
+        sb.append(", lastPage=").append(lastPage);
+        sb.append(", isFirstPage=").append(isFirstPage);
+        sb.append(", isLastPage=").append(isLastPage);
+        sb.append(", hasPreviousPage=").append(hasPreviousPage);
+        sb.append(", hasNextPage=").append(hasNextPage);
+        sb.append(", navigatePages=").append(navigatePages);
+        sb.append(", navigatepageNums=");
+        if (navigatepageNums == null){
+        	sb.append("null");
+        }else {
+            sb.append('[');
+            for (int i = 0; i < navigatepageNums.length; ++i){
+            	sb.append(i == 0 ? "" : ", ").append(navigatepageNums[i]);
+            }
+            sb.append(']');
+        }
+        sb.append('}');
+        return sb.toString();
+    }
+}

+ 21 - 0
src/main/java/com/gyee/frame/common/conf/DevelopMentPropsConfig.java

@@ -0,0 +1,21 @@
+package com.gyee.frame.common.conf;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @author Wang Jiawen
+ * @purpose 读取地址信息
+ * @date 2020-03-09 13:03
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix="developmentprops") //接收application.yml中的myProps下面的属性
+public class DevelopMentPropsConfig {
+    private String vuePrefixAddress;
+    private String backstagePrefixAddress;
+    private Map<String,String> mapProps;
+}

+ 27 - 0
src/main/java/com/gyee/frame/common/conf/ExceptJobConfig.java

@@ -0,0 +1,27 @@
+package com.gyee.frame.common.conf;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * 不启动调入任务的websocket函数
+ *
+ * @author gyee
+ */
+@Component
+@ConfigurationProperties(prefix = "exceptjob")
+public class ExceptJobConfig
+{
+
+    public  static Map<String,String> exceptmaps;
+
+    public static Map<String, String> getExceptmaps() {
+        return exceptmaps;
+    }
+
+    public static void setExceptmaps(Map<String, String> exceptmaps) {
+        ExceptJobConfig.exceptmaps = exceptmaps;
+    }
+}

+ 25 - 0
src/main/java/com/gyee/frame/common/conf/GoldenConfig.java

@@ -0,0 +1,25 @@
+package com.gyee.frame.common.conf;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 读取项目相关配置
+ * 
+ * @author gyee
+ */
+
+@Configuration
+@ConfigurationProperties(prefix = "golden")
+public class GoldenConfig
+{
+    public static String baseurl;
+
+    public static String getBaseurl() {
+        return baseurl;
+    }
+
+    public static void setBaseurl(String baseurl) {
+        GoldenConfig.baseurl = baseurl;
+    }
+}

+ 42 - 0
src/main/java/com/gyee/frame/common/conf/ImgConfiguration.java

@@ -0,0 +1,42 @@
+package com.gyee.frame.common.conf;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class ImgConfiguration implements WebMvcConfigurer {
+    private static final Logger log = LoggerFactory.getLogger(ImgConfiguration.class);
+//    @Override
+//    public void addResourceHandlers(ResourceHandlerRegistry registry) {
+//        /**
+//         * @Description: 对文件的路径进行配置, 创建一个虚拟路径/templates/** ,即只要在<img src="/templates/picName.jpg" />便可以直接引用图片
+//         *这是图片的物理路径  "file:/+本地图片的地址"
+//         */
+//        registry.addResourceHandler("/templates/**").addResourceLocations
+//                ("file:/E:/IdeaProjects/gaygserver/src/main/resources/static/");
+////        registry.addResourceHandler("/templates/**").addResourceLocations("classpath:/static/");
+//        super.addResourceHandlers(registry);
+//    }
+
+    @Override
+    public void addResourceHandlers(ResourceHandlerRegistry registry) {
+
+        String imgurl=V2Config.imgurl;
+        imgurl="file:"+imgurl;
+        log.info("**************初始化图片存储路径******************");
+        log.info(imgurl);
+        log.info("********************************");
+        registry.addResourceHandler("/IMGURL/**").addResourceLocations(imgurl);
+
+        String audurl=V2Config.audurl;
+        audurl="file:"+audurl;
+        log.info("**************初始化音频存储路径******************");
+        log.info(audurl);
+        log.info("********************************");
+        registry.addResourceHandler("/ADUURL/**").addResourceLocations(audurl);
+
+    }
+}

+ 72 - 0
src/main/java/com/gyee/frame/common/conf/KaptchaConfig.java

@@ -0,0 +1,72 @@
+package com.gyee.frame.common.conf;
+
+import java.util.Properties;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import com.google.code.kaptcha.impl.DefaultKaptcha;
+import com.google.code.kaptcha.util.Config;
+
+/**
+ * 谷歌验证码配置文件
+ * @author gyee 
+ * @date: 2018年9月12日 上午11:02:13
+ */
+@Configuration
+public class KaptchaConfig {
+	 @Bean(name = "captchaProducer")
+	    public DefaultKaptcha getKaptchaBean()
+	    {
+	        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
+	        Properties properties = new Properties();
+	        //是否有边框  默认为true  我们可以自己设置yes,no  
+	        properties.setProperty("kaptcha.border", "yes");
+	        //边框颜色   默认为Color.BLACK  
+	        properties.setProperty("kaptcha.border.color", "105,179,90");
+	        //验证码文本字符颜色  默认为Color.BLACK  
+	        properties.setProperty("kaptcha.textproducer.font.color", "blue");
+	        //验证码图片宽度  默认为200
+	        properties.setProperty("kaptcha.image.width", "200");
+	        //验证码图片高度  默认为50
+	        properties.setProperty("kaptcha.image.height", "50");
+	        // 验证码文本字符大小  默认为40
+	        properties.setProperty("kaptcha.textproducer.font.size", "40");
+	        //session key
+	        properties.setProperty("kaptcha.session.key", "kaptchaCode");
+	        // 验证码文本字符间距  默认为2  
+	        properties.setProperty("kaptcha.textproducer.char.spac", "35");
+	        //验证码文本字符长度  默认为5  
+	        properties.setProperty("kaptcha.textproducer.char.length", "4");
+	        //验证码文本字体样式  默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize) 
+	        properties.setProperty("kaptcha.textproducer.font.names", "Arial,Courier");
+	        //验证码噪点颜色   默认为Color.BLACK  
+	        properties.setProperty("kaptcha.noise.color", "white");
+	        Config config = new Config(properties);
+	        defaultKaptcha.setConfig(config);
+	        return defaultKaptcha;
+	    }
+
+	    @Bean(name = "captchaProducerMath")
+	    public DefaultKaptcha getKaptchaBeanMath()
+	    {
+	        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
+	        Properties properties = new Properties();
+	        properties.setProperty("kaptcha.border", "yes");
+	        properties.setProperty("kaptcha.border.color", "158,167,179");
+	        properties.setProperty("kaptcha.textproducer.font.color", "blue");
+	        properties.setProperty("kaptcha.image.width", "100");
+	        properties.setProperty("kaptcha.image.height", "30");
+	        properties.setProperty("kaptcha.textproducer.font.size", "30");
+	        properties.setProperty("kaptcha.session.key", "kaptchaCodeMath");
+	        properties.setProperty("kaptcha.textproducer.impl", "com.gyee.frame.common.support.KaptchaTextCreator");
+	        properties.setProperty("kaptcha.textproducer.char.spac", "5");
+	        properties.setProperty("kaptcha.textproducer.char.length", "6");
+	        properties.setProperty("kaptcha.textproducer.font.names", "Arial,Courier");
+	        properties.setProperty("kaptcha.noise.color", "white");
+	        properties.setProperty("kaptcha.noise.impl", "com.google.code.kaptcha.impl.NoNoise");
+	        properties.setProperty("kaptcha.obscurificator.impl", "com.google.code.kaptcha.impl.ShadowGimpy");
+	        Config config = new Config(properties);
+	        defaultKaptcha.setConfig(config);
+	        return defaultKaptcha;
+	    }
+}

+ 80 - 0
src/main/java/com/gyee/frame/common/conf/MongodbConfig.java

@@ -0,0 +1,80 @@
+package com.gyee.frame.common.conf;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 读取项目相关配置
+ * 
+ * @author gyee
+ */
+@Data
+@Configuration
+@ConfigurationProperties(prefix = "mongodb")
+public class MongodbConfig
+{
+    public static String mongodb_ip;
+    public static String mongodb_port;
+    public static String mongodb_perHost;
+    public static String mongodb_threadsAllowed;
+    public static String mongodb_connectTimeout;
+    public static String mongodb_maxWaitTime;
+    public static String mongodb_socketTimeout;
+
+    public static String getMongodb_ip() {
+        return mongodb_ip;
+    }
+
+    public static void setMongodb_ip(String mongodb_ip) {
+        MongodbConfig.mongodb_ip = mongodb_ip;
+    }
+
+    public static String getMongodb_port() {
+        return mongodb_port;
+    }
+
+    public static void setMongodb_port(String mongodb_port) {
+        MongodbConfig.mongodb_port = mongodb_port;
+    }
+
+    public static String getMongodb_perHost() {
+        return mongodb_perHost;
+    }
+
+    public static void setMongodb_perHost(String mongodb_perHost) {
+        MongodbConfig.mongodb_perHost = mongodb_perHost;
+    }
+
+    public static String getMongodb_threadsAllowed() {
+        return mongodb_threadsAllowed;
+    }
+
+    public static void setMongodb_threadsAllowed(String mongodb_threadsAllowed) {
+        MongodbConfig.mongodb_threadsAllowed = mongodb_threadsAllowed;
+    }
+
+    public static String getMongodb_connectTimeout() {
+        return mongodb_connectTimeout;
+    }
+
+    public static void setMongodb_connectTimeout(String mongodb_connectTimeout) {
+        MongodbConfig.mongodb_connectTimeout = mongodb_connectTimeout;
+    }
+
+    public static String getMongodb_maxWaitTime() {
+        return mongodb_maxWaitTime;
+    }
+
+    public static void setMongodb_maxWaitTime(String mongodb_maxWaitTime) {
+        MongodbConfig.mongodb_maxWaitTime = mongodb_maxWaitTime;
+    }
+
+    public static String getMongodb_socketTimeout() {
+        return mongodb_socketTimeout;
+    }
+
+    public static void setMongodb_socketTimeout(String mongodb_socketTimeout) {
+        MongodbConfig.mongodb_socketTimeout = mongodb_socketTimeout;
+    }
+}

+ 119 - 0
src/main/java/com/gyee/frame/common/conf/MybatisConfig.java

@@ -0,0 +1,119 @@
+package com.gyee.frame.common.conf;
+
+
+import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
+import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
+import com.gyee.frame.common.dataSources.DataSourceType;
+import com.gyee.frame.common.dataSources.DynamicDataSource;
+import org.apache.ibatis.plugin.Interceptor;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import javax.sql.DataSource;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+/**
+ * Mybatis多数据源配置
+ * 参考文章:https://www.cnblogs.com/geekdc/p/10963476.html
+ * @ClassName: MybatisConfig
+ * @author gyee
+ * @date 2019-12-06 21:11
+ */
+@Configuration
+@EnableTransactionManagement
+@MapperScan(basePackages = "com.gyee.frame.mapper")
+public class MybatisConfig {
+	
+	@Bean(name = "master")
+    @ConfigurationProperties("spring.datasource.druid.master")
+    public DataSource masterDataSource()
+    {
+        return DruidDataSourceBuilder.create().build();
+    }
+
+    @Bean(name = "slave")
+    @ConfigurationProperties("spring.datasource.druid.slave")
+//    @ConditionalOnProperty(prefix = "spring.datasource.druid.slave", name = "enabled", havingValue = "true")
+    public DataSource slaveDataSource()
+    {
+        return DruidDataSourceBuilder.create().build();
+    }
+
+    @Bean(name = "ticket")
+    @ConfigurationProperties("spring.datasource.druid.ticket")
+//    @ConditionalOnProperty(prefix = "spring.datasource.druid.ticket", name = "enabled", havingValue = "true")
+    public DataSource ticketDataSource()
+    {
+        return DruidDataSourceBuilder.create().build();
+    }
+
+    @Autowired
+    PaginationInterceptor paginationInterceptor;
+
+    @Bean
+    @Primary
+    public DataSource dataSource(@Qualifier("master") DataSource masterDataSource,
+                                         @Qualifier("slave") DataSource slaveDataSource,
+                                         @Qualifier("ticket") DataSource ticketDataSource)
+    {
+        Map<Object, Object> targetDataSources = new HashMap<>();
+        targetDataSources.put(DataSourceType.MASTER.name(), masterDataSource);
+    	targetDataSources.put(DataSourceType.SLAVE.name(),slaveDataSource);
+        targetDataSources.put(DataSourceType.TICKET.name(),ticketDataSource);
+        return new DynamicDataSource(masterDataSource(), targetDataSources);
+    }
+
+    @Bean
+    public SqlSessionFactory sqlSessionFactory() throws Exception {
+        MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean ();
+        factoryBean.setDataSource(dataSource(masterDataSource(), slaveDataSource(), ticketDataSource()));
+        // 设置mapper.xml的位置路径
+        Resource[] resources = new PathMatchingResourcePatternResolver().getResources("classpath*:mybatis/*/*.xml");
+        // 设置model路径
+        factoryBean.setTypeAliasesPackage("com.gyee.frame.model.*");
+        factoryBean.setMapperLocations(resources);
+        // 设置 MyBatis-Plus 分页插件
+        Interceptor[] plugins = {paginationInterceptor};
+        factoryBean.setPlugins(plugins);
+        return factoryBean.getObject();
+    }
+    
+    /**
+     * 配置@Transactional注解事务
+     * @param dataSource
+     * @return
+     * @author gyee
+     * @Date 2019年12月7日 上午11:31:33
+     */
+    @Bean
+    public PlatformTransactionManager transactionManager(DataSource dataSource){
+        return new DataSourceTransactionManager(dataSource);
+    }
+
+    /**
+     * 分页插件
+     */
+    @Bean(name = "paginationInterceptor")
+    public PaginationInterceptor paginationInterceptor() {
+        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
+        paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
+        return paginationInterceptor;
+    }
+
+}

+ 36 - 0
src/main/java/com/gyee/frame/common/conf/PageHelperConf.java

@@ -0,0 +1,36 @@
+package com.gyee.frame.common.conf;
+
+import com.github.pagehelper.PageHelper;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.Properties;
+
+/**
+* 分页插件配置类
+* @ClassName: PageHelperConf
+* @Description: TODO(这里用一句话描述这个类的作用)
+* @author gyee
+* @date 2018年6月3日
+*
+ */
+@Configuration
+public class PageHelperConf {
+
+    /**
+     * 分页插件处理
+     * @return
+     */
+    @Bean
+    public PageHelper pageHelper() {
+        PageHelper pageHelper = new PageHelper();
+        Properties properties = new Properties();
+        properties.setProperty("offsetAsPageNum", "true");
+        properties.setProperty("rowBoundsWithCount", "true");
+        properties.setProperty("reasonable", "true");
+//        properties.setProperty("dialect", "mysql");    //配置mysql数据库的方言
+        properties.setProperty("autoRuntimeDialect","true");
+        pageHelper.setProperties(properties);
+        return pageHelper;
+    }
+}

+ 82 - 0
src/main/java/com/gyee/frame/common/conf/RedisConfig.java

@@ -0,0 +1,82 @@
+package com.gyee.frame.common.conf;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import redis.clients.jedis.JedisPool;
+import redis.clients.jedis.JedisPoolConfig;
+
+/**
+ * 读取项目相关配置
+ * 
+ * @author gyee
+ */
+
+@Configuration
+@ConfigurationProperties(prefix = "redis")
+public class RedisConfig
+{
+    public static String redis_ss_ip;
+    public static Integer redis_ss_port;
+    public static String redis_ls_ip;
+    public static Integer redis_ls_port;
+
+    @Bean(name = "ss_redis")
+    public static JedisPool redis_SS_Pool_Factory()  throws Exception{
+
+        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
+        jedisPoolConfig.setMaxIdle(2000);
+        jedisPoolConfig.setMaxTotal(20000);
+        jedisPoolConfig.setMaxWaitMillis(5000);
+
+        // 是否启用pool的jmx管理功能, 默认true
+        jedisPoolConfig.setJmxEnabled(true);
+        JedisPool jedisPool = new JedisPool(jedisPoolConfig, redis_ss_ip, redis_ss_port);
+        return jedisPool;
+    }
+
+    @Bean(name = "ls_redis")
+    public static JedisPool redis_LS_PoolFactory()  throws Exception{
+
+        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
+        jedisPoolConfig.setMaxIdle(2000);
+        jedisPoolConfig.setMaxWaitMillis(5000);
+        jedisPoolConfig.setMaxTotal(20000);
+        // 是否启用pool的jmx管理功能, 默认true
+        jedisPoolConfig.setJmxEnabled(true);
+        JedisPool jedisPool = new JedisPool(jedisPoolConfig, redis_ls_ip, redis_ls_port);
+        return jedisPool;
+    }
+
+    public static String getRedis_ss_ip() {
+        return redis_ss_ip;
+    }
+
+    public static void setRedis_ss_ip(String redis_ss_ip) {
+        RedisConfig.redis_ss_ip = redis_ss_ip;
+    }
+
+    public static Integer getRedis_ss_port() {
+        return redis_ss_port;
+    }
+
+    public static void setRedis_ss_port(Integer redis_ss_port) {
+        RedisConfig.redis_ss_port = redis_ss_port;
+    }
+
+    public static String getRedis_ls_ip() {
+        return redis_ls_ip;
+    }
+
+    public static void setRedis_ls_ip(String redis_ls_ip) {
+        RedisConfig.redis_ls_ip = redis_ls_ip;
+    }
+
+    public static Integer getRedis_ls_port() {
+        return redis_ls_port;
+    }
+
+    public static void setRedis_ls_port(Integer redis_ls_port) {
+        RedisConfig.redis_ls_port = redis_ls_port;
+    }
+}

+ 59 - 0
src/main/java/com/gyee/frame/common/conf/Swagger.java

@@ -0,0 +1,59 @@
+package com.gyee.frame.common.conf;
+
+import org.springframework.beans.factory.annotation.Autowired;
+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 配置文件
+* @ClassName: Swagger
+* @Description: TODO(配置文件)
+* @author gyee
+* @date 2018年6月3日
+*
+ */
+@Configuration(value="false")
+@EnableSwagger2 //启动swagger注解 启动服务,浏览器输入"http://服务名:8080/swagger-ui.html"
+public class Swagger {
+	@Autowired
+	private V2Config v2Config;
+	
+	@Bean
+	public Docket createRestApi() {
+		return new Docket(DocumentationType.SWAGGER_2)
+				// 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
+				.apiInfo(apiInfo())
+				// 设置哪些接口暴露给Swagger展示
+				.select()
+				 // 扫描所有有注解的api,用这种方式更灵活
+				.apis(RequestHandlerSelectors.basePackage("com.gyee.frame"))
+				// 扫描指定包中的swagger注解
+				//.apis(RequestHandlerSelectors.basePackage("com.gyee.frame.controller"))
+				// 扫描所有 .apis(RequestHandlerSelectors.any())
+				.paths(PathSelectors.any())
+				.build();
+	}
+	
+	private ApiInfo apiInfo() {
+		return new ApiInfoBuilder()
+				//设置标题
+				.title("springboot_v2 API文档")
+				//描述
+				.description("SpringBoot_v2项目是努力打造springboot框架的极致细腻的脚手架")
+				 //作者信息
+                //.contact(new Contact(v2Config.getName(), null, V2Config.getEmail_account()))
+                //服务条款URL
+				.termsOfServiceUrl("")
+				//版本
+				.version("版本号:"+v2Config.getVersion())
+				.build();
+	}
+
+}

+ 10 - 0
src/main/java/com/gyee/frame/common/conf/UserLoginContext.java

@@ -0,0 +1,10 @@
+package com.gyee.frame.common.conf;
+
+import javax.websocket.Session;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class UserLoginContext
+{
+    public static ConcurrentHashMap<String, Session> userLoginMap = new ConcurrentHashMap();
+	
+}

+ 193 - 0
src/main/java/com/gyee/frame/common/conf/V2Config.java

@@ -0,0 +1,193 @@
+package com.gyee.frame.common.conf;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * 读取项目相关配置
+ * 
+ * @author gyee
+ */
+@Component
+@ConfigurationProperties(prefix = "gyee")
+public class V2Config
+{
+    /** 项目名称 */
+    private String name;
+    /** 版本 */
+    private String version;
+    /** 版权年份 */
+    private String copyrightYear;
+    /** 上传路径 */
+    private static String profile;
+    /** 是否开启 上传static **/
+    private static String isstatic;
+    /** 开启存放静态文件夹后目录 **/
+    private static String isroot_dir;
+    /** 邮箱发送smtp */
+    private static String email_smtp;
+    /** 发送邮箱端口 */
+    private static String email_port;
+    /** 发送邮箱登录账号 */
+    private static String email_account;
+    /** 发送邮箱登录密码 */
+    private static String email_password;
+    /** 演示模式 **/
+    private static String demoEnabled;
+    /** 滚动验证码 **/
+    private static Boolean rollVerification;
+    /** 实时数据库 **/
+    private  static String realtimedataBase;
+
+    public static String imgurl;
+
+    public static String audurl;
+
+    public static String iconurl;
+
+    public static String videourl;
+
+    public static String getRealtimedataBase() {
+        return realtimedataBase;
+    }
+
+    public static void setRealtimedataBase(String realtimedataBase) {
+        V2Config.realtimedataBase = realtimedataBase;
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+
+    public void setName(String name)
+    {
+        this.name = name;
+    }
+
+    public String getVersion()
+    {
+        return version;
+    }
+
+    public void setVersion(String version)
+    {
+        this.version = version;
+    }
+
+    public String getCopyrightYear()
+    {
+        return copyrightYear;
+    }
+
+    public void setCopyrightYear(String copyrightYear)
+    {
+        this.copyrightYear = copyrightYear;
+    }
+
+    public static String getProfile()
+    {
+        return profile;
+    }
+
+    public void setProfile(String profile)
+    {
+    	V2Config.profile = profile;
+    }
+
+	public static String getIsstatic() {
+		return isstatic;
+	}
+
+	public static void setIsstatic(String isstatic) {
+		V2Config.isstatic = isstatic;
+	}
+
+	public static String getIsroot_dir() {
+		return isroot_dir;
+	}
+
+	public static void setIsroot_dir(String isroot_dir) {
+		V2Config.isroot_dir = isroot_dir;
+	}
+
+	public static String getEmail_smtp() {
+		return email_smtp;
+	}
+
+	public static void setEmail_smtp(String email_smtp) {
+		V2Config.email_smtp = email_smtp;
+	}
+
+	public static String getEmail_port() {
+		return email_port;
+	}
+
+	public static void setEmail_port(String email_port) {
+		V2Config.email_port = email_port;
+	}
+
+	public static String getEmail_account() {
+		return email_account;
+	}
+
+	public static void setEmail_account(String email_account) {
+		V2Config.email_account = email_account;
+	}
+
+	public static String getEmail_password() {
+		return email_password;
+	}
+
+	public static void setEmail_password(String email_password) {
+		V2Config.email_password = email_password;
+	}
+
+	public static String getDemoEnabled() {
+		return demoEnabled;
+	}
+
+	public static void setDemoEnabled(String demoEnabled) {
+		V2Config.demoEnabled = demoEnabled;
+	}
+
+	public static Boolean getRollVerification() {
+		return rollVerification;
+	}
+
+	public  void setRollVerification(Boolean rollVerification) {
+		V2Config.rollVerification = rollVerification;
+	}
+
+    public static String getImgurl() {
+        return imgurl;
+    }
+
+    public static void setImgurl(String imgurl) {
+        V2Config.imgurl = imgurl;
+    }
+
+    public static String getAudurl() {
+        return audurl;
+    }
+
+    public static void setAudurl(String audurl) {
+        V2Config.audurl = audurl;
+    }
+
+    public static String getIconurl() {
+        return iconurl;
+    }
+
+    public static void setIconurl(String iconurl) {
+        V2Config.iconurl = iconurl;
+    }
+
+    public static String getVideourl() {
+        return videourl;
+    }
+
+    public static void setVideourl(String videourl) {
+        V2Config.videourl = videourl;
+    }
+}

+ 109 - 0
src/main/java/com/gyee/frame/common/conf/redis/CacheConfig.java

@@ -0,0 +1,109 @@
+package com.gyee.frame.common.conf.redis;
+
+
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.web.client.RestTemplate;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *  Author: Wang_jw
+ *  缓存写入类
+ *  缓存获取类
+ */
+@Configuration
+public class CacheConfig {
+
+    @Autowired
+    private RedisTemplate redisTemplate;
+
+    /**
+     *@author:Wang Jiawen
+     *
+     *@description:  在创建的时候就自动的将缓存写入
+     *
+     *@param:[bool]
+     *
+     *@return:void
+     *
+     *@createTime:2020/3/9
+     *
+     */
+    public void cacheManager(Boolean bool) {
+
+        if (bool) {
+           // this.putinredis("usePowerstationidGetWindpowerstation", this.serialize(usePowerstationidGetWindpowerstation));
+        }
+    }
+
+
+
+
+    /**
+     * 向redis中存入数据 不提供转换 请自己用Json进行装换
+     * param key 建 ,str json字符串
+      */
+    public void putinredis(String key,Object str){
+        redisTemplate.delete(key);
+        redisTemplate.opsForValue().set(key,str);
+    }
+
+    /**
+     * 从redis中取数据 提供JsonObject转换但是返回Object类型,请自己转换类型
+     * param key 建
+     */
+    public String getFromredisToString(String key){
+        String str = (String) redisTemplate.opsForValue().get(key);
+        return str;
+    }
+
+
+
+
+
+    public byte[] serialize(Object obj){
+        if(obj==null){
+            throw new NullPointerException("can not read obj");
+        }
+
+        byte[] rv=null;
+        ByteArrayOutputStream bao=null;
+        ObjectOutputStream oto=null;
+        try{
+            bao=new ByteArrayOutputStream();
+            oto=new ObjectOutputStream(bao);
+            oto.writeObject(obj);
+            rv=bao.toByteArray();
+
+        }catch(Exception e){
+             // //System.out.println(e.getMessage());
+              e.printStackTrace();
+        }
+        return rv;
+    }
+
+    public Object deserialize(byte[] byt){
+        if(byt==null){
+            throw new NullPointerException();
+        }
+        ByteArrayInputStream bai=null;
+        ObjectInputStream ois=null;
+        Object obj=null;
+        try{
+            bai=new ByteArrayInputStream(byt);
+            ois=new ObjectInputStream(bai);
+            obj=ois.readObject();
+        }catch(Exception e){
+
+        }
+        return (Object) obj;
+    }
+}

+ 20 - 0
src/main/java/com/gyee/frame/common/conf/redis/CacheContext.java

@@ -0,0 +1,20 @@
+package com.gyee.frame.common.conf.redis;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.core.RedisTemplate;
+
+
+@Configuration
+public class CacheContext {
+    @Autowired
+    private CacheConfig cacheConfig;
+    @Autowired
+    private RedisTemplate redisTemplate;
+    public <T> T getObjectFromCache(String str){
+
+        byte[] by = (byte[])redisTemplate.opsForValue().get(str);
+        T t = (T)cacheConfig.deserialize(by);
+        return t;
+    }
+}

+ 66 - 0
src/main/java/com/gyee/frame/common/conf/redis/Constant.java

@@ -0,0 +1,66 @@
+package com.gyee.frame.common.conf.redis;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.core.RedisTemplate;
+
+@Configuration
+public class Constant {
+
+
+    //配置规则,注意: 常量池均为驼峰命名法首字母,
+
+    @Autowired
+    private RedisTemplate redisTemplate;
+    //String ip = httpServletRequest.getRemoteAddr();
+   /**
+    * Map<String, Windpowerstation>
+    * 通过ip编码获取一个最近关注过的详细的风场信息
+    */
+    public static final String UIGWI = "useIpGetWindPowerStationInformation";
+//    public static final String UPGW = "usePowerstationidGetWindpowerstation";
+//    /**
+//     * Map<String, Windpowerstation>
+//     * 用风场id获得风场风场对象
+//     */
+//    public static final String UPGW = "usePowerstationidGetWindpowerstation";
+//
+//    /**
+//     *  Map<String, List<Windturbine>>
+//     *  用风场id获得风机列表
+//     */
+//    public static final String UPGWL = "usePowerstationidGetWindturbineList";
+//
+//    /**
+//     *
+//     *  List<Windpowerstation>
+//     *  获取风场集合列表
+//     */
+//    public static final String PL = "powerstationList";
+//
+//    /**
+//     * Map<String, Windturbine>
+//     * 通过风机id获取风机的对象
+//     *
+//     */
+//    public static final String UWGW = "useWindturbineidGetWindturbine";
+//
+//    /**
+//     * List<Windturbine>
+//     * 获取风机的集合
+//     */
+//    public static final String WL = "windturbineList";
+//
+//    /**
+//     * Map<String, Map<String, Map<Double, Windturbinepowercurvefitting>>>
+//     * 风场,风机,风速为key值获取Windturbinepowercurvefitting对象
+//     */
+//    public static final String UPAWASGW = "usePowerstationidAndWindturbineidAndSpeedGetWindturbinepowercurvefitting";
+//
+
+
+
+
+
+
+}

+ 21 - 0
src/main/java/com/gyee/frame/common/dataSources/DataSource.java

@@ -0,0 +1,21 @@
+package com.gyee.frame.common.dataSources;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 自定义注解,用于类或方法上,优先级:方法>类
+ * @ClassName: DataSource
+ * @author gyee
+ * @date 2019-12-06 21:15
+ */
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface DataSource {
+	/**
+     * 切换数据源名称
+     */
+	DataSourceType value() default DataSourceType.MASTER;
+}

+ 77 - 0
src/main/java/com/gyee/frame/common/dataSources/DataSourceAspect.java

@@ -0,0 +1,77 @@
+package com.gyee.frame.common.dataSources;
+
+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 com.gyee.frame.util.StringUtils;
+
+import java.lang.reflect.Method;
+/**
+ * 多数据源处理
+ * @ClassName: DataSourceAspect
+ * @author gyee
+ * @date 2019-12-07 18:40
+ */
+@Aspect
+@Component
+@Order(1)
+//@EnableAsync
+public class DataSourceAspect {
+	//private static final Logger log = LoggerFactory.getLogger(DataSourceAspect.class);
+	
+	@Pointcut("@annotation(com.gyee.frame.common.dataSources.DataSource)")
+    public void dsPointCut()
+    {
+
+    }
+	
+	@Around("dsPointCut()")
+    public Object around(ProceedingJoinPoint point) throws Throwable
+    {
+        MethodSignature signature = (MethodSignature) point.getSignature();
+
+        Method method = signature.getMethod();
+
+        DataSource dataSource = method.getAnnotation(DataSource.class);
+
+        if (null!=dataSource)
+        {
+            DataSourceContextHolder.setDataSource(dataSource.value().name());
+        }
+
+        try
+        {
+            return point.proceed();
+        }
+        finally
+        {
+            // 销毁数据源 在执行方法之后
+        	DataSourceContextHolder.clearDataSource();
+        }
+    }
+	
+	 /**
+     * 获取需要切换的数据源
+     */
+    public DataSource getDataSource(ProceedingJoinPoint point)
+    {
+        MethodSignature signature = (MethodSignature) point.getSignature();
+        Class<? extends Object> targetClass = point.getTarget().getClass();
+        DataSource targetDataSource = targetClass.getAnnotation(DataSource.class);
+        if (StringUtils.isNotNull(targetDataSource))
+        {
+            return targetDataSource;
+        }
+        else
+        {
+            Method method = signature.getMethod();
+            DataSource dataSource = method.getAnnotation(DataSource.class);
+            return dataSource;
+        }
+    }
+}

+ 50 - 0
src/main/java/com/gyee/frame/common/dataSources/DataSourceContextHolder.java

@@ -0,0 +1,50 @@
+package com.gyee.frame.common.dataSources;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * 动态数据源上下文管理:设置数据源,获取数据源,清除数据源
+ * @ClassName: DataSourceContextHolder
+ * @author gyee
+ * @date 2019-12-06 21:08
+ */
+public class DataSourceContextHolder {
+	private static final Logger log = LoggerFactory.getLogger(DataSourceContextHolder.class);
+   /**
+    * 使用ThreadLocal维护变量,ThreadLocal为每个使用该变量的线程提供独立的变量副本,
+    * 所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。
+    */
+    private static final ThreadLocal<String> CONTEXT_HOLDER = new ThreadLocal<>();
+
+    /**
+     * 设置数据源
+     * @param type
+     * @author gyee
+     * @Date 2019年12月7日 下午6:38:55
+     */
+    public static void setDataSource(String type){
+
+        log.info("当前使用的数据源为:{}", type);
+    	CONTEXT_HOLDER.set(type);
+    }
+
+    /**
+     * 获得数据源的变量
+     * @return
+     * @author gyee
+     * @Date 2019年12月7日 下午6:39:00
+     */
+    public static String getDataSource(){
+        return CONTEXT_HOLDER.get();
+    }
+
+    /**
+     * 清除数据源
+     * @author gyee
+     * @Date 2019年12月7日 下午6:39:06
+     */
+    public static void clearDataSource(){
+    	CONTEXT_HOLDER.remove();
+    }
+}

+ 13 - 0
src/main/java/com/gyee/frame/common/dataSources/DataSourceType.java

@@ -0,0 +1,13 @@
+package com.gyee.frame.common.dataSources;
+
+/**
+ * 列出所有数据源
+ * @ClassName: DataSourceType
+ * @author gyee
+ * @date 2019-12-06 21:02
+ */
+public enum DataSourceType {
+	MASTER,
+	SLAVE,
+	TICKET
+}

+ 27 - 0
src/main/java/com/gyee/frame/common/dataSources/DynamicDataSource.java

@@ -0,0 +1,27 @@
+package com.gyee.frame.common.dataSources;
+
+import java.util.Map;
+import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
+
+/**
+ * 动态数据源
+ * @ClassName: DynamicDataSource
+ * @author gyee
+ * @date 2019-12-07 18:39
+ */
+public class DynamicDataSource extends AbstractRoutingDataSource {
+	
+	public DynamicDataSource(javax.sql.DataSource dataSource, Map<Object, Object> targetDataSources)
+    {
+        super.setDefaultTargetDataSource(dataSource);
+        super.setTargetDataSources(targetDataSources);
+        super.afterPropertiesSet();
+    }
+
+	@Override
+	protected Object determineCurrentLookupKey() {
+		
+		return DataSourceContextHolder.getDataSource();
+	}
+
+}

+ 111 - 0
src/main/java/com/gyee/frame/common/domain/AjaxResult.java

@@ -0,0 +1,111 @@
+package com.gyee.frame.common.domain;
+
+import java.util.HashMap;
+
+/**
+* @ClassName: AjaxResult
+* @Description: TODO(ajax操作消息提醒)
+* @author gyee
+* @date 2018年8月18日
+*
+ */
+public class AjaxResult extends HashMap<String, Object>
+{
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 初始化一个新创建的 Message 对象
+     */
+    public AjaxResult()
+    {
+    }
+
+    /**
+     * 返回错误消息
+     * 
+     * @return 错误消息
+     */
+    public static AjaxResult error()
+    {
+        return error(1, "操作失败");
+    }
+
+    /**
+     * 返回错误消息
+     * 
+     * @param msg 内容
+     * @return 错误消息
+     */
+    public static AjaxResult error(String msg)
+    {
+        return error(500, msg);
+    }
+
+    /**
+     * 返回错误消息
+     * 
+     * @param code 错误码
+     * @param msg 内容
+     * @return 错误消息
+     */
+    public static AjaxResult error(int code, String msg)
+    {
+        AjaxResult json = new AjaxResult();
+        json.put("code", code);
+        json.put("msg", msg);
+        return json;
+    }
+
+    /**
+     * 返回成功消息
+     * 
+     * @param msg 内容
+     * @return 成功消息
+     */
+    public static AjaxResult success(String msg)
+    {
+        AjaxResult json = new AjaxResult();
+        json.put("msg", msg);
+        json.put("code", 200);
+        return json;
+    }
+    
+    /**
+     * 返回成功消息
+     * 
+     * @return 成功消息
+     */
+    public static AjaxResult success()
+    {
+        return AjaxResult.success("操作成功");
+    }
+
+    public static AjaxResult successData(Object value){
+        AjaxResult json = new AjaxResult();
+        json.put("code", 200);
+        json.put("data", value);
+        return json;
+    }
+    
+    public static AjaxResult successData(int code, Object value){
+    	 AjaxResult json = new AjaxResult();
+    	 json.put("code", code);
+         json.put("data", value);
+         return json;
+    }
+   
+    
+    /**
+     * 返回成功消息
+     * 
+     * @param key 键值
+     * @param value 内容
+     * @return 成功消息
+     */
+    @Override
+    public AjaxResult put(String key, Object value)
+    {
+        super.put(key, value);
+        return this;
+    }
+}

+ 80 - 0
src/main/java/com/gyee/frame/common/druid/RemoveDruidAdConfig.java

@@ -0,0 +1,80 @@
+package com.gyee.frame.common.druid;
+
+import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
+import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties;
+import com.alibaba.druid.util.Utils;
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.servlet.*;
+import java.io.IOException;
+
+
+/**
+ * 类名称:RemoveDruidAdConfig
+ * 类描述: 去除druid底部的广告配置类
+ *
+ * @author: taohongchao
+ * 创建时间:2019/2/15 13:14
+ * Version 1.0
+ */
+
+@Configuration
+@ConditionalOnWebApplication
+@AutoConfigureAfter(DruidDataSourceAutoConfigure.class)
+@ConditionalOnProperty(name = "spring.datasource.druid.stat-view-servlet.enabled", havingValue = "true", matchIfMissing = true)
+public class RemoveDruidAdConfig {
+
+
+    /**
+     * 方法名: removeDruidAdFilterRegistrationBean
+     * 方法描述:  除去页面底部的广告
+     * @param properties
+     * @return org.springframework.boot.web.servlet.FilterRegistrationBean
+     * @throws
+     */
+    @SuppressWarnings("rawtypes")
+	@Bean
+    public FilterRegistrationBean removeDruidAdFilterRegistrationBean(DruidStatProperties properties) {
+        // 获取web监控页面的参数
+        DruidStatProperties.StatViewServlet config = properties.getStatViewServlet();
+        // 提取common.js的配置路径
+        String pattern = config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*";
+        String commonJsPattern = pattern.replaceAll("\\*", "js/common.js");
+
+        final String filePath = "support/http/resources/js/common.js";
+
+        //创建filter进行过滤
+        Filter filter = new Filter() {
+            @Override
+            public void init(FilterConfig filterConfig) throws ServletException {
+            }
+
+            @Override
+            public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+                chain.doFilter(request, response);
+                // 重置缓冲区,响应头不会被重置
+                response.resetBuffer();
+                // 获取common.js
+                String text = Utils.readFromResource(filePath);
+                // 正则替换banner, 除去底部的广告信息
+                text = text.replaceAll("<a.*?banner\"></a><br/>", "");
+                text = text.replaceAll("powered.*?shrek.wang</a>", "");
+                response.getWriter().write(text);
+            }
+
+            @Override
+            public void destroy() {
+            }
+        };
+        FilterRegistrationBean<Filter> registrationBean = new FilterRegistrationBean<Filter>();
+        registrationBean.setFilter(filter);
+        registrationBean.addUrlPatterns(commonJsPattern);
+        return registrationBean;
+    }
+}
+

+ 131 - 0
src/main/java/com/gyee/frame/common/exception/GlobalExceptionResolver.java

@@ -0,0 +1,131 @@
+package com.gyee.frame.common.exception;
+
+import javax.servlet.http.HttpServletRequest;
+import org.apache.shiro.authz.AuthorizationException;
+import org.apache.shiro.authz.UnauthenticatedException;
+import org.apache.shiro.authz.UnauthorizedException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.validation.BindException;
+import org.springframework.web.HttpRequestMethodNotSupportedException;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+import org.springframework.web.servlet.ModelAndView;
+import com.gyee.frame.common.domain.AjaxResult;
+import com.gyee.frame.common.exception.demo.DemoModeException;
+import com.gyee.frame.util.ServletUtils;
+
+/**
+ * 全局异常处理
+ * @author gyee 
+ * @date: 2018年9月9日 下午10:52:55
+ */
+@RestControllerAdvice
+public class GlobalExceptionResolver{
+	private static Logger logger = LoggerFactory.getLogger(GlobalExceptionResolver.class);
+	
+	
+	
+	 /**
+     * 权限校验失败 如果请求为ajax返回json,普通请求跳转页面
+     */
+    @ExceptionHandler(AuthorizationException.class)
+    public Object handleAuthorizationException(HttpServletRequest request, AuthorizationException e)
+    {
+		//开发环境打印异常,正式环境请注销
+    	logger.error(" 权限校验异常》》"+e.getMessage(), e);
+        if (ServletUtils.isAjaxRequest(request))
+        {
+            return AjaxResult.error(e.getMessage());
+        }
+        else
+        {
+        	ModelAndView mv;
+        	//shiro异常拦截 
+          if(e instanceof UnauthorizedException){
+          	//未授权异常
+              mv = new ModelAndView("/error/403");
+              return mv;
+          }else if(e instanceof UnauthenticatedException){
+          	//未认证异常
+              mv = new ModelAndView("/error/403");
+              return mv;
+          }
+          else {
+              mv = new ModelAndView();
+              return mv;
+  
+          }
+        }
+    }
+	
+	
+   
+    
+    /**
+     * 自定义验证异常
+     */
+    @ExceptionHandler(BindException.class)
+    public AjaxResult validatedBindException(BindException e)
+    {
+    	logger.error("自定义验证异常", e);
+        String message = e.getAllErrors().get(0).getDefaultMessage();
+        return AjaxResult.error(message);
+    }
+    
+    
+    /**
+     * 请求方式不支持
+     */
+    @ExceptionHandler({ HttpRequestMethodNotSupportedException.class })
+    public AjaxResult handleException(HttpRequestMethodNotSupportedException e)
+    {
+    	logger.error("请求方式不支持异常:", e);
+        return AjaxResult.error("不支持' " + e.getMethod() + "'请求");
+    }
+  
+    
+    
+
+    /**
+     * 系统异常
+     */
+    @ExceptionHandler(Exception.class) 
+    public ModelAndView handle(Exception e){ 
+    	logger.error("系统异常:", e);
+	    ModelAndView mv = new ModelAndView(); 
+	    mv.addObject("message", e.getMessage()); 
+	    mv.setViewName("/error/999"); 
+	    return mv; 
+    }
+    
+    /**
+     * 演示模式异常
+     */
+    @ExceptionHandler(DemoModeException.class)
+    public AjaxResult demoModeException(DemoModeException e) {
+        return AjaxResult.error("演示模式,不允许操作");
+    }
+    
+    /**
+     * 拦截未知的运行时异常
+     */
+    @ExceptionHandler(RuntimeException.class)
+    public AjaxResult notFount(RuntimeException e)
+    {
+    	logger.error("运行时异常:", e);
+        return AjaxResult.error("运行时异常:" + e.getMessage());
+    }
+
+    /**
+     * 拦截登录异常
+     * @param e
+     * @return
+     */
+    @ExceptionHandler(TicketException.class)
+    public AjaxResult loginFail(TicketException e)
+    {
+        logger.error("TICKET异常:", e.getMsg());
+        return AjaxResult.error(e.getCode(), e.getMessage());
+    }
+}

+ 65 - 0
src/main/java/com/gyee/frame/common/exception/QiNiuException.java

@@ -0,0 +1,65 @@
+package com.gyee.frame.common.exception;
+
+import com.gyee.frame.common.exception.enums.QiNiuErrorEnum;
+
+/**
+ * QiNiuException
+ *
+ * @author bobbi
+ * @date 2018/10/07 13:54
+ * @email 571002217@qq.com
+ * @description 自定义异常
+ */
+public class QiNiuException extends RuntimeException{
+	private static final long serialVersionUID = 1L;
+	private String msg;
+    private int code = 500;
+
+    public QiNiuException(){
+        super(QiNiuErrorEnum.UNKNOWN.getMsg());
+        this.msg= QiNiuErrorEnum.UNKNOWN.getMsg();
+    }
+
+
+    public QiNiuException(QiNiuErrorEnum eEnum, Throwable e){
+        super(eEnum.getMsg(),e);
+        this.msg=eEnum.getMsg();
+        this.code=eEnum.getCode();
+    }
+
+    public QiNiuException(QiNiuErrorEnum eEnum){
+        this.msg=eEnum.getMsg();
+        this.code=eEnum.getCode();
+    }
+
+    public QiNiuException(String exception){
+       this.msg=exception;
+    }
+
+
+	public String getMsg() {
+		return msg;
+	}
+
+
+	public void setMsg(String msg) {
+		this.msg = msg;
+	}
+
+
+	public int getCode() {
+		return code;
+	}
+
+
+	public void setCode(int code) {
+		this.code = code;
+	}
+
+	public QiNiuException(String msg, int code) {
+		super();
+		this.msg = msg;
+		this.code = code;
+	}
+    
+}

+ 37 - 0
src/main/java/com/gyee/frame/common/exception/TicketException.java

@@ -0,0 +1,37 @@
+package com.gyee.frame.common.exception;
+
+
+public class TicketException extends RuntimeException{
+
+    private static final long serialVersionUID = 1L;
+    private int code = 4004;
+    private String msg;
+
+    public TicketException() {
+        super();
+    }
+
+    public TicketException(String msg) {
+        super(msg);
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+
+    public int getCode() {
+        return code;
+    }
+
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+}

+ 17 - 0
src/main/java/com/gyee/frame/common/exception/demo/DemoModeException.java

@@ -0,0 +1,17 @@
+package com.gyee.frame.common.exception.demo;
+
+/**
+ * 演示模式异常
+* @ClassName: DemoModeException
+* @author gyee
+* @date 2019-11-08 15:45
+*
+ */
+public class DemoModeException extends RuntimeException
+{
+    private static final long serialVersionUID = 1L;
+
+    public DemoModeException()
+    {
+    }
+}

+ 52 - 0
src/main/java/com/gyee/frame/common/exception/enums/QiNiuErrorEnum.java

@@ -0,0 +1,52 @@
+package com.gyee.frame.common.exception.enums;
+
+/**
+ * QiNiuErrorEnum
+ * @description error类型枚举类
+ */
+public enum QiNiuErrorEnum {
+
+    // 系统错误
+    UNKNOWN(500,"系统内部错误,请联系管理员"),
+    PATH_NOT_FOUND(404,"路径不存在,请检查路径"),
+    NO_AUTH(403,"没有权限,请联系管理员"),
+    DUPLICATE_KEY(501,"数据库中已存在该记录"),
+    TOKEN_GENERATOR_ERROR(502,"token生成失败"),
+    NO_UUID(503,"uuid为空"),
+    SQL_ILLEGAL(504,"sql非法"),
+	SOCKET_NUMBER_NULL(505,"socket页面或者功能编码为空,核对编码"),
+
+    //用户权限错误
+    INVALID_TOKEN(1001,"token不合法"),
+
+    //七牛OSS错误
+    OSS_CONFIG_ERROR(10050,"七牛配置信息错误"),
+    OSS_UPLOAD_ERROR(10051,"OSSBookNote上传失败");
+
+    private int code;
+    private String msg;
+	public int getCode() {
+		return code;
+	}
+	public void setCode(int code) {
+		this.code = code;
+	}
+	public String getMsg() {
+		return msg;
+	}
+	public void setMsg(String msg) {
+		this.msg = msg;
+	}
+	/**
+	 * TODO
+	 * @param code
+	 * @param msg
+	 * @author gyee
+	 * @Date 2019年11月20日 下午9:28:34
+	 */
+	private QiNiuErrorEnum(int code, String msg) {
+		this.code = code;
+		this.msg = msg;
+	}
+	
+}

+ 41 - 0
src/main/java/com/gyee/frame/common/exception/file/FileNameLengthLimitExceededException.java

@@ -0,0 +1,41 @@
+package com.gyee.frame.common.exception.file;
+
+import org.apache.commons.fileupload.FileUploadException;
+
+/**
+ * 文件名超长 误异常类
+ * 
+ * @author gyee
+ */
+public class FileNameLengthLimitExceededException extends FileUploadException
+{
+
+    private static final long serialVersionUID = 1L;
+    private int length;
+    private int maxLength;
+    private String filename;
+
+    public FileNameLengthLimitExceededException(String filename, int length, int maxLength)
+    {
+        super("file name : [" + filename + "], length : [" + length + "], max length : [" + maxLength + "]");
+        this.length = length;
+        this.maxLength = maxLength;
+        this.filename = filename;
+    }
+
+    public String getFilename()
+    {
+        return filename;
+    }
+
+    public int getLength()
+    {
+        return length;
+    }
+
+    public int getMaxLength()
+    {
+        return maxLength;
+    }
+
+}

+ 73 - 0
src/main/java/com/gyee/frame/common/exception/file/InvalidExtensionException.java

@@ -0,0 +1,73 @@
+package com.gyee.frame.common.exception.file;
+
+import java.util.Arrays;
+import org.apache.commons.fileupload.FileUploadException;
+
+/**
+ * 文件上传 误异常类
+ * 
+ * @author gyee
+ */
+public class InvalidExtensionException extends FileUploadException
+{
+
+    private static final long serialVersionUID = 1L;
+
+    private String[] allowedExtension;
+    private String extension;
+    private String filename;
+
+    public InvalidExtensionException(String[] allowedExtension, String extension, String filename)
+    {
+        super("filename : [" + filename + "], extension : [" + extension + "], allowed extension : [" + Arrays.toString(allowedExtension) + "]");
+        this.allowedExtension = allowedExtension;
+        this.extension = extension;
+        this.filename = filename;
+    }
+
+    public String[] getAllowedExtension()
+    {
+        return allowedExtension;
+    }
+
+    public String getExtension()
+    {
+        return extension;
+    }
+
+    public String getFilename()
+    {
+        return filename;
+    }
+
+    public static class InvalidImageExtensionException extends InvalidExtensionException
+    {
+        private static final long serialVersionUID = 1L;
+
+        public InvalidImageExtensionException(String[] allowedExtension, String extension, String filename)
+        {
+            super(allowedExtension, extension, filename);
+        }
+    }
+
+    public static class InvalidFlashExtensionException extends InvalidExtensionException
+    {
+        private static final long serialVersionUID = 1L;
+
+        public InvalidFlashExtensionException(String[] allowedExtension, String extension, String filename)
+        {
+            super(allowedExtension, extension, filename);
+        }
+    }
+
+    public static class InvalidMediaExtensionException extends InvalidExtensionException
+    {
+        private static final long serialVersionUID = 1L;
+
+        public InvalidMediaExtensionException(String[] allowedExtension, String extension, String filename)
+        {
+            super(allowedExtension, extension, filename);
+        }
+    }
+
+}

+ 181 - 0
src/main/java/com/gyee/frame/common/file/FileUploadUtils.java

@@ -0,0 +1,181 @@
+package com.gyee.frame.common.file;
+
+import java.io.File;
+import java.io.IOException;
+import org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException;
+import org.apache.shiro.crypto.hash.Md5Hash;
+import org.springframework.util.ClassUtils;
+import org.springframework.web.multipart.MultipartFile;
+import com.gyee.frame.common.conf.V2Config;
+import com.gyee.frame.common.exception.file.FileNameLengthLimitExceededException;
+import com.gyee.frame.util.StringUtils;
+
+/**
+ * 文件上传工具类
+ * @author gyee 
+ * @date: 2018年9月22日 下午10:33:23
+ */
+public class FileUploadUtils {
+
+    private FileUploadUtils(){}
+
+    /**
+     * 默认大小 50M
+     */
+    public static final long DEFAULT_MAX_SIZE = 50*1024*1024;
+
+    /**
+     * 默认上传的地址
+     */
+    private static String defaultBaseDir = V2Config.getProfile();
+    
+    /**
+     * 是否上传到static
+     */
+    private static String isstatic=V2Config.getIsstatic();
+    
+
+
+    /**
+     * 默认的文件名最大长度
+     */
+    public static final int DEFAULT_FILE_NAME_LENGTH = 100;
+    /**
+     * 默认文件类型jpg
+     */
+    public static final String IMAGE_JPG_EXTENSION = ".jpg";
+
+    private static int counter = 0;
+
+    public static void setDefaultBaseDir(String defaultBaseDir)
+    {
+        FileUploadUtils.defaultBaseDir = defaultBaseDir;
+    }
+
+    public static String getDefaultBaseDir()
+    {
+        return defaultBaseDir;
+    }
+
+    public static String getIsstatic() {
+		return isstatic;
+	}
+
+	public static void setIsstatic(String isstatic) {
+		FileUploadUtils.isstatic = isstatic;
+	}
+	
+	/**
+	 * 静态文件上传后存放的目录
+	 */
+	public static String getRoot_dir() {
+		String url=ClassUtils.getDefaultClassLoader().getResource("").getPath()+V2Config.getIsroot_dir();
+		return url;
+	}
+
+
+	/**
+     * 以默认配置进行文件上传
+     *
+     * @param file 上传的文件
+     * @return 文件名称
+     * @throws Exception
+     */
+    public static final String upload(MultipartFile file) throws IOException
+    {
+        try
+        {
+        	if("Y".equals(getIsstatic())) {//获取根目录
+        		
+        		 return upload(getRoot_dir(), file);
+        	}else {//自定义目录
+        		 return upload(getDefaultBaseDir(), file);
+        	}
+        }
+        catch (Exception e)
+        {
+            throw new IOException(e);
+        }
+    }
+
+    /**
+     * 文件上传
+     *
+     * @param baseDir 相对应用的基目录
+     * @param file 上传的文件
+     * @param needDatePathAndRandomName 是否需要日期目录和随机文件名前缀
+     * @param extension 上传文件类型
+     * @return 返回上传成功的文件名
+     * @throws FileSizeLimitExceededException 如果超出最大大小
+     * @throws FileNameLengthLimitExceededException 文件名太长
+     * @throws IOException 比如读写文件出错时
+     */
+    public static final String upload(String baseDir, MultipartFile file)
+            throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException
+    {
+    	String fileName=file.getOriginalFilename();
+    	// 获得文件后缀名称
+    	String suffixName = fileName.substring(fileName.lastIndexOf(".")).toLowerCase();
+    	if(StringUtils.isEmpty(suffixName)) {
+    		//如果没有后缀默认后缀
+    		suffixName=FileUploadUtils.IMAGE_JPG_EXTENSION;
+    	}
+    	
+        int fileNamelength = fileName.length();
+        if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH)
+        {
+            throw new FileNameLengthLimitExceededException(fileName, fileNamelength,
+                    FileUploadUtils.DEFAULT_FILE_NAME_LENGTH);
+        }
+
+        assertAllowed(file);
+
+        String new_fileName = encodingFilename(fileName, suffixName);
+
+        File desc = getAbsoluteFile(baseDir, baseDir + new_fileName);
+        file.transferTo(desc);
+        return new_fileName;
+    }
+
+    private static final File getAbsoluteFile(String uploadDir, String filename) throws IOException
+    {
+        File desc = new File(File.separator + filename);
+
+        if (!desc.getParentFile().exists())
+        {
+            desc.getParentFile().mkdirs();
+        }
+        if (!desc.exists())
+        {
+            desc.createNewFile();
+        }
+        return desc;
+    }
+
+    /**
+     * 编码文件名
+     */
+    private static final String encodingFilename(String filename, String extension)
+    {
+        filename = filename.replace("_", " ");
+        filename = new Md5Hash(filename + System.nanoTime() + counter++).toHex().toString() + extension;
+        return filename;
+    }
+
+    /**
+     * 文件大小校验
+     *
+     * @param file 上传的文件
+     * @return
+     * @throws FileSizeLimitExceededException 如果超出最大大小
+     */
+    public static final void assertAllowed(MultipartFile file) throws FileSizeLimitExceededException
+    {
+        long size = file.getSize();
+        if (DEFAULT_MAX_SIZE != -1 && size > DEFAULT_MAX_SIZE)
+        {
+            throw new FileSizeLimitExceededException("超过默认大小", size, DEFAULT_MAX_SIZE);
+        }
+    }
+
+}

+ 114 - 0
src/main/java/com/gyee/frame/common/file/FileUtils.java

@@ -0,0 +1,114 @@
+package com.gyee.frame.common.file;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * 文件处理工具类
+ * @author gyee 
+ * @date: 2018年9月22日 下午10:33:31
+ */
+public class FileUtils
+{
+
+    private FileUtils(){}
+    /**
+     * 输出指定文件的byte数组
+     * 
+     * @param filename 文件
+     * @return
+     */
+    public static void writeBytes(String filePath, OutputStream os) throws IOException
+    {
+        FileInputStream fis = null;
+        try
+        {
+            File file = new File(filePath);
+            if (!file.exists())
+            {
+                throw new FileNotFoundException(filePath);
+            }
+            fis = new FileInputStream(file);
+            byte[] b = new byte[1024];
+            int length;
+            while ((length = fis.read(b)) > 0)
+            {
+                os.write(b, 0, length);
+            }
+        }
+        catch (IOException e)
+        {
+            throw e;
+        }
+        finally
+        {
+            if (os != null)
+            {
+                try
+                {
+                    os.close();
+                }
+                catch (IOException e1)
+                {
+                    e1.printStackTrace();
+                }
+            }
+            if (fis != null)
+            {
+                try
+                {
+                    fis.close();
+                }
+                catch (IOException e1)
+                {
+                    e1.printStackTrace();
+                }
+            }
+        }
+    }
+
+    /**
+     * 删除文件
+     * 
+     * @param filePath 文件
+     * @return
+     */
+    public static boolean deleteFile(String filePath)
+    {
+        boolean flag = false;
+        File file = new File(filePath);
+        // 路径为文件且不为空则进行删除
+        if (file.isFile() && file.exists())
+        {
+            file.delete();
+            flag = true;
+        }
+        return flag;
+    }
+    
+    /**
+     * 读取图片地址 输出到页面
+     * @param request
+     * @param response
+     * @param fileurl
+     * @throws IOException 
+     */
+    public static void readIMGTohtml(HttpServletRequest request, HttpServletResponse response,String fileurl) throws IOException{
+        //设置发送到客户端的响应内容类型
+        response.setContentType("image/*");
+        //读取本地图片输入流
+        try (FileInputStream inputStream = new FileInputStream(fileurl);OutputStream out = response.getOutputStream()){
+            int i = inputStream.available();
+            //byte数组用于存放图片字节数据
+            byte[] buff = new byte[i];
+            inputStream.read(buff);
+            out.write(buff);
+        }
+    }
+}

+ 174 - 0
src/main/java/com/gyee/frame/common/interceptor/MyInterceptor.java

@@ -0,0 +1,174 @@
+package com.gyee.frame.common.interceptor;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.gyee.frame.model.auto.TsysUser;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authc.UsernamePasswordToken;
+import org.apache.shiro.subject.Subject;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.ModelAndView;
+import com.gyee.frame.common.conf.V2Config;
+import com.gyee.frame.common.exception.demo.DemoModeException;
+import cn.hutool.core.util.StrUtil;
+/**
+ * 自定义拦截器
+ * @author fc
+ *
+ */
+public class MyInterceptor  implements HandlerInterceptor {
+	
+	/*************演示模式需要 start*************/
+	/**需要被拦截的post请求url**/
+	public static List<String> posturllist=new ArrayList<String>();
+	/**需要被拦截的get请求url**/
+	public static List<String> geturllist=new ArrayList<String>();
+	
+	/**
+	 * 初始化静态块,避免多次创建调用
+	 * 需要拦截的请求集合
+	 */
+	static {
+		//用户POST请求
+		posturllist.add("/UserController/add");
+		posturllist.add("/UserController/remove");
+		posturllist.add("/UserController/edit");
+		posturllist.add("/UserController/editPwd");
+		//自动生成POST请求
+		posturllist.add("/autoCodeController/addGlobal");
+		posturllist.add("/autoCodeController/saveOne");
+		//字典表POST请求
+		posturllist.add("/DictDataController/add");
+		posturllist.add("/DictDataController/remove");
+		posturllist.add("/DictDataController/edit");
+		posturllist.add("/DictTypeController/add");
+		posturllist.add("/DictTypeController/remove");
+		posturllist.add("/DictTypeController/edit");
+		//邮箱POST请求
+		posturllist.add("/EmailController/add");
+		posturllist.add("/EmailController/edit");
+		//文件上传POST请求
+		posturllist.add("/FileController/upload");
+		posturllist.add("/FileController/add");
+		posturllist.add("/FileController/remove");
+		posturllist.add("/FileController/del_file");
+		posturllist.add("/FileController/edit");
+		//日志POST请求
+		posturllist.add("/LogController/remove");
+		//权限POST请求
+		posturllist.add("/PermissionController/add");
+		posturllist.add("/PermissionController/remove");
+		posturllist.add("/PermissionController/edit");
+		//定时器POST请求
+		posturllist.add("/SysQuartzJobController/add");
+		posturllist.add("/SysQuartzJobController/remove");
+		posturllist.add("/SysQuartzJobController/edit");
+		posturllist.add("/SysQuartzJobController/changeStatus");
+		posturllist.add("/SysQuartzJobController/run");
+		posturllist.add("/SysQuartzJobLogController/remove");
+		//角色POST请求
+		posturllist.add("/RoleController/add");
+		posturllist.add("/RoleController/remove");
+		posturllist.add("/RoleController/edit");
+		//公告POST请求
+		posturllist.add("/SysNoticeController/add");
+		posturllist.add("/SysNoticeController/remove");
+		posturllist.add("/SysNoticeController/viewinfo");
+		posturllist.add("/SysNoticeController/edit");
+		//省份POST请求
+		posturllist.add("/SysProvinceController/add");
+		posturllist.add("/SysProvinceController/remove");
+		posturllist.add("/SysProvinceController/edit");
+		//地区POST请求
+		posturllist.add("/SysAreaController/add");
+		posturllist.add("/SysAreaController/remove");
+		posturllist.add("/SysAreaController/edit");
+		//城市POST请求
+		posturllist.add("/SysCityController/add");
+		posturllist.add("/SysCityController/remove");
+		posturllist.add("/SysCityController/edit");
+		//街道POST请求
+		posturllist.add("/SysStreetController/add");
+		posturllist.add("/SysStreetController/remove");
+		posturllist.add("/SysStreetController/edit");
+		//百度编辑器POST请求
+		posturllist.add("/UeditorController/ueditor");
+		posturllist.add("/UeditorController/");
+		posturllist.add("/UeditorController/imgUpload");
+		//七牛POST请求
+		posturllist.add("/QiNiuCloudController/uploadToQiNiu");
+		//定时器GET请求
+		geturllist.add("/quartz/stop");
+		geturllist.add("/quartz/resume");
+		geturllist.add("/quartz/update");
+		geturllist.add("/quartz/delete");
+		
+	}
+	/*************演示模式需要 end*************/
+	@Override
+	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)throws Exception {
+		// //System.out.println(">>>MyInterceptor1>>>>>>>在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作)");
+	}
+
+	@Override
+	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)throws Exception {
+		// //System.out.println(">>>MyInterceptor1>>>>>>>请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)");
+	}
+
+	@Override
+	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
+		//String url2=request.getScheme()+"://"+ request.getServerName();
+		////System.out.println("xxxxxxxxx==="+"http://localhost:8081/");
+		////System.out.println(">>>MyInterceptor1>>>>>>>在请求处理之前进行调用(Controller方法调用之前)");
+		//设置前端的全局 地址,如果前端网页错乱请修改这儿
+
+		// by Wang Jiawen 2020-01-07 临时补丁  调试需要暂时取消shiro大管家的登入限制
+//		TsysUser user = new TsysUser("1","admin","admin","管理员");
+//		Subject currentUser = SecurityUtils.getSubject();
+//		UsernamePasswordToken token =new UsernamePasswordToken("admin",user.getPassword());
+//		token.setRememberMe(true);
+//		currentUser.login(token);
+		//结束
+
+
+		request.setAttribute("rootPath", request.getContextPath());
+		if(V2Config.getDemoEnabled().equals("true")) {
+			Boolean b = ifurl(request, response);
+			if(b) {
+				throw new DemoModeException();
+			}
+		}
+		return true;// 只有返回true才会继续向下执行,返回false取消当前请求
+	}
+	
+	/**
+	 * 判断是否需要拦截的用于展示演示模式
+	 * @param request
+	 * @param response
+	 * @return
+	 * @author gyee
+	 * @Date 2019年11月11日 下午5:17:30
+	 */
+	public Boolean ifurl(HttpServletRequest request, HttpServletResponse response) {
+		//当前请求
+		String requesturl=request.getRequestURI();
+		if(request.getMethod().equals("POST")) {
+			for (String postrul : posturllist) {
+				if(StrUtil.containsAnyIgnoreCase(requesturl, postrul)) {
+					return true;
+				}
+			}
+		}else {
+			for (String geturl : geturllist) {
+				if(StrUtil.containsAnyIgnoreCase(requesturl, geturl)) {
+					return true;
+				}
+			}
+		}
+		
+		return false;
+	}
+}

+ 124 - 0
src/main/java/com/gyee/frame/common/interceptor/MyWebAppConfigurer.java

@@ -0,0 +1,124 @@
+package com.gyee.frame.common.interceptor;
+
+import com.gyee.frame.common.conf.ImgConfiguration;
+import com.gyee.frame.common.conf.V2Config;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
+import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
+
+/**
+ * 拦截器
+* @ClassName: MyWebAppConfigurer
+* @author gyee
+* @date 2018年6月3日
+*
+ */
+@Configuration
+public class MyWebAppConfigurer  extends  WebMvcConfigurationSupport  {
+	private static final Logger log = LoggerFactory.getLogger(MyWebAppConfigurer.class);
+	/** 解决跨域问题 **/
+	@Override
+	public void addCorsMappings(CorsRegistry registry){
+		/*
+			registry.addMapping("/**")
+			// 设置允许跨域请求的域名
+			.allowedOrigins("*")
+			// 是否允许证书
+			.allowCredentials(true)
+			// 设置允许的方法
+			.allowedMethods("GET", "POST", "DELETE", "PUT")
+			// 设置允许的header属性
+			.allowedHeaders("*")
+			// 跨域允许时间
+			.maxAge(3600);
+			super.addCorsMappings(registry);
+		*/
+	}
+	
+	/** 添加拦截器 **/
+	@Override
+	protected void addInterceptors(InterceptorRegistry registry){
+		registry.addInterceptor(new MyInterceptor());
+		super.addInterceptors(registry);
+	}
+	
+	/** 这里配置视图解析器 **/
+	@Override
+	protected void configureViewResolvers(ViewResolverRegistry registry){
+		super.configureViewResolvers(registry);
+	}
+	
+	/** 配置内容裁决的一些选项 **/
+	@Override
+	protected void configureContentNegotiation(ContentNegotiationConfigurer configurer){
+		super.configureContentNegotiation(configurer);
+	}
+	
+	/** 视图跳转控制器 **/
+	@Override
+	protected void addViewControllers(ViewControllerRegistry registry) {
+		
+		super.addViewControllers(registry);
+	}
+	
+	
+	/** 静态资源处理 **/
+	@Override
+    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
+
+		String imgurl= V2Config.imgurl;
+		imgurl="file:"+imgurl;
+		log.info("**************初始化图片存储路径******************");
+		log.info(imgurl);
+		log.info("********************************");
+		registry.addResourceHandler("/IMGURL/**").addResourceLocations(imgurl);
+
+		String audurl=V2Config.audurl;
+		audurl="file:"+audurl;
+		log.info("**************初始化音频存储路径******************");
+		log.info(audurl);
+		log.info("********************************");
+		registry.addResourceHandler("/ADUURL/**").addResourceLocations(audurl);
+
+
+		String iconurl=V2Config.iconurl;
+		iconurl="file:"+iconurl;
+		log.info("**************初始化头像存储路径******************");
+		log.info(iconurl);
+		log.info("********************************");
+		registry.addResourceHandler("/ICONURL/**").addResourceLocations(iconurl);
+
+
+		String videourl=V2Config.videourl;
+		videourl="file:"+videourl;
+		log.info("**************初始化视频存储路径******************");
+		log.info(videourl);
+		log.info("********************************");
+		registry.addResourceHandler("/VIDEOURL/**").addResourceLocations(videourl);
+
+
+
+
+		registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
+
+    }
+	/** 默认静态资源处理器 **/
+	
+	protected void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
+		//super.configureDefaultServletHandling(configurer);
+		//configurer.enable("stati");
+		configurer.enable();
+	}
+	
+	
+	
+	
+}

+ 31 - 0
src/main/java/com/gyee/frame/common/log/Log.java

@@ -0,0 +1,31 @@
+package com.gyee.frame.common.log;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 自定义操作日志记录注解
+ * @author gyee 
+ * @date: 2018年9月30日 下午3:36:05
+ */
+@Target({ ElementType.PARAMETER, ElementType.METHOD })
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface Log
+{
+    /** 模块 */
+    String title() default "";
+
+    /** 功能 */
+    String action() default "";
+
+    /** 渠道 */
+    String channel() default "1";//1后台
+
+    /** 是否保存请求的参数 */
+    boolean isSaveRequestData() default true;
+
+}

+ 186 - 0
src/main/java/com/gyee/frame/common/log/LogAspect.java

@@ -0,0 +1,186 @@
+package com.gyee.frame.common.log;
+
+import java.lang.reflect.Method;
+import java.util.Date;
+import java.util.Map;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.Signature;
+import org.aspectj.lang.annotation.AfterReturning;
+import org.aspectj.lang.annotation.AfterThrowing;
+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.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.stereotype.Component;
+import com.gyee.frame.model.auto.TsysOperLog;
+import com.gyee.frame.model.auto.TsysUser;
+import com.gyee.frame.service.SysOperLogService;
+import com.gyee.frame.shiro.util.ShiroUtils;
+import com.gyee.frame.util.ServletUtils;
+import com.gyee.frame.util.StringUtils;
+import com.google.gson.Gson;
+
+/**
+ * 操作日志记录处理
+ * @author gyee 
+ * @date: 2018年9月30日 下午1:40:33
+ */
+@Aspect
+@Component
+@EnableAsync
+public class LogAspect
+{
+    private static final Logger log = LoggerFactory.getLogger(LogAspect.class);
+
+    @Autowired
+    private SysOperLogService operLogService;
+
+    // 配置织入点
+    @Pointcut("@annotation(com.gyee.frame.common.log.Log)")
+    public void logPointCut()
+    {
+    }
+
+    /**
+     * 前置通知 用于拦截操作
+     *
+     * @param joinPoint 切点
+     */
+    @AfterReturning(pointcut = "logPointCut()")
+    public void doBefore(JoinPoint joinPoint)
+    {
+        handleLog(joinPoint, null);
+    }
+
+    /**
+     * 拦截异常操作
+     * 
+     * @param joinPoint
+     * @param e
+     */
+    @AfterThrowing(value = "logPointCut()", throwing = "e")
+    public void doAfter(JoinPoint joinPoint, Exception e)
+    {
+        handleLog(joinPoint, e);
+    }
+
+    @Async
+    protected void handleLog(final JoinPoint joinPoint, final Exception e)
+    {
+        try
+        {
+            // 获得注解
+            Log controllerLog = getAnnotationLog(joinPoint);
+            if (controllerLog == null)
+            {
+                return;
+            }
+
+            // 获取当前的用户
+            TsysUser currentUser = ShiroUtils.getUser();
+
+            // *========数据库日志=========*//
+            TsysOperLog operLog = new TsysOperLog();
+           
+            //赋值操作
+            /*String ip = ShiroUtils.getIp();
+            operLog.setOperIp(ip);*/
+            // 操作地点
+            //operLog.setOperLocation(AddressUtils.getRealAddressByIP(ip));
+            // 请求的地址
+            operLog.setOperUrl(ServletUtils.getRequest().getRequestURI());
+            if (currentUser != null)
+            {
+//            	//操作人
+                operLog.setOperName(currentUser.getUsername());
+//                if (StringUtils.isNotNull(currentUser.getDept())
+//                        && StringUtils.isNotEmpty(currentUser.getDept().getDeptName()))
+//                {
+//                    operLog.setDeptName(currentUser.getDept().getDeptName());
+//                }
+            }
+
+            if (e != null)
+            {
+            	//错误日志
+            	operLog.setErrorMsg(StringUtils.substring(e.getMessage(), 0, 2000));
+            }
+            // 设置方法名称
+            String className = joinPoint.getTarget().getClass().getName();
+            String methodName = joinPoint.getSignature().getName();
+            operLog.setMethod(className + "." + methodName + "()");
+            operLog.setOperTime(new Date());
+            // 处理设置注解上的参数
+            getControllerMethodDescription(controllerLog, operLog);
+            // 保存数据库
+            ////System.out.println("-----------------");
+            ////System.out.println(new Gson().toJson(operLog));
+            ////System.out.println("-----------------");
+            operLogService.insertSelective(operLog);
+        }
+        catch (Exception exp)
+        {
+            // 记录本地异常日志
+            log.error("==前置通知异常==");
+            log.error("异常信息:{}", exp.getMessage());
+            exp.printStackTrace();
+        }
+    }
+
+    /**
+     * 获取注解中对方法的描述信息 用于Controller层注解
+     * 
+     * @param joinPoint 切点
+     * @return 方法描述
+     * @throws Exception
+     */
+    public void getControllerMethodDescription(Log log, TsysOperLog operLog) throws Exception
+    {
+        // 设置action动作
+       // operLog.setAction(log.action());
+        // 设置标题
+        operLog.setTitle(log.title());
+        // 设置channel
+        //operLog.setChannel(log.channel());
+        // 是否需要保存request,参数和值
+        if (log.isSaveRequestData())
+        {
+            // 获取参数的信息,传入到数据库中。
+            setRequestValue(operLog);
+        }
+    }
+
+    /**
+     * 获取请求的参数,放到log中
+     * 
+     * @param operLog
+     * @param request
+     */
+    private void setRequestValue(TsysOperLog operLog)
+    {
+        Map<String, String[]> map = ServletUtils.getRequest().getParameterMap();
+        Gson gson=new Gson();
+        String params = gson.toJson(map);
+        operLog.setOperParam(StringUtils.substring(params, 0, 255));
+    }
+
+    /**
+     * 是否存在注解,如果存在就获取
+     */
+    private Log getAnnotationLog(JoinPoint joinPoint) throws Exception
+    {
+        Signature signature = joinPoint.getSignature();
+        MethodSignature methodSignature = (MethodSignature) signature;
+        Method method = methodSignature.getMethod();
+
+        if (method != null)
+        {
+            return method.getAnnotation(Log.class);
+        }
+        return null;
+    }
+}

+ 104 - 0
src/main/java/com/gyee/frame/common/quartz/AbstractQuartzJob.java

@@ -0,0 +1,104 @@
+package com.gyee.frame.common.quartz;
+
+import cn.hutool.core.exceptions.ExceptionUtil;
+import com.gyee.frame.model.auto.SysQuartzJob;
+import com.gyee.frame.model.auto.SysQuartzJobLog;
+import com.gyee.frame.util.StringUtils;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
+
+import java.util.Date;
+
+/**
+ * @CLASSNAME AbstractQuartzJob
+ * @Description
+ * @Auther Jan  橙寂
+ * @DATE 2019/9/5 0005 15:05
+ */
+
+public abstract class AbstractQuartzJob implements Job {
+
+    private static final Logger log = LoggerFactory.getLogger(AbstractQuartzJob.class);
+
+    /**
+     * 线程本地变量
+     */
+    private static ThreadLocal<Date> threadLocal = new ThreadLocal<>();
+
+    @Override
+    public void execute(JobExecutionContext context) throws JobExecutionException
+    {
+    	SysQuartzJob sysJob = new SysQuartzJob();
+        BeanUtils.copyProperties(context.getMergedJobDataMap().get(ScheduleConstants.TASK_PROPERTIES),sysJob);
+        try
+        {
+            before(context, sysJob);
+            if (sysJob != null)
+            {
+                doExecute(context, sysJob);
+            }
+            after(context, sysJob, null);
+        }
+        catch (Exception e)
+        {
+            log.error("任务执行异常  - :", e);
+            after(context, sysJob, e);
+        }
+    }
+
+    /**
+     * 执行前
+     *
+     * @param context 工作执行上下文对象
+     * @param sysJob 系统计划任务
+     */
+    protected void before(JobExecutionContext context, SysQuartzJob sysJob)
+    {
+     //   //System.out.println(new Date());
+        threadLocal.set(new Date());
+    }
+
+    /**
+     * 执行后
+     *
+     * @param context 工作执行上下文对象
+     * @param sysJob 系统计划任务
+     */
+    protected void after(JobExecutionContext context, SysQuartzJob sysJob, Exception e)
+    {
+        Date startTime = threadLocal.get();
+        threadLocal.remove();
+
+        final SysQuartzJobLog sysJobLog = new SysQuartzJobLog();
+        sysJobLog.setJobName(sysJob.getJobName());
+        sysJobLog.setJobGroup(sysJob.getJobGroup());
+        sysJobLog.setInvokeTarget(sysJob.getInvokeTarget());
+        sysJobLog.setStartTime(startTime);
+        sysJobLog.setEndTime(new Date());
+        //long runMs = sysJobLog.getEndTime().getTime() - sysJobLog.getStartTime().getTime();
+        //sysJobLog.setJobMessage(sysJobLog.getJobName() + " 总共耗时:" + runMs + "毫秒");
+        if (e != null)
+        {
+            sysJobLog.setStatus(ScheduleConstants.FAIL_STATUS);
+            String errorMsg = StringUtils.substring(ExceptionUtil.getMessage(e), 0, 2000);
+            sysJobLog.setExceptionInfo(errorMsg);
+        }
+        else
+        {
+            sysJobLog.setStatus(ScheduleConstants.SUCCESS_STATUS);
+        }
+        //  这里获取service然后插入库中
+       // SpringUtils.getBean(SysQuartzJobLogService.class).insertSelective(sysJobLog);
+    }
+
+    /**
+     * 子类去实现
+     * @param jobExecutionContext
+     * @param sysJob
+     */
+    protected abstract void doExecute(JobExecutionContext jobExecutionContext, SysQuartzJob sysJob) throws Exception;
+}

+ 29 - 0
src/main/java/com/gyee/frame/common/quartz/QuartzConfig.java

@@ -0,0 +1,29 @@
+package com.gyee.frame.common.quartz;
+
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.quartz.SchedulerFactory;
+import org.quartz.impl.StdSchedulerFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @CLASSNAME QuartzConfig
+ * @Description  Quartz配置类
+ * @Auther Jan  橙寂
+ * @DATE 2019/9/2 0002 15:21
+ */
+@Configuration
+public class QuartzConfig {
+
+    /**
+     * 初始注入scheduler
+     * @return
+     * @throws SchedulerException
+     */
+    @Bean
+    public Scheduler scheduler() throws SchedulerException{
+        SchedulerFactory schedulerFactoryBean = new StdSchedulerFactory();
+        return schedulerFactoryBean.getScheduler();
+    }
+}

+ 23 - 0
src/main/java/com/gyee/frame/common/quartz/QuartzDisallowConcurrentExecution.java

@@ -0,0 +1,23 @@
+package com.gyee.frame.common.quartz;
+
+import com.gyee.frame.common.quartz.utils.JobInvokeUtil;
+import com.gyee.frame.model.auto.SysQuartzJob;
+
+import org.quartz.DisallowConcurrentExecution;
+import org.quartz.JobExecutionContext;
+
+/**
+ * 定时任务处理(禁止并发执行)
+ * 
+ * @author jan 橙寂
+ *
+ */
+@DisallowConcurrentExecution
+public class QuartzDisallowConcurrentExecution extends AbstractQuartzJob
+{
+    @Override
+    protected void doExecute(JobExecutionContext context, SysQuartzJob sysJob) throws Exception
+    {
+        JobInvokeUtil.invokeMethod(sysJob);
+    }
+}

+ 22 - 0
src/main/java/com/gyee/frame/common/quartz/QuartzJobExecution.java

@@ -0,0 +1,22 @@
+package com.gyee.frame.common.quartz;
+
+import com.gyee.frame.common.quartz.utils.JobInvokeUtil;
+import com.gyee.frame.model.auto.SysQuartzJob;
+
+import org.quartz.JobExecutionContext;
+
+/**
+ * 定时任务处理(允许并发执行)
+ * 
+ * @author  jan  橙寂
+ *
+ */
+public class QuartzJobExecution extends AbstractQuartzJob
+{
+    @Override
+    protected void doExecute(JobExecutionContext context, SysQuartzJob sysJob) throws Exception {
+        JobInvokeUtil.invokeMethod(sysJob);
+    }
+
+
+}

+ 313 - 0
src/main/java/com/gyee/frame/common/quartz/QuartzSchedulerUtil.java

@@ -0,0 +1,313 @@
+package com.gyee.frame.common.quartz;
+
+import com.gyee.frame.model.auto.SysQuartzJob;
+import com.gyee.frame.model.auto.SysQuartzJobExample;
+import com.gyee.frame.service.SysQuartzJobService;
+import com.gyee.frame.util.DateUtils;
+import com.gyee.frame.util.StringUtils;
+import org.quartz.*;
+import org.quartz.impl.JobDetailImpl;
+import org.quartz.impl.matchers.GroupMatcher;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+
+import javax.annotation.PostConstruct;
+import java.text.SimpleDateFormat;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @CLASSNAME QuartzConfig
+ * @Description  Quartz配置类
+ * @Auther Jan  橙寂
+ * @DATE 2019/9/2 0002 15:21
+ */
+@Configuration
+public class QuartzSchedulerUtil {
+
+    @Autowired
+    private QuartzSchedulerUtil quartzSchedulerUtil;
+    @Autowired
+    private  Scheduler scheduler;
+    @Autowired
+    private SysQuartzJobService sysQuartzJobService;
+
+    //这个东西可以放在配置文件中
+    //cron表达式 一分钟执行一次
+    private final  String TEST_CRON="0 0/1 * * * ?";
+
+    /**
+     * 容器初始化时执行此方法
+     * 也就是类初始化的时候
+     */
+    @PostConstruct
+    public void init() throws SchedulerException {
+    	
+    	List<SysQuartzJob> quartzJobs=sysQuartzJobService.selectByExample(new SysQuartzJobExample());
+    	for (SysQuartzJob job : quartzJobs) {
+    		try {
+                //防止因为数据问题重复创建
+                if(checkJobExists(job))
+                {
+                    deleteJob(job);
+                }
+                createSchedule(job);
+	        } catch (SchedulerException e) {
+	            e.printStackTrace();
+	        }
+		}
+//		//这一块可以从数据库中查
+//        for (int i=1;i<=1;i++)
+//        {
+//            SysQuartzJob job=new SysQuartzJob();
+//            job.setId("332182389491109888");
+//            job.setJobName("v2Task2");
+//            job.setJobGroup("SYSTEM");
+//            job.setCronExpression("*/6 * * * * ?");
+//            //并发执行
+//            job.setConcurrent("0");
+//            //0启用
+//            job.setStatus(1);
+//            //执行的job类
+//            job.setInvokeTarget("v2Task.runTask2(1,2l,'asa',true,2D)");
+//            try {
+//                //防止因为数据问题重复创建
+//                if(checkJobExists(job))
+//                {
+//                    deleteJob(job);
+//                }
+//                createSchedule(job);
+//	        } catch (SchedulerException e) {
+//	            e.printStackTrace();
+//	        }
+//        }
+
+        start();
+
+    }
+
+    /**
+     * 启动定时器
+     */
+    public void start()
+{
+    try {
+        scheduler.start();
+    } catch (SchedulerException e) {
+        e.printStackTrace();
+        //System.out.println("定时任务执行失败");
+    }
+}
+
+
+    /**
+     * 创建一个定时任务
+     * @param job
+     * @throws SchedulerException
+     */
+    public void createSchedule(SysQuartzJob job) throws SchedulerException {
+        if (!checkJobExists(job)) {
+            //获取指定的job工作类
+            Class<? extends Job> jobClass = getQuartzJobClass(job);
+            // 通过JobBuilder构建JobDetail实例,JobDetail规定只能是实现Job接口的实例
+            // JobDetail 是具体Job实例
+            JobDetail jobDetail = JobBuilder.newJob((Class<? extends Job>) jobClass).withIdentity(ScheduleConstants.TASK_CLASS_NAME+job.getId(),job.getJobGroup()).build();
+            // 基于表达式构建触发器
+            CronScheduleBuilder cronScheduleBuilder =null;
+
+            this.firstLoadJob(job);
+
+            if(StringUtils.isNotEmpty(job.getCronExpression())) {
+            	cronScheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression());
+            }else {
+            	cronScheduleBuilder = CronScheduleBuilder.cronSchedule(TEST_CRON);
+            }
+
+
+            String cron=job.getCronExpression();
+
+
+            // CronTrigger表达式触发器 继承于Trigger
+            //cronScheduleBuilder.withMisfireHandlingInstructionDoNothing()错过60分钟后不在补偿 拉下的执行次数
+            // TriggerBuilder 用于构建触发器实例
+            CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(ScheduleConstants.TASK_CLASS_NAME+job.getId(),job.getJobGroup())
+              .withSchedule(cronScheduleBuilder.withMisfireHandlingInstructionFireAndProceed()).build();
+            //放入参数,运行时的方法可以获取
+            //jobDetail.getJobDataMap().put(ScheduleConstants.TASK_PROPERTIES, job);
+            jobDetail.getJobDataMap().put(ScheduleConstants.TASK_PROPERTIES, job);
+
+            scheduler.scheduleJob(jobDetail, cronTrigger);
+            
+            //如果这个工作的状态为1
+            if (job.getStatus().equals(1))
+            {
+                pauseJob(job);
+            }
+        }
+    }
+
+    public void firstLoadJob(SysQuartzJob job) {
+        String[] cronSpilt = job.getCronExpression().split("/");
+        SimpleDateFormat sdf = new SimpleDateFormat("ss");
+        int nowsec = Integer.parseInt(sdf.format(DateUtils.getNowDate()));//获取当前秒
+        int nextesc = nowsec ;
+        String newcron = nextesc + "/" + cronSpilt[1];
+        job.setCronExpression(newcron);
+    }
+
+    /**
+     * 修改定时任务
+     * @param job
+     * @return
+     * @throws SchedulerException
+     */
+    public boolean modifyJob(SysQuartzJob job) {
+
+        try {
+            //先删除
+            if(checkJobExists(job))
+            {
+                deleteJob(job);
+            }
+            createSchedule(job);
+        } catch (SchedulerException e) {
+            e.printStackTrace();
+            return  false;
+        }
+        return  true;
+    }
+
+
+    /**
+     *  继续执行定时任务
+     * @param job
+     * @return
+     */
+    public boolean resumeJob(SysQuartzJob job) {
+        boolean bl = false;
+        try {
+            //JobKey定义了job的名称和组别
+            JobKey jobKey = JobKey.jobKey(ScheduleConstants.TASK_CLASS_NAME+job.getId(), job.getJobGroup());
+            if (jobKey != null) {
+                //继续任务
+                scheduler.resumeJob(jobKey);
+                bl = true;
+            }
+        } catch (SchedulerException e) {
+            //System.out.println("继续调度任务异常:" + e);
+        } catch (Exception e) {
+            //System.out.println("继续调度任务异常:" + e);
+        }
+        return bl;
+    }
+
+    /**
+     *  删除定时任务
+     * @param job
+     * @return
+     */
+    public boolean deleteJob(SysQuartzJob job) {
+        boolean bl = false;
+        try {
+            //JobKey定义了job的名称和组别
+            JobKey jobKey = JobKey.jobKey(ScheduleConstants.TASK_CLASS_NAME+job.getId(), job.getJobGroup());
+            if (jobKey != null) {
+                //删除定时任务
+                scheduler.deleteJob(jobKey);
+                bl = true;
+            }
+        } catch (SchedulerException e) {
+            //System.out.println("删除调度任务异常:" + e);
+        } catch (Exception e) {
+            //System.out.println("删除调度任务异常:" + e);
+        }
+        return bl;
+    }
+    
+    /**
+     * 获取jobKey
+     */
+    public  JobKey getJobKey(SysQuartzJob job)
+    {
+        return JobKey.jobKey(ScheduleConstants.TASK_CLASS_NAME + job.getId(),job.getJobGroup());
+    }
+    
+    /**
+     * 立即执行任务
+     */
+    public  void run(SysQuartzJob job) throws SchedulerException
+    {
+        // 参数
+        JobDataMap dataMap = new JobDataMap();
+        dataMap.put(ScheduleConstants.TASK_PROPERTIES, job);
+        scheduler.triggerJob(getJobKey(job), dataMap);
+    }
+    /**
+     * 暂停任务
+     * @param job
+     * @return
+     */
+    public boolean pauseJob(SysQuartzJob job) {
+        boolean bl = false;
+        try {
+            //JobKey定义了job的名称和组别
+            JobKey jobKey = JobKey.jobKey(ScheduleConstants.TASK_CLASS_NAME+job.getId(), job.getJobGroup());
+            //暂停任务
+            if (jobKey != null) {
+                scheduler.pauseJob(jobKey);
+                bl = true;
+            }
+        } catch (SchedulerException e) {
+             //System.out.println("暂停调度任务异常:" + e);
+        } catch (Exception e) {
+        	 //System.out.println("暂停调度任务异常:"+ e);
+        }
+        return bl;
+    }
+
+    /**
+     * 判断定时任务是否已经存在
+     * @param job
+     * @return
+     * @throws SchedulerException
+     */
+    public boolean checkJobExists(SysQuartzJob job) throws SchedulerException {
+        TriggerKey triggerKey = TriggerKey.triggerKey(ScheduleConstants.TASK_CLASS_NAME+job.getId(), job.getJobGroup());
+        return scheduler.checkExists(triggerKey);
+    }
+
+
+    /**
+     * 获取定时任务的具体执行类
+     * @param sysJob
+     * @return
+     */
+    private static Class<? extends Job> getQuartzJobClass(SysQuartzJob sysJob)
+    {
+        boolean isConcurrent = "0".equals(sysJob.getConcurrent());
+        return isConcurrent ? QuartzJobExecution.class : QuartzDisallowConcurrentExecution.class;
+    }
+    
+    
+    public void getquartzList() throws SchedulerException {
+
+        List<String> triggerGroupNames = scheduler.getTriggerGroupNames();
+        for (String groupName : triggerGroupNames) {
+        	 //组装group的匹配,为了模糊获取所有的triggerKey或者jobKey 
+        	GroupMatcher groupMatcher = GroupMatcher.groupEquals(groupName);
+        	//获取所有的triggerKey
+        	 Set<TriggerKey> triggerKeySet = scheduler.getTriggerKeys(groupMatcher);
+        	 for (TriggerKey triggerKey : triggerKeySet) {
+        		 //通过triggerKey在scheduler中获取trigger对象
+                 CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
+                 //获取trigger拥有的Job
+                 JobKey jobKey =trigger.getJobKey();
+                 JobDetailImpl jobDetail2 = (JobDetailImpl) scheduler.getJobDetail(jobKey);
+//                 //System.out.println(groupName);
+//                 //System.out.println(jobDetail2.getName());
+//                 //System.out.println(trigger.getCronExpression());
+        	 }
+        }
+
+    }
+}

+ 66 - 0
src/main/java/com/gyee/frame/common/quartz/ScheduleConstants.java

@@ -0,0 +1,66 @@
+package com.gyee.frame.common.quartz;
+
+/**
+ * 任务调度通用常量
+ * 
+ * @author jan 橙寂
+ */
+public interface ScheduleConstants
+{
+    public static final String TASK_CLASS_NAME = "TASK_CLASS_NAME";
+
+    /** 执行目标key */
+    public static final String TASK_PROPERTIES = "TASK_PROPERTIES";
+
+    /** 默认 */
+    public static final Integer MISFIRE_DEFAULT = 0;
+
+    /** 立即触发执行 */
+    public static final Integer MISFIRE_IGNORE_MISFIRES = 1;
+
+    /** 触发一次执行 */
+    public static final Integer MISFIRE_FIRE_AND_PROCEED = 2;
+
+    /** 不触发立即执行 */
+    public static final Integer MISFIRE_DO_NOTHING = 3;
+
+    /**
+     * 失败状态
+     */
+    public static final Integer FAIL_STATUS = 1;
+
+    /**
+     * 成功状态
+     */
+    public static final Integer SUCCESS_STATUS = 0;
+
+
+    /**
+     * 任务的关闭的状态
+     */
+    public static final Integer STOP_STATUS = 2;
+
+    public enum Status
+    {
+        /**
+         * 正常
+         */
+        NORMAL(0),
+        /**
+         * 暂停
+         */
+        PAUSE(1);
+
+        private Integer value;
+
+        private Status(Integer value)
+        {
+            this.value = value;
+        }
+
+        public Integer getValue()
+        {
+            return value;
+        }
+    }
+}

+ 90 - 0
src/main/java/com/gyee/frame/common/quartz/SocketTaskUtil.java

@@ -0,0 +1,90 @@
+package com.gyee.frame.common.quartz;
+
+import com.gyee.frame.common.spring.SpringUtils;
+import com.gyee.frame.model.auto.SysQuartzJob;
+import com.gyee.frame.model.auto.SysQuartzJobExample;
+import com.gyee.frame.service.SysQuartzJobService;
+import org.quartz.SchedulerException;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.List;
+
+/**
+ * @author Wang Jiawen
+ * @purpose 根据socket 对一些job任务进行管制
+ * @date 2020-01-09 11:36
+ */
+@Configuration
+public class SocketTaskUtil {
+    private QuartzSchedulerUtil quartzSchedulerUtil = SpringUtils.getBean(QuartzSchedulerUtil.class);
+    private SysQuartzJobService sysQuartzJobService = SpringUtils.getBean(SysQuartzJobService.class);
+
+
+    public void pauseJob(SysQuartzJob sysQuartzJob){
+        quartzSchedulerUtil.pauseJob(sysQuartzJob);
+    }
+    public void startJob(SysQuartzJob sysQuartzJob){
+
+        try {
+            quartzSchedulerUtil.run(sysQuartzJob);
+        } catch (SchedulerException e) {
+            e.printStackTrace();
+        }
+    }
+    public void deleteJob(SysQuartzJob sysQuartzJob){
+        quartzSchedulerUtil.deleteJob(sysQuartzJob);
+    }
+    /**
+     *@author:Wang Jiawen
+     *
+     *@description: 该方法通过计算jobid来找到job,通过job的对象来进一步控制job任务,用来重启某一具体的任务
+     *
+     *@param:[jobid] job的编码
+     *
+     *@return:void
+     *
+     *@createTime:2020/1/9
+     *
+     */
+    public void restartJob(String jobid){
+
+        List<SysQuartzJob> quartzJobs=sysQuartzJobService.selectByExample(new SysQuartzJobExample());
+        SysQuartzJob sysQuartzJob1 = null;
+        //找到具体的任务
+        for(SysQuartzJob sysQuartzJob:quartzJobs){
+            if(sysQuartzJob.getId().equalsIgnoreCase(jobid)){
+                sysQuartzJob1=sysQuartzJob;
+                break;
+            }
+        }
+        this.deleteJob(sysQuartzJob1);//符合标准步骤删除-创建-启动流程
+        try {
+           // //System.out.println(sysQuartzJob1.getJobName());
+
+            sysQuartzJob1.setStatus(0);//开启任务
+            quartzSchedulerUtil.createSchedule(sysQuartzJob1);
+
+            //startJob(sysQuartzJob1);
+        } catch (SchedulerException e) {
+            e.printStackTrace();
+        }
+        //this.startJob(sysQuartzJob1);
+    }
+    public void deleteJob(String jobid){
+
+        List<SysQuartzJob> quartzJobs=sysQuartzJobService.selectByExample(new SysQuartzJobExample());
+        SysQuartzJob sysQuartzJob1 = null;
+        //找到具体的任务
+        for(SysQuartzJob sysQuartzJob:quartzJobs){
+            if(sysQuartzJob.getId().equalsIgnoreCase(jobid)){
+                sysQuartzJob1=sysQuartzJob;
+                break;
+            }
+        }
+        if(sysQuartzJob1!=null)
+        {
+            this.deleteJob(sysQuartzJob1);
+        }
+
+    }
+}

+ 35 - 0
src/main/java/com/gyee/frame/common/quartz/task/BraceletPushTask.java

@@ -0,0 +1,35 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.service.app.bracelet.BraceletService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+@Component("braceletPushTask")
+public class BraceletPushTask {
+    @Autowired
+    private BraceletService braceletService;
+    /**
+     * 无参的任务
+     */
+    public void braceletPushTask() throws Exception {
+        braceletService.braceletPushTask();//调用list方法完成对 key :"weatherProphet_1" ,路径"weather/weatherProphet_1"的推送
+        ////System.out.println("我已执行");
+    }
+
+
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     *
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+        //List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+        //System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+}

+ 51 - 0
src/main/java/com/gyee/frame/common/quartz/task/Index_target_comprehensive_indicators.java

@@ -0,0 +1,51 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.mapper.auto.TsysUserMapper;
+import com.gyee.frame.model.auto.Weatherfd;
+import com.gyee.frame.service.app.index.IndexService;
+import com.gyee.frame.service.WeatherfdService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.Date;
+import java.util.List;
+
+/**
+ *测试类
+ * @CLASSNAME   WeatherfdPushTask
+ * @Description 向页面预测今天气象推送数据
+ * @Auther Wang Jiawen
+ * @DATE 2020/1/2 15:33
+ */
+@Component("index_target_comprehensive_indicators")
+public class Index_target_comprehensive_indicators {
+	@Autowired
+	private TsysUserMapper tsysUserMapper;
+	@Autowired
+    private IndexService indexService;
+    /**
+     * 无参的任务
+     * @throws Exception 
+     */
+    public void index_target_comprehensive_indicators() throws Exception {
+    	indexService.index_target_comprehensive_indicators();//调用list方法完成对 key :"weatherProphet_1" ,路径"weather/weatherProphet_1"的推送     
+        ////System.out.println("我已执行");
+    }   
+       
+
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     * 
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+    	//List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+    	//System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+
+}

+ 43 - 0
src/main/java/com/gyee/frame/common/quartz/task/Index_windSpeed_power_target_detail.java

@@ -0,0 +1,43 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.service.app.windpowerstationdetail.WindpowerstationdetailService;
+import com.gyee.frame.service.app.windpowerstationdetail.Windspeedpowermodule;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ *测试类
+ * @CLASSNAME   WeatherfdPushTask
+ * @Description 向页面预测今天气象推送数据
+ * @Auther Li ZaiXun
+ *、 @DATE 2020/1/2 15:33
+ */
+@Component("index_windSpeed_power_target_detail")
+public class Index_windSpeed_power_target_detail {
+    @Autowired
+    private Windspeedpowermodule windspeedpowermodule;
+    /**
+     * 无参的任务
+     */
+    public void index_windSpeed_power_target_detail() throws Exception {
+        windspeedpowermodule.index_windSpeed_power_target_detail();//调用list方法完成对 key :"weatherProphet_1" ,路径"weather/weatherProphet_1"的推送
+        ////System.out.println("我已执行");
+    }
+
+
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     *
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+        //List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+        //System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+}

+ 43 - 0
src/main/java/com/gyee/frame/common/quartz/task/Targetdetail_curve.java

@@ -0,0 +1,43 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.service.app.targetdetail.TargetdetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ *测试类
+ * @CLASSNAME   WeatherfdPushTask
+ * @Description 向页面预测今天气象推送数据
+ * @Auther Wang Jiawen
+ * @DATE 2020/1/2 15:33
+ */
+@Component("targetdetail_curve")
+public class Targetdetail_curve {
+    @Autowired
+    private TargetdetailService targetdetailService;
+    /**
+     * 无参的任务
+     */
+    public void targetdetail_curve() throws Exception {
+        targetdetailService.targetdetail_curve();//调用list方法完成对 key :"weatherProphet_1" ,路径"weather/weatherProphet_1"的推送
+        ////System.out.println("我已执行");
+    }
+
+
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     * 
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+    	//List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+    	//System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+
+}

+ 43 - 0
src/main/java/com/gyee/frame/common/quartz/task/Targetdetail_histogram.java

@@ -0,0 +1,43 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.service.app.targetdetail.TargetdetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ *测试类
+ * @CLASSNAME   WeatherfdPushTask
+ * @Description 向页面预测今天气象推送数据
+ * @Auther Wang Jiawen
+ * @DATE 2020/1/2 15:33
+ */
+@Component("targetdetail_histogram")
+public class Targetdetail_histogram {
+    @Autowired
+    private TargetdetailService targetdetailService;
+    /**
+     * 无参的任务
+     */
+    public void targetdetail_histogram() throws Exception {
+        targetdetailService.targetdetail_histogram();//调用list方法完成对 key :"weatherProphet_1" ,路径"weather/weatherProphet_1"的推送
+        ////System.out.println("我已执行");
+    }
+
+
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     * 
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+    	//List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+    	//System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+
+}

+ 46 - 0
src/main/java/com/gyee/frame/common/quartz/task/Targetdetail_target.java

@@ -0,0 +1,46 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.mapper.auto.TsysUserMapper;
+import com.gyee.frame.service.WeatherfdService;
+import com.gyee.frame.service.app.targetdetail.TargetdetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.Date;
+
+/**
+ *测试类
+ * @CLASSNAME   WeatherfdPushTask
+ * @Description 向页面预测今天气象推送数据
+ * @Auther Wang Jiawen
+ * @DATE 2020/1/2 15:33
+ */
+@Component("targetdetail_target")
+public class Targetdetail_target {
+    @Autowired
+    private TargetdetailService targetdetailService;
+    /**
+     * 无参的任务
+     */
+    public void targetdetail_target() throws Exception {
+        targetdetailService.targetdetail_target();//调用list方法完成对 key :"weatherProphet_1" ,路径"weather/weatherProphet_1"的推送
+        ////System.out.println("我已执行");
+    }
+
+
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     * 
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+    	//List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+    	//System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+
+}

+ 41 - 0
src/main/java/com/gyee/frame/common/quartz/task/V2Task.java

@@ -0,0 +1,41 @@
+package com.gyee.frame.common.quartz.task;
+
+import java.util.Date;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import com.gyee.frame.mapper.auto.TsysUserMapper;
+
+/**
+ *测试类
+ * @CLASSNAME   V2Task
+ * @Description 定时调度具体工作类
+ * @Auther Jan  橙寂
+ * @DATE 2019/9/2 0002 15:33
+ */
+@Component("v2Task")
+public class V2Task {
+	@Autowired
+	private TsysUserMapper tsysUserMapper;
+    /**
+     * 无参的任务
+     */
+    public void runTask1()
+    {
+        //System.out.println("正在执行定时任务,无参方法");
+    }
+
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+    	//List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+    	//System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+        
+
+    }
+}

+ 49 - 0
src/main/java/com/gyee/frame/common/quartz/task/WeatherfdPushTask_1.java

@@ -0,0 +1,49 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.mapper.auto.TsysUserMapper;
+import com.gyee.frame.model.auto.Weatherfd;
+import com.gyee.frame.service.WeatherfdService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.Date;
+import java.util.List;
+
+/**
+ *测试类
+ * @CLASSNAME   WeatherfdPushTask
+ * @Description 向页面预测今天气象推送数据
+ * @Auther Wang Jiawen
+ * @DATE 2020/1/2 15:33
+ */
+@Component("weatherDataPushByDay_1")
+public class WeatherfdPushTask_1 {
+	@Autowired
+	private TsysUserMapper tsysUserMapper;
+	@Autowired
+    private WeatherfdService weatherfdService;
+    /**
+     * 无参的任务
+     */
+    public void runTaskProphet_1() throws ParseException {
+        weatherfdService.listProphet1();//调用list方法完成对 key :"weatherProphet_1" ,路径"weather/weatherProphet_1"的推送     
+        ////System.out.println("我已执行");
+    }   
+       
+
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     * 
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+    	//List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+    	//System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+
+}

+ 44 - 0
src/main/java/com/gyee/frame/common/quartz/task/WeatherfdPushTask_40.java

@@ -0,0 +1,44 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.mapper.auto.TsysUserMapper;
+import com.gyee.frame.service.WeatherfdService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.Date;
+
+/**
+ *测试类
+ * @CLASSNAME   WeatherfdPushTask_40
+ * @Description 向页面预测未来40天气象推送数据
+ * @Auther Liu zhuochen
+ * @DATE 2020/2/13 9:55
+ */
+@Component("weatherDataPushByDay_40")
+public class WeatherfdPushTask_40 {
+    @Autowired
+    private TsysUserMapper tsysUserMapper;
+    @Autowired
+    private WeatherfdService weatherfdService;
+    /**
+     * 无参的任务
+     */
+    public void runTaskProphet_40() throws ParseException {
+        weatherfdService.listProphet40();//调用list方法完成对 key :"weatherProphet_40" ,路径"weather/weatherProphet_40"的推送
+        ////System.out.println("我已执行");
+    }
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+        //List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+        //System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+
+}

+ 50 - 0
src/main/java/com/gyee/frame/common/quartz/task/WeatherfdPushTask_7.java

@@ -0,0 +1,50 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.mapper.auto.TsysUserMapper;
+import com.gyee.frame.model.auto.Weatherfd;
+import com.gyee.frame.service.WeatherfdService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 
+	 *@author:Li Miao
+	 *
+	 *@description: 向页面预测未来7天气象推送数据
+	 *
+	 *@createTime:2020年2月12日
+	 *
+ */
+@Component("weatherDataPushByDay_7")
+public class WeatherfdPushTask_7 {
+	@Autowired
+	private TsysUserMapper tsysUserMapper;
+	@Autowired
+    private WeatherfdService weatherfdService;
+    /**
+     * 无参的任务
+     */
+        
+    public void runTaskProphet_7() throws ParseException {        
+        weatherfdService.listProphet7();//调用list方法完成对 key :"weatherProphet_7" ,路径"weather/weatherProphet_7"的推送
+        ////System.out.println("我已执行");
+    }
+
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+    	//List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+    	//System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+
+}

+ 49 - 0
src/main/java/com/gyee/frame/common/quartz/task/WeatherfdPushTask_8_15.java

@@ -0,0 +1,49 @@
+package com.gyee.frame.common.quartz.task;
+
+import java.text.ParseException;
+import java.util.Date;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.gyee.frame.mapper.auto.TsysUserMapper;
+import com.gyee.frame.service.WeatherfdService;
+
+/**
+ * 
+	 *@author:Li Miao
+	 *
+	 *@description: 向页面预测未来8~15天气象推送数据
+	 *
+	 *@createTime:2020年2月13日
+	 *
+ */
+@Component("weatherDataPushByDay_8_15")
+public class WeatherfdPushTask_8_15 {
+	@Autowired
+	private TsysUserMapper tsysUserMapper;
+	@Autowired
+    private WeatherfdService weatherfdService;
+    /**
+     * 无参的任务
+     */
+	
+	 public void runTaskProphet_8_15() throws ParseException {        
+	        weatherfdService.listProphet8_15();//调用list方法完成对 key :"weatherProphet_8_15" ,路径"weather/weatherProphet_8_15"的推送
+	        ////System.out.println("我已执行");
+	    }
+
+	    /**
+	     * 有参任务
+	     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+	     * @param a
+	     * @param b
+	     */
+	 public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+	    {
+	    	//List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+	    	//System.err.println("用户查询num:"+list.size());
+	        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+	    }
+
+}

+ 52 - 0
src/main/java/com/gyee/frame/common/quartz/task/WeatherfhPushTask_7Day_17Hour.java

@@ -0,0 +1,52 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.mapper.auto.TsysUserMapper;
+import com.gyee.frame.model.auto.Weatherfd;
+import com.gyee.frame.service.WeatherfdService;
+import com.gyee.frame.service.WeatherfhService;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 
+	 *@author:Li Miao
+	 *
+	 *@description: 向页面预测未来16小时气象推送数据
+	 *
+	 *@createTime:2020年2月19日
+	 *
+ */
+@Component("weatherDataPushByHour_7Day_17Hour")
+public class WeatherfhPushTask_7Day_17Hour {
+	@Autowired
+	private TsysUserMapper tsysUserMapper;
+	@Autowired
+    private WeatherfhService weatherfhService;
+    /**
+     * 无参的任务
+     */
+        
+    public void runTaskProphet_17() throws ParseException {        
+        weatherfhService.listProphet7Day_17Hour();;//调用list方法完成对 key :"weatherProphet_7_17Hour" ,路径"weather/weatherProphet_7_17Hour"的推送
+        ////System.out.println("我已执行");
+    }
+
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+    	//List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+    	//System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+
+}

+ 45 - 0
src/main/java/com/gyee/frame/common/quartz/task/Windpowerstationdetail_comprehensive_target.java

@@ -0,0 +1,45 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.model.auto.Windpowerstation;
+import com.gyee.frame.service.app.targetdetail.TargetdetailService;
+import com.gyee.frame.service.app.windpowerstationdetail.WindpowerstationdetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ *测试类
+ * @CLASSNAME   WeatherfdPushTask
+ * @Description 向页面预测今天气象推送数据
+ * @Auther Wang Jiawen
+ *、 @DATE 2020/1/2 15:33
+ */
+@Component("windpowerstationdetail_comprehensive_target")
+public class Windpowerstationdetail_comprehensive_target {
+    @Autowired
+    private WindpowerstationdetailService windpowerstationdetailService;
+    /**
+     * 无参的任务
+     */
+    public void windpowerstationdetail_comprehensive_target() throws Exception {
+        windpowerstationdetailService.windpowerstationdetail_comprehensive_target();//调用list方法完成对 key :"weatherProphet_1" ,路径"weather/weatherProphet_1"的推送
+        ////System.out.println("我已执行");
+    }
+
+
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     *
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+        //List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+        //System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+
+}

+ 42 - 0
src/main/java/com/gyee/frame/common/quartz/task/Windpowerstationdetail_sevendaycolumn_target.java

@@ -0,0 +1,42 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.service.app.windpowerstationdetail.Windspeedpowercurvedetail;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ *测试类
+ * @CLASSNAME   WeatherfdPushTask
+ * @Description 向页面预测今天气象推送数据
+ * @Auther Li ZaiXun
+ *、 @DATE 2020/1/2 15:33
+ */
+@Component("windpowerstationdetail_sevendaycolumn_target")
+public class Windpowerstationdetail_sevendaycolumn_target {
+    @Autowired
+    private Windspeedpowercurvedetail windspeedpowercurvedetail;
+    /**
+     * 无参的任务
+     */
+    public void windpowerstationdetail_sevendaycolumn_target() throws Exception {
+        windspeedpowercurvedetail.windpowerstationdetail_sevendaycolumn_target();//调用list方法完成对 key :"weatherProphet_1" ,路径"weather/weatherProphet_1"的推送
+        ////System.out.println("我已执行");
+    }
+
+
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     *
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+        //List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+        //System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+}

+ 42 - 0
src/main/java/com/gyee/frame/common/quartz/task/Windpowerstationdetail_springbox_target.java

@@ -0,0 +1,42 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.service.app.windpowerstationdetail.WindpowerstationdetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ *测试类
+ * @CLASSNAME   WeatherfdPushTask
+ * @Description 向页面预测今天气象推送数据
+ * @Auther Li ZaiXun
+ *、 @DATE 2020/1/2 15:33
+ */
+@Component("windpowerstationdetail_springbox_target")
+public class Windpowerstationdetail_springbox_target {
+    @Autowired
+    private WindpowerstationdetailService windpowerstationdetailService;
+    /**
+     * 无参的任务
+     */
+    public void windpowerstationdetail_springbox_target() throws Exception {
+        windpowerstationdetailService.windpowerstationdetail_springbox_target();//调用list方法完成对 key :"weatherProphet_1" ,路径"weather/weatherProphet_1"的推送
+        ////System.out.println("我已执行");
+    }
+
+
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     *
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+        //List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+        //System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+}

+ 46 - 0
src/main/java/com/gyee/frame/common/quartz/task/Windpowerstationdetail_twentyfourhourlinechart_target.java

@@ -0,0 +1,46 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.service.app.windpowerstationdetail.Windspeedpowercurvedetail;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ *测试类
+ * @CLASSNAME   WeatherfdPushTask
+ * @Description 向页面预测今天24小时气象推送数据
+ * @Auther Li ZaiXun
+ * @DATE 2020/1/2 15:33*/
+
+
+@Component("windpowerstationdetail_twentyfourhourlinechart_target")
+public class Windpowerstationdetail_twentyfourhourlinechart_target {
+    @Autowired
+    private Windspeedpowercurvedetail windspeedpowercurvedetail;
+/**
+     * 无参的任务*/
+
+
+    public void windpowerstationdetail_twentyfourhourlinechart_target() throws Exception {
+        windspeedpowercurvedetail.windpowerstationdetail_twentyfourhourlinechart_target();//调用list方法完成对 key :"weatherProphet_1" ,路径"weather/weatherProphet_1"的推送
+        ////System.out.println("我已执行");
+    }
+
+
+/**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     **/
+
+
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+        //List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+        //System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+
+}

+ 41 - 0
src/main/java/com/gyee/frame/common/quartz/task/index_curve_columnar_five_loss.java

@@ -0,0 +1,41 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.service.app.index.IndexDetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ *
+ */
+@Component("index_curve_columnar_five_loss")
+public class index_curve_columnar_five_loss {
+
+	@Autowired
+    private IndexDetailService indexDetailService;
+    /**
+     * 无参的任务
+     * @throws Exception 
+     */
+    public void index_curve_columnar_five_loss() throws Exception {
+    	indexDetailService.index_curve_columnar_five_loss();//调用list方法完成对 key :"weatherProphet_1" ,路径"weather/weatherProphet_1"的推送     
+        ////System.out.println("我已执行");
+    }   
+       
+
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     * 
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+    	//List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+    	//System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+
+}

+ 42 - 0
src/main/java/com/gyee/frame/common/quartz/task/index_curve_columnar_windSpeed_power.java

@@ -0,0 +1,42 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.mapper.auto.TsysUserMapper;
+import com.gyee.frame.service.app.index.IndexDetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ *
+ */
+@Component("index_curve_columnar_windSpeed_power")
+public class index_curve_columnar_windSpeed_power {
+
+    @Autowired
+    private IndexDetailService indexDetailService;
+    /**
+     * 无参的任务
+     * @throws Exception
+     */
+    public void index_curve_columnar_windSpeed_power() throws Exception {
+        indexDetailService.index_curve_columnar_windSpeed_power();//调用list方法完成对 key :"weatherProphet_1" ,路径"weather/weatherProphet_1"的推送
+        ////System.out.println("我已执行");
+    }
+
+
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     *
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+        //List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+        //System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+
+}

+ 47 - 0
src/main/java/com/gyee/frame/common/quartz/task/index_electricQuantity.java

@@ -0,0 +1,47 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.mapper.auto.TsysUserMapper;
+import com.gyee.frame.service.app.index.IndexService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ *测试类
+ * @CLASSNAME   WeatherfdPushTask
+ * @Description 向页面预测今天气象推送数据
+ * @Auther Wang Jiawen
+ * @DATE 2020/1/2 15:33
+ */
+@Component("index_electricQuantity")
+public class index_electricQuantity {
+	@Autowired
+	private TsysUserMapper tsysUserMapper;
+	@Autowired
+    private IndexService indexService;
+    /**
+     * 无参的任务
+     * @throws Exception 
+     */
+    public void index_electricQuantity() throws Exception {
+    	indexService.index_electricQuantity();//调用list方法完成对 key :"weatherProphet_1" ,路径"weather/weatherProphet_1"的推送     
+        ////System.out.println("我已执行");
+    }   
+       
+
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     * 
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+    	//List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+    	//System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+
+}

+ 47 - 0
src/main/java/com/gyee/frame/common/quartz/task/index_target_basic_indicators.java

@@ -0,0 +1,47 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.mapper.auto.TsysUserMapper;
+import com.gyee.frame.service.app.index.IndexService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ *测试类
+ * @CLASSNAME   WeatherfdPushTask
+ * @Description 向页面预测今天气象推送数据
+ * @Auther Wang Jiawen
+ * @DATE 2020/1/2 15:33
+ */
+@Component("index_target_basic_indicators")
+public class index_target_basic_indicators {
+	@Autowired
+	private TsysUserMapper tsysUserMapper;
+	@Autowired
+    private IndexService indexService;
+    /**
+     * 无参的任务
+     * @throws Exception
+    */
+    public void index_target_basic_indicators() throws Exception {
+    	indexService.index_target_basic_indicators();//调用list方法完成对 key :"weatherProphet_1" ,路径"weather/weatherProphet_1"的推送     
+        ////System.out.println("我已执行");
+    }   
+       
+
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     * 
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+    	//List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+    	//System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+
+}

+ 51 - 0
src/main/java/com/gyee/frame/common/quartz/task/index_target_windSpeed_power.java

@@ -0,0 +1,51 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.mapper.auto.TsysUserMapper;
+import com.gyee.frame.model.auto.Weatherfd;
+import com.gyee.frame.service.app.index.IndexService;
+import com.gyee.frame.service.WeatherfdService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.Date;
+import java.util.List;
+
+/**
+ *测试类
+ * @CLASSNAME   WeatherfdPushTask
+ * @Description 向页面预测今天气象推送数据
+ * @Auther Wang Jiawen
+ * @DATE 2020/1/2 15:33
+ */
+@Component("index_target_windSpeed_power")
+public class index_target_windSpeed_power {
+	@Autowired
+	private TsysUserMapper tsysUserMapper;
+	@Autowired
+    private IndexService indexService;
+    /**
+     * 无参的任务
+     * @throws Exception 
+     */
+    public void index_target_windSpeed_power() throws Exception {
+    	indexService.index_target_windSpeed_power();//调用list方法完成对 key :"weatherProphet_1" ,路径"weather/weatherProphet_1"的推送     
+        ////System.out.println("我已执行");
+    }   
+       
+
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     * 
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+    	//List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+    	//System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+
+}

+ 41 - 0
src/main/java/com/gyee/frame/common/quartz/task/index_windStation_card.java

@@ -0,0 +1,41 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.service.app.index.IndexDetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ *
+ */
+@Component("index_windStation_card")
+public class index_windStation_card {
+
+	@Autowired
+    private IndexDetailService indexDetailService;
+    /**
+     * 无参的任务
+     * @throws Exception 
+     */
+    public void index_windStation_card() throws Exception {
+    	indexDetailService.index_windStation_card();//调用list方法完成对 key :"weatherProphet_1" ,路径"weather/weatherProphet_1"的推送     
+        ////System.out.println("我已执行");
+    }   
+       
+
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     * 
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+    	//List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+    	//System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+
+}

+ 51 - 0
src/main/java/com/gyee/frame/common/quartz/task/index_windturbine_status.java

@@ -0,0 +1,51 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.mapper.auto.TsysUserMapper;
+import com.gyee.frame.model.auto.Weatherfd;
+import com.gyee.frame.service.app.index.IndexService;
+import com.gyee.frame.service.WeatherfdService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.Date;
+import java.util.List;
+
+/**
+ *测试类
+ * @CLASSNAME   WeatherfdPushTask
+ * @Description 向页面预测今天气象推送数据
+ * @Auther Wang Jiawen
+ * @DATE 2020/1/2 15:33
+ */
+@Component("index_windturbine_status")
+public class index_windturbine_status {
+	@Autowired
+	private TsysUserMapper tsysUserMapper;
+	@Autowired
+    private IndexService indexService;
+    /**
+     * 无参的任务
+     * @throws Exception 
+     */
+    public void index_windturbine_status() throws Exception {
+    	indexService.index_windturbine_status();//调用list方法完成对 key :"weatherProphet_1" ,路径"weather/weatherProphet_1"的推送     
+        ////System.out.println("我已执行");
+    }   
+       
+
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     * 
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+    	//List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+    	//System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+
+}

+ 41 - 0
src/main/java/com/gyee/frame/common/quartz/task/monitor_target_matrixMonitor.java

@@ -0,0 +1,41 @@
+package com.gyee.frame.common.quartz.task;
+
+import com.gyee.frame.service.monitor.MonitorService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ *
+ */
+@Component("monitor_target_matrixMonitor")
+public class monitor_target_matrixMonitor {
+
+	@Autowired
+    private MonitorService monitorService;
+    /**
+     * 无参的任务
+     * @throws Exception 
+     */
+    public void monitor_target_matrixMonitor() throws Exception {
+        monitorService.monitor_target_matrixMonitor();//调用list方法完成对 key :"weatherProphet_1" ,路径"weather/weatherProphet_1"的推送
+        ////System.out.println("我已执行");
+    }   
+       
+
+    /**
+     * 有参任务
+     * 目前仅执行常见的数据类型  Integer Long  带L  string  带 ''  bool Double 带 d
+     * @param a
+     * @param b
+     * 
+     */
+    public void runTask2(Integer a,Long b,String c,Boolean d,Double e)
+    {
+    	//List<TsysUser> list=  tsysUserMapper.selectByExample(new TsysUserExample());
+    	//System.err.println("用户查询num:"+list.size());
+        //System.out.println("正在执行定时任务,带多个参数的方法"+a+"   "+b+" "+c+"  "+d+" "+e+"执行时间:"+new Date().toLocaleString());
+    }
+
+}

+ 191 - 0
src/main/java/com/gyee/frame/common/quartz/utils/JobInvokeUtil.java

@@ -0,0 +1,191 @@
+package com.gyee.frame.common.quartz.utils;
+
+import com.gyee.frame.common.spring.SpringUtils;
+import com.gyee.frame.model.auto.SysQuartzJob;
+import com.gyee.frame.util.StringUtils;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * 任务执行工具
+ *
+ * @author ruoyi
+ */
+public class JobInvokeUtil
+{
+    /**
+     * 执行方法
+     *
+     * @param sysJob 系统任务
+     */
+    public static void invokeMethod(SysQuartzJob sysJob) throws Exception
+    {
+        String invokeTarget = sysJob.getInvokeTarget();
+        String beanName = getBeanName(invokeTarget);
+        String methodName = getMethodName(invokeTarget);
+        List<Object[]> methodParams = getMethodParams(invokeTarget);
+
+        if (!isValidClassName(beanName))
+        {
+            Object bean = SpringUtils.getBean(beanName);
+            if (null != bean) {
+                invokeMethod(bean, methodName, methodParams);
+            }else {
+                //System.out.println("找不到class["+ beanName +"]");
+            }
+        }
+        else
+        {
+            Object bean = Class.forName(beanName).newInstance();
+            if (null != bean) {
+                invokeMethod(bean, methodName, methodParams);
+            }else {
+                //System.out.println("找不到class["+ beanName +"]");
+            }
+        }
+    }
+
+    /**
+     * 调用任务方法
+     *
+     * @param bean 目标对象
+     * @param methodName 方法名称
+     * @param methodParams 方法参数
+     */
+    private static void invokeMethod(Object bean, String methodName, List<Object[]> methodParams)
+            throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException,
+            InvocationTargetException
+    {
+        if (StringUtils.isNotNull(methodParams) && methodParams.size() > 0)
+        {
+            Method method = bean.getClass().getDeclaredMethod(methodName, getMethodParamsType(methodParams));
+            method.invoke(bean, getMethodParamsValue(methodParams));
+        }
+        else
+        {
+            Method method = bean.getClass().getDeclaredMethod(methodName);
+            method.invoke(bean);
+        }
+    }
+
+    /**
+     * 校验是否为为class包名
+     * 
+     * @param str 名称
+     * @return true是 false否
+     */
+    public static boolean isValidClassName(String invokeTarget)
+    {
+        return StringUtils.countMatches(invokeTarget, ".") > 1;
+    }
+
+    /**
+     * 获取bean名称
+     * 
+     * @param invokeTarget 目标字符串
+     * @return bean名称
+     */
+    public static String getBeanName(String invokeTarget)
+    {
+        String beanName = StringUtils.substringBefore(invokeTarget, "(");
+        return StringUtils.substringBeforeLast(beanName, ".");
+    }
+
+    /**
+     * 获取bean方法
+     * 
+     * @param invokeTarget 目标字符串
+     * @return method方法
+     */
+    public static String getMethodName(String invokeTarget)
+    {
+        String methodName = StringUtils.substringBefore(invokeTarget, "(");
+        return StringUtils.substringAfterLast(methodName, ".");
+    }
+
+    /**
+     * 获取method方法参数相关列表
+     * 
+     * @param invokeTarget 目标字符串
+     * @return method方法相关参数列表
+     */
+    public static List<Object[]> getMethodParams(String invokeTarget)
+    {
+        String methodStr = StringUtils.substringBetween(invokeTarget, "(", ")");
+        if (StringUtils.isEmpty(methodStr))
+        {
+            return null;
+        }
+        String[] methodParams = methodStr.split(",");
+        List<Object[]> classs = new LinkedList<>();
+        for (int i = 0; i < methodParams.length; i++)
+        {
+            String str = StringUtils.trimToEmpty(methodParams[i]);
+            // String字符串类型,包含'
+            if (StringUtils.contains(str, "'"))
+            {
+                classs.add(new Object[] { StringUtils.replace(str, "'", ""), String.class });
+            }
+            // boolean布尔类型,等于true或者false
+            else if (StringUtils.equals(str, "true") || StringUtils.equalsIgnoreCase(str, "false"))
+            {
+                classs.add(new Object[] { Boolean.valueOf(str), Boolean.class });
+            }
+            // long长整形,包含L
+            else if (StringUtils.containsIgnoreCase(str, "L"))
+            {
+                classs.add(new Object[] { Long.valueOf(StringUtils.replaceIgnoreCase(str, "L", "")), Long.class });
+            }
+            // double浮点类型,包含D
+            else if (StringUtils.containsIgnoreCase(str, "D"))
+            {
+                classs.add(new Object[] { Double.valueOf(StringUtils.replaceIgnoreCase(str, "D", "")), Double.class });
+            }
+            // 其他类型归类为整形
+            else
+            {
+                classs.add(new Object[] { Integer.valueOf(str), Integer.class });
+            }
+        }
+        return classs;
+    }
+
+    /**
+     * 获取参数类型
+     * 
+     * @param methodParams 参数相关列表
+     * @return 参数类型列表
+     */
+    public static Class<?>[] getMethodParamsType(List<Object[]> methodParams)
+    {
+        Class<?>[] classs = new Class<?>[methodParams.size()];
+        int index = 0;
+        for (Object[] os : methodParams)
+        {
+            classs[index] = (Class<?>) os[1];
+            index++;
+        }
+        return classs;
+    }
+
+    /**
+     * 获取参数值
+     * 
+     * @param methodParams 参数相关列表
+     * @return 参数值列表
+     */
+    public static Object[] getMethodParamsValue(List<Object[]> methodParams)
+    {
+        Object[] classs = new Object[methodParams.size()];
+        int index = 0;
+        for (Object[] os : methodParams)
+        {
+            classs[index] = (Object) os[0];
+            index++;
+        }
+        return classs;
+    }
+}

+ 321 - 0
src/main/java/com/gyee/frame/common/spring/Constant.java

@@ -0,0 +1,321 @@
+package com.gyee.frame.common.spring;
+
+/**
+ * 
+ * 
+ * 项目名称:nxfd 类名称:Constant 类描述: 创建人:石林 创建时间:2014-3-4 上午10:07:03 修改人:shilinno1
+ * 修改时间:2014-3-4 上午10:07:03 修改备注:
+ * 
+ * @version
+ * 
+ */
+public class Constant {
+	/**
+	 * EdnaAPI 时间间隔
+	 */
+	public static final Long EDNAAPI_PRIED = 30l;
+	public static final Long TOP_PRIED = 1800l;
+
+	public static final String TPOINT_ALL_RFDL = "RFDL"; // 汇总日发电量
+	public static final String TPOINT_ALL_YFDL = "YFDL"; // 汇总月发电量
+	public static final String TPOINT_ALL_NFDL = "NFDL"; // 汇总年发电量
+	public static final String TPOINT_ALL_SJGL = "RPJGL"; // 汇总日实际功率
+	public static final String TPOINT_ALL_PJFS = "RPJFS"; // 汇总日平均风速
+
+	public static final String[] TPOINT_WP_AGC = { "AGC001", "AGC002",
+			"AGC004", "AGC005", "AGC006", "AGC007", "AGC008", "AGC011",
+			"AGC014", "AGC015", "AGC021", "AGC022", "AGC023", "AGC024",
+			"AGC025", "AGC026", "AGC031" };
+	public static final String[] TPOINT_WP_AGCYCGL = { "FCFGCDQ0001",
+			"FCFGCDQ0002", "FCFGCDQ0003", "FCFGCDQ0004", "FCFGCDQ0005",
+			"FCFGCDQ0006", "FCFGCDQ0007", "FCFGCDQ0008", "FCFGCDQ0009",
+			"FCFGCDQ0010", "FCFGCDQ0011", "FCFGCDQ0012", "FCFGCDQ0013",
+			"FCFGCDQ0014", "FCFGCDQ0015", "FCFGCDQ0016" };
+	public static final String TPOINT_WP_FGLYC = "FCFGCDQ0001,FCFGCDQ0003,FCFGCDQ0005,FCFGCDQ0007,FCFGCDQ0009,FCFGCDQ0011,FCFGCDQ0013,FCFGCDQ0015";
+	public static final String TPOINT_WP_FGLYC2 = "FCFGCDQ0002,FCFGCDQ0004,FCFGCDQ0006,FCFGCDQ0008,FCFGCDQ0010,FCFGCDQ0012,FCFGCDQ0014,FCFGCDQ0016";
+	public static final String TPOINT_WP_FGLYCDT = "FCFGDQDT00";
+	public static final String TPOINT_WP_FGLYCST = "FCFGDQST00";
+
+	public static final String TPOINT_WP_FGLYC24 = "FCFGCDQ0004,FCFGCDQ0008,FCFGCDQ0012,FCFGCDQ0016";
+
+	public static final String TPOINT_WP_YCGL = "RPJGL"; // 风场预测功率短期次天00:00:00
+	public static final String TPOINT_WP_PJFS = "RPJFS"; // 电场日平均风速
+
+	public static final String TPOINT_WP_SWDL = "SWDLB"; // 风场上网电量
+	public static final String TPOINT_WP_GWDL = "GWGWB"; // 风场购网电量
+	public static final String TPOINT_WP_NWGWDL = "NWGWB"; // 农网购网电量
+
+	public static final String TPOINT_AQTS = "AQTS"; // 安全天数
+	public static final String TPOINT_JPEYHT = "JPEYHT"; // 减排二氧化碳
+	public static final String TPOINT_JPEYHL = "JPEYHL"; // 减排二氧化硫
+	public static final String TPOINT_JYBM = "JYBM"; // 节约标煤
+	public static final String TPOINT_JYS = "JYS"; // 节约用水
+	/**
+	 * 空气温度
+	 */
+	public static final String TPOINT_WP_FCCFTWD = "FCCFTWD";// 温度
+
+	public static int WAITING_STATUS = 0;// 待机
+	public static int RUN_STATUS = 1;// 并网
+	public static int FAULT_STATUS = 2;// 故障停机
+	public static int INTERRUPTION_STATUS = 3;// 通讯中断
+	public static int MAINTENANCE_STATUS = 4;// 维护停机
+	public static String FAULT_NAME = "故障";
+	public static String MAINTENANCE_NAME = "维护";
+	public static String WAITING_NAME = "待机";
+	public static String RUN_NAME = "运行";
+	public static String INTERRUPTION_NAME = "离线";
+
+	public static final String TPOINT_WP_SJGL = "SSZGL"; // 日实际功率
+	public static final String TPOINT_WP_SFDL = "SFDL";// 总发电量(升压站)
+	public static final String TPOINT_WP_SSFS = "SSFS"; // 实时平均风速
+
+	public static final String TPOINT_WP_RFDL = "RFDLB"; // 日发电量
+	public static final String TPOINT_WP_YFDL = "YFDLB"; // 月发电量
+	public static final String TPOINT_WP_NFDL = "NFDLB"; // 年发电量
+
+	// public static final String TPOINT_WP_RFDL = "RFDL"; // 日发电量
+	// public static final String TPOINT_WP_YFDL = "YFDL"; // 月发电量
+	// public static final String TPOINT_WP_NFDL = "NFDL"; // 年发电量
+
+	public static final String TPOINT_WP_YFDLD = "YFDLD"; // 月发电量-自算
+
+	public static final String TPOINT_WT_RFDL = "RFDL";// 风机日发电量与SCADA日风场发电量
+	public static final String TPOINT_WT_DCRFDL = "AI064";// 导出单机发电量
+	public static final String TPOINT_WT_YFDL = "YFDL";// 风机月发电量
+	public static final String TPOINT_WT_NFDL = "NFDL";// 风机年发电量
+
+	public static final String TPOINT_WT_RFDL2 = "RFDLREAD";// 逆变器日发电量
+	public static final String TPOINT_WP_RFDLBZ = "RFDLE";// 日理论发电量
+	public static final String TPOINT_WP_ZLLGL = "ZLLGL";// 总理论功率
+	public static final String TPOINT_WP_ZZSGL = "ZZSGL";// 总应发功率
+	public static final String TPOINT_WP_SWDLN = "SWDLN";// 年上网电量
+	public static final String TPOINT_WP_SWDLY = "SWDLY";// 月上网电量
+
+	public static final String TPOINT_WT_XDTS = "XDTS";// 限电台数
+	public static final String TPOINT_WT_YXTS = "YXTS";// 运行台数
+	public static final String TPOINT_WT_DJTS = "DJTS"; // 待机台数
+	public static final String TPOINT_WT_WHTJ = "WHTJ";// 维护台数
+	public static final String TPOINT_WT_GZTJ = "GZTJ";// 故障台数
+	public static final String TPOINT_WT_TXZD = "TXZD";// 离线台数
+
+	public static final String TPOINT_WT_U1YZDL = "AI061";// U1项绕组电流
+	public static final String TPOINT_WT_U2YZDL = "AI062";// U2项绕组电流
+	public static final String TPOINT_WT_U3YZDL = "AI063";// U3项绕组电流
+	public static final String TPOINT_WT_U1YZDY = "AI058";// U1项绕组电压
+	public static final String TPOINT_WT_U2YZDY = "AI059";// U2项绕组电压
+	public static final String TPOINT_WT_U3YZDY = "AI060";// U3项绕组电压
+	public static final String TPOINT_WT_FDJZS = "AI128";// 发电机转速
+	public static final String TPOINT_WT_U1YZWD = "AI045";// U1绕组温度
+	public static final String TPOINT_WT_V1YZWD = "AI047";// V1绕组温度
+	public static final String TPOINT_WT_W1YZWD = "AI049";// W1绕组温度
+	public static final String TPOINT_WT_YLZS = "AI012";// 叶轮转速
+	public static final String TPOINT_WT_FJJJJ = "AI085";// 风机浆距角
+	// public static final String TPOINT_WT_DWZWD = "AI071";// 低速轴温度
+	// public static final String TPOINT_WT_GWZWD = "AI072";// 高速轴温度
+	public static final String TPOINT_WT_DWZWD = "AI038";// shaft轴1温度
+	public static final String TPOINT_WT_GWZWD = "AI039";// shaft轴2温度
+	public static final String TPOINT_WT_CLXWD = "AI041";// 齿轮箱油温
+	public static final String TPOINT_WT_BJJD1 = "AI076";// 变桨角度1
+	public static final String TPOINT_WT_BJJD2 = "AI077";// 变桨角度2
+	public static final String TPOINT_WT_BJJD3 = "AI078";// 变桨角度3
+	public static final String TPOINT_WT_PHWZ = "AI034";// 偏航位置
+	public static final String TPOINT_WT_PJFS = "RPJFS"; // 日平均风速
+	public static final String TPOINT_WT_FJGL = "AI130";// 风机功率
+	public static final String TPOINT_WT_PJGL = "RPJGL";// 风机平均功率
+	public static final String TPOINT_WT_GLYS = "AI067";// 功率因数
+	public static final String TPOINT_WT_JCWWD = "AI056";// 机舱外温度
+	public static final String TPOINT_WT_JCWD = "AI057";// 机舱温度
+	public static final String TPOINT_WT_TDGWD = "AI069";// 塔底柜温度
+	public static final String TPOINT_WT_JCGWD = "AI070";// 机舱柜温度
+	public static final String TPOINT_WT_FJFX = "AI008";// 风机风向
+	public static final String TPOINT_WT_DFJD = "AI036";// 对风角度
+	public static final String TPOINT_WT_FJPL = "AI068";// 风机频率
+	public static final String TPOINT_WT_WGGL = "AI131";// 无功功率
+	public static final String TPOINT_WT_FJKYL = "AI001";// 风机可用率
+	public static final String TPOINT_WT_LQSW = "AI051"; // 冷却水温
+	public static final String TPOINT_WT_FJSSFS = "AI022";// 风机实时风速
+	public static final String TPOINT_WT_FJZSXZ = "AI178";// 风机转速限值
+	public static final String TPOINT_WT_FDJZCAWD = "AI052";// 发电机轴承A温度
+	public static final String TPOINT_WT_FDJZCBWD = "AI053";// 发电机轴承B温度
+	public static final String TPOINT_WT_ZJGD = "AI129"; // 转矩给定
+	public static final String TPOINT_WT_FJGLKZXZ = "AI426";// UP97 取值 功率控制限值
+	public static final String TPOINT_WT_LLGL = "BZGL";// 风机理论功率
+	public static final String TPOINT_WT_YFGL = "ZSGL";// 风机应发功率
+	public static final String TPOINT_WT_RFDLZS = "RFDLZS";// 日理论发电量
+
+	// 新增
+	public static final String TPOINT_WT_HDL = "AI197";// 耗电量
+	public static final String TPOINT_WT_SCZT = "AI427";// 刹车状态
+	public static final String TPOINT_WT_JLDZ = "AI402";// 解缆动作、正在偏航、解缆
+	public static final String TPOINT_WT_FQDDWD = "AI053";// 发电机非驱动端温度
+	public static final String TPOINT_WT_HXZD = "AI227_HB";// 横向振动
+	public static final String TPOINT_WT_ZXZD = "AI226_HB";// 纵向振动
+	public static final String TPOINT_WT_GZDM = "FJBJ";// 故障代码
+	public static final String TPOINT_WT_LQSWD = "AI042";// 齿轮箱冷却水温度
+	public static final String TPOINT_WT_ZZQDWD = "AI186_HB";// 主轴轴承前驱侧温度
+	public static final String TPOINT_WT_YYXTYY = "AI018";// 液压系统油压
+	public static final String TPOINT_WT_FDJLQSWD = "AI300";// 液压系统油压
+
+	// public static final String TPOINT_WT_RFDLBZ = "RFDLLL";//日理论发电量
+
+	public static final String TPOINT_WT_RFDLBZ = "RFDLBZ";// 日应发电量
+
+	public static final String TPOINT_WT_NBQJLDY = "AIG061";// 逆变器交流电压
+	public static final String TPOINT_WT_NBQJLDL = "AIG060";// 逆变器交流电流
+	public static final String TPOINT_WT_NBQZLDY = "AIG081";// 逆变器直流电压
+	public static final String TPOINT_WT_NBQZLDL = "AIG078";// 逆变器直流电流
+
+	public static final String TPOINT_WT_NBQPL = "AIG073";// 逆变器频率
+	public static final String TPOINT_WT_NBQGLYSSZ = "AIG069";// 功率因数设置
+	public static final String TPOINT_WT_NBQGLYSSZ2 = "AIG104";// 功率因数设置
+	public static final String TPOINT_WT_NBQZFDL = "AIG064";// 逆变相总发电量
+	public static final String TPOINT_WT_NBQKQWD = "AIG071";// 逆变器空气温度
+	public static final String TPOINT_WT_NBQXL = "AIG072";// 逆变器效率
+
+	public static final String RFDLD = "RFDLD"; // 日理论发电量
+	public static final String RFDLE = "RFDLE"; // 日应发发电量
+	public static final String FJZT = "FJZT"; // 风场状态
+
+	public static final String ZBZGL = "ZBZGL";// 理论功率
+	public static final String ZSGLZZSGL = "ZZSGL";// 应发功率
+
+	public static final String RLZSSDL = "RLZSSDL"; // 日场内受累检修
+	public static final String RSZSSDL = "RSZSSDL"; // 日场内受累故障
+	public static final String RWZSSDL = "RWZSSDL"; // 日场外受累电网
+	public static final String RTZSSDL = "RTZSSDL"; // 日场外受累天气
+
+	public static final String YLZSSDL = "YLZSSDL"; // 月场内受累检修
+	public static final String YSZSSDL = "YSZSSDL"; // 月场内受累故障
+	public static final String YWZSSDL = "YWZSSDL"; // 月场外受累电网
+	public static final String YTZSSDL = "YTZSSDL"; // 月场外受累天气
+
+	public static final String NLZSSDL = "NLZSSDL"; // 年场内受累检修
+	public static final String NSZSSDL = "NSZSSDL"; // 年场内受累故障
+	public static final String NWZSSDL = "NWZSSDL"; // 年场外受累电网
+	public static final String NTZSSDL = "NTZSSDL"; // 年场外受累天气
+
+	public static final String RQFSSDL = "RQFSSDL"; // 日性能损失电量
+	public static final String RXNSSDL_ZS = "RXNSSDL-ZS"; // 日性能损失电量风机
+
+	public static final String RQFSSDL_ZS = "RQFSSDL-ZS";
+	public static final String RXDSSDL_ZS = "RXDSSDL-ZS";
+	public static final String RWZSSDL_ZS = "RWZSSDL-ZS";
+	public static final String RTZSSDL_ZS = "RWZSSDL-ZS";
+	public static final String RDJSSDL_ZS = "RDJSSDL-ZS";
+	public static final String RSTSSDL_ZS = "RSTSSDL-ZS";
+	public static final String RQXSSDL_ZS = "RQXSSDL-ZS";
+	public static final String RGZSSDL_ZS = "RGZSSDL-ZS";
+	public static final String RSZSSDL_ZS = "RSZSSDL-ZS";
+	public static final String RJXSSDL_ZS = "RJXSSDL-ZS";
+	public static final String RLZSSDL_ZS = "RLZSSDL-ZS";
+
+	public static final String YQFSSDL_ZS = "YQFSSDL-ZS";
+	public static final String YXDSSDL_ZS = "YXDSSDL-ZS";
+	public static final String YWZSSDL_ZS = "YWZSSDL-ZS";
+	public static final String YTZSSDL_ZS = "YWZSSDL-ZS";
+	public static final String YDJSSDL_ZS = "YDJSSDL-ZS";
+	public static final String YSTSSDL_ZS = "YSTSSDL-ZS";
+	public static final String YQXSSDL_ZS = "YQXSSDL-ZS";
+	public static final String YGZSSDL_ZS = "YGZSSDL-ZS";
+	public static final String YSZSSDL_ZS = "YSZSSDL-ZS";
+	public static final String YJXSSDL_ZS = "YJXSSDL-ZS";
+	public static final String YLZSSDL_ZS = "YLZSSDL-ZS";
+
+	public static final String NXNSSDL_ZS = "NXNSSDL-ZS"; // 日性能损失电量风机
+	public static final String NQFSSDL_ZS = "NQFSSDL-ZS";
+	public static final String NXDSSDL_ZS = "NXDSSDL-ZS";
+	public static final String NWZSSDL_ZS = "NWZSSDL-ZS";
+	public static final String NTZSSDL_ZS = "NWZSSDL-ZS";
+	public static final String NDJSSDL_ZS = "NDJSSDL-ZS";
+	public static final String NSTSSDL_ZS = "NSTSSDL-ZS";
+	public static final String NQXSSDL_ZS = "NQXSSDL-ZS";
+	public static final String NGZSSDL_ZS = "NGZSSDL-ZS";
+	public static final String NSZSSDL_ZS = "NSZSSDL-ZS";
+	public static final String NJXSSDL_ZS = "NJXSSDL-ZS";
+	public static final String NLZSSDL_ZS = "NLZSSDL-ZS";
+
+	// public static final String RQFSSDL = "RXNZSDL"; // 日性能损失电量
+	// public static final String RXNSSDL_ZS = "RXNSSDL-ZS"; // 日性能损失电量风机
+	public static final String RGZSSDL = "RGZSSDL"; // 日故障损失电量
+	public static final String RJXSSDL = "RJXSSDL"; // 日检修损失电量
+	public static final String RXDSSDL = "RXDSSDL"; // 日限电损失电量
+
+	public static final String YQFSSDL = "YQFSSDL"; // 月欠发损失电量
+	public static final String YXNSSDL_ZS = "YXNSSDL-ZS"; // 月性能损失电量风机
+
+	// public static final String YQFSSDL = "YXNZSDL"; // 月性能损失电量
+	// public static final String YXNSSDL_ZS = "YXNSSDL-ZS"; // 月性能损失电量风机
+	public static final String YGZSSDL = "YGZSSDL"; // 月故障损失电量
+	public static final String YJXSSDL = "YJXSSDL"; // 月检修损失电量
+	public static final String YXDSSDL = "YXDSSDL"; // 月限电损失电量
+
+	public static final String NQFSSDL = "NQFSSDL"; // 年欠发损失电量
+
+	// public static final String NQFSSDL = "NXNZSDL"; // 年性能损失电量
+	// public static final String NXNSSDL_ZS = "NXNSSDL-ZS"; // 年性能损失电量风机
+	public static final String NGZSSDL = "NGZSSDL"; // 年故障损失电量
+	public static final String NJXSSDL = "NJXSSDL"; // 年检修损失电量
+	public static final String NXDSSDL = "NXDSSDL"; // 年限电损失电量
+	/********************************* begin ***********************************/
+	/**
+	 * 修改五项损失为自算
+	 */
+	public static final String RSDJZSDL = "RSDJZSDL";
+	public static final String RSSTZSDL = "RSSTZSDL";
+	public static final String RXNZSDL = "RXNZSDL";
+	public static final String RSQXZSDL = "RSQXZSDL";
+	public static final String RGZZSDL = "RGZZSDL";
+	public static final String RSZZSDL = "RSZZSDL";
+	public static final String RJXZSDL = "RJXZSDL";
+	public static final String RLZZSDL = "RLZZSDL";
+	public static final String RQFZSDL = "RQFZSDL";
+	public static final String RXDZSDL = "RXDZSDL";
+	public static final String RWZZSDL = "RWZZSDL";
+	public static final String RTZZSDL = "RTZZSDL";
+
+	public static final String YSDJZSDL = "YSDJZSDL";
+	public static final String YSSTZSDL = "YSSTZSDL";
+	public static final String YXNZSDL = "YXNZSDL";
+	public static final String YSQXZSDL = "YSQXZSDL";
+	public static final String YGZZSDL = "YGZZSDL";
+	public static final String YSZZSDL = "YSZZSDL";
+	public static final String YJXZSDL = "YJXZSDL";
+	public static final String YLZZSDL = "YLZZSDL";
+	public static final String YQFZSDL = "YQFZSDL";
+	public static final String YXDZSDL = "YXDZSDL";
+	public static final String YWZZSDL = "YWZZSDL";
+	public static final String YTZZSDL = "YTZZSDL";
+
+	public static final String NSDJZSDL = "NSDJZSDL";
+	public static final String NSSTZSDL = "NSSTZSDL";
+	public static final String NXNZSDL = "NXNZSDL";
+	public static final String NSQXZSDL = "NSQXZSDL";
+	public static final String NGZZSDL = "NGZZSDL";
+	public static final String NSZZSDL = "NSZZSDL";
+	public static final String NJXZSDL = "NJXZSDL";
+	public static final String NLZZSDL = "NLZZSDL";
+	public static final String NQFZSDL = "NQFZSDL";
+	public static final String NXDZSDL = "NXDZSDL";
+	public static final String NWZZSDL = "NWZZSDL";
+	public static final String NTZZSDL = "NTZZSDL";
+	/********************************* end ***********************************/
+	public static final String FCCFTFS10 = "FCCFTFS10";// 测风塔10米风速
+	public static final String FCCFTFS30 = "FCCFTFS30";// 测风塔30米风速
+	public static final String FCCFTFS50 = "FCCFTFS50";// 测风塔50米风速
+	public static final String FCCFTFS60 = "FCCFTFS60";// 测风塔60米风速
+	public static final String FCCFTFS70 = "FCCFTFS70";// 测风塔70米风速
+	public static final String FCCFTFS80 = "FCCFTFS80";// 测风塔80米风速
+
+	public static final String FCCFTFX10 = "FCCFTFX10";// 测风塔10米风向
+	public static final String FCCFTFX30 = "FCCFTFX30";// 测风塔30米风向
+	public static final String FCCFTFX50 = "FCCFTFX50";// 测风塔50米风向
+	public static final String FCCFTFX60 = "FCCFTFX60";// 测风塔60米风向
+	public static final String FCCFTFX70 = "FCCFTFX70";// 测风塔70米风向
+	public static final String FCCFTFX80 = "FCCFTFX80";// 测风塔80米风向
+
+	public static final String FCCFTWD = "FCCFTWD";// 测风塔温度
+	public static final String FCCFTSD = "FCCFTSD";// 测风塔湿度
+	public static final String FCCFTYQ = "FCCFTYQ";// 测风塔压强
+	public static final String FCCFTMD = "KQMD";// 空气密度
+}

+ 234 - 0
src/main/java/com/gyee/frame/common/spring/InitialRunner.java

@@ -0,0 +1,234 @@
+package com.gyee.frame.common.spring;
+
+import com.gyee.frame.model.auto.*;
+import com.gyee.frame.model.ticket.Labor;
+import com.gyee.frame.service.*;
+import com.gyee.frame.service.ticket.LaborService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CopyOnWriteArraySet;
+
+/**
+ * 服务启动执行
+ */
+@Component
+public class InitialRunner implements CommandLineRunner {
+
+
+    @Resource
+    private RMConfigService rMConfigService;
+    @Resource
+    private WindpowerstationService windpowerstationService;
+    @Resource
+    private ProjectService projectService;
+    @Resource
+    private LineService lineService;
+    @Resource
+    private WindturbineService windturbineService;
+    @Resource
+    private WindPowerstationTestingPointService windPowerstationTestingPointService;
+    @Resource
+    private WindTurbineTestingPointAiService windTurbineTestingPointAiService;
+    @Resource
+    private WindTurbineTestingPointDiService windTurbineTestingPointDiService;
+    //RMConfig
+    @Resource
+    private LaborService laborService;
+    @Resource
+    private GyeeBraceletuserService gyeeBraceletuserService;
+    public static Map<String, RMConfig> rmcmap = new HashMap<String, RMConfig>();
+
+    public static Map<String, GyeeBraceletuser> braceletuserMap = new HashMap<String, GyeeBraceletuser>();
+    public static Map<String, String> laborsmap = new HashMap<String, String>();
+    public static List<Windpowerstation> wpallls = new ArrayList<Windpowerstation>(); // 风电场LIST集合
+    public static List<Windpowerstation> wpls = new ArrayList<Windpowerstation>(); // 风电场LIST集合
+    public static List<Project> pjls = new ArrayList<Project>(); // 项目LIST集合
+    public static List<Windturbine> wtls = new ArrayList<Windturbine>(); // 风电机LIST集合
+//    public static List<Line> lnls = new ArrayList<Line>(); // 线路LIST集合
+
+    public static Map<String, List<Windturbine>> wp_wtmap = new HashMap<String, List<Windturbine>>();
+    public static Map<String, List<Windturbine>> pj_wtmap = new HashMap<String, List<Windturbine>>();
+   // public static Map<String, List<Windturbine>> ln_wtmap = new HashMap<String, List<Windturbine>>();
+
+    public static Map<String, Map<String, WindTurbineTestingPointAi2>> wtpAimap = new HashMap<String, Map<String, WindTurbineTestingPointAi2>>();// 风电机测点AI表
+    public static Map<String, Map<String, WindPowerStationTestingPoint2>> stationPointmap = new HashMap<String, Map<String, WindPowerStationTestingPoint2>>();//场站测点
+    public static Map<String, CopyOnWriteArraySet<String>> keyidMap = new HashMap<String, CopyOnWriteArraySet<String>>();
+
+    @Override
+    public void run(String... args) throws Exception {
+        //System.out.println(">>>>>>>>>>>>>>>服务启动执行,换成测点关联数据 <<<<<<<<<<<<<");
+
+        /**
+         * 人员: num ===> name
+         */
+        List<Labor> labors = laborService.getLabors();
+        for (Labor labor : labors){
+            laborsmap.put(labor.getLabornum().toLowerCase(), labor.getLaborname());
+        }
+
+        /**
+         * 人员: 人员编号 ===>人员基础信息表关联oracle    shbruser表
+         */
+        List<GyeeBraceletuser> GyeeBraceletusers = gyeeBraceletuserService.queryBraceletusers();
+        for (GyeeBraceletuser gb : GyeeBraceletusers){
+            braceletuserMap.put(gb.getUserid(), gb);
+        }
+
+
+
+
+//        RMConfigExample example=new RMConfigExample();
+//        example.createCriteria().getAllCriteria();
+//        List<RMConfig> list= rMConfigService.selectByExample(example);
+//        if(!list.isEmpty())
+//        {
+//            for(RMConfig rm:list)
+//            {
+//                rmcmap.put(rm.getId(),rm);
+//            }
+//        }
+
+        WindpowerstationExample windpowerstationExample=new WindpowerstationExample();
+        windpowerstationExample.setOrderByClause("ordernum ASC");
+        windpowerstationExample.createCriteria().andIdNotLike("%MCH%");
+        wpallls= windpowerstationService.selectByExample(windpowerstationExample);
+
+        windpowerstationExample=new WindpowerstationExample();
+        windpowerstationExample.setOrderByClause("ordernum ASC");
+        windpowerstationExample.createCriteria().andIdNotLike("%GDC");
+        wpls= windpowerstationService.selectByExample(windpowerstationExample);
+
+        ProjectExample projectExample=new ProjectExample();
+        projectExample.setOrderByClause("ordernum ASC");
+        projectExample.createCriteria().andWindpowerstationidNotLike("%GDC");
+        pjls= projectService.selectByExample(projectExample);
+
+//        LineExample lineExample=new LineExample();
+//        lineExample.setOrderByClause("ordernum ASC");
+//        lineExample.createCriteria().getAllCriteria();
+//        lnls= lineService.selectByExample(lineExample);
+
+        WindturbineExample windturbineExample=new WindturbineExample();
+        windturbineExample.setOrderByClause("id ASC");
+        windturbineExample.createCriteria().andWindpowerstationidNotLike("%GDC");
+        wtls= windturbineService.selectByExample(windturbineExample);
+
+
+        if(wtls!=null && !wtls.isEmpty()){
+
+            for(int i=0;i<wtls.size();i++){
+
+                Windturbine point=wtls.get(i);
+                if(wp_wtmap.containsKey(point.getWindpowerstationid())){
+                    List<Windturbine> ls=wp_wtmap.get(point.getWindpowerstationid());
+                    ls.add(point);
+                    wp_wtmap.put(point.getWindpowerstationid(),ls);
+                }
+                else{
+                    List<Windturbine> ls =new ArrayList();
+                    ls.add(point);
+                    wp_wtmap.put(point.getWindpowerstationid(),ls);
+                }
+
+                if(pj_wtmap.containsKey(point.getProjectid())){
+                    List<Windturbine> ls=pj_wtmap.get(point.getProjectid());
+                    ls.add(point);
+                    pj_wtmap.put(point.getProjectid(),ls);
+                }
+                else{
+                    List<Windturbine> ls =new ArrayList();
+                    ls.add(point);
+                    pj_wtmap.put(point.getProjectid(),ls);
+                }
+
+
+//                if(ln_wtmap.containsKey(point.getLineid())){
+//                    List<Windturbine> ls=ln_wtmap.get(point.getLineid());
+//                    ls.add(point);
+//                    ln_wtmap.put(point.getLineid(),ls);
+//                }
+//                else{
+//                    List<Windturbine> ls =new ArrayList();
+//                    ls.add(point);
+//                    ln_wtmap.put(point.getLineid(),ls);
+//                }
+
+            }
+        }
+
+
+        WindPowerStationTestingPoint2Example windPowerstationTestingPointExample=new WindPowerStationTestingPoint2Example();
+        windPowerstationTestingPointExample.createCriteria().getAllCriteria();
+        List<WindPowerStationTestingPoint2> wpPointlist= windPowerstationTestingPointService.selectByExample(windPowerstationTestingPointExample);
+
+        Map<String,WindPowerStationTestingPoint2> items=null;
+        if(wpPointlist!=null && !wpPointlist.isEmpty()){
+            for(int i=0;i<wpPointlist.size();i++){
+                WindPowerStationTestingPoint2 point=wpPointlist.get(i);
+                if(stationPointmap.containsKey(point.getWindpowerstationid())){
+                    items=stationPointmap.get(point.getWindpowerstationid());
+                    items.put(point.getUniformcode(), point);
+                }
+                else{
+                    items=new HashMap<String,WindPowerStationTestingPoint2>();
+                    stationPointmap.put(point.getWindpowerstationid(), items);
+                    items.put(point.getUniformcode(), point);
+                }
+
+            }
+        }
+
+        WindTurbineTestingPointAi2Example windTurbineTestingPointAiExample=new WindTurbineTestingPointAi2Example();
+        windTurbineTestingPointAiExample.createCriteria().getAllCriteria();
+        List<WindTurbineTestingPointAi2> wtAilist= windTurbineTestingPointAiService.selectByExample(windTurbineTestingPointAiExample);
+
+        Map<String, WindTurbineTestingPointAi2> map = null;
+
+        if(wtAilist != null && !wtAilist.isEmpty()){
+            for(WindTurbineTestingPointAi2 mp : wtAilist){
+                if(wtpAimap.containsKey(mp.getWindturbineid())){
+                    map = wtpAimap.get(mp.getWindturbineid());
+                    map.put(mp.getUniformcode(), mp);
+                }else{
+                    map = new HashMap<String, WindTurbineTestingPointAi2>();
+                    map.put(mp.getUniformcode(), mp);
+                    wtpAimap.put(mp.getWindturbineid(), map);
+                }
+            }
+        }
+
+
+//        String pageNumber = "pageNumber_4";
+//        String functionNumber = "functionNumber_2";
+//        StringBuilder sb = new StringBuilder();
+//        sb.append(pageNumber).append("_").append(functionNumber);
+//
+//        String jobkey = String.valueOf(sb);
+//
+//
+//        CopyOnWriteArraySet<String> set=new CopyOnWriteArraySet<String>();
+//        for(Windpowerstation wp: wpls)
+//        {
+//            StringBuilder sb2 = new StringBuilder();
+//            sb2.append("wp_").append(wp.getId());
+//            set.add(String.valueOf(sb2));
+//        }
+//
+//        for(Project pj: pjls)
+//        {
+//            StringBuilder sb2 = new StringBuilder();
+//            sb2.append("pj_").append(pj.getId());
+//            set.add(String.valueOf(sb2));
+//        }
+//
+//        keyidMap.put(jobkey,set);
+    }
+
+}

+ 116 - 0
src/main/java/com/gyee/frame/common/spring/SpringUtils.java

@@ -0,0 +1,116 @@
+package com.gyee.frame.common.spring;
+
+import org.springframework.aop.framework.AopContext;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.NoSuchBeanDefinitionException;
+import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+import org.springframework.stereotype.Component;
+
+/**
+* spring工具类 方便在非spring管理环境中获取bean
+* @ClassName: SpringUtils
+* @author gyee
+* @date 2019-09-11 11:28
+*
+ */
+@Component
+public final class SpringUtils implements BeanFactoryPostProcessor
+{
+    /** Spring应用上下文环境 */
+    private static ConfigurableListableBeanFactory beanFactory;
+
+    @Override
+    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException
+    {
+        SpringUtils.beanFactory = beanFactory;
+    }
+
+    /**
+     * 获取对象
+     *
+     * @param name
+     * @return Object 一个以所给名字注册的bean的实例
+     * @throws org.springframework.beans.BeansException
+     *
+     */
+    @SuppressWarnings("unchecked")
+    public static <T> T getBean(String name) throws BeansException
+    {
+        return (T) beanFactory.getBean(name);
+    }
+
+    /**
+     * 获取类型为requiredType的对象
+     *
+     * @param clz
+     * @return
+     * @throws org.springframework.beans.BeansException
+     *
+     */
+    public static <T> T getBean(Class<T> clz) throws BeansException
+    {
+        T result = (T) beanFactory.getBean(clz);
+        return result;
+    }
+
+    /**
+     * 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true
+     *
+     * @param name
+     * @return boolean
+     */
+    public static boolean containsBean(String name)
+    {
+        return beanFactory.containsBean(name);
+    }
+
+    /**
+     * 判断以给定名字注册的bean定义是一个singleton还是一个prototype。 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException)
+     *
+     * @param name
+     * @return boolean
+     * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
+     *
+     */
+    public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException
+    {
+        return beanFactory.isSingleton(name);
+    }
+
+    /**
+     * @param name
+     * @return Class 注册对象的类型
+     * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
+     *
+     */
+    public static Class<?> getType(String name) throws NoSuchBeanDefinitionException
+    {
+        return beanFactory.getType(name);
+    }
+
+    /**
+     * 如果给定的bean名字在bean定义中有别名,则返回这些别名
+     *
+     * @param name
+     * @return
+     * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
+     *
+     */
+    public static String[] getAliases(String name) throws NoSuchBeanDefinitionException
+    {
+        return beanFactory.getAliases(name);
+    }
+
+    /**
+     * 获取aop代理对象
+     * 
+     * @param invoker
+     * @return
+     */
+    @SuppressWarnings("unchecked")
+    public static <T> T getAopProxy(T invoker)
+    {
+        return (T) AopContext.currentProxy();
+    }
+}

+ 89 - 0
src/main/java/com/gyee/frame/common/support/CharsetKit.java

@@ -0,0 +1,89 @@
+package com.gyee.frame.common.support;
+
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+
+import com.gyee.frame.util.StringUtils;
+
+/**
+ * 字符集工具类
+ * 
+ * @author fc
+ *
+ */
+public class CharsetKit
+{
+    /** ISO-8859-1 */
+    public static final String ISO_8859_1 = "ISO-8859-1";
+    /** UTF-8 */
+    public static final String UTF_8 = "UTF-8";
+    /** GBK */
+    public static final String GBK = "GBK";
+
+    /** ISO-8859-1 */
+    public static final Charset CHARSET_ISO_8859_1 = Charset.forName(ISO_8859_1);
+    /** UTF-8 */
+    public static final Charset CHARSET_UTF_8 = Charset.forName(UTF_8);
+    /** GBK */
+    public static final Charset CHARSET_GBK = Charset.forName(GBK);
+
+    /**
+     * 转换为Charset对象
+     * 
+     * @param charset 字符集,为空则返回默认字符集
+     * @return Charset
+     */
+    public static Charset charset(String charset)
+    {
+        return StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset);
+    }
+
+    /**
+     * 转换字符串的字符集编码
+     * 
+     * @param source 字符串
+     * @param srcCharset 源字符集,默认ISO-8859-1
+     * @param destCharset 目标字符集,默认UTF-8
+     * @return 转换后的字符集
+     */
+    public static String convert(String source, String srcCharset, String destCharset)
+    {
+        return convert(source, Charset.forName(srcCharset), Charset.forName(destCharset));
+    }
+
+    /**
+     * 转换字符串的字符集编码
+     * 
+     * @param source 字符串
+     * @param srcCharset 源字符集,默认ISO-8859-1
+     * @param destCharset 目标字符集,默认UTF-8
+     * @return 转换后的字符集
+     */
+    public static String convert(String source, Charset srcCharset, Charset destCharset)
+    {
+        if (null == srcCharset)
+        {
+            srcCharset = StandardCharsets.ISO_8859_1;
+        }
+
+        if (null == destCharset)
+        {
+            srcCharset = StandardCharsets.UTF_8;
+        }
+
+        if (StringUtils.isEmpty(source) || srcCharset.equals(destCharset))
+        {
+            return source;
+        }
+        return new String(source.getBytes(srcCharset), destCharset);
+    }
+
+    /**
+     * @return 系统字符集编码
+     */
+    public static String systemCharset()
+    {
+        return Charset.defaultCharset().name();
+    }
+
+}

+ 0 - 0
src/main/java/com/gyee/frame/common/support/Convert.java


部分文件因文件數量過多而無法顯示