|
|
|
@@ -1,13 +1,11 @@ |
|
|
|
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 java.util.*; |
|
|
|
import java.util.regex.Pattern; |
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
import com.iformall.domain.po.WxCUserBasicInfo; |
|
|
|
import com.iformall.domain.po.*; |
|
|
|
import com.iformall.enums.EnumAssignTagsTrigger; |
|
|
|
import com.iformall.enums.EnumCUserBaseInfoSex; |
|
|
|
import com.iformall.enums.EnumTag; |
|
|
|
@@ -23,9 +21,6 @@ import org.springframework.stereotype.Service; |
|
|
|
import com.github.pagehelper.PageHelper; |
|
|
|
import com.github.pagehelper.PageInfo; |
|
|
|
import com.iformall.common.IdWorker; |
|
|
|
import com.iformall.domain.po.WxCUser; |
|
|
|
import com.iformall.domain.po.WxCUserTags; |
|
|
|
import com.iformall.domain.po.WxTags; |
|
|
|
import com.iformall.domain.vo.WxChooseTagVo; |
|
|
|
import com.iformall.mapper.WxCUserMapper; |
|
|
|
import com.iformall.mapper.WxCUserTagsMapper; |
|
|
|
@@ -189,72 +184,237 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private List<WxTags> assignTypeId1(WxCUserBasicInfo user, Integer sex) { |
|
|
|
List<WxTags> resList = null; |
|
|
|
if (sex.equals(EnumCUserBaseInfoSex.MALE)) |
|
|
|
resList = assign(user, EnumTag.ID_1); |
|
|
|
if (sex.equals(EnumCUserBaseInfoSex.FEMALE)) |
|
|
|
resList = assign(user, EnumTag.ID_2); |
|
|
|
return resList; |
|
|
|
} |
|
|
|
|
|
|
|
private List<WxTags> assignTypeId2(WxCUserBasicInfo user, Date date) { |
|
|
|
List<WxTags> resList = null; |
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
|
|
|
try { |
|
|
|
if (date.after(sdf.parse("2000-01-01"))) |
|
|
|
resList = assign(user, EnumTag.ID_3); |
|
|
|
else if (date.after(sdf.parse("1990-01-01"))) |
|
|
|
resList = assign(user, EnumTag.ID_4); |
|
|
|
else if (date.after(sdf.parse("1980-01-01"))) |
|
|
|
resList = assign(user, EnumTag.ID_5); |
|
|
|
else if (date.after(sdf.parse("1970-01-01"))) |
|
|
|
resList = assign(user, EnumTag.ID_6); |
|
|
|
else if (date.after(sdf.parse("1960-01-01"))) |
|
|
|
resList = assign(user, EnumTag.ID_7); |
|
|
|
} catch (Exception e) { |
|
|
|
return null; |
|
|
|
} |
|
|
|
return resList; |
|
|
|
} |
|
|
|
|
|
|
|
private List<WxTags> assignTypeId3(WxCUserBasicInfo user, Date date) { |
|
|
|
Calendar cal = Calendar.getInstance(); |
|
|
|
cal.setTime(date); |
|
|
|
int year = cal.get(Calendar.YEAR); |
|
|
|
if (year > 1900) { |
|
|
|
EnumTag[] years = new EnumTag[]{EnumTag.ID_8, |
|
|
|
EnumTag.ID_9, |
|
|
|
EnumTag.ID_10, |
|
|
|
EnumTag.ID_11, |
|
|
|
EnumTag.ID_12, |
|
|
|
EnumTag.ID_13, |
|
|
|
EnumTag.ID_14, |
|
|
|
EnumTag.ID_15, |
|
|
|
EnumTag.ID_16, |
|
|
|
EnumTag.ID_17, |
|
|
|
EnumTag.ID_18, |
|
|
|
EnumTag.ID_19 |
|
|
|
}; |
|
|
|
return assign(user, years[(year - 1900) % years.length]); |
|
|
|
} |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
private List<WxTags> assignTypeId4(WxCUserBasicInfo user, Date date) { |
|
|
|
final int[] dayArr = new int[]{ |
|
|
|
20, 19, 21, 20, |
|
|
|
21, 22, 23, 23, |
|
|
|
23, 24, 23, 22}; |
|
|
|
final EnumTag[] constellation = new EnumTag[]{ |
|
|
|
EnumTag.ID_29, |
|
|
|
EnumTag.ID_30, |
|
|
|
EnumTag.ID_31, |
|
|
|
EnumTag.ID_20, |
|
|
|
EnumTag.ID_21, |
|
|
|
EnumTag.ID_22, |
|
|
|
EnumTag.ID_23, |
|
|
|
EnumTag.ID_24, |
|
|
|
EnumTag.ID_25, |
|
|
|
EnumTag.ID_26, |
|
|
|
EnumTag.ID_27, |
|
|
|
EnumTag.ID_28, |
|
|
|
EnumTag.ID_29, |
|
|
|
}; |
|
|
|
Calendar cal = Calendar.getInstance(); |
|
|
|
cal.setTime(date); |
|
|
|
int month = cal.get(Calendar.MONTH); |
|
|
|
int day = cal.get(Calendar.DAY_OF_MONTH); |
|
|
|
|
|
|
|
return assign(user, day < dayArr[month] ? constellation[month] |
|
|
|
: constellation[month + 1]); |
|
|
|
} |
|
|
|
|
|
|
|
private List<WxTags> assignTypeId5(WxCUserBasicInfo user, boolean online) { |
|
|
|
if (online) |
|
|
|
return assign(user, EnumTag.ID_32); |
|
|
|
else |
|
|
|
return assign(user, EnumTag.ID_33); |
|
|
|
} |
|
|
|
|
|
|
|
private List<WxTags> assignTypeId6(WxCUserBasicInfo user, String education) { |
|
|
|
List<WxTags> resList = null; |
|
|
|
if (education.contains(EnumTag.ID_38.getMessage())) |
|
|
|
resList = assign(user, EnumTag.ID_38); |
|
|
|
else if (education.contains(EnumTag.ID_37.getMessage())) |
|
|
|
resList = assign(user, EnumTag.ID_37); |
|
|
|
else if (education.contains(EnumTag.ID_36.getMessage())) |
|
|
|
resList = assign(user, EnumTag.ID_36); |
|
|
|
else if (education.contains(EnumTag.ID_35.getMessage())) |
|
|
|
resList = assign(user, EnumTag.ID_35); |
|
|
|
else if (education.contains(EnumTag.ID_34.getMessage())) |
|
|
|
resList = assign(user, EnumTag.ID_34); |
|
|
|
return resList; |
|
|
|
} |
|
|
|
|
|
|
|
private List<WxTags> assignTypeId7(WxCUserBasicInfo user, String phone) { |
|
|
|
|
|
|
|
List<WxTags> resList = null; |
|
|
|
/** |
|
|
|
* 中国电信号码格式验证 手机段: 133,153,180,181,189,177,1700,173,199 |
|
|
|
**/ |
|
|
|
final String CHINA_TELECOM_PATTERN = "(^1(33|53|77|73|99|8[019])\\d{8}$)|(^1700\\d{7}$)"; |
|
|
|
|
|
|
|
/** |
|
|
|
* 中国联通号码格式验证 手机段:130,131,132,155,156,185,186,145,176,1709 |
|
|
|
**/ |
|
|
|
final String CHINA_UNICOM_PATTERN = "(^1(3[0-2]|4[5]|5[56]|7[6]|8[56])\\d{8}$)|(^1709\\d{7}$)"; |
|
|
|
|
|
|
|
/** |
|
|
|
* 中国移动号码格式验证 |
|
|
|
* 手机段:134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705 |
|
|
|
**/ |
|
|
|
final String CHINA_MOBILE_PATTERN = "(^1(3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])\\d{8}$)|(^1705\\d{7}$)"; |
|
|
|
|
|
|
|
if (Pattern.matches(CHINA_MOBILE_PATTERN, phone)) |
|
|
|
resList = assign(user, EnumTag.ID_39); |
|
|
|
if (Pattern.matches(CHINA_UNICOM_PATTERN, phone)) |
|
|
|
resList = assign(user, EnumTag.ID_40); |
|
|
|
if (Pattern.matches(CHINA_TELECOM_PATTERN,phone)) |
|
|
|
resList = assign(user, EnumTag.ID_41); |
|
|
|
return resList; |
|
|
|
} |
|
|
|
|
|
|
|
private List<WxTags> assignTypeId11(WxCUserBasicInfo user) { |
|
|
|
return assign(user, EnumTag.ID_58); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//@Override |
|
|
|
private List<WxTags> triggerAssignTags(WxCUserBasicInfo user, EnumAssignTagsTrigger trigger, Object obj) { |
|
|
|
if (user == null) |
|
|
|
private List<WxTags> triggerAssignTags(EnumAssignTagsTrigger trigger, Object obj) { |
|
|
|
if (obj != null) |
|
|
|
return null; |
|
|
|
|
|
|
|
List<WxTags> resList = null; |
|
|
|
|
|
|
|
switch (trigger) { |
|
|
|
case ASSIGN_TAGS_TRIGGER_IMPORT: |
|
|
|
if (obj != null) { |
|
|
|
WxCUserBasicInfo param = (WxCUserBasicInfo) obj; |
|
|
|
case ASSIGN_TAGS_TRIGGER_IMPORT: { |
|
|
|
WxCUserBasicInfo param = (WxCUserBasicInfo) obj; |
|
|
|
WxCUserBasicInfo user = wxCUserBasicInfoService.getById(param.getId()); |
|
|
|
if (user != null) { |
|
|
|
|
|
|
|
//性别 |
|
|
|
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); |
|
|
|
resList = assignTypeId1(user, param.getSex()); |
|
|
|
} |
|
|
|
|
|
|
|
//X0后 |
|
|
|
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) { |
|
|
|
|
|
|
|
} |
|
|
|
resList = assignTypeId2(user, param.getBirthdate()); |
|
|
|
} |
|
|
|
|
|
|
|
//生肖 |
|
|
|
if (param.getBirthdate() != null) { |
|
|
|
resList = assignTypeId3(user, param.getBirthdate()); |
|
|
|
} |
|
|
|
|
|
|
|
//星座 |
|
|
|
if (param.getBirthdate() != null) { |
|
|
|
resList = assignTypeId4(user, param.getBirthdate()); |
|
|
|
} |
|
|
|
|
|
|
|
//来源 |
|
|
|
if (param.getPhone() != null) { |
|
|
|
resList = assignTypeId5(user, false); |
|
|
|
} |
|
|
|
|
|
|
|
//学历 |
|
|
|
if (param.getEducation() != null) { |
|
|
|
resList = assignTypeId6(user, param.getEducation()); |
|
|
|
} |
|
|
|
|
|
|
|
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); |
|
|
|
//运营商 |
|
|
|
if (param.getPhone() != null) { |
|
|
|
resList = assignTypeId7(user, param.getPhone()); |
|
|
|
} |
|
|
|
} |
|
|
|
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; |
|
|
|
} |
|
|
|
break; |
|
|
|
case ASSIGN_TAGS_TRIGGER_CAR:{ |
|
|
|
WxCUserCar param = (WxCUserCar) obj; |
|
|
|
WxCUserBasicInfo user = wxCUserBasicInfoService.getById(param.getCUserId()); |
|
|
|
if (user != null) { |
|
|
|
resList = assignTypeId11(user); |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
case ASSIGN_TAGS_TRIGGER_PHONE: { |
|
|
|
WxCUser param = (WxCUser) obj; |
|
|
|
WxCUserBasicInfo user = wxCUserBasicInfoService.getById(param.getId()); |
|
|
|
if (user != null) { |
|
|
|
//来源 |
|
|
|
if (param.getPhone() != null) { |
|
|
|
resList = assignTypeId5(user, true); |
|
|
|
} |
|
|
|
|
|
|
|
//运营商 |
|
|
|
if (param.getPhone() != null) { |
|
|
|
resList = assignTypeId7(user, param.getPhone()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
case ASSIGN_TAGS_TRIGGER_BUY: |
|
|
|
break; |
|
|
|
case ASSIGN_TAGS_TRIGGER_USE: |
|
|
|
break; |
|
|
|
case ASSIGN_TAGS_TRIGGER_LOGIN: |
|
|
|
break; |
|
|
|
|
|
|
|
default: |
|
|
|
return null; |
|
|
|
case ASSIGN_TAGS_TRIGGER_LOGIN: { |
|
|
|
WxCUser param = (WxCUser) obj; |
|
|
|
WxCUserBasicInfo user = wxCUserBasicInfoService.getById(param.getId()); |
|
|
|
if (user != null) { |
|
|
|
|
|
|
|
if (param.getGender() != null) { |
|
|
|
resList = assignTypeId1(user, param.getGender()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
default: |
|
|
|
return null; |
|
|
|
|
|
|
|
} |
|
|
|
return null; |
|
|
|
return resList; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|