Commit 3c3cd271000c9f4cdf4bc27af39be2596e50ea5f

Authored by alexyang
1 parent b7cb7cb7

ini

Showing 40 changed files with 4844 additions and 0 deletions

Too many changes to show.

To preserve performance only 40 of 1459 files are displayed.

titan-web/pom.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
  3 + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  4 + <modelVersion>4.0.0</modelVersion>
  5 + <parent>
  6 + <groupId>com.dili</groupId>
  7 + <artifactId>titan</artifactId>
  8 + <version>1.0</version>
  9 + </parent>
  10 +
  11 + <artifactId>titan-web</artifactId>
  12 + <packaging>war</packaging>
  13 + <name>titan-web</name>
  14 +
  15 + <properties>
  16 + <jdk.version>1.7</jdk.version>
  17 + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  18 + <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
  19 + <spring.version>3.2.9.RELEASE</spring.version>
  20 + <aspectj.version>1.6.11</aspectj.version>
  21 + <jackson.version>1.9.2</jackson.version>
  22 + <slf4j.version>1.6.4</slf4j.version>
  23 + </properties>
  24 +
  25 + <build>
  26 + <resources>
  27 + <resource>
  28 + <directory>src/main/resources</directory>
  29 + <filtering>true</filtering>
  30 + </resource>
  31 + </resources>
  32 + <plugins>
  33 + <plugin>
  34 + <!-- war插件 -->
  35 + <groupId>org.apache.maven.plugins</groupId>
  36 + <artifactId>maven-war-plugin</artifactId>
  37 + <version>2.3</version>
  38 + </plugin>
  39 + <plugin>
  40 + <groupId>org.apache.maven.plugins</groupId>
  41 + <artifactId>maven-compiler-plugin</artifactId>
  42 + <version>2.5.1</version>
  43 + <configuration>
  44 + <source>1.7</source>
  45 + <target>1.7</target>
  46 + <encoding>UTF-8</encoding>
  47 + </configuration>
  48 + </plugin>
  49 + <!-- 配置构建时忽略测试用例 -->
  50 + <plugin>
  51 + <groupId>org.apache.maven.plugins</groupId>
  52 + <artifactId>maven-surefire-plugin</artifactId>
  53 + <configuration>
  54 + <skipTests>true</skipTests>
  55 + </configuration>
  56 + </plugin>
  57 + <plugin>
  58 + <groupId>org.mortbay.jetty</groupId>
  59 + <artifactId>maven-jetty-plugin</artifactId>
  60 + <version>6.1.26</version>
  61 + <configuration>
  62 + <scanIntervalSeconds>3</scanIntervalSeconds>
  63 + <contextPath>/</contextPath>
  64 + <connectors>
  65 + <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
  66 + <port>80</port>
  67 + </connector>
  68 + </connectors>
  69 + </configuration>
  70 + </plugin>
  71 + <plugin>
  72 + <groupId>org.apache.tomcat.maven</groupId>
  73 + <artifactId>tomcat7-maven-plugin</artifactId>
  74 + <version>2.2</version>
  75 + <configuration>
  76 + <port>80</port>
  77 + <path>/</path>
  78 + </configuration>
  79 + </plugin>
  80 + <plugin>
  81 + <artifactId>maven-resources-plugin</artifactId>
  82 + <version>2.5</version>
  83 + <executions>
  84 + <execution>
  85 + <id>copy-xmls</id>
  86 + <phase>process-sources</phase>
  87 + <goals>
  88 + <goal>copy-resources</goal>
  89 + </goals>
  90 + <configuration>
  91 + <outputDirectory>${basedir}/target/classes</outputDirectory>
  92 + <resources>
  93 + <resource>
  94 + <directory>${basedir}/src/main/hbase-profiles/${package.env}</directory>
  95 + <includes>
  96 + <include>**/*.xml</include>
  97 + </includes>
  98 + </resource>
  99 + </resources>
  100 + </configuration>
  101 + </execution>
  102 + </executions>
  103 + </plugin>
  104 + </plugins>
  105 + </build>
  106 +
  107 + <dependencies>
  108 + <!-- spring -->
  109 + <dependency>
  110 + <groupId>org.springframework</groupId>
  111 + <artifactId>spring-webmvc</artifactId>
  112 + <version>${spring.version}</version>
  113 + <exclusions>
  114 + <exclusion>
  115 + <groupId>commons-logging</groupId>
  116 + <artifactId>commons-logging</artifactId>
  117 + </exclusion>
  118 + </exclusions>
  119 + </dependency>
  120 + <dependency>
  121 + <groupId>org.springframework</groupId>
  122 + <artifactId>spring-jdbc</artifactId>
  123 + <version>${spring.version}</version>
  124 + </dependency>
  125 + <dependency>
  126 + <groupId>org.springframework</groupId>
  127 + <artifactId>spring-tx</artifactId>
  128 + <version>${spring.version}</version>
  129 + </dependency>
  130 + <dependency>
  131 + <groupId>org.springframework</groupId>
  132 + <artifactId>spring-asm</artifactId>
  133 + <version>${spring.version}</version>
  134 + </dependency>
  135 + <dependency>
  136 + <groupId>org.springframework</groupId>
  137 + <artifactId>spring-context-support</artifactId>
  138 + <version>${spring.version}</version>
  139 + </dependency>
  140 + <dependency>
  141 + <groupId>org.springframework</groupId>
  142 + <artifactId>spring-expression</artifactId>
  143 + <version>${spring.version}</version>
  144 + </dependency>
  145 + <dependency>
  146 + <groupId>org.springframework</groupId>
  147 + <artifactId>spring-web</artifactId>
  148 + <version>${spring.version}</version>
  149 + </dependency>
  150 +
  151 + <!-- LOG4J日志记录 -->
  152 + <dependency>
  153 + <groupId>org.slf4j</groupId>
  154 + <artifactId>slf4j-api</artifactId>
  155 + <version>1.6.4</version>
  156 + </dependency>
  157 + <dependency>
  158 + <groupId>org.slf4j</groupId>
  159 + <artifactId>slf4j-log4j12</artifactId>
  160 + <version>1.6.4</version>
  161 + </dependency>
  162 + <dependency>
  163 + <groupId>log4j</groupId>
  164 + <artifactId>log4j</artifactId>
  165 + <version>1.2.17</version>
  166 + </dependency>
  167 +
  168 + <dependency>
  169 + <groupId>commons-lang</groupId>
  170 + <artifactId>commons-lang</artifactId>
  171 + <version>2.5</version>
  172 + </dependency>
  173 +
  174 + <dependency>
  175 + <groupId>commons-codec</groupId>
  176 + <artifactId>commons-codec</artifactId>
  177 + <version>1.6</version>
  178 + </dependency>
  179 + <dependency>
  180 + <groupId>org.mybatis</groupId>
  181 + <artifactId>mybatis</artifactId>
  182 + <version>3.2.1</version>
  183 + </dependency>
  184 + <dependency>
  185 + <groupId>org.mybatis</groupId>
  186 + <artifactId>mybatis-spring</artifactId>
  187 + <version>1.2.0</version>
  188 + </dependency>
  189 + <!--<dependency>-->
  190 + <!--<groupId>com.jolbox</groupId>-->
  191 + <!--<artifactId>bonecp</artifactId>-->
  192 + <!--<version>0.7.1.RELEASE</version>-->
  193 + <!--</dependency>-->
  194 + <dependency>
  195 + <groupId>com.alibaba</groupId>
  196 + <artifactId>druid</artifactId>
  197 + <version>1.0.11</version>
  198 + </dependency>
  199 +
  200 + <dependency>
  201 + <groupId>mysql</groupId>
  202 + <artifactId>mysql-connector-java</artifactId>
  203 + <version>5.1.25</version>
  204 + </dependency>
  205 +
  206 + <!-- 工具类 -->
  207 + <!-- google sets,maps -->
  208 + <dependency>
  209 + <groupId>com.google.guava</groupId>
  210 + <artifactId>guava</artifactId>
  211 + <version>14.0.1</version>
  212 + </dependency>
  213 + <!-- JSON -->
  214 + <dependency>
  215 + <groupId>com.alibaba</groupId>
  216 + <artifactId>fastjson</artifactId>
  217 + <version>1.1.31</version>
  218 + </dependency>
  219 + <dependency>
  220 + <groupId>org.aspectj</groupId>
  221 + <artifactId>aspectjweaver</artifactId>
  222 + <version>1.7.2</version>
  223 + </dependency>
  224 + <dependency>
  225 + <groupId>cglib</groupId>
  226 + <artifactId>cglib-nodep</artifactId>
  227 + <version>2.1_3</version>
  228 + </dependency>
  229 +
  230 + <!-- common logging replacer -->
  231 + <dependency>
  232 + <groupId>org.slf4j</groupId>
  233 + <artifactId>jcl-over-slf4j</artifactId>
  234 + <version>${slf4j.version}</version>
  235 + </dependency>
  236 + <!-- if you enable @AspectJ style AOP in spring. -->
  237 + <dependency>
  238 + <groupId>org.aspectj</groupId>
  239 + <artifactId>aspectjrt</artifactId>
  240 + <version>${aspectj.version}</version>
  241 + </dependency>
  242 + <!-- if you enable JSR303 (Bean Validation) in spring. -->
  243 + <dependency>
  244 + <groupId>org.hibernate</groupId>
  245 + <artifactId>hibernate-validator</artifactId>
  246 + <version>4.2.0.Final</version>
  247 + </dependency>
  248 + <!-- if you use velocity view in springmvc -->
  249 + <dependency>
  250 + <groupId>org.apache.velocity</groupId>
  251 + <artifactId>velocity</artifactId>
  252 + <version>1.7</version>
  253 + </dependency>
  254 + <!-- if you use velocity layout view in springmvc -->
  255 + <dependency>
  256 + <groupId>org.apache.velocity</groupId>
  257 + <artifactId>velocity-tools</artifactId>
  258 + <version>2.0</version>
  259 + <exclusions>
  260 + <exclusion>
  261 + <groupId>org.apache.struts</groupId>
  262 + <artifactId>struts-core</artifactId>
  263 + </exclusion>
  264 + <exclusion>
  265 + <groupId>org.apache.struts</groupId>
  266 + <artifactId>struts-taglib</artifactId>
  267 + </exclusion>
  268 + <exclusion>
  269 + <groupId>org.apache.struts</groupId>
  270 + <artifactId>struts-tiles</artifactId>
  271 + </exclusion>
  272 + <exclusion>
  273 + <groupId>sslext</groupId>
  274 + <artifactId>sslext</artifactId>
  275 + </exclusion>
  276 + </exclusions>
  277 + </dependency>
  278 + <!-- if you enable json support in spring mvc. -->
  279 + <dependency>
  280 + <groupId>org.codehaus.jackson</groupId>
  281 + <artifactId>jackson-mapper-asl</artifactId>
  282 + <version>${jackson.version}</version>
  283 + </dependency>
  284 + <!-- if you use fileupload in spring mvc -->
  285 + <dependency>
  286 + <groupId>commons-fileupload</groupId>
  287 + <artifactId>commons-fileupload</artifactId>
  288 + <version>1.2.2</version>
  289 + <optional>true</optional>
  290 + </dependency>
  291 + <!-- test scope -->
  292 + <dependency>
  293 + <groupId>junit</groupId>
  294 + <artifactId>junit</artifactId>
  295 + <version>4.10</version>
  296 + <scope>test</scope>
  297 + </dependency>
  298 + <dependency>
  299 + <groupId>javax.servlet</groupId>
  300 + <artifactId>servlet-api</artifactId>
  301 + <version>2.4</version>
  302 + <scope>provided</scope>
  303 + </dependency>
  304 + <dependency>
  305 + <groupId>redis.clients</groupId>
  306 + <artifactId>jedis</artifactId>
  307 + <version>2.4.2</version>
  308 + </dependency>
  309 + <dependency>
  310 + <groupId>org.springframework.data</groupId>
  311 + <artifactId>spring-data-redis</artifactId>
  312 + <version>1.3.0.RELEASE</version>
  313 + <exclusions>
  314 + <exclusion>
  315 + <groupId>org.springframework</groupId>
  316 + <artifactId>spring-core</artifactId>
  317 + </exclusion>
  318 + <exclusion>
  319 + <groupId>org.springframework</groupId>
  320 + <artifactId>spring-aop</artifactId>
  321 + </exclusion>
  322 + <exclusion>
  323 + <groupId>org.springframework</groupId>
  324 + <artifactId>spring-context</artifactId>
  325 + </exclusion>
  326 + </exclusions>
  327 + </dependency>
  328 + <dependency>
  329 + <artifactId>hbase-client</artifactId>
  330 + <groupId>org.apache.hbase</groupId>
  331 + <version>0.96.1.1-cdh5.0.0</version>
  332 + </dependency>
  333 + <dependency>
  334 + <groupId>org.springframework</groupId>
  335 + <artifactId>spring-test</artifactId>
  336 + <version>${spring.version}</version>
  337 + </dependency>
  338 + <!--<dependency>-->
  339 + <!--<groupId>org.apache.activemq</groupId>-->
  340 + <!--<artifactId>activemq-spring</artifactId>-->
  341 + <!--<version>5.9.1</version>-->
  342 + <!--</dependency>-->
  343 +
  344 +
  345 +
  346 + <!--<dependency>-->
  347 + <!--<groupId>org.springframework</groupId>-->
  348 + <!--<artifactId>spring-jms</artifactId>-->
  349 + <!--<version>${spring.version}</version>-->
  350 + <!--</dependency>-->
  351 + <dependency>
  352 + <groupId>org.apache.httpcomponents</groupId>
  353 + <artifactId>httpclient</artifactId>
  354 + <version>4.3.3</version>
  355 + </dependency>
  356 +
  357 + <dependency>
  358 + <groupId>com.diligrp.log.util</groupId>
  359 + <artifactId>diligrp-log-util</artifactId>
  360 + <version>0.0.1-SNAPSHOT</version>
  361 + </dependency>
  362 + <dependency>
  363 + <groupId>edit</groupId>
  364 + <artifactId>edit</artifactId>
  365 + <version>1.0</version>
  366 + <scope>system</scope>
  367 + <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/ueditor-1.1.1.jar</systemPath>
  368 + </dependency>
  369 + <dependency>
  370 + <groupId>net.bull.javamelody</groupId>
  371 + <artifactId>javamelody-core</artifactId>
  372 + <version>1.37.0</version>
  373 + </dependency>
  374 +
  375 + </dependencies>
  376 +
  377 +<!-- 打包配置信息 -->
  378 + <profiles>
  379 + <profile>
  380 + <!-- 开发环境 -->
  381 + <id>develop</id>
  382 + <!-- 默认 -->
  383 + <activation>
  384 + <activeByDefault>true</activeByDefault>
  385 + </activation>
  386 + <properties>
  387 + <package.env>develop</package.env>
  388 + <!--jdbc type -->
  389 + <dili_titan.jdbc.datasource.type>dbcp</dili_titan.jdbc.datasource.type>
  390 + <!-- 数据库 -->
  391 + <dili_titan.jdbc.driver>com.mysql.jdbc.Driver</dili_titan.jdbc.driver>
  392 + <!-- 主库配置 -->
  393 + <dili_titan.master.jdbc.url>jdbc:MySql://10.28.10.188:3306/agriez_titan?useUnicode=true&amp;characterEncoding=utf8</dili_titan.master.jdbc.url>
  394 + <dili_titan.master.jdbc.username>root</dili_titan.master.jdbc.username>
  395 + <dili_titan.master.jdbc.password>123456</dili_titan.master.jdbc.password>
  396 + <!-- 从库配置-->
  397 + <dili_titan.slave.jdbc.url>jdbc:MySql://10.28.10.188:3306/agriez_titan?useUnicode=true&amp;characterEncoding=utf8</dili_titan.slave.jdbc.url>
  398 + <dili_titan.slave.jdbc.username>du</dili_titan.slave.jdbc.username>
  399 + <dili_titan.slave.jdbc.password>123456</dili_titan.slave.jdbc.password>
  400 + <!-- crm接口地址 -->
  401 + <dili_titan.crm.url>supplier.1n4j.com</dili_titan.crm.url>
  402 + <!-- user接口地址 -->
  403 + <dili_titan.user.url>user.1n4j.com</dili_titan.user.url>
  404 + <!--shop接口地址,需要测试自己修改 -->
  405 + <dili_titan.shop.url>http://shop.1n4j.com</dili_titan.shop.url>
  406 + <!-- redis接口地址 -->
  407 + <dili_titan.redis.url>10.28.10.208</dili_titan.redis.url>
  408 + <!--权限管理的redis配置-->
  409 + <manage.redis.url>10.28.10.208</manage.redis.url>
  410 + <manage.redis.port>6379</manage.redis.port>
  411 + <!-- MQ 地址-->
  412 + <conf.mq.namesrvAddr>10.28.10.209:9876;10.28.10.149:9876</conf.mq.namesrvAddr>
  413 + <conf.mq.producerGroup>titanPNR</conf.mq.producerGroup>
  414 + <!--<dili_titan.mq.url>tcp://10.28.6.114:61616</dili_titan.mq.url>-->
  415 + <!-- website接口地址 -->
  416 + <dili_titan.website.url>manweb.1n4j.com</dili_titan.website.url>
  417 + <!-- 日志 -->
  418 + <dili_titan.log.level>INFO</dili_titan.log.level>
  419 + <dili_titan.log.path>/export/logs</dili_titan.log.path>
  420 + <dili_titan.log.root.appender>CONSOLE</dili_titan.log.root.appender>
  421 + <!--打包编码 -->
  422 + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  423 + <!-- 图片服务器 -->
  424 + <project.imageserver.prefix>http://img0.1n4j.com</project.imageserver.prefix>
  425 + <project.store.url>http://up.1n4j.com</project.store.url>
  426 + <project.store.accessKey>d6a300418bd6fa2178b3bbb06a421f32</project.store.accessKey>
  427 + <project.store.secretKey>8d2d1ac5541dcfbbd78ac1793ce4f782</project.store.secretKey>
  428 + <!--权限相关配置-->
  429 + <conf.manage.enable>true</conf.manage.enable>
  430 + <conf.manage.spider>true</conf.manage.spider>
  431 + <conf.manage.system>titan</conf.manage.system>
  432 + <conf.manage.domain>http://manage.1n4j.com/</conf.manage.domain>
  433 + <conf.manage.includes>^/.*</conf.manage.includes>
  434 + <conf.manage.excludes>^/noAccess.do$,^/welcome.do$,^/loginControl/.*,^/api/.*,^/common/.*,^/img/.*,^/css/.*,^/assets/.*,^/js/.*,.*?/exportExcel,^/moni,^/init.*,^/titan/productPop/queryProductPopData</conf.manage.excludes>
  435 + <!--上传视频-->
  436 + <project.fastdfs.trackercount>2</project.fastdfs.trackercount>
  437 + <project.fastdfs.connectTimeout>2000</project.fastdfs.connectTimeout>
  438 + <project.fastdfs.networkTimeout>30000</project.fastdfs.networkTimeout>
  439 + <project.fastdfs.charset>utf-8</project.fastdfs.charset>
  440 + <project.fastdfs.trackers>10.28.6.148:22122,10.28.6.149:22122</project.fastdfs.trackers>
  441 + <!-- 团购 -->
  442 + <project.grouppurchase.url>http://group.1n4j.com</project.grouppurchase.url>
  443 + <project.grouppurchase.token>123</project.grouppurchase.token>
  444 + <!--爱奇艺视频 -->
  445 + <titan.aqy.appkey>e64a09bece964bb484e5decc30c0b950</titan.aqy.appkey>
  446 + <titan.aqy.appSecret>f48d2b799f9661acdb6041e4ac7c142f</titan.aqy.appSecret>
  447 + </properties>
  448 + </profile>
  449 + <profile>
  450 + <!-- 测试环境 -->
  451 + <id>test</id>
  452 + <activation>
  453 + <activeByDefault>false</activeByDefault>
  454 + </activation>
  455 + <properties>
  456 + <package.env>test</package.env>
  457 + <!--jdbc type -->
  458 + <dili_titan.jdbc.datasource.type>dbcp</dili_titan.jdbc.datasource.type>
  459 + <!-- 数据库 -->
  460 + <dili_titan.jdbc.driver>com.mysql.jdbc.Driver</dili_titan.jdbc.driver>
  461 + <!-- 主库配置 -->
  462 + <dili_titan.master.jdbc.url>jdbc:MySql://10.28.6.156:3306/agriez_titan?useUnicode=true&amp;characterEncoding=utf8</dili_titan.master.jdbc.url>
  463 + <dili_titan.master.jdbc.username>root</dili_titan.master.jdbc.username>
  464 + <dili_titan.master.jdbc.password>123456</dili_titan.master.jdbc.password>
  465 + <!-- 从库配置 -->
  466 + <dili_titan.slave.jdbc.url>jdbc:MySql://10.28.6.155:3306/agriez_titan?useUnicode=true&amp;characterEncoding=utf8</dili_titan.slave.jdbc.url>
  467 + <dili_titan.slave.jdbc.username>agriez_titan_reader</dili_titan.slave.jdbc.username>
  468 + <dili_titan.slave.jdbc.password>123456</dili_titan.slave.jdbc.password>
  469 + <!-- crm接口地址 -->
  470 + <dili_titan.crm.url>supplier.1n4j.com</dili_titan.crm.url>
  471 + <!-- user接口地址,需要测试自己修改 -->
  472 + <dili_titan.user.url>user.1n4j.com</dili_titan.user.url>
  473 + <!--shop接口地址,需要测试自己修改 -->
  474 + <dili_titan.shop.url>http://shop.1n4j.com</dili_titan.shop.url>
  475 + <!-- redis接口地址 -->
  476 + <dili_titan.redis.url>10.28.10.207</dili_titan.redis.url>
  477 + <!--权限管理的redis配置-->
  478 + <manage.redis.url>10.28.10.207</manage.redis.url>
  479 + <manage.redis.port>6379</manage.redis.port>
  480 + <!-- MQ 地址-->
  481 + <conf.mq.namesrvAddr>10.28.10.230:9876</conf.mq.namesrvAddr>
  482 + <conf.mq.producerGroup>titanPNR</conf.mq.producerGroup>
  483 + <!--<dili_titan.mq.url>tcp://10.28.6.54:61616</dili_titan.mq.url>-->
  484 + <!-- website接口地址 -->
  485 + <dili_titan.website.url>manweb.1n4j.com</dili_titan.website.url>
  486 + <!-- 日志 -->
  487 + <dili_titan.log.level>INFO</dili_titan.log.level>
  488 + <dili_titan.log.path>/home/tomcat/export</dili_titan.log.path>
  489 + <dili_titan.log.root.appender>CONSOLE</dili_titan.log.root.appender>
  490 + <!--打包编码 -->
  491 + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  492 + <!-- 图片服务器前缀 -->
  493 + <project.imageserver.prefix>http://img0.1n4j.com</project.imageserver.prefix>
  494 + <project.store.url>http://up.1n4j.com</project.store.url>
  495 + <project.store.accessKey>d6a300418bd6fa2178b3bbb06a421f32</project.store.accessKey>
  496 + <project.store.secretKey>8d2d1ac5541dcfbbd78ac1793ce4f782</project.store.secretKey>
  497 + <!--权限相关配置-->
  498 + <conf.manage.enable>true</conf.manage.enable>
  499 + <conf.manage.spider>true</conf.manage.spider>
  500 + <conf.manage.system>titan</conf.manage.system>
  501 + <conf.manage.domain>http://manage.1n4j.com/</conf.manage.domain>
  502 + <conf.manage.includes>^/.*</conf.manage.includes>
  503 + <conf.manage.excludes>^/noAccess.do$,^/welcome.do$,^/loginControl/.*,^/api/.*,^/common/.*,^/img/.*,^/css/.*,^/assets/.*,^/js/.*,.*?/exportExcel,^/moni,^/init.*,^/titan/productPop/queryProductPopData</conf.manage.excludes>
  504 + <!--上传视频-->
  505 + <project.fastdfs.trackercount>2</project.fastdfs.trackercount>
  506 + <project.fastdfs.connectTimeout>2000</project.fastdfs.connectTimeout>
  507 + <project.fastdfs.networkTimeout>30000</project.fastdfs.networkTimeout>
  508 + <project.fastdfs.charset>utf-8</project.fastdfs.charset>
  509 + <project.fastdfs.trackers>10.28.6.148:22122,10.28.6.149:22122</project.fastdfs.trackers>
  510 + <!-- 团购 -->
  511 + <project.grouppurchase.url>http://group.1n4j.com</project.grouppurchase.url>
  512 + <project.grouppurchase.token>123</project.grouppurchase.token>
  513 + <!--爱奇艺视频 -->
  514 + <titan.aqy.appkey>e64a09bece964bb484e5decc30c0b950</titan.aqy.appkey>
  515 + <titan.aqy.appSecret>f48d2b799f9661acdb6041e4ac7c142f</titan.aqy.appSecret>
  516 + </properties>
  517 + </profile>
  518 +
  519 + <profile>
  520 + <!--预发布环境-->
  521 + <id>pre-online</id>
  522 + <!-- 默认 -->
  523 + <activation>
  524 + <activeByDefault>false</activeByDefault>
  525 + </activation>
  526 + <properties>
  527 + <package.env>pre-online</package.env>
  528 + <!--jdbc type -->
  529 + <dili_titan.jdbc.datasource.type>dbcp</dili_titan.jdbc.datasource.type>
  530 + <!-- 数据库 -->
  531 + <dili_titan.jdbc.driver>com.mysql.jdbc.Driver</dili_titan.jdbc.driver>
  532 + <!-- 主库配置 -->
  533 + <dili_titan.master.jdbc.url>jdbc:MySql://titan.db.1n4j.com:3306/agriez_titan?useUnicode=true&amp;characterEncoding=utf8</dili_titan.master.jdbc.url>
  534 + <dili_titan.master.jdbc.username>root</dili_titan.master.jdbc.username>
  535 + <dili_titan.master.jdbc.password>123456</dili_titan.master.jdbc.password>
  536 + <!-- 从库配置 -->
  537 + <dili_titan.slave.jdbc.url>jdbc:MySql://titan.db.1n4j.com:3306/agriez_titan?useUnicode=true&amp;characterEncoding=utf8</dili_titan.slave.jdbc.url>
  538 + <dili_titan.slave.jdbc.username>root</dili_titan.slave.jdbc.username>
  539 + <dili_titan.slave.jdbc.password>123456</dili_titan.slave.jdbc.password>
  540 + <!-- crm接口地址 -->
  541 + <dili_titan.crm.url>supplier.1n4j.com</dili_titan.crm.url>
  542 + <!-- user接口地址 -->
  543 + <dili_titan.user.url>user.1n4j.com</dili_titan.user.url>
  544 + <!--shop接口地址,需要测试自己修改 -->
  545 + <dili_titan.shop.url>http://shop.1n4j.com</dili_titan.shop.url>
  546 + <!-- redis接口地址 -->
  547 + <dili_titan.redis.url>redis.1n4j.com</dili_titan.redis.url>
  548 + <!--权限管理的redis配置-->
  549 + <manage.redis.url>redis.1n4j.com</manage.redis.url>
  550 + <manage.redis.port>6379</manage.redis.port>
  551 + <!-- MQ 地址-->
  552 + <conf.mq.namesrvAddr>10.28.6.51:9876</conf.mq.namesrvAddr>
  553 + <conf.mq.producerGroup>titanPNR</conf.mq.producerGroup>
  554 + <!--<dili_titan.mq.url>tcp://192.168.28.28:61616</dili_titan.mq.url>-->
  555 + <!-- website接口地址 -->
  556 + <dili_titan.website.url>manweb.1n4j.com</dili_titan.website.url>
  557 + <!-- 日志 -->
  558 + <dili_titan.log.level>INFO</dili_titan.log.level>
  559 + <dili_titan.log.path>/diliapp/servers/logs</dili_titan.log.path>
  560 + <dili_titan.log.root.appender>FILE_ALL</dili_titan.log.root.appender>
  561 + <!--打包编码 -->
  562 + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  563 + <!-- 图片服务器前缀 -->
  564 + <project.imageserver.prefix>http://img0.1n4j.com</project.imageserver.prefix>
  565 + <project.store.url>http://up.1n4j.com</project.store.url>
  566 + <project.store.accessKey>d6a300418bd6fa2178b3bbb06a421f32</project.store.accessKey>
  567 + <project.store.secretKey>8d2d1ac5541dcfbbd78ac1793ce4f782</project.store.secretKey>
  568 + <!-- hbase -->
  569 + <dili_titan.hbase.url>node2:2181,node3:2181,node4:2181</dili_titan.hbase.url>
  570 + <!--权限相关配置-->
  571 + <conf.manage.enable>true</conf.manage.enable>
  572 + <conf.manage.spider>false</conf.manage.spider>
  573 + <conf.manage.system>titan</conf.manage.system>
  574 + <conf.manage.domain>http://manage.1n4j.com/</conf.manage.domain>
  575 + <conf.manage.includes>^/.*</conf.manage.includes>
  576 + <conf.manage.excludes>^/noAccess.do$,^/welcome.do$,^/loginControl/.*,^/api/.*,^/common/.*,^/img/.*,^/css/.*,^/assets/.*,^/js/.*,.*?/exportExcel,^/moni,^/init.*,^/titan/productPop/queryProductPopData</conf.manage.excludes>
  577 + <!--上传视频-->
  578 + <project.fastdfs.trackercount>2</project.fastdfs.trackercount>
  579 + <project.fastdfs.connectTimeout>2000</project.fastdfs.connectTimeout>
  580 + <project.fastdfs.networkTimeout>30000</project.fastdfs.networkTimeout>
  581 + <project.fastdfs.charset>utf-8</project.fastdfs.charset>
  582 + <project.fastdfs.trackers>192.168.28.38:22122,192.168.28.39:22122</project.fastdfs.trackers>
  583 + <!-- 团购 -->
  584 + <project.grouppurchase.url>http://group.1n4j.com</project.grouppurchase.url>
  585 + <project.grouppurchase.token>123</project.grouppurchase.token>
  586 + <!--爱奇艺视频 -->
  587 + <titan.aqy.appkey>f689d13d9dce48039cae27e6e03940c6</titan.aqy.appkey>
  588 + <titan.aqy.appSecret>8633dfebb9f4443d0f1244262bca94f6</titan.aqy.appSecret>
  589 + </properties>
  590 + </profile>
  591 +
  592 + <profile>
  593 + <!--上线环境-->
  594 + <id>online</id>
  595 + <!-- 默认 -->
  596 + <activation>
  597 + <activeByDefault>false</activeByDefault>
  598 + </activation>
  599 + <properties>
  600 + <package.env>online</package.env>
  601 + <!--jdbc type -->
  602 + <dili_titan.jdbc.datasource.type>dbcp</dili_titan.jdbc.datasource.type>
  603 + <!-- 数据库 -->
  604 + <dili_titan.jdbc.driver>com.mysql.jdbc.Driver</dili_titan.jdbc.driver>
  605 + <!-- 主库配置 -->
  606 + <dili_titan.master.jdbc.url>jdbc:MySql://titan.db.1n4j.com:3306/agriez_titan?useUnicode=true&amp;characterEncoding=utf8</dili_titan.master.jdbc.url>
  607 + <dili_titan.master.jdbc.username>appAccPayor</dili_titan.master.jdbc.username>
  608 + <dili_titan.master.jdbc.password>iTDYVBtI6MX4NQ3Er2Oh</dili_titan.master.jdbc.password>
  609 + <!-- 从库配置 -->
  610 + <dili_titan.slave.jdbc.url>jdbc:MySql://192.168.60.61:3306/agriez_titan?useUnicode=true&amp;characterEncoding=utf8</dili_titan.slave.jdbc.url>
  611 + <dili_titan.slave.jdbc.username>appAccPayor</dili_titan.slave.jdbc.username>
  612 + <dili_titan.slave.jdbc.password>iTDYVBtI6MX4NQ3Er2Oh</dili_titan.slave.jdbc.password>
  613 + <!-- crm接口地址 -->
  614 + <dili_titan.crm.url>supplier.1n4j.com</dili_titan.crm.url>
  615 + <!-- user接口地址 -->
  616 + <dili_titan.user.url>user.1n4j.com</dili_titan.user.url>
  617 + <!--shop接口地址,需要测试自己修改 -->
  618 + <dili_titan.shop.url>http://shop.1n4j.com</dili_titan.shop.url>
  619 + <!-- redis接口地址 -->
  620 + <dili_titan.redis.url>redis.1n4j.com</dili_titan.redis.url>
  621 + <!--权限管理的redis配置-->
  622 + <manage.redis.url>redis.1n4j.com</manage.redis.url>
  623 + <manage.redis.port>6379</manage.redis.port>
  624 + <!-- MQ 地址-->
  625 + <conf.mq.namesrvAddr>192.168.60.62:9876;192.168.60.63:9876</conf.mq.namesrvAddr>
  626 + <conf.mq.producerGroup>titanPNR</conf.mq.producerGroup>
  627 + <!--<dili_titan.mq.url>tcp://192.168.28.28:61616</dili_titan.mq.url>-->
  628 + <!-- website接口地址 -->
  629 + <dili_titan.website.url>manweb.1n4j.com</dili_titan.website.url>
  630 + <!-- 日志 -->
  631 + <dili_titan.log.level>INFO</dili_titan.log.level>
  632 + <dili_titan.log.path>/diliapp/servers/logs</dili_titan.log.path>
  633 + <dili_titan.log.root.appender>FILE_ALL</dili_titan.log.root.appender>
  634 + <!--打包编码 -->
  635 + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  636 + <!-- 图片服务器前缀 -->
  637 + <project.imageserver.prefix>http://img0.1n4j.com</project.imageserver.prefix>
  638 + <project.store.url>http://up.1n4j.com</project.store.url>
  639 + <project.store.accessKey>d6a300418bd6fa2178b3bbb06a421f32</project.store.accessKey>
  640 + <project.store.secretKey>8d2d1ac5541dcfbbd78ac1793ce4f782</project.store.secretKey>
  641 + <!--权限相关配置-->
  642 + <conf.manage.enable>true</conf.manage.enable>
  643 + <conf.manage.spider>false</conf.manage.spider>
  644 + <conf.manage.system>titan</conf.manage.system>
  645 + <conf.manage.domain>http://manage.1n4j.com/</conf.manage.domain>
  646 + <conf.manage.includes>^/.*</conf.manage.includes>
  647 + <conf.manage.excludes>^/noAccess.do$,^/welcome.do$,^/loginControl/.*,^/api/.*,^/common/.*,^/img/.*,^/css/.*,^/assets/.*,^/js/.*,.*?/exportExcel,^/moni,^/init.*,^/titan/productPop/queryProductPopData</conf.manage.excludes>
  648 + <!--上传视频-->
  649 + <project.fastdfs.trackercount>2</project.fastdfs.trackercount>
  650 + <project.fastdfs.connectTimeout>2000</project.fastdfs.connectTimeout>
  651 + <project.fastdfs.networkTimeout>30000</project.fastdfs.networkTimeout>
  652 + <project.fastdfs.charset>utf-8</project.fastdfs.charset>
  653 + <project.fastdfs.trackers>192.168.28.38:22122,192.168.28.39:22122</project.fastdfs.trackers>
  654 + <!-- 团购 -->
  655 + <project.grouppurchase.url>http://group.1n4j.com</project.grouppurchase.url>
  656 + <project.grouppurchase.token>123</project.grouppurchase.token>
  657 + <!--爱奇艺视频 -->
  658 + <titan.aqy.appkey>f689d13d9dce48039cae27e6e03940c6</titan.aqy.appkey>
  659 + <titan.aqy.appSecret>8633dfebb9f4443d0f1244262bca94f6</titan.aqy.appSecret>
  660 + </properties>
  661 + </profile>
  662 +
  663 + <profile>
  664 + <!-- 测试环境 -->
  665 + <id>pnr-clone</id>
  666 + <activation>
  667 + <activeByDefault>false</activeByDefault>
  668 + </activation>
  669 + <properties>
  670 + <!--jdbc type -->
  671 + <dili_titan.jdbc.datasource.type>dbcp</dili_titan.jdbc.datasource.type>
  672 + <!-- 数据库 -->
  673 + <dili_titan.jdbc.driver>com.mysql.jdbc.Driver</dili_titan.jdbc.driver>
  674 + <!-- 主库配置 -->
  675 + <dili_titan.master.jdbc.url>jdbc:MySql://10.28.5.236:3306/titan?useUnicode=true&amp;characterEncoding=utf8</dili_titan.master.jdbc.url>
  676 + <dili_titan.master.jdbc.username>root</dili_titan.master.jdbc.username>
  677 + <dili_titan.master.jdbc.password>123456</dili_titan.master.jdbc.password>
  678 + <!-- 从库配置 -->
  679 + <dili_titan.slave.jdbc.url>jdbc:MySql://10.28.5.235:3306/titan?useUnicode=true&amp;characterEncoding=utf8</dili_titan.slave.jdbc.url>
  680 + <dili_titan.slave.jdbc.username>titan_reader</dili_titan.slave.jdbc.username>
  681 + <dili_titan.slave.jdbc.password>123456</dili_titan.slave.jdbc.password>
  682 + <!-- crm接口地址 -->
  683 + <dili_titan.crm.url>supplier.1n4j.com</dili_titan.crm.url>
  684 + <!-- user接口地址,需要测试自己修改 -->
  685 + <dili_titan.user.url>user.1n4j.com</dili_titan.user.url>
  686 + <!--shop接口地址,需要测试自己修改 -->
  687 + <dili_titan.shop.url>http://shop.1n4j.com</dili_titan.shop.url>
  688 + <!-- redis接口地址 -->
  689 + <dili_titan.redis.url>10.28.5.200</dili_titan.redis.url>
  690 + <!--权限管理的redis配置-->
  691 + <manage.redis.url>10.28.5.200</manage.redis.url>
  692 + <manage.redis.port>6379</manage.redis.port>
  693 + <!-- MQ 地址-->
  694 + <conf.mq.namesrvAddr>10.28.5.202:9876;10.28.5.203:9876</conf.mq.namesrvAddr>
  695 + <conf.mq.producerGroup>titanPNR</conf.mq.producerGroup>
  696 + <!--<dili_titan.mq.url>tcp://10.28.6.54:61616</dili_titan.mq.url>-->
  697 + <!-- website接口地址 -->
  698 + <dili_titan.website.url>manweb.1n4j.com</dili_titan.website.url>
  699 + <!-- 日志 -->
  700 + <dili_titan.log.level>INFO</dili_titan.log.level>
  701 + <dili_titan.log.path>/home/tomcat/export</dili_titan.log.path>
  702 + <dili_titan.log.root.appender>CONSOLE</dili_titan.log.root.appender>
  703 + <!--打包编码 -->
  704 + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  705 + <!-- 图片服务器前缀 -->
  706 + <project.imageserver.prefix>http://img0.1n4j.com</project.imageserver.prefix>
  707 + <project.store.url>http://up.1n4j.com</project.store.url>
  708 + <project.store.accessKey>d6a300418bd6fa2178b3bbb06a421f32</project.store.accessKey>
  709 + <project.store.secretKey>8d2d1ac5541dcfbbd78ac1793ce4f782</project.store.secretKey>
  710 + <!--权限相关配置-->
  711 + <conf.manage.enable>true</conf.manage.enable>
  712 + <conf.manage.spider>true</conf.manage.spider>
  713 + <conf.manage.system>titan</conf.manage.system>
  714 + <conf.manage.domain>http://manage.1n4j.com/
  715 + </conf.manage.domain>
  716 + <conf.manage.includes>^/.*</conf.manage.includes>
  717 + <conf.manage.excludes>
  718 + ^/noAccess.do$,^/welcome.do$,^/loginControl/.*,^/api/.*,^/common/.*,^/img/.*,^/css/.*,^/assets/.*,^/js/.*,.*?/exportExcel,^/moni,^/init.*,^/titan/productPop/queryProductPopData
  719 + </conf.manage.excludes>
  720 + <!--上传视频-->
  721 + <project.fastdfs.trackercount>2</project.fastdfs.trackercount>
  722 + <project.fastdfs.connectTimeout>2000
  723 + </project.fastdfs.connectTimeout>
  724 + <project.fastdfs.networkTimeout>30000
  725 + </project.fastdfs.networkTimeout>
  726 + <project.fastdfs.charset>utf-8</project.fastdfs.charset>
  727 + <project.fastdfs.trackers>10.28.6.148:22122,10.28.6.149:22122
  728 + </project.fastdfs.trackers>
  729 + <!-- 团购 -->
  730 + <project.grouppurchase.url>http://group.1n4j.com
  731 + </project.grouppurchase.url>
  732 + <project.grouppurchase.token>123</project.grouppurchase.token>
  733 + <!--爱奇艺视频 -->
  734 + <titan.aqy.appkey>e64a09bece964bb484e5decc30c0b950</titan.aqy.appkey>
  735 + <titan.aqy.appSecret>f48d2b799f9661acdb6041e4ac7c142f</titan.aqy.appSecret>
  736 + </properties>
  737 + </profile>
  738 + </profiles>
  739 +</project>
... ...
titan-web/src/main/hbase-profiles/develop/core-site.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<configuration>
  3 +
  4 + <property>
  5 + <name>fs.defaultFS</name>
  6 + <value>hdfs://mycluster</value>
  7 + <final>true</final>
  8 + </property>
  9 +
  10 + <property>
  11 + <name>fs.trash.interval</name>
  12 + <value>360</value>
  13 + </property>
  14 +
  15 + <property>
  16 + <name>ha.failover-controller.active-standby-elector.zk.op.retries</name>
  17 + <value>120</value>
  18 + </property>
  19 +
  20 + <property>
  21 + <name>ha.zookeeper.quorum</name>
  22 + <value>node2:2181,node3:2181,node4:2181</value>
  23 + </property>
  24 +
  25 + <property>
  26 + <name>hadoop.http.authentication.simple.anonymous.allowed</name>
  27 + <value>true</value>
  28 + </property>
  29 +
  30 + <property>
  31 + <name>hadoop.security.auth_to_local</name>
  32 + <value>DEFAULT</value>
  33 + </property>
  34 +
  35 + <property>
  36 + <name>hadoop.security.authentication</name>
  37 + <value>simple</value>
  38 + </property>
  39 +
  40 + <property>
  41 + <name>hadoop.security.authorization</name>
  42 + <value>false</value>
  43 + </property>
  44 +
  45 + <property>
  46 + <name>io.compression.codecs</name>
  47 + <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.SnappyCodec</value>
  48 + </property>
  49 +
  50 + <property>
  51 + <name>io.file.buffer.size</name>
  52 + <value>131072</value>
  53 + </property>
  54 +
  55 + <property>
  56 + <name>io.serializations</name>
  57 + <value>org.apache.hadoop.io.serializer.WritableSerialization</value>
  58 + </property>
  59 +
  60 + <property>
  61 + <name>ipc.client.connect.max.retries</name>
  62 + <value>50</value>
  63 + </property>
  64 +
  65 + <property>
  66 + <name>ipc.client.connection.maxidletime</name>
  67 + <value>30000</value>
  68 + </property>
  69 +
  70 + <property>
  71 + <name>ipc.client.idlethreshold</name>
  72 + <value>8000</value>
  73 + </property>
  74 +
  75 + <property>
  76 + <name>ipc.server.tcpnodelay</name>
  77 + <value>true</value>
  78 + </property>
  79 +
  80 + <property>
  81 + <name>mapreduce.jobtracker.webinterface.trusted</name>
  82 + <value>false</value>
  83 + </property>
  84 +
  85 + <property>
  86 + <name>proxyuser_group</name>
  87 + <value>users</value>
  88 + </property>
  89 +
  90 +</configuration>
... ...
titan-web/src/main/hbase-profiles/develop/hbase-site.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<configuration>
  3 +
  4 + <property>
  5 + <name>dfs.domain.socket.path</name>
  6 + <value>/var/lib/hadoop-hdfs/dn_socket</value>
  7 + </property>
  8 +
  9 + <property>
  10 + <name>hbase.client.keyvalue.maxsize</name>
  11 + <value>10485760</value>
  12 + </property>
  13 +
  14 + <property>
  15 + <name>hbase.client.scanner.caching</name>
  16 + <value>100</value>
  17 + </property>
  18 +
  19 + <property>
  20 + <name>hbase.cluster.distributed</name>
  21 + <value>true</value>
  22 + </property>
  23 +
  24 + <property>
  25 + <name>hbase.coprocessor.master.classes</name>
  26 + <value></value>
  27 + </property>
  28 +
  29 + <property>
  30 + <name>hbase.coprocessor.region.classes</name>
  31 + <value></value>
  32 + </property>
  33 +
  34 + <property>
  35 + <name>hbase.defaults.for.version.skip</name>
  36 + <value>true</value>
  37 + </property>
  38 +
  39 + <property>
  40 + <name>hbase.hregion.majorcompaction</name>
  41 + <value>604800000</value>
  42 + </property>
  43 +
  44 + <property>
  45 + <name>hbase.hregion.majorcompaction.jitter</name>
  46 + <value>0.50</value>
  47 + </property>
  48 +
  49 + <property>
  50 + <name>hbase.hregion.max.filesize</name>
  51 + <value>10737418240</value>
  52 + </property>
  53 +
  54 + <property>
  55 + <name>hbase.hregion.memstore.block.multiplier</name>
  56 + <value>4</value>
  57 + </property>
  58 +
  59 + <property>
  60 + <name>hbase.hregion.memstore.flush.size</name>
  61 + <value>134217728</value>
  62 + </property>
  63 +
  64 + <property>
  65 + <name>hbase.hregion.memstore.mslab.enabled</name>
  66 + <value>true</value>
  67 + </property>
  68 +
  69 + <property>
  70 + <name>hbase.hstore.blockingStoreFiles</name>
  71 + <value>10</value>
  72 + </property>
  73 +
  74 + <property>
  75 + <name>hbase.hstore.compactionThreshold</name>
  76 + <value>3</value>
  77 + </property>
  78 +
  79 + <property>
  80 + <name>hbase.local.dir</name>
  81 + <value>${hbase.tmp.dir}/local</value>
  82 + </property>
  83 +
  84 + <property>
  85 + <name>hbase.master.info.bindAddress</name>
  86 + <value>0.0.0.0</value>
  87 + </property>
  88 +
  89 + <property>
  90 + <name>hbase.master.info.port</name>
  91 + <value>60010</value>
  92 + </property>
  93 +
  94 + <property>
  95 + <name>hbase.master.port</name>
  96 + <value>60000</value>
  97 + </property>
  98 +
  99 + <property>
  100 + <name>hbase.regionserver.global.memstore.lowerLimit</name>
  101 + <value>0.38</value>
  102 + </property>
  103 +
  104 + <property>
  105 + <name>hbase.regionserver.global.memstore.upperLimit</name>
  106 + <value>0.4</value>
  107 + </property>
  108 +
  109 + <property>
  110 + <name>hbase.regionserver.handler.count</name>
  111 + <value>60</value>
  112 + </property>
  113 +
  114 + <property>
  115 + <name>hbase.regionserver.info.port</name>
  116 + <value>60030</value>
  117 + </property>
  118 +
  119 + <property>
  120 + <name>hbase.rootdir</name>
  121 + <value>hdfs://mycluster/apps/hbase/data</value>
  122 + </property>
  123 +
  124 + <property>
  125 + <name>hbase.rpc.protection</name>
  126 + <value>authentication</value>
  127 + </property>
  128 +
  129 + <property>
  130 + <name>hbase.security.authentication</name>
  131 + <value>simple</value>
  132 + </property>
  133 +
  134 + <property>
  135 + <name>hbase.security.authorization</name>
  136 + <value>false</value>
  137 + </property>
  138 +
  139 + <property>
  140 + <name>hbase.superuser</name>
  141 + <value>hadoop</value>
  142 + </property>
  143 +
  144 + <property>
  145 + <name>hbase.zookeeper.property.clientPort</name>
  146 + <value>2181</value>
  147 + </property>
  148 +
  149 + <property>
  150 + <name>hbase.zookeeper.quorum</name>
  151 + <value>node2,node3,node4</value>
  152 + </property>
  153 +
  154 + <property>
  155 + <name>hbase.zookeeper.useMulti</name>
  156 + <value>true</value>
  157 + </property>
  158 +
  159 + <property>
  160 + <name>hfile.block.cache.size</name>
  161 + <value>0.40</value>
  162 + </property>
  163 +
  164 + <property>
  165 + <name>zookeeper.session.timeout</name>
  166 + <value>30000</value>
  167 + </property>
  168 +
  169 + <property>
  170 + <name>zookeeper.znode.parent</name>
  171 + <value>/hbase</value>
  172 + </property>
  173 +
  174 +</configuration>
... ...
titan-web/src/main/hbase-profiles/online/core-site.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<configuration>
  3 +
  4 + <property>
  5 + <name>fs.defaultFS</name>
  6 + <value>hdfs://bigdata1</value>
  7 + <final>true</final>
  8 + </property>
  9 +
  10 + <property>
  11 + <name>fs.trash.interval</name>
  12 + <value>360</value>
  13 + </property>
  14 +
  15 + <property>
  16 + <name>ha.failover-controller.active-standby-elector.zk.op.retries</name>
  17 + <value>120</value>
  18 + </property>
  19 +
  20 + <property>
  21 + <name>ha.zookeeper.quorum</name>
  22 + <value>ddbigdata.29.115.nong12.com:2181,ddbigdata.29.116.nong12.com:2181,ddbigdata.29.117.nong12.com:2181</value>
  23 + </property>
  24 +
  25 + <property>
  26 + <name>hadoop.http.authentication.simple.anonymous.allowed</name>
  27 + <value>true</value>
  28 + </property>
  29 +
  30 + <property>
  31 + <name>hadoop.security.auth_to_local</name>
  32 + <value>DEFAULT</value>
  33 + </property>
  34 +
  35 + <property>
  36 + <name>hadoop.security.authentication</name>
  37 + <value>simple</value>
  38 + </property>
  39 +
  40 + <property>
  41 + <name>hadoop.security.authorization</name>
  42 + <value>false</value>
  43 + </property>
  44 +
  45 + <property>
  46 + <name>io.compression.codecs</name>
  47 + <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.SnappyCodec</value>
  48 + </property>
  49 +
  50 + <property>
  51 + <name>io.file.buffer.size</name>
  52 + <value>131072</value>
  53 + </property>
  54 +
  55 + <property>
  56 + <name>io.serializations</name>
  57 + <value>org.apache.hadoop.io.serializer.WritableSerialization</value>
  58 + </property>
  59 +
  60 + <property>
  61 + <name>ipc.client.connect.max.retries</name>
  62 + <value>50</value>
  63 + </property>
  64 +
  65 + <property>
  66 + <name>ipc.client.connection.maxidletime</name>
  67 + <value>30000</value>
  68 + </property>
  69 +
  70 + <property>
  71 + <name>ipc.client.idlethreshold</name>
  72 + <value>8000</value>
  73 + </property>
  74 +
  75 + <property>
  76 + <name>ipc.server.tcpnodelay</name>
  77 + <value>true</value>
  78 + </property>
  79 +
  80 + <property>
  81 + <name>mapreduce.jobtracker.webinterface.trusted</name>
  82 + <value>false</value>
  83 + </property>
  84 +
  85 + <property>
  86 + <name>proxyuser_group</name>
  87 + <value>users</value>
  88 + </property>
  89 +
  90 +</configuration>
... ...
titan-web/src/main/hbase-profiles/online/hbase-site.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<configuration>
  3 +
  4 + <property>
  5 + <name>dfs.domain.socket.path</name>
  6 + <value>/var/lib/hadoop-hdfs/dn_socket</value>
  7 + </property>
  8 +
  9 + <property>
  10 + <name>hbase.client.keyvalue.maxsize</name>
  11 + <value>10485760</value>
  12 + </property>
  13 +
  14 + <property>
  15 + <name>hbase.client.scanner.caching</name>
  16 + <value>100</value>
  17 + </property>
  18 +
  19 + <property>
  20 + <name>hbase.cluster.distributed</name>
  21 + <value>true</value>
  22 + </property>
  23 +
  24 + <property>
  25 + <name>hbase.coprocessor.master.classes</name>
  26 + <value></value>
  27 + </property>
  28 +
  29 + <property>
  30 + <name>hbase.coprocessor.region.classes</name>
  31 + <value></value>
  32 + </property>
  33 +
  34 + <property>
  35 + <name>hbase.defaults.for.version.skip</name>
  36 + <value>true</value>
  37 + </property>
  38 +
  39 + <property>
  40 + <name>hbase.hregion.majorcompaction</name>
  41 + <value>604800000</value>
  42 + </property>
  43 +
  44 + <property>
  45 + <name>hbase.hregion.majorcompaction.jitter</name>
  46 + <value>0.50</value>
  47 + </property>
  48 +
  49 + <property>
  50 + <name>hbase.hregion.max.filesize</name>
  51 + <value>10737418240</value>
  52 + </property>
  53 +
  54 + <property>
  55 + <name>hbase.hregion.memstore.block.multiplier</name>
  56 + <value>4</value>
  57 + </property>
  58 +
  59 + <property>
  60 + <name>hbase.hregion.memstore.flush.size</name>
  61 + <value>134217728</value>
  62 + </property>
  63 +
  64 + <property>
  65 + <name>hbase.hregion.memstore.mslab.enabled</name>
  66 + <value>true</value>
  67 + </property>
  68 +
  69 + <property>
  70 + <name>hbase.hstore.blockingStoreFiles</name>
  71 + <value>10</value>
  72 + </property>
  73 +
  74 + <property>
  75 + <name>hbase.hstore.compactionThreshold</name>
  76 + <value>3</value>
  77 + </property>
  78 +
  79 + <property>
  80 + <name>hbase.local.dir</name>
  81 + <value>${hbase.tmp.dir}/local</value>
  82 + </property>
  83 +
  84 + <property>
  85 + <name>hbase.master.info.bindAddress</name>
  86 + <value>0.0.0.0</value>
  87 + </property>
  88 +
  89 + <property>
  90 + <name>hbase.master.info.port</name>
  91 + <value>60010</value>
  92 + </property>
  93 +
  94 + <property>
  95 + <name>hbase.master.port</name>
  96 + <value>60000</value>
  97 + </property>
  98 +
  99 + <property>
  100 + <name>hbase.regionserver.global.memstore.lowerLimit</name>
  101 + <value>0.38</value>
  102 + </property>
  103 +
  104 + <property>
  105 + <name>hbase.regionserver.global.memstore.upperLimit</name>
  106 + <value>0.4</value>
  107 + </property>
  108 +
  109 + <property>
  110 + <name>hbase.regionserver.handler.count</name>
  111 + <value>60</value>
  112 + </property>
  113 +
  114 + <property>
  115 + <name>hbase.regionserver.info.port</name>
  116 + <value>60030</value>
  117 + </property>
  118 +
  119 + <property>
  120 + <name>hbase.rootdir</name>
  121 + <value>hdfs://bigdata1/apps/hbase/data</value>
  122 + </property>
  123 +
  124 + <property>
  125 + <name>hbase.rpc.protection</name>
  126 + <value>authentication</value>
  127 + </property>
  128 +
  129 + <property>
  130 + <name>hbase.security.authentication</name>
  131 + <value>simple</value>
  132 + </property>
  133 +
  134 + <property>
  135 + <name>hbase.security.authorization</name>
  136 + <value>false</value>
  137 + </property>
  138 +
  139 + <property>
  140 + <name>hbase.superuser</name>
  141 + <value>hbase</value>
  142 + </property>
  143 +
  144 + <!--<property>
  145 + <name>hbase.tmp.dir</name>
  146 + <value>/diliapp/data1/hadoop/hbase</value>
  147 + </property>-->
  148 +
  149 + <property>
  150 + <name>hbase.zookeeper.property.clientPort</name>
  151 + <value>2181</value>
  152 + </property>
  153 +
  154 + <property>
  155 + <name>hbase.zookeeper.quorum</name>
  156 + <value>ddbigdata.29.115.nong12.com:2181,ddbigdata.29.116.nong12.com:2181,ddbigdata.29.117.nong12.com:2181</value>
  157 + </property>
  158 +
  159 + <property>
  160 + <name>hbase.zookeeper.useMulti</name>
  161 + <value>true</value>
  162 + </property>
  163 +
  164 + <property>
  165 + <name>hfile.block.cache.size</name>
  166 + <value>0.40</value>
  167 + </property>
  168 +
  169 + <property>
  170 + <name>zookeeper.session.timeout</name>
  171 + <value>30000</value>
  172 + </property>
  173 +
  174 + <property>
  175 + <name>zookeeper.znode.parent</name>
  176 + <value>/hbase-unsecure</value>
  177 + </property>
  178 +
  179 +</configuration>
... ...
titan-web/src/main/hbase-profiles/pre-online/core-site.xml 0 → 100644
  1 +<!--Mon Nov 14 17:17:58 2016-->
  2 + <configuration>
  3 +
  4 + <property>
  5 + <name>fs.defaultFS</name>
  6 + <value>hdfs://hbase1.hadoop:8020</value>
  7 + <final>true</final>
  8 + </property>
  9 +
  10 + <property>
  11 + <name>fs.trash.interval</name>
  12 + <value>360</value>
  13 + </property>
  14 +
  15 + <property>
  16 + <name>ha.failover-controller.active-standby-elector.zk.op.retries</name>
  17 + <value>120</value>
  18 + </property>
  19 +
  20 + <property>
  21 + <name>hadoop.http.authentication.simple.anonymous.allowed</name>
  22 + <value>true</value>
  23 + </property>
  24 +
  25 + <property>
  26 + <name>hadoop.security.auth_to_local</name>
  27 + <value>DEFAULT</value>
  28 + </property>
  29 +
  30 + <property>
  31 + <name>hadoop.security.authentication</name>
  32 + <value>simple</value>
  33 + </property>
  34 +
  35 + <property>
  36 + <name>hadoop.security.authorization</name>
  37 + <value>false</value>
  38 + </property>
  39 +
  40 + <property>
  41 + <name>io.compression.codecs</name>
  42 + <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.SnappyCodec</value>
  43 + </property>
  44 +
  45 + <property>
  46 + <name>io.file.buffer.size</name>
  47 + <value>131072</value>
  48 + </property>
  49 +
  50 + <property>
  51 + <name>io.serializations</name>
  52 + <value>org.apache.hadoop.io.serializer.WritableSerialization</value>
  53 + </property>
  54 +
  55 + <property>
  56 + <name>ipc.client.connect.max.retries</name>
  57 + <value>50</value>
  58 + </property>
  59 +
  60 + <property>
  61 + <name>ipc.client.connection.maxidletime</name>
  62 + <value>30000</value>
  63 + </property>
  64 +
  65 + <property>
  66 + <name>ipc.client.idlethreshold</name>
  67 + <value>8000</value>
  68 + </property>
  69 +
  70 + <property>
  71 + <name>ipc.server.tcpnodelay</name>
  72 + <value>true</value>
  73 + </property>
  74 +
  75 + <property>
  76 + <name>mapreduce.jobtracker.webinterface.trusted</name>
  77 + <value>false</value>
  78 + </property>
  79 +
  80 + <property>
  81 + <name>proxyuser_group</name>
  82 + <value>users</value>
  83 + </property>
  84 +
  85 + </configuration>
... ...
titan-web/src/main/hbase-profiles/pre-online/hbase-site.xml 0 → 100644
  1 +<!--Mon Nov 14 17:18:24 2016-->
  2 + <configuration>
  3 +
  4 + <property>
  5 + <name>dfs.domain.socket.path</name>
  6 + <value>/var/lib/hadoop-hdfs/dn_socket</value>
  7 + </property>
  8 +
  9 + <property>
  10 + <name>hbase.client.keyvalue.maxsize</name>
  11 + <value>10485760</value>
  12 + </property>
  13 +
  14 + <property>
  15 + <name>hbase.client.scanner.caching</name>
  16 + <value>100</value>
  17 + </property>
  18 +
  19 + <property>
  20 + <name>hbase.cluster.distributed</name>
  21 + <value>true</value>
  22 + </property>
  23 +
  24 + <property>
  25 + <name>hbase.coprocessor.master.classes</name>
  26 + <value></value>
  27 + </property>
  28 +
  29 + <property>
  30 + <name>hbase.coprocessor.region.classes</name>
  31 + <value></value>
  32 + </property>
  33 +
  34 + <property>
  35 + <name>hbase.defaults.for.version.skip</name>
  36 + <value>true</value>
  37 + </property>
  38 +
  39 + <property>
  40 + <name>hbase.hregion.majorcompaction</name>
  41 + <value>604800000</value>
  42 + </property>
  43 +
  44 + <property>
  45 + <name>hbase.hregion.majorcompaction.jitter</name>
  46 + <value>0.50</value>
  47 + </property>
  48 +
  49 + <property>
  50 + <name>hbase.hregion.max.filesize</name>
  51 + <value>10737418240</value>
  52 + </property>
  53 +
  54 + <property>
  55 + <name>hbase.hregion.memstore.block.multiplier</name>
  56 + <value>4</value>
  57 + </property>
  58 +
  59 + <property>
  60 + <name>hbase.hregion.memstore.flush.size</name>
  61 + <value>134217728</value>
  62 + </property>
  63 +
  64 + <property>
  65 + <name>hbase.hregion.memstore.mslab.enabled</name>
  66 + <value>true</value>
  67 + </property>
  68 +
  69 + <property>
  70 + <name>hbase.hstore.blockingStoreFiles</name>
  71 + <value>10</value>
  72 + </property>
  73 +
  74 + <property>
  75 + <name>hbase.hstore.compactionThreshold</name>
  76 + <value>3</value>
  77 + </property>
  78 +
  79 + <property>
  80 + <name>hbase.local.dir</name>
  81 + <value>${hbase.tmp.dir}/local</value>
  82 + </property>
  83 +
  84 + <property>
  85 + <name>hbase.master.info.bindAddress</name>
  86 + <value>0.0.0.0</value>
  87 + </property>
  88 +
  89 + <property>
  90 + <name>hbase.master.info.port</name>
  91 + <value>60010</value>
  92 + </property>
  93 +
  94 + <property>
  95 + <name>hbase.master.port</name>
  96 + <value>60000</value>
  97 + </property>
  98 +
  99 + <property>
  100 + <name>hbase.regionserver.global.memstore.lowerLimit</name>
  101 + <value>0.38</value>
  102 + </property>
  103 +
  104 + <property>
  105 + <name>hbase.regionserver.global.memstore.upperLimit</name>
  106 + <value>0.4</value>
  107 + </property>
  108 +
  109 + <property>
  110 + <name>hbase.regionserver.handler.count</name>
  111 + <value>60</value>
  112 + </property>
  113 +
  114 + <property>
  115 + <name>hbase.regionserver.info.port</name>
  116 + <value>60030</value>
  117 + </property>
  118 +
  119 + <property>
  120 + <name>hbase.rootdir</name>
  121 + <value>hdfs://hbase1.hadoop:8020/apps/hbase/data</value>
  122 + </property>
  123 +
  124 + <property>
  125 + <name>hbase.rpc.protection</name>
  126 + <value>authentication</value>
  127 + </property>
  128 +
  129 + <property>
  130 + <name>hbase.security.authentication</name>
  131 + <value>simple</value>
  132 + </property>
  133 +
  134 + <property>
  135 + <name>hbase.security.authorization</name>
  136 + <value>false</value>
  137 + </property>
  138 +
  139 + <property>
  140 + <name>hbase.superuser</name>
  141 + <value>hbase</value>
  142 + </property>
  143 +
  144 + <property>
  145 + <name>hbase.tmp.dir</name>
  146 + <value>/hadoop/hbase</value>
  147 + </property>
  148 +
  149 + <property>
  150 + <name>hbase.zookeeper.property.clientPort</name>
  151 + <value>2181</value>
  152 + </property>
  153 +
  154 + <property>
  155 + <name>hbase.zookeeper.quorum</name>
  156 + <value>hbase2.hadoop,hbase1.hadoop,hbase3.hadoop</value>
  157 + </property>
  158 +
  159 + <property>
  160 + <name>hbase.zookeeper.useMulti</name>
  161 + <value>true</value>
  162 + </property>
  163 +
  164 + <property>
  165 + <name>hfile.block.cache.size</name>
  166 + <value>0.40</value>
  167 + </property>
  168 +
  169 + <property>
  170 + <name>zookeeper.session.timeout</name>
  171 + <value>30000</value>
  172 + </property>
  173 +
  174 + <property>
  175 + <name>zookeeper.znode.parent</name>
  176 + <value>/hbase-unsecure</value>
  177 + </property>
  178 +
  179 + </configuration>
... ...
titan-web/src/main/hbase-profiles/test/core-site.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3 +<!--
  4 + Licensed under the Apache License, Version 2.0 (the "License");
  5 + you may not use this file except in compliance with the License.
  6 + You may obtain a copy of the License at
  7 +
  8 + http://www.apache.org/licenses/LICENSE-2.0
  9 +
  10 + Unless required by applicable law or agreed to in writing, software
  11 + distributed under the License is distributed on an "AS IS" BASIS,
  12 + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13 + See the License for the specific language governing permissions and
  14 + limitations under the License. See accompanying LICENSE file.
  15 +-->
  16 +
  17 +<!-- Put site-specific property overrides in this file. -->
  18 +
  19 +<configuration>
  20 + <property>
  21 + <name>hadoop.tmp.dir</name>
  22 + <value>/usr/hadoop/tmp</value>
  23 + </property>
  24 + <property>
  25 + <name>io.file.buffer.size</name>
  26 + <value>131072</value>
  27 + </property>
  28 + <property>
  29 + <name>fs.defaultFS</name>
  30 + <value>hdfs://testcluster</value>
  31 + </property>
  32 + <property>
  33 + <name>hadoop.proxyuser.hadoop.groups</name>
  34 + <value>hadoop</value>
  35 + </property>
  36 + <property>
  37 + <name>hadoop.proxyuser.hadoop.hosts</name>
  38 + <value>*</value>
  39 + </property>
  40 +</configuration>
... ...
titan-web/src/main/hbase-profiles/test/hbase-site.xml 0 → 100644
  1 +<?xml version="1.0"?>
  2 +<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3 +<!--
  4 +/**
  5 + *
  6 + * Licensed to the Apache Software Foundation (ASF) under one
  7 + * or more contributor license agreements. See the NOTICE file
  8 + * distributed with this work for additional information
  9 + * regarding copyright ownership. The ASF licenses this file
  10 + * to you under the Apache License, Version 2.0 (the
  11 + * "License"); you may not use this file except in compliance
  12 + * with the License. You may obtain a copy of the License at
  13 + *
  14 + * http://www.apache.org/licenses/LICENSE-2.0
  15 + *
  16 + * Unless required by applicable law or agreed to in writing, software
  17 + * distributed under the License is distributed on an "AS IS" BASIS,
  18 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  19 + * See the License for the specific language governing permissions and
  20 + * limitations under the License.
  21 + */
  22 +-->
  23 +<configuration>
  24 + <property>
  25 + <name>hbase.rootdir</name>
  26 + <value>hdfs://testcluster/hbase</value>
  27 + </property>
  28 + <property>
  29 + <name>hbase.cluster.distributed</name>
  30 + <value>true</value>
  31 + </property>
  32 + <property>
  33 + <name>hbase.zookeeper.quorum</name>
  34 + <value>server13,server12,server55</value>
  35 + </property>
  36 +
  37 + <!--HBase retry times-->
  38 + <property>
  39 + <name>hbase.client.retries.number</name>
  40 + <value>1</value>
  41 + </property>
  42 +</configuration>
... ...
titan-web/src/main/java/com/dili/titan/common/Account.java 0 → 100644
  1 +package com.dili.titan.common;
  2 +
  3 +/**
  4 + * 账号类
  5 + *
  6 + * @author dev-center
  7 + * @since 2014-05-10
  8 + */
  9 +public class Account {
  10 +
  11 + private String personId;
  12 +
  13 + private String account;
  14 +
  15 + private String personName;
  16 +
  17 + private String orgId;
  18 +
  19 + private String orgName;
  20 +
  21 + private int isPassModi;
  22 +
  23 + private int passOverdue;
  24 +
  25 + private String cvnPassModiTime;
  26 +
  27 + private String cvnCreateTime;
  28 +
  29 + private String cvnModiTime;
  30 +
  31 + private String cvnEffectiveStartTime;
  32 +
  33 + private String cvnEffectiveEndTime;
  34 +
  35 + private int isDefault;
  36 +
  37 + public String getPersonId() {
  38 + return personId;
  39 + }
  40 +
  41 + public void setPersonId(String personId) {
  42 + this.personId = personId;
  43 + }
  44 +
  45 + public String getAccount() {
  46 + return account;
  47 + }
  48 +
  49 + public void setAccount(String account) {
  50 + this.account = account;
  51 + }
  52 +
  53 + public String getPersonName() {
  54 + return personName;
  55 + }
  56 +
  57 + public void setPersonName(String personName) {
  58 + this.personName = personName;
  59 + }
  60 +
  61 + public String getOrgId() {
  62 + return orgId;
  63 + }
  64 +
  65 + public void setOrgId(String orgId) {
  66 + this.orgId = orgId;
  67 + }
  68 +
  69 + public String getOrgName() {
  70 + return orgName;
  71 + }
  72 +
  73 + public void setOrgName(String orgName) {
  74 + this.orgName = orgName;
  75 + }
  76 +
  77 + public int getIsPassModi() {
  78 + return isPassModi;
  79 + }
  80 +
  81 + public void setIsPassModi(int isPassModi) {
  82 + this.isPassModi = isPassModi;
  83 + }
  84 +
  85 + public int getPassOverdue() {
  86 + return passOverdue;
  87 + }
  88 +
  89 + public void setPassOverdue(int passOverdue) {
  90 + this.passOverdue = passOverdue;
  91 + }
  92 +
  93 + public String getCvnPassModiTime() {
  94 + return cvnPassModiTime;
  95 + }
  96 +
  97 + public void setCvnPassModiTime(String cvnPassModiTime) {
  98 + this.cvnPassModiTime = cvnPassModiTime;
  99 + }
  100 +
  101 + public String getCvnCreateTime() {
  102 + return cvnCreateTime;
  103 + }
  104 +
  105 + public void setCvnCreateTime(String cvnCreateTime) {
  106 + this.cvnCreateTime = cvnCreateTime;
  107 + }
  108 +
  109 + public String getCvnModiTime() {
  110 + return cvnModiTime;
  111 + }
  112 +
  113 + public void setCvnModiTime(String cvnModiTime) {
  114 + this.cvnModiTime = cvnModiTime;
  115 + }
  116 +
  117 + public String getCvnEffectiveStartTime() {
  118 + return cvnEffectiveStartTime;
  119 + }
  120 +
  121 + public void setCvnEffectiveStartTime(String cvnEffectiveStartTime) {
  122 + this.cvnEffectiveStartTime = cvnEffectiveStartTime;
  123 + }
  124 +
  125 + public String getCvnEffectiveEndTime() {
  126 + return cvnEffectiveEndTime;
  127 + }
  128 +
  129 + public void setCvnEffectiveEndTime(String cvnEffectiveEndTime) {
  130 + this.cvnEffectiveEndTime = cvnEffectiveEndTime;
  131 + }
  132 +
  133 + public int getIsDefault() {
  134 + return isDefault;
  135 + }
  136 +
  137 + public void setIsDefault(int isDefault) {
  138 + this.isDefault = isDefault;
  139 + }
  140 +
  141 + @Override
  142 + public String toString() {
  143 + return "Account [personId=" + personId + ", account=" + account + ", personName=" + personName + ", orgId=" + orgId + ", orgName=" + orgName
  144 + + ", isPassModi=" + isPassModi + ", passOverdue=" + passOverdue + ", cvnPassModiTime=" + cvnPassModiTime + ", cvnCreateTime="
  145 + + cvnCreateTime + ", cvnModiTime=" + cvnModiTime + ", cvnEffectiveStartTime=" + cvnEffectiveStartTime + ", cvnEffectiveEndTime="
  146 + + cvnEffectiveEndTime + ", isDefault=" + isDefault + "]";
  147 + }
  148 +}
... ...
titan-web/src/main/java/com/dili/titan/common/HttpRequester.java 0 → 100644
  1 +package com.dili.titan.common;
  2 +
  3 +import java.io.BufferedReader;
  4 +import java.io.IOException;
  5 +import java.io.InputStream;
  6 +import java.io.InputStreamReader;
  7 +import java.net.HttpURLConnection;
  8 +import java.net.URL;
  9 +import java.util.Map;
  10 +import java.util.Vector;
  11 +
  12 +/**
  13 + * HTTP请求对象
  14 + *
  15 + * @author dev-center
  16 + * @since 2014-05-10
  17 + */
  18 +//TODO 我觉得是有用的,但没用
  19 +@Deprecated
  20 +public class HttpRequester {
  21 + private String defaultContentEncoding;
  22 +
  23 + public HttpRequester() {
  24 + this.defaultContentEncoding = "UTF-8";
  25 + }
  26 +
  27 + /**
  28 + * 发送GET请求
  29 + *
  30 + * @param urlString
  31 + * URL地址
  32 + * @return 响应对象
  33 + * @throws IOException
  34 + */
  35 + public HttpResponse sendGet(String urlString) throws IOException {
  36 + return this.send(urlString, "GET", null, null);
  37 + }
  38 +
  39 + /**
  40 + * 发送GET请求
  41 + *
  42 + * @param urlString
  43 + * URL地址
  44 + * @param params
  45 + * 参数集合
  46 + * @return 响应对象
  47 + * @throws IOException
  48 + */
  49 + public HttpResponse sendGet(String urlString, Map<String, String> params) throws IOException {
  50 + return this.send(urlString, "GET", params, null);
  51 + }
  52 +
  53 + /**
  54 + * 发送GET请求
  55 + *
  56 + * @param urlString
  57 + * URL地址
  58 + * @param params
  59 + * 参数集合
  60 + * @param propertys
  61 + * 请求属性
  62 + * @return 响应对象
  63 + * @throws IOException
  64 + */
  65 + public HttpResponse sendGet(String urlString, Map<String, String> params, Map<String, String> propertys) throws IOException {
  66 + return this.send(urlString, "GET", params, propertys);
  67 + }
  68 +
  69 + /**
  70 + * 发送POST请求
  71 + *
  72 + * @param urlString
  73 + * URL地址
  74 + * @return 响应对象
  75 + * @throws IOException
  76 + */
  77 + public HttpResponse sendPost(String urlString) throws IOException {
  78 + return this.send(urlString, "POST", null, null);
  79 + }
  80 +
  81 + /**
  82 + * 发送POST请求
  83 + *
  84 + * @param urlString
  85 + * URL地址
  86 + * @param params
  87 + * 参数集合
  88 + * @return 响应对象
  89 + * @throws IOException
  90 + */
  91 + public HttpResponse sendPost(String urlString, Map<String, String> params) throws IOException {
  92 + return this.send(urlString, "POST", params, null);
  93 + }
  94 +
  95 + /**
  96 + * 发送POST请求
  97 + *
  98 + * @param urlString
  99 + * URL地址
  100 + * @param params
  101 + * 参数集合
  102 + * @param propertys
  103 + * 请求属性
  104 + * @return 响应对象
  105 + * @throws IOException
  106 + */
  107 + public HttpResponse sendPost(String urlString, Map<String, String> params, Map<String, String> propertys) throws IOException {
  108 + return this.send(urlString, "POST", params, propertys);
  109 + }
  110 +
  111 + /**
  112 + * 发送HTTP请求
  113 + *
  114 + * @param urlString
  115 + * @return 响映对象
  116 + * @throws IOException
  117 + */
  118 + private HttpResponse send(String urlString, String method, Map<String, String> parameters, Map<String, String> propertys) throws IOException {
  119 + HttpURLConnection urlConnection = null;
  120 +
  121 + if ("GET".equalsIgnoreCase(method) && parameters != null) {
  122 + StringBuffer param = new StringBuffer();
  123 + int i = 0;
  124 + for (Map.Entry<String, String> entry : parameters.entrySet()) {
  125 + if (i == 0)
  126 + param.append("?");
  127 + else
  128 + param.append("&");
  129 + param.append(entry.getKey()).append("=").append(entry.getValue());
  130 + i++;
  131 + }
  132 + urlString += param;
  133 + }
  134 + URL url = new URL(urlString);
  135 + urlConnection = (HttpURLConnection) url.openConnection();
  136 +
  137 + urlConnection.setRequestMethod(method);
  138 + urlConnection.setDoOutput(true);
  139 + urlConnection.setDoInput(true);
  140 + urlConnection.setUseCaches(false);
  141 +
  142 + if (propertys != null)
  143 + for (Map.Entry<String,String> entry : propertys.entrySet()) {
  144 + urlConnection.addRequestProperty(entry.getKey(), entry.getValue());
  145 + }
  146 +
  147 + if ("POST".equalsIgnoreCase(method) && parameters != null) {
  148 + StringBuffer param = new StringBuffer();
  149 + for (Map.Entry<String,String> entry : parameters.entrySet()) {
  150 + param.append("&");
  151 + param.append(entry.getKey()).append("=").append(entry.getValue());
  152 + }
  153 + urlConnection.getOutputStream().write(param.toString().getBytes(this.defaultContentEncoding));
  154 + urlConnection.getOutputStream().flush();
  155 + urlConnection.getOutputStream().close();
  156 + }
  157 +
  158 + return this.makeContent(urlString, urlConnection);
  159 + }
  160 +
  161 + /**
  162 + * 得到响应对象
  163 + *
  164 + * @param urlConnection
  165 + * @return 响应对象
  166 + * @throws IOException
  167 + */
  168 + private HttpResponse makeContent(String urlString, HttpURLConnection urlConnection) throws IOException {
  169 + HttpResponse httpResponser = new HttpResponse();
  170 + try {
  171 + InputStream in = urlConnection.getInputStream();
  172 + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in,defaultContentEncoding));
  173 + httpResponser.contentCollection = new Vector<String>();
  174 + StringBuffer temp = new StringBuffer();
  175 + String line = bufferedReader.readLine();
  176 + while (line != null) {
  177 + httpResponser.contentCollection.add(line);
  178 + temp.append(line).append("\r\n");
  179 + line = bufferedReader.readLine();
  180 + }
  181 + bufferedReader.close();
  182 +
  183 + String ecod = urlConnection.getContentEncoding();
  184 + if (ecod == null)
  185 + ecod = this.defaultContentEncoding;
  186 +
  187 + httpResponser.urlString = urlString;
  188 +
  189 + httpResponser.defaultPort = urlConnection.getURL().getDefaultPort();
  190 + httpResponser.file = urlConnection.getURL().getFile();
  191 + httpResponser.host = urlConnection.getURL().getHost();
  192 + httpResponser.path = urlConnection.getURL().getPath();
  193 + httpResponser.port = urlConnection.getURL().getPort();
  194 + httpResponser.protocol = urlConnection.getURL().getProtocol();
  195 + httpResponser.query = urlConnection.getURL().getQuery();
  196 + httpResponser.ref = urlConnection.getURL().getRef();
  197 + httpResponser.userInfo = urlConnection.getURL().getUserInfo();
  198 +
  199 + httpResponser.content = new String(temp.toString().getBytes(ecod), ecod);
  200 + httpResponser.contentEncoding = ecod;
  201 + httpResponser.code = urlConnection.getResponseCode();
  202 + httpResponser.message = urlConnection.getResponseMessage();
  203 + httpResponser.contentType = urlConnection.getContentType();
  204 + httpResponser.method = urlConnection.getRequestMethod();
  205 + httpResponser.connectTimeout = urlConnection.getConnectTimeout();
  206 + httpResponser.readTimeout = urlConnection.getReadTimeout();
  207 +
  208 + return httpResponser;
  209 + } catch (IOException e) {
  210 + throw e;
  211 + } finally {
  212 + if (urlConnection != null)
  213 + urlConnection.disconnect();
  214 + }
  215 + }
  216 +
  217 + /**
  218 + * 默认的响应字符集
  219 + */
  220 + public String getDefaultContentEncoding() {
  221 + return this.defaultContentEncoding;
  222 + }
  223 +
  224 + /**
  225 + * 设置默认的响应字符集
  226 + */
  227 + public void setDefaultContentEncoding(String defaultContentEncoding) {
  228 + this.defaultContentEncoding = defaultContentEncoding;
  229 + }
  230 +}
0 231 \ No newline at end of file
... ...
titan-web/src/main/java/com/dili/titan/common/HttpResponse.java 0 → 100644
  1 +package com.dili.titan.common;
  2 +
  3 +import java.util.Vector;
  4 +
  5 +/**
  6 + *
  7 + *
  8 + * @author dev-center
  9 + * @since 2014-05-10
  10 + */
  11 +public class HttpResponse {
  12 +
  13 + String urlString;
  14 +
  15 + int defaultPort;
  16 +
  17 + String file;
  18 +
  19 + String host;
  20 +
  21 + String path;
  22 +
  23 + int port;
  24 +
  25 + String protocol;
  26 +
  27 + String query;
  28 +
  29 + String ref;
  30 +
  31 + String userInfo;
  32 +
  33 + String contentEncoding;
  34 +
  35 + String content;
  36 +
  37 + String contentType;
  38 +
  39 + int code;
  40 +
  41 + String message;
  42 +
  43 + String method;
  44 +
  45 + int connectTimeout;
  46 +
  47 + int readTimeout;
  48 +
  49 + Vector<String> contentCollection;
  50 +
  51 + public String getContent() {
  52 + return content;
  53 + }
  54 +
  55 + public String getContentType() {
  56 + return contentType;
  57 + }
  58 +
  59 + public int getCode() {
  60 + return code;
  61 + }
  62 +
  63 + public String getMessage() {
  64 + return message;
  65 + }
  66 +
  67 + public Vector<String> getContentCollection() {
  68 + return contentCollection;
  69 + }
  70 +
  71 + public String getContentEncoding() {
  72 + return contentEncoding;
  73 + }
  74 +
  75 + public String getMethod() {
  76 + return method;
  77 + }
  78 +
  79 + public int getConnectTimeout() {
  80 + return connectTimeout;
  81 + }
  82 +
  83 + public int getReadTimeout() {
  84 + return readTimeout;
  85 + }
  86 +
  87 + public String getUrlString() {
  88 + return urlString;
  89 + }
  90 +
  91 + public int getDefaultPort() {
  92 + return defaultPort;
  93 + }
  94 +
  95 + public String getFile() {
  96 + return file;
  97 + }
  98 +
  99 + public String getHost() {
  100 + return host;
  101 + }
  102 +
  103 + public String getPath() {
  104 + return path;
  105 + }
  106 +
  107 + public int getPort() {
  108 + return port;
  109 + }
  110 +
  111 + public String getProtocol() {
  112 + return protocol;
  113 + }
  114 +
  115 + public String getQuery() {
  116 + return query;
  117 + }
  118 +
  119 + public String getRef() {
  120 + return ref;
  121 + }
  122 +
  123 + public String getUserInfo() {
  124 + return userInfo;
  125 + }
  126 +
  127 +}
0 128 \ No newline at end of file
... ...
titan-web/src/main/java/com/dili/titan/common/ProductStatus.java 0 → 100644
  1 +package com.dili.titan.common;
  2 +
  3 +/**
  4 + * 商品状态常量类
  5 + */
  6 +public class ProductStatus {
  7 +
  8 + /**
  9 + * 第三方销售
  10 + */
  11 + public static final String SALE_TYPE_POP = "30";
  12 +
  13 + /**
  14 + * 第三方商品
  15 + */
  16 + public static final int PRODUCT_POP = 1;
  17 +
  18 + /**
  19 + * 商品预览状态
  20 + */
  21 + public static final int PRODUCT_PREVIEW = -2;
  22 +
  23 + /**
  24 + * 商品删除状态
  25 + */
  26 + public static final int PRODUCT_DELETED = -1;
  27 +
  28 + /**
  29 + * 新建待审核商品
  30 + */
  31 + public static final int PRODUCT_NEW = 1;
  32 +
  33 + /**
  34 + * 审核失败商品
  35 + */
  36 + public static final int PRODUCT_DENIED = 2;
  37 +
  38 + /**
  39 + * 在架商品,在售商品
  40 + */
  41 + public static final int PRODUCT_ONSALE = 3;
  42 +
  43 + /**
  44 + * 在仓库中的商品,审核后直接放入仓库的商品
  45 + */
  46 + public static final int PRODUCT_IN_WAREHOUSE = 4;
  47 + /**
  48 + * 等待上架的商品
  49 + */
  50 + public static final int PRODUCT_WAITING_ONSALE = 5;
  51 + /**
  52 + * 过期下架的商品
  53 + */
  54 + public static final int PRODUCT_OVERDUE_DROPS = 6;
  55 + /**
  56 + * 手动下架
  57 + */
  58 + public static final int PRODUCT_MANUALLY_DROPS = 7;
  59 +
  60 + /**
  61 + * 放入仓库
  62 + */
  63 + public static final int PRODUCT_PUBLISH_WAREHOUSE = 1;
  64 + /**
  65 + * 立即上架
  66 + */
  67 + public static final int PRODUCT_PUBLISH_IMMEDIATELY = 2;
  68 + /**
  69 + * 指定时间上架
  70 + */
  71 + public static final int PRODUCT_PUBLISH_SPECIFY_TIME = 3;
  72 +}
... ...
titan-web/src/main/java/com/dili/titan/common/datasource/DataSourceAspect.java 0 → 100644
  1 +package com.dili.titan.common.datasource;
  2 +
  3 +import org.aspectj.lang.ProceedingJoinPoint;
  4 +import org.aspectj.lang.reflect.MethodSignature;
  5 +import org.slf4j.Logger;
  6 +import org.slf4j.LoggerFactory;
  7 +import org.springframework.transaction.annotation.Transactional;
  8 +
  9 +import java.lang.reflect.Method;
  10 +
  11 +/**
  12 + * <p>Title: 〈标题〉</p>
  13 + * <p>Description: 〈描述〉</p>
  14 + * <B>Copyright</B> Copyright (c) 2014 www.diligrp.com All rights reserved. <br />
  15 + * 本软件源代码版权归地利集团,未经许可不得任意复制与传播.<br />
  16 + * <B>Company</B> 地利集团
  17 + * <p>CreateTime:2015/4/20</p>
  18 + *
  19 + * @author gongsz
  20 + */
  21 +public class DataSourceAspect {
  22 +
  23 + private Integer mastersCount = 0 ;
  24 + private static final Logger log = LoggerFactory.getLogger(DataSourceAspect.class);
  25 + private static final ThreadLocal<Boolean> CONTEX_THOLDER = new ThreadLocal<Boolean>(){
  26 + @Override
  27 + protected Boolean initialValue() {
  28 + return false;
  29 + }
  30 + };
  31 +
  32 + private static final ThreadLocal<Method> CONTEX = new ThreadLocal<Method>();
  33 +
  34 + public Object around(ProceedingJoinPoint pjp)throws Throwable{
  35 + Method method = ((MethodSignature) pjp.getSignature()).getMethod();
  36 + if (CONTEX.get() == null) {
  37 + log.debug("before:" + method.getName());
  38 + CONTEX.set(method);
  39 + }
  40 + if (!CONTEX_THOLDER.get()) {
  41 + if (method != null && method.isAnnotationPresent(Transactional.class)) {
  42 + String lookUpKey = DataSourceSwitcher.WRITE + (DataSourceSwitcher.RANDOM.nextInt(mastersCount) + 1);
  43 + log.debug("Aspect获取数据源" + lookUpKey);
  44 + DataSourceSwitcher.setDataSource(lookUpKey);
  45 + CONTEX_THOLDER.set(true);
  46 + } else {
  47 + DataSourceSwitcher.setDataSource(DataSourceSwitcher.READ);
  48 + }
  49 + }
  50 + Object val = pjp.proceed();
  51 + if (CONTEX.get() == method) {
  52 + CONTEX.set(null);
  53 + CONTEX_THOLDER.set(false);
  54 + log.debug("after:" + method.getName());
  55 + }
  56 + return val;
  57 + }
  58 +
  59 + public Integer getMastersCount() {
  60 + return mastersCount;
  61 + }
  62 +
  63 + public void setMastersCount(Integer mastersCount) {
  64 + this.mastersCount = mastersCount;
  65 + }
  66 +}
... ...
titan-web/src/main/java/com/dili/titan/common/datasource/DataSourceSwitcher.java 0 → 100644
  1 +package com.dili.titan.common.datasource;
  2 +
  3 +import org.springframework.util.Assert;
  4 +
  5 +import java.util.Random;
  6 +
  7 +/**
  8 + * 数据源切换.
  9 + * @author zhoumin@360buy.com
  10 + * 2011-9-13 下午6:11:40
  11 + */
  12 +public class DataSourceSwitcher {
  13 +
  14 + // 读库数量
  15 + public static final String READ = "slave";
  16 + public static final String WRITE = "master";
  17 +
  18 + public static final Random RANDOM = new Random(17);
  19 +
  20 + private static final ThreadLocal<String> CONTEX_THOLDER = new ThreadLocal<String>();
  21 +
  22 + public static void setDataSource(String dataSource) {
  23 + Assert.notNull(dataSource, "dataSource cannot be null");
  24 + CONTEX_THOLDER.set(dataSource);
  25 + }
  26 +
  27 + public static String getDataSource() {
  28 + return CONTEX_THOLDER.get();
  29 + }
  30 +
  31 +}
... ...
titan-web/src/main/java/com/dili/titan/common/datasource/DynamicDataSource.java 0 → 100644
  1 +package com.dili.titan.common.datasource;
  2 +
  3 +import org.apache.commons.lang.StringUtils;
  4 +import org.slf4j.Logger;
  5 +import org.slf4j.LoggerFactory;
  6 +import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
  7 +
  8 +import javax.annotation.PostConstruct;
  9 +import javax.sql.DataSource;
  10 +import java.util.HashMap;
  11 +import java.util.Map;
  12 +
  13 +/**
  14 + * 动态数据源.
  15 + * @author zhoumin@360buy.com
  16 + * 2011-9-13 下午6:12:18
  17 + */
  18 +public class DynamicDataSource extends AbstractRoutingDataSource {
  19 + private Map<String, DataSource> masterDataSources;
  20 + private Map<String, DataSource> slaveDataSources;
  21 + private static final Logger log = LoggerFactory.getLogger(DynamicDataSource.class);
  22 + @PostConstruct
  23 + public void setTargetDataSources() {
  24 + Map<Object, Object> allDataSource = new HashMap<Object, Object>();
  25 + if (masterDataSources != null) {
  26 + allDataSource.putAll(masterDataSources);
  27 + }
  28 + if (masterDataSources != null) {
  29 + allDataSource.putAll(slaveDataSources);
  30 + }
  31 + super.setTargetDataSources(allDataSource);
  32 + }
  33 +
  34 + @Override
  35 + protected Object determineCurrentLookupKey() {
  36 + String lookupKey = DataSourceSwitcher.getDataSource();
  37 + if(StringUtils.isNotEmpty(lookupKey) && lookupKey.indexOf(DataSourceSwitcher.READ)>=0){
  38 + lookupKey = DataSourceSwitcher.READ+(DataSourceSwitcher.RANDOM.nextInt(slaveDataSources.size()) + 1);
  39 + }
  40 + log.debug("获取数据源" + lookupKey);
  41 + return lookupKey;
  42 + }
  43 +
  44 + public Map<String, DataSource> getMasterDataSources() {
  45 + return masterDataSources;
  46 + }
  47 +
  48 + public void setMasterDataSources(Map<String, DataSource> masterDataSources) {
  49 + this.masterDataSources = masterDataSources;
  50 + }
  51 +
  52 + public Map<String, DataSource> getSlaveDataSources() {
  53 + return slaveDataSources;
  54 + }
  55 +
  56 + public void setSlaveDataSources(Map<String, DataSource> slaveDataSources) {
  57 + this.slaveDataSources = slaveDataSources;
  58 + }
  59 +}
... ...
titan-web/src/main/java/com/dili/titan/common/datasource/DynamicSource.java 0 → 100644
  1 +package com.dili.titan.common.datasource;
  2 +
  3 +import java.lang.annotation.*;
  4 +
  5 +/**
  6 + * <p>Title: 〈标题〉</p>
  7 + * <p>Description: 〈描述〉</p>
  8 + * <B>Copyright</B> Copyright (c) 2014 www.diligrp.com All rights reserved. <br />
  9 + * 本软件源代码版权归地利集团,未经许可不得任意复制与传播.<br />
  10 + * <B>Company</B> 地利集团
  11 + * <p>CreateTime:2015/4/20</p>
  12 + *
  13 + * @author gongsz
  14 + */
  15 +@Target({ ElementType.TYPE }) @Retention(RetentionPolicy.RUNTIME) @Inherited
  16 +public @interface DynamicSource {
  17 +}
0 18 \ No newline at end of file
... ...
titan-web/src/main/java/com/dili/titan/common/enums/ChooseType.java 0 → 100644
  1 +package com.dili.titan.common.enums;
  2 +
  3 +import java.util.ArrayList;
  4 +import java.util.List;
  5 +
  6 +/**
  7 + * 存是,否的值。0非1是
  8 + */
  9 +@Deprecated
  10 +public enum ChooseType {
  11 + /**
  12 + * 1-是
  13 + */
  14 + Yes("是", 1),
  15 + /**
  16 + * 0-否
  17 + */
  18 + No("否", 0);
  19 +
  20 + private String name;
  21 + private int index;
  22 +
  23 + // 构造方法
  24 + ChooseType(String name, int index) {
  25 + this.name = name;
  26 + this.index = index;
  27 + }
  28 +
  29 + // 普通方法
  30 + public static String getName(int index) {
  31 + for (ChooseType c : ChooseType.values()) {
  32 + if (c.getIndex() == index) {
  33 + return c.name;
  34 + }
  35 + }
  36 + return null;
  37 + }
  38 +
  39 + public static ChooseType getTraceType(int index) {
  40 + for (ChooseType c : ChooseType.values()) {
  41 + if (c.getIndex() == index) {
  42 + return c;
  43 + }
  44 + }
  45 + return null;
  46 + }
  47 +
  48 + public static List<ChooseType> getEnumItemList() {
  49 + ChooseType[] itemList = ChooseType.values();
  50 + List<ChooseType> filteredItemList = new ArrayList<ChooseType>();
  51 + for (ChooseType status : itemList) {
  52 + filteredItemList.add(status);
  53 + }
  54 + return filteredItemList;
  55 + }
  56 +
  57 + // get set 方法
  58 + public String getName() {
  59 + return name;
  60 + }
  61 +
  62 + public int getIndex() {
  63 + return index;
  64 + }
  65 +
  66 +}
... ...
titan-web/src/main/java/com/dili/titan/common/enums/IndexCategoryStatusType.java 0 → 100644
  1 +package com.dili.titan.common.enums;
  2 +
  3 +import java.util.ArrayList;
  4 +import java.util.List;
  5 +
  6 +/**
  7 + * 类目状态类型。1 正常,-1 删除。
  8 + */
  9 +public enum IndexCategoryStatusType {
  10 + /**
  11 + * 1 正常
  12 + */
  13 + NORMAL("正常", 1),
  14 + /**
  15 + * -1 删除
  16 + */
  17 + DELETE("删除", -1);
  18 +
  19 + private String name;
  20 + private int index;
  21 +
  22 + // 构造方法
  23 + IndexCategoryStatusType(String name, int index) {
  24 + this.name = name;
  25 + this.index = index;
  26 + }
  27 +
  28 + // 普通方法
  29 + public static String getName(int index) {
  30 + for (IndexCategoryStatusType c : IndexCategoryStatusType.values()) {
  31 + if (c.getIndex() == index) {
  32 + return c.name;
  33 + }
  34 + }
  35 + return null;
  36 + }
  37 +
  38 + public static IndexCategoryStatusType getTraceType(int index) {
  39 + for (IndexCategoryStatusType c : IndexCategoryStatusType.values()) {
  40 + if (c.getIndex() == index) {
  41 + return c;
  42 + }
  43 + }
  44 + return null;
  45 + }
  46 +
  47 + public static List<IndexCategoryStatusType> getEnumItemList() {
  48 + IndexCategoryStatusType[] itemList = IndexCategoryStatusType.values();
  49 + List<IndexCategoryStatusType> filteredItemList = new ArrayList<IndexCategoryStatusType>();
  50 + for (IndexCategoryStatusType status : itemList) {
  51 + filteredItemList.add(status);
  52 + }
  53 + return filteredItemList;
  54 + }
  55 +
  56 + // get set 方法
  57 + public String getName() {
  58 + return name;
  59 + }
  60 +
  61 + public int getIndex() {
  62 + return index;
  63 + }
  64 +
  65 +}
... ...
titan-web/src/main/java/com/dili/titan/common/enums/PurchaseStatusType.java 0 → 100644
  1 +package com.dili.titan.common.enums;
  2 +
  3 +import java.util.ArrayList;
  4 +import java.util.List;
  5 +
  6 +/**
  7 + * 采购状态:1-进行中,2-已过期,3-已关闭,4-审核失败 5-待审核
  8 + */
  9 +@Deprecated
  10 +public enum PurchaseStatusType {
  11 + /**
  12 + * 1进行中
  13 + */
  14 + ING("进行中", 1),
  15 + /**
  16 + * 2已过期
  17 + */
  18 + EXPIRED("已过期", 2),
  19 + /**
  20 + * 3已关闭
  21 + */
  22 + CLOSED("已关闭", 3),
  23 + /**
  24 + * 4审核失败
  25 + */
  26 + FAIL("审核失败", 4),
  27 + /**
  28 + * 5待审核
  29 + */
  30 + WAIT("待审核", 5);
  31 +
  32 + private String name;
  33 + private int index;
  34 +
  35 + // 构造方法
  36 + PurchaseStatusType(String name, int index) {
  37 + this.name = name;
  38 + this.index = index;
  39 + }
  40 +
  41 + // 普通方法
  42 + public static String getName(int index) {
  43 + for (PurchaseStatusType c : PurchaseStatusType.values()) {
  44 + if (c.getIndex() == index) {
  45 + return c.name;
  46 + }
  47 + }
  48 + return null;
  49 + }
  50 +
  51 + public static PurchaseStatusType getTraceType(int index) {
  52 + for (PurchaseStatusType c : PurchaseStatusType.values()) {
  53 + if (c.getIndex() == index) {
  54 + return c;
  55 + }
  56 + }
  57 + return null;
  58 + }
  59 +
  60 + public static List<PurchaseStatusType> getEnumItemList() {
  61 + PurchaseStatusType[] itemList = PurchaseStatusType.values();
  62 + List<PurchaseStatusType> filteredItemList = new ArrayList<PurchaseStatusType>();
  63 + for (PurchaseStatusType status : itemList) {
  64 + filteredItemList.add(status);
  65 + }
  66 + return filteredItemList;
  67 + }
  68 +
  69 + // get set 方法
  70 + public String getName() {
  71 + return name;
  72 + }
  73 +
  74 + public int getIndex() {
  75 + return index;
  76 + }
  77 +
  78 +}
... ...
titan-web/src/main/java/com/dili/titan/common/enums/QuotationType.java 0 → 100644
  1 +package com.dili.titan.common.enums;
  2 +
  3 +import java.util.ArrayList;
  4 +import java.util.List;
  5 +
  6 +/**
  7 + * 报价类型
  8 + */
  9 +@Deprecated
  10 +public enum QuotationType {
  11 + /**
  12 + * 0未报价
  13 + */
  14 + WAIT("未报价", 0),
  15 + /**
  16 + * 1已报价
  17 + */
  18 + QUOTATION("已报价", 1),
  19 + /**
  20 + * 2地利已报价
  21 + */
  22 + DILI("地利已报价", 2);
  23 +
  24 + private String name;
  25 + private int index;
  26 +
  27 + // 构造方法
  28 + QuotationType(String name, int index) {
  29 + this.name = name;
  30 + this.index = index;
  31 + }
  32 +
  33 + // 普通方法
  34 + public static String getName(int index) {
  35 + for (QuotationType c : QuotationType.values()) {
  36 + if (c.getIndex() == index) {
  37 + return c.name;
  38 + }
  39 + }
  40 + return null;
  41 + }
  42 +
  43 + public static QuotationType getTraceType(int index) {
  44 + for (QuotationType c : QuotationType.values()) {
  45 + if (c.getIndex() == index) {
  46 + return c;
  47 + }
  48 + }
  49 + return null;
  50 + }
  51 +
  52 + public static List<QuotationType> getEnumItemList() {
  53 + QuotationType[] itemList = QuotationType.values();
  54 + List<QuotationType> filteredItemList = new ArrayList<QuotationType>();
  55 + for (QuotationType status : itemList) {
  56 + filteredItemList.add(status);
  57 + }
  58 + return filteredItemList;
  59 + }
  60 +
  61 + // get set 方法
  62 + public String getName() {
  63 + return name;
  64 + }
  65 +
  66 + public int getIndex() {
  67 + return index;
  68 + }
  69 +}
... ...
titan-web/src/main/java/com/dili/titan/common/enums/SourceType.java 0 → 100644
  1 +package com.dili.titan.common.enums;
  2 +
  3 +import java.util.ArrayList;
  4 +import java.util.List;
  5 +
  6 +/**
  7 + * 记录和区分日志的来源
  8 + */
  9 +public enum SourceType {
  10 + /**
  11 + * 1-PC端
  12 + */
  13 + Pc("PC端", 1),
  14 + /**
  15 + * 2-移动端
  16 + */
  17 + Mobile("移动端", 2),
  18 + /**
  19 + * 3-Titan_Web
  20 + */
  21 + Titan_Web("Titan_Web", 3);
  22 +
  23 + private String name;
  24 + private int index;
  25 +
  26 + // 构造方法
  27 + SourceType(String name, int index) {
  28 + this.name = name;
  29 + this.index = index;
  30 + }
  31 +
  32 + // 普通方法
  33 + public static String getName(int index) {
  34 + for (SourceType c : SourceType.values()) {
  35 + if (c.getIndex() == index) {
  36 + return c.name;
  37 + }
  38 + }
  39 + return null;
  40 + }
  41 +
  42 + public static SourceType getTraceType(int index) {
  43 + for (SourceType c : SourceType.values()) {
  44 + if (c.getIndex() == index) {
  45 + return c;
  46 + }
  47 + }
  48 + return null;
  49 + }
  50 +
  51 + public static List<SourceType> getEnumItemList() {
  52 + SourceType[] itemList = SourceType.values();
  53 + List<SourceType> filteredItemList = new ArrayList<SourceType>();
  54 + for (SourceType status : itemList) {
  55 + filteredItemList.add(status);
  56 + }
  57 + return filteredItemList;
  58 + }
  59 +
  60 + // get set 方法
  61 + public String getName() {
  62 + return name;
  63 + }
  64 +
  65 + public int getIndex() {
  66 + return index;
  67 + }
  68 +}
... ...
titan-web/src/main/java/com/dili/titan/common/enums/SupplyStatusType.java 0 → 100644
  1 +package com.dili.titan.common.enums;
  2 +
  3 +import java.util.ArrayList;
  4 +import java.util.List;
  5 +
  6 +/**
  7 + * 供应状态类型。1-进行中,2-已过期,3-已关闭,4-审核失败
  8 + */
  9 +@Deprecated
  10 +public enum SupplyStatusType {
  11 + /**
  12 + * 1进行中
  13 + */
  14 + ING("进行中", 1),
  15 + /**
  16 + * 2已过期
  17 + */
  18 + EXPIRED("已过期", 2),
  19 + /**
  20 + * 3已关闭
  21 + */
  22 + CLOSED("已关闭", 3);
  23 +
  24 + private String name;
  25 + private int index;
  26 +
  27 + // 构造方法
  28 + SupplyStatusType(String name, int index) {
  29 + this.name = name;
  30 + this.index = index;
  31 + }
  32 +
  33 + // 普通方法
  34 + public static String getName(int index) {
  35 + for (SupplyStatusType c : SupplyStatusType.values()) {
  36 + if (c.getIndex() == index) {
  37 + return c.name;
  38 + }
  39 + }
  40 + return null;
  41 + }
  42 +
  43 + public static SupplyStatusType getTraceType(int index) {
  44 + for (SupplyStatusType c : SupplyStatusType.values()) {
  45 + if (c.getIndex() == index) {
  46 + return c;
  47 + }
  48 + }
  49 + return null;
  50 + }
  51 +
  52 + public static List<SupplyStatusType> getEnumItemList() {
  53 + SupplyStatusType[] itemList = SupplyStatusType.values();
  54 + List<SupplyStatusType> filteredItemList = new ArrayList<SupplyStatusType>();
  55 + for (SupplyStatusType status : itemList) {
  56 + filteredItemList.add(status);
  57 + }
  58 + return filteredItemList;
  59 + }
  60 +
  61 + // get set 方法
  62 + public String getName() {
  63 + return name;
  64 + }
  65 +
  66 + public int getIndex() {
  67 + return index;
  68 + }
  69 +}
... ...
titan-web/src/main/java/com/dili/titan/common/enums/SupplyType.java 0 → 100644
  1 +package com.dili.titan.common.enums;
  2 +
  3 +import java.util.ArrayList;
  4 +import java.util.List;
  5 +
  6 +/**
  7 + * 供应类型。1自营,2第三方
  8 + */
  9 +@Deprecated
  10 +public enum SupplyType {
  11 + /**
  12 + * 1自营
  13 + */
  14 + Dili("自营", 1),
  15 + /**
  16 + * 2第三方
  17 + */
  18 + Third("第三方", 2);
  19 +
  20 + private String name;
  21 + private int index;
  22 +
  23 + // 构造方法
  24 + SupplyType(String name, int index) {
  25 + this.name = name;
  26 + this.index = index;
  27 + }
  28 +
  29 + // 普通方法
  30 + public static String getName(int index) {
  31 + for (SupplyType c : SupplyType.values()) {
  32 + if (c.getIndex() == index) {
  33 + return c.name;
  34 + }
  35 + }
  36 + return null;
  37 + }
  38 +
  39 + public static SupplyType getTraceType(int index) {
  40 + for (SupplyType c : SupplyType.values()) {
  41 + if (c.getIndex() == index) {
  42 + return c;
  43 + }
  44 + }
  45 + return null;
  46 + }
  47 +
  48 + public static List<SupplyType> getEnumItemList() {
  49 + SupplyType[] itemList = SupplyType.values();
  50 + List<SupplyType> filteredItemList = new ArrayList<SupplyType>();
  51 + for (SupplyType status : itemList) {
  52 + filteredItemList.add(status);
  53 + }
  54 + return filteredItemList;
  55 + }
  56 +
  57 + // get set 方法
  58 + public String getName() {
  59 + return name;
  60 + }
  61 +
  62 + public int getIndex() {
  63 + return index;
  64 + }
  65 +}
... ...
titan-web/src/main/java/com/dili/titan/common/enums/ThirdSupplyStatusType.java 0 → 100644
  1 +package com.dili.titan.common.enums;
  2 +
  3 +import java.util.ArrayList;
  4 +import java.util.List;
  5 +
  6 +/**
  7 + * 第三方供应状态。1-进行中,2-已过期,3-已关闭,4-审核失败
  8 + */
  9 +@Deprecated
  10 +public enum ThirdSupplyStatusType {
  11 + /**
  12 + * 1审核通过
  13 + */
  14 + PASSED("审核通过", 1),
  15 + /**
  16 + * 2已过期
  17 + */
  18 + EXPIRED("已过期", 2),
  19 + /**
  20 + * 3已关闭
  21 + */
  22 + CLOSED("已关闭", 3),
  23 + /**
  24 + * 4审核失败
  25 + */
  26 + FAILURE("审核失败", 4),
  27 + /**
  28 + * 5待审核
  29 + */
  30 + WAIT("待审核", 5);
  31 +
  32 + private String name;
  33 + private int index;
  34 +
  35 + // 构造方法
  36 + ThirdSupplyStatusType(String name, int index) {
  37 + this.name = name;
  38 + this.index = index;
  39 + }
  40 +
  41 + // 普通方法
  42 + public static String getName(int index) {
  43 + for (ThirdSupplyStatusType c : ThirdSupplyStatusType.values()) {
  44 + if (c.getIndex() == index) {
  45 + return c.name;
  46 + }
  47 + }
  48 + return null;
  49 + }
  50 +
  51 + public static ThirdSupplyStatusType getTraceType(int index) {
  52 + for (ThirdSupplyStatusType c : ThirdSupplyStatusType.values()) {
  53 + if (c.getIndex() == index) {
  54 + return c;
  55 + }
  56 + }
  57 + return null;
  58 + }
  59 +
  60 + public static List<ThirdSupplyStatusType> getEnumItemList() {
  61 + ThirdSupplyStatusType[] itemList = ThirdSupplyStatusType.values();
  62 + List<ThirdSupplyStatusType> filteredItemList = new ArrayList<ThirdSupplyStatusType>();
  63 + for (ThirdSupplyStatusType status : itemList) {
  64 + filteredItemList.add(status);
  65 + }
  66 + return filteredItemList;
  67 + }
  68 +
  69 + // get set 方法
  70 + public String getName() {
  71 + return name;
  72 + }
  73 +
  74 + public int getIndex() {
  75 + return index;
  76 + }
  77 +}
... ...
titan-web/src/main/java/com/dili/titan/common/exception/AppException.java 0 → 100644
  1 +/*
  2 + * Copyright (c) 2014 www.diligrp.com All rights reserved.
  3 + * 本软件源代码版权归----所有,未经许可不得任意复制与传播.
  4 + */
  5 +package com.dili.titan.common.exception;
  6 +
  7 +/**
  8 + * 自定义程序异常
  9 + */
  10 +public class AppException extends RuntimeException{
  11 + private static final long serialVersionUID = 1L;
  12 + public AppException() {
  13 + super();
  14 + }
  15 +
  16 + public AppException(String message) {
  17 + super(message);
  18 + }
  19 +
  20 + public AppException(String message, Throwable cause) {
  21 + super(message, cause);
  22 + }
  23 +
  24 + public AppException(Throwable cause) {
  25 + super(cause);
  26 + }
  27 +}
... ...
titan-web/src/main/java/com/dili/titan/common/exception/TitanError.java 0 → 100644
  1 +package com.dili.titan.common.exception;
  2 +
  3 +/**
  4 + * 商品库异常类
  5 + */
  6 +public final class TitanError extends Exception {
  7 +
  8 + private static final long serialVersionUID = 1L;
  9 + private int code;
  10 + private String result;
  11 +
  12 + public TitanError(int code, String result) {
  13 + super();
  14 + this.code = code;
  15 + this.result = result;
  16 + }
  17 +
  18 + public final static TitanError DEFAULT_ERROR = new TitanError(0, "请求失败");
  19 +
  20 + // 输入错误
  21 + public final static TitanError JSON_CONVERT_ERROR = new TitanError(10, "JSON转换失败,请检查输入参数");
  22 + public final static TitanError JSON_FORMAT_ERROR = new TitanError(11, "JSON格式错误");
  23 + public final static TitanError NULL_PARAM_ERROR = new TitanError(12, "输入参数为空");
  24 + public final static TitanError INVALID_PARAM_ERROR = new TitanError(13, "输入参数不正确");
  25 + public final static TitanError READ_BODY_ERROR = new TitanError(20, "读取请求内容失败");
  26 +
  27 + /***
  28 + * 业务错误
  29 + **/
  30 + // 库存错误
  31 + public final static TitanError LOW_STOCKS = new TitanError(30, "库存不足");
  32 + public final static TitanError DUPLICATE_DECRASE = new TitanError(31, "重复扣减库存");
  33 + public final static TitanError DUPLICATE_INCRASE = new TitanError(31, "重复增加库存");
  34 +
  35 + public int getCode() {
  36 + return code;
  37 + }
  38 +
  39 + public void setCode(int code) {
  40 + this.code = code;
  41 + }
  42 +
  43 + public String getResult() {
  44 + return result;
  45 + }
  46 +
  47 + public void setResult(String result) {
  48 + this.result = result;
  49 + }
  50 +
  51 + @Override
  52 + public String getMessage() {
  53 + return this.getResult();
  54 + }
  55 +
  56 +}
... ...
titan-web/src/main/java/com/dili/titan/common/log/LogBusinessIdUtils.java 0 → 100644
  1 +package com.dili.titan.common.log;
  2 +
  3 +import org.apache.commons.lang.StringUtils;
  4 +
  5 +import java.util.UUID;
  6 +
  7 +/**
  8 + * 用于设置线程的UUID,用于打印日志
  9 + *
  10 + * @author cdwangyong3
  11 + */
  12 +public class LogBusinessIdUtils {
  13 + private static final ThreadLocal<String> businessLocal = new ThreadLocal<String>();
  14 +
  15 + /**
  16 + * 返回当前线程对应的uuid
  17 + *
  18 + * @return
  19 + */
  20 + public static String getCurBusinessId() {
  21 + String uuid = businessLocal.get();
  22 + if (StringUtils.isEmpty(uuid)) {
  23 + uuid = UUID.randomUUID().toString().replace("-", "");
  24 + businessLocal.set(uuid);
  25 + }
  26 + return uuid;
  27 + }
  28 +
  29 +
  30 + /**
  31 + * 给当前线程重新设置
  32 + */
  33 + public static void clear() {
  34 + //TODO 这代码在哪里被调用了?
  35 + businessLocal.set(null);
  36 + }
  37 +}
  38 +
... ...
titan-web/src/main/java/com/dili/titan/common/log/LogHelper.java 0 → 100644
  1 +package com.dili.titan.common.log;
  2 +
  3 +import org.apache.commons.lang.StringUtils;
  4 +import org.apache.commons.logging.Log;
  5 +import org.apache.commons.logging.LogFactory;
  6 +
  7 +import java.io.PrintWriter;
  8 +import java.io.StringWriter;
  9 +import java.util.HashMap;
  10 +import java.util.Map;
  11 +
  12 +/**
  13 + * Describe: User: BjYangKai Date: 2011-4-21 Time: 12:00:33
  14 + */
  15 +public class LogHelper {
  16 +
  17 + /**
  18 + */
  19 + private static Map<LogTypeEnum, Log> logMap = new HashMap<LogTypeEnum, Log>();
  20 +
  21 + static {
  22 + for (LogTypeEnum ft : LogTypeEnum.values()) {
  23 + logMap.put(ft, LogFactory.getLog(ft.getKey()));
  24 + }
  25 + }
  26 +
  27 + /**
  28 + *
  29 + * @param str
  30 + * @return
  31 + */
  32 + public static String addLogbusinessId(String str) {
  33 + if (StringUtils.isEmpty(str)) {
  34 + return str;
  35 + } else {
  36 + return "业务标示ID[" + LogBusinessIdUtils.getCurBusinessId() + "],"
  37 + + str;
  38 + }
  39 + }
  40 +
  41 + /**
  42 + * 使用默认的文件记录debug信息
  43 + *
  44 + * @param str 日志信息
  45 + */
  46 + public static void debug(String str, Object... args) {
  47 + debug(LogTypeEnum.DEFAULT, str, args);
  48 + }
  49 +
  50 + /**
  51 + * 使用默认的文件记录info信息
  52 + *
  53 + * @param str 日志信息
  54 + */
  55 + public static void info(String str, Object... args) {
  56 + info(LogTypeEnum.DEFAULT, str, args);
  57 + }
  58 +
  59 + /**
  60 + * 使用默认的文件记录warn信息
  61 + *
  62 + * @param str 日志信息
  63 + */
  64 + public static void warn(String str, Object... args) {
  65 + warn(LogTypeEnum.DEFAULT, str, args);
  66 + }
  67 +
  68 + /**
  69 + * 使用默认的文件记录error信息
  70 + *
  71 + * @param str 日志信息
  72 + */
  73 + public static void error(Throwable e, String str, Object... args) {
  74 + error(LogTypeEnum.DEFAULT, e, str, args);
  75 + }
  76 +
  77 + /**
  78 + * 使用默认的文件记录fatal信息
  79 + *
  80 + * @param str 日志信息
  81 + */
  82 + public static void fatal(Throwable e, String str, Object... args) {
  83 + fatal(LogTypeEnum.DEFAULT, e, str, args);
  84 + }
  85 +
  86 + /**
  87 + * 记录运行期错误信息
  88 + *
  89 + * @param e
  90 + */
  91 + public static void execption(Throwable e) {
  92 + error(LogTypeEnum.EXCEPTION, getExceptionTrace(e));
  93 + }
  94 +
  95 + /**
  96 + * 打印错误信息
  97 + *
  98 + * @param e
  99 + * @return
  100 + */
  101 + public static String getExceptionTrace(Throwable e) {
  102 + if (e != null) {
  103 + StringWriter sw = new StringWriter();
  104 + PrintWriter pw = new PrintWriter(sw);
  105 + e.printStackTrace(pw);
  106 + return sw.toString();
  107 + } else
  108 + return null;
  109 + }
  110 +
  111 + public static Log getLog(LogTypeEnum type) {
  112 + if (logMap.get(type) == null) {
  113 + return LogFactory.getLog(LogHelper.class);
  114 + } else {
  115 + return logMap.get(type);
  116 + }
  117 + }
  118 +
  119 + /**
  120 + * 日志消息占位符形式的替换,按照传入参数依次替换"{}"
  121 + *
  122 + * @param str 带占位符的日志消息
  123 + * @param args 需要被替换的参数,除了字符串和基本类型的对象形式外,其他类型需要自己实现toString方法
  124 + * @return
  125 + */
  126 + public static <T extends Object> String replace(String str, T... args) {
  127 + if (str == null) {
  128 + return str;
  129 + }
  130 + if (args == null || args.length < 1) {
  131 + return addLogbusinessId(str.replaceAll("\\{\\}", " null"));
  132 + }
  133 + StringBuilder builder = new StringBuilder(str);
  134 + int start = builder.indexOf("{");
  135 + int end = builder.indexOf("}", start);
  136 + for (Object arg : args) {
  137 + if (start == -1) {
  138 + break;
  139 + }
  140 + if (arg == null) {
  141 + arg = "null";
  142 + }
  143 + builder.replace(start, end + 1, arg.toString());
  144 + start = start + arg.toString().length();
  145 + start = builder.indexOf("{", start);
  146 + end = builder.indexOf("}", start);
  147 + }
  148 + return addLogbusinessId(builder.toString());
  149 + }
  150 +
  151 + /**
  152 + * 记录DEBUG信息
  153 + *
  154 + * @param type 日志业务类型
  155 + * @param str
  156 + */
  157 + public static void debug(LogTypeEnum type, String str, Object... args) {
  158 + Log log = getLog(type);
  159 + if (log.isDebugEnabled()) {
  160 + String msg = replace(str, args);
  161 + log.debug(msg);
  162 + }
  163 + }
  164 +
  165 + /**
  166 + * 记录INFO信息
  167 + *
  168 + * @param type 日志业务类型
  169 + * @param str
  170 + */
  171 + public static void info(LogTypeEnum type, String str, Object... args) {
  172 + Log log = getLog(type);
  173 + if (log.isInfoEnabled()) {
  174 + String msg = replace(str, args);
  175 + log.info(msg);
  176 + }
  177 + }
  178 +
  179 + /**
  180 + * 记录warn信息
  181 + *
  182 + * @param type 日志业务类型
  183 + * @param str
  184 + */
  185 + public static void warn(LogTypeEnum type, String str, Object... args) {
  186 + Log log = getLog(type);
  187 + if (log.isWarnEnabled()) {
  188 + String msg = replace(str, args);
  189 + log.warn(msg);
  190 + }
  191 + }
  192 +
  193 + /**
  194 + * 记录error信息
  195 + *
  196 + * @param type 日志业务类型
  197 + * @param str
  198 + */
  199 + public static void error(LogTypeEnum type, String str, Object... args) {
  200 + Log log = getLog(type);
  201 + if (log.isErrorEnabled()) {
  202 + String msg = replace(str, args);
  203 + log.error(msg);
  204 + }
  205 + }
  206 +
  207 + /**
  208 + * 记录fatal信息
  209 + *
  210 + * @param type 日志业务类型
  211 + * @param str 日志信息
  212 + */
  213 + public static void fatal(LogTypeEnum type, String str, Object... args) {
  214 + Log log = getLog(type);
  215 + if (log.isFatalEnabled()) {
  216 + String msg = replace(str, args);
  217 + log.fatal(msg);
  218 + }
  219 + }
  220 +
  221 + /**
  222 + * 记录error信息
  223 + *
  224 + * @param type 日志业务类型
  225 + * @param str
  226 + */
  227 + public static void error(LogTypeEnum type, Throwable e, String str,
  228 + Object... args) {
  229 + Log log = getLog(type);
  230 + if (log.isErrorEnabled()) {
  231 + String msg = replace(str, args);
  232 + log.error(msg, e);
  233 + }
  234 + }
  235 +
  236 + /**
  237 + * 记录fatal信息
  238 + *
  239 + * @param type 日志业务类型
  240 + * @param str 日志信息
  241 + */
  242 + public static void fatal(LogTypeEnum type, Throwable e, String str,
  243 + Object... args) {
  244 + Log log = getLog(type);
  245 + if (log.isFatalEnabled()) {
  246 + String msg = replace(str, args);
  247 + log.fatal(msg, e);
  248 + }
  249 + }
  250 +
  251 + public static void main(String[] args) {
  252 + LogHelper.debug(LogTypeEnum.DEFAULT, "aaaa");
  253 + System.out.println();
  254 + }
  255 +}
... ...
titan-web/src/main/java/com/dili/titan/common/log/LogTypeEnum.java 0 → 100644
  1 +package com.dili.titan.common.log;
  2 +
  3 +import org.apache.commons.lang.StringUtils;
  4 +import org.apache.commons.logging.Log;
  5 +
  6 +/**
  7 + * 日志的业务类型,对重要的业务日志需要在这里定义类型
  8 + *
  9 + * @author dingjun
  10 + */
  11 +public enum LogTypeEnum {
  12 + DEFAULT("DEFAULT", "默认"),
  13 + ATTRIBUTE("ATTRIBUTE", "属性"),
  14 + CATEGORY("CATEGORY", "类目"),
  15 + TEMPLETE("TEMPLETE", "模板"),
  16 + SUPPLY("TITAN_SUPPLY", "供应信息"),
  17 + PURCHASE("TITAN_PURCHASE", "求购信息"),
  18 + PRODUCT_POP("PRODUCT_POP", "第三方商品"),
  19 + GQ("TITAN_GQ", "供求"),
  20 + PRODUCT_MQ("PRODUCT_MQ", "MQ消息"),
  21 + EXCEPTION("EXCEPTION", "运行错误");
  22 +
  23 + private String key;
  24 + private String value;
  25 +
  26 + LogTypeEnum() {
  27 + }
  28 +
  29 + LogTypeEnum(String key, String value) {
  30 + this.key = key;
  31 + this.value = value;
  32 + }
  33 +
  34 + public static String getValue(String key) {
  35 + for (LogTypeEnum ft : LogTypeEnum.values()) {
  36 + if (ft.getKey().equals(key)) {
  37 + return ft.getValue();
  38 + }
  39 + }
  40 + return null;
  41 + }
  42 +
  43 + public String getKey() {
  44 + return key;
  45 + }
  46 +
  47 + public String getValue() {
  48 + return value;
  49 + }
  50 +
  51 + public Log getLog() {
  52 + return LogHelper.getLog(this);
  53 + }
  54 +
  55 + /**
  56 + * 增加日志打印class信息----暂时未用
  57 + *
  58 + * @param str
  59 + * @return
  60 + */
  61 + public static String getClassAndlin(String str) {
  62 + if (StringUtils.isEmpty(str)) {
  63 + return str;
  64 + }
  65 + StackTraceElement stack[] = Thread.currentThread().getStackTrace();
  66 + boolean boo = false;
  67 + for (StackTraceElement ste : stack) {
  68 + if ((ste.getFileName().indexOf("LogTypeEnum.java")) != -1) {
  69 + boo = true;
  70 + } else if (boo) {
  71 + //TODO 我看这段代码永远都不会进来
  72 + return new StringBuffer(MarkConstant.LEFT_BRACKET).append(ste.getFileName()).append(MarkConstant.SPLIT_CODE)
  73 + .append(ste.getLineNumber()).append(MarkConstant.RIGHT_BRACKET).append(MarkConstant.BLANK).append(str).toString();
  74 + }
  75 + }
  76 + return str;
  77 + }
  78 +
  79 +}
... ...
titan-web/src/main/java/com/dili/titan/common/log/MarkConstant.java 0 → 100644
  1 +package com.dili.titan.common.log;
  2 +
  3 +/**
  4 + * 标点符号常量类
  5 + *
  6 + * @author gongsz
  7 + */
  8 +public class MarkConstant {
  9 + /**
  10 + * 分隔符 -
  11 + */
  12 + public static final String SPLIT_CODE = "-";
  13 + /**
  14 + * 冒号
  15 + */
  16 + public static final String COLON = ":";
  17 + /**
  18 + * 逗号
  19 + */
  20 + public static final String COMMA = ",";
  21 +
  22 + /**
  23 + * 左方括号
  24 + */
  25 + public static final String LEFT_BRACKETS = "[";
  26 + /**
  27 + * 右方括号
  28 + */
  29 + public static final String RIGHT_BRACKETS = "]";
  30 + /**
  31 + * 换行
  32 + */
  33 + public static final String NEW_LINE = "\n";
  34 +
  35 + /**
  36 + * 符号:点
  37 + */
  38 + public static final String SYMBOL_POINT = ".";
  39 +
  40 + /**
  41 + * 符号:/
  42 + */
  43 + public static final String SPRIT = "/";
  44 + /**
  45 + * 符号:下划线
  46 + */
  47 + public static final String UNDERLINE = "_";
  48 + /**
  49 + * 符号:&
  50 + */
  51 + public static final String AND = "&";
  52 + /**
  53 + * 空格
  54 + */
  55 + public static final String BLANK = " ";
  56 +
  57 + /**
  58 + * 左括号
  59 + */
  60 + public static final String LEFT_BRACKET = "(";
  61 +
  62 + /**
  63 + * 右括号
  64 + */
  65 + public static final String RIGHT_BRACKET = ")";
  66 +
  67 +}
... ...
titan-web/src/main/java/com/dili/titan/common/tools/DateUtils.java 0 → 100644
  1 +package com.dili.titan.common.tools;
  2 +
  3 +import org.slf4j.Logger;
  4 +import org.slf4j.LoggerFactory;
  5 +
  6 +import java.text.ParseException;
  7 +import java.text.SimpleDateFormat;
  8 +import java.util.Calendar;
  9 +import java.util.Date;
  10 +import java.util.GregorianCalendar;
  11 +import java.util.TimeZone;
  12 +
  13 +/**
  14 + * 日期工具类
  15 + *
  16 + * @author dev-center
  17 + * @since 2014-05-10
  18 + */
  19 +public class DateUtils {
  20 + private final static Logger LOGGER = LoggerFactory.getLogger(DateUtils.class);
  21 +
  22 + public static long getServerTime() {
  23 + return System.currentTimeMillis();
  24 + }
  25 +
  26 + /**
  27 + * 格式化日期,默认返回yyyy-MM-dd HH:mm:ss
  28 + *
  29 + * @param date
  30 + * @return
  31 + */
  32 + public static String format(Date date) {
  33 + return format(date, "yyyy-MM-dd HH:mm:ss");
  34 + }
  35 +
  36 + /**
  37 + * 格式化显示当前日期
  38 + *
  39 + * @param format
  40 + * @return
  41 + */
  42 + public static String format(String format) {
  43 + return format(new Date(), format);
  44 + }
  45 +
  46 + /**
  47 + * 日期格式化
  48 + *
  49 + * @param date
  50 + * @param format
  51 + * @return
  52 + */
  53 + public static String format(Date date, String format) {
  54 + try {
  55 + SimpleDateFormat sdf = new SimpleDateFormat(format);
  56 + return sdf.format(date);
  57 + } catch (Exception e) {
  58 + LOGGER.warn("日期格式化失败.{}", e.getMessage());
  59 + }
  60 + return null;
  61 + }
  62 +
  63 + /**
  64 + * 时间格式化, 传入毫秒
  65 + *
  66 + * @param time
  67 + * @return
  68 + */
  69 + public static String dateFormat(long time) {
  70 + return format(new Date(time), "yyyy-MM-dd HH:mm:ss");
  71 + }
  72 +
  73 + /**
  74 + * 时间格式化
  75 + *
  76 + * @param date date
  77 + * @param p parameter
  78 + * @return dateFormat
  79 + * @author yangjianjun
  80 + * @creaetime Jul 18, 2012 7:22:29 PM
  81 + */
  82 + public static String formatDateTime(Date date, int p) {
  83 + String pattern = "yyyy-MM-dd HH:mm:ss";
  84 + switch (p) {
  85 + case 1:
  86 + pattern = "yyyy-MM-dd";
  87 + break;
  88 + case 2:
  89 + pattern = "yyyy-MM-dd HH:mm:ss";
  90 + break;
  91 + case 3:
  92 + pattern = "yyyy-MM-dd HH:mm:ss.SSS";
  93 + break;
  94 + case 4:
  95 + pattern = "yyyy-MM";
  96 + break;
  97 + case 5:
  98 + pattern = "MM-dd";
  99 + break;
  100 + case 6:
  101 + pattern = "HH:mm:ss";
  102 + break;
  103 + case 7:
  104 + pattern = "HH:mm";
  105 + break;
  106 + case 8:
  107 + pattern = "MM-dd HH:mm:ss";
  108 + break;
  109 + case 9:
  110 + pattern = "MM-dd HH:mm";
  111 + break;
  112 + case 10:
  113 + pattern = "yyyyMMddHHmmssSSS";
  114 + break;
  115 + default:
  116 + return null;
  117 + }
  118 + return new SimpleDateFormat(pattern).format(date);
  119 + }
  120 +
  121 +
  122 + /**
  123 + * 计算某个时间到某个时间的时差等信息
  124 + *
  125 + * @param startTime beginTime
  126 + * @param endTime endTime
  127 + * @param format temple
  128 + * @param str 小时
  129 + * @return 时差
  130 + * @throws ParseException ParseException
  131 + * @author yangjianjun
  132 + * @creaetime Nov 28, 2014 3:16:21 PM
  133 + */
  134 + public static Long dateDiff(String startTime, String endTime,
  135 + String format, String str) throws ParseException {
  136 + // 按照传入的格式生成一个simpledateformate对象
  137 + SimpleDateFormat sd = new SimpleDateFormat(format);
  138 + long nd = 1000 * 24 * 60 * 60;// 一天的毫秒数
  139 + long nh = 1000 * 60 * 60;// 一小时的毫秒数
  140 + long nm = 1000 * 60;// 一分钟的毫秒数
  141 + long ns = 1000;// 一秒钟的毫秒数
  142 + long diff;
  143 + long day = 0;
  144 + long hour = 0;
  145 + long min = 0;
  146 + long sec = 0;
  147 + // 获得两个时间的毫秒时间差异
  148 + diff = sd.parse(endTime).getTime() - sd.parse(startTime).getTime();
  149 + day = diff / nd;// 计算差多少天
  150 + hour = diff % nd / nh + day * 24;// 计算差多少小时
  151 + min = diff % nd % nh / nm + day * 24 * 60;// 计算差多少分钟
  152 + sec = diff % nd % nh % nm / ns;// 计算差多少秒
  153 + // 输出结果
  154 + System.out.println("时间相差:" + day + "天" + (hour - day * 24) + "小时"
  155 + + (min - day * 24 * 60) + "分钟" + sec + "秒。");
  156 + System.out.println("hour=" + hour + ",min=" + min);
  157 + if (str.equalsIgnoreCase("h")) {
  158 + return hour;
  159 + } else {
  160 + return min;
  161 + }
  162 + }
  163 +
  164 + /**
  165 + * 计算结束时间到开始时间的秒数
  166 + *
  167 + * @param startTime
  168 + * @param endTime
  169 + * @param format
  170 + * @return
  171 + * @author yangjianjun
  172 + * @createtime 2014年6月25日 下午2:09:10
  173 + */
  174 + public static Long dateDiff(String startTime, String endTime,
  175 + String format) {
  176 + SimpleDateFormat sf = new SimpleDateFormat(format);
  177 + long time = -1;
  178 + try {
  179 + time = sf.parse(endTime).getTime() - sf.parse(startTime).getTime();
  180 + } catch (ParseException e) {
  181 + }
  182 + return time / 1000;
  183 + }
  184 +
  185 + /**
  186 + * this method is 将字符串转化为日期格式
  187 + *
  188 + * @param time
  189 + * @param type
  190 + * @return
  191 + * @throws ParseException
  192 + * @createTime 2014年6月25日 下午2:14:09
  193 + * @author yangjianjun
  194 + */
  195 + public static Date stringToDate(String time, int type) throws ParseException {
  196 + Date date = null;
  197 + SimpleDateFormat simple = null;
  198 +
  199 + switch (type) {
  200 + case 1:
  201 + simple = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  202 + break;
  203 + case 2:
  204 + simple = new SimpleDateFormat("yyyy-MM-dd");
  205 + break;
  206 + default:
  207 + simple = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  208 + break;
  209 + }
  210 + date = simple.parse(time);
  211 + return date;
  212 + }
  213 +
  214 + /**
  215 + * this method is 根据秒数求出时间
  216 + *
  217 + * @param time
  218 + * @return
  219 + * @createTime 2014年6月25日 下午2:09:51
  220 + * @author yangjianjun
  221 + */
  222 + public static String paserTime(String time) {
  223 + System.setProperty("user.timezone", "Asia/Shanghai");
  224 + TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai");
  225 + TimeZone.setDefault(tz);
  226 + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  227 + String times = format.format(new Date(Long.parseLong(time) * 1000L));
  228 +// System.out.print("日期为:" + times);
  229 + return times;
  230 + }
  231 +
  232 + /**
  233 + * this method is 根据时间求出秒数
  234 + *
  235 + * @param date
  236 + * @return
  237 + * @createTime 2014年6月25日 下午2:10:08
  238 + * @author yangjianjun
  239 + */
  240 + public static long paserSecond(Date date) {
  241 + long dates = date.getTime() / 1000L;
  242 + return dates;
  243 + }
  244 +
  245 + /**
  246 + * this method is 根据实际和天数计算出最新时间
  247 + *
  248 + * @param dates 当前时间
  249 + * @param day 当前天数
  250 + * @return 最新时间
  251 + * @createTime 2014年7月10日 上午11:11:51
  252 + * @author yangjianjun
  253 + */
  254 + public static Date getBeforeAfterDate(Date dates, int day) {
  255 + Calendar cal = new GregorianCalendar();
  256 + cal.setTime(dates);
  257 + int Year = cal.get(Calendar.YEAR);
  258 + int Month = cal.get(Calendar.MONTH);
  259 + int Day = cal.get(Calendar.DAY_OF_MONTH);
  260 + int NewDay = Day + day;
  261 + cal.set(Calendar.YEAR, Year);
  262 + cal.set(Calendar.MONTH, Month);
  263 + cal.set(Calendar.DAY_OF_MONTH, NewDay);
  264 + return new Date(cal.getTimeInMillis());
  265 + }
  266 +}
... ...
titan-web/src/main/java/com/dili/titan/common/tools/NullTool.java 0 → 100644
  1 +package com.dili.titan.common.tools;
  2 +
  3 +/*
  4 + * Copyright 2003-2004 The Apache Software Foundation.
  5 + *
  6 + * Licensed under the Apache License, Version 2.0 (the "License");
  7 + * you may not use this file except in compliance with the License.
  8 + * You may obtain a copy of the License at
  9 + *
  10 + * http://www.apache.org/licenses/LICENSE-2.0
  11 + *
  12 + * Unless required by applicable law or agreed to in writing, software
  13 + * distributed under the License is distributed on an "AS IS" BASIS,
  14 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15 + * See the License for the specific language governing permissions and
  16 + * limitations under the License.
  17 + */
  18 +
  19 +import org.apache.velocity.context.Context;
  20 +
  21 +/**
  22 + * 在vm页面使用,用于判断是否有空
  23 + *
  24 + * Tool for working with <code>null</code> in Velocity templates.
  25 + * It provides a method to set a VTL reference back to <code>null</code>.
  26 + * Also provides methods to check if a VTL reference is <code>null</code> or not.
  27 + * <p>
  28 + * NOTE: These examples assume you have placed an
  29 + * instance of the current context within itself as 'ctx'.
  30 + * And, of course, the NullTool is assumed to be available as 'null'.
  31 + * </p>
  32 + * <p><pre>
  33 + * Example uses:
  34 + * $foo -> bar
  35 + * $null.isNull($foo) -> false
  36 + * $null.isNotNull($foo) -> true
  37 + *
  38 + * $null.setNull($ctx, "foo")
  39 + * $foo -> $foo (null)
  40 + * $null.isNull($foo) -> true
  41 + * $null.isNotNull($foo) -> false
  42 + *
  43 + * $null.set($ctx, $foo, "hoge")
  44 + * $foo -> hoge
  45 + * $null.set($ctx, $foo, $null.null)
  46 + * $foo -> $foo (null)
  47 + * </pre></p>
  48 + *
  49 + * <p>This tool is entirely threadsafe, and has no instance members.
  50 + * </p>
  51 + *
  52 + * @author <a href="mailto:shinobu@ieee.org">Shinobu Kawai</a>
  53 + * @version $Id: $
  54 + */
  55 +public class NullTool
  56 +{
  57 +
  58 + /**
  59 + * Default constructor.
  60 + */
  61 + public NullTool()
  62 + {
  63 + }
  64 +
  65 + /**
  66 + * Sets the given VTL reference back to <code>null</code>.
  67 + * @param context the current Context
  68 + * @param key the VTL reference to set back to <code>null</code>.
  69 + */
  70 + public void setNull(Context context, String key)
  71 + {
  72 + if (this.isNull(context))
  73 + {
  74 + return;
  75 + }
  76 + context.remove(key);
  77 + }
  78 +
  79 + /**
  80 + * Sets the given VTL reference to the given value.
  81 + * If the value is <code>null</code>,
  82 + * the VTL reference is set to <code>null</code>.
  83 + * @param context the current Context
  84 + * @param key the VTL reference to set.
  85 + * @param value the value to set the VTL reference to.
  86 + */
  87 + public void set(Context context, String key, Object value)
  88 + {
  89 + if (this.isNull(context))
  90 + {
  91 + return;
  92 + }
  93 + if (this.isNull(value))
  94 + {
  95 + this.setNull(context, key);
  96 + return;
  97 + }
  98 + context.put(key, value);
  99 + }
  100 +
  101 + /**
  102 + * Checks if a VTL reference is <code>null</code>.
  103 + * @param object the VTL reference to check.
  104 + * @return <code>true</code> if the VTL reference is <code>null</code>,
  105 + * <code>false</code> if otherwise.
  106 + */
  107 + public boolean isNull(Object object)
  108 + {
  109 + return object == null;
  110 + }
  111 +
  112 + /**
  113 + * Checks if a VTL reference is not <code>null</code>.
  114 + * @param object the VTL reference to check.
  115 + * @return <code>true</code> if the VTL reference is not <code>null</code>,
  116 + * <code>false</code> if otherwise.
  117 + */
  118 + public boolean isNotNull(Object object)
  119 + {
  120 + return !this.isNull(object);
  121 + }
  122 +
  123 + /**
  124 + * A convinient method which returns <code>null</code>.
  125 + * Actually, this tool will work the same without this method,
  126 + * because Velocity treats non-existing methods as null. :)
  127 + * @return <code>null</code>
  128 + */
  129 + public Object getNull()
  130 + {
  131 + return null;
  132 + }
  133 +
  134 +}
0 135 \ No newline at end of file
... ...
titan-web/src/main/java/com/dili/titan/common/tools/RegexUtils.java 0 → 100644
  1 +package com.dili.titan.common.tools;
  2 +
  3 +import java.util.regex.Matcher;
  4 +import java.util.regex.Pattern;
  5 +
  6 +/**
  7 + * 正则表达式工具
  8 + */
  9 +//TODO 这个竟然没用到??
  10 +public class RegexUtils {
  11 +
  12 + /**
  13 + * 合法的属性名字正则表达式
  14 + */
  15 + public final static String VALID_ATTRIBUTE_NAME_REGEX = "^[a-zA-Z\\+\\/&\u4e00-\u9fa5]+$";
  16 +
  17 + /**
  18 + * 检验字符串师傅匹配正则表达式
  19 + *
  20 + * @param regex 正则表达式
  21 + * @param content 匹配内容
  22 + * @return
  23 + * @createTime 2014年6月3日 上午10:06:45
  24 + * @author dili-guwenwu
  25 + */
  26 + public static boolean match(String regex, String content) {
  27 + Pattern pattern = Pattern.compile(regex);
  28 + Matcher matcher = pattern.matcher(content);
  29 + return matcher.find();
  30 + }
  31 +}
... ...
titan-web/src/main/java/com/dili/titan/common/tools/Tools.java 0 → 100644
  1 +package com.dili.titan.common.tools;
  2 +
  3 +import java.math.BigDecimal;
  4 +import java.util.List;
  5 +import java.util.regex.Matcher;
  6 +import java.util.regex.Pattern;
  7 +
  8 +/**
  9 + * <B>Description</B> 工具类
  10 + * <B>Copyright</B> Copyright (c) 2014 www.diligrp.com All rights reserved. <br />
  11 + * 本软件源代码版权归地利集团,未经许可不得任意复制与传播.<br />
  12 + * <B>Company</B> 地利集团
  13 + *
  14 + * @author yangjianjun
  15 + * @createTime 2014年6月25日 下午2:15:09
  16 + */
  17 +public class Tools {
  18 + /**
  19 + * this method is 判断是否是ASCII编码
  20 + *
  21 + * @param string
  22 + * @return
  23 + * @createTime 2014年6月25日 下午2:14:50
  24 + * @author yangjianjun
  25 + */
  26 + public static boolean isASCIIEncoded(String string) {
  27 + if (string == null) {
  28 + string = "";
  29 + }
  30 + return !Pattern.compile("[^\\x00-\\xff]").matcher(string).find();
  31 + }
  32 +
  33 +
  34 + /**
  35 + * this method is 获取字符串长度,一个中文占2个长度
  36 + *
  37 + * @param string
  38 + * @return
  39 + * @createTime 2014年6月25日 下午2:14:33
  40 + * @author yangjianjun
  41 + */
  42 + public static int getLength(String string) {
  43 + if (string == null) {
  44 + string = "";
  45 + }
  46 + // String reg = "[^\\x00-\\x7f]";
  47 + String reg = "[^\\x00-\\xff]";
  48 + Pattern pattern = Pattern.compile(reg);
  49 + Matcher mathcher = pattern.matcher(string);
  50 + if (mathcher.find()) {
  51 + return string.length() * 2;
  52 + }
  53 + return string.length();
  54 + }
  55 +
  56 + /**
  57 + * this method is 验证某个对象是否为空
  58 + *
  59 + * @param obj
  60 + * @return
  61 + * @createTime 2014年6月25日 下午2:13:25
  62 + * @author yangjianjun
  63 + */
  64 + public static boolean objectIsNotNull(Object obj) {
  65 + return (null != obj) ? true : false;
  66 + }
  67 +
  68 + /**
  69 + * this method is 判断某一个集合对象是否为空
  70 + *
  71 + * @param list
  72 + * @return
  73 + * @createTime 2014年6月25日 下午2:11:46
  74 + * @author yangjianjun
  75 + */
  76 + public static <T> boolean checkListNotNull(List<T> list) {
  77 + if (list == null || list.size() < 1) {
  78 + return true;
  79 + }
  80 + return false;
  81 + }
  82 +
  83 + /**
  84 + * 判断一个字符串是否在另一个字符串中存在
  85 + *
  86 + * @param str0 字符串规则
  87 + * @param str1 要检查的字符串
  88 + * @return boolean
  89 + * @author yangjianjun
  90 + * @creaetime Nov 26, 2012 4:01:19 PM
  91 + */
  92 + public static boolean isExistString(String str0, String str1) {
  93 + int indexOf = str0.indexOf(str1);
  94 + if (indexOf >= 0) {
  95 + return true;
  96 + } else {
  97 + return false;
  98 + }
  99 + }
  100 +
  101 + /**
  102 + * this method is 除法结果保留两位小数并按照第二位小数四舍五入
  103 + *
  104 + * @param divisor 除数
  105 + * @param dividend 被除数
  106 + * @param k 保留小数的位数及四舍五入的位数
  107 + * @return double数值
  108 + * @createTime 2014年6月25日 下午2:09:10
  109 + * @author yangjianjun
  110 + */
  111 + public static double getRoundDecimal(long divisor, long dividend, int k) {
  112 + BigDecimal dec1 = new BigDecimal(divisor);
  113 + BigDecimal dec2 = new BigDecimal(dividend);
  114 + return dec1.divide(dec2, k, BigDecimal.ROUND_HALF_UP).doubleValue();
  115 + }
  116 +
  117 +}
  118 +
0 119 \ No newline at end of file
... ...
titan-web/src/main/java/com/dili/titan/common/utils/SkuUtil.java 0 → 100644
  1 +package com.dili.titan.common.utils;
  2 +
  3 +import com.dili.titan.common.ProductStatus;
  4 +import com.dili.titan.common.exception.TitanError;
  5 +import org.apache.commons.lang.StringUtils;
  6 +import org.apache.log4j.Logger;
  7 +
  8 +import java.math.BigInteger;
  9 +import java.util.ArrayList;
  10 +import java.util.List;
  11 +import java.util.Map.Entry;
  12 +import java.util.Set;
  13 +import java.util.TreeMap;
  14 +import java.util.regex.Matcher;
  15 +import java.util.regex.Pattern;
  16 +
  17 +/**
  18 + * SKU转换 <B>Description</B>SKU操作类<br />
  19 + * <B>Copyright</B> Copyright (c) 2014 www.diligrp.com All rights reserved. <br />
  20 + * 本软件源代码版权归地利集团,未经许可不得任意复制与传播.<br />
  21 + * <B>Company</B> 地利集团
  22 + *
  23 + * @author celine
  24 + * @createTime 2014年5月26日 下午11:15:12
  25 + */
  26 +public class SkuUtil {
  27 +
  28 + private final static Logger logger = Logger.getLogger(SkuUtil.class);
  29 + private final static int ORI_RADIX = 11;// 原始SKU进制
  30 + private final static int SKU_RADIX = 62;
  31 + public final static String SPLIT = ":";
  32 +
  33 + /**
  34 + * 将编码后不带版本号的skuEncWithoutVersion和version编码成新的SKU
  35 + *
  36 + * @param skuEncWithoutVersion pid+attVal编码后的sku
  37 + * @param version sku版本号
  38 + * @createTime 2014年6月18日 下午8:28:42
  39 + */
  40 + public static String encode(String skuEncWithoutVersion, Integer version) {
  41 + String skuOri = decode(skuEncWithoutVersion, false);
  42 + return SkuUtil.encode(version + SPLIT + skuOri);
  43 + }
  44 +
  45 + /**
  46 + * 生成商品由属性值ID拼接成的SKU字符串,attrMap为空时,默认为没有销售属性,返回0
  47 + *
  48 + * @param attrMap 属性项-属性值的Map
  49 + * @return
  50 + * @createTime 2014年6月18日 下午2:59:24
  51 + * @author celine
  52 + */
  53 + public static String getSkuByAttrId(TreeMap<Long, Long> attrMap, Long pid) {
  54 + if (attrMap == null || attrMap.size() == 0) {
  55 + return pid == null ? null : pid + SPLIT + "0";
  56 + }
  57 + Set<Entry<Long, Long>> entries = attrMap.entrySet();
  58 +
  59 + if (pid != null) {
  60 + StringBuilder sb = new StringBuilder();
  61 + sb.append(pid + SPLIT);
  62 + int i = 0;
  63 + for (Entry<Long, Long> entry : entries) {
  64 + i++;
  65 + if (i < entries.size()) {
  66 + sb.append(entry.getValue() + SPLIT);
  67 + } else {
  68 + sb.append(entry.getValue());
  69 + }
  70 + }
  71 + return sb.toString();
  72 + }
  73 + return null;
  74 +
  75 + }
  76 +
  77 + /**
  78 + * 解析sku中的版本号
  79 + *
  80 + * @param encSku 编码后的sku
  81 + * @return
  82 + * @throws TitanError
  83 + * @createTime 2014年6月18日 下午6:52:32
  84 + */
  85 + public static Integer getVersion(String encSku) throws TitanError {
  86 + try {
  87 + BigInteger bi = sixtytwoToTen(encSku);
  88 + String skuDe = tenToM(bi, ORI_RADIX);
  89 + String[] skuSplit = skuDe.split(SPLIT);
  90 + String verStr = skuSplit[0];
  91 + Integer version = Integer.parseInt(verStr);
  92 + return version;
  93 + } catch (Exception e) {
  94 + throw new TitanError(0, "解析版本号失败");
  95 + }
  96 +
  97 + }
  98 +
  99 + /**
  100 + * 从带版本号的sku中获取不带版本号的sku
  101 + *
  102 + * @param encSku 编码后的sku,包含版本号
  103 + * @return 编码后的sku,不带版本号
  104 + * @throws TitanError
  105 + * @createTime 2014年6月18日 下午6:52:32
  106 + */
  107 + public static String getSkuEncWithOutVersion(String encSku) {
  108 + String skuDe = decode(encSku);
  109 + return encode(skuDe);
  110 +
  111 + }
  112 +
  113 + /**
  114 + * 解析sku中的PID
  115 + *
  116 + * @param encSku 编码后的sku
  117 + * @param hasVersion sku中是否包含版本
  118 + * @return
  119 + * @throws TitanError
  120 + * @createTime 2014年6月18日 下午6:52:32
  121 + */
  122 + public static Long getPid(String encSku, boolean hasVersion) throws TitanError {
  123 + try {
  124 + String skuDe = decode(encSku, hasVersion);
  125 + String[] skuSplit = skuDe.split(SPLIT);
  126 + String pidStr = skuSplit[0];
  127 + Long pid = Long.parseLong(pidStr);
  128 + return pid;
  129 + } catch (Exception e) {
  130 + throw new TitanError(0, "解析商品ID失败");
  131 + }
  132 + }
  133 +
  134 + /**
  135 + * 解析sku中的商品属性值ID
  136 + *
  137 + * @param encSku 编码后的sku
  138 + * @param hasVersion sku中是否包含版本
  139 + * @return
  140 + * @throws TitanError
  141 + * @createTime 2014年6月18日 下午6:52:32
  142 + */
  143 + public static String getAttrVal(String encSku, boolean hasVersion) throws TitanError {
  144 + try {
  145 + String skuDe = decode(encSku, hasVersion);
  146 + return skuDe.substring(skuDe.indexOf(SPLIT) + 1, skuDe.length());
  147 + } catch (Exception e) {
  148 + throw new TitanError(0, "解析SKU属性值失败");
  149 + }
  150 + }
  151 +
  152 + /**
  153 + * 解析sku中的商品属性值ID
  154 + *
  155 + * @param encSku 编码后的sku
  156 + * @param hasVersion sku中是否包含版本
  157 + * @return
  158 + * @throws TitanError
  159 + * @createTime 2014年6月18日 下午6:52:32
  160 + */
  161 + public static List<Long> getAttrValList(String encSku, boolean hasVersion) throws TitanError {
  162 + try {
  163 + String attrvalStr = getAttrVal(encSku, hasVersion);
  164 + if (StringUtils.isEmpty(attrvalStr))
  165 + return null;
  166 + List<Long> list = new ArrayList<Long>();
  167 + String[] attrvalIds = attrvalStr.split(SPLIT);
  168 + for (String attrvalId : attrvalIds) {
  169 + list.add(Long.parseLong(attrvalId));
  170 + }
  171 + return list;
  172 + } catch (Exception e) {
  173 + throw new TitanError(0, "解析SKU属性值失败");
  174 + }
  175 + }
  176 +
  177 + /**
  178 + * 通过sku确定商品的种类 1-第三方商品 2-供应商商品 3-网站商品
  179 + *
  180 + * @param encSku
  181 + * @param hasVersion sku中是否包含version
  182 + * @return
  183 + * @createTime 2014年6月6日 下午6:28:58
  184 + * @author celine
  185 + */
  186 + public static int getProductType(String encSku, boolean hasVersion) {
  187 + String skuDe = decode(encSku, hasVersion);
  188 + String[] skuSplit = skuDe.split(SPLIT);
  189 + if (skuSplit.length > 0) {
  190 + String pidStart = skuSplit[0].substring(0, 1);
  191 + int flag = Integer.parseInt(pidStart);
  192 + return determineStype(flag);
  193 + }
  194 + return 0;
  195 + }
  196 +
  197 + /**
  198 + * 通过sku确定商品的种类 1-第三方商品 2-供应商商品 3-网站商品
  199 + *
  200 + * @param encSku 编码后的sku,默认包含version
  201 + * @return
  202 + * @createTime 2014年6月6日 下午6:28:58
  203 + * @author celine
  204 + */
  205 + public static int getProductType(String encSku) {
  206 + return getProductType(encSku, true);
  207 + }
  208 +
  209 + /**
  210 + * 通过pid确定商品的种类 1-第三方商品 2-供应商商品 3-网站商品
  211 + *
  212 + * @param sku
  213 + * @return
  214 + * @createTime 2014年6月6日 下午6:28:58
  215 + * @author celine
  216 + */
  217 + public static int getProductTypeByPid(String pid) {
  218 + if (pid != null && !pid.equals("")) {
  219 + String pidStart = pid.substring(0, 1);
  220 + int flag = Integer.parseInt(pidStart);
  221 + return determineStype(flag);
  222 + }
  223 + return 0;
  224 + }
  225 +
  226 + /**
  227 + * 对原始SKU串进行编码
  228 + *
  229 + * @param oriStr
  230 + * @return
  231 + * @createTime 2014年5月27日 上午12:19:22
  232 + * @author celine
  233 + */
  234 + public static String encode(String oriStr) {
  235 + try {
  236 + BigInteger bi = elevenToTen(oriStr);
  237 + return tenToM(bi, SKU_RADIX);
  238 + } catch (Exception e) {
  239 + logger.error("Encode Error. ", e);
  240 + return null;
  241 + }
  242 + }
  243 +
  244 + /**
  245 + * 将编码后的SKU转换为PID:属性值形式
  246 + *
  247 + * @param skuEnc 编码后的SKU,包含版本号
  248 + * @return
  249 + * @createTime 2014年5月27日 上午12:20:17
  250 + * @author celine
  251 + */
  252 + public static String decode(String skuEnc) {
  253 + return decode(skuEnc, true);
  254 + }
  255 +
  256 + /**
  257 + * 将编码后的SKU转换为PID:属性值形式
  258 + *
  259 + * @param skuEnc 编码后的SKU
  260 + * @param hasVersion sku中是否包含sku信息
  261 + * @return
  262 + * @createTime 2014年5月27日 上午12:20:17
  263 + * @author celine
  264 + */
  265 + public static String decode(String skuEnc, boolean hasVersion) {
  266 + try {
  267 + BigInteger bi = sixtytwoToTen(skuEnc);
  268 + String skuOriWithVersion = tenToM(bi, ORI_RADIX);
  269 + if (hasVersion) {
  270 + return skuOriWithVersion.substring(skuOriWithVersion.indexOf(SPLIT) + 1, skuOriWithVersion.length());
  271 + }
  272 + return skuOriWithVersion;
  273 + } catch (Exception e) {
  274 + logger.error("Decode Error. ", e);
  275 + return null;
  276 + }
  277 + }
  278 +
  279 + /**
  280 + * 将任意进制的数转换为十进制,本系统中用':'作为第十一位,
  281 + *
  282 + * @param s
  283 + * @param m 进制数
  284 + * @return
  285 + * @createTime 2014年5月26日 下午10:27:05
  286 + * @author celine
  287 + */
  288 + private static BigInteger elevenToTen(String s) throws Exception {
  289 +
  290 + Pattern pattern = Pattern.compile("^[0-9:]+$");
  291 + Matcher matcher = pattern.matcher(s);
  292 +
  293 + if (matcher.find()) {
  294 + BigInteger oriBi = BigInteger.valueOf(ORI_RADIX);
  295 + BigInteger tmpBi = new BigInteger("0");
  296 + for (int i = 0; i < s.length(); i++) {
  297 + char tmpC = s.charAt(i);
  298 + int tmp = tmpC - '0';
  299 + tmpBi = tmpBi.multiply(oriBi).add(BigInteger.valueOf(tmp));
  300 + }
  301 + return tmpBi;
  302 + } else {
  303 + // 不全为数字和':'
  304 + logger.error("Invalid input " + s);
  305 + throw new Exception("Invalid input " + s);
  306 + }
  307 + }
  308 +
  309 + private static BigInteger sixtytwoToTen(String s) throws Exception {
  310 + Pattern pattern = Pattern.compile("^[0-9a-zA-z]+$");
  311 + Matcher matcher = pattern.matcher(s);
  312 +
  313 + if (matcher.find()) {
  314 + BigInteger skuBi = BigInteger.valueOf(SKU_RADIX);
  315 + BigInteger tmpBi = new BigInteger("0");
  316 + for (int i = 0; i < s.length(); i++) {
  317 + char tmpC = s.charAt(i);
  318 + int tmp = convertStringToInt62(tmpC);
  319 + tmpBi = tmpBi.multiply(skuBi).add(BigInteger.valueOf(tmp));
  320 + }
  321 + return tmpBi;
  322 + } else {
  323 + // 不全为数字和大小写字母
  324 + throw new Exception("Invalid input " + s);
  325 + }
  326 + }
  327 +
  328 + /**
  329 + * 将十进制转换为十一或六十二
  330 + *
  331 + * @param bi
  332 + * @param m
  333 + * @throws Exception
  334 + * @createTime 2014年5月26日 下午10:58:20
  335 + * @author celine
  336 + */
  337 + private static String tenToM(BigInteger bi, int m) throws Exception {
  338 + StringBuffer bs = new StringBuffer();
  339 + BigInteger zero = BigInteger.valueOf(0);
  340 + BigInteger targetBi = BigInteger.valueOf(m);
  341 + while (bi.compareTo(zero) > 0) {
  342 + BigInteger mod = bi.mod(targetBi);
  343 + if (m == ORI_RADIX) {
  344 + bs.insert(0, convertIntToString11(mod.intValue()));
  345 + } else if (m == SKU_RADIX) {
  346 + bs.insert(0, convertIntToString62(mod.intValue()));
  347 + }
  348 + bi = bi.divide(targetBi);
  349 + }
  350 + return bs.toString();
  351 + }
  352 +
  353 + /**
  354 + * 将整数转换为对应62进制的字符
  355 + *
  356 + * @param i
  357 + * @return
  358 + * @throws Exception
  359 + * @createTime 2014年5月26日 下午11:14:24
  360 + * @author celine
  361 + */
  362 + private static char convertIntToString62(int i) throws Exception {
  363 + if (i >= 0 && i <= 9) {
  364 + return (char) (i + '0');
  365 + } else if (i > 9 && i < 36) {
  366 + return (char) ('a' + i - 10);
  367 + } else if (i >= 36 && i < 62) {
  368 + return (char) ('A' + i - 36);
  369 + } else {
  370 + throw new Exception("Invalid input " + i);
  371 + }
  372 + }
  373 +
  374 + /**
  375 + * 将整数转换为对应11进制的字符
  376 + *
  377 + * @param i
  378 + * @return
  379 + * @throws Exception
  380 + * @createTime 2014年5月26日 下午11:30:15
  381 + * @author celine
  382 + */
  383 + private static char convertIntToString11(int i) throws Exception {
  384 + if (i >= 0 && i <= 10) {
  385 + return (char) (i + '0');
  386 + } else {
  387 + throw new Exception("Invalid input " + i);
  388 + }
  389 + }
  390 +
  391 + private static int convertStringToInt62(char c) throws Exception {
  392 + if (c >= '0' && c <= '9') {
  393 + return c - '0';
  394 + } else if (c >= 'a' && c <= 'z') {
  395 + return c - 'a' + 10;
  396 + } else if (c >= 'A' && c <= 'Z') {
  397 + return c - 'A' + 36;
  398 + } else {
  399 + throw new Exception("Invalid input " + c);
  400 + }
  401 + }
  402 +
  403 + /**
  404 + * 确定商品类型
  405 + *
  406 + * @param flag
  407 + * @return
  408 + * @createTime 2014年6月6日 下午6:40:15
  409 + * @author celine
  410 + */
  411 + private static int determineStype(int flag) {
  412 + switch (flag) {
  413 + case 1:
  414 + case 2:
  415 + case 3:
  416 + case 4:
  417 + return ProductStatus.PRODUCT_POP;
  418 + case 5:
  419 + case 6:
  420 + case 7:
  421 + case 8:
  422 + case 9:
  423 + default:
  424 + break;
  425 + }
  426 + return 0;
  427 + }
  428 +
  429 + public static String getProductTypeByPid(Long pid) {
  430 + if (pid >= 1000000000l && pid < 5000000000l) {
  431 + return ProductStatus.SALE_TYPE_POP;
  432 + }else{
  433 + return null;
  434 + }
  435 + }
  436 + public static void main(String[] args) {
  437 +// String [] str={"2t3on7sJ8o","dUFFyuPwZ","2t3on7A9ZX","2t3on7A9ZZ","dUFFyvvqA","dUFFyvvqC","dUFFywbFG","dUFFywbFF","dUFFywbFE"};
  438 + String [] str={"8HaxIIqWR","8HaxIIqWT","N0XqBUPp","N0XqBUPr","N0XqC2rJ","N0XqC2rI"};
  439 +// for(int i=0;i<str.length;i++){
  440 +// System.out.println(SkuUtil.encode(str[i],1));
  441 +// }
  442 +// System.out.println(SkuUtil.encode("3orUNksjei",1));8000000021:11:24
  443 + System.out.println(SkuUtil.encode("8000000021:-1"));
  444 + System.out.println("true:"+SkuUtil.decode("1aRTiFaECUbT", true));
  445 + System.out.println("false:"+SkuUtil.decode("1aRTiFaECUbS", false));
  446 +// System.out.println(SkuUtil.decode("6HGkoES51V"));
  447 +
  448 + }
  449 +}
... ...
titan-web/src/main/java/com/dili/titan/common/utils/SortList.java 0 → 100644
  1 +package com.dili.titan.common.utils;
  2 +
  3 +import java.lang.reflect.Method;
  4 +import java.util.Collections;
  5 +import java.util.Comparator;
  6 +import java.util.List;
  7 +
  8 +/**
  9 + * <B>Description</B> 对象排序 <br />
  10 + * <B>Copyright</B> Copyright (c) 2014 www.diligrp.com All rights reserved. <br />
  11 + * 本软件源代码版权归地利集团,未经许可不得任意复制与传播.<br />
  12 + * <B>Company</B> 地利集团
  13 + * @param <E>
  14 + * @createTime 2014年6月10日 下午8:29:27
  15 + * @author yangjianjun
  16 + */
  17 +public class SortList<E>{
  18 + /**
  19 + * this method is 对象排序
  20 + * @param list list的泛型对象
  21 + * @param method 排序的字段<getXXX>
  22 + * @param sort 若倒序填写desc;否则填null
  23 + * @createTime 2014年6月11日 上午10:00:21
  24 + * @author yangjianjun
  25 + */
  26 + public void sort(List<E> list, final String method, final String sort){
  27 + Collections.sort(list, new Comparator() {
  28 + public int compare(Object a, Object b) {
  29 + int ret = 0;
  30 + try{
  31 + Method m1 = ((E)a).getClass().getMethod(method, null);
  32 + Method m2 = ((E)b).getClass().getMethod(method, null);
  33 + if(sort != null && "desc".equals(sort))//倒序
  34 + ret = m2.invoke(((E)b), null).toString().compareTo(m1.invoke(((E)a), null).toString());
  35 + else//正序
  36 + ret = m1.invoke(((E)a), null).toString().compareTo(m2.invoke(((E)b), null).toString());
  37 + }catch(Exception ex){
  38 + System.out.println(ex);
  39 + }
  40 + return ret;
  41 + }
  42 + });
  43 + }
  44 +}
0 45 \ No newline at end of file
... ...
titan-web/src/main/java/com/dili/titan/common/utils/html/EscapeHtmlReference.java 0 → 100644
  1 +package com.dili.titan.common.utils.html;
  2 +
  3 +import org.apache.velocity.app.event.implement.EscapeReference;
  4 +
  5 +/**
  6 + * 过滤HTML、XML标签,防止XSS
  7 + *
  8 + */
  9 +//TODO 没被用,应该很有用
  10 +@Deprecated
  11 +public class EscapeHtmlReference extends EscapeReference {
  12 +
  13 + protected String escape(Object text) {
  14 + if (!(text instanceof String)) {
  15 + return text.toString();
  16 + }
  17 + StringBuffer str = new StringBuffer();
  18 + char[] cs = text.toString().toCharArray();
  19 + for (char c : cs) {
  20 + if (c == '>') {
  21 + str.append("&gt;");
  22 + } else if (c == '<') {
  23 + str.append("&lt;");
  24 + } else {
  25 + str.append(c);
  26 + }
  27 + }
  28 + return str.toString();
  29 + }
  30 +
  31 + protected String getMatchAttribute() {
  32 + return "eventhandler.escape.html.match";
  33 + }
  34 +}
0 35 \ No newline at end of file
... ...
titan-web/src/main/java/com/dili/titan/common/utils/web/BaseController.java 0 → 100644
  1 +package com.dili.titan.common.utils.web;
  2 +
  3 +import com.alibaba.fastjson.JSON;
  4 +import com.alibaba.fastjson.JSONArray;
  5 +import com.alibaba.fastjson.JSONObject;
  6 +import com.dili.titan.common.utils.web.exception.WebException;
  7 +import org.apache.commons.lang.StringUtils;
  8 +
  9 +import javax.annotation.Resource;
  10 +import javax.servlet.http.HttpServletRequest;
  11 +import javax.servlet.http.HttpServletResponse;
  12 +import java.io.IOException;
  13 +import java.io.PrintWriter;
  14 +import java.util.ArrayList;
  15 +import java.util.HashMap;
  16 +import java.util.List;
  17 +import java.util.Map;
  18 +
  19 +/**
  20 + * BaseController
  21 + *
  22 + */
  23 +public class BaseController extends VelocitySupport {
  24 + protected final static String DEFAULT_CHARTSET = "UTF-8";
  25 + protected final static String DEFAULT_JSON_CONTENT_TYPE = "application/json;charset="
  26 + + DEFAULT_CHARTSET;
  27 +
  28 + @Resource
  29 + private HttpServletRequest request;
  30 +
  31 + /**
  32 + * 输出文本
  33 + *
  34 + * @param txt
  35 + * @param contextType
  36 + */
  37 + protected void write(HttpServletResponse response, String txt,
  38 + String contextType) {
  39 + try {
  40 + if (!StringUtils.isEmpty(txt)) {
  41 + return;
  42 + }
  43 + response.setContentType(contextType);
  44 + response.getOutputStream().write(txt.getBytes(DEFAULT_CHARTSET));
  45 + } catch (Exception ex) {
  46 + throw new WebException(ex);
  47 + }
  48 + }
  49 +
  50 + /**
  51 + * 输出JSON对象
  52 + *
  53 + * @param model
  54 + */
  55 + protected void writeJSON(HttpServletResponse response, Object model) {
  56 + write(response, JSON.toJSONString(model), DEFAULT_JSON_CONTENT_TYPE);
  57 + }
  58 +
  59 + protected Map<String, Object> getDefaultContext() {
  60 + Map<String, Object> context = new HashMap<String, Object>();
  61 + return context;
  62 + }
  63 +
  64 + protected ViewBuilder toView(String template) {
  65 + ViewBuilder vb = new ViewBuilder(template, this);
  66 + return vb;
  67 + }
  68 +
  69 + /**
  70 + * java bean to json
  71 + *
  72 + * @param object
  73 + * @return
  74 + */
  75 + protected String objectToJSON(Object object) {
  76 + // try {
  77 + // return new ObjectMapper().writeValueAsString(object);
  78 + // } catch (JsonGenerationException e) {
  79 + // e.printStackTrace();
  80 + // } catch (JsonMappingException e) {
  81 + // e.printStackTrace();
  82 + // } catch (IOException e) {
  83 + // e.printStackTrace();
  84 + // }
  85 + return "";
  86 + }
  87 +
  88 + /**
  89 + * json to java bean
  90 + *
  91 + * @param <T>
  92 + * @param jsonStr
  93 + * @param t
  94 + * @return
  95 + */
  96 + protected <T> T JSONToObject(String jsonStr, Class<T> t) {
  97 + // try {
  98 + // return new ObjectMapper().readValue(jsonStr, t);
  99 + // } catch (JsonParseException e) {
  100 + // e.printStackTrace();
  101 + // } catch (JsonMappingException e) {
  102 + // e.printStackTrace();
  103 + // } catch (IOException e) {
  104 + // e.printStackTrace();
  105 + // }
  106 + return null;
  107 + }
  108 +
  109 + protected void writeStringToResponse(HttpServletResponse response,
  110 + String text) throws IOException {
  111 + response.setContentType("text/plain;charset=UTF-8");
  112 + PrintWriter out = response.getWriter();
  113 + out.write(text);
  114 + }
  115 +
  116 + /**
  117 + * 便利地判断输入参数是否合法,如果输入参数不符合预期,则会抛出 IllegalArgumentException
  118 + *
  119 + * @param expect 期望输入结果
  120 + * @param msg 错误消息
  121 + */
  122 + protected void checkParam(boolean expect, String msg) throws IllegalArgumentException{
  123 + if(!expect){
  124 + throw new IllegalArgumentException(msg);
  125 + }
  126 + }
  127 +
  128 + /**
  129 + * 接收前端提交的list类型参数,并把list内部元素转换成响应PO对象
  130 + *
  131 + * @author xiaoyang@diligrp.com 2014年5月19日
  132 + *
  133 + * @param paramName 参数名
  134 + * @param clazz list内部po类型
  135 + * @return
  136 + * @throws Exception
  137 + */
  138 + protected <E> List<E> parseParam(String paramName, Class<E> clazz) throws Exception{
  139 + List<E> result = new ArrayList<E>();
  140 + String param = request.getParameter(paramName);
  141 + if(param == null){
  142 + throw new IllegalArgumentException("指定的参数 :" + paramName + " 不存在" );
  143 + }
  144 + JSONArray array = JSON.parseArray(param);
  145 + for(Object a : array){
  146 + result.add(JSON.parseObject(a.toString(), clazz));
  147 + }
  148 +
  149 + return result;
  150 + }
  151 +
  152 + protected String generateResultString(JSONObject result, String msg, boolean success){
  153 + result.put("msg", msg);
  154 + result.put("success", success);
  155 + return result.toJSONString();
  156 + }
  157 +}
... ...
titan-web/src/main/java/com/dili/titan/common/utils/web/DateFormatUtils.java 0 → 100644
  1 +package com.dili.titan.common.utils.web;
  2 +
  3 +import java.text.ParseException;
  4 +import java.text.SimpleDateFormat;
  5 +import java.util.Calendar;
  6 +import java.util.Date;
  7 +
  8 +public class DateFormatUtils {
  9 + /**
  10 + * 英文简写(默认)如:2010-12-01
  11 + */
  12 + public static final String FORMAT_SHORT = "yyyy-MM-dd";
  13 + /**
  14 + * 英文全称 如:2010-12-01 23:15:06
  15 + */
  16 + public static final String FORMAT_LONG = "yyyy-MM-dd HH:mm:ss";
  17 + /**
  18 + * 精确到毫秒的完整时间 如:yyyy-MM-dd HH:mm:ss.S
  19 + */
  20 + public static final String FORMAT_FULL = "yyyy-MM-dd HH:mm:ss.S";
  21 + /**
  22 + * 中文简写 如:2010年12月01日
  23 + */
  24 + public static final String FORMAT_SHORT_CN = "yyyy年MM月dd";
  25 + /**
  26 + * 中文全称 如:2010年12月01日 23时15分06秒
  27 + */
  28 + public static final String FORMAT_LONG_CN = "yyyy年MM月dd日 HH时mm分ss秒";
  29 + /**
  30 + * 精确到毫秒的完整中文时间
  31 + */
  32 + public static final String FORMAT_FULL_CN = "yyyy年MM月dd日 HH时mm分ss秒SSS毫秒";
  33 + /**
  34 + * 获得默认的 date pattern
  35 + */
  36 + public static String getDatePattern() {
  37 + return FORMAT_LONG;
  38 + }
  39 + /**
  40 + * 根据预设格式返回当前日期
  41 + * @return
  42 + */
  43 + public static String getNow() {
  44 + return format(new Date());
  45 + }
  46 + /**
  47 + * 根据用户格式返回当前日期
  48 + * @param format
  49 + * @return
  50 + */
  51 + public static String getNow(String format) {
  52 + return format(new Date(), format);
  53 + }
  54 + /**
  55 + * 使用预设格式格式化日期
  56 + * @param date
  57 + * @return
  58 + */
  59 + public static String format(Date date) {
  60 + return format(date, getDatePattern());
  61 + }
  62 + /**
  63 + * 使用用户格式格式化日期
  64 + * @param date 日期
  65 + * @param pattern 日期格式
  66 + * @return
  67 + */
  68 + public static String format(Date date, String pattern) {
  69 + String returnValue = "";
  70 + if (date != null) {
  71 + SimpleDateFormat df = new SimpleDateFormat(pattern);
  72 + returnValue = df.format(date);
  73 + }
  74 + return (returnValue);
  75 + }
  76 + /**
  77 + * 使用预设格式提取字符串日期
  78 + * @param strDate 日期字符串
  79 + * @return
  80 + */
  81 + public static Date parse(String strDate) {
  82 + return parse(strDate, getDatePattern());
  83 + }
  84 + /**
  85 + * 使用用户格式提取字符串日期
  86 + * @param strDate 日期字符串
  87 + * @param pattern 日期格式
  88 + * @return
  89 + */
  90 + public static Date parse(String strDate, String pattern) {
  91 + SimpleDateFormat df = new SimpleDateFormat(pattern);
  92 + try {
  93 + return df.parse(strDate);
  94 + } catch (ParseException e) {
  95 + e.printStackTrace();
  96 + return null;
  97 + }
  98 + }
  99 + /**
  100 + * 在日期上增加数个整月
  101 + * @param date 日期
  102 + * @param n 要增加的月数
  103 + * @return
  104 + */
  105 + public static Date addMonth(Date date, int n) {
  106 + Calendar cal = Calendar.getInstance();
  107 + cal.setTime(date);
  108 + cal.add(Calendar.MONTH, n);
  109 + return cal.getTime();
  110 + }
  111 + /**
  112 + * 在日期上增加天数
  113 + * @param date 日期
  114 + * @param n 要增加的天数
  115 + * @return
  116 + */
  117 + public static Date addDay(Date date, int n) {
  118 + Calendar cal = Calendar.getInstance();
  119 + cal.setTime(date);
  120 + cal.add(Calendar.DATE, n);
  121 + return cal.getTime();
  122 + }
  123 + /**
  124 + * 获取时间戳
  125 + */
  126 + public static String getTimeString() {
  127 + SimpleDateFormat df = new SimpleDateFormat(FORMAT_FULL);
  128 + Calendar calendar = Calendar.getInstance();
  129 + return df.format(calendar.getTime());
  130 + }
  131 + /**
  132 + * 获取日期年份
  133 + * @param date 日期
  134 + * @return
  135 + */
  136 + public static String getYear(Date date) {
  137 + return format(date).substring(0, 4);
  138 + }
  139 + /**
  140 + * 按默认格式的字符串距离今天的天数
  141 + * @param date 日期字符串
  142 + * @return
  143 + */
  144 + public static int countDays (String date) {
  145 + long t = Calendar.getInstance().getTime().getTime();
  146 + Calendar c = Calendar.getInstance();
  147 + c.setTime(parse(date));
  148 + long t1 = c.getTime().getTime();
  149 + return (int)(t/1000 - t1/1000)/3600/24;
  150 + }
  151 + /**
  152 + * 按用户格式字符串距离今天的天数
  153 + * @param date 日期字符串
  154 + * @param format 日期格式
  155 + * @return
  156 + */
  157 + public static int countDays (String date, String format) {
  158 + long t = Calendar.getInstance().getTime().getTime();
  159 + Calendar c = Calendar.getInstance();
  160 + c.setTime(parse(date, format));
  161 + long t1 = c.getTime().getTime();
  162 + return (int)(t/1000 - t1/1000)/3600/24;
  163 + }
  164 +}
... ...