Merge remote-tracking branch 'origin/master'
commit
428496fda8
@ -0,0 +1,68 @@
|
||||
package com.baiye.modules.distribute.controller;
|
||||
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baiye.domain.PageParam;
|
||||
import com.baiye.domain.PageResult;
|
||||
import com.baiye.modules.distribute.dto.DirectClueDTO;
|
||||
import com.baiye.modules.distribute.entity.DirectClueUserEntity;
|
||||
import com.baiye.modules.distribute.qo.DirectClueQo;
|
||||
import com.baiye.modules.distribute.service.DirectClueService;
|
||||
import com.baiye.modules.distribute.service.OceanEngineClueService;
|
||||
import com.baiye.modules.distribute.vo.DirectClueVO;
|
||||
import com.baiye.result.BaseResultCode;
|
||||
import com.baiye.result.R;
|
||||
import com.baiye.security.util.SecurityUtils;
|
||||
import com.baiye.validation.group.UpdateGroup;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@Tag(name = "直达线索")
|
||||
@RequestMapping("/directClue")
|
||||
public class DirectClueController {
|
||||
|
||||
private final DirectClueService directClueService;
|
||||
|
||||
private final OceanEngineClueService oceanEngineClueService;
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "分页查询资源")
|
||||
public R<PageResult<DirectClueVO>> getClueRecordPage(@Validated PageParam pageParam, DirectClueQo qo) {
|
||||
Long salesmanUserId = qo.getSalesmanUserId();
|
||||
Long distributeUserId = qo.getDistributeUserId();
|
||||
if (salesmanUserId == null && distributeUserId == null) qo.setCreateBy(SecurityUtils.getCurrentUserId());
|
||||
else qo.setCreateBy(SecurityUtils.getWhichUserId());
|
||||
|
||||
return R.ok(directClueService.queryPage(pageParam, qo));
|
||||
}
|
||||
|
||||
@PostMapping("/update")
|
||||
@Operation(summary = "修改", description = "修改")
|
||||
public R<Object> update(@Validated({UpdateGroup.class}) @RequestBody DirectClueDTO directClueDTO) {
|
||||
return directClueService.update(directClueDTO) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "修改失败");
|
||||
}
|
||||
|
||||
@PostMapping("/distribute")
|
||||
@Operation(summary = "分发员分发")
|
||||
public R<Object> distribute(@Valid @RequestBody List<DirectClueUserEntity> directClueUserList) {
|
||||
return R.ok(directClueService.distribute(directClueUserList));
|
||||
}
|
||||
|
||||
@GetMapping("/test")
|
||||
@Operation(summary = "分页查询资源")
|
||||
public R<Object> test() {
|
||||
DateTime date = DateUtil.parse("2023-11-02 00:00:00");
|
||||
DateTime date2 = DateUtil.parse("2023-11-03 23:00:00");
|
||||
oceanEngineClueService.getFeiYuSource(date, date2);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package com.baiye.modules.distribute.converter;
|
||||
|
||||
import com.baiye.modules.distribute.dto.DirectClueDTO;
|
||||
import com.baiye.modules.distribute.entity.DirectClueEntity;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
@Mapper
|
||||
public interface DirectClueConverter {
|
||||
|
||||
DirectClueConverter INSTANCE = Mappers.getMapper(DirectClueConverter.class);
|
||||
|
||||
/**
|
||||
* 修改DTO 转 PO
|
||||
* @param dto 修改DTO
|
||||
* @return ClueEntity PO
|
||||
*/
|
||||
DirectClueEntity dtoToPo(DirectClueDTO dto);
|
||||
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package com.baiye.modules.distribute.dto;
|
||||
|
||||
import com.baiye.validation.group.UpdateGroup;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class DirectClueDTO {
|
||||
|
||||
@Schema(title = "ID")
|
||||
@NotNull(message = "ID不能为空", groups = { UpdateGroup.class })
|
||||
private Long directClueId;
|
||||
|
||||
@Schema(title = "有效状态 0:有效 1:无效")
|
||||
private Integer effectiveStatus;
|
||||
|
||||
@Schema(title = "标签")
|
||||
private List<String> clueLabel;
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package com.baiye.modules.distribute.dto;
|
||||
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author wjt
|
||||
* @date 2023/11/10
|
||||
*/
|
||||
@Data
|
||||
public class OceanEngineResponseDTO {
|
||||
private Object data;
|
||||
|
||||
@JsonProperty("code")
|
||||
private Integer code;
|
||||
|
||||
@JsonProperty("message")
|
||||
private String message;
|
||||
|
||||
@JsonProperty("request_id")
|
||||
private String requestId = CharSequenceUtil.EMPTY;
|
||||
}
|
@ -0,0 +1,70 @@
|
||||
package com.baiye.modules.distribute.entity;
|
||||
|
||||
import com.baiye.entity.BaseEntity;
|
||||
import com.baiye.extend.mybatis.plus.alias.TableAlias;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@TableName("tb_direct_clue")
|
||||
@TableAlias("dc")
|
||||
@Schema(title = "直达线索表")
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class DirectClueEntity extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId
|
||||
@Schema(title = "直达线索ID")
|
||||
private Long directClueId;
|
||||
|
||||
@Schema(title = "编号")
|
||||
private String batchNo;
|
||||
|
||||
@Schema(title = "客户名称")
|
||||
private String customName;
|
||||
|
||||
@Schema(title = "nid")
|
||||
private String nid;
|
||||
|
||||
@Schema(title = "来源 0:巨量")
|
||||
private Integer originType;
|
||||
|
||||
@Schema(title = "有效状态 0:有效 1:无效")
|
||||
private Integer effectiveStatus;
|
||||
|
||||
@Schema(title = "资源标签")
|
||||
private String clueLabelName;
|
||||
|
||||
@Schema(title = "分发状态 0:未分发 1:已分发")
|
||||
private Integer distributeType;
|
||||
|
||||
@Schema(title = "分发日期")
|
||||
private LocalDateTime distributeDate;
|
||||
|
||||
@Schema(title = "资源分发的分发员用户ID")
|
||||
private Long distributeUserId;
|
||||
|
||||
@Schema(title = "其它线索信息")
|
||||
private String otherClue;
|
||||
|
||||
public DirectClueEntity(String batchNo, String customName, String nid, Integer originType, Integer effectiveStatus, Integer distributeType, LocalDateTime distributeDate, String otherClue) {
|
||||
this.batchNo = batchNo;
|
||||
this.customName = customName;
|
||||
this.nid = nid;
|
||||
this.originType = originType;
|
||||
this.effectiveStatus = effectiveStatus;
|
||||
this.distributeType = distributeType;
|
||||
this.distributeDate = distributeDate;
|
||||
this.otherClue = otherClue;
|
||||
}
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
package com.baiye.modules.distribute.entity;
|
||||
|
||||
import com.baiye.validation.group.CreateGroup;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@TableName("tb_direct_clue_user")
|
||||
@Schema(title = "直达线索表")
|
||||
public class DirectClueUserEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId
|
||||
@Schema(title = "直达线索用户关联表ID")
|
||||
private Long id;
|
||||
|
||||
@Schema(title = "线索ID")
|
||||
@NotNull(message = "线索不能为空", groups = CreateGroup.class)
|
||||
private Long clueId;
|
||||
|
||||
@Schema(title = "用户ID")
|
||||
@NotNull(message = "用户不能为空", groups = CreateGroup.class)
|
||||
private Long userId;
|
||||
|
||||
@Schema(title = "用户名")
|
||||
private String userName;
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package com.baiye.modules.distribute.mapper;
|
||||
|
||||
import com.baiye.domain.PageParam;
|
||||
import com.baiye.domain.PageResult;
|
||||
import com.baiye.extend.mybatis.plus.conditions.query.LambdaAliasQueryWrapperX;
|
||||
import com.baiye.extend.mybatis.plus.mapper.ExtendMapper;
|
||||
import com.baiye.extend.mybatis.plus.toolkit.WrappersX;
|
||||
import com.baiye.modules.distribute.entity.DirectClueEntity;
|
||||
import com.baiye.modules.distribute.qo.DirectClueQo;
|
||||
import com.baiye.modules.distribute.vo.DirectClueVO;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
public interface DirectClueMapper extends ExtendMapper<DirectClueEntity> {
|
||||
|
||||
default PageResult<DirectClueVO> queryPage(PageParam pageParam, DirectClueQo qo) {
|
||||
IPage<DirectClueVO> page = this.prodPage(pageParam);
|
||||
|
||||
LambdaAliasQueryWrapperX<DirectClueEntity> wrapperX = WrappersX.lambdaAliasQueryX(DirectClueEntity.class);
|
||||
wrapperX.eqIfPresent(DirectClueEntity::getCreateBy, qo.getCreateBy())
|
||||
.eqIfPresent(DirectClueEntity::getDistributeUserId, qo.getDistributeUserId())
|
||||
.likeIfPresent(DirectClueEntity::getCustomName, qo.getCustomName())
|
||||
.eqIfPresent(DirectClueEntity::getOriginType, qo.getOriginType())
|
||||
.eqIfPresent(DirectClueEntity::getEffectiveStatus, qo.getEffectiveStatus())
|
||||
.eqIfPresent(DirectClueEntity::getDistributeType, qo.getDistributeType());
|
||||
|
||||
if (qo.getSalesmanUserId() != null){
|
||||
wrapperX.exists("SELECT 1 from tb_direct_clue_user dcu where dcu.user_id = "+ qo.getSalesmanUserId() +" and dc.direct_clue_id = dcu.clue_id");
|
||||
}
|
||||
if (StringUtils.isNotBlank(qo.getStartTime()) && StringUtils.isNotBlank(qo.getEndTime())) {
|
||||
wrapperX.between(DirectClueEntity::getDistributeDate, qo.getStartTime(), qo.getEndTime());
|
||||
}
|
||||
this.selectByPage(page, wrapperX, qo.getSalesmanUserId());
|
||||
return new PageResult<>(page.getRecords(), page.getTotal());
|
||||
}
|
||||
|
||||
IPage<DirectClueVO> selectByPage(IPage<DirectClueVO> page, @Param(Constants.WRAPPER) Wrapper<DirectClueEntity> wrapper, @Param("userId") Long userId);
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package com.baiye.modules.distribute.mapper;
|
||||
|
||||
import com.baiye.extend.mybatis.plus.mapper.ExtendMapper;
|
||||
import com.baiye.modules.distribute.entity.DirectClueUserEntity;
|
||||
|
||||
public interface DirectClueUserMapper extends ExtendMapper<DirectClueUserEntity> {
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
package com.baiye.modules.distribute.qo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DirectClueQo {
|
||||
|
||||
@Parameter(description = "开始时间")
|
||||
private String startTime;
|
||||
|
||||
@Parameter(description = "结束时间")
|
||||
private String endTime;
|
||||
|
||||
@Parameter(description = "创建人")
|
||||
private Long createBy;
|
||||
|
||||
@Schema(title = "资源分发的分发员用户ID")
|
||||
private Long distributeUserId;
|
||||
|
||||
@Schema(title = "资源分发的业务员用户ID")
|
||||
private Long salesmanUserId;
|
||||
|
||||
@Schema(title = "客户名称")
|
||||
private String customName;
|
||||
|
||||
@Schema(title = "来源 0:巨量")
|
||||
private Integer originType;
|
||||
|
||||
@Schema(title = "有效状态 0:有效 1:无效")
|
||||
private Integer effectiveStatus;
|
||||
|
||||
@Schema(title = "分发状态 0:未分发 1:已分发")
|
||||
private Integer distributeType;
|
||||
|
||||
@Schema(title = "属性")
|
||||
private String attribute;
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
package com.baiye.modules.distribute.service;
|
||||
|
||||
import com.baiye.domain.PageParam;
|
||||
import com.baiye.domain.PageResult;
|
||||
import com.baiye.extend.mybatis.plus.service.ExtendService;
|
||||
import com.baiye.modules.distribute.dto.DirectClueDTO;
|
||||
import com.baiye.modules.distribute.entity.DirectClueEntity;
|
||||
import com.baiye.modules.distribute.entity.DirectClueUserEntity;
|
||||
import com.baiye.modules.distribute.qo.DirectClueQo;
|
||||
import com.baiye.modules.distribute.vo.DirectClueVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface DirectClueService extends ExtendService<DirectClueEntity> {
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
*/
|
||||
PageResult<DirectClueVO> queryPage(PageParam pageParam, DirectClueQo qo);
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
boolean update(DirectClueDTO directClueDTO);
|
||||
|
||||
/**
|
||||
* 分配后插入资源
|
||||
*/
|
||||
void allocationClue(Long userId, List<DirectClueEntity> directClueEntityList);
|
||||
|
||||
/**
|
||||
* 分发员分发资源
|
||||
*/
|
||||
boolean distribute(List<DirectClueUserEntity> directClueUserList);
|
||||
}
|
@ -0,0 +1,135 @@
|
||||
package com.baiye.modules.distribute.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baiye.domain.PageParam;
|
||||
import com.baiye.domain.PageResult;
|
||||
import com.baiye.exception.BadRequestException;
|
||||
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
||||
import com.baiye.modules.distribute.converter.DirectClueConverter;
|
||||
import com.baiye.modules.distribute.dto.DirectClueDTO;
|
||||
import com.baiye.modules.distribute.entity.DirectClueEntity;
|
||||
import com.baiye.modules.distribute.entity.DirectClueUserEntity;
|
||||
import com.baiye.modules.distribute.mapper.DirectClueMapper;
|
||||
import com.baiye.modules.distribute.mapper.DirectClueUserMapper;
|
||||
import com.baiye.modules.distribute.qo.DirectClueQo;
|
||||
import com.baiye.modules.distribute.service.DirectClueService;
|
||||
import com.baiye.modules.distribute.vo.DirectClueVO;
|
||||
import com.baiye.system.enums.RoleCodeEnum;
|
||||
import com.baiye.system.model.dto.SysUserNameRoleDTO;
|
||||
import com.baiye.system.service.SysUserService;
|
||||
import com.baiye.util.AESUtils;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.ballcat.security.properties.SecurityProperties;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class DirectClueServiceImpl extends ExtendServiceImpl<DirectClueMapper, DirectClueEntity> implements DirectClueService {
|
||||
|
||||
private static final Map<Long, Integer> userIndexMap = new HashMap<>();
|
||||
|
||||
private final SysUserService sysUserService;
|
||||
|
||||
private final DirectClueUserMapper directClueUserMapper;
|
||||
|
||||
private final SecurityProperties securityProperties;
|
||||
|
||||
@Override
|
||||
public PageResult<DirectClueVO> queryPage(PageParam pageParam, DirectClueQo qo) {
|
||||
Long distributeUserId = qo.getDistributeUserId();
|
||||
|
||||
PageResult<DirectClueVO> pageResult = baseMapper.queryPage(pageParam, qo);
|
||||
List<DirectClueVO> recordList = pageResult.getRecords();
|
||||
if (CollUtil.isNotEmpty(recordList)){
|
||||
// 线索接收人映射信息
|
||||
Map<Long, List<DirectClueUserEntity>> map = new HashMap<>();
|
||||
if (qo.getDistributeUserId() != null){
|
||||
List<Long> ids = recordList.stream().map(DirectClueVO::getDirectClueId).collect(Collectors.toList());
|
||||
List<DirectClueUserEntity> userEntities = directClueUserMapper.selectList(new LambdaQueryWrapper<DirectClueUserEntity>().in(DirectClueUserEntity::getClueId, ids));
|
||||
map = userEntities.stream().collect(Collectors.groupingBy(DirectClueUserEntity::getClueId));
|
||||
}
|
||||
for (DirectClueVO directClueVO : recordList) {
|
||||
// 手机号解密 显示位数
|
||||
String decryptNid = AESUtils.decrypt(directClueVO.getNid(), securityProperties.getPasswordSecretKey());
|
||||
if (StringUtils.isNotBlank(decryptNid) && distributeUserId != null) {
|
||||
StringBuilder stringBuilder = new StringBuilder(decryptNid);
|
||||
decryptNid = stringBuilder.replace(1, 9, "****").toString();
|
||||
}
|
||||
directClueVO.setNid(decryptNid);
|
||||
//标签类型转换
|
||||
String clueLabelName = directClueVO.getClueLabelName();
|
||||
if (StringUtils.isNotBlank(clueLabelName)){
|
||||
directClueVO.setClueLabelName("");
|
||||
directClueVO.setClueLabel(JSONUtil.toList(clueLabelName, String.class));
|
||||
}
|
||||
// 线索接收人
|
||||
if (qo.getDistributeUserId() != null && map.containsKey(directClueVO.getDirectClueId())){
|
||||
List<DirectClueUserEntity> directClueUserEntities = map.get(directClueVO.getDirectClueId());
|
||||
List<String> userNames = directClueUserEntities.stream().map(DirectClueUserEntity::getUserName).collect(Collectors.toList());
|
||||
directClueVO.setUserNameList(userNames);
|
||||
}
|
||||
// 其它线索信息转换
|
||||
if (StringUtils.isNotBlank(directClueVO.getOtherClue())){
|
||||
directClueVO.setOtherClueObj(JSONUtil.parseObj(directClueVO.getOtherClue()));
|
||||
directClueVO.setOtherClue("");
|
||||
}
|
||||
}
|
||||
}
|
||||
return pageResult;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean update(DirectClueDTO directClueDTO) {
|
||||
DirectClueEntity directClueEntity = DirectClueConverter.INSTANCE.dtoToPo(directClueDTO);
|
||||
|
||||
List<String> clueLabel = directClueDTO.getClueLabel();
|
||||
if (CollUtil.isNotEmpty(clueLabel)) {
|
||||
directClueEntity.setClueLabelName(JSONUtil.toJsonStr(clueLabel));
|
||||
}
|
||||
return SqlHelper.retBool(baseMapper.updateById(directClueEntity));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void allocationClue(Long userId, List<DirectClueEntity> directClueEntityList) {
|
||||
if (userId != null && CollUtil.isNotEmpty(directClueEntityList)) {
|
||||
List<SysUserNameRoleDTO> sysUserNameRoleDTOS = sysUserService.listByRoleCodeAndUserId(RoleCodeEnum.find(25L), userId);
|
||||
|
||||
List<Long> userIdList = sysUserNameRoleDTOS.stream().map(SysUserNameRoleDTO::getUserId).collect(Collectors.toList());
|
||||
int index = 0;
|
||||
if (userIndexMap.containsKey(userId)) index = userIndexMap.get(userId);
|
||||
for (DirectClueEntity directClueEntity : directClueEntityList) {
|
||||
directClueEntity.setDistributeUserId(userIdList.get(index));
|
||||
if (index < userIdList.size() - 1) index++;
|
||||
else index = 0;
|
||||
}
|
||||
userIndexMap.put(userId, index);
|
||||
|
||||
baseMapper.insertBatchSomeColumn(directClueEntityList);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean distribute(List<DirectClueUserEntity> directClueUserList) {
|
||||
Long clueId = directClueUserList.get(0).getClueId();
|
||||
DirectClueEntity clueEntity = baseMapper.selectById(clueId);
|
||||
if (clueEntity.getDistributeType() != 0) throw new BadRequestException("线索已分发");
|
||||
|
||||
clueEntity.setDistributeType(1);
|
||||
baseMapper.updateById(clueEntity);
|
||||
return SqlHelper.retBool(directClueUserMapper.insertBatchSomeColumn(directClueUserList));
|
||||
}
|
||||
}
|
@ -0,0 +1,56 @@
|
||||
package com.baiye.modules.distribute.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class DirectClueVO {
|
||||
|
||||
@Schema(title = "直达线索ID")
|
||||
private Long directClueId;
|
||||
|
||||
@Schema(title = "编号")
|
||||
private String batchNo;
|
||||
|
||||
@Schema(title = "客户名称")
|
||||
private String customName;
|
||||
|
||||
@Schema(title = "nid")
|
||||
private String nid;
|
||||
|
||||
@Schema(title = "来源 0:巨量")
|
||||
private Integer originType;
|
||||
|
||||
@Schema(title = "有效状态 0:有效 1:无效")
|
||||
private Integer effectiveStatus;
|
||||
|
||||
@Schema(title = "资源标签")
|
||||
private String clueLabelName;
|
||||
|
||||
@Schema(title = "分发状态 0:未分发 1:已分发")
|
||||
private Integer distributeType;
|
||||
|
||||
@Schema(title = "分发日期")
|
||||
private LocalDateTime distributeDate;
|
||||
|
||||
@Schema(title = "资源分发的分发员用户ID")
|
||||
private Long distributeUserId;
|
||||
|
||||
@Schema(title = "其它线索信息")
|
||||
private String otherClue;
|
||||
|
||||
@Schema(title = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(title = "标签")
|
||||
private List<String> clueLabel;
|
||||
|
||||
@Schema(title = "线索接收人用户名")
|
||||
private List<String> userNameList;
|
||||
|
||||
@Schema(title = "其它线索")
|
||||
private Object otherClueObj;
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.baiye.modules.distribute.mapper.DirectClueMapper">
|
||||
<sql id="Base_Alias_Column_List">
|
||||
dc.direct_clue_id,
|
||||
dc.batch_no,
|
||||
dc.nid,
|
||||
dc.custom_name,
|
||||
dc.origin_type,
|
||||
dc.effective_status,
|
||||
dc.clue_label_name,
|
||||
dc.distribute_type,
|
||||
dc.distribute_date,
|
||||
dc.distribute_user_id,
|
||||
dc.other_clue,
|
||||
dc.create_time
|
||||
</sql>
|
||||
|
||||
<select id="selectByPage" resultType="com.baiye.modules.distribute.vo.DirectClueVO">
|
||||
SELECT
|
||||
<include refid="Base_Alias_Column_List"/>
|
||||
FROM
|
||||
tb_direct_clue dc
|
||||
${ew.customSqlSegment}
|
||||
order by dc.create_time desc, dc.direct_clue_id desc
|
||||
</select>
|
||||
</mapper>
|
@ -0,0 +1,47 @@
|
||||
import com.baiye.AdminApplication;
|
||||
import com.baiye.modules.distribute.entity.DirectClueEntity;
|
||||
import com.baiye.modules.distribute.service.DirectClueService;
|
||||
import com.baiye.util.AESUtils;
|
||||
import org.ballcat.security.properties.SecurityProperties;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(classes = AdminApplication.class,
|
||||
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||
public class DirectClueTest {
|
||||
|
||||
@Resource
|
||||
private DirectClueService directClueService;
|
||||
@Resource
|
||||
private SecurityProperties securityProperties;
|
||||
|
||||
@Test
|
||||
public void test1(){
|
||||
List<DirectClueEntity> list = new ArrayList<>();
|
||||
for (int i = 0; i < 10; i++) {
|
||||
DirectClueEntity directClueEntity = new DirectClueEntity();
|
||||
directClueEntity.setCustomName("y" + i);
|
||||
String nid = "1346263987" + i;
|
||||
String phone = AESUtils.encrypt(nid, securityProperties.getPasswordSecretKey());
|
||||
directClueEntity.setNid(phone);
|
||||
directClueEntity.setEffectiveStatus(0);
|
||||
directClueEntity.setDistributeType(0);
|
||||
Date date = new Date();
|
||||
LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
|
||||
directClueEntity.setDistributeDate(localDateTime);
|
||||
directClueEntity.setCreateBy(182L);
|
||||
list.add(directClueEntity);
|
||||
}
|
||||
directClueService.allocationClue(182L, list);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue