当前位置: 首页 > news >正文

【图库分析|第十天】扩展空间图库分析功能

本部分内容主要来源于鱼皮智能协图云图库部分,并在笔者个人项目学习的基础上进行扩展衍生。由于项目开发文档已经足够详细,因此这里只记录要点。

这部分内容后端较为简单,主要是熟悉业务流程,开发思路,以及mybatisplus,stream流的使用(以后一定需要找个时间专门补补)。

方案设计

1、分析类需求的实现流程

对于分析类需求,实现流程几乎都是一致的,包括:

1)数据采集:从数据源(比如 MySQL 数据库或者大数据仓库)获取原始数据。要提前明确涉及的表和字段,必要时采用分页查询处理大数据量。

2)数据预处理:对数据进行清洗、加工和格式化,包括过滤无效数据(比如逻辑删除或审核未通过)、解析复杂字段(比如 JSON 格式的 tags),以及通过字段关联补充上下文信息。

3)数据计算:根据需求进行分组、聚合、排序等,从而计算关键指标,比如计算空间各分类图片的占用比例、用户上传图片的时间趋势。可以根据场景调整计算方案,比如对于大数据量的计算,可以采用 Spark 之类的大数据计算组件做离线计算;对于数据实时性要求较高的实时分析场景,可以用 Flink 做流式处理。

4)数据存储(可选):针对频繁查询的分析结果,可将结果数据存储为单独的表或缓存,减少重复计算,提高查询效率。

5)数据接口设计:为前端提供统一接口,从而支持查询和展示。需要考虑到数据量较大导致前端渲染卡顿的情况,可以按需精简返回的字符串、分页查询等。

6)数据可视化:通过图表直观展示分析结果,前端可以使用 Apache ECharts 等可视化库渲染。当然也可以让后端生成图表图片并返回,但这种实现方法的灵活度有限。

后续还可以根据用户的反馈持续优化分析逻辑、增加指标或改进性能。

具体业务流程为:设计reuqest——>设计vo——>serviceimpl实现——>接口编写

对于serviceimpl实现:校验合法性(包括是否为空,权限校验等)——>编写wrapper——>

进行查询——>stream流处理查询结果

在这个模块开发中,通过分析需求写注释再借助ai就显得至关重要了。

典型样例:空间图片分类分析

开发请求封装类。分类分析只需要传递空间范围相关参数,因此可以直接继承公共的SpaceAnalyzeRequest

@EqualsAndHashCode(callSuper = true) @Data public class SpaceCategoryAnalyzeRequest extends SpaceAnalyzeRequest { }

2)开发响应视图类。分类分析的结果需要返回图片分类、分类图片数量和分类图片总大小:

@Data @AllArgsConstructor @NoArgsConstructor public class SpaceCategoryAnalyzeResponse implements Serializable { private String category; private Long count; private Long totalSize; private static final long serialVersionUID = 1L; }

3)开发 Service 服务。按照分类分组查询图片表的数据,注意查询数据库时只获取需要的字段即可:

@Override public List<SpaceCategoryAnalyzeResponse> getSpaceCategoryAnalyze(SpaceCategoryAnalyzeRequest spaceCategoryAnalyzeRequest, User loginUser) { ThrowUtils.throwIf(spaceCategoryAnalyzeRequest == null, ErrorCode.PARAMS_ERROR); checkSpaceAnalyzeAuth(spaceCategoryAnalyzeRequest, loginUser); QueryWrapper<Picture> queryWrapper = new QueryWrapper<>(); fillAnalyzeQueryWrapper(spaceCategoryAnalyzeRequest, queryWrapper); queryWrapper.select("category AS category", "COUNT(*) AS count", "SUM(picSize) AS totalSize") .groupBy("category"); return pictureService.getBaseMapper().selectMaps(queryWrapper) .stream() .map(result -> { String category = result.get("category") != null ? result.get("category").toString() : "未分类"; Long count = ((Number) result.get("count")).longValue(); Long totalSize = ((Number) result.get("totalSize")).longValue(); return new SpaceCategoryAnalyzeResponse(category, count, totalSize); }) .collect(Collectors.toList()); }

💡 建议在编写具体的代码前,先编写示例 SQL 语句,并通过数据库查询客户端来验证。

4)开发接口:

@PostMapping("/category") public BaseResponse<List<SpaceCategoryAnalyzeResponse>> getSpaceCategoryAnalyze(@RequestBody SpaceCategoryAnalyzeRequest spaceCategoryAnalyzeRequest, HttpServletRequest request) { ThrowUtils.throwIf(spaceCategoryAnalyzeRequest == null, ErrorCode.PARAMS_ERROR); User loginUser = userService.getLoginUser(request); List<SpaceCategoryAnalyzeResponse> resultList = spaceAnalyzeService.getSpaceCategoryAnalyze(spaceCategoryAnalyzeRequest, loginUser); return ResultUtils.success(resultList); }

http://www.jsqmd.com/news/326328/

相关文章:

  • 贵溪市英语雅思培训机构推荐,2026权威测评出国雅思辅导机构口碑榜单
  • 投递记录 99+ 却没回音?小心落入“求职黑洞”:系统正悄悄隐藏你的简历,只因你漏填了这一项
  • 计算机等级考试(三级Linux技术)--- 真题综合题集合
  • 2026最全 Java 面试八股文汇总
  • 2026年女式西装品牌推荐:智美女性趋势评测,涵盖商务与宴会场景风格痛点
  • 盲盒小程序对对碰玩法介绍说明~
  • 湖南广告公司哪家效果更优?2026年基于实战案例的深度排名与推荐解析
  • npm 安装 canvas 报错 node-gyp ERR! 的解决方法(Windows 系统) - 详解
  • AA游戏脚本规范(AA Game Script)
  • 【SSM毕设全套源码+文档】基于ssm的学生选课管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 义乌雷硕包装制品有限公司 联系方式:官方联系途径及通用合作须知
  • 2026年女式西装品牌推荐:职场多场景评测,解决廓形与质感痛点并附排名
  • 明文泄露与暗网截屏:什么是可行动的,什么不是
  • 2026年女式西装品牌推荐:基于行业趋势与面料评价,直击剪裁与舒适痛点
  • 湖北广告公司哪家效果更优?2026年推荐与排名,解决增长与合规核心痛点
  • 2026年杭州周边眼镜城排名,不错的眼镜城中心价格多少钱?
  • 义乌雷硕包装制品有限公司 联系方式: 业务咨询与风险防范的几点提示
  • 如何解决Vite打包后静态资源(图片/字体)报404找不到的问题
  • 如何选择适配不同行业的广告公司?2026年湖北广告公司全面推荐与评测
  • 说说杭州镜视界眼镜城,品牌多、口碑好,配镜选购哪家更靠谱?
  • 2026年湖北广告公司推荐:本地化营销场景深度评测与权威排名解析
  • 2026年北京瑜伽馆推荐:健康生活趋势评测,涵盖塑形与理疗场景核心痛点
  • 2026年湖南广告公司专项甄选报告:头部优质机构全景梳理及专业选型指南
  • 摩耶上门按摩 联系方式:了解服务范围与官方渠道
  • 导师严选8个降AI率平台,千笔·专业降AI率智能体助你精准降AIGC
  • 收藏!AI 大模型时代,Java 程序员的高薪转型之路(小白必看)
  • 2026年河南小磨香油加工厂性价比排行,揭秘哪家更值得选
  • 龙牡壮骨营养棒怎么样?72年国民药企的“硬核”营养新选择
  • 【收藏必看】AI Agent实战指南:30个智能体应用案例助力企业数字化转型与技术选型
  • 华为OD技术面真题 - Mysql - 4