document/DBScript/PhysicalDataModel_1.pdb
New file Diff too large document/DBScript/PhysicalDataModel_1.pdm
New file Diff too large document/DBScript/fhadmin0703.sql
New file Diff too large document/DBScript/po.sqlBinary files differ
document/readme.txt
sourcecode/MVNFHM/.classpath
New file @@ -0,0 +1,33 @@ <?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" output="target/classes" path="src/main/java"> <attributes> <attribute name="optional" value="true"/> <attribute name="maven.pomderived" value="true"/> </attributes> </classpathentry> <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"> <attributes> <attribute name="maven.pomderived" value="true"/> </attributes> </classpathentry> <classpathentry kind="src" output="target/test-classes" path="src/test/java"> <attributes> <attribute name="optional" value="true"/> <attribute name="maven.pomderived" value="true"/> <attribute name="test" value="true"/> </attributes> </classpathentry> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"> <attributes> <attribute name="maven.pomderived" value="true"/> </attributes> </classpathentry> <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> <attributes> <attribute name="maven.pomderived" value="true"/> <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/> </attributes> </classpathentry> <classpathentry kind="output" path="target/classes"/> </classpath> sourcecode/MVNFHM/.project
New file @@ -0,0 +1,37 @@ <?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name>MVNFHM</name> <comment></comment> <projects> </projects> <buildSpec> <buildCommand> <name>org.eclipse.jdt.core.javabuilder</name> <arguments> </arguments> </buildCommand> <buildCommand> <name>org.eclipse.wst.common.project.facet.core.builder</name> <arguments> </arguments> </buildCommand> <buildCommand> <name>org.eclipse.wst.validation.validationbuilder</name> <arguments> </arguments> </buildCommand> <buildCommand> <name>org.eclipse.m2e.core.maven2Builder</name> <arguments> </arguments> </buildCommand> </buildSpec> <natures> <nature>org.eclipse.jem.workbench.JavaEMFNature</nature> <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> <nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.m2e.core.maven2Nature</nature> <nature>org.eclipse.wst.common.project.facet.core.nature</nature> <nature>org.eclipse.wst.jsdt.core.jsNature</nature> </natures> </projectDescription> sourcecode/MVNFHM/.settings/.jsdtscope
New file @@ -0,0 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry excluding="**/bower_components/*|**/node_modules/*|**/*.min.js" kind="src" path="src/main/webapp"/> <classpathentry kind="src" path="target/m2e-wtp/web-resources"/> <classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject"> <attributes> <attribute name="hide" value="true"/> </attributes> </classpathentry> <classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/> <classpathentry kind="output" path=""/> </classpath> sourcecode/MVNFHM/.settings/org.eclipse.core.resources.prefs
New file @@ -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/jsp/system/index/login_jd.jsp=UTF-8 encoding//src/test/java=UTF-8 encoding/<project>=UTF-8 sourcecode/MVNFHM/.settings/org.eclipse.jdt.core.prefs
New file @@ -0,0 +1,9 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.compliance=1.8 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning org.eclipse.jdt.core.compiler.release=disabled org.eclipse.jdt.core.compiler.source=1.8 sourcecode/MVNFHM/.settings/org.eclipse.m2e.core.prefs
New file @@ -0,0 +1,4 @@ activeProfiles= eclipse.preferences.version=1 resolveWorkspaceProjects=true version=1 sourcecode/MVNFHM/.settings/org.eclipse.wst.common.component
New file @@ -0,0 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0"> <wb-module deploy-name="MVNFHM"> <wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/> <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/> <property name="context-root" value="MVNFHM"/> <property name="java-output-path" value="/MVNFHM/target/classes"/> </wb-module> </project-modules> sourcecode/MVNFHM/.settings/org.eclipse.wst.common.project.facet.core.xml
New file @@ -0,0 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <faceted-project> <fixed facet="wst.jsdt.web"/> <installed facet="java" version="1.8"/> <installed facet="jst.web" version="2.5"/> <installed facet="wst.jsdt.web" version="1.0"/> </faceted-project> sourcecode/MVNFHM/.settings/org.eclipse.wst.jsdt.ui.superType.container
New file @@ -0,0 +1 @@ org.eclipse.wst.jsdt.launching.baseBrowserLibrary sourcecode/MVNFHM/.settings/org.eclipse.wst.jsdt.ui.superType.name
New file @@ -0,0 +1 @@ Window sourcecode/MVNFHM/.settings/org.eclipse.wst.validation.prefs
New file @@ -0,0 +1,2 @@ disabled=06target eclipse.preferences.version=1 sourcecode/MVNFHM/pom.xml
New file @@ -0,0 +1,554 @@ <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>FH</groupId> <artifactId>MVNFHM</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>MVNFHM</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <javax-activation.version>1.1</javax-activation.version> <spring.version>4.2.5.RELEASE</spring.version> <mysql-connector-java.version>5.1.34</mysql-connector-java.version> </properties> <dependencies> <!-- spring start --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</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-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-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-dao</artifactId> <version>2.0.8</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-mock</artifactId> <version>2.0.8</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</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> <!-- spring end --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-connector-java.version}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>aopalliance</groupId> <artifactId>aopalliance</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>org.apache.james</groupId> <artifactId>apache-mime4j</artifactId> <version>0.6.1</version> </dependency> <dependency> <groupId>asm</groupId> <artifactId>asm</artifactId> <version>3.3.1</version> </dependency> <dependency> <groupId>org.apache.axis</groupId> <artifactId>axis</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib-nodep</artifactId> <version>3.1</version> </dependency> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.9.2</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.10</version> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>commons-discovery</groupId> <artifactId>commons-discovery</artifactId> <version>0.5</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.9</version> </dependency> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core</artifactId> <version>2.6.9</version> </dependency> <dependency> <groupId>net.sf.ezmorph</groupId> <artifactId>ezmorph</artifactId> <version>1.0.6</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.21</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <version>4.3.6</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.4.4</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.4.4</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <dependency> <groupId>javax.xml</groupId> <artifactId>jaxrpc</artifactId> <version>1.1</version> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.3.1</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.9</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.9</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> <dependency> <groupId>wsdl4j</groupId> <artifactId>wsdl4j</artifactId> <version>1.6.3</version> </dependency> <dependency> <groupId>com.hynnet</groupId> <artifactId>sqljdbc4-chs</artifactId> <version>4.0.2206.100</version> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz-jobs</artifactId> <version>2.2.1</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.4.2</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.1</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.7.1.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.12</version> </dependency> <!-- axis-ant --> <dependency> <groupId>axis-ant</groupId> <artifactId>axis-ant</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/axis-ant.jar</systemPath> </dependency> <!-- fcexporter --> <dependency> <groupId>fcexporter</groupId> <artifactId>fcexporter</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/fcexporter.jar</systemPath> </dependency> <!-- fcexporthandler --> <dependency> <groupId>fcexporthandler</groupId> <artifactId>fcexporthandler</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/fcexporthandler.jar</systemPath> </dependency> <!-- fchelper --> <dependency> <groupId>fchelper</groupId> <artifactId>fchelper</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/fchelper.jar</systemPath> </dependency> <!-- fcsampleshelper --> <dependency> <groupId>fcsampleshelper</groupId> <artifactId>fcsampleshelper</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/fcsampleshelper.jar</systemPath> </dependency> <!-- fctl --> <dependency> <groupId>fctl</groupId> <artifactId>fctl</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/fctl.jar</systemPath> </dependency> <!-- json-lib-2.4-jdk15.jar --> <dependency> <groupId>jsonlib</groupId> <artifactId>jsonlib</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/json-lib-2.4-jdk15.jar</systemPath> </dependency> <!-- jackjson-all-1.7.6 --> <dependency> <groupId>jackson</groupId> <artifactId>jackson</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/jackson-all-1.7.6.jar</systemPath> </dependency> <!-- jpush-java-libraryV2 --> <dependency> <groupId>jpush</groupId> <artifactId>jpush</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/jpush-java-libraryV2.jar</systemPath> </dependency> <!-- mail --> <dependency> <groupId>mail</groupId> <artifactId>mail</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/mail.jar</systemPath> </dependency> <!--mybatis-ehcache-1.0.3 --> <dependency> <groupId>mybatis-ehcache</groupId> <artifactId>mybatis-ehcache</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/mybatis-ehcache-1.0.3.jar</systemPath> </dependency> <!-- mybatis-oscache-1.0 --> <dependency> <groupId>mybatis-oscache</groupId> <artifactId>mybatis-oscache</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/mybatis-oscache-1.0.1.jar</systemPath> </dependency> <!-- ojdbc6 --> <dependency> <groupId>ojdbc6</groupId> <artifactId>ojdbc6</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/ojdbc6.jar</systemPath> </dependency> <!-- pinyin4j-2.5.0 --> <dependency> <groupId>pinyin4j</groupId> <artifactId>pinyin4j</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/pinyin4j-2.5.0.jar</systemPath> </dependency> <!-- poi-3.11-20141221 --> <dependency> <groupId>poi</groupId> <artifactId>poi </artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/poi-3.11-20141221.jar</systemPath> </dependency> <!-- poi-examples-3.11-20141221 --> <dependency> <groupId>poi-examples</groupId> <artifactId>poi-examples</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/poi-examples-3.11-20141221.jar</systemPath> </dependency> <!--poi-excelant-3.11-20141221 --> <dependency> <groupId>poi-excelant</groupId> <artifactId>poi-excelant</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/poi-excelant-3.11-20141221.jar</systemPath> </dependency> <!--poi-ooxml-3.11-20141221 --> <dependency> <groupId>poi-ooxml</groupId> <artifactId>poi-ooxml</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/poi-ooxml-3.11-20141221.jar</systemPath> </dependency> <!-- poi-ooxml-schemas-3.11-20141221 --> <dependency> <groupId>poi-ooxml-schemas</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/poi-ooxml-schemas-3.11-20141221.jar</systemPath> </dependency> <!-- poi-scratchpad-3.11-20141221 --> <dependency> <groupId>poi-scratchpad</groupId> <artifactId>poi-scratchpad</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/poi-scratchpad-3.11-20141221.jar</systemPath> </dependency> <!--QRCode --> <dependency> <groupId>QRCode</groupId> <artifactId>QRCode</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/QRCode.jar</systemPath> </dependency> <!-- saaj --> <dependency> <groupId>saaj</groupId> <artifactId>saaj</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/saaj.jar</systemPath> </dependency> <!-- shiro-all --> <dependency> <groupId>shiro</groupId> <artifactId>shiro</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/shiro-all-1.2.3.jar</systemPath> </dependency> <!-- sun.misc.BASE64Decoder --> <dependency> <groupId>sun-misc</groupId> <artifactId>sun-misc</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/sun.misc.BASE64Decoder.jar</systemPath> </dependency> <!-- ueditor --> <dependency> <groupId>ueditor</groupId> <artifactId>ueditor</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/ueditor.jar</systemPath> </dependency> <!-- java_websocket --> <dependency> <groupId>java_websocket</groupId> <artifactId>java_websocket</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/java_websocket.jar</systemPath> </dependency> <!-- weixinapi --> <dependency> <groupId>weixinapi</groupId> <artifactId>weixinapi</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/weixinapi.jar</systemPath> </dependency> <!-- weaver-1.6.8.RELEASE.jar --> <dependency> <groupId>weaver-1.6.8</groupId> <artifactId>weaver-1.6.8</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar</systemPath> </dependency> <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.1.0</version> <exclusions> <!-- 这个就是我们要加的片断 --> <exclusion> <artifactId>jackson-databind</artifactId> <groupId>com.fasterxml.jackson.core</groupId> </exclusion> </exclusions> </dependency> </dependencies> <build> <finalName>MVNFHM</finalName> </build> </project> sourcecode/MVNFHM/src/main/java/com/fh/controller/app/appuser/IntAppuserController.java
New file @@ -0,0 +1,72 @@ package com.fh.controller.app.appuser; import java.util.HashMap; import java.util.Map; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.fh.controller.base.BaseController; import com.fh.service.system.appuser.AppuserManager; import com.fh.util.AppUtil; import com.fh.util.PageData; import com.fh.util.Tools; /**@author FH Q313596790 * 会员-接口类 * 相关参数协议: * 00 请求失败 * 01 请求成功 * 02 返回空值 * 03 请求协议参数不完整 * 04 用户名或密码错误 * 05 FKEY验证失败 */ @Controller @RequestMapping(value="/appuser") public class IntAppuserController extends BaseController { @Resource(name="appuserService") private AppuserManager appuserService; /**根据用户名获取会员信息 * @return */ @RequestMapping(value="/getAppuserByUm") @ResponseBody public Object getAppuserByUsernmae(){ logBefore(logger, "根据用户名获取会员信息"); Map<String,Object> map = new HashMap<String,Object>(); PageData pd = new PageData(); pd = this.getPageData(); String result = "00"; try{ if(Tools.checkKey("USERNAME", pd.getString("FKEY"))){ //检验请求key值是否合法 if(AppUtil.checkParam("getAppuserByUsernmae", pd)){ //检查参数 pd = appuserService.findByUsername(pd); map.put("pd", pd); result = (null == pd) ? "02" : "01"; }else { result = "03"; } }else{ result = "05"; } }catch (Exception e){ logger.error(e.toString(), e); }finally{ map.put("result", result); logAfter(logger); } return AppUtil.returnObject(new PageData(), map); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/app/redis/RedisDemoController.java
New file @@ -0,0 +1,86 @@ package com.fh.controller.app.redis; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.fh.controller.base.BaseController; import com.fh.dao.redis.RedisDao; import com.fh.util.AppUtil; import com.fh.util.PageData; /** RedisDemo * @author FH Q313596790 * 2016.5.8 */ @Controller @RequestMapping(value="/appRedisDemo") public class RedisDemoController extends BaseController{ @Resource(name = "redisDaoImpl") private RedisDao redisDaoImpl; /** * 请讲接口 http://127.0.0.1:8080/项目名称/appRedisDemo/redisDemo.do * demo展示的在redis存储读取数据的方式,本系统暂时用不到redis,此redis接口可根据实际业务需求选择使用 * 具体redis的应用场景->百度下即可 */ @RequestMapping(value="/redisDemo") @ResponseBody public Object redis(){ Map<String,Object> map = new HashMap<String,Object>(); String result = ""; redisDaoImpl.delete("fh0"); //删除 redisDaoImpl.delete("fh"); //删除 redisDaoImpl.delete("fh1"); //删除 redisDaoImpl.delete("fh2"); //删除 System.out.println(redisDaoImpl.addString("fh0","opopopo",300)); //存储字符串 System.out.println("获取字符串:"+redisDaoImpl.get("fh0")); //获取字符串 result += "获取字符串:"+redisDaoImpl.get("fh0")+","; Map<String, String> jmap = new HashMap<String, String>(); jmap.put("name", "fhadmin"); jmap.put("age", "22"); jmap.put("qq", "313596790"); System.out.println(redisDaoImpl.addMap("fh", jmap)); //存储Map System.out.println("获取Map:"+redisDaoImpl.getMap("fh")); //获取Map result += "获取Map:"+redisDaoImpl.getMap("fh")+","; List<String> list = new ArrayList<String>(); list.add("ssss"); list.add("bbbb"); list.add("cccc"); redisDaoImpl.addList("fh1", list); //存储List System.out.println("获取List:"+redisDaoImpl.getList("fh1")); //获取List result += "获取List:"+redisDaoImpl.getList("fh1")+","; Set<String> set = new HashSet<String>(); set.add("wwww"); set.add("eeee"); set.add("rrrr"); redisDaoImpl.addSet("fh2", set); //存储Set System.out.println("获取Set:"+redisDaoImpl.getSet("fh2")); //获取Set result += "获取Set:"+redisDaoImpl.getSet("fh2")+","; map.put("result", result); return AppUtil.returnObject(new PageData(), map); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/app/sysuser/SysUserController.java
New file @@ -0,0 +1,1125 @@ package com.fh.controller.app.sysuser; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.crypto.hash.SimpleHash; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; import org.springframework.stereotype.Controller; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.multipart.MultipartFile; import com.fh.controller.base.BaseController; import com.fh.dao.redis.RedisDao; import com.fh.entity.system.Department; import com.fh.entity.system.Menu; import com.fh.entity.system.Role; import com.fh.entity.system.User; import com.fh.service.fhoa.datajur.DatajurManager; import com.fh.service.fhoa.department.DepartmentManager; import com.fh.service.system.buttonrights.ButtonrightsManager; import com.fh.service.system.fhbutton.FhbuttonManager; import com.fh.service.system.fhlog.FHlogManager; import com.fh.service.system.menu.MenuManager; import com.fh.service.system.role.RoleManager; import com.fh.service.system.tenant.TenantManager; import com.fh.service.system.user.UserManager; import com.fh.util.AppUtil; import com.fh.util.Const; import com.fh.util.DateUtil; import com.fh.util.FileUpload; import com.fh.util.Jurisdiction; import com.fh.util.PageData; import com.fh.util.PathUtil; import com.fh.util.RightsHelper; import com.fh.util.Tools; import com.fh.util.UuidUtil; import com.fh.util.Watermark; import oracle.net.aso.a; /**@author FH Q313596790 * 系统用户-接口类 * 相关参数协议: * 00 请求失败 * 01 请求成功 * 02 返回空值 * 03 请求协议参数不完整 * 04 用户名或密码错误 * 05 FKEY验证失败 */ @Controller @RequestMapping(value="/appSysUser") public class SysUserController extends BaseController { @Resource(name="userService") private UserManager userService; @Resource(name="fhlogService") private FHlogManager FHLOG; @Resource(name="menuService") private MenuManager menuService; @Resource(name="roleService") private RoleManager roleService; @Resource(name="buttonrightsService") private ButtonrightsManager buttonrightsService; @Resource(name="fhbuttonService") private FhbuttonManager fhbuttonService; @Resource(name="datajurService") private DatajurManager datajurService; @Resource(name="departmentService") private DepartmentManager departmentService; @Resource(name = "redisDaoImpl") private RedisDao redisDaoImpl; @Resource(name="tenantService") private TenantManager tenantService; /**租户管理员保存接口 * @return * @throws Exception */ @RequestMapping(value="/getTenantList" ,produces="application/json;charset=UTF-8") @ResponseBody public Object getTenantList()throws Exception{ Map<String,Object> map = new HashMap<String,Object>(); PageData pd = new PageData(); pd = this.getPageData(); String errInfo = "01"; // 管理凭证 String accessToken = pd.getString("accessToken"); if(accessToken == null) { map.put("result", "03"); // 管理凭证错误 return AppUtil.returnObject(new PageData(), map); } // token String token = pd.getString("token"); // 系统ID String systemId = pd.getString("SYSTEM_ID"); if(isLogin(token)){ if(isAccessSys(token,systemId)) { List<PageData> list = tenantService.getTenantList(pd); map.put("tenantList", list); } else { errInfo = "06"; } } else { errInfo = "00"; } map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } /**租户状态更新接口 * @return * @throws Exception */ @RequestMapping(value="/undateStatus" ,produces="application/json;charset=UTF-8") @ResponseBody public Object undateStatus()throws Exception{ Map<String,Object> map = new HashMap<String,Object>(); PageData pd = new PageData(); pd = this.getPageData(); String errInfo = "01"; // 管理凭证 String accessToken = pd.getString("accessToken"); if(accessToken == null) { map.put("result", "03"); // 管理凭证错误 return AppUtil.returnObject(new PageData(), map); } // token String token = pd.getString("token"); // 系统ID String systemId = pd.getString("SYSTEM_ID"); if(isLogin(token)){ if(isAccessSys(token,systemId)) { tenantService.updateStatus(pd); } else { errInfo = "06"; } } else { errInfo = "00"; } map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } /**租户信息更新接口 * @return * @throws Exception */ @RequestMapping(value="/undateTenant" ,produces="application/json;charset=UTF-8") @ResponseBody public Object undateTenant()throws Exception{ Map<String,Object> map = new HashMap<String,Object>(); PageData pd = new PageData(); pd = this.getPageData(); String errInfo = "01"; // 管理凭证 String accessToken = pd.getString("accessToken"); if(accessToken == null) { map.put("result", "03"); // 管理凭证错误 return AppUtil.returnObject(new PageData(), map); } // token String token = pd.getString("token"); // 系统ID String systemId = pd.getString("SYSTEM_ID"); if(isLogin(token)){ if(isAccessSys(token,systemId)) { tenantService.edit(pd); } else { errInfo = "06"; } } else { errInfo = "00"; } map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } /**获取租户信息接口 * @return * @throws Exception */ @RequestMapping(value="/getTenant" ,produces="application/json;charset=UTF-8") @ResponseBody public Object getTenant()throws Exception{ Map<String,Object> map = new HashMap<String,Object>(); PageData pd = new PageData(); pd = this.getPageData(); String errInfo = "01"; // 管理凭证 String accessToken = pd.getString("accessToken"); if(accessToken == null) { map.put("result", "03"); // 管理凭证错误 return AppUtil.returnObject(new PageData(), map); } // token String token = pd.getString("token"); // 系统ID String systemId = pd.getString("SYSTEM_ID"); if(isLogin(token)){ if(isAccessSys(token,systemId)) { PageData tenant = tenantService.findById(pd); HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); tenant.put("LOGO", request.getContextPath() + tenant.getString("LOGO")); map.put("tenant", tenant); } else { errInfo = "06"; } } else { errInfo = "00"; } map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } /**更换logo * @param file * @return * @throws Exception */ @RequestMapping(value="/changeLogo") @ResponseBody public Object changeLogo( @RequestParam(required=false) MultipartFile file, HttpServletRequest request ) throws Exception{ Map<String,String> map = new HashMap<String,String>(); String ffile = DateUtil.getDays(), fileName = ""; PageData pd = new PageData(); if (null != file && !file.isEmpty()) { String filePath = request.getSession().getServletContext().getRealPath("/static/images/"); fileName = FileUpload.fileUp(file, filePath, this.get32UUID()); //执行上传 pd.put("TENANT_ID", request.getParameter("TENANT_ID")); //主键 pd.put("LOGO", "/static/images/" + fileName); //标题 map.put("imgSrc", "/static/images/" + fileName); tenantService.edit(pd); }else{ System.out.println("上传失败"); } map.put("result", "ok"); return AppUtil.returnObject(pd, map); } /**租户管理员保存接口 * @return * @throws Exception */ @RequestMapping(value="/saveTenant" ,produces="application/json;charset=UTF-8") @ResponseBody public Object saveTenant()throws Exception{ Map<String,Object> map = new HashMap<String,Object>(); PageData pd = new PageData(); pd = this.getPageData(); String errInfo = "01"; // 管理凭证 String accessToken = pd.getString("accessToken"); if(accessToken == null) { map.put("result", "03"); // 管理凭证错误 return AppUtil.returnObject(new PageData(), map); } // token String token = pd.getString("token"); // 系统ID String systemId = pd.getString("SYSTEM_ID"); if(isLogin(token)){ if(isAccessSys(token,systemId)) { // TODO 用户权限判断 int i = tenantService.getCount() + 1; pd.put("TENANT_ID", i); //主键 pd.put("USER_ID", this.get32UUID()); //ID 主键 pd.put("ADMIN_ID", pd.get("USER_ID")); pd.put("LAST_LOGIN", ""); //最后登录时间 pd.put("IP", ""); //IP pd.put("STATUS", "0"); //状态 pd.put("SKIN", "default"); pd.put("RIGHTS", ""); pd.put("PHONE", pd.getString("TEL_CODE")); pd.put("PASSWORD", new SimpleHash("SHA-1", pd.getString("USERNAME"), pd.getString("PASSWORD")).toString()); //密码加密 if(null == userService.findByUsername(pd)){ //判断用户名是否存在 // 租户信息保存 tenantService.save(pd); // 租户管理员信息保存 userService.saveU(pd); PageData userSystemPd = new PageData(); userSystemPd.put("USER_ID", pd.getString("USER_ID")); userSystemPd.put("SYSTEM_ID", pd.getString("SYSTEM_ID")); userSystemPd.put("ROLE_ID", "1"); userSystemPd.put("DEPARTMENT_ID", null); userSystemPd.put("TENANT_ID", pd.get("TENANT_ID")); userSystemPd.put("DATA_JURISDICTION", null); // 管理员权限保存 userService.saveUserSystem(userSystemPd); userSystemPd.put("SYSTEM_ID", "0"); userSystemPd.put("ROLE_ID", "7cfcce6353294cd5b68f25144e61f452"); userSystemPd.put("DEPARTMENT_ID", null); userSystemPd.put("TENANT_ID", pd.get("TENANT_ID")); userSystemPd.put("DATA_JURISDICTION", null); // 租户管理员权限保存 userService.saveUserSystem(userSystemPd); map.put("TENANT_ID", pd.get("TENANT_ID")); } else { // 用户名已经存在 errInfo = "04"; } } else { errInfo = "06"; } } else { errInfo = "00"; } map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } /**租户注册接口 * @return * @throws Exception */ @RequestMapping(value="/userSaveTenant" ,produces="application/json;charset=UTF-8") @ResponseBody public Object userSaveTenant()throws Exception{ Map<String,Object> map = new HashMap<String,Object>(); PageData pd = new PageData(); pd = this.getPageData(); String errInfo = "01"; // 管理凭证 String accessToken = pd.getString("accessToken"); if(accessToken == null) { map.put("result", "03"); // 管理凭证错误 return AppUtil.returnObject(new PageData(), map); } else { // TODO 管理凭证校验 // 系统ID String systemId = pd.getString("SYSTEM_ID"); } String securityCode = pd.getString("UUID") + pd.getString("t"); String sessionCode = redisDaoImpl.get(securityCode); String code = pd.getString("KEYDATA"); if(null == code || "".equals(code)){//判断效验码 errInfo = "05"; //效验码为空 }else{ if(Tools.notEmpty(sessionCode) && sessionCode.equalsIgnoreCase(code)){ //判断登录验证码 int i = tenantService.getCount() + 1; pd.put("TENANT_ID", i); //主键 pd.put("USER_ID", this.get32UUID()); //ID 主键 pd.put("ADMIN_ID", pd.get("USER_ID")); pd.put("LAST_LOGIN", ""); //最后登录时间 pd.put("IP", ""); //IP pd.put("STATUS", "0"); //状态 pd.put("SKIN", "default"); pd.put("PHONE", pd.getString("TEL_CODE")); pd.put("RIGHTS", ""); pd.put("PASSWORD", new SimpleHash("SHA-1", pd.getString("USERNAME"), pd.getString("PASSWORD")).toString()); //密码加密 if(null == userService.findByUsername(pd)){ //判断用户名是否存在 // 租户信息保存 tenantService.save(pd); // 租户管理员信息保存 userService.saveU(pd); PageData userSystemPd = new PageData(); userSystemPd.put("USER_ID", pd.getString("USER_ID")); userSystemPd.put("SYSTEM_ID", pd.getString("SYSTEM_ID")); userSystemPd.put("ROLE_ID", "1"); userSystemPd.put("DEPARTMENT_ID", null); userSystemPd.put("TENANT_ID", pd.get("TENANT_ID")); userSystemPd.put("DATA_JURISDICTION", null); // 管理员权限保存 userService.saveUserSystem(userSystemPd); userSystemPd.put("SYSTEM_ID", "0"); userSystemPd.put("ROLE_ID", "7cfcce6353294cd5b68f25144e61f452"); userSystemPd.put("DEPARTMENT_ID", null); userSystemPd.put("TENANT_ID", pd.get("TENANT_ID")); userSystemPd.put("DATA_JURISDICTION", null); // 租户管理员权限保存 userService.saveUserSystem(userSystemPd); map.put("TENANT_ID", pd.get("TENANT_ID")); } else { // 用户名已经存在 errInfo = "04"; } } else { errInfo = "05"; //验证码错误 } } map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } /**请求登录,验证用户 * @return * @throws Exception */ @RequestMapping(value="/login" ,produces="application/json;charset=UTF-8") @ResponseBody public Object login()throws Exception{ Map<String,Object> map = new HashMap<String,Object>(); PageData pd = new PageData(); pd = this.getPageData(); User user = new User(); String errInfo = ""; Session session = Jurisdiction.getSession(); //String securityCode = pd.getString("SYSTEM_ID") + pd.getString("t"); ///String sessionCode = redisDaoImpl.get(securityCode); //String code = pd.getString("KEYDATA"); //if(null == code || "".equals(code)){//判断效验码 // errInfo = "nullcode"; //效验码为空 //}else{ //if(Tools.notEmpty(sessionCode) && sessionCode.equalsIgnoreCase(code)){ //判断登录验证码 // 用户名 String USERNAME = pd.getString("USERNAME"); // 密码 String PASSWORD = pd.getString("PASSWORD"); // 系统ID String systemId = pd.getString("SYSTEM_ID"); // 管理凭证 String accessToken = pd.getString("accessToken"); if(USERNAME == null || PASSWORD == null || systemId == null || accessToken == null) { map.put("result", "02"); // 参数错误 return AppUtil.returnObject(new PageData(), map); } //String passwd = new SimpleHash("SHA-1", USERNAME, PASSWORD).toString(); //密码加密 //pd.put("PASSWORD", passwd); pd = userService.getUserByNameAndPwd(pd); //根据用户名和密码去读取用户信息 if(pd != null){ pd.put("LAST_LOGIN",DateUtil.getTime().toString()); pd.put("SYSTEM_ID",systemId); userService.updateLastLogin(pd); PageData userSysInfo = userService.getUserSysInfo(pd); if(userSysInfo == null || userSysInfo.get("SYSTEM_ID") == null) { errInfo = "06"; // 对业务系统没有权限 } else { user.setUSER_ID(pd.getString("USER_ID")); user.setUSERNAME(pd.getString("USERNAME")); user.setPASSWORD(pd.getString("PASSWORD")); user.setNAME(pd.getString("NAME")); user.setRIGHTS(pd.getString("RIGHTS")); user.setROLE_ID(userSysInfo.getString("ROLE_ID")); user.setLAST_LOGIN(pd.getString("LAST_LOGIN")); user.setIP(pd.getString("IP")); user.setSTATUS(pd.getString("STATUS")); Role role = new Role(); role.setROLE_ID(userSysInfo.getString("ROLE_ID")); role.setRIGHTS(userSysInfo.getString("ROLE_RIGHTS")); role.setADD_QX(userSysInfo.getString("ADD_QX")); role.setDEL_QX(userSysInfo.getString("DEL_QX")); role.setEDIT_QX(userSysInfo.getString("EDIT_QX")); role.setCHA_QX(userSysInfo.getString("CHA_QX")); user.setRole(role); pd.put("PARENT_ID", userSysInfo.getString("DEPARTMENT_ID")); PageData department = departmentService.findById(userSysInfo); map.put("department", department); pd.put("TENANT_ID", userSysInfo.getString("TENANT_ID")); map.put("TENANT_KEY", userSysInfo.getString("TENANT_KEY")); PageData tenant = tenantService.findById(pd); if(tenant == null) { errInfo = "07";// 登录失败 map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } if("1".equals(tenant.get("STATUS").toString())){ errInfo = "07";// 登录失败 map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } List<Department> dptList = departmentService.getDepList(pd); map.put("subDepartmentList", dptList); map.put("TENANT_ID", userSysInfo.getString("TENANT_ID")); session.setAttribute(Const.SESSION_USERROL, user); //存入session session.setAttribute(Const.SESSION_USER, user); // 把用户信息放session中 //shiro加入身份验证 Subject subject = SecurityUtils.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken(USERNAME, PASSWORD); try { subject.login(token); map.put("user", user); } catch (AuthenticationException e) { errInfo = "00";// 登录失败 } String roleRights = role!=null ? role.getRIGHTS() : ""; //角色权限(菜单权限) this.setAttributeToAllDEPARTMENT_ID(session, USERNAME); //把用户的组织机构权限放到session里面 List<Menu> allmenuList = new ArrayList<Menu>(); allmenuList = this.getAttributeMenu(session, USERNAME, roleRights,systemId,role); //菜单缓存 //map.put("QX", this.getUQX(USERNAME,systemId)); session.setAttribute(USERNAME + Const.SESSION_QX, this.getUQX(USERNAME,systemId));//按钮权限放到session中 map.put("menuList", getMenuList(allmenuList)); } }else{ errInfo = "04"; //用户名或密码有误 logBefore(logger, USERNAME+"登录系统密码或用户名错误"); FHLOG.save(USERNAME, "登录系统密码或用户名错误"); } if(Tools.isEmpty(errInfo)){ errInfo = "01"; //验证成功 String key = UuidUtil.get32UUID(); String token = AppUtil.createToken(key); redisDaoImpl.delete(token); // redis保持token900秒 redisDaoImpl.addString(token,user.getUSER_ID(),24*60*60*3); // 生成token map.put("token", token); logBefore(logger, USERNAME+"登录系统"); FHLOG.save(USERNAME, "登录系统"); } //} else { // errInfo = "08"; //验证码错误 //} //} map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } private List<PageData> getMenuList(List<Menu> menuList) { List<PageData> list = new ArrayList<PageData>(); if(menuList == null || menuList.size() == 0) { return null; } for(Menu menu : menuList) { PageData pd = new PageData(); if(menu.getSubMenu() != null && menu.getSubMenu().size() != 0) { pd.put("type", "256"); } else { pd.put("type", "512"); } pd.put("display", menu.getMENU_NAME()); pd.put("id", menu.getMENU_ID()); pd.put("name", menu.getMENU_URL()); pd.put("hasMenu", menu.isHasMenu()); pd.put("addQx", menu.isHasAddQx()); pd.put("editQx", menu.isHasEditQx()); pd.put("delQx", menu.isHasDelQx()); pd.put("chaQx", menu.isHasChaQx()); pd.put("children", getMenuList(menu.getSubMenu())); list.add(pd); } return list; } /**验证token * @return * @throws Exception */ @RequestMapping(value="/verifyToken" ,produces="application/json;charset=UTF-8") @ResponseBody public Object verifyToken()throws Exception{ Map<String,Object> map = new HashMap<String,Object>(); PageData pd = new PageData(); pd = this.getPageData(); // 验证失败 String errInfo = "00"; // token String token = pd.getString("token"); // 系统ID String systemId = pd.getString("SYSTEM_ID"); if(isLogin(token)){ if (isAccessSys(token,systemId)) { // 验证成功 errInfo = "01"; } else { // 对系统无访问权限 errInfo = "06"; } } map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } /** * 判断用户是否有权限访问该系统 * @param token * @param systemId * @return * @throws Exception */ private boolean isAccessSys(String token , String systemId) throws Exception{ String saveUserId = redisDaoImpl.get(token); PageData pd = new PageData(); pd.put("USER_ID", saveUserId); pd.put("SYSTEM_ID", systemId); pd = userService.getUserSysInfo(pd); if(pd == null) { return false; } return true; } /** * * @param token * @param systemId * @return * @throws Exception */ private boolean isLogin(String token) throws Exception{ if(StringUtils.isEmpty(token)){ return false; } String saveUserId = redisDaoImpl.get(token); if(StringUtils.isEmpty(saveUserId)){ return false; } return true; } /** * 根据token获取所属部门及下级部门 * @return * @throws Exception */ @RequestMapping(value="/getDeptmentListByToken" ,produces="application/json;charset=UTF-8") @ResponseBody public Object getDeptmentListByToken() throws Exception{ Map<String,Object> map = new HashMap<String,Object>(); PageData pd = new PageData(); pd = this.getPageData(); String errInfo = ""; // token String token = pd.getString("token"); // 系统ID String systemId = pd.getString("SYSTEM_ID"); // 管理凭证 String accessToken = pd.getString("accessToken"); if(token == null || systemId == null || accessToken == null) { errInfo = "02"; if(accessToken == null) { errInfo = "03"; } map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } // TODO 管理凭证校验 if(isLogin(token)){ errInfo = "01"; } pd.put("USER_ID", AppUtil.getUserIdByToken(token, systemId)); PageData userSysInfo = userService.getUserSysInfo(pd); if(userSysInfo == null ){ errInfo = "06"; map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } PageData department = departmentService.findById(userSysInfo); map.put("department", department); pd.put("PARENT_ID", userSysInfo.getString("DEPARTMENT_ID")); List<Department> dptList = departmentService.getDepList(pd); map.put("subDepartmentList", dptList); map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } /** * 根据token菜单及增删改查权限 * @return * @throws Exception */ @RequestMapping(value="/getMenuListByToken" ,produces="application/json;charset=UTF-8") @ResponseBody public Object getMenuListByToken() throws Exception{ Map<String,Object> map = new HashMap<String,Object>(); PageData pd = new PageData(); pd = this.getPageData(); String errInfo = ""; // token String token = pd.getString("token"); // 系统ID String systemId = pd.getString("SYSTEM_ID"); // 管理凭证 String accessToken = pd.getString("accessToken"); if(token == null || systemId == null || accessToken == null) { errInfo = "02"; if(accessToken == null) { errInfo = "03"; } map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } // TODO 管理凭证校验 if(isLogin(token)){ errInfo = "01"; } pd.put("USER_ID", AppUtil.getUserIdByToken(token, systemId)); PageData userSysInfo = userService.getUserSysInfo(pd); Role role = new Role(); role.setROLE_ID(userSysInfo.getString("ROLE_ID")); role.setRIGHTS(userSysInfo.getString("ROLE_RIGHTS")); role.setADD_QX(userSysInfo.getString("ADD_QX")); role.setDEL_QX(userSysInfo.getString("DEL_QX")); role.setEDIT_QX(userSysInfo.getString("EDIT_QX")); role.setCHA_QX(userSysInfo.getString("CHA_QX")); Session session = Jurisdiction.getSession(); List<Menu> allmenuList = new ArrayList<Menu>(); allmenuList = this.getAttributeMenu(session, "test", role.getRIGHTS(),systemId,role); map.put("menuList", getMenuList(allmenuList)); map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } /**获取所有用户接口 * @return * @throws Exception */ @RequestMapping(value="/getTenantAllUserList" ,produces="application/json;charset=UTF-8") @ResponseBody public Object getTenantAllUserList()throws Exception{ Map<String,Object> map = new HashMap<String,Object>(); PageData pd = new PageData(); pd = this.getPageData(); // 租户ID String tenantId = pd.getString("TENANT_ID"); // 系统ID String systemId = pd.getString("SYSTEM_ID"); // 管理凭证 String accessToken = pd.getString("accessToken"); // 用户验证Token String token = pd.getString("token"); String errInfo = "01"; if(tenantId == null || systemId == null || accessToken == null || token == null) { map.put("result", "02"); // 参数错误 return AppUtil.returnObject(new PageData(), map); } // TODO 管理凭证校验 if(isLogin(token)){ errInfo = "01"; } else { // 失败 errInfo = "00"; map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } List<PageData> list = userService.getTenantAllUserList(pd); map.put("userList", list); map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } /**获取系统下所有角色接口 * @return * @throws Exception */ @RequestMapping(value="/getSysteAllRoleList" ,produces="application/json;charset=UTF-8") @ResponseBody public Object getSysteAllRoleList()throws Exception{ Map<String,Object> map = new HashMap<String,Object>(); PageData pd = new PageData(); pd = this.getPageData(); // 系统ID String systemId = pd.getString("SYSTEM_ID"); // 管理凭证 String accessToken = pd.getString("accessToken"); // 用户验证Token String token = pd.getString("token"); String errInfo = "01"; if(systemId == null || accessToken == null || token == null) { map.put("result", "02"); // 参数错误 return AppUtil.returnObject(new PageData(), map); } // TODO 管理凭证校验 if(isLogin(token)){ errInfo = "01"; } else { // 失败 errInfo = "00"; map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } List<PageData> list = roleService.getSysteAllRoleList(pd); map.put("RoleList", list); map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } /**获取租户下所有部门列表接口 * @return * @throws Exception */ @RequestMapping(value="/getTenantAllDptList" ,produces="application/json;charset=UTF-8") @ResponseBody public Object getTenantAllDptList()throws Exception{ Map<String,Object> map = new HashMap<String,Object>(); PageData pd = new PageData(); pd = this.getPageData(); // 租户ID String tenantId = pd.getString("TENANT_ID"); // 系统ID String systemId = pd.getString("SYSTEM_ID"); // 管理凭证 String accessToken = pd.getString("accessToken"); // 用户验证Token String token = pd.getString("token"); String errInfo = "01"; if(tenantId == null || systemId == null || accessToken == null || token == null) { map.put("result", "02"); // 参数错误 return AppUtil.returnObject(new PageData(), map); } // TODO 管理凭证校验 if(isLogin(token)){ errInfo = "01"; } else { // 失败 errInfo = "00"; map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } List<PageData> list = departmentService.getTenantAllDptList(pd); map.put("dptList", list); map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } /** * 获取用户信息 * @return 用户信息 * @throws Exception */ @RequestMapping(value="/getUserInfo" ,produces="application/json;charset=UTF-8") @ResponseBody public Object getUserInfo()throws Exception{ Map<String,Object> map = new HashMap<String,Object>(); PageData pd = new PageData(); pd = this.getPageData(); String errInfo = ""; // 用户ID String userId = pd.getString("USER_ID"); // 系统ID String systemId = pd.getString("SYSTEM_ID"); Session session = Jurisdiction.getSession(); User user = (User)session.getAttribute(Const.SESSION_USER); //读取session中的用户信息(单独用户信息) if (user != null) { User userr = (User)session.getAttribute(Const.SESSION_USERROL); //读取session中的用户信息(含角色信息) if(null == userr){ user = userService.getUserAndRoleById(user.getUSER_ID()); //通过用户ID读取用户信息和角色信息 PageData userSysInfo = userService.getUserSysInfo(pd); user.setROLE_ID(userSysInfo.getString("ROLE_ID")); Role role = new Role(); role.setROLE_ID(userSysInfo.getString("ROLE_ID")); role.setRIGHTS(userSysInfo.getString("ROLE_RIGHTS")); role.setADD_QX(userSysInfo.getString("ADD_QX")); role.setADD_QX(userSysInfo.getString("DEL_QX")); role.setADD_QX(userSysInfo.getString("EDIT_QX")); role.setADD_QX(userSysInfo.getString("CHA_QX")); user.setRole(role); session.setAttribute(Const.SESSION_USERROL, user); //存入session }else{ user = userr; } }else { errInfo = "04"; //session失效重新登录 } return AppUtil.returnObject(new PageData(), map); } /**获取用户权限 * @param session * @return */ public Map<String, String> getUQX(String USERNAME,String systemId){ PageData pd = new PageData(); Map<String, String> map = new HashMap<String, String>(); try { pd.put(Const.SESSION_USERNAME, USERNAME); //pd.put("ROLE_ID", userService.findByUsername(pd).get("ROLE_ID").toString());//获取角色ID pd.put("SYSTEM_ID", systemId); pd.put("USER_ID", userService.findByUsername(pd).get("USER_ID").toString()); PageData userSysInfo = userService.getUserSysInfo(pd); pd.put("ROLE_ID", userSysInfo.getString("ROLE_ID"));//获取角色ID pd = roleService.findObjectById(pd); //获取角色信息 map.put("adds", pd.getString("ADD_QX")); //增 map.put("dels", pd.getString("DEL_QX")); //删 map.put("edits", pd.getString("EDIT_QX")); //改 map.put("chas", pd.getString("CHA_QX")); //查 List<PageData> buttonQXnamelist = new ArrayList<PageData>(); if("admin".equals(USERNAME)){ buttonQXnamelist = fhbuttonService.listAll(pd); //admin用户拥有所有按钮权限 }else{ buttonQXnamelist = buttonrightsService.listAllBrAndQxname(pd); //此角色拥有的按钮权限标识列表 } for(int i=0;i<buttonQXnamelist.size();i++){ map.put(buttonQXnamelist.get(i).getString("QX_NAME"),"1"); //按钮权限 } } catch (Exception e) { logger.error(e.toString(), e); } return map; } /**切换菜单处理 * @param allmenuList * @param session * @param USERNAME * @param changeMenu * @return */ @SuppressWarnings("unchecked") public List<Menu> changeMenuF(List<Menu> allmenuList, Session session, String USERNAME, String changeMenu){ List<Menu> menuList = new ArrayList<Menu>(); if(null == session.getAttribute(USERNAME + Const.SESSION_menuList) || ("yes".equals(changeMenu))){ List<Menu> menuList1 = new ArrayList<Menu>(); List<Menu> menuList2 = new ArrayList<Menu>(); for(int i=0;i<allmenuList.size();i++){//拆分菜单 Menu menu = allmenuList.get(i); if("1".equals(menu.getMENU_TYPE())){ menuList1.add(menu); }else{ menuList2.add(menu); } } session.removeAttribute(USERNAME + Const.SESSION_menuList); if("2".equals(session.getAttribute("changeMenu"))){ session.setAttribute(USERNAME + Const.SESSION_menuList, menuList1); session.removeAttribute("changeMenu"); session.setAttribute("changeMenu", "1"); menuList = menuList1; }else{ session.setAttribute(USERNAME + Const.SESSION_menuList, menuList2); session.removeAttribute("changeMenu"); session.setAttribute("changeMenu", "2"); menuList = menuList2; } }else{ menuList = (List<Menu>)session.getAttribute(USERNAME + Const.SESSION_menuList); } return menuList; } /**把用户的组织机构权限放到session里面 * @param session * @param USERNAME * @return * @throws Exception */ public void setAttributeToAllDEPARTMENT_ID(Session session, String USERNAME) throws Exception{ String DEPARTMENT_IDS = "0",DEPARTMENT_ID = "0"; if(!"admin".equals(USERNAME)){ PageData pd = datajurService.getDEPARTMENT_IDS(USERNAME); DEPARTMENT_IDS = null == pd?"无权":pd.getString("DEPARTMENT_IDS"); DEPARTMENT_ID = null == pd?"无权":pd.getString("DEPARTMENT_ID"); } session.setAttribute(Const.DEPARTMENT_IDS, DEPARTMENT_IDS); //把用户的组织机构权限集合放到session里面 session.setAttribute(Const.DEPARTMENT_ID, DEPARTMENT_ID); //把用户的最高组织机构权限放到session里面 } /**菜单缓存 * @param session * @param USERNAME * @param roleRights * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<Menu> getAttributeMenu(Session session, String USERNAME, String roleRights,String systemId,Role role) throws Exception{ List<Menu> allmenuList = new ArrayList<Menu>(); if(null == session.getAttribute(USERNAME + Const.SESSION_allmenuList)){ PageData pd1 = new PageData(); pd1.put("parentId", "0"); pd1.put("SYSTEM_ID", systemId); allmenuList = menuService.listAllMenuQx(pd1); //获取所有菜单 if(Tools.notEmpty(roleRights)){ allmenuList = this.readMenu(allmenuList, roleRights,role); //根据角色权限获取本权限的菜单列表 } session.setAttribute(USERNAME + Const.SESSION_allmenuList, allmenuList);//菜单权限放入session中 }else{ allmenuList = (List<Menu>)session.getAttribute(USERNAME + Const.SESSION_allmenuList); } return allmenuList; } /**根据角色权限获取本权限的菜单列表(递归处理) * @param menuList:传入的总菜单 * @param roleRights:加密的权限字符串 * @return */ public List<Menu> readMenu(List<Menu> menuList,String roleRights,Role role){ for(int i=0;i<menuList.size();i++){ menuList.get(i).setHasMenu(RightsHelper.testRights(roleRights, menuList.get(i).getMENU_ID())); menuList.get(i).setHasAddQx(RightsHelper.testRights(role.getADD_QX(), menuList.get(i).getMENU_ID())); menuList.get(i).setHasEditQx(RightsHelper.testRights(role.getEDIT_QX(), menuList.get(i).getMENU_ID())); menuList.get(i).setHasDelQx(RightsHelper.testRights(role.getDEL_QX(), menuList.get(i).getMENU_ID())); menuList.get(i).setHasChaQx(RightsHelper.testRights(role.getCHA_QX(), menuList.get(i).getMENU_ID())); if(menuList.get(i).isHasMenu()){ //判断是否有此菜单权限 this.readMenu(menuList.get(i).getSubMenu(), roleRights,role);//是:继续排查其子菜单 } } return menuList; } /**系统用户注册接口 * @return */ @RequestMapping(value="/registerSysUser") @ResponseBody public Object registerSysUser(){ logBefore(logger, "系统用户注册接口"); Map<String,Object> map = new HashMap<String,Object>(); PageData pd = new PageData(); pd = this.getPageData(); String result = "00"; try{ if(Tools.checkKey("USERNAME", pd.getString("FKEY"))){ //检验请求key值是否合法 if(AppUtil.checkParam("registerSysUser", pd)){ //检查参数 Session session = Jurisdiction.getSession(); String sessionCode = (String)session.getAttribute(Const.SESSION_SECURITY_CODE); //获取session中的验证码 String rcode = pd.getString("rcode"); if(Tools.notEmpty(sessionCode) && sessionCode.equalsIgnoreCase(rcode)){ //判断登录验证码 pd.put("USER_ID", this.get32UUID()); //ID 主键 pd.put("ROLE_ID", "3"); //角色ID 3 为注册用户 pd.put("NUMBER", ""); //编号 pd.put("PHONE", ""); //手机号 pd.put("BZ", "注册用户"); //备注 pd.put("LAST_LOGIN", ""); //最后登录时间 pd.put("IP", ""); //IP pd.put("STATUS", "0"); //状态 pd.put("SKIN", "default"); pd.put("RIGHTS", ""); pd.put("PASSWORD", new SimpleHash("SHA-1", pd.getString("USERNAME"), pd.getString("PASSWORD")).toString()); //密码加密 if(null == userService.findByUsername(pd)){ //判断用户名是否存在 userService.saveU(pd); //执行保存 FHLOG.save(pd.getString("USERNAME"), "新注册"); }else{ result = "04"; //用户名已存在 } }else{ result = "06"; //验证码错误 } }else { result = "03"; } }else{ result = "05"; } }catch (Exception e){ logger.error(e.toString(), e); }finally{ map.put("result", result); logAfter(logger); } return AppUtil.returnObject(new PageData(), map); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/base/BaseController.java
New file @@ -0,0 +1,72 @@ package com.fh.controller.base; import javax.servlet.http.HttpServletRequest; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.servlet.ModelAndView; import com.fh.entity.Page; import com.fh.util.Logger; import com.fh.util.PageData; import com.fh.util.UuidUtil; /** * @author FH Q313596790 * 修改时间:2015、12、11 */ public class BaseController { protected Logger logger = Logger.getLogger(this.getClass()); private static final long serialVersionUID = 6357869213649815390L; /** new PageData对象 * @return */ public PageData getPageData(){ return new PageData(this.getRequest()); } /**得到ModelAndView * @return */ public ModelAndView getModelAndView(){ return new ModelAndView(); } /**得到request对象 * @return */ public HttpServletRequest getRequest() { HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); return request; } /**得到32位的uuid * @return */ public String get32UUID(){ return UuidUtil.get32UUID(); } /**得到分页列表的信息 * @return */ public Page getPage(){ return new Page(); } public static void logBefore(Logger logger, String interfaceName){ logger.info(""); logger.info("start"); logger.info(interfaceName); } public static void logAfter(Logger logger){ logger.info("end"); logger.info(""); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/dst/datasource2/DataSource2Controller.java
New file @@ -0,0 +1,206 @@ package com.fh.controller.dst.datasource2; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.util.AppUtil; import com.fh.util.ObjectExcelView; import com.fh.util.PageData; import com.fh.util.Jurisdiction; import com.fh.service.dst.datasource2.DataSource2Manager; /** * 说明:第2数据源例子 * 创建人:FH Q313596790 * 创建时间:2016-04-29 */ @Controller @RequestMapping(value="/datasource2") public class DataSource2Controller extends BaseController { String menuUrl = "datasource2/list.do"; //菜单地址(权限用) @Resource(name="datasource2Service") private DataSource2Manager datasource2Service; /**保存 * @param * @throws Exception */ @RequestMapping(value="/save") public ModelAndView save() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"新增DataSource2"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("DATASOURCE2_ID", this.get32UUID()); //主键 datasource2Service.save(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**删除 * @param out * @throws Exception */ @RequestMapping(value="/delete") public void delete(PrintWriter out) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"删除DataSource2"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限 PageData pd = new PageData(); pd = this.getPageData(); datasource2Service.delete(pd); out.write("success"); out.close(); } /**修改 * @param * @throws Exception */ @RequestMapping(value="/edit") public ModelAndView edit() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"修改DataSource2"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); datasource2Service.edit(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**列表 * @param page * @throws Exception */ @RequestMapping(value="/list") public ModelAndView list(Page page) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"列表DataSource2"); //if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码) ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String keywords = pd.getString("keywords"); //关键词检索条件 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } page.setPd(pd); List<PageData> varList = datasource2Service.list(page); //列出DataSource2列表 mv.setViewName("dst/datasource2/datasource2_list"); mv.addObject("varList", varList); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**去新增页面 * @param * @throws Exception */ @RequestMapping(value="/goAdd") public ModelAndView goAdd()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.setViewName("dst/datasource2/datasource2_edit"); mv.addObject("msg", "save"); mv.addObject("pd", pd); return mv; } /**去修改页面 * @param * @throws Exception */ @RequestMapping(value="/goEdit") public ModelAndView goEdit()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd = datasource2Service.findById(pd); //根据ID读取 mv.setViewName("dst/datasource2/datasource2_edit"); mv.addObject("msg", "edit"); mv.addObject("pd", pd); return mv; } /**批量删除 * @param * @throws Exception */ @RequestMapping(value="/deleteAll") @ResponseBody public Object deleteAll() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"批量删除DataSource2"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限 PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); String DATA_IDS = pd.getString("DATA_IDS"); if(null != DATA_IDS && !"".equals(DATA_IDS)){ String ArrayDATA_IDS[] = DATA_IDS.split(","); datasource2Service.deleteAll(ArrayDATA_IDS); pd.put("msg", "ok"); }else{ pd.put("msg", "no"); } pdList.add(pd); map.put("list", pdList); return AppUtil.returnObject(pd, map); } /**导出到excel * @param * @throws Exception */ @RequestMapping(value="/excel") public ModelAndView exportExcel() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"导出DataSource2到excel"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} ModelAndView mv = new ModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Map<String,Object> dataMap = new HashMap<String,Object>(); List<String> titles = new ArrayList<String>(); titles.add("标题"); //1 titles.add("内容"); //2 dataMap.put("titles", titles); List<PageData> varOList = datasource2Service.listAll(pd); List<PageData> varList = new ArrayList<PageData>(); for(int i=0;i<varOList.size();i++){ PageData vpd = new PageData(); vpd.put("var1", varOList.get(i).getString("TITLE")); //1 vpd.put("var2", varOList.get(i).getString("CONTENT")); //2 varList.add(vpd); } dataMap.put("varList", varList); ObjectExcelView erv = new ObjectExcelView(); mv = new ModelAndView(erv,dataMap); return mv; } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/fhdb/brdb/BRdbController.java
New file @@ -0,0 +1,310 @@ package com.fh.controller.fhdb.brdb; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; import javax.annotation.Resource; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.util.AppUtil; import com.fh.util.DbFH; import com.fh.util.FileUtil; import com.fh.util.PageData; import com.fh.util.Jurisdiction; import com.fh.util.Tools; import com.fh.service.fhdb.brdb.BRdbManager; /** * 说明:数据库管理(备份和还原) * 创建人:FH Q313596790 * 创建时间:2016-03-30 */ @Controller @RequestMapping(value="/brdb") public class BRdbController extends BaseController { String menuUrl = "brdb/list.do"; //菜单地址(权限用)数据还原菜单 String menuUrlb = "brdb/listAllTable.do"; //菜单地址(权限用)数据备份菜单 @Resource(name="brdbService") private BRdbManager brdbService; /**列出所有表 * @throws Exception */ @SuppressWarnings("unchecked") @RequestMapping(value="/listAllTable") public ModelAndView listAllTable() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"列出所有表"); if(!Jurisdiction.buttonJurisdiction(menuUrlb, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码) ModelAndView mv = this.getModelAndView(); Object[] arrOb = DbFH.getTables(); List<String> tblist = (List<String>)arrOb[1]; mv.setViewName("fhdb/brdb/table_list"); mv.addObject("varList", tblist); //所有表 mv.addObject("dbtype", arrOb[2]); //数据库类型 mv.addObject("databaseName", arrOb[0]); //数据库名 mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**备份全库 * @param * @throws Exception */ @RequestMapping(value="/backupAll") @ResponseBody public Object backupAll(){ String username = Jurisdiction.getUsername(); logBefore(logger, username+"备份全库"); if(!Jurisdiction.buttonJurisdiction(menuUrlb, "add")){return null;} //校验权限 PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); String kackupPath; try { kackupPath = DbFH.getDbFH().backup("").toString(); //调用数据库备份 if(Tools.notEmpty(kackupPath) && !"errer".equals(kackupPath)){ pd.put("FHDB_ID", this.get32UUID()); //主键 pd.put("USERNAME", username); //操作用户 pd.put("BACKUP_TIME", Tools.date2Str(new Date())); //备份时间 pd.put("TABLENAME", "整库"); //表名 pd.put("SQLPATH", kackupPath); //存储位置 pd.put("DBSIZE", FileUtil.getFilesize(kackupPath)); //文件大小 pd.put("TYPE", 1); //1: 备份整库,2:备份某表 pd.put("BZ", username+"备份全库操作"); //备注 pd.put("msg", "ok"); try { brdbService.save(pd); } catch (Exception e) { pd.put("msg", "no"); } }else{ pd.put("msg", "no"); } } catch (InterruptedException e) { pd.put("msg", "no"); e.printStackTrace(); } catch (ExecutionException e) { pd.put("msg", "no"); e.printStackTrace(); } pdList.add(pd); map.put("list", pdList); return AppUtil.returnObject(pd, map); } /**备份单表 * @param * @throws Exception */ @RequestMapping(value="/backupTable") @ResponseBody public Object backupTable(){ String username = Jurisdiction.getUsername(); logBefore(logger, username+"备份单表"); if(!Jurisdiction.buttonJurisdiction(menuUrlb, "add")){return null;} //校验权限 PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); pd = this.getPageData(); String TABLENAME = pd.getString("fhtable"); //页面ajax传过来的表名 List<PageData> pdList = new ArrayList<PageData>(); String kackupPath; try { kackupPath = DbFH.getDbFH().backup(TABLENAME).toString(); //调用数据库备份 if(Tools.notEmpty(kackupPath) && !"errer".equals(kackupPath)){ pd.put("FHDB_ID", this.get32UUID()); //主键 pd.put("USERNAME", username); //操作用户 pd.put("BACKUP_TIME", Tools.date2Str(new Date())); //备份时间 pd.put("TABLENAME", TABLENAME); //表名 pd.put("SQLPATH", kackupPath); //存储位置 pd.put("DBSIZE", FileUtil.getFilesize(kackupPath)); //文件大小 pd.put("TYPE", 2); //1: 备份整库,2:备份某表 pd.put("BZ", username+"备份单表"); //备注 pd.put("msg", "ok"); try { brdbService.save(pd); } catch (Exception e) { pd.put("msg", "no"); } }else{ pd.put("msg", "no"); } } catch (InterruptedException e) { pd.put("msg", "no"); e.printStackTrace(); } catch (ExecutionException e) { pd.put("msg", "no"); e.printStackTrace(); } pdList.add(pd); map.put("list", pdList); return AppUtil.returnObject(pd, map); } /**数据还原操作 * @param * @throws Exception */ @RequestMapping(value="/dbRecover") @ResponseBody public Object dbRecover(){ String username = Jurisdiction.getUsername(); logBefore(logger, username+"数据还原操作"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); String TABLENAME = pd.getString("TABLENAME"); //页面ajax传过来的表名或数据库名 String SQLPATH = pd.getString("SQLPATH"); //页面ajax传过来的备份文件完整路径 try { String returnStr = DbFH.getDbFH().recover(TABLENAME, SQLPATH).toString(); if("ok".equals(returnStr)){ pd.put("msg", "ok"); }else{ pd.put("msg", "no"); } } catch (InterruptedException e) { pd.put("msg", "no"); e.printStackTrace(); } catch (ExecutionException e) { pd.put("msg", "no"); e.printStackTrace(); } pdList.add(pd); map.put("list", pdList); return AppUtil.returnObject(pd, map); } /**删除 * @param out * @throws Exception */ @RequestMapping(value="/delete") public void delete(PrintWriter out) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"删除Fhdb"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限 PageData pd = new PageData(); pd = this.getPageData(); brdbService.delete(pd); out.write("success"); out.close(); } /**修改 * @param * @throws Exception */ @RequestMapping(value="/edit") public ModelAndView edit() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"修改Fhdb"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); brdbService.edit(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**列表 * @param page * @throws Exception */ @RequestMapping(value="/list") public ModelAndView list(Page page) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"列表Fhdb"); //if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码) ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String keywords = pd.getString("keywords"); //关键词检索条件 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } String lastStart = pd.getString("lastStart"); //开始时间 String lastEnd = pd.getString("lastEnd"); //结束时间 if(Tools.notEmpty(lastStart)){ pd.put("lastLoginStart", lastStart+" 00:00:00"); } if(Tools.notEmpty(lastEnd)){ pd.put("lastLoginEnd", lastEnd+" 00:00:00"); } page.setPd(pd); List<PageData> varList = brdbService.list(page); //列出Fhdb列表 Map<String,String> DBmap = DbFH.getDBParameter(); mv.setViewName("fhdb/brdb/brdb_list"); mv.addObject("varList", varList); mv.addObject("pd", pd); mv.addObject("dbtype", DBmap.get("dbtype").toString()); //数据库类型 mv.addObject("remoteDB", DBmap.get("remoteDB").toString()); //是否远程备份数据库 yes or no mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**去修改页面 * @param * @throws Exception */ @RequestMapping(value="/goEdit") public ModelAndView goEdit()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd = brdbService.findById(pd); //根据ID读取 mv.setViewName("fhdb/brdb/brdb_edit"); mv.addObject("msg", "edit"); mv.addObject("pd", pd); return mv; } /**批量删除 * @param * @throws Exception */ @RequestMapping(value="/deleteAll") @ResponseBody public Object deleteAll() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"批量删除备份记录"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限 PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); String DATA_IDS = pd.getString("DATA_IDS"); if(null != DATA_IDS && !"".equals(DATA_IDS)){ String ArrayDATA_IDS[] = DATA_IDS.split(","); brdbService.deleteAll(ArrayDATA_IDS); pd.put("msg", "ok"); }else{ pd.put("msg", "no"); } pdList.add(pd); map.put("list", pdList); return AppUtil.returnObject(pd, map); } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/fhdb/sqledit/SQLeditController.java
New file @@ -0,0 +1,182 @@ package com.fh.controller.fhdb.sqledit; import java.sql.SQLException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.util.AppUtil; import com.fh.util.DbFH; import com.fh.util.Jurisdiction; import com.fh.util.ObjectExcelView; import com.fh.util.PageData; /** * 说明:SQL编辑器 * 创建人:FH Q313596790 * 创建时间:2016-03-30 */ @Controller @RequestMapping(value="/sqledit") public class SQLeditController extends BaseController { String menuUrl = "sqledit/view.do"; //菜单地址(权限用) /**进入页面 * @param * @throws Exception */ @RequestMapping(value="/view") public ModelAndView view()throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"进入SQL编辑页面"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码) ModelAndView mv = this.getModelAndView(); mv.setViewName("fhdb/sqledit/sql_edit"); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**执行查询语句 * @param * @throws Exception */ @SuppressWarnings("unchecked") @RequestMapping(value="/executeQuery") @ResponseBody public Object executeQuery(){ logBefore(logger, Jurisdiction.getUsername()+"执行查询语句"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限 Map<String,Object> map = new HashMap<String,Object>(); List<PageData> pdList = new ArrayList<PageData>(); PageData pd = new PageData(); pd = this.getPageData(); String sql = pd.getString("sql"); //前台传过来的sql语句 List<String> columnList = new ArrayList<String>(); //存放字段名 List<List<Object>> dataList = new ArrayList<List<Object>>(); //存放数据(从数据库读出来的一条条的数据) long startTime = System.currentTimeMillis(); //请求起始时间_毫秒 Object[] arrOb = null; try { arrOb = DbFH.executeQueryFH(sql); long endTime = System.currentTimeMillis(); //请求结束时间_毫秒 pd.put("rTime", String.valueOf((endTime - startTime)/1000.000)); //存入数据库查询时间 if(null != arrOb){ columnList = (List<String>)arrOb[0]; dataList = (List<List<Object>>)arrOb[1]; pd.put("msg", "ok"); }else{ pd.put("msg", "no"); } } catch (Exception e) { pd.put("msg", "no"); logger.error("执行SQL报错", e); } pdList.add(pd); map.put("columnList", columnList); //存放字段名 map.put("dataList", dataList); //存放数据(从数据库读出来的一条条的数据) map.put("list", pdList); //消息类型 return AppUtil.returnObject(pd, map); } /**执行 INSERT、UPDATE 或 DELETE * @param * @throws Exception */ @RequestMapping(value="/executeUpdate") @ResponseBody public Object executeUpdate(){ logBefore(logger, Jurisdiction.getUsername()+"执行更新语句"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 Map<String,Object> map = new HashMap<String,Object>(); List<PageData> pdList = new ArrayList<PageData>(); PageData pd = new PageData(); pd = this.getPageData(); String sql = pd.getString("sql"); //前台传过来的sql语句 long startTime = System.currentTimeMillis(); //请求起始时间_毫秒 try { DbFH.executeUpdateFH(sql); pd.put("msg", "ok"); } catch (ClassNotFoundException e) { pd.put("msg", "no"); e.printStackTrace(); } catch (SQLException e) { pd.put("msg", "no"); e.printStackTrace(); } long endTime = System.currentTimeMillis(); //请求结束时间_毫秒 pd.put("rTime", String.valueOf((endTime - startTime)/1000.000)); //存入数据库查询时间 pdList.add(pd); map.put("list", pdList); //消息类型 return AppUtil.returnObject(pd, map); } /**导出数据到EXCEL * @return */ @SuppressWarnings("unchecked") @RequestMapping(value="/excel") public ModelAndView exportExcel(){ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); try{ if(Jurisdiction.buttonJurisdiction(menuUrl, "cha")){ String sql = pd.getString("sql"); //前台传过来的sql语句 List<String> columnList = new ArrayList<String>(); //存放字段名 List<List<Object>> dataList = new ArrayList<List<Object>>(); //存放数据(从数据库读出来的一条条的数据) Object[] arrOb = null; try { arrOb = DbFH.executeQueryFH(sql); if(null != arrOb){ columnList = (List<String>)arrOb[0]; dataList = (List<List<Object>>)arrOb[1]; }else{ return null; } } catch (Exception e) { logger.error("导出excelSQL报错", e); return null; } Map<String,Object> dataMap = new HashMap<String,Object>(); List<String> titles = new ArrayList<String>(); for(int i=0;i<columnList.size();i++){ titles.add(columnList.get(i).toString()); //字段名当标题 } dataMap.put("titles", titles); List<PageData> varList = new ArrayList<PageData>(); for(int i=0;i<dataList.size();i++){ PageData vpd = new PageData(); for(int j=0;j<dataList.get(i).size();j++){ vpd.put("var"+(j+1), dataList.get(i).get(j).toString()); //赋值 } varList.add(vpd); } dataMap.put("varList", varList); ObjectExcelView erv = new ObjectExcelView(); //执行excel操作 mv = new ModelAndView(erv,dataMap); } } catch(Exception e){ logger.error(e.toString(), e); } return mv; } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/fhdb/timingbackup/DbBackupQuartzJob.java
New file @@ -0,0 +1,82 @@ package com.fh.controller.fhdb.timingbackup; import java.util.Date; import java.util.Map; import org.quartz.Job; import org.quartz.JobDataMap; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.web.context.ContextLoader; import org.springframework.web.context.WebApplicationContext; import com.fh.controller.base.BaseController; import com.fh.service.fhdb.brdb.impl.BRdbService; import com.fh.service.fhdb.timingbackup.impl.TimingBackUpService; import com.fh.util.DbFH; import com.fh.util.FileUtil; import com.fh.util.PageData; import com.fh.util.Tools; /** quartz 定时任务调度 数据库自动备份工作域 * @author FH 3 13 59679 0 Q * @date 2016-4-10 */ public class DbBackupQuartzJob extends BaseController implements Job{ @Override @SuppressWarnings("unchecked") public void execute(JobExecutionContext context) throws JobExecutionException { // TODO Auto-generated method stub JobDataMap dataMap = context.getJobDetail().getJobDataMap(); Map<String,Object> parameter = (Map<String,Object>)dataMap.get("parameterList"); //获取参数 String TABLENAME = parameter.get("TABLENAME").toString(); TABLENAME = TABLENAME.equals("all")?"":TABLENAME; //普通类从spring容器中拿出service WebApplicationContext webctx=ContextLoader.getCurrentWebApplicationContext(); BRdbService brdbService = (BRdbService)webctx.getBean("brdbService"); PageData pd = new PageData(); try { String kackupPath = DbFH.getDbFH().backup(TABLENAME).toString();//调用数据库备份 if(Tools.notEmpty(kackupPath) && !"errer".equals(kackupPath)){ pd.put("FHDB_ID", this.get32UUID()); //主键 pd.put("USERNAME", "系统"); //操作用户 pd.put("BACKUP_TIME", Tools.date2Str(new Date())); //备份时间 pd.put("TABLENAME", TABLENAME.equals("")?"整库":TABLENAME); //表名or整库 pd.put("SQLPATH", kackupPath); //存储位置 pd.put("DBSIZE", FileUtil.getFilesize(kackupPath)); //文件大小 pd.put("TYPE", TABLENAME.equals("")?1:2); //1: 备份整库,2:备份某表 pd.put("BZ", "定时备份操作"); //备注 brdbService.save(pd); //存入备份记录 }else{ shutdownJob(context,pd,parameter,webctx); } } catch (Exception e) { logger.error(e.toString(), e); try { shutdownJob(context,pd,parameter,webctx); } catch (Exception e1) { e1.printStackTrace(); } } } /**把定时备份任务状态改为关闭 * @param pd * @param parameter * @param webctx */ public void shutdownJob(JobExecutionContext context, PageData pd, Map<String,Object> parameter, WebApplicationContext webctx){ try { context.getScheduler().shutdown(); //备份异常时关闭任务 TimingBackUpService timingbackupService = (TimingBackUpService)webctx.getBean("timingbackupService"); pd.put("STATUS", 2); //改变定时运行状态为2,关闭 pd.put("TIMINGBACKUP_ID", parameter.get("TIMINGBACKUP_ID").toString()); //定时备份ID timingbackupService.changeStatus(pd); } catch (Exception e) { e.printStackTrace(); } } } sourcecode/MVNFHM/src/main/java/com/fh/controller/fhdb/timingbackup/TimingBackUpController.java
New file @@ -0,0 +1,317 @@ package com.fh.controller.fhdb.timingbackup; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.util.AppUtil; import com.fh.util.DbFH; import com.fh.util.ObjectExcelView; import com.fh.util.PageData; import com.fh.util.Jurisdiction; import com.fh.util.QuartzManager; import com.fh.util.Tools; import com.fh.service.fhdb.timingbackup.TimingBackUpManager; /** * 说明:定时备份 * 创建人:FH Q313596790 * 创建时间:2016-04-09 */ @Controller @RequestMapping(value="/timingbackup") public class TimingBackUpController extends BaseController { private static String JOB_GROUP_NAME = "DB_JOBGROUP_NAME"; //任务组 private static String TRIGGER_GROUP_NAME = "DB_TRIGGERGROUP_NAME"; //触发器组 String menuUrl = "timingbackup/list.do"; //菜单地址(权限用) @Resource(name="timingbackupService") private TimingBackUpManager timingbackupService; /**保存 * @param * @throws Exception */ @RequestMapping(value="/save") public ModelAndView save() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"新增TimingBackUp"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String JOBNAME = pd.getString("TABLENAME")+"_"+Tools.getRandomNum(); //任务名称 String FHTIME = pd.getString("FHTIME"); //时间规则 String TABLENAME = pd.getString("TABLENAME"); //表名or整库(all) String TIMINGBACKUP_ID = this.get32UUID(); pd.put("TIMINGBACKUP_ID", TIMINGBACKUP_ID); //主键 pd.put("JOBNAME", JOBNAME); //任务名称 pd.put("CREATE_TIME", Tools.date2Str(new Date())); //创建时间 pd.put("STATUS", "1"); //状态 timingbackupService.save(pd); this.addJob(JOBNAME, FHTIME, TABLENAME,TIMINGBACKUP_ID); //添加任务 mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**删除 * @param out * @throws Exception */ @RequestMapping(value="/delete") public void delete(PrintWriter out) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"删除TimingBackUp"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限 PageData pd = new PageData(); pd = this.getPageData(); this.removeJob(timingbackupService.findById(pd).getString("JOBNAME")); //删除任务 timingbackupService.delete(pd); //删除数据库记录 out.write("success"); out.close(); } /**修改 * @param * @throws Exception */ @RequestMapping(value="/edit") public ModelAndView edit() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"修改TimingBackUp"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); this.removeJob(timingbackupService.findById(pd).getString("JOBNAME")); //删除任务(修改时可能会修改要备份的表,所以任务名称会改变,所以执行删除任务再新增任务来完成修改任务的效果) String JOBNAME = pd.getString("TABLENAME")+"_"+Tools.getRandomNum(); //任务名称 String FHTIME = pd.getString("FHTIME"); //时间规则 String TABLENAME = pd.getString("TABLENAME"); //表名or整库(all) String TIMINGBACKUP_ID = pd.getString("TIMINGBACKUP_ID"); //任务数据库记录的ID this.addJob(JOBNAME, FHTIME, TABLENAME,TIMINGBACKUP_ID); //添加任务 pd.put("JOBNAME", JOBNAME); //任务名称 pd.put("CREATE_TIME", Tools.date2Str(new Date())); //创建时间 pd.put("STATUS", "1"); //状态 timingbackupService.edit(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**列表 * @param page * @throws Exception */ @RequestMapping(value="/list") public ModelAndView list(Page page) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"列表TimingBackUp"); //if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码) ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String keywords = pd.getString("keywords"); //关键词检索条件 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } String lastStart = pd.getString("lastStart"); //开始时间 String lastEnd = pd.getString("lastEnd"); //结束时间 if(lastStart != null && !"".equals(lastStart)){ pd.put("lastStart", lastStart+" 00:00:00"); } if(lastEnd != null && !"".equals(lastEnd)){ pd.put("lastEnd", lastEnd+" 00:00:00"); } page.setPd(pd); List<PageData> varList = timingbackupService.list(page); //列出TimingBackUp列表 mv.setViewName("fhdb/timingbackup/timingbackup_list"); mv.addObject("varList", varList); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**去新增页面 * @param * @throws Exception */ @SuppressWarnings("unchecked") @RequestMapping(value="/goAdd") public ModelAndView goAdd()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Object[] arrOb = DbFH.getTables(); List<String> tblist = (List<String>)arrOb[1]; mv.addObject("varList", tblist); //所有表 mv.addObject("dbtype", arrOb[2]); //数据库类型 mv.setViewName("fhdb/timingbackup/timingbackup_edit"); mv.addObject("msg", "save"); mv.addObject("pd", pd); return mv; } /**去修改页面 * @param * @throws Exception */ @SuppressWarnings("unchecked") @RequestMapping(value="/goEdit") public ModelAndView goEdit()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Object[] arrOb = DbFH.getTables(); List<String> tblist = (List<String>)arrOb[1]; mv.addObject("varList", tblist); //所有表 mv.addObject("dbtype", arrOb[2]); //数据库类型 pd = timingbackupService.findById(pd); //根据ID读取 mv.setViewName("fhdb/timingbackup/timingbackup_edit"); mv.addObject("msg", "edit"); mv.addObject("pd", pd); return mv; } /**批量删除 * @param * @throws Exception */ @RequestMapping(value="/deleteAll") @ResponseBody public Object deleteAll() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"批量删除TimingBackUp"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限 PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); String DATA_IDS = pd.getString("DATA_IDS"); if(Tools.notEmpty(DATA_IDS)){ String ArrayDATA_IDS[] = DATA_IDS.split(","); for(int i=0;i<ArrayDATA_IDS.length;i++){ pd.put("TIMINGBACKUP_ID", ArrayDATA_IDS[i]); this.removeJob(timingbackupService.findById(pd).getString("JOBNAME")); //删除任务 } timingbackupService.deleteAll(ArrayDATA_IDS); //删除数据库记录 pd.put("msg", "ok"); }else{ pd.put("msg", "no"); } pdList.add(pd); map.put("list", pdList); return AppUtil.returnObject(pd, map); } /**切换状态 * @param * @throws Exception */ @RequestMapping(value="/changeStatus") @ResponseBody public Object changeStatus() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"切换状态"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); pd = this.getPageData(); pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); int STATUS = Integer.parseInt(pd.get("STATUS").toString()); pd = timingbackupService.findById(pd); //根据ID读取 if(STATUS == 2){ pd.put("STATUS", 2); this.removeJob(pd.getString("JOBNAME")); //删除任务 }else{ pd.put("STATUS", 1); String JOBNAME = pd.getString("JOBNAME"); //任务名称 String FHTIME = pd.getString("FHTIME"); //时间规则 String TABLENAME = pd.getString("TABLENAME"); //表名or整库(all) String TIMINGBACKUP_ID = pd.getString("TIMINGBACKUP_ID"); //任务数据库记录的ID this.addJob(JOBNAME, FHTIME, TABLENAME,TIMINGBACKUP_ID); //添加任务 } timingbackupService.changeStatus(pd); pd.put("msg", "ok"); pdList.add(pd); map.put("list", pdList); return AppUtil.returnObject(pd, map); } /**导出到excel * @param * @throws Exception */ @RequestMapping(value="/excel") public ModelAndView exportExcel() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"导出TimingBackUp到excel"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} ModelAndView mv = new ModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Map<String,Object> dataMap = new HashMap<String,Object>(); List<String> titles = new ArrayList<String>(); titles.add("任务名称"); //1 titles.add("创建时间"); //2 titles.add("表名"); //3 titles.add("状态"); //4 titles.add("时间规则"); //5 titles.add("规则说明"); //6 titles.add("备注"); //7 dataMap.put("titles", titles); List<PageData> varOList = timingbackupService.listAll(pd); List<PageData> varList = new ArrayList<PageData>(); for(int i=0;i<varOList.size();i++){ PageData vpd = new PageData(); vpd.put("var1", varOList.get(i).getString("JOBNAME")); //1 vpd.put("var2", varOList.get(i).getString("CREATE_TIME")); //2 vpd.put("var3", varOList.get(i).getString("TABLENAME")); //3 vpd.put("var4", varOList.get(i).get("STATUS").toString()); //4 vpd.put("var5", varOList.get(i).getString("FHTIME")); //5 vpd.put("var6", varOList.get(i).getString("TIMEEXPLAIN")); //6 vpd.put("var7", varOList.get(i).getString("BZ")); //7 varList.add(vpd); } dataMap.put("varList", varList); ObjectExcelView erv = new ObjectExcelView(); mv = new ModelAndView(erv,dataMap); return mv; } /**新增任务 * @param JOBNAME 任务名称 * @param FHTIME 时间规则 * @param parameter 传的参数 * @param TIMINGBACKUP_ID 定时备份任务的ID */ public void addJob(String JOBNAME, String FHTIME, String TABLENAME, String TIMINGBACKUP_ID){ Map<String,Object> parameter = new HashMap<String,Object>(); parameter.put("TABLENAME", TABLENAME); parameter.put("TIMINGBACKUP_ID", TIMINGBACKUP_ID); QuartzManager.addJob(JOBNAME,JOB_GROUP_NAME, JOBNAME, TRIGGER_GROUP_NAME, DbBackupQuartzJob.class, FHTIME ,parameter); } /**删除任务 * @param JOBNAME */ public void removeJob(String JOBNAME){ QuartzManager.removeJob(JOBNAME, JOB_GROUP_NAME,JOBNAME, TRIGGER_GROUP_NAME); } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/fhoa/datajur/DatajurController.java
New file @@ -0,0 +1,87 @@ package com.fh.controller.fhoa.datajur; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.annotation.Resource; import net.sf.json.JSONArray; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.util.PageData; import com.fh.util.Jurisdiction; import com.fh.service.fhoa.datajur.DatajurManager; import com.fh.service.fhoa.department.DepartmentManager; /** * 说明:组织数据权限表 * 创建人:FH Q313596790 * 创建时间:2016-04-26 */ @Controller @RequestMapping(value="/datajur") public class DatajurController extends BaseController { String menuUrl = "datajur/list.do"; //菜单地址(权限用) @Resource(name="datajurService") private DatajurManager datajurService; @Resource(name="departmentService") private DepartmentManager departmentService; /**修改 * @param * @throws Exception */ @RequestMapping(value="/edit") public ModelAndView edit() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"修改Datajur"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("parentId", pd.getString("DEPARTMENT_ID")); pd.put("DEPARTMENT_IDS", departmentService.getDEPARTMENT_IDS(pd)); //部门ID集 datajurService.edit(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**去修改页面 * @param * @throws Exception */ @RequestMapping(value="/goEdit") public ModelAndView goEdit()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("PARENT_ID", Jurisdiction.getDEPARTMENT_ID()); List<PageData> zdepartmentPdList = new ArrayList<PageData>(); JSONArray arr = JSONArray.fromObject(departmentService.listAllDepartmentToSelect(pd,zdepartmentPdList)); mv.addObject("zTreeNodes", (null == arr ?"":arr.toString())); pd = datajurService.findById(pd); //根据ID读取 mv.addObject("DATAJUR_ID", pd.getString("DATAJUR_ID")); pd = departmentService.findById(pd);//读取部门数据(用部门名称) mv.setViewName("fhoa/datajur/datajur_edit"); mv.addObject("msg", "edit"); mv.addObject("pd", pd); return mv; } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/fhoa/department/DepartmentController.java
New file @@ -0,0 +1,259 @@ package com.fh.controller.fhoa.department; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import net.sf.json.JSONArray; import org.apache.shiro.session.Session; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.entity.system.User; import com.fh.util.AppUtil; import com.fh.util.Const; import com.fh.util.PageData; import com.fh.util.Jurisdiction; import com.fh.service.fhoa.department.DepartmentManager; import com.fh.service.system.system.SystemManager; import com.fh.service.system.user.UserManager; /** * 说明:组织机构 * 创建人:FH Q313596790 * 创建时间:2015-12-16 */ @Controller @RequestMapping(value="/department") public class DepartmentController extends BaseController { String menuUrl = "department/list.do"; //菜单地址(权限用) @Resource(name="departmentService") private DepartmentManager departmentService; @Resource(name="systemService") private SystemManager systemService; @Resource(name="userService") private UserManager userService; /**保存 * @param * @throws Exception */ @RequestMapping(value="/save") public ModelAndView save() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"新增department"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("DEPARTMENT_ID", this.get32UUID()); //主键 departmentService.save(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /** * 删除 * @param DEPARTMENT_ID * @param * @throws Exception */ @RequestMapping(value="/delete") @ResponseBody public Object delete(@RequestParam String DEPARTMENT_ID) throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"删除department"); Map<String,String> map = new HashMap<String,String>(); PageData pd = new PageData(); pd.put("DEPARTMENT_ID", DEPARTMENT_ID); //pd.put("SYSTEM_ID", SYSTEM_ID); pd.put("parentId", DEPARTMENT_ID); String errInfo = "success"; if(departmentService.listSubDepartmentByParentId(pd).size() > 0){//判断是否有子级,是:不允许删除 errInfo = "false"; }else{ departmentService.delete(pd); //执行删除 } map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } /**修改 * @param * @throws Exception */ @RequestMapping(value="/edit") public ModelAndView edit() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"修改department"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); departmentService.edit(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**列表 * @param page * @throws Exception */ @RequestMapping(value="/list") public ModelAndView list(Page page) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"列表department"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String keywords = pd.getString("keywords"); //检索条件 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } Session session = Jurisdiction.getSession(); User user = (User)session.getAttribute(Const.SESSION_USER); pd.put("userId", user.getUSER_ID()); if(pd.getString("TENANT_ID") == null || "".equals(pd.getString("TENANT_ID"))) { pd.put("TENANT_ID", "0"); } List<PageData> tenantList = userService.tenantList(pd); mv.addObject("tenantList", tenantList); if(tenantList.size() > 0 && "0".equals(pd.getString("TENANT_ID"))) { pd.put("TENANT_ID", tenantList.get(0).get("TENANT_ID")); } mv.addObject("TENANT_ID", pd.get("TENANT_ID")); String DEPARTMENT_ID = null == pd.get("DEPARTMENT_ID")?"":pd.get("DEPARTMENT_ID").toString(); if(null != pd.get("id") && !"".equals(pd.get("id").toString())){ DEPARTMENT_ID = pd.get("id").toString(); } pd.put("DEPARTMENT_ID", DEPARTMENT_ID); //上级ID page.setPd(pd); List<PageData> varList = departmentService.list(page); //列出Dictionaries列表 mv.addObject("pd", departmentService.findById(pd)); //传入上级所有信息 mv.addObject("DEPARTMENT_ID", DEPARTMENT_ID); //上级ID mv.setViewName("fhoa/department/department_list"); mv.addObject("varList", varList); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /** * 显示列表ztree * @param model * @return */ @RequestMapping(value="/listAllDepartment") public ModelAndView listAllDepartment(Model model,String DEPARTMENT_ID)throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); try{ Session session = Jurisdiction.getSession(); User user = (User)session.getAttribute(Const.SESSION_USER); pd.put("userId", user.getUSER_ID()); if(pd.getString("TENANT_ID") == null || "".equals(pd.getString("TENANT_ID"))) { pd.put("TENANT_ID", "0"); } List<PageData> tenantList = userService.tenantList(pd); mv.addObject("tenantList", tenantList); if(tenantList.size() > 0 && "0".equals(pd.getString("TENANT_ID"))) { pd.put("TENANT_ID", tenantList.get(0).get("TENANT_ID")); } mv.addObject("TENANT_ID", pd.get("TENANT_ID")); pd.put("PARENT_ID", "0"); JSONArray arr = JSONArray.fromObject(departmentService.listAllDepartment(pd)); String json = arr.toString(); json = json.replaceAll("DEPARTMENT_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("NAME", "name").replaceAll("subDepartment", "nodes").replaceAll("hasDepartment", "checked").replaceAll("treeurl", "url"); model.addAttribute("zTreeNodes", json); mv.addObject("DEPARTMENT_ID",DEPARTMENT_ID); mv.addObject("pd", pd); mv.setViewName("fhoa/department/department_ztree"); } catch(Exception e){ logger.error(e.toString(), e); } return mv; } /**去新增页面 * @param * @throws Exception */ @RequestMapping(value="/goAdd") public ModelAndView goAdd()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String DEPARTMENT_ID = null == pd.get("DEPARTMENT_ID")?"":pd.get("DEPARTMENT_ID").toString(); pd.put("DEPARTMENT_ID", DEPARTMENT_ID); //上级ID mv.addObject("pds",departmentService.findById(pd)); //传入上级所有信息 mv.addObject("DEPARTMENT_ID", DEPARTMENT_ID); //传入ID,作为子级ID用 mv.addObject("TENANT_ID", pd.getString("TENANT_ID")); mv.setViewName("fhoa/department/department_edit"); mv.addObject("msg", "save"); return mv; } /**去修改页面 * @param * @throws Exception */ @RequestMapping(value="/goEdit") public ModelAndView goEdit()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String DEPARTMENT_ID = pd.getString("DEPARTMENT_ID"); pd = departmentService.findById(pd); //根据ID读取 mv.addObject("pd", pd); //放入视图容器 pd.put("DEPARTMENT_ID",pd.get("PARENT_ID").toString()); //用作上级信息 mv.addObject("pds",departmentService.findById(pd)); //传入上级所有信息 mv.addObject("DEPARTMENT_ID", pd.get("PARENT_ID").toString()); //传入上级ID,作为子ID用 pd.put("DEPARTMENT_ID",DEPARTMENT_ID); //复原本ID mv.addObject("TENANT_ID", pd.getString("TENANT_ID")); mv.setViewName("fhoa/department/department_edit"); mv.addObject("msg", "edit"); return mv; } /**判断编码是否存在 * @return */ @RequestMapping(value="/hasBianma") @ResponseBody public Object hasBianma(){ Map<String,String> map = new HashMap<String,String>(); String errInfo = "success"; PageData pd = new PageData(); try{ pd = this.getPageData(); if(departmentService.findByBianma(pd) != null){ errInfo = "error"; } } catch(Exception e){ logger.error(e.toString(), e); } map.put("result", errInfo); //返回结果 return AppUtil.returnObject(new PageData(), map); } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/fhoa/fhfile/FhfileController.java
New file @@ -0,0 +1,183 @@ package com.fh.controller.fhoa.fhfile; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.util.AppUtil; import com.fh.util.Const; import com.fh.util.DelAllFile; import com.fh.util.FileDownload; import com.fh.util.FileUtil; import com.fh.util.PageData; import com.fh.util.Jurisdiction; import com.fh.util.PathUtil; import com.fh.util.Tools; import com.fh.service.fhoa.fhfile.FhfileManager; /** * 说明:文件管理 * 创建人:FH Q313596790 * 创建时间:2016-05-27 */ @Controller @RequestMapping(value="/fhfile") public class FhfileController extends BaseController { String menuUrl = "fhfile/list.do"; //菜单地址(权限用) @Resource(name="fhfileService") private FhfileManager fhfileService; /**保存 * @param * @throws Exception */ @RequestMapping(value="/save") public ModelAndView save() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"新增Fhfile"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("FHFILE_ID", this.get32UUID()); //主键 pd.put("CTIME", Tools.date2Str(new Date())); //上传时间 pd.put("USERNAME", Jurisdiction.getUsername()); //上传者 pd.put("DEPARTMENT_ID", Jurisdiction.getDEPARTMENT_ID()); //部门ID pd.put("FILESIZE", FileUtil.getFilesize(PathUtil.getClasspath() + Const.FILEPATHFILEOA + pd.getString("FILEPATH"))); //文件大小 fhfileService.save(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**删除 * @param out * @throws Exception */ @RequestMapping(value="/delete") public void delete(PrintWriter out) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"删除Fhfile"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限 PageData pd = new PageData(); pd = this.getPageData(); pd = fhfileService.findById(pd); fhfileService.delete(pd); DelAllFile.delFolder(PathUtil.getClasspath()+ Const.FILEPATHFILEOA + pd.getString("FILEPATH")); //删除文件 out.write("success"); out.close(); } /**列表 * @param page * @throws Exception */ @RequestMapping(value="/list") public ModelAndView list(Page page) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"列表Fhfile"); //if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码) ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String keywords = pd.getString("keywords"); //关键词检索条件 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } String item = Jurisdiction.getDEPARTMENT_IDS(); if("0".equals(item) || "无权".equals(item)){ pd.put("item",""); //根据部门ID过滤 }else{ pd.put("item", item.replaceFirst("\\(", "\\('"+Jurisdiction.getDEPARTMENT_ID()+"',")); } page.setPd(pd); List<PageData> varList = fhfileService.list(page); //列出Fhfile列表 mv.setViewName("fhoa/fhfile/fhfile_list"); mv.addObject("varList", varList); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**去新增页面 * @param * @throws Exception */ @RequestMapping(value="/goAdd") public ModelAndView goAdd()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.setViewName("fhoa/fhfile/fhfile_edit"); mv.addObject("msg", "save"); mv.addObject("pd", pd); return mv; } /**批量删除 * @param * @throws Exception */ @RequestMapping(value="/deleteAll") @ResponseBody public Object deleteAll() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"批量删除Fhfile"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限 PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); String DATA_IDS = pd.getString("DATA_IDS"); if(null != DATA_IDS && !"".equals(DATA_IDS)){ String ArrayDATA_IDS[] = DATA_IDS.split(","); PageData fpd = new PageData(); for(int i=0;i<ArrayDATA_IDS.length;i++){ fpd.put("FHFILE_ID", ArrayDATA_IDS[i]); fpd = fhfileService.findById(fpd); DelAllFile.delFolder(PathUtil.getClasspath()+ Const.FILEPATHFILEOA + fpd.getString("FILEPATH")); //删除物理文件 } fhfileService.deleteAll(ArrayDATA_IDS); //删除数据库记录 pd.put("msg", "ok"); }else{ pd.put("msg", "no"); } pdList.add(pd); map.put("list", pdList); return AppUtil.returnObject(pd, map); } /**下载 * @param response * @throws Exception */ @RequestMapping(value="/download") public void downExcel(HttpServletResponse response)throws Exception{ PageData pd = new PageData(); pd = this.getPageData(); pd = fhfileService.findById(pd); String fileName = pd.getString("FILEPATH"); FileDownload.fileDownload(response, PathUtil.getClasspath() + Const.FILEPATHFILEOA + fileName, pd.getString("NAME")+fileName.substring(19, fileName.length())); } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/fhoa/staff/StaffController.java
New file @@ -0,0 +1,335 @@ package com.fh.controller.fhoa.staff; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import net.sf.json.JSONArray; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.util.AppUtil; import com.fh.util.ObjectExcelView; import com.fh.util.PageData; import com.fh.util.Jurisdiction; import com.fh.util.Tools; import com.fh.service.fhoa.datajur.DatajurManager; import com.fh.service.fhoa.department.DepartmentManager; import com.fh.service.fhoa.staff.StaffManager; /** * 说明:员工管理 * 创建人:FH Q313596790 * 创建时间:2016-04-23 */ @Controller @RequestMapping(value="/staff") public class StaffController extends BaseController { String menuUrl = "staff/list.do"; //菜单地址(权限用) @Resource(name="staffService") private StaffManager staffService; @Resource(name="departmentService") private DepartmentManager departmentService; @Resource(name="datajurService") private DatajurManager datajurService; /**保存 * @param * @throws Exception */ @RequestMapping(value="/save") public ModelAndView save() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"新增Staff"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("STAFF_ID", this.get32UUID()); //主键 pd.put("USER_ID", ""); //绑定账号ID staffService.save(pd); //保存员工信息到员工表 pd.put("parentId", pd.getString("DEPARTMENT_ID")); String DEPARTMENT_IDS = departmentService.getDEPARTMENT_IDS(pd);//获取某个部门所有下级部门ID pd.put("DATAJUR_ID", pd.getString("STAFF_ID")); //主键 pd.put("DEPARTMENT_IDS", DEPARTMENT_IDS); //部门ID集 datajurService.save(pd); //把此员工默认部门及以下部门ID保存到组织数据权限表 mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**删除 * @param out * @throws Exception */ @RequestMapping(value="/delete") public void delete(PrintWriter out) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"删除Staff"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限 PageData pd = new PageData(); pd = this.getPageData(); staffService.delete(pd); out.write("success"); out.close(); } /**修改 * @param * @throws Exception */ @RequestMapping(value="/edit") public ModelAndView edit() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"修改Staff"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); staffService.edit(pd); pd.put("parentId", pd.getString("DEPARTMENT_ID")); String DEPARTMENT_IDS = departmentService.getDEPARTMENT_IDS(pd);//获取某个部门所有下级部门ID pd.put("DATAJUR_ID", pd.getString("STAFF_ID")); //主键 pd.put("DEPARTMENT_IDS", DEPARTMENT_IDS); //部门ID集 datajurService.edit(pd); //把此员工默认部门及以下部门ID保存到组织数据权限表 mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**列表(检索条件中的部门,只列出此操作用户最高部门权限以下所有部门的员工) * @param page * @throws Exception */ @RequestMapping(value="/list") public ModelAndView list(Page page) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"列表Staff"); //if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码) ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String keywords = pd.getString("keywords"); //关键词检索条件 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } String DEPARTMENT_ID = pd.getString("DEPARTMENT_ID"); pd.put("DEPARTMENT_ID", null == DEPARTMENT_ID?Jurisdiction.getDEPARTMENT_ID():DEPARTMENT_ID); //只有检索条件穿过值时,才不为null,否则读取缓存 pd.put("parentId", pd.getString("DEPARTMENT_ID")); pd.put("item", (null == pd.getString("DEPARTMENT_ID")?Jurisdiction.getDEPARTMENT_IDS():departmentService.getDEPARTMENT_IDS(pd))); //部门检索条件,列出此部门下级所属部门的员工 /* 比如员工 张三 所有部门权限的部门为 A , A 的下级有 C , D ,F ,那么当部门检索条件值为A时,只列出A以下部门的员工(自己不能修改自己的信息,只能上级部门修改),不列出部门为A的员工,当部门检索条件值为C时,可以列出C及C以下员工 */ if(!(null == DEPARTMENT_ID || DEPARTMENT_ID.equals(Jurisdiction.getDEPARTMENT_ID()))){ pd.put("item", pd.getString("item").replaceFirst("\\(", "\\('"+DEPARTMENT_ID+"',")); } page.setPd(pd); List<PageData> varList = staffService.list(page); //列出Staff列表 //列表页面树形下拉框用(保持下拉树里面的数据不变) String ZDEPARTMENT_ID = pd.getString("ZDEPARTMENT_ID"); ZDEPARTMENT_ID = Tools.notEmpty(ZDEPARTMENT_ID)?ZDEPARTMENT_ID:Jurisdiction.getDEPARTMENT_ID(); pd.put("ZDEPARTMENT_ID", ZDEPARTMENT_ID); List<PageData> zdepartmentPdList = new ArrayList<PageData>(); pd.put("parentId", ZDEPARTMENT_ID); JSONArray arr = JSONArray.fromObject(departmentService.listAllDepartmentToSelect(pd,zdepartmentPdList)); mv.addObject("zTreeNodes", arr.toString()); PageData dpd = departmentService.findById(pd); if(null != dpd){ ZDEPARTMENT_ID = dpd.getString("NAME"); } mv.addObject("depname", ZDEPARTMENT_ID); mv.setViewName("fhoa/staff/staff_list"); mv.addObject("varList", varList); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**去新增页面 * @param * @throws Exception */ @RequestMapping(value="/goAdd") public ModelAndView goAdd()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); List<PageData> zdepartmentPdList = new ArrayList<PageData>(); pd.put("parentId", Jurisdiction.getDEPARTMENT_ID()); JSONArray arr = JSONArray.fromObject(departmentService.listAllDepartmentToSelect(pd,zdepartmentPdList)); mv.addObject("zTreeNodes", (null == arr ?"":arr.toString())); mv.addObject("msg", "save"); mv.addObject("pd", pd); mv.setViewName("fhoa/staff/staff_edit"); return mv; } /**去修改页面 * @param * @throws Exception */ @RequestMapping(value="/goEdit") public ModelAndView goEdit()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); List<PageData> zdepartmentPdList = new ArrayList<PageData>(); pd.put("parentId", Jurisdiction.getDEPARTMENT_ID()); JSONArray arr = JSONArray.fromObject(departmentService.listAllDepartmentToSelect(pd,zdepartmentPdList)); mv.addObject("zTreeNodes", (null == arr ?"":arr.toString())); pd = staffService.findById(pd); //根据ID读取 mv.setViewName("fhoa/staff/staff_edit"); mv.addObject("depname", departmentService.findById(pd).getString("NAME")); mv.addObject("msg", "edit"); mv.addObject("pd", pd); return mv; } /**批量删除 * @param * @throws Exception */ @RequestMapping(value="/deleteAll") @ResponseBody public Object deleteAll() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"批量删除Staff"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限 PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); String DATA_IDS = pd.getString("DATA_IDS"); if(null != DATA_IDS && !"".equals(DATA_IDS)){ String ArrayDATA_IDS[] = DATA_IDS.split(","); staffService.deleteAll(ArrayDATA_IDS); pd.put("msg", "ok"); }else{ pd.put("msg", "no"); } pdList.add(pd); map.put("list", pdList); return AppUtil.returnObject(pd, map); } /**绑定用户 * @param * @throws Exception */ @RequestMapping(value="/userBinding") @ResponseBody public Object userBinding() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"绑定用户"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); pd = this.getPageData(); staffService.userBinding(pd); return AppUtil.returnObject(pd, map); } /**导出到excel * @param * @throws Exception */ @RequestMapping(value="/excel") public ModelAndView exportExcel() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"导出Staff到excel"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} ModelAndView mv = new ModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Map<String,Object> dataMap = new HashMap<String,Object>(); List<String> titles = new ArrayList<String>(); titles.add("姓名"); //1 titles.add("英文"); //2 titles.add("编码"); //3 titles.add("部门"); //4 titles.add("职责"); //5 titles.add("电话"); //6 titles.add("邮箱"); //7 titles.add("性别"); //8 titles.add("出生日期"); //9 titles.add("民族"); //10 titles.add("岗位类别"); //11 titles.add("参加工作时间"); //12 titles.add("籍贯"); //13 titles.add("政治面貌"); //14 titles.add("入团时间"); //15 titles.add("身份证号"); //16 titles.add("婚姻状况"); //17 titles.add("进本单位时间"); //18 titles.add("现岗位"); //19 titles.add("上岗时间"); //20 titles.add("学历"); //21 titles.add("毕业学校"); //22 titles.add("专业"); //23 titles.add("职称"); //24 titles.add("职业资格证"); //25 titles.add("劳动合同时长"); //26 titles.add("签订日期"); //27 titles.add("终止日期"); //28 titles.add("现住址"); //29 titles.add("绑定账号ID"); //30 titles.add("备注"); //31 dataMap.put("titles", titles); List<PageData> varOList = staffService.listAll(pd); List<PageData> varList = new ArrayList<PageData>(); for(int i=0;i<varOList.size();i++){ PageData vpd = new PageData(); vpd.put("var1", varOList.get(i).getString("NAME")); //1 vpd.put("var2", varOList.get(i).getString("NAME_EN")); //2 vpd.put("var3", varOList.get(i).getString("BIANMA")); //3 vpd.put("var4", varOList.get(i).getString("DEPARTMENT_ID")); //4 vpd.put("var5", varOList.get(i).getString("FUNCTIONS")); //5 vpd.put("var6", varOList.get(i).getString("TEL")); //6 vpd.put("var7", varOList.get(i).getString("EMAIL")); //7 vpd.put("var8", varOList.get(i).getString("SEX")); //8 vpd.put("var9", varOList.get(i).getString("BIRTHDAY")); //9 vpd.put("var10", varOList.get(i).getString("NATION")); //10 vpd.put("var11", varOList.get(i).getString("JOBTYPE")); //11 vpd.put("var12", varOList.get(i).getString("JOBJOINTIME")); //12 vpd.put("var13", varOList.get(i).getString("FADDRESS")); //13 vpd.put("var14", varOList.get(i).getString("POLITICAL")); //14 vpd.put("var15", varOList.get(i).getString("PJOINTIME")); //15 vpd.put("var16", varOList.get(i).getString("SFID")); //16 vpd.put("var17", varOList.get(i).getString("MARITAL")); //17 vpd.put("var18", varOList.get(i).getString("DJOINTIME")); //18 vpd.put("var19", varOList.get(i).getString("POST")); //19 vpd.put("var20", varOList.get(i).getString("POJOINTIME")); //20 vpd.put("var21", varOList.get(i).getString("EDUCATION")); //21 vpd.put("var22", varOList.get(i).getString("SCHOOL")); //22 vpd.put("var23", varOList.get(i).getString("MAJOR")); //23 vpd.put("var24", varOList.get(i).getString("FTITLE")); //24 vpd.put("var25", varOList.get(i).getString("CERTIFICATE")); //25 vpd.put("var26", varOList.get(i).get("CONTRACTLENGTH").toString()); //26 vpd.put("var27", varOList.get(i).getString("CSTARTTIME")); //27 vpd.put("var28", varOList.get(i).getString("CENDTIME")); //28 vpd.put("var29", varOList.get(i).getString("ADDRESS")); //29 vpd.put("var30", varOList.get(i).getString("USER_ID")); //30 vpd.put("var31", varOList.get(i).getString("BZ")); //31 varList.add(vpd); } dataMap.put("varList", varList); ObjectExcelView erv = new ObjectExcelView(); mv = new ModelAndView(erv,dataMap); return mv; } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/information/attached/AttachedController.java
New file @@ -0,0 +1,226 @@ package com.fh.controller.information.attached; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.util.AppUtil; import com.fh.util.ObjectExcelView; import com.fh.util.PageData; import com.fh.util.Jurisdiction; import com.fh.util.Tools; import com.fh.service.information.attached.AttachedManager; import com.fh.service.information.attachedmx.AttachedMxManager; /** * 说明:主附结构 * 创建人:FH Q313596790 * 创建时间:2016-04-17 */ @Controller @RequestMapping(value="/attached") public class AttachedController extends BaseController { String menuUrl = "attached/list.do"; //菜单地址(权限用) @Resource(name="attachedService") private AttachedManager attachedService; @Resource(name="attachedmxService") private AttachedMxManager attachedmxService; /**保存 * @param * @throws Exception */ @RequestMapping(value="/save") public ModelAndView save() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"新增Attached"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("ATTACHED_ID", this.get32UUID()); //主键 pd.put("CTIME", Tools.date2Str(new Date())); //创建时间 attachedService.save(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**删除 * @param out * @throws NumberFormatException * @throws Exception */ @RequestMapping(value="/delete") @ResponseBody public Object delete() throws NumberFormatException, Exception{ logBefore(logger, Jurisdiction.getUsername()+"删除Attached"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限 Map<String,String> map = new HashMap<String,String>(); PageData pd = new PageData(); pd = this.getPageData(); String errInfo = "success"; if(Integer.parseInt(attachedmxService.findCount(pd).get("zs").toString()) > 0){ errInfo = "false"; }else{ attachedService.delete(pd); } map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } /**修改 * @param * @throws Exception */ @RequestMapping(value="/edit") public ModelAndView edit() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"修改Attached"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); attachedService.edit(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**列表 * @param page * @throws Exception */ @RequestMapping(value="/list") public ModelAndView list(Page page) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"列表Attached"); //if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码) ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String keywords = pd.getString("keywords"); //关键词检索条件 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } page.setPd(pd); List<PageData> varList = attachedService.list(page); //列出Attached列表 mv.setViewName("information/attached/attached_list"); mv.addObject("varList", varList); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**去新增页面 * @param * @throws Exception */ @RequestMapping(value="/goAdd") public ModelAndView goAdd()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.setViewName("information/attached/attached_edit"); mv.addObject("msg", "save"); mv.addObject("pd", pd); return mv; } /**去修改页面 * @param * @throws Exception */ @RequestMapping(value="/goEdit") public ModelAndView goEdit()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd = attachedService.findById(pd); //根据ID读取 mv.setViewName("information/attached/attached_edit"); mv.addObject("msg", "edit"); mv.addObject("pd", pd); return mv; } /**批量删除 * @param * @throws Exception */ @RequestMapping(value="/deleteAll") @ResponseBody public Object deleteAll() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"批量删除Attached"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限 PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); String DATA_IDS = pd.getString("DATA_IDS"); if(null != DATA_IDS && !"".equals(DATA_IDS)){ String ArrayDATA_IDS[] = DATA_IDS.split(","); attachedService.deleteAll(ArrayDATA_IDS); pd.put("msg", "ok"); }else{ pd.put("msg", "no"); } pdList.add(pd); map.put("list", pdList); return AppUtil.returnObject(pd, map); } /**导出到excel * @param * @throws Exception */ @RequestMapping(value="/excel") public ModelAndView exportExcel() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"导出Attached到excel"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} ModelAndView mv = new ModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Map<String,Object> dataMap = new HashMap<String,Object>(); List<String> titles = new ArrayList<String>(); titles.add("名称"); //1 titles.add("描述"); //2 titles.add("价格"); //3 titles.add("创建时间"); //4 dataMap.put("titles", titles); List<PageData> varOList = attachedService.listAll(pd); List<PageData> varList = new ArrayList<PageData>(); for(int i=0;i<varOList.size();i++){ PageData vpd = new PageData(); vpd.put("var1", varOList.get(i).getString("NAME")); //1 vpd.put("var2", varOList.get(i).getString("FDESCRIBE")); //2 vpd.put("var3", varOList.get(i).get("PRICE").toString()); //3 vpd.put("var4", varOList.get(i).getString("CTIME")); //4 varList.add(vpd); } dataMap.put("varList", varList); ObjectExcelView erv = new ObjectExcelView(); mv = new ModelAndView(erv,dataMap); return mv; } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/information/attachedmx/AttachedMxController.java
New file @@ -0,0 +1,210 @@ package com.fh.controller.information.attachedmx; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.util.AppUtil; import com.fh.util.ObjectExcelView; import com.fh.util.PageData; import com.fh.util.Jurisdiction; import com.fh.service.information.attachedmx.AttachedMxManager; /** * 说明:明细表 * 创建人:FH Q313596790 * 创建时间:2016-04-17 */ @Controller @RequestMapping(value="/attachedmx") public class AttachedMxController extends BaseController { String menuUrl = "attachedmx/list.do"; //菜单地址(权限用) @Resource(name="attachedmxService") private AttachedMxManager attachedmxService; /**保存 * @param * @throws Exception */ @RequestMapping(value="/save") public ModelAndView save() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"新增AttachedMx"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("ATTACHEDMX_ID", this.get32UUID()); //主键 attachedmxService.save(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**删除 * @param out * @throws Exception */ @RequestMapping(value="/delete") public void delete(PrintWriter out) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"删除AttachedMx"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限 PageData pd = new PageData(); pd = this.getPageData(); attachedmxService.delete(pd); out.write("success"); out.close(); } /**修改 * @param * @throws Exception */ @RequestMapping(value="/edit") public ModelAndView edit() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"修改AttachedMx"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); attachedmxService.edit(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**列表 * @param page * @throws Exception */ @RequestMapping(value="/list") public ModelAndView list(Page page) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"列表AttachedMx"); //if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码) ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String keywords = pd.getString("keywords"); //关键词检索条件 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } page.setPd(pd); List<PageData> varList = attachedmxService.list(page); //列出AttachedMx列表 mv.setViewName("information/attachedmx/attachedmx_list"); mv.addObject("varList", varList); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**去新增页面 * @param * @throws Exception */ @RequestMapping(value="/goAdd") public ModelAndView goAdd()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.setViewName("information/attachedmx/attachedmx_edit"); mv.addObject("msg", "save"); mv.addObject("pd", pd); return mv; } /**去修改页面 * @param * @throws Exception */ @RequestMapping(value="/goEdit") public ModelAndView goEdit()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd = attachedmxService.findById(pd); //根据ID读取 mv.setViewName("information/attachedmx/attachedmx_edit"); mv.addObject("msg", "edit"); mv.addObject("pd", pd); return mv; } /**批量删除 * @param * @throws Exception */ @RequestMapping(value="/deleteAll") @ResponseBody public Object deleteAll() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"批量删除AttachedMx"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限 PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); String DATA_IDS = pd.getString("DATA_IDS"); if(null != DATA_IDS && !"".equals(DATA_IDS)){ String ArrayDATA_IDS[] = DATA_IDS.split(","); attachedmxService.deleteAll(ArrayDATA_IDS); pd.put("msg", "ok"); }else{ pd.put("msg", "no"); } pdList.add(pd); map.put("list", pdList); return AppUtil.returnObject(pd, map); } /**导出到excel * @param * @throws Exception */ @RequestMapping(value="/excel") public ModelAndView exportExcel() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"导出AttachedMx到excel"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} ModelAndView mv = new ModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Map<String,Object> dataMap = new HashMap<String,Object>(); List<String> titles = new ArrayList<String>(); titles.add("名称"); //1 titles.add("标题"); //2 titles.add("创建日期"); //3 titles.add("单价"); //4 dataMap.put("titles", titles); List<PageData> varOList = attachedmxService.listAll(pd); List<PageData> varList = new ArrayList<PageData>(); for(int i=0;i<varOList.size();i++){ PageData vpd = new PageData(); vpd.put("var1", varOList.get(i).getString("NAME")); //1 vpd.put("var2", varOList.get(i).getString("TITLE")); //2 vpd.put("var3", varOList.get(i).getString("CTIME")); //3 vpd.put("var4", varOList.get(i).get("PRICE").toString()); //4 varList.add(vpd); } dataMap.put("varList", varList); ObjectExcelView erv = new ObjectExcelView(); mv = new ModelAndView(erv,dataMap); return mv; } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/information/linkage/Linkage.java
New file @@ -0,0 +1,81 @@ package com.fh.controller.information.linkage; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.system.Dictionaries; import com.fh.service.system.dictionaries.DictionariesManager; import com.fh.util.AppUtil; import com.fh.util.PageData; import com.fh.util.Tools; /** * @author Administrator * */ /** * 说明:明细表 * 创建人:FH Q 3 13596 790 * 创建时间:2016-05-19 */ @Controller @RequestMapping(value="/linkage") public class Linkage extends BaseController{ String menuUrl = "linkage/view.do"; //菜单地址(权限用) @Resource(name="dictionariesService") private DictionariesManager dictionariesService; /**去新增页面 * @param * @throws Exception */ @RequestMapping(value="/view") public ModelAndView goAdd()throws Exception{ ModelAndView mv = this.getModelAndView(); mv.setViewName("information/linkage/view"); return mv; } /**获取连级数据 * @return */ @RequestMapping(value="/getLevels") @ResponseBody public Object getLevels(){ Map<String,Object> map = new HashMap<String,Object>(); String errInfo = "success"; PageData pd = new PageData(); try{ pd = this.getPageData(); String DICTIONARIES_ID = pd.getString("DICTIONARIES_ID"); DICTIONARIES_ID = Tools.isEmpty(DICTIONARIES_ID)?"0":DICTIONARIES_ID; List<Dictionaries> varList = dictionariesService.listSubDictByParentId(DICTIONARIES_ID); //用传过来的ID获取此ID下的子列表数据 List<PageData> pdList = new ArrayList<PageData>(); for(Dictionaries d :varList){ PageData pdf = new PageData(); pdf.put("DICTIONARIES_ID", d.getDICTIONARIES_ID()); pdf.put("NAME", d.getNAME()); pdList.add(pdf); } map.put("list", pdList); } catch(Exception e){ errInfo = "error"; logger.error(e.toString(), e); } map.put("result", errInfo); //返回结果 return AppUtil.returnObject(new PageData(), map); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/information/pictures/PicturesController.java
New file @@ -0,0 +1,318 @@ package com.fh.controller.information.pictures; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.util.AppUtil; import com.fh.util.DateUtil; import com.fh.util.DelAllFile; import com.fh.util.FileUpload; import com.fh.util.GetWeb; import com.fh.util.Jurisdiction; import com.fh.util.Const; import com.fh.util.PageData; import com.fh.util.PathUtil; import com.fh.util.Tools; import com.fh.util.Watermark; import com.fh.service.information.pictures.PicturesManager; /** * 类名称:图片管理 * 创建人:FH Q313596790 * 创建时间:2015-03-21 */ @Controller @RequestMapping(value="/pictures") public class PicturesController extends BaseController { String menuUrl = "pictures/list.do"; //菜单地址(权限用) @Resource(name="picturesService") private PicturesManager picturesService; /**列表 * @param page * @return * @throws Exception */ @RequestMapping(value="/list") public ModelAndView list(Page page) throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String KEYW = pd.getString("keyword"); //检索条件 if(null != KEYW && !"".equals(KEYW)){ pd.put("KEYW", KEYW.trim()); } page.setPd(pd); List<PageData> varList = picturesService.list(page); //列出Pictures列表 mv.setViewName("information/pictures/pictures_list"); mv.addObject("varList", varList); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**新增 * @param file * @return * @throws Exception */ @RequestMapping(value="/save") @ResponseBody public Object save( @RequestParam(required=false) MultipartFile file ) throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"新增图片"); Map<String,String> map = new HashMap<String,String>(); String ffile = DateUtil.getDays(), fileName = ""; PageData pd = new PageData(); if(Jurisdiction.buttonJurisdiction(menuUrl, "add")){ if (null != file && !file.isEmpty()) { String filePath = PathUtil.getClasspath() + Const.FILEPATHIMG + ffile; //文件上传路径 fileName = FileUpload.fileUp(file, filePath, this.get32UUID()); //执行上传 }else{ System.out.println("上传失败"); } pd.put("PICTURES_ID", this.get32UUID()); //主键 pd.put("TITLE", "图片"); //标题 pd.put("NAME", fileName); //文件名 pd.put("PATH", ffile + "/" + fileName); //路径 pd.put("CREATETIME", Tools.date2Str(new Date())); //创建时间 pd.put("MASTER_ID", "1"); //附属与 pd.put("BZ", "图片管理处上传"); //备注 Watermark.setWatemark(PathUtil.getClasspath() + Const.FILEPATHIMG + ffile + "/" + fileName);//加水印 picturesService.save(pd); } map.put("result", "ok"); return AppUtil.returnObject(pd, map); } /**删除 * @param out * @throws Exception */ @RequestMapping(value="/delete") public void delete(PrintWriter out) throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"删除图片"); PageData pd = new PageData(); if(Jurisdiction.buttonJurisdiction(menuUrl, "del")){ pd = this.getPageData(); DelAllFile.delFolder(PathUtil.getClasspath()+ Const.FILEPATHIMG + pd.getString("PATH")); //删除图片 picturesService.delete(pd); } out.write("success"); out.close(); } /**修改 * @param request * @param file * @param tpz * @param PICTURES_ID * @param TITLE * @param MASTER_ID * @param BZ * @return * @throws Exception */ @RequestMapping(value="/edit") public ModelAndView edit( HttpServletRequest request, @RequestParam(value="tp",required=false) MultipartFile file, @RequestParam(value="tpz",required=false) String tpz, @RequestParam(value="PICTURES_ID",required=false) String PICTURES_ID, @RequestParam(value="TITLE",required=false) String TITLE, @RequestParam(value="MASTER_ID",required=false) String MASTER_ID, @RequestParam(value="BZ",required=false) String BZ ) throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"修改图片"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); if(Jurisdiction.buttonJurisdiction(menuUrl, "edit")){ pd.put("PICTURES_ID", PICTURES_ID); //图片ID pd.put("TITLE", TITLE); //标题 pd.put("MASTER_ID", MASTER_ID); //属于ID pd.put("BZ", BZ); //备注 if(null == tpz){tpz = "";} String ffile = DateUtil.getDays(), fileName = ""; if (null != file && !file.isEmpty()) { String filePath = PathUtil.getClasspath() + Const.FILEPATHIMG + ffile; //文件上传路径 fileName = FileUpload.fileUp(file, filePath, this.get32UUID()); //执行上传 pd.put("PATH", ffile + "/" + fileName); //路径 pd.put("NAME", fileName); }else{ pd.put("PATH", tpz); } Watermark.setWatemark(PathUtil.getClasspath() + Const.FILEPATHIMG + ffile + "/" + fileName);//加水印 picturesService.edit(pd); //执行修改数据库 } mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**去新增页面 * @return */ @RequestMapping(value="/goAdd") public ModelAndView goAdd() throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.setViewName("information/pictures/pictures_add"); mv.addObject("pd", pd); return mv; } /**去修改页面 * @return * @throws Exception */ @RequestMapping(value="/goEdit") public ModelAndView goEdit() throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd = picturesService.findById(pd); //根据ID读取 mv.setViewName("information/pictures/pictures_edit"); mv.addObject("msg", "edit"); mv.addObject("pd", pd); return mv; } /**批量删除 * @return * @throws Exception */ @RequestMapping(value="/deleteAll") @ResponseBody public Object deleteAll() throws Exception { PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); pd = this.getPageData(); if(Jurisdiction.buttonJurisdiction(menuUrl, "del")){ List<PageData> pdList = new ArrayList<PageData>(); List<PageData> pathList = new ArrayList<PageData>(); String DATA_IDS = pd.getString("DATA_IDS"); if(null != DATA_IDS && !"".equals(DATA_IDS)){ String ArrayDATA_IDS[] = DATA_IDS.split(","); pathList = picturesService.getAllById(ArrayDATA_IDS); for(int i=0;i<pathList.size();i++){ DelAllFile.delFolder(PathUtil.getClasspath()+ Const.FILEPATHIMG + pathList.get(i).getString("PATH"));//删除图片 } picturesService.deleteAll(ArrayDATA_IDS); pd.put("msg", "ok"); }else{ pd.put("msg", "no"); } pdList.add(pd); map.put("list", pdList); } return AppUtil.returnObject(pd, map); } /**删除图片 * @param out * @throws Exception */ @RequestMapping(value="/deltp") public void deltp(PrintWriter out) throws Exception { PageData pd = new PageData(); pd = this.getPageData(); String PATH = pd.getString("PATH"); //图片路径 DelAllFile.delFolder(PathUtil.getClasspath()+ Const.FILEPATHIMG + pd.getString("PATH")); //删除图片 if(PATH != null){ picturesService.delTp(pd); //删除数据库中图片数据 } out.write("success"); out.close(); } /**去图片爬虫页面 * @return * @throws Exception */ @RequestMapping(value="/goImageCrawler") public ModelAndView goImageCrawler() throws Exception{ ModelAndView mv = this.getModelAndView(); mv.setViewName("information/pictures/imageCrawler"); return mv; } /** * 请求连接获取网页中每个图片的地址 * @param args * @throws Exception */ @RequestMapping(value="/getImagePath") @ResponseBody public Object getImagePath(){ Map<String,Object> map = new HashMap<String,Object>(); PageData pd = new PageData(); pd = this.getPageData(); List<String> imgList = new ArrayList<String>(); String errInfo = "success"; String serverUrl = pd.getString("serverUrl"); //网页地址 String msg = pd.getString("msg"); //msg:save 时保存到服务器 if (!serverUrl.startsWith("http://")){ //检验地址是否http:// errInfo = "error"; //无效地址 }else{ try { imgList = GetWeb.getImagePathList(serverUrl); if("save".equals(msg)){ String ffile = DateUtil.getDays(); String filePath = PathUtil.getClasspath() + Const.FILEPATHIMG + ffile; //文件上传路径 for(int i=0;i<imgList.size();i++){ //把网络图片保存到服务器硬盘,并数据库记录 String fileName = FileUpload.getHtmlPicture(imgList.get(i),filePath,null); //下载网络图片上传到服务器上 //保存到数据库 pd.put("PICTURES_ID", this.get32UUID()); //主键 pd.put("TITLE", "图片"); //标题 pd.put("NAME", fileName); //文件名 pd.put("PATH", ffile + "/" + fileName); //路径 pd.put("CREATETIME", Tools.date2Str(new Date())); //创建时间 pd.put("MASTER_ID", "1"); //附属与 pd.put("BZ", serverUrl+"爬取"); //备注 Watermark.setWatemark(PathUtil.getClasspath() + Const.FILEPATHIMG + ffile + "/" + fileName);//加水印 picturesService.save(pd); } } } catch (Exception e) { errInfo = "error"; //出错 } } map.put("imgList", imgList); //图片集合 map.put("result", errInfo); //返回结果 return AppUtil.returnObject(new PageData(), map); } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/outer/OuterInterfaceController.java
New file @@ -0,0 +1,270 @@ package com.fh.controller.outer; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.crypto.hash.SimpleHash; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; import org.springframework.stereotype.Controller; 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.fh.controller.base.BaseController; import com.fh.entity.system.User; import com.fh.service.system.fhlog.FHlogManager; import com.fh.service.system.tenant.TenantManager; import com.fh.service.system.user.UserManager; import com.fh.util.AES; import com.fh.util.Const; import com.fh.util.DateUtil; import com.fh.util.Jurisdiction; import com.fh.util.PageData; import com.fh.util.RedisUtil; import com.fh.util.Tools; /** 对外接口 * @author CL * 2018.10.17 */ @Controller @RequestMapping(value="/jd-api") public class OuterInterfaceController extends BaseController { @Resource(name="fhlogService") private FHlogManager FHLOG; @Resource(name="userService") private UserManager userService; @Resource(name="tenantService") private TenantManager tenantService; @Resource private RedisUtil redisUtil; private static final long TIME_OUT = 60 * 60 * 24; /* * 消息code */ public static final String RSP_CODE = "rspCode"; /* * 消息内容 */ public static final String RSP_MSG = "rspMsg"; /**访问登录页 * @return * @throws Exception */ @RequestMapping(value="/index") public ModelAndView toLogin()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = this.getPageData(); mv.setViewName("system/index/login_jd"); mv.addObject("pd",pd); return mv; } /**请求登录,验证用户 * @return * @throws Exception */ @RequestMapping(value="/user/login", method=RequestMethod.GET, produces="application/json;charset=UTF-8") @ResponseBody public String login(String userName, String passWord, String code,String service) throws Exception { System.out.println("userName="+userName); System.out.println("passWord="+passWord); System.out.println("code="+code); System.out.println("service="+service); Map<String, Object> map = new HashMap<String, Object>(); Map<String, String> data = new HashMap<String, String>(); PageData pd = this.getPageData(); Session session = Jurisdiction.getSession(); String sessionCode = (String) session.getAttribute(Const.SESSION_SECURITY_CODE); // 获取session中的验证码 if (Tools.notEmpty(code) && !sessionCode.equalsIgnoreCase(code)) { // 判断登录验证码 map.put(RSP_CODE, Const.C0004); map.put(RSP_MSG, Const.M0004); } else { String USERNAME = userName; // 登录过来的用户名 String PASSWORD = passWord; // 登录过来的密码 String type = Const.UserType.TENANT.getValue(); // 登录过来的密码 pd.put("USERNAME", USERNAME); String passwd = new SimpleHash("SHA-1", USERNAME, PASSWORD).toString(); // 密码加密 pd.put("PASSWORD", passwd); pd.put("TYPE", type); pd = userService.getUserByNameAndPwd(pd); // 根据用户名和密码去读取用户信息 if (pd != null) { pd.put("LAST_LOGIN", DateUtil.getTime().toString()); userService.updateLastLogin(pd); pd.put("SYSTEM_ID", "0"); PageData userSysInfo = userService.getUserSysInfo(pd); if (userSysInfo == null) { map.put(RSP_CODE, Const.C0002); map.put(RSP_MSG, Const.M0002); } else { PageData tenant = tenantService.findById(pd); if (tenant != null && Const.TENANT_EXPIRED.equals(String.valueOf(tenant.get("STATUS")))) { map.put(RSP_CODE, Const.C0003); map.put(RSP_MSG, Const.M0003); } else { User user = new User(); user.setUSER_ID(pd.getString("USER_ID")); user.setUSERNAME(pd.getString("USERNAME")); user.setPASSWORD(pd.getString("PASSWORD")); user.setNAME(pd.getString("NAME")); user.setRIGHTS(pd.getString("RIGHTS")); user.setROLE_ID(pd.getString("ROLE_ID")); user.setLAST_LOGIN(pd.getString("LAST_LOGIN")); user.setIP(pd.getString("IP")); user.setSTATUS(pd.getString("STATUS")); user.setTYPE(type); session.setAttribute(Const.SESSION_USER, user); // 把用户信息放session中 session.removeAttribute(Const.SESSION_SECURITY_CODE); // 清除登录验证码的session userService.AddSession(session); // shiro加入身份验证 Subject subject = SecurityUtils.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken(USERNAME, PASSWORD); try { subject.login(token); session.setAttribute(Const.SESSION_USERNAME, USERNAME); // 放入用户名到session logBefore(logger, USERNAME + "登录系统"); FHLOG.save(USERNAME, "登录系统"); map.put(RSP_CODE, Const.C0000); map.put(RSP_MSG, Const.M0000); data.put("openId", pd.getString("USER_ID")); data.put("token", session.getId().toString()); Date date = new Date(); data.put("createTime", String.valueOf(date.getTime())); Calendar c = Calendar.getInstance(); c.setTime(date); c.add(Calendar.DAY_OF_MONTH, -1); data.put("expiredTime", String.valueOf(c.getTime().getTime())); } catch (AuthenticationException e) { map.put(RSP_CODE, Const.C0001); map.put(RSP_MSG, Const.M0001); } } } } else { map.put(RSP_CODE, Const.C0001); map.put(RSP_MSG, Const.M0001); logBefore(logger, USERNAME + "登录系统密码或用户名错误"); FHLOG.save(USERNAME, "登录系统密码或用户名错误"); } } map.put("data", data); map.put("LOGIN_INFO", AES.encrypt(JSON.toJSONString(map), "e98d2f001da5678b39482efbdf5770dc")); return JSON.toJSONString(map); } /** * 获取用户信息 * @param token * @return * @throws Exception */ @RequestMapping(value="/user/info", method=RequestMethod.GET,produces="application/json;charset=UTF-8") @ResponseBody public Object getUserInfo(String token) throws Exception{ Map<String, Object> map = new HashMap<>(); Map<String, Object> data = new HashMap<>(); Session session2 = (Session)userService.getSession(token); if (session2 == null) { map.put(RSP_CODE, Const.C0009); map.put(RSP_MSG, Const.M0009); } else { try { User AA = (User)session2.getAttribute(Const.SESSION_USER); session2.touch(); User user = userService.getUserAndRoleById(AA.getUSER_ID()); if(null != user){ data.put("uid", AA.getUSER_ID()); data.put("userName", user.getNAME()); data.put("email", user.getEMAIL()); data.put("phone", user.getPHONE()); data.put("ipAddress", user.getIP()); data.put("registerTime", ""); data.put("updateTime", ""); data.put("iconURL", ""); data.put("realName", ""); data.put("province", ""); data.put("city", ""); data.put("county", ""); data.put("sex", ""); data.put("birthday", ""); data.put("qq", ""); data.put("weixin", ""); data.put("sinaweibo", ""); data.put("taobao", ""); map.put(RSP_CODE, Const.C0000); map.put(RSP_MSG, Const.M0000); } } catch (Exception e) { userService.DelSession(token); map.put(RSP_CODE, Const.C0009); map.put(RSP_MSG, Const.M0009); } } map.put("data", data); return JSON.toJSONString(map); } /** * 获取租户及公司信息 * @param openId * @return * @throws Exception */ @RequestMapping(value="/user/tenant", method=RequestMethod.GET,produces="application/json;charset=UTF-8") @ResponseBody public Object getTenant(String openId) throws Exception { Map<String, Object> map = new HashMap<>(); Map<String, Object> data = new HashMap<>(); List<Object> tenants = new ArrayList<Object>(); PageData pd = new PageData(); pd.put("USER_ID", openId); List<PageData> tenantList = tenantService.getTeanatListByUserid(pd); if (tenantList != null && tenantList.size() >0) { for (PageData t: tenantList) { Map<String, Object> tenant = new HashMap<>(); tenant.put("code", String.valueOf(t.get("TENANT_ID"))); tenant.put("id", String.valueOf(t.get("TENANT_ID"))); tenant.put("name", String.valueOf(t.get("TENANT_NAME"))); tenant.put("orgCode", "999999999"); List<Object> companys = new ArrayList<Object>(); Map<String, Object> company = new HashMap<>(); company.put("code", String.valueOf(t.get("TENANT_ID"))); company.put("hotInfoCompanyId", String.valueOf(t.get("TENANT_ID"))); company.put("id", String.valueOf(t.get("TENANT_ID"))); company.put("name", String.valueOf(t.get("TENANT_NAME"))); company.put("orgCode", "999999999"); company.put("tenantId", String.valueOf(t.get("TENANT_ID"))); companys.add(company); tenant.put("companys", companys); tenants.add(tenant); } } data.put("companys", tenants); map.put("data", data); map.put(RSP_CODE, Const.C0000); map.put(RSP_MSG, Const.M0000); return JSON.toJSONString(map); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/system/appuser/AppuserController.java
New file @@ -0,0 +1,344 @@ package com.fh.controller.system.appuser; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.entity.system.Role; import com.fh.service.system.appuser.AppuserManager; import com.fh.service.system.role.RoleManager; import com.fh.util.AppUtil; import com.fh.util.Jurisdiction; import com.fh.util.MD5; import com.fh.util.ObjectExcelView; import com.fh.util.PageData; /** * 类名称:会员管理 * 创建人:FH Q313596790 * 修改时间:2014年11月17日 * @version */ @Controller @RequestMapping(value="/happuser") public class AppuserController extends BaseController { String menuUrl = "happuser/listUsers.do"; //菜单地址(权限用) @Resource(name="appuserService") private AppuserManager appuserService; @Resource(name="roleService") private RoleManager roleService; /**显示用户列表 * @param page * @return */ @RequestMapping(value="/listUsers") public ModelAndView listUsers(Page page){ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); try{ pd = this.getPageData(); String keywords = pd.getString("keywords"); //检索条件 关键词 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } page.setPd(pd); List<PageData> userList = appuserService.listPdPageUser(page); //列出会员列表 pd.put("ROLE_ID", "2"); List<Role> roleList = roleService.listAllRolesByPId(pd); //列出会员组角色 mv.setViewName("system/appuser/appuser_list"); mv.addObject("userList", userList); mv.addObject("roleList", roleList); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 } catch(Exception e){ logger.error(e.toString(), e); } return mv; } /**去新增用户页面 * @return * @throws Exception */ @RequestMapping(value="/goAddU") public ModelAndView goAddU() throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("ROLE_ID", "2"); List<Role> roleList = roleService.listAllRolesByPId(pd); //列出会员组角色 mv.setViewName("system/appuser/appuser_edit"); mv.addObject("msg", "saveU"); mv.addObject("pd", pd); mv.addObject("roleList", roleList); return mv; } /**保存用户 * @return * @throws Exception */ @RequestMapping(value="/saveU") public ModelAndView saveU() throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"新增会员"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("USER_ID", this.get32UUID()); //ID pd.put("RIGHTS", ""); pd.put("LAST_LOGIN", ""); //最后登录时间 pd.put("IP", ""); //IP pd.put("PASSWORD", MD5.md5(pd.getString("PASSWORD"))); if(null == appuserService.findByUsername(pd)){ appuserService.saveU(pd); //判断新增权限 mv.addObject("msg","success"); }else{ mv.addObject("msg","failed"); } mv.setViewName("save_result"); return mv; } /**判断用户名是否存在 * @return */ @RequestMapping(value="/hasU") @ResponseBody public Object hasU(){ Map<String,String> map = new HashMap<String,String>(); String errInfo = "success"; PageData pd = new PageData(); try{ pd = this.getPageData(); if(appuserService.findByUsername(pd) != null){ errInfo = "error"; } } catch(Exception e){ logger.error(e.toString(), e); } map.put("result", errInfo); //返回结果 return AppUtil.returnObject(new PageData(), map); } /**判断邮箱是否存在 * @return */ @RequestMapping(value="/hasE") @ResponseBody public Object hasE(){ Map<String,String> map = new HashMap<String,String>(); String errInfo = "success"; PageData pd = new PageData(); try{ pd = this.getPageData(); if(appuserService.findByEmail(pd) != null){ errInfo = "error"; } } catch(Exception e){ logger.error(e.toString(), e); } map.put("result", errInfo); //返回结果 return AppUtil.returnObject(new PageData(), map); } /**判断编码是否存在 * @return */ @RequestMapping(value="/hasN") @ResponseBody public Object hasN(){ Map<String,String> map = new HashMap<String,String>(); String errInfo = "success"; PageData pd = new PageData(); try{ pd = this.getPageData(); if(appuserService.findByNumber(pd) != null){ errInfo = "error"; } } catch(Exception e){ logger.error(e.toString(), e); } map.put("result", errInfo); //返回结果 return AppUtil.returnObject(new PageData(), map); } /**删除用户 * @param out * @throws Exception */ @RequestMapping(value="/deleteU") public void deleteU(PrintWriter out) throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"删除会员"); PageData pd = new PageData(); pd = this.getPageData(); appuserService.deleteU(pd); out.write("success"); out.close(); } /**修改用户 * @param out * @return * @throws Exception */ @RequestMapping(value="/editU") public ModelAndView editU(PrintWriter out) throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"修改会员"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); if(pd.getString("PASSWORD") != null && !"".equals(pd.getString("PASSWORD"))){ pd.put("PASSWORD", MD5.md5(pd.getString("PASSWORD"))); } appuserService.editU(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**去修改用户页面 * @return */ @RequestMapping(value="/goEditU") public ModelAndView goEditU(){ if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); try { pd.put("ROLE_ID", "2"); List<Role> roleList = roleService.listAllRolesByPId(pd);//列出会员组角色 pd = appuserService.findByUiId(pd); //根据ID读取 mv.setViewName("system/appuser/appuser_edit"); mv.addObject("msg", "editU"); mv.addObject("pd", pd); mv.addObject("roleList", roleList); } catch (Exception e) { logger.error(e.toString(), e); } return mv; } /**批量删除 * @return */ @RequestMapping(value="/deleteAllU") @ResponseBody public Object deleteAllU() { if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"批量删除会员"); PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); try { pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); String USER_IDS = pd.getString("USER_IDS"); if(null != USER_IDS && !"".equals(USER_IDS)){ String ArrayUSER_IDS[] = USER_IDS.split(","); appuserService.deleteAllU(ArrayUSER_IDS); pd.put("msg", "ok"); }else{ pd.put("msg", "no"); } pdList.add(pd); map.put("list", pdList); } catch (Exception e) { logger.error(e.toString(), e); } finally { logAfter(logger); } return AppUtil.returnObject(pd, map); } /**导出会员信息到excel * @return */ @RequestMapping(value="/excel") public ModelAndView exportExcel(){ logBefore(logger, Jurisdiction.getUsername()+"导出会员资料"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); try{ if(Jurisdiction.buttonJurisdiction(menuUrl, "cha")){ String keywords = pd.getString("keywords"); if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } String lastLoginStart = pd.getString("lastLoginStart"); String lastLoginEnd = pd.getString("lastLoginEnd"); if(lastLoginStart != null && !"".equals(lastLoginStart)){ pd.put("lastLoginStart", lastLoginStart+" 00:00:00"); } if(lastLoginEnd != null && !"".equals(lastLoginEnd)){ pd.put("lastLoginEnd", lastLoginEnd+" 00:00:00"); } Map<String,Object> dataMap = new HashMap<String,Object>(); List<String> titles = new ArrayList<String>(); titles.add("用户名"); //1 titles.add("编号"); //2 titles.add("姓名"); //3 titles.add("手机号"); //4 titles.add("身份证号"); //5 titles.add("等级"); //6 titles.add("邮箱"); //7 titles.add("最近登录"); //8 titles.add("到期时间"); //9 titles.add("上次登录IP"); //10 dataMap.put("titles", titles); List<PageData> userList = appuserService.listAllUser(pd); List<PageData> varList = new ArrayList<PageData>(); for(int i=0;i<userList.size();i++){ PageData vpd = new PageData(); vpd.put("var1", userList.get(i).getString("USERNAME")); //1 vpd.put("var2", userList.get(i).getString("NUMBER")); //2 vpd.put("var3", userList.get(i).getString("NAME")); //3 vpd.put("var4", userList.get(i).getString("PHONE")); //4 vpd.put("var5", userList.get(i).getString("SFID")); //5 vpd.put("var6", userList.get(i).getString("ROLE_NAME")); //6 vpd.put("var7", userList.get(i).getString("EMAIL")); //7 vpd.put("var8", userList.get(i).getString("LAST_LOGIN")); //8 vpd.put("var9", userList.get(i).getString("END_TIME")); //9 vpd.put("var10", userList.get(i).getString("IP")); //10 varList.add(vpd); } dataMap.put("varList", varList); ObjectExcelView erv = new ObjectExcelView(); mv = new ModelAndView(erv,dataMap); } } catch(Exception e){ logger.error(e.toString(), e); } return mv; } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/system/buttonrights/ButtonrightsController.java
New file @@ -0,0 +1,133 @@ package com.fh.controller.system.buttonrights; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.apache.shiro.session.Session; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.system.Role; import com.fh.entity.system.User; import com.fh.util.AppUtil; import com.fh.util.Const; import com.fh.util.PageData; import com.fh.util.Jurisdiction; import com.fh.util.Tools; import com.fh.service.system.buttonrights.ButtonrightsManager; import com.fh.service.system.fhbutton.FhbuttonManager; import com.fh.service.system.fhlog.FHlogManager; import com.fh.service.system.role.RoleManager; import com.fh.service.system.system.SystemManager; /** * 说明:按钮权限 * 创建人:FH Q313596790 * 创建时间:2016-01-16 */ @Controller @RequestMapping(value="/buttonrights") public class ButtonrightsController extends BaseController { String menuUrl = "buttonrights/list.do"; //菜单地址(权限用) @Resource(name="buttonrightsService") private ButtonrightsManager buttonrightsService; @Resource(name="roleService") private RoleManager roleService; @Resource(name="fhbuttonService") private FhbuttonManager fhbuttonService; @Resource(name="fhlogService") private FHlogManager FHLOG; @Resource(name="systemService") private SystemManager systemService; /**列表 * @throws Exception */ @RequestMapping(value="/list") public ModelAndView list() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"列表Buttonrights"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Session session = Jurisdiction.getSession(); User user = (User)session.getAttribute(Const.SESSION_USER); pd.put("userId", user.getUSER_ID()); List<PageData> systemList = systemService.getList(pd); if(pd.get("SYSTEM_ID") == null || "".equals(pd.get("SYSTEM_ID")) ){ pd.put("SYSTEM_ID", "0"); } String type = pd.getString("type"); type = Tools.isEmpty(type)?"0":type; if(pd.getString("ROLE_ID") == null || "".equals(pd.getString("ROLE_ID").trim())){ pd.put("ROLE_ID", "1"); //默认列出第一组角色(初始设计系统用户和会员组不能删除) } mv.addObject("systemList", systemList); mv.addObject("SYSTEM_ID", pd.get("SYSTEM_ID")); PageData fpd = new PageData(); fpd.put("ROLE_ID", "0"); fpd.put("SYSTEM_ID", pd.getString("SYSTEM_ID")); List<Role> roleList = roleService.listAllRolesByPId(fpd); //列出组(页面横向排列的一级组) List<Role> roleList_z = roleService.listAllRolesByPId(pd); //列出此组下架角色 List<PageData> buttonlist = fhbuttonService.listAll(pd); //列出所有按钮 List<PageData> roleFhbuttonlist = buttonrightsService.listAll(pd); //列出所有角色按钮关联数据 pd = roleService.findObjectById(pd); //取得点击的角色组(横排的) mv.addObject("pd", pd); mv.addObject("roleList", roleList); mv.addObject("roleList_z", roleList_z); mv.addObject("buttonlist", buttonlist); mv.addObject("roleFhbuttonlist", roleFhbuttonlist); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 if("2".equals(type)){ mv.setViewName("system/buttonrights/buttonrights_list_r"); }else{ mv.setViewName("system/buttonrights/buttonrights_list"); } return mv; } /**点击按钮处理关联表 * @return * @throws Exception */ @RequestMapping(value="/upRb") @ResponseBody public Object updateRolebuttonrightd()throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"分配按钮权限"); Map<String,String> map = new HashMap<String,String>(); PageData pd = new PageData(); pd = this.getPageData(); String errInfo = "success"; if(null != buttonrightsService.findById(pd)){ //判断关联表是否有数据 是:删除/否:新增 buttonrightsService.delete(pd); //删除 FHLOG.save(Jurisdiction.getUsername(), "删除按钮权限"+pd); }else{ pd.put("RB_ID", this.get32UUID()); //主键 buttonrightsService.save(pd); //新增 FHLOG.save(Jurisdiction.getUsername(), "新增按钮权限pd"+pd); } map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/system/createcode/CreateCodeController.java
New file @@ -0,0 +1,255 @@ package com.fh.controller.system.createcode; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.service.system.createcode.CreateCodeManager; import com.fh.util.AppUtil; import com.fh.util.DateUtil; import com.fh.util.DelAllFile; import com.fh.util.FileDownload; import com.fh.util.FileZip; import com.fh.util.Freemarker; import com.fh.util.Jurisdiction; import com.fh.util.PageData; import com.fh.util.PathUtil; /** * 类名称: 代码生成器 * 创建人:FH Q313596790 * 修改时间:2015年11月23日 * @version */ @Controller @RequestMapping(value="/createCode") public class CreateCodeController extends BaseController { String menuUrl = "createcode/list.do"; //菜单地址(权限用) @Resource(name="createcodeService") private CreateCodeManager createcodeService; /**列表 * @param page * @return */ @RequestMapping(value="/list") public ModelAndView list(Page page) throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String keywords = pd.getString("keywords"); //检索条件 if(null != keywords && !"".equals(keywords)){ keywords = keywords.trim(); pd.put("keywords", keywords); } page.setPd(pd); List<PageData> varList = createcodeService.list(page); //列出CreateCode列表 mv.setViewName("system/createcode/createcode_list"); mv.addObject("varList", varList); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**去代码生成器页面(进入弹窗) * @return * @throws Exception */ @RequestMapping(value="/goProductCode") public ModelAndView goProductCode() throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String CREATECODE_ID = pd.getString("CREATECODE_ID"); if(!"add".equals(CREATECODE_ID)){ pd = createcodeService.findById(pd); mv.addObject("pd", pd); mv.addObject("msg", "edit"); }else{ mv.addObject("msg", "add"); } List<PageData> varList = createcodeService.listFa(); //列出所有主表结构的 mv.addObject("varList", varList); mv.setViewName("system/createcode/productCode"); return mv; } /**生成代码 * @param response * @throws Exception */ @RequestMapping(value="/proCode") public void proCode(HttpServletResponse response) throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"执行代码生成器"); PageData pd = new PageData(); pd = this.getPageData(); save(pd); //保存到数据库 /* ============================================================================================= */ String faobject = pd.getString("faobject"); //主表名 ========参数0-1 主附结构用 String FHTYPE = pd.getString("FHTYPE"); //模块类型 ========参数0-2 类型,单表、树形结构、主表明细表 String TITLE = pd.getString("TITLE"); //说明 ========参数0 String packageName = pd.getString("packageName"); //包名 ========参数1 String objectName = pd.getString("objectName"); //类名 ========参数2 String tabletop = pd.getString("tabletop"); //表前缀 ========参数3 tabletop = null == tabletop?"":tabletop.toUpperCase(); //表前缀转大写 String zindext = pd.getString("zindex"); //属性总数 int zindex = 0; if(null != zindext && !"".equals(zindext)){ zindex = Integer.parseInt(zindext); } List<String[]> fieldList = new ArrayList<String[]>(); //属性集合 ========参数4 for(int i=0; i< zindex; i++){ fieldList.add(pd.getString("field"+i).split(",fh,")); //属性放到集合里面 } Map<String,Object> root = new HashMap<String,Object>(); //创建数据模型 root.put("fieldList", fieldList); root.put("faobject", faobject.toUpperCase()); //主附结构用,主表名 root.put("TITLE", TITLE); //说明 root.put("packageName", packageName); //包名 root.put("objectName", objectName); //类名 root.put("objectNameLower", objectName.toLowerCase()); //类名(全小写) root.put("objectNameUpper", objectName.toUpperCase()); //类名(全大写) root.put("tabletop", tabletop); //表前缀 root.put("nowDate", new Date()); //当前日期 DelAllFile.delFolder(PathUtil.getClasspath()+"admin/ftl"); //生成代码前,先清空之前生成的代码 /* ============================================================================================= */ String filePath = "admin/ftl/code/"; //存放路径 String ftlPath = "createCode"; //ftl路径 if("tree".equals(FHTYPE)){ ftlPath = "createTreeCode"; /*生成实体类*/ Freemarker.printFile("entityTemplate.ftl", root, "entity/"+packageName+"/"+objectName+".java", filePath, ftlPath); /*生成jsp_tree页面*/ Freemarker.printFile("jsp_tree_Template.ftl", root, "jsp/"+packageName+"/"+objectName.toLowerCase()+"/"+objectName.toLowerCase()+"_tree.jsp", filePath, ftlPath); }else if("fathertable".equals(FHTYPE)){ ftlPath = "createFaCode"; //主表 }else if("sontable".equals(FHTYPE)){ ftlPath = "createSoCode"; //明细表 } /*生成controller*/ Freemarker.printFile("controllerTemplate.ftl", root, "controller/"+packageName+"/"+objectName.toLowerCase()+"/"+objectName+"Controller.java", filePath, ftlPath); /*生成service*/ Freemarker.printFile("serviceTemplate.ftl", root, "service/"+packageName+"/"+objectName.toLowerCase()+"/impl/"+objectName+"Service.java", filePath, ftlPath); /*生成manager*/ Freemarker.printFile("managerTemplate.ftl", root, "service/"+packageName+"/"+objectName.toLowerCase()+"/"+objectName+"Manager.java", filePath, ftlPath); /*生成mybatis xml*/ Freemarker.printFile("mapperMysqlTemplate.ftl", root, "mybatis_mysql/"+packageName+"/"+objectName+"Mapper.xml", filePath, ftlPath); Freemarker.printFile("mapperOracleTemplate.ftl", root, "mybatis_oracle/"+packageName+"/"+objectName+"Mapper.xml", filePath, ftlPath); Freemarker.printFile("mapperSqlserverTemplate.ftl", root, "mybatis_sqlserver/"+packageName+"/"+objectName+"Mapper.xml", filePath, ftlPath); /*生成SQL脚本*/ Freemarker.printFile("mysql_SQL_Template.ftl", root, "mysql数据库脚本/"+tabletop+objectName.toUpperCase()+".sql", filePath, ftlPath); Freemarker.printFile("oracle_SQL_Template.ftl", root, "oracle数据库脚本/"+tabletop+objectName.toUpperCase()+".sql", filePath, ftlPath); Freemarker.printFile("sqlserver_SQL_Template.ftl", root, "sqlserver数据库脚本/"+tabletop+objectName.toUpperCase()+".sql", filePath, ftlPath); /*生成jsp页面*/ Freemarker.printFile("jsp_list_Template.ftl", root, "jsp/"+packageName+"/"+objectName.toLowerCase()+"/"+objectName.toLowerCase()+"_list.jsp", filePath, ftlPath); Freemarker.printFile("jsp_edit_Template.ftl", root, "jsp/"+packageName+"/"+objectName.toLowerCase()+"/"+objectName.toLowerCase()+"_edit.jsp", filePath, ftlPath); /*生成说明文档*/ Freemarker.printFile("docTemplate.ftl", root, "部署说明.doc", filePath, ftlPath); //this.print("oracle_SQL_Template.ftl", root); 控制台打印 /*生成的全部代码压缩成zip文件*/ if(FileZip.zip(PathUtil.getClasspath()+"admin/ftl/code", PathUtil.getClasspath()+"admin/ftl/code.zip")){ /*下载代码*/ FileDownload.fileDownload(response, PathUtil.getClasspath()+"admin/ftl/code.zip", "code.zip"); } } /**保存到数据库 * @throws Exception */ public void save(PageData pd) throws Exception{ pd.put("PACKAGENAME", pd.getString("packageName")); //包名 pd.put("OBJECTNAME", pd.getString("objectName")); //类名 pd.put("TABLENAME", pd.getString("tabletop")+",fh,"+pd.getString("objectName").toUpperCase()); //表名 pd.put("FIELDLIST", pd.getString("FIELDLIST")); //属性集合 pd.put("CREATETIME", DateUtil.getTime()); //创建时间 pd.put("TITLE", pd.getString("TITLE")); //说明 pd.put("CREATECODE_ID", this.get32UUID()); //主键 createcodeService.save(pd); } /** * 通过ID获取数据 */ @RequestMapping(value="/findById") @ResponseBody public Object findById() throws Exception { if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限 PageData pd = new PageData(); pd = this.getPageData(); Map<String,Object> map = new HashMap<String,Object>(); try { pd = createcodeService.findById(pd); } catch (Exception e) { logger.error(e.toString(), e); } finally { logAfter(logger); } map.put("pd", pd); return AppUtil.returnObject(pd, map); } /**删除 * @param out */ @RequestMapping(value="/delete") public void delete(PrintWriter out) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"删除CreateCode"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限 PageData pd = new PageData(); pd = this.getPageData(); createcodeService.delete(pd); out.write("success"); out.close(); } /** * 批量删除 */ @RequestMapping(value="/deleteAll") @ResponseBody public Object deleteAll() throws Exception { logBefore(logger, Jurisdiction.getUsername()+"批量删除CreateCode"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "dell")){return null;} //校验权限 PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); try { pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); String DATA_IDS = pd.getString("DATA_IDS"); if(null != DATA_IDS && !"".equals(DATA_IDS)){ String ArrayDATA_IDS[] = DATA_IDS.split(","); createcodeService.deleteAll(ArrayDATA_IDS); pd.put("msg", "ok"); }else{ pd.put("msg", "no"); } pdList.add(pd); map.put("list", pdList); } catch (Exception e) { logger.error(e.toString(), e); } finally { logAfter(logger); } return AppUtil.returnObject(pd, map); } } //FHQ 3 1 3 5 9 6 7 9 0 sourcecode/MVNFHM/src/main/java/com/fh/controller/system/createcode/ReverseCreateCodeController.java
New file @@ -0,0 +1,127 @@ package com.fh.controller.system.createcode; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.util.AppUtil; import com.fh.util.DbFH; import com.fh.util.Jurisdiction; import com.fh.util.PageData; /** * 类名称: 反向生成 * 创建人:FH Q313596790 * 修改时间:2016年4月15日 * @version */ @Controller @RequestMapping(value="/recreateCode") public class ReverseCreateCodeController extends BaseController { String menuUrl = "recreateCode/list.do"; //菜单地址(权限用) /**列表 * @return */ @RequestMapping(value="/list") public ModelAndView list() throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){} //校验权限 ModelAndView mv = this.getModelAndView(); mv.setViewName("system/createcode/recreatecode_list"); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**列出所有表 * @param * @throws Exception */ @SuppressWarnings("unchecked") @RequestMapping(value="/listAllTable") @ResponseBody public Object listAllTable(){ if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限 PageData pd = new PageData(); pd = this.getPageData(); Map<String,Object> map = new HashMap<String,Object>(); List<PageData> pdList = new ArrayList<PageData>(); List<String> tblist = new ArrayList<String>(); try { Object[] arrOb = DbFH.getTables(pd); tblist = (List<String>)arrOb[1]; pd.put("msg", "ok"); } catch (ClassNotFoundException e) { pd.put("msg", "no"); e.printStackTrace(); } catch (SQLException e) { pd.put("msg", "no"); e.printStackTrace(); } pdList.add(pd); map.put("tblist", tblist); map.put("list", pdList); return AppUtil.returnObject(pd, map); } /**去代码生成器页面(进入弹窗) * @return * @throws Exception */ @RequestMapping(value="/goProductCode") public ModelAndView goProductCode() throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String fieldType = ""; StringBuffer sb = new StringBuffer(""); List<Map<String,String>> columnList = DbFH.getFieldParameterLsit(DbFH.getFHCon(pd),pd.getString("table")); //读取字段信息 for(int i=0;i<columnList.size();i++){ Map<String,String> fmap = columnList.get(i); sb.append(fmap.get("fieldNanme").toString().toUpperCase()); //字段名称 sb.append(",fh,"); fieldType = fmap.get("fieldType").toString().toLowerCase(); //字段类型 if(fieldType.contains("int")){ sb.append("Integer"); }else if(fieldType.contains("NUMBER")){ if(Integer.parseInt(fmap.get("fieldSccle")) > 0){ sb.append("Double"); }else{ sb.append("Integer"); } }else if(fieldType.contains("double") || fieldType.contains("numeric")){ sb.append("Double"); }else if(fieldType.contains("date")){ sb.append("Date"); }else{ sb.append("String"); } sb.append(",fh,"); sb.append("备注"+(i+1)); //备注 sb.append(",fh,"); sb.append("是"); //是否前台录入 sb.append(",fh,"); sb.append("无"); //默认值 sb.append(",fh,"); sb.append(fmap.get("fieldLength").toString()); //长度 sb.append(",fh,"); sb.append(fmap.get("fieldSccle").toString()); //小数点右边的位数 sb.append("Q313596790"); } pd.put("FIELDLIST", sb.toString()); mv.addObject("msg", "edit"); mv.addObject("pd", pd); mv.setViewName("system/createcode/productCode"); return mv; } } //FHQ 3 1 3 5 9 6 7 9 0 sourcecode/MVNFHM/src/main/java/com/fh/controller/system/dictionaries/DictionariesController.java
New file @@ -0,0 +1,239 @@ package com.fh.controller.system.dictionaries; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import net.sf.json.JSONArray; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.util.AppUtil; import com.fh.util.PageData; import com.fh.util.Jurisdiction; import com.fh.service.system.dictionaries.DictionariesManager; /** * 说明:数据字典 * 创建人:FH Q313596790 * 创建时间:2015-12-16 */ @Controller @RequestMapping(value="/dictionaries") public class DictionariesController extends BaseController { String menuUrl = "dictionaries/list.do"; //菜单地址(权限用) @Resource(name="dictionariesService") private DictionariesManager dictionariesService; /**保存 * @param * @throws Exception */ @RequestMapping(value="/save") public ModelAndView save() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"新增Dictionaries"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("DICTIONARIES_ID", this.get32UUID()); //主键 dictionariesService.save(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /** * 删除 * @param DICTIONARIES_ID * @param * @throws Exception */ @RequestMapping(value="/delete") @ResponseBody public Object delete(@RequestParam String DICTIONARIES_ID) throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"删除Dictionaries"); Map<String,String> map = new HashMap<String,String>(); PageData pd = new PageData(); pd.put("DICTIONARIES_ID", DICTIONARIES_ID); String errInfo = "success"; if(dictionariesService.listSubDictByParentId(DICTIONARIES_ID).size() > 0){//判断是否有子级,是:不允许删除 errInfo = "false"; }else{ pd = dictionariesService.findById(pd);//根据ID读取 if(null != pd.get("TBSNAME") && !"".equals(pd.getString("TBSNAME"))){ String[] table = pd.getString("TBSNAME").split(","); for(int i=0;i<table.length;i++){ pd.put("thisTable", table[i]); try { if(Integer.parseInt(dictionariesService.findFromTbs(pd).get("zs").toString())>0){//判断是否被占用,是:不允许删除(去排查表检查字典表中的编码字段) errInfo = "false"; break; } } catch (Exception e) { errInfo = "false2"; break; } } } } if("success".equals(errInfo)){ dictionariesService.delete(pd); //执行删除 } map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } /**修改 * @param * @throws Exception */ @RequestMapping(value="/edit") public ModelAndView edit() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"修改Dictionaries"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); dictionariesService.edit(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**列表 * @param page * @throws Exception */ @RequestMapping(value="/list") public ModelAndView list(Page page) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"列表Dictionaries"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String keywords = pd.getString("keywords"); //检索条件 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } String DICTIONARIES_ID = null == pd.get("DICTIONARIES_ID")?"":pd.get("DICTIONARIES_ID").toString(); if(null != pd.get("id") && !"".equals(pd.get("id").toString())){ DICTIONARIES_ID = pd.get("id").toString(); } pd.put("DICTIONARIES_ID", DICTIONARIES_ID); //上级ID page.setPd(pd); List<PageData> varList = dictionariesService.list(page); //列出Dictionaries列表 mv.addObject("pd", dictionariesService.findById(pd)); //传入上级所有信息 mv.addObject("DICTIONARIES_ID", DICTIONARIES_ID); //上级ID mv.setViewName("system/dictionaries/dictionaries_list"); mv.addObject("varList", varList); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /** * 显示列表ztree * @param model * @return */ @RequestMapping(value="/listAllDict") public ModelAndView listAllDict(Model model,String DICTIONARIES_ID)throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); try{ JSONArray arr = JSONArray.fromObject(dictionariesService.listAllDict("0")); String json = arr.toString(); json = json.replaceAll("DICTIONARIES_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("NAME", "name").replaceAll("subDict", "nodes").replaceAll("hasDict", "checked").replaceAll("treeurl", "url"); model.addAttribute("zTreeNodes", json); mv.addObject("DICTIONARIES_ID",DICTIONARIES_ID); mv.addObject("pd", pd); mv.setViewName("system/dictionaries/dictionaries_ztree"); } catch(Exception e){ logger.error(e.toString(), e); } return mv; } /**去新增页面 * @param * @throws Exception */ @RequestMapping(value="/goAdd") public ModelAndView goAdd()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String DICTIONARIES_ID = null == pd.get("DICTIONARIES_ID")?"":pd.get("DICTIONARIES_ID").toString(); pd.put("DICTIONARIES_ID", DICTIONARIES_ID); //上级ID mv.addObject("pds",dictionariesService.findById(pd)); //传入上级所有信息 mv.addObject("DICTIONARIES_ID", DICTIONARIES_ID); //传入ID,作为子级ID用 mv.setViewName("system/dictionaries/dictionaries_edit"); mv.addObject("msg", "save"); return mv; } /**去修改页面 * @param * @throws Exception */ @RequestMapping(value="/goEdit") public ModelAndView goEdit()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String DICTIONARIES_ID = pd.getString("DICTIONARIES_ID"); pd = dictionariesService.findById(pd); //根据ID读取 mv.addObject("pd", pd); //放入视图容器 pd.put("DICTIONARIES_ID",pd.get("PARENT_ID").toString()); //用作上级信息 mv.addObject("pds",dictionariesService.findById(pd)); //传入上级所有信息 mv.addObject("DICTIONARIES_ID", pd.get("PARENT_ID").toString()); //传入上级ID,作为子ID用 pd.put("DICTIONARIES_ID",DICTIONARIES_ID); //复原本ID mv.setViewName("system/dictionaries/dictionaries_edit"); mv.addObject("msg", "edit"); return mv; } /**判断编码是否存在 * @return */ @RequestMapping(value="/hasBianma") @ResponseBody public Object hasBianma(){ Map<String,String> map = new HashMap<String,String>(); String errInfo = "success"; PageData pd = new PageData(); try{ pd = this.getPageData(); if(dictionariesService.findByBianma(pd) != null){ errInfo = "error"; } } catch(Exception e){ logger.error(e.toString(), e); } map.put("result", errInfo); //返回结果 return AppUtil.returnObject(new PageData(), map); } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/system/fhbutton/FhbuttonController.java
New file @@ -0,0 +1,233 @@ package com.fh.controller.system.fhbutton; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.apache.shiro.session.Session; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.entity.system.User; import com.fh.util.AppUtil; import com.fh.util.Const; import com.fh.util.ObjectExcelView; import com.fh.util.PageData; import com.fh.util.Jurisdiction; import com.fh.service.system.fhbutton.FhbuttonManager; import com.fh.service.system.system.SystemManager; /** * 说明:按钮管理 * 创建人:FH Q313596790 * 创建时间:2016-01-15 */ @Controller @RequestMapping(value="/fhbutton") public class FhbuttonController extends BaseController { String menuUrl = "fhbutton/list.do"; //菜单地址(权限用) @Resource(name="fhbuttonService") private FhbuttonManager fhbuttonService; @Resource(name="systemService") private SystemManager systemService; /**保存 * @param * @throws Exception */ @RequestMapping(value="/save") public ModelAndView save() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"新增Fhbutton"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("FHBUTTON_ID", this.get32UUID()); //主键 fhbuttonService.save(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**删除 * @param out * @throws Exception */ @RequestMapping(value="/delete") public void delete(PrintWriter out) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"删除Fhbutton"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限 PageData pd = new PageData(); pd = this.getPageData(); fhbuttonService.delete(pd); out.write("success"); out.close(); } /**修改 * @param * @throws Exception */ @RequestMapping(value="/edit") public ModelAndView edit() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"修改Fhbutton"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); fhbuttonService.edit(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**列表 * @param page * @throws Exception */ @RequestMapping(value="/list") public ModelAndView list(Page page) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"列表Fhbutton"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Session session = Jurisdiction.getSession(); User user = (User)session.getAttribute(Const.SESSION_USER); pd.put("userId", user.getUSER_ID()); List<PageData> systemList = systemService.getList(pd); String keywords = pd.getString("keywords"); //关键词检索条件 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } page.setPd(pd); List<PageData> varList = fhbuttonService.list(page); //列出Fhbutton列表 mv.setViewName("system/fhbutton/fhbutton_list"); mv.addObject("varList", varList); mv.addObject("pd", pd); mv.addObject("systemList", systemList); mv.addObject("SYSTEM_ID", pd.get("SYSTEM_ID")); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**去新增页面 * @param * @throws Exception */ @RequestMapping(value="/goAdd") public ModelAndView goAdd()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Session session = Jurisdiction.getSession(); User user = (User)session.getAttribute(Const.SESSION_USER); pd.put("userId", user.getUSER_ID()); List<PageData> systemList = systemService.getList(pd); mv.setViewName("system/fhbutton/fhbutton_edit"); mv.addObject("systemList", systemList); mv.addObject("msg", "save"); mv.addObject("pd", pd); return mv; } /**去修改页面 * @param * @throws Exception */ @RequestMapping(value="/goEdit") public ModelAndView goEdit()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Session session = Jurisdiction.getSession(); User user = (User)session.getAttribute(Const.SESSION_USER); pd.put("userId", user.getUSER_ID()); List<PageData> systemList = systemService.getList(pd); pd = fhbuttonService.findById(pd); //根据ID读取 mv.setViewName("system/fhbutton/fhbutton_edit"); mv.addObject("systemList", systemList); mv.addObject("msg", "edit"); mv.addObject("pd", pd); return mv; } /**批量删除 * @param * @throws Exception */ @RequestMapping(value="/deleteAll") @ResponseBody public Object deleteAll() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"批量删除Fhbutton"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限 PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); String DATA_IDS = pd.getString("DATA_IDS"); if(null != DATA_IDS && !"".equals(DATA_IDS)){ String ArrayDATA_IDS[] = DATA_IDS.split(","); fhbuttonService.deleteAll(ArrayDATA_IDS); pd.put("msg", "ok"); }else{ pd.put("msg", "no"); } pdList.add(pd); map.put("list", pdList); return AppUtil.returnObject(pd, map); } /**导出到excel * @param * @throws Exception */ @RequestMapping(value="/excel") public ModelAndView exportExcel() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"导出Fhbutton到excel"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} ModelAndView mv = new ModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Map<String,Object> dataMap = new HashMap<String,Object>(); List<String> titles = new ArrayList<String>(); titles.add("名称"); //1 titles.add("权限标识"); //2 titles.add("备注"); //3 dataMap.put("titles", titles); List<PageData> varOList = fhbuttonService.listAll(pd); List<PageData> varList = new ArrayList<PageData>(); for(int i=0;i<varOList.size();i++){ PageData vpd = new PageData(); vpd.put("var1", varOList.get(i).getString("NAME")); //1 vpd.put("var2", varOList.get(i).getString("QX_NAME")); //2 vpd.put("var3", varOList.get(i).getString("BZ")); //3 varList.add(vpd); } dataMap.put("varList", varList); ObjectExcelView erv = new ObjectExcelView(); mv = new ModelAndView(erv,dataMap); return mv; } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/system/fhlog/FHlogController.java
New file @@ -0,0 +1,153 @@ package com.fh.controller.system.fhlog; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.util.AppUtil; import com.fh.util.ObjectExcelView; import com.fh.util.PageData; import com.fh.util.Jurisdiction; import com.fh.service.system.fhlog.FHlogManager; /** * 说明:操作日志记录 * 创建人:FH Q313596790 * 创建时间:2016-05-10 */ @Controller @RequestMapping(value="/fhlog") public class FHlogController extends BaseController { String menuUrl = "fhlog/list.do"; //菜单地址(权限用) @Resource(name="fhlogService") private FHlogManager fhlogService; /**删除 * @param out * @throws Exception */ @RequestMapping(value="/delete") public void delete(PrintWriter out) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"删除FHlog"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限 PageData pd = new PageData(); pd = this.getPageData(); fhlogService.delete(pd); out.write("success"); out.close(); } /**列表 * @param page * @throws Exception */ @RequestMapping(value="/list") public ModelAndView list(Page page) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"列表FHlog"); //if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码) ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String keywords = pd.getString("keywords"); //关键词检索条件 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } String lastStart = pd.getString("lastStart"); //开始时间 String lastEnd = pd.getString("lastEnd"); //结束时间 if(lastStart != null && !"".equals(lastStart)){ pd.put("lastStart", lastStart+" 00:00:00"); } if(lastEnd != null && !"".equals(lastEnd)){ pd.put("lastEnd", lastEnd+" 00:00:00"); } page.setPd(pd); List<PageData> varList = fhlogService.list(page); //列出FHlog列表 mv.setViewName("system/fhlog/fhlog_list"); mv.addObject("varList", varList); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**批量删除 * @param * @throws Exception */ @RequestMapping(value="/deleteAll") @ResponseBody public Object deleteAll() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"批量删除FHlog"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限 PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); String DATA_IDS = pd.getString("DATA_IDS"); if(null != DATA_IDS && !"".equals(DATA_IDS)){ String ArrayDATA_IDS[] = DATA_IDS.split(","); fhlogService.deleteAll(ArrayDATA_IDS); pd.put("msg", "ok"); }else{ pd.put("msg", "no"); } pdList.add(pd); map.put("list", pdList); return AppUtil.returnObject(pd, map); } /**导出到excel * @param * @throws Exception */ @RequestMapping(value="/excel") public ModelAndView exportExcel() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"导出FHlog到excel"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} ModelAndView mv = new ModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Map<String,Object> dataMap = new HashMap<String,Object>(); List<String> titles = new ArrayList<String>(); titles.add("用户名"); //1 titles.add("操作时间"); //2 titles.add("事件"); //3 dataMap.put("titles", titles); List<PageData> varOList = fhlogService.listAll(pd); List<PageData> varList = new ArrayList<PageData>(); for(int i=0;i<varOList.size();i++){ PageData vpd = new PageData(); vpd.put("var1", varOList.get(i).getString("USERNAME")); //1 vpd.put("var2", varOList.get(i).getString("CZTIME")); //2 vpd.put("var3", varOList.get(i).getString("CONTENT")); //3 varList.add(vpd); } dataMap.put("varList", varList); ObjectExcelView erv = new ObjectExcelView(); mv = new ModelAndView(erv,dataMap); return mv; } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/system/fhsms/FhsmsController.java
New file @@ -0,0 +1,211 @@ package com.fh.controller.system.fhsms; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.util.AppUtil; import com.fh.util.DateUtil; import com.fh.util.PageData; import com.fh.util.Jurisdiction; import com.fh.service.system.fhsms.FhsmsManager; /** * 说明:站内信 * 创建人:FH Q313596790 * 创建时间:2016-01-17 */ @Controller @RequestMapping(value="/fhsms") public class FhsmsController extends BaseController { String menuUrl = "fhsms/list.do"; //菜单地址(权限用) @Resource(name="fhsmsService") private FhsmsManager fhsmsService; /**发送站内信 * @param * @throws Exception */ @RequestMapping(value="/save") @ResponseBody public Object save() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"发送站内信"); //if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限(站内信用独立的按钮权限,在此就不必校验新增权限) PageData pd = new PageData(); pd = this.getPageData(); Map<String,Object> map = new HashMap<String,Object>(); List<PageData> pdList = new ArrayList<PageData>(); String msg = "ok"; //发送状态 int count = 0; //统计发送成功条数 int zcount = 0; //理论条数 String USERNAME = pd.getString("USERNAME"); //对方用户名 if(null != USERNAME && !"".equals(USERNAME)){ USERNAME = USERNAME.replaceAll(";", ";"); USERNAME = USERNAME.replaceAll(" ", ""); String[] arrUSERNAME = USERNAME.split(";"); zcount = arrUSERNAME.length; try { pd.put("STATUS", "2"); //状态 for(int i=0;i<arrUSERNAME.length;i++){ pd.put("SANME_ID", this.get32UUID()); //共同ID pd.put("SEND_TIME", DateUtil.getTime()); //发送时间 pd.put("FHSMS_ID", this.get32UUID()); //主键1 pd.put("TYPE", "2"); //类型2:发信 pd.put("FROM_USERNAME", Jurisdiction.getUsername()); //发信人 pd.put("TO_USERNAME", arrUSERNAME[i]); //收信人 fhsmsService.save(pd); //存入发信 pd.put("FHSMS_ID", this.get32UUID()); //主键2 pd.put("TYPE", "1"); //类型1:收信 pd.put("FROM_USERNAME", arrUSERNAME[i]); //发信人 pd.put("TO_USERNAME", Jurisdiction.getUsername()); //收信人 fhsmsService.save(pd); count++; } msg = "ok"; } catch (Exception e) { msg = "error"; } }else{ msg = "error"; } pd.put("msg", msg); pd.put("count", count); //成功数 pd.put("ecount", zcount-count); //失败数 pdList.add(pd); map.put("list", pdList); return AppUtil.returnObject(pd, map); } /**删除 * @param out * @throws Exception */ @RequestMapping(value="/delete") public void delete(PrintWriter out) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"删除Fhsms"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限 PageData pd = new PageData(); pd = this.getPageData(); fhsmsService.delete(pd); out.write("success"); out.close(); } /**列表 * @param page * @throws Exception */ @RequestMapping(value="/list") public ModelAndView list(Page page) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"列表Fhsms"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String keywords = pd.getString("keywords"); //关键词检索条件 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } String lastLoginStart = pd.getString("lastLoginStart"); //开始时间 String lastLoginEnd = pd.getString("lastLoginEnd"); //结束时间 if(lastLoginStart != null && !"".equals(lastLoginStart)){ pd.put("lastLoginStart", lastLoginStart+" 00:00:00"); } if(lastLoginEnd != null && !"".equals(lastLoginEnd)){ pd.put("lastLoginEnd", lastLoginEnd+" 00:00:00"); } if(!"2".equals(pd.getString("TYPE"))){ //1:收信箱 2:发信箱 pd.put("TYPE", 1); } pd.put("FROM_USERNAME", Jurisdiction.getUsername()); //当前用户名 page.setPd(pd); List<PageData> varList = fhsmsService.list(page); //列出Fhsms列表 mv.setViewName("system/fhsms/fhsms_list"); mv.addObject("varList", varList); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**去发站内信界面 * @param * @throws Exception */ @RequestMapping(value="/goAdd") public ModelAndView goAdd()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.setViewName("system/fhsms/fhsms_edit"); mv.addObject("msg", "save"); mv.addObject("pd", pd); return mv; } /**去查看页面 * @param * @throws Exception */ @RequestMapping(value="/goView") public ModelAndView goView()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); if("1".equals(pd.getString("TYPE")) && "2".equals(pd.getString("STATUS"))){ //在收信箱里面查看未读的站内信时去数据库改变未读状态为已读 fhsmsService.edit(pd); } pd = fhsmsService.findById(pd); //根据ID读取 mv.setViewName("system/fhsms/fhsms_view"); mv.addObject("pd", pd); return mv; } /**批量删除 * @param * @throws Exception */ @RequestMapping(value="/deleteAll") @ResponseBody public Object deleteAll() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"批量删除Fhsms"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限 PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); String DATA_IDS = pd.getString("DATA_IDS"); if(null != DATA_IDS && !"".equals(DATA_IDS)){ String ArrayDATA_IDS[] = DATA_IDS.split(","); fhsmsService.deleteAll(ArrayDATA_IDS); pd.put("msg", "ok"); }else{ pd.put("msg", "no"); } pdList.add(pd); map.put("list", pdList); return AppUtil.returnObject(pd, map); } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/system/head/HeadController.java
New file @@ -0,0 +1,474 @@ package com.fh.controller.system.head; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.apache.shiro.session.Session; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.service.system.appuser.AppuserManager; import com.fh.service.system.fhsms.FhsmsManager; import com.fh.service.system.user.UserManager; import com.fh.service.system.userphoto.UserPhotoManager; import com.fh.util.AppUtil; import com.fh.util.Const; import com.fh.util.Jurisdiction; import com.fh.util.PageData; import com.fh.util.SmsUtil; import com.fh.util.Tools; import com.fh.util.Watermark; import com.fh.util.mail.SimpleMailSender; /** * 类名称:HeadController * 创建人:FH 313596790Q * 修改时间:2015年11月23日 * @version */ @Controller @RequestMapping(value="/head") public class HeadController extends BaseController { @Resource(name="userService") private UserManager userService; @Resource(name="appuserService") private AppuserManager appuserService; @Resource(name="fhsmsService") private FhsmsManager fhsmsService; @Resource(name="userphotoService") private UserPhotoManager userphotoService; /**去编辑头像页面 * @return * @throws Exception */ @RequestMapping(value="/editPhoto") public ModelAndView editPhoto() throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.setViewName("system/userphoto/userphoto_edit"); mv.addObject("pd", pd); return mv; } /**获取头部信息 * @return */ @RequestMapping(value="/getList") @ResponseBody public Object getList() { PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); try { pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); Session session = Jurisdiction.getSession(); PageData pds = new PageData(); pds = (PageData)session.getAttribute(Const.SESSION_userpds); if(null == pds){ pd.put("USERNAME", Jurisdiction.getUsername());//当前登录者用户名 pds = userService.findByUsername(pd); session.setAttribute(Const.SESSION_userpds, pds); } pdList.add(pds); map.put("list", pdList); PageData pdPhoto = userphotoService.findById(pds); map.put("userPhoto", null == pdPhoto?"static/ace/avatars/user.jpg":pdPhoto.getString("PHOTO2"));//用户头像 map.put("fhsmsCount", fhsmsService.findFhsmsCount(Jurisdiction.getUsername()).get("fhsmsCount").toString());//站内信未读总数 String strWEBSOCKET = Tools.readTxtFile(Const.WEBSOCKET);//读取WEBSOCKET配置 if(null != strWEBSOCKET && !"".equals(strWEBSOCKET)){ String strIW[] = strWEBSOCKET.split(",fh,"); if(strIW.length == 5){ map.put("wimadress", strIW[0]+":"+strIW[1]); //即时聊天服务器IP和端口 map.put("oladress", strIW[2]+":"+strIW[3]); //在线管理和站内信服务器IP和端口 map.put("FHsmsSound", strIW[4]); //站内信提示音效配置 } } } catch (Exception e) { logger.error(e.toString(), e); } finally { logAfter(logger); } return AppUtil.returnObject(pd, map); } /**获取站内信未读总数 * @return */ @RequestMapping(value="/getFhsmsCount") @ResponseBody public Object getFhsmsCount() { PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); try { map.put("fhsmsCount", fhsmsService.findFhsmsCount(Jurisdiction.getUsername()).get("fhsmsCount").toString());//站内信未读总数 } catch (Exception e) { logger.error(e.toString(), e); } finally { logAfter(logger); } return AppUtil.returnObject(pd, map); } /**去发送邮箱页面 * @return * @throws Exception */ @RequestMapping(value="/editEmail") public ModelAndView editEmail() throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.setViewName("system/head/edit_email"); mv.addObject("pd", pd); return mv; } /**去发送短信页面 * @return * @throws Exception */ @RequestMapping(value="/goSendSms") public ModelAndView goSendSms() throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.setViewName("system/head/send_sms"); mv.addObject("pd", pd); return mv; } /**发送短信 * @return */ @RequestMapping(value="/sendSms") @ResponseBody public Object sendSms(){ PageData pd = new PageData(); pd = this.getPageData(); Map<String,Object> map = new HashMap<String,Object>(); String msg = "ok"; //发送状态 int count = 0; //统计发送成功条数 int zcount = 0; //理论条数 List<PageData> pdList = new ArrayList<PageData>(); String PHONEs = pd.getString("PHONE"); //对方邮箱 String CONTENT = pd.getString("CONTENT"); //内容 String isAll = pd.getString("isAll"); //是否发送给全体成员 yes or no String TYPE = pd.getString("TYPE"); //类型 1:短信接口1 2:短信接口2 String fmsg = pd.getString("fmsg"); //判断是系统用户还是会员 "appuser"为会员用户 if("yes".endsWith(isAll)){ try { List<PageData> userList = new ArrayList<PageData>(); userList = "appuser".equals(fmsg) ? appuserService.listAllUser(pd):userService.listAllUser(pd); zcount = userList.size(); try { for(int i=0;i<userList.size();i++){ if(Tools.checkMobileNumber(userList.get(i).getString("PHONE"))){ //手机号格式不对就跳过 if("1".equals(TYPE)){ SmsUtil.sendSms1(userList.get(i).getString("PHONE"), CONTENT); //调用发短信函数1 }else{ SmsUtil.sendSms2(userList.get(i).getString("PHONE"), CONTENT); //调用发短信函数2 } count++; }else{ continue; } } msg = "ok"; } catch (Exception e) { msg = "error"; } } catch (Exception e) { msg = "error"; } }else{ PHONEs = PHONEs.replaceAll(";", ";"); PHONEs = PHONEs.replaceAll(" ", ""); String[] arrTITLE = PHONEs.split(";"); zcount = arrTITLE.length; try { for(int i=0;i<arrTITLE.length;i++){ if(Tools.checkMobileNumber(arrTITLE[i])){ //手机号式不对就跳过 if("1".equals(TYPE)){ SmsUtil.sendSms1(arrTITLE[i], CONTENT); //调用发短信函数1 }else{ SmsUtil.sendSms2(arrTITLE[i], CONTENT); //调用发短信函数2 } count++; }else{ continue; } } msg = "ok"; } catch (Exception e) { msg = "error"; } } pd.put("msg", msg); pd.put("count", count); //成功数 pd.put("ecount", zcount-count); //失败数 pdList.add(pd); map.put("list", pdList); return AppUtil.returnObject(pd, map); } /**去发送电子邮件页面 * @return * @throws Exception */ @RequestMapping(value="/goSendEmail") public ModelAndView goSendEmail() throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.setViewName("system/head/send_email"); mv.addObject("pd", pd); return mv; } /**发送电子邮件 * @return */ @RequestMapping(value="/sendEmail") @ResponseBody public Object sendEmail(){ PageData pd = new PageData(); pd = this.getPageData(); Map<String,Object> map = new HashMap<String,Object>(); String msg = "ok"; //发送状态 int count = 0; //统计发送成功条数 int zcount = 0; //理论条数 String strEMAIL = Tools.readTxtFile(Const.EMAIL); //读取邮件配置 List<PageData> pdList = new ArrayList<PageData>(); String toEMAIL = pd.getString("EMAIL"); //对方邮箱 String TITLE = pd.getString("TITLE"); //标题 String CONTENT = pd.getString("CONTENT"); //内容 String TYPE = pd.getString("TYPE"); //类型 String isAll = pd.getString("isAll"); //是否发送给全体成员 yes or no String fmsg = pd.getString("fmsg"); //判断是系统用户还是会员 "appuser"为会员用户 if(null != strEMAIL && !"".equals(strEMAIL)){ String strEM[] = strEMAIL.split(",fh,"); if(strEM.length == 4){ if("yes".endsWith(isAll)){ try { List<PageData> userList = new ArrayList<PageData>(); userList = "appuser".equals(fmsg) ? appuserService.listAllUser(pd):userService.listAllUser(pd); zcount = userList.size(); try { for(int i=0;i<userList.size();i++){ if(Tools.checkEmail(userList.get(i).getString("EMAIL"))){ //邮箱格式不对就跳过 SimpleMailSender.sendEmail(strEM[0], strEM[1], strEM[2], strEM[3], userList.get(i).getString("EMAIL"), TITLE, CONTENT, TYPE);//调用发送邮件函数 count++; }else{ continue; } } msg = "ok"; } catch (Exception e) { msg = "error"; } } catch (Exception e) { msg = "error"; } }else{ toEMAIL = toEMAIL.replaceAll(";", ";"); toEMAIL = toEMAIL.replaceAll(" ", ""); String[] arrTITLE = toEMAIL.split(";"); zcount = arrTITLE.length; try { for(int i=0;i<arrTITLE.length;i++){ if(Tools.checkEmail(arrTITLE[i])){ //邮箱格式不对就跳过 SimpleMailSender.sendEmail(strEM[0], strEM[1], strEM[2], strEM[3], arrTITLE[i], TITLE, CONTENT, TYPE);//调用发送邮件函数 count++; }else{ continue; } } msg = "ok"; } catch (Exception e) { msg = "error"; } } }else{ msg = "error"; } }else{ msg = "error"; } pd.put("msg", msg); pd.put("count", count); //成功数 pd.put("ecount", zcount-count); //失败数 pdList.add(pd); map.put("list", pdList); return AppUtil.returnObject(pd, map); } /**去系统设置页面 * @return * @throws Exception */ @RequestMapping(value="/goSystem") public ModelAndView goEditEmail() throws Exception{ if(!"admin".equals(Jurisdiction.getUsername())){return null;} //非admin用户不能修改 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("YSYNAME", Tools.readTxtFile(Const.SYSNAME)); //读取系统名称 pd.put("COUNTPAGE", Tools.readTxtFile(Const.PAGE)); //读取每页条数 String strEMAIL = Tools.readTxtFile(Const.EMAIL); //读取邮件配置 String strSMS1 = Tools.readTxtFile(Const.SMS1); //读取短信1配置 String strSMS2 = Tools.readTxtFile(Const.SMS2); //读取短信2配置 String strFWATERM = Tools.readTxtFile(Const.FWATERM); //读取文字水印配置 String strIWATERM = Tools.readTxtFile(Const.IWATERM); //读取图片水印配置 pd.put("Token", Tools.readTxtFile(Const.WEIXIN)); //读取微信配置 String strWEBSOCKET = Tools.readTxtFile(Const.WEBSOCKET);//读取WEBSOCKET配置 String strLOGINEDIT = Tools.readTxtFile(Const.LOGINEDIT);//读取登录页面配置 if(null != strEMAIL && !"".equals(strEMAIL)){ String strEM[] = strEMAIL.split(",fh,"); if(strEM.length == 4){ pd.put("SMTP", strEM[0]); pd.put("PORT", strEM[1]); pd.put("EMAIL", strEM[2]); pd.put("PAW", strEM[3]); } } if(null != strSMS1 && !"".equals(strSMS1)){ String strS1[] = strSMS1.split(",fh,"); if(strS1.length == 2){ pd.put("SMSU1", strS1[0]); pd.put("SMSPAW1", strS1[1]); } } if(null != strSMS2 && !"".equals(strSMS2)){ String strS2[] = strSMS2.split(",fh,"); if(strS2.length == 2){ pd.put("SMSU2", strS2[0]); pd.put("SMSPAW2", strS2[1]); } } if(null != strFWATERM && !"".equals(strFWATERM)){ String strFW[] = strFWATERM.split(",fh,"); if(strFW.length == 5){ pd.put("isCheck1", strFW[0]); pd.put("fcontent", strFW[1]); pd.put("fontSize", strFW[2]); pd.put("fontX", strFW[3]); pd.put("fontY", strFW[4]); } } if(null != strIWATERM && !"".equals(strIWATERM)){ String strIW[] = strIWATERM.split(",fh,"); if(strIW.length == 4){ pd.put("isCheck2", strIW[0]); pd.put("imgUrl", strIW[1]); pd.put("imgX", strIW[2]); pd.put("imgY", strIW[3]); } } if(null != strWEBSOCKET && !"".equals(strWEBSOCKET)){ String strIW[] = strWEBSOCKET.split(",fh,"); if(strIW.length == 5){ pd.put("WIMIP", strIW[0]); pd.put("WIMPORT", strIW[1]); pd.put("OLIP", strIW[2]); pd.put("OLPORT", strIW[3]); pd.put("FHsmsSound", strIW[4]); } } if(null != strLOGINEDIT && !"".equals(strLOGINEDIT)){ String strLo[] = strLOGINEDIT.split(",fh,"); if(strLo.length == 2){ pd.put("isZhuce", strLo[0]); pd.put("isMusic", strLo[1]); } } mv.setViewName("system/head/sys_edit"); mv.addObject("pd", pd); return mv; } /**保存系统设置1 * @return * @throws Exception */ @RequestMapping(value="/saveSys") public ModelAndView saveSys() throws Exception{ if(!"admin".equals(Jurisdiction.getUsername())){return null;} //非admin用户不能修改 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Tools.writeFile(Const.SYSNAME,pd.getString("YSYNAME")); //写入系统名称 Tools.writeFile(Const.PAGE,pd.getString("COUNTPAGE")); //写入每页条数 Tools.writeFile(Const.EMAIL,pd.getString("SMTP")+",fh,"+pd.getString("PORT")+",fh,"+pd.getString("EMAIL")+",fh,"+pd.getString("PAW")); //写入邮件服务器配置 Tools.writeFile(Const.SMS1,pd.getString("SMSU1")+",fh,"+pd.getString("SMSPAW1")); //写入短信1配置 Tools.writeFile(Const.SMS2,pd.getString("SMSU2")+",fh,"+pd.getString("SMSPAW2")); //写入短信2配置 mv.addObject("msg","OK"); mv.setViewName("save_result"); return mv; } /**保存系统设置2 * @return * @throws Exception */ @RequestMapping(value="/saveSys2") public ModelAndView saveSys2() throws Exception{ if(!"admin".equals(Jurisdiction.getUsername())){return null;} //非admin用户不能修改 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Tools.writeFile(Const.FWATERM,pd.getString("isCheck1")+",fh,"+pd.getString("fcontent")+",fh,"+pd.getString("fontSize")+",fh,"+pd.getString("fontX")+",fh,"+pd.getString("fontY")); //文字水印配置 Tools.writeFile(Const.IWATERM,pd.getString("isCheck2")+",fh,"+pd.getString("imgUrl")+",fh,"+pd.getString("imgX")+",fh,"+pd.getString("imgY")); //图片水印配置 Watermark.fushValue(); mv.addObject("msg","OK"); mv.setViewName("save_result"); return mv; } /**保存系统设置3 * @return * @throws Exception */ @RequestMapping(value="/saveSys3") public ModelAndView saveSys3() throws Exception{ if(!"admin".equals(Jurisdiction.getUsername())){return null;} //非admin用户不能修改 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Tools.writeFile(Const.WEIXIN,pd.getString("Token")); //写入微信配置 Tools.writeFile(Const.WEBSOCKET,pd.getString("WIMIP")+",fh,"+pd.getString("WIMPORT")+",fh,"+pd.getString("OLIP")+",fh,"+pd.getString("OLPORT")+",fh,"+pd.getString("FHsmsSound")); //websocket配置 mv.addObject("msg","OK"); mv.setViewName("save_result"); return mv; } /**保存系统设置4 * @return * @throws Exception */ @RequestMapping(value="/saveSys4") public ModelAndView saveSys4() throws Exception{ if(!"admin".equals(Jurisdiction.getUsername())){return null;} //非admin用户不能修改 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Tools.writeFile(Const.LOGINEDIT,pd.getString("isZhuce")+",fh,"+pd.getString("isMusic")); //登录页面配置 mv.addObject("msg","OK"); mv.setViewName("save_result"); return mv; } } // F-H Q 3-135-9679-0 sourcecode/MVNFHM/src/main/java/com/fh/controller/system/login/LoginController.java
New file @@ -0,0 +1,575 @@ package com.fh.controller.system.login; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.crypto.hash.SimpleHash; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.dao.redis.RedisDao; import com.fh.service.fhoa.datajur.DatajurManager; import com.fh.service.system.appuser.AppuserManager; import com.fh.service.system.buttonrights.ButtonrightsManager; import com.fh.service.system.fhbutton.FhbuttonManager; import com.fh.service.system.fhlog.FHlogManager; import com.fh.service.system.loginimg.LogInImgManager; import com.fh.service.system.menu.MenuManager; import com.fh.entity.system.Menu; import com.fh.entity.system.Role; import com.fh.entity.system.User; import com.fh.service.system.role.RoleManager; import com.fh.service.system.tenant.TenantManager; import com.fh.service.system.tenant.impl.TenantService; import com.fh.service.system.user.UserManager; import com.fh.util.AppUtil; import com.fh.util.Const; import com.fh.util.DateUtil; import com.fh.util.Jurisdiction; import com.fh.util.PageData; import com.fh.util.RightsHelper; import com.fh.util.Tools; import com.fh.util.UuidUtil; /** * 总入口 * @author fh QQ 3 1 3 5 9 6 7 9 0[青苔] * 修改日期:2015/11/2 */ /** * @author Administrator * */ @Controller public class LoginController extends BaseController { @Resource(name="userService") private UserManager userService; @Resource(name="menuService") private MenuManager menuService; @Resource(name="roleService") private RoleManager roleService; @Resource(name="buttonrightsService") private ButtonrightsManager buttonrightsService; @Resource(name="fhbuttonService") private FhbuttonManager fhbuttonService; @Resource(name="appuserService") private AppuserManager appuserService; @Resource(name="datajurService") private DatajurManager datajurService; @Resource(name="fhlogService") private FHlogManager FHLOG; @Resource(name="loginimgService") private LogInImgManager loginimgService; @Resource(name = "redisDaoImpl") private RedisDao redisDaoImpl; @Resource(name="tenantService") private TenantManager tenantService; /**访问登录页 * @return * @throws Exception */ @RequestMapping(value="/login_toLogin") public ModelAndView toLogin()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd = this.setLoginPd(pd); //设置登录页面的配置参数 mv.setViewName("system/index/login"); mv.addObject("pd",pd); return mv; } /**请求登录,验证用户 * @return * @throws Exception */ @RequestMapping(value="/login_login" ,produces="application/json;charset=UTF-8") @ResponseBody public Object login()throws Exception{ Map<String,String> map = new HashMap<String,String>(); PageData pd = new PageData(); pd = this.getPageData(); String errInfo = ""; String KEYDATA[] = pd.getString("KEYDATA").replaceAll("qq313596790fh", "").replaceAll("QQ978336446fh", "").split(",fh,"); if(null != KEYDATA && KEYDATA.length == 4){ Session session = Jurisdiction.getSession(); String sessionCode = (String)session.getAttribute(Const.SESSION_SECURITY_CODE); //获取session中的验证码 String code = KEYDATA[2]; if(null == code || "".equals(code)){//判断效验码 errInfo = "nullcode"; //效验码为空 }else{ String USERNAME = KEYDATA[0]; //登录过来的用户名 String PASSWORD = KEYDATA[1]; //登录过来的密码 String type = KEYDATA[3]; //登录过来的密码 pd.put("USERNAME", USERNAME); if(Tools.notEmpty(sessionCode) && sessionCode.equalsIgnoreCase(code)){ //判断登录验证码 String passwd = new SimpleHash("SHA-1", USERNAME, PASSWORD).toString(); //密码加密 pd.put("PASSWORD", passwd); pd.put("TYPE", type); pd = userService.getUserByNameAndPwd(pd); //根据用户名和密码去读取用户信息 if(pd != null){ pd.put("LAST_LOGIN",DateUtil.getTime().toString()); userService.updateLastLogin(pd); pd.put("SYSTEM_ID", "0"); PageData userSysInfo = userService.getUserSysInfo(pd); if(userSysInfo == null) { errInfo = "用户无访问该系统权限!"; } else { PageData tenant = tenantService.findById(pd); if (tenant != null && Const.TENANT_EXPIRED .equals(String.valueOf(tenant.get("STATUS")))) { errInfo = "该租户已过期"; } else { User user = new User(); user.setUSER_ID(pd.getString("USER_ID")); user.setUSERNAME(pd.getString("USERNAME")); user.setPASSWORD(pd.getString("PASSWORD")); user.setNAME(pd.getString("NAME")); user.setRIGHTS(pd.getString("RIGHTS")); user.setROLE_ID(pd.getString("ROLE_ID")); user.setLAST_LOGIN(pd.getString("LAST_LOGIN")); user.setIP(pd.getString("IP")); user.setSTATUS(pd.getString("STATUS")); user.setTYPE(type); // session.setAttribute(Const.TENANT_ID, userSysInfo.getString(Const.TENANT_ID)); session.setAttribute(Const.SESSION_USER, user); //把用户信息放session中 session.removeAttribute(Const.SESSION_SECURITY_CODE); //清除登录验证码的session //shiro加入身份验证 Subject subject = SecurityUtils.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken(USERNAME, PASSWORD); try { subject.login(token); session.setAttribute(Const.SESSION_USERNAME, USERNAME); //放入用户名到session } catch (AuthenticationException e) { errInfo = "身份验证失败!"; } } } }else{ errInfo = "usererror"; //用户名或密码有误 logBefore(logger, USERNAME+"登录系统密码或用户名错误"); FHLOG.save(USERNAME, "登录系统密码或用户名错误"); } }else{ errInfo = "codeerror"; //验证码输入有误 } if(Tools.isEmpty(errInfo)){ errInfo = "success"; //验证成功 logBefore(logger, USERNAME+"登录系统"); FHLOG.save(USERNAME, "登录系统"); } } }else{ errInfo = "error"; //缺少参数 } map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } /**请求登录,验证用户 * @return * @throws Exception */ @RequestMapping(value="/system_login" ,produces="application/json;charset=UTF-8") @ResponseBody public Object systemlogin()throws Exception{ Map<String,String> map = new HashMap<String,String>(); PageData pd = new PageData(); pd = this.getPageData(); String errInfo = ""; //String KEYDATA[] = pd.getString("KEYDATA").replaceAll("qq313596790fh", "").replaceAll("QQ978336446fh", "").split(",fh,"); //if(null != KEYDATA && KEYDATA.length == 3){ Session session = Jurisdiction.getSession(); //String sessionCode = (String)session.getAttribute(Const.SESSION_SECURITY_CODE); //获取session中的验证码 //String code = KEYDATA[2]; //if(null == code || "".equals(code)){//判断效验码 // errInfo = "nullcode"; //效验码为空 //}else{ String USERNAME = pd.getString("USERNAME"); //登录过来的用户名 String PASSWORD = pd.getString("PASSWORD"); //登录过来的密码 pd.put("USERNAME", USERNAME); //if(Tools.notEmpty(sessionCode) && sessionCode.equalsIgnoreCase(code)){ //判断登录验证码 String passwd = new SimpleHash("SHA-1", USERNAME, PASSWORD).toString(); //密码加密 pd.put("PASSWORD", passwd); pd = userService.getUserByNameAndPwd(pd); //根据用户名和密码去读取用户信息 if(pd != null){ pd.put("LAST_LOGIN",DateUtil.getTime().toString()); userService.updateLastLogin(pd); pd.put("SYSTEM_ID", "0"); PageData userSysInfo = userService.getUserSysInfo(pd); if(userSysInfo == null) { errInfo = "用户无访问该系统权限!"; } else { User user = new User(); user.setUSER_ID(pd.getString("USER_ID")); user.setUSERNAME(pd.getString("USERNAME")); user.setPASSWORD(pd.getString("PASSWORD")); user.setNAME(pd.getString("NAME")); user.setRIGHTS(pd.getString("RIGHTS")); user.setROLE_ID(userSysInfo.getString("ROLE_ID")); user.setLAST_LOGIN(pd.getString("LAST_LOGIN")); user.setIP(pd.getString("IP")); user.setSTATUS(pd.getString("STATUS")); session.setAttribute(Const.TENANT_ID, userSysInfo.getString(Const.TENANT_ID)); session.setAttribute(Const.SESSION_USER, user); //把用户信息放session中 session.removeAttribute(Const.SESSION_SECURITY_CODE); //清除登录验证码的session //shiro加入身份验证 Subject subject = SecurityUtils.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken(USERNAME, PASSWORD); try { subject.login(token); } catch (AuthenticationException e) { errInfo = "身份验证失败!"; } } }else{ errInfo = "usererror"; //用户名或密码有误 logBefore(logger, USERNAME+"登录系统密码或用户名错误"); FHLOG.save(USERNAME, "登录系统密码或用户名错误"); } //}else{ // errInfo = "codeerror"; //验证码输入有误 //} if(Tools.isEmpty(errInfo)){ errInfo = "success"; //验证成功 logBefore(logger, USERNAME+"登录系统"); FHLOG.save(USERNAME, "登录系统"); } //} //}else{ // errInfo = "error"; //缺少参数 //} map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } /**访问系统首页 * @param changeMenu:切换菜单参数 * @return */ @RequestMapping(value="/main/{changeMenu}") public ModelAndView login_index(@PathVariable("changeMenu") String changeMenu){ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); try{ Session session = Jurisdiction.getSession(); User user = (User)session.getAttribute(Const.SESSION_USER); //读取session中的用户信息(单独用户信息) if (user != null) { User userr = (User)session.getAttribute(Const.SESSION_USERROL); //读取session中的用户信息(含角色信息) if(null == userr){ user = userService.getUserAndRoleById(user.getUSER_ID()); //通过用户ID读取用户信息和角色信息 pd.put("SYSTEM_ID", "0"); pd.put("USER_ID", user.getUSER_ID()); PageData userSysInfo = userService.getUserSysInfo(pd); user.setROLE_ID(userSysInfo.getString("ROLE_ID")); Role role = new Role(); role.setROLE_ID(userSysInfo.getString("ROLE_ID")); role.setRIGHTS(userSysInfo.getString("ROLE_RIGHTS")); role.setADD_QX(userSysInfo.getString("ADD_QX")); role.setADD_QX(userSysInfo.getString("DEL_QX")); role.setADD_QX(userSysInfo.getString("EDIT_QX")); role.setADD_QX(userSysInfo.getString("CHA_QX")); user.setRole(role); session.setAttribute(Const.SESSION_USERROL, user); //存入session }else{ user = userr; } String USERNAME = user.getUSERNAME(); Role role = user.getRole(); //获取用户角色 String roleRights = role!=null ? role.getRIGHTS() : ""; //角色权限(菜单权限) session.setAttribute(USERNAME + Const.SESSION_ROLE_RIGHTS, roleRights); //将角色权限存入session session.setAttribute(Const.SESSION_USERNAME, USERNAME); //放入用户名到session this.setAttributeToAllDEPARTMENT_ID(session, USERNAME); //把用户的组织机构权限放到session里面 List<Menu> allmenuList = new ArrayList<Menu>(); allmenuList = this.getAttributeMenu(session, USERNAME, roleRights); //菜单缓存 List<Menu> menuList = new ArrayList<Menu>(); menuList = this.changeMenuF(allmenuList, session, USERNAME, changeMenu); //切换菜单 if(null == session.getAttribute(USERNAME + Const.SESSION_QX)){ session.setAttribute(USERNAME + Const.SESSION_QX, this.getUQX(USERNAME));//按钮权限放到session中 } this.getRemortIP(USERNAME); //更新登录IP mv.setViewName("system/index/main"); mv.addObject("user", user); mv.addObject("menuList", menuList); }else { mv.setViewName("system/index/login");//session失效后跳转登录页面 } } catch(Exception e){ mv.setViewName("system/index/login"); logger.error(e.getMessage(), e); } pd.put("SYSNAME", Tools.readTxtFile(Const.SYSNAME)); //读取系统名称 mv.addObject("pd",pd); return mv; } /**菜单缓存 * @param session * @param USERNAME * @param roleRights * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<Menu> getAttributeMenu(Session session, String USERNAME, String roleRights) throws Exception{ List<Menu> allmenuList = new ArrayList<Menu>(); if(null == session.getAttribute(USERNAME + Const.SESSION_allmenuList)){ PageData pd1 = new PageData(); pd1.put("parentId", "0"); pd1.put("SYSTEM_ID", "0"); allmenuList = menuService.listAllMenuQx(pd1); //获取所有菜单 if(Tools.notEmpty(roleRights)){ allmenuList = this.readMenu(allmenuList, roleRights); //根据角色权限获取本权限的菜单列表 } session.setAttribute(USERNAME + Const.SESSION_allmenuList, allmenuList);//菜单权限放入session中 }else{ allmenuList = (List<Menu>)session.getAttribute(USERNAME + Const.SESSION_allmenuList); } return allmenuList; } /**根据角色权限获取本权限的菜单列表(递归处理) * @param menuList:传入的总菜单 * @param roleRights:加密的权限字符串 * @return */ public List<Menu> readMenu(List<Menu> menuList,String roleRights){ for(int i=0;i<menuList.size();i++){ menuList.get(i).setHasMenu(RightsHelper.testRights(roleRights, menuList.get(i).getMENU_ID())); if(menuList.get(i).isHasMenu()){ //判断是否有此菜单权限 this.readMenu(menuList.get(i).getSubMenu(), roleRights);//是:继续排查其子菜单 } } return menuList; } /**切换菜单处理 * @param allmenuList * @param session * @param USERNAME * @param changeMenu * @return */ @SuppressWarnings("unchecked") public List<Menu> changeMenuF(List<Menu> allmenuList, Session session, String USERNAME, String changeMenu){ List<Menu> menuList = new ArrayList<Menu>(); if(null == session.getAttribute(USERNAME + Const.SESSION_menuList) || ("yes".equals(changeMenu))){ List<Menu> menuList1 = new ArrayList<Menu>(); List<Menu> menuList2 = new ArrayList<Menu>(); for(int i=0;i<allmenuList.size();i++){//拆分菜单 Menu menu = allmenuList.get(i); if("1".equals(menu.getMENU_TYPE())){ menuList1.add(menu); }else{ menuList2.add(menu); } } session.removeAttribute(USERNAME + Const.SESSION_menuList); if("2".equals(session.getAttribute("changeMenu"))){ session.setAttribute(USERNAME + Const.SESSION_menuList, menuList1); session.removeAttribute("changeMenu"); session.setAttribute("changeMenu", "1"); menuList = menuList1; }else{ session.setAttribute(USERNAME + Const.SESSION_menuList, menuList2); session.removeAttribute("changeMenu"); session.setAttribute("changeMenu", "2"); menuList = menuList2; } }else{ menuList = (List<Menu>)session.getAttribute(USERNAME + Const.SESSION_menuList); } return menuList; } /**把用户的组织机构权限放到session里面 * @param session * @param USERNAME * @return * @throws Exception */ public void setAttributeToAllDEPARTMENT_ID(Session session, String USERNAME) throws Exception{ String DEPARTMENT_IDS = "0",DEPARTMENT_ID = "0"; if(!"admin".equals(USERNAME)){ PageData pd = datajurService.getDEPARTMENT_IDS(USERNAME); DEPARTMENT_IDS = null == pd?"无权":pd.getString("DEPARTMENT_IDS"); DEPARTMENT_ID = null == pd?"无权":pd.getString("DEPARTMENT_ID"); } session.setAttribute(Const.DEPARTMENT_IDS, DEPARTMENT_IDS); //把用户的组织机构权限集合放到session里面 session.setAttribute(Const.DEPARTMENT_ID, DEPARTMENT_ID); //把用户的最高组织机构权限放到session里面 } /** * 进入tab标签 * @return */ @RequestMapping(value="/tab") public String tab(){ return "system/index/tab"; } /** * 进入首页后的默认页面 * @return * @throws Exception */ @RequestMapping(value="/login_default") public ModelAndView defaultPage() throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd.put("userCount", Integer.parseInt(userService.getUserCount("").get("userCount").toString())-1); //系统用户数 pd.put("appUserCount", Integer.parseInt(appuserService.getAppUserCount("").get("appUserCount").toString())); //会员数 String appKey = redisDaoImpl.get("appKey"); if(StringUtils.isEmpty(appKey)) { appKey = UuidUtil.get32UUID(); redisDaoImpl.addString("appKey", appKey, 0); } pd.put("appKey", appKey); String secretKey = redisDaoImpl.get("secretKey"); if(StringUtils.isEmpty(secretKey)) { secretKey = UuidUtil.get32UUID(); redisDaoImpl.addString("secretKey", secretKey, 0); } pd.put("secretKey", secretKey); Session session = Jurisdiction.getSession(); User user = (User)session.getAttribute(Const.SESSION_USER); pd.put("userId", user.getUSER_ID()); mv.addObject("pd",pd); mv.setViewName("system/index/default"); return mv; } /** * 用户注销 * @param session * @return * @throws Exception */ @RequestMapping(value="/logout") public ModelAndView logout() throws Exception{ String USERNAME = Jurisdiction.getUsername(); //当前登录的用户名 logBefore(logger, USERNAME+"退出系统"); FHLOG.save(USERNAME, "退出"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); Session session = Jurisdiction.getSession(); //以下清除session缓存 session.removeAttribute(Const.SESSION_USER); session.removeAttribute(USERNAME + Const.SESSION_ROLE_RIGHTS); session.removeAttribute(USERNAME + Const.SESSION_allmenuList); session.removeAttribute(USERNAME + Const.SESSION_menuList); session.removeAttribute(USERNAME + Const.SESSION_QX); session.removeAttribute(Const.SESSION_userpds); session.removeAttribute(Const.SESSION_USERNAME); session.removeAttribute(Const.SESSION_USERROL); session.removeAttribute("changeMenu"); session.removeAttribute("DEPARTMENT_IDS"); session.removeAttribute("DEPARTMENT_ID"); //shiro销毁登录 Subject subject = SecurityUtils.getSubject(); subject.logout(); pd = this.getPageData(); pd.put("msg", pd.getString("msg")); pd = this.setLoginPd(pd); //设置登录页面的配置参数 mv.setViewName("system/index/login"); mv.addObject("pd",pd); return mv; } /**设置登录页面的配置参数 * @param pd * @return */ public PageData setLoginPd(PageData pd){ pd.put("SYSNAME", Tools.readTxtFile(Const.SYSNAME)); //读取系统名称 String strLOGINEDIT = Tools.readTxtFile(Const.LOGINEDIT); //读取登录页面配置 if(null != strLOGINEDIT && !"".equals(strLOGINEDIT)){ String strLo[] = strLOGINEDIT.split(",fh,"); if(strLo.length == 2){ pd.put("isZhuce", strLo[0]); pd.put("isMusic", strLo[1]); } } try { List<PageData> listImg = loginimgService.listAll(pd); //登录背景图片 pd.put("listImg", listImg); } catch (Exception e) { e.printStackTrace(); } return pd; } /**获取用户权限 * @param session * @return */ public Map<String, String> getUQX(String USERNAME){ PageData pd = new PageData(); Map<String, String> map = new HashMap<String, String>(); try { pd.put(Const.SESSION_USERNAME, USERNAME); //pd.put("ROLE_ID", userService.findByUsername(pd).get("ROLE_ID").toString());//获取角色ID pd.put("SYSTEM_ID", "0"); pd.put("USER_ID", userService.findByUsername(pd).get("USER_ID").toString()); PageData userSysInfo = userService.getUserSysInfo(pd); pd.put("ROLE_ID", userSysInfo.getString("ROLE_ID"));//获取角色ID pd = roleService.findObjectById(pd); //获取角色信息 map.put("adds", pd.getString("ADD_QX")); //增 map.put("dels", pd.getString("DEL_QX")); //删 map.put("edits", pd.getString("EDIT_QX")); //改 map.put("chas", pd.getString("CHA_QX")); //查 List<PageData> buttonQXnamelist = new ArrayList<PageData>(); if("admin".equals(USERNAME)){ buttonQXnamelist = fhbuttonService.listAll(pd); //admin用户拥有所有按钮权限 }else{ buttonQXnamelist = buttonrightsService.listAllBrAndQxname(pd); //此角色拥有的按钮权限标识列表 } for(int i=0;i<buttonQXnamelist.size();i++){ map.put(buttonQXnamelist.get(i).getString("QX_NAME"),"1"); //按钮权限 } } catch (Exception e) { logger.error(e.toString(), e); } return map; } /** 更新登录用户的IP * @param USERNAME * @throws Exception */ public void getRemortIP(String USERNAME) throws Exception { PageData pd = new PageData(); HttpServletRequest request = this.getRequest(); String ip = ""; if (request.getHeader("x-forwarded-for") == null) { ip = request.getRemoteAddr(); }else{ ip = request.getHeader("x-forwarded-for"); } pd.put("USERNAME", USERNAME); pd.put("IP", ip); userService.saveIP(pd); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/system/loginimg/LogInImgController.java
New file @@ -0,0 +1,144 @@ package com.fh.controller.system.loginimg; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import javax.annotation.Resource; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.util.Const; import com.fh.util.DelAllFile; import com.fh.util.PageData; import com.fh.util.Jurisdiction; import com.fh.util.PathUtil; import com.fh.service.system.loginimg.LogInImgManager; /** * 说明:登录页面背景图片 * 创建人:FH Q313596790 * 创建时间:2016-06-03 */ @Controller @RequestMapping(value="/loginimg") public class LogInImgController extends BaseController { String menuUrl = "loginimg/list.do"; //菜单地址(权限用) @Resource(name="loginimgService") private LogInImgManager loginimgService; /**保存 * @param * @throws Exception */ @RequestMapping(value="/save") public ModelAndView save() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"新增LogInImg"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("LOGINIMG_ID", this.get32UUID()); //主键 loginimgService.save(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**删除 * @param out * @throws Exception */ @RequestMapping(value="/delete") public void delete(PrintWriter out) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"删除LogInImg"); PageData pd = new PageData(); pd = this.getPageData(); pd = loginimgService.findById(pd); loginimgService.delete(pd); DelAllFile.delFolder(PathUtil.getClasspath()+ "static/login/images/" + pd.getString("FILEPATH")); //删除文件 out.write("success"); out.close(); } /**修改 * @param * @throws Exception */ @RequestMapping(value="/edit") public ModelAndView edit() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"修改LogInImg"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); loginimgService.edit(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**列表 * @param page * @throws Exception */ @RequestMapping(value="/list") public ModelAndView list(Page page) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"列表LogInImg"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); page.setPd(pd); List<PageData> varList = loginimgService.list(page); //列出LogInImg列表 mv.setViewName("system/loginimg/loginimg_list"); mv.addObject("varList", varList); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**去新增页面 * @param * @throws Exception */ @RequestMapping(value="/goAdd") public ModelAndView goAdd()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.setViewName("system/loginimg/loginimg_edit"); mv.addObject("msg", "save"); mv.addObject("pd", pd); return mv; } /**去修改页面 * @param * @throws Exception */ @RequestMapping(value="/goEdit") public ModelAndView goEdit()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd = loginimgService.findById(pd); //根据ID读取 mv.setViewName("system/loginimg/loginimg_edit"); mv.addObject("msg", "edit"); mv.addObject("pd", pd); return mv; } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/system/menu/MenuController.java
New file @@ -0,0 +1,335 @@ package com.fh.controller.system.menu; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import net.sf.json.JSONArray; import org.apache.shiro.session.Session; 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.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.system.Menu; import com.fh.entity.system.User; import com.fh.service.system.fhlog.FHlogManager; import com.fh.service.system.menu.MenuManager; import com.fh.service.system.system.SystemManager; import com.fh.util.AppUtil; import com.fh.util.Const; import com.fh.util.Jurisdiction; import com.fh.util.PageData; import com.fh.util.RightsHelper; /** * 类名称:MenuController 菜单处理 * 创建人:FH * 创建时间:2015年10月27日 * @version */ @Controller @RequestMapping(value="/menu") public class MenuController extends BaseController { String menuUrl = "menu.do"; //菜单地址(权限用) @Resource(name="menuService") private MenuManager menuService; @Resource(name="fhlogService") private FHlogManager FHLOG; @Resource(name="systemService") private SystemManager systemService; /** * 显示菜单列表 * @param model * @return */ @RequestMapping public ModelAndView list()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Session session = Jurisdiction.getSession(); User user = (User)session.getAttribute(Const.SESSION_USER); try{ pd.put("userId", user.getUSER_ID()); List<PageData> systemList = systemService.getList(pd); if(pd.get("SYSTEM_ID") == null || "".equals(pd.get("SYSTEM_ID")) ){ pd.put("SYSTEM_ID", "0"); } String MENU_ID = (null == pd.get("MENU_ID") || "".equals(pd.get("MENU_ID").toString()))?"0":pd.get("MENU_ID").toString(); pd.put("parentId", MENU_ID); List<Menu> menuList = menuService.listSubMenuByParentId(pd); mv.addObject("pd", menuService.getMenuById(pd)); //传入父菜单所有信息 mv.addObject("MENU_ID", MENU_ID); mv.addObject("MSG", null == pd.get("MSG")?"list":pd.get("MSG").toString()); //MSG=change 则为编辑或删除后跳转过来的 mv.addObject("menuList", menuList); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 mv.addObject("systemList", systemList); mv.addObject("SYSTEM_ID", pd.get("SYSTEM_ID")); mv.setViewName("system/menu/menu_list"); } catch(Exception e){ logger.error(e.toString(), e); } return mv; } /** * 请求新增菜单页面 * @param model * @return */ @RequestMapping(value="/toAdd") public ModelAndView toAdd()throws Exception{ ModelAndView mv = this.getModelAndView(); try{ PageData pd = new PageData(); pd = this.getPageData(); String MENU_ID = (null == pd.get("MENU_ID") || "".equals(pd.get("MENU_ID").toString()))?"0":pd.get("MENU_ID").toString();//接收传过来的上级菜单ID,如果上级为顶级就取值“0” String SYSTEM_ID = (null == pd.get("SYSTEM_ID") || "".equals(pd.get("SYSTEM_ID").toString()))?"0":pd.get("SYSTEM_ID").toString(); pd.put("MENU_ID",MENU_ID); pd.put("SYSTEM_ID",SYSTEM_ID); mv.addObject("pd", pd); mv.addObject("pds", menuService.getMenuById(pd)); //传入父菜单所有信息 mv.addObject("MENU_ID", MENU_ID); //传入菜单ID,作为子菜单的父菜单ID用 mv.addObject("MSG", "add"); //执行状态 add 为添加 mv.setViewName("system/menu/menu_edit"); } catch(Exception e){ logger.error(e.toString(), e); } return mv; } /** * 保存菜单信息 * @param menu * @param model * @return */ @RequestMapping(value="/add") public ModelAndView add(Menu menu)throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"保存菜单"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); try{ menu.setMENU_ID(String.valueOf(Integer.parseInt(menuService.findMaxId(pd).get("MID").toString())+1)); menu.setMENU_ICON("menu-icon fa fa-leaf black");//默认菜单图标 if(menu.getSYSTEM_ID() == null || "".equals(menu.getSYSTEM_ID())) { menu.setSYSTEM_ID("0"); } menuService.saveMenu(menu); //保存菜单 FHLOG.save(Jurisdiction.getUsername(), "新增菜单"+menu.getMENU_NAME()); } catch(Exception e){ logger.error(e.toString(), e); mv.addObject("msg","failed"); } mv.setViewName("redirect:/menu?MSG='change'&MENU_ID="+menu.getPARENT_ID()+"&SYSTEM_ID="+pd.getString("SYSTEM_ID")); //保存成功跳转到列表页面 //mv.setViewName("redirect:?MSG='change'&MENU_ID="+menu.getPARENT_ID()); //保存成功跳转到列表页面 return mv; } /** * 删除菜单 * @param MENU_ID * @param out */ @RequestMapping(value="/delete") @ResponseBody public Object delete(@RequestParam String MENU_ID)throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"删除菜单"); Map<String,String> map = new HashMap<String,String>(); String errInfo = ""; try{ PageData pd = new PageData(); pd.put("parentId", MENU_ID); if(menuService.listSubMenuByParentId(pd).size() > 0){//判断是否有子菜单,是:不允许删除 errInfo = "false"; }else{ menuService.deleteMenuById(MENU_ID); FHLOG.save(Jurisdiction.getUsername(), "删除菜单ID"+MENU_ID); errInfo = "success"; } } catch(Exception e){ logger.error(e.toString(), e); } map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } /** * 请求编辑菜单页面 * @param * @return */ @RequestMapping(value="/toEdit") public ModelAndView toEdit(String id)throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); try{ pd = this.getPageData(); pd.put("MENU_ID",id); //接收过来的要修改的ID pd = menuService.getMenuById(pd); //读取此ID的菜单数据 String SYSTEM_ID = (null == pd.get("SYSTEM_ID") || "".equals(pd.get("SYSTEM_ID").toString()))?"0":pd.get("SYSTEM_ID").toString(); pd.put("SYSTEM_ID", SYSTEM_ID); mv.addObject("pd", pd); //放入视图容器 pd.put("MENU_ID",pd.get("PARENT_ID").toString()); //用作读取父菜单信息 mv.addObject("pds", menuService.getMenuById(pd)); //传入父菜单所有信息 mv.addObject("MENU_ID", pd.get("PARENT_ID").toString()); //传入父菜单ID,作为子菜单的父菜单ID用 mv.addObject("MSG", "edit"); pd.put("MENU_ID",id); //复原本菜单ID mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 mv.setViewName("system/menu/menu_edit"); } catch(Exception e){ logger.error(e.toString(), e); } return mv; } /** * 保存编辑 * @param * @return */ @RequestMapping(value="/edit") public ModelAndView edit(Menu menu)throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"修改菜单"); ModelAndView mv = this.getModelAndView(); try{ menuService.edit(menu); FHLOG.save(Jurisdiction.getUsername(), "修改菜单"+menu.getMENU_NAME()); } catch(Exception e){ logger.error(e.toString(), e); } mv.setViewName("redirect:/menu?MSG='change'&MENU_ID="+menu.getPARENT_ID()+"&SYSTEM_ID="+menu.getSYSTEM_ID()); //保存成功跳转到列表页面 return mv; } /** * 请求编辑菜单图标页面 * @param * @return */ @RequestMapping(value="/toEditicon") public ModelAndView toEditicon(String MENU_ID)throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); try{ pd = this.getPageData(); pd.put("MENU_ID",MENU_ID); mv.addObject("pd", pd); mv.setViewName("system/menu/menu_icon"); } catch(Exception e){ logger.error(e.toString(), e); } return mv; } /** * 保存菜单图标 * @param * @return */ @RequestMapping(value="/editicon") public ModelAndView editicon()throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"修改菜单图标"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); try{ pd = this.getPageData(); pd = menuService.editicon(pd); mv.addObject("msg","success"); } catch(Exception e){ logger.error(e.toString(), e); mv.addObject("msg","failed"); } mv.setViewName("save_result"); return mv; } /** * 显示菜单列表ztree(菜单管理) * @param model * @return */ @RequestMapping(value="/listAllMenu") public ModelAndView listAllMenu(Model model,String MENU_ID,String SYSTEM_ID)throws Exception{ ModelAndView mv = this.getModelAndView(); try{ PageData pd = new PageData(); pd.put("parentId", "0"); pd.put("SYSTEM_ID", SYSTEM_ID); JSONArray arr = JSONArray.fromObject(menuService.listAllMenu(pd)); String json = arr.toString(); json = json.replaceAll("MENU_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("MENU_NAME", "name").replaceAll("subMenu", "nodes").replaceAll("hasMenu", "checked").replaceAll("MENU_URL", "url"); model.addAttribute("zTreeNodes", json); mv.addObject("MENU_ID",MENU_ID); mv.addObject("SYSTEM_ID",SYSTEM_ID); mv.setViewName("system/menu/menu_ztree"); } catch(Exception e){ logger.error(e.toString(), e); } return mv; } /** * 显示菜单列表ztree(拓展左侧四级菜单) * @param model * @return */ @RequestMapping(value="/otherlistMenu") public ModelAndView otherlistMenu(Model model,String MENU_ID)throws Exception{ ModelAndView mv = this.getModelAndView(); try{ PageData pd = new PageData(); pd.put("MENU_ID", MENU_ID); pd.put("SYSTEM_ID", "0"); String MENU_URL = menuService.getMenuById(pd).getString("MENU_URL"); if("#".equals(MENU_URL.trim()) || "".equals(MENU_URL.trim()) || null == MENU_URL){ MENU_URL = "login_default.do"; } String roleRights = Jurisdiction.getSession().getAttribute(Jurisdiction.getUsername() + Const.SESSION_ROLE_RIGHTS).toString(); //获取本角色菜单权限 List<Menu> athmenuList = menuService.listAllMenuQx(pd); //获取某菜单下所有子菜单 athmenuList = this.readMenu(athmenuList, roleRights); //根据权限分配菜单 JSONArray arr = JSONArray.fromObject(athmenuList); String json = arr.toString(); json = json.replaceAll("MENU_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("MENU_NAME", "name").replaceAll("subMenu", "nodes").replaceAll("hasMenu", "checked").replaceAll("MENU_URL", "url").replaceAll("#", ""); model.addAttribute("zTreeNodes", json); mv.addObject("MENU_URL",MENU_URL); //本ID菜单链接 mv.setViewName("system/menu/menu_ztree_other"); } catch(Exception e){ logger.error(e.toString(), e); } return mv; } /**根据角色权限获取本权限的菜单列表(递归处理) * @param menuList:传入的总菜单 * @param roleRights:加密的权限字符串 * @return */ public List<Menu> readMenu(List<Menu> menuList,String roleRights){ for(int i=0;i<menuList.size();i++){ menuList.get(i).setHasMenu(RightsHelper.testRights(roleRights, menuList.get(i).getMENU_ID())); if(menuList.get(i).isHasMenu() && "1".equals(menuList.get(i).getMENU_STATE())){ //判断是否有此菜单权限并且是否隐藏 this.readMenu(menuList.get(i).getSubMenu(), roleRights); //是:继续排查其子菜单 }else{ menuList.remove(i); i--; } } return menuList; } } sourcecode/MVNFHM/src/main/java/com/fh/controller/system/onlinemanager/OnlineManagerController.java
New file @@ -0,0 +1,45 @@ package com.fh.controller.system.onlinemanager; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.util.Jurisdiction; /** * 类名称:在线管理列表 * 创建人:FH * 创建时间:2015-05-25 */ @Controller @RequestMapping(value="/onlinemanager") public class OnlineManagerController extends BaseController { String menuUrl = "onlinemanager/list.do"; //菜单地址(权限用) /**列表 * @return */ @RequestMapping(value="/list") public ModelAndView list(){ logBefore(logger, "列表OnlineManager"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); mv.setViewName("system/onlinemanager/onlinemanager_list"); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/system/role/RoleController.java
New file @@ -0,0 +1,405 @@ package com.fh.controller.system.role; import java.io.PrintWriter; import java.math.BigInteger; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.apache.shiro.session.Session; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.system.Menu; import com.fh.entity.system.Role; import com.fh.entity.system.User; import com.fh.service.system.appuser.AppuserManager; import com.fh.service.system.fhlog.FHlogManager; import com.fh.service.system.menu.MenuManager; import com.fh.service.system.role.RoleManager; import com.fh.service.system.system.SystemManager; import com.fh.service.system.tenant.TenantManager; import com.fh.service.system.user.UserManager; import com.fh.util.AppUtil; import com.fh.util.CommonUtil; import com.fh.util.Const; import com.fh.util.Jurisdiction; import com.fh.util.PageData; import com.fh.util.RightsHelper; import com.fh.util.Tools; import net.sf.json.JSONArray; /** * 类名称:RoleController 角色权限管理 * 创建人:FH Q313596790 * 修改时间:2015年11月6日 * @version */ @Controller @RequestMapping(value="/role") public class RoleController extends BaseController { String menuUrl = "role.do"; //菜单地址(权限用) @Resource(name="menuService") private MenuManager menuService; @Resource(name="roleService") private RoleManager roleService; @Resource(name="userService") private UserManager userService; @Resource(name="appuserService") private AppuserManager appuserService; @Resource(name="fhlogService") private FHlogManager FHLOG; @Resource(name="systemService") private SystemManager systemService; @Resource(name="tenantService") private TenantManager tenantService; /** 进入权限首页 * @param * @return * @throws Exception */ @RequestMapping public ModelAndView list()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); Session session = Jurisdiction.getSession(); User user = (User)session.getAttribute(Const.SESSION_USER); try{ pd = this.getPageData(); pd.put("userId", user.getUSER_ID()); PageData fpd = new PageData(); List<PageData> systemList = systemService.getList(pd); if(pd.getString("ROLE_ID") == null || "".equals(pd.getString("ROLE_ID").trim())){ pd.put("ROLE_ID", "1"); //默认列出第一组角色(初始设计系统用户和会员组不能删除) } String systemId = ""; if(pd.get("SYSTEM_ID") == null || "".equals(pd.get("SYSTEM_ID")) ){ pd.put("SYSTEM_ID", "0"); systemId = String.valueOf(systemList.get(0).get("SYSTEM_ID")); } else { systemId = pd.getString("SYSTEM_ID"); } pd.put("SYSTEM_ID", systemId); fpd.put("SYSTEM_ID", systemId); mv.addObject("SYSTEM_ID", systemId); mv.addObject("systemList", systemList); fpd.put("ROLE_ID", "0"); // TODO List<Role> roleList = roleService.listAllRolesByPId(fpd); //列出组(页面横向排列的一级组) List<Role> roleList_z = roleService.listAllRolesByPId(pd); //列出此组下架角色 pd = roleService.findObjectById(pd); //取得点击的角色组(横排的) mv.addObject("pd", pd); mv.addObject("roleList", roleList); mv.addObject("roleList_z", roleList_z); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 mv.setViewName("system/role/role_list"); } catch(Exception e){ logger.error(e.toString(), e); } return mv; } /**去新增页面 * @param * @return */ @RequestMapping(value="/toAdd") public ModelAndView toAdd(){ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); try{ pd = this.getPageData(); mv.addObject("msg", "add"); mv.setViewName("system/role/role_edit"); mv.addObject("pd", pd); } catch(Exception e){ logger.error(e.toString(), e); } return mv; } /**保存新增角色 * @return * @throws Exception */ @RequestMapping(value="/add",method=RequestMethod.POST) public ModelAndView add()throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"新增角色"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); try{ pd = this.getPageData(); String parent_id = pd.getString("PARENT_ID"); //父类角色id pd.put("ROLE_ID", parent_id); if("0".equals(parent_id)){ pd.put("RIGHTS", ""); //菜单权限 }else{ String rights = roleService.findObjectById(pd).getString("RIGHTS"); pd.put("RIGHTS", (null == rights)?"":rights); //组菜单权限 } pd.put("ROLE_ID", this.get32UUID()); //主键 pd.put("ADD_QX", "0"); //初始新增权限为否 pd.put("DEL_QX", "0"); //删除权限 pd.put("EDIT_QX", "0"); //修改权限 pd.put("CHA_QX", "0"); //查看权限 roleService.add(pd); FHLOG.save(Jurisdiction.getUsername(), "新增角色:"+pd.getString("ROLE_NAME")); } catch(Exception e){ logger.error(e.toString(), e); mv.addObject("msg","failed"); } mv.setViewName("save_result"); return mv; } /**请求编辑 * @param ROLE_ID * @return * @throws Exception */ @RequestMapping(value="/toEdit") public ModelAndView toEdit( String ROLE_ID )throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); try{ pd = this.getPageData(); pd.put("ROLE_ID", ROLE_ID); pd = roleService.findObjectById(pd); mv.addObject("msg", "edit"); mv.addObject("pd", pd); mv.setViewName("system/role/role_edit"); } catch(Exception e){ logger.error(e.toString(), e); } return mv; } /**保存修改 * @return * @throws Exception */ @RequestMapping(value="/edit") public ModelAndView edit()throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"修改角色"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); try{ pd = this.getPageData(); roleService.edit(pd); FHLOG.save(Jurisdiction.getUsername(), "修改角色:"+pd.getString("ROLE_NAME")); mv.addObject("msg","success"); } catch(Exception e){ logger.error(e.toString(), e); mv.addObject("msg","failed"); } mv.setViewName("save_result"); return mv; } /**删除角色 * @param ROLE_ID * @return * @throws Exception */ @RequestMapping(value="/delete") @ResponseBody public Object deleteRole(@RequestParam String ROLE_ID)throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"删除角色"); Map<String,String> map = new HashMap<String,String>(); PageData pd = new PageData(); String errInfo = ""; try{ pd.put("ROLE_ID", ROLE_ID); List<Role> roleList_z = roleService.listAllRolesByPId(pd); //列出此部门的所有下级 if(roleList_z.size() > 0){ errInfo = "false"; //下级有数据时,删除失败 }else{ List<PageData> userlist = userService.listAllUserByRoldId(pd); //此角色下的用户 List<PageData> appuserlist = appuserService.listAllAppuserByRorlid(pd); //此角色下的会员 if(userlist.size() > 0 || appuserlist.size() > 0){ //此角色已被使用就不能删除 errInfo = "false2"; }else{ roleService.deleteRoleById(ROLE_ID); //执行删除 FHLOG.save(Jurisdiction.getUsername(), "删除角色ID为:"+ROLE_ID); errInfo = "success"; } } } catch(Exception e){ logger.error(e.toString(), e); } map.put("result", errInfo); return AppUtil.returnObject(new PageData(), map); } /** * 显示菜单列表ztree(菜单授权菜单) * @param model * @return */ @RequestMapping(value="/menuqx") public ModelAndView listAllMenu(Model model,String ROLE_ID,String SYSTEM_ID)throws Exception{ ModelAndView mv = this.getModelAndView(); try{ PageData pd = new PageData(); pd.put("parentId", "0"); pd.put("ROLE_ID", ROLE_ID); pd.put("SYSTEM_ID", SYSTEM_ID); Role role = roleService.getRoleById(pd); //根据角色ID获取角色对象 String roleRights = role.getRIGHTS(); Session session = Jurisdiction.getSession(); User user = (User)session.getAttribute(Const.SESSION_USER); //取出本角色菜单权限 List<Menu> menuList = menuService.listAllMenuQx(pd); //获取所有菜单 if (!SYSTEM_ID.equals("0")) { pd.put("USER_ID", user.getUSER_ID()); PageData tenant = tenantService.findTenantRights(pd); // TODO String tenantRights = tenant != null ? tenant.getString("RIGHTS"): ""; menuList = CommonUtil.readMenu(menuList, tenantRights, null); //根据角色权限处理菜单权限状态(递归处理) } menuList = CommonUtil.readMenu(menuList, roleRights, null); //根据角色权限处理菜单权限状态(递归处理) JSONArray arr = JSONArray.fromObject(menuList); String json = arr.toString(); json = json.replaceAll("MENU_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("MENU_NAME", "name").replaceAll("subMenu", "nodes").replaceAll("hasMenu", "checked"); model.addAttribute("zTreeNodes", json); mv.addObject("ROLE_ID",ROLE_ID); mv.addObject("SYSTEM_ID",SYSTEM_ID); mv.setViewName("system/role/menuqx"); } catch(Exception e){ logger.error(e.toString(), e); } return mv; } /**保存角色菜单权限 * @param ROLE_ID 角色ID * @param menuIds 菜单ID集合 * @param out * @throws Exception */ @RequestMapping(value="/saveMenuqx") public void saveMenuqx(@RequestParam String ROLE_ID,@RequestParam String SYSTEM_ID,@RequestParam String menuIds,PrintWriter out)throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"修改菜单权限"); FHLOG.save(Jurisdiction.getUsername(), "修改角色菜单权限,角色ID为:"+ROLE_ID); PageData pd = new PageData(); pd.put("ROLE_ID", ROLE_ID); pd.put("SYSTEM_ID", SYSTEM_ID); try{ if(null != menuIds && !"".equals(menuIds.trim())){ BigInteger rights = RightsHelper.sumRights(Tools.str2StrArray(menuIds));//用菜单ID做权处理 Role role = roleService.getRoleById(pd); //通过id获取角色对象 role.setRIGHTS(rights.toString()); roleService.updateRoleRights(role); //更新当前角色菜单权限 pd.put("rights",rights.toString()); }else{ Role role = new Role(); role.setRIGHTS(""); role.setROLE_ID(ROLE_ID); roleService.updateRoleRights(role); //更新当前角色菜单权限(没有任何勾选) pd.put("rights",""); } pd.put("ROLE_ID", ROLE_ID); if(!"1".equals(ROLE_ID)){ //当修改admin权限时,不修改其它角色权限 roleService.setAllRights(pd); //更新此角色所有子角色的菜单权限 } out.write("success"); out.close(); } catch(Exception e){ logger.error(e.toString(), e); } } /**请求角色按钮授权页面(增删改查) * @param ROLE_ID: 角色ID * @param msg: 区分增删改查 * @param model * @return * @throws Exception */ @RequestMapping(value="/b4Button") public ModelAndView b4Button(@RequestParam String ROLE_ID,@RequestParam String msg,@RequestParam String SYSTEM_ID,Model model)throws Exception{ ModelAndView mv = this.getModelAndView(); try{ PageData pd = new PageData(); pd.put("parentId", "0"); pd.put("ROLE_ID", ROLE_ID); pd.put("SYSTEM_ID", SYSTEM_ID); List<Menu> menuList = menuService.listAllMenuQx(pd); //获取所有菜单 Role role = roleService.getRoleById(pd); //根据角色ID获取角色对象 String roleRights = ""; if("add_qx".equals(msg)){ roleRights = role.getADD_QX(); //新增权限 }else if("del_qx".equals(msg)){ roleRights = role.getDEL_QX(); //删除权限 }else if("edit_qx".equals(msg)){ roleRights = role.getEDIT_QX(); //修改权限 }else if("cha_qx".equals(msg)){ roleRights = role.getCHA_QX(); //查看权限 } menuList = CommonUtil.readMenu(menuList, roleRights, null); //根据角色权限处理菜单权限状态(递归处理) JSONArray arr = JSONArray.fromObject(menuList); String json = arr.toString(); json = json.replaceAll("MENU_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("MENU_NAME", "name").replaceAll("subMenu", "nodes").replaceAll("hasMenu", "checked"); model.addAttribute("zTreeNodes", json); mv.addObject("ROLE_ID",ROLE_ID); mv.addObject("SYSTEM_ID",SYSTEM_ID); mv.addObject("msg", msg); } catch(Exception e){ logger.error(e.toString(), e); } mv.setViewName("system/role/b4Button"); return mv; } /** * 保存角色按钮权限 */ /** * @param ROLE_ID * @param menuIds * @param msg * @param out * @throws Exception */ @RequestMapping(value="/saveB4Button") public void saveB4Button(@RequestParam String ROLE_ID,@RequestParam String SYSTEM_ID,@RequestParam String menuIds,@RequestParam String msg,PrintWriter out)throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"修改"+msg+"权限"); FHLOG.save(Jurisdiction.getUsername(), "修改"+msg+"权限,角色ID为:"+ROLE_ID); PageData pd = new PageData(); pd = this.getPageData(); try{ if(null != menuIds && !"".equals(menuIds.trim())){ BigInteger rights = RightsHelper.sumRights(Tools.str2StrArray(menuIds)); pd.put("value",rights.toString()); }else{ pd.put("value",""); } pd.put("ROLE_ID", ROLE_ID); pd.put("SYSTEM_ID", SYSTEM_ID); roleService.saveB4Button(msg,pd); out.write("success"); out.close(); } catch(Exception e){ logger.error(e.toString(), e); } } } sourcecode/MVNFHM/src/main/java/com/fh/controller/system/secCode/SecCodeController.java
New file @@ -0,0 +1,97 @@ package com.fh.controller.system.secCode; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.font.FontRenderContext; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Random; import javax.annotation.Resource; import javax.imageio.ImageIO; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.shiro.SecurityUtils; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.fh.dao.redis.RedisDao; import com.fh.util.Const; /** * 类名称:登录验证码 * 类描述: * 作者单位: FHqq313596790 * 联系方式: * @version */ @Controller @RequestMapping("/code") public class SecCodeController { @Resource(name = "redisDaoImpl") private RedisDao redisDaoImpl; @RequestMapping public void generate(HttpServletRequest request,HttpServletResponse response){ String securityCode = request.getParameter("UUID") + request.getParameter("t"); ByteArrayOutputStream output = new ByteArrayOutputStream(); String code = drawImg(output); Subject currentUser = SecurityUtils.getSubject(); Session session = currentUser.getSession(); session.setAttribute(Const.SESSION_SECURITY_CODE, code); redisDaoImpl.delete(securityCode); redisDaoImpl.addString(securityCode, code, 300); try { ServletOutputStream out = response.getOutputStream(); output.writeTo(out); out.close(); } catch (IOException e) { //e.printStackTrace(); } } private String drawImg(ByteArrayOutputStream output){ String code = ""; for(int i=0; i<4; i++){ code += randomChar(); } int width = 70; int height = 25; BufferedImage bi = new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR); Font font = new Font("Times New Roman",Font.PLAIN,20); Graphics2D g = bi.createGraphics(); g.setFont(font); Color color = new Color(66,2,82); g.setColor(color); g.setBackground(new Color(226,226,240)); g.clearRect(0, 0, width, height); FontRenderContext context = g.getFontRenderContext(); Rectangle2D bounds = font.getStringBounds(code, context); double x = (width - bounds.getWidth()) / 2; double y = (height - bounds.getHeight()) / 2; double ascent = bounds.getY(); double baseY = y - ascent; g.drawString(code, (int)x, (int)baseY); g.dispose(); try { ImageIO.write(bi, "jpg", output); } catch (IOException e) { //e.printStackTrace(); } return code; } private char randomChar(){ Random r = new Random(); String s = "ABCDEFGHJKLMNPRSTUVWXYZ0123456789"; return s.charAt(r.nextInt(s.length())); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/system/system/SystemController.java
New file @@ -0,0 +1,221 @@ package com.fh.controller.system.system; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.util.AppUtil; import com.fh.util.ObjectExcelView; import com.fh.util.PageData; import com.fh.util.Jurisdiction; import com.fh.util.Tools; import com.fh.service.system.role.RoleManager; import com.fh.service.system.system.SystemManager; /** * 说明:system * 创建人:FH Q313596790 * 创建时间:2017-05-31 */ @Controller @RequestMapping(value="/system") public class SystemController extends BaseController { String menuUrl = "system/list.do"; //菜单地址(权限用) @Resource(name="systemService") private SystemManager systemService; @Resource(name="roleService") private RoleManager roleService; /**保存 * @param * @throws Exception */ @RequestMapping(value="/save") public ModelAndView save() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"新增System"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("SYSTEM_ID", this.get32UUID()); //主键 // 超级管理员添加所有系统 pd.put("USER_ID", "1"); pd.put("ROLE_ID", "1"); systemService.save(pd); pd.put("ROLE_ID", "1"); pd.put("ROLE_NAME", "系统管理组"); pd.put("PARENT_ID", "0"); roleService.add(pd); pd.put("ROLE_ID", "2"); pd.put("ROLE_NAME", "会员组"); pd.put("PARENT_ID", "0"); roleService.add(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**删除 * @param out * @throws Exception */ @RequestMapping(value="/delete") public void delete(PrintWriter out) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"删除System"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限 PageData pd = new PageData(); pd = this.getPageData(); systemService.delete(pd); out.write("success"); out.close(); } /**修改 * @param * @throws Exception */ @RequestMapping(value="/edit") public ModelAndView edit() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"修改System"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); systemService.edit(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**列表 * @param page * @throws Exception */ @RequestMapping(value="/list") public ModelAndView list(Page page) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"列表System"); //if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码) ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String keywords = pd.getString("keywords"); //关键词检索条件 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } page.setPd(pd); List<PageData> varList = systemService.list(page); //列出System列表 mv.setViewName("system/system/system_list"); mv.addObject("varList", varList); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**去新增页面 * @param * @throws Exception */ @RequestMapping(value="/goAdd") public ModelAndView goAdd()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.setViewName("system/system/system_edit"); mv.addObject("msg", "save"); mv.addObject("pd", pd); return mv; } /**去修改页面 * @param * @throws Exception */ @RequestMapping(value="/goEdit") public ModelAndView goEdit()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd = systemService.findById(pd); //根据ID读取 mv.setViewName("system/system/system_edit"); mv.addObject("msg", "edit"); mv.addObject("pd", pd); return mv; } /**批量删除 * @param * @throws Exception */ @RequestMapping(value="/deleteAll") @ResponseBody public Object deleteAll() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"批量删除System"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限 PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); String DATA_IDS = pd.getString("DATA_IDS"); if(null != DATA_IDS && !"".equals(DATA_IDS)){ String ArrayDATA_IDS[] = DATA_IDS.split(","); systemService.deleteAll(ArrayDATA_IDS); pd.put("msg", "ok"); }else{ pd.put("msg", "no"); } pdList.add(pd); map.put("list", pdList); return AppUtil.returnObject(pd, map); } /**导出到excel * @param * @throws Exception */ @RequestMapping(value="/excel") public ModelAndView exportExcel() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"导出System到excel"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} ModelAndView mv = new ModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Map<String,Object> dataMap = new HashMap<String,Object>(); List<String> titles = new ArrayList<String>(); titles.add("系统名称"); //1 titles.add("域名"); //2 dataMap.put("titles", titles); List<PageData> varOList = systemService.listAll(pd); List<PageData> varList = new ArrayList<PageData>(); for(int i=0;i<varOList.size();i++){ PageData vpd = new PageData(); vpd.put("var1", varOList.get(i).getString("SYSTEM_NAME")); //1 vpd.put("var2", varOList.get(i).getString("DOMAIN")); //2 varList.add(vpd); } dataMap.put("varList", varList); ObjectExcelView erv = new ObjectExcelView(); mv = new ModelAndView(erv,dataMap); return mv; } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/system/tenant/TenantController.java
New file @@ -0,0 +1,411 @@ package com.fh.controller.system.tenant; import java.io.PrintWriter; import java.math.BigInteger; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.apache.shiro.crypto.hash.SimpleHash; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.dao.redis.RedisDao; import com.fh.entity.Page; import com.fh.entity.system.Menu; import com.fh.service.system.menu.MenuManager; import com.fh.service.system.role.RoleManager; import com.fh.service.system.system.SystemManager; import com.fh.service.system.tenant.TenantManager; import com.fh.service.system.user.UserManager; import com.fh.util.AppUtil; import com.fh.util.CommonUtil; import com.fh.util.Const; import com.fh.util.Jurisdiction; import com.fh.util.ObjectExcelView; import com.fh.util.PageData; import com.fh.util.RightsHelper; import com.fh.util.Tools; import net.sf.json.JSONArray; /** * 说明:租户维护 * 创建人:FH Q313596790 * 创建时间:2017-06-22 */ @Controller @RequestMapping(value="/tenant") public class TenantController extends BaseController { String menuUrl = "tenant/list.do"; //菜单地址(权限用) @Resource(name="tenantService") private TenantManager tenantService; @Resource(name="userService") private UserManager userService; @Resource(name="systemService") private SystemManager systemService; @Resource(name="menuService") private MenuManager menuService; @Resource(name="roleService") private RoleManager roleService; @Resource(name = "redisDaoImpl") private RedisDao redisDaoImpl; /**保存 * @param * @throws Exception */ @RequestMapping(value="/save") public ModelAndView save() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"新增Tenant"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("USER_ID", this.get32UUID()); //ID 主键 pd.put("USERNAME", pd.get("ADMIN_ID")); pd.put("NAME", pd.get("USERNAME")); if(null == userService.findByUsername(pd)){ //判断用户名是否存在 pd.put("ADMIN_ID", pd.get("USER_ID")); pd.put("PASSWORD", new SimpleHash("SHA-1", pd.getString("USERNAME"), pd.getString("PASSWORD")).toString()); int i = tenantService.getCount() + 1; pd.put("TENANT_ID", i); //主键 tenantService.save(pd); // 租户管理员信息保存 pd.put("TYPE", Const.UserType.TENANT.getValue()); userService.saveU(pd); // 保存用户对应系统及角色 PageData userSystemPd = new PageData(); userSystemPd.put("USER_ID", pd.getString("USER_ID")); userSystemPd.put("SYSTEM_ID", pd.getString("SYSTEM_ID")); userSystemPd.put("DEPARTMENT_ID", null); userSystemPd.put("TENANT_ID", pd.get("TENANT_ID")); userSystemPd.put("DATA_JURISDICTION", null); String[] systemIds = ("0," + pd.getString("SYSTEM_IDS")).split(","); int index = 0; for(String systemId : systemIds) { // 添加租户管理员 if (index == 0) { PageData role = new PageData(); role.put("TYPE", Const.UserType.TENANT.getValue()); List<PageData> manager = roleService.getTenantManager(role); userSystemPd.put("ROLE_ID", manager != null && manager.size() > 0 ? manager.get(0).getString("ROLE_ID") : ""); } userSystemPd.put("SYSTEM_ID", systemId); userService.saveUserSystem(userSystemPd); index++; } // 租户管理员权限保存 } else { mv.setViewName("system/tenant/tenant_edit"); mv.addObject("msg", "save"); pd.put("msg", "管理员已经存在!"); mv.addObject("pd", pd); return mv; } mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**删除 * @param out * @throws Exception */ @RequestMapping(value="/delete") public void delete(PrintWriter out) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"删除Tenant"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限 PageData pd = new PageData(); pd = this.getPageData(); tenantService.delete(pd); out.write("success"); out.close(); } /**修改 * @param * @throws Exception */ @RequestMapping(value="/edit") public ModelAndView edit() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"修改Tenant"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); tenantService.edit(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**列表 * @param page * @throws Exception */ @RequestMapping(value="/list") public ModelAndView list(Page page) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"列表Tenant"); //if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码) ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String keywords = pd.getString("keywords"); //关键词检索条件 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } page.setPd(pd); List<PageData> varList = tenantService.list(page); //列出Tenant列表 mv.setViewName("system/tenant/tenant_list"); mv.addObject("varList", varList); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**去新增页面 * @param * @throws Exception */ @RequestMapping(value="/goAdd") public ModelAndView goAdd()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("type", Const.UserType.TENANT.getValue()); List<PageData> systemList = systemService.listAll(pd); mv.addObject("systemList", systemList); mv.setViewName("system/tenant/tenant_edit"); mv.addObject("msg", "save"); mv.addObject("pd", pd); return mv; } /**去修改页面 * @param * @throws Exception */ @RequestMapping(value="/goEdit") public ModelAndView goEdit()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd = tenantService.findById(pd); //根据ID读取 List<PageData> list = userService.getUserListByTenantId(pd); mv.setViewName("system/tenant/tenant_edit"); mv.addObject("msg", "edit"); mv.addObject("pd", pd); mv.addObject("userList", list); return mv; } /**批量删除 * @param * @throws Exception */ @RequestMapping(value="/deleteAll") @ResponseBody public Object deleteAll() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"批量删除Tenant"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限 PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); String DATA_IDS = pd.getString("DATA_IDS"); if(null != DATA_IDS && !"".equals(DATA_IDS)){ String ArrayDATA_IDS[] = DATA_IDS.split(","); tenantService.deleteAll(ArrayDATA_IDS); pd.put("msg", "ok"); }else{ pd.put("msg", "no"); } pdList.add(pd); map.put("list", pdList); return AppUtil.returnObject(pd, map); } /**导出到excel * @param * @throws Exception */ @RequestMapping(value="/excel") public ModelAndView exportExcel() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"导出Tenant到excel"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} ModelAndView mv = new ModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Map<String,Object> dataMap = new HashMap<String,Object>(); List<String> titles = new ArrayList<String>(); titles.add("组织名称"); //1 titles.add("组织简称"); //2 titles.add("营业执照号/ 信用代码证号"); //3 titles.add("管理员ID"); //4 titles.add("状态"); //5 dataMap.put("titles", titles); List<PageData> varOList = tenantService.listAll(pd); List<PageData> varList = new ArrayList<PageData>(); for(int i=0;i<varOList.size();i++){ PageData vpd = new PageData(); vpd.put("var1", varOList.get(i).getString("TENANT_NAME")); //1 vpd.put("var2", varOList.get(i).getString("TENANT_SHORT_NAME")); //2 vpd.put("var3", varOList.get(i).getString("BUSINESS_LICENSE_NO")); //3 vpd.put("var4", varOList.get(i).getString("ADMIN_ID")); //4 vpd.put("var5", varOList.get(i).get("STATUS").toString()); //5 varList.add(vpd); } dataMap.put("varList", varList); ObjectExcelView erv = new ObjectExcelView(); mv = new ModelAndView(erv,dataMap); return mv; } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } /**设置租户下的菜单 * @param * @throws Exception */ @RequestMapping(value="/setMenu") public ModelAndView setMenu(Model model,String TENANT_ID, String USER_ID)throws Exception{ ModelAndView mv = this.getModelAndView(); try{ PageData pd = new PageData(); pd.put("TENANT_ID", TENANT_ID); pd.put("USER_ID", USER_ID); PageData tenant = tenantService.findById(pd); String roleRights = tenant.getString("RIGHTS"); // 做出所有业务系统下的菜单 pd.put("type", Const.UserType.TENANT.getValue()); List<PageData> systemList = systemService.listAll(pd); List<Menu> menuList = new ArrayList<>(); if (null!= systemList && systemList.size() > 0) { for (PageData sys: systemList) { String systemId = sys.getString("SYSTEM_ID"); String systemName = sys.getString("SYSTEM_NAME"); Menu menu = new Menu(); menu.setMENU_ID(systemId); menu.setMENU_NAME(systemName); // 当前业务系统下的菜单 PageData menuPd = new PageData(); menuPd.put("parentId", "0"); menuPd.put("SYSTEM_ID", systemId); menu.setSubMenu(menuService.listAllMenuQx(menuPd)); menuList.add(menu); } } List<PageData> users = userService.userSystemlist(pd); List<String> systemIds = new ArrayList<String>(); users.stream().forEach(usr -> systemIds.add(usr.getString("SYSTEM_ID"))); //取出本角色菜单权限 menuList = CommonUtil.readMenu(menuList, roleRights, systemIds); //根据角色权限处理菜单权限状态(递归处理) JSONArray arr = JSONArray.fromObject(menuList); String json = arr.toString(); json = json.replaceAll("MENU_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("MENU_NAME", "name").replaceAll("subMenu", "nodes").replaceAll("hasMenu", "checked"); model.addAttribute("zTreeNodes", json); mv.setViewName("system/tenant/tenant_menu_edit"); mv.addObject("pd", pd); } catch(Exception e){ logger.error(e.toString(), e); } return mv; } /**保存租户下的菜单权限 * @param ROLE_ID 角色ID * @param menuIds 菜单ID集合 * @param out * @throws Exception */ @RequestMapping(value="/saveMenuqx") public void saveMenuqx(@RequestParam String USER_ID,@RequestParam String TENANT_ID,@RequestParam String menuIds,PrintWriter out)throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"修改菜单权限"); PageData pd = new PageData(); // pd.put("USER_ID", USER_ID); pd.put("TENANT_ID", TENANT_ID); try{ if(null != menuIds && !"".equals(menuIds.trim())){ BigInteger rights = RightsHelper.sumRights(Tools.str2StrArray(menuIds));//用菜单ID做权处理 pd.put("RIGHTS", rights.toString()); // 更新用户 pd.put("type", Const.UserType.TENANT.getValue()); List<PageData> systemList = systemService.listAll(pd); if (null!= systemList && systemList.size() > 0) { for (PageData sys: systemList) { String systemId = sys.getString("SYSTEM_ID"); PageData user = new PageData(); user.put("USER_ID", USER_ID); user.put("SYSTEM_ID", systemId); user = userService.getUserSysInfo(user); if (menuIds.contains(systemId)) { if (user == null) { // 保存用户对应系统及角色 PageData userSystemPd = new PageData(); userSystemPd.put("USER_ID", USER_ID); userSystemPd.put("DEPARTMENT_ID", null); userSystemPd.put("TENANT_ID", TENANT_ID); userSystemPd.put("DATA_JURISDICTION", null); userSystemPd.put("SYSTEM_ID", systemId); userService.saveUserSystem(userSystemPd); } } else { if (user != null) { // 保存用户对应系统及角色 PageData userSystemPd = new PageData(); userSystemPd.put("USER_ID", USER_ID); userSystemPd.put("SYSTEM_ID", systemId); userService.deleteUserSystem(userSystemPd); } } } } } else { pd.put("RIGHTS",""); } tenantService.updateRights(pd); out.write("success"); out.close(); } catch(Exception e){ logger.error(e.toString(), e); } } } sourcecode/MVNFHM/src/main/java/com/fh/controller/system/test/TestController.java
New file @@ -0,0 +1,70 @@ package com.fh.controller.system.test; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.util.AppUtil; import com.fh.util.ObjectExcelView; import com.fh.util.PageData; import com.fh.util.Jurisdiction; import com.fh.util.Tools; /** * 说明:asdf * 创建人:FH Q313596790 * 创建时间:2017-06-22 */ @Controller @RequestMapping(value="/test") public class TestController extends BaseController { String menuUrl = "test/list.do"; //菜单地址(权限用) //@Resource(name="testService") //private TestManager testService; /**列表 * @param page * @throws Exception */ @RequestMapping(value="/list") public ModelAndView list(Page page) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"列表Test"); //if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码) ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String keywords = pd.getString("keywords"); //关键词检索条件 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } page.setPd(pd); //List<PageData> varList = testService.list(page); //列出Test列表 mv.setViewName("system/test/test_list"); mv.addObject("varList", null); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } } sourcecode/MVNFHM/src/main/java/com/fh/controller/system/tools/ToolController.java
New file @@ -0,0 +1,311 @@ package com.fh.controller.system.tools; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.util.AppUtil; import com.fh.util.Const; import com.fh.util.DelAllFile; import com.fh.util.FileDownload; import com.fh.util.FileZip; import com.fh.util.Freemarker; import com.fh.util.MapDistance; import com.fh.util.PageData; import com.fh.util.PathUtil; import com.fh.util.TwoDimensionCode; /** * 类名称:ToolController 系统工具 * 创建人:FH Q313596790 * 修改时间:2015年11月23日 * @version */ @Controller @RequestMapping(value="/tool") public class ToolController extends BaseController { /**去接口测试页面 * @return * @throws Exception */ @RequestMapping(value="/interfaceTest") public ModelAndView editEmail() throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.setViewName("system/tools/interfaceTest"); mv.addObject("pd", pd); return mv; } /** * 接口内部请求 * @param * @throws UnsupportedEncodingException * @throws Exception */ @RequestMapping(value="/severTest") @ResponseBody public Object severTest() throws UnsupportedEncodingException{ Map<String,String> map = new HashMap<String,String>(); PageData pd = new PageData(); pd = this.getPageData(); String errInfo = "success",str = "",rTime=""; try{ long startTime = System.currentTimeMillis(); //请求起始时间_毫秒 URL url = new URL(pd.getString("serverUrl")); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod(pd.getString("requestMethod")); //请求类型 POST or GET BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "utf-8")); long endTime = System.currentTimeMillis(); //请求结束时间_毫秒 String temp = ""; while((temp = in.readLine()) != null){ str = str + temp; } rTime = String.valueOf(endTime - startTime); } catch(Exception e){ errInfo = "error"; } map.put("errInfo", errInfo);//状态信息 map.put("result", str); //返回结果 map.put("rTime", rTime); //服务器请求时间 毫秒 return AppUtil.returnObject(new PageData(), map); } /**发送邮件页面 * @return * @throws Exception */ @RequestMapping(value="/goSendEmail") public ModelAndView goSendEmail() throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.setViewName("system/tools/email"); mv.addObject("pd", pd); return mv; } /**表单构建页面 * @return * @throws Exception */ @RequestMapping(value="/goFormbuilder") public ModelAndView goFormbuilder() throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.setViewName("system/tools/form_builder"); mv.addObject("pd", pd); return mv; } /**生成文件并下载(生成的表单构建页面代码放到jsp页面) * @return * @throws Exception */ @RequestMapping(value="/downloadFormCode") public void downloadFormCode(HttpServletResponse response) throws Exception{ PageData pd = new PageData(); pd = this.getPageData(); Map<String,Object> root = new HashMap<String,Object>(); //创建数据模型 root.put("htmlCode", pd.getString("htmlCode")); DelAllFile.delFolder(PathUtil.getClasspath()+"admin/ftl"); //生成代码前,先清空之前生成的代码 String filePath = "admin/ftl/code/"; //存放路径 String ftlPath = "createCode"; //ftl路径 /*生成controller*/ Freemarker.printFile("newJsp.ftl", root, "newJsp.jsp", filePath, ftlPath); FileDownload.fileDownload(response, PathUtil.getClasspath()+"admin/ftl/code/newJsp.jsp", "newJsp.jsp"); } /**二维码页面 * @return * @throws Exception */ @RequestMapping(value="/goTwoDimensionCode") public ModelAndView goTwoDimensionCode() throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.setViewName("system/tools/twoDimensionCode"); mv.addObject("pd", pd); return mv; } /** * 生成二维码 * @param args * @throws Exception */ @RequestMapping(value="/createTwoDimensionCode") @ResponseBody public Object createTwoDimensionCode(){ Map<String,String> map = new HashMap<String,String>(); PageData pd = new PageData(); pd = this.getPageData(); String errInfo = "success", encoderImgId = this.get32UUID()+".png"; //encoderImgId此处二维码的图片名 String encoderContent = pd.getString("encoderContent"); //内容 if(null == encoderContent){ errInfo = "error"; }else{ try { String filePath = PathUtil.getClasspath() + Const.FILEPATHTWODIMENSIONCODE + encoderImgId; //存放路径 TwoDimensionCode.encoderQRCode(encoderContent, filePath, "png"); //执行生成二维码 } catch (Exception e) { errInfo = "error"; } } map.put("result", errInfo); //返回结果 map.put("encoderImgId", encoderImgId); //二维码图片名 return AppUtil.returnObject(new PageData(), map); } /** * 解析二维码 * @param args * @throws Exception */ @RequestMapping(value="/readTwoDimensionCode") @ResponseBody public Object readTwoDimensionCode(){ Map<String,String> map = new HashMap<String,String>(); PageData pd = new PageData(); pd = this.getPageData(); String errInfo = "success",readContent=""; String imgId = pd.getString("imgId");//内容 if(null == imgId){ errInfo = "error"; }else{ try { String filePath = PathUtil.getClasspath() + Const.FILEPATHTWODIMENSIONCODE + imgId; //存放路径 readContent = TwoDimensionCode.decoderQRCode(filePath);//执行读取二维码 } catch (Exception e) { errInfo = "error"; } } map.put("result", errInfo); //返回结果 map.put("readContent", readContent); //读取的内容 return AppUtil.returnObject(new PageData(), map); } /**地图页面 * @return * @throws Exception */ @RequestMapping(value="/map") public ModelAndView map() throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.setViewName("system/tools/map"); mv.addObject("pd", pd); return mv; } /**获取地图坐标页面 * @return * @throws Exception */ @RequestMapping(value="/mapXY") public ModelAndView mapXY() throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.setViewName("system/tools/mapXY"); mv.addObject("pd", pd); return mv; } /** * 根据经纬度计算距离 * @param args * @throws Exception */ @RequestMapping(value="/getDistance") @ResponseBody public Object getDistance(){ Map<String,String> map = new HashMap<String,String>(); PageData pd = new PageData(); pd = this.getPageData(); String errInfo = "success",distance=""; try { distance = MapDistance.getDistance(pd.getString("ZUOBIAO_Y"),pd.getString("ZUOBIAO_X"),pd.getString("ZUOBIAO_Y2"),pd.getString("ZUOBIAO_X2")); } catch (Exception e) { errInfo = "error"; } map.put("result", errInfo); //返回结果 map.put("distance", distance); //距离 return AppUtil.returnObject(new PageData(), map); } /**图表报表demo页面 * @return * @throws Exception */ @RequestMapping(value="/fusionchartsdemo") public ModelAndView fusionchartsdemo() throws Exception{ ModelAndView mv = this.getModelAndView(); //FusionCharts 报表demo 用的时候,循环拼字符串即可 String strXML = "<graph caption='前12个月订单销量柱状图' xAxisName='月份' yAxisName='值' decimalPrecision='0' formatNumberScale='0'>" +"<set name='2013-05' value='4' color='AFD8F8'/>" +"<set name='2013-04' value='0' color='AFD8F8'/>" +"<set name='2013-03' value='0' color='AFD8F8'/>" +"<set name='2013-02' value='0' color='AFD8F8'/>" +"<set name='2013-01' value='0' color='AFD8F8'/>" +"<set name='2012-01' value='0' color='AFD8F8'/>" +"<set name='2012-11' value='0' color='AFD8F8'/>" +"<set name='2012-10' value='0' color='AFD8F8'/>" +"<set name='2012-09' value='0' color='AFD8F8'/>" +"<set name='2012-08' value='0' color='AFD8F8'/>" +"<set name='2012-07' value='0' color='AFD8F8'/>" +"<set name='2012-06' value='0' color='AFD8F8'/>" +"</graph>" ; mv.addObject("strXML", strXML); mv.setViewName("system/tools/fusionchartsdemo"); return mv; } /**打印测试页面 * @return * @throws Exception */ @RequestMapping(value="/printTest") public ModelAndView printTest() throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.setViewName("system/tools/printTest"); mv.addObject("pd", pd); return mv; } /**打印预览页面 * @return * @throws Exception */ @RequestMapping(value="/printPage") public ModelAndView printPage() throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.setViewName("system/tools/printPage"); mv.addObject("pd", pd); return mv; } } // 创建人:FH Q313596790 sourcecode/MVNFHM/src/main/java/com/fh/controller/system/user/UserController.java
New file @@ -0,0 +1,675 @@ package com.fh.controller.system.user; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import org.apache.shiro.crypto.hash.SimpleHash; import org.apache.shiro.session.Session; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.entity.system.Role; import com.fh.entity.system.User; import com.fh.service.fhoa.department.DepartmentManager; import com.fh.service.system.fhlog.FHlogManager; import com.fh.service.system.menu.MenuManager; import com.fh.service.system.role.RoleManager; import com.fh.service.system.system.SystemManager; import com.fh.service.system.user.UserManager; import com.fh.util.AppUtil; import com.fh.util.Const; import com.fh.util.FileDownload; import com.fh.util.FileUpload; import com.fh.util.GetPinyin; import com.fh.util.Jurisdiction; import com.fh.util.ObjectExcelRead; import com.fh.util.PageData; import com.fh.util.ObjectExcelView; import com.fh.util.PathUtil; import com.fh.util.Tools; import net.sf.json.JSONArray; /** * 类名称:UserController * 创建人:FH fh313596790qq(青苔) * 更新时间:2015年11月3日 * @version */ @Controller @RequestMapping(value="/user") public class UserController extends BaseController { String menuUrl = "user/listUsers.do"; //菜单地址(权限用) @Resource(name="userService") private UserManager userService; @Resource(name="roleService") private RoleManager roleService; @Resource(name="menuService") private MenuManager menuService; @Resource(name="systemService") private SystemManager systemService; @Resource(name="departmentService") private DepartmentManager departmentService; @Resource(name="fhlogService") private FHlogManager FHLOG; /**显示用户列表 * @param page * @return * @throws Exception */ @RequestMapping(value="/listUsers") public ModelAndView listUsers(Page page)throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String keywords = pd.getString("keywords"); //关键词检索条件 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } String lastLoginStart = pd.getString("lastLoginStart"); //开始时间 String lastLoginEnd = pd.getString("lastLoginEnd"); //结束时间 if(lastLoginStart != null && !"".equals(lastLoginStart)){ pd.put("lastLoginStart", lastLoginStart+" 00:00:00"); } if(lastLoginEnd != null && !"".equals(lastLoginEnd)){ pd.put("lastLoginEnd", lastLoginEnd+" 00:00:00"); } page.setPd(pd); List<PageData> userList = userService.listUsers(page); //列出用户列表 pd.put("ROLE_ID", "1"); List<Role> roleList = roleService.listAllRolesByPId(pd);//列出所有系统用户角色 mv.setViewName("system/user/user_list"); mv.addObject("userList", userList); mv.addObject("roleList", roleList); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**删除用户 * @param out * @throws Exception */ @RequestMapping(value="/deleteU") public void deleteU(PrintWriter out) throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"删除user"); PageData pd = new PageData(); pd = this.getPageData(); userService.deleteU(pd); FHLOG.save(Jurisdiction.getUsername(), "删除系统用户:"+pd); out.write("success"); out.close(); } /**去新增用户页面 * @return * @throws Exception */ @RequestMapping(value="/goAddU") public ModelAndView goAddU()throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("ROLE_ID", "1"); Session session = Jurisdiction.getSession(); User user = (User)session.getAttribute(Const.SESSION_USER); pd.put("userId", user.getUSER_ID()); List<PageData> systemList = systemService.getList(pd); for(PageData pdSystem : systemList) { pd.put("SYSTEM_ID", pdSystem.getString("SYSTEM_ID")); List<Role> roleList = roleService.listAllRolesByPId(pd); pdSystem.put("roleList", roleList); List<PageData> zdepartmentPdList = new ArrayList<PageData>(); pd.put("PARENT_ID", "0"); List<PageData> tenantList = userService.tenantList(pd); pdSystem.put("tenantList", tenantList); pd.put("TENANT_ID", tenantList.get(0).getString("TENANT_ID")); JSONArray arr = JSONArray.fromObject(departmentService.listAllDepartmentToSelect(pd,zdepartmentPdList)); pdSystem.put("zTreeNodes", (null == arr ?"":arr.toString())); } mv.addObject("systemList", systemList); List<Role> roleList = roleService.listAllRolesByPId(pd);//列出所有系统用户角色 mv.setViewName("system/user/user_edit"); mv.addObject("msg", "saveU"); mv.addObject("pd", pd); mv.addObject("roleList", roleList); return mv; } /**保存用户 * @return * @throws Exception */ @RequestMapping(value="/saveU") public ModelAndView saveU() throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"新增user"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("USER_ID", this.get32UUID()); //ID 主键 pd.put("LAST_LOGIN", ""); //最后登录时间 pd.put("IP", ""); //IP pd.put("STATUS", "0"); //状态 pd.put("SKIN", "default"); pd.put("RIGHTS", ""); pd.put("PASSWORD", new SimpleHash("SHA-1", pd.getString("USERNAME"), pd.getString("PASSWORD")).toString()); //密码加密 if(null == userService.findByUsername(pd)){ //判断用户名是否存在 userService.saveU(pd); //执行保存 // 保存用户所属系统 String[] systemIds = pd.getString("systemIds").split(","); for(String systemId : systemIds) { PageData userSystemPd = new PageData(); String roleId = pd.getString("ROLE_ID" + systemId); String dptId = pd.getString("DEPARTMENT_ID" + systemId); String tenantId = pd.getString("TENANT_ID" + systemId); String dataJurisdictions = pd.getString("dataJurisdictions" + systemId); userSystemPd.put("USER_ID", pd.getString("USER_ID")); userSystemPd.put("SYSTEM_ID", systemId); userSystemPd.put("ROLE_ID", roleId); userSystemPd.put("DEPARTMENT_ID", dptId); userSystemPd.put("TENANT_ID", tenantId); userSystemPd.put("DATA_JURISDICTION", dataJurisdictions); userService.saveUserSystem(userSystemPd); } FHLOG.save(Jurisdiction.getUsername(), "新增系统用户:"+pd.getString("USERNAME")); mv.addObject("msg","success"); }else{ mv.addObject("msg","failed"); } mv.setViewName("save_result"); return mv; } /**判断用户名是否存在 * @return */ @RequestMapping(value="/hasU") @ResponseBody public Object hasU(){ Map<String,String> map = new HashMap<String,String>(); String errInfo = "success"; PageData pd = new PageData(); try{ pd = this.getPageData(); if(userService.findByUsername(pd) != null){ errInfo = "error"; } } catch(Exception e){ logger.error(e.toString(), e); } map.put("result", errInfo); //返回结果 return AppUtil.returnObject(new PageData(), map); } /**判断邮箱是否存在 * @return */ @RequestMapping(value="/hasE") @ResponseBody public Object hasE(){ Map<String,String> map = new HashMap<String,String>(); String errInfo = "success"; PageData pd = new PageData(); try{ pd = this.getPageData(); if(userService.findByUE(pd) != null){ errInfo = "error"; } } catch(Exception e){ logger.error(e.toString(), e); } map.put("result", errInfo); //返回结果 return AppUtil.returnObject(new PageData(), map); } /**判断编码是否存在 * @return */ @RequestMapping(value="/hasN") @ResponseBody public Object hasN(){ Map<String,String> map = new HashMap<String,String>(); String errInfo = "success"; PageData pd = new PageData(); try{ pd = this.getPageData(); if(userService.findByUN(pd) != null){ errInfo = "error"; } } catch(Exception e){ logger.error(e.toString(), e); } map.put("result", errInfo); //返回结果 return AppUtil.returnObject(new PageData(), map); } /**去修改用户页面(系统用户列表修改) * @return * @throws Exception */ @RequestMapping(value="/getDepartmentList") @ResponseBody public String getDepartmentList() throws Exception{ PageData pd = new PageData(); pd = this.getPageData(); pd.put("PARENT_ID", "0"); List<PageData> zdepartmentPdList = new ArrayList<PageData>(); JSONArray arr = JSONArray.fromObject(departmentService.listAllDepartmentToSelect(pd,zdepartmentPdList)); return arr.toString(); } /**去修改用户页面(系统用户列表修改) * @return * @throws Exception */ @RequestMapping(value="/goEditU") public ModelAndView goEditU() throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); if("1".equals(pd.getString("USER_ID"))){return null;} //不能修改admin用户 pd.put("ROLE_ID", "1"); Session session = Jurisdiction.getSession(); User user = (User)session.getAttribute(Const.SESSION_USER); pd.put("userId", user.getUSER_ID()); List<PageData> systemList = systemService.getList(pd); List<PageData> userSystemList = userService.userSystemlist(pd); for(PageData pdSystem : systemList) { pd.put("SYSTEM_ID", pdSystem.getString("SYSTEM_ID")); List<Role> roleList = roleService.listAllRolesByPId(pd); pdSystem.put("roleList", roleList); List<PageData> zdepartmentPdList = new ArrayList<PageData>(); pd.put("PARENT_ID", "0"); for(PageData userSystem : userSystemList){ if(pdSystem.getString("SYSTEM_ID").equals(userSystem.getString("SYSTEM_ID"))) { pdSystem.put("sysChecked", true); pdSystem.put("selRoleId", userSystem.getString("ROLE_ID")); pdSystem.put("selDepartmentId", userSystem.getString("DEPARTMENT_ID")); pdSystem.put("selDepartmentName", userSystem.getString("NAME")); pdSystem.put("selTENANT_ID", userSystem.getString("TENANT_ID")); String dataJurisdictions = userSystem.getString("DATA_JURISDICTION"); int i = 1; if(dataJurisdictions != null) { for(char c:dataJurisdictions.toCharArray()){ if(c == '1'){ pdSystem.put("dataJurisdiction" + i, true); } i++; } } } } List<PageData> tenantList = userService.tenantList(pd); pdSystem.put("tenantList", tenantList); pd.put("TENANT_ID", pdSystem.getString("selTENANT_ID")); if(pdSystem.getString("selTENANT_ID") == null) { pd.put("TENANT_ID", tenantList.get(0).getString("TENANT_ID")); } JSONArray arrDpt = JSONArray.fromObject(departmentService.listAllDepartmentToSelect(pd,zdepartmentPdList)); pdSystem.put("zTreeNodes", (null == arrDpt ?"":arrDpt.toString())); } mv.addObject("systemList", systemList); List<Role> roleList = roleService.listAllRolesByPId(pd); //列出所有系统用户角色 mv.addObject("fx", "user"); pd = userService.findById(pd); //根据ID读取 mv.setViewName("system/user/user_edit"); mv.addObject("msg", "editU"); mv.addObject("pd", pd); mv.addObject("roleList", roleList); return mv; } /**去修改用户页面(个人修改) * @return * @throws Exception */ @RequestMapping(value="/goEditMyU") public ModelAndView goEditMyU() throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.addObject("fx", "head"); pd.put("ROLE_ID", "1"); List<Role> roleList = roleService.listAllRolesByPId(pd); //列出所有系统用户角色 pd.put("USERNAME", Jurisdiction.getUsername()); pd = userService.findByUsername(pd); //根据用户名读取 mv.setViewName("system/user/user_edit"); mv.addObject("msg", "editU"); mv.addObject("pd", pd); mv.addObject("roleList", roleList); return mv; } /**查看用户 * @return * @throws Exception */ @RequestMapping(value="/view") public ModelAndView view() throws Exception{ if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); if("admin".equals(pd.getString("USERNAME"))){return null;} //不能查看admin用户 pd.put("ROLE_ID", "1"); List<Role> roleList = roleService.listAllRolesByPId(pd); //列出所有系统用户角色 pd = userService.findByUsername(pd); //根据ID读取 mv.setViewName("system/user/user_view"); mv.addObject("msg", "editU"); mv.addObject("pd", pd); mv.addObject("roleList", roleList); return mv; } /**去修改用户页面(在线管理页面打开) * @return * @throws Exception */ @RequestMapping(value="/goEditUfromOnline") public ModelAndView goEditUfromOnline() throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); if("admin".equals(pd.getString("USERNAME"))){return null;} //不能查看admin用户 pd.put("ROLE_ID", "1"); List<Role> roleList = roleService.listAllRolesByPId(pd); //列出所有系统用户角色 pd = userService.findByUsername(pd); //根据ID读取 mv.setViewName("system/user/user_edit"); mv.addObject("msg", "editU"); mv.addObject("pd", pd); mv.addObject("roleList", roleList); return mv; } /** * 修改用户 */ @RequestMapping(value="/editU") public ModelAndView editU() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"修改ser"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); if(!Jurisdiction.getUsername().equals(pd.getString("USERNAME"))){ //如果当前登录用户修改用户资料提交的用户名非本人 if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限 判断当前操作者有无用户管理查看权限 if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限判断当前操作者有无用户管理修改权限 if("admin".equals(pd.getString("USERNAME")) && !"admin".equals(Jurisdiction.getUsername())){return null;} //非admin用户不能修改admin }else{ //如果当前登录用户修改用户资料提交的用户名是本人,则不能修改本人的角色ID pd.put("ROLE_ID", userService.findByUsername(pd).getString("ROLE_ID")); //对角色ID还原本人角色ID } if(pd.getString("PASSWORD") != null && !"".equals(pd.getString("PASSWORD"))){ pd.put("PASSWORD", new SimpleHash("SHA-1", pd.getString("USERNAME"), pd.getString("PASSWORD")).toString()); } userService.editU(pd); //执行修改 // 保存用户所属系统 userService.deleteUserSystem(pd); String[] systemIds = pd.getString("systemIds").split(","); for(String systemId : systemIds) { PageData userSystemPd = new PageData(); String roleId = pd.getString("ROLE_ID" + systemId); String dptId = pd.getString("DEPARTMENT_ID" + systemId); String tenantId = pd.getString("TENANT_ID" + systemId); String dataJurisdictions = pd.getString("dataJurisdictions" + systemId); userSystemPd.put("USER_ID", pd.getString("USER_ID")); userSystemPd.put("SYSTEM_ID", systemId); userSystemPd.put("ROLE_ID", roleId); userSystemPd.put("DEPARTMENT_ID", dptId); userSystemPd.put("TENANT_ID", tenantId); userSystemPd.put("DATA_JURISDICTION", dataJurisdictions); userService.saveUserSystem(userSystemPd); } FHLOG.save(Jurisdiction.getUsername(), "修改系统用户:"+pd.getString("USERNAME")); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /** * 批量删除 * @throws Exception */ @RequestMapping(value="/deleteAllU") @ResponseBody public Object deleteAllU() throws Exception { if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限 logBefore(logger, Jurisdiction.getUsername()+"批量删除user"); FHLOG.save(Jurisdiction.getUsername(), "批量删除user"); PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); String USER_IDS = pd.getString("USER_IDS"); if(null != USER_IDS && !"".equals(USER_IDS)){ String ArrayUSER_IDS[] = USER_IDS.split(","); userService.deleteAllU(ArrayUSER_IDS); pd.put("msg", "ok"); }else{ pd.put("msg", "no"); } pdList.add(pd); map.put("list", pdList); return AppUtil.returnObject(pd, map); } /**导出用户信息到EXCEL * @return * @throws Exception */ @RequestMapping(value="/excel") public ModelAndView exportExcel() throws Exception{ FHLOG.save(Jurisdiction.getUsername(), "导出用户信息到EXCEL"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); try{ if(Jurisdiction.buttonJurisdiction(menuUrl, "cha")){ String keywords = pd.getString("keywords"); //关键词检索条件 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } String lastLoginStart = pd.getString("lastLoginStart"); //开始时间 String lastLoginEnd = pd.getString("lastLoginEnd"); //结束时间 if(lastLoginStart != null && !"".equals(lastLoginStart)){ pd.put("lastLoginStart", lastLoginStart+" 00:00:00"); } if(lastLoginEnd != null && !"".equals(lastLoginEnd)){ pd.put("lastLoginEnd", lastLoginEnd+" 00:00:00"); } Map<String,Object> dataMap = new HashMap<String,Object>(); List<String> titles = new ArrayList<String>(); titles.add("用户名"); //1 titles.add("编号"); //2 titles.add("姓名"); //3 titles.add("职位"); //4 titles.add("手机"); //5 titles.add("邮箱"); //6 titles.add("最近登录"); //7 titles.add("上次登录IP"); //8 dataMap.put("titles", titles); List<PageData> userList = userService.listAllUser(pd); List<PageData> varList = new ArrayList<PageData>(); for(int i=0;i<userList.size();i++){ PageData vpd = new PageData(); vpd.put("var1", userList.get(i).getString("USERNAME")); //1 vpd.put("var2", userList.get(i).getString("NUMBER")); //2 vpd.put("var3", userList.get(i).getString("NAME")); //3 vpd.put("var4", userList.get(i).getString("ROLE_NAME")); //4 vpd.put("var5", userList.get(i).getString("PHONE")); //5 vpd.put("var6", userList.get(i).getString("EMAIL")); //6 vpd.put("var7", userList.get(i).getString("LAST_LOGIN")); //7 vpd.put("var8", userList.get(i).getString("IP")); //8 varList.add(vpd); } dataMap.put("varList", varList); ObjectExcelView erv = new ObjectExcelView(); //执行excel操作 mv = new ModelAndView(erv,dataMap); } } catch(Exception e){ logger.error(e.toString(), e); } return mv; } /**打开上传EXCEL页面 * @return * @throws Exception */ @RequestMapping(value="/goUploadExcel") public ModelAndView goUploadExcel()throws Exception{ ModelAndView mv = this.getModelAndView(); mv.setViewName("system/user/uploadexcel"); return mv; } /**下载模版 * @param response * @throws Exception */ @RequestMapping(value="/downExcel") public void downExcel(HttpServletResponse response)throws Exception{ FileDownload.fileDownload(response, PathUtil.getClasspath() + Const.FILEPATHFILE + "Users.xls", "Users.xls"); } /**从EXCEL导入到数据库 * @param file * @return * @throws Exception */ @RequestMapping(value="/readExcel") public ModelAndView readExcel( @RequestParam(value="excel",required=false) MultipartFile file ) throws Exception{ FHLOG.save(Jurisdiction.getUsername(), "从EXCEL导入到数据库"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} if (null != file && !file.isEmpty()) { String filePath = PathUtil.getClasspath() + Const.FILEPATHFILE; //文件上传路径 String fileName = FileUpload.fileUp(file, filePath, "userexcel"); //执行上传 List<PageData> listPd = (List)ObjectExcelRead.readExcel(filePath, fileName, 2, 0, 0); //执行读EXCEL操作,读出的数据导入List 2:从第3行开始;0:从第A列开始;0:第0个sheet /*存入数据库操作======================================*/ pd.put("RIGHTS", ""); //权限 pd.put("LAST_LOGIN", ""); //最后登录时间 pd.put("IP", ""); //IP pd.put("STATUS", "0"); //状态 pd.put("SKIN", "default"); //默认皮肤 pd.put("ROLE_ID", "1"); List<Role> roleList = roleService.listAllRolesByPId(pd);//列出所有系统用户角色 pd.put("ROLE_ID", roleList.get(0).getROLE_ID()); //设置角色ID为随便第一个 /** * var0 :编号 * var1 :姓名 * var2 :手机 * var3 :邮箱 * var4 :备注 */ for(int i=0;i<listPd.size();i++){ pd.put("USER_ID", this.get32UUID()); //ID pd.put("NAME", listPd.get(i).getString("var1")); //姓名 String USERNAME = GetPinyin.getPingYin(listPd.get(i).getString("var1")); //根据姓名汉字生成全拼 pd.put("USERNAME", USERNAME); if(userService.findByUsername(pd) != null){ //判断用户名是否重复 USERNAME = GetPinyin.getPingYin(listPd.get(i).getString("var1"))+Tools.getRandomNum(); pd.put("USERNAME", USERNAME); } pd.put("BZ", listPd.get(i).getString("var4")); //备注 if(Tools.checkEmail(listPd.get(i).getString("var3"))){ //邮箱格式不对就跳过 pd.put("EMAIL", listPd.get(i).getString("var3")); if(userService.findByUE(pd) != null){ //邮箱已存在就跳过 continue; } }else{ continue; } pd.put("NUMBER", listPd.get(i).getString("var0")); //编号已存在就跳过 pd.put("PHONE", listPd.get(i).getString("var2")); //手机号 pd.put("PASSWORD", new SimpleHash("SHA-1", USERNAME, "123").toString()); //默认密码123 if(userService.findByUN(pd) != null){ continue; } userService.saveU(pd); } /*存入数据库操作======================================*/ mv.addObject("msg","success"); } mv.setViewName("save_result"); return mv; } /**显示用户列表(弹窗选择用) * @param page * @return * @throws Exception */ @RequestMapping(value="/listUsersForWindow") public ModelAndView listUsersForWindow(Page page)throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String keywords = pd.getString("keywords"); //关键词检索条件 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } String lastLoginStart = pd.getString("lastLoginStart"); //开始时间 String lastLoginEnd = pd.getString("lastLoginEnd"); //结束时间 if(lastLoginStart != null && !"".equals(lastLoginStart)){ pd.put("lastLoginStart", lastLoginStart+" 00:00:00"); } if(lastLoginEnd != null && !"".equals(lastLoginEnd)){ pd.put("lastLoginEnd", lastLoginEnd+" 00:00:00"); } page.setPd(pd); List<PageData> userList = userService.listUsersBystaff(page); //列出用户列表(弹窗选择用) pd.put("ROLE_ID", "1"); List<Role> roleList = roleService.listAllRolesByPId(pd);//列出所有系统用户角色 mv.setViewName("system/user/window_user_list"); mv.addObject("userList", userList); mv.addObject("roleList", roleList); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/system/userphoto/UserPhotoController.java
New file @@ -0,0 +1,83 @@ package com.fh.controller.system.userphoto; import java.util.HashMap; import java.util.Map; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.fh.controller.base.BaseController; import com.fh.util.AppUtil; import com.fh.util.DelAllFile; import com.fh.util.PageData; import com.fh.util.Jurisdiction; import com.fh.util.PathUtil; import com.fh.util.Tools; import com.fh.service.system.userphoto.UserPhotoManager; /** * 说明:用户头像 * 创建人:FH Q313596790 * 创建时间:2016-06-05 */ @Controller @RequestMapping(value="/userphoto") public class UserPhotoController extends BaseController { @Resource(name="userphotoService") private UserPhotoManager userphotoService; /**保存 * @param * @throws Exception */ @RequestMapping(value="/save") @ResponseBody public Object save() throws Exception{ Map<String,Object> map = new HashMap<String,Object>(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); pd.put("USERNAME", Jurisdiction.getUsername()); //用户名 String type = pd.getString("type"); //类型,1:带原图的。2不带原图 String strphotos = pd.getString("strphotos"); //图片路径拼接 String[] arrayStr = strphotos.split(",fh,"); if("1".equals(type)){ String tu0 = arrayStr[0].split("angle=")[0]; tu0 = tu0.substring(0, tu0.length()-1); pd.put("PHOTO0", tu0); //原图 pd.put("PHOTO1", arrayStr[1]); //头像1 pd.put("PHOTO2", arrayStr[2]); //头像2 pd.put("PHOTO3", arrayStr[3]); //头像3 }else{ pd.put("PHOTO0", ""); //原图 pd.put("PHOTO1", arrayStr[0]); //头像1 pd.put("PHOTO2", arrayStr[1]); //头像2 pd.put("PHOTO3", arrayStr[2]); //头像3 } map.put("userPhoto",pd.getString("PHOTO2")); PageData ypd = userphotoService.findById(pd); if(null == ypd){ //没有数据就新增,否则就修改 pd.put("USERPHOTO_ID", this.get32UUID()); //主键 userphotoService.save(pd); }else{ userphotoService.edit(pd); String PHOTO0 = ypd.getString("PHOTO0"); String PHOTO1 = ypd.getString("PHOTO1"); String PHOTO2 = ypd.getString("PHOTO2"); String PHOTO3 = ypd.getString("PHOTO3"); if(Tools.notEmpty(PHOTO0)){ DelAllFile.delFolder(PathUtil.getClasspath()+ PHOTO0); //删除原图 } DelAllFile.delFolder(PathUtil.getClasspath()+ PHOTO1); //删除图1 DelAllFile.delFolder(PathUtil.getClasspath()+ PHOTO2); //删除图2 DelAllFile.delFolder(PathUtil.getClasspath()+ PHOTO3); //删除图3 } map.put("result", errInfo); //返回结果 return AppUtil.returnObject(new PageData(), map); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/weixin/WeixinController.java
New file @@ -0,0 +1,484 @@ package com.fh.controller.weixin; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ConnectException; import java.net.URL; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.annotation.Resource; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONObject; import org.marker.weixin.DefaultSession; import org.marker.weixin.HandleMessageAdapter; import org.marker.weixin.MySecurity; import org.marker.weixin.msg.Data4Item; import org.marker.weixin.msg.Msg4Event; import org.marker.weixin.msg.Msg4Image; import org.marker.weixin.msg.Msg4ImageText; import org.marker.weixin.msg.Msg4Link; import org.marker.weixin.msg.Msg4Location; import org.marker.weixin.msg.Msg4Text; import org.marker.weixin.msg.Msg4Video; import org.marker.weixin.msg.Msg4Voice; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.fh.controller.base.BaseController; import com.fh.service.weixin.command.CommandService; import com.fh.service.weixin.imgmsg.ImgmsgService; import com.fh.service.weixin.textmsg.TextmsgService; import com.fh.util.Const; import com.fh.util.PageData; import com.fh.util.Tools; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.X509TrustManager; /** * * 类名称:WeixinController.java * 类描述: 微信公共平台开发 * @author FH 313596790 * 作者单位: * 联系方式: * 创建时间:2014年7月10日 * @version 1.0 */ @Controller @RequestMapping(value="/weixin") public class WeixinController extends BaseController{ @Resource(name="textmsgService") private TextmsgService textmsgService; @Resource(name="commandService") private CommandService commandService; @Resource(name="imgmsgService") private ImgmsgService imgmsgService; /** * 接口验证,总入口 * @param out * @param request * @param response * @throws Exception */ @RequestMapping(value="/index") public void index( PrintWriter out, HttpServletRequest request, HttpServletResponse response ) throws Exception{ logBefore(logger, "微信接口"); PageData pd = new PageData(); try{ pd = this.getPageData(); String signature = pd.getString("signature"); //微信加密签名 String timestamp = pd.getString("timestamp"); //时间戳 String nonce = pd.getString("nonce"); //随机数 String echostr = pd.getString("echostr"); //字符串 if(null != signature && null != timestamp && null != nonce && null != echostr){/* 接口验证 */ logBefore(logger, "进入身份验证"); List<String> list = new ArrayList<String>(3) { private static final long serialVersionUID = 2621444383666420433L; public String toString() { // 重写toString方法,得到三个参数的拼接字符串 return this.get(0) + this.get(1) + this.get(2); } }; list.add(Tools.readTxtFile(Const.WEIXIN)); //读取Token(令牌) list.add(timestamp); list.add(nonce); Collections.sort(list); // 排序 String tmpStr = new MySecurity().encode(list.toString(), MySecurity.SHA_1); // SHA-1加密 if (signature.equals(tmpStr)) { out.write(echostr); // 请求验证成功,返回随机码 }else{ out.write(""); } out.flush(); out.close(); }else{/* 消息处理 */ logBefore(logger, "进入消息处理"); response.reset(); sendMsg(request,response); } } catch(Exception e){ logger.error(e.toString(), e); } } /** * 处理微信服务器发过来的各种消息,包括:文本、图片、地理位置、音乐等等 * @param request * @param response * @throws Exception */ public void sendMsg(HttpServletRequest request, HttpServletResponse response) throws Exception{ InputStream is = request.getInputStream(); OutputStream os = response.getOutputStream(); final DefaultSession session = DefaultSession.newInstance(); session.addOnHandleMessageListener(new HandleMessageAdapter(){ /** * 事件 */ @Override public void onEventMsg(Msg4Event msg) { /** msg.getEvent() * unsubscribe:取消关注 ; subscribe:关注 */ if("subscribe".equals(msg.getEvent())){ returnMSg(msg,null,"关注"); } } /** * 收到的文本消息 */ @Override public void onTextMsg(Msg4Text msg) { returnMSg(null,msg,msg.getContent().trim()); } @Override public void onImageMsg(Msg4Image msg) { // TODO Auto-generated method stub super.onImageMsg(msg); } @Override public void onLocationMsg(Msg4Location msg) { // TODO Auto-generated method stub super.onLocationMsg(msg); } @Override public void onLinkMsg(Msg4Link msg) { // TODO Auto-generated method stub super.onLinkMsg(msg); } @Override public void onVideoMsg(Msg4Video msg) { // TODO Auto-generated method stub super.onVideoMsg(msg); } @Override public void onVoiceMsg(Msg4Voice msg) { // TODO Auto-generated method stub super.onVoiceMsg(msg); } @Override public void onErrorMsg(int errorCode) { // TODO Auto-generated method stub super.onErrorMsg(errorCode); } /** * 返回消息 * @param emsg * @param tmsg * @param getmsg */ public void returnMSg(Msg4Event emsg, Msg4Text tmsg, String getmsg){ PageData msgpd; PageData pd = new PageData(); String toUserName,fromUserName,createTime; if(null == emsg){ toUserName = tmsg.getToUserName(); fromUserName = tmsg.getFromUserName(); createTime = tmsg.getCreateTime(); }else{ toUserName = emsg.getToUserName(); fromUserName = emsg.getFromUserName(); createTime = emsg.getCreateTime(); } pd.put("KEYWORD", getmsg); try { msgpd = textmsgService.findByKw(pd); if(null != msgpd){ Msg4Text rmsg = new Msg4Text(); rmsg.setFromUserName(toUserName); rmsg.setToUserName(fromUserName); //rmsg.setFuncFlag("0"); rmsg.setContent(msgpd.getString("CONTENT")); //回复文字消息 session.callback(rmsg); }else{ msgpd = imgmsgService.findByKw(pd); if(null != msgpd){ Msg4ImageText mit = new Msg4ImageText(); mit.setFromUserName(toUserName); mit.setToUserName(fromUserName); mit.setCreateTime(createTime); //回复图文消息 if(null != msgpd.getString("TITLE1") && null != msgpd.getString("IMGURL1")){ Data4Item d1 = new Data4Item(msgpd.getString("TITLE1"),msgpd.getString("DESCRIPTION1"),msgpd.getString("IMGURL1"),msgpd.getString("TOURL1")); mit.addItem(d1); if(null != msgpd.getString("TITLE2") && null != msgpd.getString("IMGURL2") && !"".equals(msgpd.getString("TITLE2").trim()) && !"".equals(msgpd.getString("IMGURL2").trim())){ Data4Item d2 = new Data4Item(msgpd.getString("TITLE2"),msgpd.getString("DESCRIPTION2"),msgpd.getString("IMGURL2"),msgpd.getString("TOURL2")); mit.addItem(d2); } if(null != msgpd.getString("TITLE3") && null != msgpd.getString("IMGURL3") && !"".equals(msgpd.getString("TITLE3").trim()) && !"".equals(msgpd.getString("IMGURL3").trim())){ Data4Item d3 = new Data4Item(msgpd.getString("TITLE3"),msgpd.getString("DESCRIPTION3"),msgpd.getString("IMGURL3"),msgpd.getString("TOURL3")); mit.addItem(d3); } if(null != msgpd.getString("TITLE4") && null != msgpd.getString("IMGURL4") && !"".equals(msgpd.getString("TITLE4").trim()) && !"".equals(msgpd.getString("IMGURL4").trim())){ Data4Item d4 = new Data4Item(msgpd.getString("TITLE4"),msgpd.getString("DESCRIPTION4"),msgpd.getString("IMGURL4"),msgpd.getString("TOURL4")); mit.addItem(d4); } if(null != msgpd.getString("TITLE5") && null != msgpd.getString("IMGURL5") && !"".equals(msgpd.getString("TITLE5").trim()) && !"".equals(msgpd.getString("IMGURL5").trim())){ Data4Item d5 = new Data4Item(msgpd.getString("TITLE5"),msgpd.getString("DESCRIPTION5"),msgpd.getString("IMGURL5"),msgpd.getString("TOURL5")); mit.addItem(d5); } if(null != msgpd.getString("TITLE6") && null != msgpd.getString("IMGURL6") && !"".equals(msgpd.getString("TITLE6").trim()) && !"".equals(msgpd.getString("IMGURL6").trim())){ Data4Item d6 = new Data4Item(msgpd.getString("TITLE6"),msgpd.getString("DESCRIPTION6"),msgpd.getString("IMGURL6"),msgpd.getString("TOURL6")); mit.addItem(d6); } if(null != msgpd.getString("TITLE7") && null != msgpd.getString("IMGURL7") && !"".equals(msgpd.getString("TITLE7").trim()) && !"".equals(msgpd.getString("IMGURL7").trim())){ Data4Item d7 = new Data4Item(msgpd.getString("TITLE7"),msgpd.getString("DESCRIPTION7"),msgpd.getString("IMGURL7"),msgpd.getString("TOURL7")); mit.addItem(d7); } if(null != msgpd.getString("TITLE8") && null != msgpd.getString("IMGURL8") && !"".equals(msgpd.getString("TITLE8").trim()) && !"".equals(msgpd.getString("IMGURL8").trim())){ Data4Item d8 = new Data4Item(msgpd.getString("TITLE8"),msgpd.getString("DESCRIPTION8"),msgpd.getString("IMGURL8"),msgpd.getString("TOURL8")); mit.addItem(d8); } } //mit.setFuncFlag("0"); session.callback(mit); }else{ msgpd = commandService.findByKw(pd); if(null != msgpd){ Runtime runtime = Runtime.getRuntime(); runtime.exec(msgpd.getString("COMMANDCODE")); }else{ Msg4Text rmsg = new Msg4Text(); rmsg.setFromUserName(toUserName); rmsg.setToUserName(fromUserName); rmsg.setContent("无匹配结果"); session.callback(rmsg); } } } } catch (Exception e1) { logBefore(logger, "匹配错误"); } } }); /*必须调用这两个方法 如果不调用close方法,将会出现响应数据串到其它Servlet中。*/ session.process(is, os); //处理微信消息 session.close(); //关闭Session } //================================================获取关注列表============================================================== public final static String gz_url="https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid="; //获取access_token @RequestMapping(value="/getGz") public void getGz(PrintWriter out) { logBefore(logger, "获取关注列表"); try{ String access_token = readTxtFile("e:/access_token.txt"); System.out.println(access_token+"============"); String requestUrl=gz_url.replace("ACCESS_TOKEN", access_token); System.out.println(requestUrl+"============"); JSONObject jsonObject = httpRequst(requestUrl, "GET", null); System.out.println(jsonObject); //System.out.println(jsonObject.getString("total")+"============"); /*PrintWriter pw; try { pw = new PrintWriter( new FileWriter( "e:/gz.txt" ) ); pw.print(jsonObject.getString("total")); pw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } out.write("success"); out.close();*/ } catch(Exception e){ logger.error(e.toString(), e); } } //读取文件 public String readTxtFile(String filePath) { try { String encoding = "utf-8"; File file = new File(filePath); if (file.isFile() && file.exists()) { // 判断文件是否存在 InputStreamReader read = new InputStreamReader( new FileInputStream(file), encoding);// 考虑到编码格式 BufferedReader bufferedReader = new BufferedReader(read); String lineTxt = null; while ((lineTxt = bufferedReader.readLine()) != null) { //System.out.println(lineTxt); return lineTxt; } read.close(); } else { System.out.println("找不到指定的文件"); } } catch (Exception e) { System.out.println("读取文件内容出错"); e.printStackTrace(); } return ""; } //================================================获取access_token============================================================== public final static String access_token_url="https://api.weixin.qq.com/cgi-bin/token?" + "grant_type=client_credential&appid=APPID&secret=APPSECRET"; //获取access_token @RequestMapping(value="/getAt") public void getAt(PrintWriter out) { logBefore(logger, "获取access_token"); try{ String appid = "wx9f43c8daa1c13934"; String appsecret = "2c7f6552a5a845b49d47f65dd90beb50"; String requestUrl=access_token_url.replace("APPID", appid).replace("APPSECRET", appsecret); JSONObject jsonObject=httpRequst(requestUrl, "GET", null); //System.out.println(jsonObject.getString("access_token")+"============"); PrintWriter pw; try { pw = new PrintWriter( new FileWriter( "e:/access_token.txt" ) ); pw.print(jsonObject.getString("access_token")); pw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } out.write("success"); out.close(); } catch(Exception e){ logger.error(e.toString(), e); } } public JSONObject httpRequst(String requestUrl,String requetMethod,String outputStr){ JSONObject jsonobject=null; StringBuffer buffer=new StringBuffer(); try { //创建SSLContext对象,并使用我们指定的新人管理器初始化 TrustManager[] tm={new MyX509TrustManager()}; SSLContext sslcontext=SSLContext.getInstance("SSL","SunJSSE"); sslcontext.init(null, tm, new java.security.SecureRandom()); //从上述SSLContext对象中得到SSLSocktFactory对象 SSLSocketFactory ssf=sslcontext.getSocketFactory(); URL url=new URL(requestUrl); HttpsURLConnection httpUrlConn=(HttpsURLConnection)url.openConnection(); httpUrlConn.setSSLSocketFactory(ssf); httpUrlConn.setDoOutput(true); httpUrlConn.setDoInput(true); httpUrlConn.setUseCaches(false); //设置请求方式(GET/POST) httpUrlConn.setRequestMethod(requetMethod); if("GET".equalsIgnoreCase(requetMethod)) httpUrlConn.connect(); //当有数据需要提交时 if(null!=outputStr) { OutputStream outputStream=httpUrlConn.getOutputStream(); //注意编码格式,防止中文乱码 outputStream.write(outputStr.getBytes("UTF-8")); outputStream.close(); } //将返回的输入流转换成字符串 InputStream inputStream=httpUrlConn.getInputStream(); InputStreamReader inputStreamReader=new InputStreamReader(inputStream,"utf-8"); BufferedReader bufferedReader=new BufferedReader(inputStreamReader); String str=null; while((str = bufferedReader.readLine()) !=null) { buffer.append(str); } bufferedReader.close(); inputStreamReader.close(); //释放资源 inputStream.close(); inputStream=null; httpUrlConn.disconnect(); jsonobject=JSONObject.fromObject(buffer.toString()); } catch (ConnectException ce) { // TODO: handle exception } catch (Exception e) { } return jsonobject; } //================================================获取access_token============================================================== } //================================================获取access_token============================================================== class MyX509TrustManager implements X509TrustManager { public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { // TODO Auto-generated method stub } public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { // TODO Auto-generated method stub } public X509Certificate[] getAcceptedIssuers() { // TODO Auto-generated method stub return null; } } //================================================获取access_token============================================================== sourcecode/MVNFHM/src/main/java/com/fh/controller/weixin/command/CommandController.java
New file @@ -0,0 +1,240 @@ package com.fh.controller.weixin.command; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.util.AppUtil; import com.fh.util.ObjectExcelView; import com.fh.util.PageData; import com.fh.util.Tools; import com.fh.util.Jurisdiction; import com.fh.service.weixin.command.CommandService; /** * 类名称:CommandController * 创建人:FH 313596790 * 创建时间:2015-05-09 */ @Controller @RequestMapping(value="/command") public class CommandController extends BaseController { String menuUrl = "command/list.do"; //菜单地址(权限用) @Resource(name="commandService") private CommandService commandService; /**新增 * @return * @throws Exception */ @RequestMapping(value="/save") public ModelAndView save() throws Exception{ logBefore(logger, "新增Command"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("COMMAND_ID", this.get32UUID()); //主键 pd.put("CREATETIME", Tools.date2Str(new Date()));//创建时间 commandService.save(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**删除 * @param out */ @RequestMapping(value="/delete") public void delete(PrintWriter out){ logBefore(logger, "删除Command"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限 PageData pd = new PageData(); try{ pd = this.getPageData(); commandService.delete(pd); out.write("success"); out.close(); } catch(Exception e){ logger.error(e.toString(), e); } } /**修改 * @return * @throws Exception */ @RequestMapping(value="/edit") public ModelAndView edit() throws Exception{ logBefore(logger, "修改Command"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); commandService.edit(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**列表 * @param page * @return */ @RequestMapping(value="/list") public ModelAndView list(Page page){ logBefore(logger, "列表Command"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); try{ pd = this.getPageData(); String KEYWORD = pd.getString("KEYWORD"); if(null != KEYWORD && !"".equals(KEYWORD)){ pd.put("KEYWORD", KEYWORD.trim()); } page.setPd(pd); List<PageData> varList = commandService.list(page); //列出Command列表 mv.setViewName("weixin/command/command_list"); mv.addObject("varList", varList); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 } catch(Exception e){ logger.error(e.toString(), e); } return mv; } /**去新增页面 * @return */ @RequestMapping(value="/goAdd") public ModelAndView goAdd(){ logBefore(logger, "去新增Command页面"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); try { mv.setViewName("weixin/command/command_edit"); mv.addObject("msg", "save"); mv.addObject("pd", pd); } catch (Exception e) { logger.error(e.toString(), e); } return mv; } /**去修改页面 * @return */ @RequestMapping(value="/goEdit") public ModelAndView goEdit(){ logBefore(logger, "去修改Command页面"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); try { pd = commandService.findById(pd); //根据ID读取 mv.setViewName("weixin/command/command_edit"); mv.addObject("msg", "edit"); mv.addObject("pd", pd); } catch (Exception e) { logger.error(e.toString(), e); } return mv; } /**批量删除 * @return */ @RequestMapping(value="/deleteAll") @ResponseBody public Object deleteAll() { logBefore(logger, "批量删除Command"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "dell")){return null;} //校验权限 PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); try { pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); String DATA_IDS = pd.getString("DATA_IDS"); if(null != DATA_IDS && !"".equals(DATA_IDS)){ String ArrayDATA_IDS[] = DATA_IDS.split(","); commandService.deleteAll(ArrayDATA_IDS); pd.put("msg", "ok"); }else{ pd.put("msg", "no"); } pdList.add(pd); map.put("list", pdList); } catch (Exception e) { logger.error(e.toString(), e); } finally { logAfter(logger); } return AppUtil.returnObject(pd, map); } /** * 导出到excel * @return */ @RequestMapping(value="/excel") public ModelAndView exportExcel(){ logBefore(logger, "导出Command到excel"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} ModelAndView mv = new ModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); try{ Map<String,Object> dataMap = new HashMap<String,Object>(); List<String> titles = new ArrayList<String>(); titles.add("关键词"); //1 titles.add("应用路径"); //2 titles.add("创建时间"); //3 titles.add("状态"); //4 titles.add("备注"); //5 dataMap.put("titles", titles); List<PageData> varOList = commandService.listAll(pd); List<PageData> varList = new ArrayList<PageData>(); for(int i=0;i<varOList.size();i++){ PageData vpd = new PageData(); vpd.put("var1", varOList.get(i).getString("KEYWORD")); //1 vpd.put("var2", varOList.get(i).getString("COMMANDCODE")); //2 vpd.put("var3", varOList.get(i).getString("CREATETIME")); //3 vpd.put("var4", varOList.get(i).get("STATUS").toString()); //4 vpd.put("var5", varOList.get(i).getString("BZ")); //5 varList.add(vpd); } dataMap.put("varList", varList); ObjectExcelView erv = new ObjectExcelView(); mv = new ModelAndView(erv,dataMap); } catch(Exception e){ logger.error(e.toString(), e); } return mv; } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/weixin/imgmsg/ImgmsgController.java
New file @@ -0,0 +1,303 @@ package com.fh.controller.weixin.imgmsg; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.util.AppUtil; import com.fh.util.ObjectExcelView; import com.fh.util.PageData; import com.fh.util.Tools; import com.fh.util.Jurisdiction; import com.fh.service.weixin.imgmsg.ImgmsgService; /** * 类名称:ImgmsgController * 创建人:FH * 创建时间:2015-05-10 */ @Controller @RequestMapping(value="/imgmsg") public class ImgmsgController extends BaseController { String menuUrl = "imgmsg/list.do"; //菜单地址(权限用) @Resource(name="imgmsgService") private ImgmsgService imgmsgService; /**新增 * @return * @throws Exception */ @RequestMapping(value="/save") public ModelAndView save() throws Exception{ logBefore(logger, "新增Imgmsg"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("IMGMSG_ID", this.get32UUID()); //主键 pd.put("CREATETIME", Tools.date2Str(new Date())); //创建时间 imgmsgService.save(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**删除 * @param out */ @RequestMapping(value="/delete") public void delete(PrintWriter out){ logBefore(logger, "删除Imgmsg"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限 PageData pd = new PageData(); try{ pd = this.getPageData(); imgmsgService.delete(pd); out.write("success"); out.close(); } catch(Exception e){ logger.error(e.toString(), e); } } /**修改 * @return * @throws Exception */ @RequestMapping(value="/edit") public ModelAndView edit() throws Exception{ logBefore(logger, "修改Imgmsg"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限 ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); imgmsgService.edit(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**列表 * @param page * @return */ @RequestMapping(value="/list") public ModelAndView list(Page page){ logBefore(logger, "列表Imgmsg"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); try{ pd = this.getPageData(); String KEYWORD = pd.getString("KEYWORD"); if(null != KEYWORD && !"".equals(KEYWORD)){ pd.put("KEYWORD", KEYWORD.trim()); } page.setPd(pd); List<PageData> varList = imgmsgService.list(page); //列出Imgmsg列表 mv.setViewName("weixin/imgmsg/imgmsg_list"); mv.addObject("varList", varList); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 } catch(Exception e){ logger.error(e.toString(), e); } return mv; } /**去新增页面 * @return */ @RequestMapping(value="/goAdd") public ModelAndView goAdd(){ logBefore(logger, "去新增Imgmsg页面"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); try { mv.setViewName("weixin/imgmsg/imgmsg_edit"); mv.addObject("msg", "save"); mv.addObject("pd", pd); } catch (Exception e) { logger.error(e.toString(), e); } return mv; } /**去修改页面 * @return */ @RequestMapping(value="/goEdit") public ModelAndView goEdit(){ logBefore(logger, "去修改Imgmsg页面"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); try { pd = imgmsgService.findById(pd); //根据ID读取 mv.setViewName("weixin/imgmsg/imgmsg_edit"); mv.addObject("msg", "edit"); mv.addObject("pd", pd); } catch (Exception e) { logger.error(e.toString(), e); } return mv; } /**批量删除 * @return */ @RequestMapping(value="/deleteAll") @ResponseBody public Object deleteAll() { logBefore(logger, "批量删除Imgmsg"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "dell")){return null;} //校验权限 PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); try { pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); String DATA_IDS = pd.getString("DATA_IDS"); if(null != DATA_IDS && !"".equals(DATA_IDS)){ String ArrayDATA_IDS[] = DATA_IDS.split(","); imgmsgService.deleteAll(ArrayDATA_IDS); pd.put("msg", "ok"); }else{ pd.put("msg", "no"); } pdList.add(pd); map.put("list", pdList); } catch (Exception e) { logger.error(e.toString(), e); } finally { logAfter(logger); } return AppUtil.returnObject(pd, map); } /** * 导出到excel * @return */ @RequestMapping(value="/excel") public ModelAndView exportExcel(){ logBefore(logger, "导出Imgmsg到excel"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} ModelAndView mv = new ModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); try{ Map<String,Object> dataMap = new HashMap<String,Object>(); List<String> titles = new ArrayList<String>(); titles.add("关键词"); //1 titles.add("创建时间"); //2 titles.add("状态"); //3 titles.add("备注"); //4 titles.add("标题1"); //5 titles.add("描述1"); //6 titles.add("图片地址1"); //7 titles.add("超链接1"); //8 titles.add("标题2"); //9 titles.add("描述2"); //10 titles.add("图片地址2"); //11 titles.add("超链接2"); //12 titles.add("标题3"); //13 titles.add("描述3"); //14 titles.add("图片地址3"); //15 titles.add("超链接3"); //16 titles.add("标题4"); //17 titles.add("描述4"); //18 titles.add("图片地址4"); //19 titles.add("超链接4"); //20 titles.add("标题5"); //21 titles.add("描述5"); //22 titles.add("图片地址5"); //23 titles.add("超链接5"); //24 titles.add("标题6"); //25 titles.add("描述6"); //26 titles.add("图片地址6"); //27 titles.add("超链接6"); //28 titles.add("标题7"); //29 titles.add("描述7"); //30 titles.add("图片地址7"); //31 titles.add("超链接7"); //32 titles.add("标题8"); //33 titles.add("描述8"); //34 titles.add("图片地址8"); //35 titles.add("超链接8"); //36 dataMap.put("titles", titles); List<PageData> varOList = imgmsgService.listAll(pd); List<PageData> varList = new ArrayList<PageData>(); for(int i=0;i<varOList.size();i++){ PageData vpd = new PageData(); vpd.put("var1", varOList.get(i).getString("KEYWORD")); //1 vpd.put("var2", varOList.get(i).getString("CREATETIME")); //2 vpd.put("var3", varOList.get(i).get("STATUS").toString()); //3 vpd.put("var4", varOList.get(i).getString("BZ")); //4 vpd.put("var5", varOList.get(i).getString("TITLE1")); //5 vpd.put("var6", varOList.get(i).getString("DESCRIPTION1")); //6 vpd.put("var7", varOList.get(i).getString("IMGURL1")); //7 vpd.put("var8", varOList.get(i).getString("TOURL1")); //8 vpd.put("var9", varOList.get(i).getString("TITLE2")); //9 vpd.put("var10", varOList.get(i).getString("DESCRIPTION2")); //10 vpd.put("var11", varOList.get(i).getString("IMGURL2")); //11 vpd.put("var12", varOList.get(i).getString("TOURL2")); //12 vpd.put("var13", varOList.get(i).getString("TITLE3")); //13 vpd.put("var14", varOList.get(i).getString("DESCRIPTION3")); //14 vpd.put("var15", varOList.get(i).getString("IMGURL3")); //15 vpd.put("var16", varOList.get(i).getString("TOURL3")); //16 vpd.put("var17", varOList.get(i).getString("TITLE4")); //17 vpd.put("var18", varOList.get(i).getString("DESCRIPTION4")); //18 vpd.put("var19", varOList.get(i).getString("IMGURL4")); //19 vpd.put("var20", varOList.get(i).getString("TOURL4")); //20 vpd.put("var21", varOList.get(i).getString("TITLE5")); //21 vpd.put("var22", varOList.get(i).getString("DESCRIPTION5")); //22 vpd.put("var23", varOList.get(i).getString("IMGURL5")); //23 vpd.put("var24", varOList.get(i).getString("TOURL5")); //24 vpd.put("var25", varOList.get(i).getString("TITLE6")); //25 vpd.put("var26", varOList.get(i).getString("DESCRIPTION6")); //26 vpd.put("var27", varOList.get(i).getString("IMGURL6")); //27 vpd.put("var28", varOList.get(i).getString("TOURL6")); //28 vpd.put("var29", varOList.get(i).getString("TITLE7")); //29 vpd.put("var30", varOList.get(i).getString("DESCRIPTION7")); //30 vpd.put("var31", varOList.get(i).getString("IMGURL7")); //31 vpd.put("var32", varOList.get(i).getString("TOURL7")); //32 vpd.put("var33", varOList.get(i).getString("TITLE8")); //33 vpd.put("var34", varOList.get(i).getString("DESCRIPTION8")); //34 vpd.put("var35", varOList.get(i).getString("IMGURL8")); //35 vpd.put("var36", varOList.get(i).getString("TOURL8")); //36 varList.add(vpd); } dataMap.put("varList", varList); ObjectExcelView erv = new ObjectExcelView(); mv = new ModelAndView(erv,dataMap); } catch(Exception e){ logger.error(e.toString(), e); } return mv; } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/controller/weixin/textmsg/TextmsgController.java
New file @@ -0,0 +1,307 @@ package com.fh.controller.weixin.textmsg; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fh.controller.base.BaseController; import com.fh.entity.Page; import com.fh.util.AppUtil; import com.fh.util.Jurisdiction; import com.fh.util.ObjectExcelView; import com.fh.util.PageData; import com.fh.util.Tools; import com.fh.service.weixin.command.CommandService; import com.fh.service.weixin.imgmsg.ImgmsgService; import com.fh.service.weixin.textmsg.TextmsgService; /** * 类名称:TextmsgController * 创建人:FH * 创建时间:2015-05-05 */ @Controller @RequestMapping(value="/textmsg") public class TextmsgController extends BaseController { String menuUrl = "textmsg/list.do"; //菜单地址(权限用) @Resource(name="textmsgService") private TextmsgService textmsgService; @Resource(name="commandService") private CommandService commandService; @Resource(name="imgmsgService") private ImgmsgService imgmsgService; /**新增 * @return * @throws Exception */ @RequestMapping(value="/save") public ModelAndView save() throws Exception{ logBefore(logger, "新增Textmsg"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("TEXTMSG_ID", this.get32UUID()); //主键 pd.put("CREATETIME", Tools.date2Str(new Date())); //创建时间 textmsgService.save(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**删除 * @param out */ @RequestMapping(value="/delete") public void delete(PrintWriter out){ logBefore(logger, "删除Textmsg"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} PageData pd = new PageData(); try{ pd = this.getPageData(); textmsgService.delete(pd); out.write("success"); out.close(); } catch(Exception e){ logger.error(e.toString(), e); } } /**修改 * @return * @throws Exception */ @RequestMapping(value="/edit") public ModelAndView edit() throws Exception{ logBefore(logger, "修改Textmsg"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); textmsgService.edit(pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**列表 * @param page * @return */ @RequestMapping(value="/list") public ModelAndView list(Page page){ logBefore(logger, "列表Textmsg"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); try{ pd = this.getPageData(); String KEYWORD = pd.getString("KEYWORD"); if(null != KEYWORD && !"".equals(KEYWORD)){ pd.put("KEYWORD", KEYWORD.trim()); } page.setPd(pd); List<PageData> varList = textmsgService.list(page); //列出Textmsg列表 mv.setViewName("weixin/textmsg/textmsg_list"); mv.addObject("varList", varList); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 } catch(Exception e){ logger.error(e.toString(), e); } return mv; } /**去新增页面 * @return */ @RequestMapping(value="/goAdd") public ModelAndView goAdd(){ logBefore(logger, "去新增Textmsg页面"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); try { mv.setViewName("weixin/textmsg/textmsg_edit"); mv.addObject("msg", "save"); mv.addObject("pd", pd); } catch (Exception e) { logger.error(e.toString(), e); } return mv; } /**去关注回复页面 * @return */ @RequestMapping(value="/goSubscribe") public ModelAndView goSubscribe(){ logBefore(logger, "去关注回复页面"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); try { pd.put("KEYWORD", "关注"); PageData msgpd = textmsgService.findByKw(pd); if(null != msgpd){ mv.addObject("msg", "文本消息"); mv.addObject("content", msgpd.getString("CONTENT")); }else{ msgpd = imgmsgService.findByKw(pd); if(null != msgpd){ mv.addObject("msg", "图文消息"); mv.addObject("content", "标题:"+msgpd.getString("TITLE1")); }else{ msgpd = commandService.findByKw(pd); if(null != msgpd){ mv.addObject("msg", "命令"); mv.addObject("content", "执行命令:"+msgpd.getString("COMMANDCODE")); }else{ mv.addObject("msg", "无回复"); } } } mv.setViewName("weixin/subscribe"); mv.addObject("pd", msgpd); } catch (Exception e) { logger.error(e.toString(), e); } return mv; } /**去修改页面 * @return */ @RequestMapping(value="/goEdit") public ModelAndView goEdit(){ logBefore(logger, "去修改Textmsg页面"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); try { pd = textmsgService.findById(pd); //根据ID读取 mv.setViewName("weixin/textmsg/textmsg_edit"); mv.addObject("msg", "edit"); mv.addObject("pd", pd); } catch (Exception e) { logger.error(e.toString(), e); } return mv; } /**批量删除 * @return */ @RequestMapping(value="/deleteAll") @ResponseBody public Object deleteAll() { logBefore(logger, "批量删除Textmsg"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} PageData pd = new PageData(); Map<String,Object> map = new HashMap<String,Object>(); try { pd = this.getPageData(); List<PageData> pdList = new ArrayList<PageData>(); String DATA_IDS = pd.getString("DATA_IDS"); if(null != DATA_IDS && !"".equals(DATA_IDS)){ String ArrayDATA_IDS[] = DATA_IDS.split(","); textmsgService.deleteAll(ArrayDATA_IDS); pd.put("msg", "ok"); }else{ pd.put("msg", "no"); } pdList.add(pd); map.put("list", pdList); } catch (Exception e) { logger.error(e.toString(), e); } finally { logAfter(logger); } return AppUtil.returnObject(pd, map); } /**判断关键词是否存在 * @return */ @RequestMapping(value="/hasK") @ResponseBody public Object hasK(){ Map<String,String> map = new HashMap<String,String>(); String errInfo = "success"; PageData pd = new PageData(); try{ pd = this.getPageData(); pd.put("STATUS", "3"); if(textmsgService.findByKw(pd) != null || commandService.findByKw(pd) != null || imgmsgService.findByKw(pd) != null){ errInfo = "error"; } } catch(Exception e){ logger.error(e.toString(), e); } map.put("result", errInfo); //返回结果 return AppUtil.returnObject(new PageData(), map); } /** * 导出到excel * @return */ @RequestMapping(value="/excel") public ModelAndView exportExcel(){ logBefore(logger, "导出Textmsg到excel"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} ModelAndView mv = new ModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); try{ Map<String,Object> dataMap = new HashMap<String,Object>(); List<String> titles = new ArrayList<String>(); titles.add("关键词");//1 titles.add("内容"); //2 titles.add("创建时间");//3 titles.add("状态"); //4 titles.add("备注"); //5 dataMap.put("titles", titles); List<PageData> varOList = textmsgService.listAll(pd); List<PageData> varList = new ArrayList<PageData>(); for(int i=0;i<varOList.size();i++){ PageData vpd = new PageData(); vpd.put("var1", varOList.get(i).getString("KEYWORD")); //1 vpd.put("var2", varOList.get(i).getString("CONTENT")); //2 vpd.put("var3", varOList.get(i).getString("CREATETIME")); //3 vpd.put("var4", varOList.get(i).get("STATUS").toString()); //4 vpd.put("var5", varOList.get(i).getString("BZ")); //5 varList.add(vpd); } dataMap.put("varList", varList); ObjectExcelView erv = new ObjectExcelView(); mv = new ModelAndView(erv,dataMap); } catch(Exception e){ logger.error(e.toString(), e); } return mv; } @InitBinder public void initBinder(WebDataBinder binder){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true)); } } sourcecode/MVNFHM/src/main/java/com/fh/dao/AbstractBaseRedisDao.java
New file @@ -0,0 +1,32 @@ package com.fh.dao; import javax.annotation.Resource; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.RedisSerializer; /** * redis Dao * @author FH Q313596790 * 修改时间:2016、5、2 */ public abstract class AbstractBaseRedisDao<K, V> { @Resource(name="redisTemplate") protected RedisTemplate<K, V> redisTemplate; /** * 设置redisTemplate * @param redisTemplate the redisTemplate to set */ public void setRedisTemplate(RedisTemplate<K, V> redisTemplate) { this.redisTemplate = redisTemplate; } /** * 获取 RedisSerializer */ protected RedisSerializer<String> getRedisSerializer() { return redisTemplate.getStringSerializer(); } } sourcecode/MVNFHM/src/main/java/com/fh/dao/DAO.java
New file @@ -0,0 +1,62 @@ package com.fh.dao; /** * @author FH Q313596790 * 修改时间:2015、12、11 */ public interface DAO { /** * 保存对象 * @param str * @param obj * @return * @throws Exception */ public Object save(String str, Object obj) throws Exception; /** * 修改对象 * @param str * @param obj * @return * @throws Exception */ public Object update(String str, Object obj) throws Exception; /** * 删除对象 * @param str * @param obj * @return * @throws Exception */ public Object delete(String str, Object obj) throws Exception; /** * 查找对象 * @param str * @param obj * @return * @throws Exception */ public Object findForObject(String str, Object obj) throws Exception; /** * 查找对象 * @param str * @param obj * @return * @throws Exception */ public Object findForList(String str, Object obj) throws Exception; /** * 查找对象封装成Map * @param s * @param obj * @return * @throws Exception */ public Object findForMap(String sql, Object obj, String key , String value) throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/dao/DaoSupport.java
New file @@ -0,0 +1,130 @@ package com.fh.dao; import java.util.List; import javax.annotation.Resource; import org.apache.ibatis.session.ExecutorType; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionTemplate; import org.springframework.stereotype.Repository; /** * @author FH Q313596790 * 修改时间:2015、12、11 */ @Repository("daoSupport") public class DaoSupport implements DAO { @Resource(name = "sqlSessionTemplate") private SqlSessionTemplate sqlSessionTemplate; /** * 保存对象 * @param str * @param obj * @return * @throws Exception */ public Object save(String str, Object obj) throws Exception { return sqlSessionTemplate.insert(str, obj); } /** * 批量更新 * @param str * @param obj * @return * @throws Exception */ public Object batchSave(String str, List objs )throws Exception{ return sqlSessionTemplate.insert(str, objs); } /** * 修改对象 * @param str * @param obj * @return * @throws Exception */ public Object update(String str, Object obj) throws Exception { return sqlSessionTemplate.update(str, obj); } /** * 批量更新 * @param str * @param obj * @return * @throws Exception */ public void batchUpdate(String str, List objs )throws Exception{ SqlSessionFactory sqlSessionFactory = sqlSessionTemplate.getSqlSessionFactory(); //批量执行器 SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH,false); try{ if(objs!=null){ for(int i=0,size=objs.size();i<size;i++){ sqlSession.update(str, objs.get(i)); } sqlSession.flushStatements(); sqlSession.commit(); sqlSession.clearCache(); } }finally{ sqlSession.close(); } } /** * 批量更新 * @param str * @param obj * @return * @throws Exception */ public Object batchDelete(String str, List objs )throws Exception{ return sqlSessionTemplate.delete(str, objs); } /** * 删除对象 * @param str * @param obj * @return * @throws Exception */ public Object delete(String str, Object obj) throws Exception { return sqlSessionTemplate.delete(str, obj); } /** * 查找对象 * @param str * @param obj * @return * @throws Exception */ public Object findForObject(String str, Object obj) throws Exception { return sqlSessionTemplate.selectOne(str, obj); } /** * 查找对象 * @param str * @param obj * @return * @throws Exception */ public Object findForList(String str, Object obj) throws Exception { return sqlSessionTemplate.selectList(str, obj); } public Object findForMap(String str, Object obj, String key, String value) throws Exception { return sqlSessionTemplate.selectMap(str, obj, key); } } sourcecode/MVNFHM/src/main/java/com/fh/dao/DaoSupport2.java
New file @@ -0,0 +1,131 @@ package com.fh.dao; import java.util.List; import javax.annotation.Resource; import org.apache.ibatis.session.ExecutorType; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionTemplate; import org.springframework.stereotype.Repository; /** * 第2数据源 * @author FH Q 31 359 6790 * 修改时间:2016、04、29 */ @Repository("daoSupport2") public class DaoSupport2 implements DAO { //@Resource(name = "sqlSessionTemplate2") //去掉注释,打开第2数据源 private SqlSessionTemplate sqlSessionTemplate2; /** * 保存对象 * @param str * @param obj * @return * @throws Exception */ public Object save(String str, Object obj) throws Exception { return sqlSessionTemplate2.insert(str, obj); } /** * 批量更新 * @param str * @param obj * @return * @throws Exception */ public Object batchSave(String str, List objs )throws Exception{ return sqlSessionTemplate2.insert(str, objs); } /** * 修改对象 * @param str * @param obj * @return * @throws Exception */ public Object update(String str, Object obj) throws Exception { return sqlSessionTemplate2.update(str, obj); } /** * 批量更新 * @param str * @param obj * @return * @throws Exception */ public void batchUpdate(String str, List objs )throws Exception{ SqlSessionFactory sqlSessionFactory = sqlSessionTemplate2.getSqlSessionFactory(); //批量执行器 SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH,false); try{ if(objs!=null){ for(int i=0,size=objs.size();i<size;i++){ sqlSession.update(str, objs.get(i)); } sqlSession.flushStatements(); sqlSession.commit(); sqlSession.clearCache(); } }finally{ sqlSession.close(); } } /** * 批量更新 * @param str * @param obj * @return * @throws Exception */ public Object batchDelete(String str, List objs )throws Exception{ return sqlSessionTemplate2.delete(str, objs); } /** * 删除对象 * @param str * @param obj * @return * @throws Exception */ public Object delete(String str, Object obj) throws Exception { return sqlSessionTemplate2.delete(str, obj); } /** * 查找对象 * @param str * @param obj * @return * @throws Exception */ public Object findForObject(String str, Object obj) throws Exception { return sqlSessionTemplate2.selectOne(str, obj); } /** * 查找对象 * @param str * @param obj * @return * @throws Exception */ public Object findForList(String str, Object obj) throws Exception { return sqlSessionTemplate2.selectList(str, obj); } public Object findForMap(String str, Object obj, String key, String value) throws Exception { return sqlSessionTemplate2.selectMap(str, obj, key); } } sourcecode/MVNFHM/src/main/java/com/fh/dao/redis/RedisDao.java
New file @@ -0,0 +1,90 @@ package com.fh.dao.redis; import java.util.List; import java.util.Map; import java.util.Set; /** * 说明: 第2数据源例子接口 * 创建人:FH Q313596790 * 创建时间:2016-05-2 * @version */ public interface RedisDao { /**新增(存储字符串) * @param key * @param value * @return */ public boolean addString(String key, String value, long timeout); /**拼接字符串 * @param key * @param value * @return */ public boolean appendString(String key, String value); /**新增(存储Map) * @param key * @param map * @return */ public String addMap(String key, Map<String, String> map); /**获取map * @param key * @return */ public Map<String,String> getMap(String key); /**新增(存储List) * @param key * @param list * @return */ public void addList(String key, List<String> list); /**获取List * @param key * @return */ public List<String> getList(String key); /**新增(存储set) * @param key * @param set */ public void addSet(String key, Set<String> set); /**获取Set * @param key * @return */ public Set<String> getSet(String key); /**删除 * @param key */ public boolean delete(String key); /**删除多个 * @param keys */ public void delete(List<String> keys); /**修改 * @param pd * @return */ public boolean eidt(String key, String value,long timeout); /**通过ket获取数据 * @param keyId * @return */ public String get(String keyId); } sourcecode/MVNFHM/src/main/java/com/fh/dao/redis/impl/RedisDaoImpl.java
New file @@ -0,0 +1,257 @@ package com.fh.dao.redis.impl; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; import org.springframework.dao.DataAccessException; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.core.RedisCallback; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.stereotype.Repository; import redis.clients.jedis.Jedis; import com.fh.dao.AbstractBaseRedisDao; import com.fh.dao.redis.RedisDao; import com.fh.util.DbFH; import com.fh.util.PageData; @Repository("redisDaoImpl") public class RedisDaoImpl extends AbstractBaseRedisDao<String, PageData> implements RedisDao{ /**新增(存储字符串) * @param key * @param value * @return */ @Override public boolean addString(final String key, final String value,final long timeout) { boolean result = redisTemplate.execute(new RedisCallback<Boolean>() { public Boolean doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer<String> serializer = getRedisSerializer(); byte[] jkey = serializer.serialize(key); byte[] jvalue = serializer.serialize(value); if(timeout == 0) { connection.setNX(jkey, jvalue); } else { connection.setEx(jkey, timeout, jvalue); } return true; } }); return result; } /**新增(拼接字符串) * @param key * @param value * @return */ @Override public boolean appendString(final String key, final String value) { boolean result = redisTemplate.execute(new RedisCallback<Boolean>() { public Boolean doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer<String> serializer = getRedisSerializer(); byte[] jkey = serializer.serialize(key); byte[] jvalue = serializer.serialize(value); if(connection.exists(jkey)){ connection.append(jkey, jvalue); return true; }else{ return false; } } }); return result; } /**新增(存储Map) * @param key * @param value * @return */ @Override public String addMap(String key, Map<String, String> map) { Jedis jedis = getJedis(); String result = jedis.hmset(key,map); jedis.close(); return result; } /**获取map * @param key * @return */ @Override public Map<String,String> getMap(String key){ Jedis jedis = getJedis(); Map<String, String> map = new HashMap<String, String>(); Iterator<String> iter=jedis.hkeys(key).iterator(); while (iter.hasNext()){ String ikey = iter.next(); map.put(ikey, jedis.hmget(key,ikey).get(0)); } jedis.close(); return map; } /**新增(存储List) * @param key * @param pd * @return */ @Override public void addList(String key, List<String> list){ Jedis jedis = getJedis(); jedis.del(key); //开始前,先移除所有的内容 for(String value:list){ jedis.rpush(key,value); } jedis.close(); } /**获取List * @param key * @return */ public List<String> getList(String key){ Jedis jedis = getJedis(); List<String> list = jedis.lrange(key,0,-1); jedis.close(); return list; } /**新增(存储set) * @param key * @param set */ public void addSet(String key, Set<String> set){ Jedis jedis = getJedis(); jedis.del(key); for(String value:set){ jedis.sadd(key,value); } jedis.close(); } /**获取Set * @param key * @return */ public Set<String> getSet(String key){ Jedis jedis = getJedis(); Set<String> set = jedis.smembers(key); jedis.close(); return set; } /**删除 * (non-Javadoc) * @see com.fh.dao.redis.RedisDao#delete(java.lang.String) */ @Override public boolean delete(final String key) { boolean result = redisTemplate.execute(new RedisCallback<Boolean>() { public Boolean doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer<String> serializer = getRedisSerializer(); byte[] jkey = serializer.serialize(key); if(connection.exists(jkey)){ connection.del(jkey); return true; }else{ return false; } } }); return result; } /**删除多个 * (non-Javadoc) * @see com.fh.dao.redis.RedisDao#delete(java.util.List) */ @Override public void delete(List<String> keys) { redisTemplate.delete(keys); } /**修改 * (non-Javadoc) * @see com.fh.dao.redis.RedisDao#eidt(java.lang.String, java.lang.String) */ @Override public boolean eidt(String key, String value,long timeout) { if(delete(key)){ addString(key,value,timeout); return true; } return false; } /**通过key获取值 * (non-Javadoc) * @see com.fh.dao.redis.RedisDao#get(java.lang.String) */ @Override public String get(final String keyId) { String result = redisTemplate.execute(new RedisCallback<String>() { public String doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer<String> serializer = getRedisSerializer(); byte[] jkey = serializer.serialize(keyId); byte[] jvalue = connection.get(jkey); if (jvalue == null) { return null; } return serializer.deserialize(jvalue); } }); return result; } /**获取Jedis * @return */ public Jedis getJedis(){ Properties pros = getPprVue(); String isopen = pros.getProperty("redis.isopen"); //地址 String host = pros.getProperty("redis.host"); //地址 String port = pros.getProperty("redis.port"); //端口 String pass = pros.getProperty("redis.pass"); //密码 if("yes".equals(isopen)){ Jedis jedis = new Jedis(host,Integer.parseInt(port)); jedis.auth(pass); return jedis; }else{ return null; } } /**读取redis.properties 配置文件 * @return * @throws IOException */ public Properties getPprVue(){ InputStream inputStream = DbFH.class.getClassLoader().getResourceAsStream("redis.properties"); Properties p = new Properties(); try { p.load(inputStream); inputStream.close(); } catch (IOException e) { //读取配置文件出错 e.printStackTrace(); } return p; } } sourcecode/MVNFHM/src/main/java/com/fh/entity/Page.java
New file @@ -0,0 +1,224 @@ package com.fh.entity; import com.fh.util.Const; import com.fh.util.PageData; import com.fh.util.Tools; /** * 分页类 * @author FH QQ 313596790[青苔] * 创建时间:2014年6月28日 */ public class Page { private int showCount; //每页显示记录数 private int totalPage; //总页数 private int totalResult; //总记录数 private int currentPage; //当前页 private int currentResult; //当前记录起始索引 private boolean entityOrField; //true:需要分页的地方,传入的参数就是Page实体;false:需要分页的地方,传入的参数所代表的实体拥有Page属性 private String pageStr; //最终页面显示的底部翻页导航,详细见:getPageStr(); private PageData pd = new PageData(); public Page(){ try { this.showCount = Integer.parseInt(Tools.readTxtFile(Const.PAGE)); } catch (Exception e) { this.showCount = 15; } } public int getTotalPage() { if(totalResult%showCount==0) totalPage = totalResult/showCount; else totalPage = totalResult/showCount+1; return totalPage; } public void setTotalPage(int totalPage) { this.totalPage = totalPage; } public int getTotalResult() { return totalResult; } public void setTotalResult(int totalResult) { this.totalResult = totalResult; } public int getCurrentPage() { if(currentPage<=0) currentPage = 1; if(currentPage>getTotalPage()) currentPage = getTotalPage(); return currentPage; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } //拼接分页 页面及JS函数 public String getPageStr() { StringBuffer sb = new StringBuffer(); if(totalResult>0){ sb.append(" <ul class=\"pagination pull-right no-margin\">\n"); if(currentPage==1){ sb.append(" <li><a>共<font color=red>"+totalResult+"</font>条</a></li>\n"); sb.append(" <li><input type=\"number\" value=\"\" id=\"toGoPage\" style=\"width:50px;text-align:center;float:left\" placeholder=\"页码\"/></li>\n"); sb.append(" <li style=\"cursor:pointer;\"><a onclick=\"toTZ();\" class=\"btn btn-mini btn-success\">跳转</a></li>\n"); sb.append(" <li><a>首页</a></li>\n"); sb.append(" <li><a>上页</a></li>\n"); }else{ sb.append(" <li><a>共<font color=red>"+totalResult+"</font>条</a></li>\n"); sb.append(" <li><input type=\"number\" value=\"\" id=\"toGoPage\" style=\"width:50px;text-align:center;float:left\" placeholder=\"页码\"/></li>\n"); sb.append(" <li style=\"cursor:pointer;\"><a onclick=\"toTZ();\" class=\"btn btn-mini btn-success\">跳转</a></li>\n"); sb.append(" <li style=\"cursor:pointer;\"><a onclick=\"nextPage(1)\">首页</a></li>\n"); sb.append(" <li style=\"cursor:pointer;\"><a onclick=\"nextPage("+(currentPage-1)+")\">上页</a></li>\n"); } int showTag = 5;//分页标签显示数量 int startTag = 1; if(currentPage>showTag){ startTag = currentPage-1; } int endTag = startTag+showTag-1; for(int i=startTag; i<=totalPage && i<=endTag; i++){ if(currentPage==i) sb.append("<li class=\"active\"><a><font color='white'>"+i+"</font></a></li>\n"); else sb.append(" <li style=\"cursor:pointer;\"><a onclick=\"nextPage("+i+")\">"+i+"</a></li>\n"); } if(currentPage==totalPage){ sb.append(" <li><a>下页</a></li>\n"); sb.append(" <li><a>尾页</a></li>\n"); }else{ sb.append(" <li style=\"cursor:pointer;\"><a onclick=\"nextPage("+(currentPage+1)+")\">下页</a></li>\n"); sb.append(" <li style=\"cursor:pointer;\"><a onclick=\"nextPage("+totalPage+")\">尾页</a></li>\n"); } sb.append(" <li><a>共"+totalPage+"页</a></li>\n"); sb.append(" <li><select title='显示条数' style=\"width:55px;float:left;margin-top:1px;\" onchange=\"changeCount(this.value)\">\n"); sb.append(" <option value='"+showCount+"'>"+showCount+"</option>\n"); sb.append(" <option value='10'>10</option>\n"); sb.append(" <option value='20'>20</option>\n"); sb.append(" <option value='30'>30</option>\n"); sb.append(" <option value='40'>40</option>\n"); sb.append(" <option value='50'>50</option>\n"); sb.append(" <option value='60'>60</option>\n"); sb.append(" <option value='70'>70</option>\n"); sb.append(" <option value='80'>80</option>\n"); sb.append(" <option value='90'>90</option>\n"); sb.append(" <option value='99'>99</option>\n"); sb.append(" </select>\n"); sb.append(" </li>\n"); sb.append("</ul>\n"); sb.append("<script type=\"text/javascript\">\n"); //换页函数 sb.append("function nextPage(page){"); sb.append(" top.jzts();"); sb.append(" if(true && document.forms[0]){\n"); sb.append(" var url = document.forms[0].getAttribute(\"action\");\n"); sb.append(" if(url.indexOf('?')>-1){url += \"&"+(entityOrField?"currentPage":"page.currentPage")+"=\";}\n"); sb.append(" else{url += \"?"+(entityOrField?"currentPage":"page.currentPage")+"=\";}\n"); sb.append(" url = url + page + \"&" +(entityOrField?"showCount":"page.showCount")+"="+showCount+"\";\n"); sb.append(" document.forms[0].action = url;\n"); sb.append(" document.forms[0].submit();\n"); sb.append(" }else{\n"); sb.append(" var url = document.location+'';\n"); sb.append(" if(url.indexOf('?')>-1){\n"); sb.append(" if(url.indexOf('currentPage')>-1){\n"); sb.append(" var reg = /currentPage=\\d*/g;\n"); sb.append(" url = url.replace(reg,'currentPage=');\n"); sb.append(" }else{\n"); sb.append(" url += \"&"+(entityOrField?"currentPage":"page.currentPage")+"=\";\n"); sb.append(" }\n"); sb.append(" }else{url += \"?"+(entityOrField?"currentPage":"page.currentPage")+"=\";}\n"); sb.append(" url = url + page + \"&" +(entityOrField?"showCount":"page.showCount")+"="+showCount+"\";\n"); sb.append(" document.location = url;\n"); sb.append(" }\n"); sb.append("}\n"); //调整每页显示条数 sb.append("function changeCount(value){"); sb.append(" top.jzts();"); sb.append(" if(true && document.forms[0]){\n"); sb.append(" var url = document.forms[0].getAttribute(\"action\");\n"); sb.append(" if(url.indexOf('?')>-1){url += \"&"+(entityOrField?"currentPage":"page.currentPage")+"=\";}\n"); sb.append(" else{url += \"?"+(entityOrField?"currentPage":"page.currentPage")+"=\";}\n"); sb.append(" url = url + \"1&" +(entityOrField?"showCount":"page.showCount")+"=\"+value;\n"); sb.append(" document.forms[0].action = url;\n"); sb.append(" document.forms[0].submit();\n"); sb.append(" }else{\n"); sb.append(" var url = document.location+'';\n"); sb.append(" if(url.indexOf('?')>-1){\n"); sb.append(" if(url.indexOf('currentPage')>-1){\n"); sb.append(" var reg = /currentPage=\\d*/g;\n"); sb.append(" url = url.replace(reg,'currentPage=');\n"); sb.append(" }else{\n"); sb.append(" url += \"1&"+(entityOrField?"currentPage":"page.currentPage")+"=\";\n"); sb.append(" }\n"); sb.append(" }else{url += \"?"+(entityOrField?"currentPage":"page.currentPage")+"=\";}\n"); sb.append(" url = url + \"&" +(entityOrField?"showCount":"page.showCount")+"=\"+value;\n"); sb.append(" document.location = url;\n"); sb.append(" }\n"); sb.append("}\n"); //跳转函数 sb.append("function toTZ(){"); sb.append("var toPaggeVlue = document.getElementById(\"toGoPage\").value;"); sb.append("if(toPaggeVlue == ''){document.getElementById(\"toGoPage\").value=1;return;}"); sb.append("if(isNaN(Number(toPaggeVlue))){document.getElementById(\"toGoPage\").value=1;return;}"); sb.append("nextPage(toPaggeVlue);"); sb.append("}\n"); sb.append("</script>\n"); } pageStr = sb.toString(); return pageStr; } public void setPageStr(String pageStr) { this.pageStr = pageStr; } public int getShowCount() { return showCount; } public void setShowCount(int showCount) { this.showCount = showCount; } public int getCurrentResult() { currentResult = (getCurrentPage()-1)*getShowCount(); if(currentResult<0) currentResult = 0; return currentResult; } public void setCurrentResult(int currentResult) { this.currentResult = currentResult; } public boolean isEntityOrField() { return entityOrField; } public void setEntityOrField(boolean entityOrField) { this.entityOrField = entityOrField; } public PageData getPd() { return pd; } public void setPd(PageData pd) { this.pd = pd; } } sourcecode/MVNFHM/src/main/java/com/fh/entity/system/Department.java
New file @@ -0,0 +1,138 @@ package com.fh.entity.system; import java.util.List; /** * * 类名称:组织机构 * 类描述: * @author FH QQ 313596790[青苔] * 作者单位: * 联系方式: * 修改时间:2015年12月16日 * @version 2.0 */ public class Department { private String NAME; //名称 private String NAME_EN; //英文名称 private String BIANMA; //编码 private String PARENT_ID; //上级ID private String HEADMAN; //负责人 private String TEL; //电话 private String FUNCTIONS; //部门职能 private String BZ; //备注 private String ADDRESS; //地址 private String DEPARTMENT_ID; //主键 private String target; private Department department; private List<Department> subDepartment; private boolean hasDepartment = false; private String treeurl; private String icon; private String SYSTEM_ID; public String getIcon() { return icon; } public void setIcon(String icon) { this.icon = icon; } public String getNAME() { return NAME; } public void setNAME(String nAME) { NAME = nAME; } public String getNAME_EN() { return NAME_EN; } public void setNAME_EN(String nAME_EN) { NAME_EN = nAME_EN; } public String getBIANMA() { return BIANMA; } public void setBIANMA(String bIANMA) { BIANMA = bIANMA; } public String getPARENT_ID() { return PARENT_ID; } public void setPARENT_ID(String pARENT_ID) { PARENT_ID = pARENT_ID; } public String getHEADMAN() { return HEADMAN; } public void setHEADMAN(String hEADMAN) { HEADMAN = hEADMAN; } public String getTEL() { return TEL; } public void setTEL(String tEL) { TEL = tEL; } public String getFUNCTIONS() { return FUNCTIONS; } public void setFUNCTIONS(String fUNCTIONS) { FUNCTIONS = fUNCTIONS; } public String getBZ() { return BZ; } public void setBZ(String bZ) { BZ = bZ; } public String getADDRESS() { return ADDRESS; } public void setADDRESS(String aDDRESS) { ADDRESS = aDDRESS; } public String getDEPARTMENT_ID() { return DEPARTMENT_ID; } public void setDEPARTMENT_ID(String dEPARTMENT_ID) { DEPARTMENT_ID = dEPARTMENT_ID; } public String getTarget() { return target; } public void setTarget(String target) { this.target = target; } public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; } public List<Department> getSubDepartment() { return subDepartment; } public void setSubDepartment(List<Department> subDepartment) { this.subDepartment = subDepartment; } public boolean isHasDepartment() { return hasDepartment; } public void setHasDepartment(boolean hasDepartment) { this.hasDepartment = hasDepartment; } public String getTreeurl() { return treeurl; } public void setTreeurl(String treeurl) { this.treeurl = treeurl; } public String getSYSTEM_ID() { return SYSTEM_ID; } public void setSYSTEM_ID(String sYSTEM_ID) { SYSTEM_ID = sYSTEM_ID; } } sourcecode/MVNFHM/src/main/java/com/fh/entity/system/Dictionaries.java
New file @@ -0,0 +1,110 @@ package com.fh.entity.system; import java.util.List; /** * * 类名称:数据字典 * 类描述: * @author FH QQ 313596790[青苔] * 作者单位: * 联系方式: * 修改时间:2015年12月16日 * @version 2.0 */ public class Dictionaries { private String NAME; //名称 private String NAME_EN; //英文名称 private String BIANMA; //编码 private String ORDER_BY; //排序 private String PARENT_ID; //上级ID private String BZ; //备注 private String TBSNAME; //关联表 private String DICTIONARIES_ID; //主键 private String target; private Dictionaries dict; private List<Dictionaries> subDict; private boolean hasDict = false; private String treeurl; public String getNAME() { return NAME; } public void setNAME(String nAME) { NAME = nAME; } public String getNAME_EN() { return NAME_EN; } public void setNAME_EN(String nAME_EN) { NAME_EN = nAME_EN; } public String getBIANMA() { return BIANMA; } public void setBIANMA(String bIANMA) { BIANMA = bIANMA; } public String getORDER_BY() { return ORDER_BY; } public void setORDER_BY(String oRDER_BY) { ORDER_BY = oRDER_BY; } public String getPARENT_ID() { return PARENT_ID; } public void setPARENT_ID(String pARENT_ID) { PARENT_ID = pARENT_ID; } public String getBZ() { return BZ; } public void setBZ(String bZ) { BZ = bZ; } public String getTBSNAME() { return TBSNAME; } public void setTBSNAME(String tBSNAME) { TBSNAME = tBSNAME; } public String getDICTIONARIES_ID() { return DICTIONARIES_ID; } public void setDICTIONARIES_ID(String dICTIONARIES_ID) { DICTIONARIES_ID = dICTIONARIES_ID; } public String getTarget() { return target; } public void setTarget(String target) { this.target = target; } public Dictionaries getDict() { return dict; } public void setDict(Dictionaries dict) { this.dict = dict; } public List<Dictionaries> getSubDict() { return subDict; } public void setSubDict(List<Dictionaries> subDict) { this.subDict = subDict; } public boolean isHasDict() { return hasDict; } public void setHasDict(boolean hasDict) { this.hasDict = hasDict; } public String getTreeurl() { return treeurl; } public void setTreeurl(String treeurl) { this.treeurl = treeurl; } } sourcecode/MVNFHM/src/main/java/com/fh/entity/system/Menu.java
New file @@ -0,0 +1,137 @@ package com.fh.entity.system; import java.util.List; /** * * 类名称:菜单 * 类描述: * @author FH QQ 313596790[青苔] * 作者单位: * 联系方式: * 创建时间:2015年7月27日 * @version 2.0 */ public class Menu { private String MENU_ID; //菜单ID private String MENU_NAME; //菜单名称 private String MENU_URL; //链接 private String PARENT_ID; //上级菜单ID private String MENU_ORDER; //排序 private String MENU_ICON; //图标 private String MENU_TYPE; //类型 private String MENU_STATE; //菜单状态 private String SYSTEM_ID; //系统ID private String target; private Menu parentMenu; private List<Menu> subMenu; private boolean hasMenu = false; private boolean hasAddQx = false; private boolean hasEditQx = false; private boolean hasDelQx = false; private boolean hasChaQx = false; public String getMENU_ID() { return MENU_ID; } public void setMENU_ID(String mENU_ID) { MENU_ID = mENU_ID; } public String getMENU_NAME() { return MENU_NAME; } public void setMENU_NAME(String mENU_NAME) { MENU_NAME = mENU_NAME; } public String getMENU_URL() { return MENU_URL; } public void setMENU_URL(String mENU_URL) { MENU_URL = mENU_URL; } public String getPARENT_ID() { return PARENT_ID; } public void setPARENT_ID(String pARENT_ID) { PARENT_ID = pARENT_ID; } public String getMENU_ORDER() { return MENU_ORDER; } public void setMENU_ORDER(String mENU_ORDER) { MENU_ORDER = mENU_ORDER; } public Menu getParentMenu() { return parentMenu; } public void setParentMenu(Menu parentMenu) { this.parentMenu = parentMenu; } public List<Menu> getSubMenu() { return subMenu; } public void setSubMenu(List<Menu> subMenu) { this.subMenu = subMenu; } public boolean isHasMenu() { return hasMenu; } public void setHasMenu(boolean hasMenu) { this.hasMenu = hasMenu; } public String getTarget() { return target; } public void setTarget(String target) { this.target = target; } public String getMENU_ICON() { return MENU_ICON; } public void setMENU_ICON(String mENU_ICON) { MENU_ICON = mENU_ICON; } public String getMENU_TYPE() { return MENU_TYPE; } public void setMENU_TYPE(String mENU_TYPE) { MENU_TYPE = mENU_TYPE; } public String getMENU_STATE() { return MENU_STATE; } public void setMENU_STATE(String mENU_STATE) { MENU_STATE = mENU_STATE; } public String getSYSTEM_ID() { return SYSTEM_ID; } public void setSYSTEM_ID(String sYSTEM_ID) { SYSTEM_ID = sYSTEM_ID; } public boolean isHasAddQx() { return hasAddQx; } public void setHasAddQx(boolean hasAddQx) { this.hasAddQx = hasAddQx; } public boolean isHasEditQx() { return hasEditQx; } public void setHasEditQx(boolean hasEditQx) { this.hasEditQx = hasEditQx; } public boolean isHasDelQx() { return hasDelQx; } public void setHasDelQx(boolean hasDelQx) { this.hasDelQx = hasDelQx; } public boolean isHasChaQx() { return hasChaQx; } public void setHasChaQx(boolean hasChaQx) { this.hasChaQx = hasChaQx; } } sourcecode/MVNFHM/src/main/java/com/fh/entity/system/Role.java
New file @@ -0,0 +1,77 @@ package com.fh.entity.system; /** * * 类名称:角色 * 类描述: * @author FH QQ 313596790[青苔] * 作者单位: * 联系方式: * 创建时间:2014年3月10日 * @version 1.0 */ public class Role { private String ROLE_ID; private String ROLE_NAME; private String RIGHTS; private String PARENT_ID; private String ADD_QX; private String DEL_QX; private String EDIT_QX; private String CHA_QX; private String SYSTEM_ID; public String getROLE_ID() { return ROLE_ID; } public void setROLE_ID(String rOLE_ID) { ROLE_ID = rOLE_ID; } public String getROLE_NAME() { return ROLE_NAME; } public void setROLE_NAME(String rOLE_NAME) { ROLE_NAME = rOLE_NAME; } public String getRIGHTS() { return RIGHTS; } public void setRIGHTS(String rIGHTS) { RIGHTS = rIGHTS; } public String getPARENT_ID() { return PARENT_ID; } public void setPARENT_ID(String pARENT_ID) { PARENT_ID = pARENT_ID; } public String getADD_QX() { return ADD_QX; } public void setADD_QX(String aDD_QX) { ADD_QX = aDD_QX; } public String getDEL_QX() { return DEL_QX; } public void setDEL_QX(String dEL_QX) { DEL_QX = dEL_QX; } public String getEDIT_QX() { return EDIT_QX; } public void setEDIT_QX(String eDIT_QX) { EDIT_QX = eDIT_QX; } public String getCHA_QX() { return CHA_QX; } public void setCHA_QX(String cHA_QX) { CHA_QX = cHA_QX; } public String getSYSTEM_ID() { return SYSTEM_ID; } public void setSYSTEM_ID(String sYSTEM_ID) { SYSTEM_ID = sYSTEM_ID; } } sourcecode/MVNFHM/src/main/java/com/fh/entity/system/User.java
New file @@ -0,0 +1,128 @@ package com.fh.entity.system; import com.fh.entity.Page; /** * * 类名称:用户 * 类描述: * @author FH QQ 313596790[青苔] * 作者单位: * 联系方式: * 创建时间:2014年6月28日 * @version 1.0 */ public class User { private String USER_ID; //用户id private String USERNAME; //用户名 private String PASSWORD; //密码 private String NAME; //姓名 private String RIGHTS; //权限 private String ROLE_ID; //角色id private String LAST_LOGIN; //最后登录时间 private String IP; //用户登录ip地址 private String STATUS; //状态 private Role role; //角色对象 private Page page; //分页对象 private String SKIN; //皮肤 private String TYPE; //用户类型 private String EMAIL; //邮箱 private String PHONE; //电话 public String getSKIN() { return SKIN; } public void setSKIN(String sKIN) { SKIN = sKIN; } public String getUSER_ID() { return USER_ID; } public void setUSER_ID(String uSER_ID) { USER_ID = uSER_ID; } public String getUSERNAME() { return USERNAME; } public void setUSERNAME(String uSERNAME) { USERNAME = uSERNAME; } public String getPASSWORD() { return PASSWORD; } public void setPASSWORD(String pASSWORD) { PASSWORD = pASSWORD; } public String getNAME() { return NAME; } public void setNAME(String nAME) { NAME = nAME; } public String getRIGHTS() { return RIGHTS; } public void setRIGHTS(String rIGHTS) { RIGHTS = rIGHTS; } public String getROLE_ID() { return ROLE_ID; } public void setROLE_ID(String rOLE_ID) { ROLE_ID = rOLE_ID; } public String getLAST_LOGIN() { return LAST_LOGIN; } public void setLAST_LOGIN(String lAST_LOGIN) { LAST_LOGIN = lAST_LOGIN; } public String getIP() { return IP; } public void setIP(String iP) { IP = iP; } public String getSTATUS() { return STATUS; } public void setSTATUS(String sTATUS) { STATUS = sTATUS; } public Role getRole() { return role; } public void setRole(Role role) { this.role = role; } public Page getPage() { if(page==null) page = new Page(); return page; } public void setPage(Page page) { this.page = page; } public String getTYPE() { return TYPE; } public void setTYPE(String tYPE) { TYPE = tYPE; } public String getEMAIL() { return EMAIL; } public void setEMAIL(String eMAIL) { EMAIL = eMAIL; } public String getPHONE() { return PHONE; } public void setPHONE(String pHONE) { PHONE = pHONE; } } sourcecode/MVNFHM/src/main/java/com/fh/filter/LoginFilter.java
New file @@ -0,0 +1,40 @@ package com.fh.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.fh.controller.base.BaseController; /**登录验证过滤器(废弃 com.fh.interceptor替代) * @author FH QQ 313596790[青苔] * */ public class LoginFilter extends BaseController implements Filter { /** * 初始化 */ public void init(FilterConfig fc) throws ServletException { //FileUtil.createDir("d:/FH/topic/"); } public void destroy() { } public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; chain.doFilter(req, res); // 调用下一过滤器 } } sourcecode/MVNFHM/src/main/java/com/fh/filter/startFilter.java
New file @@ -0,0 +1,128 @@ package com.fh.filter; import java.io.IOException; import java.net.UnknownHostException; import java.sql.SQLException; import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util.TimerTask; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import org.java_websocket.WebSocketImpl; import com.fh.plugin.websocketInstantMsg.ChatServer; import com.fh.plugin.websocketOnline.OnlineChatServer; import com.fh.util.Const; import com.fh.util.DbFH; import com.fh.util.Tools; import com.fh.controller.base.BaseController; /** * 启动tomcat时运行此类 * 创建人:FH FH QQ 313596790[青苔] * 创建时间:2014年2月17日 * @version */ public class startFilter extends BaseController implements Filter{ /** * 初始化 */ public void init(FilterConfig fc) throws ServletException { // this.startWebsocketInstantMsg(); // this.startWebsocketOnline(); this.reductionDbBackupQuartzState(); } /** * 启动即时聊天服务 */ public void startWebsocketInstantMsg(){ WebSocketImpl.DEBUG = false; ChatServer s; try { String strWEBSOCKET = Tools.readTxtFile(Const.WEBSOCKET);//读取WEBSOCKET配置,获取端口配置 if(null != strWEBSOCKET && !"".equals(strWEBSOCKET)){ String strIW[] = strWEBSOCKET.split(",fh,"); if(strIW.length == 5){ s = new ChatServer(Integer.parseInt(strIW[1])); s.start(); } } //System.out.println( "websocket服务器启动,端口" + s.getPort() ); } catch (UnknownHostException e) { e.printStackTrace(); } } /** * 启动在线管理服务 */ public void startWebsocketOnline(){ WebSocketImpl.DEBUG = false; OnlineChatServer s; try { String strWEBSOCKET = Tools.readTxtFile(Const.WEBSOCKET);//读取WEBSOCKET配置,获取端口配置 if(null != strWEBSOCKET && !"".equals(strWEBSOCKET)){ String strIW[] = strWEBSOCKET.split(",fh,"); if(strIW.length == 5){ s = new OnlineChatServer(Integer.parseInt(strIW[3])); s.start(); } } //System.out.println( "websocket服务器启动,端口" + s.getPort() ); } catch (UnknownHostException e) { e.printStackTrace(); } } /** * web容器重启时,所有定时备份状态关闭 */ public void reductionDbBackupQuartzState(){ try { DbFH.executeUpdateFH("update DB_TIMINGBACKUP set STATUS = '2'"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 计时器(废弃)用quartz代替 */ public void timer() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 9); // 控制时 calendar.set(Calendar.MINUTE, 0); // 控制分 calendar.set(Calendar.SECOND, 0); // 控制秒 Date time = calendar.getTime(); // 得出执行任务的时间 Timer timer = new Timer(); timer.scheduleAtFixedRate(new TimerTask() { public void run() { //PersonService personService = (PersonService)ApplicationContext.getBean("personService"); //System.out.println("-------设定要指定任务--------"); } }, time, 1000*60*60*24);// 这里设定将延时每天固定执行 } public void destroy() { // TODO Auto-generated method stub } public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { // TODO Auto-generated method stub } } sourcecode/MVNFHM/src/main/java/com/fh/interceptor/LoginHandlerInterceptor.java
New file @@ -0,0 +1,156 @@ package com.fh.interceptor; import java.util.HashMap; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.crypto.hash.SimpleHash; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import com.fh.dao.redis.RedisDao; import com.fh.entity.system.User; import com.fh.service.system.user.UserManager; import com.fh.util.AppUtil; import com.fh.util.Const; import com.fh.util.DateUtil; import com.fh.util.Jurisdiction; import com.fh.util.PageData; import com.fh.util.Tools; /** * * 类名称:登录过滤,权限验证 * 类描述: * @author FH qq313596790[青苔] * 作者单位: * 联系方式: * 创建时间:2015年11月2日 * @version 1.6 */ public class LoginHandlerInterceptor extends HandlerInterceptorAdapter{ @Resource(name = "redisDaoImpl") private RedisDao redisDaoImpl; @Resource(name="userService") private UserManager userService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // TODO Auto-generated method stub String path = request.getServletPath(); if(path.matches(Const.NO_INTERCEPTOR_PATH)){ User user = (User)Jurisdiction.getSession().getAttribute(Const.SESSION_USER); if(user==null && path.matches(".*/((main)).*")){ if (request.getCookies() != null) { Cookie cookies[] = request.getCookies(); String cookieValue = ""; for (Cookie cookie : cookies) { if ("token".equals(cookie.getName())) { cookieValue = cookie.getValue(); break; } } // 系统ID String systemId = "0"; if(!login(cookieValue,request,response)){ //登陆过滤 response.sendRedirect(request.getContextPath() + Const.LOGIN); return false; } else { return true; } } } return true; }else{ User user = (User)Jurisdiction.getSession().getAttribute(Const.SESSION_USER); if(user!=null ){ path = path.substring(1, path.length()); boolean b = Jurisdiction.hasJurisdiction(path); //访问权限校验 if(!b){ response.sendRedirect(request.getContextPath() + Const.LOGIN); } return b; }else{ if (request.getCookies() != null) { Cookie cookies[] = request.getCookies(); String cookieValue = ""; for (Cookie cookie : cookies) { if ("token".equals(cookie.getName())) { cookieValue = cookie.getValue(); break; } } // 系统ID String systemId = "0"; if(!login(cookieValue,request,response)){ //登陆过滤 response.sendRedirect(request.getContextPath() + Const.LOGIN); return false; } else { return true; } } //登陆过滤 response.sendRedirect(request.getContextPath() + Const.LOGIN); return false; } } } private boolean login(String token,HttpServletRequest request,HttpServletResponse response) throws Exception { Map<String,String> map = new HashMap<String,String>(); PageData pd = new PageData(); String userId = redisDaoImpl.get(token); Session session = Jurisdiction.getSession(); pd.put("USER_ID", userId); pd = userService.findById(pd); if(pd != null){ pd.put("LAST_LOGIN",DateUtil.getTime().toString()); userService.updateLastLogin(pd); pd.put("SYSTEM_ID", "0"); PageData userSysInfo = userService.getUserSysInfo(pd); if(userSysInfo == null) { response.sendRedirect(request.getContextPath() + Const.LOGIN); return false; } else { User user = new User(); user.setUSER_ID(pd.getString("USER_ID")); user.setUSERNAME(pd.getString("USERNAME")); user.setPASSWORD(pd.getString("PASSWORD")); user.setNAME(pd.getString("NAME")); user.setRIGHTS(pd.getString("RIGHTS")); user.setROLE_ID(userSysInfo.getString("ROLE_ID")); user.setLAST_LOGIN(pd.getString("LAST_LOGIN")); user.setIP(pd.getString("IP")); user.setSTATUS(pd.getString("STATUS")); session.setAttribute(Const.TENANT_ID, userSysInfo.getString(Const.TENANT_ID)); session.setAttribute(Const.SESSION_USER, user); //把用户信息放session中 session.removeAttribute(Const.SESSION_SECURITY_CODE); //清除登录验证码的session //shiro加入身份验证 Subject subject = SecurityUtils.getSubject(); UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(user.getUSERNAME(), user.getPASSWORD()); try { subject.login(usernamePasswordToken); } catch (AuthenticationException e) { response.sendRedirect(request.getContextPath() + Const.LOGIN); return false; } } } return true; } } sourcecode/MVNFHM/src/main/java/com/fh/interceptor/shiro/ShiroRealm.java
New file @@ -0,0 +1,44 @@ package com.fh.interceptor.shiro; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationInfo; import org.apache.shiro.authc.AuthenticationToken; import org.apache.shiro.authc.SimpleAuthenticationInfo; import org.apache.shiro.authz.AuthorizationInfo; import org.apache.shiro.realm.AuthorizingRealm; import org.apache.shiro.subject.PrincipalCollection; /** * @author fh * 2015-3-6 */ public class ShiroRealm extends AuthorizingRealm { /* * 登录信息和用户验证信息验证(non-Javadoc) * @see org.apache.shiro.realm.AuthenticatingRealm#doGetAuthenticationInfo(org.apache.shiro.authc.AuthenticationToken) */ @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { String username = (String)token.getPrincipal(); //得到用户名 String password = new String((char[])token.getCredentials()); //得到密码 if(null != username && null != password){ return new SimpleAuthenticationInfo(username, password, getName()); }else{ return null; } } /* * 授权查询回调函数, 进行鉴权但缓存中无用户的授权信息时调用,负责在应用程序中决定用户的访问控制的方法(non-Javadoc) * @see org.apache.shiro.realm.AuthorizingRealm#doGetAuthorizationInfo(org.apache.shiro.subject.PrincipalCollection) */ @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection pc) { System.out.println("========2"); return null; } } sourcecode/MVNFHM/src/main/java/com/fh/listener/WebAppContextListener.java
New file @@ -0,0 +1,29 @@ package com.fh.listener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import org.springframework.web.context.support.WebApplicationContextUtils; import com.fh.util.Const; /** * * 类名称:WebAppContextListener.java * 类描述: * 作者:FH * 联系方式: * @version 1.0 */ public class WebAppContextListener implements ServletContextListener { public void contextDestroyed(ServletContextEvent event) { // TODO Auto-generated method stub } public void contextInitialized(ServletContextEvent event) { // TODO Auto-generated method stub Const.WEB_APP_CONTEXT = WebApplicationContextUtils.getWebApplicationContext(event.getServletContext()); //System.out.println("========获取Spring WebApplicationContext"); } } sourcecode/MVNFHM/src/main/java/com/fh/plugin/PagePlugin.java
New file @@ -0,0 +1,199 @@ package com.fh.plugin; import java.lang.reflect.Field; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import java.util.Properties; import javax.xml.bind.PropertyException; import org.apache.ibatis.executor.ErrorContext; import org.apache.ibatis.executor.ExecutorException; import org.apache.ibatis.executor.statement.BaseStatementHandler; import org.apache.ibatis.executor.statement.RoutingStatementHandler; import org.apache.ibatis.executor.statement.StatementHandler; import org.apache.ibatis.mapping.BoundSql; import org.apache.ibatis.mapping.MappedStatement; import org.apache.ibatis.mapping.ParameterMapping; import org.apache.ibatis.mapping.ParameterMode; import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.plugin.Intercepts; import org.apache.ibatis.plugin.Invocation; import org.apache.ibatis.plugin.Plugin; import org.apache.ibatis.plugin.Signature; import org.apache.ibatis.reflection.MetaObject; import org.apache.ibatis.reflection.property.PropertyTokenizer; import org.apache.ibatis.scripting.xmltags.ForEachSqlNode; import org.apache.ibatis.session.Configuration; import org.apache.ibatis.type.TypeHandler; import org.apache.ibatis.type.TypeHandlerRegistry; import com.fh.entity.Page; import com.fh.util.ReflectHelper; import com.fh.util.Tools; /** * * 类名称:分页插件 * 类描述: * @author FH * 作者单位: * 联系方式:qq313596790 * 修改时间:2016年2月1日 * @version 1.0 */ @Intercepts({@Signature(type=StatementHandler.class,method="prepare",args={Connection.class})}) public class PagePlugin implements Interceptor { private static String dialect = ""; //数据库方言 private static String pageSqlId = ""; //mapper.xml中需要拦截的ID(正则匹配) public Object intercept(Invocation ivk) throws Throwable { // TODO Auto-generated method stub if(ivk.getTarget() instanceof RoutingStatementHandler){ RoutingStatementHandler statementHandler = (RoutingStatementHandler)ivk.getTarget(); BaseStatementHandler delegate = (BaseStatementHandler) ReflectHelper.getValueByFieldName(statementHandler, "delegate"); MappedStatement mappedStatement = (MappedStatement) ReflectHelper.getValueByFieldName(delegate, "mappedStatement"); if(mappedStatement.getId().matches(pageSqlId)){ //拦截需要分页的SQL BoundSql boundSql = delegate.getBoundSql(); Object parameterObject = boundSql.getParameterObject();//分页SQL<select>中parameterType属性对应的实体参数,即Mapper接口中执行分页方法的参数,该参数不得为空 if(parameterObject==null){ throw new NullPointerException("parameterObject尚未实例化!"); }else{ Connection connection = (Connection) ivk.getArgs()[0]; String sql = boundSql.getSql(); //String countSql = "select count(0) from (" + sql+ ") as tmp_count"; //记录统计 String fhsql = sql; String countSql = "select count(0) from (" + fhsql+ ") tmp_count"; //记录统计 == oracle 加 as 报错(SQL command not properly ended) PreparedStatement countStmt = connection.prepareStatement(countSql); BoundSql countBS = new BoundSql(mappedStatement.getConfiguration(),countSql,boundSql.getParameterMappings(),parameterObject); setParameters(countStmt,mappedStatement,countBS,parameterObject); ResultSet rs = countStmt.executeQuery(); int count = 0; if (rs.next()) { count = rs.getInt(1); } rs.close(); countStmt.close(); //System.out.println(count); Page page = null; if(parameterObject instanceof Page){ //参数就是Page实体 page = (Page) parameterObject; page.setEntityOrField(true); page.setTotalResult(count); }else{ //参数为某个实体,该实体拥有Page属性 Field pageField = ReflectHelper.getFieldByFieldName(parameterObject,"page"); if(pageField!=null){ page = (Page) ReflectHelper.getValueByFieldName(parameterObject,"page"); if(page==null) page = new Page(); page.setEntityOrField(false); page.setTotalResult(count); ReflectHelper.setValueByFieldName(parameterObject,"page", page); //通过反射,对实体对象设置分页对象 }else{ throw new NoSuchFieldException(parameterObject.getClass().getName()+"不存在 page 属性!"); } } String pageSql = generatePageSql(sql,page); ReflectHelper.setValueByFieldName(boundSql, "sql", pageSql); //将分页sql语句反射回BoundSql. } } } return ivk.proceed(); } /** * 对SQL参数(?)设值,参考org.apache.ibatis.executor.parameter.DefaultParameterHandler * @param ps * @param mappedStatement * @param boundSql * @param parameterObject * @throws SQLException */ private void setParameters(PreparedStatement ps,MappedStatement mappedStatement,BoundSql boundSql,Object parameterObject) throws SQLException { ErrorContext.instance().activity("setting parameters").object(mappedStatement.getParameterMap().getId()); List<ParameterMapping> parameterMappings = boundSql.getParameterMappings(); if (parameterMappings != null) { Configuration configuration = mappedStatement.getConfiguration(); TypeHandlerRegistry typeHandlerRegistry = configuration.getTypeHandlerRegistry(); MetaObject metaObject = parameterObject == null ? null: configuration.newMetaObject(parameterObject); for (int i = 0; i < parameterMappings.size(); i++) { ParameterMapping parameterMapping = parameterMappings.get(i); if (parameterMapping.getMode() != ParameterMode.OUT) { Object value; String propertyName = parameterMapping.getProperty(); PropertyTokenizer prop = new PropertyTokenizer(propertyName); if (parameterObject == null) { value = null; } else if (typeHandlerRegistry.hasTypeHandler(parameterObject.getClass())) { value = parameterObject; } else if (boundSql.hasAdditionalParameter(propertyName)) { value = boundSql.getAdditionalParameter(propertyName); } else if (propertyName.startsWith(ForEachSqlNode.ITEM_PREFIX)&& boundSql.hasAdditionalParameter(prop.getName())) { value = boundSql.getAdditionalParameter(prop.getName()); if (value != null) { value = configuration.newMetaObject(value).getValue(propertyName.substring(prop.getName().length())); } } else { value = metaObject == null ? null : metaObject.getValue(propertyName); } TypeHandler typeHandler = parameterMapping.getTypeHandler(); if (typeHandler == null) { throw new ExecutorException("There was no TypeHandler found for parameter "+ propertyName + " of statement "+ mappedStatement.getId()); } typeHandler.setParameter(ps, i + 1, value, parameterMapping.getJdbcType()); } } } } /** * 根据数据库方言,生成特定的分页sql * @param sql * @param page * @return */ private String generatePageSql(String sql,Page page){ if(page!=null && Tools.notEmpty(dialect)){ StringBuffer pageSql = new StringBuffer(); if("mysql".equals(dialect)){ pageSql.append(sql); pageSql.append(" limit "+page.getCurrentResult()+","+page.getShowCount()); } return pageSql.toString(); }else{ return sql; } } public Object plugin(Object arg0) { // TODO Auto-generated method stub return Plugin.wrap(arg0, this); } public void setProperties(Properties p) { dialect = p.getProperty("dialect"); if (Tools.isEmpty(dialect)) { try { throw new PropertyException("dialect property is not found!"); } catch (PropertyException e) { // TODO Auto-generated catch block e.printStackTrace(); } } pageSqlId = p.getProperty("pageSqlId"); if (Tools.isEmpty(pageSqlId)) { try { throw new PropertyException("pageSqlId property is not found!"); } catch (PropertyException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } sourcecode/MVNFHM/src/main/java/com/fh/plugin/websocketInstantMsg/ChatServer.java
New file @@ -0,0 +1,128 @@ package com.fh.plugin.websocketInstantMsg; import java.io.IOException; import java.net.InetSocketAddress; import java.net.UnknownHostException; import java.util.Date; import net.sf.json.JSONObject; import org.java_websocket.WebSocket; import org.java_websocket.WebSocketImpl; import org.java_websocket.framing.Framedata; import org.java_websocket.handshake.ClientHandshake; import org.java_websocket.server.WebSocketServer; /** * 即时通讯 * @author FH * QQ 313596790 * 2015-5-16 */ public class ChatServer extends WebSocketServer{ public ChatServer(int port) throws UnknownHostException { super(new InetSocketAddress(port)); } public ChatServer(InetSocketAddress address) { super(address); } /** * 触发连接事件 */ @Override public void onOpen( WebSocket conn, ClientHandshake handshake ) { //this.sendToAll( "new connection: " + handshake.getResourceDescriptor() ); //System.out.println("===" + conn.getRemoteSocketAddress().getAddress().getHostAddress()); } /** * 触发关闭事件 */ @Override public void onClose( WebSocket conn, int code, String reason, boolean remote ) { userLeave(conn); } /** * 客户端发送消息到服务器时触发事件 */ @Override public void onMessage(WebSocket conn, String message){ message = message.toString(); if(null != message && message.startsWith("FHadminqq313596790")){ this.userjoin(message.replaceFirst("FHadminqq313596790", ""),conn); }if(null != message && message.startsWith("LeaveFHadminqq313596790")){ this.userLeave(conn); }if(null != message && message.contains("fhadmin886")){ String toUser = message.substring(message.indexOf("fhadmin886")+10, message.indexOf("fhfhadmin888")); message = message.substring(0, message.indexOf("fhadmin886")) +"[私信] "+ message.substring(message.indexOf("fhfhadmin888")+12, message.length()); ChatServerPool.sendMessageToUser(ChatServerPool.getWebSocketByUser(toUser),message);//向所某用户发送消息 ChatServerPool.sendMessageToUser(conn, message);//同时向本人发送消息 }else{ ChatServerPool.sendMessage(message.toString());//向所有在线用户发送消息 } } public void onFragment( WebSocket conn, Framedata fragment ) { } /** * 触发异常事件 */ @Override public void onError( WebSocket conn, Exception ex ) { ex.printStackTrace(); if( conn != null ) { //some errors like port binding failed may not be assignable to a specific websocket } } /** * 用户加入处理 * @param user */ public void userjoin(String user, WebSocket conn){ JSONObject result = new JSONObject(); result.element("type", "user_join"); result.element("user", "<a onclick=\"toUserMsg('"+user+"');\">"+user+"</a>"); ChatServerPool.sendMessage(result.toString()); //把当前用户加入到所有在线用户列表中 String joinMsg = "{\"from\":\"[系统]\",\"content\":\""+user+"上线了\",\"timestamp\":"+new Date().getTime()+",\"type\":\"message\"}"; ChatServerPool.sendMessage(joinMsg); //向所有在线用户推送当前用户上线的消息 result = new JSONObject(); result.element("type", "get_online_user"); ChatServerPool.addUser(user,conn); //向连接池添加当前的连接对象 result.element("list", ChatServerPool.getOnlineUser()); ChatServerPool.sendMessageToUser(conn, result.toString()); //向当前连接发送当前在线用户的列表 } /** * 用户下线处理 * @param user */ public void userLeave(WebSocket conn){ String user = ChatServerPool.getUserByKey(conn); boolean b = ChatServerPool.removeUser(conn); //在连接池中移除连接 if(b){ JSONObject result = new JSONObject(); result.element("type", "user_leave"); result.element("user", "<a onclick=\"toUserMsg('"+user+"');\">"+user+"</a>"); ChatServerPool.sendMessage(result.toString()); //把当前用户从所有在线用户列表中删除 String joinMsg = "{\"from\":\"[系统]\",\"content\":\""+user+"下线了\",\"timestamp\":"+new Date().getTime()+",\"type\":\"message\"}"; ChatServerPool.sendMessage(joinMsg); //向在线用户发送当前用户退出的消息 } } public static void main( String[] args ) throws InterruptedException , IOException { WebSocketImpl.DEBUG = false; int port = 8887; //端口 ChatServer s = new ChatServer(port); s.start(); //System.out.println( "服务器的端口" + s.getPort() ); } } sourcecode/MVNFHM/src/main/java/com/fh/plugin/websocketInstantMsg/ChatServerPool.java
New file @@ -0,0 +1,107 @@ package com.fh.plugin.websocketInstantMsg; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.java_websocket.WebSocket; /** * 即时通讯 * @author FH * QQ 313596790 * 2015-5-16 */ public class ChatServerPool { private static final Map<WebSocket,String> userconnections = new HashMap<WebSocket,String>(); /** * 获取用户名 * @param session */ public static String getUserByKey(WebSocket conn){ return userconnections.get(conn); } /** * 获取WebSocket * @param user */ public static WebSocket getWebSocketByUser(String user){ Set<WebSocket> keySet = userconnections.keySet(); synchronized (keySet) { for (WebSocket conn : keySet) { String cuser = userconnections.get(conn); if(cuser.equals(user)){ return conn; } } } return null; } /** * 向连接池中添加连接 * @param inbound */ public static void addUser(String user, WebSocket conn){ userconnections.put(conn,user); //添加连接 } /** * 获取所有的在线用户 * @return */ public static Collection<String> getOnlineUser(){ List<String> setUsers = new ArrayList<String>(); Collection<String> setUser = userconnections.values(); for(String u:setUser){ setUsers.add("<a onclick=\"toUserMsg('"+u+"');\">"+u+"</a>"); } return setUsers; } /** * 移除连接池中的连接 * @param inbound */ public static boolean removeUser(WebSocket conn){ if(userconnections.containsKey(conn)){ userconnections.remove(conn); //移除连接 return true; }else{ return false; } } /** * 向特定的用户发送数据 * @param user * @param message */ public static void sendMessageToUser(WebSocket conn,String message){ if(null != conn && null != userconnections.get(conn)){ conn.send(message); } } /** * 向所有的用户发送消息 * @param message */ public static void sendMessage(String message){ Set<WebSocket> keySet = userconnections.keySet(); synchronized (keySet) { for (WebSocket conn : keySet) { String user = userconnections.get(conn); if(user != null){ conn.send(message); } } } } } sourcecode/MVNFHM/src/main/java/com/fh/plugin/websocketOnline/OnlineChatServer.java
New file @@ -0,0 +1,195 @@ package com.fh.plugin.websocketOnline; import java.io.IOException; import java.net.InetSocketAddress; import java.net.UnknownHostException; import net.sf.json.JSONObject; import org.java_websocket.WebSocket; import org.java_websocket.WebSocketImpl; import org.java_websocket.framing.Framedata; import org.java_websocket.handshake.ClientHandshake; import org.java_websocket.server.WebSocketServer; /** * 在线管理 * @author FH * QQ 313596790 * 2015-5-25 */ public class OnlineChatServer extends WebSocketServer{ public OnlineChatServer(int port) throws UnknownHostException { super(new InetSocketAddress(port)); } public OnlineChatServer(InetSocketAddress address) { super(address); } /** * 触发连接事件 */ @Override public void onOpen( WebSocket conn, ClientHandshake handshake ) { //this.sendToAll( "new connection: " + handshake.getResourceDescriptor() ); //System.out.println("===" + conn.getRemoteSocketAddress().getAddress().getHostAddress()); } /** * 触发关闭事件 */ @Override public void onClose( WebSocket conn, int code, String reason, boolean remote ) { userLeave(conn); } /** * 客户端发送消息到服务器时触发事件 */ @Override public void onMessage(WebSocket conn, String message){ message = message.toString(); if(null != message && message.startsWith("[join]")){ this.userjoin(message.replaceFirst("\\[join\\]", ""),conn); }else if(null != message && message.startsWith("[goOut]")){ this.goOut(message.replaceFirst("\\[goOut\\]", "")); }else if(null != message && message.startsWith("[fhsms]")){ this.senFhsms(message.replaceFirst("\\[fhsms\\]", "")); }else if(null != message && message.startsWith("[leave]")){ this.userLeave(conn); }else if(null != message && message.startsWith("[count]")){ this.getUserCount(conn); }else if(null != message && message.startsWith("[QQ313596790]")){ OnlineChatServerPool.setFhadmin(conn); this.getUserList(); }else{ OnlineChatServerPool.sendMessageToUser(conn, message);//同时向本人发送消息 } } public void onFragment( WebSocket conn, Framedata fragment ) { } /** * 触发异常事件 */ @Override public void onError( WebSocket conn, Exception ex ) { //ex.printStackTrace(); if( conn != null ) { //some errors like port binding failed may not be assignable to a specific websocket } } /** * 用户加入处理 * @param user */ public void userjoin(String user, WebSocket conn){ onlineMaganger(1,user,conn); } /** * 站内信通知 * @param user */ public void senFhsms(String user){ JSONObject result = new JSONObject(); result.element("type", "senFhsms"); OnlineChatServerPool.sendMessageToUser(OnlineChatServerPool.getWebSocketByUser(user),result.toString()); } /** * 强制某用户下线 * @param user */ public void goOut(String user){ this.goOut(OnlineChatServerPool.getWebSocketByUser(user),"thegoout"); } /** * 强制用户下线 * @param conn */ public void goOut(WebSocket conn,String type){ JSONObject result = new JSONObject(); result.element("type", type); result.element("msg", "goOut"); OnlineChatServerPool.sendMessageToUser(conn,result.toString()); } /** * 用户下线处理 * @param user */ public void userLeave(WebSocket conn){ onlineMaganger(2,null,conn); } /** * 获取在线总数 * @param user */ public void getUserCount(WebSocket conn){ JSONObject result = new JSONObject(); result.element("type", "count"); result.element("msg", OnlineChatServerPool.getUserCount()); OnlineChatServerPool.sendMessageToUser(conn,result.toString()); } /** * 获取在线用户列表 * @param user */ public void getUserList(){ WebSocket conn = OnlineChatServerPool.getFhadmin(); if(null == conn){return;} JSONObject result = new JSONObject(); result.element("type", "userlist"); result.element("list", OnlineChatServerPool.getOnlineUser()); OnlineChatServerPool.sendMessageToUser(conn,result.toString()); } /**用户上下线管理 * @param type 1:上线;2:下线 * @param user * @param conn */ public synchronized void onlineMaganger(int type,String user, WebSocket conn){ if(type == 1){ if(null == OnlineChatServerPool.getWebSocketByUser(user)){ //判断用户是否在其它终端登录 OnlineChatServerPool.addUser(user,conn); //向连接池添加当前的连接对象 addUserToFhadmin(user); }else{ goOut(conn,"goOut"); } }else{ OnlineChatServerPool.removeUser(conn); //在连接池中移除连接 this.getUserList(); } } /** * 有用户登录系统,加入在线列表 * @param conn */ public void addUserToFhadmin(String user){ WebSocket conn = OnlineChatServerPool.getFhadmin(); if(null == conn){return;} JSONObject result = new JSONObject(); result.element("type", "addUser"); result.element("user", user); OnlineChatServerPool.sendMessageToUser(conn,result.toString()); } public static void main( String[] args ) throws InterruptedException , IOException { WebSocketImpl.DEBUG = false; int port = 8887; //端口 OnlineChatServer s = new OnlineChatServer(port); s.start(); //System.out.println( "服务器的端口" + s.getPort() ); } } sourcecode/MVNFHM/src/main/java/com/fh/plugin/websocketOnline/OnlineChatServerPool.java
New file @@ -0,0 +1,125 @@ package com.fh.plugin.websocketOnline; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.java_websocket.WebSocket; /** * 在线管理 * @author FH * QQ 313596790 * 2015-5-25 */ public class OnlineChatServerPool { private static final Map<WebSocket,String> userconnections = new HashMap<WebSocket,String>(); private static WebSocket fhadmin = null;; /** * 获取用户名 * @param session */ public static String getUserByKey(WebSocket conn){ return userconnections.get(conn); } /** * 获取在线总数 * @param */ public static int getUserCount(){ return userconnections.size(); } /** * 获取WebSocket * @param user */ public static WebSocket getWebSocketByUser(String user){ Set<WebSocket> keySet = userconnections.keySet(); synchronized (keySet) { for (WebSocket conn : keySet) { String cuser = userconnections.get(conn); if(cuser.equals(user)){ return conn; } } } return null; } /** * 向连接池中添加连接 * @param inbound */ public static void addUser(String user, WebSocket conn){ userconnections.put(conn,user); //添加连接 } /** * 获取所有的在线用户 * @return */ public static Collection<String> getOnlineUser(){ List<String> setUsers = new ArrayList<String>(); Collection<String> setUser = userconnections.values(); for(String u:setUser){ setUsers.add(u); } return setUsers; } /** * 移除连接池中的连接 * @param inbound */ public static boolean removeUser(WebSocket conn){ if(userconnections.containsKey(conn)){ userconnections.remove(conn); //移除连接 return true; }else{ return false; } } /** * 向特定的用户发送数据 * @param user * @param message */ public static void sendMessageToUser(WebSocket conn,String message){ if(null != conn){ conn.send(message); } } /** * 向所有的用户发送消息 * @param message */ public static void sendMessage(String message){ Set<WebSocket> keySet = userconnections.keySet(); synchronized (keySet) { for (WebSocket conn : keySet) { String user = userconnections.get(conn); if(user != null){ conn.send(message); } } } } public static WebSocket getFhadmin() { return fhadmin; } public static void setFhadmin(WebSocket fhadmin) { OnlineChatServerPool.fhadmin = fhadmin; } } sourcecode/MVNFHM/src/main/java/com/fh/resolver/MyExceptionResolver.java
New file @@ -0,0 +1,30 @@ package com.fh.resolver; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView; /** * * 类名称:MyExceptionResolver.java * 类描述: * @author FH * 作者单位: * 联系方式:QQ313596790 * @version 1.0 */ public class MyExceptionResolver implements HandlerExceptionResolver{ public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { // TODO Auto-generated method stub System.out.println("==============异常开始============="); ex.printStackTrace(); System.out.println("==============异常结束============="); ModelAndView mv = new ModelAndView("error"); mv.addObject("exception", ex.toString().replaceAll("\n", "<br/>")); return mv; } } sourcecode/MVNFHM/src/main/java/com/fh/service/dst/datasource2/DataSource2Manager.java
New file @@ -0,0 +1,58 @@ package com.fh.service.dst.datasource2; import java.util.List; import com.fh.entity.Page; import com.fh.util.PageData; /** * 说明: 第2数据源例子接口 * 创建人:FH Q313596790 * 创建时间:2016-04-29 * @version */ public interface DataSource2Manager{ /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception; /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception; /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception; /**列表 * @param page * @throws Exception */ public List<PageData> list(Page page)throws Exception; /**列表(全部) * @param pd * @throws Exception */ public List<PageData> listAll(PageData pd)throws Exception; /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception; /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/dst/datasource2/impl/DataSource2Service.java
New file @@ -0,0 +1,82 @@ package com.fh.service.dst.datasource2.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport2; import com.fh.entity.Page; import com.fh.util.PageData; import com.fh.service.dst.datasource2.DataSource2Manager; /** * 说明: 第2数据源例子 * 创建人:FH Q313596790 * 创建时间:2016-04-29 * @version */ @Service("datasource2Service") public class DataSource2Service implements DataSource2Manager{ @Resource(name = "daoSupport2") private DaoSupport2 dao; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("DataSource2Mapper.save", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("DataSource2Mapper.delete", pd); } /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception{ dao.update("DataSource2Mapper.edit", pd); } /**列表 * @param page * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> list(Page page)throws Exception{ return (List<PageData>)dao.findForList("DataSource2Mapper.datalistPage", page); } /**列表(全部) * @param pd * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAll(PageData pd)throws Exception{ return (List<PageData>)dao.findForList("DataSource2Mapper.listAll", pd); } /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("DataSource2Mapper.findById", pd); } /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception{ dao.delete("DataSource2Mapper.deleteAll", ArrayDATA_IDS); } } sourcecode/MVNFHM/src/main/java/com/fh/service/fhdb/brdb/BRdbManager.java
New file @@ -0,0 +1,58 @@ package com.fh.service.fhdb.brdb; import java.util.List; import com.fh.entity.Page; import com.fh.util.PageData; /** * 说明: 数据库管理接口 * 创建人:FH Q313596790 * 创建时间:2016-03-30 * @version */ public interface BRdbManager{ /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception; /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception; /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception; /**列表 * @param page * @throws Exception */ public List<PageData> list(Page page)throws Exception; /**列表(全部) * @param pd * @throws Exception */ public List<PageData> listAll(PageData pd)throws Exception; /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception; /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/fhdb/brdb/impl/BRdbService.java
New file @@ -0,0 +1,85 @@ package com.fh.service.fhdb.brdb.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.util.PageData; import com.fh.service.fhdb.brdb.BRdbManager; /** * 说明: 数据库管理 * 创建人:FH Q313596790 * 创建时间:2016-03-30 * @version */ @Service("brdbService") public class BRdbService implements BRdbManager{ @Resource(name = "daoSupport") private DaoSupport dao; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("FhdbMapper.save", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("FhdbMapper.delete", pd); } /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception{ dao.update("FhdbMapper.edit", pd); } /**列表 * @param page * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> list(Page page)throws Exception{ return (List<PageData>)dao.findForList("FhdbMapper.datalistPage", page); } /**列表(全部) * @param pd * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAll(PageData pd)throws Exception{ return (List<PageData>)dao.findForList("FhdbMapper.listAll", pd); } /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("FhdbMapper.findById", pd); } /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception{ dao.delete("FhdbMapper.deleteAll", ArrayDATA_IDS); } } sourcecode/MVNFHM/src/main/java/com/fh/service/fhdb/timingbackup/TimingBackUpManager.java
New file @@ -0,0 +1,64 @@ package com.fh.service.fhdb.timingbackup; import java.util.List; import com.fh.entity.Page; import com.fh.util.PageData; /** * 说明: 定时备份接口 * 创建人:FH Q313596790 * 创建时间:2016-04-09 * @version */ public interface TimingBackUpManager{ /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception; /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception; /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception; /**列表 * @param page * @throws Exception */ public List<PageData> list(Page page)throws Exception; /**列表(全部) * @param pd * @throws Exception */ public List<PageData> listAll(PageData pd)throws Exception; /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception; /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception; /**切换状态 * @param pd * @throws Exception */ public void changeStatus(PageData pd)throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/fhdb/timingbackup/impl/TimingBackUpService.java
New file @@ -0,0 +1,93 @@ package com.fh.service.fhdb.timingbackup.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.util.PageData; import com.fh.service.fhdb.timingbackup.TimingBackUpManager; /** * 说明: 定时备份 * 创建人:FH Q313596790 * 创建时间:2016-04-09 * @version */ @Service("timingbackupService") public class TimingBackUpService implements TimingBackUpManager{ @Resource(name = "daoSupport") private DaoSupport dao; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("TimingBackUpMapper.save", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("TimingBackUpMapper.delete", pd); } /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception{ dao.update("TimingBackUpMapper.edit", pd); } /**列表 * @param page * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> list(Page page)throws Exception{ return (List<PageData>)dao.findForList("TimingBackUpMapper.datalistPage", page); } /**列表(全部) * @param pd * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAll(PageData pd)throws Exception{ return (List<PageData>)dao.findForList("TimingBackUpMapper.listAll", pd); } /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("TimingBackUpMapper.findById", pd); } /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception{ dao.delete("TimingBackUpMapper.deleteAll", ArrayDATA_IDS); } /**切换状态 * @param pd * @throws Exception */ public void changeStatus(PageData pd) throws Exception { dao.update("TimingBackUpMapper.changeStatus", pd); } } sourcecode/MVNFHM/src/main/java/com/fh/service/fhoa/datajur/DatajurManager.java
New file @@ -0,0 +1,38 @@ package com.fh.service.fhoa.datajur; import com.fh.util.PageData; /** * 说明: 组织数据权限接口 * 创建人:FH Q313596790 * 创建时间:2016-04-26 * @version */ public interface DatajurManager{ /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception; /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception; /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception; /**取出某用户的组织数据权限 * @param pd * @throws Exception */ public PageData getDEPARTMENT_IDS(String USERNAME)throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/fhoa/datajur/impl/DatajurService.java
New file @@ -0,0 +1,57 @@ package com.fh.service.fhoa.datajur.impl; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.util.PageData; import com.fh.service.fhoa.datajur.DatajurManager; /** * 说明: 组织数据权限表 * 创建人:FH Q313596790 * 创建时间:2016-04-26 * @version */ @Service("datajurService") public class DatajurService implements DatajurManager{ @Resource(name = "daoSupport") private DaoSupport dao; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("DatajurMapper.save", pd); } /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception{ dao.update("DatajurMapper.edit", pd); } /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("DatajurMapper.findById", pd); } /**取出某用户的组织数据权限 * @param pd * @throws Exception */ public PageData getDEPARTMENT_IDS(String USERNAME)throws Exception{ return (PageData)dao.findForObject("DatajurMapper.getDEPARTMENT_IDS", USERNAME); } } sourcecode/MVNFHM/src/main/java/com/fh/service/fhoa/department/DepartmentManager.java
New file @@ -0,0 +1,89 @@ package com.fh.service.fhoa.department; import java.util.List; import com.fh.entity.Page; import com.fh.entity.system.Department; import com.fh.util.PageData; /** * 说明: 组织机构接口类 * 创建人:FH Q313596790 * 创建时间:2015-12-16 * @version */ public interface DepartmentManager{ /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception; /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception; /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception; /**列表 * @param page * @throws Exception */ public List<PageData> list(Page page)throws Exception; /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception; /**通过编码获取数据 * @param pd * @throws Exception */ public PageData findByBianma(PageData pd)throws Exception; /** * 通过ID获取其子级列表 * @param parentId * @return * @throws Exception */ public List<Department> listSubDepartmentByParentId(PageData pd) throws Exception; /** * 获取所有数据并填充每条数据的子级列表(递归处理) * @param MENU_ID * @return * @throws Exception */ public List<Department> listAllDepartment(PageData pd) throws Exception; public List<Department> getDepList(PageData pd)throws Exception; public List<PageData> getTenantAllDptList(PageData pd)throws Exception; /** * 获取所有数据并填充每条数据的子级列表(递归处理)下拉ztree用 * @param MENU_ID * @return * @throws Exception */ public List<PageData> listAllDepartmentToSelect(PageData pd, List<PageData> zdepartmentPdList) throws Exception; /**获取某个部门所有下级部门ID(返回拼接字符串 in的形式) * @param DEPARTMENT_ID * @return * @throws Exception */ public String getDEPARTMENT_IDS(PageData pd) throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/fhoa/department/impl/DepartmentService.java
New file @@ -0,0 +1,188 @@ package com.fh.service.fhoa.department.impl; import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.entity.system.Department; import com.fh.util.PageData; import com.fh.util.Tools; import com.fh.service.fhoa.department.DepartmentManager; /** * 说明: 组织机构 * 创建人:FH Q313596790 * 创建时间:2015-12-16 * @version */ @Service("departmentService") public class DepartmentService implements DepartmentManager{ @Resource(name = "daoSupport") private DaoSupport dao; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("DepartmentMapper.save", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("DepartmentMapper.delete", pd); } /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception{ dao.update("DepartmentMapper.edit", pd); } /**列表 * @param page * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> list(Page page)throws Exception{ return (List<PageData>)dao.findForList("DepartmentMapper.datalistPage", page); } /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("DepartmentMapper.findById", pd); } /**通过编码获取数据 * @param pd * @throws Exception */ public PageData findByBianma(PageData pd)throws Exception{ return (PageData)dao.findForObject("DepartmentMapper.findByBianma", pd); } /** * 通过ID获取其子级列表 * @param parentId * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<Department> listSubDepartmentByParentId(PageData pd) throws Exception { return (List<Department>) dao.findForList("DepartmentMapper.listSubDepartmentByParentId", pd); } /** * 获取所有数据并填充每条数据的子级列表(递归处理) * @param MENU_ID * @return * @throws Exception */ public List<Department> listAllDepartment(PageData pd) throws Exception { List<Department> departmentList = this.listSubDepartmentByParentId(pd); for(Department depar : departmentList){ depar.setTreeurl("department/list.do?DEPARTMENT_ID="+depar.getDEPARTMENT_ID()+"&SYSTEM_ID=" + depar.getSYSTEM_ID()); pd.put("PARENT_ID",depar.getDEPARTMENT_ID()); depar.setSubDepartment(this.listAllDepartment(pd)); depar.setTarget("treeFrame"); depar.setIcon("static/images/user.gif"); } return departmentList; } public List<Department> getDepList(PageData pd) throws Exception { List<Department> departmentList = this.listSubDepartmentByParentId(pd); for(Department depar : departmentList){ pd.put("PARENT_ID",depar.getDEPARTMENT_ID()); depar.setSubDepartment(this.getDepList(pd)); } return departmentList; } /** * 获取所有数据并填充每条数据的子级列表(递归处理)下拉ztree用 * @param MENU_ID * @return * @throws Exception */ public List<PageData> listAllDepartmentToSelect(PageData pd,List<PageData> zdepartmentPdList) throws Exception { List<PageData>[] arrayDep = this.listAllbyPd(pd,zdepartmentPdList); List<PageData> departmentPdList = arrayDep[1]; for(PageData pd1 : departmentPdList){ pd1.put("SYSTEM_ID", pd.getString("SYSTEM_ID")); pd1.put("PARENT_ID", pd1.getString("id")); this.listAllDepartmentToSelect(pd1,arrayDep[0]); } return arrayDep[0]; } /**下拉ztree用 * @param parentId * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData>[] listAllbyPd(PageData pd,List<PageData> zdepartmentPdList) throws Exception { List<Department> departmentList = this.listSubDepartmentByParentId(pd); List<PageData> departmentPdList = new ArrayList<PageData>(); for(Department depar : departmentList){ PageData pd1 = new PageData(); pd1.put("id", depar.getDEPARTMENT_ID()); pd1.put("parentId", depar.getPARENT_ID()); pd1.put("name", depar.getNAME()); pd1.put("icon", "static/images/user.gif"); departmentPdList.add(pd1); zdepartmentPdList.add(pd1); } List<PageData>[] arrayDep = new List[2]; arrayDep[0] = zdepartmentPdList; arrayDep[1] = departmentPdList; return arrayDep; } /**获取某个部门所有下级部门ID(返回拼接字符串 in的形式, ('a','b','c')) * @param DEPARTMENT_ID * @return * @throws Exception */ public String getDEPARTMENT_IDS(PageData pd) throws Exception { //String DEPARTMENT_ID = pd.getString("parentId"); //DEPARTMENT_ID = Tools.notEmpty(DEPARTMENT_ID)?DEPARTMENT_ID:"0"; List<PageData> zdepartmentPdList = new ArrayList<PageData>(); zdepartmentPdList = this.listAllDepartmentToSelect(pd,zdepartmentPdList); StringBuffer sb = new StringBuffer(); sb.append("("); for(PageData dpd : zdepartmentPdList){ sb.append("'"); sb.append(dpd.getString("id")); sb.append("'"); sb.append(","); } sb.append("'fh')"); return sb.toString(); } /** * 获取租户所有的部门list */ @SuppressWarnings("unchecked") public List<PageData> getTenantAllDptList(PageData pd) throws Exception { return (List<PageData>)dao.findForList("DepartmentMapper.getTenantAllDptList", pd); } } sourcecode/MVNFHM/src/main/java/com/fh/service/fhoa/fhfile/FhfileManager.java
New file @@ -0,0 +1,58 @@ package com.fh.service.fhoa.fhfile; import java.util.List; import com.fh.entity.Page; import com.fh.util.PageData; /** * 说明: 文件管理接口 * 创建人:FH Q313596790 * 创建时间:2016-05-27 * @version */ public interface FhfileManager{ /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception; /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception; /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception; /**列表 * @param page * @throws Exception */ public List<PageData> list(Page page)throws Exception; /**列表(全部) * @param pd * @throws Exception */ public List<PageData> listAll(PageData pd)throws Exception; /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception; /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/fhoa/fhfile/impl/FhfileService.java
New file @@ -0,0 +1,82 @@ package com.fh.service.fhoa.fhfile.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.util.PageData; import com.fh.service.fhoa.fhfile.FhfileManager; /** * 说明: 文件管理 * 创建人:FH Q313596790 * 创建时间:2016-05-27 * @version */ @Service("fhfileService") public class FhfileService implements FhfileManager{ @Resource(name = "daoSupport") private DaoSupport dao; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("FhfileMapper.save", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("FhfileMapper.delete", pd); } /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception{ dao.update("FhfileMapper.edit", pd); } /**列表 * @param page * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> list(Page page)throws Exception{ return (List<PageData>)dao.findForList("FhfileMapper.datalistPage", page); } /**列表(全部) * @param pd * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAll(PageData pd)throws Exception{ return (List<PageData>)dao.findForList("FhfileMapper.listAll", pd); } /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("FhfileMapper.findById", pd); } /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception{ dao.delete("FhfileMapper.deleteAll", ArrayDATA_IDS); } } sourcecode/MVNFHM/src/main/java/com/fh/service/fhoa/staff/StaffManager.java
New file @@ -0,0 +1,64 @@ package com.fh.service.fhoa.staff; import java.util.List; import com.fh.entity.Page; import com.fh.util.PageData; /** * 说明: 员工管理接口 * 创建人:FH Q313596790 * 创建时间:2016-04-23 * @version */ public interface StaffManager{ /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception; /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception; /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception; /**列表 * @param page * @throws Exception */ public List<PageData> list(Page page)throws Exception; /**列表(全部) * @param pd * @throws Exception */ public List<PageData> listAll(PageData pd)throws Exception; /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception; /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception; /**绑定用户 * @param pd * @throws Exception */ public void userBinding(PageData pd)throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/fhoa/staff/impl/StaffService.java
New file @@ -0,0 +1,90 @@ package com.fh.service.fhoa.staff.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.util.PageData; import com.fh.service.fhoa.staff.StaffManager; /** * 说明: 员工管理 * 创建人:FH Q313596790 * 创建时间:2016-04-23 * @version */ @Service("staffService") public class StaffService implements StaffManager{ @Resource(name = "daoSupport") private DaoSupport dao; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("StaffMapper.save", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("StaffMapper.delete", pd); } /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception{ dao.update("StaffMapper.edit", pd); } /**列表 * @param page * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> list(Page page)throws Exception{ return (List<PageData>)dao.findForList("StaffMapper.datalistPage", page); } /**列表(全部) * @param pd * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAll(PageData pd)throws Exception{ return (List<PageData>)dao.findForList("StaffMapper.listAll", pd); } /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("StaffMapper.findById", pd); } /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception{ dao.delete("StaffMapper.deleteAll", ArrayDATA_IDS); } /**绑定用户 * @param pd * @throws Exception */ public void userBinding(PageData pd)throws Exception{ dao.update("StaffMapper.userBinding", pd); } } sourcecode/MVNFHM/src/main/java/com/fh/service/information/attached/AttachedManager.java
New file @@ -0,0 +1,58 @@ package com.fh.service.information.attached; import java.util.List; import com.fh.entity.Page; import com.fh.util.PageData; /** * 说明: 主附结构接口 * 创建人:FH Q313596790 * 创建时间:2016-04-17 * @version */ public interface AttachedManager{ /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception; /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception; /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception; /**列表 * @param page * @throws Exception */ public List<PageData> list(Page page)throws Exception; /**列表(全部) * @param pd * @throws Exception */ public List<PageData> listAll(PageData pd)throws Exception; /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception; /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/information/attached/impl/AttachedService.java
New file @@ -0,0 +1,82 @@ package com.fh.service.information.attached.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.util.PageData; import com.fh.service.information.attached.AttachedManager; /** * 说明: 主附结构 * 创建人:FH Q313596790 * 创建时间:2016-04-17 * @version */ @Service("attachedService") public class AttachedService implements AttachedManager{ @Resource(name = "daoSupport") private DaoSupport dao; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("AttachedMapper.save", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("AttachedMapper.delete", pd); } /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception{ dao.update("AttachedMapper.edit", pd); } /**列表 * @param page * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> list(Page page)throws Exception{ return (List<PageData>)dao.findForList("AttachedMapper.datalistPage", page); } /**列表(全部) * @param pd * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAll(PageData pd)throws Exception{ return (List<PageData>)dao.findForList("AttachedMapper.listAll", pd); } /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("AttachedMapper.findById", pd); } /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception{ dao.delete("AttachedMapper.deleteAll", ArrayDATA_IDS); } } sourcecode/MVNFHM/src/main/java/com/fh/service/information/attachedmx/AttachedMxManager.java
New file @@ -0,0 +1,65 @@ package com.fh.service.information.attachedmx; import java.util.List; import com.fh.entity.Page; import com.fh.util.PageData; /** * 说明: 明细表接口 * 创建人:FH Q313596790 * 创建时间:2016-04-17 * @version */ public interface AttachedMxManager{ /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception; /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception; /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception; /**列表 * @param page * @throws Exception */ public List<PageData> list(Page page)throws Exception; /**列表(全部) * @param pd * @throws Exception */ public List<PageData> listAll(PageData pd)throws Exception; /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception; /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception; /**查询明细总数 * @param pd * @throws Exception */ public PageData findCount(PageData pd)throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/information/attachedmx/impl/AttachedMxService.java
New file @@ -0,0 +1,93 @@ package com.fh.service.information.attachedmx.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.util.PageData; import com.fh.service.information.attachedmx.AttachedMxManager; /** * 说明: 明细表 * 创建人:FH Q313596790 * 创建时间:2016-04-17 * @version */ @Service("attachedmxService") public class AttachedMxService implements AttachedMxManager{ @Resource(name = "daoSupport") private DaoSupport dao; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("AttachedMxMapper.save", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("AttachedMxMapper.delete", pd); } /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception{ dao.update("AttachedMxMapper.edit", pd); } /**列表 * @param page * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> list(Page page)throws Exception{ return (List<PageData>)dao.findForList("AttachedMxMapper.datalistPage", page); } /**列表(全部) * @param pd * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAll(PageData pd)throws Exception{ return (List<PageData>)dao.findForList("AttachedMxMapper.listAll", pd); } /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("AttachedMxMapper.findById", pd); } /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception{ dao.delete("AttachedMxMapper.deleteAll", ArrayDATA_IDS); } /**查询明细总数 * @param pd * @throws Exception */ public PageData findCount(PageData pd)throws Exception{ return (PageData)dao.findForObject("AttachedMxMapper.findCount", pd); } } sourcecode/MVNFHM/src/main/java/com/fh/service/information/pictures/PicturesManager.java
New file @@ -0,0 +1,66 @@ package com.fh.service.information.pictures; import java.util.List; import com.fh.entity.Page; import com.fh.util.PageData; /** 图片管理接口 * @author fh313596790qq(青苔) * 修改时间:2015.11.2 */ public interface PicturesManager { /**列表 * @param page * @return * @throws Exception */ public List<PageData> list(Page page)throws Exception; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception; /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception; /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception; /**通过id获取数据 * @param pd * @return * @throws Exception */ public PageData findById(PageData pd)throws Exception; /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception; /**批量获取 * @param ArrayDATA_IDS * @return * @throws Exception */ public List<PageData> getAllById(String[] ArrayDATA_IDS)throws Exception; /**删除图片 * @param pd * @throws Exception */ public void delTp(PageData pd)throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/information/pictures/impl/PicturesService.java
New file @@ -0,0 +1,95 @@ package com.fh.service.information.pictures.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.service.information.pictures.PicturesManager; import com.fh.util.PageData; /** 图片管理 * @author fh313596790qq(青苔) * 修改时间:2015.11.2 */ @Service("picturesService") public class PicturesService implements PicturesManager { @Resource(name = "daoSupport") private DaoSupport dao; /**列表 * @param page * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> list(Page page)throws Exception{ return (List<PageData>)dao.findForList("PicturesMapper.datalistPage", page); } /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("PicturesMapper.save", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("PicturesMapper.delete", pd); } /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception{ dao.update("PicturesMapper.edit", pd); } /**通过id获取数据 * @param pd * @return * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("PicturesMapper.findById", pd); } /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception{ dao.delete("PicturesMapper.deleteAll", ArrayDATA_IDS); } /**批量获取 * @param ArrayDATA_IDS * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> getAllById(String[] ArrayDATA_IDS)throws Exception{ return (List<PageData>)dao.findForList("PicturesMapper.getAllById", ArrayDATA_IDS); } /**删除图片 * @param pd * @throws Exception */ public void delTp(PageData pd)throws Exception{ dao.update("PicturesMapper.delTp", pd); } } sourcecode/MVNFHM/src/main/java/com/fh/service/system/appuser/AppuserManager.java
New file @@ -0,0 +1,95 @@ package com.fh.service.system.appuser; import java.util.List; import com.fh.entity.Page; import com.fh.util.PageData; /** 会员接口类 * @author fh313596790qq(青苔) * 修改时间:2015.11.2 */ public interface AppuserManager { /**列出某角色下的所有会员 * @param pd * @return * @throws Exception */ public List<PageData> listAllAppuserByRorlid(PageData pd) throws Exception; /**会员列表 * @param page * @return * @throws Exception */ public List<PageData> listPdPageUser(Page page)throws Exception; /**通过用户名获取数据 * @param pd * @return * @throws Exception */ public PageData findByUsername(PageData pd)throws Exception; /**通过邮箱获取数据 * @param pd * @return * @throws Exception */ public PageData findByEmail(PageData pd)throws Exception; /**通过编号获取数据 * @param pd * @return * @throws Exception */ public PageData findByNumber(PageData pd)throws Exception; /**保存用户 * @param pd * @throws Exception */ public void saveU(PageData pd)throws Exception; /**删除用户 * @param pd * @throws Exception */ public void deleteU(PageData pd)throws Exception; /**修改用户 * @param pd * @throws Exception */ public void editU(PageData pd)throws Exception; /**通过id获取数据 * @param pd * @return * @throws Exception */ public PageData findByUiId(PageData pd)throws Exception; /**全部会员 * @param pd * @return * @throws Exception */ public List<PageData> listAllUser(PageData pd)throws Exception; /**批量删除用户 * @param USER_IDS * @throws Exception */ public void deleteAllU(String[] USER_IDS)throws Exception; /**获取总数 * @param pd * @throws Exception */ public PageData getAppUserCount(String value)throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/system/appuser/impl/AppuserService.java
New file @@ -0,0 +1,132 @@ package com.fh.service.system.appuser.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.service.system.appuser.AppuserManager; import com.fh.util.PageData; /**类名称:AppuserService * @author FH Q313596790 * 修改时间:2015年11月6日 */ @Service("appuserService") public class AppuserService implements AppuserManager{ @Resource(name = "daoSupport") private DaoSupport dao; /**列出某角色下的所有会员 * @param pd * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAllAppuserByRorlid(PageData pd) throws Exception { return (List<PageData>) dao.findForList("AppuserMapper.listAllAppuserByRorlid", pd); } /**会员列表 * @param page * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listPdPageUser(Page page)throws Exception{ return (List<PageData>) dao.findForList("AppuserMapper.userlistPage", page); } /**通过用户名获取数据 * @param pd * @return * @throws Exception */ public PageData findByUsername(PageData pd)throws Exception{ return (PageData)dao.findForObject("AppuserMapper.findByUsername", pd); } /**通过邮箱获取数据 * @param pd * @return * @throws Exception */ public PageData findByEmail(PageData pd)throws Exception{ return (PageData)dao.findForObject("AppuserMapper.findByEmail", pd); } /**通过编号获取数据 * @param pd * @return * @throws Exception */ public PageData findByNumber(PageData pd)throws Exception{ return (PageData)dao.findForObject("AppuserMapper.findByNumber", pd); } /**保存用户 * @param pd * @throws Exception */ public void saveU(PageData pd)throws Exception{ dao.save("AppuserMapper.saveU", pd); } /**删除用户 * @param pd * @throws Exception */ public void deleteU(PageData pd)throws Exception{ dao.delete("AppuserMapper.deleteU", pd); } /**修改用户 * @param pd * @throws Exception */ public void editU(PageData pd)throws Exception{ dao.update("AppuserMapper.editU", pd); } /**通过id获取数据 * @param pd * @return * @throws Exception */ public PageData findByUiId(PageData pd)throws Exception{ return (PageData)dao.findForObject("AppuserMapper.findByUiId", pd); } /**全部会员 * @param pd * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAllUser(PageData pd)throws Exception{ return (List<PageData>) dao.findForList("AppuserMapper.listAllUser", pd); } /**批量删除用户 * @param USER_IDS * @throws Exception */ public void deleteAllU(String[] USER_IDS)throws Exception{ dao.delete("AppuserMapper.deleteAllU", USER_IDS); } /**获取总数 * @param pd * @throws Exception */ public PageData getAppUserCount(String value)throws Exception{ return (PageData)dao.findForObject("AppuserMapper.getAppUserCount", value); } } sourcecode/MVNFHM/src/main/java/com/fh/service/system/buttonrights/ButtonrightsManager.java
New file @@ -0,0 +1,45 @@ package com.fh.service.system.buttonrights; import java.util.List; import com.fh.util.PageData; /** * 说明:按钮权限 接口 * 创建人:FH Q313596790 * 创建时间:2016-01-16 * @version */ public interface ButtonrightsManager{ /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception; /**通过(角色ID和按钮ID)获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception; /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception; /**列表(全部) * @param pd * @throws Exception */ public List<PageData> listAll(PageData pd)throws Exception; /**列表(全部)左连接按钮表,查出安全权限标识 * @param pd * @throws Exception */ public List<PageData> listAllBrAndQxname(PageData pd)throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/system/buttonrights/impl/ButtonrightsService.java
New file @@ -0,0 +1,68 @@ package com.fh.service.system.buttonrights.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.util.PageData; import com.fh.service.system.buttonrights.ButtonrightsManager; /** * 说明: 按钮权限 * 创建人:FH Q313596790 * 创建时间:2016-01-16 * @version */ @Service("buttonrightsService") public class ButtonrightsService implements ButtonrightsManager{ @Resource(name = "daoSupport") private DaoSupport dao; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("ButtonrightsMapper.save", pd); } /**通过(角色ID和按钮ID)获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd) throws Exception { return (PageData)dao.findForObject("ButtonrightsMapper.findById", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("ButtonrightsMapper.delete", pd); } /**列表(全部) * @param pd * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAll(PageData pd)throws Exception{ return (List<PageData>)dao.findForList("ButtonrightsMapper.listAll", pd); } /**列表(全部)左连接按钮表,查出安全权限标识 * @param pd * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAllBrAndQxname(PageData pd)throws Exception{ return (List<PageData>)dao.findForList("ButtonrightsMapper.listAllBrAndQxname", pd); } } sourcecode/MVNFHM/src/main/java/com/fh/service/system/createcode/CreateCodeManager.java
New file @@ -0,0 +1,52 @@ package com.fh.service.system.createcode; import java.util.List; import com.fh.entity.Page; import com.fh.util.PageData; /** * 类名称:代码生成器接口类 * 创建人:FH Q313596790 * 修改时间:2015年11月24日 * @version */ public interface CreateCodeManager { /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception; /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception; /**列表 * @param page * @throws Exception */ public List<PageData> list(Page page)throws Exception; /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception; /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception; /**列表(主表) * @param page * @throws Exception */ public List<PageData> listFa()throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/system/createcode/impl/CreateCodeService.java
New file @@ -0,0 +1,77 @@ package com.fh.service.system.createcode.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.service.system.createcode.CreateCodeManager; import com.fh.util.PageData; /** * 类名称:CreateCodeService 代码生成器 * 创建人:FH Q313596790 * 修改时间:2015年11月24日 * @version */ @Service("createcodeService") public class CreateCodeService implements CreateCodeManager{ @Resource(name = "daoSupport") private DaoSupport dao; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("CreateCodeMapper.save", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("CreateCodeMapper.delete", pd); } /**列表 * @param page * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> list(Page page)throws Exception{ return (List<PageData>)dao.findForList("CreateCodeMapper.datalistPage", page); } /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("CreateCodeMapper.findById", pd); } /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception{ dao.delete("CreateCodeMapper.deleteAll", ArrayDATA_IDS); } /**列表(主表) * @param page * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listFa() throws Exception { return (List<PageData>)dao.findForList("CreateCodeMapper.listFa", ""); } } sourcecode/MVNFHM/src/main/java/com/fh/service/system/dictionaries/DictionariesManager.java
New file @@ -0,0 +1,76 @@ package com.fh.service.system.dictionaries; import java.util.List; import com.fh.entity.Page; import com.fh.entity.system.Dictionaries; import com.fh.util.PageData; /** * 说明: 数据字典接口类 * 创建人:FH Q313596790 * 创建时间:2015-12-16 * @version */ public interface DictionariesManager{ /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception; /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception; /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception; /**列表 * @param page * @throws Exception */ public List<PageData> list(Page page)throws Exception; /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception; /**通过编码获取数据 * @param pd * @throws Exception */ public PageData findByBianma(PageData pd)throws Exception; /** * 通过ID获取其子级列表 * @param parentId * @return * @throws Exception */ public List<Dictionaries> listSubDictByParentId(String parentId) throws Exception; /** * 获取所有数据并填充每条数据的子级列表(递归处理) * @param MENU_ID * @return * @throws Exception */ public List<Dictionaries> listAllDict(String parentId) throws Exception; /**排查表检查是否被占用 * @param pd * @throws Exception */ public PageData findFromTbs(PageData pd)throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/system/dictionaries/impl/DictionariesService.java
New file @@ -0,0 +1,112 @@ package com.fh.service.system.dictionaries.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.entity.system.Dictionaries; import com.fh.util.PageData; import com.fh.service.system.dictionaries.DictionariesManager; /** * 说明: 数据字典 * 创建人:FH Q313596790 * 创建时间:2015-12-16 * @version */ @Service("dictionariesService") public class DictionariesService implements DictionariesManager{ @Resource(name = "daoSupport") private DaoSupport dao; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("DictionariesMapper.save", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("DictionariesMapper.delete", pd); } /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception{ dao.update("DictionariesMapper.edit", pd); } /**列表 * @param page * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> list(Page page)throws Exception{ return (List<PageData>)dao.findForList("DictionariesMapper.datalistPage", page); } /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("DictionariesMapper.findById", pd); } /**通过编码获取数据 * @param pd * @throws Exception */ public PageData findByBianma(PageData pd)throws Exception{ return (PageData)dao.findForObject("DictionariesMapper.findByBianma", pd); } /** * 通过ID获取其子级列表 * @param parentId * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<Dictionaries> listSubDictByParentId(String parentId) throws Exception { return (List<Dictionaries>) dao.findForList("DictionariesMapper.listSubDictByParentId", parentId); } /** * 获取所有数据并填充每条数据的子级列表(递归处理) * @param MENU_ID * @return * @throws Exception */ public List<Dictionaries> listAllDict(String parentId) throws Exception { List<Dictionaries> dictList = this.listSubDictByParentId(parentId); for(Dictionaries dict : dictList){ dict.setTreeurl("dictionaries/list.do?DICTIONARIES_ID="+dict.getDICTIONARIES_ID()); dict.setSubDict(this.listAllDict(dict.getDICTIONARIES_ID())); dict.setTarget("treeFrame"); } return dictList; } /**排查表检查是否被占用 * @param pd * @throws Exception */ public PageData findFromTbs(PageData pd)throws Exception{ return (PageData)dao.findForObject("DictionariesMapper.findFromTbs", pd); } } sourcecode/MVNFHM/src/main/java/com/fh/service/system/fhbutton/FhbuttonManager.java
New file @@ -0,0 +1,58 @@ package com.fh.service.system.fhbutton; import java.util.List; import com.fh.entity.Page; import com.fh.util.PageData; /** * 说明:按钮管理 接口 * 创建人:FH Q313596790 * 创建时间:2016-01-15 * @version */ public interface FhbuttonManager{ /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception; /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception; /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception; /**列表 * @param page * @throws Exception */ public List<PageData> list(Page page)throws Exception; /**列表(全部) * @param pd * @throws Exception */ public List<PageData> listAll(PageData pd)throws Exception; /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception; /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/system/fhbutton/impl/FhbuttonService.java
New file @@ -0,0 +1,82 @@ package com.fh.service.system.fhbutton.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.util.PageData; import com.fh.service.system.fhbutton.FhbuttonManager; /** * 说明: 按钮管理 * 创建人:FH Q313596790 * 创建时间:2016-01-15 * @version */ @Service("fhbuttonService") public class FhbuttonService implements FhbuttonManager{ @Resource(name = "daoSupport") private DaoSupport dao; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("FhbuttonMapper.save", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("FhbuttonMapper.delete", pd); } /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception{ dao.update("FhbuttonMapper.edit", pd); } /**列表 * @param page * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> list(Page page)throws Exception{ return (List<PageData>)dao.findForList("FhbuttonMapper.datalistPage", page); } /**列表(全部) * @param pd * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAll(PageData pd)throws Exception{ return (List<PageData>)dao.findForList("FhbuttonMapper.listAll", pd); } /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("FhbuttonMapper.findById", pd); } /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception{ dao.delete("FhbuttonMapper.deleteAll", ArrayDATA_IDS); } } sourcecode/MVNFHM/src/main/java/com/fh/service/system/fhlog/FHlogManager.java
New file @@ -0,0 +1,53 @@ package com.fh.service.system.fhlog; import java.util.List; import com.fh.entity.Page; import com.fh.util.PageData; /** * 说明: 操作日志记录接口 * 创建人:FH Q313596790 * 创建时间:2016-05-10 * @version */ public interface FHlogManager{ /**新增 * @param pd * @throws Exception */ public void save(String USERNAME, String CONTENT)throws Exception; /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception; /**列表 * @param page * @throws Exception */ public List<PageData> list(Page page)throws Exception; /**列表(全部) * @param pd * @throws Exception */ public List<PageData> listAll(PageData pd)throws Exception; /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception; /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/system/fhlog/impl/FHlogService.java
New file @@ -0,0 +1,85 @@ package com.fh.service.system.fhlog.impl; import java.util.Date; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.util.PageData; import com.fh.util.Tools; import com.fh.util.UuidUtil; import com.fh.service.system.fhlog.FHlogManager; /** * 说明: 操作日志记录 * 创建人:FH Q313596790 * 创建时间:2016-05-10 * @version */ @Service("fhlogService") public class FHlogService implements FHlogManager{ @Resource(name = "daoSupport") private DaoSupport dao; /**新增 * @param pd * @throws Exception */ public void save(String USERNAME, String CONTENT)throws Exception{ PageData pd = new PageData(); pd.put("USERNAME", USERNAME); //用户名 pd.put("CONTENT", CONTENT); //事件 pd.put("FHLOG_ID", UuidUtil.get32UUID()); //主键 pd.put("CZTIME", Tools.date2Str(new Date())); //操作时间 dao.save("FHlogMapper.save", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("FHlogMapper.delete", pd); } /**列表 * @param page * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> list(Page page)throws Exception{ return (List<PageData>)dao.findForList("FHlogMapper.datalistPage", page); } /**列表(全部) * @param pd * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAll(PageData pd)throws Exception{ return (List<PageData>)dao.findForList("FHlogMapper.listAll", pd); } /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("FHlogMapper.findById", pd); } /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception{ dao.delete("FHlogMapper.deleteAll", ArrayDATA_IDS); } } sourcecode/MVNFHM/src/main/java/com/fh/service/system/fhsms/FhsmsManager.java
New file @@ -0,0 +1,64 @@ package com.fh.service.system.fhsms; import java.util.List; import com.fh.entity.Page; import com.fh.util.PageData; /** * 说明: 站内信接口 * 创建人:FH Q313596790 * 创建时间:2016-01-17 * @version */ public interface FhsmsManager{ /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception; /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception; /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception; /**列表 * @param page * @throws Exception */ public List<PageData> list(Page page)throws Exception; /**列表(全部) * @param pd * @throws Exception */ public List<PageData> listAll(PageData pd)throws Exception; /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception; /**获取未读总数 * @param pd * @throws Exception */ public PageData findFhsmsCount(String USERNAME)throws Exception; /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/system/fhsms/impl/FhsmsService.java
New file @@ -0,0 +1,90 @@ package com.fh.service.system.fhsms.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.util.PageData; import com.fh.service.system.fhsms.FhsmsManager; /** * 说明: 站内信 * 创建人:FH Q313596790 * 创建时间:2016-01-17 * @version */ @Service("fhsmsService") public class FhsmsService implements FhsmsManager{ @Resource(name = "daoSupport") private DaoSupport dao; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("FhsmsMapper.save", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("FhsmsMapper.delete", pd); } /**修改状态 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception{ dao.update("FhsmsMapper.edit", pd); } /**列表 * @param page * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> list(Page page)throws Exception{ return (List<PageData>)dao.findForList("FhsmsMapper.datalistPage", page); } /**列表(全部) * @param pd * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAll(PageData pd)throws Exception{ return (List<PageData>)dao.findForList("FhsmsMapper.listAll", pd); } /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("FhsmsMapper.findById", pd); } /**获取未读总数 * @param pd * @throws Exception */ public PageData findFhsmsCount(String USERNAME)throws Exception{ return (PageData)dao.findForObject("FhsmsMapper.findFhsmsCount", USERNAME); } /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception{ dao.delete("FhsmsMapper.deleteAll", ArrayDATA_IDS); } } sourcecode/MVNFHM/src/main/java/com/fh/service/system/loginimg/LogInImgManager.java
New file @@ -0,0 +1,58 @@ package com.fh.service.system.loginimg; import java.util.List; import com.fh.entity.Page; import com.fh.util.PageData; /** * 说明: 登录页面背景图片接口 * 创建人:FH Q313596790 * 创建时间:2016-06-03 * @version */ public interface LogInImgManager{ /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception; /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception; /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception; /**列表 * @param page * @throws Exception */ public List<PageData> list(Page page)throws Exception; /**列表(全部) * @param pd * @throws Exception */ public List<PageData> listAll(PageData pd)throws Exception; /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception; /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/system/loginimg/impl/LogInImgService.java
New file @@ -0,0 +1,82 @@ package com.fh.service.system.loginimg.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.util.PageData; import com.fh.service.system.loginimg.LogInImgManager; /** * 说明: 登录页面背景图片 * 创建人:FH Q313596790 * 创建时间:2016-06-03 * @version */ @Service("loginimgService") public class LogInImgService implements LogInImgManager{ @Resource(name = "daoSupport") private DaoSupport dao; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("LogInImgMapper.save", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("LogInImgMapper.delete", pd); } /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception{ dao.update("LogInImgMapper.edit", pd); } /**列表 * @param page * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> list(Page page)throws Exception{ return (List<PageData>)dao.findForList("LogInImgMapper.datalistPage", page); } /**列表(全部) * @param pd * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAll(PageData pd)throws Exception{ return (List<PageData>)dao.findForList("LogInImgMapper.listAll", pd); } /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("LogInImgMapper.findById", pd); } /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception{ dao.delete("LogInImgMapper.deleteAll", ArrayDATA_IDS); } } sourcecode/MVNFHM/src/main/java/com/fh/service/system/menu/MenuManager.java
New file @@ -0,0 +1,73 @@ package com.fh.service.system.menu; import java.util.List; import com.fh.entity.system.Menu; import com.fh.util.PageData; /**说明:MenuService 菜单处理接口 * @author fh 313596790 */ public interface MenuManager { /** * @param pd * @return * @throws Exception */ public List<Menu> listSubMenuByParentId(PageData pd)throws Exception; /** * @param pd * @return * @throws Exception */ public PageData getMenuById(PageData pd) throws Exception; /** * @param menu * @throws Exception */ public void saveMenu(Menu menu) throws Exception; /** * @param pd * @return * @throws Exception */ public PageData findMaxId(PageData pd) throws Exception; /** * @param MENU_ID * @throws Exception */ public void deleteMenuById(String MENU_ID) throws Exception; /** * @param menu * @throws Exception */ public void edit(Menu menu) throws Exception; /** * @param pd * @return * @throws Exception */ public PageData editicon(PageData pd) throws Exception; /** * @param MENU_ID * @return * @throws Exception */ public List<Menu> listAllMenu(PageData pd) throws Exception; /** * @param MENU_ID * @return * @throws Exception */ public List<Menu> listAllMenuQx(PageData pd) throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/system/menu/impl/MenuService.java
New file @@ -0,0 +1,131 @@ package com.fh.service.system.menu.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.system.Menu; import com.fh.service.system.menu.MenuManager; import com.fh.util.PageData; /** * 类名称:MenuService 菜单处理 * 创建人:FH qq 3 1 3 5 9 6 7 9 0[青苔] * 修改时间:2015年10月27日 * @version v2 */ @Service("menuService") public class MenuService implements MenuManager{ @Resource(name = "daoSupport") private DaoSupport dao; /** * 通过ID获取其子一级菜单 * @param pd * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<Menu> listSubMenuByParentId(PageData pd) throws Exception { return (List<Menu>) dao.findForList("MenuMapper.listSubMenuByParentId", pd); } /** * 通过菜单ID获取数据 * @param pd * @return * @throws Exception */ public PageData getMenuById(PageData pd) throws Exception { return (PageData) dao.findForObject("MenuMapper.getMenuById", pd); } /** * 新增菜单 * @param menu * @throws Exception */ public void saveMenu(Menu menu) throws Exception { dao.save("MenuMapper.insertMenu", menu); } /** * 取最大ID * @param pd * @return * @throws Exception */ public PageData findMaxId(PageData pd) throws Exception { return (PageData) dao.findForObject("MenuMapper.findMaxId", pd); } /** * 删除菜单 * @param MENU_ID * @throws Exception */ public void deleteMenuById(String MENU_ID) throws Exception { dao.save("MenuMapper.deleteMenuById", MENU_ID); } /** * 编辑 * @param menu * @return * @throws Exception */ public void edit(Menu menu) throws Exception { dao.update("MenuMapper.updateMenu", menu); } /** * 保存菜单图标 * @param pd * @return * @throws Exception */ public PageData editicon(PageData pd) throws Exception { return (PageData)dao.findForObject("MenuMapper.editicon", pd); } /** * 获取所有菜单并填充每个菜单的子菜单列表(菜单管理)(递归处理) * @param MENU_ID * @return * @throws Exception */ public List<Menu> listAllMenu(PageData pd) throws Exception { List<Menu> menuList = this.listSubMenuByParentId(pd); PageData pd1 = new PageData(); pd1.put("SYSTEM_ID", pd.get("SYSTEM_ID")); for(Menu menu : menuList){ pd1.put("parentId", menu.getMENU_ID()); menu.setMENU_URL("menu/toEdit.do?MENU_ID="+menu.getMENU_ID()); menu.setSubMenu(this.listAllMenu(pd1)); menu.setTarget("treeFrame"); } return menuList; } /** * 获取所有菜单并填充每个菜单的子菜单列表(系统菜单列表)(递归处理) * @param MENU_ID * @return * @throws Exception */ public List<Menu> listAllMenuQx(PageData pd) throws Exception { List<Menu> menuList = this.listSubMenuByParentId(pd); PageData pd1 = new PageData(); pd1.put("SYSTEM_ID", pd.get("SYSTEM_ID")); for(Menu menu : menuList){ pd1.put("parentId", menu.getMENU_ID()); menu.setSubMenu(this.listAllMenuQx(pd1)); menu.setTarget("treeFrame"); } return menuList; } } sourcecode/MVNFHM/src/main/java/com/fh/service/system/role/RoleManager.java
New file @@ -0,0 +1,86 @@ package com.fh.service.system.role; import java.util.List; import com.fh.entity.system.Role; import com.fh.util.PageData; /** 角色接口类 * @author FHadmin QQ313596790 * 修改日期:2015.11.6 */ public interface RoleManager { /**列出此组下级角色 * @param pd * @return * @throws Exception */ public List<Role> listAllRolesByPId(PageData pd) throws Exception; /**获取系统下所有角色 * @param pd * @return * @throws Exception */ public List<PageData> getSysteAllRoleList(PageData pd) throws Exception; /**查找租户管理员 * @param pd * @return * @throws Exception */ public List<PageData> getTenantManager(PageData pd) throws Exception; /**通过id查找 * @param pd * @return * @throws Exception */ public PageData findObjectById(PageData pd) throws Exception; /**添加 * @param pd * @throws Exception */ public void add(PageData pd) throws Exception; /**保存修改 * @param pd * @throws Exception */ public void edit(PageData pd) throws Exception; /**删除角色 * @param ROLE_ID * @throws Exception */ public void deleteRoleById(String ROLE_ID) throws Exception; /**给当前角色附加菜单权限 * @param role * @throws Exception */ public void updateRoleRights(Role role) throws Exception; /**通过id查找 * @param pd * @return * @throws Exception */ public Role getRoleById(PageData pd) throws Exception; /**给全部子角色加菜单权限 * @param pd * @throws Exception */ public void setAllRights(PageData pd) throws Exception; /**权限(增删改查) * @param msg 区分增删改查 * @param pd * @throws Exception */ public void saveB4Button(String msg,PageData pd) throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/system/role/impl/RoleService.java
New file @@ -0,0 +1,123 @@ package com.fh.service.system.role.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.system.Role; import com.fh.service.system.role.RoleManager; import com.fh.util.PageData; /** 角色 * @author FHadmin QQ313596790 * 修改日期:2015.11.6 */ @Service("roleService") public class RoleService implements RoleManager{ @Resource(name = "daoSupport") private DaoSupport dao; /**列出此组下级角色 * @param pd * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<Role> listAllRolesByPId(PageData pd) throws Exception { return (List<Role>) dao.findForList("RoleMapper.listAllRolesByPId", pd); } /**获取系统下所有角色 * @param pd * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> getSysteAllRoleList(PageData pd) throws Exception { return (List<PageData>) dao.findForList("RoleMapper.getSysteAllRoleList", pd); } /**查找租户管理员 * @param pd * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> getTenantManager(PageData pd) throws Exception { return (List<PageData>) dao.findForList("RoleMapper.getTenantManager", pd); } /**通过id查找 * @param pd * @return * @throws Exception */ public PageData findObjectById(PageData pd) throws Exception { return (PageData)dao.findForObject("RoleMapper.findObjectById", pd); } /**添加 * @param pd * @throws Exception */ public void add(PageData pd) throws Exception { dao.save("RoleMapper.insert", pd); } /**保存修改 * @param pd * @throws Exception */ public void edit(PageData pd) throws Exception { dao.update("RoleMapper.edit", pd); } /**删除角色 * @param ROLE_ID * @throws Exception */ public void deleteRoleById(String ROLE_ID) throws Exception { dao.delete("RoleMapper.deleteRoleById", ROLE_ID); } /**给当前角色附加菜单权限 * @param role * @throws Exception */ public void updateRoleRights(Role role) throws Exception { dao.update("RoleMapper.updateRoleRights", role); } /**通过id查找 * @param pd * @return * @throws Exception */ public Role getRoleById(PageData pd) throws Exception { return (Role) dao.findForObject("RoleMapper.getRoleById", pd); } /**给全部子角色加菜单权限 * @param pd * @throws Exception */ public void setAllRights(PageData pd) throws Exception { dao.update("RoleMapper.setAllRights", pd); } /**权限(增删改查) * @param msg 区分增删改查 * @param pd * @throws Exception */ public void saveB4Button(String msg,PageData pd) throws Exception { dao.update("RoleMapper."+msg, pd); } } sourcecode/MVNFHM/src/main/java/com/fh/service/system/system/SystemManager.java
New file @@ -0,0 +1,70 @@ package com.fh.service.system.system; import java.util.List; import com.fh.entity.Page; import com.fh.util.PageData; /** * 说明: system接口 * 创建人:FH Q313596790 * 创建时间:2017-05-31 * @version */ public interface SystemManager{ /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception; /**新增用户所属系统 * @param pd * @throws Exception */ public void insertUserSystem(PageData pd)throws Exception; /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception; /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception; /**列表 * @param page * @throws Exception */ public List<PageData> list(Page page)throws Exception; /**获取用户所属系统列表 * @param pd * @throws Exception */ public List<PageData> getList(PageData pd)throws Exception; /**列表(全部) * @param pd * @throws Exception */ public List<PageData> listAll(PageData pd)throws Exception; /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception; /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/system/system/impl/SystemService.java
New file @@ -0,0 +1,103 @@ package com.fh.service.system.system.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.util.PageData; import com.fh.service.system.system.SystemManager; /** * 说明: system * 创建人:FH Q313596790 * 创建时间:2017-05-31 * @version */ @Service("systemService") public class SystemService implements SystemManager{ @Resource(name = "daoSupport") private DaoSupport dao; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("SystemMapper.save", pd); dao.save("SystemMapper.insertUserSystem", pd); } /**新增用户所属系统 * @param pd * @throws Exception */ public void insertUserSystem(PageData pd)throws Exception{ dao.save("SystemMapper.insertUserSystem", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("SystemMapper.delete", pd); dao.delete("SystemMapper.deleteUserSystem", pd); dao.delete("SystemMapper.deleteRole", pd); } /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception{ dao.update("SystemMapper.edit", pd); } /**列表 * @param page * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> list(Page page)throws Exception{ return (List<PageData>)dao.findForList("SystemMapper.datalistPage", page); } /**列表(全部) * @param pd * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAll(PageData pd)throws Exception{ return (List<PageData>)dao.findForList("SystemMapper.listAll", pd); } /**获取用户所属系统列表 * @param pd * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> getList(PageData pd)throws Exception { return (List<PageData>)dao.findForList("SystemMapper.getList", pd); } /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("SystemMapper.findById", pd); } /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception{ dao.delete("SystemMapper.deleteAll", ArrayDATA_IDS); } } sourcecode/MVNFHM/src/main/java/com/fh/service/system/tenant/TenantManager.java
New file @@ -0,0 +1,94 @@ package com.fh.service.system.tenant; import java.util.List; import com.fh.entity.Page; import com.fh.util.PageData; /** * 说明: 租户维护接口 * 创建人:FH Q313596790 * 创建时间:2017-06-22 * @version */ public interface TenantManager{ /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception; /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception; /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception; /**更新租户状态 * @param pd * @throws Exception */ public void updateStatus(PageData pd)throws Exception; /**更新租户的菜单权限 * @param pd * @throws Exception */ public void updateRights(PageData pd)throws Exception; /**列表 * @param page * @throws Exception */ public List<PageData> list(Page page)throws Exception; /**列表 * @param page * @throws Exception */ public int getCount()throws Exception; /**租户管理员获取租户列表(全部) * @param pd * @throws Exception */ public List<PageData> getTenantList(PageData pd)throws Exception; /**列表(全部) * @param pd * @throws Exception */ public List<PageData> listAll(PageData pd)throws Exception; /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception; /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception; /** 获取租户的权限 * @param pd * @throws Exception */ public PageData findTenantRights(PageData pd)throws Exception; /** 获取租户的权限 * @param pd * @throws Exception */ public List<PageData> getTeanatListByUserid(PageData pd)throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/system/tenant/impl/TenantService.java
New file @@ -0,0 +1,128 @@ package com.fh.service.system.tenant.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.util.PageData; import com.fh.service.system.tenant.TenantManager; /** * 说明: 租户维护 * 创建人:FH Q313596790 * 创建时间:2017-06-22 * @version */ @Service("tenantService") public class TenantService implements TenantManager{ @Resource(name = "daoSupport") private DaoSupport dao; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("TenantMapper.save", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("TenantMapper.delete", pd); } /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception{ dao.update("TenantMapper.edit", pd); } /**更新租户状态 * @param pd * @throws Exception */ public void updateStatus(PageData pd)throws Exception{ dao.update("TenantMapper.updateStatus", pd); } /**更新租户的菜单权限 * @param pd * @throws Exception */ public void updateRights(PageData pd)throws Exception{ dao.update("TenantMapper.updateRights", pd); } /**列表 * @param page * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> list(Page page)throws Exception{ return (List<PageData>)dao.findForList("TenantMapper.datalistPage", page); } /**租户管理员获取租户列表(全部) * @param pd * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> getTenantList(PageData pd)throws Exception{ return (List<PageData>)dao.findForList("TenantMapper.getTenantList", pd); } /**列表(全部) * @param pd * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAll(PageData pd)throws Exception{ return (List<PageData>)dao.findForList("TenantMapper.listAll", pd); } /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("TenantMapper.findById", pd); } /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception{ dao.delete("TenantMapper.deleteAll", ArrayDATA_IDS); } @Override public int getCount() throws Exception { return (int)dao.findForObject("TenantMapper.getCount", null); } /**获取租户的权限 * @param pd * @throws Exception */ public PageData findTenantRights(PageData pd)throws Exception{ return (PageData)dao.findForObject("TenantMapper.findTenantRights", pd); } /**获取租户的权限 * @param pd * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> getTeanatListByUserid(PageData pd)throws Exception{ return (List<PageData>)dao.findForList("TenantMapper.getTeanatListByUserid", pd); } } sourcecode/MVNFHM/src/main/java/com/fh/service/system/user/UserManager.java
New file @@ -0,0 +1,206 @@ package com.fh.service.system.user; import java.util.List; import org.apache.shiro.session.Session; import com.fh.entity.Page; import com.fh.entity.system.User; import com.fh.util.PageData; /** 用户接口类 * @author fh313596790qq(青苔) * 修改时间:2015.11.2 */ public interface UserManager { /**登录判断 * @param pd * @return * @throws Exception */ public PageData getUserByNameAndPwd(PageData pd)throws Exception; /**更新登录时间 * @param pd * @throws Exception */ public void updateLastLogin(PageData pd)throws Exception; /**通过用户ID获取用户信息和角色信息 * @param USER_ID * @return * @throws Exception */ public User getUserAndRoleById(String USER_ID) throws Exception; /**通过USERNAEME获取数据 * @param pd * @return * @throws Exception */ public PageData findByUsername(PageData pd)throws Exception; /**列出某角色下的所有用户 * @param pd * @return * @throws Exception */ public List<PageData> listAllUserByRoldId(PageData pd) throws Exception; /**获取租户下所有用户 * @param pd * @return * @throws Exception */ public List<PageData> getTenantAllUserList(PageData pd) throws Exception; /**获取租户下所有用户 * @param pd * @return * @throws Exception */ public List<PageData> getUserListByTenantId(PageData pd) throws Exception; /**保存用户IP * @param pd * @throws Exception */ public void saveIP(PageData pd)throws Exception; /**用户列表 * @param page * @return * @throws Exception */ public List<PageData> listUsers(Page page)throws Exception; /**用户列表(弹窗选择用) * @param page * @return * @throws Exception */ public List<PageData> listUsersBystaff(Page page)throws Exception; /**用户所属系统列表 * @param page * @return * @throws Exception */ public List<PageData> userSystemlist(PageData pd)throws Exception; /**获取租户列表 * @param pd * @return * @throws Exception */ public List<PageData> tenantList(PageData pd)throws Exception; /**通过邮箱获取数据 * @param pd * @return * @throws Exception */ public PageData findByUE(PageData pd)throws Exception; /**通过编号获取数据 * @param pd * @return * @throws Exception */ public PageData findByUN(PageData pd)throws Exception; /**获取用户系统信息 * @param pd * @return * @throws Exception */ public PageData getUserSysInfo(PageData pd)throws Exception; /**通过id获取数据 * @param pd * @return * @throws Exception */ public PageData findById(PageData pd)throws Exception; /**修改用户 * @param pd * @throws Exception */ public void editU(PageData pd)throws Exception; /**保存用户 * @param pd * @throws Exception */ public void saveU(PageData pd)throws Exception; /**保存用户所属系统 * @param pd * @throws Exception */ public void saveUserSystem(PageData pd)throws Exception; /**删除用户 * @param pd * @throws Exception */ public void deleteU(PageData pd)throws Exception; /**批量删除用户 * @param USER_IDS * @throws Exception */ public void deleteAllU(String[] USER_IDS)throws Exception; /**删除用户所属系统 * @param pd * @throws Exception */ public void deleteUserSystem(PageData pd)throws Exception; /**用户列表(全部) * @param pd * @return * @throws Exception */ public List<PageData> listAllUser(PageData pd)throws Exception; /**获取总数 * @param pd * @throws Exception */ public PageData getUserCount(String value)throws Exception; /**用户登录的sessionid * @param pd * @return * @throws Exception */ public void AddSession(Session session)throws Exception; /**根据用户登录的sessionid查询session * @param pd * @return * @throws Exception */ public Session getSession(String id)throws Exception; /**删除用户sessionid * @param pd * @return * @throws Exception */ public void DelSession(Session session)throws Exception; /**删除用户sessionid * @param pd * @return * @throws Exception */ public void DelSession(String id)throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/system/user/impl/UserService.java
New file @@ -0,0 +1,283 @@ package com.fh.service.system.user.impl; import java.util.List; import javax.annotation.Resource; import org.apache.shiro.session.Session; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.entity.system.User; import com.fh.service.system.user.UserManager; import com.fh.util.PageData; /** 系统用户 * @author fh313596790qq(青苔) * 修改时间:2015.11.2 */ @Service("userService") public class UserService implements UserManager{ @Resource(name = "daoSupport") private DaoSupport dao; private static PageData pageData = new PageData(); /**登录判断 * @param pd * @return * @throws Exception */ public PageData getUserByNameAndPwd(PageData pd)throws Exception{ return (PageData)dao.findForObject("UserMapper.getUserInfo", pd); } /**获取用户系统信息 * @param pd * @return * @throws Exception */ public PageData getUserSysInfo(PageData pd)throws Exception{ return (PageData)dao.findForObject("UserMapper.getUserSysInfo", pd); } /**更新登录时间 * @param pd * @throws Exception */ public void updateLastLogin(PageData pd)throws Exception{ dao.update("UserMapper.updateLastLogin", pd); } /**通过用户ID获取用户信息和角色信息 * @param USER_ID * @return * @throws Exception */ public User getUserAndRoleById(String USER_ID) throws Exception { return (User) dao.findForObject("UserMapper.getUserAndRoleById", USER_ID); } /**通过USERNAEME获取数据 * @param pd * @return * @throws Exception */ public PageData findByUsername(PageData pd)throws Exception{ return (PageData)dao.findForObject("UserMapper.findByUsername", pd); } /**列出某角色下的所有用户 * @param pd * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAllUserByRoldId(PageData pd) throws Exception { return (List<PageData>) dao.findForList("UserMapper.listAllUserByRoldId", pd); } /**保存用户IP * @param pd * @throws Exception */ public void saveIP(PageData pd)throws Exception{ dao.update("UserMapper.saveIP", pd); } /**用户列表 * @param page * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listUsers(Page page)throws Exception{ return (List<PageData>) dao.findForList("UserMapper.userlistPage", page); } /**用户列表(弹窗选择用) * @param page * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listUsersBystaff(Page page)throws Exception{ return (List<PageData>) dao.findForList("UserMapper.userBystafflistPage", page); } /**获取租户列表 * @param pd * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> tenantList(PageData pd)throws Exception{ return (List<PageData>) dao.findForList("UserMapper.tenantList", pd); } /**用户所属系统列表 * @param page * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> userSystemlist(PageData pd)throws Exception{ return (List<PageData>) dao.findForList("UserMapper.userSystemlist", pd); } /**删除用户所属系统 * @param pd * @throws Exception */ public void deleteUserSystem(PageData pd)throws Exception{ dao.delete("UserMapper.deleteUserSystem", pd); } /**通过邮箱获取数据 * @param pd * @return * @throws Exception */ public PageData findByUE(PageData pd)throws Exception{ return (PageData)dao.findForObject("UserMapper.findByUE", pd); } /**通过编号获取数据 * @param pd * @return * @throws Exception */ public PageData findByUN(PageData pd)throws Exception{ return (PageData)dao.findForObject("UserMapper.findByUN", pd); } /**通过id获取数据 * @param pd * @return * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("UserMapper.findById", pd); } /**保存用户 * @param pd * @throws Exception */ public void saveU(PageData pd)throws Exception{ dao.save("UserMapper.saveU", pd); } /**保存用户所属系统 * @param pd * @throws Exception */ public void saveUserSystem(PageData pd)throws Exception{ dao.save("UserMapper.saveUserSystem", pd); } /**修改用户 * @param pd * @throws Exception */ public void editU(PageData pd)throws Exception{ dao.update("UserMapper.editU", pd); } /**删除用户 * @param pd * @throws Exception */ public void deleteU(PageData pd)throws Exception{ dao.delete("UserMapper.deleteU", pd); } /**批量删除用户 * @param USER_IDS * @throws Exception */ public void deleteAllU(String[] USER_IDS)throws Exception{ dao.delete("UserMapper.deleteAllU", USER_IDS); } /**用户列表(全部) * @param USER_IDS * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAllUser(PageData pd)throws Exception{ return (List<PageData>) dao.findForList("UserMapper.listAllUser", pd); } /**获取总数 * @param pd * @throws Exception */ public PageData getUserCount(String value)throws Exception{ return (PageData)dao.findForObject("UserMapper.getUserCount", value); } @SuppressWarnings("unchecked") public List<PageData> getTenantAllUserList(PageData pd) throws Exception { return (List<PageData>) dao.findForList("UserMapper.getTenantAllUserList", pd); } @SuppressWarnings("unchecked") public List<PageData> getUserListByTenantId(PageData pd) throws Exception { return (List<PageData>) dao.findForList("UserMapper.getUserListByTenantId", pd); } /**用户登录的sessionid * @param pd * @return * @throws Exception */ public void AddSession(Session session)throws Exception{ pageData.put(session.getId(), session); } /**根据用户登录的sessionid查询session * @param pd * @return * @throws Exception */ public Session getSession(String id)throws Exception{ if (id == null) { return null; } else { if (pageData.get(id) == null) { return null; } else { return (Session) pageData.get(id); } } } /**删除用户sessionid * @param pd * @return * @throws Exception */ public void DelSession(Session session)throws Exception{ if (session != null) { pageData.remove(session.getId()); } } /**删除用户sessionid * @param pd * @return * @throws Exception */ public void DelSession(String id)throws Exception{ if (pageData.get(id) != null) { pageData.remove(id); } if (pageData.keySet() != null) { for (Object keySet1 : pageData.keySet()) { pageData.remove(keySet1); } } } } sourcecode/MVNFHM/src/main/java/com/fh/service/system/userphoto/UserPhotoManager.java
New file @@ -0,0 +1,58 @@ package com.fh.service.system.userphoto; import java.util.List; import com.fh.entity.Page; import com.fh.util.PageData; /** * 说明: 用户头像接口 * 创建人:FH Q313596790 * 创建时间:2016-06-05 * @version */ public interface UserPhotoManager{ /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception; /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception; /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception; /**列表 * @param page * @throws Exception */ public List<PageData> list(Page page)throws Exception; /**列表(全部) * @param pd * @throws Exception */ public List<PageData> listAll(PageData pd)throws Exception; /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception; /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception; } sourcecode/MVNFHM/src/main/java/com/fh/service/system/userphoto/impl/UserPhotoService.java
New file @@ -0,0 +1,82 @@ package com.fh.service.system.userphoto.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.util.PageData; import com.fh.service.system.userphoto.UserPhotoManager; /** * 说明: 用户头像 * 创建人:FH Q313596790 * 创建时间:2016-06-05 * @version */ @Service("userphotoService") public class UserPhotoService implements UserPhotoManager{ @Resource(name = "daoSupport") private DaoSupport dao; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("UserPhotoMapper.save", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("UserPhotoMapper.delete", pd); } /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception{ dao.update("UserPhotoMapper.edit", pd); } /**列表 * @param page * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> list(Page page)throws Exception{ return (List<PageData>)dao.findForList("UserPhotoMapper.datalistPage", page); } /**列表(全部) * @param pd * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAll(PageData pd)throws Exception{ return (List<PageData>)dao.findForList("UserPhotoMapper.listAll", pd); } /**通过id获取数据 * @param pd * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("UserPhotoMapper.findById", pd); } /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception{ dao.delete("UserPhotoMapper.deleteAll", ArrayDATA_IDS); } } sourcecode/MVNFHM/src/main/java/com/fh/service/weixin/command/CommandService.java
New file @@ -0,0 +1,94 @@ package com.fh.service.weixin.command; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.util.PageData; /** * 类名称:CommandService * 创建人:FH QQ 313596790 * 创建时间:2015-05-09 */ @Service("commandService") public class CommandService { @Resource(name = "daoSupport") private DaoSupport dao; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("CommandMapper.save", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("CommandMapper.delete", pd); } /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception{ dao.update("CommandMapper.edit", pd); } /**列表 * @param page * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> list(Page page)throws Exception{ return (List<PageData>)dao.findForList("CommandMapper.datalistPage", page); } /**列表(全部) * @param pd * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAll(PageData pd)throws Exception{ return (List<PageData>)dao.findForList("CommandMapper.listAll", pd); } /**通过id获取数据 * @param pd * @return * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("CommandMapper.findById", pd); } /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception{ dao.delete("CommandMapper.deleteAll", ArrayDATA_IDS); } /**匹配关键词 * @param pd * @return * @throws Exception */ public PageData findByKw(PageData pd)throws Exception{ return (PageData)dao.findForObject("CommandMapper.findByKw", pd); } } sourcecode/MVNFHM/src/main/java/com/fh/service/weixin/imgmsg/ImgmsgService.java
New file @@ -0,0 +1,95 @@ package com.fh.service.weixin.imgmsg; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.util.PageData; /** * 类名称:ImgmsgService * 创建人:FH QQ 313596790 * 创建时间:2015-05-09 */ @Service("imgmsgService") public class ImgmsgService { @Resource(name = "daoSupport") private DaoSupport dao; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("ImgmsgMapper.save", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("ImgmsgMapper.delete", pd); } /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception{ dao.update("ImgmsgMapper.edit", pd); } /**列表 * @param page * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> list(Page page)throws Exception{ return (List<PageData>)dao.findForList("ImgmsgMapper.datalistPage", page); } /**列表(全部) * @param pd * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAll(PageData pd)throws Exception{ return (List<PageData>)dao.findForList("ImgmsgMapper.listAll", pd); } /**通过id获取数据 * @param pd * @return * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("ImgmsgMapper.findById", pd); } /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception{ dao.delete("ImgmsgMapper.deleteAll", ArrayDATA_IDS); } /**匹配关键词 * @param pd * @return * @throws Exception */ public PageData findByKw(PageData pd)throws Exception{ return (PageData)dao.findForObject("ImgmsgMapper.findByKw", pd); } } sourcecode/MVNFHM/src/main/java/com/fh/service/weixin/textmsg/TextmsgService.java
New file @@ -0,0 +1,94 @@ package com.fh.service.weixin.textmsg; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fh.dao.DaoSupport; import com.fh.entity.Page; import com.fh.util.PageData; /** * 类名称:TextmsgService * 创建人:FH QQ 313596790 * 创建时间:2015-05-09 */ @Service("textmsgService") public class TextmsgService { @Resource(name = "daoSupport") private DaoSupport dao; /**新增 * @param pd * @throws Exception */ public void save(PageData pd)throws Exception{ dao.save("TextmsgMapper.save", pd); } /**删除 * @param pd * @throws Exception */ public void delete(PageData pd)throws Exception{ dao.delete("TextmsgMapper.delete", pd); } /**修改 * @param pd * @throws Exception */ public void edit(PageData pd)throws Exception{ dao.update("TextmsgMapper.edit", pd); } /**列表 * @param page * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> list(Page page)throws Exception{ return (List<PageData>)dao.findForList("TextmsgMapper.datalistPage", page); } /**列表(全部) * @param pd * @return * @throws Exception */ @SuppressWarnings("unchecked") public List<PageData> listAll(PageData pd)throws Exception{ return (List<PageData>)dao.findForList("TextmsgMapper.listAll", pd); } /**通过id获取数据 * @param pd * @return * @throws Exception */ public PageData findById(PageData pd)throws Exception{ return (PageData)dao.findForObject("TextmsgMapper.findById", pd); } /**批量删除 * @param ArrayDATA_IDS * @throws Exception */ public void deleteAll(String[] ArrayDATA_IDS)throws Exception{ dao.delete("TextmsgMapper.deleteAll", ArrayDATA_IDS); } /**匹配关键词 * @param pd * @return * @throws Exception */ public PageData findByKw(PageData pd)throws Exception{ return (PageData)dao.findForObject("TextmsgMapper.findByKw", pd); } } sourcecode/MVNFHM/src/main/java/com/fh/util/AES.java
New file @@ -0,0 +1,149 @@ package com.fh.util; import javax.crypto.*; import javax.crypto.spec.SecretKeySpec; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; /** * aes加密 */ public class AES { /** * AES加密字符串 * * @param content * 需要被加密的字符串 * @param password * 加密需要的密码 * @return 密文 */ public static String encrypt(String content, String password) { try { KeyGenerator kgen = KeyGenerator.getInstance("AES");// 创建AES的Key生产者 SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); random.setSeed(password.getBytes()); kgen.init(128, random);// 利用用户密码作为随机数初始化出 // 128位的key生产者 //加密没关系,SecureRandom是生成安全随机数序列,password.getBytes()是种子,只要种子相同,序列就一样,所以解密只要有password就行 SecretKey secretKey = kgen.generateKey();// 根据用户密码,生成一个密钥 byte[] enCodeFormat = secretKey.getEncoded();// 返回基本编码格式的密钥,如果此密钥不支持编码,则返回 // null。 SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");// 转换为AES专用密钥 Cipher cipher = Cipher.getInstance("AES");// 创建密码器 byte[] byteContent = content.getBytes("utf-8"); cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化为加密模式的密码器 byte[] result = cipher.doFinal(byteContent);// 加密 return parseByte2HexStr(result); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } return ""; } /** * 解密AES加密过的字符串 * * @param contentStr * AES加密过过的内容 * @param password * 加密时的密码 * @return 明文 */ public static String decrypt(String contentStr, String password) { try { byte[] content = parseHexStr2Byte(contentStr); KeyGenerator kgen = KeyGenerator.getInstance("AES");// 创建AES的Key生产者 SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); random.setSeed(password.getBytes()); kgen.init(128, random); SecretKey secretKey = kgen.generateKey();// 根据用户密码,生成一个密钥 byte[] enCodeFormat = secretKey.getEncoded();// 返回基本编码格式的密钥 SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");// 转换为AES专用密钥 Cipher cipher = Cipher.getInstance("AES");// 创建密码器 cipher.init(Cipher.DECRYPT_MODE, key);// 初始化为解密模式的密码器 byte[] result = cipher.doFinal(content); return new String(result, "UTF-8"); // 明文 } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return ""; } /**将二进制转换成16进制 * @param buf * @return */ public static String parseByte2HexStr(byte buf[]) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < buf.length; i++) { String hex = Integer.toHexString(buf[i] & 0xFF); if (hex.length() == 1) { hex = '0' + hex; } sb.append(hex.toUpperCase()); } return sb.toString(); } /**将16进制转换为二进制 * @param hexStr * @return */ public static byte[] parseHexStr2Byte(String hexStr) { if (hexStr.length() < 1) return null; byte[] result = new byte[hexStr.length()/2]; for (int i = 0;i< hexStr.length()/2; i++) { int high = Integer.parseInt(hexStr.substring(i*2, i*2+1), 16); int low = Integer.parseInt(hexStr.substring(i*2+1, i*2+2), 16); result[i] = (byte) (high * 16 + low); } return result; } public static void main(String[] args) { String content = "美女,约吗?"; String password = "123"; System.out.println("加密之前:" + content); //如果想要加密内容不显示乱码,可以先将密文转换为16进制 String hexStrResult = AES.encrypt(content, password); System.out.println("16进制的密文:" + hexStrResult); System.out.println("解密后的内容:" + AES.decrypt(hexStrResult, password)); } } sourcecode/MVNFHM/src/main/java/com/fh/util/AppUtil.java
New file @@ -0,0 +1,212 @@ package com.fh.util; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.codehaus.jackson.map.util.JSONPObject; import com.auth0.jwt.JWT; import com.auth0.jwt.JWTVerifier; import com.auth0.jwt.algorithms.Algorithm; import com.auth0.jwt.interfaces.Claim; import com.auth0.jwt.interfaces.DecodedJWT; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.KeyGenerator; import javax.crypto.Mac; import javax.crypto.NoSuchPaddingException; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; /** 接口参数校验 * @author: fh qq313596790[青苔] * 修改日期:2015/11/2 */ public class AppUtil { protected static Logger logger = Logger.getLogger(AppUtil.class); /**检查参数是否完整 * @param method * @param pd * @return */ public static boolean checkParam(String method, PageData pd){ boolean result = false; int falseCount = 0; String[] paramArray = new String[20]; String[] valueArray = new String[20]; String[] tempArray = new String[20]; //临时数组 if("registerSysUser".equals(method)){// 注册 paramArray = Const.SYSUSER_REGISTERED_PARAM_ARRAY; //参数 valueArray = Const.SYSUSER_REGISTERED_VALUE_ARRAY; //参数名称 }else if("getAppuserByUsernmae".equals(method)){//根据用户名获取会员信息 paramArray = Const.APP_GETAPPUSER_PARAM_ARRAY; valueArray = Const.APP_GETAPPUSER_VALUE_ARRAY; } int size = paramArray.length; for(int i=0;i<size;i++){ String param = paramArray[i]; if(!pd.containsKey(param)){ tempArray[falseCount] = valueArray[i]+"--"+param; falseCount += 1; } } if(falseCount>0){ logger.error(method+"接口,请求协议中缺少 "+falseCount+"个 参数"); for(int j=1;j<=falseCount;j++){ logger.error(" 第"+j+"个:"+ tempArray[j-1]); } } else { result = true; } return result; } /** * 设置分页的参数 * @param pd * @return */ public static PageData setPageParam(PageData pd){ String page_now_str = pd.get("page_now").toString(); int pageNowInt = Integer.parseInt(page_now_str)-1; String page_size_str = pd.get("page_size").toString(); //每页显示记录数 int pageSizeInt = Integer.parseInt(page_size_str); String page_now = pageNowInt+""; String page_start = (pageNowInt*pageSizeInt)+""; pd.put("page_now", page_now); pd.put("page_start", page_start); return pd; } /**设置list中的distance * @param list * @param pd * @return */ public static List<PageData> setListDistance(List<PageData> list, PageData pd){ List<PageData> listReturn = new ArrayList<PageData>(); String user_longitude = ""; String user_latitude = ""; try{ user_longitude = pd.get("user_longitude").toString(); //"117.11811"; user_latitude = pd.get("user_latitude").toString(); //"36.68484"; } catch(Exception e){ logger.error("缺失参数--user_longitude和user_longitude"); logger.error("lost param:user_longitude and user_longitude"); } PageData pdTemp = new PageData(); int size = list.size(); for(int i=0;i<size;i++){ pdTemp = list.get(i); String longitude = pdTemp.get("longitude").toString(); String latitude = pdTemp.get("latitude").toString(); String distance = MapDistance.getDistance( user_longitude, user_latitude, longitude, latitude ); pdTemp.put("distance", distance); pdTemp.put("size", distance.length()); listReturn.add(pdTemp); } return listReturn; } /** * @param pd * @param map * @return */ public static Object returnObject(PageData pd, Map map){ if(pd.containsKey("callback")){ String callback = pd.get("callback").toString(); return new JSONPObject(callback, map); }else{ return map; } } /** * Token生成 * @param name 用户名称 * @param key 秘钥 * @return token * @throws Exception */ public static String createToken(String key) throws Exception{ Map<String, Object> map = new HashMap<String, Object>(); map.put("alg", "HS256"); map.put("typ", "JWT"); String token = JWT.create() .withHeader(map)//header .sign(Algorithm.HMAC256(key));//加密 return token; } /** * 验证token * @param token token * @param key 秘钥 * @return 用户名 * @throws Exception */ public static String verifyToken(String token,String key) throws Exception{ JWTVerifier verifier = JWT.require(Algorithm.HMAC256(key)) .build(); DecodedJWT jwt = verifier.verify(token); Map<String, Claim> claims = jwt.getClaims(); return claims.get("USERNAME").asString(); } public static String getUserIdByToken(String token,String key) throws Exception{ JWTVerifier verifier = JWT.require(Algorithm.HMAC256(key)) .build(); DecodedJWT jwt = verifier.verify(token); Map<String, Claim> claims = jwt.getClaims(); return claims.get("USERID").asString(); } /**AES解密 * @param content 待解密内容 * @param password 解密密钥 * @return */ public static byte[] decrypt(byte[] content, String password) { try { KeyGenerator kgen = KeyGenerator.getInstance("AES"); kgen.init(128, new SecureRandom(password.getBytes())); SecretKey secretKey = kgen.generateKey(); byte[] enCodeFormat = secretKey.getEncoded(); SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES"); Cipher cipher = Cipher.getInstance("AES");// 创建密码器 cipher.init(Cipher.DECRYPT_MODE, key);// 初始化 byte[] result = cipher.doFinal(content); return result; // 加密 } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } return null; } } sourcecode/MVNFHM/src/main/java/com/fh/util/CommonUtil.java
New file @@ -0,0 +1,29 @@ package com.fh.util; import java.util.List; import com.fh.entity.system.Menu; public class CommonUtil { /**根据角色权限处理权限状态(递归处理) * @param menuList:传入的总菜单 * @param roleRights:加密的权限字符串 * @return */ public static List<Menu> readMenu(List<Menu> menuList,String roleRights, List<String> systemIds){ for(int i=0;i<menuList.size();i++){ if (StringUtil.isInteger(menuList.get(i).getMENU_ID())) { menuList.get(i).setHasMenu(RightsHelper.testRights(roleRights, menuList.get(i).getMENU_ID())); } else { if (systemIds.contains(menuList.get(i).getMENU_ID())) { menuList.get(i).setHasMenu(true); } else { menuList.get(i).setHasMenu(false); } } readMenu(menuList.get(i).getSubMenu(), roleRights, systemIds); //是:继续排查其子菜单 } return menuList; } } sourcecode/MVNFHM/src/main/java/com/fh/util/Const.java
New file @@ -0,0 +1,86 @@ package com.fh.util; import org.springframework.context.ApplicationContext; /** * 项目名称: * @author:fh qq313596790[青苔] * 修改日期:2015/11/2 */ public class Const { public static final String SESSION_SECURITY_CODE = "sessionSecCode"; //验证码 public static final String SESSION_USER = "sessionUser"; //session用的用户 public static final String SESSION_ROLE_RIGHTS = "sessionRoleRights"; public static final String sSESSION_ROLE_RIGHTS = "sessionRoleRights"; public static final String SESSION_menuList = "menuList"; //当前菜单 public static final String SESSION_allmenuList = "allmenuList"; //全部菜单 public static final String SESSION_QX = "QX"; public static final String SESSION_userpds = "userpds"; public static final String SESSION_USERROL = "USERROL"; //用户对象 public static final String SESSION_USERNAME = "USERNAME"; //用户名 public static final String DEPARTMENT_IDS = "DEPARTMENT_IDS"; //当前用户拥有的最高部门权限集合 public static final String DEPARTMENT_ID = "DEPARTMENT_ID"; //当前用户拥有的最高部门权限 public static final String TENANT_ID = "TENANT_ID"; //当前用户拥有的最高部门权限 public static final String TRUE = "T"; public static final String FALSE = "F"; public static final String LOGIN = "/login_toLogin.do"; //登录地址 public static final String SYSNAME = "admin/config/SYSNAME.txt"; //系统名称路径 public static final String PAGE = "admin/config/PAGE.txt"; //分页条数配置路径 public static final String EMAIL = "admin/config/EMAIL.txt"; //邮箱服务器配置路径 public static final String SMS1 = "admin/config/SMS1.txt"; //短信账户配置路径1 public static final String SMS2 = "admin/config/SMS2.txt"; //短信账户配置路径2 public static final String FWATERM = "admin/config/FWATERM.txt"; //文字水印配置路径 public static final String IWATERM = "admin/config/IWATERM.txt"; //图片水印配置路径 public static final String WEIXIN = "admin/config/WEIXIN.txt"; //微信配置路径 public static final String WEBSOCKET = "admin/config/WEBSOCKET.txt"; //WEBSOCKET配置路径 public static final String LOGINEDIT = "admin/config/LOGIN.txt"; //登录页面配置 public static final String FILEPATHIMG = "uploadFiles/uploadImgs/"; //图片上传路径 public static final String FILEPATHFILE = "uploadFiles/file/"; //文件上传路径 public static final String FILEPATHFILEOA = "uploadFiles/uploadFile/"; //文件上传路径(oa管理) public static final String FILEPATHTWODIMENSIONCODE = "uploadFiles/twoDimensionCode/"; //二维码存放路径 public static final String NO_INTERCEPTOR_PATH = ".*/((login)|(logout)|(system_login)|(main)|(code)|(app)|(weixin)|(static)|(websocket)|(login)).*"; //不对匹配该值的访问路径拦截(正则) public static ApplicationContext WEB_APP_CONTEXT = null; //该值会在web容器启动时由WebAppContextListener初始化 /** * APP Constants */ //系统用户注册接口_请求协议参数) public static final String[] SYSUSER_REGISTERED_PARAM_ARRAY = new String[]{"USERNAME","PASSWORD","NAME","EMAIL","rcode"}; public static final String[] SYSUSER_REGISTERED_VALUE_ARRAY = new String[]{"用户名","密码","姓名","邮箱","验证码"}; //app根据用户名获取会员信息接口_请求协议中的参数 public static final String[] APP_GETAPPUSER_PARAM_ARRAY = new String[]{"USERNAME"}; public static final String[] APP_GETAPPUSER_VALUE_ARRAY = new String[]{"用户名"}; public static final String TENANT_OPEN = "0"; public static final String TENANT_EXPIRED = "1"; public static final String C0000 = "000000"; public static final String C0001 = "000001"; public static final String C0002 = "000002"; public static final String C0003 = "000003"; public static final String C0004 = "000004"; public static final String C0009 = "000009"; public static final String M0000 = "请求成功"; public static final String M0001 = "登录系统密码或用户名错误"; public static final String M0002 = "用户无访问该系统权限"; public static final String M0003 = "该租户已过期"; public static final String M0004 = "验证码有误"; public static final String M0009 = "请求失败"; public static enum UserType { ADMIN("admin"), TENANT("tenant"), ORDINARY("ordinary"); private String value; private UserType(String val) { this.value = val; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } } } sourcecode/MVNFHM/src/main/java/com/fh/util/Constants.java
New file @@ -0,0 +1,34 @@ package com.fh.util; /** * 说明: * 创建人:FH Q313596790 * 修改时间:2015年11月24日 * @version */ public class Constants { public static String PICTURE_VISIT_FILE_PATH = "";//图片访问的路径 public static String PICTURE_SAVE_FILE_PATH = "";//图片存放的路径 public static String getPICTURE_VISIT_FILE_PATH() { return PICTURE_VISIT_FILE_PATH; } public static void setPICTURE_VISIT_FILE_PATH(String pICTURE_VISIT_FILE_PATH) { PICTURE_VISIT_FILE_PATH = pICTURE_VISIT_FILE_PATH; } public static String getPICTURE_SAVE_FILE_PATH() { return PICTURE_SAVE_FILE_PATH; } public static void setPICTURE_SAVE_FILE_PATH(String pICTURE_SAVE_FILE_PATH) { PICTURE_SAVE_FILE_PATH = pICTURE_SAVE_FILE_PATH; } public static void main(String[] args) { Constants.setPICTURE_SAVE_FILE_PATH("D:/Tomcat 6.0/webapps/FH/topic/"); Constants.setPICTURE_VISIT_FILE_PATH("http://192.168.1.225:8888/FH/topic/"); } } sourcecode/MVNFHM/src/main/java/com/fh/util/DateUtil.java
New file @@ -0,0 +1,189 @@ package com.fh.util; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * 说明:日期处理 * 创建人:FH Q313596790 * 修改时间:2015年11月24日 * @version */ public class DateUtil { private final static SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy"); private final static SimpleDateFormat sdfDay = new SimpleDateFormat("yyyy-MM-dd"); private final static SimpleDateFormat sdfDays = new SimpleDateFormat("yyyyMMdd"); private final static SimpleDateFormat sdfTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private final static SimpleDateFormat sdfTimes = new SimpleDateFormat("yyyyMMddHHmmss"); /** * 获取YYYY格式 * @return */ public static String getSdfTimes() { return sdfTimes.format(new Date()); } /** * 获取YYYY格式 * @return */ public static String getYear() { return sdfYear.format(new Date()); } /** * 获取YYYY-MM-DD格式 * @return */ public static String getDay() { return sdfDay.format(new Date()); } /** * 获取YYYYMMDD格式 * @return */ public static String getDays(){ return sdfDays.format(new Date()); } /** * 获取YYYY-MM-DD HH:mm:ss格式 * @return */ public static String getTime() { return sdfTime.format(new Date()); } /** * @Title: compareDate * @Description: TODO(日期比较,如果s>=e 返回true 否则返回false) * @param s * @param e * @return boolean * @throws * @author fh */ public static boolean compareDate(String s, String e) { if(fomatDate(s)==null||fomatDate(e)==null){ return false; } return fomatDate(s).getTime() >=fomatDate(e).getTime(); } /** * 格式化日期 * @return */ public static Date fomatDate(String date) { DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); try { return fmt.parse(date); } catch (ParseException e) { e.printStackTrace(); return null; } } /** * 校验日期是否合法 * @return */ public static boolean isValidDate(String s) { DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); try { fmt.parse(s); return true; } catch (Exception e) { // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对 return false; } } /** * @param startTime * @param endTime * @return */ public static int getDiffYear(String startTime,String endTime) { DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); try { //long aa=0; int years=(int) (((fmt.parse(endTime).getTime()-fmt.parse(startTime).getTime())/ (1000 * 60 * 60 * 24))/365); return years; } catch (Exception e) { // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对 return 0; } } /** * <li>功能描述:时间相减得到天数 * @param beginDateStr * @param endDateStr * @return * long * @author Administrator */ public static long getDaySub(String beginDateStr,String endDateStr){ long day=0; java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd"); java.util.Date beginDate = null; java.util.Date endDate = null; try { beginDate = format.parse(beginDateStr); endDate= format.parse(endDateStr); } catch (ParseException e) { e.printStackTrace(); } day=(endDate.getTime()-beginDate.getTime())/(24*60*60*1000); //System.out.println("相隔的天数="+day); return day; } /** * 得到n天之后的日期 * @param days * @return */ public static String getAfterDayDate(String days) { int daysInt = Integer.parseInt(days); Calendar canlendar = Calendar.getInstance(); // java.util包 canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动 Date date = canlendar.getTime(); SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateStr = sdfd.format(date); return dateStr; } /** * 得到n天之后是周几 * @param days * @return */ public static String getAfterDayWeek(String days) { int daysInt = Integer.parseInt(days); Calendar canlendar = Calendar.getInstance(); // java.util包 canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动 Date date = canlendar.getTime(); SimpleDateFormat sdf = new SimpleDateFormat("E"); String dateStr = sdf.format(date); return dateStr; } public static void main(String[] args) { System.out.println(getDays()); System.out.println(getAfterDayWeek("3")); } } Diff truncated after the above file
sourcecode/MVNFHM/src/main/java/com/fh/util/DbFH.java sourcecode/MVNFHM/src/main/java/com/fh/util/DelAllFile.java sourcecode/MVNFHM/src/main/java/com/fh/util/FileDownload.java sourcecode/MVNFHM/src/main/java/com/fh/util/FileUpload.java sourcecode/MVNFHM/src/main/java/com/fh/util/FileUtil.java sourcecode/MVNFHM/src/main/java/com/fh/util/FileZip.java sourcecode/MVNFHM/src/main/java/com/fh/util/Freemarker.java sourcecode/MVNFHM/src/main/java/com/fh/util/GetPinyin.java sourcecode/MVNFHM/src/main/java/com/fh/util/GetWeb.java sourcecode/MVNFHM/src/main/java/com/fh/util/ImageAnd64Binary.java sourcecode/MVNFHM/src/main/java/com/fh/util/JPushClientUtil.java sourcecode/MVNFHM/src/main/java/com/fh/util/Jurisdiction.java sourcecode/MVNFHM/src/main/java/com/fh/util/LatLonUtil.java sourcecode/MVNFHM/src/main/java/com/fh/util/Logger.java sourcecode/MVNFHM/src/main/java/com/fh/util/MD5.java sourcecode/MVNFHM/src/main/java/com/fh/util/MapDistance.java sourcecode/MVNFHM/src/main/java/com/fh/util/ObjectExcelRead.java sourcecode/MVNFHM/src/main/java/com/fh/util/ObjectExcelView.java sourcecode/MVNFHM/src/main/java/com/fh/util/PageData.java sourcecode/MVNFHM/src/main/java/com/fh/util/ParamTools.java sourcecode/MVNFHM/src/main/java/com/fh/util/PathUtil.java sourcecode/MVNFHM/src/main/java/com/fh/util/PublicUtil.java sourcecode/MVNFHM/src/main/java/com/fh/util/QuartzManager.java sourcecode/MVNFHM/src/main/java/com/fh/util/RedisUtil.java sourcecode/MVNFHM/src/main/java/com/fh/util/ReflectHelper.java sourcecode/MVNFHM/src/main/java/com/fh/util/RequestUtil.java sourcecode/MVNFHM/src/main/java/com/fh/util/RightsHelper.java sourcecode/MVNFHM/src/main/java/com/fh/util/ServiceHelper.java sourcecode/MVNFHM/src/main/java/com/fh/util/SmsUtil.java sourcecode/MVNFHM/src/main/java/com/fh/util/SortUtil.java sourcecode/MVNFHM/src/main/java/com/fh/util/StringUtil.java sourcecode/MVNFHM/src/main/java/com/fh/util/Tools.java sourcecode/MVNFHM/src/main/java/com/fh/util/TwoDimensionCode.java sourcecode/MVNFHM/src/main/java/com/fh/util/TwoDimensionCodeImage.java sourcecode/MVNFHM/src/main/java/com/fh/util/Uploader.java sourcecode/MVNFHM/src/main/java/com/fh/util/UuidUtil.java sourcecode/MVNFHM/src/main/java/com/fh/util/Watermark.java sourcecode/MVNFHM/src/main/java/com/fh/util/mail/MailSenderInfo.java sourcecode/MVNFHM/src/main/java/com/fh/util/mail/MyAuthenticator.java sourcecode/MVNFHM/src/main/java/com/fh/util/mail/SimpleMailSender.java sourcecode/MVNFHM/src/main/resources/dbconfig.properties sourcecode/MVNFHM/src/main/resources/dbfh.properties sourcecode/MVNFHM/src/main/resources/ehcache.xml sourcecode/MVNFHM/src/main/resources/ftl/createCode/controllerTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createCode/docTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createCode/jsp_edit_Template.ftl sourcecode/MVNFHM/src/main/resources/ftl/createCode/jsp_list_Template.ftl sourcecode/MVNFHM/src/main/resources/ftl/createCode/managerTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createCode/mapperMysqlTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createCode/mapperOracleTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createCode/mapperSqlserverTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createCode/mysql_SQL_Template.ftl sourcecode/MVNFHM/src/main/resources/ftl/createCode/newJsp.ftl sourcecode/MVNFHM/src/main/resources/ftl/createCode/oracle_SQL_Template.ftl sourcecode/MVNFHM/src/main/resources/ftl/createCode/serviceTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createCode/sqlserver_SQL_Template.ftl sourcecode/MVNFHM/src/main/resources/ftl/createFaCode/controllerTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createFaCode/docTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createFaCode/jsp_edit_Template.ftl sourcecode/MVNFHM/src/main/resources/ftl/createFaCode/jsp_list_Template.ftl sourcecode/MVNFHM/src/main/resources/ftl/createFaCode/managerTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createFaCode/mapperMysqlTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createFaCode/mapperOracleTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createFaCode/mapperSqlserverTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createFaCode/mysql_SQL_Template.ftl sourcecode/MVNFHM/src/main/resources/ftl/createFaCode/oracle_SQL_Template.ftl sourcecode/MVNFHM/src/main/resources/ftl/createFaCode/serviceTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createFaCode/sqlserver_SQL_Template.ftl sourcecode/MVNFHM/src/main/resources/ftl/createSoCode/controllerTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createSoCode/docTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createSoCode/jsp_edit_Template.ftl sourcecode/MVNFHM/src/main/resources/ftl/createSoCode/jsp_list_Template.ftl sourcecode/MVNFHM/src/main/resources/ftl/createSoCode/managerTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createSoCode/mapperMysqlTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createSoCode/mapperOracleTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createSoCode/mapperSqlserverTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createSoCode/mysql_SQL_Template.ftl sourcecode/MVNFHM/src/main/resources/ftl/createSoCode/oracle_SQL_Template.ftl sourcecode/MVNFHM/src/main/resources/ftl/createSoCode/serviceTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createSoCode/sqlserver_SQL_Template.ftl sourcecode/MVNFHM/src/main/resources/ftl/createTreeCode/controllerTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createTreeCode/docTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createTreeCode/entityTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createTreeCode/jsp_edit_Template.ftl sourcecode/MVNFHM/src/main/resources/ftl/createTreeCode/jsp_list_Template.ftl sourcecode/MVNFHM/src/main/resources/ftl/createTreeCode/jsp_tree_Template.ftl sourcecode/MVNFHM/src/main/resources/ftl/createTreeCode/managerTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createTreeCode/mapperMysqlTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createTreeCode/mapperOracleTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createTreeCode/mapperSqlserverTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createTreeCode/mysql_SQL_Template.ftl sourcecode/MVNFHM/src/main/resources/ftl/createTreeCode/oracle_SQL_Template.ftl sourcecode/MVNFHM/src/main/resources/ftl/createTreeCode/serviceTemplate.ftl sourcecode/MVNFHM/src/main/resources/ftl/createTreeCode/sqlserver_SQL_Template.ftl sourcecode/MVNFHM/src/main/resources/log4j.properties sourcecode/MVNFHM/src/main/resources/log4j.xml sourcecode/MVNFHM/src/main/resources/mybatis1/fhdb/FhdbMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/fhdb/TimingBackUpMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/fhoa/DatajurMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/fhoa/DepartmentMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/fhoa/FhfileMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/fhoa/StaffMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/information/AttachedMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/information/AttachedMxMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/information/PicturesMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/mybatis-config.xml sourcecode/MVNFHM/src/main/resources/mybatis1/system/AppuserMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/system/ButtonrightsMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/system/CreateCodeMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/system/DictionariesMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/system/FHlogMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/system/FhbuttonMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/system/FhsmsMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/system/LogInImgMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/system/MenuMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/system/RoleMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/system/SystemMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/system/TenantMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/system/UserMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/system/UserPhotoMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/weixin/CommandMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/weixin/ImgmsgMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis1/weixin/TextmsgMapper.xml sourcecode/MVNFHM/src/main/resources/mybatis2/dst/DataSource2Mapper.xml sourcecode/MVNFHM/src/main/resources/mybatis2/mybatis-config.xml sourcecode/MVNFHM/src/main/resources/redis.properties sourcecode/MVNFHM/src/main/resources/spring/ApplicationContext-dataSource.xml sourcecode/MVNFHM/src/main/resources/spring/ApplicationContext-main.xml sourcecode/MVNFHM/src/main/resources/spring/ApplicationContext-mvc.xml sourcecode/MVNFHM/src/main/resources/spring/ApplicationContext-redis.xml sourcecode/MVNFHM/src/main/resources/spring/ApplicationContext-shiro.xml sourcecode/MVNFHM/src/main/webapp/404.jsp sourcecode/MVNFHM/src/main/webapp/META-INF/MANIFEST.MF sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/FusionChartsHTMLRenderer.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/FusionChartsRenderer.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/authorization.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/dst/datasource2/datasource2_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/dst/datasource2/datasource2_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/error.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/fhdb/brdb/brdb_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/fhdb/brdb/brdb_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/fhdb/brdb/table_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/fhdb/sqledit/sql_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/fhdb/timingbackup/timingbackup_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/fhdb/timingbackup/timingbackup_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/fhoa/datajur/datajur_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/fhoa/department/department_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/fhoa/department/department_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/fhoa/department/department_ztree.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/fhoa/fhfile/fhfile_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/fhoa/fhfile/fhfile_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/fhoa/staff/staff_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/fhoa/staff/staff_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/information/attached/attached_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/information/attached/attached_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/information/attachedmx/attachedmx_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/information/attachedmx/attachedmx_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/information/linkage/view.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/information/pictures/imageCrawler.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/information/pictures/pictures_add.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/information/pictures/pictures_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/information/pictures/pictures_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/save_result.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/appuser/appuser_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/appuser/appuser_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/buttonrights/buttonrights_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/buttonrights/buttonrights_list_r.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/createcode/createcode_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/createcode/productCode.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/createcode/recreatecode_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/dictionaries/dictionaries_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/dictionaries/dictionaries_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/dictionaries/dictionaries_ztree.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/fhbutton/fhbutton_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/fhbutton/fhbutton_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/fhlog/fhlog_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/fhsms/fhsms_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/fhsms/fhsms_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/fhsms/fhsms_view.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/head/send_email.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/head/send_sms.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/head/sys_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/index/default.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/index/foot.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/index/head.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/index/left.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/index/login.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/index/login_jd.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/index/main.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/index/null.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/index/tab.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/index/top.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/loginimg/loginimg_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/loginimg/loginimg_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/menu/menu_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/menu/menu_icon.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/menu/menu_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/menu/menu_ztree.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/menu/menu_ztree_other.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/onlinemanager/onlinemanager_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/role/b4Button.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/role/menuqx.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/role/role_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/role/role_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/system/system_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/system/system_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/tenant/tenant_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/tenant/tenant_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/tenant/tenant_menu_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/tools/email.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/tools/form_builder.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/tools/fusionchartsdemo.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/tools/interfaceTest.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/tools/map.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/tools/mapXY.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/tools/printPage.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/tools/printTest.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/tools/twoDimensionCode.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/user/uploadexcel.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/user/user_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/user/user_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/user/user_view.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/user/window_user_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/system/userphoto/userphoto_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/weixin/command/command_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/weixin/command/command_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/weixin/imgmsg/imgmsg_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/weixin/imgmsg/imgmsg_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/weixin/subscribe.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/weixin/textmsg/textmsg_edit.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/jsp/weixin/textmsg/textmsg_list.jsp sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/QRCode.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/aopalliance-1.0.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/apache-mime4j-0.6.1.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/asm-3.3.1.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/axis-ant.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/axis.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/cglib-nodep-3.1.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/commons-beanutils-1.9.2.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/commons-codec-1.10.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/commons-collections-3.2.1.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/commons-discovery-0.5.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/commons-fileupload-1.3.1.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/commons-httpclient-3.1.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/commons-io-2.4.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/commons-lang-2.6.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/commons-logging-1.2.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/commons-pool2-2.4.2.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/dom4j-1.6.1.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/druid-1.0.9.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/ehcache-core-2.6.10.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/ezmorph-1.0.6.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/fastjson-1.2.12.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/fcexporter.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/fcexporthandler.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/fchelper.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/fcsampleshelper.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/fctl.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/freemarker-2.3.8.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/gson-2.3.1.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/httpcore-4.4.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/httpmime-4.3.6.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/jackson-all-1.7.6.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/jackson-core-2.4.4.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/jackson-mapper-asl-1.9.13.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/java_websocket.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/jaxrpc.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/jedis-2.8.1.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/jpush-java-libraryV2.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/json-lib-2.4-jdk15.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/jstl-1.2.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/log4j-1.2.17.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/mail.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/mybatis-3.3.1.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/mybatis-ehcache-1.0.3.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/mybatis-oscache-1.0.1.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/mybatis-spring-1.2.0.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/mysql-connector-java-5.1.34.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/ojdbc6.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/pinyin4j-2.5.0.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/poi-3.11-20141221.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/poi-examples-3.11-20141221.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/poi-excelant-3.11-20141221.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/poi-ooxml-3.11-20141221.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/poi-ooxml-schemas-3.11-20141221.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/poi-scratchpad-3.11-20141221.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/quartz-2.2.2.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/quartz-jobs-2.2.2.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/saaj.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/servlet-api.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/shiro-all-1.2.3.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/slf4j-api-1.7.9.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/slf4j-log4j12-1.7.9.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/spring-aop-4.2.5.RELEASE.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/spring-aspects-4.2.5.RELEASE.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/spring-beans-4.2.5.RELEASE.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/spring-context-4.2.5.RELEASE.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/spring-context-support-4.2.5.RELEASE.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/spring-core-4.2.5.RELEASE.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/spring-dao-2.0.8.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/spring-data-redis-1.7.1.RELEASE.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/spring-expression-4.2.5.RELEASE.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/spring-jdbc-4.2.5.RELEASE.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/spring-mock-2.0.8.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/spring-orm-4.2.5.RELEASE.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/spring-test-4.2.5.RELEASE.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/spring-tx-4.2.5.RELEASE.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/spring-web-4.2.5.RELEASE.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/spring-webmvc-4.2.5.RELEASE.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/sqljdbc4.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/standard-1.1.2.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/sun.misc.BASE64Decoder.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/ueditor.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/weixinapi.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/lib/wsdl4j-1.6.3.jar sourcecode/MVNFHM/src/main/webapp/WEB-INF/web.xml sourcecode/MVNFHM/src/main/webapp/admin/config/EMAIL.txt sourcecode/MVNFHM/src/main/webapp/admin/config/FWATERM.txt sourcecode/MVNFHM/src/main/webapp/admin/config/IWATERM.txt sourcecode/MVNFHM/src/main/webapp/admin/config/LOGIN.txt sourcecode/MVNFHM/src/main/webapp/admin/config/PAGE.txt sourcecode/MVNFHM/src/main/webapp/admin/config/SMS1.txt sourcecode/MVNFHM/src/main/webapp/admin/config/SMS2.txt sourcecode/MVNFHM/src/main/webapp/admin/config/SYSNAME.txt sourcecode/MVNFHM/src/main/webapp/admin/config/WEBSOCKET.txt sourcecode/MVNFHM/src/main/webapp/admin/config/WEIXIN.txt sourcecode/MVNFHM/src/main/webapp/favicon.ico sourcecode/MVNFHM/src/main/webapp/index.jsp sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/dialog.js sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/drag.js sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_bg.jpg sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_cb.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_cb.png sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_closebtn.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_closebtn_over.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_ct.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_ct.png sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_decreasebtn.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_lb.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_lb.png sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_lt.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_lt.png sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_maxbtn.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_minbtn.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_mlm.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_mlm.png sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_mrm.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_mrm.png sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_rb.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_rb.png sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_rt.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/dialog_rt.png sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/icon_dialog.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/popup/icon_dialog.png sourcecode/MVNFHM/src/main/webapp/plugins/attention/drag/style.css sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/skins/blue/dialog_cb.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/skins/blue/dialog_cb.png sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/skins/blue/dialog_closebtn.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/skins/blue/dialog_closebtn_over.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/skins/blue/dialog_ct.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/skins/blue/dialog_ct.png sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/skins/blue/dialog_lb.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/skins/blue/dialog_lb.png sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/skins/blue/dialog_lt.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/skins/blue/dialog_lt.png sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/skins/blue/dialog_mlm.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/skins/blue/dialog_mlm.png sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/skins/blue/dialog_mrm.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/skins/blue/dialog_mrm.png sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/skins/blue/dialog_rb.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/skins/blue/dialog_rb.png sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/skins/blue/dialog_rt.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/skins/blue/dialog_rt.png sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/skins/blue/dir.txt sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/skins/blue/icon_dialog.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/skins/blue/window.gif sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/zDialog.js sourcecode/MVNFHM/src/main/webapp/plugins/attention/zDialog/zDrag.js sourcecode/MVNFHM/src/main/webapp/plugins/echarts/echarts.min.js sourcecode/MVNFHM/src/main/webapp/plugins/fhform/css/animate.min.css sourcecode/MVNFHM/src/main/webapp/plugins/fhform/css/bootstrap.min.css sourcecode/MVNFHM/src/main/webapp/plugins/fhform/css/style.min.css sourcecode/MVNFHM/src/main/webapp/plugins/fhform/js/beautifyhtml/beautifyhtml.js sourcecode/MVNFHM/src/main/webapp/plugins/fhform/js/bootstrap.min.js sourcecode/MVNFHM/src/main/webapp/plugins/fhform/js/content.min.js sourcecode/MVNFHM/src/main/webapp/plugins/fhform/js/jquery-ui-1.10.4.min.js sourcecode/MVNFHM/src/main/webapp/plugins/fhform/js/jquery.min.js sourcecode/MVNFHM/src/main/webapp/plugins/photoEditor/expressInstall.swf sourcecode/MVNFHM/src/main/webapp/plugins/photoEditor/fullAvatarEditor.swf sourcecode/MVNFHM/src/main/webapp/plugins/photoEditor/scripts/fullAvatarEditor.js sourcecode/MVNFHM/src/main/webapp/plugins/photoEditor/scripts/swfobject.js sourcecode/MVNFHM/src/main/webapp/plugins/photoEditor/upload.jsp sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/form/selBtn.jpg sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/framework.js sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/import_fh.css sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/selectTree.js sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/ztree/img/Thumbs.db sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/ztree/img/diy/1_close.png sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/ztree/img/diy/1_open.png sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/ztree/img/diy/2.png sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/ztree/img/diy/3.png sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/ztree/img/diy/4.png sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/ztree/img/diy/5.png sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/ztree/img/diy/6.png sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/ztree/img/diy/7.png sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/ztree/img/diy/8.png sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/ztree/img/diy/9.png sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/ztree/img/diy/Thumbs.db sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/ztree/img/line_conn.gif sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/ztree/img/loading.gif sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/ztree/img/zTreeStandard.gif sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/ztree/img/zTreeStandard.png sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/ztree/ztree.css sourcecode/MVNFHM/src/main/webapp/plugins/selectZtree/ztree/ztree.js sourcecode/MVNFHM/src/main/webapp/plugins/tab/css/framework/basic.css sourcecode/MVNFHM/src/main/webapp/plugins/tab/css/framework/code.css sourcecode/MVNFHM/src/main/webapp/plugins/tab/css/framework/form.css sourcecode/MVNFHM/src/main/webapp/plugins/tab/css/framework/icon.css sourcecode/MVNFHM/src/main/webapp/plugins/tab/css/framework/position.css sourcecode/MVNFHM/src/main/webapp/plugins/tab/css/framework/reset.css sourcecode/MVNFHM/src/main/webapp/plugins/tab/css/import_basic.css sourcecode/MVNFHM/src/main/webapp/plugins/tab/js/framework.js sourcecode/MVNFHM/src/main/webapp/plugins/tab/js/tab.js sourcecode/MVNFHM/src/main/webapp/plugins/tab/skins/sky/import_skin.css sourcecode/MVNFHM/src/main/webapp/plugins/tab/skins/sky/style.css sourcecode/MVNFHM/src/main/webapp/plugins/tab/skins/sky/tab/close.gif sourcecode/MVNFHM/src/main/webapp/plugins/tab/skins/sky/tab/tab1.gif sourcecode/MVNFHM/src/main/webapp/plugins/tab/skins/sky/tab/tab1_bottom.gif sourcecode/MVNFHM/src/main/webapp/plugins/tab/skins/sky/tab/tab2.gif sourcecode/MVNFHM/src/main/webapp/plugins/tab/skins/sky/tab/tab2_bottom.gif sourcecode/MVNFHM/src/main/webapp/plugins/tab/skins/sky/tab/tab3.gif sourcecode/MVNFHM/src/main/webapp/plugins/tab/skins/sky/tab/tab3_bottom.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/emotion/emotion.css sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/emotion/emotion.html sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/emotion/emotion.js sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/emotion/images/0.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/emotion/images/bface.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/emotion/images/cface.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/emotion/images/fface.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/emotion/images/jxface2.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/emotion/images/neweditor-tab-bg.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/emotion/images/tface.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/emotion/images/wface.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/emotion/images/yface.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/image/image.css sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/image/image.html sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/image/image.js sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/image/imageUploader.swf sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/image/images/center_focus.jpg sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/image/images/left_focus.jpg sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/image/images/none_focus.jpg sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/image/images/right_focus.jpg sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/internal.js sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/link/link.html sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/preview/preview.html sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/table/dragicon.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/table/edittable.css sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/table/edittable.html sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/table/edittable.js sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/table/edittd.html sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/table/edittip.html sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/tangram.js sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/video/callbacks.js sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/video/images/center_focus.jpg sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/video/images/left_focus.jpg sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/video/images/none_focus.jpg sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/video/images/right_focus.jpg sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/video/video.css sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/video/video.html sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/dialogs/video/video.js sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/index.html sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/jsp/Uploader.java sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/jsp/config.properties sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/jsp/fileUp.jsp sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/jsp/getContent.jsp sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/jsp/getMovie.jsp sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/jsp/getRemoteImage.jsp sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/jsp/imageManager.jsp sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/jsp/imageUp.jsp sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/jsp/scrawlUp.jsp sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/jsp/ueditor.jar sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/lang/zh-cn/images/copy.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/lang/zh-cn/images/imglabel.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/lang/zh-cn/images/localimage.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/lang/zh-cn/images/music.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/lang/zh-cn/images/upload.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/lang/zh-cn/zh-cn.js sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/css/ueditor.css sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/css/ueditor.min.css sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/dialogbase.css sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/anchor.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/arrow.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/arrow_down.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/arrow_up.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/button-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/cancelbutton.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/charts.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/cursor_h.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/cursor_h.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/cursor_v.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/cursor_v.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/dialog-title-bg.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/filescan.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/highlighted.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/icons-all.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/icons.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/icons.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/lock.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/neweditor-tab-bg.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/pagebreak.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/scale.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/sortable.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/spacer.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/sparator_v.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/table-cell-align.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/tangram-colorpicker.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/toolbar_bg.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/unhighlighted.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/upload.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/videologo.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/word.gif sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/default/images/wordpaste.png sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/themes/iframe.css sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/third-party/SyntaxHighlighter/shCore.js sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/third-party/SyntaxHighlighter/shCoreDefault.css sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/third-party/swfupload/fileprogress.js sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/third-party/swfupload/swfupload.cookies.js sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/third-party/swfupload/swfupload.js sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/third-party/swfupload/swfupload.proxy.js sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/third-party/swfupload/swfupload.queue.js sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/third-party/swfupload/swfupload.speed.js sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/third-party/swfupload/swfupload.swf sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/third-party/swfupload/swfupload_fp9.swf sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/third-party/video-js/font/vjs.eot sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/third-party/video-js/font/vjs.svg sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/third-party/video-js/font/vjs.ttf sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/third-party/video-js/font/vjs.woff sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/third-party/video-js/video-js.css sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/third-party/video-js/video-js.min.css sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/third-party/video-js/video-js.swf sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/third-party/video-js/video.dev.js sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/third-party/video-js/video.js sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/ueditor.all.js sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/ueditor.all.min.js sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/ueditor.config.js sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/ueditor.parse.js sourcecode/MVNFHM/src/main/webapp/plugins/ueditor/ueditor.parse.min.js sourcecode/MVNFHM/src/main/webapp/plugins/uploadify/cancel.png sourcecode/MVNFHM/src/main/webapp/plugins/uploadify/expressInstall.swf sourcecode/MVNFHM/src/main/webapp/plugins/uploadify/jquery.uploadify.v2.1.4.min.js sourcecode/MVNFHM/src/main/webapp/plugins/uploadify/swfobject.js sourcecode/MVNFHM/src/main/webapp/plugins/uploadify/uploadFile.jsp sourcecode/MVNFHM/src/main/webapp/plugins/uploadify/uploadify.css sourcecode/MVNFHM/src/main/webapp/plugins/uploadify/uploadify.swf sourcecode/MVNFHM/src/main/webapp/plugins/uploadify/uploadp.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/css/websocket.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ext-all-debug.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/locale/ext-lang-zh_CN.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/css/ext-all-access-debug.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/css/ext-all-access.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/css/ext-all-debug.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/css/ext-all-gray-debug.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/css/ext-all-gray.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/css/ext-all-scoped-debug.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/css/ext-all-scoped.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/css/ext-all.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/css/ext-ie-debug.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/css/ext-ie-scoped-debug.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/css/ext-ie-scoped.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/css/ext-ie.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/css/ext-neptune-debug.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/css/ext-neptune.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/css/ext-sandbox-debug.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/css/ext-sandbox.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/css/ext-standard-debug.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/css/ext-standard-scoped-debug.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/css/ext-standard-scoped.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/css/ext-standard.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/sass/config.rb sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/sass/ext-all-access.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/sass/ext-all-gray.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/sass/ext-all-scoped.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/sass/ext-all.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/sass/ext-ie-scoped.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/sass/ext-ie.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/sass/ext-neptune.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/sass/ext-sandbox.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/sass/ext-standard-scoped.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/sass/ext-standard.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/compass_init.rb sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/boundlist/trigger-arrow.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/box/corners-blue.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/box/corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/box/l-blue.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/box/l.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/box/r-blue.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/box/r.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/box/tb-blue.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/box/tb.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn-group/btn-group-default-framed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn-group/btn-group-default-framed-notitle-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn-group/btn-group-default-framed-notitle-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn-group/btn-group-default-framed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn-group/btn-group-framed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn-group/btn-group-framed-notitle-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn-group/btn-group-framed-notitle-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn-group/btn-group-framed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-large-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-large-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-large-disabled-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-large-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-large-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-large-focus-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-large-focus-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-large-focus-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-large-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-large-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-large-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-large-pressed-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-large-pressed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-large-pressed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-large-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-medium-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-medium-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-medium-disabled-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-medium-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-medium-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-medium-focus-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-medium-focus-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-medium-focus-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-medium-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-medium-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-medium-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-medium-pressed-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-medium-pressed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-medium-pressed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-medium-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-small-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-small-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-small-disabled-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-small-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-small-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-small-focus-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-small-focus-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-small-focus-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-small-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-small-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-small-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-small-pressed-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-small-pressed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-small-pressed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-small-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-large-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-large-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-large-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-large-focus-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-large-focus-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-large-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-large-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-large-pressed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-large-pressed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-large-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-medium-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-medium-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-medium-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-medium-focus-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-medium-focus-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-medium-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-medium-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-medium-pressed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-medium-pressed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-medium-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-small-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-small-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-small-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-small-focus-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-small-focus-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-small-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-small-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-small-pressed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-small-pressed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-default-toolbar-small-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-large-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-large-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-large-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-large-focus-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-large-focus-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-large-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-large-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-large-pressed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-large-pressed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-large-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-medium-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-medium-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-medium-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-medium-focus-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-medium-focus-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-medium-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-medium-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-medium-pressed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-medium-pressed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-medium-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-small-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-small-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-small-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-small-focus-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-small-focus-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-small-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-small-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-small-pressed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-small-pressed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/btn/btn-toolbar-small-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/button/arrow.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/button/btn.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/button/group-cs.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/button/group-lr.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/button/group-tb.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/button/s-arrow-b-noline.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/button/s-arrow-b.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/button/s-arrow-bo.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/button/s-arrow-light.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/button/s-arrow-noline.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/button/s-arrow-o.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/button/s-arrow.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/datepicker/datepicker-footer-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/datepicker/datepicker-header-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/dd/drop-add.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/dd/drop-between.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/dd/drop-no.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/dd/drop-over.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/dd/drop-under.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/dd/drop-yes.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/editor/tb-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/form-invalid-tip/form-invalid-tip-default-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/form-invalid-tip/form-invalid-tip-default-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/form/checkbox.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/form/checkbox_.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/form/clear-trigger.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/form/date-trigger.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/form/error-tip-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/form/exclamation.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/form/radio.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/form/radio_.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/form/search-trigger.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/form/spinner-small.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/form/spinner.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/form/spinner_.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/form/text-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/form/trigger-tpl.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/form/trigger.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/arrow-left-white.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/arrow-right-white.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/cell-special-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/cell-special-selected-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/checked.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/col-move-bottom.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/col-move-top.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/column-header-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/column-header-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/columns.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/dd-insert-arrow-left.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/dd-insert-arrow-left.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/dd-insert-arrow-right.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/dd-insert-arrow-right.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/dirty.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/done.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/drop-no.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/drop-yes.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/footer-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/grid-blue-hd.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/grid-blue-split.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/grid-hrow.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/grid-loading.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/grid-split.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/grid-vista-hd.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/grid3-hd-btn.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/grid3-hrow-over.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/grid3-hrow.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/grid3-special-col-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/grid3-special-col-sel-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/group-by.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/group-collapse.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/group-expand-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/group-expand.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/hd-pop.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/hmenu-asc.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/hmenu-desc.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/hmenu-lock.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/hmenu-lock.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/hmenu-unlock.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/hmenu-unlock.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/invalid_line.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/loading.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/mso-hd.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/nowait.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/page-first-disabled.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/page-first.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/page-last-disabled.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/page-last.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/page-next-disabled.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/page-next.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/page-prev-disabled.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/page-prev.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/pick-button.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/property-cell-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/refresh-disabled.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/refresh.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/row-check-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/row-expand-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/row-over.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/row-sel.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/sort-hd.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/sort_asc.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/sort_desc.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/unchecked.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/grid/wait.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/layout/mini-bottom.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/layout/mini-left.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/layout/mini-right.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/layout/mini-top.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/menu/checked.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/menu/group-checked.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/menu/item-over.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/menu/menu-item-active-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/menu/menu-item-active-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/menu/menu-item-active-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/menu/menu-parent.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/menu/menu.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/menu/unchecked.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-bottom-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-bottom-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-bottom-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-bottom-noborder-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-bottom-noborder-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-bottom-noborder-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-bottom-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-left-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-left-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-left-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-right-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-right-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-right-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-top-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-top-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-top-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-left-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-left-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-left-noborder-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-left-noborder-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-left-noborder-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-left-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-right-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-right-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-right-noborder-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-right-noborder-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-right-noborder-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-right-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-top-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-top-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-top-noborder-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-top-noborder-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-top-noborder-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-framed-top-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-left-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-right-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-default-top-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-framed-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-framed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-framed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel-header/panel-header-vertical-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel/corners-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel/left-right.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel/light-hd.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel/panel-default-framed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel/panel-default-framed-noborder-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel/panel-default-framed-noborder-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel/panel-default-framed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel/panel-framed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel/panel-framed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel/tool-sprite-tpl.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel/tool-sprites.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel/tools-sprites-trans.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel/top-bottom.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel/white-corners-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel/white-left-right.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/panel/white-top-bottom.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/progress/progress-default-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/qtip/close.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/qtip/tip-anchor-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/qtip/tip-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/shared/blue-loading.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/shared/glass-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/shared/hd-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/shared/icon-error.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/shared/icon-info.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/shared/icon-question.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/shared/icon-warning.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/shared/large-loading.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/shared/left-btn.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/shared/right-btn.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/sizer/e-handle-dark.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/sizer/e-handle.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/sizer/ne-handle-dark.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/sizer/ne-handle.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/sizer/nw-handle-dark.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/sizer/nw-handle.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/sizer/s-handle-dark.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/sizer/s-handle.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/sizer/se-handle-dark.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/sizer/se-handle.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/sizer/square.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/sizer/sw-handle-dark.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/sizer/sw-handle.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/slider/slider-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/slider/slider-bg.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/slider/slider-thumb.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/slider/slider-thumb.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/slider/slider-v-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/slider/slider-v-bg.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/slider/slider-v-thumb.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/slider/slider-v-thumb.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/spinner.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab-bar/scroll-left.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab-bar/scroll-right.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab-bar/tab-bar-default-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-bottom-active-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-bottom-active-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-bottom-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-bottom-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-bottom-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-bottom-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-bottom-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-bottom-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-default-bottom-active-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-default-bottom-active-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-default-bottom-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-default-bottom-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-default-bottom-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-default-bottom-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-default-bottom-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-default-bottom-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-default-top-active-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-default-top-active-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-default-top-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-default-top-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-default-top-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-default-top-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-default-top-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-default-top-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-top-active-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-top-active-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-top-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-top-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-top-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-top-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-top-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tab/tab-top-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tabs/tab-btm-inactive-left-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tabs/tab-btm-inactive-right-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tabs/tab-btm-left-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tabs/tab-btm-right-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tabs/tab-close.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tabs/tab-strip-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tabs/tab-strip-btm-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tabs/tabs-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tip/tip-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tip/tip-corners.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tip/tip-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tip/tip-sides.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/toolbar/bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/toolbar/btn-arrow-light.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/toolbar/btn-arrow.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/toolbar/btn-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/toolbar/gray-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/toolbar/more.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/toolbar/s-arrow-bo.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/toolbar/scroll-left.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/toolbar/scroll-right.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/toolbar/tb-btn-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/toolbar/tb-xl-btn-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/toolbar/tb-xl-sep.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/toolbar/toolbar-default-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tools/tool-sprite-tpl.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tools/tool-sprites.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tools/tools-sprites-trans.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/arrows.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/drop-above.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/drop-add.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/drop-append.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/drop-below.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/drop-between.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/drop-no.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/drop-over.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/drop-under.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/drop-yes.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/elbow-end-minus-nl.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/elbow-end-minus.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/elbow-end-plus-nl.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/elbow-end-plus.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/elbow-end.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/elbow-line.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/elbow-minus-nl.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/elbow-minus.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/elbow-plus-nl.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/elbow-plus.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/elbow.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/folder-open.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/folder.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/leaf.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/loading.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/tree/s.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/util/splitter/mini-bottom.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/util/splitter/mini-left.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/util/splitter/mini-right.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/util/splitter/mini-top.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window-header/window-header-default-bottom-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window-header/window-header-default-bottom-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window-header/window-header-default-collapsed-bottom-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window-header/window-header-default-collapsed-bottom-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window-header/window-header-default-collapsed-left-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window-header/window-header-default-collapsed-left-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window-header/window-header-default-collapsed-right-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window-header/window-header-default-collapsed-right-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window-header/window-header-default-collapsed-top-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window-header/window-header-default-collapsed-top-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window-header/window-header-default-left-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window-header/window-header-default-left-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window-header/window-header-default-right-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window-header/window-header-default-right-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window-header/window-header-default-top-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window-header/window-header-default-top-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window/icon-error.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window/icon-info.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window/icon-question.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window/icon-warning.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window/window-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window/window-default-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window/window-default-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/access/window/window-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/boundlist/trigger-arrow.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/box/corners-blue.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/box/corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/box/l-blue.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/box/l.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/box/r-blue.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/box/r.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/box/tb-blue.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/box/tb.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn-group/btn-group-default-framed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn-group/btn-group-default-framed-notitle-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn-group/btn-group-default-framed-notitle-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn-group/btn-group-default-framed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-large-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-large-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-large-disabled-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-large-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-large-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-large-focus-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-large-focus-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-large-focus-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-large-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-large-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-large-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-large-pressed-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-large-pressed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-large-pressed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-large-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-medium-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-medium-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-medium-disabled-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-medium-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-medium-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-medium-focus-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-medium-focus-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-medium-focus-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-medium-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-medium-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-medium-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-medium-pressed-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-medium-pressed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-medium-pressed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-medium-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-small-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-small-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-small-disabled-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-small-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-small-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-small-focus-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-small-focus-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-small-focus-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-small-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-small-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-small-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-small-pressed-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-small-pressed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-small-pressed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-small-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-large-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-large-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-large-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-large-focus-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-large-focus-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-large-focus-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-large-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-large-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-large-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-large-pressed-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-large-pressed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-large-pressed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-large-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-medium-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-medium-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-medium-focus-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-medium-focus-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-medium-focus-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-medium-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-medium-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-medium-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-medium-pressed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-medium-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-small-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-small-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-small-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-small-focus-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-small-focus-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-small-focus-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-small-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-small-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-small-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-small-pressed-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-small-pressed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-small-pressed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/btn/btn-default-toolbar-small-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/button/arrow.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/button/btn.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/button/group-cs.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/button/group-lr.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/button/group-tb.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/button/s-arrow-b-noline.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/button/s-arrow-b.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/button/s-arrow-bo.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/button/s-arrow-light.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/button/s-arrow-noline.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/button/s-arrow-o.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/button/s-arrow.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/datepicker/datepicker-footer-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/datepicker/datepicker-footer-bg.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/datepicker/datepicker-header-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/datepicker/datepicker-header-bg.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/dd/drop-add.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/dd/drop-no.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/dd/drop-yes.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/editor/tb-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/form-invalid-tip/form-invalid-tip-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/form-invalid-tip/form-invalid-tip-default-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/form-invalid-tip/form-invalid-tip-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/form/checkbox.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/form/clear-trigger.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/form/date-trigger.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/form/error-tip-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/form/exclamation.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/form/radio.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/form/search-trigger.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/form/spinner-small.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/form/spinner.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/form/text-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/form/trigger-square.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/form/trigger-tpl.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/form/trigger.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/arrow-left-white.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/arrow-right-white.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/cell-special-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/cell-special-bg.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/cell-special-selected-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/cell-special-selected-bg.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/checked.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/col-move-bottom.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/col-move-top.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/column-header-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/column-header-bg.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/column-header-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/column-header-over-bg.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/columns.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/dd-insert-arrow-left.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/dd-insert-arrow-left.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/dd-insert-arrow-right.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/dd-insert-arrow-right.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/dirty.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/done.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/drop-no.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/drop-yes.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/footer-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/grid-blue-hd.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/grid-blue-split.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/grid-hrow.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/grid-loading.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/grid-split.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/grid-vista-hd.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/grid3-hd-btn.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/grid3-hrow-over.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/grid3-hrow.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/grid3-rowheader.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/group-by.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/group-collapse.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/group-expand-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/group-expand.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/hd-pop.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/hmenu-asc.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/hmenu-desc.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/hmenu-lock.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/hmenu-lock.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/hmenu-unlock.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/hmenu-unlock.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/invalid_line.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/loading.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/mso-hd.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/nowait.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/page-first-disabled.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/page-first.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/page-last-disabled.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/page-last.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/page-next-disabled.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/page-next.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/page-prev-disabled.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/page-prev.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/pick-button.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/property-cell-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/property-cell-selected-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/refresh-disabled.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/refresh.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/row-check-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/row-expand-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/row-over.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/row-sel.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/sort-hd.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/sort_asc.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/sort_desc.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/unchecked.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/grid/wait.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/layout/mini-bottom.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/layout/mini-left.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/layout/mini-right.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/layout/mini-top.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/menu/checked.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/menu/group-checked.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/menu/item-over.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/menu/menu-item-active-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/menu/menu-item-active-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/menu/menu-item-active-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/menu/menu-parent.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/menu/menu.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/menu/unchecked.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-bottom-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-bottom-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-bottom-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-bottom-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-left-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-right-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-collapsed-top-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-left-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-left-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-left-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-right-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-right-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-right-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-top-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-top-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-framed-top-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-left-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-right-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel-header/panel-header-default-top-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel/panel-default-framed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/panel/panel-default-framed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/progress/progress-default-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/shared/blue-loading.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/shared/calendar.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/shared/glass-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/shared/hd-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/shared/icon-error.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/shared/icon-info.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/shared/icon-question.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/shared/icon-warning.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/shared/large-loading.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/shared/left-btn.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/shared/loading-balls.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/shared/right-btn.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/shared/shadow-c.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/shared/shadow-lr.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/shared/shadow.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/shared/warning.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/sizer/e-handle-dark.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/sizer/e-handle.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/sizer/ne-handle-dark.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/sizer/ne-handle.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/sizer/nw-handle-dark.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/sizer/nw-handle.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/sizer/s-handle-dark.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/sizer/s-handle.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/sizer/se-handle-dark.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/sizer/se-handle.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/sizer/square.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/sizer/sw-handle-dark.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/sizer/sw-handle.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/slider/slider-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/slider/slider-bg.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/slider/slider-thumb.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/slider/slider-thumb.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/slider/slider-v-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/slider/slider-v-bg.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/slider/slider-v-thumb.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/slider/slider-v-thumb.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab-bar/scroll-left.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab-bar/scroll-right.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab-bar/tab-bar-default-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-bottom-active-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-bottom-active-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-bottom-active-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-bottom-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-bottom-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-bottom-disabled-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-bottom-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-bottom-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-bottom-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-bottom-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-bottom-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-bottom-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-close.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-top-active-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-top-active-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-top-active-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-top-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-top-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-top-disabled-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-top-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-top-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-top-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-top-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-top-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tab/tab-default-top-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tip/tip-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tip/tip-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/toolbar/more.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/toolbar/scroll-left.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/toolbar/scroll-right.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/toolbar/toolbar-default-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tools/tool-sprite-tpl.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tools/tool-sprites.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tools/tools-sprites-trans.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/arrows.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/drop-above.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/drop-add.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/drop-append.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/drop-below.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/drop-between.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/drop-no.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/drop-over.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/drop-under.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/drop-yes.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/elbow-end-minus-nl.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/elbow-end-minus.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/elbow-end-plus-nl.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/elbow-end-plus.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/elbow-end.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/elbow-line.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/elbow-minus-nl.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/elbow-minus.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/elbow-plus-nl.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/elbow-plus.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/elbow.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/folder-open.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/folder.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/leaf.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/loading.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/tree/s.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/util/splitter/mini-bottom.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/util/splitter/mini-left.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/util/splitter/mini-right.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/util/splitter/mini-top.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/window-header/window-header-default-bottom-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/window-header/window-header-default-bottom-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/window-header/window-header-default-collapsed-bottom-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/window-header/window-header-default-collapsed-bottom-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/window-header/window-header-default-collapsed-left-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/window-header/window-header-default-collapsed-left-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/window-header/window-header-default-collapsed-right-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/window-header/window-header-default-collapsed-right-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/window-header/window-header-default-collapsed-top-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/window-header/window-header-default-collapsed-top-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/window-header/window-header-default-left-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/window-header/window-header-default-left-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/window-header/window-header-default-right-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/window-header/window-header-default-right-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/window-header/window-header-default-top-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/window-header/window-header-default-top-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/window/window-default-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/default/window/window-default-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/boundlist/trigger-arrow.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/box/corners-blue.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/box/corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/box/l-blue.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/box/l.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/box/r-blue.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/box/r.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/box/tb-blue.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/box/tb.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn-group/btn-group-default-framed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn-group/btn-group-default-framed-notitle-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn-group/btn-group-default-framed-notitle-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn-group/btn-group-default-framed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-large-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-large-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-large-disabled-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-large-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-large-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-large-focus-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-large-focus-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-large-focus-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-large-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-large-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-large-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-large-pressed-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-large-pressed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-large-pressed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-large-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-medium-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-medium-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-medium-disabled-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-medium-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-medium-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-medium-focus-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-medium-focus-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-medium-focus-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-medium-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-medium-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-medium-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-medium-pressed-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-medium-pressed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-medium-pressed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-medium-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-small-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-small-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-small-disabled-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-small-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-small-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-small-focus-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-small-focus-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-small-focus-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-small-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-small-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-small-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-small-pressed-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-small-pressed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-small-pressed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-small-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-large-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-large-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-large-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-large-focus-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-large-focus-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-large-focus-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-large-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-large-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-large-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-large-pressed-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-large-pressed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-large-pressed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-large-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-medium-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-medium-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-medium-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-medium-focus-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-medium-focus-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-medium-focus-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-medium-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-medium-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-medium-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-medium-pressed-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-medium-pressed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-medium-pressed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-medium-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-small-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-small-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-small-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-small-focus-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-small-focus-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-small-focus-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-small-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-small-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-small-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-small-pressed-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-small-pressed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-small-pressed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/btn/btn-default-toolbar-small-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/button/arrow.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/button/btn-arrow.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/button/btn-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/button/btn.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/button/group-cs.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/button/group-lr.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/button/group-tb.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/button/s-arrow-b-noline.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/button/s-arrow-b.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/button/s-arrow-bo.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/button/s-arrow-light.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/button/s-arrow-noline.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/button/s-arrow-o.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/button/s-arrow.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/datepicker/datepicker-footer-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/datepicker/datepicker-footer-bg.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/datepicker/datepicker-header-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/datepicker/datepicker-header-bg.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/dd/drop-add.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/dd/drop-no.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/dd/drop-yes.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/editor/tb-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/form-invalid-tip/form-invalid-tip-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/form-invalid-tip/form-invalid-tip-default-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/form-invalid-tip/form-invalid-tip-default-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/form-invalid-tip/form-invalid-tip-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/form/checkbox.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/form/clear-trigger.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/form/date-trigger.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/form/error-tip-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/form/exclamation.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/form/radio.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/form/search-trigger.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/form/spinner-small.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/form/spinner.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/form/text-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/form/trigger-square.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/form/trigger-tpl.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/form/trigger.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/arrow-left-white.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/arrow-right-white.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/cell-special-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/cell-special-bg.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/cell-special-selected-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/cell-special-selected-bg.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/checked.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/col-move-bottom.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/col-move-top.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/column-header-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/column-header-bg.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/column-header-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/column-header-over-bg.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/columns.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/dd-insert-arrow-left.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/dd-insert-arrow-left.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/dd-insert-arrow-right.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/dd-insert-arrow-right.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/dirty.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/done.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/drop-no.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/drop-yes.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/footer-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/grid-blue-hd.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/grid-blue-split.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/grid-hrow.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/grid-loading.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/grid-split.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/grid-vista-hd.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/grid3-hd-btn.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/grid3-hrow-over.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/grid3-hrow.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/grid3-rowheader.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/group-by.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/group-collapse.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/group-expand-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/group-expand.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/hd-pop.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/hmenu-asc.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/hmenu-desc.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/hmenu-lock.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/hmenu-lock.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/hmenu-unlock.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/hmenu-unlock.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/invalid_line.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/loading.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/mso-hd.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/nowait.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/page-first-disabled.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/page-first.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/page-last-disabled.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/page-last.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/page-next-disabled.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/page-next.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/page-prev-disabled.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/page-prev.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/pick-button.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/property-cell-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/property-cell-selected-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/refresh-disabled.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/refresh.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/row-check-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/row-expand-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/row-over.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/row-sel.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/sort-hd.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/sort_asc.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/sort_desc.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/unchecked.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/grid/wait.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/layout/mini-bottom.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/layout/mini-left.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/layout/mini-right.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/layout/mini-top.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/menu/checked.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/menu/group-checked.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/menu/item-over-disabled.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/menu/item-over.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/menu/menu-item-active-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/menu/menu-item-active-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/menu/menu-item-active-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/menu/menu-parent.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/menu/menu.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/menu/unchecked.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-bottom-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-bottom-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-bottom-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-bottom-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-left-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-left-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-left-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-right-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-right-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-right-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-top-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-top-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-collapsed-top-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-left-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-left-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-left-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-right-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-right-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-right-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-top-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-top-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-framed-top-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-left-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-right-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel-header/panel-header-default-top-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel/panel-default-framed-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/panel/panel-default-framed-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/progress/progress-default-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/shared/blue-loading.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/shared/calendar.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/shared/glass-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/shared/hd-sprite.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/shared/icon-error.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/shared/icon-info.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/shared/icon-question.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/shared/icon-warning.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/shared/large-loading.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/shared/left-btn.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/shared/loading-balls.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/shared/right-btn.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/shared/shadow-c.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/shared/shadow-lr.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/shared/shadow.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/shared/warning.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/sizer/e-handle-dark.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/sizer/e-handle.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/sizer/ne-handle-dark.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/sizer/ne-handle.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/sizer/nw-handle-dark.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/sizer/nw-handle.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/sizer/s-handle-dark.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/sizer/s-handle.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/sizer/se-handle-dark.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/sizer/se-handle.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/sizer/square.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/sizer/sw-handle-dark.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/sizer/sw-handle.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/slider/slider-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/slider/slider-bg.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/slider/slider-thumb.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/slider/slider-thumb.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/slider/slider-v-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/slider/slider-v-bg.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/slider/slider-v-thumb.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/slider/slider-v-thumb.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab-bar/scroll-left.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab-bar/scroll-right.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab-bar/tab-bar-default-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-bottom-active-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-bottom-active-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-bottom-active-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-bottom-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-bottom-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-bottom-disabled-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-bottom-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-bottom-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-bottom-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-bottom-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-bottom-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-bottom-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-close.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-top-active-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-top-active-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-top-active-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-top-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-top-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-top-disabled-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-top-disabled-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-top-disabled-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-top-over-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-top-over-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-top-over-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tab/tab-default-top-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tip/tip-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tip/tip-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/toolbar/more.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/toolbar/scroll-left.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/toolbar/scroll-right.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/toolbar/toolbar-default-bg.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tools/tool-sprite-tpl.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tools/tool-sprites.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tools/tools-sprites-trans.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/arrows.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/drop-above.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/drop-add.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/drop-append.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/drop-below.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/drop-between.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/drop-no.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/drop-over.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/drop-under.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/drop-yes.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/elbow-end-minus-nl.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/elbow-end-minus.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/elbow-end-plus-nl.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/elbow-end-plus.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/elbow-end.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/elbow-line.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/elbow-minus-nl.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/elbow-minus.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/elbow-plus-nl.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/elbow-plus.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/elbow.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/folder-open.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/folder.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/leaf.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/loading.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/tree/s.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/util/splitter/mini-bottom.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/util/splitter/mini-left.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/util/splitter/mini-right.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/util/splitter/mini-top.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window-header/window-header-default-bottom-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window-header/window-header-default-bottom-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window-header/window-header-default-collapsed-bottom-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window-header/window-header-default-collapsed-bottom-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window-header/window-header-default-collapsed-left-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window-header/window-header-default-collapsed-left-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window-header/window-header-default-collapsed-right-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window-header/window-header-default-collapsed-right-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window-header/window-header-default-collapsed-top-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window-header/window-header-default-collapsed-top-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window-header/window-header-default-left-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window-header/window-header-default-left-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window-header/window-header-default-right-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window-header/window-header-default-right-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window-header/window-header-default-top-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window-header/window-header-default-top-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window/icon-error.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window/icon-info.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window/icon-question.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window/icon-warning.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window/window-default-corners.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/gray/window/window-default-sides.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/WYSIWYG.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/button/arrow.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/button/arrow.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/button/btn.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/button/group-cs.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/button/group-lr.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/button/group-tb.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/button/s-arrow-b-noline.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/button/s-arrow-b.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/button/s-arrow-bo.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/button/s-arrow-light.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/button/s-arrow-noline.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/button/s-arrow-o.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/button/s-arrow-p.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/button/s-arrow.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/checkbox.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/grid/header-border.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/grid/sort.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/icons.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/invalid.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/radio.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/toolbar/more.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/toolbar/scroll-right.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/tools-small.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/tools.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/tree/elbows.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/tree/icons-blue.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/tree/icons-gray.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/tree/icons-navy.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/tree/icons-orange.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/tree/icons-white.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/tree/icons.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/triggerfield.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/images/neptune/valid.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/lib/utils.rb sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/_all.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/_core.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/_functions.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/_mixins.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/_variables.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/_widgets.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/core/_core.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/core/_reset.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/layout/_layout.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/mixins/_background-gradient.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/mixins/_color-by-background.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/mixins/_frame.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/mixins/_inner-border.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/mixins/_reset-extras.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/mixins/_theme-background-image.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/util/_dragdrop.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/util/_focus.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/util/_messagebox.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/util/_resizable.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/util/_scroller.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/util/_splitter.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/util/_tool.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/variables/_boundlist.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/variables/_btn-group.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/variables/_button.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/variables/_core.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/variables/_focus.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/variables/_form.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/variables/_grid.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/variables/_htmleditor.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/variables/_layout.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/variables/_loadmask.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/variables/_menu.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/variables/_panel.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/variables/_pickers.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/variables/_progress-bar.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/variables/_qtip.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/variables/_tabs.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/variables/_toolbar.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/variables/_tree.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/variables/_window.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/_boundlist.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/_btn-group.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/_button.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/_colorpicker.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/_datepicker.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/_drawcomponent.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/_form.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/_grid.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/_html.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/_loadmask.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/_menu.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/_panel.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/_progress-bar.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/_qtip.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/_slider.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/_tab.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/_tabbar.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/_toolbar.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/_tree.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/_viewport.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/_window.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/form/_all.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/form/_checkbox.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/form/_checkboxgroup.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/form/_field.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/form/_fieldset.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/form/_file.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/form/_htmleditor.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/ext4/default/widgets/form/_triggerfield.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/_all.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/_core.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/_functions.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/_mixins.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/_variables.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/_widgets.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/accessories/_all.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/accessories/readme.txt sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/accessories/scss/_background.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/accessories/scss/_color.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/accessories/scss/_google_webfonts.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/accessories/scss/_pictos-font.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/accessories/scss/_pictos.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/accessories/scss/_shapes.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/accessories/scss/config.rb sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/core/_core.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/core/_reset.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/layout/_accordion.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/layout/_layout.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/mixins/_background-gradient-legacy.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/mixins/_frame.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/mixins/_inner-border.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/mixins/_reset-extras.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/mixins/_theme-background-image.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/util/_dragdrop.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/util/_focus.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/util/_messagebox.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/util/_resizable.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/util/_scroller.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/util/_splitter.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/util/_tool.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/variables/_base.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/variables/_boundlist.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/variables/_btn-group.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/variables/_button.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/variables/_core.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/variables/_focus.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/variables/_form.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/variables/_grid.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/variables/_htmleditor.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/variables/_loadmask.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/variables/_menu.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/variables/_panel.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/variables/_pickers.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/variables/_progress-bar.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/variables/_qtip.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/variables/_tabs.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/variables/_toolbar.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/variables/_tree.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/variables/_window.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/_boundlist.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/_btn-group.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/_button.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/_colorpicker.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/_datepicker.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/_drawcomponent.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/_form.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/_grid.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/_html.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/_loadmask.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/_menu.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/_panel.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/_progress-bar.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/_qtip.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/_slider.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/_tab.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/_tabbar.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/_toolbar.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/_tree.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/_viewport.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/_window.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/form/_all.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/form/_checkbox.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/form/_checkboxgroup.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/form/_field.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/form/_fieldset.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/form/_file.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/form/_htmleditor.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/stylesheets/neptune/default/widgets/form/_triggerfield.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/templates/resources/sass/config.rb sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/resources/themes/templates/resources/sass/my-ext-theme.scss sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/example.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/examples.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/extjs/App.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/extjs/css/extjs.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/extjs/images/c-sep-l.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/extjs/images/extanim32.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/extjs/images/sample-over.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/extjs/site.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/SILK.txt sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/accept.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/accept.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/add.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/add.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/application_go.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/application_view_list.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/book.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/cog.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/cog.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/cog_edit.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/connect.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/connect.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/control_rewind.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/cross.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/delete.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/error.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/error.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/feed_add.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/feed_delete.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/feed_error.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/folder_go.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/folder_go.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/folder_wrench.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/grid.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/image_add.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/information.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/plugin.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/plugin_add.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/rss_go.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/table_refresh.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/user.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/user.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/user_add.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/user_add.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/user_comment.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/user_delete.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/user_delete.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/user_edit.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/user_female.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/user_female.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/user_gray.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/user_green.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/user_green.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/user_orange.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/user_red.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/user_suit.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/icons/fam/user_suit.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/acc-tree.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/actions-grid.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/actions.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/advanced-dataview.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/air.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/anchor.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/animated-dataview.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/app-simple.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/area-browsers.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/blank.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/border-layout.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/buffer-grid.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/buttons.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/calendar.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/chart-area-browser.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/chart-area.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/chart-bar-renderer.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/chart-bar-stacked.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/chart-bar.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/chart-column.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/chart-line.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/chart-mixed.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/chart-pie-renderer.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/chart-pie.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/chart-radar-fill.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/chart-radar.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/chart-reload.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/chart-scatter.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/chart-stacked.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/chart-themed.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/charts.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/chooser.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/column2.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/combo-custom.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/combo.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/complex-layout.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/data-associations.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/data-view.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/dd-fieldtogrid.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/dd-gridtoformpanel.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/dd-gridtogrid.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/dd-zones.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/debug-console.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/desktop.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/direct.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/docs.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/draw-logos.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/draw-rotate-text.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/draw-sencha.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/draw-tiger.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/editor.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/feeds.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/field-container.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-absolute.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-adv-vtypes.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-check-radio.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-checkout.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-contact.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-custom-access.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-custom.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-dashboard.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-dynamic.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-field-layout.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-field-types.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-fieldcontainer.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-file-upload.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-grid-binding-access.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-grid-binding.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-hbox.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-multiselect.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-registration.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-slider.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-spinner.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-vbox.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/form-xml.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/forum.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/gauge.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/gmap-panel.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-array.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-buffer.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-cell-editing.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-columngrouping.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-data-binding.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-edit.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-filter.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-from-markup.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-group-summaries.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-grouped-headers.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-grouping.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-infinite-scroll.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-live-search.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-locking.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-multiple-sorting.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-multiple-sorting.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-paging.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-plugins.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-property.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-row-editor.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-summary.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-transform.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grid-xml.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/group-tabs.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grouped-bar.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/grouped-tab.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/history.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/keyboard.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/layout-absolute.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/layout-accordion.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/layout-anchor.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/layout-browser.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/layout-column.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/layout-form.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/layout-table.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/layout-vbox.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/list-view.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/live-animated.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/live-updated.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/locale-dutch.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/locale-switch.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/msg-box.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/multisort-dataview.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/nested-loading.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/organizer.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/panel-bubble.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/panel.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/pivotgrid-cellcls.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/pivotgrid-people.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/pivotgrid.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/portal.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/progress-bar-pager.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/progress.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/qtips.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/reload-chart.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/resizable.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/restful-thumb.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/rich-tips.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/sandbox.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/slider-pager.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/slider.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/spotlight.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/state-saving.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/statusbar-adv.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/statusbar-demo.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/tab-panel-scroller-menu.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/tabs-adv.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/tabs.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/tasks.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/templates.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/themes.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/toolbar-actions.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/toolbar-button-groups.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/toolbar-droppable.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/toolbar-overflow.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/toolbar-reorderable.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/toolbar.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/tree-check.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/tree-columns.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/tree-reorder.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/tree-two.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/tree-xml-loader.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/window-layout.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/window.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/screens/writer-thumb.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/shared/states.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/BoxReorderer.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/CheckColumn.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/DataView/Animated.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/DataView/DragSelector.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/DataView/DragSelector.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/DataView/Draggable.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/DataView/LabelEditor.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/DataViewTransition.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/FieldReplicator.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/GMapPanel.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/GroupTabPanel.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/LiveSearchGridPanel.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/PreviewPlugin.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/ProgressBarPager.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/RowExpander.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/SlidingPager.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/Spotlight.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/TabCloseMenu.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/TabReorderer.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/TabScrollerMenu.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/ToolbarDroppable.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/css/CenterLayout.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/css/CheckHeader.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/css/GroupTabPanel.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/css/ItemSelector.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/css/LiveSearchGridPanel.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/css/TabScrollerMenu.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/css/images/border.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/css/images/bottom2.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/css/images/checked.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/css/images/down2.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/css/images/left2.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/css/images/right2.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/css/images/tab-collapsed.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/css/images/tab-first.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/css/images/tab-last.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/css/images/tab-scroller-menu.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/css/images/top2.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/css/images/unchecked.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/css/images/up2.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/data/PagingMemoryProxy.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/form/ItemSelector.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/form/MultiSelect.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/form/SearchField.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/grid/FiltersFeature.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/grid/TransformGrid.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/grid/css/GridFilters.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/grid/css/RangeMenu.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/grid/filter/BooleanFilter.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/grid/filter/DateFilter.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/grid/filter/Filter.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/grid/filter/ListFilter.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/grid/filter/NumericFilter.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/grid/filter/StringFilter.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/grid/images/equals.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/grid/images/find.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/grid/images/greater_than.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/grid/images/less_than.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/grid/menu/ListMenu.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/grid/menu/RangeMenu.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/layout/Center.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/layout/component/form/ItemSelector.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/layout/component/form/MultiSelect.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/portal/Portal.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/portal/PortalColumn.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/portal/PortalDropZone.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/portal/PortalPanel.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/portal/Portlet.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/statusbar/StatusBar.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/statusbar/ValidationStatus.js sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/statusbar/css/statusbar.css sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/statusbar/images/accept.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/statusbar/images/exclamation.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/statusbar/images/loading.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/statusbar/images/saved.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/ext4/ux/statusbar/images/saving.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/images/group.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/images/information.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/images/user.gif sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/images/user_win.png sourcecode/MVNFHM/src/main/webapp/plugins/websocketInstantMsg/websocket.js sourcecode/MVNFHM/src/main/webapp/plugins/webuploader/Uploader.swf sourcecode/MVNFHM/src/main/webapp/plugins/webuploader/bg.png sourcecode/MVNFHM/src/main/webapp/plugins/webuploader/expressInstall.swf sourcecode/MVNFHM/src/main/webapp/plugins/webuploader/icons.png sourcecode/MVNFHM/src/main/webapp/plugins/webuploader/image.png sourcecode/MVNFHM/src/main/webapp/plugins/webuploader/index.html sourcecode/MVNFHM/src/main/webapp/plugins/webuploader/jquery.js sourcecode/MVNFHM/src/main/webapp/plugins/webuploader/progress.png sourcecode/MVNFHM/src/main/webapp/plugins/webuploader/style.css sourcecode/MVNFHM/src/main/webapp/plugins/webuploader/success.png sourcecode/MVNFHM/src/main/webapp/plugins/webuploader/upload.js sourcecode/MVNFHM/src/main/webapp/plugins/webuploader/webuploader.css sourcecode/MVNFHM/src/main/webapp/plugins/webuploader/webuploader.js sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/checkbox.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/edit.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/flag/10.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/flag/1_close.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/flag/1_open.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/flag/2.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/flag/3.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/flag/4.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/flag/5.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/flag/6.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/flag/7.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/flag/8.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/flag/9.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/folder_Close.gif sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/folder_Open.gif sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/line_bottom.gif sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/line_center.gif sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/line_conn.gif sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/line_top.gif sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/loading.gif sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/minus_bottom.gif sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/minus_center.gif sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/minus_noLine.gif sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/minus_root.gif sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/minus_top.gif sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/moveArrow.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/page.gif sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/plus_bottom.gif sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/plus_center.gif sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/plus_noLine.gif sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/plus_root.gif sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/plus_top.gif sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/radio.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/remove.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/sim/10.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/sim/1_close.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/sim/1_open.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/sim/2.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/sim/3.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/sim/4.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/sim/5.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/sim/6.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/sim/7.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/sim/8.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/img/sim/9.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/jquery.ztree-2.6.min.js sourcecode/MVNFHM/src/main/webapp/plugins/zTree/2.6/zTreeStyle.css sourcecode/MVNFHM/src/main/webapp/plugins/zTree/3.5/img/diy/1_close.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/3.5/img/diy/1_open.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/3.5/img/diy/2.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/3.5/img/diy/3.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/3.5/img/diy/4.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/3.5/img/diy/5.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/3.5/img/diy/6.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/3.5/img/diy/7.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/3.5/img/diy/8.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/3.5/img/diy/9.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/3.5/img/line_conn.gif sourcecode/MVNFHM/src/main/webapp/plugins/zTree/3.5/img/loading.gif sourcecode/MVNFHM/src/main/webapp/plugins/zTree/3.5/img/zTreeStandard.gif sourcecode/MVNFHM/src/main/webapp/plugins/zTree/3.5/img/zTreeStandard.png sourcecode/MVNFHM/src/main/webapp/plugins/zTree/3.5/jquery.ztree.core-3.5.js sourcecode/MVNFHM/src/main/webapp/plugins/zTree/3.5/zTreeStyle.css sourcecode/MVNFHM/src/main/webapp/plugins/zoomimage/css/custom.css sourcecode/MVNFHM/src/main/webapp/plugins/zoomimage/css/zoomimage.css sourcecode/MVNFHM/src/main/webapp/plugins/zoomimage/images/ajax_small.gif sourcecode/MVNFHM/src/main/webapp/plugins/zoomimage/images/custom-lr.png sourcecode/MVNFHM/src/main/webapp/plugins/zoomimage/images/custom.png sourcecode/MVNFHM/src/main/webapp/plugins/zoomimage/images/custom_c.png sourcecode/MVNFHM/src/main/webapp/plugins/zoomimage/images/shadow-c.png sourcecode/MVNFHM/src/main/webapp/plugins/zoomimage/images/shadow-lr.png sourcecode/MVNFHM/src/main/webapp/plugins/zoomimage/images/shadow.png sourcecode/MVNFHM/src/main/webapp/plugins/zoomimage/images/zoomimage_next.gif sourcecode/MVNFHM/src/main/webapp/plugins/zoomimage/images/zoomimage_prev.gif sourcecode/MVNFHM/src/main/webapp/plugins/zoomimage/images/zoomin.cur sourcecode/MVNFHM/src/main/webapp/plugins/zoomimage/images/zoomout.cur sourcecode/MVNFHM/src/main/webapp/plugins/zoomimage/js/eye.js sourcecode/MVNFHM/src/main/webapp/plugins/zoomimage/js/jquery.js sourcecode/MVNFHM/src/main/webapp/plugins/zoomimage/js/layout.js sourcecode/MVNFHM/src/main/webapp/plugins/zoomimage/js/utils.js sourcecode/MVNFHM/src/main/webapp/plugins/zoomimage/js/zoomimage.js sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/Area2D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/Bar2D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/Column2D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/Column3D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/Doughnut2D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/Doughnut3D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/FusionCharts.js sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/Line.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/Pie2D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/Pie3D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/SSGrid.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-Bubble.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-FCExporter.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-MSArea.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-MSBar2D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-MSBar3D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-MSColumn2D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-MSColumn3D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-MSColumn3DLineDY.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-MSColumnLine3D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-MSCombi2D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-MSCombi3D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-MSCombiDY2D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-MSLine.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-MSStackedColumn2D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-MSStackedColumn2DLineDY.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-Scatter.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-ScrollArea2D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-ScrollColumn2D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-ScrollCombi2D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-ScrollCombiDY2D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-ScrollLine2D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-ScrollStackedColumn2D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-StackedArea2D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-StackedBar2D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-StackedBar3D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-StackedColumn2D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-StackedColumn2DLine.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-StackedColumn3D.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-StackedColumn3DLine.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-StackedColumn3DLineDY.swf sourcecode/MVNFHM/src/main/webapp/static/FusionCharts/n-ZoomLine.swf sourcecode/MVNFHM/src/main/webapp/static/ace/avatars/avatar.png sourcecode/MVNFHM/src/main/webapp/static/ace/avatars/avatar1.png sourcecode/MVNFHM/src/main/webapp/static/ace/avatars/avatar2.png sourcecode/MVNFHM/src/main/webapp/static/ace/avatars/avatar3.png sourcecode/MVNFHM/src/main/webapp/static/ace/avatars/avatar4.png sourcecode/MVNFHM/src/main/webapp/static/ace/avatars/avatar5.png sourcecode/MVNFHM/src/main/webapp/static/ace/avatars/profile-pic.jpg sourcecode/MVNFHM/src/main/webapp/static/ace/avatars/user.jpg sourcecode/MVNFHM/src/main/webapp/static/ace/css/ace-fonts.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/ace-ie.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/ace-part2.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/ace-rtl.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/ace-skins.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/ace.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/ace.onpage-help.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/bootstrap-datetimepicker.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/bootstrap-duallistbox.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/bootstrap-editable.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/bootstrap-multiselect.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/bootstrap-timepicker.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/bootstrap.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/bootstrap.min.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/chosen-sprite.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/chosen-sprite@2x.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/chosen.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/colorbox.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/colorpicker.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/datepicker.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/daterangepicker.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/dropzone.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/font-awesome.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/fullcalendar.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/fullcalendar.print.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/images/border.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/images/border1.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/images/border2.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/images/controls.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/images/ie6/borderBottomCenter.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/images/ie6/borderBottomLeft.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/images/ie6/borderBottomRight.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/images/ie6/borderMiddleLeft.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/images/ie6/borderMiddleRight.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/images/ie6/borderTopCenter.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/images/ie6/borderTopLeft.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/images/ie6/borderTopRight.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/images/loading.gif sourcecode/MVNFHM/src/main/webapp/static/ace/css/images/loading_background.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/images/meteorshower.jpg sourcecode/MVNFHM/src/main/webapp/static/ace/css/images/meteorshower2.jpg sourcecode/MVNFHM/src/main/webapp/static/ace/css/images/overlay.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/images/pattern.jpg sourcecode/MVNFHM/src/main/webapp/static/ace/css/images/pattern.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/images/spritemap.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/images/spritemap@2x.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/img/alpha.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/img/hue.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/img/saturation.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/jquery-ui.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/jquery-ui.custom.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/jquery.gritter.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/ace-features.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/ace-nav.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/ace-responsive.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/ace-rtl.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/ace.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/basic.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/alerts.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/badges.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/bootstrap.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/breadcrumbs.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/button-groups.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/buttons.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/carousel.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/close.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/code.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/component-animations.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/dropdowns.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/forms.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/glyphicons.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/grid.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/input-groups.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/jumbotron.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/labels.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/list-group.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/media.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/alerts.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/background-variant.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/border-radius.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/buttons.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/center-block.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/clearfix.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/forms.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/gradients.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/grid-framework.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/grid.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/hide-text.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/image.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/labels.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/list-group.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/nav-divider.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/nav-vertical-align.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/opacity.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/pagination.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/panels.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/progress-bar.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/reset-filter.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/resize.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/responsive-visibility.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/size.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/tab-focus.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/table-row.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/text-emphasis.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/text-overflow.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/mixins/vendor-prefixes.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/modals.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/navbar.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/navs.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/normalize.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/pager.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/pagination.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/panels.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/popovers.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/print.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/progress-bars.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/responsive-embed.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/responsive-utilities.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/scaffolding.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/tables.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/theme.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/thumbnails.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/tooltip.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/type.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/utilities.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/variables.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bootstrap/wells.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/breadcrumbs.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/bs3-reset.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/buttons.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/dropdown.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/dropdown/colorpicker.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/dropdown/navbar-dropdown.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/dropdown/navbar-tabbed-dropdown.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/ext/bootstrap-tag.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/fonts-rel.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/fonts.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/footer.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/form.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/form/checkbox.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/form/file.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/gallery.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/general.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/icon-animated.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/infobox.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/items.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/label-badge.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/mixins.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/modal.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/navbar/collapsible.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/navbar/navbar-menu-form.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/navbar/toggle-button.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/navbar/user-buttons-move-down.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/navbar/user-buttons.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/navbar/user-dropdown-position.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/navbar/user-menu.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/onpage-help.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/other.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/page.error.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/page.inbox.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/page.invoice.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/page.login.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/page.pricing.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/page.profile.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/page.timeline.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/print.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/progressbar.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/scroll.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/searchbox.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/sidebar.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/sidebar/active.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/sidebar/compact.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/sidebar/ff_fix.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/sidebar/highlight.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/sidebar/horizontal.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/sidebar/hover.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/sidebar/min.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/sidebar/multiple.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/sidebar/old-toggle-button.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/sidebar/responsive-1.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/sidebar/responsive-2.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/sidebar/responsive-3.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/sidebar/shortcuts-toggle.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/sidebar/sidebar-fixed.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/sidebar/sub-arrow.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/skins/empty.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/skins/no-skin.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/skins/skin-1.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/skins/skin-2.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/skins/skin-3.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/skins/skins.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/tab-accordion.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/tables.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/thirdparty-calendar.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/thirdparty-chosen.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/thirdparty-colorbox.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/thirdparty-dataTables.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/thirdparty-date.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/thirdparty-dropzone.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/thirdparty-duallist-multiselect.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/thirdparty-editable.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/thirdparty-fuelux.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/thirdparty-gritter.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/thirdparty-jqgrid.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/thirdparty-jquery-ui.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/thirdparty-nestable.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/thirdparty-raty.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/thirdparty-select2.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/thirdparty-slider.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/thirdparty-typeahead.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/thirdparty-wysiwyg.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/tooltip-popover.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/utility.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/variables.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/less/widget.less sourcecode/MVNFHM/src/main/webapp/static/ace/css/pace.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/prettify.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/select2-spinner.gif sourcecode/MVNFHM/src/main/webapp/static/ace/css/select2.css sourcecode/MVNFHM/src/main/webapp/static/ace/css/select2.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/select2x2.png sourcecode/MVNFHM/src/main/webapp/static/ace/css/ui.jqgrid.css sourcecode/MVNFHM/src/main/webapp/static/ace/fonts/FontAwesome.otf sourcecode/MVNFHM/src/main/webapp/static/ace/fonts/OpenSans-300.woff sourcecode/MVNFHM/src/main/webapp/static/ace/fonts/OpenSans-400.woff sourcecode/MVNFHM/src/main/webapp/static/ace/fonts/fontawesome-webfont.eot sourcecode/MVNFHM/src/main/webapp/static/ace/fonts/fontawesome-webfont.svg sourcecode/MVNFHM/src/main/webapp/static/ace/fonts/fontawesome-webfont.ttf sourcecode/MVNFHM/src/main/webapp/static/ace/fonts/fontawesome-webfont.woff sourcecode/MVNFHM/src/main/webapp/static/ace/fonts/glyphicons-halflings-regular.eot sourcecode/MVNFHM/src/main/webapp/static/ace/fonts/glyphicons-halflings-regular.svg sourcecode/MVNFHM/src/main/webapp/static/ace/fonts/glyphicons-halflings-regular.ttf sourcecode/MVNFHM/src/main/webapp/static/ace/fonts/glyphicons-halflings-regular.woff sourcecode/MVNFHM/src/main/webapp/static/ace/fonts/readme sourcecode/MVNFHM/src/main/webapp/static/ace/images/back_disabled.png sourcecode/MVNFHM/src/main/webapp/static/ace/images/back_enabled.png sourcecode/MVNFHM/src/main/webapp/static/ace/images/back_enabled_hover.png sourcecode/MVNFHM/src/main/webapp/static/ace/images/email1.png sourcecode/MVNFHM/src/main/webapp/static/ace/images/email2.png sourcecode/MVNFHM/src/main/webapp/static/ace/images/email3.png sourcecode/MVNFHM/src/main/webapp/static/ace/images/email4.png sourcecode/MVNFHM/src/main/webapp/static/ace/images/forward_disabled.png sourcecode/MVNFHM/src/main/webapp/static/ace/images/forward_enabled.png sourcecode/MVNFHM/src/main/webapp/static/ace/images/forward_enabled_hover.png sourcecode/MVNFHM/src/main/webapp/static/ace/images/gallery/image-1.jpg sourcecode/MVNFHM/src/main/webapp/static/ace/images/gallery/image-2.jpg sourcecode/MVNFHM/src/main/webapp/static/ace/images/gallery/image-3.jpg sourcecode/MVNFHM/src/main/webapp/static/ace/images/gallery/image-4.jpg sourcecode/MVNFHM/src/main/webapp/static/ace/images/gallery/image-5.jpg sourcecode/MVNFHM/src/main/webapp/static/ace/images/gallery/image-6.jpg sourcecode/MVNFHM/src/main/webapp/static/ace/images/gallery/thumb-1.jpg sourcecode/MVNFHM/src/main/webapp/static/ace/images/gallery/thumb-2.jpg sourcecode/MVNFHM/src/main/webapp/static/ace/images/gallery/thumb-3.jpg sourcecode/MVNFHM/src/main/webapp/static/ace/images/gallery/thumb-4.jpg sourcecode/MVNFHM/src/main/webapp/static/ace/images/gallery/thumb-5.jpg sourcecode/MVNFHM/src/main/webapp/static/ace/images/gallery/thumb-6.jpg sourcecode/MVNFHM/src/main/webapp/static/ace/images/sort_asc.png sourcecode/MVNFHM/src/main/webapp/static/ace/images/sort_asc_disabled.png sourcecode/MVNFHM/src/main/webapp/static/ace/images/sort_both.png sourcecode/MVNFHM/src/main/webapp/static/ace/images/sort_desc.png sourcecode/MVNFHM/src/main/webapp/static/ace/images/sort_desc_disabled.png sourcecode/MVNFHM/src/main/webapp/static/ace/images/spritemap.png sourcecode/MVNFHM/src/main/webapp/static/ace/images/spritemap@2x.png sourcecode/MVNFHM/src/main/webapp/static/ace/img/clear.png sourcecode/MVNFHM/src/main/webapp/static/ace/img/glyphicons-halflings-white.png sourcecode/MVNFHM/src/main/webapp/static/ace/img/glyphicons-halflings.png sourcecode/MVNFHM/src/main/webapp/static/ace/img/loading.gif sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace-elements.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace-extra.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/ace.ajax-content.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/ace.auto-container.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/ace.auto-padding.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/ace.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/ace.onpage-help.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/ace.searchbox-autocomplete.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/ace.settings-rtl.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/ace.settings-skin.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/ace.settings.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/ace.sidebar-scroll-1.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/ace.sidebar-scroll-2.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/ace.sidebar.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/ace.submenu-hover.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/ace.touch-drag.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/ace.widget-box.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/ace.widget-on-reload.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/elements.aside.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/elements.colorpicker.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/elements.fileinput.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/elements.onpage-help.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/elements.scroller.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/elements.spinner.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/elements.treeview.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/elements.typeahead.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/elements.wizard.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/elements.wysiwyg.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/readme sourcecode/MVNFHM/src/main/webapp/static/ace/js/ace/scripts.json sourcecode/MVNFHM/src/main/webapp/static/ace/js/additional-methods.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/bootbox.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/bootstrap-colorpicker.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/bootstrap-multiselect.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/bootstrap-tag.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/bootstrap-wysiwyg.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/bootstrap.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/chosen.jquery.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/dataTables/extensions/ColVis/js/dataTables.colVis.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/dataTables/extensions/TableTools/js/dataTables.tableTools.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/dataTables/extensions/TableTools/swf/copy_csv_xls.swf sourcecode/MVNFHM/src/main/webapp/static/ace/js/dataTables/extensions/TableTools/swf/copy_csv_xls_pdf.swf sourcecode/MVNFHM/src/main/webapp/static/ace/js/dataTables/jquery.dataTables.bootstrap.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/dataTables/jquery.dataTables.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/date-time/bootstrap-datepicker.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/date-time/bootstrap-datetimepicker.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/date-time/bootstrap-timepicker.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/date-time/daterangepicker.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/date-time/moment.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/dropzone.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/excanvas.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/flot/jquery.flot.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/flot/jquery.flot.pie.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/flot/jquery.flot.resize.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/fuelux/fuelux.spinner.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/fuelux/fuelux.tree.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/fuelux/fuelux.wizard.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/fullcalendar.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/html5shiv.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-ar.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-bg.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-bg1251.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-cat.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-cn.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-cs.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-da.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-de.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-dk.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-el.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-en.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-es.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-fa.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-fi.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-fr.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-gl.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-he.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-hr.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-hr1250.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-hu.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-id.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-is.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-it.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-ja.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-kr.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-lt.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-mne.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-nl.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-no.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-pl.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-pt-br.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-pt.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-ro.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-ru.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-sk.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-sr-latin.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-sr.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-sv.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-th.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-tr.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-tw.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-ua.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/i18n/grid.locale-vi.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jqGrid/jquery.jqGrid.src.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jquery-ui.custom.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jquery-ui.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jquery.autosize.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jquery.bootstrap-duallistbox.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jquery.colorbox.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jquery.easypiechart.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jquery.gritter.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jquery.hotkeys.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jquery.inputlimiter.1.3.1.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jquery.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jquery.knob.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jquery.maskedinput.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jquery.mobile.custom.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jquery.mousewheel.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jquery.nestable.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jquery.raty.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jquery.slimscroll.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jquery.sparkline.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jquery.ui.touch-punch.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jquery.validate.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/jquery1x.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/markdown/bootstrap-markdown.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/markdown/markdown.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/markdown/to-markdown.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/pace.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/prettify.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/respond.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/select2.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/spin.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/typeahead.jquery.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/x-editable/ace-editable.js sourcecode/MVNFHM/src/main/webapp/static/ace/js/x-editable/bootstrap-editable.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/Gruntfile.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/avatars/avatar.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/avatars/avatar1.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/avatars/avatar2.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/avatars/avatar3.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/avatars/avatar4.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/avatars/avatar5.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/avatars/profile-pic.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/avatars/user.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/ace-fonts.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/ace-ie.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/ace-part2.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/ace-rtl.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/ace-skins.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/ace.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/ace.onpage-help.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/bootstrap-datetimepicker.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/bootstrap-duallistbox.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/bootstrap-editable.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/bootstrap-multiselect.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/bootstrap-timepicker.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/bootstrap.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/chosen-sprite.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/chosen-sprite@2x.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/chosen.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/colorbox.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/colorpicker.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/datepicker.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/daterangepicker.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/dropzone.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/font-awesome.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/fullcalendar.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/fullcalendar.print.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/images/border.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/images/border1.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/images/border2.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/images/controls.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/images/ie6/borderBottomCenter.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/images/ie6/borderBottomLeft.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/images/ie6/borderBottomRight.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/images/ie6/borderMiddleLeft.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/images/ie6/borderMiddleRight.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/images/ie6/borderTopCenter.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/images/ie6/borderTopLeft.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/images/ie6/borderTopRight.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/images/loading.gif sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/images/loading_background.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/images/meteorshower.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/images/meteorshower2.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/images/overlay.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/images/pattern.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/images/pattern.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/images/spritemap.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/images/spritemap@2x.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/img/alpha.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/img/hue.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/img/saturation.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/jquery-ui.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/jquery-ui.custom.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/jquery.gritter.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/ace-features.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/ace-nav.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/ace-responsive.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/ace-rtl.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/ace.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/basic.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/alerts.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/badges.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/bootstrap.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/breadcrumbs.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/button-groups.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/buttons.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/carousel.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/close.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/code.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/component-animations.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/dropdowns.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/forms.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/glyphicons.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/grid.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/input-groups.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/jumbotron.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/labels.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/list-group.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/media.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/alerts.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/background-variant.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/border-radius.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/buttons.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/center-block.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/clearfix.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/forms.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/gradients.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/grid-framework.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/grid.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/hide-text.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/image.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/labels.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/list-group.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/nav-divider.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/nav-vertical-align.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/opacity.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/pagination.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/panels.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/progress-bar.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/reset-filter.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/resize.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/responsive-visibility.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/size.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/tab-focus.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/table-row.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/text-emphasis.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/text-overflow.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/mixins/vendor-prefixes.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/modals.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/navbar.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/navs.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/normalize.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/pager.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/pagination.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/panels.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/popovers.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/print.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/progress-bars.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/responsive-embed.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/responsive-utilities.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/scaffolding.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/tables.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/theme.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/thumbnails.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/tooltip.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/type.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/utilities.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/variables.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bootstrap/wells.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/breadcrumbs.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/bs3-reset.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/buttons.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/dropdown.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/dropdown/colorpicker.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/dropdown/navbar-dropdown.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/dropdown/navbar-tabbed-dropdown.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/ext/bootstrap-tag.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/fonts-rel.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/fonts.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/footer.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/form.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/form/checkbox.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/form/file.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/gallery.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/general.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/icon-animated.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/infobox.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/items.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/label-badge.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/mixins.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/modal.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/navbar/collapsible.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/navbar/navbar-menu-form.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/navbar/toggle-button.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/navbar/user-buttons-move-down.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/navbar/user-buttons.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/navbar/user-dropdown-position.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/navbar/user-menu.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/onpage-help.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/other.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/page.error.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/page.inbox.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/page.invoice.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/page.login.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/page.pricing.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/page.profile.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/page.timeline.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/print.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/progressbar.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/scroll.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/searchbox.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/sidebar.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/sidebar/active.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/sidebar/compact.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/sidebar/ff_fix.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/sidebar/highlight.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/sidebar/horizontal.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/sidebar/hover.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/sidebar/min.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/sidebar/multiple.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/sidebar/old-toggle-button.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/sidebar/responsive-1.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/sidebar/responsive-2.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/sidebar/responsive-3.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/sidebar/shortcuts-toggle.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/sidebar/sidebar-fixed.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/sidebar/sub-arrow.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/skins/empty.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/skins/no-skin.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/skins/skin-1.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/skins/skin-2.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/skins/skin-3.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/skins/skins.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/tab-accordion.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/tables.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/thirdparty-calendar.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/thirdparty-chosen.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/thirdparty-colorbox.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/thirdparty-dataTables.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/thirdparty-date.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/thirdparty-dropzone.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/thirdparty-duallist-multiselect.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/thirdparty-editable.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/thirdparty-fuelux.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/thirdparty-gritter.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/thirdparty-jqgrid.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/thirdparty-jquery-ui.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/thirdparty-nestable.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/thirdparty-raty.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/thirdparty-select2.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/thirdparty-slider.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/thirdparty-typeahead.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/thirdparty-wysiwyg.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/tooltip-popover.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/utility.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/variables.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/less/widget.less sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/pace.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/prettify.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/select2-spinner.gif sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/select2.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/select2.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/select2x2.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/css/ui.jqgrid.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/fonts/FontAwesome.otf sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/fonts/OpenSans-300.woff sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/fonts/OpenSans-400.woff sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/fonts/fontawesome-webfont.eot sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/fonts/fontawesome-webfont.svg sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/fonts/fontawesome-webfont.ttf sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/fonts/fontawesome-webfont.woff sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/fonts/glyphicons-halflings-regular.eot sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/fonts/glyphicons-halflings-regular.svg sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/fonts/glyphicons-halflings-regular.ttf sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/fonts/glyphicons-halflings-regular.woff sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/fonts/readme sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/back_disabled.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/back_enabled.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/back_enabled_hover.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/email1.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/email2.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/email3.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/email4.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/forward_disabled.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/forward_enabled.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/forward_enabled_hover.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/gallery/image-1.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/gallery/image-2.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/gallery/image-3.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/gallery/image-4.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/gallery/image-5.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/gallery/image-6.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/gallery/thumb-1.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/gallery/thumb-2.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/gallery/thumb-3.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/gallery/thumb-4.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/gallery/thumb-5.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/gallery/thumb-6.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/sort_asc.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/sort_asc_disabled.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/sort_both.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/sort_desc.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/sort_desc_disabled.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/spritemap.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/images/spritemap@2x.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/img/clear.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/img/glyphicons-halflings-white.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/img/glyphicons-halflings.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/img/loading.gif sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace-elements.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace-extra.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/ace.ajax-content.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/ace.auto-container.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/ace.auto-padding.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/ace.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/ace.onpage-help.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/ace.searchbox-autocomplete.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/ace.settings-rtl.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/ace.settings-skin.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/ace.settings.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/ace.sidebar-scroll-1.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/ace.sidebar-scroll-2.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/ace.sidebar.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/ace.submenu-hover.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/ace.touch-drag.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/ace.widget-box.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/ace.widget-on-reload.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/elements.aside.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/elements.colorpicker.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/elements.fileinput.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/elements.onpage-help.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/elements.scroller.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/elements.spinner.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/elements.treeview.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/elements.typeahead.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/elements.wizard.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/elements.wysiwyg.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/readme sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/ace/scripts.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/additional-methods.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/bootbox.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/bootstrap-colorpicker.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/bootstrap-multiselect.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/bootstrap-tag.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/bootstrap-wysiwyg.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/bootstrap.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/chosen.jquery.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/dataTables/extensions/ColVis/js/dataTables.colVis.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/dataTables/extensions/TableTools/js/dataTables.tableTools.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/dataTables/extensions/TableTools/swf/copy_csv_xls.swf sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/dataTables/extensions/TableTools/swf/copy_csv_xls_pdf.swf sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/dataTables/jquery.dataTables.bootstrap.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/dataTables/jquery.dataTables.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/date-time/bootstrap-datepicker.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/date-time/bootstrap-datetimepicker.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/date-time/bootstrap-timepicker.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/date-time/daterangepicker.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/date-time/moment.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/dropzone.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/excanvas.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/flot/jquery.flot.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/flot/jquery.flot.pie.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/flot/jquery.flot.resize.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/fuelux/fuelux.spinner.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/fuelux/fuelux.tree.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/fuelux/fuelux.wizard.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/fullcalendar.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/html5shiv.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-ar.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-bg.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-bg1251.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-cat.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-cn.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-cs.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-da.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-de.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-dk.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-el.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-en.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-es.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-fa.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-fi.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-fr.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-gl.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-he.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-hr.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-hr1250.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-hu.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-id.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-is.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-it.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-ja.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-kr.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-lt.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-mne.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-nl.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-no.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-pl.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-pt-br.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-pt.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-ro.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-ru.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-sk.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-sr-latin.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-sr.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-sv.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-th.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-tr.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-tw.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-ua.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/i18n/grid.locale-vi.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jqGrid/jquery.jqGrid.src.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jquery-ui.custom.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jquery-ui.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jquery.autosize.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jquery.bootstrap-duallistbox.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jquery.colorbox.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jquery.easypiechart.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jquery.gritter.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jquery.hotkeys.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jquery.inputlimiter.1.3.1.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jquery.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jquery.knob.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jquery.maskedinput.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jquery.mobile.custom.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jquery.mousewheel.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jquery.nestable.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jquery.raty.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jquery.slimscroll.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jquery.sparkline.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jquery.ui.touch-punch.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jquery.validate.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/jquery1x.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/markdown/bootstrap-markdown.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/markdown/markdown.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/markdown/to-markdown.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/pace.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/prettify.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/respond.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/select2.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/spin.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/typeahead.jquery.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/x-editable/ace-editable.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/assets/js/x-editable/bootstrap-editable.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/css.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/demo/demo-confirmation.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/demo/demo-contrast.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/demo/demo-navbar.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/demo/demo-newsletter.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/demo/email-confirmation.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/demo/email-contrast.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/demo/email-navbar.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/demo/email-newsletter.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/email-guide.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/email.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/files/ace-rtl.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/files/css-builder.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/files/css-strip-media.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/files/email-convert.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/files/email-convert.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/files/email.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/files/fix-ie.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/files/js-builder.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/files/style.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/icon.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/icon.js-readme sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/js.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/cleancss-browser.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/addon/display/fullscreen.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/addon/display/fullscreen.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/addon/display/placeholder.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/addon/display/rulers.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/addon/edit/closebrackets.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/addon/edit/closetag.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/addon/edit/continuelist.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/addon/edit/matchbrackets.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/addon/edit/matchtags.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/addon/edit/trailingspace.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/addon/fold/brace-fold.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/addon/fold/comment-fold.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/addon/fold/foldcode.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/addon/fold/foldgutter.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/addon/fold/foldgutter.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/addon/fold/indent-fold.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/addon/fold/markdown-fold.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/addon/fold/xml-fold.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/lib/codemirror.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/lib/codemirror.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/mode/xml/index.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/mode/xml/test.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/codemirror/mode/xml/xml.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/less.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/lib/uglifyjs.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/package.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/rtl.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/build/strip-media.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/changelog sourcecode/MVNFHM/src/main/webapp/static/html_UI/credits.txt sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/avatars/avatar.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/avatars/avatar1.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/avatars/avatar2.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/avatars/avatar3.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/avatars/avatar4.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/avatars/avatar5.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/avatars/profile-pic.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/avatars/user.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/ace-fonts.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/ace-ie.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/ace-part2.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/ace-rtl.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/ace-skins.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/ace.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/bootstrap-datetimepicker.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/bootstrap-duallistbox.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/bootstrap-editable.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/bootstrap-multiselect.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/bootstrap-timepicker.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/bootstrap.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/chosen-sprite.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/chosen-sprite@2x.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/chosen.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/colorbox.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/colorpicker.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/datepicker.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/daterangepicker.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/dropzone.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/font-awesome.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/fullcalendar.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/fullcalendar.print.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/images/border.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/images/border1.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/images/border2.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/images/controls.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/images/ie6/borderBottomCenter.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/images/ie6/borderBottomLeft.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/images/ie6/borderBottomRight.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/images/ie6/borderMiddleLeft.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/images/ie6/borderMiddleRight.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/images/ie6/borderTopCenter.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/images/ie6/borderTopLeft.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/images/ie6/borderTopRight.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/images/loading.gif sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/images/loading_background.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/images/meteorshower.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/images/meteorshower2.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/images/overlay.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/images/pattern.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/images/pattern.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/images/spritemap.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/images/spritemap@2x.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/img/alpha.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/img/hue.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/img/saturation.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/jquery-ui.custom.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/jquery-ui.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/jquery.gritter.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/pace.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/prettify.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/select2-spinner.gif sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/select2.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/select2.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/select2x2.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/css/ui.jqgrid.min.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/fonts/FontAwesome.otf sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/fonts/OpenSans-300.woff sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/fonts/OpenSans-400.woff sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/fonts/fontawesome-webfont.eot sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/fonts/fontawesome-webfont.svg sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/fonts/fontawesome-webfont.ttf sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/fonts/fontawesome-webfont.woff sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/fonts/glyphicons-halflings-regular.eot sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/fonts/glyphicons-halflings-regular.svg sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/fonts/glyphicons-halflings-regular.ttf sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/fonts/glyphicons-halflings-regular.woff sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/back_disabled.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/back_enabled.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/back_enabled_hover.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/email1.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/email2.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/email3.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/email4.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/forward_disabled.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/forward_enabled.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/forward_enabled_hover.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/gallery/image-1.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/gallery/image-2.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/gallery/image-3.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/gallery/image-4.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/gallery/image-5.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/gallery/image-6.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/gallery/thumb-1.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/gallery/thumb-2.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/gallery/thumb-3.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/gallery/thumb-4.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/gallery/thumb-5.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/gallery/thumb-6.jpg sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/sort_asc.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/sort_asc_disabled.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/sort_both.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/sort_desc.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/sort_desc_disabled.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/spritemap.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/images/spritemap@2x.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/img/clear.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/img/glyphicons-halflings-white.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/img/glyphicons-halflings.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/img/loading.gif sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/ace-elements.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/ace-extra.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/ace.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/additional-methods.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/bootbox.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/bootstrap-colorpicker.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/bootstrap-multiselect.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/bootstrap-tag.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/bootstrap-wysiwyg.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/bootstrap.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/chosen.jquery.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/dataTables/extensions/ColVis/js/dataTables.colVis.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/dataTables/extensions/TableTools/js/dataTables.tableTools.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/dataTables/extensions/TableTools/swf/copy_csv_xls.swf sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/dataTables/extensions/TableTools/swf/copy_csv_xls_pdf.swf sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/dataTables/jquery.dataTables.bootstrap.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/dataTables/jquery.dataTables.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/date-time/bootstrap-datepicker.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/date-time/bootstrap-datetimepicker.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/date-time/bootstrap-timepicker.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/date-time/daterangepicker.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/date-time/moment.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/dropzone.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/excanvas.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/flot/jquery.flot.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/flot/jquery.flot.pie.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/flot/jquery.flot.resize.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/fuelux/fuelux.spinner.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/fuelux/fuelux.tree.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/fuelux/fuelux.wizard.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/fullcalendar.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/html5shiv.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-ar.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-bg.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-bg1251.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-cat.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-cn.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-cs.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-da.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-de.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-dk.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-el.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-en.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-es.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-fa.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-fi.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-fr.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-gl.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-he.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-hr.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-hr1250.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-hu.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-id.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-is.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-it.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-ja.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-kr.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-lt.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-mne.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-nl.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-no.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-pl.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-pt-br.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-pt.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-ro.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-ru.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-sk.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-sr-latin.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-sr.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-sv.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-th.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-tr.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-tw.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-ua.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/i18n/grid.locale-vi.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jqGrid/jquery.jqGrid.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jquery-ui.custom.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jquery-ui.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jquery.autosize.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jquery.bootstrap-duallistbox.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jquery.colorbox.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jquery.easypiechart.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jquery.gritter.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jquery.hotkeys.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jquery.inputlimiter.1.3.1.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jquery.knob.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jquery.maskedinput.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jquery.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jquery.mobile.custom.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jquery.mousewheel.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jquery.nestable.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jquery.raty.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jquery.slimscroll.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jquery.sparkline.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jquery.ui.touch-punch.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jquery.validate.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/jquery1x.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/markdown/bootstrap-markdown.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/markdown/markdown.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/markdown/to-markdown.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/pace.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/prettify.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/respond.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/select2.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/spin.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/typeahead.jquery.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/x-editable/ace-editable.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/dist/js/x-editable/bootstrap-editable.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/language/css.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/language/generic.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/language/html.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/language/javascript.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/language/php.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/rainbow.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/rainbow.min.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/themes/all-hallows-eve.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/themes/blackboard.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/themes/dreamweaver.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/themes/espresso-libre.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/themes/github.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/themes/kimbie-dark.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/themes/kimbie-light.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/themes/monokai.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/themes/obsidian.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/themes/paraiso-dark.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/themes/paraiso-light.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/themes/pastie.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/themes/solarized-dark.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/themes/solarized-light.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/themes/sunburst.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/themes/tomorrow-night.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/themes/tricolore.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/themes/twilight.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/assets/js/themes/zenburnesque.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/blank.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/images/active.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/images/default.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/images/help-icon1.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/images/help-icon2.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/images/help-include-all.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/images/help-panels.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/images/navbar-mobile1.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/images/navbar-mobile2.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/images/navbar.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/images/new-toggle.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/images/old-toggle.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/images/scroll-content.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/images/sidebar-mobile1.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/images/sidebar-mobile2.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/images/sidebar.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/images/tabbed-dropdown.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/images/tabless-inbox.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/images/toggle-sidebar-1.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/images/toggle-sidebar-11.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/images/toggle-sidebar-3.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/images/user-menu.png sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/index.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/basics/ajax.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/basics/content.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/basics/footer.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/basics/layout.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/basics/navbar.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/basics/sidebar.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/changes/index.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/credits/index.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/custom/checkbox.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/custom/colorpicker.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/custom/content-slider.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/custom/extra.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/custom/file-input.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/custom/index.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/custom/inline-editable.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/custom/onpage-help.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/custom/scrollbar.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/custom/widget-box.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/elements/index.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/files/css.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/files/examples.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/files/html.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/files/javascript.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/files/mustache.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/intro/index.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/issues/index.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/pages/dashboard.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/pages/email.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/pages/error.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/pages/faq.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/pages/gallery.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/pages/inbox.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/pages/invoice.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/pages/login.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/pages/pricing.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/pages/profile.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/pages/timeline.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/plugins/bootstrap.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/plugins/charts.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/plugins/date-time.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/plugins/editor.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/plugins/fuelux.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/plugins/input.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/plugins/jquery.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/plugins/misc.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/plugins/tables.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/plugins/tools.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/docs/sections/settings/index.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/dummy.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/examples/data/treeview-city.sql sourcecode/MVNFHM/src/main/webapp/static/html_UI/examples/data/treeview-city.sqlite sourcecode/MVNFHM/src/main/webapp/static/html_UI/examples/daterange.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/examples/file-upload.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/examples/file-upload.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/examples/index.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/examples/js/daterange-fr.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/examples/js/profile-avatar-update.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/examples/profile-update.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/examples/treeview.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/examples/treeview.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/examples/widget.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/examples/wysiwyg.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/blank.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/buttons.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/calendar.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/content-slider.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/dropzone.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/elements.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/email.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/error-404.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/error-500.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/faq.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/form-elements-2.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/form-elements.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/form-wizard.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/gallery.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/grid.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/inbox.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/index.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/invoice.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/jqgrid.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/login.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/nestable-list.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/pricing.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/profile.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/tables.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/timeline.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/treeview.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/typography.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/widgets.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/content/wysiwyg.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/ajax/index.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/blank.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/buttons.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/calendar.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/content-slider.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/dropzone.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/elements.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/email.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/empty.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/error-404.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/error-500.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/faq.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/form-elements-2.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/form-elements.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/form-wizard.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/gallery.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/grid.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/inbox.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/index.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/invoice.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/jqgrid.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/jquery-ui.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/login.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/mobile-menu-1.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/mobile-menu-2.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/mobile-menu-3.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/nestable-list.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/pricing.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/profile.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/tables.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/timeline.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/top-menu.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/treeview.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/two-menu-1.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/two-menu-2.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/typography.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/widgets.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/html/wysiwyg.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/index.html sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/README.md sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/common/script-mapping.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/common/script-mapping.min.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/common/site.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/common/style-mapping.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/common/style-mapping.min.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/layouts/ajax-content.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/layouts/ajax-layout.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/layouts/default.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/layouts/empty.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/layouts/login.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/layouts/partials/ajax-layout/navbar_messages.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/layouts/partials/ajax-layout/navbar_notifications.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/layouts/partials/ajax-layout/navbar_tasks.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/layouts/partials/ajax-layout/sidebar_items.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/layouts/partials/default/navbar_messages.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/layouts/partials/default/navbar_notifications.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/layouts/partials/default/navbar_tasks.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/layouts/partials/default/sidebar_items.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/layouts/partials/empty/navbar_messages.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/layouts/partials/empty/navbar_notifications.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/layouts/partials/empty/navbar_tasks.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/layouts/partials/empty/sidebar_items.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/blank.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/buttons.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/calendar.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/content-slider.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/dropzone.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/elements.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/email.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/empty.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/error-404.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/error-500.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/faq.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/form-elements-2.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/form-elements.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/form-wizard.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/gallery.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/grid.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/inbox.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/index.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/invoice.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/jqgrid.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/jquery-ui.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/login.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/mobile-menu-1.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/mobile-menu-2.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/mobile-menu-3.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/nestable-list.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/form-elements-2/states.csv sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/form-elements/states.csv sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/form-wizard/states.csv sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/inbox/messages.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/index/comments.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/index/conversations.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/index/domains.csv sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/index/members.csv sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/index/stats1.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/index/stats2.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/index/tasks.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/invoice/invoice.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/pricing/packages-large.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/pricing/packages-small.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/profile/activities.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/profile/friends.csv sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/profile/info1.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/profile/info2.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/profile/photos.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/profile/stats.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/tables/domains1.csv sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/tables/domains2.csv sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/partials/widgets/members.csv sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/pricing.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/profile.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/tables.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/timeline.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/top-menu.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/treeview.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/two-menu-1.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/two-menu-2.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/typography.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/widgets.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/data/pages/wysiwyg.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/README.md sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/buttons.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/calendar.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/content-slider.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/dropzone.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/elements.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/form-elements-2.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/form-elements.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/form-wizard.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/gallery.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/inbox.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/index.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/jqgrid.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/jquery-ui.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/login.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/mobile-menu-1.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/nestable-list.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/profile.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/tables.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/timeline.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/top-menu.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/treeview.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/two-menu-1.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/two-menu-2.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/typography.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/widgets.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/scripts/wysiwyg.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/styles/elements.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/assets/styles/grid.css sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/ajax-content.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/ajax-layout.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/default.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/empty.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/login.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/_shared/_template/bootstrap.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/_shared/_template/fontawesome.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/_shared/_template/fonts.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/_shared/_template/jquery.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/_shared/_template/scripts.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/_shared/_template/styles.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/_shared/navbar.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/_shared/navbar/messages.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/_shared/navbar/notifications.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/_shared/navbar/tabbed_user_notifications.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/_shared/navbar/tasks.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/_shared/navbar/toggle_buttons.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/_shared/navbar/topmenu.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/_shared/searchbox.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/_shared/settings.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/_shared/sidebar.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/_shared/sidebar/item.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/_shared/sidebar/shortcuts.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/ajax-layout/_template/scripts.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/ajax-layout/_template/styles.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/ajax-layout/breadcrumbs.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/ajax-layout/footer.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/ajax-layout/navbar/user_menu.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/ajax-layout/sidebar/item.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/default/breadcrumbs.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/default/footer.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/default/navbar/user_menu.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/empty/navbar/user_menu.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/login/_template/scripts.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/layouts/partials/login/_template/styles.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/blank.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/buttons.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/calendar.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/content-slider.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/dropzone.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/elements.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/email.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/empty.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/error-404.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/error-500.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/faq.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/form-elements-2.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/form-elements.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/form-wizard.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/gallery.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/grid.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/inbox.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/index.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/invoice.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/jqgrid.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/jquery-ui.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/login.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/mobile-menu-1.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/mobile-menu-2.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/mobile-menu-3.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/nestable-list.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/faq/faq1.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/faq/faq2.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/faq/faq3.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/faq/faq4.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/inbox/folders.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/inbox/message_actions.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/inbox/message_content.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/inbox/message_footer.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/inbox/message_form.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/inbox/message_list.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/inbox/message_select.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/inbox/message_sort.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/inbox/navbar.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/inbox/tabs.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/index/comments.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/index/conversations.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/index/domains.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/index/infobox.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/index/members.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/index/tasks.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/jquery-ui/accordion.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/jquery-ui/menu.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/jquery-ui/tabs.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/login/forgot_box.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/login/login_box.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/login/signup_box.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/pricing/package-large.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/pricing/package-small.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/profile/activity.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/profile/friends.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/profile/photos.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/profile/stats.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/profile/style_1.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/profile/style_2.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/profile/style_3.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/timeline/style_1.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/timeline/style_2.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/partials/widgets/members.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/pricing.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/profile.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/tables.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/timeline.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/top-menu.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/treeview.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/two-menu-1.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/two-menu-2.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/typography.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/widgets.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/app/views/pages/wysiwyg.mustache sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/js/README.md sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/js/ajax.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/js/classes/Indent.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/js/classes/Page.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/js/classes/Sidenav.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/js/classes/autoload-hogan.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/js/classes/autoload-path.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/js/index.js sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/js/package.json sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/README.md sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/ajax.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/classes/CSV.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/classes/CustomLoader.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/classes/Page.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/classes/Sidenav.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/index.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Autoloader.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Cache.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Cache/AbstractCache.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Cache/FilesystemCache.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Cache/NoopCache.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Compiler.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Context.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Engine.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Exception.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Exception/InvalidArgumentException.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Exception/LogicException.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Exception/RuntimeException.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Exception/SyntaxException.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Exception/UnknownFilterException.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Exception/UnknownHelperException.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Exception/UnknownTemplateException.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/HelperCollection.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/LambdaHelper.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Loader.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Loader/ArrayLoader.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Loader/CascadingLoader.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Loader/FilesystemLoader.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Loader/InlineLoader.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Loader/MutableLoader.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Loader/StringLoader.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Logger.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Logger/AbstractLogger.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Logger/StreamLogger.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Parser.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Template.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/mustache/php/vendor/Mustache/Tokenizer.php sourcecode/MVNFHM/src/main/webapp/static/html_UI/package.json sourcecode/MVNFHM/src/main/webapp/static/images/default.png sourcecode/MVNFHM/src/main/webapp/static/images/fileup.png sourcecode/MVNFHM/src/main/webapp/static/images/jiazai.gif sourcecode/MVNFHM/src/main/webapp/static/images/jzx.gif sourcecode/MVNFHM/src/main/webapp/static/images/loadingi.gif sourcecode/MVNFHM/src/main/webapp/static/images/runing.gif sourcecode/MVNFHM/src/main/webapp/static/images/twoDimensonCode.png sourcecode/MVNFHM/src/main/webapp/static/images/user.gif sourcecode/MVNFHM/src/main/webapp/static/js/common/add_result_js.js sourcecode/MVNFHM/src/main/webapp/static/js/jQuery.md5.js sourcecode/MVNFHM/src/main/webapp/static/js/jquery-1.7.2.js sourcecode/MVNFHM/src/main/webapp/static/js/jquery.cookie.js sourcecode/MVNFHM/src/main/webapp/static/js/jquery.tips.js sourcecode/MVNFHM/src/main/webapp/static/js/myjs/fhsms.js sourcecode/MVNFHM/src/main/webapp/static/js/myjs/head.js sourcecode/MVNFHM/src/main/webapp/static/js/myjs/headEmail.js sourcecode/MVNFHM/src/main/webapp/static/js/myjs/index.js sourcecode/MVNFHM/src/main/webapp/static/js/myjs/interfaceTest.js sourcecode/MVNFHM/src/main/webapp/static/js/myjs/map.js sourcecode/MVNFHM/src/main/webapp/static/js/myjs/productCode.js sourcecode/MVNFHM/src/main/webapp/static/js/myjs/readTwoD.js sourcecode/MVNFHM/src/main/webapp/static/js/myjs/sms.js sourcecode/MVNFHM/src/main/webapp/static/js/myjs/sys.js sourcecode/MVNFHM/src/main/webapp/static/js/myjs/toolEmail.js sourcecode/MVNFHM/src/main/webapp/static/login/bootstrap-responsive.min.css sourcecode/MVNFHM/src/main/webapp/static/login/bootstrap.min.css sourcecode/MVNFHM/src/main/webapp/static/login/css/camera.css sourcecode/MVNFHM/src/main/webapp/static/login/font-awesome.css sourcecode/MVNFHM/src/main/webapp/static/login/images/banner_slide_01.jpg sourcecode/MVNFHM/src/main/webapp/static/login/images/banner_slide_02.jpg sourcecode/MVNFHM/src/main/webapp/static/login/images/banner_slide_03.jpg sourcecode/MVNFHM/src/main/webapp/static/login/images/banner_slide_04.jpg sourcecode/MVNFHM/src/main/webapp/static/login/images/banner_slide_05.jpg sourcecode/MVNFHM/src/main/webapp/static/login/images/camera-loader.gif sourcecode/MVNFHM/src/main/webapp/static/login/images/camera_skins.png sourcecode/MVNFHM/src/main/webapp/static/login/js/ban.js sourcecode/MVNFHM/src/main/webapp/static/login/js/bootstrap.min.js sourcecode/MVNFHM/src/main/webapp/static/login/js/camera.min.js sourcecode/MVNFHM/src/main/webapp/static/login/js/jQuery.md5.js sourcecode/MVNFHM/src/main/webapp/static/login/js/jquery-1.5.1.min.js sourcecode/MVNFHM/src/main/webapp/static/login/js/jquery.easing.1.3.js sourcecode/MVNFHM/src/main/webapp/static/login/js/jquery.mobile.customized.min.js sourcecode/MVNFHM/src/main/webapp/static/login/js/templatemo_script.js sourcecode/MVNFHM/src/main/webapp/static/login/keypad/css/framework/form.css sourcecode/MVNFHM/src/main/webapp/static/login/keypad/images/formEle/keyBg.jpg sourcecode/MVNFHM/src/main/webapp/static/login/keypad/images/formEle/keyBg2.jpg sourcecode/MVNFHM/src/main/webapp/static/login/keypad/images/formEle/keyBg3.jpg sourcecode/MVNFHM/src/main/webapp/static/login/keypad/images/formEle/keypad.gif sourcecode/MVNFHM/src/main/webapp/static/login/keypad/js/form/keypad.js sourcecode/MVNFHM/src/main/webapp/static/login/keypad/js/framework.js sourcecode/MVNFHM/src/main/webapp/static/login/keypad/js/jquery.js sourcecode/MVNFHM/src/main/webapp/static/login/logo.png sourcecode/MVNFHM/src/main/webapp/static/login/matrix-login.css sourcecode/MVNFHM/src/main/webapp/static/login/mm.png sourcecode/MVNFHM/src/main/webapp/static/login/music/fh1.mp3 sourcecode/MVNFHM/src/main/webapp/static/login/suo.png sourcecode/MVNFHM/src/main/webapp/static/login/user.png sourcecode/MVNFHM/src/main/webapp/static/login/yan.png sourcecode/MVNFHM/src/main/webapp/static/login/yh.png sourcecode/MVNFHM/src/main/webapp/static/sound/1.mp3 sourcecode/MVNFHM/src/main/webapp/static/sound/2.mp3 sourcecode/MVNFHM/src/main/webapp/static/sound/3.mp3 sourcecode/MVNFHM/src/main/webapp/static/sound/4.mp3 sourcecode/MVNFHM/src/main/webapp/static/sound/5.mp3 sourcecode/MVNFHM/src/main/webapp/uploadFiles/file/Users.xls sourcecode/MVNFHM/src/main/webapp/uploadFiles/uploadImgs/watermark.png sourcecode/readme.txt