提交 b6300744 作者: 沈振路

人群包配置、接口

上级 0a70a046
package com.yaoyaozw.customer.constants;
/**
* @author darker
* @date 2022/9/20 14:54
*/
public class CrowdPackageCommonConstant {
public static final String CANT_FIND_ITEM = "无法获取该数据, 请刷新后重试";
public static final String CANT_FIND_DATA_BASE_CONFIG = "无法获取条件所属数据库服务, 请检查配置";
public static final String UNKNOWN_DATA_BASE_CONFIG = "未知数据库服务配置";
public static final String KANBAN_DATA_BASE = "kanban";
public static final String MATERIAL_DATA_BASE = "material";
}
......@@ -3,15 +3,18 @@ package com.yaoyaozw.customer.controller;
import com.yaoyaozw.customer.common.BaseResult;
import com.yaoyaozw.customer.common.GenericsResult;
import com.yaoyaozw.customer.dto.crowd.CrowdPackageQueryDTO;
import com.yaoyaozw.customer.dto.crowd.CrowdPackageSaveDTO;
import com.yaoyaozw.customer.dto.crowd.CrowdPackageConditionDTO;
import com.yaoyaozw.customer.service.CrowdPackageService;
import com.yaoyaozw.customer.vo.CommonOptionResponseVO;
import com.yaoyaozw.customer.vo.crowd.CrowdPackageCommonIdVO;
import com.yaoyaozw.customer.vo.crowd.CrowdPackageConditionVO;
import com.yaoyaozw.customer.vo.crowd.CrowdPackageDetailVO;
import com.yaoyaozw.customer.vo.crowd.CrowdPackageListVO;
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;
/**
......@@ -27,16 +30,16 @@ public class CrowdPackageController {
private CrowdPackageService crowdPackageService;
@ApiOperation("新增")
@PostMapping("/insert")
public BaseResult insertCrowdPackage(@RequestBody CrowdPackageSaveDTO saveDto) {
return crowdPackageService.insertCrowdPackage(saveDto);
@ApiOperation("新增人群包")
@GetMapping("/insertPackage/{name}")
public GenericsResult<CrowdPackageCommonIdVO> insertCrowdPackage(@PathVariable("name")String name) {
return crowdPackageService.insertCrowdPackage(name);
}
@ApiOperation("编辑")
@PostMapping("/edit")
public BaseResult updateCrowdPackage(@RequestBody CrowdPackageSaveDTO saveDto) {
return crowdPackageService.updateCrowdPackage(saveDto);
@ApiOperation("新增包内条件")
@PostMapping("/insertCondition")
public GenericsResult<CrowdPackageCommonIdVO> insertCondition(@RequestBody CrowdPackageConditionDTO conditionDto) {
return crowdPackageService.insertCondition(conditionDto);
}
@ApiOperation("查询")
......@@ -45,12 +48,36 @@ public class CrowdPackageController {
return crowdPackageService.pageList(queryDto);
}
@ApiOperation("删除")
@GetMapping("/remove/{id}")
@ApiOperation("删除人群包")
@GetMapping("/removePackage/{id}")
public BaseResult removeCrowdPackage(@PathVariable("id") Long id) {
return crowdPackageService.removeCrowdPackage(id);
}
@ApiOperation("删除包内条件")
@GetMapping("/removePackage/{linkedId}")
public BaseResult removeCondition(@PathVariable("linkedId") Long linkedId) {
return crowdPackageService.removeCondition(linkedId);
}
@ApiOperation("获取已配置的人群包条件")
@GetMapping("/getPackageInfo/{id}")
public GenericsResult<CrowdPackageDetailVO> getPackageInfo(@PathVariable("id") Long id) {
return crowdPackageService.getPackageInfo(id);
}
@ApiOperation("获取所有条件下拉框")
@GetMapping("/getAllConditions")
public GenericsResult<List<CrowdPackageConditionVO>> getAllConditions() {
return crowdPackageService.getAllConditions();
}
@ApiOperation("获取条件的可选项")
@GetMapping("/getOptions/{conditionId}")
public GenericsResult<List<CommonOptionResponseVO>> getOptions(@PathVariable("conditionId") Long conditionId) {
return crowdPackageService.getOptions(conditionId);
}
}
package com.yaoyaozw.customer.dto.crowd;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
......@@ -9,11 +11,16 @@ import java.io.Serializable;
* @date 2022/9/15 14:19
*/
@Data
public class CrowdPackageSaveDTO implements Serializable {
private String packageName;
@ApiModel("人群包条件保存实体")
public class CrowdPackageConditionDTO implements Serializable {
@ApiModelProperty("条件Id")
private Long conditionId;
@ApiModelProperty("人群包主键")
private Long packageId;
@ApiModelProperty("设置的条件值")
private String conditionValue;
}
package com.yaoyaozw.customer.entity;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.springframework.data.annotation.Id;
/**
* 人群中包
*
* @author darker
* @date 2022/9/16 10:43
* @date 2022/09/16
*/
@Data
@TableName("crowd_package_main")
public class CrowdPackage implements Serializable {
/**
* 主键ID
*/
@Id
@TableId("id")
private Long id;
/**
* 人群包名称
*/
@TableField("package_name")
private String packageName;
/**
* 人群包用户人数
*/
@TableField("crowd_num")
private Integer crowdNum;
/**
* 人数最后统计时间
*/
@TableField("last_count_time")
private Date lastCountTime;
/**
* 创建时间
*/
@TableField("create_time")
private Date createTime;
/**
* 创建人
*/
@TableField("create_user")
private Long createUser;
/**
* 修改时间
*/
@TableField("modified_time")
private Date modifiedTime;
/**
* 修改人
*/
@TableField("modified_user")
private Long modifiedUser;
private static final long serialVersionUID = 1L;
}
package com.yaoyaozw.customer.entity;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.springframework.data.annotation.Id;
/**
* 人群包装条件
*
* @author darker
* @date 2022/09/20
*/
@Data
@TableName("crowd_package_condition")
public class CrowdPackageCondition implements Serializable {
/**
* 主键ID
*/
@TableId("id")
@Id
private Long id;
/**
* 条件值
*/
@TableField("condition_key")
private String conditionKey;
/**
* 条件名称
*/
@TableField("condition_name")
private String conditionName;
/**
* 条件类型
*/
@TableField("condition_type")
private String conditionType;
/**
* 条件选项的前端类型
*/
@TableField("front_type")
private String frontType;
/**
* 是否静态属性
*/
@TableField("is_static")
private Integer isStatic;
/**
* 选项所在数据库服务器
*/
@TableField("source_base_service")
private String sourceBaseService;
/**
* 选项所在表
*/
@TableField("source_table")
private String sourceTable;
/**
* 选项的key值对应字段
*/
@TableField("key_column")
private String keyColumn;
/**
* 选项的name对应字段
*/
@TableField("name_column")
private String nameColumn;
/**
* 选项查询时的额外条件
*/
@TableField("sql_factor")
private String sqlFactor;
private static final long serialVersionUID = 1L;
}
package com.yaoyaozw.customer.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.yaoyaozw.customer.entity.CrowdPackageCondition;
import com.yaoyaozw.customer.vo.CommonOptionResponseVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author darker
* @date 2022/9/16 15:23
......@@ -11,6 +16,12 @@ import org.springframework.stereotype.Repository;
@Repository
public interface KanbanCommonMapper {
Integer testCountUser();
/**
* 根据条件配置获取条件选项
*
* @param conditionItem 条件项
* @return {@link List}<{@link CommonOptionResponseVO}>
*/
List<CommonOptionResponseVO> getConditionOptionByConfig(@Param("conditionItem") CrowdPackageCondition conditionItem);
}
package com.yaoyaozw.customer.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yaoyaozw.customer.entity.CrowdPackageCondition;
import org.springframework.stereotype.Repository;
/**
* @author darker
* @date 2022/9/20 14:46
*/
@Repository
public interface MaterialCrowdPackageConditionMapper extends BaseMapper<CrowdPackageCondition> {
}
......@@ -3,8 +3,13 @@ package com.yaoyaozw.customer.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yaoyaozw.customer.entity.CrowdPackage;
import com.yaoyaozw.customer.entity.CrowdPackageCondition;
import com.yaoyaozw.customer.vo.CommonOptionResponseVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author darker
* @date 2022/9/16 10:44
......@@ -13,6 +18,12 @@ import org.springframework.stereotype.Repository;
@Repository
public interface MaterialCrowdPackageMapper extends BaseMapper<CrowdPackage> {
Integer testCountUser();
/**
* 根据条件配置获取条件选项
*
* @param conditionItem 条件项
* @return {@link List}<{@link CommonOptionResponseVO}>
*/
List<CommonOptionResponseVO> getConditionOptionByConfig(@Param("conditionItem") CrowdPackageCondition conditionItem);
}
package com.yaoyaozw.customer.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yaoyaozw.customer.entity.CrowdPackageCondition;
/**
* @author darker
* @date 2022/9/20 14:47
*/
public interface CrowdPackageConditionService extends IService<CrowdPackageCondition> {
}
......@@ -4,8 +4,12 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.yaoyaozw.customer.common.BaseResult;
import com.yaoyaozw.customer.common.GenericsResult;
import com.yaoyaozw.customer.dto.crowd.CrowdPackageQueryDTO;
import com.yaoyaozw.customer.dto.crowd.CrowdPackageSaveDTO;
import com.yaoyaozw.customer.dto.crowd.CrowdPackageConditionDTO;
import com.yaoyaozw.customer.entity.CrowdPackage;
import com.yaoyaozw.customer.vo.CommonOptionResponseVO;
import com.yaoyaozw.customer.vo.crowd.CrowdPackageCommonIdVO;
import com.yaoyaozw.customer.vo.crowd.CrowdPackageConditionVO;
import com.yaoyaozw.customer.vo.crowd.CrowdPackageDetailVO;
import com.yaoyaozw.customer.vo.crowd.CrowdPackageListVO;
import java.util.List;
......@@ -18,18 +22,19 @@ public interface CrowdPackageService extends IService<CrowdPackage> {
/**
* 插入人群包
*
* @param saveDto 保存dto
* @param name 人群包名
* @return {@link BaseResult}
*/
BaseResult insertCrowdPackage(CrowdPackageSaveDTO saveDto);
GenericsResult<CrowdPackageCommonIdVO> insertCrowdPackage(String name);
/**
* 人群更新包
* 新增人群包条件
*
* @param saveDto 保存dto
* @param conditionDto 条件dto
* @return {@link BaseResult}
*/
BaseResult updateCrowdPackage(CrowdPackageSaveDTO saveDto);
GenericsResult<CrowdPackageCommonIdVO> insertCondition(CrowdPackageConditionDTO conditionDto);
/**
* 页面列表
......@@ -46,4 +51,39 @@ public interface CrowdPackageService extends IService<CrowdPackage> {
* @return {@link BaseResult}
*/
BaseResult removeCrowdPackage(Long id);
/**
* 删除条件
*
* @param linkedId 人群包-条件 关联主键
* @return {@link BaseResult}
*/
BaseResult removeCondition(Long linkedId);
/**
* 得到包条件列表
*
* @param id id
* @return {@link GenericsResult}<{@link List}<{@link CrowdPackageConditionVO}>>
*/
GenericsResult<CrowdPackageDetailVO> getPackageInfo(Long id);
/**
* 得到所有条件
*
* @return {@link GenericsResult}<{@link List}<{@link CrowdPackageConditionVO}>>
*/
GenericsResult<List<CrowdPackageConditionVO>> getAllConditions();
/**
* 得到某个条件的可选项
*
* @param conditionId 状态标识
* @return {@link GenericsResult}<{@link List}<{@link CrowdPackageConditionVO}>>
*/
GenericsResult<List<CommonOptionResponseVO>> getOptions(Long conditionId);
}
package com.yaoyaozw.customer.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yaoyaozw.customer.entity.CrowdPackageCondition;
import com.yaoyaozw.customer.mapper.MaterialCrowdPackageConditionMapper;
import com.yaoyaozw.customer.service.CrowdPackageConditionService;
import org.springframework.stereotype.Service;
/**
* @author darker
* @date 2022/9/20 14:47
*/
@Service
public class CrowdPackageConditionServiceImpl extends ServiceImpl<MaterialCrowdPackageConditionMapper, CrowdPackageCondition> implements CrowdPackageConditionService {
}
package com.yaoyaozw.customer.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yaoyaozw.customer.common.BaseResult;
import com.yaoyaozw.customer.common.GenericsResult;
import com.yaoyaozw.customer.constants.CrowdPackageCommonConstant;
import com.yaoyaozw.customer.dto.crowd.CrowdPackageQueryDTO;
import com.yaoyaozw.customer.dto.crowd.CrowdPackageSaveDTO;
import com.yaoyaozw.customer.dto.crowd.CrowdPackageConditionDTO;
import com.yaoyaozw.customer.entity.CrowdPackage;
import com.yaoyaozw.customer.entity.CrowdPackageCondition;
import com.yaoyaozw.customer.mapper.KanbanCommonMapper;
import com.yaoyaozw.customer.mapper.MaterialCrowdPackageMapper;
import com.yaoyaozw.customer.service.CrowdPackageConditionService;
import com.yaoyaozw.customer.service.CrowdPackageService;
import com.yaoyaozw.customer.vo.CommonOptionResponseVO;
import com.yaoyaozw.customer.vo.crowd.CrowdPackageCommonIdVO;
import com.yaoyaozw.customer.vo.crowd.CrowdPackageConditionVO;
import com.yaoyaozw.customer.vo.crowd.CrowdPackageDetailVO;
import com.yaoyaozw.customer.vo.crowd.CrowdPackageListVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author darker
......@@ -23,24 +33,79 @@ import java.util.List;
@Service
public class CrowdPackageServiceImpl extends ServiceImpl<MaterialCrowdPackageMapper, CrowdPackage> implements CrowdPackageService {
@Autowired
private CrowdPackageConditionService conditionService;
@Autowired
private KanbanCommonMapper kanbanCommonMapper;
@Override
public BaseResult insertCrowdPackage(CrowdPackageSaveDTO saveDto) {
return new BaseResult().success();
public GenericsResult<CrowdPackageCommonIdVO> insertCrowdPackage(String name) {
return null;
}
@Override
public BaseResult updateCrowdPackage(CrowdPackageSaveDTO saveDto) {
return new BaseResult().success();
public GenericsResult<CrowdPackageCommonIdVO> insertCondition(CrowdPackageConditionDTO conditionDto) {
return null;
}
@Override
public GenericsResult<List<CrowdPackageListVO>> pageList(CrowdPackageQueryDTO queryDto) {
return new GenericsResult<>(new ArrayList<>());
return null;
}
@Override
public BaseResult removeCrowdPackage(Long id) {
return new BaseResult().success();
return null;
}
@Override
public BaseResult removeCondition(Long linkedId) {
return null;
}
@Override
public GenericsResult<CrowdPackageDetailVO> getPackageInfo(Long id) {
return null;
}
@Override
public GenericsResult<List<CrowdPackageConditionVO>> getAllConditions() {
List<CrowdPackageCondition> conditionList = conditionService.list();
// 将结果转换成返回结果
List<CrowdPackageConditionVO> conditionVoList = conditionList.stream().map(item -> {
CrowdPackageConditionVO vo = new CrowdPackageConditionVO();
BeanUtils.copyProperties(item, vo);
return vo;
}).collect(Collectors.toList());
// 封装返回结果
return new GenericsResult<>(conditionVoList);
}
@Override
public GenericsResult<List<CommonOptionResponseVO>> getOptions(Long conditionId) {
// 查出该条件的数据
CrowdPackageCondition conditionItem = conditionService.getById(conditionId);
if (ObjectUtil.isNull(conditionItem)) {
return new GenericsResult<>(Boolean.FALSE, CrowdPackageCommonConstant.CANT_FIND_ITEM, null);
}
if (ObjectUtil.isNull(conditionItem.getSourceBaseService())) {
return new GenericsResult<>(Boolean.FALSE, CrowdPackageCommonConstant.CANT_FIND_DATA_BASE_CONFIG, null);
}
// 根据条件配置判断查询的数据库
List<CommonOptionResponseVO> result;
if (CrowdPackageCommonConstant.KANBAN_DATA_BASE.equals(conditionItem.getSourceBaseService())) {
// 是看板的数据源
result = kanbanCommonMapper.getConditionOptionByConfig(conditionItem);
} else if (CrowdPackageCommonConstant.MATERIAL_DATA_BASE.equals(conditionItem.getSourceBaseService())) {
// 是运营系统的数据源
result = baseMapper.getConditionOptionByConfig(conditionItem);
} else {
return new GenericsResult<>(Boolean.FALSE, CrowdPackageCommonConstant.UNKNOWN_DATA_BASE_CONFIG, null);
}
return new GenericsResult<>(result);
}
}
package com.yaoyaozw.customer.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @author darker
* @date 2022/9/19 17:32
*/
@Data
@ApiModel("下拉框选项返回实体")
public class CommonOptionResponseVO implements Serializable {
@ApiModelProperty("key值")
private String key;
@ApiModelProperty("选项名称")
private String name;
}
package com.yaoyaozw.customer.vo.crowd;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @author darker
* @date 2022/9/19 17:37
*/
@Data
@ApiModel("接口执行生成的主键")
public class CrowdPackageCommonIdVO implements Serializable {
@ApiModelProperty("人群包主键ID")
private Long packageId;
@ApiModelProperty("人群包与条件关联主键")
private Long linkedId;
}
package com.yaoyaozw.customer.vo.crowd;
import com.yaoyaozw.customer.vo.CommonOptionResponseVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author darker
* @date 2022/9/19 15:59
*/
@Data
@ApiModel("人群包条件回显实体")
public class CrowdPackageConditionVO implements Serializable {
@ApiModelProperty("人群包下的条件ID")
private Long id;
@ApiModelProperty("条件key")
private String ConditionKey;
@ApiModelProperty("条件名称")
private String conditionName;
@ApiModelProperty("条件类型")
private String conditionType;
@ApiModelProperty("条件在前端页面的类型")
private String frontType;
@ApiModelProperty("是否静态属性 0 - 否;1 - 是")
private Integer isStatic;
}
package com.yaoyaozw.customer.vo.crowd;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author darker
* @date 2022/9/19 17:44
*/
@Data
@ApiModel("人群包详情页回显实体")
public class CrowdPackageDetailVO implements Serializable {
@ApiModelProperty("人群包主键")
private Long packageId;
@ApiModelProperty("人群包名")
private String packageName;
@ApiModelProperty("已配置的人群包条件")
private List<CrowdPackageConditionVO> conditionList;
}
......@@ -2,7 +2,16 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.yaoyaozw.customer.mapper.KanbanCommonMapper">
<select id="testCountUser" resultType="java.lang.Integer">
select count(1) from cost_order_setup_group
<select id="getConditionOptionByConfig" resultType="com.yaoyaozw.customer.vo.CommonOptionResponseVO">
select
${conditionItem.keyColumn} as `key`,
${conditionItem.nameColumn} as `name`
from ${conditionItem.sourceTable}
<if test="conditionItem.sqlFactor != null ">
${conditionItem.sqlFactor}
</if>
</select>
</mapper>
\ No newline at end of file
......@@ -2,7 +2,17 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.yaoyaozw.customer.mapper.MaterialCrowdPackageMapper">
<select id="testCountUser" resultType="java.lang.Integer">
select count(1) from material_graphics_delay
<select id="getConditionOptionByConfig" resultType="com.yaoyaozw.customer.vo.CommonOptionResponseVO">
select
${conditionItem.keyColumn} as `key`,
${conditionItem.nameColumn} as `name`
from ${conditionItem.sourceTable}
<if test="conditionItem.sqlFactor != null ">
${conditionItem.sqlFactor}
</if>
</select>
</mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论