瀏覽代碼

牙刷618活动,好友助力

wangxiaoming 7 年之前
父節點
當前提交
7157e1492c
共有 19 個文件被更改,包括 956 次插入219 次删除
  1. 560 0
      pom.xml
  2. 1 3
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/ResultMsg.java
  3. 5 0
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/customized/CustomizedExternalUrl.java
  4. 5 0
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/customized/CustomizedTooth.java
  5. 4 0
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/customized/OrderCustomized.java
  6. 15 19
      tooth-common-core/src/main/java/com/iamberry/wechat/tools/WeixinUtil.java
  7. 0 133
      tooth-common-core/tooth-common-core.iml
  8. 24 4
      tooth-common-tool/src/main/java/com/iamberry/wechat/file/FileUtils.java
  9. 118 10
      tooth-common-tool/src/main/java/com/iamberry/wechat/tools/ImageUtils.java
  10. 30 0
      tooth-common-tool/src/main/java/com/iamberry/wechat/tools/PosterNumUtils.java
  11. 1 0
      tooth-common-tool/src/main/java/com/iamberry/wechat/tools/ResultInfo.java
  12. 3 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/couponItemMapper.xml
  13. 3 0
      tooth-wechat-web/pom.xml
  14. 84 21
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/coupon/CouponTypeHandler.java
  15. 26 29
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/customized/CustomizedHandler.java
  16. 4 0
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/order/OrderHandler.java
  17. 5 0
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/wechat/event/WeChatHandler.java
  18. 60 0
      tooth-wechat-web/src/main/java/com/iamberry/wechat/test/Test.java
  19. 8 0
      tooth-wechat-web/src/main/resources/iamberry-wechat-service-mybatis.xml

+ 560 - 0
pom.xml

@@ -0,0 +1,560 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<!-- iamberry 父配置 -->
+	<groupId>com.iamberry</groupId>
+	<artifactId>iamberry-parent</artifactId>
+	<version>1.0.0</version>
+
+	<!-- pom类型 -->
+	<packaging>pom</packaging>
+
+	<!-- 爱贝源仓库 -->
+	<repositories>
+		<!--<repository>
+            <id>spring-snapshots</id>
+            <url>http://repo.spring.io/snapshot</url>
+            <snapshots><enabled>true</enabled></snapshots>
+        </repository>
+        <repository>
+            <id>spring-milestones</id>
+            <url>http://repo.spring.io/milestone</url>
+        </repository>-->
+		<repository>
+			<id>Iamberr_Nexus</id>
+			<name>iamberry nexus</name>
+			<url>http://maven.iamberry.com/content/groups/public/</url>
+		</repository>
+	</repositories>
+
+	<!-- 插件地址 -->
+	<pluginRepositories>
+		<!--<pluginRepository>
+			<id>spring-snapshots</id>
+			<url>http://repo.spring.io/snapshot</url>
+		</pluginRepository>
+		<pluginRepository>
+			<id>spring-milestones</id>
+			<url>http://repo.spring.io/milestone</url>
+		</pluginRepository>-->
+		<pluginRepository>
+			<id>iamberry_nexus</id>
+			<url>http://maven.iamberry.com/content/groups/public/</url>
+		</pluginRepository>
+	</pluginRepositories>
+
+	<dependencyManagement>
+	     <dependencies>
+	        <dependency>
+	            <!-- Import dependency management from Spring Boot -->
+	            <groupId>org.springframework.boot</groupId>
+	            <artifactId>spring-boot-dependencies</artifactId>
+	            <version>1.4.1.RELEASE</version>
+	            <type>pom</type>
+	            <scope>import</scope>
+	        </dependency>
+	    </dependencies>
+	</dependencyManagement>
+
+	<distributionManagement>
+		<repository>
+			<id>releases</id>
+			<url>http://maven.iamberry.com/content/repositories/releases</url>
+		</repository>
+		<snapshotRepository>
+			<id>snapshots</id>
+			<url>http://maven.iamberry.com/content/repositories/snapshots</url>
+		</snapshotRepository>
+	</distributionManagement>
+
+	<!-- 隐性变量 -->
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<spring.version>4.3.2.RELEASE</spring.version>
+		<aspectj.version>1.8.7</aspectj.version>
+	</properties>
+
+	<dependencies>
+		<!--二维码 -->
+		<dependency>
+			<groupId>com.google.zxing</groupId>
+			<artifactId>core</artifactId>
+			<version>3.2.0</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.google.zxing</groupId>
+			<artifactId>javase</artifactId>
+			<version>3.2.0</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.jcraft</groupId>
+			<artifactId>jsch</artifactId>
+			<version>0.1.53</version>
+		</dependency>
+		<dependency>
+			<groupId>jaxen</groupId>
+			<artifactId>jaxen</artifactId>
+		</dependency>
+		
+		<!-- 单元测试 -->
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<scope>test</scope>
+		</dependency>
+
+		<!-- spring start -->
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-aop</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-aspects</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-beans</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-context</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-context-support</artifactId>
+			 <version>4.3.2.RELEASE</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-core</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-expression</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-jdbc</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-mock</artifactId>
+			<version>2.0.8</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-orm</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-test</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-tx</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-web</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-webmvc</artifactId>
+		</dependency>
+		<!-- spring end -->
+
+		<!-- 数据源 -->
+		<dependency>
+			<groupId>mysql</groupId>
+			<artifactId>mysql-connector-java</artifactId>
+			<scope>runtime</scope>
+		</dependency>
+
+		<!-- json -->
+		<dependency>
+			<groupId>org.codehaus.jackson</groupId>
+			<artifactId>jackson-mapper-lgpl</artifactId>
+			<version>1.9.12</version>
+		</dependency>
+		<dependency>
+			<groupId>org.codehaus.jackson</groupId>
+			<artifactId>jackson-core-lgpl</artifactId>
+			<version>1.9.12</version>
+		</dependency>
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-core</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-annotations</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-databind</artifactId>
+		</dependency>
+
+
+		<!-- freemarker依赖 -->
+		<dependency>
+			<groupId>org.freemarker</groupId>
+			<artifactId>freemarker</artifactId>
+		</dependency>
+
+		<!-- 基础包依赖 -->
+		<dependency>
+			<groupId>commons-lang</groupId>
+			<artifactId>commons-lang</artifactId>
+			<version>2.6</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-io</groupId>
+			<artifactId>commons-io</artifactId>
+			<version>2.4</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.httpcomponents</groupId>
+			<artifactId>httpclient</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.httpcomponents</groupId>
+			<artifactId>httpcore</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>commons-beanutils</groupId>
+			<artifactId>commons-beanutils</artifactId>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>commons-digester</groupId>
+			<artifactId>commons-digester</artifactId>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>commons-fileupload</groupId>
+			<artifactId>commons-fileupload</artifactId>
+			<version>1.3.1</version>
+		</dependency>
+		<dependency>
+			<groupId>com.google.guava</groupId>
+			<artifactId>guava</artifactId>
+			<version>16.0.1</version>
+		</dependency>
+
+		<!-- aspectj 依赖 -->
+		<dependency>
+			<groupId>org.aspectj</groupId>
+			<artifactId>aspectjrt</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.aspectj</groupId>
+			<artifactId>aspectjtools</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.aspectj</groupId>
+			<artifactId>aspectjweaver</artifactId>
+		</dependency>
+
+		<!-- displaytag -->
+		<dependency>
+			<groupId>displaytag</groupId>
+			<artifactId>displaytag</artifactId>
+			<version>1.2</version>
+			<exclusions>
+				<exclusion>
+					<groupId>org.slf4j</groupId>
+					<artifactId>jcl104-over-slf4j</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>jsptags</groupId>
+			<artifactId>pager-taglib</artifactId>
+			<version>2.0</version>
+		</dependency>
+
+		<!-- dom4j -->
+		<dependency>
+			<groupId>dom4j</groupId>
+			<artifactId>dom4j</artifactId>
+		</dependency>
+
+		<!-- redis -->
+		<dependency>
+			<groupId>redis.clients</groupId>
+			<artifactId>jedis</artifactId>
+		</dependency>
+
+		<!-- 日志 -->
+		<dependency>
+			<groupId>commons-logging</groupId>
+			<artifactId>commons-logging</artifactId>
+			<version>1.2</version>
+		</dependency>
+		<dependency>
+			<groupId>log4j</groupId>
+			<artifactId>log4j</artifactId>
+			<version>1.2.17</version>
+		</dependency>
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-api</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>jcl-over-slf4j</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-log4j12</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>joda-time</groupId>
+			<artifactId>joda-time</artifactId>
+		</dependency>
+
+		<!--代码生成 -->
+		<dependency>
+			<groupId>org.apache.velocity</groupId>
+			<artifactId>velocity</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>com.google.code.gson</groupId>
+			<artifactId>gson</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>fastjson</artifactId>
+			<version>1.2.6</version>
+		</dependency>
+		<dependency>
+		    <groupId>org.apache.commons</groupId>
+		    <artifactId>commons-lang3</artifactId>
+		    <version>3.4</version>
+		</dependency>
+		<dependency>
+			<groupId>com.nimbusds</groupId>
+			<artifactId>nimbus-jose-jwt</artifactId>
+			<version>4.11.2</version>
+		</dependency>
+		<dependency>
+			<groupId>xstream</groupId>
+			<artifactId>xstream</artifactId>
+			<version>1.2.1</version>
+		</dependency>
+		<dependency>
+			<groupId>net.sf.json-lib</groupId>
+			<artifactId>json-lib-ext-spring</artifactId>
+			<version>1.0.2</version>
+			<exclusions>
+				<exclusion>
+					<groupId>javax.servlet</groupId>
+	  				<artifactId>servlet-api</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		
+		<!-- .servlet-api -->
+		<dependency>
+		    <groupId>javax.servlet</groupId>
+		    <artifactId>javax.servlet-api</artifactId>
+		    <version>3.1.0</version>
+		</dependency>
+				
+		
+		<dependency>
+		    <groupId>org.apache.poi</groupId>
+		    <artifactId>poi</artifactId>
+		    <version>3.14</version>
+		</dependency>
+
+		<dependency>
+		    <groupId>com.mortennobel</groupId>
+		    <artifactId>java-image-scaling</artifactId>
+		    <version>0.8.5</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>QRCode</groupId>
+			<artifactId>QRCode</artifactId>
+			<version>3.0</version>
+		</dependency>
+		
+		<dependency>
+		    <groupId>com.github.sogyf</groupId>
+		    <artifactId>goja-qrcode</artifactId>
+		    <version>0.1.2</version>
+		</dependency>
+			
+		
+		<dependency>
+		    <groupId>jdom</groupId>
+		    <artifactId>jdom</artifactId>
+		    <version>1.0</version>
+		</dependency>
+				
+		<dependency>
+		    <groupId>jexcelapi</groupId>
+		    <artifactId>jxl</artifactId>
+		    <version>2.4.2</version>
+		</dependency>
+				
+		<!-- 依赖 -->
+		 <dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>jstl</artifactId>
+			<version>1.2</version>
+	  	</dependency>
+
+		<!-- owasp -->
+		<dependency>
+			<groupId>org.owasp.antisamy</groupId>
+			<artifactId>antisamy</artifactId>
+			<version>1.4.3</version>
+		</dependency>
+		<dependency>
+			<groupId>org.owasp.esapi</groupId>
+			<artifactId>esapi</artifactId>
+			<version>2.1.0</version>
+		</dependency>
+
+		<!-- mybatis -->
+		<dependency>
+			<groupId>org.mybatis</groupId>
+			<artifactId>mybatis</artifactId>
+			<version>3.2.8</version>
+		</dependency>
+		<dependency>
+			<groupId>org.mybatis</groupId>
+			<artifactId>mybatis-spring</artifactId>
+			<version>1.2.2</version>
+		</dependency>
+
+		<dependency>
+			<groupId>oro</groupId>
+			<artifactId>oro</artifactId>
+			<version>2.0.8</version>
+		</dependency>
+
+		<!-- zookeeper server -->
+		<dependency>
+			<groupId>org.apache.zookeeper</groupId>
+			<artifactId>zookeeper</artifactId>
+			<version>3.4.6</version>
+			<type>pom</type>
+		</dependency>
+
+		<!-- zookeeper client -->
+		<dependency>
+			<groupId>com.101tec</groupId>
+			<artifactId>zkclient</artifactId>
+			<version>0.3</version>
+		</dependency>
+
+		<!-- dubbo -->
+		<dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>dubbo</artifactId>
+			<version>2.5.3</version>
+			<exclusions>
+				<exclusion>
+					<artifactId>spring</artifactId>
+					<groupId>org.springframework</groupId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		
+		<!-- 校验框架 -->
+		<dependency>
+		    <groupId>org.hibernate</groupId>
+		    <artifactId>hibernate-validator</artifactId>
+		</dependency>
+		
+		<!-- 依赖 -->
+		<dependency>
+			<groupId>org.apache.httpcomponents</groupId>
+			<artifactId>httpmime</artifactId>
+			<version>4.3.6</version>
+		</dependency>
+		
+		<dependency>
+		    <groupId>org.json</groupId>
+		    <artifactId>json</artifactId>
+		    <version>20160212</version>
+		</dependency>
+		
+		<dependency>
+		    <groupId>cn.jpush.api</groupId>
+		    <artifactId>jpush-client</artifactId>
+		    <version>3.2.8</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-websocket</artifactId>
+			<version>4.1.3.RELEASE</version>
+		</dependency>
+
+		<!-- mybatis分页 -->
+		<dependency>
+			<groupId>com.github.pagehelper</groupId>
+			<artifactId>pagehelper</artifactId>
+			<version>5.0.1</version>
+		</dependency>
+	</dependencies>
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+				<version>1.4.0.RELEASE</version>
+			</plugin>
+		</plugins>
+		<defaultGoal>compile</defaultGoal>
+	</build>
+
+	<modules>
+		<module>tooth-common-core</module>
+		<module>tooth-common-tool</module>
+		<module>tooth-common-web</module>
+		<module>tooth-wechat-interface</module>
+		<module>tooth-wechat-service</module>
+		<module>tooth-wechat-web</module>
+	</modules>
+
+    <!-- 配置 -->
+    <profiles>
+        <profile>
+            <id>jdk-1.7</id>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+                <jdk>1.7</jdk>
+            </activation>
+            <properties>
+                <maven.compiler.source>1.7</maven.compiler.source>
+                <maven.compiler.target>1.7</maven.compiler.target>
+                <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
+            </properties>
+        </profile>
+		<profile>
+			<id>sonar</id>
+			<activation>
+				<activeByDefault>true</activeByDefault>
+			</activation>
+			<properties>
+				<sonar.host.url>http://sonar.iamberry.com/</sonar.host.url>
+				<sonar.login>admin</sonar.login>
+				<sonar.password>iamberry123</sonar.password>
+			</properties>
+		</profile>
+    </profiles>
+</project>

+ 1 - 3
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/ResultMsg.java

@@ -28,9 +28,7 @@ public class ResultMsg implements java.io.Serializable{
 	public static ResultMsg getSuccess(){
 		return new ResultMsg(true, "200", "success",null);
 	}
-	public static ResultMsg getError(){
-		return new ResultMsg(true, "500", "error",null);
-	}
+	public static ResultMsg getError(){return new ResultMsg(false, "500", "error",null);	}
 
 	public ResultMsg(){}
 	

+ 5 - 0
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/customized/CustomizedExternalUrl.java

@@ -1,5 +1,8 @@
 package com.iamberry.wechat.core.entity.customized;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
 import  java.util.Date;
 import  java.io.Serializable;
 /**
@@ -16,6 +19,8 @@ public class CustomizedExternalUrl  implements  Serializable{
     //二维码位置
     private String externalImg;
     //创建时间'
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
     private Date externalCreateTime;
 
     public Integer getExternalUrlId(){

+ 5 - 0
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/customized/CustomizedTooth.java

@@ -1,5 +1,8 @@
 package com.iamberry.wechat.core.entity.customized;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
 import  java.util.Date;
 import  java.io.Serializable;
 /**
@@ -36,6 +39,8 @@ public class CustomizedTooth  implements  Serializable{
     //状态:1:正常 2:作废
     private Integer toothStatus;
     //创建时间'
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
     private Date toothCreateTime;
 
     public Integer getToothId(){

+ 4 - 0
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/customized/OrderCustomized.java

@@ -1,6 +1,8 @@
 package com.iamberry.wechat.core.entity.customized;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.iamberry.wechat.core.entity.order.Order;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import  java.util.Date;
 import  java.io.Serializable;
@@ -60,6 +62,8 @@ public class OrderCustomized  implements  Serializable{
     //状态 1:正常 2:外部订单未上传
     private Integer customizedStatus;
     //创建时间'
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
     private Date customizedCreateTime;
 
     //电话号码

+ 15 - 19
tooth-common-core/src/main/java/com/iamberry/wechat/tools/WeixinUtil.java

@@ -1,5 +1,14 @@
 package com.iamberry.wechat.tools;
 
+import com.iamberry.cache.LocalCache;
+import com.iamberry.wechat.core.entity.wx.*;
+import net.sf.json.JSONObject;
+import org.slf4j.LoggerFactory;
+
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
 import java.io.BufferedReader;
 import java.io.InputStream;
 import java.io.InputStreamReader;
@@ -10,28 +19,11 @@ import java.net.URLEncoder;
 import java.util.Date;
 import java.util.logging.Logger;
 
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSocketFactory;
-import javax.net.ssl.TrustManager;
-
-import net.sf.json.JSONObject;
-
-import org.slf4j.LoggerFactory;
-
-import com.iamberry.cache.LocalCache;
-import com.iamberry.wechat.core.entity.wx.AccessToken;
-import com.iamberry.wechat.core.entity.wx.ITTempLate;
-import com.iamberry.wechat.core.entity.wx.Menu;
-import com.iamberry.wechat.core.entity.wx.QRCJson;
-import com.iamberry.wechat.core.entity.wx.Ticket;
-import com.iamberry.wechat.core.entity.wx.Token;
-
 /**
  * 公众平台通用接口工具类
- * 
+ *
  * @author fzh
- * 
+ *
  */
 public class WeixinUtil {
 	
@@ -509,4 +501,8 @@ public class WeixinUtil {
 			}
 		}
 	}
+
+
+
+
 }

+ 0 - 133
tooth-common-core/tooth-common-core.iml

@@ -1,133 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
-  <component name="FacetManager">
-    <facet type="Spring" name="Spring">
-      <configuration />
-    </facet>
-  </component>
-  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
-    <output url="file://$MODULE_DIR$/target/classes" />
-    <output-test url="file://$MODULE_DIR$/target/test-classes" />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <excludeFolder url="file://$MODULE_DIR$/target" />
-    </content>
-    <orderEntry type="jdk" jdkName="1.7" jdkType="JavaSDK" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="module" module-name="tooth-common-tool" />
-    <orderEntry type="module" module-name="tooth-common-tool" />
-    <orderEntry type="library" name="Maven: com.auth0:java-jwt:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.1.2" level="project" />
-    <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:1.0" level="project" />
-    <orderEntry type="library" name="Maven: com.google.zxing:core:3.2.0" level="project" />
-    <orderEntry type="library" name="Maven: com.google.zxing:javase:3.2.0" level="project" />
-    <orderEntry type="library" name="Maven: com.jcraft:jsch:0.1.53" level="project" />
-    <orderEntry type="library" name="Maven: jaxen:jaxen:1.1.6" level="project" />
-    <orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" />
-    <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.4.01" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-aop:4.3.3.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-aspects:4.3.3.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.3.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-context:4.3.3.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-context-support:4.3.2.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-core:4.3.3.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-expression:4.3.3.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:4.3.3.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-mock:2.0.8" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-orm:4.3.3.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-test:4.3.3.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-tx:4.3.3.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-web:4.3.3.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:4.3.3.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: commons-dbcp:commons-dbcp:1.4" level="project" />
-    <orderEntry type="library" name="Maven: commons-pool:commons-pool:1.6" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: mysql:mysql-connector-java:5.1.39" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-lgpl:1.9.12" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-lgpl:1.9.12" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.8.3" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.8.3" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.8.3" level="project" />
-    <orderEntry type="library" name="Maven: org.freemarker:freemarker:2.3.25-incubating" level="project" />
-    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
-    <orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.2" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.5" level="project" />
-    <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.2" level="project" />
-    <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
-    <orderEntry type="library" name="Maven: commons-digester:commons-digester:2.1" level="project" />
-    <orderEntry type="library" name="Maven: commons-fileupload:commons-fileupload:1.3.1" level="project" />
-    <orderEntry type="library" name="Maven: com.google.guava:guava:16.0.1" level="project" />
-    <orderEntry type="library" name="Maven: org.aspectj:aspectjrt:1.8.9" level="project" />
-    <orderEntry type="library" name="Maven: org.aspectj:aspectjtools:1.8.9" level="project" />
-    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.8.9" level="project" />
-    <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
-    <orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.21" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.21" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:slf4j-log4j12:1.7.21" level="project" />
-    <orderEntry type="library" name="Maven: joda-time:joda-time:2.9.4" level="project" />
-    <orderEntry type="library" name="Maven: displaytag:displaytag:1.2" level="project" />
-    <orderEntry type="library" name="Maven: com.lowagie:itext:1.3" level="project" />
-    <orderEntry type="library" name="Maven: jsptags:pager-taglib:2.0" level="project" />
-    <orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: redis.clients:jedis:2.8.1" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.4.2" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.velocity:velocity:1.7" level="project" />
-    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.7" level="project" />
-    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.6" level="project" />
-    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.10" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.4" level="project" />
-    <orderEntry type="library" name="Maven: com.nimbusds:nimbus-jose-jwt:4.11.2" level="project" />
-    <orderEntry type="library" name="Maven: net.jcip:jcip-annotations:1.0" level="project" />
-    <orderEntry type="library" name="Maven: net.minidev:json-smart:1.3.1" level="project" />
-    <orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.2.1" level="project" />
-    <orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.3.4.O" level="project" />
-    <orderEntry type="library" name="Maven: net.sf.json-lib:json-lib-ext-spring:1.0.2" level="project" />
-    <orderEntry type="library" name="Maven: net.sf.json-lib:json-lib:jdk15:2.2.2" level="project" />
-    <orderEntry type="library" name="Maven: net.sf.ezmorph:ezmorph:1.0.4" level="project" />
-    <orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.poi:poi:3.14" level="project" />
-    <orderEntry type="library" name="Maven: com.mortennobel:java-image-scaling:0.8.5" level="project" />
-    <orderEntry type="library" name="Maven: com.jhlabs:filters:2.0.235" level="project" />
-    <orderEntry type="library" name="Maven: QRCode:QRCode:3.0" level="project" />
-    <orderEntry type="library" name="Maven: com.github.sogyf:goja-qrcode:0.1.2" level="project" />
-    <orderEntry type="library" name="Maven: jdom:jdom:1.0" level="project" />
-    <orderEntry type="library" name="Maven: jexcelapi:jxl:2.4.2" level="project" />
-    <orderEntry type="library" name="Maven: javax.servlet:jstl:1.2" level="project" />
-    <orderEntry type="library" name="Maven: org.owasp.antisamy:antisamy:1.4.3" level="project" />
-    <orderEntry type="library" name="Maven: xerces:xercesImpl:2.8.1" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-css:1.7" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-ext:1.7" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-util:1.7" level="project" />
-    <orderEntry type="library" name="Maven: xml-apis:xml-apis-ext:1.3.04" level="project" />
-    <orderEntry type="library" name="Maven: net.sourceforge.nekohtml:nekohtml:1.9.22" level="project" />
-    <orderEntry type="library" name="Maven: commons-httpclient:commons-httpclient:3.1" level="project" />
-    <orderEntry type="library" name="Maven: org.owasp.esapi:esapi:2.1.0" level="project" />
-    <orderEntry type="library" name="Maven: commons-configuration:commons-configuration:1.5" level="project" />
-    <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils-core:1.7.0" level="project" />
-    <orderEntry type="library" name="Maven: xom:xom:1.2.5" level="project" />
-    <orderEntry type="library" name="Maven: xalan:xalan:2.7.0" level="project" />
-    <orderEntry type="library" name="Maven: org.beanshell:bsh-core:2.0b4" level="project" />
-    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.2.8" level="project" />
-    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:1.2.2" level="project" />
-    <orderEntry type="library" name="Maven: c3p0:c3p0:0.9.1.2" level="project" />
-    <orderEntry type="library" name="Maven: oro:oro:2.0.8" level="project" />
-    <orderEntry type="library" name="Maven: jline:jline:0.9.94" level="project" />
-    <orderEntry type="library" name="Maven: com.101tec:zkclient:0.3" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.zookeeper:zookeeper:3.3.1" level="project" />
-    <orderEntry type="library" name="Maven: com.alibaba:dubbo:2.5.3" level="project" />
-    <orderEntry type="library" name="Maven: org.javassist:javassist:3.20.0-GA" level="project" />
-    <orderEntry type="library" name="Maven: org.jboss.netty:netty:3.2.5.Final" level="project" />
-    <orderEntry type="library" name="Maven: javax.validation:validation-api:1.1.0.Final" level="project" />
-    <orderEntry type="library" name="Maven: org.hibernate:hibernate-validator:5.2.4.Final" level="project" />
-    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.0.Final" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.3.1" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.3.6" level="project" />
-    <orderEntry type="library" name="Maven: org.json:json:20160212" level="project" />
-    <orderEntry type="library" name="Maven: cn.jpush.api:jpush-client:3.2.8" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-websocket:4.1.3.RELEASE" level="project" />
-  </component>
-</module>

+ 24 - 4
tooth-common-tool/src/main/java/com/iamberry/wechat/file/FileUtils.java

@@ -1,9 +1,6 @@
 package com.iamberry.wechat.file;
 
-import java.io.File;
-import java.io.FilePermission;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
 import java.security.SecureRandom;
 import java.util.Date;
 import java.util.UUID;
@@ -160,4 +157,27 @@ public class FileUtils {
 		}
 		return null;
 	}
+
+	/**复制文件的方法*/
+	public static void copyFile(String oldPath, String newPath) {
+		try {
+			int bytesum = 0;
+			int byteread = 0;
+			File oldfile = new File(oldPath);
+			if (oldfile.exists()) { //文件存在时
+				InputStream inStream = new FileInputStream(oldPath); //读入原文件
+				FileOutputStream fs = new FileOutputStream(newPath);
+				byte[] buffer = new byte[1444];
+				while ((byteread = inStream.read(buffer)) != -1) {
+					bytesum += byteread; //字节数 文件大小
+					fs.write(buffer, 0, byteread);
+				}
+				inStream.close();
+				fs.close();
+			}
+		} catch (Exception e) {
+			System.out.println("复制单个文件操作出错");
+			e.printStackTrace();
+		}
+	}
 }

+ 118 - 10
tooth-common-tool/src/main/java/com/iamberry/wechat/tools/ImageUtils.java

@@ -1,20 +1,16 @@
 package com.iamberry.wechat.tools;
-import java.awt.AlphaComposite;
-import java.awt.Color;
-import java.awt.Font;
-import java.awt.Graphics2D;
-import java.awt.Image;
+
+import com.mortennobel.imagescaling.ResampleFilters;
+import com.mortennobel.imagescaling.ResampleOp;
+
+import javax.imageio.ImageIO;
+import java.awt.*;
 import java.awt.geom.AffineTransform;
 import java.awt.image.AffineTransformOp;
 import java.awt.image.BufferedImage;
 import java.io.File;
 import java.io.IOException;
 
-import javax.imageio.ImageIO;
-
-import com.mortennobel.imagescaling.ResampleFilters;
-import com.mortennobel.imagescaling.ResampleOp;
-
 /**
  * 图片工具类, 图片水印,文字水印,缩放,补白等 <br>
  * 注意: 如果上传了图片,一定要使用此类对图片进行水印,防止恶意图片,或者对图片进行缩放
@@ -124,6 +120,112 @@ public final class ImageUtils {
             e.printStackTrace();
         }
     }
+
+    /**
+     * 生成海报
+     */
+    public static void pressPost(String targetImg,
+                                 String srcImg1, int imgx1, int imgy1,
+                                 String srcImg2, int imgx2, int imgy2,
+                                 String pressText, int x, int y,Color colorName,int sizeNum
+        ) throws Exception{
+            String fontName = "宋体";
+            int fontStyle = Font.BOLD;
+            int fontSize = 25;
+            Color color = Color.RED;
+            float alpha = 1;
+
+            /**
+             * 水印文字
+             */
+            File file = new File(targetImg);
+            Image image = ImageIO.read(file);
+            int width = image.getWidth(null);
+            int height = image.getHeight(null);
+            BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+            Graphics2D g = bufferedImage.createGraphics();
+            g.drawImage(image, 0, 0, width, height, null);
+            g.setFont(new Font(fontName, fontStyle, fontSize));
+            g.setColor(color);
+            g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));
+
+            int width_1 = fontSize * getLength(pressText);
+            int height_1 = fontSize;
+            int widthDiff = width - width_1;
+            int heightDiff = height - height_1;
+            if(x < 0){
+                x = widthDiff / 2;
+            }else if(x > widthDiff){
+                x = widthDiff;
+            }
+            if(y < 0){
+                y = heightDiff / 2;
+            }else if(y > heightDiff){
+                y = heightDiff;
+            }
+            g.drawString(pressText, x, y + height_1);
+
+            Image tarImage = ImageIO.read(new File(srcImg1));
+            g.drawImage(tarImage, imgx1, imgy1, tarImage.getWidth(null), tarImage.getHeight(null), null); // 水印文件结束
+
+            Image tarImage2 = ImageIO.read(new File(srcImg2));
+            g.drawImage(tarImage2, imgx2, imgy2, tarImage2.getWidth(null), tarImage2.getHeight(null), null); // 水印文件结束
+
+            g.dispose();
+            ImageIO.write(bufferedImage, targetImg.substring(targetImg.lastIndexOf(".") + 1), file);
+    }
+
+
+    /**
+     * 添加文字水印
+     * @param targetImg 目标图片路径,如:C://myPictrue//1.jpg
+     * @param pressText 水印文字, 如:中国证券网
+     * @param x 水印文字距离目标图片左侧的偏移量,如果x<0, 则在正中间
+     * @param y 水印文字距离目标图片上侧的偏移量,如果y<0, 则在正中间
+     */
+    public static void pressText(String targetImg, String pressText, int x, int y,Color colorName,int sizeNum) {
+        try {
+            String fontName = "宋体";
+            int fontStyle = Font.BOLD;
+            int fontSize = sizeNum;
+            Color color = colorName;
+            float alpha = 1;
+            /**
+             * 水印文字
+             */
+            File file = new File(targetImg);
+            Image image = ImageIO.read(file);
+            int width = image.getWidth(null);
+            int height = image.getHeight(null);
+            BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+            Graphics2D g = bufferedImage.createGraphics();
+            g.drawImage(image, 0, 0, width, height, null);
+            g.setFont(new Font(fontName, fontStyle, fontSize));
+            g.setColor(color);
+            g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));
+
+            int width_1 = fontSize * getLength(pressText);
+            int height_1 = fontSize;
+            int widthDiff = width - width_1;
+            int heightDiff = height - height_1;
+            if(x < 0){
+                x = widthDiff / 2;
+            }else if(x > widthDiff){
+                x = widthDiff;
+            }
+            if(y < 0){
+                y = heightDiff / 2;
+            }else if(y > heightDiff){
+                y = heightDiff;
+            }
+            g.drawString(pressText, x, y + height_1);
+
+            g.dispose();
+            ImageIO.write(bufferedImage, targetImg.substring(targetImg.lastIndexOf(".") + 1), file);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
     
     /**
      * 获取字符长度,一个汉字作为 1 个字符, 一个英文字母作为 0.5 个字符
@@ -217,6 +319,10 @@ public final class ImageUtils {
         	return false;
         }
     }
+
+
+
+
     public static void main(String[] args) throws IOException {
     	long l = System.currentTimeMillis();
 //    	reSize("D://abcdefgj1.jpg", 0.5, 0.5);
@@ -226,4 +332,6 @@ public final class ImageUtils {
     	System.out.println(System.currentTimeMillis() - l);
         // resize("C://pic//4.jpg", 1000, 500, true);
     }
+
+
 }

+ 30 - 0
tooth-common-tool/src/main/java/com/iamberry/wechat/tools/PosterNumUtils.java

@@ -0,0 +1,30 @@
+package com.iamberry.wechat.tools;
+
+
+import org.springframework.stereotype.Component;
+
+
+@Component
+public class PosterNumUtils {
+    public static final String IMG_PATH = "common/images/activity/";
+    public static final String OLD_IMG_PATH = "common/images/activity/ditu.jpg";
+
+    public static final int CODE_WIDTH = 100;
+    public static final int CODE_HEIGHT = 100;
+
+    public static final int HEAD_WIDTH = 80;
+    public static final int HEAD_HEIGHT = 80;
+
+    public static final int TEXT_X = 100;
+    public static final int TEXT_Y = 30;
+
+    public static final int HEAD_X = 20;
+    public static final int HEAD_Y = 20;
+
+    public static final int CODE_X = 400;
+    public static final int CODE_Y = 600;
+
+    public static final int TEXT_FONT_SIZE = 30;
+
+
+}

+ 1 - 0
tooth-common-tool/src/main/java/com/iamberry/wechat/tools/ResultInfo.java

@@ -31,6 +31,7 @@ public class ResultInfo {
 	public  static String lostMemberInfo="";
 
 	public  static String barCodePrefix="MACHINE_QR_CODE";
+	public  static String barCodeActivity="OPENID";
 	/**
 	 * 初始化代理商信息openid成功前缀
 	 */

+ 3 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/couponItemMapper.xml

@@ -52,6 +52,9 @@
 			<if test="couponItemRemark != null and couponItemRemark != ''">
 				AND CI.COUPON_USE_STATUS != 2
 			</if>
+			<if test="couponIsNewPeople != null and couponIsNewPeople != ''">
+				AND CT.coupon_is_new_people = #{couponIsNewPeople}
+			</if>
 		</where>
 		ORDER BY CI.COUPON_RECEIVE_DATE DESC
 		<if test="page!=null and page.recordBegin>0 and page.pageSize>0 ">

+ 3 - 0
tooth-wechat-web/pom.xml

@@ -73,6 +73,8 @@
         </plugins>
     </build>
 
+
+
     <!-- 配置 -->
     <profiles>
         <profile>
@@ -95,4 +97,5 @@
             <url>http://maven.iamberry.com/content/groups/public/</url>
         </repository>
     </repositories>
+
 </project>

+ 84 - 21
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/coupon/CouponTypeHandler.java

@@ -4,6 +4,8 @@ import java.util.*;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.iamberry.wechat.core.entity.activity.Activity;
+import com.iamberry.wechat.face.activity.ActivityService;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -43,6 +45,10 @@ public class CouponTypeHandler {
 	private MemberService memberService;
 	@Autowired
 	private SystemService systemService;
+
+	@Autowired
+	private ActivityService activityService;
+
 	private static Logger logger = LoggerFactory
 			.getLogger(CouponTypeHandler.class);
 	/**
@@ -514,21 +520,49 @@ public class CouponTypeHandler {
 	}
 
 	/**
-	 * 获取用户是否已领取优惠券
+	 * 获取用户是否已领取优惠券 -20000
 	 * @param request
 	 * @return
 	 */
 	@ResponseBody
 	@RequestMapping("/getIsReceive")
-	public ResultMsg getIsReceive(HttpServletRequest request){
+	public ResultMsg getIsReceive(HttpServletRequest request) {
 		ResultMsg resultMsg = new ResultMsg();
 		Member memberInfo = WechatUtils.getUserBySession(request);
 
 		memberInfo = memberService.getMemberByUserOpenId(memberInfo.getUserOpenid());
 
-		Integer msg = couponItemService.getIsReceive(memberInfo.getUserOpenid());
-
-		if(msg > 0){
+//		Integer msg = couponItemService.getIsReceive(memberInfo.getUserOpenid());
+		CouponItemDto couponItemDto = new CouponItemDto();
+		couponItemDto.setUseropenid(memberInfo.getUserOpenid());
+		couponItemDto.setCouponIsNewPeople(1);
+		List<CouponItemDto> couponItemDtoList = couponItemService.getCouponItemDtoList(couponItemDto);
+
+		Activity activity = new Activity();
+		activity.setUserOpenId(memberInfo.getUserOpenid());
+		List<Activity> activityList = activityService.getActivityList(activity);
+
+		boolean flag = true;
+		if (couponItemDtoList != null && couponItemDtoList.size() > 0) {
+			if(couponItemDtoList.size() > 1){
+				flag = false;
+			}else{
+				if (activityList != null && activityList.size() > 0) {
+					Activity ac = activityList.get(0);
+					CouponItemDto ci = couponItemDtoList.get(0);
+					if(ac.getActivityCoupon().equals(ci.getCouponItemId()) ){
+						flag = true;
+					}else{
+						flag = false;
+					}
+				}else{
+					flag = false;
+				}
+			}
+		}else{	//未领取优惠券
+			flag = true;
+		}
+		if (!flag) {
 			resultMsg.setResultCode(ResultInfo.ERRORCODE);
 			resultMsg.setStatus(false);
 			resultMsg.setMessage("已领取优惠券");
@@ -549,29 +583,58 @@ public class CouponTypeHandler {
 	}
 
 	/**
-	 * 点击领取新人优惠券(为当前用户新增一条优惠券)
+	 * 点击领取新人优惠券(为当前用户新增一条优惠券)20000
 	 * @param request
 	 * @return
 	 */
-
 	@ResponseBody
 	@RequestMapping("/addAewPeople")
 	public ResultMsg addAewPeople(HttpServletRequest request){
 		ResultMsg resultMsg = new ResultMsg();
 		Member memberInfo = WechatUtils.getUserBySession(request);
-		CouponType couponType = new CouponType();
-		couponType.setCouponIsNewPeople(1);
-		couponType.setPage(new PageBean());
-		List<CouponType> couponTypeList = couponTypeService.getCouponTypeList(couponType);
-		if(couponTypeList == null || couponTypeList.size() < 1){
-			resultMsg.setResultCode(ResultInfo.ERRORCODE);
-			resultMsg.setStatus(false);
-			return resultMsg;
-		}
-
-		Integer msg = couponItemService.getIsReceive(memberInfo.getUserOpenid());
 		memberInfo = memberService.getMemberByUserOpenId(memberInfo.getUserOpenid());
-		if(msg > 0){
+//		CouponType couponType = new CouponType();
+//		couponType.setCouponIsNewPeople(1);
+//		couponType.setPage(new PageBean());
+//		List<CouponType> couponTypeList = couponTypeService.getCouponTypeList(couponType);
+//		if(couponTypeList == null || couponTypeList.size() < 1){
+//			resultMsg.setResultCode(ResultInfo.ERRORCODE);
+//			resultMsg.setStatus(false);
+//			return resultMsg;
+//		}
+
+//		Integer msg = couponItemService.getIsReceive(memberInfo.getUserOpenid());
+
+		CouponItemDto couponItemDto = new CouponItemDto();
+		couponItemDto.setUseropenid(memberInfo.getUserOpenid());
+		couponItemDto.setCouponIsNewPeople(1);
+		List<CouponItemDto> couponItemDtoList = couponItemService.getCouponItemDtoList(couponItemDto);
+
+		Activity activity = new Activity();
+		activity.setUserOpenId(memberInfo.getUserOpenid());
+		List<Activity> activityList = activityService.getActivityList(activity);
+
+		boolean flag = true;
+		if (couponItemDtoList != null && couponItemDtoList.size() > 0) {
+			if(couponItemDtoList.size() > 1){
+				flag = false;
+			}else{
+				if (activityList != null && activityList.size() > 0) {
+					Activity ac = activityList.get(0);
+					CouponItemDto ci = couponItemDtoList.get(0);
+					if(ac.getActivityCoupon().equals(ci.getCouponItemId()) ){
+						flag = true;
+					}else{
+						flag = false;
+					}
+				}else{
+					flag = false;
+				}
+			}
+		}else{	//未领取优惠券
+			flag = true;
+		}
+		if (!flag) {
 			resultMsg.setResultCode(ResultInfo.ERRORCODE);
 			resultMsg.setStatus(false);
 			resultMsg.setMessage("领取失败,该用户已领取过优惠券");
@@ -607,7 +670,7 @@ public class CouponTypeHandler {
 
 
 	/**
-	 * 获取用户是否已领取优惠券
+	 * 获取用户是否已领取优惠券 30000
 	 * @param request
 	 * @return
 	 */
@@ -650,7 +713,7 @@ public class CouponTypeHandler {
 	}
 
 	/**
-	 * 领取优惠券
+	 * 领取优惠券 30000
 	 * @param request
 	 * @return
 	 */

+ 26 - 29
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/customized/CustomizedHandler.java

@@ -22,12 +22,9 @@ import sun.misc.BASE64Decoder;
 import javax.servlet.http.HttpServletRequest;
 import java.io.File;
 import java.io.FileOutputStream;
-import java.io.OutputStream;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.Random;
 
 /**
  *  定制牙刷
@@ -101,8 +98,8 @@ public class CustomizedHandler {
     @RequestMapping("/upload_avatar")
     @ResponseBody
     public ResultMsg uploadAvatar(HttpServletRequest req,String avatarImg){
-        Member member = WechatUtils.getUserBySession(req);
-        member = memberService.getMemberByUserOpenId(member.getUserOpenid());
+//        Member member = WechatUtils.getUserBySession(req);
+//        member = memberService.getMemberByUserOpenId(member.getUserOpenid());
 
         ResultMsg rm = ResultMsg.getSuccess();
         if(avatarImg == null || "".equals(avatarImg)){
@@ -238,30 +235,30 @@ public class CustomizedHandler {
      * 生成位置集合
      * @return
      */
-    @RequestMapping("/gp")
-    @ResponseBody
-    public ResultMsg generatedPosition(HttpServletRequest req){
-        ResultMsg rm = ResultMsg.getSuccess();
-        List<CustomizedPosition> customizedPositionList = new ArrayList<>();
-        List<CustomizedPattern> customizedPatternList = customizedPatternService.getCustomizedPatternList(new CustomizedPattern());
-        for (CustomizedPattern customizedPattern:customizedPatternList) {
-            for (int i=0;i<4;i++){
-                CustomizedPosition customizedPosition = new CustomizedPosition();
-                customizedPosition.setPatternId(customizedPattern.getPatternId());
-                customizedPosition.setPositionType(i+1);  //位置类型 1:正面 2:右侧 3:反面 4:左侧
-                customizedPosition.setPositionPatternX(1000);
-                customizedPosition.setPositionPatternY(1000);
-                customizedPosition.setPositionAvatarX(1000);
-                customizedPosition.setPositionAvatarY(1000);
-                customizedPosition.setPositionTextX(1000);
-                customizedPosition.setPositionTextY(1000);
-                customizedPosition.setPositionStatus(1);
-                customizedPositionList.add(customizedPosition);
-            }
-        }
-        Integer flag = customizedPositionService.saveList(customizedPositionList);
-        return rm;
-    }
+//    @RequestMapping("/gp")
+//    @ResponseBody
+//    public ResultMsg generatedPosition(HttpServletRequest req){
+//        ResultMsg rm = ResultMsg.getSuccess();
+//        List<CustomizedPosition> customizedPositionList = new ArrayList<>();
+//        List<CustomizedPattern> customizedPatternList = customizedPatternService.getCustomizedPatternList(new CustomizedPattern());
+//        for (CustomizedPattern customizedPattern:customizedPatternList) {
+//            for (int i=0;i<4;i++){
+//                CustomizedPosition customizedPosition = new CustomizedPosition();
+//                customizedPosition.setPatternId(customizedPattern.getPatternId());
+//                customizedPosition.setPositionType(i+1);  //位置类型 1:正面 2:右侧 3:反面 4:左侧
+//                customizedPosition.setPositionPatternX(1000);
+//                customizedPosition.setPositionPatternY(1000);
+//                customizedPosition.setPositionAvatarX(1000);
+//                customizedPosition.setPositionAvatarY(1000);
+//                customizedPosition.setPositionTextX(1000);
+//                customizedPosition.setPositionTextY(1000);
+//                customizedPosition.setPositionStatus(1);
+//                customizedPositionList.add(customizedPosition);
+//            }
+//        }
+//        Integer flag = customizedPositionService.saveList(customizedPositionList);
+//        return rm;
+//    }
 
 
 

+ 4 - 0
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/order/OrderHandler.java

@@ -390,6 +390,10 @@ public class OrderHandler {
 			}
 		}
 
+		if(temp.getIsCustomize() == null || "".equals(temp.getIsCustomize())){		//默认为1
+			temp.setIsCustomize("1");
+		}
+
 		List<CartDto> cartDtos = new ArrayList<>();
 		if("1".equals(temp.getIsCustomize())){	//  1:普通牙刷购买  2:定制牙刷购买
 			Integer [] cartId = null;

+ 5 - 0
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/wechat/event/WeChatHandler.java

@@ -7,6 +7,7 @@ import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.iamberry.wechat.tools.ImageUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -64,4 +65,8 @@ public class WeChatHandler {
         out.print(respMessage);
         out.close();
 	}
+
+
+
+
 }

+ 60 - 0
tooth-wechat-web/src/main/java/com/iamberry/wechat/test/Test.java

@@ -0,0 +1,60 @@
+package com.iamberry.wechat.test;
+
+import com.iamberry.wechat.file.FileUtils;
+import com.iamberry.wechat.tools.ImageUtils;
+import com.iamberry.wechat.tools.PosterNumUtils;
+import com.iamberry.wechat.utils.DownloadWXCodeUtil;
+
+import java.awt.*;
+import java.util.Date;
+
+public class Test {
+
+    public static void main(String[] args) {
+        long start = new Date().getTime();
+
+        long x = new Date().getTime();
+        String url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQEb8DwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyMVF4SHRiX2ZkaWgxa19aMDFyMU0AAgQ-8BhbAwQAjScA";
+        String headUrl = "http://thirdwx.qlogo.cn/mmopen/Q3auHgzwzM5DPUwVaYlrN50M0vLJP3eNflBicuBCGdADmKJuZsf5Og1NxCc9FicibsWzrxZWtMibpdFviaItufuJK71C7kbKd2myN6FV7fYckCzA/132";
+        try {
+            DownloadWXCodeUtil.downloadByNIO2(url,"ceshi.png","E:\\java-work\\iamberry-tooth\\tooth-wechat-web\\src\\main\\webapp\\common\\images\\activity\\test\\",PosterNumUtils.CODE_WIDTH,PosterNumUtils.CODE_HEIGHT);
+            DownloadWXCodeUtil.downloadByNIO2(headUrl,"head.png","E:\\java-work\\iamberry-tooth\\tooth-wechat-web\\src\\main\\webapp\\common\\images\\activity\\test\\",PosterNumUtils.HEAD_WIDTH,PosterNumUtils.HEAD_HEIGHT);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        long y = new Date().getTime();
+
+        String oldImg = "E:\\java-work\\iamberry-tooth\\tooth-wechat-web\\src\\main\\webapp\\common\\images\\activity\\ditu.jpg";
+
+        String newPath = "E:\\java-work\\iamberry-tooth\\tooth-wechat-web\\src\\main\\webapp\\common\\images\\activity\\test";
+        String headImg = "E:\\java-work\\iamberry-tooth\\tooth-wechat-web\\src\\main\\webapp\\common\\images\\activity\\test\\head.png";
+        String newCodeImg = "E:\\java-work\\iamberry-tooth\\tooth-wechat-web\\src\\main\\webapp\\common\\images\\activity\\test\\ceshi.png";
+        String newImg = "E:\\java-work\\iamberry-tooth\\tooth-wechat-web\\src\\main\\webapp\\common\\images\\activity\\test\\ditu.jpg";
+
+        String text = "小茗同学";
+
+        long m = new Date().getTime();
+        /*复制海报*/
+        FileUtils.copyFile(oldImg,newImg);
+        try{
+            /*添加文字*/
+            ImageUtils.pressPost(newImg,
+                headImg,PosterNumUtils.HEAD_X,PosterNumUtils.HEAD_Y,
+                newCodeImg,PosterNumUtils.CODE_X,PosterNumUtils.CODE_Y,
+                text,PosterNumUtils.TEXT_X,PosterNumUtils.TEXT_Y,Color.black,PosterNumUtils.TEXT_FONT_SIZE
+            );
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+//        ImageUtils.pressImage(newImg,headImg,PosterNumUtils.HEAD_X,PosterNumUtils.HEAD_Y,1);
+//        ImageUtils.pressImage(newImg,newCodeImg,PosterNumUtils.CODE_X,PosterNumUtils.CODE_Y,1);
+//        ImageUtils.pressText(newImg,text,PosterNumUtils.TEXT_X,PosterNumUtils.TEXT_Y,Color.black,PosterNumUtils.TEXT_FONT_SIZE);
+        long n = new Date().getTime();
+
+        long end = new Date().getTime();
+        System.out.println("下载:"+ (y-x));
+        System.out.println("添加水印:"+ (n-m));
+        System.out.println("生成时间为:"+ (end-start));
+    }
+
+}

+ 8 - 0
tooth-wechat-web/src/main/resources/iamberry-wechat-service-mybatis.xml

@@ -266,6 +266,10 @@
 		<typeAlias type="com.iamberry.wechat.core.entity.customized.CustomizedTooth" alias="CustomizedTooth"/>
 		<typeAlias type="com.iamberry.wechat.core.entity.customized.CustomizedExternalUrl" alias="CustomizedExternalUrl"/>
 
+		<!--618活动好友助力-->
+		<typeAlias type="com.iamberry.wechat.core.entity.activity.Activity" alias="Activity"/>
+		<typeAlias type="com.iamberry.wechat.core.entity.activity.ActivityHelp" alias="ActivityHelp"/>
+
 		<package name="com.iamberry.wechat.core.entity.rent"/>
 	</typeAliases>
 	<!-- PageHelper -->
@@ -384,5 +388,9 @@
 		<mapper resource="com/iamberry/wechat/service/mapper/customizedToothMapper.xml"/>
 		<mapper resource="com/iamberry/wechat/service/mapper/customizedExternalUrlMapper.xml"/>
 
+		<!--618活动,好友助力-->
+		<mapper resource="com/iamberry/wechat/service/mapper/activityHelpMapper.xml"/>
+		<mapper resource="com/iamberry/wechat/service/mapper/activityMapper.xml"/>
+
 	</mappers>
 </configuration>