user paper exam

dev-tmp1
luotaiqian 2026-08-24 11:09:17 +08:00
parent beeb4320a0
commit 36254136ad
18 changed files with 883 additions and 0 deletions

View File

@ -0,0 +1,74 @@
package org.qinan.cedu.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.qinan.cedu.model.dto.PaperExamDTO;
import org.qinan.cedu.model.dto.PaperExamPageQueryDTO;
import org.qinan.cedu.model.vo.PaperExamVO;
import org.qinan.cedu.service.PaperExamService;
import org.qinan.safetyeval.client.dto.PageResponse;
import org.qinan.safetyeval.client.dto.SingleResponse;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
*
*/
@Api(tags = "考试试卷管理")
@RestController
@RequiredArgsConstructor
@RequestMapping("/safetyEval/paperExam")
public class PaperExamController {
private final PaperExamService paperExamService;
/**
*
*/
@ApiOperation("分页查询考试试卷")
@GetMapping("/page")
public PageResponse<PaperExamVO> page(PaperExamPageQueryDTO query) {
IPage<PaperExamVO> page = paperExamService.pageQuery(query);
return PageResponse.of(page.getRecords(), page.getTotal());
}
/**
*
*/
@ApiOperation("考试试卷详情")
@GetMapping("/{id}")
public SingleResponse<PaperExamVO> get(@ApiParam("主键id") @PathVariable Long id) {
return SingleResponse.success(paperExamService.getDetail(id));
}
/**
*
*/
@ApiOperation("新增考试试卷")
@PostMapping("/save")
public SingleResponse<Boolean> save(@Validated @RequestBody PaperExamDTO dto) {
return SingleResponse.success(paperExamService.savePaperExam(dto));
}
/**
*
*/
@ApiOperation("修改考试试卷")
@PutMapping("/update")
public SingleResponse<Boolean> update(@Validated @RequestBody PaperExamDTO dto) {
return SingleResponse.success(paperExamService.updatePaperExam(dto));
}
/**
*
*/
@ApiOperation("删除考试试卷")
@DeleteMapping("/{id}")
public SingleResponse<Void> delete(@ApiParam("主键id") @PathVariable Long id) {
paperExamService.deleteById(id);
return SingleResponse.success();
}
}

View File

@ -0,0 +1,74 @@
package org.qinan.cedu.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.qinan.cedu.model.dto.PaperExamQuestionUserDTO;
import org.qinan.cedu.model.dto.PaperExamQuestionUserPageQueryDTO;
import org.qinan.cedu.model.vo.PaperExamQuestionUserVO;
import org.qinan.cedu.service.PaperExamQuestionUserService;
import org.qinan.safetyeval.client.dto.PageResponse;
import org.qinan.safetyeval.client.dto.SingleResponse;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
*
*/
@Api(tags = "用户试卷试题管理")
@RestController
@RequiredArgsConstructor
@RequestMapping("/safetyEval/paperExamQuestionUser")
public class PaperExamQuestionUserController {
private final PaperExamQuestionUserService paperExamQuestionUserService;
/**
*
*/
@ApiOperation("分页查询用户试卷试题")
@GetMapping("/page")
public PageResponse<PaperExamQuestionUserVO> page(PaperExamQuestionUserPageQueryDTO query) {
IPage<PaperExamQuestionUserVO> page = paperExamQuestionUserService.pageQuery(query);
return PageResponse.of(page.getRecords(), page.getTotal());
}
/**
*
*/
@ApiOperation("用户试卷试题详情")
@GetMapping("/{id}")
public SingleResponse<PaperExamQuestionUserVO> get(@ApiParam("主键id") @PathVariable Long id) {
return SingleResponse.success(paperExamQuestionUserService.getDetail(id));
}
/**
*
*/
@ApiOperation("新增用户试卷试题")
@PostMapping("/save")
public SingleResponse<Boolean> save(@Validated @RequestBody PaperExamQuestionUserDTO dto) {
return SingleResponse.success(paperExamQuestionUserService.saveRecord(dto));
}
/**
*
*/
@ApiOperation("修改用户试卷试题")
@PutMapping("/update")
public SingleResponse<Boolean> update(@Validated @RequestBody PaperExamQuestionUserDTO dto) {
return SingleResponse.success(paperExamQuestionUserService.updateRecord(dto));
}
/**
*
*/
@ApiOperation("删除用户试卷试题")
@DeleteMapping("/{id}")
public SingleResponse<Void> delete(@ApiParam("主键id") @PathVariable Long id) {
paperExamQuestionUserService.deleteById(id);
return SingleResponse.success();
}
}

View File

@ -0,0 +1,23 @@
package org.qinan.cedu.convertor;
import org.mapstruct.Mapper;
import org.qinan.cedu.model.dto.PaperExamDTO;
import org.qinan.cedu.model.entity.PaperExamDO;
import org.qinan.cedu.model.vo.PaperExamVO;
import java.util.List;
/**
*
*/
@Mapper(componentModel = "spring")
public interface PaperExamConvertor {
PaperExamDO convertDtoToE(PaperExamDTO dto);
PaperExamVO convertEToVo(PaperExamDO entity);
List<PaperExamDO> convertDtoListToEList(List<PaperExamDTO> list);
List<PaperExamVO> convertEListToVoList(List<PaperExamDO> list);
}

View File

@ -0,0 +1,23 @@
package org.qinan.cedu.convertor;
import org.mapstruct.Mapper;
import org.qinan.cedu.model.dto.PaperExamQuestionUserDTO;
import org.qinan.cedu.model.entity.PaperExamQuestionUserDO;
import org.qinan.cedu.model.vo.PaperExamQuestionUserVO;
import java.util.List;
/**
*
*/
@Mapper(componentModel = "spring")
public interface PaperExamQuestionUserConvertor {
PaperExamQuestionUserDO convertDtoToE(PaperExamQuestionUserDTO dto);
PaperExamQuestionUserVO convertEToVo(PaperExamQuestionUserDO entity);
List<PaperExamQuestionUserDO> convertDtoListToEList(List<PaperExamQuestionUserDTO> list);
List<PaperExamQuestionUserVO> convertEListToVoList(List<PaperExamQuestionUserDO> list);
}

View File

@ -0,0 +1,12 @@
package org.qinan.cedu.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.qinan.cedu.model.entity.PaperExamDO;
/**
* Mapper
*/
@Mapper
public interface PaperExamMapper extends BaseMapper<PaperExamDO> {
}

View File

@ -0,0 +1,12 @@
package org.qinan.cedu.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.qinan.cedu.model.entity.PaperExamQuestionUserDO;
/**
* Mapper
*/
@Mapper
public interface PaperExamQuestionUserMapper extends BaseMapper<PaperExamQuestionUserDO> {
}

View File

@ -0,0 +1,62 @@
package org.qinan.cedu.model.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* /
*/
@Data
@ApiModel(value = "PaperExamDTO", description = "考试试卷新增/修改入参")
public class PaperExamDTO {
@ApiModelProperty("主键(修改时必填)")
private Long id;
@ApiModelProperty(value = "试卷id", required = true)
@NotNull(message = "试卷id不能为空")
private Long paperId;
@ApiModelProperty("试卷名称")
private String paperName;
@ApiModelProperty("试卷总分")
private BigDecimal paperTotalScore;
@ApiModelProperty("合格分数")
private BigDecimal paperPassScore;
@ApiModelProperty(value = "考试时长(分钟)", required = true)
@NotNull(message = "考试时长不能为空")
private Integer examTime;
@ApiModelProperty("交卷时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime submitTime;
@ApiModelProperty("考试成绩")
private BigDecimal examScore;
@ApiModelProperty("考试是否通过 1是 0否")
private Integer passed;
@ApiModelProperty(value = "用户id", required = true)
@NotNull(message = "用户id不能为空")
private Long userId;
@ApiModelProperty(value = "考试状态 non_start 未开始, doing 进行中, finished 已完成", required = true)
@NotBlank(message = "考试状态不能为空")
private String paperExamStatus;
@ApiModelProperty("考试试卷状态 normal 正常")
private String status;
}

View File

@ -0,0 +1,31 @@
package org.qinan.cedu.model.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.qinan.cedu.model.query.BasePageQuery;
/**
*
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "PaperExamPageQueryDTO", description = "考试试卷分页查询请求")
public class PaperExamPageQueryDTO extends BasePageQuery {
@ApiModelProperty("试卷id")
private Long paperId;
@ApiModelProperty("试卷名称(模糊)")
private String paperName;
@ApiModelProperty("用户id")
private Long userId;
@ApiModelProperty("考试状态 non_start 未开始, doing 进行中, finished 已完成")
private String paperExamStatus;
@ApiModelProperty("考试是否通过 1是 0否")
private Integer passed;
}

View File

@ -0,0 +1,51 @@
package org.qinan.cedu.model.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
/**
* /
*/
@Data
@ApiModel(value = "PaperExamQuestionUserDTO", description = "用户试卷试题新增/修改入参")
public class PaperExamQuestionUserDTO {
@ApiModelProperty("主键(修改时必填)")
private Long id;
@ApiModelProperty(value = "考试试卷id", required = true)
@NotNull(message = "考试试卷id不能为空")
private Long paperExamId;
@ApiModelProperty(value = "用户id", required = true)
@NotNull(message = "用户id不能为空")
private Long userId;
@ApiModelProperty(value = "试卷id", required = true)
@NotNull(message = "试卷id不能为空")
private Long paperId;
@ApiModelProperty(value = "试题id", required = true)
@NotNull(message = "试题id不能为空")
private Long questionId;
@ApiModelProperty("答案:逗号隔开")
private String answer;
@ApiModelProperty("答案选项id 多个逗号隔开")
private String answerQuestionOptionIds;
@ApiModelProperty(value = "试题分数", required = true)
@NotNull(message = "试题分数不能为空")
private BigDecimal questionScore;
@ApiModelProperty("作答得分")
private BigDecimal answerScore;
@ApiModelProperty("子题信息")
private String childrenQuestionInfo;
}

View File

@ -0,0 +1,28 @@
package org.qinan.cedu.model.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.qinan.cedu.model.query.BasePageQuery;
/**
*
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "PaperExamQuestionUserPageQueryDTO", description = "用户试卷试题分页查询请求")
public class PaperExamQuestionUserPageQueryDTO extends BasePageQuery {
@ApiModelProperty("考试试卷id")
private Long paperExamId;
@ApiModelProperty("试卷id")
private Long paperId;
@ApiModelProperty("用户id")
private Long userId;
@ApiModelProperty("试题id")
private Long questionId;
}

View File

@ -0,0 +1,69 @@
package org.qinan.cedu.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
*
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("paper_exam")
@ApiModel(value = "PaperExam", description = "考试试卷")
public class PaperExamDO extends BaseEntity {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("试卷id")
private Long paperId;
@ApiModelProperty("试卷名称")
private String paperName;
@ApiModelProperty("试卷总分")
private BigDecimal paperTotalScore;
@ApiModelProperty("合格分数")
private BigDecimal paperPassScore;
@ApiModelProperty("考试时长(分钟)")
private Integer examTime;
@ApiModelProperty("交卷时间")
private LocalDateTime submitTime;
@ApiModelProperty("考试成绩")
private BigDecimal examScore;
@ApiModelProperty("考试是否通过 1是 0否")
private Integer passed;
@ApiModelProperty("用户id")
private Long userId;
@ApiModelProperty("考试状态 non_start 未开始, doing 进行中, finished 已完成")
private String paperExamStatus;
@ApiModelProperty("考试试卷状态 normal 正常")
private String status;
/**
* paper_exam org_id SQL
*/
@TableField(exist = false)
@ApiModelProperty("机构id")
private Long orgId;
}

View File

@ -0,0 +1,54 @@
package org.qinan.cedu.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
/**
*
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("paper_exam_question_user")
@ApiModel(value = "PaperExamQuestionUser", description = "用户试卷试题")
public class PaperExamQuestionUserDO extends BaseEntity {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("考试试卷id")
private Long paperExamId;
@ApiModelProperty("用户id")
private Long userId;
@ApiModelProperty("试卷id")
private Long paperId;
@ApiModelProperty("试题id")
private Long questionId;
@ApiModelProperty("答案:逗号隔开")
private String answer;
@ApiModelProperty("答案选项id 多个逗号隔开")
private String answerQuestionOptionIds;
@ApiModelProperty("试题分数")
private BigDecimal questionScore;
@ApiModelProperty("作答得分")
private BigDecimal answerScore;
@ApiModelProperty("子题信息")
private String childrenQuestionInfo;
}

View File

@ -0,0 +1,44 @@
package org.qinan.cedu.model.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
/**
*
*/
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel(value = "PaperExamQuestionUserVO", description = "用户试卷试题")
public class PaperExamQuestionUserVO extends BaseVO {
@ApiModelProperty("考试试卷id")
private String paperExamId;
@ApiModelProperty("用户id")
private String userId;
@ApiModelProperty("试卷id")
private String paperId;
@ApiModelProperty("试题id")
private String questionId;
@ApiModelProperty("答案:逗号隔开")
private String answer;
@ApiModelProperty("答案选项id 多个逗号隔开")
private String answerQuestionOptionIds;
@ApiModelProperty("试题分数")
private BigDecimal questionScore;
@ApiModelProperty("作答得分")
private BigDecimal answerScore;
@ApiModelProperty("子题信息")
private String childrenQuestionInfo;
}

View File

@ -0,0 +1,55 @@
package org.qinan.cedu.model.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
*
*/
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel(value = "PaperExamVO", description = "考试试卷")
public class PaperExamVO extends BaseVO {
@ApiModelProperty("试卷id")
private String paperId;
@ApiModelProperty("试卷名称")
private String paperName;
@ApiModelProperty("试卷总分")
private BigDecimal paperTotalScore;
@ApiModelProperty("合格分数")
private BigDecimal paperPassScore;
@ApiModelProperty("考试时长(分钟)")
private Integer examTime;
@ApiModelProperty("交卷时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime submitTime;
@ApiModelProperty("考试成绩")
private BigDecimal examScore;
@ApiModelProperty("考试是否通过 1是 0否")
private Integer passed;
@ApiModelProperty("用户id")
private String userId;
@ApiModelProperty("考试状态 non_start 未开始, doing 进行中, finished 已完成")
private String paperExamStatus;
@ApiModelProperty("考试试卷状态 normal 正常")
private String status;
}

View File

@ -0,0 +1,54 @@
package org.qinan.cedu.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.qinan.cedu.model.dto.PaperExamQuestionUserDTO;
import org.qinan.cedu.model.dto.PaperExamQuestionUserPageQueryDTO;
import org.qinan.cedu.model.entity.PaperExamQuestionUserDO;
import org.qinan.cedu.model.vo.PaperExamQuestionUserVO;
/**
*
*/
public interface PaperExamQuestionUserService extends IService<PaperExamQuestionUserDO> {
/**
*
*
* @param query
* @return
*/
IPage<PaperExamQuestionUserVO> pageQuery(PaperExamQuestionUserPageQueryDTO query);
/**
*
*
* @param id id
* @return
*/
PaperExamQuestionUserVO getDetail(Long id);
/**
*
*
* @param dto
* @return
*/
boolean saveRecord(PaperExamQuestionUserDTO dto);
/**
*
*
* @param dto id
* @return
*/
boolean updateRecord(PaperExamQuestionUserDTO dto);
/**
*
*
* @param id id
* @return
*/
boolean deleteById(Long id);
}

View File

@ -0,0 +1,54 @@
package org.qinan.cedu.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.qinan.cedu.model.dto.PaperExamDTO;
import org.qinan.cedu.model.dto.PaperExamPageQueryDTO;
import org.qinan.cedu.model.entity.PaperExamDO;
import org.qinan.cedu.model.vo.PaperExamVO;
/**
*
*/
public interface PaperExamService extends IService<PaperExamDO> {
/**
*
*
* @param query
* @return
*/
IPage<PaperExamVO> pageQuery(PaperExamPageQueryDTO query);
/**
*
*
* @param id id
* @return
*/
PaperExamVO getDetail(Long id);
/**
*
*
* @param dto
* @return
*/
boolean savePaperExam(PaperExamDTO dto);
/**
*
*
* @param dto id
* @return
*/
boolean updatePaperExam(PaperExamDTO dto);
/**
*
*
* @param id id
* @return
*/
boolean deleteById(Long id);
}

View File

@ -0,0 +1,78 @@
package org.qinan.cedu.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.qinan.cedu.convertor.PaperExamQuestionUserConvertor;
import org.qinan.cedu.enums.DeleteEnum;
import org.qinan.cedu.mapper.PaperExamQuestionUserMapper;
import org.qinan.cedu.model.dto.PaperExamQuestionUserDTO;
import org.qinan.cedu.model.dto.PaperExamQuestionUserPageQueryDTO;
import org.qinan.cedu.model.entity.PaperExamQuestionUserDO;
import org.qinan.cedu.model.vo.PaperExamQuestionUserVO;
import org.qinan.cedu.service.PaperExamQuestionUserService;
import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
/**
*
*/
@Service
@RequiredArgsConstructor
public class PaperExamQuestionUserServiceImpl extends ServiceImpl<PaperExamQuestionUserMapper, PaperExamQuestionUserDO>
implements PaperExamQuestionUserService {
private final PaperExamQuestionUserConvertor paperExamQuestionUserConvertor;
@Override
public IPage<PaperExamQuestionUserVO> pageQuery(PaperExamQuestionUserPageQueryDTO query) {
return this.lambdaQuery()
.eq(PaperExamQuestionUserDO::getDeleteEnum, DeleteEnum.FALSE.getCode())
.eq(query.getPaperExamId() != null, PaperExamQuestionUserDO::getPaperExamId, query.getPaperExamId())
.eq(query.getPaperId() != null, PaperExamQuestionUserDO::getPaperId, query.getPaperId())
.eq(query.getUserId() != null, PaperExamQuestionUserDO::getUserId, query.getUserId())
.eq(query.getQuestionId() != null, PaperExamQuestionUserDO::getQuestionId, query.getQuestionId())
.orderByAsc(PaperExamQuestionUserDO::getId)
.page(new Page<>(query.getCurrent(), query.getSize()))
.convert(paperExamQuestionUserConvertor::convertEToVo);
}
@Override
public PaperExamQuestionUserVO getDetail(Long id) {
PaperExamQuestionUserDO entity = this.lambdaQuery()
.eq(PaperExamQuestionUserDO::getId, id)
.eq(PaperExamQuestionUserDO::getDeleteEnum, DeleteEnum.FALSE.getCode())
.one();
return paperExamQuestionUserConvertor.convertEToVo(entity);
}
@Override
public boolean saveRecord(PaperExamQuestionUserDTO dto) {
PaperExamQuestionUserDO entity = paperExamQuestionUserConvertor.convertDtoToE(dto);
InsertFieldDefaults.apply(entity);
return this.save(entity);
}
@Override
public boolean updateRecord(PaperExamQuestionUserDTO dto) {
if (dto.getId() == null) {
throw new IllegalArgumentException("主键id不能为空");
}
PaperExamQuestionUserDO entity = paperExamQuestionUserConvertor.convertDtoToE(dto);
InsertFieldDefaults.applyForUpdate(entity);
return this.updateById(entity);
}
@Override
public boolean deleteById(Long id) {
return this.lambdaUpdate()
.set(PaperExamQuestionUserDO::getDeleteEnum, DeleteEnum.TRUE.getCode())
.set(PaperExamQuestionUserDO::getUpdateTime, LocalDateTime.now())
.eq(PaperExamQuestionUserDO::getId, id)
.eq(PaperExamQuestionUserDO::getDeleteEnum, DeleteEnum.FALSE.getCode())
.update();
}
}

View File

@ -0,0 +1,85 @@
package org.qinan.cedu.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.qinan.cedu.convertor.PaperExamConvertor;
import org.qinan.cedu.enums.DeleteEnum;
import org.qinan.cedu.mapper.PaperExamMapper;
import org.qinan.cedu.model.dto.PaperExamDTO;
import org.qinan.cedu.model.dto.PaperExamPageQueryDTO;
import org.qinan.cedu.model.entity.PaperExamDO;
import org.qinan.cedu.model.vo.PaperExamVO;
import org.qinan.cedu.service.PaperExamService;
import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.time.LocalDateTime;
/**
*
*/
@Service
@RequiredArgsConstructor
public class PaperExamServiceImpl extends ServiceImpl<PaperExamMapper, PaperExamDO> implements PaperExamService {
private static final String STATUS_NORMAL = "normal";
private final PaperExamConvertor paperExamConvertor;
@Override
public IPage<PaperExamVO> pageQuery(PaperExamPageQueryDTO query) {
return this.lambdaQuery()
.eq(PaperExamDO::getDeleteEnum, DeleteEnum.FALSE.getCode())
.eq(query.getPaperId() != null, PaperExamDO::getPaperId, query.getPaperId())
.like(StringUtils.hasText(query.getPaperName()), PaperExamDO::getPaperName, query.getPaperName())
.eq(query.getUserId() != null, PaperExamDO::getUserId, query.getUserId())
.eq(StringUtils.hasText(query.getPaperExamStatus()), PaperExamDO::getPaperExamStatus, query.getPaperExamStatus())
.eq(query.getPassed() != null, PaperExamDO::getPassed, query.getPassed())
.orderByDesc(PaperExamDO::getId)
.page(new Page<>(query.getCurrent(), query.getSize()))
.convert(paperExamConvertor::convertEToVo);
}
@Override
public PaperExamVO getDetail(Long id) {
PaperExamDO entity = this.lambdaQuery()
.eq(PaperExamDO::getId, id)
.eq(PaperExamDO::getDeleteEnum, DeleteEnum.FALSE.getCode())
.one();
return paperExamConvertor.convertEToVo(entity);
}
@Override
public boolean savePaperExam(PaperExamDTO dto) {
PaperExamDO entity = paperExamConvertor.convertDtoToE(dto);
if (!StringUtils.hasText(entity.getStatus())) {
entity.setStatus(STATUS_NORMAL);
}
// paper_exam 表无 org_id 列插入前不填充机构id
InsertFieldDefaults.applyIgnoreOrgId(entity);
return this.save(entity);
}
@Override
public boolean updatePaperExam(PaperExamDTO dto) {
if (dto.getId() == null) {
throw new IllegalArgumentException("主键id不能为空");
}
PaperExamDO entity = paperExamConvertor.convertDtoToE(dto);
InsertFieldDefaults.applyForUpdateIgnoreOrgId(entity);
return this.updateById(entity);
}
@Override
public boolean deleteById(Long id) {
return this.lambdaUpdate()
.set(PaperExamDO::getDeleteEnum, DeleteEnum.TRUE.getCode())
.set(PaperExamDO::getUpdateTime, LocalDateTime.now())
.eq(PaperExamDO::getId, id)
.eq(PaperExamDO::getDeleteEnum, DeleteEnum.FALSE.getCode())
.update();
}
}