diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/UserAlbumController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/UserAlbumController.java index c8691d9f..1051b24f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/UserAlbumController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/UserAlbumController.java @@ -1,8 +1,6 @@ package com.ruoyi.web.controller.cai.admin; import cn.dev33.satoken.annotation.SaCheckPermission; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.cai.domain.UserAlbum; import com.ruoyi.cai.dto.admin.query.BatchAuditReq; @@ -14,8 +12,6 @@ import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.page.TableDataInfo; -import com.ruoyi.common.core.validate.AddGroup; -import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.enums.BusinessType; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; @@ -23,8 +19,8 @@ import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; -import java.time.LocalDateTime; import java.util.Arrays; +import java.util.Collections; /** * 主播集锦 @@ -77,7 +73,7 @@ public class UserAlbumController extends BaseController { @PutMapping("/audit/fail") public R auditFail(@RequestBody UserAlbum bo) { // userAlbumService.auditFail(bo.getId()); - userAlbumService.removeAlbum(bo.getId()); + userAlbumService.removeAlbum(Collections.singletonList(bo.getId())); return R.ok(); } @@ -101,6 +97,7 @@ public class UserAlbumController extends BaseController { @DeleteMapping("/{ids}") public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { - return toAjax(userAlbumService.removeBatchByIds(Arrays.asList(ids))); + userAlbumService.removeAlbum(Arrays.asList(ids)); + return R.ok(); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/UserAppController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/UserAppController.java index d97fbd2c..5620a74e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/UserAppController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/UserAppController.java @@ -32,6 +32,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.Arrays; +import java.util.Collections; import java.util.List; @RestController @@ -133,7 +135,8 @@ public class UserAppController { @Operation(summary = "删除相册") @Log(title = "删除相册", businessType = BusinessType.OTHER, isSaveDb = true) public R userAlbumDel(@RequestBody IdReq res){ - return R.ok(userAlbumService.removeAlbum(res.getId())); + userAlbumService.removeAlbum(Collections.singletonList(res.getId())); + return R.ok(true); } @PostMapping("/album/add") diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/executor/ExecutorConstant.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/executor/ExecutorConstant.java index 8da041e4..7e6994e7 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/executor/ExecutorConstant.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/executor/ExecutorConstant.java @@ -22,8 +22,18 @@ public class ExecutorConstant { public static Executor COMMON_EXECUTOR; public static Executor SMS_EXECUTOR; public static Executor ROOM_EXECUTOR; + public static Executor FILE_EXECUTOR; static { + ThreadPoolExecutor fileExecutor = new ThreadPoolExecutor(CPU_NUM, + CPU_NUM << 2, + 5, + TimeUnit.SECONDS, + new ArrayBlockingQueue<>(50), + init("fileExecutor-%d"), + new ThreadPoolExecutor.CallerRunsPolicy()); + FILE_EXECUTOR = TtlExecutors.getTtlExecutor(fileExecutor); + ThreadPoolExecutor smsExecutor = new ThreadPoolExecutor(CPU_NUM, CPU_NUM << 2, 5, diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/FileManager.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/FileManager.java new file mode 100644 index 00000000..bb2fe7b6 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/FileManager.java @@ -0,0 +1,32 @@ +package com.ruoyi.cai.manager; + +import com.ruoyi.cai.executor.ExecutorConstant; +import com.ruoyi.oss.core.OssClient; +import com.ruoyi.oss.factory.OssFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.Collections; +import java.util.List; + +@Component +@Slf4j +public class FileManager { + + public void removeFile(String path){ + removeFile(Collections.singletonList(path)); + } + + public void removeFile(List pathList){ + ExecutorConstant.FILE_EXECUTOR.execute(() -> { + OssClient storage = OssFactory.instance(); + for (String path : pathList) { + try { + storage.delete(path); + }catch (Exception e){ + log.error("删除文件失败!path={}",path, e); + } + } + }); + } +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserAlbumService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserAlbumService.java index 6e8c1631..64049cc9 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserAlbumService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserAlbumService.java @@ -28,7 +28,7 @@ public interface UserAlbumService extends IService { boolean updateAlbum(AlbumUpdateReq res); - boolean removeAlbum(Long id); + void removeAlbum(List ids); boolean resetAlbum(List res, Long userId); 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 4e42a453..3743d102 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,11 +2,17 @@ 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; import com.ruoyi.cai.service.DynamicImagesService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.stream.Collectors; + /** * 附件Service业务层处理 * @@ -15,9 +21,14 @@ import org.springframework.stereotype.Service; */ @Service public class DynamicImagesServiceImpl extends ServiceImpl implements DynamicImagesService { + @Autowired + private FileManager fileManager; @Override public void 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); } } 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 50a179a4..fba7fbd3 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 @@ -1,7 +1,7 @@ package com.ruoyi.cai.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -13,6 +13,7 @@ import com.ruoyi.cai.dto.app.query.album.AlbumResetReq; import com.ruoyi.cai.dto.app.query.album.AlbumUpdateReq; import com.ruoyi.cai.enums.AuditStatusEnum; 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.service.UserAlbumService; @@ -24,6 +25,7 @@ import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -40,6 +42,8 @@ public class UserAlbumServiceImpl extends ServiceImpl getUserAlbumSuccess(Long userId, Integer anchor){ LambdaQueryWrapper eq = Wrappers.lambdaQuery(UserAlbum.class) @@ -90,8 +94,14 @@ public class UserAlbumServiceImpl extends ServiceImpl ids){ + if(CollectionUtils.isEmpty(ids)){ + return; + } + List userAlbums = this.listByIds(ids); + List urls = userAlbums.stream().map(UserAlbum::getUrl).collect(Collectors.toList()); + this.removeBatchByIds(ids); + fileManager.removeFile(urls); } @Override diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserGiftServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserGiftServiceImpl.java index a5c14f72..33fe681a 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserGiftServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserGiftServiceImpl.java @@ -7,6 +7,7 @@ import com.ruoyi.cai.dto.app.query.GiveGiftReq; import com.ruoyi.cai.dto.app.vo.index.UserGiftIndexVo; import com.ruoyi.cai.dto.commom.consumer.GiftConsumerResp; import com.ruoyi.cai.enums.ConsumeLogType; +import com.ruoyi.cai.enums.GenderEnum; import com.ruoyi.cai.manager.IdManager; import com.ruoyi.cai.manager.LockManager; import com.ruoyi.cai.mapper.UserGiftMapper; @@ -69,6 +70,10 @@ public class UserGiftServiceImpl extends ServiceImpl i if(anchor == null){ throw new ServiceException("只能给主播送礼物哦"); } + User fromUser = userService.getById(fromUserId); + if(!GenderEnum.MAN.getCode().equals(fromUser.getGender())){ + throw new ServiceException("非男用户不能给主播送礼物哦"); + } String guardLock = LockManager.getSendGuardLock(fromUserId); RLock lock = redissonClient.getLock(guardLock); if(lock.isLocked()){ @@ -78,7 +83,6 @@ public class UserGiftServiceImpl extends ServiceImpl i resp.setGift(gift); try { lock.lock(3, TimeUnit.SECONDS); - User fromUser = userService.getById(fromUserId); Long price = gift.getPrice(); Long traceId = IdManager.nextId(); Long giftAmount = query.getGiftCount() * price;