merge
This commit is contained in:
GoCo 2025-09-16 17:28:10 +08:00
commit 7fca0228fd
5 changed files with 127 additions and 24 deletions

View File

@ -80,7 +80,7 @@ public class AiolQuestionController extends JeecgController<AiolQuestion, IAiolQ
IPage<AiolQuestion> pageList = aiolQuestionService.page(page, queryWrapper); IPage<AiolQuestion> pageList = aiolQuestionService.page(page, queryWrapper);
return Result.OK(pageList); return Result.OK(pageList);
} }
/** /**
* 添加 * 添加
* *
@ -93,16 +93,38 @@ public class AiolQuestionController extends JeecgController<AiolQuestion, IAiolQ
@PostMapping(value = "/add") @PostMapping(value = "/add")
@Transactional @Transactional
public Result<String> add(@RequestBody AiolQuestion aiolQuestion,@RequestParam String repoId) { public Result<String> add(@RequestBody AiolQuestion aiolQuestion,@RequestParam String repoId) {
aiolQuestion.setStatus(1);
aiolQuestionService.save(aiolQuestion); aiolQuestionService.save(aiolQuestion);
//题库题目添加 //题库题目添加
if(repoId!=null&& !repoId.isEmpty()){ if(repoId!=null&& !repoId.isEmpty()){
AiolQuestionRepo aiolQuestionRepo = new AiolQuestionRepo(); AiolQuestionRepo aiolQuestionRepo = new AiolQuestionRepo();
aiolQuestionRepo.setRepoId(repoId); aiolQuestionRepo.setRepoId(repoId);
aiolQuestionRepo.setQuestionId(aiolQuestion.getId()); aiolQuestionRepo.setQuestionId(aiolQuestion.getId());
aiolQuestionRepoController.add(aiolQuestionRepo); aiolQuestionRepoController.add(aiolQuestionRepo);
} }
return Result.OK(aiolQuestion.getId()); return Result.OK(aiolQuestion.getId());
} }
@AutoLog(value = "题目-是否入库")
@Operation(summary="题目-是否入库")
@PostMapping(value = "/whetherPutStorage")
public Result<String> whetherPutStorage(@RequestBody List<String> ids){
try {
// 参数校验
if (ids == null || ids.isEmpty()) {
return Result.error("参数不能为空");
}
// 调用服务层更新状态
aiolQuestionService.updateStatusByIds(ids);
return Result.OK("操作成功");
} catch (Exception e) {
log.error("更新题目状态失败", e);
return Result.error("操作失败:" + e.getMessage());
}
}
/** /**
* 编辑 * 编辑
@ -118,7 +140,7 @@ public class AiolQuestionController extends JeecgController<AiolQuestion, IAiolQ
aiolQuestionService.updateById(aiolQuestion); aiolQuestionService.updateById(aiolQuestion);
return Result.OK("编辑成功!"); return Result.OK("编辑成功!");
} }
/** /**
* 通过id删除 * 通过id删除
* *
@ -133,7 +155,7 @@ public class AiolQuestionController extends JeecgController<AiolQuestion, IAiolQ
aiolQuestionService.removeById(id); aiolQuestionService.removeById(id);
return Result.OK("删除成功!"); return Result.OK("删除成功!");
} }
/** /**
* 批量删除 * 批量删除
* *
@ -148,7 +170,7 @@ public class AiolQuestionController extends JeecgController<AiolQuestion, IAiolQ
this.aiolQuestionService.removeByIds(Arrays.asList(ids.split(","))); this.aiolQuestionService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!"); return Result.OK("批量删除成功!");
} }
/** /**
* 通过id查询 * 通过id查询
* *

View File

@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.jeecg.qywx.api.user.vo.User;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.CommonConstant;
@ -28,6 +29,7 @@ import org.jeecg.modules.aiol.constant.EntityLinkConst;
import org.jeecg.modules.aiol.dto.CourseWithTeacherInfo; import org.jeecg.modules.aiol.dto.CourseWithTeacherInfo;
import org.jeecg.modules.aiol.dto.QuestionAnswerDTO; import org.jeecg.modules.aiol.dto.QuestionAnswerDTO;
import org.jeecg.modules.aiol.dto.QuestionExcelDTO; import org.jeecg.modules.aiol.dto.QuestionExcelDTO;
import org.jeecg.modules.aiol.dto.UserPermission;
import org.jeecg.modules.aiol.entity.*; import org.jeecg.modules.aiol.entity.*;
import org.jeecg.modules.aiol.mapper.AiolRepoMapper; import org.jeecg.modules.aiol.mapper.AiolRepoMapper;
import org.jeecg.modules.aiol.service.*; import org.jeecg.modules.aiol.service.*;
@ -296,9 +298,10 @@ public class AiolRepoController extends JeecgController<AiolRepo, IAiolRepoServi
@GetMapping("userList") @GetMapping("userList")
@Operation(summary = "获取用户") @Operation(summary = "获取用户")
public Result<List<SysUser>> userList( public Result<List<UserPermission>> userList(
@RequestParam(required = false) String username, @RequestParam(required = false) String username,
@RequestParam(required = false) String employeeNumber) { @RequestParam(required = false) String employeeNumber,
@RequestParam String repoId) {
// 创建查询条件 // 创建查询条件
LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
@ -316,51 +319,92 @@ public class AiolRepoController extends JeecgController<AiolRepo, IAiolRepoServi
// 执行查询 // 执行查询
List<SysUser> userList = sysUserService.list(queryWrapper); List<SysUser> userList = sysUserService.list(queryWrapper);
// 获取有权限的用户列表
Result<List<UserPermission>> result = userListByRepoId(repoId);
List<UserPermission> userListByRepo = result != null ? result.getResult() : null;
// 创建ID到UserPermission的映射
Map<String, UserPermission> userPermissionMap;
if (userListByRepo == null || userListByRepo.isEmpty()) {
userPermissionMap = new HashMap<>();
} else {
userPermissionMap = userListByRepo.stream()
.collect(Collectors.toMap(
UserPermission::getUserId,
user -> user,
(existing, replacement) -> existing
));
}
List<UserPermission> userPermissionList = new ArrayList<>();
userList.forEach(user -> {
// 如果当前用户在用户列表中
if (userPermissionMap.containsKey(user.getId())) {
userPermissionList.add(userPermissionMap.get(user.getId()));
}else {
UserPermission userPermission = new UserPermission();
userPermission.setUserId(user.getId()); // 用户ID
userPermission.setUserName(user.getUsername()); // 用户名
userPermission.setRealName(user.getRealname()); // 用户真实姓名
userPermission.setUserAvatar(user.getAvatar()); // 用户头像
userPermission.setPermission(false);
userPermissionList.add(userPermission);
}
});
// 返回结果 // 返回结果
return Result.ok(userList); return Result.ok(userPermissionList);
} }
@PostMapping("addPermission") @PostMapping("addOrDeletePermission")
@Operation(summary = "添加权限") @Operation(summary = "添加权限")
@Transactional @Transactional
public Result<String> addPermission(@RequestParam String userId, @RequestParam String repoId) { public Result<String> addOrDeletePermission(@RequestParam String userId, @RequestParam String repoId,@RequestParam String type) {
AiolEntityPermission aiolEntityPermission = new AiolEntityPermission(); AiolEntityPermission aiolEntityPermission = new AiolEntityPermission();
aiolEntityPermission.setEntityId(repoId); aiolEntityPermission.setEntityId(repoId);
aiolEntityPermission.setEntityType("repo"); aiolEntityPermission.setEntityType("repo");
aiolEntityPermission.setUserId(userId); aiolEntityPermission.setUserId(userId);
aiolEntityPermissionService.saveOrUpdate(aiolEntityPermission); if(type.equals("add")){
aiolEntityPermissionService.saveOrUpdate(aiolEntityPermission);
return Result.OK("添加成功");
}
else if(type.equals("delete")){
aiolEntityPermissionService.remove(new QueryWrapper<>(aiolEntityPermission));
return Result.OK("删除成功");
}
return Result.OK(); return Result.OK();
} }
//获取有权限的用户 //获取有权限的用户
@GetMapping("userListByRepoId/{repoId}") @GetMapping("userListByRepoId/{repoId}")
@Operation(summary = "获取题库有权限的用户列表") @Operation(summary = "获取题库有权限的用户列表")
public Result<List<SysUser>> userListByRepoId(@PathVariable String repoId) { public Result<List<UserPermission>> userListByRepoId(@PathVariable String repoId) {
// 获取用户有权限的题库ID列表 // 获取用户有权限的题库ID列表
List<AiolEntityPermission> list = aiolEntityPermissionService.list(new QueryWrapper<AiolEntityPermission>() List<AiolEntityPermission> list = aiolEntityPermissionService.list(new QueryWrapper<AiolEntityPermission>()
.eq("entity_id", repoId) .eq("entity_id", repoId)
.eq("entity_type", "repo") .eq("entity_type", "repo")
); );
if (list.isEmpty()) { if (list.isEmpty()) {
return Result.error("该题库下没有有权限用户或该题库不存在"); return Result.ok();
} }
List<String> userIds = list.stream().map(AiolEntityPermission::getUserId).collect(Collectors.toList()); List<String> userIds = list.stream().map(AiolEntityPermission::getUserId).collect(Collectors.toList());
List<SysUser> sysUsers = sysUserService.listByIds(userIds);
List<UserPermission> userPermissionList = new ArrayList<>();
sysUsers.forEach(user -> {
if (user != null) {
UserPermission userPermission = new UserPermission();
userPermission.setUserId(user.getId()); // 用户ID
userPermission.setUserName(user.getUsername()); // 用户名
userPermission.setRealName(user.getRealname()); // 用户真实姓名
userPermission.setUserAvatar(user.getAvatar()); // 用户头像
userPermission.setPermission(true);
userPermissionList.add(userPermission);
}
});
// 根据ID列表查询用户 // 根据ID列表查询用户
return Result.ok(sysUserService.listByIds(userIds)); return Result.ok(userPermissionList);
} }
@DeleteMapping("deletePermission")
@Operation(summary = "删除权限")
@Transactional
public Result<String> deletePermission(@RequestParam String userId, @RequestParam String repoId) {
AiolEntityPermission aiolEntityPermission = new AiolEntityPermission();
aiolEntityPermission.setEntityId(repoId);
aiolEntityPermission.setEntityType("repo");
aiolEntityPermission.setUserId(userId);
aiolEntityPermissionService.remove(new QueryWrapper<>(aiolEntityPermission));
return Result.OK();
}

View File

@ -0,0 +1,18 @@
package org.jeecg.modules.aiol.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class UserPermission {
@Schema(description = "用户ID")
private String userId;
@Schema(description = "用户名")
private String userName;
@Schema(description = "用户真实姓名")
private String realName;
@Schema(description = "用户头像")
private String userAvatar;
@Schema(description = "用户是否有权限")
private boolean permission;
}

View File

@ -3,6 +3,8 @@ package org.jeecg.modules.aiol.service;
import org.jeecg.modules.aiol.entity.AiolQuestion; import org.jeecg.modules.aiol.entity.AiolQuestion;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/** /**
* @Description: 题目 * @Description: 题目
* @Author: jeecg-boot * @Author: jeecg-boot
@ -11,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/ */
public interface IAiolQuestionService extends IService<AiolQuestion> { public interface IAiolQuestionService extends IService<AiolQuestion> {
void updateStatusByIds(List<String> ids);
} }

View File

@ -1,5 +1,7 @@
package org.jeecg.modules.aiol.service.impl; package org.jeecg.modules.aiol.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import org.jeecg.modules.aiol.entity.AiolQuestion; import org.jeecg.modules.aiol.entity.AiolQuestion;
import org.jeecg.modules.aiol.mapper.AiolQuestionMapper; import org.jeecg.modules.aiol.mapper.AiolQuestionMapper;
import org.jeecg.modules.aiol.service.IAiolQuestionService; import org.jeecg.modules.aiol.service.IAiolQuestionService;
@ -7,6 +9,8 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.List;
/** /**
* @Description: 题目 * @Description: 题目
* @Author: jeecg-boot * @Author: jeecg-boot
@ -16,4 +20,16 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@Service @Service
public class AiolQuestionServiceImpl extends ServiceImpl<AiolQuestionMapper, AiolQuestion> implements IAiolQuestionService { public class AiolQuestionServiceImpl extends ServiceImpl<AiolQuestionMapper, AiolQuestion> implements IAiolQuestionService {
@Override
public void updateStatusByIds(List<String> ids) {
if (CollectionUtils.isEmpty(ids)) {
throw new IllegalArgumentException("题目ID列表不能为空");
}
// 批量更新
LambdaUpdateWrapper<AiolQuestion> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.in(AiolQuestion::getId, ids)
.setSql("status = CASE WHEN status IS NULL OR status = 1 THEN 0 ELSE 1 END");
this.update(updateWrapper);
}
} }