feat: 🎸 新建题库

This commit is contained in:
GoCo 2025-08-22 11:02:57 +08:00
parent 0d83336140
commit 049ee30611
4 changed files with 86 additions and 0 deletions

View File

@ -35,6 +35,8 @@ public final class EntityLinkConst {
public static final String EXAM = "exam"; public static final String EXAM = "exam";
// 课程 // 课程
public static final String COURSE = "course"; public static final String COURSE = "course";
// 题库
public static final String REPO = "repo";
} }
/** 资源类型 0:视频,1:图片,2:文档 */ /** 资源类型 0:视频,1:图片,2:文档 */

View File

@ -0,0 +1,65 @@
package org.jeecg.modules.biz.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.transaction.Transactional;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.biz.constant.EntityLinkConst;
import org.jeecg.modules.biz.service.EntityLinkBizService;
import org.jeecg.modules.gen.repo.entity.Repo;
import org.jeecg.modules.gen.repo.mapper.RepoMapper;
@RestController
@RequestMapping("/biz/repo")
@Tag(name = "题库")
@Slf4j
public class RepoBizController {
@Autowired
private RepoMapper repoMapper;
@Autowired
private EntityLinkBizService entityLinkBizService;
@PostMapping("course_add")
@Operation(summary = "获取课程下的题库")
@Transactional
public Result<Integer> correct(@RequestBody Map<String, Object> data) {
String title = (String) data.get("title");
String remark = (String) data.get("remark");
String courseId = (String) data.get("courseId");
Repo repo = new Repo();
repo.setTitle(title);
repo.setRemark(remark);
repoMapper.insert(repo);
entityLinkBizService.save(EntityLinkConst.SourceType.COURSE, courseId, EntityLinkConst.TargetType.REPO, repo.getId());
return Result.OK(repo.getId());
}
@GetMapping("course_list")
@Operation(summary = "获取课程下的题库")
public Result<List<Repo>> courseList(@RequestParam String courseId) {
List<String> targetIds = entityLinkBizService.listTargetIds(EntityLinkConst.SourceType.COURSE, courseId, EntityLinkConst.TargetType.REPO);
if (targetIds.size() > 0) {
List<Repo> list = repoMapper.selectByIds(targetIds);
return Result.OK(list);
} else {
return Result.OK(new ArrayList<>());
}
}
}

View File

@ -14,4 +14,13 @@ public interface EntityLinkBizService extends IService<EntityLink>{
* @return target_id 列表去重 * @return target_id 列表去重
*/ */
List<String> listTargetIds(String sourceType, String sourceId, String targetType); List<String> listTargetIds(String sourceType, String sourceId, String targetType);
/**
* 保存主体与内容类型的绑定关系
* @param sourceType 主体类型
* @param sourceId 主体ID
* @param targetType 内容类型
* @param targetId 内容ID
*/
void save(String sourceType, String sourceId, String targetType, String targetId);
} }

View File

@ -23,4 +23,14 @@ public class EntityLinkBizServiceImpl extends ServiceImpl<EntityLinkMapper, Enti
.distinct() .distinct()
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
@Override
public void save(String sourceType, String sourceId, String targetType, String targetId) {
EntityLink entityLink = new EntityLink();
entityLink.setSourceType(sourceType);
entityLink.setSourceId(sourceId);
entityLink.setTargetType(targetType);
entityLink.setTargetId(targetId);
this.save(entityLink);
}
} }