智能协同云图库第七章小功能点
用户上传图片到隐私空间,需要管理员审核
通过策略模式反向优化审核流程,第七章完成后使用非管理员用户登陆测试下结果发现上传图片到隐私空间怎么还需要通过管理员审核?
用户上传图片到隐私空间无需审核才对,业务流程
▼Java复制代码图片先上传到后台(这一步在后台空间已经可以看到了) | | -> 页面停留在填写图片信息页面(此时调用的是编辑接口) | | -> 编辑后fileReviewParams重新填充参数(非管理审核不通过)
灵感来源于这两位老哥
主打区分开公共图库和私人图库的审核流程,换句话说就是根据不同的场景采用不同的审核策略
这里我就想到了策略模式,同时在后面的团队合作空间的审核也可以通过此进行扩展
- 新建
review包(审核相关都放这里) - 新建
ReviewStrateg接口
▼Java复制代码public interface ReviewStrategy { void review(Picture picture, User loginUser); }
- 新建
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()); } }
- 新建
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()); } } }
- 新建
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); } }
PictureService修改fileReviewParams方法
▼Java复制代码/** * 审核员填充参数 * 自动过审核 * * @param picture * @param loginUser *@param isPublicGallery */ void fileReviewParams(Picture picture, User loginUser, boolean isPublicGallery);
- 修改
PictureServiceImpl的fileReviewParams方法
▼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); }
- 注意
PictureUpdateRequest、PictureUploadRequest、PictureEditRequest是否包含SpaceId - 修改原先补充审核参数的方法,将空间ID作为判断依据
▼Java复制代码// 补充审核参数 boolean isPublicGallery = pictureEditRequest.getSpaceId() == null; this.fileReviewParams(picture, loginUser,isPublicGallery);
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
内容推荐
学习完智能协同云图库项目后,想改造成springcloudalibaba架构的微服务项目,微服务划分如下:依赖服务:- 注册中心与配置中心: Nacos(负责服务注册发现以及各服务的动态配置管理)- 微服务网关(yunpic-backend-gateway): Gateway 聚合所有接口,统一接收处理前端请求,负责路由转发、鉴权与限流公共模块:- common 公共模块(yunpic-backe
4
云图库-以图搜图失效解决
7
个人博客
4
我在做云图库项目到部署上线阶段时,前后端已经成功部署到宝塔云上,我也能成功通过我的域名正常访问云图库,注册新账户也是注册成功且远程数据库也有信息,但是用已有的账号登录总是显示系统错误。我看了下我的redis密码正确且服务是正常运行请问有人遇到过同样的问题吗?
3
智能协同云图库-进入编辑报错解决
4
