From 3da43818839ce93d591fd228d253e041b1dd94f3 Mon Sep 17 00:00:00 2001 From: hupeng Date: Tue, 16 Apr 2019 21:33:48 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BC=9A=E5=91=98][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E4=BC=9A=E5=91=98=E8=BF=87=E6=BB=A4=E5=99=A8=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WxCUserBasicInfoController.java | 18 +++ .../domain/dto/WxCUserBasicInfoDto.java | 11 ++ .../main/java/com/iformall/enums/EnumTag.java | 5 + .../service/WxCUserBasicInfoService.java | 6 +- .../impl/WxCUserBasicInfoServiceImpl.java | 116 +++++++++++++----- .../mapper/WxCUserBasicInfoMapper.xml | 40 +++--- .../main/resources/mapper/WxTagsMapper.xml | 7 -- 7 files changed, 144 insertions(+), 59 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java index ccd81a7ad..7d44c2dc2 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java @@ -8,6 +8,7 @@ import com.iformall.annotation.SystemControllerLog; import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; +import com.iformall.domain.dto.WxCUserBasicInfoFilterDto; import com.iformall.domain.po.*; import com.iformall.enums.EnumAssignTagsTrigger; import com.iformall.exception.MallinkException; @@ -474,4 +475,21 @@ public class WxCUserBasicInfoController extends BaseController { logger.debug("[" + getIpAddr() + "] WxCUserBasicInfoController::listFilter"); return new ResultData(wxCUserBasicInfoService.listFilters(getTenantId())); } + + + @ApiOperation("获取会员过滤器") + @PostMapping("/countByFilter") + public ResultData countByFilter(@RequestBody List filterList) { + logger.debug("[" + getIpAddr() + "] WxCUserBasicInfoController::listFilter"); + return new ResultData(wxCUserBasicInfoService.countByFilter(getTenantId(),filterList)); + } + + @ApiOperation("获取会员过滤器") + @PostMapping("/listByFilter") + public ResultData listByFilter(@RequestBody List filterList) { + logger.debug("[" + getIpAddr() + "] WxCUserBasicInfoController::listFilter"); + return new ResultData(wxCUserBasicInfoService.listByFilter(getTenantId(),filterList)); + } + + } \ No newline at end of file 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 cdcec0372..5f10ab457 100644 --- a/mallinkService/src/main/java/com/iformall/domain/dto/WxCUserBasicInfoDto.java +++ b/mallinkService/src/main/java/com/iformall/domain/dto/WxCUserBasicInfoDto.java @@ -56,6 +56,9 @@ public class WxCUserBasicInfoDto implements Serializable{ @Transient List tagIds; + @Transient + protected String sortColumns; + public Long getId() { return id; } @@ -153,4 +156,12 @@ public class WxCUserBasicInfoDto implements Serializable{ public void setTagIds(List tagIds) { this.tagIds = tagIds; } + + public String getSortColumns() { + return sortColumns; + } + + public void setSortColumns(String sortColumns) { + this.sortColumns = sortColumns; + } } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumTag.java b/mallinkService/src/main/java/com/iformall/enums/EnumTag.java index 476076827..d10ebd4ca 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumTag.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumTag.java @@ -186,6 +186,11 @@ public enum EnumTag { ID_1004(1004L, EnumTagType.ID_50,"一年以内"), ID_1005(1005L, EnumTagType.ID_50,"五年以内"), ID_1006(1006L, EnumTagType.ID_50,"五年以上"), + ID_1007(1007L, EnumTagType.ID_50,"一年以上"), + ID_1008(1008L, EnumTagType.ID_50,"一季度以上"), + ID_1009(1009L, EnumTagType.ID_50,"一月以上"), + ID_1010(1010L, EnumTagType.ID_50,"一周以上"), + ID_1011(1011L, EnumTagType.ID_50,"一天以上"), ; diff --git a/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java b/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java index 6d9be3227..1fb64e314 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java @@ -2,6 +2,7 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; import com.iformall.domain.dto.WxCUserBasicInfoDto; +import com.iformall.domain.dto.WxCUserBasicInfoFilterDto; import com.iformall.domain.po.MallUserInfo; import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.po.WxCarPayRecord; @@ -20,8 +21,9 @@ public interface WxCUserBasicInfoService { * @return */ - List listFilters(String tenentId); - + List listFilters(String tenantId); + long countByFilter(String tenantId, List filterList); + List listByFilter(String tenantId, List filterList); /** * 根据实体查询分页列表 * 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 b2d912ffc..688b1b8e4 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java @@ -103,6 +103,26 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { new WxTags(){{ setName(EnumTag.ID_1006.getMessage()); setId(EnumTag.ID_1006.getCode()); + }}, + new WxTags(){{ + setName(EnumTag.ID_1007.getMessage()); + setId(EnumTag.ID_1007.getCode()); + }}, + new WxTags(){{ + setName(EnumTag.ID_1008.getMessage()); + setId(EnumTag.ID_1008.getCode()); + }}, + new WxTags(){{ + setName(EnumTag.ID_1009.getMessage()); + setId(EnumTag.ID_1009.getCode()); + }}, + new WxTags(){{ + setName(EnumTag.ID_1010.getMessage()); + setId(EnumTag.ID_1010.getCode()); + }}, + new WxTags(){{ + setName(EnumTag.ID_1011.getMessage()); + setId(EnumTag.ID_1011.getCode()); }} ) ); @@ -120,80 +140,110 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { }}); put(EnumTag.ID_1001.getCode(), new HashMap(){{ - put(RANGE_START,1L); + put(RANGE_START,0L); put(RANGE_END,7L); }}); put(EnumTag.ID_1002.getCode(), new HashMap(){{ - put(RANGE_START,7L); + put(RANGE_START,0L); put(RANGE_END,30L); }}); put(EnumTag.ID_1003.getCode(), new HashMap(){{ - put(RANGE_START,30L); + put(RANGE_START,0L); put(RANGE_END,90L); }}); put(EnumTag.ID_1004.getCode(), new HashMap(){{ - put(RANGE_START,90L); + put(RANGE_START,0L); put(RANGE_END,365L); }}); put(EnumTag.ID_1005.getCode(), new HashMap(){{ - put(RANGE_START,365L); + put(RANGE_START,0L); put(RANGE_END,365*5L); }}); put(EnumTag.ID_1006.getCode(), new HashMap(){{ put(RANGE_START,365*5L); }}); + put(EnumTag.ID_1007.getCode(), + new HashMap(){{ + put(RANGE_START,365L); + }}); + put(EnumTag.ID_1008.getCode(), + new HashMap(){{ + put(RANGE_START,90L); + }}); + put(EnumTag.ID_1009.getCode(), + new HashMap(){{ + put(RANGE_START,30L); + }}); + put(EnumTag.ID_1010.getCode(), + new HashMap(){{ + put(RANGE_START,7L); + }}); + put(EnumTag.ID_1011.getCode(), + new HashMap(){{ + put(RANGE_START,1L); + }}); } }; - private WxCUserBasicInfoDto filtersToDto(String tenentId, List filterList){ + private WxCUserBasicInfoDto filtersToDto(String tenantId, List filterList){ WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto(); - dto.setTagIds(new ArrayList<>()); - List levels = wxLevelConfigService.getByTenantId(tenentId); - filterList.stream().forEach(f->{ + List tagIdList = new ArrayList<>(); - switch(EnumTagType.getEnum(f.getTypeId())) { - case ID_50: - ZoneId zone = ZoneId.systemDefault(); - Long rangeStart = memberTimeMap.get(f.getId()).get(RANGE_START); - Long rangeEnd = memberTimeMap.get(f.getId()).get(RANGE_END); + List levels = wxLevelConfigService.getByTenantId(tenantId); + filterList.stream().forEach(f->{ + if (f.getTypeId()==null) { + tagIdList.add(f.getId()); + return; + } + if(f.getTypeId().equals(EnumTagType.ID_50.getCode())) { + ZoneId zone = ZoneId.systemDefault(); - if (rangeEnd != null){ + Map rangeMap = memberTimeMap.get(f.getId()); + if (rangeMap != null) { + Long rangeEnd = rangeMap.get(RANGE_END); + if (rangeEnd != null) { LocalDateTime localDateTimeStart = LocalDateTime.now().minusDays(rangeEnd); dto.setStartTime(Date.from(localDateTimeStart.atZone(zone).toInstant())); } - + Long rangeStart = rangeMap.get(RANGE_START); if (rangeStart != null) { LocalDateTime localDateTimeEnd = LocalDateTime.now().minusDays(rangeStart); dto.setEndTime(Date.from(localDateTimeEnd.atZone(zone).toInstant())); } - break; - case ID_51: - for (int i=0;i + + cu.`id`,cu.`phone`,cu.`email` + + where 1=1 - and tenant_id =#{tenantId} + and cu.tenant_id =#{tenantId} - and create_date >= #{startTime} + and cu.create_date >= #{startTime} + - and create_date <= #{endTime} + and cu.create_date <= #{endTime} - - and poins >= #{levelStartScore} + + and cu.poins >= #{levelStartScore} - and poins < #{levelEndScore} + and cu.poins < #{levelEndScore} - - and (poins is null or - (poins >= #{levelStartScore} + + and (cu.poins is null or + (cu.poins >= #{levelStartScore} - and poins < #{levelEndScore} + and cu.poins < #{levelEndScore} )) - - + + and JSON_CONTAINS(JSON_ARRAY(cut.tags),JSON_ARRAY - and #{idItem} in cut.tags + #{idItem} + ) order by ${sortColumns} + diff --git a/mallinkService/src/main/resources/mapper/WxTagsMapper.xml b/mallinkService/src/main/resources/mapper/WxTagsMapper.xml index f0a8a316c..986c26e86 100644 --- a/mallinkService/src/main/resources/mapper/WxTagsMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxTagsMapper.xml @@ -61,13 +61,6 @@ -