增加性别代码

master
bynt 1 year ago
parent 2961539269
commit 5ff82ea546

@ -1,5 +1,6 @@
package com.baiye.util;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
import cn.hutool.crypto.symmetric.SymmetricCrypto;
import lombok.extern.slf4j.Slf4j;
@ -7,6 +8,7 @@ import lombok.extern.slf4j.Slf4j;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.SecureRandom;
import java.util.Base64;
@ -27,6 +29,11 @@ public class AESUtils {
*/
private static final String ALGORITHM = "AES";
/**
* Key
*/
private static final String HEX = "0123456789ABCDEF";
/**
* RNG
*/
@ -134,9 +141,113 @@ public class AESUtils {
}
/**
* AES
*/
public static String dbEncrypt(String seed, String cleartext) {
byte[] rawKey = getRawKey(seed.getBytes());
byte[] result = encrypt(rawKey, cleartext.getBytes());
return toHex(result);
}
/**
* AES
*/
public static String dbDecrypt(String seed, String encrypted) {
try {
byte[] rawKey = getRawKey(seed.getBytes());
byte[] enc = toByte(encrypted);
byte[] result = decrypt(rawKey, enc);
return new String(result);
} catch (Exception e) {
return CharSequenceUtil.EMPTY;
}
}
private static byte[] getRawKey(byte[] seed) {
try {
KeyGenerator kgen = KeyGenerator.getInstance(ALGORITHM);
SecureRandom sr = SecureRandom.getInstance(RNG_ALGORITHM);
sr.setSeed(seed);
// 192 and 256 bits may not be available
kgen.init(256, sr);
SecretKey skey = kgen.generateKey();
return skey.getEncoded();
} catch (Exception e) {
return new byte[0];
}
}
private static byte[] encrypt(byte[] raw, byte[] clear) {
try {
SecretKeySpec skeySpec = new SecretKeySpec(raw, ALGORITHM);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
return cipher.doFinal(clear);
} catch (Exception e) {
return new byte[0];
}
}
private static byte[] decrypt(byte[] raw, byte[] encrypted) {
SecretKeySpec skeSpec = new SecretKeySpec(raw, ALGORITHM);
try {
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, skeSpec);
return cipher.doFinal(encrypted);
} catch (Exception e) {
return new byte[0];
}
}
public static String toHex(String txt) {
return toHex(txt.getBytes());
}
public static String fromHex(String hex) {
return new String(toByte(hex));
}
public static byte[] toByte(String hexString) {
int len = hexString.length() >> 1;
byte[] result = new byte[len];
for (int i = 0; i < len; i++) {
result[i] = Integer.valueOf(hexString.substring(2 * i, 2 * i + 2), 16).byteValue();
}
return result;
}
public static String toHex(byte[] buf) {
if (buf.length == 0) {
return CharSequenceUtil.EMPTY;
}
StringBuilder result = new StringBuilder(buf.length >> 1);
for (byte b : buf) {
appendHex(result, b);
}
return result.toString();
}
private static void appendHex(StringBuilder sb, byte b) {
sb.append(HEX.charAt((b >> 4) & 0x0f)).append(HEX.charAt(b & 0x0f));
}
public static void main(String[] args) {
// 密钥
String key = "park_%33229*711&";
// 要加密的字符串
String txt = "18876533241";
// 加密
String txt_1 = dbEncrypt(key, txt);
System.out.println(txt + "加密的内容为:" + txt_1);
System.out.println(txt_1 + "解密的内容为:" + dbDecrypt(key, txt_1));
System.out.println(AESUtils.encrypt("18876533241", "park_%33229*711&"));
System.out.println(AESUtils.encryptHex("18876533241", "park_%33229*711&"));
}
}

@ -11,7 +11,6 @@ import org.apache.commons.lang3.StringUtils;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* @author Enzo

@ -734,8 +734,8 @@ public class RedisUtils {
// 保存批次号
set(cacheType.concat(format), batch, DefaultNumberConstants.ONE_NUMBER, TimeUnit.DAYS);
String parameter = MailRequestEnum.find(cacheType).getType();
return parameter.concat(StrPool.UNDERLINE).
concat(format).concat(StrPool.UNDERLINE).concat(String.valueOf(batch));
return parameter.concat(StrPool.DASHED).
concat(format).concat(StrPool.DASHED).concat(String.valueOf(batch));
}
}

@ -1,5 +1,6 @@
package com.baiye.modules.platform.domain;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.model.entity.BaseClue;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -28,6 +29,11 @@ public class Clue extends BaseClue {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ApiModelProperty(value = "性别")
@Column(name = "gender")
private Integer gender = DefaultNumberConstants.ZERO_NUMBER;
@ApiModelProperty(value = "线索分配人")
@Transient
private Long memberId;

@ -27,7 +27,8 @@ public class DeliveryRecordServiceImpl implements DeliveryRecordService {
private final DeliveryRecordRepository deliveryRecordRepository;
@Override
public Long saveDeliveryRecord(String filePath, String taskName, Integer num, Long taskId, Long userId, Integer type, Integer exchangeType, Long downId) {
public Long saveDeliveryRecord(String filePath, String taskName,
Integer num, Long taskId, Long userId, Integer type, Integer exchangeType, Long downId) {
DeliveryRecord deliveryRecord = new DeliveryRecord();
deliveryRecord.setNum(num);
deliveryRecord.setType(type);

@ -111,7 +111,7 @@ public class DownRecordServiceImpl implements DownRecordService {
if (CollUtil.isNotEmpty(dtoList)) {
// 去除重复数据
List<ImeiDTO> dtoArrayList = Lists.newArrayList(Sets.newHashSet(dtoList));
if (dtoArrayList.size() < DefaultNumberConstants.ONE_HUNDRED) {
if (dtoArrayList.size() < DefaultNumberConstants.FIFTY) {
throw new BadRequestException(ResponseCode.SEND_MAIL_NUM_FRIEND.getDesc());
}
// 传输方式
@ -123,6 +123,7 @@ public class DownRecordServiceImpl implements DownRecordService {
String uuid = IdUtil.fastSimpleUUID();
String file = deliveryProperties.getFileUrl().concat(StrPool.SLASH).concat(uuid);
String filePath = deliveryProperties.getDmpDownPath().concat(uuid).concat(FileConstant.ZIP_FILE_SUB_NAME);
// 只保存文件地址
String zipPath = FileAndMailUtil.zipFileAndSendDMPMail(dtoArrayList, file, null, deliveryProperties, DefaultNumberConstants.THREE_NUMBER);
Long downId = this.createRecord(dtoArrayList.size(), "超级管理员", taskName, zipPath, filePath, DefaultNumberConstants.TWO_NUMBER);
for (List<ImeiDTO> list : partition) {

@ -161,7 +161,7 @@ public class TaskImeiServiceImpl implements TaskImeiService {
String zipPath = FileAndMailUtil.zipFileAndSendDMPMail
(filterList, file, taskImeiDTO.getBatchNo(), deliveryProperties, DefaultNumberConstants.TWO_NUMBER);
Long recordId = deliveryRecordService.saveDeliveryRecord(zipPath, taskImeiDTO.getBatchNo(), dtoList.size(),
null, (long) DefaultNumberConstants.ONE_NUMBER, DefaultNumberConstants.THREE_NUMBER, DefaultNumberConstants.TWO_NUMBER, null);
null, (long) DefaultNumberConstants.ONE_NUMBER, DefaultNumberConstants.THREE_NUMBER, DefaultNumberConstants.ONE_NUMBER, null);
// 缓存三天
redisUtils.set(CacheKey.UPLOAD_BATCH.concat(taskImeiDTO.getBatchNo()), recordId, DefaultNumberConstants.ONE_NUMBER, TimeUnit.DAYS);
}

@ -189,7 +189,7 @@ public class DeliveryBalanceTask {
String zipPath = FileAndMailUtil.zipFileAndSendDMPMail(toList, file, taskImeiName, deliveryProperties, DefaultNumberConstants.ONE_NUMBER);
// 保存发送记录
deliveryRecordService.saveDeliveryRecord(zipPath, taskImeiName,
taskImeiList.size(), taskId, userId, DefaultNumberConstants.ONE_NUMBER, DefaultNumberConstants.TWO_NUMBER, null);
taskImeiList.size(), taskId, userId, DefaultNumberConstants.ONE_NUMBER, DefaultNumberConstants.ONE_NUMBER, null);
// 批次修改状态
taskImeiService.updateBath(taskId, CharSequenceUtil.EMPTY, DefaultNumberConstants.ONE_NUMBER, minId, maxId);
}

@ -81,7 +81,5 @@ public class BaseClue implements Serializable {
private Integer isEncryption = 0;
@ApiModelProperty(value = "性别")
@Column(name = "gender")
private Integer gender = DefaultNumberConstants.ZERO_NUMBER;
}

@ -21,7 +21,6 @@ public class DeliveryProperties {
private String fileUrl;
@ApiModelProperty("公钥")
private String publicKey;

@ -1,11 +1,8 @@
package com.baiye.feign.fallback;
import com.baiye.feign.TaskImeiClient;
import com.baiye.module.entity.OceanEngineToken;
import org.springframework.http.ResponseEntity;
import java.util.List;
/**
* @author jt
*/

@ -2,7 +2,6 @@ package com.baiye.feign.fallback;
import com.baiye.feign.UserClient;
import com.baiye.model.dto.UserDto;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import java.util.Map;

@ -49,6 +49,6 @@ public interface ClueRepository extends JpaRepository<Clue, Long>, JpaSpecificat
* @return
*/
@Modifying
@Query(value = "UPDATE Clue set gender = ?1 where nid = ?2")
@Query(value = "update tb_clue set gender = ?2 where nid = ?1",nativeQuery = true)
Integer updateGenderByNid(String nid, Integer gender);
}

@ -1,5 +1,6 @@
package com.baiye.module.entity;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.model.entity.BaseClue;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@ -23,6 +24,7 @@ import lombok.Data;
@ApiModel(value = "Clue")
public class Clue extends BaseClue {
@Id
@ApiModelProperty(value = "线索表主键id自动递增")
@Column(name = "id")
@ -71,4 +73,9 @@ public class Clue extends BaseClue {
@ApiModelProperty(value = "投流信息")
private String castInfo;
@ApiModelProperty(value = "性别")
@Column(name = "gender")
private Integer gender = DefaultNumberConstants.ZERO_NUMBER;
}

@ -1,5 +1,6 @@
package com.baiye.module.entity;
import com.baiye.util.JpaConverterListJson;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
@ -10,6 +11,7 @@ import org.hibernate.annotations.UpdateTimestamp;
import javax.persistence.*;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.List;
/**
* @author Enzo
@ -44,6 +46,7 @@ public class DeliveryGender implements Serializable {
@Column(name = "type")
private Integer type;
@CreationTimestamp
@Column(name = "create_time", updatable = false)
private Timestamp createTime;
@ -52,5 +55,10 @@ public class DeliveryGender implements Serializable {
@Column(name = "update_time")
private Timestamp updateTime;
@Column(name = "task_num_str")
@ApiModelProperty(value = "tag")
@Convert(converter = JpaConverterListJson.class)
private List<String> taskNumStr;
}

@ -32,4 +32,11 @@ public interface GenderRecordService {
* @return
*/
Boolean saveDeliveryRecord(String taskImeiName, Integer num, Integer type);
/**
*
* @param taskName
* @return
*/
Boolean updateStatusByTaskName(DeliveryGender taskName);
}

@ -1124,7 +1124,8 @@ public class ClueServiceImpl implements ClueService {
// 判断是否包含数据
if (CollUtil.isNotEmpty(data.getResponseList())) {
phoneList = data.getResponseList().stream().map(String::valueOf).collect(Collectors.toList());
Integer integer = this.saveClueTalk(phoneList, tagList, taskId, userId, num, data.getDeptId(), DefaultNumberConstants.ONE_NUMBER);
Integer integer = this.saveClueTalk
(phoneList, tagList, taskId, userId, num, data.getDeptId(), DefaultNumberConstants.ONE_NUMBER);
saveNumber += integer;
}
}
@ -1224,6 +1225,7 @@ public class ClueServiceImpl implements ClueService {
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateGenderByZid(String nid, Integer gender) {
return clueRepository.updateGenderByNid(nid, gender) > DefaultNumberConstants.ZERO_NUMBER;
}

@ -50,4 +50,8 @@ public class GenderRecordServiceImpl implements GenderRecordService {
return deliveryGenderRepository.save(deliveryRecord).getId() != null;
}
@Override
public Boolean updateStatusByTaskName(DeliveryGender taskName) {
return deliveryGenderRepository.save(taskName).getId() != null;
}
}

@ -72,7 +72,7 @@ public class UploadFileServiceImpl implements UploadFileService {
int lastIndexOf = name.lastIndexOf(".");
String nameStr = name.substring(lastIndexOf);
// 校验文件后缀名
if (!((nameStr.equals(".xlsx") || nameStr.equals(".xls")))) {
if (!(nameStr.equals(".xlsx") || nameStr.equals(".xls"))) {
throw new BadRequestException("文件格式错误! 请上传xlsx、xls格式");
}
// 检测文件的内容格式

@ -69,16 +69,16 @@ public class GenderConversionTask {
Long lastId = list.get(list.size() - DefaultNumberConstants.ONE_NUMBER).getId();
// 去除重复并转换相应的格式
List<String> stringList = list.stream().map
(source -> AESUtils.encryptHex(AESUtils.decrypt(source.getNid(),
AdPlatFormConstants.AD_PLATFORM), AdPlatFormConstants.AES_PASSWORD))
(source -> AESUtils.dbEncrypt(AdPlatFormConstants.AES_PASSWORD, Objects.requireNonNull(AESUtils.decrypt(source.getNid(),
AdPlatFormConstants.AD_PLATFORM))))
.distinct().collect(Collectors.toList());
String taskImeiName = redisUtils.acquisitionBatch(MailRequestEnum.GG.getCacheName());
String file = fileUrl.concat(StrPool.SLASH).concat(taskImeiName);
// 压缩文件并发送
FileAndGenderUtil.zipFileAndSendGenderMail(stringList, file, taskImeiName, deliveryProperties);
clueService.updateGenderById(DefaultNumberConstants.THREE_NUMBER, firstId, lastId);
clueService.updateGenderById(DefaultNumberConstants.FOUR_NUMBER, firstId, lastId);
genderRecordService.saveDeliveryRecord(taskImeiName, list.size(), DefaultNumberConstants.ONE_NUMBER);
log.info("============== the save num as {} first id {} last id {} ================", list.size(), firstId, lastId);
log.info("============== the save num as {} first id {} last id {} ================", stringList.size(), firstId, lastId);
}
}
@ -89,8 +89,7 @@ public class GenderConversionTask {
public void receiveMail() {
// 获取邮件内容
List<Message> list = MailUtil.readMailByIMAP
(deliveryProperties.getEmailAddress(), deliveryProperties.getEmailPassword());
(deliveryProperties.getGenderEmailAddress(), deliveryProperties.getEmailPassword());
if (CollUtil.isNotEmpty(list)) {
for (Message message : list) {
// 获取未读的邮件内容 且与之对应
@ -103,9 +102,12 @@ public class GenderConversionTask {
}
// 设置十分钟缓存
redisUtils.set(taskName, taskName, DefaultNumberConstants.TEN_NUMBER, TimeUnit.MINUTES);
DeliveryGender byTaskName = genderRecordService.findByTaskName(taskName);
String substring = taskName.substring(DefaultNumberConstants.ZERO_NUMBER, taskName.indexOf(StrPool.DASHED));
DeliveryGender byTaskName = genderRecordService.findByTaskName(substring);
if (ObjectUtil.isNotNull(byTaskName)
&& byTaskName.getStatus() == DefaultNumberConstants.ZERO_NUMBER) {
&& !byTaskName.getTaskNumStr().contains(taskName)) {
List<String> taskNumStr = byTaskName.getTaskNumStr();
taskNumStr.add(taskName);
log.info("================ the gender mail taskName as {} ==============", taskName);
List<String> zidList = Lists.newArrayList();
List<String> genderList = Lists.newArrayList();
@ -125,22 +127,23 @@ public class GenderConversionTask {
CsvData data = reader.read(parseFile);
// csv通配
data.getRows().forEach(clue -> {
zidList.add(AESUtils.decryptStr
(clue.get(DefaultNumberConstants.ZERO_NUMBER), AdPlatFormConstants.AES_PASSWORD));
zidList.add(AESUtils.dbDecrypt
(AdPlatFormConstants.AES_PASSWORD, clue.get(DefaultNumberConstants.ZERO_NUMBER)));
genderList.add(clue.get(DefaultNumberConstants.ONE_NUMBER));
});
for (int i = 0; i < zidList.size(); i++) {
String genderType = genderList.get(i);
String letterToNum = ConversionUtil.letterToNum(zidList.get(i));
String letterToNum = zidList.get(i);
if (MobileUtil.checkPhone(letterToNum)) {
// 修改gender
clueService.updateGenderByZid(AESUtils.decrypt
clueService.updateGenderByZid(AESUtils.encrypt
(letterToNum, AdPlatFormConstants.AD_PLATFORM), ValidationUtil.isInteger(genderType)
? Integer.parseInt(genderType) + DefaultNumberConstants.ONE_NUMBER : DefaultNumberConstants.FIVE_NUMBER);
? Integer.parseInt(genderType) + DefaultNumberConstants.ONE_NUMBER : DefaultNumberConstants.FOUR_NUMBER);
}
}
genderRecordService.updateStatusByTaskName(DefaultNumberConstants.ONE_NUMBER, taskName);
byTaskName.setStatus(DefaultNumberConstants.ONE_NUMBER);
genderRecordService.updateStatusByTaskName(byTaskName);
}
}
}

@ -83,8 +83,13 @@ platform:
zipPassword: DB2022hjk213v1...
exchangePassword: DA2023xlb213v1.
fileUrl: /home/eladmin/mail
emailAddress: lambda0821@outlook.com
emailPassword: baiye123456789
emailAddress: ensoze@outlook.com
genderEmailAddress: ensoze2023@outlook.com
emailPassword: baiye2022
customerId: QISX0xz4l6fR3YL2sUNSpzM2
toEmailAddress: ensoze@outlook.com
toEmailAddress: lambda0821@outlook.com
toGenderEmailAddress: ggggod_2022@outlook.com
dmpDownPath: http://8.130.96.163:8001/dmp/down/
privateKey: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJi+nz0zudS+4Sh+SmTnRfzgJOBIEwlLlJhcRgUbInvFx03zUgdzOUrGsvD2OTPPssnY8dv+Zgz2kUSEDYaWWKUs+VAklVOo0sOxzRMaUfwHRBN3Eq9OkqibDerYf6WUdv1k1BJsXSIdTlz8m6rtVbPF2hz8x/kYyJFzhM2IKTITAgMBAAECgYAgTZAXvWy7lXLAwZSyKkce57hkxllgSd+vKTSVt9tfGcDAt4jNkoy3R7ZoR2ppjq9dCMh9ohuq+ipWtya1I+6zC5sflk9HI/rf+5bq3JRJvxq3EJYe5DlSjQitLUMRP6PQorHnZZj/bdqKgRvrulI8XtK5Fv9Cd4jhkbSZtzgpYQJBAOJu0nu4qJCqIYLCmFWDpRzi9cu8/TFCBLVDH0xhNi28JL6G8xOfdzxsQa8ZlLOxPwn56VbS3+Korq34WCOAG5cCQQCssI4I7dshlA7kXeurVSFvui1YV/7ofFOxRs019+V88tfwNby5TAS9YjX7AuvGkobjpBBNEkE0JExf69m6VBzlAkB5te4HuLNKx1gp7CVr2c43n7tVHynNf1n+gKzjJmGz5ayuiOVBx/aUkPAhiZOHnx9uYlnNZJ4ZPGhgdNwTgPnTAkB61pQSMe/AMOtu8ogjNck1CoAa6W0/vsBhx/VNQGsTuEJ2ciMuw65TcLrpNKi2daBR6XBXAnczOebCDKix7AcpAkEArrU+bx6GwR+UbgoNAl1KwFLrV50pasK7Mlp0BkHM0cz4BGB53O5ng+TJHzen03OgC9I1W1WFAYHj03lb84qM/w==
publicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYvp89M7nUvuEofkpk50X84CTgSBMJS5SYXEYFGyJ7xcdN81IHczlKxrLw9jkzz7LJ2PHb/mYM9pFEhA2GllilLPlQJJVTqNLDsc0TGlH8B0QTdxKvTpKomw3q2H+llHb9ZNQSbF0iHU5c/Juq7VWzxdoc/Mf5GMiRc4TNiCkyEwIDAQAB

Loading…
Cancel
Save