From b73eece682db4a3e2898ddec0a8d1bba4ea0ef6d Mon Sep 17 00:00:00 2001 From: otto <731554297@qq.com> Date: Fri, 22 May 2026 14:51:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(AI=E8=B5=84=E6=BA=90=E5=B9=BF=E5=9C=BA):?= =?UTF-8?q?=20=E6=A8=A1=E5=9E=8B=E5=92=8C=E6=95=B0=E6=8D=AE=E9=9B=86?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增资源(SKILL/模型/数据集)统计接口开发 --- .../common/controller/FrontController.java | 23 +++++++- .../domain/vo/UserResourceStatisticsVo.java | 22 +++++++ .../service/IZoneResourceService.java | 10 ++++ .../service/impl/ZoneResourceServiceImpl.java | 57 +++++++++++++++++++ 4 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/resource/domain/vo/UserResourceStatisticsVo.java diff --git a/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/common/controller/FrontController.java b/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/common/controller/FrontController.java index 446947aaf..cf4715e29 100644 --- a/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/common/controller/FrontController.java +++ b/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/common/controller/FrontController.java @@ -156,7 +156,7 @@ public class FrontController extends BaseController { @Log(title = "专区前台项目操作", businessType = BusinessType.UPDATE) @PutMapping("/editProject/{projectId}") @ApiOperation(value = "编辑项目聚合") - public AjaxResult editProject(@PathVariable("projectId") Long projectId,@RequestBody ZoneProjectFrontUpdateVo zoneProjectFrontUpdateVo) { + public AjaxResult editProject(@PathVariable("projectId") Long projectId, @RequestBody ZoneProjectFrontUpdateVo zoneProjectFrontUpdateVo) { return success(zoneProjectService.updateMyZoneProject(projectId, zoneProjectFrontUpdateVo.toZoneProjectUpdateVo())); } @@ -253,6 +253,25 @@ public class FrontController extends BaseController { @RequestParam(value = "reason", required = false) String reason) { return toAjax(zoneResourceService.takeUpAiResource(id, reason)); } + + /** + * 获取资源统计 + */ + @RequiresPermissions("zone:front:resource:query") + @GetMapping("/resourceStatistics") + @ApiOperation("获取资源统计") + @ApiImplicitParams({ + @ApiImplicitParam(name = "isMine", value = "是否查询我的资源(true-我的资源,false-专区资源)", paramType = "query", dataType = "boolean"), + @ApiImplicitParam(name = "zoneId", value = "专区ID", paramType = "query", dataType = "Long", required = true), + @ApiImplicitParam(name = "resourceCategory", value = "资源分类(SKILL/MODEL/DATASET),为空则查询所有", paramType = "query", dataType = "String") + }) + public GenericsAjaxResult resourceStatistics( + @ApiParam(name = "isMine", value = "是否查询我的资源") @RequestParam(value = "isMine", required = false) Boolean isMine, + @ApiParam(name = "zoneId") @RequestParam(value = "zoneId") Long zoneId, + @ApiParam(name = "resourceCategory") @RequestParam(value = "resourceCategory", required = false) String resourceCategory) { + return genericsSuccess(zoneResourceService.getResourceStatistics(zoneId, isMine, resourceCategory)); + } + /** * 点赞/取消点赞 */ @@ -326,7 +345,7 @@ public class FrontController extends BaseController { /** - * 查询我的资源详情 + * 查询资源是否点赞 */ @RequiresPermissions("zone:front:resource:query") @GetMapping("/{ids}/like") diff --git a/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/resource/domain/vo/UserResourceStatisticsVo.java b/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/resource/domain/vo/UserResourceStatisticsVo.java new file mode 100644 index 000000000..6501fae67 --- /dev/null +++ b/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/resource/domain/vo/UserResourceStatisticsVo.java @@ -0,0 +1,22 @@ +package com.microservices.zone.resource.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 用户资源统计信息VO + */ +@Data +@ApiModel("资源统计信息") +public class UserResourceStatisticsVo { + + @ApiModelProperty(value = "点赞总数") + private Integer likeCount; + + @ApiModelProperty(value = "已发布总数") + private Integer publishedCount; + + @ApiModelProperty(value = "待审核总数") + private Integer pendingCount; +} diff --git a/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/resource/service/IZoneResourceService.java b/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/resource/service/IZoneResourceService.java index 9116721c3..dcc8395ad 100644 --- a/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/resource/service/IZoneResourceService.java +++ b/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/resource/service/IZoneResourceService.java @@ -188,6 +188,16 @@ public interface IZoneResourceService { */ GenericsTableDataInfo selectAiDatasetResourceList(ZoneResource zoneResource); + /** + * 查询资源统计信息 + * + * @param zoneId 专区ID(isMine=false时使用) + * @param isMine 创建者(isMine=true时使用) + * @param resourceCategory 资源分类(SKILL/MODEL/DATASET/null表示所有) + * @return 统计信息 + */ + UserResourceStatisticsVo getResourceStatistics(Long zoneId, Boolean isMine, String resourceCategory); + /** * 下架AI资源 * diff --git a/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/resource/service/impl/ZoneResourceServiceImpl.java b/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/resource/service/impl/ZoneResourceServiceImpl.java index 1f972304b..a68162bb6 100644 --- a/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/resource/service/impl/ZoneResourceServiceImpl.java +++ b/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/resource/service/impl/ZoneResourceServiceImpl.java @@ -490,6 +490,63 @@ public class ZoneResourceServiceImpl implements IZoneResourceService { return PageUtils.toPage(list, x -> zoneResourceToData(x, true)); } + @Override + public UserResourceStatisticsVo getResourceStatistics(Long zoneId, Boolean isMine, String resourceCategory) { + String createBy = null; + if (isMine) { + createBy = SecurityUtils.getUsername(); + } + UserResourceStatisticsVo statistics = new UserResourceStatisticsVo(); + + // 构造查询条件 + ZoneResource likeQuery = new ZoneResource(); + likeQuery.setZoneId(zoneId); + if (StringUtils.isNotEmpty(createBy)) { + likeQuery.setCreateBy(createBy); + } + if (StringUtils.isNotEmpty(resourceCategory)) { + likeQuery.setResourceCategory(resourceCategory); + } + + // 查询点赞总数 + List resourceList = zoneResourceMapper.selectZoneResourceList(likeQuery); + int totalLikeCount = 0; + for (ZoneResource resource : resourceList) { + if (resource.getLikeCount() != null) { + totalLikeCount += resource.getLikeCount(); + } + } + statistics.setLikeCount(totalLikeCount); + + // 统计已发布数量 + ZoneResource publishedQuery = new ZoneResource(); + publishedQuery.setZoneId(zoneId); + if (StringUtils.isNotEmpty(createBy)) { + publishedQuery.setCreateBy(createBy); + } + if (StringUtils.isNotEmpty(resourceCategory)) { + publishedQuery.setResourceCategory(resourceCategory); + } + publishedQuery.setAuditStatus(ZoneConstants.RESOURCE_AUDIT_PASS); + Integer publishedCount = zoneResourceMapper.selectZoneResourceCount(publishedQuery); + statistics.setPublishedCount(publishedCount); + + // 统计待审核数量 + ZoneResource pendingQuery = new ZoneResource(); + pendingQuery.setZoneId(zoneId); + if (StringUtils.isNotEmpty(createBy)) { + pendingQuery.setCreateBy(createBy); + } + if (StringUtils.isNotEmpty(resourceCategory)) { + pendingQuery.setResourceCategory(resourceCategory); + } + pendingQuery.setAuditStatus(ZoneConstants.RESOURCE_NOT_AUDIT); + Integer pendingCount = zoneResourceMapper.selectZoneResourceCount(pendingQuery); + statistics.setPendingCount(pendingCount); + + return statistics; + } + @Override public int takeDownAiResource(Long id, String reason) { ZoneResource resource = getAiResourceById(id);