Просмотр исходного кода

[标签][新增]:打标签逻辑

release_toaliyun_real
hupeng 7 лет назад
Родитель
Сommit
e8e0b90d38
6 измененных файлов: 496 добавлений и 3 удалений
  1. +42
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumAssignTagsTrigger.java
  2. +36
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumCUserBaseInfoSex.java
  3. +176
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumTag.java
  4. +39
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumTagGroup.java
  5. +69
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumTagType.java
  6. +134
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java

+ 42
- 0
mallinkService/src/main/java/com/iformall/enums/EnumAssignTagsTrigger.java Просмотреть файл

@@ -0,0 +1,42 @@
package com.iformall.enums;

/**
* Created by Stormeye on 2018/08/09.
*/
public enum EnumAssignTagsTrigger {

// 1.时间范围(valid_start_date,valid_end_date). 2领取后几日有效(valid_days)

ASSIGN_TAGS_TRIGGER_IMPORT(1, "导入"),
ASSIGN_TAGS_TRIGGER_LOGIN(2, "登陆"),
ASSIGN_TAGS_TRIGGER_PHONE(3, "授权手机号"),
ASSIGN_TAGS_TRIGGER_CAR(4, "停车"),
ASSIGN_TAGS_TRIGGER_BUY(5, "购买"),
ASSIGN_TAGS_TRIGGER_USE(6, "核销"),
;

public static EnumAssignTagsTrigger getEnum(Integer code) {
for (EnumAssignTagsTrigger value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumAssignTagsTrigger(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 36
- 0
mallinkService/src/main/java/com/iformall/enums/EnumCUserBaseInfoSex.java Просмотреть файл

@@ -0,0 +1,36 @@
package com.iformall.enums;

public enum EnumCUserBaseInfoSex {
UNKNOWN(0, "保密"),
MALE(1, "男"),
FEMALE(2,"女"),

;

private EnumCUserBaseInfoSex(Integer code, String message) {
this.code = code;
this.message = message;
}

private Integer code;
private String message;



public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

public Integer getCode() {
return code;
}

public void setCode(Integer code) {
this.code = code;
}
}

+ 176
- 0
mallinkService/src/main/java/com/iformall/enums/EnumTag.java Просмотреть файл

@@ -0,0 +1,176 @@
package com.iformall.enums;

/**
* Created by Stormeye on 2018/08/09.
*/
public enum EnumTag {

ID_1(1L, 1L, 1L, "男"),
ID_2(2L, 1L, 1L, "女"),
ID_3(3L, 1L, 2L, "00后"),
ID_4(4L, 1L, 2L, "90后"),
ID_5(5L, 1L, 2L, "80后"),
ID_6(6L, 1L, 2L, "70后"),
ID_7(7L, 1L, 2L, "60后"),
ID_8(8L, 1L, 3L, "鼠"),
ID_9(9L, 1L, 3L, "牛"),
ID_10(10L, 1L, 3L, "虎"),
ID_11(11L, 1L, 3L, "兔"),
ID_12(12L, 1L, 3L, "龙"),
ID_13(13L, 1L, 3L, "蛇"),
ID_14(14L, 1L, 3L, "马"),
ID_15(15L, 1L, 3L, "羊"),
ID_16(16L, 1L, 3L, "猴"),
ID_17(17L, 1L, 3L, "鸡"),
ID_18(18L, 1L, 3L, "狗"),
ID_19(19L, 1L, 3L, "猪"),
ID_20(20L, 1L, 4L, "白羊座"),
ID_21(21L, 1L, 4L, "金牛座"),
ID_22(22L, 1L, 4L, "双子座"),
ID_23(23L, 1L, 4L, "巨蟹座"),
ID_24(24L, 1L, 4L, "狮子座"),
ID_25(25L, 1L, 4L, "处女座"),
ID_26(26L, 1L, 4L, "天秤座"),
ID_27(24L, 1L, 4L, "天蝎座"),
ID_28(25L, 1L, 4L, "射手座"),
ID_29(26L, 1L, 4L, "摩羯座"),
ID_30(30L, 1L, 4L, "水瓶座"),
ID_31(31L, 1L, 4L, "双鱼座"),
ID_32(32L, 1L, 5L, "线上"),
ID_33(33L, 1L, 5L, "线下"),
ID_34(34L, 1L, 6L, "高中"),
ID_35(35L, 1L, 6L, "大专"),
ID_36(36L, 1L, 6L, "本科"),
ID_37(37L, 1L, 6L, "硕士及以上"),
ID_38(38L, 1L, 6L, "博士及以上"),
ID_39(39L, 1L, 7L, "移动"),
ID_40(40L, 1L, 7L, "联通"),
ID_41(41L, 1L, 7L, "电信"),
ID_42(42L, 2L, 8L, "5000以下"),
ID_43(43L, 2L, 8L, "5000~10000"),
ID_44(44L, 2L, 8L, "10001~20000"),
ID_45(45L, 2L, 8L, "20001以上"),
ID_46(46L, 2L, 8L, "20001~30000"),
ID_47(47L, 2L, 8L, "30001~50000"),
ID_48(48L, 2L, 8L, "50001以上"),
ID_49(49L, 2L, 9L, "iphone"),
ID_50(50L, 2L, 9L, "华为"),
ID_51(51L, 2L, 9L, "VO"),
ID_52(52L, 2L, 9L, "三星"),
ID_53(53L, 2L, 9L, "小米"),
ID_54(54L, 2L, 9L, "其他"),
ID_55(55L, 2L, 10L,"未婚"),
ID_56(56L, 2L, 10L,"已婚"),
ID_57(57L, 2L, 10L,"已婚有孩"),
ID_58(58L, 2L, 11L,"有车一族"),
ID_59(59L, 2L, 12L,"学生"),
ID_60(60L, 2L, 12L,"上班族"),
ID_61(61L, 2L, 12L,"企业高管"),
ID_62(62L, 2L, 12L,"个体户"),
ID_63(63L, 2L, 12L,"自由职业"),
ID_64(64L, 2L, 12L,"其他"),
ID_65(65L, 2L, 13L,"租房"),
ID_66(66L, 2L, 13L,"自购"),
ID_67(67L, 2L, 13L,"宿舍"),
ID_68(68L, 3L, 14L,"服装"),
ID_69(69L, 3L, 14L,"服饰"),
ID_70(70L, 3L, 14L,"餐饮"),
ID_71(71L, 3L, 14L,"休闲娱乐"),
ID_72(72L, 3L, 14L,"家居"),
ID_73(73L, 3L, 14L,"图书音像"),
ID_74(74L, 3L, 14L,"母婴"),
ID_75(75L, 3L, 14L,"儿童"),
ID_76(76L, 3L, 14L,"生活服务"),
ID_77(77L, 3L, 15L,"中低端"),
ID_78(78L, 3L, 15L,"中端"),
ID_79(79L, 3L, 15L,"中高端"),
ID_80(80L, 3L, 15L,"高端"),
ID_81(81L, 3L, 16L,"快时尚"),
ID_82(82L, 3L, 16L,"轻奢"),
ID_83(83L, 3L, 16L,"奢侈品"),
ID_84(84L, 3L, 16L,"皮革"),
ID_85(85L, 3L, 16L,"化妆品"),
ID_86(86L, 3L, 16L,"电子产品"),
ID_87(87L, 3L, 16L,"影视娱乐"),
ID_88(88L, 3L, 16L,"儿童相关"),
ID_89(89L, 3L, 16L,"日本品牌"),
ID_90(90L, 3L, 16L,"韩国品牌"),
ID_91(91L, 3L, 16L,"欧美品牌等"),
ID_92(92L, 3L, 17L,"轻餐"),
ID_93(93L, 3L, 17L,"小吃快餐"),
ID_94(94L, 3L, 17L,"西餐"),
ID_95(95L, 3L, 17L,"日料,中餐,甜点/咖啡"),
ID_96(96L, 3L, 17L,"火锅"),
ID_97(97L, 3L, 18L,"工作日白天"),
ID_98(98L, 3L, 18L,"工作日晚上"),
ID_99(99L, 3L, 18L,"周末(含节假日)白天"),
ID_100(100L,3L, 18L,"周末(含节假日)晚上"),
ID_101(101L,3L, 19L,"现金"),
ID_102(102L,3L, 19L,"移动支付"),
ID_103(103L,3L, 19L,"银行卡支付"),
ID_104(104L,4L, 20L,"实惠型"),
ID_105(105L,4L, 20L,"享乐型"),
ID_106(106L,4L, 20L,"品质型"),
ID_107(107L,4L, 21L,"低频"),
ID_108(108L,4L, 21L,"中频"),
ID_109(109L,4L, 21L,"高频"),
ID_110(110L,4L, 22L,"低度"),
ID_111(111L,4L, 22L,"中度"),
ID_112(112L,4L, 22L,"高度"),
ID_113(113L,4L, 23L,"低客单价"),
ID_114(114L,4L, 23L,"中客单价"),
ID_115(115L,4L, 23L,"高客单价"),
ID_116(116L,4L, 24L,"口碑宣传型"),
ID_117(117L,4L, 24L,"纠结型客户"),
ID_118(118L,4L, 24L,"选择型客户"),
ID_119(119L,4L, 24L,"参与型客户"),
ID_120(120L,4L, 24L,"安静型客户"),
ID_121(121L,4L, 25L,"时尚"),
ID_122(122L,4L, 25L,"旅游"),
ID_123(123L,4L, 25L,"运动"),
ID_124(124L,4L, 25L,"电玩"),
ID_125(125L,4L, 25L,"看书"),
ID_126(126L,4L, 25L,"其他"),
ID_127(127L,2L, 26L,"附近住户"),


;


public static EnumTag getEnum(Long code) {
for (EnumTag value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Long code;
private Long groupCode;
private Long typeCode;
private String message;

EnumTag(Long code, Long groupCode, Long typeCode, String message) {
this.code = code;
this.groupCode = groupCode;
this.typeCode = typeCode;
this.message = message;
}

public Long getCode() {
return code;
}

public Long getGroupCode() {
return groupCode;
}

public Long getTypeCode() {
return typeCode;
}

public String getMessage() {
return message;
}
}

+ 39
- 0
mallinkService/src/main/java/com/iformall/enums/EnumTagGroup.java Просмотреть файл

@@ -0,0 +1,39 @@
package com.iformall.enums;

/**
* Created by Stormeye on 2018/08/09.
*/
public enum EnumTagGroup {

ID_1(1L, "基础属性"),
ID_2(2L, "生活属性"),
ID_3(3L, "消费偏好"),
ID_4(4L, "行为偏好"),

;

public static EnumTagGroup getEnum(Long code) {
for (EnumTagGroup value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Long code;
private String message;

EnumTagGroup(Long code, String message) {
this.code = code;
this.message = message;
}

public Long getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 69
- 0
mallinkService/src/main/java/com/iformall/enums/EnumTagType.java Просмотреть файл

@@ -0,0 +1,69 @@
package com.iformall.enums;

/**
* Created by Stormeye on 2018/08/09.
*/
public enum EnumTagType {

ID_1(1L, 1L, "性别"),
ID_2(2L, 1L, "年龄"),
ID_3(3L, 1L, "生肖"),
ID_4(4L, 1L, "星座"),
ID_5(5L, 1L, "来源"),
ID_6(6L, 1L, "学历"),
ID_7(7L, 1L, "手机运营商"),

ID_8(8L, 2L, "月收入"),
ID_9(9L, 2L, "手机品牌"),
ID_10(10L, 2L, "婚姻家庭"),
ID_11(11L, 2L, "车辆情况"),
ID_12(12L, 2L, "职业"),
ID_13(13L, 2L, "住房情况"),

ID_14(14L, 3L, "消费类别"),
ID_15(15L, 3L, "消费档次"),
ID_16(16L, 3L, "品牌偏好"),
ID_17(17L, 3L, "饮食偏好"),
ID_18(18L, 3L, "消费时间段"),
ID_19(19L, 3L, "支付习惯"),

ID_20(20L, 4L, "会员消费观"),
ID_21(21L, 4L, "消费频率"),
ID_22(22L, 4L, "活跃度"),
ID_23(23L, 4L, "客单价"),
ID_24(24L, 4L, "会员性格"),
ID_25(25L, 4L, "爱好"),
ID_26(26L, 4L, "生活半径"),
;

public static EnumTagType getEnum(Long code) {
for (EnumTagType value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Long code;
private Long groupCode;
private String message;

EnumTagType(Long code, Long groupCode, String message) {
this.code = code;
this.groupCode = groupCode;
this.message = message;
}

public Long getCode() {
return code;
}

public Long getGroupCode() {
return groupCode;
}

public String getMessage() {
return message;
}
}

+ 134
- 3
mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java Просмотреть файл

@@ -1,11 +1,20 @@
package com.iformall.service.impl;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import com.alibaba.fastjson.JSON;
import com.iformall.domain.po.WxCUserBasicInfo;
import com.iformall.enums.EnumAssignTagsTrigger;
import com.iformall.enums.EnumCUserBaseInfoSex;
import com.iformall.enums.EnumTag;
import com.iformall.enums.EnumTagType;
import com.iformall.mapper.WxCUserBasicInfoMapper;
import com.iformall.service.WxCUserBasicInfoService;
import com.iformall.service.WxTagsService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -33,12 +42,17 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService {
@Autowired
WxCUserBasicInfoMapper wxCUserBasicInfoMapper;

@Autowired
WxCUserBasicInfoService wxCUserBasicInfoService;

@Autowired
WxCUserMapper wxCUserMapper;

@Autowired
WxTagsMapper wxTagsMapper;

@Autowired
WxTagsService wxTagsService;

@Override
public PageInfo<WxCUserTags> listAsPage(WxCUserTags record, Integer pageIndex, Integer pageSize) {
@@ -124,7 +138,124 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService {
vo.setUserCount(findCUserCountByTag(tenantId,tagIds));
return vo;
}


private List<WxTags> assign(WxCUserBasicInfo user, EnumTag tag){

WxCUserTags record = new WxCUserTags();
record.setUserId(user.getId());
record.setTenantId(user.getTenantId());
List<WxCUserTags> cUserTagsList = wxCUserTagsMapper.findList(record);
if (cUserTagsList.size() > 0) {
record.setId(cUserTagsList.get(0).getId());
}
String tags = record.getTags();
List<Long> tagIdList = JSON.parseArray(tags, Long.class);
tagIdList.add(tag.getCode());
record.setTags(JSON.toJSONString(tagIdList));
saveOrUpdate(record);
if (!user.getTagId().equals(record.getId())) {
user.setTagId(record.getId());
wxCUserBasicInfoService.update(user);
}
WxTags wxTags = new WxTags();
wxTags.setIds(tagIdList);
return wxTagsMapper.findList(wxTags);
}

private List<WxTags> resign(WxCUserBasicInfo user, EnumTag tag){

WxCUserTags record = new WxCUserTags();
record.setUserId(user.getId());
record.setTenantId(user.getTenantId());
List<WxCUserTags> cUserTagsList = wxCUserTagsMapper.findList(record);
if (cUserTagsList.size() > 0) {
record.setId(cUserTagsList.get(0).getId());
} else return null;
String tags = record.getTags();
List<Long> tagIdList = JSON.parseArray(tags, Long.class);
Iterator<Long> it = tagIdList.iterator();
while(it.hasNext()){
if(it.next().equals(tag.getCode())){
it.remove();
}
}
record.setTags(JSON.toJSONString(tagIdList));
saveOrUpdate(record);

WxTags wxTags = new WxTags();
wxTags.setIds(tagIdList);
return wxTagsMapper.findList(wxTags);

}



//@Override
private List<WxTags> triggerAssignTags(WxCUserBasicInfo user, EnumAssignTagsTrigger trigger, Object obj) {
if (user == null)
return null;

switch (trigger) {
case ASSIGN_TAGS_TRIGGER_IMPORT:
if (obj != null) {
WxCUserBasicInfo param = (WxCUserBasicInfo) obj;

if (param.getSex() != null) {
if (param.getSex().equals(EnumCUserBaseInfoSex.MALE))
assign(user, EnumTag.ID_1);
if (param.getSex().equals(EnumCUserBaseInfoSex.FEMALE))
assign(user, EnumTag.ID_2);
}

if (param.getBirthdate() != null) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
if (param.getBirthdate().after(sdf.parse("2000-01-01")))
assign(user, EnumTag.ID_3);
else if (param.getBirthdate().after(sdf.parse("1990-01-01")))
assign(user, EnumTag.ID_4);
else if (param.getBirthdate().after(sdf.parse("1980-01-01")))
assign(user, EnumTag.ID_5);
else if (param.getBirthdate().after(sdf.parse("1970-01-01")))
assign(user, EnumTag.ID_6);
else if (param.getBirthdate().after(sdf.parse("1960-01-01")))
assign(user, EnumTag.ID_7);
} catch (Exception e) {

}


}


assign(user, EnumTag.ID_3);
assign(user, EnumTag.ID_4);
assign(user, EnumTag.ID_5);
assign(user, EnumTag.ID_6);
assign(user, EnumTag.ID_7);
}
break;
case ASSIGN_TAGS_TRIGGER_CAR:
break;
case ASSIGN_TAGS_TRIGGER_PHONE:
assign(user, EnumTag.ID_1);
assign(user, EnumTag.ID_5);
assign(user, EnumTag.ID_7);
break;
case ASSIGN_TAGS_TRIGGER_BUY:
break;
case ASSIGN_TAGS_TRIGGER_USE:
break;
case ASSIGN_TAGS_TRIGGER_LOGIN:
break;

default:
return null;

}
return null;
}


}

Загрузка…
Отмена
Сохранить