This commit is contained in:
lvxudong 2023-11-24 17:56:10 +08:00
parent 90bdf71982
commit 8f00868ac9
4 changed files with 33 additions and 10 deletions

View File

@ -88,7 +88,7 @@ public class TitleController extends BaseController {
@Log(title = "题目", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody TitleBo bo) {
public R<Void> edit(@Validated(EditGroup.class) @RequestBody TitleReq bo) {
return toAjax(titleService.updateByBo(bo));
}

View File

@ -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<OptionVo> optionList;
@NotEmpty(message = "选项数据不能为空", groups = { AddGroup.class, EditGroup.class })
private List<OptionVo> optionVoList;
}

View File

@ -41,7 +41,7 @@ public interface ITitleService {
/**
* 修改题目
*/
Boolean updateByBo(TitleBo bo);
Boolean updateByBo(TitleReq bo);
/**
* 校验并批量删除题目信息

View File

@ -130,10 +130,6 @@ public class TitleServiceImpl implements ITitleService {
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(TitleReq bo) {
List<OptionVo> 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<OptionVo> optionList = bo.getOptionVoList();
optionList.forEach(option -> option.setQuestionId(bo.getId()));
List<Options> 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<OptionVo> optionVos = optionMapper.selectVoList(new LambdaQueryWrapper<Options>()
.eq(Options::getQuestionId, bo.getId()));
// 删除之前的绑定
if (!CollectionUtil.isEmpty(optionVos)) {
List<Long> optionIds = optionVos.stream().map(OptionVo::getId).collect(Collectors.toList());
optionMapper.deleteBatchIds(optionIds);
}
// 重新组装数据
List<OptionVo> optionList = bo.getOptionVoList();
optionList.forEach(option -> option.setQuestionId(bo.getId()));
List<Options> options = MapstructUtils.convert(optionList, Options.class);
optionMapper.insertBatch(options);
return flag;
}
/**