From 1118b9b76036da145e846b8840ed6c6c0615de64 Mon Sep 17 00:00:00 2001 From: bynt <13586541001@163.com> Date: Thu, 3 Aug 2023 13:30:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=82=AE=E4=BB=B6=E4=B8=BA?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/mapstruct/LogErrorMapperImpl.java | 2 +- .../service/mapstruct/LogSmallMapperImpl.java | 2 +- .../config/properties/DeliveryProperties.java | 5 + .../modules/gender/domain/DeliveryGender.java | 7 +- .../gender/domain/DeliveryGenderBatchNo.java | 60 +++++++ .../DeliveryGenderBatchNoRepository.java | 41 +++++ .../repository/DeliveryGenderRepository.java | 41 ++++- .../gender/rest/DeliveryGenderController.java | 17 ++ .../gender/service/DeliveryGenderService.java | 17 +- .../gender/service/dto/ExchangeGenderDTO.java | 43 +++++ .../gender/service/dto/GenderResponseDTO.java | 38 +++++ .../gender/service/dto/SetCallBackDTO.java | 27 ++++ .../impl/DeliveryGenderServiceImpl.java | 152 +++++++++++++++--- .../gender/task/GenderConversionTask.java | 7 +- .../security/config/SecurityConfig.java | 2 +- 15 files changed, 422 insertions(+), 39 deletions(-) create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/gender/domain/DeliveryGenderBatchNo.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/gender/repository/DeliveryGenderBatchNoRepository.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/gender/service/dto/ExchangeGenderDTO.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/gender/service/dto/GenderResponseDTO.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/gender/service/dto/SetCallBackDTO.java diff --git a/eladmin-logging/target/generated-sources/annotations/me/zhengjie/service/mapstruct/LogErrorMapperImpl.java b/eladmin-logging/target/generated-sources/annotations/me/zhengjie/service/mapstruct/LogErrorMapperImpl.java index 810794d..c9301f1 100644 --- a/eladmin-logging/target/generated-sources/annotations/me/zhengjie/service/mapstruct/LogErrorMapperImpl.java +++ b/eladmin-logging/target/generated-sources/annotations/me/zhengjie/service/mapstruct/LogErrorMapperImpl.java @@ -9,7 +9,7 @@ import org.springframework.stereotype.Component; @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-06-21T17:29:40+0800", + date = "2023-08-03T13:20:50+0800", comments = "version: 1.3.1.Final, compiler: javac, environment: Java 1.8.0_251 (Oracle Corporation)" ) @Component diff --git a/eladmin-logging/target/generated-sources/annotations/me/zhengjie/service/mapstruct/LogSmallMapperImpl.java b/eladmin-logging/target/generated-sources/annotations/me/zhengjie/service/mapstruct/LogSmallMapperImpl.java index f70bbac..66815b2 100644 --- a/eladmin-logging/target/generated-sources/annotations/me/zhengjie/service/mapstruct/LogSmallMapperImpl.java +++ b/eladmin-logging/target/generated-sources/annotations/me/zhengjie/service/mapstruct/LogSmallMapperImpl.java @@ -9,7 +9,7 @@ import org.springframework.stereotype.Component; @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2023-06-21T17:29:40+0800", + date = "2023-08-03T13:20:50+0800", comments = "version: 1.3.1.Final, compiler: javac, environment: Java 1.8.0_251 (Oracle Corporation)" ) @Component diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/gender/config/properties/DeliveryProperties.java b/eladmin-system/src/main/java/me/zhengjie/modules/gender/config/properties/DeliveryProperties.java index f2d1787..afc288b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/gender/config/properties/DeliveryProperties.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/gender/config/properties/DeliveryProperties.java @@ -33,6 +33,11 @@ public class DeliveryProperties { @ApiModelProperty("emailPassword") private String emailPassword; + @ApiModelProperty("orgCode") + private String orgCode; + + @ApiModelProperty("submitUrl") + private String submitUrl; @ApiModelProperty("toGenderEmailAddress") diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/gender/domain/DeliveryGender.java b/eladmin-system/src/main/java/me/zhengjie/modules/gender/domain/DeliveryGender.java index 32fb026..d9a918e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/gender/domain/DeliveryGender.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/gender/domain/DeliveryGender.java @@ -65,9 +65,9 @@ public class DeliveryGender implements Serializable { @ApiModelProperty(value = "文件地址") private String downPath; - @Column(name = "mail_name") - @ApiModelProperty(value = "文件地址") - private String mailName; + @Column(name = "batch_no") + @ApiModelProperty(value = "批次号") + private String batchNo; @Column(name = "type") @ApiModelProperty(value = "类型") @@ -78,6 +78,7 @@ public class DeliveryGender implements Serializable { @ApiModelProperty(value = "用户id") private Long userId; + @CreationTimestamp @Column(name = "create_time") @ApiModelProperty(value = "创建时间") diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/gender/domain/DeliveryGenderBatchNo.java b/eladmin-system/src/main/java/me/zhengjie/modules/gender/domain/DeliveryGenderBatchNo.java new file mode 100644 index 0000000..42e73dc --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/gender/domain/DeliveryGenderBatchNo.java @@ -0,0 +1,60 @@ +package me.zhengjie.modules.gender.domain; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.UpdateTimestamp; + +import javax.persistence.*; +import java.sql.Timestamp; + +/** + * @author Enzo + * @date : 2023/8/2 + */ +@Entity +@Getter +@Setter +@Table(name="tb_delivery_gender_batch_no") +public class DeliveryGenderBatchNo { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + @ApiModelProperty(value = "id") + private Long id; + + + @Column(name = "delivery_id") + @ApiModelProperty(value = "投放id") + private Long deliveryId; + + @Column(name = "request_id") + @ApiModelProperty(value = "请求id") + private String requestId; + + @Column(name = "num") + @ApiModelProperty(value = "数量") + private Integer num; + + + @Column(name = "status") + @ApiModelProperty(value = "状态值") + private Integer status; + + @Column(name = "batch_no") + @ApiModelProperty(value = "批次号") + private String batchNo; + + + @CreationTimestamp + @Column(name = "create_time") + @ApiModelProperty(value = "创建时间") + private Timestamp createTime; + + @UpdateTimestamp + @Column(name = "update_time") + @ApiModelProperty(value = "更新时间") + private Timestamp updateTime; +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/gender/repository/DeliveryGenderBatchNoRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/gender/repository/DeliveryGenderBatchNoRepository.java new file mode 100644 index 0000000..7b9ebca --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/gender/repository/DeliveryGenderBatchNoRepository.java @@ -0,0 +1,41 @@ +/* + * 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.repository; + +import me.zhengjie.modules.gender.domain.DeliveryGender; +import me.zhengjie.modules.gender.domain.DeliveryGenderBatchNo; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + +/** + * @author Enzo + * @date 2023-08-02 + **/ +public interface DeliveryGenderBatchNoRepository extends JpaRepository, JpaSpecificationExecutor { + + + /** + * 发送批次查找记录 + * + * @param batchNo + * @return + */ + @Query(value = "from DeliveryGenderBatchNo where batchNo = ?1 order by id desc ") + List findByBatchNo(String batchNo); +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/gender/repository/DeliveryGenderRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/gender/repository/DeliveryGenderRepository.java index 0add4b5..03991d0 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/gender/repository/DeliveryGenderRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/gender/repository/DeliveryGenderRepository.java @@ -42,24 +42,24 @@ public interface DeliveryGenderRepository extends JpaRepository findByMailName(String taskName); + @Query(value = "from DeliveryGender where batchNo = ?1 order by id desc ") + List findByBatchNo(String batchNo); /** * 修改状态 * * @param num - * @param taskName + * @param batchNo * @return */ @Modifying - @Query("UPDATE DeliveryGender d set d.status = ?1 where d.taskName = ?2") - int updateStatusAndDecryptNum(Integer num, String taskName); + @Query("UPDATE DeliveryGender d set d.status = ?1 where d.batchNo = ?2") + int updateStatusByBatchNo(Integer num, String batchNo); /** * 修改状态 @@ -72,4 +72,31 @@ public interface DeliveryGenderRepository extends JpaRepository uploadFile(@RequestParam("file") MultipartFile[] files, @RequestParam(value = "taskName") String taskName) { return new ResponseEntity<>(deliveryGenderService.uploadFile(files, taskName), HttpStatus.OK); } + + + @ApiOperation(value = "兑换接口回调") + @PostMapping("/callback") + public CommonResponse queryNotApproved(@RequestBody @Validated GenderResponseDTO genderResponseDTO){ + log.info("================ The receiving batch number is {} ================", genderResponseDTO.getBatchId()); + return deliveryGenderService.resourceCallback(genderResponseDTO); + } + } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/gender/service/DeliveryGenderService.java b/eladmin-system/src/main/java/me/zhengjie/modules/gender/service/DeliveryGenderService.java index 1a3491d..f843948 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/gender/service/DeliveryGenderService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/gender/service/DeliveryGenderService.java @@ -15,16 +15,18 @@ */ package me.zhengjie.modules.gender.service; +import me.zhengjie.common.http.CommonResponse; import me.zhengjie.modules.gender.domain.DeliveryGender; import me.zhengjie.modules.gender.service.dto.DeliveryGenderDto; import me.zhengjie.modules.gender.service.dto.DeliveryGenderQueryCriteria; +import me.zhengjie.modules.gender.service.dto.GenderResponseDTO; import org.springframework.data.domain.Pageable; import org.springframework.web.multipart.MultipartFile; -import java.util.Map; -import java.util.List; -import java.io.IOException; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; +import java.util.Map; /** * @website https://el-admin.vip @@ -107,4 +109,13 @@ public interface DeliveryGenderService { * @param taskName */ Boolean updateStatusByTaskName(String downUrl, String zipPath, Integer number, String taskName); + + + /** + * 接收数据 + * + * @param genderResponseDTO + * @return + */ + CommonResponse resourceCallback(GenderResponseDTO genderResponseDTO); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/gender/service/dto/ExchangeGenderDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/gender/service/dto/ExchangeGenderDTO.java new file mode 100644 index 0000000..e7eb44f --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/gender/service/dto/ExchangeGenderDTO.java @@ -0,0 +1,43 @@ +package me.zhengjie.modules.gender.service.dto; + +import com.google.gson.annotations.SerializedName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author Enzo + * @date : 2023/5/9 + */ +@Data +@Builder +public class ExchangeGenderDTO implements Serializable { + + @SerializedName("req_id") + private String reqId; + + @ApiModelProperty("批次号") + @SerializedName("batch_id") + private String batchId; + + @SerializedName("org_code") + private String orgCode; + + + @SerializedName("level") + private Integer level = 0; + + + @SerializedName("datas") + private List datas; + + @lombok.Data + public static class Data { + @SerializedName("data") + private String data; + } + +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/gender/service/dto/GenderResponseDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/gender/service/dto/GenderResponseDTO.java new file mode 100644 index 0000000..5d10d54 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/gender/service/dto/GenderResponseDTO.java @@ -0,0 +1,38 @@ +package me.zhengjie.modules.gender.service.dto; + +import com.google.gson.annotations.SerializedName; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.util.List; + +/** + * @author Enzo + * @date : 2023/5/9 + */ +@Data +public class GenderResponseDTO { + @SerializedName("req_id") + private String reqId; + + @NotBlank + @SerializedName("bath_id") + private String batchId; + + @SerializedName("org_code") + private String orgCode; + + @SerializedName("result") + private Integer result; + + + @SerializedName("datas") + private List datas; + @lombok.Data + public static class Data { + @SerializedName("data") + private String data; + } + + +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/gender/service/dto/SetCallBackDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/gender/service/dto/SetCallBackDTO.java new file mode 100644 index 0000000..0a51e66 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/gender/service/dto/SetCallBackDTO.java @@ -0,0 +1,27 @@ +package me.zhengjie.modules.gender.service.dto; + +import com.google.gson.annotations.SerializedName; +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author Enzo + * @date : 2023/5/9 + */ +@Data +@Builder +public class SetCallBackDTO implements Serializable { + + @SerializedName("req_id") + private String reqId; + + @SerializedName("org_code") + private String orgCode; + + @SerializedName("call_back_url") + private String callBackUrl; + + +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/gender/service/impl/DeliveryGenderServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/gender/service/impl/DeliveryGenderServiceImpl.java index 093db88..59f26b6 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/gender/service/impl/DeliveryGenderServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/gender/service/impl/DeliveryGenderServiceImpl.java @@ -15,28 +15,38 @@ */ package me.zhengjie.modules.gender.service.impl; +import cn.hutool.core.codec.Base64; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.csv.CsvUtil; +import cn.hutool.core.text.csv.CsvWriter; +import cn.hutool.core.util.*; +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONUtil; +import com.google.common.base.Joiner; +import com.google.common.base.Splitter; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import me.zhengjie.common.http.CommonResponse; import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.constant.FileConstant; import me.zhengjie.modules.gender.config.properties.DeliveryProperties; import me.zhengjie.modules.gender.domain.DeliveryGender; +import me.zhengjie.modules.gender.domain.DeliveryGenderBatchNo; +import me.zhengjie.modules.gender.repository.DeliveryGenderBatchNoRepository; import me.zhengjie.modules.gender.repository.DeliveryGenderRepository; import me.zhengjie.modules.gender.service.DeliveryGenderService; import me.zhengjie.modules.gender.service.dto.DeliveryGenderDto; import me.zhengjie.modules.gender.service.dto.DeliveryGenderQueryCriteria; +import me.zhengjie.modules.gender.service.dto.ExchangeGenderDTO; +import me.zhengjie.modules.gender.service.dto.GenderResponseDTO; import me.zhengjie.modules.gender.service.mapstruct.DeliveryGenderMapper; import me.zhengjie.modules.uploadnew.util.AESUtils; import me.zhengjie.modules.uploadnew.util.ToolExcelUtils; import me.zhengjie.modules.uploadnew.util.TxtUtils; -import me.zhengjie.modules.uploadnew.util.ZipUtils; +import me.zhengjie.utils.PageUtil; import me.zhengjie.utils.*; import org.apache.commons.lang3.StringUtils; import org.springframework.data.domain.Page; @@ -48,11 +58,12 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @author Enzo @@ -65,6 +76,10 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class DeliveryGenderServiceImpl implements DeliveryGenderService { + private final Lock lock = new ReentrantLock(); + + private final DeliveryGenderBatchNoRepository deliveryGenderBatchNoRepository; + private final DeliveryGenderRepository deliveryGenderRepository; private final DeliveryGenderMapper deliveryGenderMapper; @@ -139,7 +154,9 @@ public class DeliveryGenderServiceImpl implements DeliveryGenderService { @Override @SneakyThrows + @Transactional(rollbackFor = Exception.class) public Boolean uploadFile(MultipartFile[] files, String taskName) { + if (files.length > 0) { List arrayList = Lists.newArrayList(); for (MultipartFile file : files) { @@ -166,37 +183,55 @@ public class DeliveryGenderServiceImpl implements DeliveryGenderService { if (stringList.size() < 100) { throw new BadRequestException("上传条数不能小于100条"); } - // 每次500000 数据 - List> partition = Lists.partition(stringList, 500000); + // 每次1000 数据 + List> partition = Lists.partition(stringList, 1000); + Long deliveryRecordId = this.saveDeliveryRecord(taskName, stringList.size(), SecurityUtils.getCurrentUserId(), 1); for (List 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); + String batch = redisUtils.acquisitionBatch(CacheKey.GR_REQUEST_TYPE); + List dataList = Lists.newArrayList(); + list.forEach(encipherDTO -> { + ExchangeGenderDTO.Data data = new ExchangeGenderDTO.Data(); + data.setData(Base64.encode(encipherDTO)); + dataList.add(data); + }); + String randomString = RandomUtil.randomString(12); + ExchangeGenderDTO build = ExchangeGenderDTO.builder().batchId(batch).reqId + (randomString).level(0).orgCode(deliveryProperties.getOrgCode()).datas(dataList).build(); + String post = HttpUtil.post(deliveryProperties.getSubmitUrl(), JSONUtil.toJsonStr(build)); + log.info("============ the submit result as {} =========", JSONUtil.toJsonStr(post)); + this.saveBatchNoRecord(batch, list.size(), randomString, deliveryRecordId); } + return Boolean.TRUE; } return Boolean.FALSE; } - public Boolean saveDeliveryRecord(String taskImeiName, String sendMailName, Integer num, Long currentUserId, Integer type) { + private void saveBatchNoRecord(String batch, Integer size, String randomString, Long deliveryRecordId) { + DeliveryGenderBatchNo batchNo = new DeliveryGenderBatchNo(); + batchNo.setNum(size); + batchNo.setStatus(0); + batchNo.setBatchNo(batch); + batchNo.setRequestId(randomString); + batchNo.setDeliveryId(deliveryRecordId); + deliveryGenderBatchNoRepository.save(batchNo); + } + + public Long saveDeliveryRecord(String taskImeiName, 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; + return deliveryGenderRepository.save(deliveryRecord).getId(); } @Override public DeliveryGender findByMailName(String taskName) { // 防止重复提交数据 List byTaskName = - deliveryGenderRepository.findByMailName(taskName); + deliveryGenderRepository.findByBatchNo(taskName); return CollUtil.isNotEmpty(byTaskName) ? byTaskName.get(0) : null; } @@ -205,5 +240,80 @@ public class DeliveryGenderServiceImpl implements DeliveryGenderService { return deliveryGenderRepository.updateStatusAndDownUrlByTaskName(downUrl, zipPath, number, taskName) > 0; } -} + @Override + @SneakyThrows + @Transactional(rollbackFor = Exception.class) + public CommonResponse resourceCallback(GenderResponseDTO genderResponseDTO) { + String batchId = genderResponseDTO.getBatchId(); + if (StringUtils.isNotBlank(batchId)) { + batchId = batchId.substring(0, batchId.lastIndexOf(StrUtil.DASHED)); + } + List dataList = genderResponseDTO.getDatas(); + Object objCache = redisUtils.get(batchId); + if (ObjectUtil.isNotNull(objCache)) { + return CommonResponse.createByErrorCodeMessage(400, "该批次已解析"); + } + // 设置五分钟缓存 + redisUtils.set(batchId, batchId, 20, TimeUnit.MINUTES); + List csvList = Lists.newArrayList(); + List byMailName = deliveryGenderBatchNoRepository.findByBatchNo(batchId); + lock.lock(); + try { + if (CollUtil.isNotEmpty(byMailName)) { + DeliveryGenderBatchNo batchNo = byMailName.get(0); + DeliveryGender deliveryGender = deliveryGenderRepository.findById(batchNo.getDeliveryId()).orElseGet(DeliveryGender::new); + if (ObjectUtil.isNotNull(deliveryGender)) { + String downPath = deliveryGender.getDownPath(); + for (GenderResponseDTO.Data data : dataList) { + if (StringUtils.isNotBlank(data.getData())) { + List stringList = Splitter.on(StrUtil.COMMA).trimResults() + .omitEmptyStrings().splitToList(Base64.decodeStr(data.getData())); + String decrypt = AESUtils.dbDecrypt + (FileConstant.AES_PASSWORD, stringList.get(0)); + String aesEncrypt = EncryptUtil.aesEncrypt(decrypt, FileConstant.PLAT_DECRYPTION); + List collect = Stream.of(aesEncrypt, stringList.get(1)).collect(Collectors.toList()); + String join = Joiner.on(StrUtil.COMMA).skipNulls().join(collect); + csvList.add(join); + } + } + if (StringUtils.isNotBlank(downPath)) { + // 解压文件 + String unzipPath = CompressUtil.unzipFiles + (deliveryProperties.getFileUrl(), downPath, null); + File unzipFile = new File(unzipPath); + File parseFile = Objects.requireNonNull + (unzipFile.listFiles())[0]; + FileUtil.writeToCsv(csvList, parseFile.getPath(), Boolean.TRUE); + // 设置压缩文件 + CompressUtil.decryptionCompression(downPath, parseFile.getPath(), null); + batchNo.setStatus(1); + deliveryGenderBatchNoRepository.save(batchNo); + return CommonResponse.createBySuccess(); + } + // 首次加载 + String down = deliveryProperties.getFileUrl().concat(StrUtil.SLASH).concat(IdUtil.fastSimpleUUID()); + String csvPath = down.concat(StrUtil.DOT).concat(FileConstant.CSV_FILE_SUB_NAME); + String zipPath = down.concat(StrUtil.DOT).concat(FileConstant.ZIP_FILE_SUB_NAME); + CsvWriter writer = CsvUtil.getWriter(csvPath, CharsetUtil.CHARSET_UTF_8); + writer.write(csvList); + writer.close(); + // 设置压缩文件 + CompressUtil.decryptionCompression(zipPath, csvPath, null); + String filePath = zipPath.substring + (zipPath.lastIndexOf(StrUtil.SLASH) + 1); + String downUrl = deliveryProperties.getDownPath().concat(filePath); + batchNo.setStatus(1); + deliveryGenderBatchNoRepository.save(batchNo); + deliveryGenderRepository.updateDownUrlAndStatusById(downUrl, 1, zipPath, deliveryGender.getId()); + log.info("================ change down url {} zip url {} ================", zipPath, filePath); + return CommonResponse.createBySuccess(); + } + } + } finally { + lock.unlock(); + } + return CommonResponse.createByErrorMessage("该批次不存在"); + } + +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/gender/task/GenderConversionTask.java b/eladmin-system/src/main/java/me/zhengjie/modules/gender/task/GenderConversionTask.java index d293a89..7936e20 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/gender/task/GenderConversionTask.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/gender/task/GenderConversionTask.java @@ -57,8 +57,11 @@ public class GenderConversionTask { private final DeliveryGenderService deliveryGenderService; + /** + * @date 2023-8-2 + * Example Modify an email as an interface + */ @SneakyThrows - @Scheduled(cron = "0 0/15 * * * ? ") @Transactional(rollbackFor = Exception.class) public void receiveMail() { // 获取邮件内容 @@ -111,7 +114,7 @@ public class GenderConversionTask { if (StringUtils.isNotBlank(byTaskName.getDownPath())) { FileUtil.writeToCsv(joinList, parseFile.getPath(), Boolean.TRUE); // 设置压缩文件 - CompressUtil.decryptionCompression(path, parseFile.getPath(), null); + CompressUtil.decryptionCompression(byTaskName.getDownPath(), parseFile.getPath(), null); deliveryGenderService.update(byTaskName); return; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java index 54ff01e..3e9fc69 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java @@ -119,7 +119,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { .antMatchers("/druid/**").permitAll() // 放行发送短信接口 By Enzo .antMatchers("/api/tbSendSms/url/**").permitAll() - + .antMatchers("/api/deliveryGender/callback").permitAll() .antMatchers("/api/smsConfiguration/detail").permitAll() // 爬取数据请求 用户小程序过审 By Enzo .antMatchers("/api/consult/**").permitAll()