智能协同云图库第七章小功能点

用户上传图片到隐私空间,需要管理员审核

通过策略模式反向优化审核流程,第七章完成后使用非管理员用户登陆测试下结果发现上传图片到隐私空间怎么还需要通过管理员审核?

用户上传图片到隐私空间无需审核才对,业务流程

Java
复制代码
图片先上传到后台(这一步在后台空间已经可以看到了) | | -> 页面停留在填写图片信息页面(此时调用的是编辑接口) | | -> 编辑后fileReviewParams重新填充参数(非管理审核不通过)

灵感来源于这两位老哥

img

主打区分开公共图库和私人图库的审核流程,换句话说就是根据不同的场景采用不同的审核策略

这里我就想到了策略模式,同时在后面的团队合作空间的审核也可以通过此进行扩展

  1. 新建 review包(审核相关都放这里)
  2. 新建 ReviewStrateg接口
Java
复制代码
public interface ReviewStrategy { void review(Picture picture, User loginUser); }
  1. 新建PrivateSpaceReviewStrategy实现私人空间审核策略
typescript
复制代码
/** * @Author : wick * @Date : 2025/4/25 22:25 */ public class PrivateSpaceReviewStrategy implements ReviewStrategy{ @Override public void review(Picture picture, User loginUser) { // 隐私空间上传,不需要审核 picture.setReviewStatus(PictureReviewStatusEnum.PASS.getValue()); picture.setReviewerId(loginUser.getId()); picture.setReviewMessage("隐私空间无需审核,已通过"); picture.setReviewTime(new Date()); } }
  1. 新建PublicGalleryReviewStrategy实现公共空间审核策略
typescript
复制代码
/** * @Author : wick * @Date : 2025/4/25 22:27 */ public class PublicGalleryReviewStrategy implements ReviewStrategy{ @Override public void review(Picture picture, User loginUser) { if (Objects.equals(UserRoleEnum.getEnumByValue(loginUser.getUserRole()), UserRoleEnum.ADMIN)) { // 管理员自动通过审核 picture.setReviewStatus(PictureReviewStatusEnum.PASS.getValue()); picture.setReviewerId(loginUser.getId()); picture.setReviewMessage("管理员自动通过审核"); picture.setReviewTime(new Date()); } else { // 普通用户需要审核 picture.setReviewStatus(PictureReviewStatusEnum.REVIEWING.getValue()); } } }
  1. 新建PictureReviewExecutor策略执行器
java
复制代码
/** * @Author : wick * @Date : 2025/4/25 22:31 */ public class PictureReviewExecutor { private ReviewStrategy reviewStrategy; public PictureReviewExecutor(ReviewStrategy reviewStrategy) { this.reviewStrategy = reviewStrategy; } public void executeReview(Picture picture, User loginUser) { reviewStrategy.review(picture, loginUser); } }
  1. PictureService 修改fileReviewParams 方法
Java
复制代码
/** * 审核员填充参数 * 自动过审核 * * @param picture * @param loginUser *@param isPublicGallery */ void fileReviewParams(Picture picture, User loginUser, boolean isPublicGallery);
  1. 修改PictureServiceImplfileReviewParams方法
java
复制代码
@Override public void fileReviewParams(Picture picture, User loginUser, boolean isPublicGallery) { // 根据上传类型选择审核策略 ReviewStrategy reviewStrategy; if (isPublicGallery) { reviewStrategy = new PublicGalleryReviewStrategy(); } else { reviewStrategy = new PrivateSpaceReviewStrategy(); } // 使用策略执行审核 PictureReviewExecutor pictureReviewExecutor = new PictureReviewExecutor(reviewStrategy); pictureReviewExecutor.executeReview(picture, loginUser); }
  1. 注意PictureUpdateRequestPictureUploadRequestPictureEditRequest是否包含SpaceId
  2. 修改原先补充审核参数的方法,将空间ID作为判断依据
Java
复制代码
// 补充审核参数 boolean isPublicGallery = pictureEditRequest.getSpaceId() == null; this.fileReviewParams(picture, loginUser,isPublicGallery);
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
Sion
下载 APP