|
|
@ -2,10 +2,13 @@ package com.baiye.modules.distribute.service.impl;
|
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
import cn.hutool.core.convert.Convert;
|
|
|
|
import cn.hutool.core.convert.Convert;
|
|
|
|
|
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
|
import cn.hutool.json.JSONArray;
|
|
|
|
import cn.hutool.json.JSONArray;
|
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
|
|
|
|
import com.baiye.constant.DefaultNumberConstants;
|
|
|
|
import com.baiye.domain.PageParam;
|
|
|
|
import com.baiye.domain.PageParam;
|
|
|
|
import com.baiye.domain.PageResult;
|
|
|
|
import com.baiye.domain.PageResult;
|
|
|
|
|
|
|
|
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
|
|
|
import com.baiye.modules.distribute.converter.ClueConverter;
|
|
|
|
import com.baiye.modules.distribute.converter.ClueConverter;
|
|
|
|
import com.baiye.modules.distribute.dto.ClueDTO;
|
|
|
|
import com.baiye.modules.distribute.dto.ClueDTO;
|
|
|
|
import com.baiye.modules.distribute.entity.*;
|
|
|
|
import com.baiye.modules.distribute.entity.*;
|
|
|
@ -16,10 +19,11 @@ import com.baiye.modules.distribute.service.ClueService;
|
|
|
|
import com.baiye.modules.distribute.service.ClueStageService;
|
|
|
|
import com.baiye.modules.distribute.service.ClueStageService;
|
|
|
|
import com.baiye.modules.distribute.service.LabelOrganizeService;
|
|
|
|
import com.baiye.modules.distribute.service.LabelOrganizeService;
|
|
|
|
import com.baiye.modules.distribute.vo.ClueVO;
|
|
|
|
import com.baiye.modules.distribute.vo.ClueVO;
|
|
|
|
|
|
|
|
import com.baiye.notify.event.StationNotifyPushEvent;
|
|
|
|
|
|
|
|
import com.baiye.notify.model.domain.AnnouncementNotifyInfo;
|
|
|
|
import com.baiye.security.util.SecurityUtils;
|
|
|
|
import com.baiye.security.util.SecurityUtils;
|
|
|
|
import com.baiye.util.AESUtils;
|
|
|
|
import com.baiye.util.AESUtils;
|
|
|
|
import com.baiye.util.MobileUtil;
|
|
|
|
import com.baiye.util.MobileUtil;
|
|
|
|
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
|
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
|
|
|
|
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
@ -27,10 +31,15 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
import org.ballcat.security.properties.SecurityProperties;
|
|
|
|
import org.ballcat.security.properties.SecurityProperties;
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
|
|
|
import org.springframework.context.ApplicationContext;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.*;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
|
|
|
import java.util.Collections;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
|
|
@Slf4j
|
|
|
|
@Slf4j
|
|
|
@ -46,6 +55,15 @@ public class ClueServiceImpl extends ExtendServiceImpl<ClueMapper, ClueEntity> i
|
|
|
|
|
|
|
|
|
|
|
|
private final SecurityProperties securityProperties;
|
|
|
|
private final SecurityProperties securityProperties;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final ApplicationContext publisher;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Value("${snowflake.workerId}")
|
|
|
|
|
|
|
|
private int workerId;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Value("${snowflake.datacenterId}")
|
|
|
|
|
|
|
|
private int datacenterId;
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
public void clueFileUploadSaveAll(List<ClueEntity> clues) {
|
|
|
|
public void clueFileUploadSaveAll(List<ClueEntity> clues) {
|
|
|
@ -59,15 +77,16 @@ public class ClueServiceImpl extends ExtendServiceImpl<ClueMapper, ClueEntity> i
|
|
|
|
if (!bool) {
|
|
|
|
if (!bool) {
|
|
|
|
failClueList.add(clue);
|
|
|
|
failClueList.add(clue);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
clue.setIsNewClue(Boolean.TRUE);
|
|
|
|
clue.setNid(AESUtils.encrypt(clue.getNid(), securityProperties.getPasswordSecretKey()));
|
|
|
|
clue.setNid(AESUtils.encrypt(clue.getNid(), securityProperties.getPasswordSecretKey()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 去除手机号不符合条件的资源-插入数据
|
|
|
|
// 去除手机号不符合条件的资源-插入数据
|
|
|
|
clues = clues.stream()
|
|
|
|
clues = clues.stream()
|
|
|
|
.filter(item -> !failClueList.stream()
|
|
|
|
.filter(item -> !failClueList.stream()
|
|
|
|
.map(ClueEntity::getNid)
|
|
|
|
.map(ClueEntity::getNid)
|
|
|
|
.collect(Collectors.toList())
|
|
|
|
.collect(Collectors.toList())
|
|
|
|
.contains(item.getNid()))
|
|
|
|
.contains(item.getNid()))
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
if (CollUtil.isNotEmpty(clues))
|
|
|
|
if (CollUtil.isNotEmpty(clues))
|
|
|
|
baseMapper.insertBatchSomeColumn(clues);
|
|
|
|
baseMapper.insertBatchSomeColumn(clues);
|
|
|
|
|
|
|
|
|
|
|
@ -103,8 +122,7 @@ public class ClueServiceImpl extends ExtendServiceImpl<ClueMapper, ClueEntity> i
|
|
|
|
// StringBuilder stringBuilder = new StringBuilder(decryptNid);
|
|
|
|
// StringBuilder stringBuilder = new StringBuilder(decryptNid);
|
|
|
|
// String nid = stringBuilder.replace(3, 7, "****").toString();
|
|
|
|
// String nid = stringBuilder.replace(3, 7, "****").toString();
|
|
|
|
record.setNid(decryptNid);
|
|
|
|
record.setNid(decryptNid);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
else {
|
|
|
|
|
|
|
|
record.setNid("");
|
|
|
|
record.setNid("");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 转换标签
|
|
|
|
// 转换标签
|
|
|
@ -122,19 +140,19 @@ public class ClueServiceImpl extends ExtendServiceImpl<ClueMapper, ClueEntity> i
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public boolean update(ClueDTO clueDTO) {
|
|
|
|
public boolean update(ClueDTO clueDTO) {
|
|
|
|
ClueEntity clueEntity = ClueConverter.INSTANCE.dtoToPo(clueDTO);
|
|
|
|
ClueEntity clueEntity = ClueConverter.INSTANCE.dtoToPo(clueDTO);
|
|
|
|
|
|
|
|
clueEntity.setIsNewClue(Boolean.FALSE);
|
|
|
|
|
|
|
|
|
|
|
|
// 修改标签
|
|
|
|
// 修改标签
|
|
|
|
List<LabelEntity> clueLabelList = clueDTO.getClueLabelList();
|
|
|
|
List<LabelEntity> clueLabelList = clueDTO.getClueLabelList();
|
|
|
|
if (CollUtil.isNotEmpty(clueLabelList)) {
|
|
|
|
if (CollUtil.isNotEmpty(clueLabelList)) {
|
|
|
|
String result = clueLabelList.stream()
|
|
|
|
String result = clueLabelList.stream()
|
|
|
|
.map(LabelEntity::getId)
|
|
|
|
.map(LabelEntity::getId)
|
|
|
|
.map(Object::toString)
|
|
|
|
.map(Object::toString)
|
|
|
|
.collect(Collectors.joining(","));
|
|
|
|
.collect(Collectors.joining(","));
|
|
|
|
clueEntity.setClueLabel(result);
|
|
|
|
clueEntity.setClueLabel(result);
|
|
|
|
List<String> nameList = clueLabelList.stream().map(LabelEntity::getLabelName).collect(Collectors.toList());
|
|
|
|
List<String> nameList = clueLabelList.stream().map(LabelEntity::getLabelName).collect(Collectors.toList());
|
|
|
|
clueEntity.setClueLabelName(JSONUtil.toJsonStr(nameList));
|
|
|
|
clueEntity.setClueLabelName(JSONUtil.toJsonStr(nameList));
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
else {
|
|
|
|
|
|
|
|
// 修改标签为空
|
|
|
|
// 修改标签为空
|
|
|
|
LambdaUpdateWrapper<ClueEntity> updateWrapper = new LambdaUpdateWrapper<>();
|
|
|
|
LambdaUpdateWrapper<ClueEntity> updateWrapper = new LambdaUpdateWrapper<>();
|
|
|
|
updateWrapper.eq(ClueEntity::getClueId, clueDTO.getClueId());
|
|
|
|
updateWrapper.eq(ClueEntity::getClueId, clueDTO.getClueId());
|
|
|
@ -154,7 +172,7 @@ public class ClueServiceImpl extends ExtendServiceImpl<ClueMapper, ClueEntity> i
|
|
|
|
ClueEntity clueEntity = baseMapper.selectById(clueId);
|
|
|
|
ClueEntity clueEntity = baseMapper.selectById(clueId);
|
|
|
|
clueEntity.setNid(AESUtils.decrypt(clueEntity.getNid(), securityProperties.getPasswordSecretKey()));
|
|
|
|
clueEntity.setNid(AESUtils.decrypt(clueEntity.getNid(), securityProperties.getPasswordSecretKey()));
|
|
|
|
BeanUtils.copyProperties(clueEntity, clueVO);
|
|
|
|
BeanUtils.copyProperties(clueEntity, clueVO);
|
|
|
|
|
|
|
|
clueVO.setClueId(clueEntity.getClueId().toString());
|
|
|
|
Long whichUserId = SecurityUtils.getWhichUserId();
|
|
|
|
Long whichUserId = SecurityUtils.getWhichUserId();
|
|
|
|
// 查询上级用户标签
|
|
|
|
// 查询上级用户标签
|
|
|
|
List<LabelOrganizeEntity> organizeEntities = labelOrganizeService.queryUserList(whichUserId);
|
|
|
|
List<LabelOrganizeEntity> organizeEntities = labelOrganizeService.queryUserList(whichUserId);
|
|
|
@ -166,9 +184,25 @@ public class ClueServiceImpl extends ExtendServiceImpl<ClueMapper, ClueEntity> i
|
|
|
|
return clueVO;
|
|
|
|
return clueVO;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public Boolean saveClueListByStoreInfo(List<ClueDTO> list) {
|
|
|
|
public Boolean saveClueListByStoreInfo(List<ClueDTO> list) {
|
|
|
|
List<ClueEntity> entityList = Convert.toList(ClueEntity.class, list);
|
|
|
|
List<ClueEntity> entityList = Convert.toList(ClueEntity.class, list);
|
|
|
|
|
|
|
|
AnnouncementNotifyInfo notifyInfo;
|
|
|
|
|
|
|
|
for (ClueDTO dto : list) {
|
|
|
|
|
|
|
|
// 雪花算法id
|
|
|
|
|
|
|
|
Long id = IdUtil.getSnowflake(workerId, datacenterId).nextId();
|
|
|
|
|
|
|
|
notifyInfo = new AnnouncementNotifyInfo();
|
|
|
|
|
|
|
|
notifyInfo.setId(id);
|
|
|
|
|
|
|
|
notifyInfo.setTitle("新消息通知");
|
|
|
|
|
|
|
|
notifyInfo.setMessageKey(dto.getClueId().toString());
|
|
|
|
|
|
|
|
notifyInfo.setContent("您有一条新线索请及时查收!");
|
|
|
|
|
|
|
|
notifyInfo.setCreateTime(LocalDateTime.now());
|
|
|
|
|
|
|
|
notifyInfo.setState(DefaultNumberConstants.ZERO_NUMBER);
|
|
|
|
|
|
|
|
notifyInfo.setMessageType(DefaultNumberConstants.ONE_NUMBER);
|
|
|
|
|
|
|
|
publisher.publishEvent(new StationNotifyPushEvent(notifyInfo, Collections.singletonList(dto.getAssignedBy())));
|
|
|
|
|
|
|
|
}
|
|
|
|
return SqlHelper.retBool(baseMapper.insertBatchSomeColumn(entityList));
|
|
|
|
return SqlHelper.retBool(baseMapper.insertBatchSomeColumn(entityList));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|