|
|
|
@@ -29,8 +29,12 @@ import javax.servlet.http.HttpServletResponse; |
|
|
|
|
|
|
|
import java.text.ParseException; |
|
|
|
import java.text.SimpleDateFormat; |
|
|
|
import java.time.DayOfWeek; |
|
|
|
import java.time.LocalDate; |
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.time.ZoneId; |
|
|
|
import java.time.temporal.TemporalAdjusters; |
|
|
|
import java.time.temporal.WeekFields; |
|
|
|
import java.util.*; |
|
|
|
import java.util.concurrent.TimeUnit; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
@@ -203,6 +207,25 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
private final static List<WxTags> memberBirthday = new ArrayList<WxTags>( |
|
|
|
Arrays.asList( |
|
|
|
new WxTags(){{ |
|
|
|
setTypeId(EnumTagType.ID_52.getCode()); |
|
|
|
setName(EnumTag.ID_1100.getMessage()); |
|
|
|
setId(EnumTag.ID_1100.getCode()); |
|
|
|
}}, |
|
|
|
new WxTags(){{ |
|
|
|
setTypeId(EnumTagType.ID_52.getCode()); |
|
|
|
setName(EnumTag.ID_1101.getMessage()); |
|
|
|
setId(EnumTag.ID_1101.getCode()); |
|
|
|
}}, |
|
|
|
new WxTags(){{ |
|
|
|
setTypeId(EnumTagType.ID_52.getCode()); |
|
|
|
setName(EnumTag.ID_1102.getMessage()); |
|
|
|
setId(EnumTag.ID_1102.getCode()); |
|
|
|
}} |
|
|
|
) |
|
|
|
); |
|
|
|
|
|
|
|
private WxCUserBasicInfoDto filtersToDto(String tenantId, List<WxCUserBasicInfoFilterDto> filterList){ |
|
|
|
WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto(); |
|
|
|
@@ -250,6 +273,32 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else if (f.getTypeId().equals(EnumTagType.ID_52.getCode())) { |
|
|
|
LocalDate localDate = LocalDate.now(); |
|
|
|
ZoneId zone = ZoneId.systemDefault(); |
|
|
|
if (f.getId().equals(EnumTag.ID_1100.getCode())) { |
|
|
|
dto.setBirthStartTime( |
|
|
|
Date.from( |
|
|
|
localDate.atStartOfDay().atZone(zone).toInstant())); |
|
|
|
dto.setBirthEndTime( |
|
|
|
Date.from( |
|
|
|
localDate.plusDays(1).atStartOfDay().atZone(zone).toInstant())); |
|
|
|
} else if (f.getId().equals(EnumTag.ID_1101.getCode())){ |
|
|
|
dto.setBirthStartTime( |
|
|
|
Date.from( |
|
|
|
localDate.with(DayOfWeek.MONDAY).atStartOfDay().atZone(zone).toInstant())); |
|
|
|
dto.setBirthEndTime( |
|
|
|
Date.from( |
|
|
|
localDate.plusWeeks(1).with(DayOfWeek.MONDAY).atStartOfDay().atZone(zone).toInstant())); |
|
|
|
} else if (f.getId().equals(EnumTag.ID_1102.getCode())){ |
|
|
|
dto.setBirthStartTime( |
|
|
|
Date.from( |
|
|
|
localDate.with(TemporalAdjusters.firstDayOfMonth()).atStartOfDay().atZone(zone).toInstant())); |
|
|
|
dto.setBirthEndTime( |
|
|
|
Date.from( |
|
|
|
localDate.plusMonths(1).with(TemporalAdjusters.firstDayOfMonth()).atStartOfDay().atZone(zone).toInstant())); |
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
tagIdList.add(f.getId()); |
|
|
|
} |
|
|
|
@@ -268,26 +317,20 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { |
|
|
|
return wxCUserBasicInfoMapper.findListByFilter(filtersToDto(tenantId,filterList)); |
|
|
|
} |
|
|
|
|
|
|
|
private WxTagsTypeVo generateType50() { |
|
|
|
WxTagsTypeVo type = new WxTagsTypeVo(); |
|
|
|
type.setFlag(EnumTagTypeFlag.FLAG_SINGLE.getCode()); |
|
|
|
type.setName(EnumTagType.ID_50.getMessage()); |
|
|
|
type.setId(EnumTagType.ID_50.getCode()); |
|
|
|
type.setTags(memberTimeList); |
|
|
|
return type; |
|
|
|
} |
|
|
|
|
|
|
|
public List<WxTagsGroupVo> listFilters(String tenentId) { |
|
|
|
WxTagsGroupVo filter = new WxTagsGroupVo(); |
|
|
|
|
|
|
|
filter.setId(EnumTagGroup.ID_10.getCode()); |
|
|
|
filter.setName(EnumTagGroup.ID_10.getMessage()); |
|
|
|
|
|
|
|
List<WxTagsTypeVo> types = new ArrayList<>(); |
|
|
|
|
|
|
|
WxTagsTypeVo typeMemberTime = new WxTagsTypeVo(); |
|
|
|
typeMemberTime.setFlag(EnumTagTypeFlag.FLAG_SINGLE.getCode()); |
|
|
|
typeMemberTime.setName(EnumTagType.ID_50.getMessage()); |
|
|
|
typeMemberTime.setId(EnumTagType.ID_50.getCode()); |
|
|
|
typeMemberTime.setTags(memberTimeList); |
|
|
|
types.add(typeMemberTime); |
|
|
|
|
|
|
|
WxTagsTypeVo typeMemberLevel = new WxTagsTypeVo(); |
|
|
|
typeMemberLevel.setFlag(EnumTagTypeFlag.FLAG_SINGLE.getCode()); |
|
|
|
typeMemberLevel.setName(EnumTagType.ID_51.getMessage()); |
|
|
|
typeMemberLevel.setId(EnumTagType.ID_51.getCode()); |
|
|
|
private WxTagsTypeVo generateType51(String tenentId) { |
|
|
|
WxTagsTypeVo type = new WxTagsTypeVo(); |
|
|
|
type.setFlag(EnumTagTypeFlag.FLAG_SINGLE.getCode()); |
|
|
|
type.setName(EnumTagType.ID_51.getMessage()); |
|
|
|
type.setId(EnumTagType.ID_51.getCode()); |
|
|
|
|
|
|
|
List<WxTags> tagsMemberLevel = new ArrayList<>(); |
|
|
|
List<WxLevelConfig> levels = wxLevelConfigService.getByTenantId(tenentId); |
|
|
|
@@ -305,13 +348,31 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { |
|
|
|
wxTags.setTypeId(EnumTagType.ID_51.getCode()); |
|
|
|
tagsMemberLevel.add(wxTags); |
|
|
|
}); |
|
|
|
type.setTags(tagsMemberLevel); |
|
|
|
return type; |
|
|
|
} |
|
|
|
|
|
|
|
typeMemberLevel.setTags(tagsMemberLevel); |
|
|
|
private WxTagsTypeVo generateType52() { |
|
|
|
WxTagsTypeVo type = new WxTagsTypeVo(); |
|
|
|
type.setFlag(EnumTagTypeFlag.FLAG_SINGLE.getCode()); |
|
|
|
type.setName(EnumTagType.ID_52.getMessage()); |
|
|
|
type.setId(EnumTagType.ID_52.getCode()); |
|
|
|
type.setTags(memberBirthday); |
|
|
|
return type; |
|
|
|
} |
|
|
|
|
|
|
|
types.add(typeMemberLevel); |
|
|
|
public List<WxTagsGroupVo> listFilters(String tenantId) { |
|
|
|
WxTagsGroupVo filter = new WxTagsGroupVo(); |
|
|
|
|
|
|
|
filter.setTypes(types); |
|
|
|
filter.setId(EnumTagGroup.ID_10.getCode()); |
|
|
|
filter.setName(EnumTagGroup.ID_10.getMessage()); |
|
|
|
|
|
|
|
List<WxTagsTypeVo> types = new ArrayList<>(); |
|
|
|
types.add(generateType50()); |
|
|
|
types.add(generateType51(tenantId)); |
|
|
|
types.add(generateType52()); |
|
|
|
|
|
|
|
filter.setTypes(types); |
|
|
|
List<WxTagsGroupVo> listVo =wxTagsService.listAllVo(); |
|
|
|
listVo.add(0,filter); |
|
|
|
return listVo; |
|
|
|
@@ -321,11 +382,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { |
|
|
|
@Override |
|
|
|
public List<WxCUserBasicInfo> listByFilterList(String tenantId, List<WxCUserBasicInfoFilterListDto> filterList) { |
|
|
|
HashSet<WxCUserBasicInfo> userSet = new HashSet<>(); |
|
|
|
|
|
|
|
filterList.stream().forEach(f->{ |
|
|
|
userSet.addAll(listByFilter(tenantId,f.getTagList())); |
|
|
|
}); |
|
|
|
|
|
|
|
filterList.stream().forEach(f->userSet.addAll(listByFilter(tenantId,f.getTagList()))); |
|
|
|
return new ArrayList<>(userSet); |
|
|
|
} |
|
|
|
|
|
|
|
@@ -335,7 +392,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public int cntUserList(WxCUserBasicInfo record) { |
|
|
|
public int countUser(WxCUserBasicInfo record) { |
|
|
|
return wxCUserBasicInfoMapper.selectCount(record); |
|
|
|
} |
|
|
|
|
|
|
|
|