添加mapper注释

This commit is contained in:
wh
2026-05-13 23:46:40 +08:00
parent 3619d34739
commit 954f9b14cf
11 changed files with 219 additions and 68 deletions

View File

@@ -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<AnnotationResult>,提供标注结果表的基础 CRUD 操作,
* 并扩展自定义的查询和更新方法。
*/
public interface AnnotationResultMapper extends BaseMapper<AnnotationResult> {
/**
* 根据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);
}
}

View File

@@ -5,7 +5,20 @@ import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.labelsys.backend.entity.AnnotationTask;
/**
* 标注任务数据访问层
*
* 继承 BaseMapper<AnnotationTask>,提供标注任务表的基础 CRUD 操作,
* 并扩展自定义的查询方法。
*/
public interface AnnotationTaskMapper extends BaseMapper<AnnotationTask> {
/**
* 根据ID和公司ID查询标注任务
*
* @param id 任务ID
* @param companyId 公司ID
* @return 标注任务信息,不存在返回 null
*/
AnnotationTask findByIdAndCompanyId(@Param("id") Long id, @Param("companyId") Long companyId);
}

View File

@@ -5,11 +5,35 @@ import com.labelsys.backend.entity.AnnotationTaskResource;
import java.util.List;
import org.apache.ibatis.annotations.Param;
/**
* 标注任务资源关联数据访问层
*
* 继承 BaseMapper<AnnotationTaskResource>,提供标注任务资源关联表的基础 CRUD 操作,
* 并扩展自定义的查询和删除方法。
*/
public interface AnnotationTaskResourceMapper extends BaseMapper<AnnotationTaskResource> {
/**
* 根据任务ID查询关联的资源ID列表
*
* @param taskId 任务ID
* @return 资源ID列表
*/
List<Long> 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);
}
}

View File

@@ -5,9 +5,28 @@ import com.labelsys.backend.entity.ImageBboxAnnotation;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 图像边界框标注数据访问层
*
* 继承 BaseMapper<ImageBboxAnnotation>,提供图像边界框标注表的基础 CRUD 操作,
* 并扩展自定义的查询和删除方法。
*/
@Mapper
public interface ImageBboxAnnotationMapper extends BaseMapper<ImageBboxAnnotation> {
/**
* 根据资源ID查询图像边界框标注
*
* @param resourceId 资源ID
* @return 图像边界框标注,不存在返回 null
*/
ImageBboxAnnotation selectByResourceId(@Param("resourceId") Long resourceId);
/**
* 根据资源ID删除图像边界框标注
*
* @param resourceId 资源ID
* @return 删除影响的行数
*/
int deleteByResourceId(@Param("resourceId") Long resourceId);
}

View File

@@ -5,9 +5,29 @@ import com.labelsys.backend.entity.SourceResource;
import java.util.List;
import org.apache.ibatis.annotations.Param;
/**
* 源资源数据访问层
*
* 继承 BaseMapper<SourceResource>,提供源资源表的基础 CRUD 操作,
* 并扩展自定义的查询方法。
*/
public interface SourceResourceMapper extends BaseMapper<SourceResource> {
/**
* 根据公司ID和资源ID列表查询资源
*
* @param companyId 公司ID
* @param resourceIds 资源ID列表
* @return 资源列表
*/
List<SourceResource> selectByCompanyIdAndIds(@Param("companyId") Long companyId, @Param("resourceIds") List<Long> resourceIds);
/**
* 根据公司ID和资源名称查询资源
*
* @param companyId 公司ID
* @param resourceName 资源名称
* @return 资源信息,不存在返回 null
*/
SourceResource selectByCompanyIdAndResourceName(@Param("companyId") Long companyId, @Param("resourceName") String resourceName);
}

View File

@@ -6,13 +6,41 @@ import com.labelsys.backend.enums.CompanyStatus;
import java.util.List;
import org.apache.ibatis.annotations.Param;
/**
* 公司数据访问层
*
* 继承 BaseMapper<SysCompany>,提供公司表的基础 CRUD 操作,
* 并扩展自定义的查询和更新方法。
*/
public interface SysCompanyMapper extends BaseMapper<SysCompany> {
/**
* 根据公司编码查询公司
*
* @param companyCode 公司编码
* @return 公司信息,不存在返回 null
*/
SysCompany findByCompanyCode(@Param("companyCode") String companyCode);
/**
* 根据手机号查询已启用的公司列表
*
* @param phone 手机号
* @return 已启用的公司列表
*/
List<SysCompany> findEnabledCompaniesByPhone(@Param("phone") String phone);
/**
* 更新公司状态
*
* @param id 公司ID
* @param status 公司状态
* @return 更新影响的行数
*/
int updateStatus(@Param("id") Long id, @Param("status") CompanyStatus status);
/**
* 删除所有公司(测试用)
*/
void deleteAll();
}

View File

@@ -4,11 +4,32 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.labelsys.backend.entity.SysConfig;
import org.apache.ibatis.annotations.Param;
/**
* 系统配置数据访问层
*
* 继承 BaseMapper<SysConfig>,提供系统配置表的基础 CRUD 操作,
* 并扩展自定义的查询方法。
*/
public interface SysConfigMapper extends BaseMapper<SysConfig> {
/**
* 根据公司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);
}
}

View File

@@ -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<SysMenu> {
List<SysMenu> listCurrentMenus(@Param("companyId") Long companyId, @Param("visiblePositions") List<String> visiblePositions);
}

View File

@@ -8,23 +8,85 @@ import com.labelsys.backend.enums.UserStatus;
import java.util.List;
import org.apache.ibatis.annotations.Param;
/**
* 用户数据访问层
*
* 继承 BaseMapper<SysUser>,提供用户表的基础 CRUD 操作,
* 并扩展自定义的查询和更新方法。
*/
public interface SysUserMapper extends BaseMapper<SysUser> {
/**
* 根据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<SysUser> 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();
}

View File

@@ -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<MenuResponse> listCurrentMenus(LoginUser currentUser) {
List<String> 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();
}
}

View File

@@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.labelsys.backend.mapper.SysMenuMapper">
<resultMap id="SysMenuResultMap" type="com.labelsys.backend.entity.SysMenu">
<id column="id" property="id"/>
<result column="company_id" property="companyId"/>
<result column="menu_code" property="menuCode"/>
<result column="menu_name" property="menuName"/>
<result column="path" property="path"/>
<result column="visible_positions" property="visiblePositions"/>
<result column="sort_order" property="sortOrder"/>
<result column="created_at" property="createdAt"/>
<result column="updated_at" property="updatedAt"/>
</resultMap>
<select id="listCurrentMenus" resultMap="SysMenuResultMap">
select m.id, m.company_id, m.menu_code, m.menu_name, m.path, m.visible_positions, m.sort_order, m.created_at, m.updated_at
from sys_menu m
where m.company_id = #{companyId}
and (
<foreach collection="visiblePositions" item="positionCode" separator=" or ">
concat(',', m.visible_positions, ',') like concat('%,', #{positionCode}, ',%')
</foreach>
)
order by m.sort_order, m.id
</select>
</mapper>