فهرست منبع

watero母亲节活动

wangxiaoming 6 سال پیش
والد
کامیت
b00592af6b

+ 1 - 0
watero-common-tool/src/main/java/com/iamberry/wechat/tools/PosterNumUtils.java

@@ -49,6 +49,7 @@ public class PosterNumUtils {
     public static final int CODE_Y = 1077;
 
     static {
+        map.put(0,"head.jpg");  //默认头像
         map.put(1,"1.jpg");  //1号背景
         map.put(2,"2.jpg");  //2
         map.put(3,"3.jpg");  //3

+ 11 - 0
watero-common-tool/src/main/java/com/iamberry/wechat/tools/ResultInfo.java

@@ -140,6 +140,10 @@ public class ResultInfo {
 	 */
 	public static String RENT_ORDER_DETAIL = "";
 	/**
+	 * 活动推送详情
+	 */
+	public static String SERVICE_PUSH_URL = "";
+	/**
 	 * <礼品卡>推荐人推送消息 跳转页面
 	 */
 	public static String AGENT_REFERRER_MACHINE_PAGE = "";
@@ -184,6 +188,10 @@ public class ResultInfo {
 	 */
 	public static String prize_receive_push="";
 	/**
+	 * 	服务推送模板
+	 */
+	public static String service_push="";
+	/**
 	 * 	2019 38 妇女节回复语
 	 */
 	public static String female_lady_reply="";
@@ -222,6 +230,9 @@ public class ResultInfo {
 	/** 	奖品领取通知 	*/
 	public static String PRIZERECEIVEPUSH = "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'keyword1':{'color':'#173177','value':'keyword1Value'}, 'keyword2':{'color':'#173177', 'value':'keyword2Value'},'keyword3':{'color':'#173177','value':'keyword3Value'},'keyword4':{'color':'#173177','value':'keyword4Value'},'keyword5':{'color':'#173177','value':'keyword5Value'},'remark':{'color':'#FF0000','value':'remarkValue'}}";
 
+	/** 	服务推送 	*/
+	public static String SERVICEPUSH = "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'Good':{'color':'#173177','value':'GoodValue'}, 'contentType':{'color':'#173177', 'value':'contentTypeValue'},'remark':{'color':'#FF0000','value':'remarkValue'}}";
+
 
 
 

+ 2 - 0
watero-common-tool/src/main/java/com/iamberry/wechat/tools/loadResultUtil.java

@@ -61,6 +61,7 @@ public class loadResultUtil {
 			ResultInfo.ORDER_GUOQI = prop.getProperty("ORDER_GUOQI"); 				//订单即将过期提醒
 			ResultInfo.TRY_ORDER_DETAIL = prop.getProperty("TRY_ORDER_DETAIL");		//试用订单详情
 			ResultInfo.RENT_ORDER_DETAIL = prop.getProperty("RENT_ORDER_DETAIL");		//租赁订单详情
+			ResultInfo.SERVICE_PUSH_URL = prop.getProperty("SERVICE_PUSH_URL");		//活动推送详情
 			ResultInfo.AGENT_REFERRER_MACHINE_PAGE = prop.getProperty("AGENT_REFERRER_MACHINE_PAGE");		//推荐人点击模板消息跳转链接
 			//消息的模板id
 			ResultInfo.rewards_template_id = prop.getProperty("rewards_template_id");		//返现到账通知 		模版id 	TM00211
@@ -75,6 +76,7 @@ public class loadResultUtil {
 			ResultInfo.probation_shut_down = prop.getProperty("probation_shut_down");		//订单关闭通知	 	模版id	TM00984
 			ResultInfo.prize_receive_push = prop.getProperty("prize_receive_push");			//付费代理商支付后推送推荐人通知  	模版id
 			ResultInfo.female_lady_reply = prop.getProperty("female_lady_reply");			//2019 38 妇女节活动回复语
+			ResultInfo.service_push = prop.getProperty("service_push");			//服务推送模板
 
 
 

+ 6 - 0
watero-wechat-interface/src/main/java/com/iamberry/wechat/face/coupon/CouponItemService.java

@@ -60,4 +60,10 @@ public interface CouponItemService {
 	 * @author liuzhiwei
 	 */
 	public Integer updateCouponItemList(List<CouponItem> couponItemList);
+
+	/**
+	 * 按照时间搜索过期并且未使用的优惠券
+	 * @return
+	 */
+	public List<CouponItemDto> expiredAndNoTake(CouponItemDto couponItemDto);
 }

+ 5 - 0
watero-wechat-service/src/main/java/com/iamberry/wechat/service/coupon/CouponItemServiceImpl.java

@@ -57,4 +57,9 @@ public class CouponItemServiceImpl implements CouponItemService {
 		// TODO Auto-generated method stub
 		return couponItemMapper.updateCouponItemList(couponItemList);
 	}
+
+	@Override
+	public List<CouponItemDto> expiredAndNoTake(CouponItemDto couponItemDto) {
+		return couponItemMapper.expiredAndNoTake(couponItemDto);
+	}
 }

+ 6 - 0
watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/CouponItemMapper.java

@@ -60,4 +60,10 @@ public interface CouponItemMapper {
 	 * @author liuzhiwei
 	 */
 	public Integer updateCouponItemList(List<CouponItem> couponItemList);
+
+	/**
+	 * 按照时间搜索过期并且未使用的优惠券
+	 * @return
+	 */
+	public List<CouponItemDto> expiredAndNoTake(CouponItemDto couponItemDto);
 }

+ 24 - 0
watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/couponItemMapper.xml

@@ -167,4 +167,28 @@
 	    	</if>
  		</foreach>
  	</update>
+
+	<!-- 查询优惠券详情列表 分页 -->
+	<select id="expiredAndNoTake" resultType="CouponItemDto" parameterType="CouponItemDto">
+		SELECT
+			<include refid="allField"></include>,
+		CT.COUPON_TYPE couponType
+		FROM TB_IAMBERRY_COUPON_ITEM CI
+		JOIN TB_IAMBERRY_COUPON_TYPE CT ON CI.COUPON_ID=CT.COUPON_ID
+		<where>
+			<if test="couponId != null and couponId != ''">
+				AND CI.COUPON_ID=#{couponId}
+			</if>
+			<if test="couponUseStatus != null">
+				AND CI.COUPON_USE_STATUS = #{couponUseStatus}
+			</if>
+			<if test="beginDate != null and beginDate != ''">
+				AND CI.COUPON_USE_END_DATE<![CDATA[>]]>#{beginDate}
+			</if>
+			<if test="endDate != null and endDate != ''">
+				AND CI.COUPON_USE_END_DATE<![CDATA[<]]>#{endDate}
+			</if>
+		</where>
+		ORDER BY CI.COUPON_RECEIVE_DATE DESC
+	</select>
 </mapper>

+ 1 - 1
watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/mothMovableMapper.xml

@@ -57,7 +57,7 @@
         from tb_iamberry_mother_movable t
         where t.moth_mova_id= #{mothMovaId}
     </select>
-    <insert id="save" parameterType="MothMovable" >
+    <insert id="save" parameterType="MothMovable"  keyProperty="mothMovaId" useGeneratedKeys="true" >
         insert into
         tb_iamberry_mother_movable
         (

+ 14 - 3
watero-wechat-service/src/main/java/com/iamberry/wechat/service/mothMovable/MothMovableServiceImpl.java

@@ -80,12 +80,15 @@ public class MothMovableServiceImpl  implements MothMovableService {
 
         MothMovable mm1 = new MothMovable();
         Integer allNum = mothMovableMapper.getNum(mm1);
-        if(allNum <= num){
+        if(allNum < num){
             //创建优惠券
             Integer couponId = 10000;
             CouponType couponType = couponTypeMapper.getCouponTypeById(couponId);
             Calendar calendar = Calendar.getInstance();
-            calendar.add(Calendar.DATE, 7);  //有效期三个月
+            calendar.add(Calendar.DATE, 7);  //有效期7天
+            calendar.set(Calendar.HOUR_OF_DAY,23);
+            calendar.set(Calendar.MINUTE,59);
+            calendar.set(Calendar.SECOND,59);
             CouponItem couponItem = new CouponItem();
             uuidStr = StrUtils.getUUID();
             couponItem.setCouponItemId(uuidStr);
@@ -147,7 +150,15 @@ public class MothMovableServiceImpl  implements MothMovableService {
 
        /*下载二维码*/
         DownloadWXCodeUtil.downloadByNIO2(qrc.getUrl(),codeName,path,PosterNumUtils.CODE_WIDTH,PosterNumUtils.CODE_HEIGHT,false);
-        DownloadWXCodeUtil.downloadByNIO2(mothMovable.getMothMovaHead(),headName,path,PosterNumUtils.HEAD_WIDTH,PosterNumUtils.HEAD_HEIGHT,true);
+
+        if(mothMovable.getMothMovaHead() == null || "".equals(mothMovable.getMothMovaHead())){
+            String headImg = path+headName;
+            String oldheadImg = path+PosterNumUtils.getBackPath(0);
+            FileUtils.copyFile(oldheadImg,headImg);
+        }else{
+            DownloadWXCodeUtil.downloadByNIO2(mothMovable.getMothMovaHead(),headName,path,PosterNumUtils.HEAD_WIDTH,PosterNumUtils.HEAD_HEIGHT,true);
+        }
+
 
         /*海报位置*/
         String newImg = path+imgName;

+ 1 - 5
watero-wechat-service/src/main/java/com/iamberry/wechat/service/wechat/WeChatServiceImpl.java

@@ -315,17 +315,13 @@ public class WeChatServiceImpl implements WeChatService {
 	public Status scannQrcodeMothMovable(Map<String, String> requestMap, String fromUserName,Boolean isSubscription) {
 		Status status = new Status();
 		String senceid = requestMap.get("EventKey");//场景值
-		logger.info("===== 母亲节扫码进入活动 =====1senceid:"+senceid);
+		logger.info("===== 母亲节扫码进入活动 =====senceid:"+senceid);
 		Member member = refreshUserInfo(fromUserName);
-
 		senceid = senceid.replaceAll(ResultInfo.barCodeMothMovable,"");//替换标识前的字符串
 		if(!isSubscription){
 			senceid = senceid.replaceAll(ResultInfo.barCode,"");
 		}
-		logger.info("===== 母亲节扫码进入活动 =====2senceid:"+senceid);
-
 		Integer flag = mothMovableService.scanInfo(senceid,member.getUserOpenid());
-		logger.info("===== 母亲节扫码进入活动 =====flag:"+flag);
 		status.setCountext("活动链接:");
 		status.setFlag(false);
 		return status;

+ 58 - 1
watero-wechat-web/src/main/java/com/iamberry/wechat/handles/mothMovable/MothMovableHandler.java

@@ -5,10 +5,14 @@ import com.iamberry.wechat.core.entity.WechatUtils;
 import com.iamberry.wechat.core.entity.member.Member;
 import com.iamberry.wechat.core.entity.mothMovable.MothMovable;
 import com.iamberry.wechat.core.entity.stati.AcceStatistics;
+import com.iamberry.wechat.face.home.HomeService;
 import com.iamberry.wechat.face.member.MemberService;
 import com.iamberry.wechat.face.mothMovable.MothMovableService;
 import com.iamberry.wechat.face.stati.AcceStatisticsService;
 import com.iamberry.wechat.tools.ResultInfo;
+import com.iamberry.wechat.tools.WeixinUtil;
+import com.iamberry.wechat.utils.SendMessageUtil;
+import net.sf.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -17,6 +21,10 @@ import org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 
@@ -35,7 +43,11 @@ public class MothMovableHandler {
     @Autowired
     private MemberService memberService;
     @Autowired
+    private HomeService homeService;
+    @Autowired
     private AcceStatisticsService acceStatisticsService;
+    @Autowired
+    private SendMessageUtil sendMessageUtil;
 
     /**
      * 获取二维码
@@ -81,6 +93,26 @@ public class MothMovableHandler {
         }catch (Exception e){
             return new ResultMsg(false,  ResultMsg.ERROR, e.getMessage(),null);
         }
+
+        //判断时候领取的优惠券,有领取了优惠券,就推送信息
+        if(mothMovable.getCouponItemId() != null && !"".equals(mothMovable.getCouponItemId())){
+            Calendar calendar = Calendar.getInstance();
+            calendar.add(Calendar.DATE, 7);  //有效期7天
+            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+            String dataStr = "有效期至"+ formatter.format(calendar.getTime());
+            try{
+                sendMessageUtil.servicePush(
+                        "亲爱的用户,恭喜您已领取WaterO滤芯T1/T2抵用券",
+                        "WaterO滤芯T1/T2抵用券",
+                        dataStr,
+                        "可在“服务中心—会员中心—券包”查看,请尽快使用。",
+                        member.getUserOpenid(),
+                        ResultInfo.SERVICE_PUSH_URL);
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        }
+
         msg.setResultCode(ResultInfo.SUCCESSCODE);
         msg.setData(mothMovable);
         msg.setStatus(true);
@@ -100,7 +132,32 @@ public class MothMovableHandler {
         ResultMsg msg = new ResultMsg();
 
         Member member = WechatUtils.getUserBySession(request);
+
+        JSONObject jsonObject = WeixinUtil.getUserInfo(member.getUserOpenid());
+        String sex = jsonObject.getString("sex");//值为1时是男性,值为2时是女性,值为0时是未知
+        String city = jsonObject.getString("city");
+        String country = jsonObject.getString("country");
+        String province = jsonObject.getString("province");
+        String nickname = jsonObject.getString("nickname");
+        String headimgurl = jsonObject.getString("headimgurl");
+        try {
+            nickname = URLEncoder.encode(jsonObject.getString("nickname"), "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            nickname = "";
+        }
         member = memberService.getMemberByUserOpenId(member.getUserOpenid());
+        //赋值&更新会员数据
+        if (member != null && member.getUserId() != null) {
+            member.setUserOpenid(member.getUserOpenid());
+            member.setUserNickname(nickname);
+            member.setUserSex(Integer.parseInt(sex));
+            member.setUserAddr(country+"-"+province+"-"+city);
+            member.setUserHead(headimgurl);
+            //userIsBought 暂存旧的关注状态
+            member.setUserIsBought(member.getUserStatus() == null ? 1 : member.getUserStatus());
+            member.setUserStatus(2); // 已关注
+            homeService.updateWechatMemberInfoByByOpenid(member);
+        }
 
         //进入活动的UV埋点
         AcceStatistics acceStatistics = new AcceStatistics();
@@ -108,7 +165,7 @@ public class MothMovableHandler {
         acceStatistics.setAcceStatType(1);
         acceStatistics.setJudgeTime(new Date());
         Integer count = acceStatisticsService.getAcceStatiCount(acceStatistics);
-        if(count < 0){  //添加UV访问
+        if(count <= 0){  //添加UV访问
             Integer flag = acceStatisticsService.save(acceStatistics);
         }
 

+ 52 - 4
watero-wechat-web/src/main/java/com/iamberry/wechat/handles/mq/MQTask.java

@@ -2,15 +2,14 @@ package com.iamberry.wechat.handles.mq;
 
 import java.lang.reflect.Method;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.iamberry.wechat.core.entity.coupon.CouponItemDto;
 import com.iamberry.wechat.core.entity.order.Order;
+import com.iamberry.wechat.face.coupon.CouponItemService;
 import com.iamberry.wechat.tools.HttpClient431Util;
 import com.iamberry.wechat.tools.NameUtils;
 import net.sf.json.JSONObject;
@@ -68,6 +67,9 @@ public class MQTask implements InitializingBean {
 	
 	@Autowired
 	private CodeService codeService;
+
+	@Autowired
+	private CouponItemService couponItemService;
 	
 	private Lock lock = new ReentrantLock();
 
@@ -412,4 +414,50 @@ public class MQTask implements InitializingBean {
 			}
 		}
 	}
+
+
+	/**
+	 * 每天有过期的优惠券提醒
+	 * @throws Exception
+	 */
+//	@Scheduled(cron = "0 0 */1 * * ?")//每小时执行一次
+//	@Scheduled(cron = "0 0/2 * * * ?")//每2分钟执行一次
+	@Scheduled(cron = "0 0 9 * * ?")//每天早上9点触发
+	public void expiredCouponRemind() throws Exception {
+		logger.info("---------------- 过期优惠券提醒开始 ---------------");
+		CouponItemDto couponItemDto = new CouponItemDto();
+		couponItemDto.setCouponUseStatus(1);
+		Calendar calendar = Calendar.getInstance();
+		calendar.set(Calendar.HOUR_OF_DAY,0);
+		calendar.set(Calendar.MINUTE,0);
+		calendar.set(Calendar.SECOND,5);
+		couponItemDto.setBeginDate(calendar.getTime());
+
+		Calendar calendarEnd = Calendar.getInstance();
+		calendarEnd.set(Calendar.HOUR_OF_DAY,23);
+		calendarEnd.set(Calendar.MINUTE,59);
+		calendarEnd.set(Calendar.SECOND,55);
+		couponItemDto.setEndDate(calendarEnd.getTime());
+		List<CouponItemDto> couponItemDtoList = couponItemService.expiredAndNoTake(couponItemDto);
+
+		for (CouponItemDto cid:couponItemDtoList) {
+			String name = cid.getCouponName();
+			try{
+				sendMessageUtil.servicePush(
+						"亲爱的用户,您的"+ name +"即将到期",
+						name,
+						"今日到期",
+						"可在“服务中心—会员中心—券包”查看,请尽快使用。",
+						cid.getUseropenid(),
+						ResultInfo.SERVICE_PUSH_URL);
+			}catch (Exception e){
+				e.printStackTrace();
+				logger.info("-------- 优惠券ID:"+ cid.getCouponItemId() + "  优惠券名称:" + name +"即将过期,推送提醒失败 ------");
+			}
+			logger.info("-------- 优惠券ID:"+ cid.getCouponItemId() + "  优惠券名称:" + name +"即将过期,推送提醒成功 ------");
+		}
+		logger.info("---------------- 过期优惠券提醒结束 ---------------");
+	}
+
+
 }

+ 27 - 5
watero-wechat-web/src/main/java/com/iamberry/wechat/utils/SendMessageUtil.java

@@ -62,6 +62,9 @@ public class SendMessageUtil {
 			case 10:  //10、奖品领取通知 
 				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.prize_receive_push, date, url);
 				break;
+			case 11:  //11、母亲节活动,推送模板
+				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.service_push, date, url);
+				break;
 			default: 
 				break;
 			}
@@ -70,12 +73,13 @@ public class SendMessageUtil {
 		}
 		
 		public static void main(String[] args) {
-			String date = "{'first':{'color':'#173177', 'value':'尊敬的客户您好~您的订单已发货~'}, 'order_id':{'color':'#173177','value':'1009145345B11792L'}, 'package_id':{'color':'#173177','value':'yuantong:34234234'}, 'remark':{'color':'#173177', 'value':'点击进入商城查看-->>'}}";
-			String openId = "o-icas0dRzE7WYAEAmcX4BQCUyFo";
-			String appId = "wxd995fb95b97ece1b";// 应用ID
-			String appSecret = "34922854462fba23cf54ce859349fcf4";// 应用密钥
+//			String date = "{'first':{'color':'#173177', 'value':'尊敬的客户您好~您的订单已发货~'}, 'order_id':{'color':'#173177','value':'1009145345B11792L'}, 'package_id':{'color':'#173177','value':'yuantong:34234234'}, 'remark':{'color':'#173177', 'value':'点击进入商城查看-->>'}}";
+			String date = "{'first':{'color':'#173177','value':'亲爱的用户,'}, 'Good':{'color':'#173177','value':'母亲节'}, 'contentType':{'color':'#173177', 'value':'优惠券'},'remark':{'color':'#FF0000','value':'remarkValue'}}";
+			String openId = "o3G6nww8FoM08HSbwpJqrhGu8V6Q";
+			String appId = "wx27c9f825761a861b";// 应用ID
+			String appSecret = "97b2f2991e4ff0f2567fbc625f858377";// 应用密钥
 			
-			WeixinUtil.sendTemplateMessage(appId, appSecret, openId, "744KA1PdB1I5PzRcjtxqbEz5t2bp8vdsi4I2ytW1rbE", date, "xx");
+			WeixinUtil.sendTemplateMessage(appId, appSecret, openId, "5hWq6wd6W9HbMZ0ICSRTDyCKh_r_MjpQtWzkQRSKLio", date, "xx");
 			System.out.println("发送成功");
 		}
 		
@@ -201,4 +205,22 @@ public class SendMessageUtil {
 					.replaceFirst("remarkValue",remark);
 				sendTemplateMessageToOpenid(temp, openId, url,10);
 		}
+
+	/**
+	 * 服务推送
+	 * @param first
+	 * @param keyword1
+	 * @param keyword2
+	 * @param remark
+	 * @param openId
+	 * @param url
+	 */
+	 public void servicePush(String first,String keyword1,String keyword2,String remark,String openId,String url){
+		String temp = ResultInfo.SERVICEPUSH;
+		temp = temp.replaceFirst("firstValueIamberry", first)
+				.replaceFirst("GoodValue",keyword1)
+				.replaceFirst("contentTypeValue",keyword2)
+				.replaceFirst("remarkValue",remark);
+			sendTemplateMessageToOpenid(temp, openId, url,11);
+	 }
 }

+ 3 - 1
watero-wechat-web/src/main/resources/ResultInfo.properties

@@ -61,6 +61,7 @@ ORDER_GUOQI = http://test.iamberry.com/watero/pay/goOrderList
 TRY_ORDER_DETAIL = http://test.iamberry.com/watero/wechat/probation/try_order
 RENT_ORDER_DETAIL = http://static.iamberry.com/watero/rent/lease_order_details.html?rentStatus=-1
 AGENT_REFERRER_MACHINE_PAGE = http://test.iamberry.com/watero/view/gift_card_get_give.html
+SERVICE_PUSH_URL = https://s.iamberry.com/watero/wechat/coupon_bag.html
 ########################--\u6C34\u65F6\u4EE3	xiaoxi moban	--################
 Income_template_id=5KquQ3nZgv3i1gB7T7pvLZ-0pAkk1e3T6QATwJsZ1-8
 rewards_template_id=3lutyqWLusMR8CFRmPpiTmdtxZi-Zi7OJrf9vNFkf_g
@@ -71,4 +72,5 @@ probation_apply_notice=RLCwG8r7poANQgdoJCZN46NbFctrhahbczu-LgPhC_k
 probation_apply_success=-2mhs7Y0aUFtas4rnatcGj3xYv0XyFjnfaEqf4PJJvo
 probation_pay_success=BWudEQXeAwon2BTa-RQO3X_sVP6AkmDGngKhi92KDc0
 probation_shut_down=qAn04oDBfK4VSB8bROeR-5BhhYri1oUK51FVlh6KwU4
-prize_receive_push=7d_r3XJsY5MAISYCDxrjdnPXgNm3IU8XLRYWXbCJjbs
+prize_receive_push=7d_r3XJsY5MAISYCDxrjdnPXgNm3IU8XLRYWXbCJjbs
+service_push=5hWq6wd6W9HbMZ0ICSRTDyCKh_r_MjpQtWzkQRSKLio