提交 45eeacae 作者: 沈振路

Merge branch 'customer_service_SZlu'

# Conflicts:
#	src/main/java/com/yaoyaozw/customer/controller/CustomerDelayController.java
...@@ -3,6 +3,7 @@ package com.yaoyaozw.customer; ...@@ -3,6 +3,7 @@ package com.yaoyaozw.customer;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
/** /**
...@@ -12,6 +13,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; ...@@ -12,6 +13,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication @SpringBootApplication
@EnableScheduling @EnableScheduling
@MapperScan("com.yaoyaozw.customer.mapper") @MapperScan("com.yaoyaozw.customer.mapper")
@EnableAsync
public class CustomerServiceApplication { public class CustomerServiceApplication {
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(CustomerServiceApplication.class, args); SpringApplication.run(CustomerServiceApplication.class, args);
......
package com.yaoyaozw.customer.components;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
/**
* @author darker
* @date 2022/9/28 15:16
*/
@Component
public class CustomerServiceCommonAsyncComponent {
@Async("myExecutor")
public void updateUserPackage() {
}
}
package com.yaoyaozw.customer.configs;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.ThreadPoolExecutor;
/**
* @author darker
* @date 2022/8/2 15:01
*/
@Configuration
@EnableAsync
public class ThreadConfig {
/** 核心线程数(默认线程数) */
private static final int CORE_POOL_SIZE = 15;
/** 最大线程数 */
private static final int MAX_POOL_SIZE = 50;
/** 允许线程空闲时间(单位:默认为秒) */
private static final int KEEP_ALIVE_TIME = 60;
/** 缓冲队列大小 */
private static final int QUEUE_CAPACITY = 100;
/** 线程池名前缀 */
private static final String THREAD_NAME_PREFIX = "Async-Service-";
@Bean("myExecutor")
public ThreadPoolTaskExecutor myExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(CORE_POOL_SIZE);
executor.setMaxPoolSize(MAX_POOL_SIZE);
executor.setQueueCapacity(QUEUE_CAPACITY);
executor.setKeepAliveSeconds(KEEP_ALIVE_TIME);
executor.setThreadNamePrefix(THREAD_NAME_PREFIX);
// 线程池对拒绝任务的处理策略
// CallerRunsPolicy:由调用线程(提交任务的线程)处理该任务
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
// 初始化
executor.initialize();
return executor;
}
}
...@@ -4,7 +4,7 @@ import com.yaoyaozw.customer.common.BaseResult; ...@@ -4,7 +4,7 @@ import com.yaoyaozw.customer.common.BaseResult;
import com.yaoyaozw.customer.common.GenericsResult; import com.yaoyaozw.customer.common.GenericsResult;
import com.yaoyaozw.customer.dto.customer.CustomerDelayQueryDTO; import com.yaoyaozw.customer.dto.customer.CustomerDelayQueryDTO;
import com.yaoyaozw.customer.dto.customer.CustomerDelaySaveDTO; import com.yaoyaozw.customer.dto.customer.CustomerDelaySaveDTO;
import com.yaoyaozw.customer.vo.customer.CustomerDelayItemVO; import com.yaoyaozw.customer.vo.customer.CustomerDelayListVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -18,32 +18,32 @@ import java.util.List; ...@@ -18,32 +18,32 @@ import java.util.List;
*/ */
@Api(tags = "延时客服接口") @Api(tags = "延时客服接口")
@RestController @RestController
@RequestMapping("/delay-customer-service") @RequestMapping("/customer-service/delay")
public class CustomerDelayController { public class CustomerDelayController {
@ApiOperation("新增") @ApiOperation("新增")
@PostMapping("/insert") @PostMapping("/insert")
public BaseResult insertCrowdPackage(@RequestBody CustomerDelaySaveDTO saveDto) { public BaseResult insertCustomerDelay(@RequestBody CustomerDelaySaveDTO saveDto) {
return new BaseResult().success(); return new BaseResult().success();
} }
@ApiOperation("编辑") @ApiOperation("编辑")
@PostMapping("/edit") @PostMapping("/edit")
public BaseResult updateCrowdPackage(@RequestBody CustomerDelaySaveDTO saveDto) { public BaseResult updateCustomerDelay(@RequestBody CustomerDelaySaveDTO saveDto) {
return new BaseResult().success(); return new BaseResult().success();
} }
@ApiOperation("查询") @ApiOperation("查询")
@PostMapping("/pageList") @PostMapping("/pageList")
public GenericsResult<List<CustomerDelayItemVO>> pageList(@RequestBody CustomerDelayQueryDTO queryDto) { public GenericsResult<List<CustomerDelayListVO>> pageList(@RequestBody CustomerDelayQueryDTO queryDto) {
return new GenericsResult<>(new ArrayList<>()); return new GenericsResult<>(new ArrayList<>());
} }
@ApiOperation("删除") @ApiOperation("删除")
@GetMapping("/remove/{id}") @GetMapping("/remove/{id}")
public BaseResult removeCrowdPackage(@PathVariable("id") Long id) { public BaseResult removeCustomerDelay(@PathVariable("id") Long id) {
return new BaseResult().success(); return new BaseResult().success();
} }
......
package com.yaoyaozw.customer.controller;
import com.yaoyaozw.customer.common.BaseResult;
import com.yaoyaozw.customer.common.GenericsResult;
import com.yaoyaozw.customer.dto.customer.CustomerMessageQueryDTO;
import com.yaoyaozw.customer.dto.customer.CustomerMessageSaveDTO;
import com.yaoyaozw.customer.service.CustomerGraphicsService;
import com.yaoyaozw.customer.vo.customer.CustomerDelayListVO;
import com.yaoyaozw.customer.vo.customer.CustomerMessageListVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/**
* @author darker
* @date 2022/9/15 11:13
*/
@Api(tags = "客服消息接口")
@RestController
@RequestMapping("/customer-service/message")
public class CustomerMessageController {
@Autowired
private CustomerGraphicsService customerGraphicsService;
@ApiOperation("新增")
@PostMapping("/insert")
public BaseResult insertCustomerMessage(@RequestBody CustomerMessageSaveDTO saveDto) {
return customerGraphicsService.insertCustomerMessage(saveDto);
}
@ApiOperation("编辑")
@PostMapping("/edit")
public BaseResult updateCustomerMessage(@RequestBody CustomerMessageSaveDTO saveDto) {
return customerGraphicsService.updateCustomerMessage(saveDto);
}
@ApiOperation("查询")
@PostMapping("/pageList")
public GenericsResult<List<CustomerMessageListVO>> pageList(@RequestBody CustomerMessageQueryDTO queryDto) {
return customerGraphicsService.pageList(queryDto);
}
@ApiOperation("删除")
@GetMapping("/remove/{id}")
public BaseResult removeCustomerMessage(@PathVariable("id") Long id) {
return customerGraphicsService.removeCustomerMessage(id);
}
}
...@@ -15,10 +15,15 @@ import java.io.Serializable; ...@@ -15,10 +15,15 @@ import java.io.Serializable;
public class CustomerMessageSaveDTO implements Serializable { public class CustomerMessageSaveDTO implements Serializable {
private static final long serialVersionUID = -4269904448093268275L; private static final long serialVersionUID = -4269904448093268275L;
@ApiModelProperty("客服消息人群包ID")
private Long packageId;
@ApiModelProperty("客服消息名称") @ApiModelProperty("客服消息名称")
private String messageName; private String messageName;
@ApiModelProperty("消息发送时间")
private String postTime;
@ApiModelProperty("客服消息类型(图文、文本)") @ApiModelProperty("客服消息类型(图文、文本)")
private Integer messageType; private Integer messageType;
......
...@@ -58,6 +58,12 @@ public class CrowdPackageConditionMatch implements Serializable { ...@@ -58,6 +58,12 @@ public class CrowdPackageConditionMatch implements Serializable {
@TableField("operator_description") @TableField("operator_description")
private String operatorDescription; private String operatorDescription;
/**
* 是否是静态条件
*/
@TableField("is_static")
private Integer isStatic;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
} }
...@@ -24,4 +24,14 @@ public interface KanbanCommonMapper { ...@@ -24,4 +24,14 @@ public interface KanbanCommonMapper {
*/ */
List<CommonOptionResponseVO> getConditionOptionByConfig(@Param("conditionItem") CrowdPackageCondition conditionItem); List<CommonOptionResponseVO> getConditionOptionByConfig(@Param("conditionItem") CrowdPackageCondition conditionItem);
/**
* 得到从静态条件设置id列表
*
* @param expressList 表达列表
* @return {@link List}<{@link Long}>
*/
List<Long> getSetupIdListFromStaticCondition(@Param("expressList") List<String> expressList);
} }
...@@ -2,10 +2,22 @@ package com.yaoyaozw.customer.service; ...@@ -2,10 +2,22 @@ package com.yaoyaozw.customer.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.yaoyaozw.customer.entity.CrowdPackageConditionMatch; import com.yaoyaozw.customer.entity.CrowdPackageConditionMatch;
import com.yaoyaozw.customer.entity.RegisterUserEntity;
import java.util.List;
/** /**
* @author darker * @author darker
* @date 2022/9/21 15:08 * @date 2022/9/21 15:08
*/ */
public interface CrowdPackageConditionMatchService extends IService<CrowdPackageConditionMatch> { public interface CrowdPackageConditionMatchService extends IService<CrowdPackageConditionMatch> {
/**
* 从包中获取用户列表
*
* @param packageId 包id
* @return {@link List}<{@link RegisterUserEntity}>
*/
List<RegisterUserEntity> getUserListFromPackage(Long packageId);
} }
package com.yaoyaozw.customer.service; package com.yaoyaozw.customer.service;
import com.yaoyaozw.customer.common.BaseResult;
import com.yaoyaozw.customer.common.GenericsResult;
import com.yaoyaozw.customer.dto.customer.CustomerMessageQueryDTO;
import com.yaoyaozw.customer.dto.customer.CustomerMessageSaveDTO;
import com.yaoyaozw.customer.entity.CustomerGraphics; import com.yaoyaozw.customer.entity.CustomerGraphics;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.yaoyaozw.customer.vo.customer.CustomerDelayListVO;
import com.yaoyaozw.customer.vo.customer.CustomerMessageListVO;
import java.util.List;
/**
* 客户图形服务
*
* @author Admin
* @date 2022/09/28
*/
public interface CustomerGraphicsService extends IService<CustomerGraphics> { public interface CustomerGraphicsService extends IService<CustomerGraphics> {
/**
* 插入客户留言
*
* @param saveDto 保存dto
* @return {@link BaseResult}
*/
BaseResult insertCustomerMessage(CustomerMessageSaveDTO saveDto);
/**
* 更新客户信息
*
* @param saveDto 保存dto
* @return {@link BaseResult}
*/
BaseResult updateCustomerMessage(CustomerMessageSaveDTO saveDto);
/**
* 页面列表
*
* @param queryDto 查询dto
* @return {@link GenericsResult}<{@link List}<{@link CustomerDelayListVO}>>
*/
GenericsResult<List<CustomerMessageListVO>> pageList(CustomerMessageQueryDTO queryDto);
/**
* 删除客户信息
*
* @param id id
* @return {@link BaseResult}
*/
BaseResult removeCustomerMessage(Long id);
} }
package com.yaoyaozw.customer.service;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author darker
* @date 2022/9/28 19:01
*/
public interface CustomerServiceCommonService {
/**
* 得到从静态条件设置id列表
*
* @param expressList 表达列表
* @return {@link List}<{@link Long}>
*/
List<Long> getSetupIdListFromStaticCondition(List<String> expressList);
}
package com.yaoyaozw.customer.service.impl; package com.yaoyaozw.customer.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yaoyaozw.customer.constants.CrowdPackageCommonConstant;
import com.yaoyaozw.customer.entity.CrowdPackageConditionMatch; import com.yaoyaozw.customer.entity.CrowdPackageConditionMatch;
import com.yaoyaozw.customer.entity.RegisterUserEntity;
import com.yaoyaozw.customer.mapper.KanbanCommonMapper;
import com.yaoyaozw.customer.mapper.MaterialCrowdConditionMatchMapper; import com.yaoyaozw.customer.mapper.MaterialCrowdConditionMatchMapper;
import com.yaoyaozw.customer.service.CrowdPackageConditionMatchService; import com.yaoyaozw.customer.service.CrowdPackageConditionMatchService;
import com.yaoyaozw.customer.service.CustomerServiceCommonService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/** /**
* @author darker * @author darker
* @date 2022/9/21 15:09 * @date 2022/9/21 15:09
*/ */
@Service @Service
public class CrowdPackageConditionMatchServiceImpl extends ServiceImpl<MaterialCrowdConditionMatchMapper, CrowdPackageConditionMatch> implements CrowdPackageConditionMatchService { public class CrowdPackageConditionMatchServiceImpl extends ServiceImpl<MaterialCrowdConditionMatchMapper, CrowdPackageConditionMatch> implements CrowdPackageConditionMatchService {
private final static Logger LOCAL_LOG = LoggerFactory.getLogger(CrowdPackageConditionMatchServiceImpl.class);
@Autowired
private CustomerServiceCommonService commonService;
@Override
public List<RegisterUserEntity> getUserListFromPackage(Long packageId) {
long startTime = System.currentTimeMillis();
// 获取人群包下的条件
List<CrowdPackageConditionMatch> packageConditionList = super.list(new QueryWrapper<CrowdPackageConditionMatch>().eq("package_id", packageId));
List<String> staticConditionList = packageConditionList.stream().filter(item -> CrowdPackageCommonConstant.STATIC_CONDITION.equals(item.getIsStatic())).map(CrowdPackageConditionMatch::getOperatorExpression).collect(Collectors.toList());
List<String> nonStaticConditionList = packageConditionList.stream().filter(item -> CrowdPackageCommonConstant.NON_STATIC_CONDITION.equals(item.getIsStatic())).map(CrowdPackageConditionMatch::getOperatorExpression).collect(Collectors.toList());
LOCAL_LOG.info("静态条件: {}条, 动态条件: {}条", staticConditionList.size(), nonStaticConditionList.size());
long getConditionTime = System.currentTimeMillis();
LOCAL_LOG.info("获取条件列表耗时 {}ms", getConditionTime - startTime);
// 根据静态条件获取setupId
List<Long> setupIdList = commonService.getSetupIdListFromStaticCondition(staticConditionList);
long getSetupIdTime = System.currentTimeMillis();
LOCAL_LOG.info("获取SetupId列表耗时 {}ms, setupId列表长度: {}", getSetupIdTime - getConditionTime, setupIdList.size());
// 根据动态条件获取用户列表
List<RegisterUserEntity> userList = new ArrayList<>();
long dynamicUserTime = System.currentTimeMillis();
LOCAL_LOG.info("获取SetupId列表符合动态条件的用户耗时 {}ms, 符合动态条件的用户: {}个", dynamicUserTime - getSetupIdTime, userList.size());
// 筛选所属setupId在列表中的用户
if (CollectionUtil.isNotEmpty(setupIdList)) {
userList = userList.stream().filter(item -> setupIdList.contains(item.getSetupId())).collect(Collectors.toList());
}
long allUserTime = System.currentTimeMillis();
LOCAL_LOG.info("获取符合全部条件的用户耗时: {}ms, 符合全部条件的用户: {}个", allUserTime - dynamicUserTime, userList.size());
return userList;
}
} }
...@@ -198,6 +198,7 @@ public class CrowdPackageServiceImpl extends ServiceImpl<MaterialCrowdPackageMap ...@@ -198,6 +198,7 @@ public class CrowdPackageServiceImpl extends ServiceImpl<MaterialCrowdPackageMap
if (ObjectUtil.isNull(conditionInfo)) { if (ObjectUtil.isNull(conditionInfo)) {
throw new RuntimeException("无法获取条件"); throw new RuntimeException("无法获取条件");
} }
match.setIsStatic(conditionInfo.getIsStatic());
String conditionType = conditionInfo.getConditionType(); String conditionType = conditionInfo.getConditionType();
LOCAL_LOG.info("当前条件类型: {}", conditionType); LOCAL_LOG.info("当前条件类型: {}", conditionType);
// 是需要比较的类型, 获取对应的比较符号的数据 // 是需要比较的类型, 获取对应的比较符号的数据
...@@ -290,7 +291,7 @@ public class CrowdPackageServiceImpl extends ServiceImpl<MaterialCrowdPackageMap ...@@ -290,7 +291,7 @@ public class CrowdPackageServiceImpl extends ServiceImpl<MaterialCrowdPackageMap
if (ObjectUtil.isNull(responseVo) || CollectionUtil.isEmpty(responseVo.getOptionList())) { if (ObjectUtil.isNull(responseVo) || CollectionUtil.isEmpty(responseVo.getOptionList())) {
throw new RuntimeException("找不到条件的选项"); throw new RuntimeException("找不到条件的选项");
} }
StringBuilder descriptionBuilder = new StringBuilder(conditionInfo.getConditionName() + "范围: "); StringBuilder descriptionBuilder = new StringBuilder(conditionInfo.getConditionName() + ": ");
for (CommonOptionResponseVO commonOptionResponseVo : responseVo.getOptionList()) { for (CommonOptionResponseVO commonOptionResponseVo : responseVo.getOptionList()) {
// 如果选中了这个选项,则拼接其name // 如果选中了这个选项,则拼接其name
if (multipleOptions.contains(commonOptionResponseVo.getKey())) { if (multipleOptions.contains(commonOptionResponseVo.getKey())) {
......
package com.yaoyaozw.customer.service.impl; package com.yaoyaozw.customer.service.impl;
import com.yaoyaozw.customer.common.BaseResult;
import com.yaoyaozw.customer.common.GenericsResult;
import com.yaoyaozw.customer.dto.customer.CustomerMessageQueryDTO;
import com.yaoyaozw.customer.dto.customer.CustomerMessageSaveDTO;
import com.yaoyaozw.customer.vo.customer.CustomerMessageListVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List; import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yaoyaozw.customer.entity.CustomerGraphics; import com.yaoyaozw.customer.entity.CustomerGraphics;
import com.yaoyaozw.customer.mapper.CustomerGraphicsMapper; import com.yaoyaozw.customer.mapper.CustomerGraphicsMapper;
import com.yaoyaozw.customer.service.CustomerGraphicsService; import com.yaoyaozw.customer.service.CustomerGraphicsService;
/**
* 客户图形服务impl
*
* @author Admin
* @date 2022/09/28
*/
@Service @Service
public class CustomerGraphicsServiceImpl extends ServiceImpl<CustomerGraphicsMapper, CustomerGraphics> implements CustomerGraphicsService { public class CustomerGraphicsServiceImpl extends ServiceImpl<CustomerGraphicsMapper, CustomerGraphics> implements CustomerGraphicsService {
private final static Logger LOCAL_LOG = LoggerFactory.getLogger(CustomerGraphicsServiceImpl.class);
@Override
public BaseResult insertCustomerMessage(CustomerMessageSaveDTO saveDto) {
LOCAL_LOG.info("根据人群包找到符合条件的用户数据");
// TODO: 2022/9/28 根据人群包找到下面的人所在的公众号,进行链接获取
return null;
}
@Override
public BaseResult updateCustomerMessage(CustomerMessageSaveDTO saveDto) {
return null;
}
@Override
public GenericsResult<List<CustomerMessageListVO>> pageList(CustomerMessageQueryDTO queryDto) {
return null;
}
@Override
public BaseResult removeCustomerMessage(Long id) {
return null;
}
} }
package com.yaoyaozw.customer.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.yaoyaozw.customer.mapper.KanbanCommonMapper;
import com.yaoyaozw.customer.service.CustomerServiceCommonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* @author darker
* @date 2022/9/28 19:01
*/
@Service
public class CustomerServiceCommonServiceImpl implements CustomerServiceCommonService {
@Autowired
private KanbanCommonMapper kanbanCommonMapper;
@Override
public List<Long> getSetupIdListFromStaticCondition(List<String> expressList) {
if (CollectionUtil.isEmpty(expressList)) {
return new ArrayList<>();
}
return kanbanCommonMapper.getSetupIdListFromStaticCondition(expressList);
}
}
package com.yaoyaozw.customer.vo.crowd; package com.yaoyaozw.customer.vo.crowd;
import cn.hutool.core.util.ObjectUtil;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
...@@ -23,6 +24,9 @@ public class CrowdPackageListVO implements Serializable { ...@@ -23,6 +24,9 @@ public class CrowdPackageListVO implements Serializable {
@ApiModelProperty("人群包名称") @ApiModelProperty("人群包名称")
private String packageName; private String packageName;
@ApiModelProperty("人群包标签")
private String packageLabel;
@ApiModelProperty("人群包中的人数") @ApiModelProperty("人群包中的人数")
private Integer numOfCrowdInPackage; private Integer numOfCrowdInPackage;
...@@ -41,4 +45,10 @@ public class CrowdPackageListVO implements Serializable { ...@@ -41,4 +45,10 @@ public class CrowdPackageListVO implements Serializable {
@ApiModelProperty("修改人") @ApiModelProperty("修改人")
private String modifiedUser; private String modifiedUser;
public String getPackageLabel() {
if (ObjectUtil.isNull(this.packageLabel)) {
return null;
}
return packageLabel.replaceAll(",", "<br/>");
}
} }
package com.yaoyaozw.customer.vo.customer;
import lombok.Data;
import java.io.Serializable;
/**
* @author darker
* @date 2022/9/28 11:15
*/
@Data
public class CustomerDelayListVO implements Serializable {
private static final long serialVersionUID = -7050943048581039251L;
}
package com.yaoyaozw.customer.vo.customer;
import lombok.Data;
import java.io.Serializable;
/**
* @author darker
* @date 2022/9/28 11:15
*/
@Data
public class CustomerMessageListVO implements Serializable {
private static final long serialVersionUID = -8057791504394044052L;
}
...@@ -14,4 +14,14 @@ ...@@ -14,4 +14,14 @@
</if> </if>
</select> </select>
<select id="getSetupIdListFromStaticCondition" resultType="java.lang.Long">
select distinct id
from account_cost_setup
<where>
<foreach collection="expressList" item="express" separator=" and ">
${express}
</foreach>
</where>
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -20,7 +20,8 @@ ...@@ -20,7 +20,8 @@
cpm.id, cpm.package_name as packageName, cpm.id, cpm.package_name as packageName,
cpm.crowd_num as numOfCrowdInPackage, cpm.last_count_time as lastCountTime, cpm.crowd_num as numOfCrowdInPackage, cpm.last_count_time as lastCountTime,
cpm.create_time as createTime, cpm.modified_time as modifiedTime, cpm.create_time as createTime, cpm.modified_time as modifiedTime,
cau.nick_name as createUser, mau.nick_name as modifiedUser cau.nick_name as createUser, mau.nick_name as modifiedUser,
group_concat(concat('【', mat.operator_description, '】')) as packageLabel
from crowd_package_main cpm from crowd_package_main cpm
left join acl_user cau left join acl_user cau
...@@ -29,8 +30,13 @@ ...@@ -29,8 +30,13 @@
left join acl_user mau left join acl_user mau
on cpm.modified_user = mau.id on cpm.modified_user = mau.id
left join crowd_package_condition_match mat
on cpm.id = mat.package_id
where cpm.package_name is not null where cpm.package_name is not null
group by cpm.id
</select> </select>
<delete id="removeCondition"> <delete id="removeCondition">
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论