Browse Source

渠道统计

wangxiaoming 6 years ago
parent
commit
174ee86ab5

+ 71 - 0
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/channel/AttenStatistics.java

@@ -0,0 +1,71 @@
+package com.iamberry.wechat.core.entity.channel;
+
+import  java.util.Date;
+import  java.io.Serializable;
+/**
+ *  渠道关注二维码统计类
+ * @author Administrator
+ * @Date 2018-11-27
+ */
+public class AttenStatistics  implements  Serializable{
+    //id
+    private Integer attenStatisticsId;
+    //渠道id
+    private Integer channelId;
+    //返利渠道类型 1:主渠道 2:子渠道
+    private Integer channelType;
+    //关注人的Openid
+    private String attenStatisticsOpenId;
+    //状态 1:关注
+    private Integer attenStatisticsStatus;
+    //创建时间'
+    private Date attenStatisticsCreateTime;
+
+    public Integer getAttenStatisticsId(){
+        return attenStatisticsId;
+    }
+
+    public void setAttenStatisticsId(Integer  attenStatisticsId){
+        this.attenStatisticsId=attenStatisticsId;
+    }
+
+    public Integer getChannelId(){
+        return channelId;
+    }
+
+    public void setChannelId(Integer  channelId){
+        this.channelId=channelId;
+    }
+
+    public Integer getChannelType(){
+        return channelType;
+    }
+
+    public void setChannelType(Integer  channelType){
+        this.channelType=channelType;
+    }
+
+    public String getAttenStatisticsOpenId(){
+        return attenStatisticsOpenId;
+    }
+
+    public void setAttenStatisticsOpenId(String  attenStatisticsOpenId){
+        this.attenStatisticsOpenId=attenStatisticsOpenId;
+    }
+
+    public Integer getAttenStatisticsStatus(){
+        return attenStatisticsStatus;
+    }
+
+    public void setAttenStatisticsStatus(Integer  attenStatisticsStatus){
+        this.attenStatisticsStatus=attenStatisticsStatus;
+    }
+
+    public Date getAttenStatisticsCreateTime(){
+        return attenStatisticsCreateTime;
+    }
+
+    public void setAttenStatisticsCreateTime(Date  attenStatisticsCreateTime){
+        this.attenStatisticsCreateTime=attenStatisticsCreateTime;
+    }
+}

+ 35 - 1
tooth-common-core/src/main/java/com/iamberry/wechat/tools/WeixinUtil.java

@@ -338,6 +338,34 @@ public class WeixinUtil {
 	}
 
 	/**
+	 * 创建二维码 -- 测试
+	 *
+	 * @param json
+	 * @return
+	 */
+//	public static QRCJson createQrcodeTest(String json) {
+//		QRCJson qrcJson = new QRCJson();
+//		try {
+//			AccessToken at = getAccessToken("wxdb090f0af89e0be3", "518114a120274f625530750c1803921b");
+//			if (at != null) {
+//				String token = at.getToken();
+//				JSONObject jsonObject = httpRequest("https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN".replaceAll("TOKEN", token), "POST", json);
+//				if (jsonObject != null) {
+//					String ticket = URLEncoder.encode(jsonObject.getString("ticket"), "UTF-8");
+//					qrcJson.setTicket(ticket);
+//					qrcJson.setUrl("https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" + ticket);
+//					if (json.contains("expire_seconds")) {// 临时二维码才有过期时间
+//						qrcJson.setExpire_seconds(jsonObject.getString("expire_seconds"));
+//					}
+//				}
+//			}
+//		} catch (Exception e) {
+//			e.printStackTrace();
+//		}
+//		return qrcJson;
+//	}
+
+	/**
 	 * 生成网页授权链接
 	 * 
 	 * @param type
@@ -505,6 +533,12 @@ public class WeixinUtil {
 	}
 
 
-
+//	public static void main(String[] args) {
+//		String QR_LIMIT_STR_SCENE = "{\"action_name\": \"QR_LIMIT_STR_SCENE\", \"action_info\": {\"scene\": {\"scene_str\": \"%s\"}}}";
+//		String chananel = "main_channel_id_22";
+//		String json = String.format(QR_LIMIT_STR_SCENE, chananel);
+//		QRCJson qrc = WeixinUtil.createQrcodeTest(json);
+//		String xx = qrc.getUrl();
+//	}
 
 }

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

@@ -33,6 +33,7 @@ public class ResultInfo {
 
 	public  static String barCodePrefix="MACHINE_QR_CODE";
 	public  static String barCodeActivity="ACTIVITY_OPENID";
+	public  static String barCodeMainChannelId="main_channel_id_";
 	public  static String barCode="qrscene_";
 	/**
 	 * 初始化代理商信息openid成功前缀

+ 37 - 0
tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/channel/AttenStatisticsService.java

@@ -0,0 +1,37 @@
+package com.iamberry.wechat.face.channel;
+
+import com.iamberry.wechat.core.entity.channel.AttenStatistics;
+
+import java.util.List;
+
+/**
+ *  渠道关注二维码统计接口
+ * @author Administrator
+ * @Date 2018-11-27
+ */
+public interface AttenStatisticsService {
+    /**
+     * 获取集合
+     * @param  attenStatistics
+     * @return List
+     */
+    List<AttenStatistics> getAttenStatisticsList(AttenStatistics  attenStatistics);
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  attenStatistics
+     */
+    AttenStatistics  getAttenStatisticsById(Integer  id);
+    /**
+     * 增加数据
+     * @param  attenStatistics
+     * @return Integer
+     */
+    Integer  save(AttenStatistics  attenStatistics);
+    /**
+     * 删除数据
+     * @param  id
+     * @return Integer
+     */
+    Integer  delete(Integer  id);
+}

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

@@ -116,7 +116,7 @@ public class ActivityServiceImpl  implements ActivityService {
     /**
      * 好友助力
      * @param openId
-     * @param activityOpenId  助力id
+     * @param activityOpenId  助力id  扫码人
      * @return  -1 自己扫的二维码
      *            0  失败
      *           -3  好友重复扫描

+ 56 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/channel/AttenStatisticsServiceImpl.java

@@ -0,0 +1,56 @@
+package com.iamberry.wechat.service.channel;
+
+import com.iamberry.wechat.core.entity.channel.AttenStatistics;
+import com.iamberry.wechat.face.channel.AttenStatisticsService;
+import com.iamberry.wechat.service.mapper.AttenStatisticsMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ *  渠道关注二维码统计接口
+ * @author Administrator
+ * @Date 2018-11-27
+ */
+@Service
+public class AttenStatisticsServiceImpl  implements AttenStatisticsService {
+    @Autowired
+    private AttenStatisticsMapper attenStatisticsMapper;
+    /**
+     * 获取集合
+     * @param  attenStatistics
+     * @return List
+     */
+    @Override
+    public List<AttenStatistics> getAttenStatisticsList(AttenStatistics  attenStatistics){
+        return  attenStatisticsMapper.getAttenStatisticsList(attenStatistics);
+    }
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  attenStatistics
+     */
+    @Override
+    public  AttenStatistics  getAttenStatisticsById(Integer  id){
+        return  attenStatisticsMapper.getAttenStatisticsById(id);
+    }
+    /**
+     * 增加数据
+     * @param  attenStatistics
+     * @return Integer
+     */
+    @Override
+    public  Integer  save(AttenStatistics  attenStatistics){
+        return  attenStatisticsMapper.save(attenStatistics);
+    }
+    /**
+     * 删除数据
+     * @param  id
+     * @return Integer
+     */
+    @Override
+    public  Integer  delete(Integer  id){
+        return  attenStatisticsMapper.delete(id);
+    }
+}

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

@@ -0,0 +1,37 @@
+package com.iamberry.wechat.service.mapper;
+
+import com.iamberry.wechat.core.entity.channel.AttenStatistics;
+
+import java.util.List;
+
+/**
+ *  渠道关注二维码统计接口
+ * @author Administrator
+ * @Date 2018-11-27
+ */
+public interface AttenStatisticsMapper {
+    /**
+     * 获取集合
+     * @param  attenStatistics
+     * @return List
+     */
+    List<AttenStatistics> getAttenStatisticsList(AttenStatistics  attenStatistics);
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  attenStatistics
+     */
+    AttenStatistics  getAttenStatisticsById(Integer  id);
+    /**
+     * 增加数据
+     * @param  attenStatistics
+     * @return Integer
+     */
+    Integer  save(AttenStatistics  attenStatistics);
+    /**
+     * 删除数据
+     * @param  id
+     * @return Integer
+     */
+    Integer  delete(Integer  id);
+}

+ 70 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/attenStatisticsMapper.xml

@@ -0,0 +1,70 @@
+<?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.AttenStatisticsMapper">
+    <resultMap  id="BaseResultMap" type="AttenStatistics" >
+        <result    column="atten_statistics_id"    property="attenStatisticsId" />
+        <result    column="channel_id"    property="channelId" />
+        <result    column="channel_type"    property="channelType" />
+        <result    column="atten_statistics_open_id"    property="attenStatisticsOpenId" />
+        <result    column="atten_statistics_status"    property="attenStatisticsStatus" />
+        <result    column="atten_statistics_create_time"    property="attenStatisticsCreateTime" />
+    </resultMap>
+    <sql    id="Base_List" >
+        t.atten_statistics_id,
+        t.channel_id,
+        t.channel_type,
+        t.atten_statistics_open_id,
+        t.atten_statistics_status,
+        t.atten_statistics_create_time
+    </sql>
+    <select id="getAttenStatisticsList" resultMap="BaseResultMap" parameterType="AttenStatistics" >
+        select
+        <include refid="Base_List" />
+        from tb_iamberry_channel_atten_statistics t
+        <where>
+            <if test="attenStatisticsId != null ">
+                AND t.atten_statistics_id = #{attenStatisticsId}
+            </if >
+            <if test="channelId != null ">
+                AND t.channel_id = #{channelId}
+            </if >
+            <if test="channelType != null ">
+                AND t.channel_type = #{channelType}
+            </if >
+            <if test="attenStatisticsOpenId != null and attenStatisticsOpenId != ''">
+                AND t.atten_statistics_open_id  like  CONCAT ('%',#{attenStatisticsOpenId},'%')
+            </if >
+            <if test="attenStatisticsStatus != null ">
+                AND t.atten_statistics_status = #{attenStatisticsStatus}
+            </if >
+        </where>
+    </select>
+    <select id="getAttenStatisticsById" resultMap="BaseResultMap" parameterType="Integer" >
+        select
+        <include refid="Base_List" />
+        from tb_iamberry_channel_atten_statistics t
+        where t.atten_statistics_id= #{attenStatisticsId}
+    </select>
+    <insert id="save" parameterType="AttenStatistics" >
+        insert into
+        tb_iamberry_channel_atten_statistics
+        (
+        channel_id,
+        channel_type,
+        atten_statistics_open_id,
+        atten_statistics_status
+        )
+        values
+        (
+        #{channelId},
+        #{channelType},
+        #{attenStatisticsOpenId},
+        #{attenStatisticsStatus}
+        )
+    </insert>
+    <delete id="delete" parameterType="Integer" >
+        delete FROM
+        tb_iamberry_channel_atten_statistics
+        where atten_statistics_id=#{attenStatisticsId}
+    </delete>
+</mapper>

+ 57 - 1
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/wechat/WeChatServiceImpl.java

@@ -1,6 +1,7 @@
 package com.iamberry.wechat.service.wechat;
 
 import com.iamberry.app.tool.log.RatFWLogger;
+import com.iamberry.wechat.core.entity.channel.AttenStatistics;
 import com.iamberry.wechat.core.entity.drp.PlaceInfo;
 import com.iamberry.wechat.core.entity.member.Member;
 import com.iamberry.wechat.core.entity.qrcode.Qrcode;
@@ -8,6 +9,7 @@ import com.iamberry.wechat.core.entity.qrcode.TemporaryQrcode;
 import com.iamberry.wechat.core.entity.wx.*;
 import com.iamberry.wechat.face.activity.ActivityService;
 import com.iamberry.wechat.face.admin.SystemService;
+import com.iamberry.wechat.face.channel.AttenStatisticsService;
 import com.iamberry.wechat.face.drp.PlaceInfoService;
 import com.iamberry.wechat.face.home.HomeService;
 import com.iamberry.wechat.face.machineNumber.MachineNumberService;
@@ -73,6 +75,9 @@ public class WeChatServiceImpl implements WeChatService {
 	private MachineNumberService machineNumberService;
 	@Autowired
 	private ActivityService activityService;
+	@Autowired
+	private AttenStatisticsService attenStatisticsService;
+
 	/**
 	 * 处理微信发来的请求
 	 * @param FromUserName
@@ -164,6 +169,12 @@ public class WeChatServiceImpl implements WeChatService {
 				String eventType = requestMap.get("Event");// 事件类型
 				String eventKey = requestMap.get("EventKey");
 
+				for(String s:requestMap.keySet()){
+					logger.info("===事件推送:" + s +"="+ requestMap.get(s));
+				}
+
+
+				// 事件列表:CLICK(点击自定义菜单)/subscribe(关注)/unsubscribe(取消关注)/SCAN(扫描二维码)/LOCATION(上报地理位置)
 				if(eventType.equals("SCAN")){
 
 					//扫描机器二维码返回跳转到完善信息页面
@@ -179,6 +190,12 @@ public class WeChatServiceImpl implements WeChatService {
 							return status.getCountext();
 						}
 						respContent = status.getCountext();
+					}else if(eventKey.indexOf(ResultInfo.barCodeMainChannelId) != -1){
+						Status status = bindingMainChannelId(requestMap, fromUserName,false);
+						if (status.isFlag()) {
+							return status.getCountext();
+						}
+						respContent = status.getCountext();
 					} else {
 						// 已关注用户扫描二维码事件
 						int flag = subUserScannQrcodeEvent(requestMap, fromUserName);
@@ -216,6 +233,12 @@ public class WeChatServiceImpl implements WeChatService {
 								return status.getCountext();
 							}
 							respContent = status.getCountext();
+						}else if(eventKey.indexOf(ResultInfo.barCodeMainChannelId) != -1){
+							Status status = bindingMainChannelId(requestMap, fromUserName,false);
+							if (status.isFlag()) {
+								return status.getCountext();
+							}
+							respContent = status.getCountext();
 						} else {
 							//未关注用户扫描二维码关注事件处理
 							Status status = scannQRcodeSub(requestMap, fromUserName);
@@ -279,7 +302,6 @@ public class WeChatServiceImpl implements WeChatService {
 		senceid = senceid.replaceAll(ResultInfo.barCodeActivity,"");//替换标识前的字符串
 		if(!isSubscription){
 			senceid = senceid.replaceAll(ResultInfo.barCode,"");//替换标识前的字符串
-
 		}
 		System.out.println("更改之后的值:"+senceid);
 		StringBuilder str = new StringBuilder();
@@ -305,6 +327,40 @@ public class WeChatServiceImpl implements WeChatService {
 		return status;
 	}
 
+
+	/**
+	 * 渠道关注统计
+	 * @param requestMap
+	 */
+	public Status bindingMainChannelId(Map<String, String> requestMap, String fromUserName,Boolean isSubscription) {
+		Status status = new Status();
+		String senceid = requestMap.get("EventKey");//场景值
+
+		//Member member = refreshUserInfo(fromUserName);
+
+		System.out.println("更改之前的值:"+senceid);
+		senceid = senceid.replaceAll(ResultInfo.barCodeMainChannelId,"");//替换标识前的字符串
+		if(!isSubscription){
+			senceid = senceid.replaceAll(ResultInfo.barCode,"");//替换标识前的字符串
+		}
+		System.out.println("更改之后的值:"+senceid);
+
+		AttenStatistics attenStatistics = new AttenStatistics();
+		attenStatistics.setChannelType(1);
+		attenStatistics.setChannelId(Integer.valueOf(senceid));
+		attenStatistics.setAttenStatisticsOpenId(fromUserName);
+		attenStatistics.setAttenStatisticsStatus(1);
+		Integer flag = attenStatisticsService.save(attenStatistics);
+		if(flag > 0){
+			System.out.println("添加渠道"+ senceid +"统计成功,openid:"+ fromUserName);
+		}else{
+			System.out.println("添加渠道"+ senceid +"统计失败,openid:"+ fromUserName);
+		}
+		status.setCountext("");
+		status.setFlag(false);
+		return status;
+	}
+
 	/**
 	 * 扫码进入赠送礼品信息页面(已关注)
 	 * @param requestMap

+ 2 - 0
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/channel/ChannelAdminHandler.java

@@ -87,6 +87,8 @@ public class ChannelAdminHandler {
         for (ChannelPrice cp : channelPriceList){
             Product product = productService.selectProductByProductId(cp.getProductId());
             product.setColorId(cp.getColorId());
+            product.setProductDiscount(cp.getChannelPriceOffer());
+            product.setProductPrice(cp.getChannelOriginalPrice());
             productList.add(product);
         }
 

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

@@ -280,6 +280,7 @@
 		<typeAlias type="com.iamberry.wechat.core.entity.channel.MainChannel" alias="MainChannel"/>
 		<typeAlias type="com.iamberry.wechat.core.entity.channel.BalanceLog" alias="BalanceLog"/>
 		<typeAlias type="com.iamberry.wechat.core.entity.channel.ChannelAdmin" alias="ChannelAdmin"/>
+		<typeAlias type="com.iamberry.wechat.core.entity.channel.AttenStatistics" alias="AttenStatistics"/>
 
 		<package name="com.iamberry.wechat.core.entity.rent"/>
 	</typeAliases>
@@ -413,6 +414,7 @@
 		<mapper resource="com/iamberry/wechat/service/mapper/channelPriceMapper.xml"/>
 		<mapper resource="com/iamberry/wechat/service/mapper/balanceLogMapper.xml"/>
 		<mapper resource="com/iamberry/wechat/service/mapper/channelAdminMapper.xml"/>
+		<mapper resource="com/iamberry/wechat/service/mapper/attenStatisticsMapper.xml"/>
 
 	</mappers>
 </configuration>

+ 1 - 1
tooth-wechat-web/src/main/webapp/WEB-INF/views/admin/order/orderList.jsp

@@ -616,7 +616,7 @@
                 function downloadExcel2(){
 				    var beginDate = $("#beginDate").val();
 				    var endDate = $("#endDate").val();
-                    window.location=" <%=request.getContextPath()%>/admin/order/download_order2?beginDate=2018-08-01&endDate=2018-08-31";
+                    window.location=" <%=request.getContextPath()%>/admin/order/download_order2?beginDate=2018-09-01&endDate=2018-10-31";
                 }
 				</script>
 </body>