From 954f9b14cff3f6f3867fa1c1c869a16967fc0c4f Mon Sep 17 00:00:00 2001 From: wh Date: Wed, 13 May 2026 23:46:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0mapper=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/AnnotationResultMapper.java | 32 +++++++++- .../backend/mapper/AnnotationTaskMapper.java | 13 ++++ .../mapper/AnnotationTaskResourceMapper.java | 26 +++++++- .../mapper/ImageBboxAnnotationMapper.java | 19 ++++++ .../backend/mapper/SourceResourceMapper.java | 20 ++++++ .../backend/mapper/SysCompanyMapper.java | 28 +++++++++ .../backend/mapper/SysConfigMapper.java | 23 ++++++- .../backend/mapper/SysMenuMapper.java | 11 ---- .../backend/mapper/SysUserMapper.java | 62 +++++++++++++++++++ .../labelsys/backend/service/MenuService.java | 26 -------- src/main/resources/mapper/SysMenuMapper.xml | 27 -------- 11 files changed, 219 insertions(+), 68 deletions(-) delete mode 100644 src/main/java/com/labelsys/backend/mapper/SysMenuMapper.java delete mode 100644 src/main/java/com/labelsys/backend/service/MenuService.java delete mode 100644 src/main/resources/mapper/SysMenuMapper.xml diff --git a/src/main/java/com/labelsys/backend/mapper/AnnotationResultMapper.java b/src/main/java/com/labelsys/backend/mapper/AnnotationResultMapper.java index 20b04c9..e4bda83 100644 --- a/src/main/java/com/labelsys/backend/mapper/AnnotationResultMapper.java +++ b/src/main/java/com/labelsys/backend/mapper/AnnotationResultMapper.java @@ -2,18 +2,46 @@ package com.labelsys.backend.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.labelsys.backend.entity.AnnotationResult; -import java.time.LocalDateTime; import org.apache.ibatis.annotations.Param; +/** + * 标注结果数据访问层 + * + * 继承 BaseMapper,提供标注结果表的基础 CRUD 操作, + * 并扩展自定义的查询和更新方法。 + */ public interface AnnotationResultMapper extends BaseMapper { + /** + * 根据ID和公司ID查询活跃的标注结果 + * + * @param id 结果ID + * @param companyId 公司ID + * @return 标注结果信息,不存在或已归档返回 null + */ AnnotationResult findActiveByIdAndCompanyId(@Param("id") Long id, @Param("companyId") Long companyId); + /** + * 标记标注结果为已归档 + * + * @param id 结果ID + * @param companyId 公司ID + * @param reviewerId 审核人ID + * @return 更新影响的行数 + */ int markArchived(@Param("id") Long id, @Param("companyId") Long companyId, @Param("reviewerId") Long reviewerId); + /** + * 标记标注结果为已审核并归档 + * + * @param id 结果ID + * @param companyId 公司ID + * @param reviewerId 审核人ID + * @return 更新影响的行数 + */ int markReviewedAndArchived(@Param("id") Long id, @Param("companyId") Long companyId, @Param("reviewerId") Long reviewerId); -} +} \ No newline at end of file diff --git a/src/main/java/com/labelsys/backend/mapper/AnnotationTaskMapper.java b/src/main/java/com/labelsys/backend/mapper/AnnotationTaskMapper.java index 35bd601..a4e7df9 100644 --- a/src/main/java/com/labelsys/backend/mapper/AnnotationTaskMapper.java +++ b/src/main/java/com/labelsys/backend/mapper/AnnotationTaskMapper.java @@ -5,7 +5,20 @@ import org.apache.ibatis.annotations.Param; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.labelsys.backend.entity.AnnotationTask; +/** + * 标注任务数据访问层 + * + * 继承 BaseMapper,提供标注任务表的基础 CRUD 操作, + * 并扩展自定义的查询方法。 + */ public interface AnnotationTaskMapper extends BaseMapper { + /** + * 根据ID和公司ID查询标注任务 + * + * @param id 任务ID + * @param companyId 公司ID + * @return 标注任务信息,不存在返回 null + */ AnnotationTask findByIdAndCompanyId(@Param("id") Long id, @Param("companyId") Long companyId); } \ No newline at end of file diff --git a/src/main/java/com/labelsys/backend/mapper/AnnotationTaskResourceMapper.java b/src/main/java/com/labelsys/backend/mapper/AnnotationTaskResourceMapper.java index 07c05e8..d55bc16 100644 --- a/src/main/java/com/labelsys/backend/mapper/AnnotationTaskResourceMapper.java +++ b/src/main/java/com/labelsys/backend/mapper/AnnotationTaskResourceMapper.java @@ -5,11 +5,35 @@ import com.labelsys.backend.entity.AnnotationTaskResource; import java.util.List; import org.apache.ibatis.annotations.Param; +/** + * 标注任务资源关联数据访问层 + * + * 继承 BaseMapper,提供标注任务资源关联表的基础 CRUD 操作, + * 并扩展自定义的查询和删除方法。 + */ public interface AnnotationTaskResourceMapper extends BaseMapper { + /** + * 根据任务ID查询关联的资源ID列表 + * + * @param taskId 任务ID + * @return 资源ID列表 + */ List listResourceIdsByTaskId(@Param("taskId") Long taskId); + /** + * 根据任务ID删除关联的资源记录 + * + * @param taskId 任务ID + * @return 删除影响的行数 + */ int deleteByTaskId(@Param("taskId") Long taskId); + /** + * 统计资源被任务关联的数量 + * + * @param resourceId 资源ID + * @return 关联数量 + */ int countByResourceId(@Param("resourceId") Long resourceId); -} +} \ No newline at end of file diff --git a/src/main/java/com/labelsys/backend/mapper/ImageBboxAnnotationMapper.java b/src/main/java/com/labelsys/backend/mapper/ImageBboxAnnotationMapper.java index 5149c82..6e7308d 100644 --- a/src/main/java/com/labelsys/backend/mapper/ImageBboxAnnotationMapper.java +++ b/src/main/java/com/labelsys/backend/mapper/ImageBboxAnnotationMapper.java @@ -5,9 +5,28 @@ import com.labelsys.backend.entity.ImageBboxAnnotation; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +/** + * 图像边界框标注数据访问层 + * + * 继承 BaseMapper,提供图像边界框标注表的基础 CRUD 操作, + * 并扩展自定义的查询和删除方法。 + */ @Mapper public interface ImageBboxAnnotationMapper extends BaseMapper { + + /** + * 根据资源ID查询图像边界框标注 + * + * @param resourceId 资源ID + * @return 图像边界框标注,不存在返回 null + */ ImageBboxAnnotation selectByResourceId(@Param("resourceId") Long resourceId); + /** + * 根据资源ID删除图像边界框标注 + * + * @param resourceId 资源ID + * @return 删除影响的行数 + */ int deleteByResourceId(@Param("resourceId") Long resourceId); } \ No newline at end of file diff --git a/src/main/java/com/labelsys/backend/mapper/SourceResourceMapper.java b/src/main/java/com/labelsys/backend/mapper/SourceResourceMapper.java index b6eefd7..8fe0778 100644 --- a/src/main/java/com/labelsys/backend/mapper/SourceResourceMapper.java +++ b/src/main/java/com/labelsys/backend/mapper/SourceResourceMapper.java @@ -5,9 +5,29 @@ import com.labelsys.backend.entity.SourceResource; import java.util.List; import org.apache.ibatis.annotations.Param; +/** + * 源资源数据访问层 + * + * 继承 BaseMapper,提供源资源表的基础 CRUD 操作, + * 并扩展自定义的查询方法。 + */ public interface SourceResourceMapper extends BaseMapper { + /** + * 根据公司ID和资源ID列表查询资源 + * + * @param companyId 公司ID + * @param resourceIds 资源ID列表 + * @return 资源列表 + */ List selectByCompanyIdAndIds(@Param("companyId") Long companyId, @Param("resourceIds") List resourceIds); + /** + * 根据公司ID和资源名称查询资源 + * + * @param companyId 公司ID + * @param resourceName 资源名称 + * @return 资源信息,不存在返回 null + */ SourceResource selectByCompanyIdAndResourceName(@Param("companyId") Long companyId, @Param("resourceName") String resourceName); } \ No newline at end of file diff --git a/src/main/java/com/labelsys/backend/mapper/SysCompanyMapper.java b/src/main/java/com/labelsys/backend/mapper/SysCompanyMapper.java index f5d5a9e..61307ab 100644 --- a/src/main/java/com/labelsys/backend/mapper/SysCompanyMapper.java +++ b/src/main/java/com/labelsys/backend/mapper/SysCompanyMapper.java @@ -6,13 +6,41 @@ import com.labelsys.backend.enums.CompanyStatus; import java.util.List; import org.apache.ibatis.annotations.Param; +/** + * 公司数据访问层 + * + * 继承 BaseMapper,提供公司表的基础 CRUD 操作, + * 并扩展自定义的查询和更新方法。 + */ public interface SysCompanyMapper extends BaseMapper { + /** + * 根据公司编码查询公司 + * + * @param companyCode 公司编码 + * @return 公司信息,不存在返回 null + */ SysCompany findByCompanyCode(@Param("companyCode") String companyCode); + /** + * 根据手机号查询已启用的公司列表 + * + * @param phone 手机号 + * @return 已启用的公司列表 + */ List findEnabledCompaniesByPhone(@Param("phone") String phone); + /** + * 更新公司状态 + * + * @param id 公司ID + * @param status 公司状态 + * @return 更新影响的行数 + */ int updateStatus(@Param("id") Long id, @Param("status") CompanyStatus status); + /** + * 删除所有公司(测试用) + */ void deleteAll(); } \ No newline at end of file diff --git a/src/main/java/com/labelsys/backend/mapper/SysConfigMapper.java b/src/main/java/com/labelsys/backend/mapper/SysConfigMapper.java index 2a81c2b..b0c998c 100644 --- a/src/main/java/com/labelsys/backend/mapper/SysConfigMapper.java +++ b/src/main/java/com/labelsys/backend/mapper/SysConfigMapper.java @@ -4,11 +4,32 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.labelsys.backend.entity.SysConfig; import org.apache.ibatis.annotations.Param; +/** + * 系统配置数据访问层 + * + * 继承 BaseMapper,提供系统配置表的基础 CRUD 操作, + * 并扩展自定义的查询方法。 + */ public interface SysConfigMapper extends BaseMapper { + /** + * 根据公司ID和配置名称查询配置 + * + * @param companyId 公司ID + * @param configName 配置名称 + * @return 配置信息,不存在返回 null + */ SysConfig findByCompanyIdAndConfigName(@Param("companyId") Long companyId, @Param("configName") String configName); + /** + * 根据公司ID、配置名称和类型查询配置 + * + * @param companyId 公司ID + * @param configName 配置名称 + * @param configType 配置类型 + * @return 配置信息,不存在返回 null + */ SysConfig findByCompanyIdAndConfigNameAndType(@Param("companyId") Long companyId, @Param("configName") String configName, @Param("configType") String configType); -} +} \ No newline at end of file diff --git a/src/main/java/com/labelsys/backend/mapper/SysMenuMapper.java b/src/main/java/com/labelsys/backend/mapper/SysMenuMapper.java deleted file mode 100644 index 823e073..0000000 --- a/src/main/java/com/labelsys/backend/mapper/SysMenuMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.labelsys.backend.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.labelsys.backend.entity.SysMenu; -import java.util.List; -import org.apache.ibatis.annotations.Param; - -public interface SysMenuMapper extends BaseMapper { - - List listCurrentMenus(@Param("companyId") Long companyId, @Param("visiblePositions") List visiblePositions); -} diff --git a/src/main/java/com/labelsys/backend/mapper/SysUserMapper.java b/src/main/java/com/labelsys/backend/mapper/SysUserMapper.java index 99624a2..264740d 100644 --- a/src/main/java/com/labelsys/backend/mapper/SysUserMapper.java +++ b/src/main/java/com/labelsys/backend/mapper/SysUserMapper.java @@ -8,23 +8,85 @@ import com.labelsys.backend.enums.UserStatus; import java.util.List; import org.apache.ibatis.annotations.Param; +/** + * 用户数据访问层 + * + * 继承 BaseMapper,提供用户表的基础 CRUD 操作, + * 并扩展自定义的查询和更新方法。 + */ public interface SysUserMapper extends BaseMapper { + /** + * 根据ID和公司ID查询用户 + * + * @param id 用户ID + * @param companyId 公司ID + * @return 用户信息,不存在返回 null + */ SysUser findByIdAndCompanyId(@Param("id") Long id, @Param("companyId") Long companyId); + /** + * 根据公司ID和手机号查询用户 + * + * @param companyId 公司ID + * @param phone 手机号 + * @return 用户信息,不存在返回 null + */ SysUser findByCompanyIdAndPhone(@Param("companyId") Long companyId, @Param("phone") String phone); + /** + * 查询公司管理员列表 + * + * @param companyId 公司ID + * @return 管理员用户列表 + */ List listCompanyAdmins(@Param("companyId") Long companyId); + /** + * 更新用户密码 + * + * @param id 用户ID + * @param companyId 公司ID + * @param passwordHash 加密后的密码 + * @param mustChangePassword 是否强制修改密码 + * @return 更新影响的行数 + */ int updatePassword(@Param("id") Long id, @Param("companyId") Long companyId, @Param("passwordHash") String passwordHash, @Param("mustChangePassword") boolean mustChangePassword); + /** + * 更新用户角色和岗位 + * + * @param id 用户ID + * @param companyId 公司ID + * @param role 角色 + * @param position 岗位 + * @return 更新影响的行数 + */ int updateAssignment(@Param("id") Long id, @Param("companyId") Long companyId, @Param("role") UserRole role, @Param("position") UserPosition position); + /** + * 更新用户状态 + * + * @param id 用户ID + * @param companyId 公司ID + * @param status 用户状态 + * @return 更新影响的行数 + */ int updateStatus(@Param("id") Long id, @Param("companyId") Long companyId, @Param("status") UserStatus status); + /** + * 增加会话版本号 + * + * @param id 用户ID + * @param companyId 公司ID + * @return 更新影响的行数 + */ int bumpSessionVersion(@Param("id") Long id, @Param("companyId") Long companyId); + /** + * 删除所有用户(测试用) + */ void deleteAll(); } \ No newline at end of file diff --git a/src/main/java/com/labelsys/backend/service/MenuService.java b/src/main/java/com/labelsys/backend/service/MenuService.java deleted file mode 100644 index fdae154..0000000 --- a/src/main/java/com/labelsys/backend/service/MenuService.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.labelsys.backend.service; - -import com.labelsys.backend.context.LoginUser; -import com.labelsys.backend.dto.response.MenuResponse; -import com.labelsys.backend.mapper.SysMenuMapper; -import java.util.List; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -@Service -@RequiredArgsConstructor -public class MenuService { - - private final SysMenuMapper sysMenuMapper; - - public List listCurrentMenus(LoginUser currentUser) { - List visiblePositions = java.util.Arrays.stream(com.labelsys.backend.enums.UserPosition.values()) - .filter(position -> currentUser.position().canAccess(position)) - .map(Enum::name) - .toList(); - return sysMenuMapper.listCurrentMenus(currentUser.companyId(), visiblePositions) - .stream() - .map(MenuResponse::from) - .toList(); - } -} diff --git a/src/main/resources/mapper/SysMenuMapper.xml b/src/main/resources/mapper/SysMenuMapper.xml deleted file mode 100644 index dde48e6..0000000 --- a/src/main/resources/mapper/SysMenuMapper.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - -