Ver código fonte

第一次提交

shangkai911 4 anos atrás
commit
27215b3922
100 arquivos alterados com 14015 adições e 0 exclusões
  1. 13 0
      .classpath
  2. 13 0
      .mymetadata
  3. 64 0
      .project
  4. 3 0
      .settings/com.genuitec.eclipse.core.prefs
  5. 3 0
      .settings/com.genuitec.eclipse.j2eedt.core.prefs
  6. 3 0
      .settings/com.genuitec.jboss.ide.eclipse.xdoclet.run.prefs
  7. 6 0
      .settings/org.eclipse.core.resources.prefs
  8. 112 0
      .settings/org.eclipse.jdt.core.prefs
  9. 2 0
      .settings/org.eclipse.ltk.core.refactoring.prefs
  10. 4 0
      .settings/org.eclipse.m2e.core.prefs
  11. 10 0
      .settings/org.eclipse.wst.common.component
  12. 6 0
      .settings/org.eclipse.wst.common.project.facet.core.xml
  13. 1 0
      .settings/org.eclipse.wst.jsdt.ui.superType.container
  14. 1 0
      .settings/org.eclipse.wst.jsdt.ui.superType.name
  15. BIN
      document/SMS发送短信1.rar
  16. 56 0
      generatorConfig.xml
  17. BIN
      mybatis-generator-core-1.3.2.jar
  18. 438 0
      pom.xml
  19. 123 0
      smscat.iml
  20. 0 0
      src/main/filters/dev-filter.properties
  21. 0 0
      src/main/filters/prd-filter.properties
  22. 0 0
      src/main/filters/test-filter.properties
  23. 103 0
      src/main/java/com/ssm/common/ExceptionReaper.java
  24. 29 0
      src/main/java/com/ssm/common/InitListener.java
  25. 96 0
      src/main/java/com/ssm/common/OneportalUserManageController.java
  26. 29 0
      src/main/java/com/ssm/common/PermissionDeniedException.java
  27. 19 0
      src/main/java/com/ssm/common/ResultBack.java
  28. 22 0
      src/main/java/com/ssm/common/SessionTimeOutException.java
  29. 25 0
      src/main/java/com/ssm/common/SmsMessageDelegateListener.java
  30. 58 0
      src/main/java/com/ssm/common/SpringInitConfig.java
  31. 229 0
      src/main/java/com/ssm/controller/LoginController.java
  32. 510 0
      src/main/java/com/ssm/controller/business/SendMessageContorller.java
  33. 290 0
      src/main/java/com/ssm/controller/system/DepartmentController.java
  34. 25 0
      src/main/java/com/ssm/controller/system/HomeController.java
  35. 76 0
      src/main/java/com/ssm/controller/system/PersonalController.java
  36. 189 0
      src/main/java/com/ssm/controller/system/PositionController.java
  37. 354 0
      src/main/java/com/ssm/controller/system/SysDictionaryController.java
  38. 109 0
      src/main/java/com/ssm/controller/system/SysLogController.java
  39. 575 0
      src/main/java/com/ssm/controller/system/SysMenuController.java
  40. 708 0
      src/main/java/com/ssm/controller/system/SysRoleController.java
  41. 289 0
      src/main/java/com/ssm/controller/system/SysUserController.java
  42. 50 0
      src/main/java/com/ssm/interceptor/LoginInterceptor.java
  43. 123 0
      src/main/java/com/ssm/interceptor/MenuInterceptor.java
  44. 23 0
      src/main/java/com/ssm/mapper/business/SmsRecordMapper.java
  45. 17 0
      src/main/java/com/ssm/mapper/business/SmsSendStateMapper.java
  46. 23 0
      src/main/java/com/ssm/mapper/business/SmsUpMessageMapper.java
  47. 26 0
      src/main/java/com/ssm/mapper/business/SmsUserMapper.java
  48. 56 0
      src/main/java/com/ssm/mapper/system/SysDepartmentMapper.java
  49. 33 0
      src/main/java/com/ssm/mapper/system/SysDictionaryMapper.java
  50. 14 0
      src/main/java/com/ssm/mapper/system/SysLogMapper.java
  51. 106 0
      src/main/java/com/ssm/mapper/system/SysMenuMapper.java
  52. 45 0
      src/main/java/com/ssm/mapper/system/SysPositionMapper.java
  53. 54 0
      src/main/java/com/ssm/mapper/system/SysRoleMapper.java
  54. 21 0
      src/main/java/com/ssm/mapper/system/SysUserLoginLogMapper.java
  55. 53 0
      src/main/java/com/ssm/mapper/system/SysUserMapper.java
  56. 54 0
      src/main/java/com/ssm/model/business/FileMeta.java
  57. 89 0
      src/main/java/com/ssm/model/business/SmsRecord.java
  58. 45 0
      src/main/java/com/ssm/model/business/SmsSendState.java
  59. 86 0
      src/main/java/com/ssm/model/business/SmsUpMessage.java
  60. 102 0
      src/main/java/com/ssm/model/business/SmsUser.java
  61. 49 0
      src/main/java/com/ssm/model/system/JsTree.java
  62. 47 0
      src/main/java/com/ssm/model/system/State.java
  63. 174 0
      src/main/java/com/ssm/model/system/SysDepartment.java
  64. 821 0
      src/main/java/com/ssm/model/system/SysDepartmentExample.java
  65. 130 0
      src/main/java/com/ssm/model/system/SysDictionary.java
  66. 151 0
      src/main/java/com/ssm/model/system/SysLog.java
  67. 248 0
      src/main/java/com/ssm/model/system/SysMenu.java
  68. 1151 0
      src/main/java/com/ssm/model/system/SysMenuExample.java
  69. 140 0
      src/main/java/com/ssm/model/system/SysPosition.java
  70. 821 0
      src/main/java/com/ssm/model/system/SysPositionExample.java
  71. 135 0
      src/main/java/com/ssm/model/system/SysRole.java
  72. 761 0
      src/main/java/com/ssm/model/system/SysRoleExample.java
  73. 341 0
      src/main/java/com/ssm/model/system/SysUser.java
  74. 2031 0
      src/main/java/com/ssm/model/system/SysUserExample.java
  75. 104 0
      src/main/java/com/ssm/model/system/SysUserLoginLog.java
  76. 19 0
      src/main/java/com/ssm/model/validator/DepartmentValidator.java
  77. 23 0
      src/main/java/com/ssm/model/validator/PositionValidator.java
  78. 22 0
      src/main/java/com/ssm/model/validator/SysDictionaryValidator.java
  79. 21 0
      src/main/java/com/ssm/model/validator/SysMenuValidator.java
  80. 20 0
      src/main/java/com/ssm/model/validator/SysRoleValidator.java
  81. 26 0
      src/main/java/com/ssm/model/validator/UserCreateValidator.java
  82. 25 0
      src/main/java/com/ssm/model/validator/UserLoginValidator.java
  83. 25 0
      src/main/java/com/ssm/service/business/SmsRecordService.java
  84. 14 0
      src/main/java/com/ssm/service/business/SmsSendStateService.java
  85. 25 0
      src/main/java/com/ssm/service/business/SmsUpMessageService.java
  86. 44 0
      src/main/java/com/ssm/service/business/SmsUserService.java
  87. 9 0
      src/main/java/com/ssm/service/business/UploadService.java
  88. 37 0
      src/main/java/com/ssm/service/impl/business/SmsRecordServiceImpl.java
  89. 21 0
      src/main/java/com/ssm/service/impl/business/SmsSendStateServiceImpl.java
  90. 37 0
      src/main/java/com/ssm/service/impl/business/SmsUpMessageServiceImpl.java
  91. 59 0
      src/main/java/com/ssm/service/impl/business/SmsUserServiceImpl.java
  92. 22 0
      src/main/java/com/ssm/service/impl/business/UploadServiceImpl.java
  93. 105 0
      src/main/java/com/ssm/service/impl/system/SysDepartmentServiceImpl.java
  94. 88 0
      src/main/java/com/ssm/service/impl/system/SysDictionaryServiceImpl.java
  95. 46 0
      src/main/java/com/ssm/service/impl/system/SysLogServiceImpl.java
  96. 332 0
      src/main/java/com/ssm/service/impl/system/SysMenuServiceImp.java
  97. 69 0
      src/main/java/com/ssm/service/impl/system/SysPositionServiceImpl.java
  98. 172 0
      src/main/java/com/ssm/service/impl/system/SysRoleServiceImpl.java
  99. 37 0
      src/main/java/com/ssm/service/impl/system/SysUserLoginLogServiceImpl.java
  100. 0 0
      src/main/java/com/ssm/service/impl/system/SysUserServiceImpl.java

+ 13 - 0
.classpath

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

+ 13 - 0
.mymetadata

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-module
+  type="WEB"
+  name="smscat"
+  id="myeclipse.1493091394539"
+  context-root="/smscat"
+  j2ee-spec="1.7"
+  archive="smscat.war">
+  <attributes>
+    <attribute name="webrootdir" value="src/main/webapp" />
+  </attributes>
+</project-module>
+

+ 64 - 0
.project

@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>smscat</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.genuitec.eclipse.j2eedt.core.WebClasspathBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.genuitec.eclipse.j2eedt.core.J2EEProjectValidator</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.genuitec.eclipse.j2eedt.core.DeploymentDescriptorValidator</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.validation.validationbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.genuitec.eclipse.ast.deploy.core.DeploymentBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>com.genuitec.eclipse.ast.deploy.core.deploymentnature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+		<nature>com.genuitec.eclipse.j2eedt.core.webnature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+	</natures>
+</projectDescription>

+ 3 - 0
.settings/com.genuitec.eclipse.core.prefs

@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+validator.Checked=src/main/webapp/WEB-INF,target/smscat/WEB-INF/web.xml,src/main/webapp/resources/js
+validator.Unchecked=

Diferenças do arquivo suprimidas por serem muito extensas
+ 3 - 0
.settings/com.genuitec.eclipse.j2eedt.core.prefs


+ 3 - 0
.settings/com.genuitec.jboss.ide.eclipse.xdoclet.run.prefs

@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+xdoclet.build.policy=automatic
+xdoclet.jdk.support=jdk5

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

@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/main/resources=UTF-8
+encoding//src/main/webapp/WEB-INF/views/sysdepartment/departmentList.jsp=UTF-8
+encoding//src/test/java=UTF-8
+encoding/<project>=UTF-8

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

@@ -0,0 +1,112 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.7

+ 2 - 0
.settings/org.eclipse.ltk.core.refactoring.prefs

@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false

+ 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="DgtResume">
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
+        <wb-resource deploy-path="/" source-path="/src/main/webapp"/>
+        <property name="java-output-path" value="/ssm_webapp Maven Webapp/src/main/webapp/src/main/java"/>
+        <property name="context-root" value="/smscat"/>
+    </wb-module>
+</project-modules>

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

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+  <installed facet="wst.jsdt.web" version="1.0"/>
+  <installed facet="jst.web" version="2.2"/>
+  <installed facet="java" version="1.7"/>
+</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

BIN
document/SMS发送短信1.rar


+ 56 - 0
generatorConfig.xml

@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE generatorConfiguration
+        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
+        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
+
+<!--mybatis sql server 自动生成对象 -->
+<!-- 1。 请在 eclipse中 开启命令行窗口 terminal -->
+<!-- 2。 输入命令    java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite -->
+<!-- 3。 生成的内容在src下 ,会新建2个文件夹
+		, 请手动 移动 文件 到指定目录,并删除 新生成的 2个文件夹 -->
+<generatorConfiguration>
+    <!--数据库驱动jar 根据 自己 文件所在 位置配置   依赖以及在pom.xml里配置了-->
+    <classPathEntry location="E:\lib\jtds-1.2.4.jar" />
+
+    <context id="sqlserver" targetRuntime="MyBatis3">
+        <!--去除注释  -->
+        <commentGenerator>
+        	<property name="suppressDate" value="true"/>
+            <property name="suppressAllComments" value="true" />
+        </commentGenerator>
+
+        <!--数据库连接 -->
+        <jdbcConnection driverClass="net.sourceforge.jtds.jdbc.Driver"
+                        connectionURL="jdbc:jtds:sqlserver:/10.32.2.151:1433/SMS"
+                        userId="sa"
+                        password="DGT.0000">
+        </jdbcConnection>
+        <!--默认false
+           Java type resolver will always use java.math.BigDecimal if the database column is of type DECIMAL or NUMERIC.
+         -->
+        <javaTypeResolver >
+            <property name="forceBigDecimals" value="false" />
+        </javaTypeResolver>
+
+        <!--生成实体类 指定包名 以及生成的地址 (可以自定义地址,但是路径不存在不会自动创建  使用Maven生成在target目录下,会自动创建) -->
+        <javaModelGenerator targetPackage="com.ssm.model.business" targetProject="D:\workspace\SMS\src\main\java">
+            <property name="enableSubPackages" value="true" />
+            <property name="trimStrings" value="true" />
+        </javaModelGenerator>
+        <!--生成SQLMAP文件 -->
+        <sqlMapGenerator targetPackage="mybatis\mapper\business"  targetProject="D:\workspace\SMS\src\main\resources">
+            <property name="enableSubPackages" value="true" />
+        </sqlMapGenerator>
+        <!--生成Dao文件 可以配置 type="XMLMAPPER"生成xml的dao实现  context id="DB2Tables" 修改targetRuntime="MyBatis3"  -->
+   		<javaClientGenerator type="XMLMAPPER" targetPackage="com.ssm.mapper.business"  targetProject="D:\workspace\SMS\src\main\java">
+            <property name="enableSubPackages" value="true" />
+        </javaClientGenerator>
+   
+        <!-- 需要 table 和要生成 的对象名称 -->
+        <table  tableName="sms_send_state" domainObjectName="SmsSendState"
+    		enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
+   			 enableSelectByExample="false" selectByExampleQueryId="false" >
+		</table>
+
+    </context>
+</generatorConfiguration>

BIN
mybatis-generator-core-1.3.2.jar


+ 438 - 0
pom.xml

@@ -0,0 +1,438 @@
+<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/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>com.ssm.webapp</groupId>
+	<artifactId>smscat</artifactId>
+	<packaging>war</packaging>
+	<version>1.0-SNAPSHOT</version>
+	<name>smscat Maven Webapp</name>
+	<url>http://maven.apache.org</url>
+
+	<properties>
+		<spring.version>3.2.17.RELEASE</spring.version>
+		<jackson.version>1.9.6</jackson.version>
+		<mybatis.version>3.2.8</mybatis.version>
+		<slf4j.version>1.6.6</slf4j.version>
+		<log4j.version>1.2.9</log4j.version>
+		<commons-collections-version>3.2</commons-collections-version>
+		<commons-fileupload-version>1.2.2</commons-fileupload-version>
+		<org.apache.commons-version>3.1</org.apache.commons-version>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<filters.base.path.test>src/filters/test</filters.base.path.test>
+		<filters.base.path.main>src/main/filters</filters.base.path.main>
+		<servlet.version>3.0.1</servlet.version>
+		<jsp.version>2.1</jsp.version>
+		<overlay.skip>false</overlay.skip>
+	</properties>
+
+	<dependencies>
+	
+		<!-- httpClient支持 开始-->
+		<dependency>
+			<groupId>org.apache.httpcomponents</groupId>
+			<artifactId>httpclient</artifactId>
+			<version>4.2.5</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>commons-logging</groupId>
+			<artifactId>commons-logging</artifactId>
+			<version>1.2</version>
+		</dependency>
+		<!-- httpClient支持 结束 -->
+		
+		<dependency>
+			<groupId>com.dgtis</groupId>
+			<artifactId>dgt-common-sso</artifactId>
+			<version>0.0.1-SNAPSHOT</version>
+		</dependency>
+	
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>javax.servlet-api</artifactId>
+			<version>${servlet.version}</version>
+			<scope>provided</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>javax.servlet.jsp</groupId>
+			<artifactId>jsp-api</artifactId>
+			<version>${jsp.version}</version>
+			<scope>provided</scope>
+		</dependency>
+	
+		<!-- spring 依赖 begin -->
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-core</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-beans</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-orm</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-context</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-context-support</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-web</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-webmvc</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-aop</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-tx</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.aspectj</groupId>
+			<artifactId>aspectjweaver</artifactId>
+			<version>1.6.9</version>
+		</dependency>
+		<dependency>
+			<groupId>cglib</groupId>
+			<artifactId>cglib</artifactId>
+			<version>2.2.2</version>
+		</dependency>
+		<!-- end spring 依赖 -->
+	      
+		<!-- json 依赖 -->
+		<dependency>
+			<groupId>org.codehaus.jackson</groupId>
+			<artifactId>jackson-core-asl</artifactId>
+			<version>${jackson.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.codehaus.jackson</groupId>
+			<artifactId>jackson-mapper-asl</artifactId>
+			<version>${jackson.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.codehaus.jackson</groupId>
+			<artifactId>jackson-jaxrs</artifactId>
+			<version>${jackson.version}</version>
+		</dependency>
+    <!-- end json 依赖 -->
+
+    <!-- oracle jdbc6 依赖 -->
+    <!-- 
+    <dependency>
+		<groupId>com.oracle</groupId>
+		<artifactId>ojdbc6</artifactId>
+		<version>11.2.0.1.0</version>
+	</dependency>
+	 -->
+    <!-- end oracle jdbc6 依赖 -->
+
+    <!-- c3p0 依赖 -->
+    <dependency>
+			<groupId>com.mchange</groupId>
+			<artifactId>c3p0</artifactId>
+			<version>0.9.5</version>
+		</dependency>
+		<!-- end c3p0 依赖 -->
+
+		<!-- mybatis 依赖 -->
+		<dependency>
+			<groupId>org.mybatis</groupId>
+			<artifactId>mybatis</artifactId>
+			<version>${mybatis.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.mybatis</groupId>
+			<artifactId>mybatis-spring</artifactId>
+			<version>1.2.2</version>
+		</dependency>
+		<!-- end mybatis 依赖 -->
+
+		<!-- 日志文件管理包 -->
+	    <dependency>
+	        <groupId>log4j</groupId>
+	        <artifactId>log4j</artifactId>
+	        <version>${log4j.version}</version>
+	    </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <version>${slf4j.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-log4j12</artifactId>
+            <version>${slf4j.version}</version>
+        </dependency>
+        <!-- end 日志文件管理包 -->
+		
+		<dependency>
+			<groupId>jstl</groupId>
+			<artifactId>jstl</artifactId>
+			<version>1.2</version>
+		</dependency>
+
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>3.8.1</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+		    <groupId>redis.clients</groupId>
+		    <artifactId>jedis</artifactId>
+		    <version>2.9.0</version>
+		</dependency>
+		<!-- sqlserver 数据库驱动包 -->
+		<!-- <dependency>
+			<groupId>net.sourceforge.jtds</groupId>
+			<artifactId>jtds</artifactId>
+			<version>1.2.4</version>
+		</dependency> -->
+		
+		<!-- mysql驱动包 -->
+		<dependency>
+			<groupId>mysql</groupId>
+			<artifactId>mysql-connector-java</artifactId>
+			<version>5.1.31</version>
+		</dependency>
+		
+		<!-- mybatis generator -->
+		<dependency>
+			<groupId>org.mybatis.generator</groupId>
+            <artifactId>mybatis-generator-maven-plugin</artifactId>
+            <version>1.3.2</version>
+		</dependency>
+		
+		<dependency>
+			    <groupId>com.github.pagehelper</groupId>
+			    <artifactId>pagehelper</artifactId>
+			    <version>4.0.0</version>
+			</dependency>
+		
+		<dependency>
+		    <groupId>com.github.abel533</groupId>
+		    <artifactId>mapper</artifactId>
+		    <version>2.0.1</version>
+		</dependency>
+		<dependency>
+		    <groupId>com.github.jsqlparser</groupId>
+		    <artifactId>jsqlparser</artifactId>
+		    <version>0.9.1</version>
+		</dependency>
+		
+		<dependency>
+		    <groupId>javax.persistence</groupId>
+		    <artifactId>persistence-api</artifactId>
+		    <version>1.0</version>
+		</dependency>
+
+ 		<dependency>  
+            <groupId>net.sf.json-lib</groupId>  
+            <artifactId>json-lib</artifactId>  
+            <version>2.3</version>  
+            <classifier>jdk15</classifier>  
+        </dependency>  
+  
+        <dependency>  
+            <groupId>org.springframework.data</groupId>  
+            <artifactId>spring-data-commons</artifactId>  
+            <version>1.6.1.RELEASE</version>  
+        </dependency>  
+  
+        <dependency>  
+            <groupId>org.springframework.data</groupId>  
+            <artifactId>spring-data-jpa</artifactId>  
+            <version>1.4.1.RELEASE</version>  
+        </dependency>  
+  
+        <dependency>  
+            <groupId>com.alibaba</groupId>  
+            <artifactId>fastjson</artifactId>  
+            <version>1.1.34</version>  
+        </dependency>  
+        
+        <!-- commons utils -->
+        <dependency>
+			<groupId>commons-collections</groupId>
+			<artifactId>commons-collections</artifactId>
+			<version>${commons-collections-version}</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>commons-beanutils</groupId>
+			<artifactId>commons-beanutils</artifactId>
+			<version>1.8.3</version>
+		</dependency>
+        
+        <dependency>
+			<groupId>com.google.code.gson</groupId>
+			<artifactId>gson</artifactId>
+			<version>2.2.4</version>
+		</dependency>
+        
+		<dependency>
+			<groupId>org.apache.commons</groupId>
+			<artifactId>commons-lang3</artifactId>
+			<version>3.3.2</version>
+		</dependency>
+		
+		<dependency>
+		  <groupId>commons-fileupload</groupId>
+		  <artifactId>commons-fileupload</artifactId>
+		  <version>${commons-fileupload-version}</version>
+		</dependency>
+		
+		<dependency>
+		    <groupId>commons-io</groupId>
+		    <artifactId>commons-io</artifactId>
+		    <version>2.4</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>net.sourceforge.jexcelapi</groupId>
+			<artifactId>jxl</artifactId>
+			<version>2.6.12</version>
+		</dependency>
+		 <!-- commons utils -->
+		
+		<dependency>
+			<groupId>javax.mail</groupId>
+			<artifactId>mail</artifactId>
+			<version>1.4.4</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>org.htmlparser</groupId>
+			<artifactId>htmlparser</artifactId>
+			<version>1.6</version>
+		</dependency>
+		
+		
+		<dependency>
+			<groupId>org.apache.poi</groupId>
+			<artifactId>poi</artifactId>
+			<version>3.14</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.poi</groupId>
+			<artifactId>poi-ooxml</artifactId>
+			<version>3.14</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.poi</groupId>
+			<artifactId>poi-scratchpad</artifactId>
+			<version>3.14</version>
+		</dependency>
+		
+		
+	</dependencies>
+	
+	<!-- Repository -->
+	<repositories>
+	</repositories>
+	
+	<build>
+		<finalName>smscat</finalName>
+		<defaultGoal>package</defaultGoal>
+		<!-- default:src/main/java -->
+		<sourceDirectory>src/main/java</sourceDirectory>
+		<!-- default:src/test/java -->
+		<testSourceDirectory>src/test/java</testSourceDirectory>
+		<testResources>
+			<testResource>
+				<!-- default:src/main/resources -->
+				<directory>src/test/resources</directory>
+				<filtering>true</filtering>
+			</testResource>
+		</testResources>
+		<!-- default:target/classes -->
+		<outputDirectory>target/classes</outputDirectory>
+		<!-- default:target/test-classes -->
+		<testOutputDirectory>target/test-classes</testOutputDirectory>
+		
+		<resources>
+			<resource>
+				<!-- default:src/main/resources -->
+				<directory>src/main/resources</directory>
+				<filtering>true</filtering>
+			</resource>
+		</resources>
+		<pluginManagement>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>2.3.2</version>
+				<configuration>
+					<source>1.7</source>
+					<target>1.7</target>
+					<encoding>UTF-8</encoding>
+				</configuration>
+			</plugin>
+			<plugin>
+				<artifactId>maven-war-plugin</artifactId>
+				<configuration>
+					<warSourceDirectory>${basedir}/src/main/webapp</warSourceDirectory>
+				</configuration>
+			</plugin>
+        
+        	<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>2.3.2</version>
+				<configuration>
+					<source>1.7</source>
+					<target>1.7</target>
+					<showWarnings>true</showWarnings>
+					<compilerArguments>
+                      <extdirs>${basedir}/src/main/webapp/WEB-INF/lib</extdirs>
+                    </compilerArguments>
+				</configuration>
+			</plugin>
+			<!-- 可以将 maven 依赖 复制到 webapp 下的web-info/lib中 -->
+			 <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy-dependencies</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>copy-dependencies</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${basedir}/src/main/webapp/WEB-INF/lib</outputDirectory>
+                            <overWriteReleases>false</overWriteReleases>
+                            <overWriteSnapshots>false</overWriteSnapshots>
+                            <overWriteIfNewer>true</overWriteIfNewer>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+			
+		</plugins>
+		</pluginManagement>
+	</build>
+</project>

+ 123 - 0
smscat.iml

@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="web" name="Web">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/src/main/webapp/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/src/main/webapp" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/src/main/java" />
+          <root url="file://$MODULE_DIR$/src/main/resources" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.2.5" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.2.4" level="project" />
+    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.6" level="project" />
+    <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
+    <orderEntry type="library" name="Maven: com.dgtis:dgt-common-sso:0.0.1-SNAPSHOT" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.4.2" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: javax.servlet:javax.servlet-api:3.0.1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: javax.servlet.jsp:jsp-api:2.1" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-core:3.2.17.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-beans:3.2.17.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-orm:3.2.17.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:3.2.17.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context:3.2.17.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-expression:3.2.17.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context-support:3.2.17.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-web:3.2.17.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:3.2.17.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-aop:3.2.17.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: aopalliance:aopalliance:1.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-tx:3.2.17.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.6.9" level="project" />
+    <orderEntry type="library" name="Maven: cglib:cglib:2.2.2" level="project" />
+    <orderEntry type="library" name="Maven: asm:asm:3.3.1" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.6" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.6" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-jaxrs:1.9.6" level="project" />
+    <orderEntry type="library" name="Maven: com.mchange:c3p0:0.9.5" level="project" />
+    <orderEntry type="library" name="Maven: com.mchange:mchange-commons-java:0.2.9" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.2.8" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:1.2.2" level="project" />
+    <orderEntry type="library" name="Maven: log4j:log4j:1.2.9" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.6.6" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:slf4j-log4j12:1.6.6" level="project" />
+    <orderEntry type="library" name="Maven: jstl:jstl:1.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
+    <orderEntry type="library" name="Maven: redis.clients:jedis:2.9.0" level="project" />
+    <orderEntry type="library" name="Maven: mysql:mysql-connector-java:5.1.31" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.maven:maven-plugin-api:3.0.4" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.maven:maven-model:3.0.4" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.maven:maven-artifact:3.0.4" level="project" />
+    <orderEntry type="library" name="Maven: org.sonatype.sisu:sisu-inject-plexus:2.3.0" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.plexus:plexus-component-annotations:1.5.5" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.plexus:plexus-classworlds:2.4" level="project" />
+    <orderEntry type="library" name="Maven: org.sonatype.sisu:sisu-inject-bean:2.3.0" level="project" />
+    <orderEntry type="library" name="Maven: org.sonatype.sisu:sisu-guice:no_aop:3.1.0" level="project" />
+    <orderEntry type="library" name="Maven: org.sonatype.sisu:sisu-guava:0.9.9" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis.generator:mybatis-generator-core:1.3.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.maven:maven-project:3.0-alpha-2" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.plexus:plexus-utils:1.5.6" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.plexus:plexus-interpolation:1.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.maven:maven-compat:3.0-alpha-2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.maven.wagon:wagon-provider-api:1.0-beta-4" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.plexus:plexus-container-default:1.0-beta-3.0.5" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xbean:xbean-reflect:3.4" level="project" />
+    <orderEntry type="library" name="Maven: commons-logging:commons-logging-api:1.1" level="project" />
+    <orderEntry type="library" name="Maven: com.google.code.google-collections:google-collect:snapshot-20080530" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.woodstox:wstx-asl:3.2.6" level="project" />
+    <orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
+    <orderEntry type="library" name="Maven: org.sonatype.spice:model-builder:1.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.maven:maven-project-builder:3.0-alpha-2" level="project" />
+    <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:4.0.0" level="project" />
+    <orderEntry type="library" name="Maven: com.github.abel533:mapper:2.0.1" level="project" />
+    <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:0.9.1" level="project" />
+    <orderEntry type="library" name="Maven: javax.persistence:persistence-api:1.0" level="project" />
+    <orderEntry type="library" name="Maven: net.sf.json-lib:json-lib:jdk15:2.3" level="project" />
+    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.4" level="project" />
+    <orderEntry type="library" name="Maven: net.sf.ezmorph:ezmorph:1.0.6" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:1.6.1.RELEASE" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: org.slf4j:jcl-over-slf4j:1.7.1" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-jpa:1.4.1.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.aspectj:aspectjrt:1.7.2" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.1.34" level="project" />
+    <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2" level="project" />
+    <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.8.3" level="project" />
+    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.2.4" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.3.2" level="project" />
+    <orderEntry type="library" name="Maven: commons-fileupload:commons-fileupload:1.2.2" level="project" />
+    <orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
+    <orderEntry type="library" name="Maven: net.sourceforge.jexcelapi:jxl:2.6.12" level="project" />
+    <orderEntry type="library" name="Maven: javax.mail:mail:1.4.4" level="project" />
+    <orderEntry type="library" name="Maven: javax.activation:activation:1.1" level="project" />
+    <orderEntry type="library" name="Maven: org.htmlparser:htmlparser:1.6" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi:3.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:3.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:3.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:2.6.0" level="project" />
+    <orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.03" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi-scratchpad:3.14" level="project" />
+  </component>
+</module>

+ 0 - 0
src/main/filters/dev-filter.properties


+ 0 - 0
src/main/filters/prd-filter.properties


+ 0 - 0
src/main/filters/test-filter.properties


+ 103 - 0
src/main/java/com/ssm/common/ExceptionReaper.java

@@ -0,0 +1,103 @@
+package com.ssm.common;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.lang.reflect.UndeclaredThrowableException;
+import java.util.Date;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+
+import com.ssm.model.system.SysLog;
+import com.ssm.model.system.SysUser;
+import com.ssm.service.system.SysLogService;
+import com.ssm.util.Util;
+
+/**
+ * 增强的controller 统一处理异常
+ * 
+ * @author
+ */
+@ControllerAdvice
+public class ExceptionReaper {
+	
+	@Autowired
+	SysLogService sysLogService;
+	
+	/**
+	 * 处理 500 异常 
+	 * 暂时未记录到数据库
+	 * @param e
+	 * @param request
+	 * @return
+	 */
+	@ExceptionHandler({ Error.class, Exception.class, Throwable.class })
+	public String exception(Exception e, HttpServletRequest request,HttpSession session) {
+		e.printStackTrace();
+		request.setAttribute("exceptionMessage", e.getMessage());
+		if(e instanceof SessionTimeOutException){
+			// session_time_out不记录日志
+			return "sessionOut";
+
+		}
+		if(e instanceof UndeclaredThrowableException){
+			if( ((UndeclaredThrowableException) e).getUndeclaredThrowable() instanceof PermissionDeniedException ) {
+				PermissionDeniedException e1 = (PermissionDeniedException) ((UndeclaredThrowableException) e).getUndeclaredThrowable();
+				saveLog(e1, request, session);
+				return "permissionDenied";
+			} else {
+				saveLog(e, request, session);
+				return "error";
+			}	
+		} else {
+			saveLog(e, request, session);
+			return "error";
+		}
+	}
+	
+	public void saveLog(Exception e, HttpServletRequest request,HttpSession session){
+		String uri = request.getRequestURI();
+		String ex = e.getMessage();
+		StringWriter str = new StringWriter();
+		e.printStackTrace(new PrintWriter(str));
+		String e1 = str.getBuffer().toString();
+		SysUser sysUser = Util.getUserSession(request);
+		
+		String clazzName = uri.split("/")[uri.split("/").length-2];
+		String methodName = uri.split("/")[uri.split("/").length-1];
+		
+		StringBuilder sb = new StringBuilder();
+		Map<String, String[]> paramMap = request.getParameterMap();
+		for (String key : paramMap.keySet()) {
+			String[] values = paramMap.get(key);
+			if(values.length == 1) {
+				sb.append("{ param = "+ key + " and value = " + values[0].toString());
+				sb.append(" }");
+			} else {
+				sb.append("{ param = "+ key + " and value = " );
+				for(String value : values){
+					sb.append(value +" , ");
+				}
+				sb.append(" }");
+			}
+			System.out.println(sb.toString());
+		}
+		String remoteIP = request.getRemoteAddr();
+		SysLog sysLog = new SysLog();
+		sysLog.setLogLevel("error");
+		sysLog.setStackTrace(e1);
+		sysLog.setOrigin(clazzName+"."+methodName);
+		sysLog.setUserId(sysUser != null ?sysUser.getUserid(): -1);
+		sysLog.setCreatedDate(new Date());
+		sysLog.setLogMessage(ex);
+		sysLog.setParams(sb.toString());
+		sysLog.setIpAddress(remoteIP);
+		sysLogService.insert(sysLog);
+	}
+	
+}

+ 29 - 0
src/main/java/com/ssm/common/InitListener.java

@@ -0,0 +1,29 @@
+package com.ssm.common;
+
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+
+import redis.clients.jedis.JedisCluster;
+
+import com.dgtis.sso.redis.RedisPool;
+import com.dgtis.sso.utils.Config;
+
+public class InitListener implements ApplicationContextAware{
+
+	private static ApplicationContext context = null;
+	@Override
+	public void setApplicationContext(ApplicationContext applicationContext)
+			throws BeansException {
+		context= applicationContext;
+		new Thread(new Runnable() {
+			@Override
+			public void run() {
+				SmsMessageDelegateListener listener = context.getBean(SmsMessageDelegateListener.class);
+				//监听的队列
+				JedisCluster jedisCluster = RedisPool.getJedisCluster();
+				jedisCluster.subscribe(listener,Config.SMS_QUEUE_SIGN_IN);
+			}
+		}).start();
+	}
+}

+ 96 - 0
src/main/java/com/ssm/common/OneportalUserManageController.java

@@ -0,0 +1,96 @@
+package com.ssm.common;
+
+
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.dgtis.sso.model.UserModel;
+import com.ssm.model.system.SysUser;
+import com.ssm.service.system.SysUserService;
+
+/**
+ * Oneportal 在导入用户、新增用户、修改用户、删除用户 时会调用以下相应的接口
+ * 需要各系统根据需要自行实现相应的接口进行用户的相关处理,比如:新增用户账号、修改用户信息、分配默认权限、....
+ *
+ * 注:该接口的URL是固定,不可以修改(不要修改 @RequestMapping),否则oneportal将无法调用
+ * @author tracy
+ *
+ */
+@Controller
+@RequestMapping("/")
+public class OneportalUserManageController {
+	
+	@Autowired
+	private SysUserService sysUserService;
+	/**
+	 * 该接口是 oneportal 向其它系统推送用户信息
+	 * 前置条件:oneportal新增用户 和 oneportal 修改用户 时调用
+	 * 
+	 * 需要各系统的接口实现者判断用户是否已经存在,如果存在则执行用户信息修改操作,否则执行用户信息新增操作
+	 * @param userModel 用户信息实体类(来自SSO jar包)
+	 * @return true : 表示各系统用户信息处理成功; false : 表示各系统用户信息处理失败
+	 */
+	@RequestMapping("saveUser")
+	@ResponseBody
+	public boolean addUser(UserModel model){
+		if(model != null){
+			String loginId = model.getLoginName();
+			SysUser sysuser = sysUserService.findByEmployeeno(loginId);
+			if(sysuser != null){
+				//更新密码
+				if(StringUtils.isNotBlank(model.getPassword())){
+					sysuser.setEmployeeno(model.getLoginName());
+					sysuser.setPassword(model.getPassword());
+					sysuser.setMobilenumber(model.getLoginName());
+					sysuser.setUsername(model.getRealName());
+					sysuser.setEmailaddress(model.getEmali());
+					sysuser.setIsdeleted(false);
+					sysuser.setIsenabled(false);
+					sysUserService.updateByPrimaryKeySelective(sysuser);
+				}
+				if(model.isAdmin()){//校验权限,没有赋予权限
+					int sysUserRoldCount = sysUserService.selectUserRoleByUserIdAndRoldId(sysuser.getUserid() ,1);
+					if(sysUserRoldCount == 0){
+						sysUserService.insertUserRole(sysuser.getUserid() ,1);
+					}
+				} else {
+					int sysUserRoldCount = sysUserService.selectUserRoleByUserIdAndRoldId(sysuser.getUserid() ,2);
+					if(sysUserRoldCount == 0){
+						sysUserService.insertUserRole(sysuser.getUserid() ,2);
+					}
+				}
+			} else {
+				sysUserService.insertUserSave(model);
+			}
+			return true;
+		} else 
+			return false;
+		
+	}
+	
+	/**
+	 * 该接口是 oneportal 向其它系统推送用户删除操作消息
+	 * 前置条件: oneportal 取消分配给用户的 app 时调用
+	 * 
+	 * 各系统可以根据需要实现该接口(如果认为oneportal取消分配的app对自身系统不会有影响可以不需要实现),
+	 * 否则可以考虑在 oneportal 取消分配用户的app时 是否需要在对应系统删除该用户或标识账号暂时不可用
+	 * @param userModel 用户信息实体类(来自SSO jar包), oneportal 删除用户的时候只会将 loginName(用户名) 传过来
+	 * @return true : 表示各系统删除用户操作成功; false : 表示各系统删除用户操作失败
+	 */
+	@RequestMapping("deleteUser")
+	@ResponseBody
+	public boolean deleteUser(UserModel model){
+		if(model != null){
+			String loginId = model.getLoginName();
+			SysUser sysuser = sysUserService.findByEmployeeno(loginId);
+			if(sysuser != null){
+				sysUserService.deleteUser(sysuser.getUserid());
+				return true;
+			}
+		}
+		return false;
+	}
+}

+ 29 - 0
src/main/java/com/ssm/common/PermissionDeniedException.java

@@ -0,0 +1,29 @@
+package com.ssm.common;
+
+
+/**
+ * 自定义session超时异常
+ * @author Administrator
+ */
+public class PermissionDeniedException extends Exception {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	public PermissionDeniedException() {
+		super();
+	}
+
+	public PermissionDeniedException(String message) {
+		super(message);
+	}
+	
+	public PermissionDeniedException(String message ,Throwable able) {
+		super(message,able);
+	}
+	
+	
+	 
+}

+ 19 - 0
src/main/java/com/ssm/common/ResultBack.java

@@ -0,0 +1,19 @@
+package com.ssm.common;
+
+public class ResultBack {
+	
+	private String errmsg;
+	private String sucmsg;
+	public String getErrmsg() {
+		return errmsg;
+	}
+	public void setErrmsg(String errmsg) {
+		this.errmsg = errmsg;
+	}
+	public String getSucmsg() {
+		return sucmsg;
+	}
+	public void setSucmsg(String sucmsg) {
+		this.sucmsg = sucmsg;
+	}
+}

+ 22 - 0
src/main/java/com/ssm/common/SessionTimeOutException.java

@@ -0,0 +1,22 @@
+package com.ssm.common;
+
+/**
+ * 自定义session超时异常
+ * @author Administrator
+ */
+public class SessionTimeOutException extends Exception {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	public SessionTimeOutException() {
+		super();
+	}
+
+	public SessionTimeOutException(String message) {
+		super(message);
+	}
+	 
+}

+ 25 - 0
src/main/java/com/ssm/common/SmsMessageDelegateListener.java

@@ -0,0 +1,25 @@
+package com.ssm.common;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.dgtis.sso.model.UserModel;
+import com.dgtis.sso.redis.SSOSmsMessageDelegateListener;
+import com.ssm.service.system.SysUserService;
+
+@Service
+public class SmsMessageDelegateListener extends SSOSmsMessageDelegateListener{
+
+	@Autowired
+	private SysUserService sysUserService;
+	
+	@Override
+	public void registUser(UserModel userModel) {
+		sysUserService.insertUserSave(userModel);
+		
+	}
+	
+	
+	
+}
+

+ 58 - 0
src/main/java/com/ssm/common/SpringInitConfig.java

@@ -0,0 +1,58 @@
+package com.ssm.common;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+
+import com.ssm.model.system.SysMenu;
+import com.ssm.model.system.SysRole;
+import com.ssm.service.system.SysRoleService;
+
+public class SpringInitConfig implements ApplicationContextAware {
+	
+	@Autowired
+	private SysRoleService sysRoleService;
+	
+	public static Map<String, SysRole> roleMap = new HashMap<String, SysRole>();
+	public static Map<String, List<SysMenu>> menuMap  = new HashMap<String, List<SysMenu>>();
+	
+	
+	/**
+	 * 初始化  角色 和菜单的对象关系
+	 * 将 关系 存到 servletContext
+	 * 考虑到servletContext 修改 数据不方便,
+	 * 改成 Map
+	 */
+	@Override
+	public void setApplicationContext(ApplicationContext applicationContext)
+			throws BeansException {
+
+		List<SysRole> roleList = sysRoleService.selectRoleAndMenuList();
+		if( !roleList.isEmpty() ) {
+			for(SysRole role : roleList) {
+				roleMap.put(role.getRoleId().toString(), role);
+				menuMap.put(role.getRoleId().toString(), role.getMenuList());
+			}
+			
+		}
+		//下面代码 可以 注释
+//		for(String key : menuMap.keySet() ){
+//			System.out.println( "==================================================" );
+//			SysRole role = roleMap.get(key);
+//			System.out.print( "角色 :"+ role.getRoleName()  +" 菜单>>>");
+//			List<SysMenu> menuList = menuMap.get(key);
+//			if(!menuList.isEmpty()) {
+//				for(SysMenu menu : menuList) {
+//					System.out.println(  menu.getMenucnname() );
+//				}
+//			}
+//		}
+	}
+	
+	
+}

+ 229 - 0
src/main/java/com/ssm/controller/LoginController.java

@@ -0,0 +1,229 @@
+package com.ssm.controller;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.DataBinder;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.InitBinder;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.dgtis.sso.model.UserModel;
+import com.dgtis.sso.utils.SSOHelper;
+import com.ssm.model.system.SysRole;
+import com.ssm.model.system.SysUser;
+import com.ssm.model.system.SysUserLoginLog;
+import com.ssm.model.validator.UserLoginValidator;
+import com.ssm.service.system.SysRoleService;
+import com.ssm.service.system.SysUserLoginLogService;
+import com.ssm.service.system.SysUserService;
+import com.ssm.web.Const;
+import com.ssm.web.RoleLimit;
+import com.ssm.web.WithoutUserLogin;
+
+@Controller
+public class LoginController {
+	
+	@Autowired
+	private SysUserService sysUserService;
+	@Autowired
+	private SysUserLoginLogService userLoginLogService;
+	@Autowired
+	private SysRoleService sysRoleService;
+	
+	@WithoutUserLogin
+	@RequestMapping(value="/")
+	public String initHome(Model md,HttpServletRequest request) {
+		/**
+		 * 第一次从one portal跳转进来,
+		 */
+		UserModel model = SSOHelper.getUser(request);
+		if(model != null){
+			String loginId = model.getLoginName();
+			SysUser sysuser = sysUserService.findByEmployeeno(loginId);
+			if(sysuser != null){
+				//保存到session
+				HttpSession session = request.getSession();
+				session.setAttribute(Const.USER_SESSION_KEY, sysuser);
+				
+				//绑定 用户的角色
+				List<SysRole> roleList = sysRoleService.findUserRoleByUserId(sysuser.getUserid());
+				session.setAttribute(sysuser.getUserid().toString(), roleList);
+				
+				sysuser.setLastlogindate(new Date());
+				sysuser.setLastloginip(request.getRemoteAddr());
+				int loginCount = sysuser.getLogincounts() != null ? (sysuser.getLogincounts() +1) : 1;
+				sysuser.setLogincounts(loginCount);
+				sysUserService.updateByPrimaryKeySelective(sysuser);
+				
+				//记录登录日志
+				SysUserLoginLog loginLog = new SysUserLoginLog();
+				loginLog.setUserid(sysuser.getUserid());
+				loginLog.setIpaddress(request.getRemoteAddr());
+				loginLog.setCreateddate(new Date());
+				StringBuilder comments = new StringBuilder();
+				String userAgent = request.getHeader("User-Agent").toLowerCase();
+				String os = "未知";
+				if (userAgent.indexOf("win") > -1) 
+				{
+					if (userAgent.indexOf("nt 10") > -1 ) 
+					{ 
+						os = "Windows 10"; 
+					} 
+					if (userAgent.indexOf("nt 6.1") > -1 ) 
+					{ 
+						os = "Windows 7"; 
+					} 
+					if (userAgent.indexOf("nt 6.3") > -1 ) 
+					{ 
+						os = "Windows 8"; 
+					} 
+					if (userAgent.indexOf("nt 5.2") > -1) 
+					{ 
+						os = "Windows Server 2003"; 
+					} 
+					if (userAgent.indexOf("nt 5.1") > -1) 
+					{ 
+						os = "Windows XP"; 
+					} 
+				}	
+				comments.append("浏览器 :");
+				comments.append(userAgent);
+				comments.append(" 操作系统 :");
+				comments.append(os);
+				loginLog.setComments(comments.toString());
+				userLoginLogService.saveUserLoginLog(loginLog);
+			} else {
+				sysUserService.insertUserSave(model);
+			}
+		}
+		
+		return "redirect:/home/homeIndex";
+	}
+	
+	/**
+	 * 用户表单提交 绑定验证
+	 * @param binder
+	 */
+	@WithoutUserLogin
+	@InitBinder
+	public void InitBinder(DataBinder binder){
+		binder.setValidator(new UserLoginValidator());
+	}
+	
+	public String toLogin(Model model) {
+		if(!model.containsAttribute("user"))
+			model.addAttribute("user", new SysUser());
+		return "login";
+	}
+	
+	
+	/**
+	 * 用户登录操作
+	 * 后台form表单验证
+	 * @param username
+	 * @param password
+	 * @return 登录失败返回首页,登录成功转发到 框架首页欢迎页
+	 */
+	@Transactional(value="txManager")
+	@WithoutUserLogin
+	@RequestMapping(value="login")
+	public String login(HttpServletRequest request,HttpServletResponse response, HttpSession session, Model model, 
+			@Validated @ModelAttribute("user") SysUser user, BindingResult result) {
+		/* 前台输入用户和密码为空  */
+		if(result.hasErrors())
+			return toLogin(model);
+		SysUser sysUser = sysUserService.findByEmployeenoAndPasswod(user.getEmployeeno().trim(),
+				user.getPassword().trim());
+		if(sysUser == null || sysUser.getIsdeleted() == true || sysUser.getIsenabled() == true ) {
+			if(sysUser == null)
+				result.addError(new FieldError("user", "employeeno", "用户名或密码错误"));
+			else if( sysUser.getIsdeleted() == true )
+				result.addError(new FieldError("user", "employeeno", "用户不存在"));
+			else if(sysUser.getIsenabled() == true) 
+				result.addError(new FieldError("user", "employeeno", "此用户被禁用,不能登录。"));
+			else
+        		result.addError(new FieldError("user","employeeno","此用户当前未被授权,不能登录。"));
+			return toLogin(model);
+		}
+		//用户验证通过
+		session.setAttribute(Const.USER_SESSION_KEY, sysUser);
+		UserModel userModel = new UserModel(sysUser.getEmployeeno(),sysUser.getPassword(),sysUser.getMobilenumber(),sysUser.getEmailaddress(),false,"","",sysUser.getUsername(), "", "");
+		SSOHelper.createCookie(response, userModel);
+		
+		//绑定 用户的角色
+		/*List<SysRole> roleList = sysRoleService.findUserRoleByUserId(sysUser.getUserid());
+		session.setAttribute(sysUser.getUserid().toString(), roleList);
+		
+		sysUser.setLastlogindate(new Date());
+		sysUser.setLastloginip(request.getRemoteAddr());
+		int loginCount = sysUser.getLogincounts() != null ? (sysUser.getLogincounts() +1) : 1;
+		sysUser.setLogincounts(loginCount);
+		sysUserService.updateByPrimaryKeySelective(sysUser);*/
+		
+		//记录登录日志
+		SysUserLoginLog loginLog = new SysUserLoginLog();
+		loginLog.setUserid(sysUser.getUserid());
+		loginLog.setIpaddress(request.getRemoteAddr());
+		loginLog.setCreateddate(new Date());
+		StringBuilder comments = new StringBuilder();
+		String userAgent = request.getHeader("User-Agent").toLowerCase();
+		String os = "未知";
+		if (userAgent.indexOf("win") > -1) 
+		{
+			if (userAgent.indexOf("nt 10") > -1 ) 
+			{
+				os = "Windows 10"; 
+			} 
+			if (userAgent.indexOf("nt 6.1") > -1 ) 
+			{ 
+				os = "Windows 7"; 
+			} 
+			if (userAgent.indexOf("nt 6.3") > -1 ) 
+			{ 
+				os = "Windows 8"; 
+			} 
+			if (userAgent.indexOf("nt 5.2") > -1) 
+			{ 
+				os = "Windows Server 2003"; 
+			} 
+			if (userAgent.indexOf("nt 5.1") > -1) 
+			{ 
+				os = "Windows XP"; 
+			}
+		}
+		comments.append("浏览器 :");
+		comments.append(userAgent);
+		comments.append(" 操作系统 :");
+		comments.append(os);
+		loginLog.setComments(comments.toString());
+		userLoginLogService.saveUserLoginLog(loginLog);
+		
+		return "redirect:/home/homeIndex";
+	}
+	
+	/**
+	 * 注销,登出系统时将session绑定的数据 清除
+	 * @param session
+	 * @param model
+	 * @return
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="loginOut", method=RequestMethod.GET)
+	public String loginOut(HttpSession session, Model model){
+		session.invalidate();
+		return "redirect:/home/homeIndex";
+	}
+}

+ 510 - 0
src/main/java/com/ssm/controller/business/SendMessageContorller.java

@@ -0,0 +1,510 @@
+package com.ssm.controller.business;
+
+import java.io.File;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import net.sf.json.JSONObject;
+
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+
+import com.ssm.model.business.SmsRecord;
+import com.ssm.model.business.SmsSendState;
+import com.ssm.model.business.SmsUpMessage;
+import com.ssm.model.business.SmsUser;
+import com.ssm.model.system.SysDictionary;
+import com.ssm.model.system.SysUser;
+import com.ssm.service.business.SmsRecordService;
+import com.ssm.service.business.SmsSendStateService;
+import com.ssm.service.business.SmsUpMessageService;
+import com.ssm.service.business.SmsUserService;
+import com.ssm.service.business.UploadService;
+import com.ssm.service.system.SysDictionaryService;
+import com.ssm.util.MD5Utils;
+import com.ssm.util.Util;
+import com.ssm.util.page.PagedResult;
+import com.ssm.util.sms.SmsConst;
+import com.ssm.util.sms.SmsUtil;
+import com.ssm.util.sms.UploadProcess;
+import com.ssm.util.sms.excel.exception.ExcelParseException;
+import com.ssm.util.sms.excel.parser.ExcelParserImpl;
+import com.ssm.util.sms.excel.validation.rule.ValidationRule;
+import com.ssm.web.Const;
+import com.ssm.web.RoleLimit;
+import com.ssm.web.WithoutUserLogin;
+
+@RequestMapping("sms")
+@Controller
+public class SendMessageContorller {
+	
+	static Logger logger = Logger.getLogger(SendMessageContorller.class);
+	
+	@Autowired
+	private SmsUserService smsUserService;
+	@Autowired
+	private SmsRecordService smsRecordService;
+	@Autowired
+	private SmsSendStateService smsSendStateService;
+	
+	@Autowired 
+	private SysDictionaryService sysDictionaryService;
+	@Autowired
+	private SmsUpMessageService smsUpMessageService;
+	
+	@Autowired
+	private UploadService uploadService;
+	/**
+	 * 进入发送信息主页面
+	 * @param model
+	 * @return
+	 */
+	@RoleLimit(pid = "sms", mid = "sendSmsList")
+	@RequestMapping(value="sendSmsList")
+	public String sendSmsListMessage(Model model){
+		List<SysDictionary> constList =  sysDictionaryService.selectByEnabledNamespace(SmsConst.SMS_DEPARTMENT);
+		model.addAttribute("constList", constList);
+		return "sms/sendSmsList";
+	}
+	
+	/**
+	 * 加载用户数据
+	 * @param request
+	 * @param model
+	 * @param smsUser
+	 * @param pageNo
+	 * @param pageSize
+	 * @return
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="initDataList")
+	public String initDataList(HttpServletRequest request, Model model,SmsUser smsUser, Integer pageNo, Integer pageSize){
+		PagedResult<SmsUser> smsUserList = smsUserService.selectSmsUser(smsUser,pageNo,pageSize);
+		model.addAttribute("list", smsUserList);
+		return "sms/dataList";
+	}
+	
+	
+	
+	/**
+	 * 发送短信
+	 * @param request
+	 * @return
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@Transactional(value="txManager")
+	@RequestMapping(value="sendMessage")
+	public Map<String, Object> sendMessage(HttpServletRequest request){
+		SysUser sysuser = Util.getUserSession(request);
+		Map<String,Object> map = new HashMap<String, Object>();
+		if(sysuser != null){
+			try {
+				request.setCharacterEncoding("utf-8");
+				String smsUserPhoens = request.getParameter("smsUserPhoens");
+				String content = request.getParameter("content");
+				String[] smsuserIdsArray = smsUserPhoens.split(",");
+				String msgid = SmsUtil.SendSmsPost(smsUserPhoens, content,smsuserIdsArray.length);
+				//将短信记录保存进数据库
+				SmsRecord smsRecord = new SmsRecord();
+				smsRecord.setContent(content);
+				smsRecord.setCreateDate(new Date());
+				smsRecord.setPhoens(smsUserPhoens);
+				smsRecord.setMsgid(msgid);
+				smsRecordService.insertSelective(smsRecord);
+				
+				//查询返回值状态
+				map = SmsUtil.verifyValue(msgid);
+				
+				if("success".equals(map.get("status"))){//提交供应商成功,查询发送是否成功
+					String result = SmsUtil.StatusReportPost(msgid);
+					SmsSendState sss = new SmsSendState();
+					sss.setMsgid(msgid);
+					sss.setCreateDate(new Date());
+					sss.setContents(result);
+					smsSendStateService.insertSelective(sss);
+					
+					map.put("status", SmsConst.SUCCESS);
+					map.put("message", "发送成功");
+				}
+			} catch (Exception e) {
+				map.put("status", SmsConst.ERROR);
+				map.put("message", "发送异常");
+				e.printStackTrace();
+			}
+		}else{
+			map.put("status", SmsConst.FAILURE);
+			map.put("message", "请登录以后再执行此操作");
+		}
+		return map;
+	}
+	
+	/**
+	 * 接口发送短信
+	 * @param phones 手机号码
+	 * @param Contents 发送内容
+	 * @param md5 加密
+	 * @return
+	 */
+	@WithoutUserLogin
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@Transactional(value="txManager")
+	@RequestMapping(value="sendSms")
+	public void sendSms(HttpServletRequest request,HttpServletResponse response){
+		JSONObject json = new JSONObject();
+		try {
+			request.setCharacterEncoding("utf-8");
+			String phones = request.getParameter("phones");
+			String contents = request.getParameter("contents");
+			String md5 = request.getParameter("md5");
+			if( phones == null || phones == "" ){
+				json.element("status", "1");
+				json.element("message", "参数缺失");
+			}else if( contents == null || contents == "" ){
+				json.element("status", "1");
+				json.element("message", "参数缺失");
+			}else if( md5 == null || md5 == "" ){
+				json.element("status", "1");
+				json.element("message", "参数缺失");
+			}else{
+				SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+				String date = sdf.format(new Date());
+				String md = "phones="+phones+"&key=dgtissms&date="+date;
+				logger.info("md5 before ----" + md);
+				logger.info("md5 before request----" + md5);
+				md = MD5Utils.getMD5(md);
+				if(md.equalsIgnoreCase(md5)){
+					String[] phonesArray = phones.split(",");
+					//发送短信
+					String msgid = SmsUtil.SendSmsPost(phones, contents,phonesArray.length);
+					//将短信记录保存进数据库
+					SmsRecord smsRecord = new SmsRecord();
+					smsRecord.setContent(contents);
+					smsRecord.setCreateDate(new Date());
+					smsRecord.setPhoens(phones);
+					smsRecord.setMsgid(msgid);
+					smsRecordService.insertSelective(smsRecord);
+					
+					//查询返回值状态
+					String result = SmsUtil.StatusReportPost(msgid);
+					SmsSendState sss = new SmsSendState();
+					sss.setMsgid(msgid);
+					sss.setCreateDate(new Date());
+					sss.setContents(result);
+					smsSendStateService.insertSelective(sss);
+					
+					json.element("status", "0");
+					json.element("message", "发送成功");
+				}else {
+					json.element("status", "3");
+					json.element("message", "校验失败");
+				}
+			}
+		} catch (Exception e) {
+			json.element("status", SmsConst.ERROR);
+			json.element("message", "发送异常");
+			e.printStackTrace();
+		}
+		Util.json(response, json.toString());
+	}
+
+	/**
+	 * 添加用户
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="addSmsUserGet")
+	public String addSmsUserGet(Model model){
+		List<SysDictionary> constList =  sysDictionaryService.selectByEnabledNamespace(SmsConst.SMS_DEPARTMENT);
+		model.addAttribute("constList", constList);
+		if(!model.containsAttribute("smsUser"))
+			model.addAttribute("smsUser", new SmsUser());
+		return "sms/addSmsUserList";
+	}
+	
+	/**
+	 * 将用户信息保存入数据库
+	 * 
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@Transactional(value="txManager")
+	@RequestMapping(value="addSmsUser" , method = RequestMethod.POST)
+	public String addSmsUser(@Validated @ModelAttribute("smsUser") SmsUser smsUser,BindingResult result,
+			Model model,HttpServletRequest request){
+		String phoen = smsUser.getPhoen();
+		//查询号码是否已经存在
+		int count = smsUserService.selectSmsUserCountByPhoen(phoen);
+		if(count > 0){
+			result.addError(new FieldError("smsUser", "phoen","该"+ phoen+" 号码已存在"));
+			return addSmsUserGet(model);
+		}
+		SysUser sysUser = Util.getUserSession(request);
+		smsUser.setCreateDate(new Date());
+		smsUser.setUserid(sysUser.getUserid());
+		smsUserService.insertSelective(smsUser);
+		 
+		return "redirect:/sms/sendSmsList";
+	}
+	
+	/**
+	 * 编辑用户
+	 * @param request
+	 * @param model
+	 * @return
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="updateSmsUser")
+	public String updateSmsUser(HttpServletRequest request,Model model){
+		List<SysDictionary> constList =  sysDictionaryService.selectByEnabledNamespace(SmsConst.SMS_DEPARTMENT);
+		String smsUserId= request.getParameter("smsuserId");
+		SmsUser smsUser = smsUserService.selectSmsUserByUserId(Integer.valueOf(smsUserId));
+		model.addAttribute("constList", constList);
+		model.addAttribute("SmsUser", smsUser);
+		return "sms/updateSmsUser";
+	}
+	/**
+	 * 编辑信息,保存到数据库
+	 * @param smsUser
+	 * @param result
+	 * @param request
+	 * @return
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="updateSmsUserSave")
+	public String updateSmsUserSave(@Validated @ModelAttribute("smsUser") SmsUser smsUser,BindingResult result,
+			HttpServletRequest request){
+		SysUser sysUser = Util.getUserSession(request);
+		smsUser.setCreateDate(new Date());
+		smsUser.setUserid(sysUser.getUserid());
+		smsUserService.updateSmsUserSave(smsUser);
+		return "redirect:/sms/sendSmsList";
+	}
+	/**
+	 * 删除用户
+	 * @param smsuserIds
+	 * @return
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@Transactional(value="txManager")
+	@RequestMapping(value="deleteSmsUser")
+	public Map<String,Object> deleteSmsUser(@RequestParam("smsuserIds") String smsuserIds){
+		Map<String,Object> map = new HashMap<String, Object>();
+		String[] suIds = smsuserIds.split(",");
+		for (String suId : suIds) {
+			int count = smsUserService.deleteByPrimaryKey(Integer.valueOf(suId));
+			if(count == 1){
+				map.put("status", SmsConst.SUCCESS);
+				map.put("message", "删除成功");
+			}else{
+				map.put("status", SmsConst.FAILURE);
+				map.put("message", "删除失败");
+			}
+		}
+		return map;
+	}
+	
+
+	/**
+	 * 进入导入用户页面
+	 * @param model
+	 * @return
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="smsUserImport", method = RequestMethod.GET)
+	public String smsUserImport(Model model){
+		List<SysDictionary> constList =  sysDictionaryService.selectByEnabledNamespace(SmsConst.SMS_DEPARTMENT);
+		model.addAttribute("constList", constList);
+		return "sms/smsUserImport";
+	}
+	/**
+	 * 解析用户
+	 * @return
+	 * @throws IOException 
+	 */
+	@ResponseBody
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="upload", method = RequestMethod.POST)
+	public Map<String, Object> upload(MultipartHttpServletRequest request, HttpSession session) throws IOException{
+		//获取部门分组
+		final String classify = request.getParameter("classify");
+		final SysUser user = Util.getUserSession(request);
+		@SuppressWarnings("deprecation")
+		String path = request.getRealPath("/upload");
+		File dir = new File(path);
+		if (!dir.exists())
+			dir.mkdirs();
+		
+		UploadProcess process = new UploadProcess() {
+			@Override
+			public int doProcess(UploadService service,
+					ExcelParserImpl excelParser) throws Exception {
+				if (excelParser.getRow() < 2) {
+					throw new Exception("表格为空!");
+				}
+				//验证规则
+				//姓名不等于null
+				ValidationRule rule1 = new ValidationRule("not null", new Integer[]{0,1});
+				//电话号码必须是数字							
+				//RegexValidation regex2 = new RegexValidation("^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$", "“手机号码”列格式填写错误!");
+				//ValidationRule rule2 = new ValidationRule("not null", new Integer[]{1});
+				
+				List<List<String>> buildList = excelParser.build(rule1);
+				if(excelParser.getBuildMessage().length() != 0) {
+					return 0;
+				}
+				int count = 0;
+				for(int i =0;i<buildList.size();i++){
+					List<String> list = buildList.get(i);
+					SmsUser smsUser = new SmsUser();
+					smsUser.setName(list.get(0).toString());
+					smsUser.setPhoen(list.get(1).toString());
+					smsUser.setClassify(classify);
+					smsUser.setCreateDate(new Date());
+					smsUser.setUserid(user.getUserid());
+					
+					count += service.addsmsUser(smsUser);
+				}
+				return count;
+			}
+		};
+		Iterator<String> itr = request.getFileNames();
+		MultipartFile mpf = null;
+		while (itr.hasNext()) {
+			mpf = request.getFile(itr.next());
+			String fileName = mpf.getOriginalFilename();
+			String suffix = fileName.substring(fileName.lastIndexOf("."));
+			long time = new Date().getTime();
+			File file = new File(path, time+suffix);
+			mpf.transferTo(file);
+			return this.uploadExcel(file, process);
+		}
+		return null;
+	}
+	
+	public Map<String, Object> uploadExcel(File upload, UploadProcess process){
+		return this.uploadExcel(upload, 0, process);
+	}
+	
+	public Map<String, Object> uploadExcel(File upload, int index, UploadProcess process){
+		Map<String, Object> map = new HashMap<String, Object>();
+		ExcelParserImpl excelParser = new ExcelParserImpl(upload);
+		try {
+			excelParser.parse(index);
+		} catch (ExcelParseException e) {
+			e.printStackTrace();
+			map.put("status", SmsConst.FAILURE);
+			map.put("message", "表格读取异常");
+			return map;
+		}
+		try {
+			int count = process.doProcess(uploadService, excelParser);
+			if(excelParser.getBuildMessage().length() != 0) {
+				map.put("status", SmsConst.FAILURE);
+				map.put("message", excelParser.getBuildMessage().toString());
+				return map;
+			} else {
+				map.put("status", SmsConst.SUCCESS);
+				map.put("message", "成功导入" + count + "条信息!");
+				return map;
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+			map.put("status", SmsConst.FAILURE);
+			map.put("message", e.getMessage());
+			return map;
+		}
+	}
+	 
+	/**
+	 * 进入历史记录页
+	 * @param model
+	 * @return
+	 */
+	@RoleLimit(pid = "sms", mid = "sendHistoryList")
+	@RequestMapping(value="sendHistoryList")
+	public String sendHistory(Model model){
+		return "sms/sendHistoryList";
+	}
+	
+	/**
+	 * 加载历史记录数据
+	 * @param request
+	 * @param model
+	 * @param smsUser
+	 * @param pageNo
+	 * @param pageSize
+	 * @return
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="HistoryInItDataList")
+	public String HistoryInItDataList(Model model,SmsRecord smsRecord, Integer pageNo, Integer pageSize){
+		PagedResult<SmsRecord> smsRecordList = smsRecordService.selectSmsRecord(smsRecord,pageNo,pageSize);
+		model.addAttribute("list", smsRecordList);
+		return "sms/historyDataList";
+	}
+	
+	/**
+	 * 查询上行数据,进入上行信息记录页
+	 * @param model
+	 * @return
+	 */
+	@RoleLimit(pid="sms" , mid = "upMessageList")
+	@RequestMapping(value="upMessageList")
+	public String upMessage(Model model){
+		//查询上行数据,并写入数据库
+		try {
+			List<String> list = SmsUtil.MongateCsGetSmsExExPost();
+			SmsUpMessage smsUpMessage = null;
+			for (String string : list) {
+				 String[] resuleArray = string.split(",");
+				 smsUpMessage = new SmsUpMessage();
+				 smsUpMessage.setDateTime(resuleArray[0]+" "+resuleArray[1]);
+				 smsUpMessage.setPhoen(resuleArray[2]);
+				 smsUpMessage.setUpGallery(resuleArray[3]);
+				 smsUpMessage.setUpGalleryChild(resuleArray[4]);
+				 smsUpMessage.setContent(resuleArray[5]);
+				 smsUpMessageService.insertSelective(smsUpMessage);
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return "sms/upMessageList";
+	}
+	
+	/**
+	 * 加载上行信息记录
+	 * @param model
+	 * @param smsRecord
+	 * @param pageNo
+	 * @param pageSize
+	 * @return
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID , mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="upMessageInItDataList")
+	public String upMessageInItDataList(Model model,SmsUpMessage smsUpMessage, Integer pageNo, Integer pageSize){
+		PagedResult<SmsUpMessage> smsUpMessageList = smsUpMessageService.selectsmsUpMessage(smsUpMessage,pageNo,pageSize);
+		model.addAttribute("list", smsUpMessageList);
+		return "sms/upMessageDataList";
+	}
+	
+}

+ 290 - 0
src/main/java/com/ssm/controller/system/DepartmentController.java

@@ -0,0 +1,290 @@
+package com.ssm.controller.system;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.DataBinder;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.InitBinder;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.alibaba.fastjson.JSON;
+import com.ssm.model.system.SysDepartment;
+import com.ssm.model.system.SysUser;
+import com.ssm.model.validator.DepartmentValidator;
+import com.ssm.service.system.SysDepartmentService;
+import com.ssm.service.system.SysPositionService;
+import com.ssm.util.PackageBeanUtils;
+import com.ssm.util.Util;
+import com.ssm.util.page.PagedResult;
+import com.ssm.web.Const;
+import com.ssm.web.RoleLimit;
+
+/**
+ * 部门管理
+ * */
+@RequestMapping("sysDepartment")
+@Controller
+public class DepartmentController{
+	
+	@Autowired
+	private SysDepartmentService sysDepartmentService;
+	
+	@Autowired
+	private SysPositionService sysPositionService;
+	
+	/**
+	 * 部门分页查询
+	 * */
+	@RequestMapping(value="getDepartmentList")
+	@ResponseBody
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	public ModelAndView getDepartmentList(SysDepartment sysDepartment,Integer pageNo,Integer pageSize){
+	
+		ModelAndView view=new ModelAndView("sysdepartment/departmentList");
+		
+		PagedResult<SysDepartment> pagedResult=sysDepartmentService.sysDepartmentQuery(sysDepartment, pageNo, pageSize);
+
+		view.addObject("list", pagedResult);
+		
+		//部门
+		List<SysDepartment> sysDepartmentlist=sysDepartmentService.getDepartmentList();
+		List<SysDepartment> parenpagelist = new ArrayList<SysDepartment>();
+		
+		
+		if(null != sysDepartmentlist && sysDepartmentlist.size() > 0){
+			
+			//封装一级菜单
+			for (SysDepartment sysDepartment2 : sysDepartmentlist) {
+				if(sysDepartment2.getLevel()==1){
+					parenpagelist.add(sysDepartment2);
+				}
+			}
+			
+			if(null != parenpagelist && parenpagelist.size() > 0){
+				
+				//一级菜单的每个对象和所以的菜单比较
+				for (int i = 0; i < parenpagelist.size(); i++) {
+					
+					System.out.println("***************"+i);
+					PackageBeanUtils.packageParentDepartmentlist(parenpagelist.get(i) , sysDepartmentlist);
+					
+				}
+			}
+		}
+		
+		
+		System.out.println(JSON.toJSON(parenpagelist));
+		
+		view.addObject("sysDepartmentlist", parenpagelist);
+		
+		return view;
+	}
+	/**
+	 * 
+	 * 删除部门
+	 * */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="getDeleteDepartment",method=RequestMethod.POST)
+	@ResponseBody
+	public Map<String, Object> getDeleteDepartment(HttpServletRequest request,HttpSession session){
+		
+		SysDepartment department=new SysDepartment();
+		
+		Map<String, Object> record = new HashMap<String, Object>();
+		record.put("success", true);
+		
+		String depid = request.getParameter("depid");
+	
+		//查询该部门下是否有职位
+		int count=sysPositionService.QuerySysPostionId(Integer.parseInt(depid));
+		
+		if(count>0){
+			record.put("pm", false);
+			return record;
+		}else{
+			//可删除
+			SysUser operator = Util.getUserSession(request);
+			department.setLastupdatedatetime(new Date());
+			department.setLastupdateuserid(operator.getUserid());
+			department.setIsdeleted(true);//0可选(false)
+			department.setDepid(Integer.parseInt(depid));
+			sysDepartmentService.updateByPrimaryKeySelective(department);
+			record.put("success", true);
+		}
+		
+		return record;
+	}
+	
+	
+	
+	/**
+	 * 部门管理表单提交 绑定验证
+	 * @param binder
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@InitBinder("sysDepartment")
+	public void InitBinder(DataBinder binder){
+		binder.setValidator(new DepartmentValidator());
+	}
+	
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="getVerification")
+	@ResponseBody
+	public ModelAndView getVerification(){
+		ModelAndView view=new ModelAndView("sysdepartment/departmentAdd");	
+		view.addObject("sysDepartment", new SysDepartment());
+		
+		//部门
+		List<SysDepartment> sysDepartmentlist=sysDepartmentService.getDepartmentList();
+		List<SysDepartment> parenpagelist = new ArrayList<SysDepartment>();
+		
+		
+		if(null != sysDepartmentlist && sysDepartmentlist.size() > 0){
+			
+			//封装一级菜单
+			for (SysDepartment sysDepartment2 : sysDepartmentlist) {
+				if(sysDepartment2.getLevel()==1){
+					parenpagelist.add(sysDepartment2);
+				}
+			}
+			
+			if(null != parenpagelist && parenpagelist.size() > 0){
+				
+				//一级菜单的每个对象和所以的菜单比较
+				for (int i = 0; i < parenpagelist.size(); i++) {
+					
+					System.out.println("***************"+i);
+					PackageBeanUtils.packageParentDepartmentlist(parenpagelist.get(i) , sysDepartmentlist);
+					
+				}
+			}
+		}
+		
+		
+		System.out.println(JSON.toJSON(parenpagelist));
+		
+		view.addObject("sysDepartmentlist", parenpagelist);
+		return view;
+	}
+	
+	/**
+	 * 新增部门
+	 * 
+	 * */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="getAddSysdepartment")
+	public String getAddSysdepartment(HttpServletRequest request, @Validated @ModelAttribute("sysDepartment") SysDepartment sysDepartment,
+			BindingResult result,HttpSession session){
+		
+	 if(result.hasErrors()==false){
+			int count=sysDepartmentService.countByExample();
+			SysUser operator = Util.getUserSession(request);
+			sysDepartment.setCreateduserid(operator.getUserid());//创建人id
+			sysDepartment.setCreateddatetime(new Date());//创建时间
+			sysDepartment.setDeptrolecode(String.valueOf(count+1));//序号
+			sysDepartment.setIsdeleted(false);//0是false,1是true
+			
+			Integer parentid = sysDepartment.getParentid();
+			if(null == parentid){
+				sysDepartment.setParentid(-1);
+				parentid = -1;
+			}
+			//根据departmentid查询
+			SysDepartment sp= sysDepartmentService.sysDepartmentParentid(parentid);
+			
+			if(null == sp){
+				sysDepartment.setLevel(1);
+			}else{
+				sysDepartment.setLevel(sp.getLevel()+1);
+			}
+			
+			//根据parentid查询
+			Integer count2=sysDepartmentService.selectParentid(parentid);
+			if(0 == count2){
+				if(null == sp){
+					
+					sysDepartment.setDepartmentid(1);
+				}else{
+					sysDepartment.setDepartmentid(sp.getDepartmentid()*1000 +1);
+				}
+			}else{
+				Integer  maxMenuid = sysDepartmentService.selectMaxParentid(parentid);
+				sysDepartment.setDepartmentid(maxMenuid + 1);
+			}
+			
+			sysDepartmentService.insertSelective(sysDepartment);
+			return "redirect:getDepartmentList";
+		 }
+		return "sysdepartment/departmentAdd";
+	}
+	
+	/**
+	 * 编辑部门
+	 * */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="getSelectdepartment")
+	@ResponseBody
+	public ModelAndView getSelectdepartment(Integer depid){
+		ModelAndView view=new ModelAndView("sysdepartment/departmentUpdate");
+		SysDepartment  sd=sysDepartmentService.selectByPrimaryKey(depid);
+		view.addObject("sd",sd);
+		view.addObject("sysDepartment", new SysDepartment());
+		//部门层级
+		List<SysDepartment> sysDepartmentlist=sysDepartmentService.getDepartmentList();
+		List<SysDepartment> parenpagelist = new ArrayList<SysDepartment>();
+		
+		if(null != sysDepartmentlist && sysDepartmentlist.size() > 0){
+			
+			//封装一级菜单
+			for (SysDepartment sysDepartment2 : sysDepartmentlist) {
+				if(sysDepartment2.getLevel()==1){
+					parenpagelist.add(sysDepartment2);
+				}
+			}
+			
+			if(null != parenpagelist && parenpagelist.size() > 0){
+				
+				//一级菜单的每个对象和所以的菜单比较
+				for (int i = 0; i < parenpagelist.size(); i++) {
+					
+					PackageBeanUtils.packageParentDepartmentlist(parenpagelist.get(i) , sysDepartmentlist);
+					
+				}
+			}
+		}
+		
+		view.addObject("sysDepartmentlist", parenpagelist);
+		
+		return view;
+	}
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="getUpdateSysdepartment",method=RequestMethod.POST)
+	public String getUpdateSysdepartment(HttpServletRequest request, HttpSession session,@Validated @ModelAttribute("sysDepartment")SysDepartment sysDepartment,BindingResult result){
+		
+		
+		if(result.hasErrors()==false){
+			SysUser operator = Util.getUserSession(request);
+			sysDepartment.setLastupdateuserid(operator.getUserid());//更新人id
+			sysDepartment.setLastupdatedatetime(new Date());//更新时间
+			
+			sysDepartmentService.updateByPrimaryKeySelective(sysDepartment);
+			return "redirect:getDepartmentList";
+		}
+
+		return "sysdepartment/departmentUpdate";
+	}
+}

+ 25 - 0
src/main/java/com/ssm/controller/system/HomeController.java

@@ -0,0 +1,25 @@
+package com.ssm.controller.system;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.ssm.web.Const;
+import com.ssm.web.RoleLimit;
+
+@RequestMapping("home")
+@Controller
+public class HomeController {
+	
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="homeIndex", method=RequestMethod.GET)
+	public String homeIndex(){
+		
+		return "homeIndex";
+	}
+	
+	/*@RequestMapping(value="ssm/roleForm")
+	public String formDetail(HttpSession session){
+		return "role_list";
+	}*/
+}

+ 76 - 0
src/main/java/com/ssm/controller/system/PersonalController.java

@@ -0,0 +1,76 @@
+package com.ssm.controller.system;
+
+import java.util.Date;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import com.ssm.model.system.SysUser;
+import com.ssm.service.system.SysUserService;
+import com.ssm.util.Util;
+import com.ssm.web.Const;
+import com.ssm.web.RoleLimit;
+
+/**
+ * 个人设置
+ * @author Administrator
+ *
+ */
+@Controller
+@RequestMapping("person")
+public class PersonalController {
+	@Autowired
+	private SysUserService sysUserService;
+	/**
+	 * 修改个人密码
+	 * @param model
+	 * @param session
+	 * @return
+	 */
+	@RoleLimit(pid = "person", mid = "updatePassword")
+	@RequestMapping(value="updatePassword",method=RequestMethod.GET)
+	public String updatePassword(HttpServletRequest request, Model model,HttpSession session){
+		SysUser user = Util.getUserSession(request);
+		SysUser su = new SysUser();
+		su.setEmailaddress(user.getEmailaddress());
+		//2.绑定SysUser对象
+		if(!model.containsAttribute("sysUser"))
+			model.addAttribute("sysUser",su);
+		return "sysperson/passwordUpdate";
+	}
+	/**
+	 * 保存用户密码
+	 * @param sysUser
+	 * @param session
+	 * @param result
+	 * @param model
+	 * @return
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@Transactional(value="txManager")
+	@RequestMapping(value="updatePassword",method=RequestMethod.POST)
+	public String getAddLocation(HttpServletRequest request, @Validated @ModelAttribute("sysUser") SysUser sysUser,HttpSession session,
+			BindingResult result,Model model){
+		SysUser user = Util.getUserSession(request);
+		if(!user.getPassword().equals(sysUser.getJ_password())){
+			result.addError(new FieldError("sysUser", "j_password", "旧密码不正确,请重新输入!"));
+			return updatePassword(request,model,session);
+		}
+		sysUser.setUserid(user.getUserid());
+		sysUser.setLastupdatedatetime(new Date());
+		sysUserService.updateByPrimaryKeySelective(sysUser);
+		session.invalidate();
+		return "redirect:/login";
+	}
+
+}

+ 189 - 0
src/main/java/com/ssm/controller/system/PositionController.java

@@ -0,0 +1,189 @@
+package com.ssm.controller.system;
+
+
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.DataBinder;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.InitBinder;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.ssm.model.system.SysDepartment;
+import com.ssm.model.system.SysPosition;
+import com.ssm.model.system.SysUser;
+import com.ssm.model.validator.PositionValidator;
+import com.ssm.service.system.SysDepartmentService;
+import com.ssm.service.system.SysPositionService;
+import com.ssm.util.PackageBeanUtils;
+import com.ssm.util.Util;
+import com.ssm.util.page.PagedResult;
+import com.ssm.web.Const;
+import com.ssm.web.RoleLimit;
+
+/**
+ * 职位管理
+ * 
+ * */
+@RequestMapping("sysPosition")
+@Controller
+public class PositionController {
+	
+	@Autowired
+	private SysDepartmentService serviceDepartmentService;
+	@Autowired
+	private SysPositionService sysPositionService;
+	
+	
+
+	/**
+	 * 职位查询
+	 * */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="getPositionManagement")
+	@ResponseBody
+	public ModelAndView getPositionManagement(HttpServletRequest request, SysPosition sysPosition,Integer pageNo,Integer pageSize,HttpSession session){
+		
+		ModelAndView view = new ModelAndView("sysposition/positionManagement");	
+		
+		//部门
+		List<SysDepartment> sysDepartmentlist=serviceDepartmentService.getDepartmentList();
+		List<SysDepartment> parenpagelist = new ArrayList<SysDepartment>();
+		if(null != sysDepartmentlist && sysDepartmentlist.size() > 0){
+			
+			//封装一级菜单
+			for (SysDepartment sysDepartment2 : sysDepartmentlist) {
+				if(sysDepartment2.getLevel()==1){
+					parenpagelist.add(sysDepartment2);
+				}
+			}
+			
+			if(null != parenpagelist && parenpagelist.size() > 0){
+				//一级菜单的每个对象和所以的菜单比较
+				for (int i = 0; i < parenpagelist.size(); i++) {	
+					PackageBeanUtils.packageParentDepartmentlist(parenpagelist.get(i) , sysDepartmentlist);
+					
+				}
+			}
+		}
+		
+		
+		
+		view.addObject("sysDepartmentlist", parenpagelist);
+		
+		
+		SysUser operator = Util.getUserSession(request);
+		sysPosition.setUserid(operator.getUserid());
+		//分页查询职位
+		PagedResult<SysPosition>  list1=sysPositionService.getPostionFind(sysPosition,pageNo,pageSize);
+		
+		System.out.println(com.alibaba.fastjson.JSON.toJSONString(list1));
+		view.addObject("list", list1);
+		return view;
+	}
+	
+	/**
+	 * 查询所以部门(新增页面)
+	 * @author dn
+	 * @return list
+	 * */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="getQuerySysDepartment", method=RequestMethod.GET)
+	@ResponseBody
+	public ModelAndView getQuerySysDepartment(){
+		ModelAndView mv = new ModelAndView("sysposition/positionInsert");
+		List<SysDepartment> list=serviceDepartmentService.getDepartmentList();
+		mv.addObject("list", list); 
+		mv.addObject("sysPosition", new SysPosition());	
+		return mv;
+	}
+	
+	/**
+	 * 职位管理表单提交 绑定验证
+	 * @param binder
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@InitBinder("sysPosition")
+	public void InitBinder(DataBinder binder){
+		binder.setValidator(new PositionValidator());
+	}
+
+	/**
+	 * 添加职位
+	 * */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="getAddSysPosition", method=RequestMethod.POST)
+	public String getAddSysPosition(HttpServletRequest request, Model model,@Validated @ModelAttribute("sysPosition") SysPosition sysPosition,
+			BindingResult result,HttpSession session){
+		 if(result.hasErrors()==false){
+			 SysUser operator = Util.getUserSession(request);
+			 sysPosition.setCreateduserid(operator.getUserid());//创建人id
+			 sysPosition.setCreateddatetime(new Date());//创建时间
+			 sysPosition.setIsdeleted(false);//1(false)可用,0不可用
+			 sysPositionService.insertSelective(sysPosition);
+			 return "redirect:getPositionManagement";
+		 }
+		List<SysDepartment> list=serviceDepartmentService.getDepartmentList();
+		model.addAttribute("list", list);
+		 return"sysposition/positionInsert";
+	}
+	
+	/**
+	 * 删除职位
+	 * */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="getDeleteSysPosition")
+	@ResponseBody
+	public Map<String, Object> getDeleteSysPosition(Integer positionid){
+		Map<String, Object> record = new HashMap<String, Object>();
+		this.sysPositionService.deleteSysPostion(positionid);
+		record.put("success", true);
+		return record;
+	}
+	
+	/**
+	 * 编辑职位
+	 * */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="getSelectSysPosition")
+	public ModelAndView getSelectSysPosition(Integer positionid){
+		ModelAndView view=new ModelAndView("sysposition/positionUpdate");
+		List<SysDepartment> list=serviceDepartmentService.getDepartmentList();
+		view.addObject("list", list); 
+		
+		SysPosition sp=sysPositionService.selectByPrimaryKey(positionid);
+		view.addObject("sp", sp); 
+		view.addObject("sysPosition", new SysPosition());
+		return view;
+	}
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="getUpdateSysPosition")
+	public String getUpdateSysPosition(HttpServletRequest request, @Validated @ModelAttribute("sysPosition")SysPosition sysPosition,BindingResult result,HttpSession session){
+		
+		if(result.hasErrors()==false){
+			SysUser operator = Util.getUserSession(request);
+			sysPosition.setLastupdatedatetime(new Date());//更新时间
+			sysPosition.setLastupdateuserid(operator.getUserid());//更新人ID
+			sysPositionService.updateByPrimaryKeySelective(sysPosition);
+			
+			return "redirect:getPositionManagement";
+		}
+		return"sysposition/positionUpdate";
+	}
+
+}

+ 354 - 0
src/main/java/com/ssm/controller/system/SysDictionaryController.java

@@ -0,0 +1,354 @@
+package com.ssm.controller.system;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.DataBinder;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.InitBinder;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import com.ssm.model.system.SysDictionary;
+import com.ssm.model.system.SysUser;
+import com.ssm.model.validator.SysDictionaryValidator;
+import com.ssm.service.system.SysDictionaryService;
+import com.ssm.util.Util;
+import com.ssm.util.page.PagedResult;
+import com.ssm.web.Const;
+import com.ssm.web.RoleLimit;
+
+@RequestMapping("sysDictionary")
+@Controller
+public class SysDictionaryController {
+	
+	@Autowired
+	private SysDictionaryService sysDictionaryService;
+	
+	@RoleLimit(pid = "sysDictionary", mid = "dictionaryList")
+	@RequestMapping(value="dictionaryList")
+	public String dictionaryList(HttpSession session, Model model){
+		String currentTab = (String) session.getAttribute("currentTab");
+		currentTab = currentTab == null ?  "tab1" : currentTab;
+		List<SysDictionary> categroy = sysDictionaryService.selectConstCategory();
+		model.addAttribute("categroyList", categroy);
+		model.addAttribute("currentTab", currentTab);
+		return "sysdictionary/dictionaryList";
+	}
+	
+	/**
+	 * 查询字典种类
+	 * @param model
+	 * @param condition
+	 * @param pageNo
+	 * @param pageSize
+	 * @return
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="initDataList")
+	public String initDataList(Model model, SysDictionary condition, Integer pageNo, Integer pageSize){
+		condition.setNamespace(StringUtils.isNotBlank(condition.getNamespace())? condition.getNamespace() : null);
+		condition.setDictvalue(StringUtils.isNotBlank(condition.getDictvalue())? condition.getDictvalue() : null);
+		condition.setNamespace("CONST_CATEGORY");
+		PagedResult<SysDictionary> pageResult = sysDictionaryService.findByCondition(condition, pageNo, pageSize);
+		model.addAttribute("list", pageResult);
+		model.addAttribute("condition", condition);
+		return "sysdictionary/dataList";
+	}
+	
+	/**
+	 * 查询字典的常量值
+	 * @param model
+	 * @param condition
+	 * @param pageNo
+	 * @param pageSize
+	 * @return
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="initDicitionaryDataList")
+	public String initDicitionaryDataList(Model model, SysDictionary condition, Integer pageNo, Integer pageSize){
+		condition.setNamespace(StringUtils.isNotBlank(condition.getNamespace())? condition.getNamespace() : null);
+		condition.setDictname(StringUtils.isNotBlank(condition.getDictname())? condition.getDictname() : null);
+		Map<String, String> namespaceMap = new HashMap<String, String>();
+		List<SysDictionary> categroy = sysDictionaryService.selectConstCategory();
+		if(!categroy.isEmpty()){
+			for(SysDictionary sd : categroy){
+				namespaceMap.put(sd.getDictvalue(), sd.getDictname());
+			}
+		}
+		PagedResult<SysDictionary> pageResult = sysDictionaryService.selectByCondition(condition, pageNo, pageSize);
+		model.addAttribute("list", pageResult);
+		model.addAttribute("condition", condition);
+		model.addAttribute("namespaceMap", namespaceMap);
+		return "sysdictionary/constDataList";
+	}
+	
+	/**
+	 * 添加字典常量
+	 * @param currentTab
+	 * @return
+	 */
+	@RoleLimit(pid = "sysDictionary", mid = "dictionaryAdd")
+	@RequestMapping(value="dictionaryAdd")
+	public String dictionaryAdd(HttpSession session, Model model, @RequestParam("currentTab") String currentTab){
+		session.setAttribute("currentTab", currentTab);
+		if(!model.containsAttribute("dictionary"))
+			model.addAttribute("dictionary", new SysDictionary());
+		if("tab1".equalsIgnoreCase(currentTab)){
+			List<SysDictionary> categroy = sysDictionaryService.selectConstCategory();
+			model.addAttribute("categroyList", categroy);
+			return "sysdictionary/addDictionary";
+		} else {
+			return "sysdictionary/addDictionaryCategory";
+		}
+	}
+	
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@InitBinder("dictionary")
+	public void InitBinder(DataBinder binder){
+		binder.setValidator(new SysDictionaryValidator());
+	}			
+	
+	/**
+	 * 添加字典
+	 * @param session
+	 * @param model
+	 * @param dictionary
+	 * @param result
+	 * @return
+	 */
+	@Transactional(value="txManager")
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="addDictionaryexe")
+	public String addDictionaryexe(HttpServletRequest request, HttpSession session, Model model, 
+			@Validated @ModelAttribute("dictionary") SysDictionary dictionary, BindingResult result){
+		String currentTab = (String) session.getAttribute("currentTab");
+		if(result.hasErrors()) {
+			return dictionaryAdd(session, model, currentTab);
+		} else{
+			String namespace = dictionary.getNamespace();
+			String value = dictionary.getDictvalue();
+			SysDictionary sd = sysDictionaryService.selectByNamespaceAndValue("CONST_CATEGORY", namespace);
+			if(sd == null){
+				result.addError(new FieldError("dictionary", "dictname", "分组 "+namespace+" 不存在"));
+				return dictionaryAdd(session, model, currentTab);
+			} else{
+				SysDictionary sdn = sysDictionaryService.selectByNamespaceAndValue(namespace, value);
+				if(sdn != null){
+					result.addError(new FieldError("dictionary", "dictname", "分组"+namespace+"里已经存在常量 "+value));
+					return dictionaryAdd(session, model, currentTab);
+				} else {
+					dictionary.setIsactive(true);
+					dictionary.setSubitems(0);
+					SysUser user = Util.getUserSession(request);
+					dictionary.setCreateduserid(user.getUserid());
+					dictionary.setCreateddatetime(new Date());
+					sysDictionaryService.saveSysDictionary(dictionary);
+				}
+			}
+		}
+		return "redirect:/sysDictionary/dictionaryList";
+	}
+	
+	/**
+	 * 添加字典 分组
+	 * @param session
+	 * @param model
+	 * @param dictionary
+	 * @param result
+	 * @return
+	 */
+	@Transactional(value="txManager")
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="addDictionaryCategoryexe")
+	public String addDictionaryCategoryexe(HttpServletRequest request, HttpSession session, Model model, 
+			@Validated @ModelAttribute("dictionary") SysDictionary dictionary, BindingResult result){
+		String currentTab = (String) session.getAttribute("currentTab");
+		if(result.hasErrors()) {
+			return dictionaryAdd(session, model, currentTab);
+		} else{
+			String value = dictionary.getDictvalue();
+			SysDictionary sd = sysDictionaryService.selectByNamespaceAndValue("CONST_CATEGORY", value);
+			if(sd != null){
+				result.addError(new FieldError("dictionary", "dictname", "分组"+value+"已存在"));
+				return dictionaryAdd(session, model, currentTab);
+			} else {
+				dictionary.setNamespace("CONST_CATEGORY");
+				dictionary.setIsactive(true);
+				dictionary.setSubitems(0);
+				SysUser user = Util.getUserSession(request);
+				dictionary.setCreateduserid(user.getUserid());
+				dictionary.setCreateddatetime(new Date());
+				sysDictionaryService.saveSysDictionary(dictionary);
+			}
+		}
+		return "redirect:/sysDictionary/dictionaryList";
+	}
+	
+	/**
+	 * 进入编辑页面
+	 * @param session
+	 * @param model
+	 * @param dictid
+	 * @return
+	 */
+	@RoleLimit(pid = "sysDictionary", mid = "dictionaryEdit")
+	@RequestMapping(value="dictionaryEdit")
+	public String dictionaryEdit(HttpSession session, Model model, @RequestParam("dictid") Integer dictid){
+		SysDictionary dictionary = sysDictionaryService.selectById(dictid);
+		if(!model.containsAttribute("dictionary"))
+			model.addAttribute("dictionary",dictionary != null ? dictionary : new SysDictionary());
+		if("CONST_CATEGORY".equalsIgnoreCase(dictionary.getNamespace())){
+			session.setAttribute("currentTab", "tab2");
+			return "sysdictionary/dictionaryCategoryEdit";
+		} else {
+			List<SysDictionary> categroy = sysDictionaryService.selectConstCategory();
+			model.addAttribute("categroyList", categroy);
+			session.setAttribute("currentTab", "tab1");
+			return "sysdictionary/dictionaryEdit";
+		}
+	}
+	
+	/**
+	 * 编辑保存
+	 * @param session
+	 * @param model
+	 * @param dictionary
+	 * @param result
+	 * @return
+	 */
+	@Transactional(value="txManager")
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="editDictionaryexe")
+	public String editDictionaryexe(HttpServletRequest request, HttpSession session, Model model, 
+			@Validated @ModelAttribute("dictionary") SysDictionary dictionary, BindingResult result){
+		if(result.hasErrors()) {
+			return dictionaryEdit(session, model, dictionary.getDictid());
+		} else{
+			String namespace = dictionary.getNamespace();
+			String value = dictionary.getDictvalue();
+			SysDictionary old = sysDictionaryService.selectById(dictionary.getDictid());
+			SysDictionary sd = sysDictionaryService.selectByNamespaceAndValue("CONST_CATEGORY", namespace);
+			if(sd == null){
+				result.addError(new FieldError("dictionary", "dictname", "分组 "+namespace+" 不存在"));
+				return dictionaryEdit(session, model, dictionary.getDictid());
+			} else{
+				if(old.getNamespace().equals(namespace) && old.getDictvalue().equalsIgnoreCase(value)){
+					SysUser user = Util.getUserSession(request);
+					dictionary.setLastupdateuserid(user.getUserid());
+					dictionary.setLastupdatedatetime(new Date());
+					sysDictionaryService.updateSysDictionary(dictionary);
+				} else {
+					SysDictionary sdn = sysDictionaryService.selectByNamespaceAndValue(namespace, value);
+					if(sdn != null){
+						result.addError(new FieldError("dictionary", "dictname", "分组"+namespace+"里已经存在常量 "+value));
+						return dictionaryEdit(session, model, dictionary.getDictid());
+					} else {
+						SysUser user = (SysUser) session.getAttribute(Const.USER_SESSION_KEY);
+						dictionary.setLastupdateuserid(user.getUserid());
+						dictionary.setLastupdatedatetime(new Date());
+						sysDictionaryService.updateSysDictionary(dictionary);
+					}
+				}
+				
+			}
+		}
+		return "redirect:/sysDictionary/dictionaryList";
+	}
+	
+	/**
+	 * 编辑分组保存
+	 * @param session
+	 * @param model
+	 * @param dictionary
+	 * @param result
+	 * @return
+	 */
+	@Transactional(value="txManager")
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="editDictionaryCategoryexe")
+	public String editDictionaryCategoryexe(HttpServletRequest request, HttpSession session, Model model, 
+			@Validated @ModelAttribute("dictionary") SysDictionary dictionary, BindingResult result){
+		SysDictionary oldDictionary = sysDictionaryService.selectById(dictionary.getDictid());
+		if(result.hasErrors()) {
+			return dictionaryEdit(session, model, dictionary.getDictid());
+		} else{
+			
+			if(oldDictionary.getDictvalue().equalsIgnoreCase(dictionary.getDictvalue()) ){
+				SysUser user = Util.getUserSession(request);
+				dictionary.setLastupdateuserid(user.getUserid());
+				dictionary.setLastupdatedatetime(new Date());
+				sysDictionaryService.updateSysDictionary(dictionary);
+			} else {
+				String value = dictionary.getDictvalue();
+				SysDictionary sd = sysDictionaryService.selectByNamespaceAndValue("CONST_CATEGORY", value);
+				if(sd != null){
+					result.addError(new FieldError("dictionary", "dictname", "分组 "+value+" 已存在"));
+					return dictionaryEdit(session, model, dictionary.getDictid());
+				} else{
+					SysUser user = Util.getUserSession(request);
+					dictionary.setLastupdateuserid(user.getUserid());
+					dictionary.setLastupdatedatetime(new Date());
+					sysDictionaryService.updateSysDictionary(dictionary);
+					//查询原来该分组下的常量
+					List<SysDictionary> list = sysDictionaryService.selectByNamespace(oldDictionary.getDictvalue());
+					if(!list.isEmpty()){
+						for(SysDictionary dict : list){
+							dict.setLastupdateuserid(user.getUserid());
+							dict.setLastupdatedatetime(new Date());
+							dict.setNamespace(dictionary.getDictvalue());
+							sysDictionaryService.updateSysDictionary(dict);
+						}
+					}
+				}
+			}
+			
+		}
+		return "redirect:/sysDictionary/dictionaryList";
+	}
+	
+	/**
+	 * 激活和反激活 字典
+	 * @param dictid
+	 * @return
+	 */
+	@RoleLimit(pid = "sysDictionary", mid = "updateDictionaryEnable")
+	@Transactional(value="txManager")
+	@RequestMapping(value="updateDictionaryEnable", method=RequestMethod.POST)
+	public Map<String, Object> updateDictionaryEnable(@RequestParam("dictid") Integer dictid){
+		Map<String, Object> record = new HashMap<String, Object>();
+		record.put("success", true);
+		SysDictionary dictionary = sysDictionaryService.selectById(dictid);
+		if(dictionary != null){
+			if(dictionary.getIsactive()) { 
+				dictionary.setIsactive(false);
+				record.put("userStatus", true);
+			} else {
+				dictionary.setIsactive(true);
+				record.put("userStatus", false);
+			}
+			int count = sysDictionaryService.updateSysDictionary(dictionary);
+			if(count <= 0)
+				record.put("success", false);
+		} else {
+			record.put("success", false);
+		}
+		return record;
+	}
+	
+	
+}

+ 109 - 0
src/main/java/com/ssm/controller/system/SysLogController.java

@@ -0,0 +1,109 @@
+package com.ssm.controller.system;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.ssm.model.system.SysLog;
+import com.ssm.model.system.SysUserLoginLog;
+import com.ssm.service.system.SysLogService;
+import com.ssm.service.system.SysUserLoginLogService;
+import com.ssm.util.page.PagedResult;
+import com.ssm.web.Const;
+import com.ssm.web.RoleLimit;
+
+/**
+ * 日志
+ * */
+@RequestMapping("log")
+@Controller
+public class SysLogController {
+
+	@Autowired
+	SysLogService sysLogService;
+	@Autowired
+	SysUserLoginLogService userLoginLogService;
+	
+	@RoleLimit(pid = "log", mid = "sysLog")
+	@RequestMapping(value="sysLog")
+	public ModelAndView getLog(SysLog sysLog,Integer pageNo,Integer pageSize){
+		ModelAndView view=new ModelAndView("log/system_log");
+		return view;
+	}
+	
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="loadSysLog")
+	public String loadSysLog(SysLog sysLog,Integer pageNo,Integer pageSize, Model model) throws ParseException{
+		String rangeDate = sysLog.getCd();
+		if(StringUtils.isNotBlank(rangeDate)){
+			String[] dates = rangeDate.split("-");
+			if(dates!= null && dates.length == 2){
+				SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
+				String startDate = dates[0].trim() + " 00:00:00";
+				String endDate = dates[1].trim()+ " 23:59:59";
+				sysLog.setStartDate(sdf.parse(startDate));
+				sysLog.setEndDate(sdf.parse(endDate));
+			}
+		}
+		PagedResult<SysLog> pagedResult=sysLogService.selectlog(sysLog, pageNo, pageSize);
+		model.addAttribute("list", pagedResult);
+		return "log/sys_log_data";
+	}
+	
+	/**
+	 * 查看日志详细
+	 * @return
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="logDetail")
+	public String logDetail(@RequestParam("logId") Integer id, Model model){
+		SysLog log = sysLogService.findById(id);
+		model.addAttribute("log", log);
+		return "log/log_detail";
+	}
+	
+	/**
+	 * 用户登录日志
+	 * @return
+	 */
+	@RoleLimit(pid = "log", mid = "userLoginLog")
+	@RequestMapping(value="userLoginLog")
+	public String userLoginLog(SysUserLoginLog loginLog){
+		return "log/user_login_log";
+	}
+	/**
+	 * 分页查询  用户 登录 日志
+	 * @param loginLog
+	 * @param pageNo
+	 * @param pageSize
+	 * @param model
+	 * @return
+	 * @throws ParseException
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="loadUserLoginLog")
+	public String loadUserLoginLog(SysUserLoginLog loginLog, Integer pageNo, Integer pageSize, Model model) throws ParseException{
+		String rangeDate = loginLog.getCd();
+		if(StringUtils.isNotBlank(rangeDate)){
+			String[] dates = rangeDate.split("-");
+			if(dates!= null && dates.length == 2){
+				SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
+				String startDate = dates[0].trim() + " 00:00:00";
+				String endDate = dates[1].trim()+ " 23:59:59";
+				loginLog.setStartDate(sdf.parse(startDate));
+				loginLog.setEndDate(sdf.parse(endDate));
+			}
+		}
+		PagedResult<SysUserLoginLog> pagedResult = userLoginLogService.selectlog(loginLog, pageNo, pageSize);
+		model.addAttribute("list", pagedResult);
+		return "log/user_login_log_data";
+	}
+	
+}

+ 575 - 0
src/main/java/com/ssm/controller/system/SysMenuController.java

@@ -0,0 +1,575 @@
+package com.ssm.controller.system;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+
+
+
+
+import java.util.Map;
+import java.util.Map.Entry;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.ui.Model;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.DataBinder;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.InitBinder;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import com.ssm.common.ExceptionReaper;
+import com.ssm.common.ResultBack;
+import com.ssm.common.SpringInitConfig;
+import com.ssm.model.system.SysMenu;
+import com.ssm.model.system.SysRole;
+import com.ssm.model.system.SysUser;
+import com.ssm.model.validator.SysMenuValidator;
+import com.ssm.service.system.SysMenuService;
+import com.ssm.service.system.SysRoleService;
+import com.ssm.util.PackageBeanUtils;
+import com.ssm.util.Util;
+import com.ssm.util.page.BeanUtil;
+import com.ssm.util.page.PagedResult;
+import com.ssm.web.Const;
+import com.ssm.web.RoleLimit;
+
+/**
+ * <b>类说明:接口
+ */
+@Controller
+@RequestMapping(value = "sysMenu")
+public class SysMenuController extends ExceptionReaper{
+
+	@Autowired
+	private SysMenuService menuService;
+	@Autowired
+	private SysRoleService sysRoleService;
+	/*
+	 * 查询菜单
+	 */
+	@RoleLimit(pid = "sysMenu", mid = "menuTree")
+	@ResponseBody
+	@RequestMapping(value = "menuTree")
+	public ModelAndView selectMenus(HttpSession session, HttpServletRequest request,
+			Model model, @RequestParam(value="currentMenu" , required=false) String currentMenu  ){
+		model.addAttribute("currentMenu", currentMenu);
+		ModelAndView mv = new ModelAndView("sysmenu/menu_list");
+		return mv;
+	}
+	
+	@RequestMapping(value = "initDataTree")
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	public String initDataTree(Model model, HttpServletRequest request){
+		SysMenu menu= new SysMenu();
+		String menucnname = request.getParameter("menucnname");
+		if(StringUtils.isNoneBlank(menucnname)){
+			menu.setMenucnname(menucnname);
+		}
+		List<SysMenu> menuList = menuService.menuTree(menu);
+//		for(int i = 0; i < menuList.size(); i++){
+//			SysMenu m = menuList.get(i);
+//			m.setOrderby(i+"");
+//			menuService.updateMenu(m);
+//		}
+		PagedResult<SysMenu> pagedResult = BeanUtil
+				.toPagedResult(menuList);
+		model.addAttribute("list", pagedResult);
+		return "sysmenu/tree_table";
+	}
+	
+	/*
+	 * 增加菜单
+	 */
+	@Transactional(value="txManager")
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value = "insertMenus", method = RequestMethod.POST)
+	public String insertMenus(HttpServletRequest request, @Validated @ModelAttribute("sys") SysMenu sys, BindingResult result,HttpSession session, 
+			RedirectAttributes attr, Model model) {
+		if(result.hasErrors()==false){	
+			SysUser sysUser = Util.getUserSession(request);
+			sys.setCreateduserid(sysUser.getUserid());
+			sys = compleInsertMenu(sys);
+			
+			if(org.apache.commons.lang.StringUtils.isNotBlank(sys.getMenuurl())){
+				SysMenu m = menuService.selectMenuByUrl(sys.getMenuurl());
+				if( m != null) {
+					result.addError(new FieldError("sys", "menuurl", "url已存在"));
+					
+					List<SysMenu> parenpagelist = new ArrayList<SysMenu>();
+					List<SysMenu> pagemenus = menuService.selectAllpageMenus();
+					if(!pagemenus.isEmpty()){
+						for (SysMenu sysMenu : pagemenus) {
+							if(sysMenu.getLevel() == 1){
+								parenpagelist.add(sysMenu);
+							}
+						}
+						if(!parenpagelist.isEmpty()){
+							for (int i = 0; i < parenpagelist.size(); i++) {
+								PackageBeanUtils.packageParentlist(parenpagelist.get(i) , pagemenus);
+							}
+						}
+					}
+					/**
+					 * 选择父菜单树
+					 */
+					model.addAttribute("parentpageList", parenpagelist);
+					model.addAttribute("sys", sys);
+					
+					return "sysmenu/createMenu";
+				}
+			}
+				
+			
+			if(sys.getLevel() == 3)
+				attr.addAttribute("currentMenu", sys.getParentid());
+			if(sys.getLevel() == 4){
+				SysMenu pMenu = menuService.selectByMenuId(sys.getParentid());
+				attr.addAttribute("currentMenu", pMenu.getParentid());
+			}
+			menuService.insertMenu(sys);
+			reloadRoleAndMenu();
+			return "redirect:menuTree";
+		}
+		return "sysmenu/createMenu";
+	}
+
+	/**
+	 * insert需要补全的字段
+	 * @param menu
+	 * @return
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	private SysMenu compleInsertMenu(SysMenu menu) {
+		Date date = new Date();
+		menu.setCreateddatetime(date);
+		menu.setIsdelete(false);
+		if(!menu.getIsenable())
+			menu.setIsenable(true);
+		else
+			menu.setIsenable(false);
+		Integer parentid = menu.getParentid();
+		if(null == parentid){
+			menu.setParentid(-1);
+			parentid = -1;
+			
+			//查询 最大的 序列号
+			Integer maxOrder = menuService.selectMaxOrder();
+			if(maxOrder == null)
+				maxOrder = 0;
+			menu.setOrderby(maxOrder.toString());
+		} else {
+			SysMenu parent = menuService.selectByMenuId(parentid);
+			Integer maxOrder = findMaxOrderUnderParent(parent);
+			menu.setOrderby(maxOrder.toString());
+			//将所有的  orderby >= maxOrder的往下移一格
+			menuService.updateOrderBy(maxOrder);
+		}
+		SysMenu pMenuWithBLOBs= menuService.selectByMenuId(parentid);
+		if(null == pMenuWithBLOBs){
+			menu.setLevel(1);
+		}else{
+			menu.setLevel(pMenuWithBLOBs.getLevel()+1);
+		}
+		
+//		Integer count =  menuService.selectCountByParentid(parentid);
+//		if(0 == count){
+//			menu.setMenuid(pMenuWithBLOBs.getMenuid()*1000 +1);
+//		}else{
+//			Integer  maxMenuid = menuService.selectMaxmenuIdByParentid(parentid);
+//			menu.setMenuid(maxMenuid + 1);
+//		}
+		
+		if(null == menu.getMenutype() || "".equals(menu.getMenutype()))
+			menu.setMenutype("Page");
+		return menu;
+	}
+	
+	
+	/**
+	 * 递归查询 父节点下的 最大的序列号
+	 * @param parentId
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	private Integer findMaxOrderUnderParent(SysMenu parent) {
+		Integer maxOrderId = menuService.selectMaxOrderIdUnderParent(parent.getMenuid());
+		Integer returnOrder = 0;
+		if(maxOrderId == null) { //没有菜单节点
+			returnOrder = Integer.valueOf(parent.getOrderby())+1;
+		} else { //存在子菜单
+			//看最大一个 兄弟节点是否有子节点
+			List<SysMenu> menuList = sysRoleService.selectChildMenusByPageMenuId(maxOrderId);
+			if(!menuList.isEmpty()) {
+				SysMenu menu = menuList.get(menuList.size()-1); //最大的子节点
+				returnOrder = findMaxOrderUnderParent(menu);
+			} else {
+				Integer maxOrder = menuService.selectMaxOrderUnderParent(parent.getMenuid());
+				returnOrder = maxOrder+1;
+			}
+		}
+		return returnOrder;
+	}
+	
+	
+	/**
+	 * update  需要补全的字段
+	 * @param menu
+	 * @return
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	private SysMenu compleUpdateMenu(SysMenu menu) {
+		Date date = new Date();
+		menu.setLastupdatedatetime(date);
+		if(!menu.getIsenable())
+			menu.setIsenable(true);
+		else
+			menu.setIsenable(false);
+		return menu;
+	}
+
+	/*
+	 * 修改菜单
+	 */
+	@Transactional(value="txManager")
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value = "updateMenus", method = RequestMethod.POST)
+	public String updateMenus(@Validated @ModelAttribute("sys") SysMenu sys, 
+			BindingResult result, HttpSession session, Model model, HttpServletRequest request, RedirectAttributes attr) {
+		SysMenu old = menuService.selectByMenuId(sys.getMenuid());
+		if(result.hasErrors()==false){
+			SysUser sysUser = Util.getUserSession(request);
+			try {
+				sys.setLastupdateuserid(sysUser.getUserid());
+				sys = compleUpdateMenu(sys);
+				if(org.apache.commons.lang.StringUtils.isNotBlank(sys.getMenuurl())){
+					SysMenu m = null;
+					if(!old.getMenuurl().equalsIgnoreCase(sys.getMenuurl())) {
+						m = menuService.selectMenuByUrl(sys.getMenuurl());
+					}
+					if( m != null) {
+						result.addError(new FieldError("sys", "menuurl", "url已存在"));
+						List<SysMenu> parenpagelist = new ArrayList<SysMenu>();
+						List<SysMenu> pagemenus = menuService.selectAllpageMenus();
+						if(null != pagemenus && pagemenus.size() > 0){
+							for (SysMenu sysMenu : pagemenus) {
+								if(sysMenu.getLevel() == 1){
+									parenpagelist.add(sysMenu);
+								}
+								
+							}
+							if(null != parenpagelist && parenpagelist.size() > 0){
+								for (int i = 0; i < parenpagelist.size(); i++) {
+									PackageBeanUtils.packageParentlist( parenpagelist.get(i) , pagemenus);
+								}
+							}
+						}
+						model.addAttribute("parentpageList", parenpagelist);
+						model.addAttribute("editmenu", sys);
+						return "sysmenu/editMenu";
+					}
+				}
+				menuService.updateMenu(sys);
+			} catch (Exception e) {
+				result.addError(new FieldError("res", "errmsg", "修改失败,请检查后再提交"));
+				return toBack(model);
+			}
+//			menuService.renewalMenuSession(session, sysUser);
+			SysMenu menu = menuService.selectByMenuId(sys.getMenuid());
+			if(menu.getLevel() == 3)
+				attr.addAttribute("currentMenu", menu.getParentid());
+			if(menu.getLevel() == 4){
+				SysMenu pMenu = menuService.selectByMenuId(menu.getParentid());
+				attr.addAttribute("currentMenu", pMenu.getParentid());
+			}
+			reloadRoleAndMenu();
+			return "redirect:menuTree";
+		}
+		return "sysmenu/editMenu";
+
+	}
+	/**
+	 * 跳转到菜单修改页面
+	 * @param request
+	 * @param session
+	 * @return
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value = "editMenu")
+	public ModelAndView editMenu(HttpServletRequest request,HttpSession session) {
+		ModelAndView mv = new ModelAndView("sysmenu/editMenu");
+		SysMenu sysMenuWithBLOBs  = new SysMenu();
+		List<SysMenu> parenpagelist = new ArrayList<SysMenu>();
+		String id = request.getParameter("id");
+		if(StringUtils.isNoneBlank(id)){
+			
+			sysMenuWithBLOBs = menuService.selectByPrimaryKey(Integer.valueOf(id));
+			
+		}
+		
+		List<SysMenu> pagemenus = menuService.selectAllpageMenus();
+		if(null != pagemenus && pagemenus.size() > 0){
+			for (SysMenu sysMenu : pagemenus) {
+				
+				if(sysMenu.getLevel() == 1){
+					parenpagelist.add(sysMenu);
+					
+				}
+				
+			}
+			if(null != parenpagelist && parenpagelist.size() > 0){
+				
+				for (int i = 0; i < parenpagelist.size(); i++) {
+					
+					PackageBeanUtils.packageParentlist( parenpagelist.get(i) , pagemenus);
+				}
+			}
+		}
+		mv.addObject("editmenu", sysMenuWithBLOBs);
+		/**
+		 * 选择父菜单树
+		 */
+		mv.addObject("parentpageList", parenpagelist);
+		mv.addObject("sys", new SysMenu());
+		return mv;
+	}
+
+	/**
+	 * 跳转到新增页面
+	 * @param request
+	 * @param session
+	 * @return
+	 */
+	@RoleLimit(pid = "sysMenu", mid = "createMenu")
+	@RequestMapping(value = "createMenu")
+	public ModelAndView createMenu(HttpServletRequest request,HttpSession session) {
+		ModelAndView mv = new ModelAndView("sysmenu/createMenu");
+		List<SysMenu> parenpagelist = new ArrayList<SysMenu>();
+		List<SysMenu> pagemenus = menuService.selectAllpageMenus();
+		
+		if(!pagemenus.isEmpty()){
+			for (SysMenu sysMenu : pagemenus) {
+				
+				if(sysMenu.getLevel() == 1){
+					parenpagelist.add(sysMenu);
+					
+				}
+				
+			}
+			if(!parenpagelist.isEmpty()){
+				
+				for (int i = 0; i < parenpagelist.size(); i++) {
+					
+					PackageBeanUtils.packageParentlist(parenpagelist.get(i) , pagemenus);
+				}
+			}
+			
+//			if(!parenpagelist.isEmpty()){
+//				for(SysMenu first : parenpagelist) {
+//					System.out.println("first ====>"+first.getMenucnname());
+//					for(SysMenu second : first.getChildMenu()){
+//						System.out.println("second ====>"+second.getMenucnname());
+//						for(SysMenu third : second.getChildMenu()){
+//							System.out.println("third ====>"+third.getMenucnname());
+//						}
+//					}
+//				}
+//			}
+			
+		}
+		/**
+		 * 选择父菜单树
+		 */
+		mv.addObject("parentpageList", parenpagelist);
+		mv.addObject("sys", new SysMenu());
+		return mv;
+	}
+	
+	/**
+	 * 校验角色新增
+	 * @param binder
+	 */
+	@InitBinder("sys")
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	public void InitBinder(DataBinder binder){
+		binder.setValidator(new SysMenuValidator());
+	}
+
+	/*
+	 * 删除菜单
+	 */
+	@ResponseBody
+	@Transactional(value="txManager")
+	@RoleLimit(pid = "sysMenu", mid = "deleteMenu")
+	@RequestMapping(value = "deleteMenu", method = RequestMethod.POST)
+	public Map<String, Object> deleteMenus(HttpServletRequest request, HttpSession session) {
+		Map<String, Object> record = new HashMap<String, Object>();
+		record.put("success", true);
+		String menuid = "";
+		SysUser sysUser = Util.getUserSession(request);
+		try {
+			menuid = request.getParameter("menuid");
+			//先查询是否有子节点,若有,则不允许删除
+			int count = menuService.countSonMenu(Integer.valueOf(menuid));
+			if(count > 0) {
+				record.put("success", false);
+				record.put("info", "请先删除子菜单");
+			} else {
+				menuService.deleteMenuById(menuid, sysUser.getUserid());
+			}
+		} catch (Exception e) {
+			record.put("success", false);
+		}
+		reloadRoleAndMenu();
+		return record;
+	}
+	
+	/*
+	 * 删除菜单
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@Transactional(value="txManager")
+	@RequestMapping(value = "freezeMenus", method = RequestMethod.POST)
+	public Map<String, Object> freezeMenus(HttpServletRequest request, @RequestParam("menuId") Integer menuId, HttpSession session) {
+		
+		SysUser sysUser = Util.getUserSession(request);
+		Map<String, Object> record = new HashMap<String, Object>();
+		record.put("success", true);
+		
+		SysMenu menu = menuService.selectByPrimaryKey(menuId);
+		if(menu != null ) {
+			Boolean isenable = !menu.getIsenable();
+			menu.setIsenable(isenable);
+			menu.setLastupdateuserid(sysUser.getUserid());
+			menu.setLastupdatedatetime(new Date());
+			Integer count  = menuService.freezeMenuById(menu);
+			if(count <= 0)
+				record.put("success", false);
+			
+			record.put("menuStatus", isenable);
+		} else {
+			record.put("success", false);
+		}
+		reloadRoleAndMenu();
+		return record;
+	}
+	
+	
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	//@RequestMapping(value="login", method=RequestMethod.GET)
+	public String toBack(Model model) {
+		if(!model.containsAttribute("res"))
+			model.addAttribute("res", new ResultBack());
+		return "editMenu";
+	}
+	
+	
+	/**
+	 * 当用户 超级管理员 修改 菜单时, 需要 同步 到map中
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	public void reloadRoleAndMenu(){
+		//清空所有的菜单和角色
+		Iterator<Entry<String, List<SysMenu>>> it = SpringInitConfig.menuMap.entrySet().iterator();  
+        while(it.hasNext()){  
+           it.next();  
+           it.remove();
+        }  
+        
+        List<SysRole> roleList = sysRoleService.selectRoleAndMenuList();
+		if( !roleList.isEmpty() ) {
+			for(SysRole role : roleList) {
+				SpringInitConfig.roleMap.put(role.getRoleId().toString(), role);
+				SpringInitConfig.menuMap.put(role.getRoleId().toString(), role.getMenuList());
+			}
+			
+		}
+		//下面代码 可以 注释
+		for(String key : SpringInitConfig.menuMap.keySet() ){
+			System.out.println( "==================================================" );
+			SysRole role = SpringInitConfig.roleMap.get(key);
+			System.out.print( "角色 :"+ role.getRoleName()  +" 菜单>>>");
+			List<SysMenu> menuList = SpringInitConfig.menuMap.get(key);
+			if(!menuList.isEmpty()) {
+				for(SysMenu menu : menuList) {
+					System.out.println(  menu.getMenucnname() );
+				}
+			}
+		}
+        
+	}
+	
+	
+	/**
+	 * 菜单节点上移
+	 * @return
+	 */
+	@Transactional(value="txManager")
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="moveUp", method = RequestMethod.POST)
+	public String moveUp(@RequestParam("menuId") Integer menuId, HttpSession session, Model model){
+		//要移动的节点
+		SysMenu from = menuService.selectByPrimaryKey(menuId);
+		Integer orderBy = menuService.selectPrevOrder(from.getLevel(), Integer.valueOf(from.getOrderby()), from.getParentid());
+		SysMenu to = menuService.selectMenuByOrderAndParent(orderBy, from.getParentid());
+		
+		List<SysMenu> addList = new ArrayList<SysMenu>();
+		List<SysMenu> delList = new ArrayList<SysMenu>();
+		Integer nextOrder = menuService.selectNextOrder(from.getLevel(), Integer.valueOf(from.getOrderby()), from.getParentid());
+		if(nextOrder == null) {
+			if(from.getParentid() == -1) {
+				Integer maxOrder = menuService.selectMaxOrder();
+				delList = menuService.deleteOrderBy(Integer.valueOf(from.getOrderby()), maxOrder);
+			} else {
+				nextOrder = menuService.selectNextLevel(from.getLevel()-1, Integer.valueOf(from.getOrderby()));
+				if(nextOrder == null) {
+					Integer maxOrder = menuService.selectMaxOrder();
+					delList = menuService.deleteOrderBy(Integer.valueOf(from.getOrderby()), maxOrder);
+				} else {
+					delList = menuService.deleteOrderBy(Integer.valueOf(from.getOrderby()), nextOrder);
+				}
+			}
+		} else {
+			delList = menuService.deleteOrderBy(Integer.valueOf(from.getOrderby()), nextOrder);
+		}
+		
+		addList = menuService.addOrderBy(Integer.valueOf(to.getOrderby()), Integer.valueOf(from.getOrderby()));
+		String orderFrom = delList.get(delList.size()-1).getOrderby();
+		String orderTo = addList.get(0).getOrderby();
+		int count  = Integer.valueOf(orderFrom) - Integer.valueOf(orderTo) +1; 
+		
+		//1.序列比orderFrom大的全部加上  count
+		//2.addList 全部加上 count ,则节点移动成功
+		menuService.updateOrderByCount(count, Integer.valueOf(orderFrom));
+		
+		for(SysMenu menu : addList) {
+			Integer newOrder = Integer.valueOf(menu.getOrderby()) + count;
+			menu.setOrderby(newOrder.toString());
+			menuService.updateMenu(menu);
+		}
+		
+		//回显到页面
+		List<SysMenu> menuList = menuService.menuTree(new SysMenu());
+		PagedResult<SysMenu> pagedResult = BeanUtil
+				.toPagedResult(menuList);
+		model.addAttribute("list", pagedResult);
+		reloadRoleAndMenu();
+		return "sysmenu/tree_table";
+	}
+	
+}

+ 708 - 0
src/main/java/com/ssm/controller/system/SysRoleController.java

@@ -0,0 +1,708 @@
+package com.ssm.controller.system;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import javax.servlet.http.HttpServletRequest;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.DataBinder;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.InitBinder;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.ssm.common.SpringInitConfig;
+import com.ssm.model.system.JsTree;
+import com.ssm.model.system.State;
+import com.ssm.model.system.SysMenu;
+import com.ssm.model.system.SysRole;
+import com.ssm.model.system.SysUser;
+import com.ssm.model.validator.SysRoleValidator;
+import com.ssm.service.system.SysMenuService;
+import com.ssm.service.system.SysRoleService;
+import com.ssm.util.page.Helper;
+import com.ssm.util.page.PagedResult;
+import com.ssm.web.Const;
+import com.ssm.web.RoleLimit;
+
+/**
+ *角色管理
+ */
+@RequestMapping(value="sysRole")
+@Controller
+public class SysRoleController {
+
+	@Autowired
+	SysRoleService sysRoleService;
+	
+	@Autowired
+	private SysMenuService sysMenuService;
+	
+	/**
+	 * 查询角色列表
+	 */
+	@RequestMapping(value="roleInfo")
+	@ResponseBody
+	@RoleLimit(pid = "sysRole", mid = "roleInfo")
+	public ModelAndView roleInfo(HttpServletRequest request,Integer pageNo,Integer pageSizeSelect){
+		ModelAndView mv = new ModelAndView("sysrole/role_list");  
+		return mv;   
+	}
+	
+	
+	@RequestMapping(value="initDataList")
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	public String initDataList(HttpServletRequest request,Integer pageNo,Integer pageSizeSelect, Model model){
+		String roleName = request.getParameter("roleName");
+		PagedResult<SysRole> pageResult = sysRoleService.queryByRoleName(roleName,pageNo, pageSizeSelect);
+		if(pageResult !=null){
+		    Helper.countStartPageAndEndPage(pageResult);
+		    model.addAttribute("list", pageResult);
+		}
+		return "sysrole/data_list";
+	}
+	
+	
+	/**
+	 * 校验角色新增
+	 * @param binder
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@InitBinder("sysRole")
+	public void InitBinder(DataBinder binder){
+		binder.setValidator(new SysRoleValidator());
+	}
+	
+	/**
+	 * 校验角色修改
+	 * @param binder
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@InitBinder("sysRole2")
+	public void InitBinder2(DataBinder binder){
+		binder.setValidator(new SysRoleValidator());
+	}
+	
+	@RequestMapping(value="addRole")
+	@ResponseBody
+	@RoleLimit(pid = "sysRole", mid = "addRole")
+	public ModelAndView addRole(HttpServletRequest request){
+		ModelAndView mv = new ModelAndView("sysrole/role_add"); 
+		String parameter = request.getParameter("RoleID");
+		if(parameter != null && parameter != ""){
+			Integer rolrId = Integer.valueOf(parameter);
+			SysRole role = sysRoleService.selectSysRoleByRoleId(rolrId);
+			mv.addObject("role",role);
+		}
+		mv.addObject("sysRole", new SysRole());
+		return mv;   
+	}
+	
+	/**
+	 * 创建角色
+	 */
+	@RequestMapping(value="createRole")
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@Transactional(value="txManager")
+	public String createRole(@Validated @ModelAttribute("sysRole") SysRole sysRole
+			,BindingResult result){
+		if(result.hasErrors()==false){
+			sysRole.setIsDeleted(false);
+			sysRole.setIsEnabled(false);
+			sysRole.setCreatedDateTime(new Date());
+			sysRoleService.insertSysRole(sysRole);
+			return "redirect:roleInfo";
+		}
+		return "role_add";
+	}
+	
+	/**
+	 * 更新角色
+	 */
+	@RequestMapping(value="updateRole")
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@Transactional(value="txManager")
+	public String updateRole(@Validated @ModelAttribute("sysRole") SysRole sysRole
+			,BindingResult result,HttpServletRequest request){
+		if(result.hasErrors()==false){
+			String parameter = request.getParameter("RoleID");
+			sysRole.setIsDeleted(false);
+			sysRole.setIsEnabled(false);
+			if(parameter != null && parameter != ""){
+				Integer rolrId = Integer.valueOf(parameter);
+				sysRole.setRoleId(rolrId);
+				sysRoleService.updateRoleByRoleId(sysRole);
+			}
+			return "redirect:roleInfo";
+		}
+		return "role_add";
+	}
+	
+	@RequestMapping(value="updateRole2")
+	@ResponseBody
+	@RoleLimit(pid = "sysRole", mid = "updateRole2")
+	public ModelAndView updateRole2(HttpServletRequest request){
+		ModelAndView mv = new ModelAndView("sysrole/roleEdit"); 
+		String parameter = request.getParameter("RoleID");
+		if(parameter != null && parameter != ""){
+			Integer rolrId = Integer.valueOf(parameter);
+			SysRole role = sysRoleService.selectSysRoleByRoleId(rolrId);
+			mv.addObject("role",role);
+		}
+		mv.addObject("sysRole", new SysRole());
+		return mv;   
+	}
+	/**
+	 * 更新角色是否可用
+	 */
+	@RequestMapping(value="updateRoleStatus",method=RequestMethod.POST)
+	@ResponseBody
+	@Transactional(value="txManager")
+	@RoleLimit(pid = "sysRole", mid = "updateRoleStatus")
+	public Map<String, Object> updateRoleStatus(HttpServletRequest request,Integer pageNo,Integer pageSizeSelect){
+	    Map<String, Object> record = new HashMap<String, Object>();
+		record.put("success", true);
+		String parameter = request.getParameter("RoleID");
+		if(StringUtils.isNotBlank(parameter)){
+			Integer roleId = Integer.valueOf(parameter);
+			SysRole role = sysRoleService.selectSysRoleByRoleId(roleId);
+		
+				if(role != null) {
+					if(role.getIsEnabled()) { 
+						role.setIsEnabled(false);
+						record.put("roleStatus", false);
+					} else {
+						role.setIsEnabled(true);
+						record.put("roleStatus", true);
+					}
+					int count = sysRoleService.updateRoleByRoleId(role);
+					if(count <= 0)
+						record.put("success", false);
+					} else {
+						//不存在
+						record.put("success", false);
+					}
+		}
+		return record;
+	}
+	
+	/**
+	 * 删除角色
+	 */
+	@RequestMapping(value="deleteRole")
+	@Transactional(value="txManager")
+	@ResponseBody
+	@RoleLimit(pid = "sysRole", mid = "deleteRole")
+	public Integer deleteRole(HttpServletRequest request,Integer pageNo,Integer pageSizeSelect){
+		String parameter = request.getParameter("RoleID");
+		Integer data = 0;
+		if(parameter != null && parameter != ""){
+			Integer roleId = Integer.valueOf(parameter);
+			SysRole role = sysRoleService.selectSysRoleByRoleId(roleId);
+			role.setIsDeleted(true);
+			data = sysRoleService.updateRoleByRoleId(role);
+		}
+	    return data;
+	}
+	
+	/**
+	 * 编辑权限
+	 */
+	@RequestMapping(value="rolePermission")
+	@ResponseBody
+	@RoleLimit(pid = "sysRole", mid = "rolePermission")
+	public ModelAndView rolePermission(HttpServletRequest request,Integer pageNo,Integer pageSizeSelect){
+		ModelAndView mv= new ModelAndView("sysrole/rolePermission");
+		String parameter = request.getParameter("RoleID");
+		SysRole role = new SysRole();
+		if(parameter != null && parameter != ""){
+			Integer roleId = Integer.valueOf(parameter);
+		    role = sysRoleService.selectSysRoleByRoleId(roleId);
+		}
+		mv.addObject("role", role);
+		return mv;
+	}
+	
+	
+	@RequestMapping(value="loadMenuTree")
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	public Map<String, Object> loadMenuTree(HttpServletRequest request, @RequestParam("roleId") String roleId){
+		Map<String, Object> record = new HashMap<String, Object>();
+		
+		//页面权限  
+		String pageMenu = getTreeDataJson();
+		record.put("pageMenu", pageMenu);
+		
+		//按钮 权限
+		String buttonMenu = getButtonDataJson();
+		record.put("buttonMenu", buttonMenu);
+		
+		//查询所有的角色 拥有 菜单
+		JSONArray jsonObj = new JSONArray();
+		JSONArray jsonObj1 = new JSONArray();
+		if(StringUtils.isNotBlank(roleId)){
+			List<SysMenu> sysMenuList = sysRoleService.selectPageMenusByRoleId(Integer.valueOf(roleId));
+			if(sysMenuList.size() > 0){
+				for (SysMenu sysMenu : sysMenuList) {
+					JSONObject sysMenu2 = new JSONObject();
+					sysMenu2.put("menuId", sysMenu.getMenuid());
+					sysMenu2.put("menuName", sysMenu.getMenucnname());
+					jsonObj.add(sysMenu2);
+				}
+			}
+			
+			List<SysMenu> sysButtonMenuList = sysRoleService.selectButtonMenusByRoleId(Integer.valueOf(roleId));
+			if(sysButtonMenuList.size() > 0){
+				for (SysMenu sysMenu : sysButtonMenuList) {
+					JSONObject sysMenu2 = new JSONObject();
+					sysMenu2.put("menuId", sysMenu.getMenuid());
+					sysMenu2.put("menuName", sysMenu.getMenucnname());
+					jsonObj1.add(sysMenu2);
+				}
+			}
+		}
+		//第一棵树的 角色拥有菜单
+		record.put("result", jsonObj.toString());
+		record.put("result1", jsonObj1.toString());
+		return record;
+	}
+	
+	
+	
+	/**
+	 * 初始化加载菜单树
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	public String getTreeDataJson(){
+		List<SysMenu> menuList = sysMenuService.selectMenusByPage();//查询全部页面菜单
+		List<SysMenu> menuList2 = sysMenuService.selectFirstMenu();//查询第一级菜单
+		List<JsTree> treeList = new ArrayList<JsTree>();
+
+		for (SysMenu sysMenu : menuList2) {
+			JsTree j = new JsTree();
+			j.setId(sysMenu.getMenuid());
+			j.setText(sysMenu.getMenucnname());
+			j.setIcon(sysMenu.getIcon());
+			State state = new State();
+			state.setOpened(true);
+			j.setState(state);
+			j.setChildren(GetSysMenuList(j.getId(),menuList));    //递归
+			treeList.add(j);
+		}
+		StringBuilder sb = new StringBuilder();
+		sb.append("{'id':'root','text':'页面权限','state':{'opened':true},'icon':'fa fa-bars','children':[");
+		SetMenu(sb,treeList);        //生成json菜单
+		sb.append("]}");
+		return sb.toString();	
+	}
+	
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	private List<JsTree> GetSysMenuList(int parentId, List<SysMenu> menuList) {
+		List<JsTree> list = new ArrayList<JsTree>();
+		List<SysMenu> menuList2= new ArrayList<SysMenu>();
+		for (SysMenu sysMenu2 : menuList) {
+			if(sysMenu2.getParentid() == parentId){
+				menuList2.add(sysMenu2);
+			}
+		}
+		for (SysMenu sysMenu : menuList2) {
+			JsTree j = new JsTree();
+			j.setId(sysMenu.getMenuid());
+			j.setText(sysMenu.getMenucnname());
+			j.setIcon(sysMenu.getIcon());
+			State state = new State();
+			state.setOpened(true);
+			j.setState(state);
+			j.setChildren(GetSysMenuList(j.getId(), menuList));
+			list.add(j);
+		}
+		return list;
+	}
+	
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	private List<JsTree> GetSysMenuList2(int parentId, List<SysMenu> menuList) {
+		List<JsTree> list = new ArrayList<JsTree>();
+		List<SysMenu> menuList2= new ArrayList<SysMenu>();
+		for (SysMenu sysMenu2 : menuList) {
+			if(sysMenu2.getParentid() == parentId){
+				menuList2.add(sysMenu2);
+			}
+		}
+		for (SysMenu sysMenu : menuList2) {
+			JsTree j = new JsTree();
+			j.setId(sysMenu.getMenuid());
+			j.setText(sysMenu.getMenucnname());
+			j.setIcon(sysMenu.getIcon());
+			State state = new State();
+			state.setOpened(true);
+			j.setState(state);
+			List<JsTree> child = GetSysMenuList2(j.getId(), menuList);
+			if(sysMenu.getLevel() == 2) {
+				if(child.isEmpty())
+					continue;
+			}
+			if(sysMenu.getLevel() == 3 && ( "page".equalsIgnoreCase(sysMenu.getMenutype()) 
+					|| "group".equalsIgnoreCase(sysMenu.getMenutype())  )) {
+				if(child.isEmpty())
+					continue;
+			}
+			j.setChildren(child);
+			list.add(j);
+		}
+		return list;
+	}
+	
+
+	/**
+	 * 生成json的菜单
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	private String SetMenu(StringBuilder sb, List<JsTree> treeList) {
+		int num = 0;
+		for (JsTree tree : treeList) {
+			if(num != 0){
+				sb.append(",");
+			}
+			sb.append("{'id':" + tree.getId() +",'text':'" + tree.getText()+ "','state':{'opened':true,'selected':false},'icon':'" + (tree.getIcon() == null ? "none" : tree.getIcon()) + "'");
+					if(tree.getChildren().size() > 0){
+						sb.append(",'children':[");
+						SetMenu(sb,tree.getChildren());
+						sb.append("]");
+					}
+			sb.append("}");
+			num++;
+		}
+		return sb.toString();
+	}
+
+	
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	public String getButtonDataJson(){
+		SysMenu bloBs = new SysMenu();
+		List<SysMenu> menuList = sysMenuService.selectMenus(bloBs);
+		List<SysMenu> menuList2 = sysMenuService.selectFirstMenu();
+		List<JsTree> treeList = new ArrayList<JsTree>();
+
+		for (SysMenu sysMenu : menuList2) {
+			JsTree j = new JsTree();
+			j.setId(sysMenu.getMenuid());
+			j.setText(sysMenu.getMenucnname());
+			j.setIcon(sysMenu.getIcon());
+			State state = new State();
+			state.setOpened(true);
+			j.setState(state);
+			List<JsTree> child = GetSysMenuList2(j.getId(), menuList);
+			if(child.isEmpty())
+				continue;
+			j.setChildren(child);
+			treeList.add(j);
+		}
+		StringBuilder sb = new StringBuilder();
+		sb.append("{'id':'root','text':'权限按钮事件','state':{'opened':true},'icon':'fa fa-bars','children':[");
+		SetMenu(sb, treeList);
+		sb.append("]}");
+		return sb.toString();
+	}
+	
+	/**
+	 * 添加角色所选择菜单
+	 */
+	@RequestMapping(value="addRoleRelevancePer")
+	@Transactional(value="txManager")
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	public Map<String, Object> addRoleRelevancePer(HttpServletRequest request, @RequestParam("roleId") Integer roleId){
+		Map<String, Object> map = new HashMap<String, Object>();
+		//角色 需要设置的菜单
+		String menuIDS = request.getParameter("menuIDS");
+		//当前角色已有的 菜单
+		List<SysMenu> menuList = sysRoleService.selectMenusByRoleId(roleId);
+		
+		List<String> addList = this.getAddMenuIdList(menuIDS, menuList);
+		List<String> delList = this.getDeletedMenuIdList(menuIDS, menuList);
+		
+		delPageMenu(delList, roleId, map);
+		addPageMenu(addList, roleId, map);
+		
+		//更新初始化的map
+		reloadRoleAndMenu();
+		map.put("success", true);
+		return map;
+	}
+	/**
+	 * 添加角色子菜单关系 
+	 * @param menuIdList
+	 * @param roleId
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	private void addPageMenu(List<String> menuIdList, Integer roleId, Map<String, Object> map){
+		List<String> checkedList = new ArrayList<String>();
+		List<String> idList = new ArrayList<String>();  //所有要插入 数据的menuId的值, 并且不能重复
+		idList.addAll(menuIdList);
+		for(String menuId : menuIdList) {
+			this.completeIdList(menuId, idList, checkedList);
+		
+		}
+		for(String menuId : idList) {
+			sysRoleService.addRoleRelevancePer(roleId, Integer.valueOf(menuId));
+		}
+		map.put("checked", checkedList);
+	}
+	
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	private void completeIdList(String menuId, List<String> idList, List<String> checkedList){
+		List<SysMenu> childList = sysRoleService.selectChildMenusByPageMenuId(Integer.valueOf(menuId));
+		if(!childList.isEmpty()){
+			for(SysMenu menu : childList){
+				if(!"page".equalsIgnoreCase(menu.getMenutype()) && !"group".equalsIgnoreCase(menu.getMenutype())) {
+					if(!idList.contains(menu.getMenuid().toString())) {
+						idList.add(menu.getMenuid().toString());
+						checkedList.add(menu.getMenuid().toString());
+					}	
+				}
+//				completeIdList(menu.getMenuid().toString(), idList, checkedList);
+			}
+		}
+	}
+	
+	/**
+	 * 删除 角色菜单关系 
+	 * 删除 一级或二级节点,并删除 
+	 * @param menuIdList
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	private void delPageMenu(List<String> menuIdList, Integer roleId, Map<String, Object> map) {
+		//子菜单也要删除
+		List<String> uncheckedList = new ArrayList<String>();
+		
+		List<String> idList = new ArrayList<String>();  //所有要插入 数据的menuId的值, 并且不能重复
+		idList.addAll(menuIdList);
+		for(String menuId : menuIdList) {
+			this.completeIdList(menuId, idList, uncheckedList);
+		
+		}
+		
+		for(String menuId : idList) {
+			sysRoleService.deletePerPageByRoleIdAndMenuId(Integer.valueOf(menuId), roleId);
+		}
+		map.put("unchecked", uncheckedList);
+	}
+	
+	
+	//数据里存在,则不需要增加
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	private List<String> getAddMenuIdList(String menudIds, List<SysMenu> menuList){
+		List<String> addList = new ArrayList<String>();
+		String[] menus = menudIds.split(",");
+		for(String menuId : menus) {
+			boolean flag = false;
+			if(org.apache.commons.lang.StringUtils.isNotBlank(menuId)) {
+				for( int i = 0; i < menuList.size() ; i++ ){
+					SysMenu menu = menuList.get(i);
+					if(menuId.equals(menu.getMenuid().toString())) {
+						flag = true;//存在 数据库里,表示不需要 增加
+						break;
+					}
+				}
+				if(!flag)
+					addList.add(menuId);
+			}
+		}
+		return addList;
+	}
+	
+	//得到需要 删除的 
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	private List<String> getDeletedMenuIdList(String menudIds, List<SysMenu> menuList){
+		List<String> delList = new ArrayList<String>();
+		String[] menus = menudIds.split(",");
+		for(SysMenu menu : menuList) {
+			boolean flag = false;
+			String menuId = menu.getMenuid().toString();
+			for(int i = 0; i < menus.length; i++) {
+				if(menuId.equals(menus[i])) {
+					flag = true;  //数据里 存在 要插入的,则不必删除 
+					break;
+				}
+			}
+			if(!flag) 
+				delList.add(menu.getMenuid().toString());
+		}
+		return delList;
+	}
+	
+	/**
+	 * 当用户 超级管理员 修改 菜单时, 需要 同步 到map中
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	public void reloadRoleAndMenu(){
+		//清空所有的菜单和角色
+		Iterator<Entry<String, List<SysMenu>>> it = SpringInitConfig.menuMap.entrySet().iterator();  
+        while(it.hasNext()){  
+           it.next();  
+           it.remove();
+        }  
+        
+        List<SysRole> roleList = sysRoleService.selectRoleAndMenuList();
+		if( !roleList.isEmpty() ) {
+			for(SysRole role : roleList) {
+				SpringInitConfig.roleMap.put(role.getRoleId().toString(), role);
+				SpringInitConfig.menuMap.put(role.getRoleId().toString(), role.getMenuList());
+			}
+			
+		}
+		//下面代码 可以 注释
+		for(String key : SpringInitConfig.menuMap.keySet() ){
+			System.out.println( "==================================================" );
+			SysRole role = SpringInitConfig.roleMap.get(key);
+			System.out.print( "角色 :"+ role.getRoleName()  +" 菜单>>>");
+			List<SysMenu> menuList = SpringInitConfig.menuMap.get(key);
+			if(!menuList.isEmpty()) {
+				for(SysMenu menu : menuList) {
+					System.out.println(  menu.getMenucnname() );
+				}
+			}
+		}
+        
+	}
+	
+	
+	/**
+	 * 添加角色所选择按钮
+	 */
+	@RequestMapping(value="addButtonPerByRole")
+	@Transactional(value="txManager")
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	public Map<String, Object> addButtonPerByRole(HttpServletRequest request, @RequestParam("roleId") Integer roleId){
+		Map<String, Object> map = new HashMap<String, Object>();
+		//角色 需要设置的菜单
+		String menuIDS = request.getParameter("menuIDS");
+		//当前角色已有的 菜单 (查  大于 2级的菜单)
+		List<SysMenu> menuList = sysRoleService.selectMenusLevelLT2ByRoleId(roleId);
+		
+		List<String> addList = this.getAddMenuIdList(menuIDS, menuList);
+		List<String> delList = this.getDeletedMenuIdList(menuIDS, menuList);
+		
+		delButtonMenu(delList, roleId);
+		addButtonMenu(addList, roleId, map);
+		
+		//更新初始化的map
+		reloadRoleAndMenu();
+		map.put("success", true);
+		return map;
+	}
+	
+	/**
+	 * 添加 角色菜单  三级 菜单 ,先判断父菜单 是否存在, 若不存在,则新增 父菜单
+	 * @param menuIdList
+	 * @param roleId
+	 * @param map
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	private void addButtonMenu(List<String> menuIdList, Integer roleId, Map<String, Object> map){
+		List<String> checked = new ArrayList<String>();
+		for(String menuId : menuIdList) {
+			SysMenu menu = sysMenuService.selectByMenuId(Integer.valueOf(menuId));
+			if(menu.getLevel() > 2) {
+				Integer parentId = menu.getParentid();
+				if(parentId != null) {
+					Integer count = sysRoleService.selectReByMenuIdAndRoleId(parentId, roleId);
+					if(count == 0) {
+						//添加 父菜单
+						sysRoleService.addRoleRelevancePer(roleId, parentId);
+						checked.add(parentId.toString());
+					}
+				}
+				sysRoleService.addRoleRelevancePer(roleId, Integer.valueOf(menuId));
+			} 
+		}
+		map.put("checked", checked);
+	}
+	
+	
+	/**
+	 * 删除  角色菜单  三级菜单(大于二级)
+	 * @param menuIdList
+	 * @param roleId
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	private void delButtonMenu(List<String> menuIdList, Integer roleId) {
+		for(String menuId : menuIdList) {
+			SysMenu menu = sysMenuService.selectByMenuId(Integer.valueOf(menuId));
+			if(menu.getLevel() > 2) {
+				//直接删除
+				sysRoleService.deletePerPageByRoleIdAndMenuId(Integer.valueOf(menuId), roleId);
+			} 
+		}
+	}
+	
+	
+	/**
+	 * 查询角色已关联用户
+	 */					  
+	@RequestMapping(value="selectUserByRoleId")
+	@ResponseBody
+	@RoleLimit(pid = "sysRole", mid = "selectUserByRoleId")
+	public ModelAndView selectUserByRoleId(HttpServletRequest request,Integer pageNo,Integer pageSizeSelect){
+		ModelAndView mv = new ModelAndView("sysrole/roleUser");
+		String parameter = request.getParameter("RoleID");
+		mv.addObject("roleId", parameter);
+		return mv;
+	}
+	
+	@RequestMapping(value="loadRoleUsers")
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	public String loadRoleUsers(HttpServletRequest request,Integer pageNo,Integer pageSizeSelect, Model model){
+		String parameter = request.getParameter("RoleID");
+		String userName = request.getParameter("UserName");
+		String employeeNo = request.getParameter("EmployeeNo");
+		SysUser sysUser = new SysUser();
+		sysUser.setUsername(userName);
+		sysUser.setEmployeeno(employeeNo);
+		if(StringUtils.isNotBlank(parameter)){
+			Integer roleId = Integer.valueOf(parameter);
+			PagedResult<SysUser> pagedResult = sysRoleService.selectUserByRoleId(roleId,pageNo,pageSizeSelect,userName,employeeNo);
+			if(pagedResult != null){
+			    Helper.countStartPageAndEndPage(pagedResult);
+			    model.addAttribute("list", pagedResult);
+			}
+		}
+		return "sysrole/user_list";
+	}
+	
+	/**
+	 * 删除角色关联的用户
+	 */					  
+	@RequestMapping(value="deleteUserByRole")
+	@ResponseBody
+	@Transactional(value="txManager")
+	@RoleLimit(pid = "sysRole", mid = "deleteUserByRole")
+	public Integer deleteUserByRole(HttpServletRequest request){
+		String roleID = request.getParameter("roleId");
+		String userID = request.getParameter("userId");
+		Integer data = 0;
+		if(StringUtils.isNotBlank(roleID) && StringUtils.isNotBlank(userID)){
+			Integer roleId = Integer.valueOf(roleID);
+			Integer userId = Integer.valueOf(userID);
+				data = sysRoleService.deleteUserByRole(roleId,userId);
+		}
+		return data;
+	}
+}

+ 289 - 0
src/main/java/com/ssm/controller/system/SysUserController.java

@@ -0,0 +1,289 @@
+package com.ssm.controller.system;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.DataBinder;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.InitBinder;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.ssm.model.system.SysDepartment;
+import com.ssm.model.system.SysRole;
+import com.ssm.model.system.SysUser;
+import com.ssm.model.validator.UserCreateValidator;
+import com.ssm.service.system.SysDepartmentService;
+import com.ssm.service.system.SysRoleService;
+import com.ssm.service.system.SysUserService;
+import com.ssm.util.Util;
+import com.ssm.util.page.PagedResult;
+import com.ssm.web.Const;
+import com.ssm.web.RoleLimit;
+
+/**
+ * 用户管理 Controller
+ * @author xk
+ */
+@RequestMapping("sysUser")
+@Controller
+public class SysUserController {
+	
+	@Autowired
+	private SysUserService sysUserService;
+	
+	@Autowired
+	private SysDepartmentService sysDepartmentService;
+	
+	@Autowired
+	private SysRoleService sysRoleService;
+	
+	/**
+	 * SysUserExample 为模糊匹配条件
+	 * 内容根据 condition 来 设置, 分页必须 设置 order by 
+	 * 查询 用户 列表 
+	 * 分页查询
+	 * @return
+	 */
+	@RoleLimit(pid = "sysUser", mid = "userList")
+	@RequestMapping(value="userList")
+	public String userList(HttpSession session, Model model,  SysUser condition, 
+			Integer pageNo, Integer pageSize){
+//		PagedResult<SysUser> pageResult = sysUserService.findAllByContidion(
+//				condition != null ? condition.getUsername() : null,
+//				condition != null ? condition.getEmployeeno() : null, pageNo, 2);
+//		model.addAttribute("list", pageResult);
+//		model.addAttribute("condition", condition);
+		List<SysRole> roleList = sysRoleService.selectRoleAndMenuList();
+		model.addAttribute("roleList", roleList);
+		return "sysuser/userList";
+	}
+	
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@RequestMapping(value="initDataList")
+	public String initDataList(Model model,  SysUser condition, Integer pageNo, Integer pageSize){
+		PagedResult<SysUser> pageResult = sysUserService.findAllByContidion(
+		condition != null ? condition.getUsername() : null,
+		condition != null ? condition.getEmployeeno() : null, pageNo, 10);
+		model.addAttribute("list", pageResult);
+		model.addAttribute("condition", condition);
+		return "sysuser/dataList";
+	}
+	
+	/**
+	 * 添加用户和编辑用户 表单验证
+	 */
+	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
+	@InitBinder("user")
+	public void InitBinder(DataBinder binder){
+		binder.setValidator(new UserCreateValidator());
+	}
+	
+	/**
+	 * 进入用户添加 页面
+	 * @param model
+	 * @return
+	 */
+	@RoleLimit(pid = "sysUser", mid = "userAdd")
+	@RequestMapping(value="userAdd", method=RequestMethod.GET)
+	public String userAdd(Model model){
+		if(!model.containsAttribute("user"))
+			model.addAttribute("user", new SysUser());
+		//查询所有的部门
+		List<SysDepartment> depList = sysDepartmentService.findAll();
+		model.addAttribute("depList", depList);
+		if(!depList.isEmpty())
+			model.addAttribute("firstDep", depList.get(0).getDepid());
+		return "sysuser/userAdd";
+	}
+	
+	/**
+	 * 添加用户
+	 * @return
+	 */
+	@RoleLimit(pid = "sysUser", mid = "userAdd")
+	@Transactional(value="txManager")
+	@RequestMapping(value="userAdd", method=RequestMethod.POST)
+	public String userAdd(HttpServletRequest request, HttpSession session, Model model, 
+			@Validated @ModelAttribute("user") SysUser user, 
+			BindingResult result){
+		if(result.hasErrors())
+			return userAdd(model);
+		String employeeno = user.getEmployeeno();
+		SysUser isExistsUser = sysUserService.findByEmployeeno(employeeno);
+		if(isExistsUser != null) {
+			result.addError(new FieldError("user", "employeeno", "员工 "+employeeno+" 已存在"));
+			return userAdd(model);
+		}
+		user.setIsdeleted(false);// 新增的用户,默认 没有被删除
+		SysUser operator = Util.getUserSession(request);
+		user.setCreateduserid(operator != null ? operator.getUserid() : null);
+		user.setCreateddatetime(new Date());
+		sysUserService.insertSelective(user);
+		return "redirect:/sysUser/userList";
+	}
+	
+	/**
+	 * 进入编辑用户 页面
+	 * @param model
+	 * @param userId
+	 * @return
+	 */
+	@RoleLimit(pid = "sysUser", mid = "userEdit")
+	@RequestMapping(value="userEdit", method=RequestMethod.GET)
+	public String userEdit(Model model, @RequestParam("userId") Integer userId){
+		SysUser user = sysUserService.findById(userId);
+		if(!model.containsAttribute("user"))
+			model.addAttribute("user", user != null ? user : new SysUser());
+		//查询所有的部门
+		List<SysDepartment> depList = sysDepartmentService.findAll();
+		model.addAttribute("depList", depList);
+		//默认选择的部门
+		if(user != null)
+			model.addAttribute("firstDep", user.getSysDepartment().getDepid());
+		return "sysuser/userEdit";
+	}
+	
+	/**
+	 * 用户编辑 保存
+	 * @param session
+	 * @param model
+	 * @param user
+	 * @param result
+	 * @return
+	 */
+	@RoleLimit(pid = "sysUser", mid = "userEdit")
+	@Transactional(value="txManager")
+	@RequestMapping(value="userEdit", method=RequestMethod.POST)
+	public String userEdit(HttpServletRequest request, HttpSession session, Model model, 
+			@Validated @ModelAttribute("user") SysUser user, 
+			BindingResult result){
+		if(result.hasErrors())
+			return userEdit(model, user.getUserid());
+		SysUser operator = Util.getUserSession(request);
+		user.setLastupdateuserid(operator.getUserid());
+		user.setLastupdatedatetime(new Date());
+		sysUserService.updateByPrimaryKeySelective(user);
+		return "redirect:/sysUser/userList";
+	}
+	
+	/**
+	 * 查询 用户 拥有的角色 并 回显到页面
+	 * @return
+	 */
+	@RoleLimit(pid = "sysUser", mid = "findUserRole")
+	@RequestMapping(value="findUserRole", method=RequestMethod.POST)
+	public Map<String, Object> findUserRoleByUserId(@RequestParam("userId") Integer userId){
+		Map<String, Object> record = new HashMap<String, Object>();
+		record.put("success", true);
+		List<SysRole> roleList = sysRoleService.findUserRoleByUserId(userId);
+		record.put("roleList", roleList);
+		return record;
+	}
+	
+	
+	/**
+	 * 更新 用户的状态, 是否有效还是无效
+	 * 修改数据库 需要 添加 事物 控制
+	 * userStatus 用于 通知 页面 改变 "状态" 样式 
+	 * @param userId
+	 * @return
+	 */
+	@RoleLimit(pid = "sysUser", mid = "updateUserEnable")
+	@Transactional(value="txManager")
+	@RequestMapping(value="updateUserEnable", method=RequestMethod.POST)
+	public Map<String, Object> updateUserEnable(@RequestParam("userId") Integer userId){
+		Map<String, Object> record = new HashMap<String, Object>();
+		record.put("success", true);
+		//查询用户
+		SysUser user = sysUserService.findById(userId);
+		if(user != null) {
+			if(user.getIsenabled()) { 
+				user.setIsenabled(false);
+				record.put("userStatus", false);
+			} else {
+				user.setIsenabled(true);
+				record.put("userStatus", true);
+			}
+			int count = sysUserService.updateByPrimaryKey(user);
+			if(count <= 0)
+				record.put("success", false);
+		} else {
+			//不存在
+			record.put("success", false);
+		}
+		return record;
+	}
+	
+	/**
+	 * 用户 更新角色
+	 * 先删除,后添加
+	 * @return
+	 */
+	@RoleLimit(pid = "sysUser", mid = "updateUserRole")
+	@Transactional(value="txManager")
+	@RequestMapping(value="updateUserRole", method=RequestMethod.POST)
+	public Map<String, Object> updateUserRole(@RequestParam("userId") Integer userId, @RequestParam("roleIds") String roleIds){
+		Map<String, Object> record = new HashMap<String, Object>();
+		record.put("success", true);
+		sysUserService.deleteUserRole(userId);
+		if(StringUtils.isNotBlank(roleIds)){
+			String[] roles = roleIds.split(",");
+			for(String roleId : roles){
+				sysUserService.insertUserRole(userId, Integer.valueOf(roleId));
+			}
+		}
+		return record;
+	}
+	
+	
+	/**
+	 * 重置用户密码, 密码在const 里配置 ,默认为dgt.0000
+	 * 修改数据库 需要 添加 事物 控制
+	 * @param userId
+	 * @return
+	 */
+	@RoleLimit(pid = "sysUser", mid = "resetUserPw")
+	@Transactional(value="txManager")
+	@RequestMapping(value="resetUserPw", method=RequestMethod.POST)
+	public Map<String, Object> resetUserPw(@RequestParam("userId") Integer userId){
+		Map<String, Object> record = new HashMap<String, Object>();
+		record.put("success", true);
+		//查询用户
+		SysUser user = sysUserService.findById(userId);
+		if(user != null) {
+			user.setPassword(Const.DEFAULT_USER_PASSWORD);
+			int count = sysUserService.updateByPrimaryKey(user);
+			if(count <= 0)
+				record.put("success", false);
+		} else {
+			//不存在
+			record.put("success", false);
+		}
+		return record;
+	}
+	
+	@RoleLimit(pid = "sysUser", mid = "deleteUser")
+	@Transactional(value="txManager")
+	@RequestMapping(value="deleteUser", method=RequestMethod.POST)
+	public Map<String, Object> deleteUser(@RequestParam("userId") Integer userId){
+		Map<String, Object> record = new HashMap<String, Object>();
+		record.put("success", true);
+		sysUserService.deleteUser(userId);
+		return record;
+	}
+	
+}

+ 50 - 0
src/main/java/com/ssm/interceptor/LoginInterceptor.java

@@ -0,0 +1,50 @@
+package com.ssm.interceptor;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.stereotype.Component;
+import org.springframework.web.method.HandlerMethod;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import com.ssm.common.SessionTimeOutException;
+import com.ssm.model.system.SysUser;
+import com.ssm.util.Util;
+import com.ssm.web.WithoutUserLogin;
+
+/**
+ * 对有所有com.ssm包下的controller 进行拦截,当session中不存在 SysUser
+ * 拦截进入 session-timeout页面
+ * @author Administrator
+ *
+ */
+@Component
+public class LoginInterceptor extends HandlerInterceptorAdapter{
+
+	@Override
+	public boolean preHandle(HttpServletRequest request,
+			HttpServletResponse response, Object handler) throws Exception {
+		
+		HandlerMethod method = (HandlerMethod)handler;
+		if(method.getMethod().isAnnotationPresent(WithoutUserLogin.class))
+			return true;
+		
+		SysUser sysUser = Util.getUserSession(request);
+		if(sysUser == null){
+			throw new SessionTimeOutException("session 超时");
+		}
+		else 
+			return true;
+		
+		/*HttpSession session = request.getSession();
+		if(session != null){
+			SysUser sysUser = (SysUser) session.getAttribute(Const.USER_SESSION_KEY);
+			if(sysUser == null)
+				throw new SessionTimeOutException("session 超时");
+			else 
+				return true;
+		} */
+	}
+	
+	
+}

+ 123 - 0
src/main/java/com/ssm/interceptor/MenuInterceptor.java

@@ -0,0 +1,123 @@
+package com.ssm.interceptor;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.method.HandlerMethod;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import com.ssm.common.SpringInitConfig;
+import com.ssm.model.system.SysMenu;
+import com.ssm.model.system.SysRole;
+import com.ssm.model.system.SysUser;
+import com.ssm.service.system.SysMenuService;
+import com.ssm.service.system.SysRoleService;
+import com.ssm.util.PackageBeanUtils;
+import com.ssm.util.Util;
+import com.ssm.web.WithoutUserLogin;
+
+
+@Component
+public class MenuInterceptor extends HandlerInterceptorAdapter {
+
+	@Autowired
+	private SysMenuService menuService;
+	@Autowired
+	private SysRoleService sysRoleService;
+	@SuppressWarnings("unchecked")
+	@Override
+	public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {
+		
+		HandlerMethod method = (HandlerMethod)handler;
+		if(method.getMethod().isAnnotationPresent(WithoutUserLogin.class))
+			return true;
+		
+		HttpServletRequest hreq = request;
+		HttpSession session = hreq.getSession();
+		
+		String url = hreq.getRequestURI();
+        String url2 = url.substring(url.lastIndexOf("/") + 1, url.lastIndexOf("?") == -1 ? url.length() : url.lastIndexOf("?"));
+        
+        //UserModel userModel = SSOHelper.getUser(request);
+        //System.out.println("UserModel:"+userModel.toString());
+        //sysUserService.findByEmployeeno(userModel.getLoginName());
+        
+        SysUser sysUser = Util.getUserSession(request);
+        List<SysRole> roles = null;
+        if(sysUser != null){
+        	//绑定 用户的角色
+        	roles = (List<SysRole>) session.getAttribute(sysUser.getUserid().toString());
+        	if(roles == null){
+        		roles = sysRoleService.findUserRoleByUserId(sysUser.getUserid());
+				session.setAttribute(sysUser.getUserid().toString(), roles);
+        	}
+        } else {
+        	roles = new ArrayList<SysRole>();
+        }
+		
+        
+        //SysUser sysUser = (SysUser) session.getAttribute(Const.USER_SESSION_KEY);
+        List<SysMenu> menuList = new ArrayList<SysMenu>();
+        for(SysRole role : roles) {
+        	//角色和菜单的  映射关系
+        	List<SysMenu> r_m_list = (List<SysMenu>) SpringInitConfig.menuMap.get(role.getRoleId().toString()); 
+        	menuList.addAll(r_m_list.isEmpty() ? new ArrayList<SysMenu>() : r_m_list); //包含 重复值
+        }
+        
+        //去除 重复 项
+        List<SysMenu> finalMenuList = new ArrayList<SysMenu>();
+        for(SysMenu menu : menuList) {
+        	if(finalMenuList.contains(menu))
+        		continue;
+        	else
+        		finalMenuList.add(menu);
+        }
+        
+        //排序
+        Collections.sort(finalMenuList, new Comparator<SysMenu>() {
+			@Override
+			public int compare(SysMenu o1, SysMenu o2) {
+				return Integer.valueOf(o1.getOrderby())- Integer.valueOf(o2.getOrderby());
+			}
+		});
+        
+        //组成 父子 结构的菜单 
+        List<SysMenu> lstRoot = new ArrayList<SysMenu>();
+        if(!finalMenuList.isEmpty()){
+			for (SysMenu sysMenuWithBLOBs : finalMenuList) {
+				if(sysMenuWithBLOBs.getLevel() == 1){
+					lstRoot.add(sysMenuWithBLOBs);
+				}
+				
+			}
+			if(!lstRoot.isEmpty()){
+				for (int i = 0; i < lstRoot.size(); i++) {
+					PackageBeanUtils.packageChildSysmenus(lstRoot.get(i) , finalMenuList);
+				}
+			}
+        }
+        
+		/**
+		 * 用户的所有权限菜单
+		 */
+//		session.setAttribute("ValidateMenus",finalMenuList);
+		menuService.setCurrentMenu(lstRoot, url2);
+		session.setAttribute("menu", lstRoot);
+//        if(session.getAttribute(sysUser.getUserid().toString()) != null){
+//        	//session.setAttribute("menu", menuService.getMenuList(session,sysUser));
+//        } else {
+//        	ctx.setAttribute(sysUser.getUserid().toString(), menuService.getMenuList(session,sysUser));
+//        }
+        
+		return true;
+		
+	}
+}

+ 23 - 0
src/main/java/com/ssm/mapper/business/SmsRecordMapper.java

@@ -0,0 +1,23 @@
+package com.ssm.mapper.business;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.ssm.model.business.SmsRecord;
+
+public interface SmsRecordMapper {
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(SmsRecord record);
+
+    int insertSelective(SmsRecord record);
+
+    SmsRecord selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(SmsRecord record);
+
+    int updateByPrimaryKey(SmsRecord record);
+
+	List<SmsRecord> selectSmsRecord(@Param("smsRecord") SmsRecord smsRecord);
+}

+ 17 - 0
src/main/java/com/ssm/mapper/business/SmsSendStateMapper.java

@@ -0,0 +1,17 @@
+package com.ssm.mapper.business;
+
+import com.ssm.model.business.SmsSendState;
+
+public interface SmsSendStateMapper {
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(SmsSendState record);
+
+    int insertSelective(SmsSendState record);
+
+    SmsSendState selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(SmsSendState record);
+
+    int updateByPrimaryKey(SmsSendState record);
+}

+ 23 - 0
src/main/java/com/ssm/mapper/business/SmsUpMessageMapper.java

@@ -0,0 +1,23 @@
+package com.ssm.mapper.business;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.ssm.model.business.SmsUpMessage;
+
+public interface SmsUpMessageMapper {
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(SmsUpMessage record);
+
+    int insertSelective(SmsUpMessage record);
+
+    SmsUpMessage selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(SmsUpMessage record);
+
+    int updateByPrimaryKeyWithBLOBs(SmsUpMessage record);
+
+	List<SmsUpMessage> selectsmsUpMessage(@Param("smsUpMessage") SmsUpMessage smsUpMessage);
+}

+ 26 - 0
src/main/java/com/ssm/mapper/business/SmsUserMapper.java

@@ -0,0 +1,26 @@
+package com.ssm.mapper.business;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.ssm.model.business.SmsUser;
+
+public interface SmsUserMapper {
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(SmsUser record);
+
+    int insertSelective(SmsUser record);
+
+    SmsUser selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(SmsUser record);
+
+    int updateByPrimaryKey(SmsUser record);
+
+	List<SmsUser> selectSmsUser(@Param("smsUser") SmsUser smsUser);
+
+	int selectSmsUserCountByPhoen(@Param("phoen") String phoen);
+
+}

+ 56 - 0
src/main/java/com/ssm/mapper/system/SysDepartmentMapper.java

@@ -0,0 +1,56 @@
+package com.ssm.mapper.system;
+
+import com.ssm.model.system.SysDepartment;
+import com.ssm.model.system.SysDepartmentExample;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+public interface SysDepartmentMapper {
+    int countByExample(SysDepartmentExample example);
+
+    int deleteByExample(SysDepartmentExample example);
+
+    int deleteByPrimaryKey(Integer depid);
+
+    int insert(SysDepartment record);
+
+    int insertSelective(SysDepartment record);
+
+    List<SysDepartment> selectByExampleWithBLOBs(SysDepartmentExample example);
+
+    List<SysDepartment> selectByExample(SysDepartmentExample example);
+    
+    List<SysDepartment> selectAll();
+
+    SysDepartment selectByPrimaryKey(Integer depid);
+
+    int updateByExampleSelective(@Param("record") SysDepartment record, @Param("example") SysDepartmentExample example);
+
+    int updateByExampleWithBLOBs(@Param("record") SysDepartment record, @Param("example") SysDepartmentExample example);
+
+    int updateByExample(@Param("record") SysDepartment record, @Param("example") SysDepartmentExample example);
+
+    int updateByPrimaryKeySelective(SysDepartment record);
+
+    int updateByPrimaryKeyWithBLOBs(SysDepartment record);
+
+    int updateByPrimaryKey(SysDepartment record);
+    
+    /**
+	 * 查询所有部门
+	 * */
+	public List<SysDepartment> sysDepartmentList();
+	
+	/**
+	 * 分页查询
+	 * */
+	public List<SysDepartment> sysDepartmentQuery(SysDepartment sysDepartment);
+	
+	public SysDepartment sysDepartmentParentid(@Param("parentid") Integer parentid);
+	
+	public Integer selectParentid(Integer parentid);
+	
+	public Integer selectMaxParentid(Integer parentid);
+}

+ 33 - 0
src/main/java/com/ssm/mapper/system/SysDictionaryMapper.java

@@ -0,0 +1,33 @@
+package com.ssm.mapper.system;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.ssm.model.system.SysDictionary;
+
+public interface SysDictionaryMapper {
+    int deleteByPrimaryKey(Integer dictid);
+
+    int insert(SysDictionary record);
+
+    int insertSelective(SysDictionary record);
+
+    SysDictionary selectByPrimaryKey(Integer dictid);
+
+    int updateByPrimaryKeySelective(SysDictionary record);
+
+    int updateByPrimaryKey(SysDictionary record);
+    
+    List<SysDictionary> selectByNamespace(@Param("namespace") String namespace);
+    
+    List<SysDictionary> selectByEnabledNamespace(@Param("namespace") String namespace);
+    
+    List<SysDictionary> selectConstCategory();
+    
+    List<SysDictionary> selectByCondition(SysDictionary record);
+    
+    List<SysDictionary> selectByCondition2(SysDictionary record);
+    
+    SysDictionary selectByNamespaceAndValue(@Param("namespace") String namespace, @Param("value") String value);
+}

+ 14 - 0
src/main/java/com/ssm/mapper/system/SysLogMapper.java

@@ -0,0 +1,14 @@
+package com.ssm.mapper.system;
+
+import java.util.List;
+
+import com.ssm.model.system.SysLog;
+
+public interface SysLogMapper {
+
+	int insert(SysLog record);
+	
+	public List<SysLog> selectlog(SysLog sysLog);
+	
+	public SysLog selectById(int id);
+}

+ 106 - 0
src/main/java/com/ssm/mapper/system/SysMenuMapper.java

@@ -0,0 +1,106 @@
+package com.ssm.mapper.system;
+
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.ssm.model.system.SysMenu;
+import com.ssm.model.system.SysMenuExample;
+
+public interface SysMenuMapper {
+    int countByExample(SysMenuExample example);
+
+    int deleteByExample(SysMenuExample example);
+
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(SysMenu record);
+
+    int insertSelective(SysMenu record);
+
+    List<SysMenu> selectByExampleWithBLOBs(SysMenuExample example);
+
+    SysMenu selectByPrimaryKey(Integer menuid);
+
+    int updateByExampleSelective(@Param("record") SysMenu record, @Param("example") SysMenuExample example);
+
+    int updateByExampleWithBLOBs(@Param("record") SysMenu record, @Param("example") SysMenuExample example);
+
+    int updateByExample(@Param("record") SysMenu record, @Param("example") SysMenuExample example);
+
+    int updateByPrimaryKeySelective(SysMenu record);
+
+    int updateByPrimaryKeyWithBLOBs(SysMenu record);
+
+	List<SysMenu> selectSysMenuWithBLOBsByPid(@Param("parentid")Integer parentid);
+
+	List<SysMenu> selectBySysMenuWithBLOBs(SysMenu menu);
+
+	Integer selectCountByParentid(@Param("parentid")Integer parentid);
+
+	Integer selectMaxmenuIdByParentid(@Param("parentid")Integer parentid);
+
+	List<SysMenu> selectAllpageMenus();
+
+	SysMenu selectByMenuId(Integer menuid);
+
+	List<SysMenu> selectFirstMenu();
+
+	List<SysMenu> selectFirstMenuByParentId(int parentId);
+
+
+	List<SysMenu> selectSysUserMenus(@Param("userid")Integer userid);
+
+	List<SysMenu> selectMenusByPage(SysMenu menu);
+
+	List<SysMenu> selectMenusByRoleId(Integer roleId);
+	
+	List<SysMenu> selectMenusLevelLT2ByRoleId(Integer roleId);
+
+	List<SysMenu> selectButtonByRoleId(@Param("roleId")Integer roleId);
+
+	List<SysMenu> selectPageMenusByRole(@Param("roleId")Integer roleId);
+
+	List<SysMenu> selectChildMenusByPageMenuId(@Param("menuId")Integer menuId);
+
+	List<SysMenu> selectButtonMenusByRole(@Param("roleId")Integer roleId);
+	
+	List<SysMenu> selectPageMenusByRoleId(@Param("roleId")Integer roleId);
+	
+	List<SysMenu> selectButtonMenusByRoleId(@Param("roleId")Integer roleId);
+
+	List<SysMenu> selectBySysMenuWithBLOBs2(SysMenu menu);
+	
+	Integer selectMaxOrder();
+	
+	Integer selectMaxOrderUnderParent(@Param("parentId") Integer parentId);
+	
+	Integer selectMaxOrderIdUnderParent(@Param("parentId") Integer parentId);
+	
+	int updateOrderBy(@Param("orderBy") Integer orderBy);
+	
+	int updateOrderByCount(@Param("addNum") Integer addNum, @Param("orderBy") Integer orderBy);
+	
+	Integer countSonMenu(@Param("menuId") Integer menuId);
+	
+	Integer selectPrevOrder(@Param("level") Integer level, @Param("orderBy")Integer orderBy, @Param("parentId")Integer parentId);
+	
+	SysMenu selectMenuByOrderAndParent(@Param("orderBy")Integer orderBy, @Param("parentId")Integer parentId);
+	
+	List<SysMenu> selectMenuByOrderBy(@Param("orderBy")Integer orderBy);
+	
+	Integer selectNextOrder(@Param("level") Integer level, @Param("orderBy")Integer orderBy, @Param("parentId")Integer parentId);
+	
+	Integer selectNextLevel(@Param("level") Integer level, @Param("orderBy")Integer orderBy);
+	
+	Integer countAdd(@Param("from") Integer from, @Param("to")Integer to);
+	
+	List<SysMenu> addOrderBy(@Param("to") Integer to, @Param("from")Integer from);
+	
+	List<SysMenu> deleteOrderBy(@Param("from") Integer from, @Param("next")Integer next);
+	
+	SysMenu selectMenuByUrl(@Param("url") String url);
+	
+	Integer selectReByMenuIdAndRoleId(@Param("menuId") Integer menuId, @Param("roleId") Integer roleId);
+}

+ 45 - 0
src/main/java/com/ssm/mapper/system/SysPositionMapper.java

@@ -0,0 +1,45 @@
+package com.ssm.mapper.system;
+
+import com.ssm.model.system.SysPosition;
+import com.ssm.model.system.SysPositionExample;
+
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface SysPositionMapper {
+    int countByExample(SysPositionExample example);
+
+    int deleteByExample(SysPositionExample example);
+
+    int deleteByPrimaryKey(Integer positionid);
+
+    int insert(SysPosition record);
+
+    int insertSelective(SysPosition record);
+
+    List<SysPosition> selectByExample(SysPositionExample example);
+
+    SysPosition selectByPrimaryKey(Integer positionid);
+
+    int updateByExampleSelective(@Param("record") SysPosition record, @Param("example") SysPositionExample example);
+
+    int updateByExample(@Param("record") SysPosition record, @Param("example") SysPositionExample example);
+
+    int updateByPrimaryKeySelective(SysPosition record);
+
+    int updateByPrimaryKey(SysPosition record);
+    
+    /**
+	 * 职位查询
+	 * */
+	//String positionname,String positioncode,String depname
+	public List<SysPosition> getPostionFind(SysPosition sysPosition);
+	/**
+	 * 删除职位
+	 * */
+	public void deleteSysPostion(Integer positionid);
+	
+	public Integer QuerySysPostionId(Integer depid);
+	
+	public List<SysPosition> selectAllPostion();
+}

+ 54 - 0
src/main/java/com/ssm/mapper/system/SysRoleMapper.java

@@ -0,0 +1,54 @@
+package com.ssm.mapper.system;
+
+import com.ssm.model.system.SysMenu;
+import com.ssm.model.system.SysRole;
+import com.ssm.model.system.SysRoleExample;
+import com.ssm.model.system.SysUser;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+public interface SysRoleMapper {
+    int countByExample(SysRoleExample example);
+
+    int deleteByExample(SysRoleExample example);
+
+    int deleteByPrimaryKey(Integer roleid);
+
+    int insert(SysRole record);
+
+    int insertSelective(SysRole record);
+
+    List<SysRole> selectByExample(SysRoleExample example);
+
+    SysRole selectByPrimaryKey(Integer roleid);
+
+    int updateByExampleSelective(@Param("record") SysRole record, @Param("example") SysRoleExample example);
+
+    int updateByExample(@Param("record") SysRole record, @Param("example") SysRoleExample example);
+
+    int updateByPrimaryKeySelective(SysRole record);
+
+    int updateByPrimaryKey(SysRole record);
+
+	List<SysRole> findAll(String roleName);
+
+	List<SysMenu> selectMenusByRoleId(Integer roleId);
+
+	Integer addRoleRelevancePer(@Param("roleId")Integer roleId,@Param("menuId") Integer menuId);
+
+	Integer selectRoleRelevancePer(@Param("roleId")Integer roleId,@Param("menuId") Integer menuId);
+
+	List<SysUser> selectUserByRoleId(@Param("roleId")Integer roleId,@Param("username")String username ,@Param("employeeno")String employeeno);
+
+	Integer deleteUserByRole(@Param("roleId")Integer roleId, @Param("userId") Integer userId);
+	
+	List<SysRole> selectRoleAndMenuList();
+	
+	List<SysRole> findUserRoleByUserId(@Param("userid") Integer userid);
+
+	void deletePerPageByRoleIdAndMenuId(@Param("menuId")Integer menuId, @Param("roleId")Integer roleId);
+	
+	SysRole selectByRoleName(@Param("roleName") String roleName);
+}

+ 21 - 0
src/main/java/com/ssm/mapper/system/SysUserLoginLogMapper.java

@@ -0,0 +1,21 @@
+package com.ssm.mapper.system;
+
+import java.util.List;
+
+import com.ssm.model.system.SysUserLoginLog;
+
+public interface SysUserLoginLogMapper {
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(SysUserLoginLog record);
+
+    int insertSelective(SysUserLoginLog record);
+
+    SysUserLoginLog selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(SysUserLoginLog record);
+
+    int updateByPrimaryKey(SysUserLoginLog record);
+    
+    public List<SysUserLoginLog> selectlog(SysUserLoginLog userLoginLog);
+}

+ 53 - 0
src/main/java/com/ssm/mapper/system/SysUserMapper.java

@@ -0,0 +1,53 @@
+package com.ssm.mapper.system;
+
+import com.ssm.model.system.SysUser;
+import com.ssm.model.system.SysUserExample;
+
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface SysUserMapper {
+    int countByExample(SysUserExample example);
+
+    int deleteByExample(SysUserExample example);
+
+    int deleteByPrimaryKey(Integer userid);
+
+    int insert(SysUser record);
+
+    int insertSelective(SysUser record);
+
+    List<SysUser> selectByExample(SysUserExample example);
+    
+    List<SysUser> selectByCondition(@Param("username") String username, @Param("employeeno") String employeeno);
+
+    SysUser selectByPrimaryKey(Integer userid);
+
+    int updateByExampleSelective(@Param("record") SysUser record, @Param("example") SysUserExample example);
+
+    int updateByExample(@Param("record") SysUser record, @Param("example") SysUserExample example);
+
+    int updateByPrimaryKeySelective(SysUser record);
+
+    int updateByPrimaryKey(SysUser record);
+    
+    SysUser findByEmployeenoAndPasswod(@Param("employeeno") String employeeno, @Param("password") String password);
+    
+    SysUser findByEmployeeno(@Param("employeeno") String employeeno);
+    
+    int deleteUserRole(Integer userid);
+    
+    int insertUserRole(@Param("userid")Integer userid, @Param("roleid")Integer roleid);
+    
+    int selectPerssion(@Param("userid")Integer userid, @Param("menuUrl")String menuUrl);
+    
+    List<SysUser> selectAllUser();
+
+    /**
+     * 
+     * @param userid
+     * @param roldid
+     * @return
+     */
+	int selectUserRoleByUserIdAndRoldId(@Param("userid") Integer userid,@Param("roldid") Integer roldid);
+}

+ 54 - 0
src/main/java/com/ssm/model/business/FileMeta.java

@@ -0,0 +1,54 @@
+package com.ssm.model.business;
+
+import com.ssm.util.page.BaseEntity;
+
+public class FileMeta  extends BaseEntity{
+
+	private static final long serialVersionUID = 1L;
+	private String fileName;
+	private String fileSize;
+	private String fileType;
+	private byte[] bytes;
+	private String downloadUrl;
+
+	public String getFileName() {
+		return fileName;
+	}
+
+	public void setFileName(String fileName) {
+		this.fileName = fileName;
+	}
+
+	public String getFileSize() {
+		return fileSize;
+	}
+
+	public void setFileSize(String fileSize) {
+		this.fileSize = fileSize;
+	}
+
+	public String getFileType() {
+		return fileType;
+	}
+
+	public void setFileType(String fileType) {
+		this.fileType = fileType;
+	}
+
+	public byte[] getBytes() {
+		return bytes;
+	}
+
+	public void setBytes(byte[] bytes) {
+		this.bytes = bytes;
+	}
+
+	public String getDownloadUrl() {
+		return downloadUrl;
+	}
+
+	public void setDownloadUrl(String downloadUrl) {
+		this.downloadUrl = downloadUrl;
+	}
+	
+}

+ 89 - 0
src/main/java/com/ssm/model/business/SmsRecord.java

@@ -0,0 +1,89 @@
+package com.ssm.model.business;
+
+import java.util.Date;
+
+/**
+ * 发送信息对象
+ * @author Administrator
+ *
+ */
+public class SmsRecord {
+	/**
+	 * 短信记录主键id
+	 */
+    private Integer id;
+
+    /**
+     * 发送的手机号码
+     */
+    private String phoens;
+
+    /**
+     * 发送的内容
+     */
+    private String content;
+
+    /**
+     * 发送时间
+     */
+    private Date createDate;
+    /**
+     * 信息编号
+     * 成功提交返回编号(表示提交成功,并不代表手机已经成功收到短信):
+     * 		-8485643440204283743或1485643440204283743
+     * 错误返回: 
+			-1	参数为空。信息、电话号码等有空指针,登陆失败
+			-2	电话号码个数超过1000
+			-10	申请缓存空间失败
+			-11	电话号码中有非数字字符
+			-12	有异常电话号码
+			-13	电话号码个数与实际个数不相等
+			-14	实际号码个数超过1000
+			-101	发送消息等待超时
+			-102	发送或接收消息失败
+			-103	接收消息超时
+			-200	其他错误
+			-999	web服务器内部错误
+     */
+    private String msgid;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getPhoens() {
+        return phoens;
+    }
+
+    public void setPhoens(String phoens) {
+        this.phoens = phoens == null ? null : phoens.trim();
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content == null ? null : content.trim();
+    }
+
+    public Date getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(Date createDate) {
+        this.createDate = createDate;
+    }
+
+    public String getMsgid() {
+        return msgid;
+    }
+
+    public void setMsgid(String msgid) {
+        this.msgid = msgid == null ? null : msgid.trim();
+    }
+}

+ 45 - 0
src/main/java/com/ssm/model/business/SmsSendState.java

@@ -0,0 +1,45 @@
+package com.ssm.model.business;
+
+import java.util.Date;
+
+public class SmsSendState {
+    private Integer id;
+
+    private String msgid;
+
+    private Date createDate;
+
+    private String contents;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getMsgid() {
+        return msgid;
+    }
+
+    public void setMsgid(String msgid) {
+        this.msgid = msgid == null ? null : msgid.trim();
+    }
+
+    public Date getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(Date createDate) {
+        this.createDate = createDate;
+    }
+
+    public String getContents() {
+        return contents;
+    }
+
+    public void setContents(String contents) {
+        this.contents = contents == null ? null : contents.trim();
+    }
+}

+ 86 - 0
src/main/java/com/ssm/model/business/SmsUpMessage.java

@@ -0,0 +1,86 @@
+package com.ssm.model.business;
+
+/**
+ * 上行数据对象
+ * @author Administrator
+ *
+ */
+public class SmsUpMessage {
+	/**
+	 * 主键id
+	 */
+    private Integer id;
+
+    /**
+	 *  日期时间
+	 */
+    private String dateTime;
+
+    /**
+	 * 上行源号码
+	 */
+    private String phoen;
+
+    /**
+	 * 上行目标通道号
+	 */
+    private String upGallery;
+
+    /**
+	 * 上行扩展子号(用不到)
+	 */
+    private String upGalleryChild;
+
+    /**
+	 * 信息内容
+	 */
+    private String content;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getDateTime() {
+        return dateTime;
+    }
+
+    public void setDateTime(String dateTime) {
+        this.dateTime = dateTime == null ? null : dateTime.trim();
+    }
+
+    public String getPhoen() {
+        return phoen;
+    }
+
+    public void setPhoen(String phoen) {
+        this.phoen = phoen == null ? null : phoen.trim();
+    }
+
+    public String getUpGallery() {
+        return upGallery;
+    }
+
+    public void setUpGallery(String upGallery) {
+        this.upGallery = upGallery == null ? null : upGallery.trim();
+    }
+
+    public String getUpGalleryChild() {
+        return upGalleryChild;
+    }
+
+    public void setUpGalleryChild(String upGalleryChild) {
+        this.upGalleryChild = upGalleryChild == null ? null : upGalleryChild.trim();
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content == null ? null : content.trim();
+    }
+}

+ 102 - 0
src/main/java/com/ssm/model/business/SmsUser.java

@@ -0,0 +1,102 @@
+package com.ssm.model.business;
+
+import java.util.Date;
+
+/**
+ * 用户对象(发送短信的用户表)
+ * @author Administrator
+ *
+ */
+public class SmsUser {
+	/**
+	 * 主键id
+	 */
+    private Integer id;
+
+    /**
+     * 姓名
+     */
+    private String name;
+
+    /**
+     * 电话号码
+     */
+    private String phoen;
+
+    /**
+     * 创建人id
+     */
+    private Integer userid;
+
+    /**
+     * 创建时间
+     */
+    private Date createDate;
+
+    /**
+     * 部门分类
+     */
+    private String classify;
+
+    /**
+     * 部门名称
+     */
+    private String dictName;
+    
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name == null ? null : name.trim();
+    }
+
+    public String getPhoen() {
+        return phoen;
+    }
+
+    public void setPhoen(String phoen) {
+        this.phoen = phoen == null ? null : phoen.trim();
+    }
+
+    public Integer getUserid() {
+        return userid;
+    }
+
+    public void setUserid(Integer userid) {
+        this.userid = userid;
+    }
+
+    public Date getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(Date createDate) {
+        this.createDate = createDate;
+    }
+
+    public String getClassify() {
+        return classify;
+    }
+
+    public void setClassify(String classify) {
+        this.classify = classify == null ? null : classify.trim();
+    }
+
+	public String getDictName() {
+		return dictName;
+	}
+
+	public void setDictName(String dictName) {
+		this.dictName = dictName;
+	}
+    
+}

+ 49 - 0
src/main/java/com/ssm/model/system/JsTree.java

@@ -0,0 +1,49 @@
+package com.ssm.model.system;
+
+import java.util.List;
+
+import com.ssm.util.page.BaseEntity;
+
+
+public class JsTree extends BaseEntity{
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	public int id;
+	public String text;
+	public String icon;
+	public State state;
+	public List<JsTree> children;
+	public int getId() {
+		return id;
+	}
+	public void setId(int id) {
+		this.id = id;
+	}
+	public String getText() {
+		return text;
+	}
+	public void setText(String text) {
+		this.text = text;
+	}
+	public String getIcon() {
+		return icon;
+	}
+	public void setIcon(String icon) {
+		this.icon = icon;
+	}
+	
+	public State getState() {
+		return state;
+	}
+	public void setState(State state) {
+		this.state = state;
+	}
+	public List<JsTree> getChildren() {
+		return children;
+	}
+	public void setChildren(List<JsTree> children) {
+		this.children = children;
+	}
+}

+ 47 - 0
src/main/java/com/ssm/model/system/State.java

@@ -0,0 +1,47 @@
+package com.ssm.model.system;
+
+import com.ssm.util.page.BaseEntity;
+
+public class State extends BaseEntity{
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	public boolean opened;
+	
+	public boolean disabled;
+	
+	public boolean selected;
+
+	public boolean isOpened() {
+		return opened;
+	}
+
+	public void setOpened(boolean opened) {
+		this.opened = opened;
+	}
+
+	public boolean isDisabled() {
+		return disabled;
+	}
+
+	public void setDisabled(boolean disabled) {
+		this.disabled = disabled;
+	}
+
+	public boolean isSelected() {
+		return selected;
+	}
+
+	public void setSelected(boolean selected) {
+		this.selected = selected;
+	}
+
+	public State() {
+		super();
+	}
+	
+	
+	
+}

+ 174 - 0
src/main/java/com/ssm/model/system/SysDepartment.java

@@ -0,0 +1,174 @@
+package com.ssm.model.system;
+
+import java.util.Date;
+import java.util.List;
+
+import com.ssm.util.page.BaseEntity;
+
+/**
+ * 部门 和 职位  一对多 关联 
+ * 因此加个 list<position> 属性,并在 mapper 里配置 
+ * @author Administrator
+ *
+ */
+public class SysDepartment extends BaseEntity{
+	
+    /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private Integer depid;
+
+    private String depcode;
+
+    private Integer createduserid;
+
+    private Date createddatetime;
+
+    private Integer lastupdateuserid;
+
+    private Date lastupdatedatetime;
+
+    private String depname;
+
+    private Integer languagetype;
+
+    private Integer parentid;
+
+    private Boolean isdeleted;
+
+    private String deptrolecode;
+    
+    private List<SysPosition> positions;
+    
+    private Integer level;
+    
+    private Integer departmentid;
+    
+
+	public Integer getDepartmentid() {
+		return departmentid;
+	}
+
+	public void setDepartmentid(Integer departmentid) {
+		this.departmentid = departmentid;
+	}
+
+	private List<SysDepartment> childSysDepartment;
+    
+    
+    public List<SysDepartment> getChildSysDepartment() {
+		return childSysDepartment;
+	}
+
+	public void setChildSysDepartment(List<SysDepartment> childSysDepartment) {
+		this.childSysDepartment = childSysDepartment;
+	}
+
+	public Integer getLevel() {
+		return level;
+	}
+
+	public void setLevel(Integer level) {
+		this.level = level;
+	}
+
+	public Integer getDepid() {
+        return depid;
+    }
+
+    public void setDepid(Integer depid) {
+        this.depid = depid;
+    }
+
+    public String getDepcode() {
+        return depcode;
+    }
+
+    public void setDepcode(String depcode) {
+        this.depcode = depcode == null ? null : depcode.trim();
+    }
+
+    public Integer getCreateduserid() {
+        return createduserid;
+    }
+
+    public void setCreateduserid(Integer createduserid) {
+        this.createduserid = createduserid;
+    }
+
+    public Date getCreateddatetime() {
+        return createddatetime;
+    }
+
+    public void setCreateddatetime(Date createddatetime) {
+        this.createddatetime = createddatetime;
+    }
+
+    public Integer getLastupdateuserid() {
+        return lastupdateuserid;
+    }
+
+    public void setLastupdateuserid(Integer lastupdateuserid) {
+        this.lastupdateuserid = lastupdateuserid;
+    }
+
+    public Date getLastupdatedatetime() {
+        return lastupdatedatetime;
+    }
+
+    public void setLastupdatedatetime(Date lastupdatedatetime) {
+        this.lastupdatedatetime = lastupdatedatetime;
+    }
+
+    public String getDepname() {
+        return depname;
+    }
+
+    public void setDepname(String depname) {
+        this.depname = depname == null ? null : depname.trim();
+    }
+
+    public Integer getLanguagetype() {
+        return languagetype;
+    }
+
+    public void setLanguagetype(Integer languagetype) {
+        this.languagetype = languagetype;
+    }
+
+    public Integer getParentid() {
+        return parentid;
+    }
+
+    public void setParentid(Integer parentid) {
+        this.parentid = parentid;
+    }
+
+    public Boolean getIsdeleted() {
+        return isdeleted;
+    }
+
+    public void setIsdeleted(Boolean isdeleted) {
+        this.isdeleted = isdeleted;
+    }
+
+    public String getDeptrolecode() {
+        return deptrolecode;
+    }
+
+    public void setDeptrolecode(String deptrolecode) {
+        this.deptrolecode = deptrolecode == null ? null : deptrolecode.trim();
+    }
+
+	public List<SysPosition> getPositions() {
+		return positions;
+	}
+
+	public void setPositions(List<SysPosition> positions) {
+		this.positions = positions;
+	}
+    
+    
+}

+ 821 - 0
src/main/java/com/ssm/model/system/SysDepartmentExample.java

@@ -0,0 +1,821 @@
+package com.ssm.model.system;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class SysDepartmentExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    public SysDepartmentExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<Criterion>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andDepidIsNull() {
+            addCriterion("DepID is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepidIsNotNull() {
+            addCriterion("DepID is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepidEqualTo(Integer value) {
+            addCriterion("DepID =", value, "depid");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepidNotEqualTo(Integer value) {
+            addCriterion("DepID <>", value, "depid");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepidGreaterThan(Integer value) {
+            addCriterion("DepID >", value, "depid");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepidGreaterThanOrEqualTo(Integer value) {
+            addCriterion("DepID >=", value, "depid");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepidLessThan(Integer value) {
+            addCriterion("DepID <", value, "depid");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepidLessThanOrEqualTo(Integer value) {
+            addCriterion("DepID <=", value, "depid");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepidIn(List<Integer> values) {
+            addCriterion("DepID in", values, "depid");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepidNotIn(List<Integer> values) {
+            addCriterion("DepID not in", values, "depid");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepidBetween(Integer value1, Integer value2) {
+            addCriterion("DepID between", value1, value2, "depid");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepidNotBetween(Integer value1, Integer value2) {
+            addCriterion("DepID not between", value1, value2, "depid");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepcodeIsNull() {
+            addCriterion("DepCode is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepcodeIsNotNull() {
+            addCriterion("DepCode is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepcodeEqualTo(String value) {
+            addCriterion("DepCode =", value, "depcode");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepcodeNotEqualTo(String value) {
+            addCriterion("DepCode <>", value, "depcode");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepcodeGreaterThan(String value) {
+            addCriterion("DepCode >", value, "depcode");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepcodeGreaterThanOrEqualTo(String value) {
+            addCriterion("DepCode >=", value, "depcode");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepcodeLessThan(String value) {
+            addCriterion("DepCode <", value, "depcode");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepcodeLessThanOrEqualTo(String value) {
+            addCriterion("DepCode <=", value, "depcode");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepcodeLike(String value) {
+            addCriterion("DepCode like", value, "depcode");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepcodeNotLike(String value) {
+            addCriterion("DepCode not like", value, "depcode");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepcodeIn(List<String> values) {
+            addCriterion("DepCode in", values, "depcode");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepcodeNotIn(List<String> values) {
+            addCriterion("DepCode not in", values, "depcode");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepcodeBetween(String value1, String value2) {
+            addCriterion("DepCode between", value1, value2, "depcode");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepcodeNotBetween(String value1, String value2) {
+            addCriterion("DepCode not between", value1, value2, "depcode");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridIsNull() {
+            addCriterion("CreatedUserID is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridIsNotNull() {
+            addCriterion("CreatedUserID is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridEqualTo(Integer value) {
+            addCriterion("CreatedUserID =", value, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridNotEqualTo(Integer value) {
+            addCriterion("CreatedUserID <>", value, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridGreaterThan(Integer value) {
+            addCriterion("CreatedUserID >", value, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridGreaterThanOrEqualTo(Integer value) {
+            addCriterion("CreatedUserID >=", value, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridLessThan(Integer value) {
+            addCriterion("CreatedUserID <", value, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridLessThanOrEqualTo(Integer value) {
+            addCriterion("CreatedUserID <=", value, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridIn(List<Integer> values) {
+            addCriterion("CreatedUserID in", values, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridNotIn(List<Integer> values) {
+            addCriterion("CreatedUserID not in", values, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridBetween(Integer value1, Integer value2) {
+            addCriterion("CreatedUserID between", value1, value2, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridNotBetween(Integer value1, Integer value2) {
+            addCriterion("CreatedUserID not between", value1, value2, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeIsNull() {
+            addCriterion("CreatedDatetime is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeIsNotNull() {
+            addCriterion("CreatedDatetime is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeEqualTo(Date value) {
+            addCriterion("CreatedDatetime =", value, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeNotEqualTo(Date value) {
+            addCriterion("CreatedDatetime <>", value, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeGreaterThan(Date value) {
+            addCriterion("CreatedDatetime >", value, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("CreatedDatetime >=", value, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeLessThan(Date value) {
+            addCriterion("CreatedDatetime <", value, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeLessThanOrEqualTo(Date value) {
+            addCriterion("CreatedDatetime <=", value, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeIn(List<Date> values) {
+            addCriterion("CreatedDatetime in", values, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeNotIn(List<Date> values) {
+            addCriterion("CreatedDatetime not in", values, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeBetween(Date value1, Date value2) {
+            addCriterion("CreatedDatetime between", value1, value2, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeNotBetween(Date value1, Date value2) {
+            addCriterion("CreatedDatetime not between", value1, value2, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridIsNull() {
+            addCriterion("LastUpdateUserID is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridIsNotNull() {
+            addCriterion("LastUpdateUserID is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridEqualTo(Integer value) {
+            addCriterion("LastUpdateUserID =", value, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridNotEqualTo(Integer value) {
+            addCriterion("LastUpdateUserID <>", value, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridGreaterThan(Integer value) {
+            addCriterion("LastUpdateUserID >", value, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridGreaterThanOrEqualTo(Integer value) {
+            addCriterion("LastUpdateUserID >=", value, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridLessThan(Integer value) {
+            addCriterion("LastUpdateUserID <", value, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridLessThanOrEqualTo(Integer value) {
+            addCriterion("LastUpdateUserID <=", value, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridIn(List<Integer> values) {
+            addCriterion("LastUpdateUserID in", values, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridNotIn(List<Integer> values) {
+            addCriterion("LastUpdateUserID not in", values, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridBetween(Integer value1, Integer value2) {
+            addCriterion("LastUpdateUserID between", value1, value2, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridNotBetween(Integer value1, Integer value2) {
+            addCriterion("LastUpdateUserID not between", value1, value2, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeIsNull() {
+            addCriterion("LastUpdateDatetime is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeIsNotNull() {
+            addCriterion("LastUpdateDatetime is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeEqualTo(Date value) {
+            addCriterion("LastUpdateDatetime =", value, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeNotEqualTo(Date value) {
+            addCriterion("LastUpdateDatetime <>", value, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeGreaterThan(Date value) {
+            addCriterion("LastUpdateDatetime >", value, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("LastUpdateDatetime >=", value, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeLessThan(Date value) {
+            addCriterion("LastUpdateDatetime <", value, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeLessThanOrEqualTo(Date value) {
+            addCriterion("LastUpdateDatetime <=", value, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeIn(List<Date> values) {
+            addCriterion("LastUpdateDatetime in", values, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeNotIn(List<Date> values) {
+            addCriterion("LastUpdateDatetime not in", values, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeBetween(Date value1, Date value2) {
+            addCriterion("LastUpdateDatetime between", value1, value2, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeNotBetween(Date value1, Date value2) {
+            addCriterion("LastUpdateDatetime not between", value1, value2, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepnameIsNull() {
+            addCriterion("DepName is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepnameIsNotNull() {
+            addCriterion("DepName is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepnameEqualTo(String value) {
+            addCriterion("DepName =", value, "depname");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepnameNotEqualTo(String value) {
+            addCriterion("DepName <>", value, "depname");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepnameGreaterThan(String value) {
+            addCriterion("DepName >", value, "depname");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepnameGreaterThanOrEqualTo(String value) {
+            addCriterion("DepName >=", value, "depname");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepnameLessThan(String value) {
+            addCriterion("DepName <", value, "depname");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepnameLessThanOrEqualTo(String value) {
+            addCriterion("DepName <=", value, "depname");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepnameLike(String value) {
+            addCriterion("DepName like", value, "depname");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepnameNotLike(String value) {
+            addCriterion("DepName not like", value, "depname");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepnameIn(List<String> values) {
+            addCriterion("DepName in", values, "depname");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepnameNotIn(List<String> values) {
+            addCriterion("DepName not in", values, "depname");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepnameBetween(String value1, String value2) {
+            addCriterion("DepName between", value1, value2, "depname");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepnameNotBetween(String value1, String value2) {
+            addCriterion("DepName not between", value1, value2, "depname");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeIsNull() {
+            addCriterion("LanguageType is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeIsNotNull() {
+            addCriterion("LanguageType is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeEqualTo(Integer value) {
+            addCriterion("LanguageType =", value, "languagetype");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeNotEqualTo(Integer value) {
+            addCriterion("LanguageType <>", value, "languagetype");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeGreaterThan(Integer value) {
+            addCriterion("LanguageType >", value, "languagetype");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeGreaterThanOrEqualTo(Integer value) {
+            addCriterion("LanguageType >=", value, "languagetype");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeLessThan(Integer value) {
+            addCriterion("LanguageType <", value, "languagetype");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeLessThanOrEqualTo(Integer value) {
+            addCriterion("LanguageType <=", value, "languagetype");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeIn(List<Integer> values) {
+            addCriterion("LanguageType in", values, "languagetype");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeNotIn(List<Integer> values) {
+            addCriterion("LanguageType not in", values, "languagetype");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeBetween(Integer value1, Integer value2) {
+            addCriterion("LanguageType between", value1, value2, "languagetype");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeNotBetween(Integer value1, Integer value2) {
+            addCriterion("LanguageType not between", value1, value2, "languagetype");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentidIsNull() {
+            addCriterion("ParentID is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentidIsNotNull() {
+            addCriterion("ParentID is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentidEqualTo(Integer value) {
+            addCriterion("ParentID =", value, "parentid");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentidNotEqualTo(Integer value) {
+            addCriterion("ParentID <>", value, "parentid");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentidGreaterThan(Integer value) {
+            addCriterion("ParentID >", value, "parentid");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentidGreaterThanOrEqualTo(Integer value) {
+            addCriterion("ParentID >=", value, "parentid");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentidLessThan(Integer value) {
+            addCriterion("ParentID <", value, "parentid");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentidLessThanOrEqualTo(Integer value) {
+            addCriterion("ParentID <=", value, "parentid");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentidIn(List<Integer> values) {
+            addCriterion("ParentID in", values, "parentid");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentidNotIn(List<Integer> values) {
+            addCriterion("ParentID not in", values, "parentid");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentidBetween(Integer value1, Integer value2) {
+            addCriterion("ParentID between", value1, value2, "parentid");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentidNotBetween(Integer value1, Integer value2) {
+            addCriterion("ParentID not between", value1, value2, "parentid");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedIsNull() {
+            addCriterion("IsDeleted is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedIsNotNull() {
+            addCriterion("IsDeleted is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedEqualTo(Boolean value) {
+            addCriterion("IsDeleted =", value, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedNotEqualTo(Boolean value) {
+            addCriterion("IsDeleted <>", value, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedGreaterThan(Boolean value) {
+            addCriterion("IsDeleted >", value, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+            addCriterion("IsDeleted >=", value, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedLessThan(Boolean value) {
+            addCriterion("IsDeleted <", value, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+            addCriterion("IsDeleted <=", value, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedIn(List<Boolean> values) {
+            addCriterion("IsDeleted in", values, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedNotIn(List<Boolean> values) {
+            addCriterion("IsDeleted not in", values, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+            addCriterion("IsDeleted between", value1, value2, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+            addCriterion("IsDeleted not between", value1, value2, "isdeleted");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}

+ 130 - 0
src/main/java/com/ssm/model/system/SysDictionary.java

@@ -0,0 +1,130 @@
+package com.ssm.model.system;
+
+import java.util.Date;
+
+import com.ssm.util.page.BaseEntity;
+
+public class SysDictionary extends BaseEntity{
+	private static final long serialVersionUID = 1L;
+
+	private Integer dictid;
+
+    private Boolean isactive;
+
+    private Integer createduserid;
+
+    private Date createddatetime;
+
+    private Integer lastupdateuserid;
+
+    private Date lastupdatedatetime;
+
+    private Integer subitems;
+    
+    private String dictvalue;
+
+    private String dictname;
+
+    private String dictnameen;
+
+    private String dictmemo;
+
+    private String namespace;
+
+    public Integer getDictid() {
+        return dictid;
+    }
+
+    public void setDictid(Integer dictid) {
+        this.dictid = dictid;
+    }
+
+    public Boolean getIsactive() {
+        return isactive;
+    }
+
+    public void setIsactive(Boolean isactive) {
+        this.isactive = isactive;
+    }
+
+    public Integer getCreateduserid() {
+        return createduserid;
+    }
+
+    public void setCreateduserid(Integer createduserid) {
+        this.createduserid = createduserid;
+    }
+
+    public Date getCreateddatetime() {
+        return createddatetime;
+    }
+
+    public void setCreateddatetime(Date createddatetime) {
+        this.createddatetime = createddatetime;
+    }
+
+    public Integer getLastupdateuserid() {
+        return lastupdateuserid;
+    }
+
+    public void setLastupdateuserid(Integer lastupdateuserid) {
+        this.lastupdateuserid = lastupdateuserid;
+    }
+
+    public Date getLastupdatedatetime() {
+        return lastupdatedatetime;
+    }
+
+    public void setLastupdatedatetime(Date lastupdatedatetime) {
+        this.lastupdatedatetime = lastupdatedatetime;
+    }
+
+    public Integer getSubitems() {
+        return subitems;
+    }
+
+    public void setSubitems(Integer subitems) {
+        this.subitems = subitems;
+    }
+
+	public String getDictvalue() {
+		return dictvalue;
+	}
+
+	public void setDictvalue(String dictvalue) {
+		this.dictvalue = dictvalue;
+	}
+
+	public String getDictname() {
+		return dictname;
+	}
+
+	public void setDictname(String dictname) {
+		this.dictname = dictname;
+	}
+
+	public String getDictnameen() {
+		return dictnameen;
+	}
+
+	public void setDictnameen(String dictnameen) {
+		this.dictnameen = dictnameen;
+	}
+
+	public String getDictmemo() {
+		return dictmemo;
+	}
+
+	public void setDictmemo(String dictmemo) {
+		this.dictmemo = dictmemo;
+	}
+
+	public String getNamespace() {
+		return namespace;
+	}
+
+	public void setNamespace(String namespace) {
+		this.namespace = namespace;
+	}
+    
+}

+ 151 - 0
src/main/java/com/ssm/model/system/SysLog.java

@@ -0,0 +1,151 @@
+package com.ssm.model.system;
+
+import java.util.Date;
+
+import com.ssm.util.page.BaseEntity;
+
+public class SysLog extends BaseEntity{
+	
+    /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private Integer id;
+    
+    private String logLevel;// 级别
+
+    private String logMessage;
+
+    private String origin;// 操作来源
+
+    private Integer userId;
+
+    private Date createdDate;   
+
+    private String stackTrace;//操作异常信息
+    
+    private String cd;//(createdDate)
+    
+    private String username;
+    
+    private Date startDate;
+    
+    private Date endDate;
+    
+    private String params;
+    
+    private String ipAddress;
+    
+    public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+	public String getCd() {
+		return cd;
+	}
+
+	public void setCd(String cd) {
+		this.cd = cd;
+	}
+
+	public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getLogLevel() {
+        return logLevel;
+    }
+
+    public void setLogLevel(String logLevel) {
+        this.logLevel = logLevel == null ? null : logLevel.trim();
+    }
+
+    public String getLogMessage() {
+        return logMessage;
+    }
+
+    public void setLogMessage(String logMessage) {
+        this.logMessage = logMessage == null ? null : logMessage.trim();
+    }
+
+    public String getOrigin() {
+        return origin;
+    }
+
+    public void setOrigin(String origin) {
+        this.origin = origin == null ? null : origin.trim();
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId ;
+    }
+
+	public Date getCreatedDate() {
+		return createdDate;
+	}
+
+	public void setCreatedDate(Date createdDate) {
+		this.createdDate = createdDate;
+	}
+
+	public String getStackTrace() {
+		return stackTrace;
+	}
+
+	public void setStackTrace(String stackTrace) {
+		this.stackTrace = stackTrace;
+	}
+
+	public Date getStartDate() {
+		return startDate;
+	}
+
+	public void setStartDate(Date startDate) {
+		this.startDate = startDate;
+	}
+
+	public Date getEndDate() {
+		return endDate;
+	}
+
+	public void setEndDate(Date endDate) {
+		this.endDate = endDate;
+	}
+	
+	public String getParams() {
+		return params;
+	}
+
+	public void setParams(String params) {
+		this.params = params;
+	}
+	
+	public String getIpAddress() {
+		return ipAddress;
+	}
+
+	public void setIpAddress(String ipAddress) {
+		this.ipAddress = ipAddress;
+	}
+
+	@Override
+	public String toString() {
+		return "SysLog [id=" + id + ", loglevel=" + logLevel + ", logMessage="
+				+ logMessage + ", origin=" + origin + ", userId=" + userId
+				+ ", createTime=" + createdDate + ", stackTrace=" + stackTrace
+				+ "]";
+	}
+}

+ 248 - 0
src/main/java/com/ssm/model/system/SysMenu.java

@@ -0,0 +1,248 @@
+package com.ssm.model.system;
+
+import java.util.Date;
+import java.util.List;
+
+import com.ssm.util.page.BaseEntity;
+
+public class SysMenu extends BaseEntity{
+    /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private String orderby;
+
+    private String icon;
+
+    private String menustate;
+
+    private Integer menuid;
+
+    protected String menucnname;
+
+    protected String menuenname;
+    protected String pmenucnname;
+    
+
+	private String menuurl;
+
+    private String actionname;
+
+    private Integer parentid;
+    private SysMenu pMenu;
+
+
+	private Boolean isenable;
+
+    private Integer createduserid;
+    
+    private String createdusername;
+
+    private Date createddatetime;
+
+    private Integer lastupdateuserid;
+
+    private Date lastupdatedatetime;
+
+    private Boolean isdelete;
+
+    private Integer level;
+
+    private String menutype;
+    
+    public SysMenu getpMenu() {
+  		return pMenu;
+  	}
+
+  	public void setpMenu(SysMenu pMenu) {
+  		this.pMenu = pMenu;
+  	}
+    
+    public String getPmenucnname() {
+		return pmenucnname;
+	}
+
+	public void setPmenucnname(String pmenucnname) {
+		this.pmenucnname = pmenucnname;
+	}
+
+	public String getCreatedusername() {
+		return createdusername;
+	}
+
+	public void setCreatedusername(String createdusername) {
+		this.createdusername = createdusername;
+	}
+
+    public Integer getMenuid() {
+        return menuid;
+    }
+
+    public void setMenuid(Integer menuid) {
+        this.menuid = menuid;
+    }
+
+    public String getMenucnname() {
+        return menucnname;
+    }
+
+    public void setMenucnname(String menucnname) {
+        this.menucnname = menucnname == null ? null : menucnname.trim();
+    }
+
+
+	public String getMenuenname() {
+        return menuenname;
+    }
+
+    public void setMenuenname(String menuenname) {
+        this.menuenname = menuenname == null ? null : menuenname.trim();
+    }
+
+    public String getMenuurl() {
+        return menuurl;
+    }
+
+    public void setMenuurl(String menuurl) {
+        this.menuurl = menuurl == null ? null : menuurl.trim();
+    }
+
+    public String getActionname() {
+        return actionname;
+    }
+
+    public void setActionname(String actionname) {
+        this.actionname = actionname == null ? null : actionname.trim();
+    }
+
+    public Integer getParentid() {
+        return parentid;
+    }
+
+    public void setParentid(Integer parentid) {
+        this.parentid = parentid;
+    }
+
+    public Boolean getIsenable() {
+        return isenable;
+    }
+
+    public void setIsenable(Boolean isenable) {
+        this.isenable = isenable;
+    }
+
+    public Integer getCreateduserid() {
+        return createduserid;
+    }
+
+    public void setCreateduserid(Integer createduserid) {
+        this.createduserid = createduserid;
+    }
+
+    public Date getCreateddatetime() {
+        return createddatetime;
+    }
+
+    public void setCreateddatetime(Date createddatetime) {
+        this.createddatetime = createddatetime;
+    }
+
+    public Integer getLastupdateuserid() {
+        return lastupdateuserid;
+    }
+
+    public void setLastupdateuserid(Integer lastupdateuserid) {
+        this.lastupdateuserid = lastupdateuserid;
+    }
+
+    public Date getLastupdatedatetime() {
+        return lastupdatedatetime;
+    }
+
+    public void setLastupdatedatetime(Date lastupdatedatetime) {
+        this.lastupdatedatetime = lastupdatedatetime;
+    }
+
+    public Boolean getIsdelete() {
+        return isdelete;
+    }
+
+    public void setIsdelete(Boolean isdelete) {
+        this.isdelete = isdelete;
+    }
+
+    public Integer getLevel() {
+        return level;
+    }
+
+    public void setLevel(Integer level) {
+        this.level = level;
+    }
+
+    public String getMenutype() {
+        return menutype;
+    }
+
+    public void setMenutype(String menutype) {
+        this.menutype = menutype == null ? null : menutype.trim();
+    }
+    
+    
+	List<SysMenu> childMenu;	
+    
+
+    public SysMenu(String enName, String cnName) {
+    	this.menuenname = enName;
+    	this.menucnname = cnName;
+	}
+
+	public SysMenu() {
+	}
+
+	public List<SysMenu> getChildMenu() {
+		return childMenu;
+	}
+
+	public void setChildMenu(List<SysMenu> childMenu) {
+		this.childMenu = childMenu;
+	}
+
+    
+    public String getOrderby() {
+        return orderby;
+    }
+
+    public void setOrderby(String orderby) {
+        this.orderby = orderby == null ? null : orderby.trim();
+    }
+
+    public String getIcon() {
+        return icon;
+    }
+
+    public void setIcon(String icon) {
+        this.icon = icon == null ? null : icon.trim();
+    }
+
+    public String getMenustate() {
+        return menustate;
+    }
+
+    public void setMenustate(String menustate) {
+        this.menustate = menustate == null ? null : menustate.trim();
+    }
+    
+    /**
+     * 重写 equals 方法, 在list中去除 重复项
+     */
+	@Override
+	public boolean equals(Object obj) {
+		if(obj instanceof SysMenu) {
+			return ((SysMenu) obj).getMenuid().toString().equals(this.getMenuid().toString());
+		} else
+			return false;
+	}
+
+	
+}

Diferenças do arquivo suprimidas por serem muito extensas
+ 1151 - 0
src/main/java/com/ssm/model/system/SysMenuExample.java


+ 140 - 0
src/main/java/com/ssm/model/system/SysPosition.java

@@ -0,0 +1,140 @@
+package com.ssm.model.system;
+
+import java.util.Date;
+
+import com.ssm.util.page.BaseEntity;
+
+public class SysPosition extends BaseEntity{
+    /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private Integer positionid;
+
+    private String positioncode;
+
+    private Integer createduserid;
+
+    private Date createddatetime;
+
+    private Integer lastupdateuserid;
+
+    private Date lastupdatedatetime;
+
+    private String positionname;
+
+    private Integer languagetype;
+
+    private Integer depid;
+
+    private Boolean isdeleted;
+
+    private String depname;
+    private String employeeno;
+    private Integer userid;
+    
+    public Integer getUserid() {
+		return userid;
+	}
+
+	public void setUserid(Integer userid) {
+		this.userid = userid;
+	}
+
+	public String getDepname() {
+		return depname;
+	}
+
+	public void setDepname(String depname) {
+		this.depname = depname;
+	}
+
+	public String getEmployeeno() {
+		return employeeno;
+	}
+
+	public void setEmployeeno(String employeeno) {
+		this.employeeno = employeeno;
+	}
+
+	public Integer getPositionid() {
+        return positionid;
+    }
+
+    public void setPositionid(Integer positionid) {
+        this.positionid = positionid;
+    }
+
+    public String getPositioncode() {
+        return positioncode;
+    }
+
+    public void setPositioncode(String positioncode) {
+        this.positioncode = positioncode == null ? null : positioncode.trim();
+    }
+
+    public Integer getCreateduserid() {
+        return createduserid;
+    }
+
+    public void setCreateduserid(Integer createduserid) {
+        this.createduserid = createduserid;
+    }
+
+    public Date getCreateddatetime() {
+        return createddatetime;
+    }
+
+    public void setCreateddatetime(Date createddatetime) {
+        this.createddatetime = createddatetime;
+    }
+
+    public Integer getLastupdateuserid() {
+        return lastupdateuserid;
+    }
+
+    public void setLastupdateuserid(Integer lastupdateuserid) {
+        this.lastupdateuserid = lastupdateuserid;
+    }
+
+    public Date getLastupdatedatetime() {
+        return lastupdatedatetime;
+    }
+
+    public void setLastupdatedatetime(Date lastupdatedatetime) {
+        this.lastupdatedatetime = lastupdatedatetime;
+    }
+
+    public String getPositionname() {
+        return positionname;
+    }
+
+    public void setPositionname(String positionname) {
+        this.positionname = positionname == null ? null : positionname.trim();
+    }
+
+    public Integer getLanguagetype() {
+        return languagetype;
+    }
+
+    public void setLanguagetype(Integer languagetype) {
+        this.languagetype = languagetype;
+    }
+
+    public Integer getDepid() {
+		return depid;
+	}
+
+	public void setDepid(Integer depid) {
+		this.depid = depid;
+	}
+
+	public Boolean getIsdeleted() {
+        return isdeleted;
+    }
+
+    public void setIsdeleted(Boolean isdeleted) {
+        this.isdeleted = isdeleted;
+    }
+}

+ 821 - 0
src/main/java/com/ssm/model/system/SysPositionExample.java

@@ -0,0 +1,821 @@
+package com.ssm.model.system;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class SysPositionExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    public SysPositionExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<Criterion>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andPositionidIsNull() {
+            addCriterion("PositionID is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionidIsNotNull() {
+            addCriterion("PositionID is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionidEqualTo(Integer value) {
+            addCriterion("PositionID =", value, "positionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionidNotEqualTo(Integer value) {
+            addCriterion("PositionID <>", value, "positionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionidGreaterThan(Integer value) {
+            addCriterion("PositionID >", value, "positionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionidGreaterThanOrEqualTo(Integer value) {
+            addCriterion("PositionID >=", value, "positionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionidLessThan(Integer value) {
+            addCriterion("PositionID <", value, "positionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionidLessThanOrEqualTo(Integer value) {
+            addCriterion("PositionID <=", value, "positionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionidIn(List<Integer> values) {
+            addCriterion("PositionID in", values, "positionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionidNotIn(List<Integer> values) {
+            addCriterion("PositionID not in", values, "positionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionidBetween(Integer value1, Integer value2) {
+            addCriterion("PositionID between", value1, value2, "positionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionidNotBetween(Integer value1, Integer value2) {
+            addCriterion("PositionID not between", value1, value2, "positionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositioncodeIsNull() {
+            addCriterion("PositionCode is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositioncodeIsNotNull() {
+            addCriterion("PositionCode is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositioncodeEqualTo(String value) {
+            addCriterion("PositionCode =", value, "positioncode");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositioncodeNotEqualTo(String value) {
+            addCriterion("PositionCode <>", value, "positioncode");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositioncodeGreaterThan(String value) {
+            addCriterion("PositionCode >", value, "positioncode");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositioncodeGreaterThanOrEqualTo(String value) {
+            addCriterion("PositionCode >=", value, "positioncode");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositioncodeLessThan(String value) {
+            addCriterion("PositionCode <", value, "positioncode");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositioncodeLessThanOrEqualTo(String value) {
+            addCriterion("PositionCode <=", value, "positioncode");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositioncodeLike(String value) {
+            addCriterion("PositionCode like", value, "positioncode");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositioncodeNotLike(String value) {
+            addCriterion("PositionCode not like", value, "positioncode");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositioncodeIn(List<String> values) {
+            addCriterion("PositionCode in", values, "positioncode");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositioncodeNotIn(List<String> values) {
+            addCriterion("PositionCode not in", values, "positioncode");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositioncodeBetween(String value1, String value2) {
+            addCriterion("PositionCode between", value1, value2, "positioncode");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositioncodeNotBetween(String value1, String value2) {
+            addCriterion("PositionCode not between", value1, value2, "positioncode");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridIsNull() {
+            addCriterion("CreatedUserID is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridIsNotNull() {
+            addCriterion("CreatedUserID is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridEqualTo(Integer value) {
+            addCriterion("CreatedUserID =", value, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridNotEqualTo(Integer value) {
+            addCriterion("CreatedUserID <>", value, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridGreaterThan(Integer value) {
+            addCriterion("CreatedUserID >", value, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridGreaterThanOrEqualTo(Integer value) {
+            addCriterion("CreatedUserID >=", value, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridLessThan(Integer value) {
+            addCriterion("CreatedUserID <", value, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridLessThanOrEqualTo(Integer value) {
+            addCriterion("CreatedUserID <=", value, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridIn(List<Integer> values) {
+            addCriterion("CreatedUserID in", values, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridNotIn(List<Integer> values) {
+            addCriterion("CreatedUserID not in", values, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridBetween(Integer value1, Integer value2) {
+            addCriterion("CreatedUserID between", value1, value2, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridNotBetween(Integer value1, Integer value2) {
+            addCriterion("CreatedUserID not between", value1, value2, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeIsNull() {
+            addCriterion("CreatedDatetime is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeIsNotNull() {
+            addCriterion("CreatedDatetime is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeEqualTo(Date value) {
+            addCriterion("CreatedDatetime =", value, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeNotEqualTo(Date value) {
+            addCriterion("CreatedDatetime <>", value, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeGreaterThan(Date value) {
+            addCriterion("CreatedDatetime >", value, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("CreatedDatetime >=", value, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeLessThan(Date value) {
+            addCriterion("CreatedDatetime <", value, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeLessThanOrEqualTo(Date value) {
+            addCriterion("CreatedDatetime <=", value, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeIn(List<Date> values) {
+            addCriterion("CreatedDatetime in", values, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeNotIn(List<Date> values) {
+            addCriterion("CreatedDatetime not in", values, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeBetween(Date value1, Date value2) {
+            addCriterion("CreatedDatetime between", value1, value2, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeNotBetween(Date value1, Date value2) {
+            addCriterion("CreatedDatetime not between", value1, value2, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridIsNull() {
+            addCriterion("LastUpdateUserID is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridIsNotNull() {
+            addCriterion("LastUpdateUserID is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridEqualTo(Integer value) {
+            addCriterion("LastUpdateUserID =", value, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridNotEqualTo(Integer value) {
+            addCriterion("LastUpdateUserID <>", value, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridGreaterThan(Integer value) {
+            addCriterion("LastUpdateUserID >", value, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridGreaterThanOrEqualTo(Integer value) {
+            addCriterion("LastUpdateUserID >=", value, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridLessThan(Integer value) {
+            addCriterion("LastUpdateUserID <", value, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridLessThanOrEqualTo(Integer value) {
+            addCriterion("LastUpdateUserID <=", value, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridIn(List<Integer> values) {
+            addCriterion("LastUpdateUserID in", values, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridNotIn(List<Integer> values) {
+            addCriterion("LastUpdateUserID not in", values, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridBetween(Integer value1, Integer value2) {
+            addCriterion("LastUpdateUserID between", value1, value2, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridNotBetween(Integer value1, Integer value2) {
+            addCriterion("LastUpdateUserID not between", value1, value2, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeIsNull() {
+            addCriterion("LastUpdateDatetime is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeIsNotNull() {
+            addCriterion("LastUpdateDatetime is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeEqualTo(Date value) {
+            addCriterion("LastUpdateDatetime =", value, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeNotEqualTo(Date value) {
+            addCriterion("LastUpdateDatetime <>", value, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeGreaterThan(Date value) {
+            addCriterion("LastUpdateDatetime >", value, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("LastUpdateDatetime >=", value, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeLessThan(Date value) {
+            addCriterion("LastUpdateDatetime <", value, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeLessThanOrEqualTo(Date value) {
+            addCriterion("LastUpdateDatetime <=", value, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeIn(List<Date> values) {
+            addCriterion("LastUpdateDatetime in", values, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeNotIn(List<Date> values) {
+            addCriterion("LastUpdateDatetime not in", values, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeBetween(Date value1, Date value2) {
+            addCriterion("LastUpdateDatetime between", value1, value2, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeNotBetween(Date value1, Date value2) {
+            addCriterion("LastUpdateDatetime not between", value1, value2, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionnameIsNull() {
+            addCriterion("PositionName is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionnameIsNotNull() {
+            addCriterion("PositionName is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionnameEqualTo(String value) {
+            addCriterion("PositionName =", value, "positionname");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionnameNotEqualTo(String value) {
+            addCriterion("PositionName <>", value, "positionname");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionnameGreaterThan(String value) {
+            addCriterion("PositionName >", value, "positionname");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionnameGreaterThanOrEqualTo(String value) {
+            addCriterion("PositionName >=", value, "positionname");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionnameLessThan(String value) {
+            addCriterion("PositionName <", value, "positionname");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionnameLessThanOrEqualTo(String value) {
+            addCriterion("PositionName <=", value, "positionname");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionnameLike(String value) {
+            addCriterion("PositionName like", value, "positionname");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionnameNotLike(String value) {
+            addCriterion("PositionName not like", value, "positionname");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionnameIn(List<String> values) {
+            addCriterion("PositionName in", values, "positionname");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionnameNotIn(List<String> values) {
+            addCriterion("PositionName not in", values, "positionname");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionnameBetween(String value1, String value2) {
+            addCriterion("PositionName between", value1, value2, "positionname");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionnameNotBetween(String value1, String value2) {
+            addCriterion("PositionName not between", value1, value2, "positionname");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeIsNull() {
+            addCriterion("LanguageType is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeIsNotNull() {
+            addCriterion("LanguageType is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeEqualTo(Integer value) {
+            addCriterion("LanguageType =", value, "languagetype");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeNotEqualTo(Integer value) {
+            addCriterion("LanguageType <>", value, "languagetype");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeGreaterThan(Integer value) {
+            addCriterion("LanguageType >", value, "languagetype");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeGreaterThanOrEqualTo(Integer value) {
+            addCriterion("LanguageType >=", value, "languagetype");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeLessThan(Integer value) {
+            addCriterion("LanguageType <", value, "languagetype");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeLessThanOrEqualTo(Integer value) {
+            addCriterion("LanguageType <=", value, "languagetype");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeIn(List<Integer> values) {
+            addCriterion("LanguageType in", values, "languagetype");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeNotIn(List<Integer> values) {
+            addCriterion("LanguageType not in", values, "languagetype");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeBetween(Integer value1, Integer value2) {
+            addCriterion("LanguageType between", value1, value2, "languagetype");
+            return (Criteria) this;
+        }
+
+        public Criteria andLanguagetypeNotBetween(Integer value1, Integer value2) {
+            addCriterion("LanguageType not between", value1, value2, "languagetype");
+            return (Criteria) this;
+        }
+
+        public Criteria anddepidIsNull() {
+            addCriterion("depid is null");
+            return (Criteria) this;
+        }
+
+        public Criteria anddepidIsNotNull() {
+            addCriterion("depid is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria anddepidEqualTo(Integer value) {
+            addCriterion("depid =", value, "depid");
+            return (Criteria) this;
+        }
+
+        public Criteria anddepidNotEqualTo(Integer value) {
+            addCriterion("depid <>", value, "depid");
+            return (Criteria) this;
+        }
+
+        public Criteria anddepidGreaterThan(Integer value) {
+            addCriterion("depid >", value, "depid");
+            return (Criteria) this;
+        }
+
+        public Criteria anddepidGreaterThanOrEqualTo(Integer value) {
+            addCriterion("depid >=", value, "depid");
+            return (Criteria) this;
+        }
+
+        public Criteria anddepidLessThan(Integer value) {
+            addCriterion("depid <", value, "depid");
+            return (Criteria) this;
+        }
+
+        public Criteria anddepidLessThanOrEqualTo(Integer value) {
+            addCriterion("depid <=", value, "depid");
+            return (Criteria) this;
+        }
+
+        public Criteria anddepidIn(List<Integer> values) {
+            addCriterion("depid in", values, "depid");
+            return (Criteria) this;
+        }
+
+        public Criteria anddepidNotIn(List<Integer> values) {
+            addCriterion("depid not in", values, "depid");
+            return (Criteria) this;
+        }
+
+        public Criteria anddepidBetween(Integer value1, Integer value2) {
+            addCriterion("depid between", value1, value2, "depid");
+            return (Criteria) this;
+        }
+
+        public Criteria anddepidNotBetween(Integer value1, Integer value2) {
+            addCriterion("depid not between", value1, value2, "depid");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedIsNull() {
+            addCriterion("IsDeleted is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedIsNotNull() {
+            addCriterion("IsDeleted is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedEqualTo(Boolean value) {
+            addCriterion("IsDeleted =", value, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedNotEqualTo(Boolean value) {
+            addCriterion("IsDeleted <>", value, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedGreaterThan(Boolean value) {
+            addCriterion("IsDeleted >", value, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+            addCriterion("IsDeleted >=", value, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedLessThan(Boolean value) {
+            addCriterion("IsDeleted <", value, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+            addCriterion("IsDeleted <=", value, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedIn(List<Boolean> values) {
+            addCriterion("IsDeleted in", values, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedNotIn(List<Boolean> values) {
+            addCriterion("IsDeleted not in", values, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+            addCriterion("IsDeleted between", value1, value2, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+            addCriterion("IsDeleted not between", value1, value2, "isdeleted");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}

+ 135 - 0
src/main/java/com/ssm/model/system/SysRole.java

@@ -0,0 +1,135 @@
+package com.ssm.model.system;
+
+import java.util.Date;
+import java.util.List;
+
+import com.ssm.util.page.BaseEntity;
+
+public class SysRole extends BaseEntity{
+	
+    /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private Integer roleId;
+
+    private String roleName;
+
+    private String roleDesc;
+
+    private Boolean isDeleted;
+
+    private Integer createdUserId;
+
+    private Date createdDateTime;
+
+    private Integer lastUpdateUserId;
+
+    private Date lastUpdateDateTime;
+
+    private Boolean isEnabled;
+    
+    private String lastDate;		//最后更新时间
+    
+    public String getLastDate() {
+		return lastDate;
+	}
+
+	public void setLastDate(String lastDate) {
+		this.lastDate = lastDate;
+	}
+
+	private List<SysMenu> menuList;
+    
+	public Integer getRoleId() {
+		return roleId;
+	}
+
+	public void setRoleId(Integer roleId) {
+		this.roleId = roleId;
+	}
+
+	public String getRoleName() {
+		return roleName;
+	}
+
+	public void setRoleName(String roleName) {
+		this.roleName = roleName;
+	}
+
+	public String getRoleDesc() {
+		return roleDesc;
+	}
+
+	public void setRoleDesc(String roleDesc) {
+		this.roleDesc = roleDesc;
+	}
+
+	public Boolean getIsDeleted() {
+		return isDeleted;
+	}
+
+	public void setIsDeleted(Boolean isDeleted) {
+		this.isDeleted = isDeleted;
+	}
+
+	public Integer getCreatedUserId() {
+		return createdUserId;
+	}
+
+	public void setCreatedUserId(Integer createdUserId) {
+		this.createdUserId = createdUserId;
+	}
+
+	public Date getCreatedDateTime() {
+		return createdDateTime;
+	}
+
+	public void setCreatedDateTime(Date createdDateTime) {
+		this.createdDateTime = createdDateTime;
+	}
+
+	public Integer getLastUpdateUserId() {
+		return lastUpdateUserId;
+	}
+
+	public void setLastUpdateUserid(Integer lastUpdateUserId) {
+		this.lastUpdateUserId = lastUpdateUserId;
+	}
+
+	public Date getLastUpdateDateTime() {
+		return lastUpdateDateTime;
+	}
+
+	public void setLastUpdateDateTime(Date lastUpdateDateTime) {
+		this.lastUpdateDateTime = lastUpdateDateTime;
+	}
+
+	public Boolean getIsEnabled() {
+		return isEnabled;
+	}
+
+	public void setIsEnabled(Boolean isEnabled) {
+		this.isEnabled = isEnabled;
+	}
+
+	public List<SysMenu> getMenuList() {
+		return menuList;
+	}
+
+	public void setMenuList(List<SysMenu> menuList) {
+		this.menuList = menuList;
+	}
+
+	@Override
+	public String toString() {
+		return "SysRole [roleId=" + roleId + ", roleName=" + roleName
+				+ ", roleDesc=" + roleDesc + ", isDeleted=" + isDeleted
+				+ ", createdUserId=" + createdUserId + ", createdDateTime="
+				+ createdDateTime + ", lastUpdateUserId=" + lastUpdateUserId
+				+ ", lastUpdateDateTime=" + lastUpdateDateTime + ", isEnabled="
+				+ isEnabled + ", lastDate=" + lastDate + ", menuList="
+				+ menuList + "]";
+	}
+}

+ 761 - 0
src/main/java/com/ssm/model/system/SysRoleExample.java

@@ -0,0 +1,761 @@
+package com.ssm.model.system;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class SysRoleExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    public SysRoleExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<Criterion>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andRoleidIsNull() {
+            addCriterion("RoleID is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoleidIsNotNull() {
+            addCriterion("RoleID is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoleidEqualTo(Integer value) {
+            addCriterion("RoleID =", value, "roleid");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoleidNotEqualTo(Integer value) {
+            addCriterion("RoleID <>", value, "roleid");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoleidGreaterThan(Integer value) {
+            addCriterion("RoleID >", value, "roleid");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoleidGreaterThanOrEqualTo(Integer value) {
+            addCriterion("RoleID >=", value, "roleid");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoleidLessThan(Integer value) {
+            addCriterion("RoleID <", value, "roleid");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoleidLessThanOrEqualTo(Integer value) {
+            addCriterion("RoleID <=", value, "roleid");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoleidIn(List<Integer> values) {
+            addCriterion("RoleID in", values, "roleid");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoleidNotIn(List<Integer> values) {
+            addCriterion("RoleID not in", values, "roleid");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoleidBetween(Integer value1, Integer value2) {
+            addCriterion("RoleID between", value1, value2, "roleid");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoleidNotBetween(Integer value1, Integer value2) {
+            addCriterion("RoleID not between", value1, value2, "roleid");
+            return (Criteria) this;
+        }
+
+        public Criteria andRolenameIsNull() {
+            addCriterion("RoleName is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRolenameIsNotNull() {
+            addCriterion("RoleName is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRolenameEqualTo(String value) {
+            addCriterion("RoleName =", value, "rolename");
+            return (Criteria) this;
+        }
+
+        public Criteria andRolenameNotEqualTo(String value) {
+            addCriterion("RoleName <>", value, "rolename");
+            return (Criteria) this;
+        }
+
+        public Criteria andRolenameGreaterThan(String value) {
+            addCriterion("RoleName >", value, "rolename");
+            return (Criteria) this;
+        }
+
+        public Criteria andRolenameGreaterThanOrEqualTo(String value) {
+            addCriterion("RoleName >=", value, "rolename");
+            return (Criteria) this;
+        }
+
+        public Criteria andRolenameLessThan(String value) {
+            addCriterion("RoleName <", value, "rolename");
+            return (Criteria) this;
+        }
+
+        public Criteria andRolenameLessThanOrEqualTo(String value) {
+            addCriterion("RoleName <=", value, "rolename");
+            return (Criteria) this;
+        }
+
+        public Criteria andRolenameLike(String value) {
+            addCriterion("RoleName like", value, "rolename");
+            return (Criteria) this;
+        }
+
+        public Criteria andRolenameNotLike(String value) {
+            addCriterion("RoleName not like", value, "rolename");
+            return (Criteria) this;
+        }
+
+        public Criteria andRolenameIn(List<String> values) {
+            addCriterion("RoleName in", values, "rolename");
+            return (Criteria) this;
+        }
+
+        public Criteria andRolenameNotIn(List<String> values) {
+            addCriterion("RoleName not in", values, "rolename");
+            return (Criteria) this;
+        }
+
+        public Criteria andRolenameBetween(String value1, String value2) {
+            addCriterion("RoleName between", value1, value2, "rolename");
+            return (Criteria) this;
+        }
+
+        public Criteria andRolenameNotBetween(String value1, String value2) {
+            addCriterion("RoleName not between", value1, value2, "rolename");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoledescIsNull() {
+            addCriterion("RoleDesc is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoledescIsNotNull() {
+            addCriterion("RoleDesc is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoledescEqualTo(String value) {
+            addCriterion("RoleDesc =", value, "roledesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoledescNotEqualTo(String value) {
+            addCriterion("RoleDesc <>", value, "roledesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoledescGreaterThan(String value) {
+            addCriterion("RoleDesc >", value, "roledesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoledescGreaterThanOrEqualTo(String value) {
+            addCriterion("RoleDesc >=", value, "roledesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoledescLessThan(String value) {
+            addCriterion("RoleDesc <", value, "roledesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoledescLessThanOrEqualTo(String value) {
+            addCriterion("RoleDesc <=", value, "roledesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoledescLike(String value) {
+            addCriterion("RoleDesc like", value, "roledesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoledescNotLike(String value) {
+            addCriterion("RoleDesc not like", value, "roledesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoledescIn(List<String> values) {
+            addCriterion("RoleDesc in", values, "roledesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoledescNotIn(List<String> values) {
+            addCriterion("RoleDesc not in", values, "roledesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoledescBetween(String value1, String value2) {
+            addCriterion("RoleDesc between", value1, value2, "roledesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andRoledescNotBetween(String value1, String value2) {
+            addCriterion("RoleDesc not between", value1, value2, "roledesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedIsNull() {
+            addCriterion("IsDeleted is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedIsNotNull() {
+            addCriterion("IsDeleted is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedEqualTo(Boolean value) {
+            addCriterion("IsDeleted =", value, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedNotEqualTo(Boolean value) {
+            addCriterion("IsDeleted <>", value, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedGreaterThan(Boolean value) {
+            addCriterion("IsDeleted >", value, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+            addCriterion("IsDeleted >=", value, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedLessThan(Boolean value) {
+            addCriterion("IsDeleted <", value, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+            addCriterion("IsDeleted <=", value, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedIn(List<Boolean> values) {
+            addCriterion("IsDeleted in", values, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedNotIn(List<Boolean> values) {
+            addCriterion("IsDeleted not in", values, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+            addCriterion("IsDeleted between", value1, value2, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+            addCriterion("IsDeleted not between", value1, value2, "isdeleted");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridIsNull() {
+            addCriterion("CreatedUserID is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridIsNotNull() {
+            addCriterion("CreatedUserID is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridEqualTo(Integer value) {
+            addCriterion("CreatedUserID =", value, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridNotEqualTo(Integer value) {
+            addCriterion("CreatedUserID <>", value, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridGreaterThan(Integer value) {
+            addCriterion("CreatedUserID >", value, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridGreaterThanOrEqualTo(Integer value) {
+            addCriterion("CreatedUserID >=", value, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridLessThan(Integer value) {
+            addCriterion("CreatedUserID <", value, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridLessThanOrEqualTo(Integer value) {
+            addCriterion("CreatedUserID <=", value, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridIn(List<Integer> values) {
+            addCriterion("CreatedUserID in", values, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridNotIn(List<Integer> values) {
+            addCriterion("CreatedUserID not in", values, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridBetween(Integer value1, Integer value2) {
+            addCriterion("CreatedUserID between", value1, value2, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateduseridNotBetween(Integer value1, Integer value2) {
+            addCriterion("CreatedUserID not between", value1, value2, "createduserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeIsNull() {
+            addCriterion("CreatedDatetime is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeIsNotNull() {
+            addCriterion("CreatedDatetime is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeEqualTo(Date value) {
+            addCriterion("CreatedDatetime =", value, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeNotEqualTo(Date value) {
+            addCriterion("CreatedDatetime <>", value, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeGreaterThan(Date value) {
+            addCriterion("CreatedDatetime >", value, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("CreatedDatetime >=", value, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeLessThan(Date value) {
+            addCriterion("CreatedDatetime <", value, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeLessThanOrEqualTo(Date value) {
+            addCriterion("CreatedDatetime <=", value, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeIn(List<Date> values) {
+            addCriterion("CreatedDatetime in", values, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeNotIn(List<Date> values) {
+            addCriterion("CreatedDatetime not in", values, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeBetween(Date value1, Date value2) {
+            addCriterion("CreatedDatetime between", value1, value2, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateddatetimeNotBetween(Date value1, Date value2) {
+            addCriterion("CreatedDatetime not between", value1, value2, "createddatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridIsNull() {
+            addCriterion("LastUpdateUserID is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridIsNotNull() {
+            addCriterion("LastUpdateUserID is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridEqualTo(Integer value) {
+            addCriterion("LastUpdateUserID =", value, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridNotEqualTo(Integer value) {
+            addCriterion("LastUpdateUserID <>", value, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridGreaterThan(Integer value) {
+            addCriterion("LastUpdateUserID >", value, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridGreaterThanOrEqualTo(Integer value) {
+            addCriterion("LastUpdateUserID >=", value, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridLessThan(Integer value) {
+            addCriterion("LastUpdateUserID <", value, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridLessThanOrEqualTo(Integer value) {
+            addCriterion("LastUpdateUserID <=", value, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridIn(List<Integer> values) {
+            addCriterion("LastUpdateUserID in", values, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridNotIn(List<Integer> values) {
+            addCriterion("LastUpdateUserID not in", values, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridBetween(Integer value1, Integer value2) {
+            addCriterion("LastUpdateUserID between", value1, value2, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdateuseridNotBetween(Integer value1, Integer value2) {
+            addCriterion("LastUpdateUserID not between", value1, value2, "lastupdateuserid");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeIsNull() {
+            addCriterion("LastUpdateDatetime is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeIsNotNull() {
+            addCriterion("LastUpdateDatetime is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeEqualTo(Date value) {
+            addCriterion("LastUpdateDatetime =", value, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeNotEqualTo(Date value) {
+            addCriterion("LastUpdateDatetime <>", value, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeGreaterThan(Date value) {
+            addCriterion("LastUpdateDatetime >", value, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("LastUpdateDatetime >=", value, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeLessThan(Date value) {
+            addCriterion("LastUpdateDatetime <", value, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeLessThanOrEqualTo(Date value) {
+            addCriterion("LastUpdateDatetime <=", value, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeIn(List<Date> values) {
+            addCriterion("LastUpdateDatetime in", values, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeNotIn(List<Date> values) {
+            addCriterion("LastUpdateDatetime not in", values, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeBetween(Date value1, Date value2) {
+            addCriterion("LastUpdateDatetime between", value1, value2, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastupdatedatetimeNotBetween(Date value1, Date value2) {
+            addCriterion("LastUpdateDatetime not between", value1, value2, "lastupdatedatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsenabledIsNull() {
+            addCriterion("IsEnabled is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsenabledIsNotNull() {
+            addCriterion("IsEnabled is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsenabledEqualTo(Boolean value) {
+            addCriterion("IsEnabled =", value, "isenabled");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsenabledNotEqualTo(Boolean value) {
+            addCriterion("IsEnabled <>", value, "isenabled");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsenabledGreaterThan(Boolean value) {
+            addCriterion("IsEnabled >", value, "isenabled");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsenabledGreaterThanOrEqualTo(Boolean value) {
+            addCriterion("IsEnabled >=", value, "isenabled");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsenabledLessThan(Boolean value) {
+            addCriterion("IsEnabled <", value, "isenabled");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsenabledLessThanOrEqualTo(Boolean value) {
+            addCriterion("IsEnabled <=", value, "isenabled");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsenabledIn(List<Boolean> values) {
+            addCriterion("IsEnabled in", values, "isenabled");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsenabledNotIn(List<Boolean> values) {
+            addCriterion("IsEnabled not in", values, "isenabled");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsenabledBetween(Boolean value1, Boolean value2) {
+            addCriterion("IsEnabled between", value1, value2, "isenabled");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsenabledNotBetween(Boolean value1, Boolean value2) {
+            addCriterion("IsEnabled not between", value1, value2, "isenabled");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}

+ 341 - 0
src/main/java/com/ssm/model/system/SysUser.java

@@ -0,0 +1,341 @@
+package com.ssm.model.system;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+import com.ssm.util.page.BaseEntity;
+
+public class SysUser extends BaseEntity implements Serializable{
+	
+    /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private Integer userid;
+
+    private String username;
+
+    private String usernameen;
+    
+    private String employeeno;
+
+    private String gender;
+
+    private String password;
+    
+    private SysDepartment sysDepartment;
+
+    private SysPosition sysPosition;
+
+    private String phonenumber;
+
+    private String mobilenumber;
+
+    private String emailaddress;
+
+    private String area;
+
+    private String linemanagerid;
+
+    private Date entrydate;
+
+    private Date birthday;
+
+    private String headimageurl;
+
+    private String ownedcompany;
+
+    private String worklocation;
+
+    private String address;
+
+    private Date lastlogindate;
+
+    private String lastloginip;
+
+    private Integer logincounts;
+
+    private Boolean isenabled;
+
+    private Boolean isdeleted;
+
+    private Integer createduserid;
+
+    private Date createddatetime;
+
+    private Integer lastupdateuserid;
+
+    private Date lastupdatedatetime;
+    
+    private List<SysRole> roleList;
+
+	private String j_password;//旧密码
+    
+    private String cf_password;//重复输入密码
+    public String getJ_password() {
+		return j_password;
+	}
+
+	public void setJ_password(String j_password) {
+		this.j_password = j_password;
+	}
+
+	public String getCf_password() {
+		return cf_password;
+	}
+
+	public void setCf_password(String cf_password) {
+		this.cf_password = cf_password;
+	}
+
+    public Integer getUserid() {
+        return userid;
+    }
+
+    public void setUserid(Integer userid) {
+        this.userid = userid;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username == null ? null : username.trim();
+    }
+
+    public String getUsernameen() {
+        return usernameen;
+    }
+
+    public void setUsernameen(String usernameen) {
+        this.usernameen = usernameen == null ? null : usernameen.trim();
+    }
+
+    public String getEmployeeno() {
+        return employeeno;
+    }
+
+    public void setEmployeeno(String employeeno) {
+        this.employeeno = employeeno == null ? null : employeeno.trim();
+    }
+
+    public String getGender() {
+        return gender;
+    }
+
+    public void setGender(String gender) {
+        this.gender = gender == null ? null : gender.trim();
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password == null ? null : password.trim();
+    }
+    
+    public SysDepartment getSysDepartment() {
+		return sysDepartment;
+	}
+
+	public void setSysDepartment(SysDepartment sysDepartment) {
+		this.sysDepartment = sysDepartment;
+	}
+
+	public SysPosition getSysPosition() {
+		return sysPosition;
+	}
+
+	public void setSysPosition(SysPosition sysPosition) {
+		this.sysPosition = sysPosition;
+	}
+
+	public String getPhonenumber() {
+        return phonenumber;
+    }
+
+    public void setPhonenumber(String phonenumber) {
+        this.phonenumber = phonenumber == null ? null : phonenumber.trim();
+    }
+
+    public String getMobilenumber() {
+        return mobilenumber;
+    }
+
+    public void setMobilenumber(String mobilenumber) {
+        this.mobilenumber = mobilenumber == null ? null : mobilenumber.trim();
+    }
+
+    public String getEmailaddress() {
+        return emailaddress;
+    }
+
+    public void setEmailaddress(String emailaddress) {
+        this.emailaddress = emailaddress == null ? null : emailaddress.trim();
+    }
+
+    public String getArea() {
+        return area;
+    }
+
+    public void setArea(String area) {
+        this.area = area == null ? null : area.trim();
+    }
+
+    public String getLinemanagerid() {
+        return linemanagerid;
+    }
+
+    public void setLinemanagerid(String linemanagerid) {
+        this.linemanagerid = linemanagerid == null ? null : linemanagerid.trim();
+    }
+
+    public Date getEntrydate() {
+        return entrydate;
+    }
+
+    public void setEntrydate(Date entrydate) {
+        this.entrydate = entrydate;
+    }
+
+    public Date getBirthday() {
+        return birthday;
+    }
+
+    public void setBirthday(Date birthday) {
+        this.birthday = birthday;
+    }
+
+    public String getHeadimageurl() {
+        return headimageurl;
+    }
+
+    public void setHeadimageurl(String headimageurl) {
+        this.headimageurl = headimageurl == null ? null : headimageurl.trim();
+    }
+
+    public String getOwnedcompany() {
+        return ownedcompany;
+    }
+
+    public void setOwnedcompany(String ownedcompany) {
+        this.ownedcompany = ownedcompany == null ? null : ownedcompany.trim();
+    }
+
+    public String getWorklocation() {
+        return worklocation;
+    }
+
+    public void setWorklocation(String worklocation) {
+        this.worklocation = worklocation == null ? null : worklocation.trim();
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address == null ? null : address.trim();
+    }
+
+    public Date getLastlogindate() {
+        return lastlogindate;
+    }
+
+    public void setLastlogindate(Date lastlogindate) {
+        this.lastlogindate = lastlogindate;
+    }
+
+    public String getLastloginip() {
+        return lastloginip;
+    }
+
+    public void setLastloginip(String lastloginip) {
+        this.lastloginip = lastloginip == null ? null : lastloginip.trim();
+    }
+
+    public Integer getLogincounts() {
+        return logincounts;
+    }
+
+    public void setLogincounts(Integer logincounts) {
+        this.logincounts = logincounts;
+    }
+
+    public Boolean getIsenabled() {
+        return isenabled;
+    }
+
+    public void setIsenabled(Boolean isenabled) {
+        this.isenabled = isenabled;
+    }
+
+    public Boolean getIsdeleted() {
+        return isdeleted;
+    }
+
+    public void setIsdeleted(Boolean isdeleted) {
+        this.isdeleted = isdeleted;
+    }
+
+    public Integer getCreateduserid() {
+        return createduserid;
+    }
+
+    public void setCreateduserid(Integer createduserid) {
+        this.createduserid = createduserid;
+    }
+
+    public Date getCreateddatetime() {
+        return createddatetime;
+    }
+
+    public void setCreateddatetime(Date createddatetime) {
+        this.createddatetime = createddatetime;
+    }
+
+    public Integer getLastupdateuserid() {
+        return lastupdateuserid;
+    }
+
+    public void setLastupdateuserid(Integer lastupdateuserid) {
+        this.lastupdateuserid = lastupdateuserid;
+    }
+
+    public Date getLastupdatedatetime() {
+        return lastupdatedatetime;
+    }
+
+    public void setLastupdatedatetime(Date lastupdatedatetime) {
+        this.lastupdatedatetime = lastupdatedatetime;
+    }
+
+	public List<SysRole> getRoleList() {
+		return roleList;
+	}
+
+	public void setRoleList(List<SysRole> roleList) {
+		this.roleList = roleList;
+	}
+
+	@Override
+	public String toString() {
+		return "SysUser [userid=" + userid + ", username=" + username + ", usernameen=" + usernameen + ", employeeno="
+				+ employeeno + ", gender=" + gender + ", password=" + password + ", sysDepartment=" + sysDepartment
+				+ ", sysPosition=" + sysPosition + ", phonenumber=" + phonenumber + ", mobilenumber=" + mobilenumber
+				+ ", emailaddress=" + emailaddress + ", area=" + area + ", linemanagerid=" + linemanagerid
+				+ ", entrydate=" + entrydate + ", birthday=" + birthday + ", headimageurl=" + headimageurl
+				+ ", ownedcompany=" + ownedcompany + ", worklocation=" + worklocation + ", address=" + address
+				+ ", lastlogindate=" + lastlogindate + ", lastloginip=" + lastloginip + ", logincounts=" + logincounts
+				+ ", isenabled=" + isenabled + ", isdeleted=" + isdeleted + ", createduserid=" + createduserid
+				+ ", createddatetime=" + createddatetime + ", lastupdateuserid=" + lastupdateuserid
+				+ ", lastupdatedatetime=" + lastupdatedatetime + ", roleList=" + roleList + ", j_password=" + j_password
+				+ ", cf_password=" + cf_password + "]";
+	}
+    
+	
+}

Diferenças do arquivo suprimidas por serem muito extensas
+ 2031 - 0
src/main/java/com/ssm/model/system/SysUserExample.java


+ 104 - 0
src/main/java/com/ssm/model/system/SysUserLoginLog.java

@@ -0,0 +1,104 @@
+package com.ssm.model.system;
+
+import java.util.Date;
+
+import com.ssm.util.page.BaseEntity;
+
+public class SysUserLoginLog extends BaseEntity{
+    /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private Integer id;
+
+    private Integer userid;
+
+    private String ipaddress;
+
+    private String comments;
+
+    private Date createddate;
+    
+    private String cd;
+    
+    private Date startDate;
+    
+    private Date endDate;
+    
+    private String username;
+    
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getUserid() {
+        return userid;
+    }
+
+    public void setUserid(Integer userid) {
+        this.userid = userid;
+    }
+
+    public String getIpaddress() {
+        return ipaddress;
+    }
+
+    public void setIpaddress(String ipaddress) {
+        this.ipaddress = ipaddress == null ? null : ipaddress.trim();
+    }
+
+    public String getComments() {
+        return comments;
+    }
+
+    public void setComments(String comments) {
+        this.comments = comments == null ? null : comments.trim();
+    }
+
+    public Date getCreateddate() {
+        return createddate;
+    }
+
+    public void setCreateddate(Date createddate) {
+        this.createddate = createddate;
+    }
+
+	public String getCd() {
+		return cd;
+	}
+
+	public void setCd(String cd) {
+		this.cd = cd;
+	}
+
+	public Date getStartDate() {
+		return startDate;
+	}
+
+	public void setStartDate(Date startDate) {
+		this.startDate = startDate;
+	}
+
+	public Date getEndDate() {
+		return endDate;
+	}
+
+	public void setEndDate(Date endDate) {
+		this.endDate = endDate;
+	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+	
+	
+}

+ 19 - 0
src/main/java/com/ssm/model/validator/DepartmentValidator.java

@@ -0,0 +1,19 @@
+package com.ssm.model.validator;
+
+import org.springframework.validation.Errors;
+import org.springframework.validation.ValidationUtils;
+import org.springframework.validation.Validator;
+
+import com.ssm.model.system.SysDepartment;
+
+public class DepartmentValidator implements Validator{
+	@Override
+	public boolean supports(Class<?> arg0) {
+		return SysDepartment.class.equals(arg0);
+	}
+
+	@Override
+	public void validate(Object arg0, Errors errors) {
+		ValidationUtils.rejectIfEmpty(errors, "depname", null, "部门名称不能为空");
+	}
+}

+ 23 - 0
src/main/java/com/ssm/model/validator/PositionValidator.java

@@ -0,0 +1,23 @@
+package com.ssm.model.validator;
+
+import org.springframework.validation.Errors;
+import org.springframework.validation.ValidationUtils;
+import org.springframework.validation.Validator;
+
+import com.ssm.model.system.SysPosition;
+
+/**
+ * 职位验证
+ * */
+public class PositionValidator implements Validator {
+	@Override
+	public boolean supports(Class<?> arg0) {
+		return SysPosition.class.equals(arg0);
+	}
+
+	@Override
+	public void validate(Object arg0, Errors errors) {
+		ValidationUtils.rejectIfEmpty(errors, "positionname", null, "职位名称不能为空");
+		ValidationUtils.rejectIfEmpty(errors, "positioncode", null, "职位编码不能为空");
+	}
+}

+ 22 - 0
src/main/java/com/ssm/model/validator/SysDictionaryValidator.java

@@ -0,0 +1,22 @@
+package com.ssm.model.validator;
+
+import org.springframework.validation.Errors;
+import org.springframework.validation.ValidationUtils;
+import org.springframework.validation.Validator;
+
+import com.ssm.model.system.SysDictionary;
+
+public class SysDictionaryValidator implements Validator {
+
+	@Override
+	public boolean supports(Class<?> clazz) {
+		return SysDictionary.class.equals(clazz);
+	}
+
+	@Override
+	public void validate(Object target, Errors errors) {
+		ValidationUtils.rejectIfEmpty(errors, "dictname", null, "常量名称不能为空");
+		ValidationUtils.rejectIfEmpty(errors, "dictvalue", null, "常量值不能为空");
+	}
+
+}

+ 21 - 0
src/main/java/com/ssm/model/validator/SysMenuValidator.java

@@ -0,0 +1,21 @@
+package com.ssm.model.validator;
+
+import org.springframework.validation.Errors;
+import org.springframework.validation.ValidationUtils;
+import org.springframework.validation.Validator;
+
+import com.ssm.model.system.SysMenu;
+
+public class SysMenuValidator implements Validator{
+	@Override
+	public boolean supports(Class<?> arg0) {
+		return SysMenu.class.equals(arg0);
+	}
+
+	@Override
+	public void validate(Object arg0, Errors errors) {
+		ValidationUtils.rejectIfEmpty(errors, "menucnname", null, "菜单中文名不能为空");
+		ValidationUtils.rejectIfEmpty(errors, "menuenname", null, "菜单英文名不能为空");
+		
+	}
+}

+ 20 - 0
src/main/java/com/ssm/model/validator/SysRoleValidator.java

@@ -0,0 +1,20 @@
+package com.ssm.model.validator;
+
+import org.springframework.validation.Errors;
+import org.springframework.validation.ValidationUtils;
+import org.springframework.validation.Validator;
+
+import com.ssm.model.system.SysRole;
+
+public class SysRoleValidator implements Validator{
+	@Override
+	public boolean supports(Class<?> arg0) {
+		return SysRole.class.equals(arg0);
+	}
+
+	@Override
+	public void validate(Object arg0, Errors errors) {
+		ValidationUtils.rejectIfEmpty(errors, "RoleName", null, "角色名不能为空");
+		ValidationUtils.rejectIfEmpty(errors, "RoleDesc", null, "角色描述不能为空");
+	}
+}

+ 26 - 0
src/main/java/com/ssm/model/validator/UserCreateValidator.java

@@ -0,0 +1,26 @@
+package com.ssm.model.validator;
+
+import org.springframework.validation.Errors;
+import org.springframework.validation.ValidationUtils;
+import org.springframework.validation.Validator;
+
+import com.ssm.model.system.SysUser;
+/**
+ * 添加用户表单验证
+ * @author xk
+ */
+public class UserCreateValidator implements Validator{
+
+	@Override
+	public boolean supports(Class<?> arg0) {
+		return SysUser.class.equals(arg0);
+	}
+
+	@Override
+	public void validate(Object arg0, Errors errors) {
+		ValidationUtils.rejectIfEmpty(errors, "username", null, "姓名不能为空");
+		ValidationUtils.rejectIfEmpty(errors, "employeeno", null, "用户名不能为空");
+		ValidationUtils.rejectIfEmpty(errors, "password", null, "密码不能为空");
+	}
+
+}

+ 25 - 0
src/main/java/com/ssm/model/validator/UserLoginValidator.java

@@ -0,0 +1,25 @@
+package com.ssm.model.validator;
+
+import org.springframework.validation.Errors;
+import org.springframework.validation.ValidationUtils;
+import org.springframework.validation.Validator;
+
+import com.ssm.model.system.SysUser;
+/**
+ * 用户登录表单验证
+ * @author xk
+ */
+public class UserLoginValidator implements Validator{
+
+	@Override
+	public boolean supports(Class<?> arg0) {
+		return SysUser.class.equals(arg0);
+	}
+
+	@Override
+	public void validate(Object arg0, Errors errors) {
+		ValidationUtils.rejectIfEmpty(errors, "employeeno", null, "用户名不能为空");
+		ValidationUtils.rejectIfEmpty(errors, "password", null, "密码不能为空");
+	}
+
+}

+ 25 - 0
src/main/java/com/ssm/service/business/SmsRecordService.java

@@ -0,0 +1,25 @@
+package com.ssm.service.business;
+
+import com.ssm.model.business.SmsRecord;
+import com.ssm.util.page.PagedResult;
+
+public interface SmsRecordService {
+
+	/**
+	 * 将短信记录保存到数据库
+	 * @param smsRecord
+	 * @return
+	 */
+	int insertSelective(SmsRecord smsRecord);
+
+	/**
+	 * 查询短信历史记录
+	 * @param smsRecord
+	 * @param pageNo
+	 * @param pageSize
+	 * @return
+	 */
+	PagedResult<SmsRecord> selectSmsRecord(SmsRecord smsRecord, Integer pageNo,
+			Integer pageSize);
+
+}

+ 14 - 0
src/main/java/com/ssm/service/business/SmsSendStateService.java

@@ -0,0 +1,14 @@
+package com.ssm.service.business;
+
+import com.ssm.model.business.SmsSendState;
+
+public interface SmsSendStateService {
+
+	/**
+	 * 插入发送短信状态
+	 * @param sss
+	 * @return
+	 */
+	int insertSelective(SmsSendState sss);
+
+}

+ 25 - 0
src/main/java/com/ssm/service/business/SmsUpMessageService.java

@@ -0,0 +1,25 @@
+package com.ssm.service.business;
+
+import com.ssm.model.business.SmsUpMessage;
+import com.ssm.util.page.PagedResult;
+
+public interface SmsUpMessageService {
+
+	/**
+	 * 向数据库插入上行数据
+	 * @param smsUpMessage
+	 * @return
+	 */
+	int insertSelective(SmsUpMessage smsUpMessage);
+
+	/**
+	 * 查询上行数据
+	 * @param smsUpMessage
+	 * @param pageNo
+	 * @param pageSize
+	 * @return
+	 */
+	PagedResult<SmsUpMessage> selectsmsUpMessage(SmsUpMessage smsUpMessage,
+			Integer pageNo, Integer pageSize);
+
+}

+ 44 - 0
src/main/java/com/ssm/service/business/SmsUserService.java

@@ -0,0 +1,44 @@
+package com.ssm.service.business;
+
+import com.ssm.model.business.SmsUser;
+import com.ssm.util.page.PagedResult;
+
+public interface SmsUserService {
+
+	/**
+	 * 查询用户
+	 * @param smsUser
+	 * @param pageNo
+	 * @param pageSize
+	 * @return
+	 */
+	PagedResult<SmsUser> selectSmsUser(SmsUser smsUser, Integer pageNo,
+			Integer pageSize);
+
+	/**
+	 * 添加用户
+	 * @param smsUser
+	 * @return
+	 */
+	int insertSelective(SmsUser smsUser);
+
+	/**
+	 * 删除用户信息
+	 * @param valueOf
+	 * @return
+	 */
+	int deleteByPrimaryKey(Integer smsUserId);
+
+	SmsUser selectSmsUserByUserId(Integer userid);
+
+	int updateSmsUserSave(SmsUser smsUser);
+
+	/**
+	 * 根据手机号码查询数量
+	 * @param phoen
+	 * @return
+	 */
+	int selectSmsUserCountByPhoen(String phoen);
+
+	
+}

+ 9 - 0
src/main/java/com/ssm/service/business/UploadService.java

@@ -0,0 +1,9 @@
+package com.ssm.service.business;
+
+import com.ssm.model.business.SmsUser;
+
+
+public interface UploadService {
+
+	public int addsmsUser(SmsUser smsUser);
+}

+ 37 - 0
src/main/java/com/ssm/service/impl/business/SmsRecordServiceImpl.java

@@ -0,0 +1,37 @@
+package com.ssm.service.impl.business;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.github.pagehelper.PageHelper;
+import com.ssm.mapper.business.SmsRecordMapper;
+import com.ssm.model.business.SmsRecord;
+import com.ssm.service.business.SmsRecordService;
+import com.ssm.util.page.BeanUtil;
+import com.ssm.util.page.PagedResult;
+
+@Service
+public class SmsRecordServiceImpl implements SmsRecordService {
+
+	@Autowired
+	private SmsRecordMapper smsRecordMapper;
+
+	@Override
+	public int insertSelective(SmsRecord smsRecord) {
+		
+		return smsRecordMapper.insertSelective(smsRecord);
+	}
+
+	@Override
+	public PagedResult<SmsRecord> selectSmsRecord(SmsRecord smsRecord,
+			Integer pageNo, Integer pageSize) {
+		pageNo = pageNo == null ? 1 : pageNo;
+		pageSize = pageSize == null ? 10 : pageSize;
+		PageHelper.startPage(pageNo, pageSize);
+		List<SmsRecord> list = smsRecordMapper.selectSmsRecord(smsRecord);
+		PagedResult<SmsRecord> pageResult = BeanUtil.toPagedResult(list);
+		return pageResult;
+	}
+}

+ 21 - 0
src/main/java/com/ssm/service/impl/business/SmsSendStateServiceImpl.java

@@ -0,0 +1,21 @@
+package com.ssm.service.impl.business;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.ssm.mapper.business.SmsSendStateMapper;
+import com.ssm.model.business.SmsSendState;
+import com.ssm.service.business.SmsSendStateService;
+
+@Service
+public class SmsSendStateServiceImpl implements SmsSendStateService
+{
+	@Autowired
+	private SmsSendStateMapper smsSendStateMapper;
+
+	@Override
+	public int insertSelective(SmsSendState sss) {
+		
+		return smsSendStateMapper.insertSelective(sss);
+	}
+}

+ 37 - 0
src/main/java/com/ssm/service/impl/business/SmsUpMessageServiceImpl.java

@@ -0,0 +1,37 @@
+package com.ssm.service.impl.business;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.github.pagehelper.PageHelper;
+import com.ssm.mapper.business.SmsUpMessageMapper;
+import com.ssm.model.business.SmsUpMessage;
+import com.ssm.util.page.BeanUtil;
+import com.ssm.util.page.PagedResult;
+
+@Service
+public class SmsUpMessageServiceImpl implements
+		com.ssm.service.business.SmsUpMessageService {
+
+	@Autowired
+	private SmsUpMessageMapper smsUpMessageMapper;
+
+	@Override
+	public int insertSelective(SmsUpMessage smsUpMessage) {
+		
+		return smsUpMessageMapper.insertSelective(smsUpMessage);
+	}
+
+	@Override
+	public PagedResult<SmsUpMessage> selectsmsUpMessage(
+			SmsUpMessage smsUpMessage, Integer pageNo, Integer pageSize) {
+		pageNo = pageNo == null ? 1 : pageNo;
+		pageSize = pageSize == null ? 10 : pageSize;
+		PageHelper.startPage(pageNo, pageSize);
+		List<SmsUpMessage> list = smsUpMessageMapper.selectsmsUpMessage(smsUpMessage);
+		PagedResult<SmsUpMessage> pageResult = BeanUtil.toPagedResult(list);
+		return pageResult;
+	}
+}

+ 59 - 0
src/main/java/com/ssm/service/impl/business/SmsUserServiceImpl.java

@@ -0,0 +1,59 @@
+package com.ssm.service.impl.business;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.github.pagehelper.PageHelper;
+import com.ssm.mapper.business.SmsUserMapper;
+import com.ssm.model.business.SmsUser;
+import com.ssm.service.business.SmsUserService;
+import com.ssm.util.page.BeanUtil;
+import com.ssm.util.page.PagedResult;
+
+@Service
+public class SmsUserServiceImpl implements SmsUserService {
+	@Autowired
+	private SmsUserMapper smsUserMapper;
+
+	@Override
+	public PagedResult<SmsUser> selectSmsUser(SmsUser smsUser, Integer pageNo,
+			Integer pageSize) {
+		pageNo = pageNo == null ? 1 : pageNo;
+		pageSize = pageSize == null ? 500 : pageSize;
+		PageHelper.startPage(pageNo, pageSize);
+		List<SmsUser> list = smsUserMapper.selectSmsUser(smsUser);
+		PagedResult<SmsUser> pageResult = BeanUtil.toPagedResult(list);
+		return pageResult;
+	}
+
+	@Override
+	public int insertSelective(SmsUser smsUser) {
+		return smsUserMapper.insertSelective(smsUser);
+	}
+
+	@Override
+	public int deleteByPrimaryKey(Integer smsUserId) {
+		return smsUserMapper.deleteByPrimaryKey(smsUserId);
+	}
+
+	@Override
+	public SmsUser selectSmsUserByUserId(Integer userId) {
+		return smsUserMapper.selectByPrimaryKey(userId);
+	}
+
+	@Override
+	public int updateSmsUserSave(SmsUser smsUser) {
+		
+		return smsUserMapper.updateByPrimaryKeySelective(smsUser);
+	}
+
+	@Override
+	public int selectSmsUserCountByPhoen(String phoen) {
+		
+		return smsUserMapper.selectSmsUserCountByPhoen(phoen);
+	}
+
+
+}

+ 22 - 0
src/main/java/com/ssm/service/impl/business/UploadServiceImpl.java

@@ -0,0 +1,22 @@
+package com.ssm.service.impl.business;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.ssm.mapper.business.SmsUserMapper;
+import com.ssm.model.business.SmsUser;
+import com.ssm.service.business.UploadService;
+
+@Service
+public class UploadServiceImpl implements UploadService{
+
+	@Autowired
+	private SmsUserMapper smsUserMapper;
+	
+	@Override
+	public int addsmsUser(SmsUser smsUser) {
+		return smsUserMapper.insertSelective(smsUser);
+	}
+	
+
+}

+ 105 - 0
src/main/java/com/ssm/service/impl/system/SysDepartmentServiceImpl.java

@@ -0,0 +1,105 @@
+package com.ssm.service.impl.system;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.github.pagehelper.PageHelper;
+import com.ssm.mapper.system.SysDepartmentMapper;
+import com.ssm.model.system.SysDepartment;
+import com.ssm.service.system.SysDepartmentService;
+import com.ssm.util.page.BeanUtil;
+import com.ssm.util.page.PagedResult;
+
+@Service
+public class SysDepartmentServiceImpl implements SysDepartmentService{
+	
+	@Autowired
+	private SysDepartmentMapper sysDapartmentMapper;
+	
+	@Override
+	public List<SysDepartment> findAll() {
+		return sysDapartmentMapper.selectAll();
+	}
+	
+	@Override
+	public List<SysDepartment> getDepartmentList() {
+		// TODO Auto-generated method stub
+		return sysDapartmentMapper.sysDepartmentList();
+	}
+
+	/**
+	 * 职位查询
+	 * */
+	@Override
+	public PagedResult<SysDepartment> sysDepartmentQuery(
+			SysDepartment sysDepartment, Integer pageNo, Integer pageSize) {
+		// TODO Auto-generated method stub
+		
+		// TODO Auto-generated method stub
+		pageNo = pageNo == null?1:pageNo;  
+	    pageSize = pageSize == null?10:pageSize;
+	    PageHelper.startPage(pageNo,pageSize);  //startPage是告诉拦截器说我要开始分页了。分页参数是这两个。  
+	    List<SysDepartment> list = sysDapartmentMapper.sysDepartmentQuery(sysDepartment);
+/*	    for (SysDepartment sysDepartment2 : list) {
+	    	if(sysDepartment2.getDeptrolecode()!=null ){
+	    		String[] aa=sysDepartment2.getDeptrolecode().split("\\.");
+	    		if(aa.length==0 || aa.length==1){
+	    			sysDepartment2.setLevel(1);
+				}else if(aa.length==2){
+	    			sysDepartment2.setLevel(2);
+				}else{
+	    			sysDepartment2.setLevel(3);
+				}
+	    	}else{
+    			sysDepartment2.setLevel(1);
+	    	}
+	    	
+		}*/
+		PagedResult<SysDepartment> pagedResult = BeanUtil.toPagedResult(list);  
+		return pagedResult;
+	}
+
+	@Override
+	public void updateByPrimaryKeySelective(SysDepartment record) {
+		// TODO Auto-generated method stub
+		this.sysDapartmentMapper.updateByPrimaryKeySelective(record);
+	}
+
+	@Override
+	public void insertSelective(SysDepartment sysDepartment) {
+		// TODO Auto-generated method stub
+		this.sysDapartmentMapper.insertSelective(sysDepartment);
+	}
+
+	@Override
+	public SysDepartment selectByPrimaryKey(Integer depid) {
+		// TODO Auto-generated method stub
+		return sysDapartmentMapper.selectByPrimaryKey(depid);
+	}
+
+	@Override
+	public int countByExample() {
+		// TODO Auto-generated method stub
+		return sysDapartmentMapper.countByExample(null);
+	}
+
+	@Override
+	public SysDepartment sysDepartmentParentid(Integer parentid) {
+		// TODO Auto-generated method stub
+		return sysDapartmentMapper.sysDepartmentParentid(parentid);
+	}
+
+	@Override
+	public Integer selectParentid(Integer parentid) {
+		// TODO Auto-generated method stub
+		return sysDapartmentMapper.selectParentid(parentid);
+	}
+
+	@Override
+	public Integer selectMaxParentid(Integer parentid) {
+		// TODO Auto-generated method stub
+		return sysDapartmentMapper.selectMaxParentid(parentid);
+	}
+}

+ 88 - 0
src/main/java/com/ssm/service/impl/system/SysDictionaryServiceImpl.java

@@ -0,0 +1,88 @@
+package com.ssm.service.impl.system;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.github.pagehelper.PageHelper;
+import com.ssm.mapper.system.SysDictionaryMapper;
+import com.ssm.model.system.SysDictionary;
+import com.ssm.service.system.SysDictionaryService;
+import com.ssm.util.page.BeanUtil;
+import com.ssm.util.page.PagedResult;
+
+@Service
+public class SysDictionaryServiceImpl implements SysDictionaryService{
+	
+	@Autowired
+	private SysDictionaryMapper sysDictionaryMapper;
+	
+	@Override
+	public List<SysDictionary> selectByNamespace(String namespace) {
+		return sysDictionaryMapper.selectByNamespace(namespace);
+	}
+	
+	@Override
+	public List<SysDictionary> selectByEnabledNamespace(String namespace) {
+		return sysDictionaryMapper.selectByEnabledNamespace(namespace);
+	}
+	
+	@Override
+	public List<SysDictionary> selectConstCategory() {
+		return sysDictionaryMapper.selectConstCategory();
+	}
+	
+	/**
+	 * 分页查询字典
+	 */
+	@Override
+	public PagedResult<SysDictionary> findByCondition(SysDictionary record,
+			Integer pageNo, Integer pageSize) {
+		pageNo = pageNo == null ? 1 : pageNo;
+		pageSize = pageSize == null ? 10 : pageSize;
+		PageHelper.startPage(pageNo, pageSize);
+		List<SysDictionary> list = sysDictionaryMapper.selectByCondition(record);
+		PagedResult<SysDictionary>  pageresult = BeanUtil.toPagedResult(list);
+		return pageresult;
+	}
+
+	@Override
+	public PagedResult<SysDictionary> selectByCondition(SysDictionary record,
+			Integer pageNo, Integer pageSize) {
+		pageNo = pageNo == null ? 1 : pageNo;
+		pageSize = pageSize == null ? 10 : pageSize;
+		PageHelper.startPage(pageNo, pageSize);
+		List<SysDictionary> list = sysDictionaryMapper.selectByCondition2(record);
+		PagedResult<SysDictionary>  pageresult = BeanUtil.toPagedResult(list);
+		return pageresult;
+	}
+
+	@Override
+	public SysDictionary selectByNamespaceAndValue(String namespace,
+			String value) {
+		return sysDictionaryMapper.selectByNamespaceAndValue(namespace, value);
+	}
+
+	@Override
+	public int saveSysDictionary(SysDictionary record) {
+		return sysDictionaryMapper.insertSelective(record);
+	}
+
+	@Override
+	public SysDictionary selectById(Integer id) {
+		return sysDictionaryMapper.selectByPrimaryKey(id);
+	}
+
+	@Override
+	public int updateSysDictionary(SysDictionary record) {
+		return sysDictionaryMapper.updateByPrimaryKeySelective(record);
+	}
+
+	@Override
+	public List<SysDictionary> selectByAllKeyword(String parseResumeSkill) {
+		
+		return sysDictionaryMapper.selectByEnabledNamespace(parseResumeSkill);
+	}
+
+}

+ 46 - 0
src/main/java/com/ssm/service/impl/system/SysLogServiceImpl.java

@@ -0,0 +1,46 @@
+package com.ssm.service.impl.system;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.github.pagehelper.PageHelper;
+import com.ssm.mapper.system.SysLogMapper;
+import com.ssm.model.system.SysLog;
+import com.ssm.service.system.SysLogService;
+import com.ssm.util.page.BeanUtil;
+import com.ssm.util.page.PagedResult;
+
+@Service
+public class SysLogServiceImpl implements SysLogService {
+
+	@Autowired
+	SysLogMapper sysLogMapper;
+
+	// 完全 插入数据
+	@Override
+	@Transactional(value = "txManager", propagation = Propagation.REQUIRED)
+	public int insert(SysLog record) {
+		return sysLogMapper.insert(record);
+	}
+
+	@Override
+	public PagedResult<SysLog> selectlog(SysLog sysLog, Integer pageNo,
+			Integer pageSize) {
+		// TODO Auto-generated method stub
+		pageNo = pageNo == null?1:pageNo;  
+	    pageSize = pageSize == null?10:pageSize;
+	    PageHelper.startPage(pageNo,pageSize);  //startPage是告诉拦截器说我要开始分页了。分页参数是这两个。  
+	    List<SysLog> list = sysLogMapper.selectlog(sysLog);
+		PagedResult<SysLog> pagedResult = BeanUtil.toPagedResult(list);  
+		return pagedResult;
+	}
+
+	@Override
+	public SysLog findById(Integer id) {
+		return sysLogMapper.selectById(id);
+	}
+}

+ 332 - 0
src/main/java/com/ssm/service/impl/system/SysMenuServiceImp.java

@@ -0,0 +1,332 @@
+package com.ssm.service.impl.system;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import javax.servlet.http.HttpSession;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.ssm.mapper.system.SysMenuMapper;
+import com.ssm.model.system.SysMenu;
+import com.ssm.model.system.SysUser;
+import com.ssm.service.system.SysMenuService;
+import com.ssm.util.PackageBeanUtils;
+
+
+@Service
+public class SysMenuServiceImp implements SysMenuService{
+
+	
+	@Autowired
+	 SysMenuMapper menuMapper;
+	
+	
+	/**
+	 * 获取菜单列表
+	 * @return
+	 */
+	public List<SysMenu> getMenuList(HttpSession session,SysUser sysUser){
+		
+		List<SysMenu> lstRoot = new ArrayList<SysMenu>();
+		List<SysMenu> menus = new ArrayList<SysMenu>();
+		
+		menus  = menuMapper.selectSysUserMenus(sysUser.getUserid());
+		
+		
+		if(null != menus && menus.size() > 0){
+			for (SysMenu sysMenuWithBLOBs : menus) {
+				
+				if(sysMenuWithBLOBs.getLevel() == 1){
+					lstRoot.add(sysMenuWithBLOBs);
+					
+				}
+				
+			}
+			if(null != lstRoot && lstRoot.size() > 0){
+				
+					for (int i = 0; i < lstRoot.size(); i++) {
+						
+						PackageBeanUtils.packageChildSysmenus(lstRoot.get(i) , menus);
+					}
+				}
+			}
+		/**
+		 * 用户的所有权限菜单
+		 */
+		session.setAttribute("ValidateMenus",menus);
+		/**
+		 * 主页面展示菜单
+		session.setAttribute("menu",lstRoot);
+		 */
+		return lstRoot;
+
+	}
+	
+	
+	
+	
+	/**
+	 * 设置当前选中的菜单项
+	 */
+	public void setCurrentMenu(List<SysMenu> lstMenuInfo, String menuId){
+		
+		for(SysMenu rootMenu : lstMenuInfo){
+			
+			if(rootMenu.getMenuenname().equals(menuId)){
+				rootMenu.setIsenable(true);
+			} else {
+				//List<SysMenuWithBLOBs> lstMenuChild = rootMenu.getChildMenu();
+				
+				List<SysMenu> lstMenuChild = rootMenu.getChildMenu() ;//= menuMapper.selectSysMenuWithBLOBsByPid(parentid);
+				
+				if(lstMenuChild != null){
+					for(SysMenu menuInfo : lstMenuChild){
+						
+						if(menuInfo.getMenuenname().equals(menuId)){
+							menuInfo.setIsenable(true);
+							rootMenu.setIsenable(true);
+						} else{
+							menuInfo.setIsenable(false);
+							rootMenu.setIsenable(false);
+						}
+					}
+				}
+			}
+		}
+		
+	}
+	
+	/**
+	 * 获取菜单列表
+	 * @return
+	 */
+	@Override
+	public List<SysMenu> menuTree(SysMenu menu) {
+		
+		return menuMapper.selectBySysMenuWithBLOBs(menu);
+	}
+	
+	public List<SysMenu> selectMenus(SysMenu menu) {
+		
+		return menuMapper.selectBySysMenuWithBLOBs2(menu);
+	}
+
+	@Override
+	public void  insertMenu(SysMenu menu) {
+		
+		menuMapper.insertSelective(menu);
+	}
+
+	@Override
+	public List<SysMenu> updateMenu(SysMenu menu) {
+		menuMapper.updateByPrimaryKeySelective(menu);
+		return null;// 
+	}
+
+	@Override
+	public List<SysMenu> selectFirstMenu() {
+		return menuMapper.selectFirstMenu();
+	}
+
+	@Override
+	public List<SysMenu> selectFirstMenuByParentId(int parentId) {
+		return menuMapper.selectFirstMenuByParentId(parentId);
+	}
+
+
+	@Override
+	public void deleteMenuById(String id, Integer useid) {
+		
+		SysMenu menu = menuMapper.selectByPrimaryKey(Integer.valueOf(id));
+		menu.setIsdelete(true);
+		menu.setLastupdateuserid(useid);
+		menu.setLastupdatedatetime(new Date());
+		menuMapper.updateByPrimaryKeySelective(menu);
+	}
+
+	@Override
+	public SysMenu selectByPrimaryKey(Integer menuid) {
+		return menuMapper.selectByPrimaryKey(Integer.valueOf(menuid));
+	}
+
+	@Override
+	public Integer selectCountByParentid(Integer parentid) {
+		return menuMapper.selectCountByParentid(parentid);
+	}
+
+	@Override
+	public Integer selectMaxmenuIdByParentid(Integer parentid) {
+		return menuMapper.selectMaxmenuIdByParentid(parentid);
+	}
+
+	@Override
+	public SysMenu selectByMenuId(Integer menuid) {
+		return menuMapper.selectByMenuId(menuid);
+	}
+
+	@Override
+	public List<SysMenu> selectAllpageMenus() {
+		return menuMapper.selectAllpageMenus();
+	}
+
+	@Override
+	public List<SysMenu> selectMenusByPage() {
+		
+		SysMenu menu= new SysMenu();
+		return menuMapper.selectMenusByPage(menu);
+	}
+	
+	@Override
+	public Integer freezeMenuById(SysMenu menu) {
+		return menuMapper.updateByPrimaryKeySelective(menu);
+	}
+	
+	/**
+	 * 获取菜单列表
+	 * @return
+	 */
+	public void renewalMenuSession(HttpSession session,SysUser sysUser){
+		
+		List<SysMenu> lstRoot = new ArrayList<SysMenu>();
+		List<SysMenu> menus = new ArrayList<SysMenu>();
+		
+		menus  = menuMapper.selectSysUserMenus(sysUser.getUserid());
+		
+		
+		if(null != menus && menus.size() > 0){
+			for (SysMenu sysMenuWithBLOBs : menus) {
+				
+				if(sysMenuWithBLOBs.getLevel() == 1){
+					lstRoot.add(sysMenuWithBLOBs);
+					
+				}
+				
+			}
+			if(null != lstRoot && lstRoot.size() > 0){
+				
+					for (int i = 0; i < lstRoot.size(); i++) {
+						
+						PackageBeanUtils.packageChildSysmenus(lstRoot.get(i) , menus);
+					}
+				}
+			}
+		/**
+		 * 用户的所有权限菜单
+		 */
+		session.setAttribute("ValidateMenus",menus);
+		/**
+		 * 主页面展示菜单
+		 */
+		session.setAttribute("menu",lstRoot);
+
+	}
+
+
+
+
+	@Override
+	public Integer selectMaxOrder() {
+		return menuMapper.selectMaxOrder();
+	}
+	
+	@Override
+	public Integer selectMaxOrderUnderParent(Integer parentId) {
+		return menuMapper.selectMaxOrderUnderParent(parentId);
+	}
+	
+	@Override
+	public Integer selectMaxOrderIdUnderParent(Integer parentId) {
+		return menuMapper.selectMaxOrderIdUnderParent(parentId);
+	}
+	
+	@Override
+	public int updateOrderBy(Integer orderBy){
+		return menuMapper.updateOrderBy(orderBy);
+	}
+	
+	@Override
+	public int updateOrderByCount(Integer addNum, Integer orderBy){
+		return menuMapper.updateOrderByCount(addNum, orderBy);
+	}
+
+	@Override
+	public int countSonMenu(Integer menuId) {
+		return menuMapper.countSonMenu(menuId);
+	}
+
+
+
+
+	@Override
+	public int selectPrevOrder(Integer level, Integer orderBy, Integer parentId) {
+		return menuMapper.selectPrevOrder(level, orderBy, parentId);
+	}
+
+
+
+
+	@Override
+	public SysMenu selectMenuByOrderAndParent(Integer orderBy, Integer parentId) {
+		return menuMapper.selectMenuByOrderAndParent(orderBy, parentId);
+	}
+
+
+
+
+	@Override
+	public List<SysMenu> selectMenuByOrderBy(Integer orderBy) {
+		return menuMapper.selectMenuByOrderBy(orderBy);
+	}
+
+
+
+
+	@Override
+	public Integer selectNextOrder(Integer level, Integer orderBy,
+			Integer parentId) {
+		return menuMapper.selectNextOrder(level, orderBy, parentId);
+	}
+
+
+
+
+	@Override
+	public Integer selectNextLevel(Integer level, Integer orderBy) {
+		return menuMapper.selectNextLevel(level, orderBy);
+	}
+
+
+
+
+	@Override
+	public Integer countAdd(Integer from, Integer to) {
+		return menuMapper.countAdd(from, to);
+	}
+
+
+
+
+	@Override
+	public List<SysMenu> addOrderBy(Integer to, Integer from) {
+		return menuMapper.addOrderBy(to, from);
+	}
+
+
+
+
+	@Override
+	public List<SysMenu> deleteOrderBy(Integer from, Integer next) {
+		return menuMapper.deleteOrderBy( from, next);
+	}
+
+
+
+
+	@Override
+	public SysMenu selectMenuByUrl(String menuUrl) {
+		return menuMapper.selectMenuByUrl(menuUrl);
+	}
+}

+ 69 - 0
src/main/java/com/ssm/service/impl/system/SysPositionServiceImpl.java

@@ -0,0 +1,69 @@
+package com.ssm.service.impl.system;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.github.pagehelper.PageHelper;
+import com.ssm.mapper.system.SysPositionMapper;
+import com.ssm.model.system.SysPosition;
+import com.ssm.service.system.SysPositionService;
+import com.ssm.util.page.BeanUtil;
+import com.ssm.util.page.PagedResult;
+@Service
+public class SysPositionServiceImpl implements SysPositionService {
+
+	@Autowired
+	private SysPositionMapper sysPositionMapper;
+	@Override
+	public PagedResult<SysPosition> getPostionFind(SysPosition sysPosition,Integer pageNo,
+			Integer pageSize) {
+		// TODO Auto-generated method stub
+		pageNo = pageNo == null?1:pageNo;  
+	    pageSize = pageSize == null?10:pageSize;
+	    PageHelper.startPage(pageNo,pageSize);  //startPage是告诉拦截器说我要开始分页了。分页参数是这两个。  
+	    List<SysPosition> list = sysPositionMapper.getPostionFind(sysPosition);
+		PagedResult<SysPosition> pagedResult = BeanUtil.toPagedResult(list);  
+		return pagedResult;
+	}
+	
+	/**
+	 * 删除职位
+	 * */
+	@Override
+	public void deleteSysPostion(Integer positionid) {
+		// TODO Auto-generated method stub
+		this.sysPositionMapper.deleteSysPostion(positionid);
+	}
+
+	@Override
+	public Integer QuerySysPostionId(Integer depid) {
+		// TODO Auto-generated method stub
+		return sysPositionMapper.QuerySysPostionId(depid);
+	}
+
+	@Override
+	public void insertSelective(SysPosition sysPosition) {
+		// TODO Auto-generated method stub
+		sysPositionMapper.insertSelective(sysPosition);
+	}
+
+	@Override
+	public SysPosition selectByPrimaryKey(Integer id) {
+		// TODO Auto-generated method stub
+		return sysPositionMapper.selectByPrimaryKey(id);
+	}
+
+	@Override
+	public void updateByPrimaryKeySelective(SysPosition sysPosition) {
+		// TODO Auto-generated method stub
+		sysPositionMapper.updateByPrimaryKeySelective(sysPosition);
+	}
+
+	@Override
+	public List<SysPosition> selectAllPostion() {
+		return sysPositionMapper.selectAllPostion();
+	}
+
+}

+ 172 - 0
src/main/java/com/ssm/service/impl/system/SysRoleServiceImpl.java

@@ -0,0 +1,172 @@
+package com.ssm.service.impl.system;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.github.pagehelper.PageHelper;
+import com.ssm.mapper.system.SysMenuMapper;
+import com.ssm.mapper.system.SysRoleMapper;
+import com.ssm.model.system.SysMenu;
+import com.ssm.model.system.SysRole;
+import com.ssm.model.system.SysUser;
+import com.ssm.service.system.SysRoleService;
+import com.ssm.util.page.BeanUtil;
+import com.ssm.util.page.PagedResult;
+
+@Transactional
+@Service
+public class SysRoleServiceImpl  implements SysRoleService{
+	
+	@Autowired
+	private SysRoleMapper sysRoleMapper;
+	
+	@Autowired SysMenuMapper sysMenuMapper;
+	
+	public PagedResult<SysRole> queryByRoleName(String roleName,Integer pageNo,
+			Integer pageSize) {
+	    //Helper.setPageInfo(pageNo, pageSize);
+		pageNo = pageNo == null?1:pageNo;  
+	    pageSize = pageSize == null?5	:pageSize;
+	    PageHelper.startPage(pageNo,pageSize);  //startPage是告诉拦截器说我要开始分页了。分页参数是这两个。  
+	   // roleName = null;
+	    PagedResult<SysRole> pagedResult = null;
+	    List<SysRole> list = sysRoleMapper.findAll(roleName);
+	    if(list !=null && list.size() > 0){
+	        pagedResult = BeanUtil.toPagedResult(list);
+	    }
+	    return pagedResult;
+}
+
+	@Override
+	public void insertSysRole(SysRole role) {
+		sysRoleMapper.insert(role);
+	}
+
+	@Override
+	public int updateRoleByRoleId(SysRole role) {
+		return sysRoleMapper.updateByPrimaryKey(role);
+	}
+
+	@Override
+	public void deleteRoleByRoleId(Integer roleId) {
+		sysRoleMapper.deleteByPrimaryKey(roleId);
+	}
+
+	@Override
+	public SysRole selectSysRoleByRoleId(Integer roleId) {
+		 return sysRoleMapper.selectByPrimaryKey(roleId);	
+	}
+
+	@Override
+	public List<SysMenu> selectMenusByRoleId(Integer roleId) {
+		return sysMenuMapper.selectMenusByRoleId(roleId);
+	}
+	
+	@Override
+	public List<SysMenu> selectMenusLevelLT2ByRoleId(Integer roleId) {
+		return sysMenuMapper.selectMenusLevelLT2ByRoleId(roleId);
+		
+	}
+	
+	@Override
+	public Integer addRoleRelevancePer(Integer roleId, Integer menuId) {
+		 return sysRoleMapper.addRoleRelevancePer(roleId,menuId);
+	}
+
+	@Override
+	public Integer selectRoleRelevancePer(Integer roleId, Integer menuId) {
+		 return sysRoleMapper.selectRoleRelevancePer(roleId,menuId);
+	}
+
+	@Override
+	public PagedResult<SysUser> selectUserByRoleId(Integer roleId,Integer pageNo,
+			Integer pageSize,String userName ,String employeeNo) {
+		pageNo = pageNo == null?1:pageNo;  
+	    pageSize = pageSize == null?5:pageSize;
+	    PageHelper.startPage(pageNo,pageSize);
+	    PagedResult<SysUser> pagedResult = null;
+	    List<SysUser> list = sysRoleMapper.selectUserByRoleId(roleId,userName,employeeNo);
+	    if(list !=null && list.size() > 0){
+	        pagedResult = BeanUtil.toPagedResult(list);
+	    }
+	    return pagedResult;
+	}
+
+	@Override
+	public Integer deleteUserByRole(Integer roleId, Integer userId) {
+		 return sysRoleMapper.deleteUserByRole(roleId,userId);
+	}
+
+	@Override
+	public List<SysRole> selectRoleAndMenuList() {
+		return sysRoleMapper.selectRoleAndMenuList();
+	}
+
+	@Override
+	public List<SysRole> findUserRoleByUserId(int userId) {
+		return sysRoleMapper.findUserRoleByUserId(userId);
+	}
+
+	@Override
+	public List<SysMenu> selectButtonByRoleId(Integer roleId) {
+		return sysMenuMapper.selectButtonByRoleId(roleId);
+	}
+
+	@Override
+	public void deletePerPageByRoleIdAndMenuId(Integer menuId, Integer roleId) {
+		sysRoleMapper.deletePerPageByRoleIdAndMenuId(menuId,roleId);           //删除选择的pgae菜单
+//		List<SysMenu> childList = sysMenuMapper.selectChildMenusByPageMenuId(menuId);
+//		if(childList.size() > 0){
+//			for (SysMenu sysMenu : childList) {					//删除选择page的button菜单
+//				sysRoleMapper.deletePerPageByRoleIdAndMenuId(sysMenu.getMenuid(),roleId);
+//			}
+//		}
+	}
+
+	@Override
+	public List<SysMenu> selectPageMenusByRole(Integer roleId) {
+		return sysMenuMapper.selectPageMenusByRole(roleId);
+		
+	}
+
+	@Override
+	public List<SysMenu> selectButtonMenusByRole(Integer roleId) {
+		return sysMenuMapper.selectButtonMenusByRole(roleId);
+	}
+
+	@Override
+	public void deleteButtonMenusByMenuIdAndRoleId(Integer menuId,
+			Integer roleId) {
+		sysRoleMapper.deletePerPageByRoleIdAndMenuId(menuId,roleId);
+	}
+
+	@Override
+	public List<SysMenu> selectPageMenusByRoleId(Integer roleId) {
+		return sysMenuMapper.selectPageMenusByRoleId(roleId);
+	}
+	
+	@Override
+	public List<SysMenu> selectButtonMenusByRoleId(Integer roleId) {
+		return sysMenuMapper.selectButtonMenusByRoleId(roleId);
+	}
+
+	@Override
+	public List<SysMenu> selectChildMenusByPageMenuId(Integer menuId) {
+		return sysMenuMapper.selectChildMenusByPageMenuId(menuId);
+	}
+
+	@Override
+	public Integer selectReByMenuIdAndRoleId(Integer menuId, Integer roleId) {
+		return sysMenuMapper.selectReByMenuIdAndRoleId(menuId, roleId);
+	}
+
+	@Override
+	public SysRole selectByRoleName(String roleName) {
+		return sysRoleMapper.selectByRoleName(roleName);
+	}
+	
+	
+}

+ 37 - 0
src/main/java/com/ssm/service/impl/system/SysUserLoginLogServiceImpl.java

@@ -0,0 +1,37 @@
+package com.ssm.service.impl.system;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.github.pagehelper.PageHelper;
+import com.ssm.mapper.system.SysUserLoginLogMapper;
+import com.ssm.model.system.SysUserLoginLog;
+import com.ssm.service.system.SysUserLoginLogService;
+import com.ssm.util.page.BeanUtil;
+import com.ssm.util.page.PagedResult;
+
+@Service
+public class SysUserLoginLogServiceImpl implements SysUserLoginLogService{
+	
+	@Autowired
+	private SysUserLoginLogMapper userLoginLogMapper;
+	
+	@Override
+	public int saveUserLoginLog(SysUserLoginLog record) {
+		return userLoginLogMapper.insertSelective(record);
+	}
+
+	@Override
+	public PagedResult<SysUserLoginLog> selectlog(SysUserLoginLog sysLog,
+			Integer pageNo, Integer pageSize) {
+		pageNo = pageNo == null?1:pageNo;  
+	    pageSize = pageSize == null?10:pageSize;
+	    PageHelper.startPage(pageNo,pageSize);  //startPage是告诉拦截器说我要开始分页了。分页参数是这两个。  
+	    List<SysUserLoginLog> list = userLoginLogMapper.selectlog(sysLog);
+		PagedResult<SysUserLoginLog> pagedResult = BeanUtil.toPagedResult(list);  
+		return pagedResult;
+	}
+
+}

+ 0 - 0
src/main/java/com/ssm/service/impl/system/SysUserServiceImpl.java


Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff