diff --git a/ruoyi-admin/src/main/java/com/ruoyi/consumer/FileDeleteConsumer.java b/ruoyi-admin/src/main/java/com/ruoyi/consumer/FileDeleteConsumer.java new file mode 100644 index 00000000..97cf3f66 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/consumer/FileDeleteConsumer.java @@ -0,0 +1,48 @@ + +package com.ruoyi.consumer; + +import com.alibaba.fastjson2.JSON; +import com.ruoyi.cai.mq.constant.FileDeleteHttpMqConstant; +import com.ruoyi.cai.mq.dto.FileDeleteDTO; +import com.ruoyi.oss.core.OssClient; +import com.ruoyi.oss.factory.OssFactory; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.amqp.rabbit.annotation.Exchange; +import org.springframework.amqp.rabbit.annotation.Queue; +import org.springframework.amqp.rabbit.annotation.QueueBinding; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +@Slf4j +public class FileDeleteConsumer { + + private final static String SERVICE = "tengxunyun"; + + + // ,containerFactory = "customContainerFactory" + @RabbitListener(bindings = @QueueBinding( + value = @Queue(value = FileDeleteHttpMqConstant.FILE_DELETE_QUEUE, durable = "false", autoDelete = "false"), + exchange = @Exchange(value = FileDeleteHttpMqConstant.FILE_DELETE_EXCHANGE), + key = FileDeleteHttpMqConstant.FILE_DELETE_KEY)) + public void calculateSalesQueue(String message) { + log.info("删除图片: message={}", message); + try { + OssClient storage = OssFactory.instance(); + FileDeleteDTO fileDeleteDTO = JSON.parseObject(message, FileDeleteDTO.class); + List deleteFilePathList = fileDeleteDTO.getDeleteFilePathList(); + if(CollectionUtils.isEmpty(deleteFilePathList)){ + return; + } + for (String filePath : deleteFilePathList) { + storage.delete(filePath); + } + }catch (Exception e){ + log.error("删除图片-失败: message=" + message,e); + } + log.info("删除图片-结束: message=" + message); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/UserCameraAuditController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/UserCameraAuditController.java index 73e48677..26fe4c6c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/UserCameraAuditController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/UserCameraAuditController.java @@ -96,7 +96,8 @@ public class UserCameraAuditController extends BaseController { @Log(title = "自拍认证", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R remove(@NotEmpty(message = "主键不能为空") - @PathVariable Integer[] ids) { - return toAjax(userCameraAuditService.removeBatchByIds(Arrays.asList(ids))); + @PathVariable Long[] ids) { + userCameraAuditService.deleteBatch(Arrays.asList(ids)); + return R.ok(); } } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/mq/AmqpHttpProducer.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/mq/AmqpHttpProducer.java index 41377560..3b80a266 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/mq/AmqpHttpProducer.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/mq/AmqpHttpProducer.java @@ -1,16 +1,19 @@ package com.ruoyi.cai.mq; import com.alibaba.fastjson.JSON; -import com.ruoyi.cai.mq.constant.CalculateSalesQueueHttpMqConstant; -import com.ruoyi.cai.mq.constant.CommonDelayHttpMqConstant; -import com.ruoyi.cai.mq.constant.CommonHttpMqConstant; -import com.ruoyi.cai.mq.constant.WindowHttpMqConstant; +import com.ruoyi.cai.mq.constant.*; +import com.ruoyi.cai.mq.dto.FileDeleteDTO; import com.ruoyi.cai.mq.handle.CommonDTO; import com.ruoyi.cai.mq.handleDelay.CommonDelayDto; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.time.LocalDateTime; +import java.util.Collections; +import java.util.List; + @Component public class AmqpHttpProducer { @Autowired @@ -31,6 +34,25 @@ public class AmqpHttpProducer { WindowHttpMqConstant.WINDOW_KEY, JSON.toJSONString(dto)); } + public void sendDeleteMq(List deleteFilePathList){ + if(CollectionUtils.isEmpty(deleteFilePathList)){ + return; + } + FileDeleteDTO fileDeleteDTO = new FileDeleteDTO(); + fileDeleteDTO.setDeleteFilePathList(deleteFilePathList); + fileDeleteDTO.setCreateTime(LocalDateTime.now()); + rabbitTemplate.convertAndSend(FileDeleteHttpMqConstant.FILE_DELETE_EXCHANGE, + FileDeleteHttpMqConstant.FILE_DELETE_KEY, JSON.toJSONString(fileDeleteDTO)); + } + + public void sendDeleteMq(String deleteFilePath){ + FileDeleteDTO fileDeleteDTO = new FileDeleteDTO(); + fileDeleteDTO.setDeleteFilePathList(Collections.singletonList(deleteFilePath)); + fileDeleteDTO.setCreateTime(LocalDateTime.now()); + rabbitTemplate.convertAndSend(FileDeleteHttpMqConstant.FILE_DELETE_EXCHANGE, + FileDeleteHttpMqConstant.FILE_DELETE_KEY, JSON.toJSONString(fileDeleteDTO)); + } + public void sendCommonDelayMq(T dto, Integer timeout){ rabbitTemplate.convertAndSend(CommonDelayHttpMqConstant.EXCHANGE_NAME, CommonDelayHttpMqConstant.ROUTING_KEY, diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/mq/constant/FileDeleteHttpMqConstant.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/mq/constant/FileDeleteHttpMqConstant.java new file mode 100644 index 00000000..40c4f8d8 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/mq/constant/FileDeleteHttpMqConstant.java @@ -0,0 +1,7 @@ +package com.ruoyi.cai.mq.constant; + +public class FileDeleteHttpMqConstant { + public final static String FILE_DELETE_QUEUE = "fileDeleteQueue"; + public final static String FILE_DELETE_EXCHANGE = "fileDeleteExchange"; + public final static String FILE_DELETE_KEY = "fileDeleteKey"; +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/mq/dto/FileDeleteDTO.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/mq/dto/FileDeleteDTO.java new file mode 100644 index 00000000..302b35c4 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/mq/dto/FileDeleteDTO.java @@ -0,0 +1,13 @@ +package com.ruoyi.cai.mq.dto; + +import com.ruoyi.cai.mq.handle.CommonDTO; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class FileDeleteDTO extends CommonDTO { + private List deleteFilePathList; + private LocalDateTime createTime; +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/DynamicImagesService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/DynamicImagesService.java index 3233f342..f0c3f1f6 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/DynamicImagesService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/DynamicImagesService.java @@ -3,6 +3,8 @@ package com.ruoyi.cai.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.cai.domain.DynamicImages; +import java.util.List; + /** * 附件Service接口 * @@ -11,5 +13,5 @@ import com.ruoyi.cai.domain.DynamicImages; */ public interface DynamicImagesService extends IService { - void removeByDynamicId(Long dynamicId); + List removeByDynamicId(Long dynamicId); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserCameraAuditService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserCameraAuditService.java index 3d99875f..c9657feb 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserCameraAuditService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserCameraAuditService.java @@ -30,4 +30,6 @@ public interface UserCameraAuditService extends IService { void auditFail(Long id); void auditBatchSuccess(List ids); + + void deleteBatch(List ids); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserPictureAuditService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserPictureAuditService.java index b3b54289..08351a86 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserPictureAuditService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserPictureAuditService.java @@ -24,4 +24,6 @@ public interface UserPictureAuditService extends IService { void auditFail(Long id); boolean batchSuccess(List ids); + + boolean removeBatch(List ids); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/DynamicImagesServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/DynamicImagesServiceImpl.java index 3743d102..3a534737 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/DynamicImagesServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/DynamicImagesServiceImpl.java @@ -2,7 +2,6 @@ package com.ruoyi.cai.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.cai.domain.Dynamic; import com.ruoyi.cai.domain.DynamicImages; import com.ruoyi.cai.manager.FileManager; import com.ruoyi.cai.mapper.DynamicImagesMapper; @@ -24,11 +23,11 @@ public class DynamicImagesServiceImpl extends ServiceImpl removeByDynamicId(Long dynamicId) { List list = this.list(Wrappers.lambdaQuery(DynamicImages.class).eq(DynamicImages::getDynamicId, dynamicId)); List urls = list.stream().map(DynamicImages::getUrl).collect(Collectors.toList()); this.remove(Wrappers.lambdaQuery(DynamicImages.class) .eq(DynamicImages::getDynamicId,dynamicId)); - fileManager.removeFile(urls); + return urls; } } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/DynamicServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/DynamicServiceImpl.java index c0ac8a66..65e648f5 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/DynamicServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/DynamicServiceImpl.java @@ -20,6 +20,7 @@ import com.ruoyi.cai.enums.SystemConfigEnum; import com.ruoyi.cai.manager.InnerUserFilter; import com.ruoyi.cai.manager.SystemConfigManager; import com.ruoyi.cai.mapper.DynamicMapper; +import com.ruoyi.cai.mq.AmqpHttpProducer; import com.ruoyi.cai.notice.YunxinHttpService; import com.ruoyi.cai.service.CitysService; import com.ruoyi.cai.service.DynamicImagesService; @@ -67,6 +68,8 @@ public class DynamicServiceImpl extends ServiceImpl impl private InnerUserFilter innerUserFilter; @Autowired private YunxinHttpService yunxinHttpService; + @Autowired + private AmqpHttpProducer amqpHttpProducer; @Override public void unTop(Long id){ @@ -194,7 +197,8 @@ public class DynamicServiceImpl extends ServiceImpl impl throw new ServiceException("只能删除自己的动态哦"); } this.removeById(id); - dynamicImagesService.removeByDynamicId(id); + List list = dynamicImagesService.removeByDynamicId(id); + amqpHttpProducer.sendDeleteMq(list); } @@ -222,7 +226,8 @@ public class DynamicServiceImpl extends ServiceImpl impl @Override public void deleteDynamicAdmin(Long id){ this.removeById(id); - dynamicImagesService.removeByDynamicId(id); + List list = dynamicImagesService.removeByDynamicId(id); + amqpHttpProducer.sendDeleteMq(list); } @Override diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserAlbumServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserAlbumServiceImpl.java index fba7fbd3..a0303df1 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserAlbumServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserAlbumServiceImpl.java @@ -16,6 +16,7 @@ import com.ruoyi.cai.enums.SystemConfigEnum; import com.ruoyi.cai.manager.FileManager; import com.ruoyi.cai.manager.SystemConfigManager; import com.ruoyi.cai.mapper.UserAlbumMapper; +import com.ruoyi.cai.mq.AmqpHttpProducer; import com.ruoyi.cai.service.UserAlbumService; import com.ruoyi.cai.service.UserService; import com.ruoyi.common.core.domain.PageQuery; @@ -44,6 +45,8 @@ public class UserAlbumServiceImpl extends ServiceImpl getUserAlbumSuccess(Long userId, Integer anchor){ LambdaQueryWrapper eq = Wrappers.lambdaQuery(UserAlbum.class) @@ -101,7 +104,7 @@ public class UserAlbumServiceImpl extends ServiceImpl userAlbums = this.listByIds(ids); List urls = userAlbums.stream().map(UserAlbum::getUrl).collect(Collectors.toList()); this.removeBatchByIds(ids); - fileManager.removeFile(urls); + producer.sendDeleteMq(urls); } @Override diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserCameraAuditServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserCameraAuditServiceImpl.java index 6cbe6804..6d28b662 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserCameraAuditServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserCameraAuditServiceImpl.java @@ -6,10 +6,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.cai.domain.User; import com.ruoyi.cai.domain.UserCameraAudit; +import com.ruoyi.cai.domain.UserPictureAudit; import com.ruoyi.cai.dto.admin.vo.UserCameraAuditAdminVo; import com.ruoyi.cai.dto.app.vo.CameraAuditVo; import com.ruoyi.cai.enums.AuditStatusEnum; import com.ruoyi.cai.mapper.UserCameraAuditMapper; +import com.ruoyi.cai.mq.AmqpHttpProducer; import com.ruoyi.cai.service.AnchorApplyService; import com.ruoyi.cai.service.UserCameraAuditService; import com.ruoyi.cai.service.UserService; @@ -22,6 +24,7 @@ import org.springframework.boot.autoconfigure.security.SecurityProperties; import org.springframework.stereotype.Service; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -48,6 +51,8 @@ public class UserCameraAuditServiceImpl extends ServiceImpl ids) { + List deleteFilePath = new ArrayList<>(); + List userCameraAudits = this.listByIds(ids); + for (UserCameraAudit userCameraAudit : userCameraAudits) { + boolean b = this.removeById(userCameraAudit.getId()); + if(b){ + deleteFilePath.add(userCameraAudit.getPhoto()); + } + } + producer.sendDeleteMq(deleteFilePath); + } } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserPictureAuditServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserPictureAuditServiceImpl.java index 854d8105..dead0043 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserPictureAuditServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserPictureAuditServiceImpl.java @@ -9,6 +9,7 @@ import com.ruoyi.cai.dto.admin.vo.user.UserPictureAuditAdminVo; import com.ruoyi.cai.enums.AuditStatusEnum; import com.ruoyi.cai.im.ImManager; import com.ruoyi.cai.mapper.UserPictureAuditMapper; +import com.ruoyi.cai.mq.AmqpHttpProducer; import com.ruoyi.cai.service.AnchorApplyService; import com.ruoyi.cai.service.UserPictureAuditService; import com.ruoyi.cai.service.UserService; @@ -19,6 +20,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; /** @@ -37,6 +39,8 @@ public class UserPictureAuditServiceImpl extends ServiceImpl ids) { + List deleteFilePath = new ArrayList<>(); + List userPictureAudits = this.listByIds(ids); + for (UserPictureAudit userPictureAudit : userPictureAudits) { + boolean b = this.removeById(userPictureAudit.getId()); + if(b){ + deleteFilePath.add(userPictureAudit.getUrl()); + } + } + producer.sendDeleteMq(deleteFilePath); + return true; + } }