From 8f00868ac91aadae7cd5555ef3f474a2ab75a7c0 Mon Sep 17 00:00:00 2001 From: lvxudong Date: Fri, 24 Nov 2023 17:56:10 +0800 Subject: [PATCH] up --- .../question/controller/TitleController.java | 2 +- .../dromara/question/domain/bo/TitleReq.java | 4 ++- .../question/service/ITitleService.java | 2 +- .../service/impl/TitleServiceImpl.java | 35 +++++++++++++++---- 4 files changed, 33 insertions(+), 10 deletions(-) diff --git a/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/controller/TitleController.java b/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/controller/TitleController.java index e4fe6ad7e..bf493f5a1 100644 --- a/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/controller/TitleController.java +++ b/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/controller/TitleController.java @@ -88,7 +88,7 @@ public class TitleController extends BaseController { @Log(title = "题目", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() - public R edit(@Validated(EditGroup.class) @RequestBody TitleBo bo) { + public R edit(@Validated(EditGroup.class) @RequestBody TitleReq bo) { return toAjax(titleService.updateByBo(bo)); } diff --git a/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/domain/bo/TitleReq.java b/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/domain/bo/TitleReq.java index fa0bd6579..712249737 100644 --- a/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/domain/bo/TitleReq.java +++ b/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/domain/bo/TitleReq.java @@ -1,6 +1,7 @@ package org.dromara.question.domain.bo; import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.Data; import org.dromara.common.core.validate.AddGroup; @@ -36,5 +37,6 @@ public class TitleReq implements Serializable { @NotNull(message = "题目标签类型不能为空", groups = { AddGroup.class, EditGroup.class }) private Long labelId; - List optionList; + @NotEmpty(message = "选项数据不能为空", groups = { AddGroup.class, EditGroup.class }) + private List optionVoList; } diff --git a/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/service/ITitleService.java b/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/service/ITitleService.java index 681771a32..7ca0ab3f3 100644 --- a/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/service/ITitleService.java +++ b/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/service/ITitleService.java @@ -41,7 +41,7 @@ public interface ITitleService { /** * 修改题目 */ - Boolean updateByBo(TitleBo bo); + Boolean updateByBo(TitleReq bo); /** * 校验并批量删除题目信息 diff --git a/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/service/impl/TitleServiceImpl.java b/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/service/impl/TitleServiceImpl.java index fb6ab2d56..430b4d622 100644 --- a/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/service/impl/TitleServiceImpl.java +++ b/ruoyi-modules/ruoyi-question/src/main/java/org/dromara/question/service/impl/TitleServiceImpl.java @@ -130,10 +130,6 @@ public class TitleServiceImpl implements ITitleService { @Override @Transactional(rollbackFor = Exception.class) public Boolean insertByBo(TitleReq bo) { - List optionList = bo.getOptionList(); - if (CollectionUtil.isEmpty(optionList)) { - throw new ServiceException("选项不能为空"); - } TitleBo titleBo = new TitleBo(); BeanUtils.copyProperties(bo, titleBo); Title add = MapstructUtils.convert(titleBo, Title.class); @@ -146,6 +142,7 @@ public class TitleServiceImpl implements ITitleService { bo.setId(add.getId()); } + List optionList = bo.getOptionVoList(); optionList.forEach(option -> option.setQuestionId(bo.getId())); List options = MapstructUtils.convert(optionList, Options.class); optionMapper.insertBatch(options); @@ -156,10 +153,34 @@ public class TitleServiceImpl implements ITitleService { * 修改题目 */ @Override - public Boolean updateByBo(TitleBo bo) { - Title update = MapstructUtils.convert(bo, Title.class); + @Transactional(rollbackFor = Exception.class) + public Boolean updateByBo(TitleReq bo) { + TitleBo titleBo = new TitleBo(); + BeanUtils.copyProperties(bo, titleBo); + Title update = MapstructUtils.convert(titleBo, Title.class); + if (update == null) { + throw new ServiceException("数据获取失败"); + } validEntityBeforeSave(update); - return baseMapper.updateById(update) > 0; + + boolean flag = baseMapper.updateById(update) > 0; + if (!flag) { + throw new ServiceException("数据保存失败"); + } + // 先查询之前是否绑定过 + List optionVos = optionMapper.selectVoList(new LambdaQueryWrapper() + .eq(Options::getQuestionId, bo.getId())); + // 删除之前的绑定 + if (!CollectionUtil.isEmpty(optionVos)) { + List optionIds = optionVos.stream().map(OptionVo::getId).collect(Collectors.toList()); + optionMapper.deleteBatchIds(optionIds); + } + // 重新组装数据 + List optionList = bo.getOptionVoList(); + optionList.forEach(option -> option.setQuestionId(bo.getId())); + List options = MapstructUtils.convert(optionList, Options.class); + optionMapper.insertBatch(options); + return flag; } /**