智能协同云图库项目学习日记&&无意间碰到了个隐藏BUG(已解决)
起因:今天在学习智能协同云图库项目的时候,测试了一下用普通用户注册、登录、创建个人私有空间,这一切都是正常的。
发现BUG:我用 普通用户 账号在私人空间页面创建图片之后,重新进入私有空间,发现刚刚创建的图片加载不出来;之后登录管理员账户,按照私人空间创建图片的流程走了一遍,数据又能正常显示出来,思考过后认为是权限校验出了问题。
解决BUG:调试了前端,发现没有BUG,不是请求参数的问题,这个时候我断定问题肯定在后端了。首先我看了一下后端的接口是不是打了权限校验注解,发现并没有打,也就是所有人都能正常访问的接口,之后我又看了前端代码调用后端代码的接口是正确的,仔细检查了一下传递的参数也是没问题的;问题就只能出现在后端了,我通过打断点、查看日志,也没发现有什么问题;最后我在无意间查了一下管理员、普通用户的空间ID号,进入数据库的picture表通过筛选两个空间ID的图片进行比对数据的差异性,最后发现普通用户创建的图片默认是不过审的,普通用户在私有空间创建的图片没有审核人、审核信息、审核状态,均设置成了NULL,然后我查看了一下Service实现类的查询语句,发现是Sql语句需要更改,这个时候因为有了私有空间的概念,查询的时候需要根据私有空间的ID进行条件过滤。
感悟BUG:跟着教程学习的时候,对于新的逻辑需要特别留意,因为可能导致之前写过的功能出现异常,这也需要我们经常“回头看”,确保新的逻辑不影响之前的功能。
最后我附上需要修改的文件和需要修改的片段代码 文件名: PictureServiceImpl.java
▼java复制代码/** * 将查询请求转换为QueryWrapper对象 * * @param pictureQueryRequest * @return */ @Override public QueryWrapper<Picture> getQueryWrapper(PictureQueryRequest pictureQueryRequest) { QueryWrapper<Picture> queryWrapper = new QueryWrapper<>(); if (pictureQueryRequest == null) { return queryWrapper; } // 从对象中取值 Long id = pictureQueryRequest.getId(); String name = pictureQueryRequest.getName(); String introduction = pictureQueryRequest.getIntroduction(); String category = pictureQueryRequest.getCategory(); List<String> tags = pictureQueryRequest.getTags(); Long picSize = pictureQueryRequest.getPicSize(); Integer picWidth = pictureQueryRequest.getPicWidth(); Integer picHeight = pictureQueryRequest.getPicHeight(); Double picScale = pictureQueryRequest.getPicScale(); String picFormat = pictureQueryRequest.getPicFormat(); String searchText = pictureQueryRequest.getSearchText(); Long userId = pictureQueryRequest.getUserId(); Integer reviewStatus = pictureQueryRequest.getReviewStatus(); String reviewMessage = pictureQueryRequest.getReviewMessage(); Long reviewerId = pictureQueryRequest.getReviewerId(); String sortField = pictureQueryRequest.getSortField(); String sortOrder = pictureQueryRequest.getSortOrder(); Long spaceId = pictureQueryRequest.getSpaceId(); boolean nullSpaceId = pictureQueryRequest.isNullSpaceId(); Date startEditTime = pictureQueryRequest.getStartEditTime(); Date endEditTime = pictureQueryRequest.getEndEditTime(); //如果是查询公共图库,则审核状态、审核人、审核信息需要不为空 if (spaceId == null) { // 从多字段中搜索 if (StrUtil.isNotBlank(searchText)) { // 需要拼接查询条件 queryWrapper.and(qw -> qw.like("name", searchText).or().like("introduction", searchText)); } queryWrapper.eq(ObjUtil.isNotEmpty(id), "id", id); queryWrapper.eq(ObjUtil.isNotEmpty(userId), "userId", userId); queryWrapper.like(StrUtil.isNotBlank(name), "name", name); queryWrapper.like(StrUtil.isNotBlank(introduction), "introduction", introduction); queryWrapper.like(StrUtil.isNotBlank(picFormat), "picFormat", picFormat); queryWrapper.like(StrUtil.isNotBlank(reviewMessage), "reviewMessage", reviewMessage); queryWrapper.eq(StrUtil.isNotBlank(category), "category", category); queryWrapper.eq(ObjUtil.isNotEmpty(picWidth), "picWidth", picWidth); queryWrapper.eq(ObjUtil.isNotEmpty(picHeight), "picHeight", picHeight); queryWrapper.eq(ObjUtil.isNotEmpty(picSize), "picSize", picSize); queryWrapper.eq(ObjUtil.isNotEmpty(picScale), "picScale", picScale); queryWrapper.eq(ObjUtil.isNotEmpty(reviewerId), "reviewerId", reviewerId); queryWrapper.eq(ObjUtil.isNotEmpty(reviewStatus), "reviewStatus", reviewStatus); queryWrapper.eq(ObjUtil.isNotEmpty(spaceId), "spaceId", spaceId); queryWrapper.isNull(nullSpaceId, "spaceId"); queryWrapper.ge(ObjUtil.isNotEmpty(startEditTime), "editTime", startEditTime); queryWrapper.lt(ObjUtil.isNotEmpty(endEditTime), "editTime", endEditTime); // JSON 数组查询 if (CollUtil.isNotEmpty(tags)) { for (String tag : tags) { queryWrapper.like("tags", "\"" + tag + "\""); } } // 排序 queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), sortOrder.equals("ascend"), sortField); } else { //如果是私有空间,则不需要查询审核状态、审核人、审核信息,因为默认为空 // 从多字段中搜索 if (StrUtil.isNotBlank(searchText)) { // 需要拼接查询条件 queryWrapper.and(qw -> qw.like("name", searchText).or().like("introduction", searchText)); } queryWrapper.eq(ObjUtil.isNotEmpty(id), "id", id); queryWrapper.eq(ObjUtil.isNotEmpty(userId), "userId", userId); queryWrapper.like(StrUtil.isNotBlank(name), "name", name); queryWrapper.like(StrUtil.isNotBlank(introduction), "introduction", introduction); queryWrapper.like(StrUtil.isNotBlank(picFormat), "picFormat", picFormat); queryWrapper.eq(StrUtil.isNotBlank(category), "category", category); queryWrapper.eq(ObjUtil.isNotEmpty(picWidth), "picWidth", picWidth); queryWrapper.eq(ObjUtil.isNotEmpty(picHeight), "picHeight", picHeight); queryWrapper.eq(ObjUtil.isNotEmpty(picSize), "picSize", picSize); queryWrapper.eq(ObjUtil.isNotEmpty(picScale), "picScale", picScale); queryWrapper.eq(ObjUtil.isNotEmpty(spaceId), "spaceId", spaceId); queryWrapper.isNull(nullSpaceId, "spaceId"); queryWrapper.ge(ObjUtil.isNotEmpty(startEditTime), "editTime", startEditTime); queryWrapper.lt(ObjUtil.isNotEmpty(endEditTime), "editTime", endEditTime); // JSON 数组查询 if (CollUtil.isNotEmpty(tags)) { for (String tag : tags) { queryWrapper.like("tags", "\"" + tag + "\""); } } // 排序 queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), sortOrder.equals("ascend"), sortField); } return queryWrapper; } ```
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
内容推荐
学习完智能协同云图库项目后,想改造成springcloudalibaba架构的微服务项目,微服务划分如下:依赖服务:- 注册中心与配置中心: Nacos(负责服务注册发现以及各服务的动态配置管理)- 微服务网关(yunpic-backend-gateway): Gateway 聚合所有接口,统一接收处理前端请求,负责路由转发、鉴权与限流公共模块:- common 公共模块(yunpic-backe
4
云图库-以图搜图失效解决
7
个人博客
4
我在做云图库项目到部署上线阶段时,前后端已经成功部署到宝塔云上,我也能成功通过我的域名正常访问云图库,注册新账户也是注册成功且远程数据库也有信息,但是用已有的账号登录总是显示系统错误。我看了下我的redis密码正确且服务是正常运行请问有人遇到过同样的问题吗?
3
智能协同云图库-进入编辑报错解决
4
作者分享
暂无数据
