diff --git a/laws-modules/src/main/java/com/jero/modules/laws/library/controller/LawsProblemLibraryController.java b/laws-modules/src/main/java/com/jero/modules/laws/library/controller/LawsProblemLibraryController.java index 38015fe2..f0b0ebb1 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/library/controller/LawsProblemLibraryController.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/library/controller/LawsProblemLibraryController.java @@ -24,120 +24,121 @@ import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.formula.functions.T; - /** +/** * @Description: 问答库-问题 * @Author: jero-boot - * @Date: 2023-09-28 + * @Date: 2023-09-28 * @Version: V1.0 */ -@Api(tags="问答库") +@Api(tags = "问答库") @RestController @RequestMapping("/laws/library/lawsProblemLibrary") @Slf4j public class LawsProblemLibraryController extends JeroController { - @Autowired - private ILawsProblemLibraryService lawsProblemLibraryService; - @AutoLog(value = "问答库-分页列表查询") - @ApiOperation(value="问答库-分页列表查询", notes="问答库-问题-分页列表查询") - @GetMapping(value = "/page") - @RequiresPermissions("businessSupport:questionAnswer:search") - public Result> queryPageList(LawsProblemLibrary lawsProblemLibrary, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - IPage pageList = lawsProblemLibraryService.queryPage(lawsProblemLibrary, pageNo, pageSize, req); - return Result.OK(pageList); - } + @Autowired + private ILawsProblemLibraryService lawsProblemLibraryService; - @AutoLog(value = "问答库-提出问题") - @ApiOperation(value="问答库-提出问题", notes="问答库-提出问题") - @PostMapping(value = "/addProblem") - @RequiresPermissions("businessSupport:questionAnswer:quiz") - public Result addProblem(@Validated @RequestBody LawsProblemLibrary lawsProblemLibrary) { - lawsProblemLibraryService.addProblem(lawsProblemLibrary); - return Result.OK(ResultCommon.OK); - } + @AutoLog(value = "问答库-分页列表查询") + @ApiOperation(value = "问答库-分页列表查询", notes = "问答库-问题-分页列表查询") + @GetMapping(value = "/page") + @RequiresPermissions("businessSupport:questionAnswer:search") + public Result> queryPageList(LawsProblemLibrary lawsProblemLibrary, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + IPage pageList = lawsProblemLibraryService.queryPage(lawsProblemLibrary, pageNo, pageSize, req); + return Result.OK(pageList); + } - @AutoLog(value = "国内标准-提出问题") - @ApiOperation(value="国内标准-提出问题", notes="国内标准-提出问题") - @PostMapping(value = "/addProblem/GB") - @RequiresPermissions("domesticStandard:submitQuestion") - public Result addProblemGB(@Validated @RequestBody LawsProblemLibrary lawsProblemLibrary) { - lawsProblemLibrary.setType("1"); - lawsProblemLibraryService.addProblem(lawsProblemLibrary); - return Result.OK(ResultCommon.OK); - } + @AutoLog(value = "问答库-提出问题") + @ApiOperation(value = "问答库-提出问题", notes = "问答库-提出问题") + @PostMapping(value = "/addProblem") + @RequiresPermissions("businessSupport:questionAnswer:quiz") + public Result addProblem(@Validated @RequestBody LawsProblemLibrary lawsProblemLibrary) { + lawsProblemLibraryService.addProblem(lawsProblemLibrary); + return Result.OK(ResultCommon.OK); + } - @AutoLog(value = "海外标准-提出问题") - @ApiOperation(value="海外标准-提出问题", notes="海外标准-提出问题") - @PostMapping(value = "/addProblem/FB") - @RequiresPermissions("overseasStandard:submitQuestion") - public Result addProblemFB(@Validated @RequestBody LawsProblemLibrary lawsProblemLibrary) { - lawsProblemLibrary.setType("2"); - lawsProblemLibraryService.addProblem(lawsProblemLibrary); - return Result.OK(ResultCommon.OK); - } + @AutoLog(value = "国内标准-提出问题") + @ApiOperation(value = "国内标准-提出问题", notes = "国内标准-提出问题") + @PostMapping(value = "/addProblem/GB") + @RequiresPermissions("domesticStandard:submitQuestion") + public Result addProblemGB(@Validated @RequestBody LawsProblemLibrary lawsProblemLibrary) { + lawsProblemLibrary.setType("1"); + lawsProblemLibraryService.addProblem(lawsProblemLibrary); + return Result.OK(ResultCommon.OK); + } - @AutoLog(value = "企业标准-提出问题") - @ApiOperation(value="企业标准-提出问题", notes="企业标准-提出问题") - @PostMapping(value = "/addProblem/QB") - @RequiresPermissions("enterpriseStandard:detail:submitQuestion") - public Result addProblemQB(@Validated @RequestBody LawsProblemLibrary lawsProblemLibrary) { - lawsProblemLibrary.setType("3"); - lawsProblemLibraryService.addProblem(lawsProblemLibrary); - return Result.OK(ResultCommon.OK); - } + @AutoLog(value = "海外标准-提出问题") + @ApiOperation(value = "海外标准-提出问题", notes = "海外标准-提出问题") + @PostMapping(value = "/addProblem/FB") + @RequiresPermissions("overseasStandard:submitQuestion") + public Result addProblemFB(@Validated @RequestBody LawsProblemLibrary lawsProblemLibrary) { + lawsProblemLibrary.setType("2"); + lawsProblemLibraryService.addProblem(lawsProblemLibrary); + return Result.OK(ResultCommon.OK); + } - @AutoLog(value = "问答库-回答问题") - @ApiOperation(value="问答库-回答问题", notes="问答库-回答问题") - @PostMapping(value = "/addAnswer") - @RequiresPermissions("quiz:detail:answerSubmit") - public Result addAnswer(@Validated @RequestBody LawsAnswerLibrary lawsAnswerLibrary) { - lawsProblemLibraryService.addAnswer(lawsAnswerLibrary); - return Result.OK(ResultCommon.OK); - } + @AutoLog(value = "企业标准-提出问题") + @ApiOperation(value = "企业标准-提出问题", notes = "企业标准-提出问题") + @PostMapping(value = "/addProblem/QB") + @RequiresPermissions("enterpriseStandard:detail:submitQuestion") + public Result addProblemQB(@Validated @RequestBody LawsProblemLibrary lawsProblemLibrary) { + lawsProblemLibrary.setType("3"); + lawsProblemLibraryService.addProblem(lawsProblemLibrary); + return Result.OK(ResultCommon.OK); + } - @AutoLog(value = "问答库-通过id查询") - @ApiOperation(value="问答库-通过id查询", notes="问答库-通过id查询") - @GetMapping(value = "/queryById") - @Translation - @RequiresPermissions("businessSupport:questionAnswer:detail") - public Result queryById(@RequestParam(name="id") String id) { - LawsProblemLibrary lawsProblemLibrary = lawsProblemLibraryService.queryById(id); - return Result.OK(lawsProblemLibrary); - } + @AutoLog(value = "问答库-回答问题") + @ApiOperation(value = "问答库-回答问题", notes = "问答库-回答问题") + @PostMapping(value = "/addAnswer") + @RequiresPermissions("quiz:detail:answerSubmit") + public Result addAnswer(@Validated @RequestBody LawsAnswerLibrary lawsAnswerLibrary) { + lawsProblemLibraryService.addAnswer(lawsAnswerLibrary); + return Result.OK(ResultCommon.OK); + } - @AutoLog(value = "问答库-通过id删除问题") - @ApiOperation(value="问答库-通过id删除问题", notes="问答库-通过id删除问题") - @PostMapping(value = "/deleteProblem") - @RequiresPermissions("businessSupport:questionAnswer:delete") - public Result deleteProblem(@RequestBody Map map) { - if(!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))){ - return Result.error(MessageUtils.getMessage(ResultCommon.SELECT_DATA)); - } - lawsProblemLibraryService.deleteProblem(map.get("id")); - return Result.OK(ResultCommon.OK); - } + @AutoLog(value = "问答库-通过id查询") + @ApiOperation(value = "问答库-通过id查询", notes = "问答库-通过id查询") + @GetMapping(value = "/queryById") + @Translation + @RequiresPermissions("businessSupport:questionAnswer:detail") + public Result queryById(@RequestParam(name = "id") String id) { + LawsProblemLibrary lawsProblemLibrary = lawsProblemLibraryService.queryById(id); + return Result.OK(lawsProblemLibrary); + } - @AutoLog(value = "问答库-通过id删除回答") - @ApiOperation(value="问答库-通过id删除回答", notes="问答库-通过id删除回答") - @PostMapping(value = "/deleteAnswer") - @RequiresPermissions("quiz:detail:deleteAnswer") - public Result deleteAnswer(@RequestBody Map map) { - if(!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))){ - return Result.error(MessageUtils.getMessage(ResultCommon.SELECT_DATA)); - } - lawsProblemLibraryService.deleteAnswer(map.get("id")); - return Result.OK(ResultCommon.OK); - } + @AutoLog(value = "问答库-通过id删除问题") + @ApiOperation(value = "问答库-通过id删除问题", notes = "问答库-通过id删除问题") + @PostMapping(value = "/deleteProblem") + @RequiresPermissions("businessSupport:questionAnswer:delete") + public Result deleteProblem(@RequestBody Map map) { + if (!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))) { + return Result.error(MessageUtils.getMessage(ResultCommon.SELECT_DATA)); + } + lawsProblemLibraryService.deleteProblem(map.get("id")); + return Result.OK(ResultCommon.OK); + } - @AutoLog(value = "问答库-是否置顶") - @ApiOperation(value="问答库-是否置顶", notes="问答库-是否置顶") - @GetMapping(value = "/isTop") - @RequiresPermissions("quiz:detail:topOrCancel") - public Result isTop(@RequestParam(name="id") String id) { - lawsProblemLibraryService.isTop(id); - return Result.OK(ResultCommon.OK); - } + @AutoLog(value = "问答库-通过id删除回答") + @ApiOperation(value = "问答库-通过id删除回答", notes = "问答库-通过id删除回答") + @PostMapping(value = "/deleteAnswer") + @RequiresPermissions("quiz:detail:deleteAnswer") + public Result deleteAnswer(@RequestBody Map map) { + if (!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))) { + return Result.error(MessageUtils.getMessage(ResultCommon.SELECT_DATA)); + } + lawsProblemLibraryService.deleteAnswer(map.get("id")); + return Result.OK(ResultCommon.OK); + } + + @AutoLog(value = "问答库-是否置顶") + @ApiOperation(value = "问答库-是否置顶", notes = "问答库-是否置顶") + @GetMapping(value = "/isTop") + @RequiresPermissions("quiz:detail:topOrCancel") + public Result isTop(@RequestParam(name = "id") String id) { + lawsProblemLibraryService.isTop(id); + return Result.OK(ResultCommon.OK); + } } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/library/service/impl/LawsProblemLibraryServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/library/service/impl/LawsProblemLibraryServiceImpl.java index 886b9217..499bbfb2 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/library/service/impl/LawsProblemLibraryServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/library/service/impl/LawsProblemLibraryServiceImpl.java @@ -1,5 +1,6 @@ package com.jero.modules.laws.library.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -16,6 +17,7 @@ import com.jero.modules.laws.library.entity.LawsProblemLibrary; import com.jero.modules.laws.library.mapper.LawsProblemLibraryMapper; import com.jero.modules.laws.library.service.ILawsAnswerLibraryService; import com.jero.modules.laws.library.service.ILawsProblemLibraryService; +import com.jero.modules.sys.utils.UserUtils; import com.jero.modules.system.entity.SysDepart; import com.jero.modules.system.entity.SysDictItem; import com.jero.modules.system.entity.SysUser; @@ -25,6 +27,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.jero.common.exception.JeroBootException; @@ -36,7 +39,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.system.query.QueryGenerator; import javax.annotation.Resource; +import javax.management.relation.Role; import javax.servlet.http.HttpServletRequest; + import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -44,7 +49,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; /** * @Description: 问答库-问题 * @Author: jero-boot - * @Date: 2023-09-28 + * @Date: 2023-09-28 * @Version: V1.0 */ @Service @@ -62,6 +67,12 @@ public class LawsProblemLibraryServiceImpl extends ServiceImpl queryPage(LawsProblemLibrary lawsProblemLibrary, Integer pageNo, Integer pageSize, HttpServletRequest req) { @@ -115,6 +126,12 @@ public class LawsProblemLibraryServiceImpl extends ServiceImpl userRoleList = userService.getRole(currentUser.getUsername()); + LawsAnswerLibrary answer = lawsAnswerLibraryService.getById(id); + LawsProblemLibrary problem = getById(answer.getProblemId()); + // 如果是管理员权限 则跳过验证 + List adminRoleList = Arrays.asList(adminRoleCode.split(",")); + // 如果不是管理员权限 且不是问题创建者 且不是回答创建者 则没有权限 + if (adminRoleList.stream().noneMatch(userRoleList::contains)) { + if (!currentUser.getUsername().equals(problem.getCreateBy())) { + throw new JeroBootException(ResultCommon.NO_PERMISSION); + } + } lawsAnswerLibraryService.removeById(id); } @@ -204,9 +240,22 @@ public class LawsProblemLibraryServiceImpl extends ServiceImpl userRoleList = userService.getRole(currentUser.getUsername()); + // 如果是管理员权限 则跳过验证 + List adminRoleList = Arrays.asList(adminRoleCode.split(",")); + // 如果不是管理员权限 且不是问题创建者 且不是回答创建者 则没有权限 + if (adminRoleList.stream().noneMatch(userRoleList::contains)) { + LawsProblemLibrary problem = getById(lawsAnswerLibrary.getProblemId()); + if (!currentUser.getUsername().equals(problem.getCreateBy())) { + throw new JeroBootException(ResultCommon.NO_PERMISSION); + } + } + if (0 == lawsAnswerLibrary.getIsTop()) { lawsAnswerLibrary.setIsTop(1); // 发送消息