Commit 9cba724f by guos

会员标签4.0

parent 53ada911
...@@ -2,7 +2,9 @@ package com.gic.spark; ...@@ -2,7 +2,9 @@ package com.gic.spark;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.gic.spark.entity.enumtype.TimeRangeType; import com.gic.spark.entity.enumtype.TimeRangeType;
import com.gic.spark.util.DataUtil;
import com.gic.spark.util.DateUtil; import com.gic.spark.util.DateUtil;
import com.gic.spark.util.IndexRequestUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.util.*; import java.util.*;
...@@ -36,13 +38,10 @@ public class Test { ...@@ -36,13 +38,10 @@ public class Test {
// System.out.println(strs.length); // System.out.println(strs.length);
// System.out.println(strs[0]); // System.out.println(strs[0]);
System.out.println(Pattern.compile("flag").matcher("flag.mcuInfo.flag").find()); // IndexRequestUtil.getGoodsSkucod(29,"170922121378263146",true);
IndexRequestUtil.getStoreId(29,"1023",true);
String[] keys="flag.mcuInfo.flag".split("flag");
System.out.println("keys[0]==>"+keys[0]);
System.out.println("keys[1]==>"+keys[1]);
for (String key : keys) {
System.out.println("k==>"+key.replaceAll("\\.",""));
}
} }
} }
...@@ -14,7 +14,8 @@ public class TrdEcuBrandLabelBean implements Serializable { ...@@ -14,7 +14,8 @@ public class TrdEcuBrandLabelBean implements Serializable {
private Long ecu_id;//用户id private Long ecu_id;//用户id
private Integer store_info_id;//门店id private Integer store_info_id;//门店id
private Integer order_times; //消费次数(根据配置取的) private Integer order_times; //消费次数(根据配置取的)
private Integer seff_goods_num;//净销售件数 private Integer seff_order_cnt;//配置订单数
private Integer seff_goods_num;//配置销售件数
private Double receive_amt;//应收额 private Double receive_amt;//应收额
private Double pay_amt;//实付额 private Double pay_amt;//实付额
private Double total_amt;//吊牌价总额 private Double total_amt;//吊牌价总额
...@@ -108,4 +109,12 @@ public class TrdEcuBrandLabelBean implements Serializable { ...@@ -108,4 +109,12 @@ public class TrdEcuBrandLabelBean implements Serializable {
public void setReceive_amt(Double receive_amt) { public void setReceive_amt(Double receive_amt) {
this.receive_amt = receive_amt; this.receive_amt = receive_amt;
} }
public Integer getSeff_order_cnt() {
return seff_order_cnt;
}
public void setSeff_order_cnt(Integer seff_order_cnt) {
this.seff_order_cnt = seff_order_cnt;
}
} }
...@@ -44,14 +44,14 @@ public class TagAssociatedPurchaseRateFilter extends AbstractTagConsumFilter{ ...@@ -44,14 +44,14 @@ public class TagAssociatedPurchaseRateFilter extends AbstractTagConsumFilter{
JavaRDD<Long>ecuRdd=consumeRDD.mapToPair(data-> Tuple2.apply(data.getEcu_id(),data)) JavaRDD<Long>ecuRdd=consumeRDD.mapToPair(data-> Tuple2.apply(data.getEcu_id(),data))
.reduceByKey((x,y)->{ .reduceByKey((x,y)->{
x.setSeff_goods_num(x.getSeff_goods_num()+y.getSeff_goods_num()); x.setSeff_goods_num(x.getSeff_goods_num()+y.getSeff_goods_num());
x.setOrder_times(x.getOrder_times()+y.getOrder_times()); x.setSeff_order_cnt(x.getSeff_order_cnt()+y.getSeff_order_cnt());
return x; return x;
}) })
.mapPartitions(data->{ .mapPartitions(data->{
List<Long> result=new ArrayList(); List<Long> result=new ArrayList();
while (data.hasNext()){ while (data.hasNext()){
Tuple2<Long,TrdEcuBrandLabelBean> tp2=data.next(); Tuple2<Long,TrdEcuBrandLabelBean> tp2=data.next();
double jointRate= CommonUtil.isEmptyInteger2int(tp2._2().getSeff_goods_num())/CommonUtil.isEmptyInteger2int(tp2._2().getOrder_times()); double jointRate= CommonUtil.isEmptyInteger2int(tp2._2().getSeff_goods_num())/CommonUtil.isEmptyInteger2int(tp2._2().getSeff_order_cnt());
switch (consumeRequest.getNumberType()){ switch (consumeRequest.getNumberType()){
case gt: case gt:
if(jointRate>consumeRequest.getBeginNum()){ if(jointRate>consumeRequest.getBeginNum()){
......
...@@ -52,8 +52,8 @@ public class TagPerCustomerTransactionFilter extends AbstractTagConsumFilter{ ...@@ -52,8 +52,8 @@ public class TagPerCustomerTransactionFilter extends AbstractTagConsumFilter{
List<Long> result=new ArrayList(); List<Long> result=new ArrayList();
while (data.hasNext()){ while (data.hasNext()){
Tuple2<Long,TrdEcuBrandLabelBean> tp2=data.next(); Tuple2<Long,TrdEcuBrandLabelBean> tp2=data.next();
double CusSinglePiece=1==configStatus?CommonUtil.isEmptyDouble2double(tp2._2().getPay_amt())/CommonUtil.isEmptyInteger2int(tp2._2().getOrder_times()) double CusSinglePiece=1==configStatus?CommonUtil.isEmptyDouble2double(tp2._2().getPay_amt())/CommonUtil.isEmptyInteger2int(tp2._2().getSeff_order_cnt())
:CommonUtil.isEmptyDouble2double(tp2._2().getReceive_amt())/CommonUtil.isEmptyInteger2int(tp2._2().getOrder_times()); :CommonUtil.isEmptyDouble2double(tp2._2().getReceive_amt())/CommonUtil.isEmptyInteger2int(tp2._2().getSeff_order_cnt());
switch (consumeRequest.getNumberType()){ switch (consumeRequest.getNumberType()){
case gt: case gt:
if(CusSinglePiece>consumeRequest.getBeginNum()){ if(CusSinglePiece>consumeRequest.getBeginNum()){
......
...@@ -5,6 +5,7 @@ import com.gic.spark.datasource.mysql.MysqlRddManager; ...@@ -5,6 +5,7 @@ import com.gic.spark.datasource.mysql.MysqlRddManager;
import com.gic.spark.entity.bean.TrdEcuBrandLabelBean; import com.gic.spark.entity.bean.TrdEcuBrandLabelBean;
import com.gic.spark.entity.request.AbstractFilterRequest; import com.gic.spark.entity.request.AbstractFilterRequest;
import com.gic.spark.entity.request.TagConsumeRequest; import com.gic.spark.entity.request.TagConsumeRequest;
import com.gic.spark.util.CommonUtil;
import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaRDD;
import scala.Tuple2; import scala.Tuple2;
...@@ -39,41 +40,49 @@ public class TagUnitPriceFilter extends AbstractTagConsumFilter{ ...@@ -39,41 +40,49 @@ public class TagUnitPriceFilter extends AbstractTagConsumFilter{
public JavaRDD<Long> filterValidMember(Integer enterpriseId, AbstractFilterRequest request) { public JavaRDD<Long> filterValidMember(Integer enterpriseId, AbstractFilterRequest request) {
TagConsumeRequest consumeRequest=(TagConsumeRequest)request; TagConsumeRequest consumeRequest=(TagConsumeRequest)request;
JavaRDD<TrdEcuBrandLabelBean> consumeRDD= MysqlRddManager.getPojoFromDataset(dataSourceHive.getDatasetByEntId(enterpriseId), TrdEcuBrandLabelBean.class).javaRDD(); JavaRDD<TrdEcuBrandLabelBean> consumeRDD= MysqlRddManager.getPojoFromDataset(dataSourceHive.getDatasetByEntId(enterpriseId), TrdEcuBrandLabelBean.class).javaRDD();
consumeRDD=statisticsTypeHandle(consumeRDD,consumeRequest); int configStatus= CommonUtil.getConfigStatus(enterpriseId);
JavaRDD<Long>ecuRdd=consumeRDD.mapToPair(data-> Tuple2.apply(data.getEcu_id(),data.getOrder_times())).reduceByKey((x, y)->x+y) JavaRDD<Long>ecuRdd=consumeRDD.mapToPair(data-> Tuple2.apply(data.getEcu_id(),data))
.reduceByKey((x,y)->{
x.setReceive_amt(x.getReceive_amt()+y.getReceive_amt());
x.setPay_amt(x.getPay_amt()+y.getPay_amt());
x.setOrder_times(x.getOrder_times()+y.getOrder_times());
return x;
})
.mapPartitions(data->{ .mapPartitions(data->{
List<Long>result=new ArrayList(); List<Long> result=new ArrayList();
while (data.hasNext()){ while (data.hasNext()){
Tuple2<Long,Integer>tp2=data.next(); Tuple2<Long,TrdEcuBrandLabelBean> tp2=data.next();
double CusSinglePiece=1==configStatus?CommonUtil.isEmptyDouble2double(tp2._2().getPay_amt())/CommonUtil.isEmptyInteger2int(tp2._2().getSeff_goods_num())
:CommonUtil.isEmptyDouble2double(tp2._2().getReceive_amt())/CommonUtil.isEmptyInteger2int(tp2._2().getSeff_goods_num());
switch (consumeRequest.getNumberType()){ switch (consumeRequest.getNumberType()){
case gt: case gt:
if(tp2._2()>consumeRequest.getBeginNum()){ if(CusSinglePiece>consumeRequest.getBeginNum()){
result.add(tp2._1()); result.add(tp2._1());
} }
break; break;
case gte: case gte:
if(tp2._2()>=consumeRequest.getBeginNum()){ if(CusSinglePiece>=consumeRequest.getBeginNum()){
result.add(tp2._1()); result.add(tp2._1());
} }
break; break;
case lt: case lt:
if(tp2._2()<consumeRequest.getEndNum()){ if(CusSinglePiece<consumeRequest.getEndNum()){
result.add(tp2._1()); result.add(tp2._1());
} }
break; break;
case lte: case lte:
if(tp2._2()<=consumeRequest.getEndNum()){ if(CusSinglePiece<=consumeRequest.getEndNum()){
result.add(tp2._1()); result.add(tp2._1());
} }
break; break;
case eq: case eq:
if(tp2._2().intValue()==consumeRequest.getEqualNum()){ if(CusSinglePiece==consumeRequest.getEqualNum()){
result.add(tp2._1()); result.add(tp2._1());
} }
break; break;
case between: case between:
if(tp2._2()>=consumeRequest.getBeginNum() if(CusSinglePiece>=consumeRequest.getBeginNum()
&&tp2._2()<=consumeRequest.getEndNum()){ &&CusSinglePiece<=consumeRequest.getEndNum()){
result.add(tp2._1()); result.add(tp2._1());
} }
default:break; default:break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment