增加下载链接

master
bynt 2 years ago
parent 088fcdf075
commit 19940baebf

@ -35,4 +35,8 @@ public class DeliveryProperties {
@ApiModelProperty("回调地址")
private String responseUrl;
@ApiModelProperty("dmp下载地址")
private String dmpDownPath;
}

@ -99,6 +99,10 @@ public class Company extends BaseEntity implements Serializable {
@Column(name = "company_type")
private Integer companyType;
@ApiModelProperty("dmp上传数量")
@Column(name = "dmp_limit_num")
private Integer dmpLimitNum;
@ApiModelProperty("授权状态")
@Column(name = "authorization_state")

@ -0,0 +1,60 @@
package com.baiye.modules.system.domain;
import com.baiye.model.base.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import java.io.Serializable;
/**
* @author Enzo
* @date : 2022/11/17
*/
@Entity
@Getter
@Setter
@Table(name="tb_down_record")
public class DownRecord extends BaseEntity implements Serializable {
private static final long serialVersionUID = -138769395974456800L;
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@ApiModelProperty(value = "ID", hidden = true)
private Long id;
@Column(name = "status")
@ApiModelProperty(value = "下载状态")
private Integer status;
@Column(name = "task_id")
@ApiModelProperty(value = "任务id")
private Long taskId;
@Column(name = "user_id")
@ApiModelProperty(value = "用户id")
private Long userId;
@Column(name = "company_id")
@ApiModelProperty(value = "公司id")
private Long companyId;
@Column(name = "company_name")
@ApiModelProperty(value = "公司名称")
private String companyName;
@Column(name = "down_url")
@ApiModelProperty(value = "下载链接")
private String downUrl;
@Column(name = "task_name")
@ApiModelProperty(value = "任务名称")
private String taskName;
}

@ -3,8 +3,6 @@ package com.baiye.modules.system.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import java.util.Date;
/**
@ -41,6 +39,7 @@ public class CompanyComboVO {
@ApiModelProperty("dmp投放费用")
private Double dmpDeliveryFee;
@ApiModelProperty("坐席号")
private Integer seatNumber;

@ -0,0 +1,14 @@
package com.baiye.modules.system.repository;
import com.baiye.modules.system.domain.DownRecord;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* @author Enzo
* @date 2022-11-17
*/
public interface DownRecordRepository extends JpaRepository<DownRecord, Long>, JpaSpecificationExecutor<DownRecord> {
}

@ -44,13 +44,16 @@ public interface TaskImeiRepository extends JpaRepository<TaskImei, Long>, JpaSp
/**
*
*
* @param num
* @param taskImeiName
* @param date
* @param taskId
* @param minId
* @param maxId
* @return
*/
@Modifying
@Query("UPDATE TaskImei i set i.status = ?1,i.taskName = ?2,i.updateTime = ?3 where i.taskId = ?4")
int updateImeiByTaskNameId(Integer num, String taskImeiName, DateTime date, Long taskId);
@Query("UPDATE TaskImei i set i.status = ?1,i.taskName = ?2,i.updateTime = ?3 where i.taskId = ?4 and i.id >= ?5 and i.id <= ?6")
int updateImeiByTaskNameId(Integer num, String taskImeiName, DateTime date, Long taskId, Long minId, Long maxId);
}

@ -2,11 +2,9 @@ package com.baiye.modules.system.rest;
import com.baiye.http.CommonResponse;
import com.baiye.http.ResponseCode;
import com.baiye.model.dto.TaskQueryCriteria;
import com.baiye.modules.system.domain.Debt;
import com.baiye.modules.system.service.DebtFormService;
import com.baiye.modules.system.service.dto.DebtQueryCriteria;
import com.baiye.modules.system.service.dto.DebtQueryResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;

@ -0,0 +1,33 @@
package com.baiye.modules.system.rest;
import com.baiye.modules.system.service.DownRecordService;
import com.baiye.modules.system.service.dto.DownRecordQueryCriteria;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author Enzo
* @date : 2022/11/17
*/
@RestController
@RequiredArgsConstructor
@Api(tags = "系统下载dmp文件")
@RequestMapping("/api/down/record")
public class DownRecordController {
private final DownRecordService downRecordService;
@ApiOperation("查询记录")
@GetMapping
public ResponseEntity<Object> query(DownRecordQueryCriteria criteria, Pageable pageable){
return new ResponseEntity<>(downRecordService.queryAll(criteria, pageable), HttpStatus.OK);
}
}

@ -0,0 +1,33 @@
package com.baiye.modules.system.service;
import com.baiye.modules.system.domain.Company;
import com.baiye.modules.system.service.dto.DownRecordQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
/**
* @author Enzo
* @date : 2022/11/17
*/
public interface DownRecordService {
/**
*
* @param companyByUserId
* @param taskId
* @param zipPath
* @return
*/
Boolean createRecord(Company companyByUserId, Long taskId, String zipPath);
/**
*
* @param criteria
* @param pageable
* @return /
*/
Map<String,Object> queryAll(DownRecordQueryCriteria criteria, Pageable pageable);
}

@ -42,10 +42,13 @@ public interface TaskImeiService {
/**
*
*
* @param taskId
* @param taskImeiName
* @param num
* @param minId
* @param maxId
* @return
*/
Boolean updateBath(Long taskId, String taskImeiName, Integer num);
Boolean updateBath(Long taskId, String taskImeiName, Integer num, Long minId, Long maxId);
}

@ -108,4 +108,7 @@ public class CompanyDto extends BaseDTO implements Serializable {
@ApiModelProperty("子用户数量")
private Integer sonUserNum;
@ApiModelProperty("dmp上传数量")
private Integer dmpLimitNum;
}

@ -0,0 +1,36 @@
/*
* Copyright 2019-2020 Zheng Jie
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.baiye.modules.system.service.dto;
import com.baiye.annotation.Query;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.sql.Timestamp;
import java.util.List;
/**
* @author Zheng Jie
* @date 2019-6-4 14:49:34
*/
@Data
@NoArgsConstructor
public class DownRecordQueryCriteria {
@Query(type = Query.Type.BETWEEN)
private List<Timestamp> createTime;
}

@ -7,7 +7,6 @@ import com.baiye.constant.DefaultNumberConstants;
import com.baiye.exception.BadRequestException;
import com.baiye.exception.EntityExistException;
import com.baiye.model.enums.ResponseCode;
import com.baiye.modules.security.service.OnlineUserService;
import com.baiye.modules.system.domain.Company;
import com.baiye.modules.system.domain.PayFatherTemplate;
import com.baiye.modules.system.domain.vo.CompanyComboVO;
@ -25,7 +24,6 @@ import com.baiye.util.QueryHelp;
import com.baiye.util.SecurityUtils;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
import org.hibernate.type.DoubleType;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Page;
@ -33,7 +31,6 @@ import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -152,6 +149,7 @@ public class CompanyServiceImpl implements CompanyService {
@Override
@Transactional(rollbackFor = Exception.class)
@CacheEvict(cacheNames = "companyCache", key = "#companyId")
public void updateUserBalanceByCompanyId(Double balance, Long companyId) {
companyRepository.updateUserBalance(balance, companyId);
}

@ -0,0 +1,57 @@
package com.baiye.modules.system.service.impl;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baiye.modules.system.domain.Company;
import com.baiye.modules.system.domain.DownRecord;
import com.baiye.modules.system.repository.DownRecordRepository;
import com.baiye.modules.system.service.DownRecordService;
import com.baiye.modules.system.service.TaskService;
import com.baiye.modules.system.service.dto.DownRecordQueryCriteria;
import com.baiye.modules.system.service.dto.TaskTagDto;
import com.baiye.util.PageUtil;
import com.baiye.util.QueryHelp;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* @author Enzo
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class DownRecordServiceImpl implements DownRecordService {
private final TaskService taskService;
private final DownRecordRepository downRecordRepository;
@Override
public Boolean createRecord(Company company, Long taskId, String zipPath) {
DownRecord downRecord = new DownRecord();
TaskTagDto taskTagDto = taskService.queryDmpTask(taskId);
downRecord.setTaskId(taskId);
downRecord.setDownUrl(zipPath);
downRecord.setCompanyId(company.getId());
downRecord.setUserId(company.getUserId());
downRecord.setId(IdUtil.getSnowflake().nextId());
downRecord.setCompanyName(company.getCompanyName());
if (ObjectUtil.isNotNull(taskTagDto)) {
downRecord.setTaskName(taskTagDto.getTaskName());
}
return downRecordRepository.save(downRecord).getId() != null;
}
@Override
public Map<String, Object> queryAll(DownRecordQueryCriteria criteria, Pageable pageable) {
Page<DownRecord> page = downRecordRepository.findAll((root, query, cb) ->
QueryHelp.getPredicate(root, criteria, cb), pageable);
return PageUtil.toPage(page);
}
}

@ -77,9 +77,9 @@ public class TaskImeiServiceImpl implements TaskImeiService {
}
@Override
public Boolean updateBath(Long taskId, String taskImeiName, Integer num) {
public Boolean updateBath(Long taskId, String taskImeiName, Integer num, Long minId, Long maxId) {
return taskImeiRepository.updateImeiByTaskNameId
(num, taskImeiName, DateUtil.date(), taskId) > DefaultNumberConstants.ZERO_NUMBER;
(num, taskImeiName, DateUtil.date(), taskId, minId, maxId) > DefaultNumberConstants.ZERO_NUMBER;
}
}

@ -180,7 +180,7 @@ public class UserServiceImpl implements UserService {
if (userDTO.getCompanyId() != null){
Integer sonUserNum = companyService.findCompanyInfo(userDTO.getCompanyId()).getSonUserNum();
int size = userRepository.findByCompanyId(userDTO.getCompanyId()).size() - DefaultNumberConstants.ONE_NUMBER;
if (sonUserNum > size){
if (sonUserNum < size){
throw new BadRequestException("子账号超过上限,请联系管理员");
}
}

@ -7,6 +7,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.text.StrPool;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baiye.config.properties.DeliveryProperties;
@ -15,6 +16,7 @@ import com.baiye.modules.system.domain.Company;
import com.baiye.modules.system.domain.TaskImei;
import com.baiye.modules.system.service.CompanyService;
import com.baiye.modules.system.service.DeliveryRecordService;
import com.baiye.modules.system.service.DownRecordService;
import com.baiye.modules.system.service.TaskImeiService;
import com.baiye.modules.system.service.dto.ImeiDTO;
import com.baiye.util.*;
@ -26,8 +28,10 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@ -40,17 +44,19 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
public class DeliveryBalanceTask {
private final RedisUtils redisUtils;
private final CompanyService companyService;
private final TaskImeiService taskImeiService;
private final DownRecordService downRecordService;
private final DeliveryProperties deliveryProperties;
private final DeliveryRecordService deliveryRecordService;
/**
* 821
*/
@ -66,17 +72,28 @@ public class DeliveryBalanceTask {
for (Map.Entry<Long, List<TaskImei>> map : listMap.entrySet()) {
Long taskId = map.getKey();
List<TaskImei> list = listMap.get(taskId);
List<TaskImei> downList = Lists.newArrayList();
log.info("=================== the task Id as {},upload size as {} ====================", taskId, list.size());
Long userId = list.get(DefaultNumberConstants.ZERO_NUMBER).getUserId();
Company companyByUserId = companyService.findCompanyByUserId(userId);
if (ObjectUtil.isNotNull(companyByUserId)
// 判断价格
&& ObjectUtil.isNotNull(companyByUserId.getDmpDeliveryFee())) {
// 截取数据
if (ObjectUtil.isNotNull(companyByUserId.getDmpLimitNum())
&& companyByUserId.getDmpLimitNum() > DefaultNumberConstants.ZERO_NUMBER
&& list.size() > companyByUserId.getDmpLimitNum()) {
downList = CollUtil.sub(list, companyByUserId.getDmpLimitNum(), list.size());
list = CollUtil.sub(list, DefaultNumberConstants.ZERO_NUMBER, companyByUserId.getDmpLimitNum());
}
// 每次100000 数据
List<List<TaskImei>> lists = Lists.partition
(list, DefaultNumberConstants.ONE_HUNDRED_THOUSAND);
// 批量发送
for (List<TaskImei> taskImeiList : lists) {
Long minId = (long) DefaultNumberConstants.ZERO_NUMBER;
Long maxId = (long) DefaultNumberConstants.ZERO_NUMBER;
// 大于100 进行兑换
if (taskImeiList.size() >= DefaultNumberConstants.ONE_HUNDRED) {
BigDecimal decimal = NumberUtil.mul(companyByUserId.getDmpDeliveryFee(), BigDecimal.valueOf(taskImeiList.size()));
@ -86,39 +103,80 @@ public class DeliveryBalanceTask {
(DefaultNumberConstants.ZERO_NUMBER)) < DefaultNumberConstants.ZERO_NUMBER) {
continue;
}
String fileUrl = deliveryProperties.getFileUrl();
Comparator<TaskImei> comparing = Comparator.comparing(TaskImei::getId);
String format = DateUtil.format(DateUtil.date(), DatePattern.PURE_DATE_PATTERN);
Integer num = (Integer) redisUtils.get(CacheKey.DMP_REQUEST_ID.concat(format));
// 转换DTO
List<ImeiDTO> toList = Convert.toList(ImeiDTO.class, taskImeiList);
Integer batch = ObjectUtil.isNull(num) ? DefaultNumberConstants.ONE_NUMBER : num + DefaultNumberConstants.ONE_NUMBER;
String taskImeiName = "BY".concat(StrPool.UNDERLINE).concat(format).concat(StrPool.UNDERLINE).concat(String.valueOf(batch));
String file = fileUrl.concat(StrPool.SLASH).concat(taskImeiName);
// 保存文件
String csvPath = file.concat(".csv");
CSVFileUtil.createCsvFile(toList, csvPath);
String zipPath = file.concat(".zip");
// 设置压缩文件
CompressUtil.decryptionCompression
(zipPath, csvPath, deliveryProperties.getZipPassword());
// 发送邮件
MailUtil.sendMail(deliveryProperties.getEmailAddress(),
deliveryProperties.getEmailPassword(),
deliveryProperties.getToEmailAddress(), zipPath, taskImeiName);
// 保存批次号
redisUtils.set(CacheKey.DMP_REQUEST_ID.concat(format), batch, DefaultNumberConstants.ONE_NUMBER, TimeUnit.DAYS);
// 修改状态 修改余额
taskImeiService.updateBath(taskId, CharSequenceUtil.EMPTY, DefaultNumberConstants.ONE_NUMBER);
deliveryRecordService.saveDeliveryRecord(zipPath, taskImeiName, taskImeiList.size(), taskId, userId);
companyService.updateUserBalanceByCompanyId(sub.doubleValue(), companyByUserId.getId());
// 最小id
Optional<TaskImei> min = taskImeiList.stream().min(comparing);
if (min.isPresent()) {
minId = min.get().getId();
}
// 最大id
Optional<TaskImei> max = taskImeiList.stream().max(comparing);
if (max.isPresent()) {
maxId = max.get().getId();
}
if (minId > DefaultNumberConstants.ZERO_NUMBER && maxId > DefaultNumberConstants.ONE_HUNDRED) {
// 转换DTO
List<ImeiDTO> toList = Convert.toList(ImeiDTO.class, taskImeiList);
Integer batch = ObjectUtil.isNull(num) ? DefaultNumberConstants.ONE_NUMBER : num + DefaultNumberConstants.ONE_NUMBER;
String taskImeiName = "BY".concat(StrPool.UNDERLINE).concat(format).concat(StrPool.UNDERLINE).concat(String.valueOf(batch));
String file = fileUrl.concat(StrPool.SLASH).concat(taskImeiName);
// 保存文件
String csvPath = file.concat(".csv");
CSVFileUtil.createCsvFile(toList, csvPath);
String zipPath = file.concat(".zip");
// 设置压缩文件
CompressUtil.decryptionCompression
(zipPath, csvPath, deliveryProperties.getZipPassword());
// 发送邮件
MailUtil.sendMail(deliveryProperties.getEmailAddress(),
deliveryProperties.getEmailPassword(),
deliveryProperties.getToEmailAddress(), zipPath, taskImeiName);
// 保存批次号
redisUtils.set(CacheKey.DMP_REQUEST_ID.concat(format), batch, DefaultNumberConstants.ONE_NUMBER, TimeUnit.DAYS);
// 修改状态 修改余额
taskImeiService.updateBath(taskId, CharSequenceUtil.EMPTY, DefaultNumberConstants.ONE_NUMBER, minId, maxId);
deliveryRecordService.saveDeliveryRecord(zipPath, taskImeiName, taskImeiList.size(), taskId, userId);
companyService.updateUserBalanceByCompanyId(sub.doubleValue(), companyByUserId.getId());
// 删除文件
boolean csvResult = FileUtil.del(csvPath);
boolean zipResult = FileUtil.del(zipPath);
log.info("=========================== the csv path as {}, zip path as {} csvResult as {} zipResult as {} ========================", csvPath, zipPath, csvResult, zipResult);
// 删除文件
boolean csvResult = FileUtil.del(csvPath);
boolean zipResult = FileUtil.del(zipPath);
log.info("=========================== the csv path as {}, zip path as {} csvResult as {} zipResult as {} ========================", csvPath, zipPath, csvResult, zipResult);
}
}
}
if (CollUtil.isNotEmpty(downList)) {
Long minId = (long) DefaultNumberConstants.ZERO_NUMBER;
Long maxId = (long) DefaultNumberConstants.ZERO_NUMBER;
Comparator<TaskImei> comparing = Comparator.comparing(TaskImei::getId);
// 最小id
Optional<TaskImei> min = downList.stream().min(comparing);
if (min.isPresent()) {
minId = min.get().getId();
}
// 最大id
Optional<TaskImei> max = downList.stream().max(comparing);
if (max.isPresent()) {
maxId = max.get().getId();
}
String uuid = IdUtil.fastSimpleUUID();
String file = deliveryProperties.getDmpDownPath().concat(uuid);
// 转换DTO
List<ImeiDTO> toList = Convert.toList(ImeiDTO.class, downList);
// 保存文件
String csvPath = file.concat(".csv");
CSVFileUtil.createCsvFile(toList, csvPath);
String zipPath = file.concat(".zip");
// 设置压缩文件
CompressUtil.decryptionCompression
(zipPath, csvPath, deliveryProperties.getZipPassword());
downRecordService.createRecord(companyByUserId, taskId, zipPath);
// 修改状态
taskImeiService.updateBath(taskId, CharSequenceUtil.EMPTY, DefaultNumberConstants.ONE_NUMBER, minId, maxId);
}
}
}

@ -1,11 +1,16 @@
package com.baiye.util;
import cn.hutool.core.text.csv.CsvData;
import cn.hutool.core.text.csv.CsvReader;
import cn.hutool.core.text.csv.CsvUtil;
import cn.hutool.core.text.csv.CsvWriter;
import cn.hutool.core.util.CharsetUtil;
import com.baiye.constant.AdPlatFormConstants;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.exception.BadRequestException;
import com.baiye.modules.system.service.dto.ImeiDTO;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import org.apache.poi.ss.formula.functions.T;
import java.io.*;
@ -44,11 +49,41 @@ public class CSVFileUtil {
}
public static void main(String[] args) {
List<ImeiDTO> list = Lists.newArrayList();
ImeiDTO dto = new ImeiDTO();
dto.setImei("123");
dto.setTag("234");
list.add(dto);
createCsvFile(list, "E:\\test.csv");
File file = new File("C:\\Users\\a\\Desktop\\1.csv");
List<String> phoneList = Lists.newArrayList();
List<String> tagList = Lists.newArrayList();
CsvReader reader = CsvUtil.getReader();
// 解析文件
CsvData data = reader.read(file);
data.getRows().forEach(clue -> phoneList.add
(clue.get(DefaultNumberConstants.TWO_NUMBER)));
for (String s : phoneList) {
System.out.println(s);
}
// 去除重复
List<String> phoneSets = Lists.newArrayList(Sets.newHashSet(phoneList));
File csvFile = new File("C:\\Users\\a\\Desktop\\11-17-dmp.csv");
//导入HuTool中CSV工具包的CsvWriter类
//设置导出字符类型, CHARSET_UTF_8
CsvWriter writer = CsvUtil.getWriter(csvFile, CharsetUtil.CHARSET_UTF_8);
for (int i = 0; i < phoneSets.size(); i++) {
String decrypt = AESUtils.decrypt(phoneSets.get(i), AdPlatFormConstants.AD_PLATFORM);
if (MobileUtil.checkPhone(decrypt)) {
writer.writeLine(decrypt);
}
}
writer.close();
}
}

@ -181,7 +181,8 @@ platform:
emailAddress: ensoze@outlook.com
emailPassword: baiye2022
customerId: QISX0xz4l6fR3YL2sUNSpzM2
toEmailAddress: ggggod_2022@outlook.com
toEmailAddress: ensoze@outlook.com
dmpDownPath: /home/eladmin/mail/down/
# 巨量引擎配置
ocean:

@ -182,6 +182,7 @@ platform:
emailPassword: baiye2022
toEmailAddress: ggggod_2022@outlook.com
customerId: QISX0xz4l6fR3YL2sUNSpzM2
dmpDownPath: https://baiyee.vip/dmp/down/
# 巨量引擎配置
ocean:
engine:

@ -1,5 +1,6 @@
package com.baiye;
import com.baiye.modules.system.service.CompanyService;
import com.baiye.modules.system.service.OceanEngineService;
import lombok.extern.slf4j.Slf4j;
import net.minidev.json.JSONObject;
@ -36,6 +37,9 @@ public class OceanEngineTest {
@Resource
private OceanEngineService oceanEngineService;
@Resource
private CompanyService companyService;
@Test
public void getSetting() {
@ -119,6 +123,11 @@ public class OceanEngineTest {
@Test
public void changeCompany(){
companyService.updateUserBalanceByCompanyId(2000.0,9L );
System.out.println("");
}

@ -216,7 +216,7 @@ public class ClueJpa {
String key = "task:encryption:" + taskId;
String str = String.valueOf(redisUtils.get(key));
//fixme 投流线索 返回处理
if (clueType == 4) {
if (clueType != null && clueType == 4) {
clueDto.setNid(RandomUtil.randomString(22));
} else {
// 查看资源是否需要加密显示
@ -417,12 +417,16 @@ public class ClueJpa {
clue.setCreateTime((Date) row.get("createTime"));
clue.setName((String) row.get("name"));
String nid = AESUtils.decrypt(phone, secret);
if (isEncryption == 1) {
StringBuilder stringBuilder = new StringBuilder(nid);
String strRep = stringBuilder.replace(3, 7, "****").toString();
clue.setNid(strRep);
if (clueType != null && clueType == 4) {
clue.setNid(RandomUtil.randomString(22));
} else {
clue.setNid(nid);
if (isEncryption == 1) {
StringBuilder stringBuilder = new StringBuilder(nid);
String strRep = stringBuilder.replace(3, 7, "****").toString();
clue.setNid(strRep);
} else {
clue.setNid(nid);
}
}
BigInteger taskId = (BigInteger) row.get("taskId");
clue.setTaskId(taskId.longValue());

@ -24,7 +24,6 @@ public class TurnCrmLog implements Serializable {
@Id
@ApiModelProperty(value = "主键ID")
@Column(name = "clue_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long clueId;
@ApiModelProperty(value = "用户ID")

@ -789,15 +789,15 @@ public class ClueServiceImpl implements ClueService {
@Override
@Transactional(rollbackFor = Exception.class)
public void clueBackFlow(Long taskId, Long clueId, Long userId, Integer clueType) {
Integer userCount = turnCrmLogRepository.findByUserIdCount(userId);
UserDto userInfo = userClient.findUserInfo(userId);
ClueMiddle clueMiddle = clueMiddleRepository.findById(clueId).orElseGet(ClueMiddle::new);
Integer userCount = turnCrmLogRepository.findByUserIdCount(clueMiddle.getMemberId());
UserDto userInfo = userClient.findUserInfo(clueMiddle.getMemberId());
if (userCount != null && userCount > userInfo.getTurnCrmNum()){
throw new BadRequestException("回流失败, 每天上限" + userInfo.getTurnCrmNum() +"条,请联系管理员");
}
// 初始化线索加密字段
Clue clue = clueRepository.findById(clueId).orElseGet(Clue::new);
clue.setIsEncryption(DefaultNumberConstants.ZERO_NUMBER);
ClueMiddle clueMiddle = clueMiddleRepository.findById(clueId).orElseGet(ClueMiddle::new);
//查看crm任务
TaskQueryCriteria taskQueryCriteria = new TaskQueryCriteria();
int crmClueType = 0;

@ -78,13 +78,12 @@ public class MailSourceTask {
if (deliveryProperties.getToEmailAddress().equalsIgnoreCase
(MailUtil.getFrom((MimeMessage) message))) {
String taskName = message.getSubject();
log.info(message.getSubject());
String str = (String) redisUtils.get(taskName);
if (StringUtils.isNotBlank(str)) {
continue;
}
// 设置一天缓存
redisUtils.set(taskName, taskName, DefaultNumberConstants.ONE_NUMBER, TimeUnit.DAYS);
// 设置十分钟缓存
redisUtils.set(taskName, taskName, DefaultNumberConstants.TEN_NUMBER, TimeUnit.MINUTES);
// 内容获取发送请求
DeliveryRecord byTaskName = deliveryRecordService.findByTaskName(taskName);
if (ObjectUtil.isNotNull(byTaskName)

Loading…
Cancel
Save