修改配置参数

master
bynt 1 year ago
parent 6fdc5024eb
commit 9b0be6a614

@ -9,7 +9,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2023-06-05T10:51:01+0800",
date = "2023-06-21T17:29:40+0800",
comments = "version: 1.3.1.Final, compiler: javac, environment: Java 1.8.0_251 (Oracle Corporation)"
)
@Component

@ -9,7 +9,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2023-06-05T10:51:01+0800",
date = "2023-06-21T17:29:40+0800",
comments = "version: 1.3.1.Final, compiler: javac, environment: Java 1.8.0_251 (Oracle Corporation)"
)
@Component

@ -36,4 +36,9 @@ public class DmpMonitorNumDto {
*
*/
private String mail;
/**
*
*/
private Integer version;
}

@ -15,18 +15,17 @@
*/
package me.zhengjie.modules.gender.domain;
import lombok.Data;
import cn.hutool.core.bean.BeanUtil;
import io.swagger.annotations.ApiModelProperty;
import cn.hutool.core.bean.copier.CopyOptions;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import me.zhengjie.common.convert.JpaConverterListJson;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
import javax.persistence.*;
import javax.validation.constraints.*;
import java.sql.Timestamp;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.List;
/**
@ -74,6 +73,11 @@ public class DeliveryGender implements Serializable {
@ApiModelProperty(value = "类型")
private Integer type;
@Column(name = "user_id")
@ApiModelProperty(value = "用户id")
private Long userId;
@CreationTimestamp
@Column(name = "create_time")
@ApiModelProperty(value = "创建时间")

@ -1,42 +1,42 @@
/*
* 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.
*/
* 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 me.zhengjie.modules.gender.rest;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import me.zhengjie.annotation.Log;
import me.zhengjie.modules.gender.domain.DeliveryGender;
import me.zhengjie.modules.gender.service.DeliveryGenderService;
import me.zhengjie.modules.gender.service.dto.DeliveryGenderQueryCriteria;
import me.zhengjie.utils.SecurityUtils;
import org.springframework.data.domain.Pageable;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @website https://el-admin.vip
* @author Enzo
* @date 2023-06-01
**/
* @author Enzo
* @website https://el-admin.vip
* @date 2023-06-01
**/
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/deliveryGender")
@ -47,35 +47,38 @@ public class DeliveryGenderController {
@Log("导出数据")
@ApiOperation("导出数据")
@GetMapping(value = "/download")
@PreAuthorize("@el.check('deliveryGender:list')")
public void download(HttpServletResponse response, DeliveryGenderQueryCriteria criteria) throws IOException {
Long currentUserId = SecurityUtils.getCurrentUserId();
if (currentUserId != null && currentUserId != 1) {
criteria.setUserId(currentUserId);
}
deliveryGenderService.download(deliveryGenderService.queryAll(criteria), response);
}
@GetMapping
@ApiOperation("查询")
@PreAuthorize("@el.check('deliveryGender:list')")
public ResponseEntity<Object> query(DeliveryGenderQueryCriteria criteria, Pageable pageable){
return new ResponseEntity<>(deliveryGenderService.queryAll(criteria,pageable),HttpStatus.OK);
public ResponseEntity<Object> query(DeliveryGenderQueryCriteria criteria, Pageable pageable) {
Long currentUserId = SecurityUtils.getCurrentUserId();
if (currentUserId != null && currentUserId != 1) {
criteria.setUserId(currentUserId);
}
return new ResponseEntity<>(deliveryGenderService.queryAll(criteria, pageable), HttpStatus.OK);
}
@PostMapping
@ApiOperation("新增")
@PreAuthorize("@el.check('deliveryGender:add')")
public ResponseEntity<Object> create(@Validated @RequestBody DeliveryGender resources){
return new ResponseEntity<>(deliveryGenderService.create(resources),HttpStatus.CREATED);
public ResponseEntity<Object> create(@Validated @RequestBody DeliveryGender resources) {
return new ResponseEntity<>(deliveryGenderService.create(resources), HttpStatus.CREATED);
}
@PutMapping
@ApiOperation("修改")
@PreAuthorize("@el.check('deliveryGender:edit')")
public ResponseEntity<Object> update(@Validated @RequestBody DeliveryGender resources){
public ResponseEntity<Object> update(@Validated @RequestBody DeliveryGender resources) {
deliveryGenderService.update(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@ApiOperation("删除")
@PreAuthorize("@el.check('deliveryGender:del')")
@DeleteMapping
public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
deliveryGenderService.deleteAll(ids);
@ -85,7 +88,7 @@ public class DeliveryGenderController {
@ApiOperation("上传文件发送邮件")
@PostMapping("/upload/files")
public ResponseEntity<Object> uploadFile(@RequestParam("file") MultipartFile[] files, @RequestParam(value = "taskName") String taskName) {
public ResponseEntity<Object> uploadFile(@RequestParam("file") MultipartFile[] files, @RequestParam(value = "taskName") String taskName) {
return new ResponseEntity<>(deliveryGenderService.uploadFile(files, taskName), HttpStatus.OK);
}
}

@ -16,8 +16,9 @@
package me.zhengjie.modules.gender.service.dto;
import lombok.Data;
import java.sql.Timestamp;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.List;
/**
@ -51,4 +52,14 @@ public class DeliveryGenderDto implements Serializable {
/** 标识 */
private List<String> taskNumStr;
/** 下载地址 */
private String downUrl;
/** 文件地址 */
private String downPath;
/** 邮件姓名 */
private String mailName;
}

@ -32,4 +32,8 @@ public class DeliveryGenderQueryCriteria {
@Query(type = Query.Type.INNER_LIKE)
private String taskName;
@Query(type = Query.Type.EQUAL)
private Long userId;
}

@ -112,7 +112,7 @@ public class DeliveryGenderServiceImpl implements DeliveryGenderService {
public void deleteAll(Long[] ids) {
for (Long id : ids) {
DeliveryGender deliveryGender = deliveryGenderRepository.findById(id).orElseGet(DeliveryGender::new);
if (ObjectUtil.isNotNull(deliveryGender)){
if (ObjectUtil.isNotNull(deliveryGender)) {
FileUtil.del(deliveryGender.getDownPath());
}
deliveryGenderRepository.deleteById(id);
@ -150,41 +150,43 @@ public class DeliveryGenderServiceImpl implements DeliveryGenderService {
? TxtUtils.txtParseListVyUrl(filePath.getPath()) :
originalFilename.contains(FileConstant.CSV_FILE_SUB_NAME)
? ToolExcelUtils.csvParseListByUrl(filePath.getPath())
: ToolExcelUtils.excelParseListByUrl(filePath.getPath());
: ToolExcelUtils.excelParseListByUrl(filePath.getPath());
}
}
if (CollUtil.isNotEmpty(arrayList)) {
// 去除重复数据
List<String> dtoArrayList = Lists.newArrayList(Sets.newHashSet(arrayList));
// 加密
List<String> stringList = dtoArrayList.stream().filter
(StringUtils::isNotBlank).map
(source -> AESUtils.dbEncrypt(FileConstant.AES_PASSWORD, source))
.collect(Collectors.toList());
if (stringList.size() < 100) {
throw new BadRequestException("上传条数不能小于100条");
}
// 每次500000 数据
List<List<String>> partition = Lists.partition(stringList, 500000);
for (List<String> list : partition) {
String uuid = IdUtil.fastSimpleUUID();
String sendMailName = redisUtils.acquisitionBatch(CacheKey.GR_REQUEST_TYPE);
String file = FileUtil.SYS_TEM_DIR.concat(StrUtil.SLASH).concat(uuid);
// 保存文件下载地址
ZipUtils.zipFileAndSendGenderMail(list, file, sendMailName, deliveryProperties);
this.saveDeliveryRecord(taskName, sendMailName, list.size(), 1);
}
return Boolean.TRUE;
if (CollUtil.isEmpty(arrayList)) {
throw new BadRequestException("解析文件不能空!");
}
// 去除重复数据
List<String> dtoArrayList = Lists.newArrayList(Sets.newHashSet(arrayList));
// 加密
List<String> stringList = dtoArrayList.stream().filter
(StringUtils::isNotBlank).map
(source -> AESUtils.dbEncrypt(FileConstant.AES_PASSWORD, source))
.collect(Collectors.toList());
if (stringList.size() < 100) {
throw new BadRequestException("上传条数不能小于100条");
}
// 每次500000 数据
List<List<String>> partition = Lists.partition(stringList, 500000);
for (List<String> list : partition) {
String uuid = IdUtil.fastSimpleUUID();
String sendMailName = redisUtils.acquisitionBatch(CacheKey.GR_REQUEST_TYPE);
String file = FileUtil.SYS_TEM_DIR.concat(StrUtil.SLASH).concat(uuid);
// 保存文件下载地址
ZipUtils.zipFileAndSendGenderMail(list, file, sendMailName, deliveryProperties);
this.saveDeliveryRecord(taskName, sendMailName, list.size(), SecurityUtils.getCurrentUserId(), 1);
}
return Boolean.TRUE;
}
return Boolean.FALSE;
}
public Boolean saveDeliveryRecord(String taskImeiName, String sendMailName, Integer num, Integer type) {
public Boolean saveDeliveryRecord(String taskImeiName, String sendMailName, Integer num, Long currentUserId, Integer type) {
DeliveryGender deliveryRecord = new DeliveryGender();
deliveryRecord.setNum(num);
deliveryRecord.setStatus(0);
deliveryRecord.setType(type);
deliveryRecord.setUserId(currentUserId);
deliveryRecord.setMailName(sendMailName);
deliveryRecord.setTaskName(taskImeiName);
return deliveryGenderRepository.save(deliveryRecord).getId() != null;

@ -1,6 +1,8 @@
package me.zhengjie.modules.gender.task;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.csv.CsvData;
import cn.hutool.core.text.csv.CsvReader;
import cn.hutool.core.text.csv.CsvUtil;
@ -26,9 +28,11 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.mail.Flags;
import javax.mail.Message;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
@ -54,7 +58,7 @@ public class GenderConversionTask {
@SneakyThrows
@Scheduled(cron = "0 0/10 * * * ? ")
@Scheduled(cron = "0 0/15 * * * ? ")
@Transactional(rollbackFor = Exception.class)
public void receiveMail() {
// 获取邮件内容
@ -106,6 +110,8 @@ public class GenderConversionTask {
if (StringUtils.isNotBlank(byTaskName.getDownPath())) {
FileUtil.writeToCsv(joinList, parseFile.getPath(), Boolean.TRUE);
// 设置压缩文件
CompressUtil.decryptionCompression(path, parseFile.getPath(), null);
deliveryGenderService.update(byTaskName);
return;
}
@ -132,4 +138,25 @@ public class GenderConversionTask {
}
}
}
/**
*
*/
@SneakyThrows
@Scheduled(cron = "0 25 23 * * ? ")
public void deleteMail() {
// 获取邮件内容
List<Message> list = MailUtil.readMailByIMAP
(deliveryProperties.getGenderEmailAddress(), deliveryProperties.getEmailPassword());
for (Message message : list) {
Date sentDate = message.getSentDate();
// 时间偏移
DateTime dateTime = DateUtil.offsetDay(DateUtil.date(), -5);
if (dateTime.after(sentDate)) {
// 删除邮件
message.setFlag(Flags.Flag.DELETED, Boolean.TRUE);
}
}
}
}

@ -156,9 +156,9 @@ rdsFileRecord:
gender:
emailPassword: baiye2022
fileUrl: /home/eladmin/mail
fileUrl: /home/eladmin/file/mail
zipPassword: DB2022hjk213v1...
emailAddress: ensoze@outlook.com
downPath: https://xx.tuoz.net/mail/down/
downPath: https://xx.tuoz.net/file/mail/
genderEmailAddress: ensoze2023@outlook.com
toGenderEmailAddress: ggggod_2022@outlook.com

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.
Loading…
Cancel
Save