Browse Source

牙刷618活动,好友助力

wangxiaoming 7 years ago
parent
commit
ad23e849b5

+ 119 - 0
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/activity/Activity.java

@@ -0,0 +1,119 @@
+package com.iamberry.wechat.core.entity.activity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+/**
+ *  活动助力参与类
+ * @author w
+ * @Date 2018-06-07
+ */
+public class Activity  implements  Serializable{
+    private static final long serialVersionUID = 7584342581860340000L;
+    //参与id
+    private Integer activityId;
+    //用户openid
+    private String userOpenId;
+    //需要多少人助力
+    private Integer activityAllHelp;
+    //已有多少人助力
+    private Integer activityAlreadyHelp;
+    //二维码地址
+    private String activityCodeImg;
+    //分享海报合成地址
+    private String activityImg;
+    //状态:1:助力中 2:助力成功 3:已领取优惠券 4:取消
+    private Integer activityStatus;
+    //优惠券id
+    private String activityCoupon;
+    //创建时间
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
+    private Date activityCreateTime;
+    //修改时间
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
+    private Date activityUpdateTime;
+
+    public Integer getActivityId(){
+        return activityId;
+    }
+
+    public void setActivityId(Integer  activityId){
+        this.activityId=activityId;
+    }
+
+    public String getUserOpenId(){
+        return userOpenId;
+    }
+
+    public void setUserOpenId(String  userOpenId){
+        this.userOpenId=userOpenId;
+    }
+
+    public Integer getActivityAllHelp(){
+        return activityAllHelp;
+    }
+
+    public void setActivityAllHelp(Integer  activityAllHelp){
+        this.activityAllHelp=activityAllHelp;
+    }
+
+    public Integer getActivityAlreadyHelp(){
+        return activityAlreadyHelp;
+    }
+
+    public void setActivityAlreadyHelp(Integer  activityAlreadyHelp){
+        this.activityAlreadyHelp=activityAlreadyHelp;
+    }
+
+    public String getActivityCodeImg(){
+        return activityCodeImg;
+    }
+
+    public void setActivityCodeImg(String  activityCodeImg){
+        this.activityCodeImg=activityCodeImg;
+    }
+
+    public String getActivityImg(){
+        return activityImg;
+    }
+
+    public void setActivityImg(String  activityImg){
+        this.activityImg=activityImg;
+    }
+
+    public Integer getActivityStatus(){
+        return activityStatus;
+    }
+
+    public void setActivityStatus(Integer  activityStatus){
+        this.activityStatus=activityStatus;
+    }
+
+    public Date getActivityCreateTime(){
+        return activityCreateTime;
+    }
+
+    public void setActivityCreateTime(Date  activityCreateTime){
+        this.activityCreateTime=activityCreateTime;
+    }
+
+    public Date getActivityUpdateTime(){
+        return activityUpdateTime;
+    }
+
+    public void setActivityUpdateTime(Date  activityUpdateTime){
+        this.activityUpdateTime=activityUpdateTime;
+    }
+
+    public String getActivityCoupon() {
+        return activityCoupon;
+    }
+
+    public void setActivityCoupon(String activityCoupon) {
+        this.activityCoupon = activityCoupon;
+    }
+}

+ 76 - 0
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/activity/ActivityHelp.java

@@ -0,0 +1,76 @@
+package com.iamberry.wechat.core.entity.activity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import  java.util.Date;
+import  java.io.Serializable;
+
+/**
+ *  活动好友助力类
+ * @author w
+ * @Date 2018-06-07
+ */
+public class ActivityHelp  implements  Serializable{
+    private static final long serialVersionUID = 5579227791941353533L;
+    //助力id
+    private Integer activityHelpId;
+    //参与id
+    private Integer activityId;
+    //用户openid
+    private String userOpenId;
+    private String userHead;				//用户头像
+    private String userNickname;			//用户昵称
+    //创建时间
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
+    private Date activityCreateTime;
+
+    public Integer getActivityHelpId(){
+        return activityHelpId;
+    }
+
+    public void setActivityHelpId(Integer  activityHelpId){
+        this.activityHelpId=activityHelpId;
+    }
+
+    public Integer getActivityId(){
+        return activityId;
+    }
+
+    public void setActivityId(Integer  activityId){
+        this.activityId=activityId;
+    }
+
+    public String getUserOpenId(){
+        return userOpenId;
+    }
+
+    public void setUserOpenId(String  userOpenId){
+        this.userOpenId=userOpenId;
+    }
+
+    public Date getActivityCreateTime(){
+        return activityCreateTime;
+    }
+
+    public void setActivityCreateTime(Date  activityCreateTime){
+        this.activityCreateTime=activityCreateTime;
+    }
+
+    public String getUserHead() {
+        return userHead;
+    }
+
+    public void setUserHead(String userHead) {
+        this.userHead = userHead;
+    }
+
+    public String getUserNickname() {
+        return userNickname;
+    }
+
+    public void setUserNickname(String userNickname) {
+        this.userNickname = userNickname;
+    }
+}

+ 36 - 0
tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/activity/ActivityHelpService.java

@@ -0,0 +1,36 @@
+package com.iamberry.wechat.face.activity;
+
+import com.iamberry.wechat.core.entity.activity.ActivityHelp;
+
+import java.util.List;
+/**
+ *  活动好友助力接口
+ * @author w
+ * @Date 2018-06-07
+ */
+public interface ActivityHelpService {
+    /**
+     * 获取集合
+     * @param  activityHelp
+     * @return List
+     */
+    List<ActivityHelp>  getActivityHelpList(ActivityHelp  activityHelp);
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  activityHelp
+     */
+    ActivityHelp  getActivityHelpById(Integer  id);
+    /**
+     * 增加数据
+     * @param  activityHelp
+     * @return Integer
+     */
+    Integer  save(ActivityHelp  activityHelp);
+    /**
+     * 修改数据
+     * @param  activityHelp
+     * @return Integer
+     */
+    Integer  update(ActivityHelp  activityHelp);
+}

+ 45 - 0
tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/activity/ActivityService.java

@@ -0,0 +1,45 @@
+package com.iamberry.wechat.face.activity;
+
+import com.iamberry.wechat.core.entity.activity.Activity;
+
+import java.util.List;
+
+/**
+ *  活动助力参与接口
+ * @author w
+ * @Date 2018-06-07
+ */
+public interface ActivityService {
+    /**
+     * 获取集合
+     * @param  activity
+     * @return List
+     */
+    List<Activity> getActivityList(Activity  activity);
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  activity
+     */
+    Activity  getActivityById(Integer  id);
+
+    /**
+     * 查询单条数据  - couponId
+     * @param  couponId
+     * @return  activity
+     */
+    Activity  getActivityCouponId(String couponId);
+
+    /**
+     * 增加数据
+     * @param  activity
+     * @return Integer
+     */
+    Integer  save(Activity  activity);
+    /**
+     * 修改数据
+     * @param  activity
+     * @return Integer
+     */
+    Integer  update(Activity  activity);
+}

+ 56 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/activity/ActivityHelpServiceImpl.java

@@ -0,0 +1,56 @@
+package com.iamberry.wechat.service.activity;
+
+import com.iamberry.wechat.core.entity.activity.ActivityHelp;
+import com.iamberry.wechat.face.activity.ActivityHelpService;
+import com.iamberry.wechat.service.mapper.ActivityHelpMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ *  活动好友助力接口
+ * @author w
+ * @Date 2018-06-07
+ */
+@Service
+public class ActivityHelpServiceImpl  implements ActivityHelpService {
+    @Autowired
+    private ActivityHelpMapper activityHelpMapper;
+    /**
+     * 获取集合
+     * @param  activityHelp
+     * @return List
+     */
+    @Override
+    public List<ActivityHelp> getActivityHelpList(ActivityHelp  activityHelp){
+        return  activityHelpMapper.getActivityHelpList(activityHelp);
+    }
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  activityHelp
+     */
+    @Override
+    public  ActivityHelp  getActivityHelpById(Integer  id){
+        return  activityHelpMapper.getActivityHelpById(id);
+    }
+    /**
+     * 增加数据
+     * @param  activityHelp
+     * @return Integer
+     */
+    @Override
+    public  Integer  save(ActivityHelp  activityHelp){
+        return  activityHelpMapper.save(activityHelp);
+    }
+    /**
+     * 修改数据
+     * @param  activityHelp
+     * @return Integer
+     */
+    @Override
+    public  Integer  update(ActivityHelp  activityHelp){
+        return  activityHelpMapper.update(activityHelp);
+    }
+}

+ 101 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/activity/ActivityServiceImpl.java

@@ -0,0 +1,101 @@
+package com.iamberry.wechat.service.activity;
+
+import com.iamberry.wechat.core.entity.activity.Activity;
+import com.iamberry.wechat.core.entity.coupon.CouponItem;
+import com.iamberry.wechat.face.activity.ActivityService;
+import com.iamberry.wechat.face.coupon.CouponItemService;
+import com.iamberry.wechat.service.mapper.ActivityMapper;
+import com.iamberry.wechat.service.mapper.CouponItemMapper;
+import com.iamberry.wechat.tools.StrUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+/**
+ *  活动助力参与接口
+ * @author w
+ * @Date 2018-06-07
+ */
+@Service
+public class ActivityServiceImpl  implements ActivityService {
+    @Autowired
+    private ActivityMapper activityMapper;
+    @Autowired
+    private CouponItemMapper couponItemMapper;
+
+    /**
+     * 获取集合
+     * @param  activity
+     * @return List
+     */
+    @Override
+    public List<Activity> getActivityList(Activity  activity){
+        return  activityMapper.getActivityList(activity);
+    }
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  activity
+     */
+    @Override
+    public  Activity  getActivityById(Integer  id){
+        return  activityMapper.getActivityById(id);
+    }
+
+    @Override
+    public Activity getActivityCouponId(String couponId) {
+        return  activityMapper.getActivityCouponId(couponId);
+    }
+
+    /**
+     * 增加数据
+     * @param  activity
+     * @return Integer
+     */
+    @Override
+    public  Integer  save(Activity  activity){
+        return  activityMapper.save(activity);
+    }
+
+    /**
+     * 修改数据
+     * @param  activity
+     * @return Integer
+     */
+    @Override
+    @Transactional
+    public  Integer  update(Activity  activity){
+        CouponItem couponItem = new CouponItem();
+        couponItem.setCouponId(20000);
+        Calendar calendar = Calendar.getInstance();
+        calendar.add(Calendar.YEAR,1);
+        couponItem.setCouponUseEndDate(calendar.getTime());//领取后一年有效
+        couponItem.setCouponReceiveDate(new Date());
+        couponItem.setCouponItemUseropenid(activity.getUserOpenId());
+        couponItem.setCouponUseStatus(1);
+        couponItem.setCouponIsDonation(2);
+        couponItem.setCouponItemRemark("新人优惠券");
+
+        String uuidStr = StrUtils.getUUID();
+        couponItem.setCouponItemId(uuidStr);
+        Integer flag = couponItemMapper.insertCouponItem(couponItem);
+        if(flag < 1){
+            throw new RuntimeException("添加优惠券失败");
+        }
+
+        Activity newActivity = new Activity();
+        newActivity.setActivityId(activity.getActivityId());
+        newActivity.setActivityStatus(3);   //1:助力中 2:助力成功 3:已领取优惠券 4:取消
+        newActivity.setActivityCoupon(uuidStr);
+        flag = activityMapper.update(newActivity);
+        if(flag < 1){
+            throw new RuntimeException("修改状态失败");
+        }
+        return  flag;
+    }
+
+}

+ 37 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/ActivityHelpMapper.java

@@ -0,0 +1,37 @@
+package com.iamberry.wechat.service.mapper;
+
+import com.iamberry.wechat.core.entity.activity.ActivityHelp;
+
+import java.util.List;
+
+/**
+ *  活动好友助力接口
+ * @author w
+ * @Date 2018-06-07
+ */
+public interface ActivityHelpMapper {
+    /**
+     * 获取集合
+     * @param  activityHelp
+     * @return List
+     */
+    List<ActivityHelp> getActivityHelpList(ActivityHelp  activityHelp);
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  activityHelp
+     */
+    ActivityHelp  getActivityHelpById(Integer  id);
+    /**
+     * 增加数据
+     * @param  activityHelp
+     * @return Integer
+     */
+    Integer  save(ActivityHelp  activityHelp);
+    /**
+     * 修改数据
+     * @param  activityHelp
+     * @return Integer
+     */
+    Integer  update(ActivityHelp  activityHelp);
+}

+ 45 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/ActivityMapper.java

@@ -0,0 +1,45 @@
+package com.iamberry.wechat.service.mapper;
+
+import com.iamberry.wechat.core.entity.activity.Activity;
+
+import java.util.List;
+
+/**
+ *  活动助力参与接口
+ * @author w
+ * @Date 2018-06-07
+ */
+public interface ActivityMapper {
+    /**
+     * 获取集合
+     * @param  activity
+     * @return List
+     */
+    List<Activity> getActivityList(Activity  activity);
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  activity
+     */
+    Activity  getActivityById(Integer  id);
+
+    /**
+     * 查询单条数据  - 根据openid
+     * @param  couponId
+     * @return  activity
+     */
+    Activity  getActivityCouponId(String couponId);
+
+    /**
+     * 增加数据
+     * @param  activity
+     * @return Integer
+     */
+    Integer  save(Activity  activity);
+    /**
+     * 修改数据
+     * @param  activity
+     * @return Integer
+     */
+    Integer  update(Activity  activity);
+}

+ 69 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/activityHelpMapper.xml

@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.iamberry.wechat.service.mapper.ActivityHelpMapper">
+    <resultMap  id="BaseResultMap" type="ActivityHelp" >
+        <result    column="activity_help_id"    property="activityHelpId" />
+        <result    column="activity_id"    property="activityId" />
+        <result    column="user_open_id"    property="userOpenId" />
+        <result    column="activity_create_time"    property="activityCreateTime" />
+        <result    column="user_head"    property="userHead" />
+        <result    column="user_nickname"    property="userNickname" />
+    </resultMap>
+    <sql    id="Base_List" >
+        t.activity_help_id,
+        t.activity_id,
+        t.user_open_id,
+        t.activity_create_time
+    </sql>
+    <select id="getActivityHelpList" resultMap="BaseResultMap" parameterType="ActivityHelp" >
+        select
+            <include refid="Base_List" />,
+            tiuu.user_head,
+            tiuu.user_nickname
+        from tb_iamberry_activity_help t
+        LEFT JOIN tb_iamberry_user_userinfo tiuu ON t.user_open_id = tiuu.user_openid
+        <where>
+            <if test="activityHelpId != null ">
+                AND t.activity_help_id = #{activityHelpId}
+            </if >
+            <if test="activityId != null ">
+                AND t.activity_id = #{activityId}
+            </if >
+            <if test="userOpenId != null and userOpenId != ''">
+                AND t.user_open_id = #{userOpenId}
+            </if >
+        </where>
+    </select>
+    <select id="getActivityHelpById" resultMap="BaseResultMap" parameterType="Integer" >
+        select
+        <include refid="Base_List" />
+        from tb_iamberry_activity_help t
+        where t.activity_help_id= #{activityHelpId}
+    </select>
+    <insert id="save" parameterType="ActivityHelp" >
+        insert into
+        tb_iamberry_activity_help
+        (
+        activity_id,
+        user_open_id
+        )
+        values
+        (
+        #{activityId},
+        #{userOpenId}
+        )
+    </insert>
+    <update id="update" parameterType="ActivityHelp" >
+        update
+        tb_iamberry_activity_help
+        <set >
+            <if test="activityId != null ">
+                activity_id = #{activityId},
+            </if >
+            <if test="userOpenId != null and userOpenId != ''">
+                user_open_id = #{userOpenId},
+            </if >
+        </set >
+        where activity_help_id= #{activityHelpId}
+    </update>
+</mapper>

+ 112 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/activityMapper.xml

@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.iamberry.wechat.service.mapper.ActivityMapper">
+    <resultMap  id="BaseResultMap" type="Activity" >
+        <result    column="activity_id"    property="activityId" />
+        <result    column="user_open_id"    property="userOpenId" />
+        <result    column="activity_all_help"    property="activityAllHelp" />
+        <result    column="activity_already_help"    property="activityAlreadyHelp" />
+        <result    column="activity_code_img"    property="activityCodeImg" />
+        <result    column="activity_img"    property="activityImg" />
+        <result    column="activity_status"    property="activityStatus" />
+        <result    column="activity_coupon"    property="activityCoupon" />
+        <result    column="activity_create_time"    property="activityCreateTime" />
+        <result    column="activity_update_time"    property="activityUpdateTime" />
+    </resultMap>
+    <sql    id="Base_List" >
+        t.activity_id,
+        t.user_open_id,
+        t.activity_all_help,
+        t.activity_already_help,
+        t.activity_code_img,
+        t.activity_img,
+        t.activity_status,
+        t.activity_coupon,
+        t.activity_create_time,
+        t.activity_update_time
+    </sql>
+    <select id="getActivityList" resultMap="BaseResultMap" parameterType="Activity" >
+        select
+        <include refid="Base_List" />
+        from tb_iamberry_activity t
+        <where>
+            <if test="activityId != null ">
+                AND t.activity_id = #{activityId}
+            </if >
+            <if test="userOpenId != null and userOpenId != ''">
+                AND t.user_open_id = #{userOpenId}
+            </if >
+            <if test="activityAllHelp != null ">
+                AND t.activity_all_help = #{activityAllHelp}
+            </if >
+            <if test="activityAlreadyHelp != null ">
+                AND t.activity_already_help = #{activityAlreadyHelp}
+            </if >
+            <if test="activityStatus != null ">
+                AND t.activity_status = #{activityStatus}
+            </if >
+            <if test="activityCoupon != null and activityCoupon != ''">
+                AND t.activity_coupon = #{activityCoupon}
+            </if >
+        </where>
+    </select>
+
+    <select id="getActivityById" resultMap="BaseResultMap" parameterType="Integer" >
+        select
+        <include refid="Base_List" />
+        from tb_iamberry_activity t
+        where t.activity_id= #{activityId}
+    </select>
+
+    <select id="getActivityCouponId" resultMap="BaseResultMap" parameterType="String" >
+        select
+        <include refid="Base_List" />
+        from tb_iamberry_activity t
+        where t.activity_coupon= #{couponId}
+    </select>
+
+    <insert id="save" parameterType="Activity" >
+        insert into
+        tb_iamberry_activity
+        (
+        user_open_id,
+        activity_all_help,
+        activity_code_img,
+        activity_img,
+        activity_status
+        )
+        values
+        (
+        #{userOpenId},
+        #{activityAllHelp},
+        #{activityCodeImg},
+        #{activityImg},
+        #{activityStatus}
+        )
+    </insert>
+    <update id="update" parameterType="Activity" >
+        update
+        tb_iamberry_activity
+        <set >
+            <if test="userOpenId != null and userOpenId != ''">
+                user_open_id = #{userOpenId},
+            </if >
+            <if test="activityAlreadyHelp != null ">
+                activity_already_help = #{activityAlreadyHelp},
+            </if >
+            <if test="activityCodeImg != null and activityCodeImg != ''">
+                activity_code_img = #{activityCodeImg},
+            </if >
+            <if test="activityImg != null and activityImg != ''">
+                activity_img = #{activityImg},
+            </if >
+            <if test="activityStatus != null ">
+                activity_status = #{activityStatus},
+            </if >
+            <if test="activityCoupon != null and activityCoupon != ''">
+                activity_coupon = #{activityCoupon}
+            </if >
+        </set >
+        where activity_id= #{activityId}
+    </update>
+</mapper>

+ 303 - 0
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/activity/ActivityHandler.java

@@ -0,0 +1,303 @@
+package com.iamberry.wechat.handles.activity;
+
+import com.iamberry.wechat.core.entity.ResultMsg;
+import com.iamberry.wechat.core.entity.WechatUtils;
+import com.iamberry.wechat.core.entity.activity.Activity;
+import com.iamberry.wechat.core.entity.activity.ActivityHelp;
+import com.iamberry.wechat.core.entity.coupon.CouponItem;
+import com.iamberry.wechat.core.entity.member.Member;
+import com.iamberry.wechat.core.entity.wx.QRCJson;
+import com.iamberry.wechat.face.activity.ActivityHelpService;
+import com.iamberry.wechat.face.activity.ActivityService;
+import com.iamberry.wechat.face.admin.SystemService;
+import com.iamberry.wechat.face.coupon.CouponItemService;
+import com.iamberry.wechat.face.member.MemberService;
+import com.iamberry.wechat.file.FileUtils;
+import com.iamberry.wechat.tools.*;
+import com.iamberry.wechat.utils.DownloadWXCodeUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import java.awt.*;
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author wxm
+ * Class Description: 618活动
+ */
+@Controller
+@RequestMapping("/wechat/activity")
+public class ActivityHandler {
+
+	private static String ditupath = "";
+
+	@Autowired
+	private MemberService memberService;
+	@Autowired
+	private ActivityService activityService;
+	@Autowired
+	private ActivityHelpService activityHelpService;
+	@Autowired
+	private PosterNumUtils posterNumUtils;
+	@Autowired
+	private SystemService systemService;
+	@Autowired
+	private CouponItemService couponItemService;
+
+
+	/**
+	 * 进入活动页面判断该用户是否可以参加
+	 * @param req
+	 * @return
+	 */
+	@ResponseBody
+	@RequestMapping("/to_activity")
+	public ResultMsg toActivity(HttpServletRequest req){
+		ResultMsg rm = ResultMsg.getSuccess();
+
+		Member member = WechatUtils.getUserBySession(req);
+		member = memberService.getMemberByUserOpenId(member.getUserOpenid());
+
+		/*不能参与*/
+		if(member.getUserIdentity() == 2 ){	//1:会员   2:微信用户
+			rm = ResultMsg.getError();
+			rm.setMessage("此活动仅限soodo上朵会员参与,请购买并注册后参与");
+			rm.addData("member",member);
+			return rm;
+		}
+
+		/*未参与过的*/
+		Activity activity = new Activity();
+		activity.setUserOpenId(member.getUserOpenid());
+		List<Activity> activityList = activityService.getActivityList(activity);
+		if(activityList == null || activityList.size() < 1){
+			rm.addData("status",-1);
+			rm.addData("member",member);
+			rm.addData("msg","未参与,请点击立即参与");
+			return rm;
+		}
+
+		activity = activityList.get(0);
+		ActivityHelp activityHelp = new ActivityHelp();
+		activityHelp.setActivityId(activity.getActivityId());
+		List<ActivityHelp> activityHelpList = activityHelpService.getActivityHelpList(activityHelp);
+
+		//状态:1:助力中 2:助力成功 3:已领取优惠券 4:取消
+		if(activity.getActivityStatus() == 1){
+			/*参与中的*/
+			rm.addData("status",1);
+			rm.addData("msg","正在助力中");
+			rm.addData("member",member);
+			rm.addData("activity",activity);
+			rm.addData("activityHelpList",activityHelpList);
+			return rm;
+		}else if(activity.getActivityStatus() == 2){
+			/*已成功*/
+			rm.addData("status",2);
+			rm.addData("msg","助力成功");
+			rm.addData("member",member);
+			rm.addData("activity",activity);
+			rm.addData("activityHelpList",activityHelpList);
+			return rm;
+		}else if(activity.getActivityStatus() == 3){
+			/*已领取*/
+			rm.addData("status",3);
+			rm.addData("msg","已领取优惠券");
+			rm.addData("member",member);
+			rm.addData("activity",activity);
+			rm.addData("activityHelpList",activityHelpList);
+			return rm;
+		}else{
+			rm = ResultMsg.getError();
+			rm.setMessage("查询失败,请重试");
+			return rm;
+		}
+	}
+
+	/**
+	 * 参与活动
+	 * @param req
+	 * @return
+	 */
+	@ResponseBody
+	@RequestMapping("/participate_activity")
+	public ResultMsg getColorPatterns(HttpServletRequest req){
+		long start = new Date().getTime();
+
+		ResultMsg rm = ResultMsg.getSuccess();
+
+		Member member = WechatUtils.getUserBySession(req);
+		member = memberService.getMemberByUserOpenId(member.getUserOpenid());
+
+		/*不能参与*/
+		if(member.getUserIdentity() == 2 ){	//1:会员   2:微信用户
+			rm = ResultMsg.getError();
+			rm.setMessage("此活动仅限soodo上朵会员参与,请购买并注册后参与");
+			return rm;
+		}
+
+		/*未参与过的*/
+		Activity activity = new Activity();
+		activity.setUserOpenId(member.getUserOpenid());
+		List<Activity> activityList = activityService.getActivityList(activity);
+		if(activityList == null || activityList.size() < 1){
+			String dataStaing = new SimpleDateFormat("yyyyMMdd").format(new Date());
+			String codePath = posterNumUtils.IMG_PATH + dataStaing + "/";
+			String filePath = req.getSession().getServletContext().getRealPath("/") + codePath ;
+
+			ditupath =  req.getSession().getServletContext().getRealPath("/") + PosterNumUtils.OLD_IMG_PATH;
+
+			String name = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
+			// 生成文件名
+			String codeName = name + "Code.png";
+			String headName = name + "Head.png";
+			String imgName = name  + ".png";
+			boolean flag = generatePoster(member,filePath,codeName,imgName,headName);
+			if(!flag){
+				rm = ResultMsg.getError();
+				rm.setMessage("生成图片失败");
+				return rm;
+			}
+
+			String codeImgPath = codePath + codeName;
+			String imgPath = codePath + imgName;
+
+			String element = systemService.selectOneShopRuleById(257).getRuleDesc();
+			Integer num = Integer.valueOf(element);
+			if(num == 0){
+				num =10;
+			}
+			activity.setActivityAllHelp(num);
+			activity.setActivityCodeImg(codeImgPath);
+			activity.setActivityImg(imgPath);
+			activity.setActivityStatus(1);
+			Integer f = activityService.save(activity);
+
+			long end = new Date().getTime();
+			System.out.println("生成时间为:"+ (end-start));
+			if(f < 1){
+				return rm;
+			}else{
+				rm = ResultMsg.getSuccess();
+				rm.addData("imgPath",imgPath);
+				return rm;
+			}
+		}else{
+			rm = ResultMsg.getError();
+			rm.setMessage("已参与助力活动");
+			return rm;
+		}
+	}
+
+
+	/**
+	 * 生成海报
+	 * @param member
+	 * @param path 路径
+	 * @param codeName 二维码名称
+	 * @param imgName 图片名称
+	 * @param headName 头像名称
+	 * @return
+	 */
+	public boolean generatePoster(Member member,String path,String codeName,String imgName,String headName){
+		File imgfile = new File(path); //全路径
+		if (!imgfile.exists()){
+			imgfile.mkdirs();
+		}
+		String name = member.getUserNickname();
+		if(name == null){
+			name = "";
+		}
+
+		//生成机器二维码
+		String json = String.format(NameUtils.QR_SCENE, 2592000, ResultInfo.barCodeActivity + member.getUserOpenid());
+		QRCJson qrc = WeixinUtil.createQrcode(json);
+		try {
+			/*下载二维码*/
+			DownloadWXCodeUtil.downloadByNIO2(qrc.getUrl(),codeName,path,PosterNumUtils.CODE_WIDTH,PosterNumUtils.CODE_HEIGHT);
+			DownloadWXCodeUtil.downloadByNIO2(member.getUserHead(),headName,path,PosterNumUtils.HEAD_WIDTH,PosterNumUtils.HEAD_HEIGHT);
+
+			/*海报位置*/
+			String newImg = path+imgName;
+			/*二维码位置*/
+			String codeImg = path + codeName;
+			/*头像位置*/
+			String headImg = path + headName;
+
+			/*复制海报*/ //common/images/activity/ditu.jpg
+			FileUtils.copyFile(ditupath,newImg);
+
+			  /*添加文字*/
+			ImageUtils.pressPost(newImg,
+					headImg,PosterNumUtils.HEAD_X,PosterNumUtils.HEAD_Y,
+					codeImg,PosterNumUtils.CODE_X,PosterNumUtils.CODE_Y,
+					name,PosterNumUtils.TEXT_X,PosterNumUtils.TEXT_Y,Color.black,PosterNumUtils.TEXT_FONT_SIZE
+			);
+			/*添加文字*/
+//			ImageUtils.pressImage(newImg,headImg,PosterNumUtils.HEAD_X,PosterNumUtils.HEAD_Y,1);
+//			ImageUtils.pressImage(newImg,codeImg,PosterNumUtils.CODE_X,PosterNumUtils.CODE_Y,1);
+//			ImageUtils.pressText(newImg,name,PosterNumUtils.TEXT_X,PosterNumUtils.TEXT_Y,Color.black,PosterNumUtils.TEXT_FONT_SIZE);
+		} catch (Exception e) {
+			e.printStackTrace();
+			return false;
+		}
+		return true;
+	}
+
+
+
+	/**
+	 * 领取优惠券
+	 * @param req
+	 * @return
+	 */
+	@ResponseBody
+	@RequestMapping("/receive_coupon")
+	public ResultMsg receiveCoupon(HttpServletRequest req){
+		ResultMsg rm = ResultMsg.getSuccess();
+
+		Member member = WechatUtils.getUserBySession(req);
+		member = memberService.getMemberByUserOpenId(member.getUserOpenid());
+
+		/*不能参与*/
+		if(member.getUserIdentity() == 2 ){	//1:会员   2:微信用户
+			rm = ResultMsg.getError();
+			rm.setMessage("此活动仅限soodo上朵会员参与,请购买并注册后参与");
+			return rm;
+		}
+
+		/*未参与过的*/
+		Activity activity = new Activity();
+		activity.setUserOpenId(member.getUserOpenid());
+		List<Activity> activityList = activityService.getActivityList(activity);
+
+		if(activityList != null && activityList.size() > 0){
+			activity = activityList.get(0);
+			if(activity.getActivityAlreadyHelp() >= activity.getActivityAllHelp() && activity.getActivityStatus()==2 ){
+				activityService.update(activity);
+				rm.setMessage("领取优惠券成功");
+				return rm;
+			}else{
+				rm = ResultMsg.getError();
+				rm.setMessage("领取失败");
+				return rm;
+			}
+		}else{
+			rm = ResultMsg.getError();
+			rm.setMessage("领取失败");
+			return rm;
+		}
+	}
+
+
+
+
+
+}

+ 131 - 0
tooth-wechat-web/src/main/java/com/iamberry/wechat/utils/CodeUtil.java

@@ -0,0 +1,131 @@
+package com.iamberry.wechat.utils;
+
+import com.google.zxing.BarcodeFormat;
+import com.google.zxing.EncodeHintType;
+import com.google.zxing.MultiFormatWriter;
+import com.google.zxing.WriterException;
+import com.google.zxing.common.BitMatrix;
+import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.imageio.ImageIO;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 画制定logo和制定描述的二维码
+ */
+public class CodeUtil {
+    private static final int QRCOLOR = 0xFF000000; // 默认是黑色
+    private static final int BGWHITE = 0xFFFFFFFF; // 背景颜色
+
+    private static final int WIDTH = 400; // 二维码宽
+    private static final int HEIGHT = 400; // 二维码高
+
+    // 用于设置QR二维码参数
+    private static Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>() {
+        private static final long serialVersionUID = 1L;
+        {
+            put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);// 设置QR二维码的纠错级别(H为最高级别)具体级别信息
+            put(EncodeHintType.CHARACTER_SET, "utf-8");// 设置编码方式
+            put(EncodeHintType.MARGIN, 0);
+        }
+    };
+
+    public static void main(String[] args) throws WriterException {
+        File logoFile = new File("C://Users/Administrator/Desktop/code/05.png");
+       logoFile = null;
+        File QrCodeFile = new File("C://Users/Administrator/Desktop/code/06.png");
+        String url = "https://www.baidu.com/";
+        String note = "访问百度连接";
+        note = null;
+
+        long x = new Date().getTime();
+        drawLogoQRCode(logoFile, QrCodeFile, url, note);
+        long y = new Date().getTime();
+        System.out.println("生成二维码所需要的时间" + (y-x));
+    }
+
+    /**
+     * 生成带logo的二维码图片
+     * @param logoFile  logo 如果不需要就为null
+     * @param codeFile  存储位置
+     * @param qrUrl 二维码内容
+     * @param note  文字,如果不需要就为null
+     */
+    public static void drawLogoQRCode(File logoFile, File codeFile, String qrUrl, String note) {
+        try {
+            MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
+            // 参数顺序分别为:编码内容,编码类型,生成图片宽度,生成图片高度,设置参数
+            BitMatrix bm = multiFormatWriter.encode(qrUrl, BarcodeFormat.QR_CODE, WIDTH, HEIGHT, hints);
+            BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
+
+            // 开始利用二维码数据创建Bitmap图片,分别设为黑(0xFFFFFFFF)白(0xFF000000)两色
+            for (int x = 0; x < WIDTH; x++) {
+                for (int y = 0; y < HEIGHT; y++) {
+                    image.setRGB(x, y, bm.get(x, y) ? QRCOLOR : BGWHITE);
+                }
+            }
+
+            int width = image.getWidth();
+            int height = image.getHeight();
+            if (logoFile != null && logoFile.exists()) {
+                // 构建绘图对象
+                Graphics2D g = image.createGraphics();
+                // 读取Logo图片
+                BufferedImage logo = ImageIO.read(logoFile);
+                // 开始绘制logo图片
+                g.drawImage(logo, width * 2 / 5, height * 2 / 5, width * 2 / 10, height * 2 / 10, null);
+                g.dispose();
+                logo.flush();
+            }
+
+            // 自定义文本描述
+            if (StringUtils.isNotEmpty(note)) {
+                // 新的图片,把带logo的二维码下面加上文字
+                BufferedImage outImage = new BufferedImage(400, 445, BufferedImage.TYPE_4BYTE_ABGR);
+                Graphics2D outg = outImage.createGraphics();
+                // 画二维码到新的面板
+                outg.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null);
+                // 画文字到新的面板
+                outg.setColor(Color.BLACK);
+                outg.setFont(new Font("楷体", Font.BOLD, 30)); // 字体、字型、字号
+                int strWidth = outg.getFontMetrics().stringWidth(note);
+                if (strWidth > 399) {
+                    // //长度过长就截取前面部分
+                    // 长度过长就换行
+                    String note1 = note.substring(0, note.length() / 2);
+                    String note2 = note.substring(note.length() / 2, note.length());
+                    int strWidth1 = outg.getFontMetrics().stringWidth(note1);
+                    int strWidth2 = outg.getFontMetrics().stringWidth(note2);
+                    outg.drawString(note1, 200 - strWidth1 / 2, height + (outImage.getHeight() - height) / 2 + 12);
+                    BufferedImage outImage2 = new BufferedImage(400, 485, BufferedImage.TYPE_4BYTE_ABGR);
+                    Graphics2D outg2 = outImage2.createGraphics();
+                    outg2.drawImage(outImage, 0, 0, outImage.getWidth(), outImage.getHeight(), null);
+                    outg2.setColor(Color.BLACK);
+                    outg2.setFont(new Font("宋体", Font.BOLD, 30)); // 字体、字型、字号
+                    outg2.drawString(note2, 200 - strWidth2 / 2,outImage.getHeight() + (outImage2.getHeight() - outImage.getHeight()) / 2 + 5);
+                    outg2.dispose();
+                    outImage2.flush();
+                    outImage = outImage2;
+                } else {
+                    outg.drawString(note, 200 - strWidth / 2, height + (outImage.getHeight() - height) / 2 + 12); // 画文字
+                }
+                outg.dispose();
+                outImage.flush();
+                image = outImage;
+            }
+
+            image.flush();
+
+            ImageIO.write(image, "png", codeFile);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+}

+ 83 - 0
tooth-wechat-web/src/main/java/com/iamberry/wechat/utils/DownloadWXCodeUtil.java

@@ -0,0 +1,83 @@
+package com.iamberry.wechat.utils;
+
+import javax.imageio.ImageIO;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLConnection;
+
+public class DownloadWXCodeUtil {
+    /**
+     * 下载微信二维码
+     * @param urlString
+     * @param filename 存储名称
+     * @param savePath  路径
+     * @param width 宽度
+     * @param height 高度
+     * @throws Exception
+     */
+    public static void download(String urlString, String filename,String savePath,int width,int height) throws Exception {
+
+        // 输出的文件流
+        File sf=new File(savePath);
+        if(!sf.exists()){
+            sf.mkdirs();
+        }
+        // 构造URL
+        URL url = new URL(urlString);
+        // 打开连接
+        URLConnection con = url.openConnection();
+        //设置请求超时为5s
+        con.setConnectTimeout(5*1000);
+        // 输入流
+        InputStream is = con.getInputStream();
+
+        BufferedImage bi = ImageIO.read(is);
+        ImageIO.write(bi, "png", new File(savePath+filename));
+
+//        JPEGImageDecoder decoderFile = JPEGCodec.createJPEGDecoder(is);
+//        BufferedImage image = decoderFile.decodeAsBufferedImage();
+
+//        Image srcImg = image;
+//        image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+//        image.getGraphics().drawImage(srcImg.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0,0, null);
+//        ImageIO.write(image, "JPEG", new File(savePath+filename));
+        is.close();
+    }
+
+    /**
+     * 下载微信二维码
+     * @param url
+     * @param filename
+     * @param savePath
+     * @param width
+     * @param height
+     */
+    public static void downloadByNIO2(String url,  String filename,String savePath,int width,int height) {
+        try (InputStream ins = new URL(url).openStream()) {
+//            JPEGImageDecoder decoderFile = JPEGCodec.createJPEGDecoder(ins);
+//            BufferedImage image = decoderFile.decodeAsBufferedImage();
+//            Image srcImg = image;
+//            image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+//            image.getGraphics().drawImage(srcImg.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0,0, null);
+//            ImageIO.write(image, "JPEG", new File(savePath+filename));
+//            ins.close();
+
+            BufferedImage bi = ImageIO.read(ins);
+            Image srcImg = bi;
+            bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+            bi.getGraphics().drawImage(srcImg.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0,0, null);
+            ImageIO.write(bi, "png", new File(savePath+filename));
+            ins.close();
+
+//			Path target = Paths.get(filename, savePath);
+//			Files.createDirectories(target.getParent());
+//			Files.copy(ins, target, StandardCopyOption.REPLACE_EXISTING);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+}

BIN
tooth-wechat-web/src/main/webapp/common/images/activity/ditu.jpg