From 172022f49567aeaf926e22485493273262a92141 Mon Sep 17 00:00:00 2001 From: hupeng Date: Wed, 15 May 2019 18:43:29 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=A0=87=E7=AD=BE][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BC=9A=E5=91=98=E6=A0=B8=E9=94=80=E5=8A=A8?= =?UTF-8?q?=E5=90=91,=E4=BC=9A=E5=91=98=E7=99=BB=E9=99=86=E5=8A=A8?= =?UTF-8?q?=E5=90=91=E8=BF=87=E6=BB=A4=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/dto/WxCUserBasicInfoDto.java | 44 +++++++ .../main/java/com/iformall/enums/EnumTag.java | 14 +- .../java/com/iformall/enums/EnumTagGroup.java | 2 +- .../java/com/iformall/enums/EnumTagType.java | 2 + .../impl/WxCUserBasicInfoServiceImpl.java | 122 +++++++++++++++++- .../mapper/WxCUserBasicInfoMapper.xml | 17 +++ 6 files changed, 194 insertions(+), 7 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/dto/WxCUserBasicInfoDto.java b/mallinkService/src/main/java/com/iformall/domain/dto/WxCUserBasicInfoDto.java index b482b691b..d2df1c5fd 100644 --- a/mallinkService/src/main/java/com/iformall/domain/dto/WxCUserBasicInfoDto.java +++ b/mallinkService/src/main/java/com/iformall/domain/dto/WxCUserBasicInfoDto.java @@ -44,6 +44,18 @@ public class WxCUserBasicInfoDto implements Serializable{ @Transient private Date birthEndTime; + @Transient + private Date loginStartTime; + + @Transient + private Date loginEndTime; + + @Transient + private Date verifiedStartTime; + + @Transient + private Date verifiedEndTime; + @Transient private Integer levelStartScore; @@ -103,6 +115,38 @@ public class WxCUserBasicInfoDto implements Serializable{ this.birthEndTime = birthEndTime; } + public Date getLoginStartTime() { + return loginStartTime; + } + + public void setLoginStartTime(Date loginStartTime) { + this.loginStartTime = loginStartTime; + } + + public Date getLoginEndTime() { + return loginEndTime; + } + + public void setLoginEndTime(Date loginEndTime) { + this.loginEndTime = loginEndTime; + } + + public Date getVerifiedStartTime() { + return verifiedStartTime; + } + + public void setVerifiedStartTime(Date verifiedStartTime) { + this.verifiedStartTime = verifiedStartTime; + } + + public Date getVerifiedEndTime() { + return verifiedEndTime; + } + + public void setVerifiedEndTime(Date verifiedEndTime) { + this.verifiedEndTime = verifiedEndTime; + } + public Integer getSex() { return sex; } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumTag.java b/mallinkService/src/main/java/com/iformall/enums/EnumTag.java index 4167ad140..446e6c72a 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumTag.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumTag.java @@ -190,9 +190,17 @@ public enum EnumTag { ID_1010(1010L, EnumTagType.ID_50,"一周以上"), ID_1011(1011L, EnumTagType.ID_50,"一天以上"), - ID_1100(1100L, EnumTagType.ID_50,"今天生日"), - ID_1101(1101L, EnumTagType.ID_50,"本周生日"), - ID_1102(1102L, EnumTagType.ID_50,"当月生日"), + ID_1100(1100L, EnumTagType.ID_52,"今天生日"), + ID_1101(1101L, EnumTagType.ID_52,"本周生日"), + ID_1102(1102L, EnumTagType.ID_52,"当月生日"), + + ID_1200(1200L, EnumTagType.ID_53,"今天登陆"), + ID_1201(1201L, EnumTagType.ID_53,"本周登陆"), + ID_1202(1202L, EnumTagType.ID_53,"当月登陆"), + + ID_1300(1300L, EnumTagType.ID_54,"今天核销"), + ID_1301(1301L, EnumTagType.ID_54,"本周核销"), + ID_1302(1302L, EnumTagType.ID_54,"当月核销"), ; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumTagGroup.java b/mallinkService/src/main/java/com/iformall/enums/EnumTagGroup.java index b9b4aff07..7abfca1ef 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumTagGroup.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumTagGroup.java @@ -10,7 +10,7 @@ public enum EnumTagGroup { ID_3(3L, "消费偏好"), ID_4(4L, "行为偏好"), - ID_10(10L, "会员属性"), + ID_10(10L, "会员动态"), ; public static EnumTagGroup getEnum(Long code) { diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumTagType.java b/mallinkService/src/main/java/com/iformall/enums/EnumTagType.java index 6a13ccd10..d4326fe92 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumTagType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumTagType.java @@ -36,6 +36,8 @@ public enum EnumTagType { ID_50(50L, EnumTagTypeFlag.FLAG_SINGLE, EnumTagGroup.ID_10, "会员会龄"), ID_51(51L, EnumTagTypeFlag.FLAG_SINGLE, EnumTagGroup.ID_10, "会员等级"), ID_52(52L, EnumTagTypeFlag.FLAG_SINGLE, EnumTagGroup.ID_10, "会员生日"), + ID_53(53L, EnumTagTypeFlag.FLAG_SINGLE, EnumTagGroup.ID_10, "会员活跃"), + ID_54(54L, EnumTagTypeFlag.FLAG_SINGLE, EnumTagGroup.ID_10, "会员消费"), ; public static EnumTagType getEnum(Long code) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java index 004508a1b..bc81e4111 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java @@ -224,6 +224,46 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { ) ); + private final static List memberLoginActivity = new ArrayList( + Arrays.asList( + new WxTags(){{ + setTypeId(EnumTagType.ID_53.getCode()); + setName(EnumTag.ID_1200.getMessage()); + setId(EnumTag.ID_1200.getCode()); + }}, + new WxTags(){{ + setTypeId(EnumTagType.ID_53.getCode()); + setName(EnumTag.ID_1201.getMessage()); + setId(EnumTag.ID_1201.getCode()); + }}, + new WxTags(){{ + setTypeId(EnumTagType.ID_53.getCode()); + setName(EnumTag.ID_1202.getMessage()); + setId(EnumTag.ID_1202.getCode()); + }} + ) + ); + + private final static List memberCouponVerified = new ArrayList( + Arrays.asList( + new WxTags(){{ + setTypeId(EnumTagType.ID_54.getCode()); + setName(EnumTag.ID_1300.getMessage()); + setId(EnumTag.ID_1300.getCode()); + }}, + new WxTags(){{ + setTypeId(EnumTagType.ID_54.getCode()); + setName(EnumTag.ID_1301.getMessage()); + setId(EnumTag.ID_1301.getCode()); + }}, + new WxTags(){{ + setTypeId(EnumTagType.ID_54.getCode()); + setName(EnumTag.ID_1302.getMessage()); + setId(EnumTag.ID_1302.getCode()); + }} + ) + ); + private void filtersToDtoID0(WxCUserBasicInfoDto dto, WxCUserBasicInfoFilterDto f) { dto.setPhones(f.getParam()); } @@ -294,6 +334,61 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { localDate.plusMonths(1).with(TemporalAdjusters.firstDayOfMonth()).atStartOfDay().atZone(zone).toInstant())); } } + + private void filtersToDtoID53(WxCUserBasicInfoDto dto, WxCUserBasicInfoFilterDto f) { + LocalDate localDate = LocalDate.now(); + ZoneId zone = ZoneId.systemDefault(); + if (f.getId().equals(EnumTag.ID_1200.getCode())) { + dto.setLoginStartTime( + Date.from( + localDate.atStartOfDay().atZone(zone).toInstant())); + dto.setLoginEndTime( + Date.from( + localDate.plusDays(1).atStartOfDay().atZone(zone).toInstant())); + } else if (f.getId().equals(EnumTag.ID_1201.getCode())){ + dto.setLoginStartTime( + Date.from( + localDate.with(DayOfWeek.MONDAY).atStartOfDay().atZone(zone).toInstant())); + dto.setLoginEndTime( + Date.from( + localDate.plusWeeks(1).with(DayOfWeek.MONDAY).atStartOfDay().atZone(zone).toInstant())); + } else if (f.getId().equals(EnumTag.ID_1202.getCode())){ + dto.setLoginStartTime( + Date.from( + localDate.with(TemporalAdjusters.firstDayOfMonth()).atStartOfDay().atZone(zone).toInstant())); + dto.setLoginEndTime( + Date.from( + localDate.plusMonths(1).with(TemporalAdjusters.firstDayOfMonth()).atStartOfDay().atZone(zone).toInstant())); + } + } + + private void filtersToDtoID54(WxCUserBasicInfoDto dto, WxCUserBasicInfoFilterDto f) { + LocalDate localDate = LocalDate.now(); + ZoneId zone = ZoneId.systemDefault(); + if (f.getId().equals(EnumTag.ID_1300.getCode())) { + dto.setVerifiedStartTime( + Date.from( + localDate.atStartOfDay().atZone(zone).toInstant())); + dto.setVerifiedEndTime( + Date.from( + localDate.plusDays(1).atStartOfDay().atZone(zone).toInstant())); + } else if (f.getId().equals(EnumTag.ID_1301.getCode())){ + dto.setVerifiedStartTime( + Date.from( + localDate.with(DayOfWeek.MONDAY).atStartOfDay().atZone(zone).toInstant())); + dto.setVerifiedEndTime( + Date.from( + localDate.plusWeeks(1).with(DayOfWeek.MONDAY).atStartOfDay().atZone(zone).toInstant())); + } else if (f.getId().equals(EnumTag.ID_1302.getCode())){ + dto.setVerifiedStartTime( + Date.from( + localDate.with(TemporalAdjusters.firstDayOfMonth()).atStartOfDay().atZone(zone).toInstant())); + dto.setVerifiedEndTime( + Date.from( + localDate.plusMonths(1).with(TemporalAdjusters.firstDayOfMonth()).atStartOfDay().atZone(zone).toInstant())); + } + } + private WxCUserBasicInfoDto filtersToDto(String tenantId, List filterList){ WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto(); List tagIdList = new ArrayList<>(); @@ -311,6 +406,10 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { filtersToDtoID51(dto,f); } else if (f.getTypeId().equals(EnumTagType.ID_52.getCode())) { filtersToDtoID52(dto,f); + } else if (f.getTypeId().equals(EnumTagType.ID_53.getCode())) { + filtersToDtoID53(dto,f); + } else if (f.getTypeId().equals(EnumTagType.ID_54.getCode())) { + filtersToDtoID54(dto,f); } else { tagIdList.add(f.getId()); } @@ -365,6 +464,24 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { return type; } + private WxTagsTypeVo generateType53() { + WxTagsTypeVo type = new WxTagsTypeVo(); + type.setFlag(EnumTagTypeFlag.FLAG_SINGLE.getCode()); + type.setName(EnumTagType.ID_53.getMessage()); + type.setId(EnumTagType.ID_53.getCode()); + type.setTags(memberLoginActivity); + return type; + } + + private WxTagsTypeVo generateType54() { + WxTagsTypeVo type = new WxTagsTypeVo(); + type.setFlag(EnumTagTypeFlag.FLAG_SINGLE.getCode()); + type.setName(EnumTagType.ID_54.getMessage()); + type.setId(EnumTagType.ID_54.getCode()); + type.setTags(memberCouponVerified); + return type; + } + public List listFilters(String tenantId) { WxTagsGroupVo filter = new WxTagsGroupVo(); @@ -375,7 +492,8 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { types.add(generateType50()); types.add(generateType51(tenantId)); types.add(generateType52()); - + types.add(generateType53()); + types.add(generateType54()); filter.setTypes(types); List listVo =wxTagsService.listAllVo(); listVo.add(0,filter); @@ -399,8 +517,6 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { - - /***************user filter end******************************************/ @Override diff --git a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml index 097bf9bc7..d66c5697d 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml @@ -374,6 +374,23 @@ and cu.birthdate < #{birthEndTime} + + and cu.active_time >= #{loginStartTime} + + + + and cu.active_time <= #{loginEndTime} + + + + and 0< + (select count(*) from wx_coupon_order co + where cu.id = co.c_user_id + and co.coupon_order_status = 1 + and co.update_date >= #{verifiedStartTime} + and co.update_date <= #{verifiedEndTime}) + + and cu.phone in (${phones})