|
|
@ -1,6 +1,9 @@
|
|
|
|
package com.baiye.modules.distribute.service.impl;
|
|
|
|
package com.baiye.modules.distribute.service.impl;
|
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
|
|
|
|
|
import cn.hutool.poi.excel.ExcelReader;
|
|
|
|
|
|
|
|
import cn.hutool.poi.excel.ExcelUtil;
|
|
|
|
|
|
|
|
import com.baiye.constant.UploadTemplateHeadConstant;
|
|
|
|
import com.baiye.exception.BadRequestException;
|
|
|
|
import com.baiye.exception.BadRequestException;
|
|
|
|
import com.baiye.modules.distribute.entity.ClueRecordEntity;
|
|
|
|
import com.baiye.modules.distribute.entity.ClueRecordEntity;
|
|
|
|
import com.baiye.modules.distribute.entity.UserSecretKeyEntity;
|
|
|
|
import com.baiye.modules.distribute.entity.UserSecretKeyEntity;
|
|
|
@ -11,14 +14,21 @@ import com.baiye.security.util.SecurityUtils;
|
|
|
|
import com.baiye.system.properties.FileProperties;
|
|
|
|
import com.baiye.system.properties.FileProperties;
|
|
|
|
import com.baiye.util.AppUtils;
|
|
|
|
import com.baiye.util.AppUtils;
|
|
|
|
import com.baiye.util.FileUtil;
|
|
|
|
import com.baiye.util.FileUtil;
|
|
|
|
|
|
|
|
import com.baiye.util.RsaUtil;
|
|
|
|
import com.baiye.utils.ClueFileTestingUtil;
|
|
|
|
import com.baiye.utils.ClueFileTestingUtil;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
|
|
|
|
|
|
import java.io.File;
|
|
|
|
import java.io.File;
|
|
|
|
|
|
|
|
import java.io.FileInputStream;
|
|
|
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
|
|
|
import java.io.InputStream;
|
|
|
|
|
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
|
|
|
|
|
import java.security.KeyPair;
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.*;
|
|
|
|
|
|
|
|
|
|
|
@ -52,6 +62,21 @@ public class ClueFileServiceImpl implements ClueFileService {
|
|
|
|
clueRecordEntity.setTaskId(taskId);
|
|
|
|
clueRecordEntity.setTaskId(taskId);
|
|
|
|
clueRecordEntity.setOldFileName(multipartFile.getOriginalFilename());
|
|
|
|
clueRecordEntity.setOldFileName(multipartFile.getOriginalFilename());
|
|
|
|
clueRecordEntity.setUrl(Objects.requireNonNull(file).getPath());
|
|
|
|
clueRecordEntity.setUrl(Objects.requireNonNull(file).getPath());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取文件中的来源 null为为止
|
|
|
|
|
|
|
|
InputStream inputStream;
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
inputStream = new FileInputStream(file);
|
|
|
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
|
|
|
throw new BadRequestException("读取文件错误");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
ExcelReader reader = ExcelUtil.getReader(inputStream);
|
|
|
|
|
|
|
|
List<Object> readRow = reader.readRow(1);
|
|
|
|
|
|
|
|
int index = excelHeadList.indexOf(UploadTemplateHeadConstant.HEAD_ORIGIN);
|
|
|
|
|
|
|
|
String channelStr = (String) readRow.get(index);
|
|
|
|
|
|
|
|
if (StringUtils.isBlank(channelStr)) channelStr = "未知";
|
|
|
|
|
|
|
|
clueRecordEntity.setChannelType(SecurityUtils.getUser().getUsername() + "-" + channelStr);
|
|
|
|
|
|
|
|
clueRecordEntity.setChannelIdentifying(channelStr);
|
|
|
|
clueRecordService.save(clueRecordEntity);
|
|
|
|
clueRecordService.save(clueRecordEntity);
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, Object> returnMap = new HashMap<>();
|
|
|
|
Map<String, Object> returnMap = new HashMap<>();
|
|
|
@ -61,34 +86,43 @@ public class ClueFileServiceImpl implements ClueFileService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public String generateSecretKey() {
|
|
|
|
public Map<String, Object> generateSecretKey() {
|
|
|
|
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
UserSecretKeyEntity entity = userSecretKeyMapper.selectOne(new LambdaQueryWrapper<UserSecretKeyEntity>().eq(UserSecretKeyEntity::getCreateBy, SecurityUtils.getCurrentUserId()));
|
|
|
|
UserSecretKeyEntity entity = userSecretKeyMapper.selectOne(new LambdaQueryWrapper<UserSecretKeyEntity>().eq(UserSecretKeyEntity::getCreateBy, SecurityUtils.getCurrentUserId()));
|
|
|
|
if (entity != null && entity.getId() != null) {
|
|
|
|
if (entity != null && entity.getId() != null) {
|
|
|
|
return entity.getPublicKey();
|
|
|
|
map.put("appKey", entity.getAppKey());
|
|
|
|
|
|
|
|
map.put("publicKey", entity.getPublicKey());
|
|
|
|
|
|
|
|
return map;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
// 生成秘钥对
|
|
|
|
// 生成秘钥对
|
|
|
|
// KeyPair keyPair = RsaUtil.getKeyPair();
|
|
|
|
KeyPair keyPair = RsaUtil.getKeyPair();
|
|
|
|
// String privateKey = new String(Base64.getEncoder().encode(keyPair.getPrivate().getEncoded()),
|
|
|
|
String privateKey = new String(Base64.getEncoder().encode(keyPair.getPrivate().getEncoded()),
|
|
|
|
// StandardCharsets.UTF_8);
|
|
|
|
StandardCharsets.UTF_8);
|
|
|
|
// String publicKey = new String(Base64.getEncoder().encode(keyPair.getPublic().getEncoded()),
|
|
|
|
String publicKey = new String(Base64.getEncoder().encode(keyPair.getPublic().getEncoded()),
|
|
|
|
// StandardCharsets.UTF_8);
|
|
|
|
StandardCharsets.UTF_8);
|
|
|
|
|
|
|
|
|
|
|
|
String appId = AppUtils.getAppId();
|
|
|
|
String appId = AppUtils.getAppId();
|
|
|
|
UserSecretKeyEntity userSecretKeyEntity = userSecretKeyMapper.selectOne(new LambdaQueryWrapper<UserSecretKeyEntity>().eq(UserSecretKeyEntity::getPublicKey, appId));
|
|
|
|
|
|
|
|
while (true){
|
|
|
|
while (true){
|
|
|
|
|
|
|
|
UserSecretKeyEntity userSecretKeyEntity = userSecretKeyMapper.selectOne(new LambdaQueryWrapper<UserSecretKeyEntity>().eq(UserSecretKeyEntity::getPublicKey, appId));
|
|
|
|
|
|
|
|
// 插入数据,返回数据
|
|
|
|
if (userSecretKeyEntity == null || userSecretKeyEntity.getId() == null){
|
|
|
|
if (userSecretKeyEntity == null || userSecretKeyEntity.getId() == null){
|
|
|
|
String appSecret = AppUtils.getAppSecret(appId);
|
|
|
|
|
|
|
|
// 插入数据
|
|
|
|
|
|
|
|
UserSecretKeyEntity keyEntity = new UserSecretKeyEntity();
|
|
|
|
UserSecretKeyEntity keyEntity = new UserSecretKeyEntity();
|
|
|
|
keyEntity.setPublicKey(appId);
|
|
|
|
keyEntity.setAppKey(appId);
|
|
|
|
keyEntity.setPrivateKey(appSecret);
|
|
|
|
keyEntity.setPublicKey(publicKey);
|
|
|
|
|
|
|
|
keyEntity.setPrivateKey(privateKey);
|
|
|
|
userSecretKeyMapper.insert(keyEntity);
|
|
|
|
userSecretKeyMapper.insert(keyEntity);
|
|
|
|
|
|
|
|
|
|
|
|
return appId;
|
|
|
|
map.put("appKey", appId);
|
|
|
|
|
|
|
|
map.put("publicKey", publicKey);
|
|
|
|
|
|
|
|
return map;
|
|
|
|
}else {
|
|
|
|
}else {
|
|
|
|
// 重复的appId,重新生成
|
|
|
|
// 重复的appId,重新生成
|
|
|
|
appId = AppUtils.getAppId();
|
|
|
|
appId = AppUtils.getAppId();
|
|
|
|
|
|
|
|
privateKey = new String(Base64.getEncoder().encode(keyPair.getPrivate().getEncoded()),
|
|
|
|
|
|
|
|
StandardCharsets.UTF_8);
|
|
|
|
|
|
|
|
publicKey = new String(Base64.getEncoder().encode(keyPair.getPublic().getEncoded()),
|
|
|
|
|
|
|
|
StandardCharsets.UTF_8);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
} catch (Exception e) {
|
|
|
|