Authored by zhengwen.ge

去掉品友上报

1 -package com.yoho.unions.kafka.consumer;  
2 -  
3 -import java.util.ArrayList;  
4 -import java.util.HashMap;  
5 -import java.util.List;  
6 -import java.util.Map;  
7 -  
8 -import org.apache.commons.collections.CollectionUtils;  
9 -import org.slf4j.Logger;  
10 -import org.slf4j.LoggerFactory;  
11 -import org.springframework.stereotype.Service;  
12 -  
13 -import com.alibaba.fastjson.JSONObject;  
14 -import com.yoho.unions.kafka.consumer.handler.ClickEventHandIntf;  
15 -  
16 -  
17 -@Service  
18 -public class ClickActionDispatcher {  
19 - private static final Logger logger = LoggerFactory.getLogger(ClickActionDispatcher.class);  
20 -  
21 - /**  
22 - * 只有bean初始化时修改,后续只作读取,线程安全  
23 - */  
24 - private Map<String, List<ClickEventHandIntf>> handlerMap = new HashMap<>();  
25 -  
26 - /**  
27 - * handler注册  
28 - * @param eventKey  
29 - * @param handler  
30 - */  
31 - synchronized public void register(String eventKey, ClickEventHandIntf handler) {  
32 - if(eventKey == null || handler == null) {  
33 - logger.warn("invalid click event handler, key: {}, handler:{}", eventKey, handler);  
34 - return;  
35 - }  
36 -  
37 - List<ClickEventHandIntf> handlerList = handlerMap.get(eventKey);  
38 - if(handlerList == null) {  
39 - handlerList = new ArrayList<>();  
40 - handlerMap.put(eventKey, handlerList);  
41 - }  
42 -  
43 - handlerList.add(handler);  
44 - logger.info("register handler, event: {}, handler: {}", eventKey, handler);  
45 - }  
46 -  
47 - /**  
48 - * 点击事件分发处理  
49 - * @param eventJson  
50 - */  
51 - public void dispatch(JSONObject eventJson) {  
52 - if(eventJson == null)  
53 - return;  
54 -  
55 - String op = eventJson.getString("op");  
56 - if(op == null)  
57 - return;  
58 -  
59 - List<ClickEventHandIntf> handlerList = handlerMap.get(op.toUpperCase());  
60 - if(CollectionUtils.isEmpty(handlerList))  
61 - return;  
62 -  
63 - for(ClickEventHandIntf handler : handlerList) {  
64 - handler.process(eventJson);  
65 - }  
66 - }  
67 -} 1 +//package com.yoho.unions.kafka.consumer;
  2 +//
  3 +//import java.util.ArrayList;
  4 +//import java.util.HashMap;
  5 +//import java.util.List;
  6 +//import java.util.Map;
  7 +//
  8 +//import org.apache.commons.collections.CollectionUtils;
  9 +//import org.slf4j.Logger;
  10 +//import org.slf4j.LoggerFactory;
  11 +//import org.springframework.stereotype.Service;
  12 +//
  13 +//import com.alibaba.fastjson.JSONObject;
  14 +//import com.yoho.unions.kafka.consumer.handler.ClickEventHandIntf;
  15 +//
  16 +//
  17 +//@Service
  18 +//public class ClickActionDispatcher {
  19 +// private static final Logger logger = LoggerFactory.getLogger(ClickActionDispatcher.class);
  20 +//
  21 +// /**
  22 +// * 只有bean初始化时修改,后续只作读取,线程安全
  23 +// */
  24 +// private Map<String, List<ClickEventHandIntf>> handlerMap = new HashMap<>();
  25 +//
  26 +// /**
  27 +// * handler注册
  28 +// * @param eventKey
  29 +// * @param handler
  30 +// */
  31 +// synchronized public void register(String eventKey, ClickEventHandIntf handler) {
  32 +// if(eventKey == null || handler == null) {
  33 +// logger.warn("invalid click event handler, key: {}, handler:{}", eventKey, handler);
  34 +// return;
  35 +// }
  36 +//
  37 +// List<ClickEventHandIntf> handlerList = handlerMap.get(eventKey);
  38 +// if(handlerList == null) {
  39 +// handlerList = new ArrayList<>();
  40 +// handlerMap.put(eventKey, handlerList);
  41 +// }
  42 +//
  43 +// handlerList.add(handler);
  44 +// logger.info("register handler, event: {}, handler: {}", eventKey, handler);
  45 +// }
  46 +//
  47 +// /**
  48 +// * 点击事件分发处理
  49 +// * @param eventJson
  50 +// */
  51 +// public void dispatch(JSONObject eventJson) {
  52 +// if(eventJson == null)
  53 +// return;
  54 +//
  55 +// String op = eventJson.getString("op");
  56 +// if(op == null)
  57 +// return;
  58 +//
  59 +// List<ClickEventHandIntf> handlerList = handlerMap.get(op.toUpperCase());
  60 +// if(CollectionUtils.isEmpty(handlerList))
  61 +// return;
  62 +//
  63 +// for(ClickEventHandIntf handler : handlerList) {
  64 +// handler.process(eventJson);
  65 +// }
  66 +// }
  67 +//}
1 -package com.yoho.unions.kafka.consumer.handler;  
2 -  
3 -import com.alibaba.fastjson.JSONObject;  
4 -  
5 -public interface ClickEventHandIntf {  
6 -  
7 - void process(JSONObject actionData);  
8 -  
9 -} 1 +//package com.yoho.unions.kafka.consumer.handler;
  2 +//
  3 +//import com.alibaba.fastjson.JSONObject;
  4 +//
  5 +//public interface ClickEventHandIntf {
  6 +//
  7 +// void process(JSONObject actionData);
  8 +//
  9 +//}
1 -package com.yoho.unions.kafka.consumer.handler;  
2 -  
3 -import java.math.BigDecimal;  
4 -import java.util.List;  
5 -  
6 -import javax.annotation.PostConstruct;  
7 -  
8 -import org.apache.commons.collections.CollectionUtils;  
9 -import org.apache.commons.lang3.StringUtils;  
10 -import org.slf4j.Logger;  
11 -import org.slf4j.LoggerFactory;  
12 -import org.springframework.beans.factory.annotation.Autowired;  
13 -import org.springframework.stereotype.Service;  
14 -  
15 -import com.alibaba.fastjson.JSONObject;  
16 -import com.yoho.service.model.union.request.TransPinYouRequestBO;  
17 -import com.yoho.service.model.union.request.ViewPinYouRequestBO;  
18 -import com.yoho.unions.dal.BaseOrderShipmentUdidMapper;  
19 -import com.yoho.unions.dal.ErpOrdersGoodsMapper;  
20 -import com.yoho.unions.dal.ErpOrdersMapper;  
21 -import com.yoho.unions.dal.model.BaseOrderShipmentUdid;  
22 -import com.yoho.unions.dal.model.ErpOrders;  
23 -import com.yoho.unions.dal.model.ErpOrdersGoods;  
24 -import com.yoho.unions.kafka.consumer.ClickActionDispatcher;  
25 -import com.yoho.unions.kafka.consumer.ClickEventConstants;  
26 -import com.yoho.unions.server.service.IPinYouService;  
27 -  
28 -/**  
29 - * 品友行为上报  
30 - * @author yoho  
31 - *  
32 - */  
33 -@Service  
34 -public class PinyouReportHandler implements ClickEventHandIntf {  
35 -  
36 - private static final Logger logger = LoggerFactory.getLogger(PinyouReportHandler.class);  
37 -  
38 - @Autowired  
39 - private ClickActionDispatcher dispatcher;  
40 -  
41 - @Autowired  
42 - IPinYouService pinYouService;  
43 -  
44 - @Autowired  
45 - private ErpOrdersMapper erpOrdersMapper;  
46 -  
47 - @Autowired  
48 - private ErpOrdersGoodsMapper erpOrdersGoodsMapper;  
49 -  
50 - @Autowired  
51 - private BaseOrderShipmentUdidMapper shipOrderUdidMapper;  
52 -  
53 - @PostConstruct  
54 - public void init() {  
55 - dispatcher.register(ClickEventConstants.YB_MAIN_S, this);  
56 - dispatcher.register(ClickEventConstants.YB_GDS_DT_INFO, this);  
57 - dispatcher.register(ClickEventConstants.YB_GDS_DT_SEL, this);  
58 - dispatcher.register(ClickEventConstants.YB_SC_ORD, this);  
59 - }  
60 -  
61 - @Override  
62 - public void process(JSONObject actionData) {  
63 - logger.info("click event: {}", actionData.toJSONString());  
64 -  
65 - //3个月内存在已交寄订单,则不上报数据  
66 - if(hasShipOrdersLast3Months(actionData.getString("udid"))) {  
67 - logger.info("event ignore for shipped order in 3 month, udid: {}", actionData.getString("udid"));  
68 - return;  
69 - }  
70 -  
71 - String opr = actionData.getString("op") == null ? "" : actionData.getString("op").toUpperCase();  
72 - switch(opr) {  
73 - case ClickEventConstants.YB_MAIN_S:  
74 - case ClickEventConstants.YB_GDS_DT_INFO:  
75 - case ClickEventConstants.YB_GDS_DT_SEL:  
76 - ViewPinYouRequestBO viewBO = getPinyouViewData(opr, actionData);  
77 - pinYouService.sendView(viewBO);  
78 - break;  
79 -  
80 - case ClickEventConstants.YB_SC_ORD:  
81 - TransPinYouRequestBO transBO = getPinyouTransData(opr, actionData);  
82 - pinYouService.sendTrans(transBO);  
83 - break;  
84 - }  
85 - }  
86 -  
87 - /**  
88 - * 解析品友行为数据  
89 - * @param opr  
90 - * @param actionData  
91 - * @return  
92 - */  
93 - private ViewPinYouRequestBO getPinyouViewData(String opr, JSONObject actionData) {  
94 - JSONObject paramData = actionData.getJSONObject("param");  
95 - String eventName = null;  
96 - String eventValue = null;  
97 - switch(opr) {  
98 - case ClickEventConstants.YB_MAIN_S:  
99 - eventName = "viewSearch";  
100 - eventValue = paramData == null ? "" : paramData.getString("KW");  
101 - break;  
102 -  
103 - case ClickEventConstants.YB_GDS_DT_INFO:  
104 - eventName = "viewItem";  
105 - eventValue = paramData == null ? "" : paramData.getString("PRD_ID");  
106 - break;  
107 -  
108 - case ClickEventConstants.YB_GDS_DT_SEL:  
109 - eventName = "addCart";  
110 - eventValue = paramData == null ? "" : paramData.getString("PRD_SKC");  
111 - break;  
112 - }  
113 -  
114 - if(eventName == null || eventValue == null)  
115 - return null;  
116 -  
117 - ViewPinYouRequestBO viewRequest = new ViewPinYouRequestBO();  
118 - viewRequest.setEvent(eventName);  
119 - viewRequest.setEvent_value(eventValue);  
120 - viewRequest.setUser_id(actionData.getString("uid"));  
121 - viewRequest.setOs(actionData.getString("os"));  
122 - viewRequest.setIp(actionData.getString("ip"));  
123 - viewRequest.setIdfa(actionData.getString("idfa"));  
124 - viewRequest.setImei(actionData.getString("imei"));  
125 - viewRequest.setTs(actionData.getString("ts"));  
126 -  
127 - return viewRequest;  
128 - }  
129 -  
130 -  
131 - /**  
132 - * 解析品友转化数据  
133 - * @param actionData  
134 - * @return  
135 - */  
136 - private TransPinYouRequestBO getPinyouTransData(String opr, JSONObject actionData) {  
137 - if(!StringUtils.equalsIgnoreCase(ClickEventConstants.YB_SC_ORD, opr)) {  
138 - return null;  
139 - }  
140 -  
141 - TransPinYouRequestBO transRequest = new TransPinYouRequestBO();  
142 - String orderCode = actionData.getJSONObject("param") == null ? null : actionData.getJSONObject("param").getString("ORD_NUM");  
143 - String uid = actionData.getString("uid");  
144 - if(orderCode == null || uid == null) {  
145 - return null;  
146 - }  
147 -  
148 - ErpOrders orders = erpOrdersMapper.selectByOrderCode(Long.valueOf(orderCode));  
149 - List<ErpOrdersGoods> orderGoodsList = erpOrdersGoodsMapper.selectByOrderCode(Long.valueOf(orderCode));  
150 - if(orders == null || CollectionUtils.isEmpty(orderGoodsList)) {  
151 - return null;  
152 - }  
153 -  
154 - StringBuilder plistBuf = new StringBuilder();  
155 - int count = 0;  
156 - for(ErpOrdersGoods ordersGoods : orderGoodsList) {  
157 - if(count > 0)  
158 - plistBuf.append(":");  
159 - plistBuf.append(ordersGoods.getProductSkn()).append(",").append(ordersGoods.getBuyNumber());  
160 - count++;  
161 - }  
162 -  
163 - transRequest.setEvent("createOrder");  
164 - transRequest.setEvent_value(orderCode);  
165 - transRequest.setUser_id(actionData.getString("uid"));  
166 - transRequest.setOs(actionData.getString("os"));  
167 - transRequest.setIp(actionData.getString("ip"));  
168 - transRequest.setIdfa(actionData.getString("idfa"));  
169 - transRequest.setImei(actionData.getString("imei"));  
170 - transRequest.setTs(actionData.getString("ts"));  
171 -  
172 - transRequest.setOrder(orderCode);  
173 - transRequest.setMoney(orders.getLastOrderAmount().setScale(2, BigDecimal.ROUND_HALF_EVEN).toString());  
174 - transRequest.setPlist(plistBuf.toString());  
175 - transRequest.setOrderStatus("Y".equals(orders.getPaymentStatus()) ? "1" : "0");  
176 -  
177 - return transRequest;  
178 - }  
179 -  
180 - /**  
181 - *  
182 - * @param udid  
183 - * @return  
184 - */  
185 - private boolean hasShipOrdersLast3Months(String udid) {  
186 - /**  
187 - * BASE_ORDER_SHIPMENT_UDID表为大数据离线统计表,如果udid在该表存在记录,表明过去三个月存在已交寄订单  
188 - */  
189 - if(StringUtils.isEmpty(udid))  
190 - return false;  
191 -  
192 - List<BaseOrderShipmentUdid> udidShipOrders = shipOrderUdidMapper.selectByUdid(udid);  
193 - return CollectionUtils.isNotEmpty(udidShipOrders);  
194 - }  
195 -} 1 +//package com.yoho.unions.kafka.consumer.handler;
  2 +//
  3 +//import java.math.BigDecimal;
  4 +//import java.util.List;
  5 +//
  6 +//import javax.annotation.PostConstruct;
  7 +//
  8 +//import org.apache.commons.collections.CollectionUtils;
  9 +//import org.apache.commons.lang3.StringUtils;
  10 +//import org.slf4j.Logger;
  11 +//import org.slf4j.LoggerFactory;
  12 +//import org.springframework.beans.factory.annotation.Autowired;
  13 +//import org.springframework.stereotype.Service;
  14 +//
  15 +//import com.alibaba.fastjson.JSONObject;
  16 +//import com.yoho.service.model.union.request.TransPinYouRequestBO;
  17 +//import com.yoho.service.model.union.request.ViewPinYouRequestBO;
  18 +//import com.yoho.unions.dal.BaseOrderShipmentUdidMapper;
  19 +//import com.yoho.unions.dal.ErpOrdersGoodsMapper;
  20 +//import com.yoho.unions.dal.ErpOrdersMapper;
  21 +//import com.yoho.unions.dal.model.BaseOrderShipmentUdid;
  22 +//import com.yoho.unions.dal.model.ErpOrders;
  23 +//import com.yoho.unions.dal.model.ErpOrdersGoods;
  24 +//import com.yoho.unions.kafka.consumer.ClickActionDispatcher;
  25 +//import com.yoho.unions.kafka.consumer.ClickEventConstants;
  26 +//import com.yoho.unions.server.service.IPinYouService;
  27 +//
  28 +///**
  29 +// * 品友行为上报
  30 +// * @author yoho
  31 +// *
  32 +// */
  33 +//@Service
  34 +//public class PinyouReportHandler implements ClickEventHandIntf {
  35 +//
  36 +// private static final Logger logger = LoggerFactory.getLogger(PinyouReportHandler.class);
  37 +//
  38 +// @Autowired
  39 +// private ClickActionDispatcher dispatcher;
  40 +//
  41 +// @Autowired
  42 +// IPinYouService pinYouService;
  43 +//
  44 +// @Autowired
  45 +// private ErpOrdersMapper erpOrdersMapper;
  46 +//
  47 +// @Autowired
  48 +// private ErpOrdersGoodsMapper erpOrdersGoodsMapper;
  49 +//
  50 +// @Autowired
  51 +// private BaseOrderShipmentUdidMapper shipOrderUdidMapper;
  52 +//
  53 +// @PostConstruct
  54 +// public void init() {
  55 +// dispatcher.register(ClickEventConstants.YB_MAIN_S, this);
  56 +// dispatcher.register(ClickEventConstants.YB_GDS_DT_INFO, this);
  57 +// dispatcher.register(ClickEventConstants.YB_GDS_DT_SEL, this);
  58 +// dispatcher.register(ClickEventConstants.YB_SC_ORD, this);
  59 +// }
  60 +//
  61 +// @Override
  62 +// public void process(JSONObject actionData) {
  63 +// logger.info("click event: {}", actionData.toJSONString());
  64 +//
  65 +// //3个月内存在已交寄订单,则不上报数据
  66 +// if(hasShipOrdersLast3Months(actionData.getString("udid"))) {
  67 +// logger.info("event ignore for shipped order in 3 month, udid: {}", actionData.getString("udid"));
  68 +// return;
  69 +// }
  70 +//
  71 +// String opr = actionData.getString("op") == null ? "" : actionData.getString("op").toUpperCase();
  72 +// switch(opr) {
  73 +// case ClickEventConstants.YB_MAIN_S:
  74 +// case ClickEventConstants.YB_GDS_DT_INFO:
  75 +// case ClickEventConstants.YB_GDS_DT_SEL:
  76 +// ViewPinYouRequestBO viewBO = getPinyouViewData(opr, actionData);
  77 +// pinYouService.sendView(viewBO);
  78 +// break;
  79 +//
  80 +// case ClickEventConstants.YB_SC_ORD:
  81 +// TransPinYouRequestBO transBO = getPinyouTransData(opr, actionData);
  82 +// pinYouService.sendTrans(transBO);
  83 +// break;
  84 +// }
  85 +// }
  86 +//
  87 +// /**
  88 +// * 解析品友行为数据
  89 +// * @param opr
  90 +// * @param actionData
  91 +// * @return
  92 +// */
  93 +// private ViewPinYouRequestBO getPinyouViewData(String opr, JSONObject actionData) {
  94 +// JSONObject paramData = actionData.getJSONObject("param");
  95 +// String eventName = null;
  96 +// String eventValue = null;
  97 +// switch(opr) {
  98 +// case ClickEventConstants.YB_MAIN_S:
  99 +// eventName = "viewSearch";
  100 +// eventValue = paramData == null ? "" : paramData.getString("KW");
  101 +// break;
  102 +//
  103 +// case ClickEventConstants.YB_GDS_DT_INFO:
  104 +// eventName = "viewItem";
  105 +// eventValue = paramData == null ? "" : paramData.getString("PRD_ID");
  106 +// break;
  107 +//
  108 +// case ClickEventConstants.YB_GDS_DT_SEL:
  109 +// eventName = "addCart";
  110 +// eventValue = paramData == null ? "" : paramData.getString("PRD_SKC");
  111 +// break;
  112 +// }
  113 +//
  114 +// if(eventName == null || eventValue == null)
  115 +// return null;
  116 +//
  117 +// ViewPinYouRequestBO viewRequest = new ViewPinYouRequestBO();
  118 +// viewRequest.setEvent(eventName);
  119 +// viewRequest.setEvent_value(eventValue);
  120 +// viewRequest.setUser_id(actionData.getString("uid"));
  121 +// viewRequest.setOs(actionData.getString("os"));
  122 +// viewRequest.setIp(actionData.getString("ip"));
  123 +// viewRequest.setIdfa(actionData.getString("idfa"));
  124 +// viewRequest.setImei(actionData.getString("imei"));
  125 +// viewRequest.setTs(actionData.getString("ts"));
  126 +//
  127 +// return viewRequest;
  128 +// }
  129 +//
  130 +//
  131 +// /**
  132 +// * 解析品友转化数据
  133 +// * @param actionData
  134 +// * @return
  135 +// */
  136 +// private TransPinYouRequestBO getPinyouTransData(String opr, JSONObject actionData) {
  137 +// if(!StringUtils.equalsIgnoreCase(ClickEventConstants.YB_SC_ORD, opr)) {
  138 +// return null;
  139 +// }
  140 +//
  141 +// TransPinYouRequestBO transRequest = new TransPinYouRequestBO();
  142 +// String orderCode = actionData.getJSONObject("param") == null ? null : actionData.getJSONObject("param").getString("ORD_NUM");
  143 +// String uid = actionData.getString("uid");
  144 +// if(orderCode == null || uid == null) {
  145 +// return null;
  146 +// }
  147 +//
  148 +// ErpOrders orders = erpOrdersMapper.selectByOrderCode(Long.valueOf(orderCode));
  149 +// List<ErpOrdersGoods> orderGoodsList = erpOrdersGoodsMapper.selectByOrderCode(Long.valueOf(orderCode));
  150 +// if(orders == null || CollectionUtils.isEmpty(orderGoodsList)) {
  151 +// return null;
  152 +// }
  153 +//
  154 +// StringBuilder plistBuf = new StringBuilder();
  155 +// int count = 0;
  156 +// for(ErpOrdersGoods ordersGoods : orderGoodsList) {
  157 +// if(count > 0)
  158 +// plistBuf.append(":");
  159 +// plistBuf.append(ordersGoods.getProductSkn()).append(",").append(ordersGoods.getBuyNumber());
  160 +// count++;
  161 +// }
  162 +//
  163 +// transRequest.setEvent("createOrder");
  164 +// transRequest.setEvent_value(orderCode);
  165 +// transRequest.setUser_id(actionData.getString("uid"));
  166 +// transRequest.setOs(actionData.getString("os"));
  167 +// transRequest.setIp(actionData.getString("ip"));
  168 +// transRequest.setIdfa(actionData.getString("idfa"));
  169 +// transRequest.setImei(actionData.getString("imei"));
  170 +// transRequest.setTs(actionData.getString("ts"));
  171 +//
  172 +// transRequest.setOrder(orderCode);
  173 +// transRequest.setMoney(orders.getLastOrderAmount().setScale(2, BigDecimal.ROUND_HALF_EVEN).toString());
  174 +// transRequest.setPlist(plistBuf.toString());
  175 +// transRequest.setOrderStatus("Y".equals(orders.getPaymentStatus()) ? "1" : "0");
  176 +//
  177 +// return transRequest;
  178 +// }
  179 +//
  180 +// /**
  181 +// *
  182 +// * @param udid
  183 +// * @return
  184 +// */
  185 +// private boolean hasShipOrdersLast3Months(String udid) {
  186 +// /**
  187 +// * BASE_ORDER_SHIPMENT_UDID表为大数据离线统计表,如果udid在该表存在记录,表明过去三个月存在已交寄订单
  188 +// */
  189 +// if(StringUtils.isEmpty(udid))
  190 +// return false;
  191 +//
  192 +// List<BaseOrderShipmentUdid> udidShipOrders = shipOrderUdidMapper.selectByUdid(udid);
  193 +// return CollectionUtils.isNotEmpty(udidShipOrders);
  194 +// }
  195 +//}