diff --git a/safety-cedu-service/pom.xml b/safety-cedu-service/pom.xml index a15b4abc..d4e5e00e 100644 --- a/safety-cedu-service/pom.xml +++ b/safety-cedu-service/pom.xml @@ -63,6 +63,11 @@ provided + + org.qinan + safety-eval-client + + org.mapstruct @@ -75,6 +80,10 @@ ${mapstruct.version} provided + + org.qinan + safety-eval-infrastructure + diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/controller/CourseManagementController.java b/safety-cedu-service/src/main/java/org/qinan/cedu/controller/CourseManagementController.java index 6a13ee68..ae26b343 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/controller/CourseManagementController.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/controller/CourseManagementController.java @@ -5,18 +5,13 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.qinan.cedu.model.dto.CourseManagementDTO; -import org.qinan.cedu.model.query.CourseManagementPageQuery; import org.qinan.cedu.model.dto.CourseManagementVO; -import org.qinan.cedu.model.dto.PageResponse; -import org.qinan.cedu.model.dto.SingleResponse; +import org.qinan.cedu.model.query.CourseManagementPageQuery; import org.qinan.cedu.service.CourseManagementService; +import org.qinan.safetyeval.client.dto.PageResponse; +import org.qinan.safetyeval.client.dto.SingleResponse; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** * 课程管理 diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/controller/CourseRelCoursewareController.java b/safety-cedu-service/src/main/java/org/qinan/cedu/controller/CourseRelCoursewareController.java index 12e67765..1ed3e798 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/controller/CourseRelCoursewareController.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/controller/CourseRelCoursewareController.java @@ -6,16 +6,11 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.qinan.cedu.model.dto.CourseRelCoursewareDTO; import org.qinan.cedu.model.dto.CourseRelCoursewareVO; -import org.qinan.cedu.model.dto.PageResponse; -import org.qinan.cedu.model.dto.SingleResponse; import org.qinan.cedu.service.CourseRelCoursewareService; +import org.qinan.safetyeval.client.dto.PageResponse; +import org.qinan.safetyeval.client.dto.SingleResponse; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/controller/CoursewareManagementController.java b/safety-cedu-service/src/main/java/org/qinan/cedu/controller/CoursewareManagementController.java index 2a75e75c..468cee67 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/controller/CoursewareManagementController.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/controller/CoursewareManagementController.java @@ -5,18 +5,13 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.qinan.cedu.model.dto.CoursewareManagementDTO; -import org.qinan.cedu.model.query.CoursewareManagementPageQuery; import org.qinan.cedu.model.dto.CoursewareManagementVO; -import org.qinan.cedu.model.dto.PageResponse; -import org.qinan.cedu.model.dto.SingleResponse; +import org.qinan.cedu.model.query.CoursewareManagementPageQuery; import org.qinan.cedu.service.CoursewareManagementService; +import org.qinan.safetyeval.client.dto.PageResponse; +import org.qinan.safetyeval.client.dto.SingleResponse; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** * 课件管理 diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/CourseManagementDTO.java b/safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/CourseManagementDTO.java index c94473c2..ee69f4e5 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/CourseManagementDTO.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/CourseManagementDTO.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; +import java.util.List; /** * 课程管理 @@ -64,4 +65,7 @@ public class CourseManagementDTO{ */ @ApiModelProperty("是否已被使用(0-未使用,1-已使用)") private Integer used; + + @ApiModelProperty("归属课件") + private List courseRelCoursewareDTOList; } \ No newline at end of file diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/CourseManagementVO.java b/safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/CourseManagementVO.java index 15797d62..befea116 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/CourseManagementVO.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/CourseManagementVO.java @@ -5,6 +5,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import java.math.BigDecimal; +import java.util.List; /** * 课程管理 @@ -61,4 +62,7 @@ public class CourseManagementVO extends BaseVO { */ @ApiModelProperty("是否已被使用(0-未使用,1-已使用)") private Integer used; + + @ApiModelProperty("归属课件") + private List courseRelCoursewareVOList; } \ No newline at end of file diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/CoursewareManagementVO.java b/safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/CoursewareManagementVO.java index f09fcb26..73d18440 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/CoursewareManagementVO.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/CoursewareManagementVO.java @@ -73,4 +73,7 @@ public class CoursewareManagementVO extends BaseVO { */ @ApiModelProperty("课件描述") private String coursewareDescription; + + @ApiModelProperty("习题数") + private Long exerciseCount; } \ No newline at end of file diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/PageResponse.java b/safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/PageResponse.java deleted file mode 100644 index c3eb36bb..00000000 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/PageResponse.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.qinan.cedu.model.dto; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.List; - -/** - * 通用分页响应体 - */ -@Data -@EqualsAndHashCode(callSuper = true) -public class PageResponse extends SingleResponse> { - - @ApiModelProperty(value = "总条数") - private Long total; - - public static PageResponse of(List list, Long total) { - PageResponse response = new PageResponse<>(); - response.setSuccess(true); - response.setCode("0"); - response.setData(list); - response.setTotal(total); - return response; - } -} diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/SingleResponse.java b/safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/SingleResponse.java deleted file mode 100644 index 36280a07..00000000 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/SingleResponse.java +++ /dev/null @@ -1,50 +0,0 @@ -package org.qinan.cedu.model.dto; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - * 通用单条数据响应体 - */ -@Data -public class SingleResponse { - - @ApiModelProperty(value = "是否成功") - private boolean success; - - @ApiModelProperty(value = "响应码") - private String code; - - @ApiModelProperty(value = "响应消息") - private String message; - - @ApiModelProperty(value = "错误响应消息") - private String errMessage; - - @ApiModelProperty(value = "响应数据") - private T data; - - public static SingleResponse success(T data) { - SingleResponse response = new SingleResponse<>(); - response.setSuccess(true); - response.setCode("0"); - response.setData(data); - return response; - } - - public static SingleResponse success() { - SingleResponse response = new SingleResponse<>(); - response.setSuccess(true); - response.setCode("0"); - return response; - } - - public static SingleResponse error(String code, String message) { - SingleResponse response = new SingleResponse<>(); - response.setSuccess(false); - response.setCode(code); - response.setMessage(message); - response.setErrMessage(message); - return response; - } -} diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/model/query/CourseManagementPageQuery.java b/safety-cedu-service/src/main/java/org/qinan/cedu/model/query/CourseManagementPageQuery.java index 66c3146a..484c21bd 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/model/query/CourseManagementPageQuery.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/model/query/CourseManagementPageQuery.java @@ -16,4 +16,10 @@ public class CourseManagementPageQuery extends BasePageQuery { @ApiModelProperty("状态(1启用/0禁用)") private Integer status; + + /** + * 培训类型 + */ + @ApiModelProperty("培训类型") + private String trainingType; } diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/model/query/CoursewareManagementPageQuery.java b/safety-cedu-service/src/main/java/org/qinan/cedu/model/query/CoursewareManagementPageQuery.java index 996b4a59..54dd9407 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/model/query/CoursewareManagementPageQuery.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/model/query/CoursewareManagementPageQuery.java @@ -16,4 +16,10 @@ public class CoursewareManagementPageQuery extends BasePageQuery { @ApiModelProperty("状态(1启用/0禁用)") private Integer status; + + /** + * 培训类型 + */ + @ApiModelProperty("培训类型") + private String trainingType; } diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/CourseManagementServiceImpl.java b/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/CourseManagementServiceImpl.java index bb22f894..7124423f 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/CourseManagementServiceImpl.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/CourseManagementServiceImpl.java @@ -1,21 +1,28 @@ package org.qinan.cedu.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.qinan.cedu.convertor.CourseManagementConvertor; +import org.qinan.cedu.convertor.CourseRelCoursewareConvertor; +import org.qinan.cedu.enums.DeleteEnum; +import org.qinan.cedu.mapper.CourseManagementMapper; +import org.qinan.cedu.mapper.CourseRelCoursewareMapper; import org.qinan.cedu.model.dto.CourseManagementDTO; import org.qinan.cedu.model.query.CourseManagementPageQuery; import org.qinan.cedu.model.dto.CourseManagementVO; import org.qinan.cedu.model.entity.CourseManagementDO; -import org.qinan.cedu.enums.DeleteEnum; -import org.qinan.cedu.mapper.CourseManagementMapper; +import org.qinan.cedu.model.entity.CourseRelCoursewareDO; import org.qinan.cedu.service.CourseManagementService; +import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import java.time.LocalDateTime; +import java.util.List; /** * 课程管理服务实现 @@ -26,18 +33,30 @@ public class CourseManagementServiceImpl extends ServiceImpl pageQuery(CourseManagementPageQuery query) { - long current = query.getCurrent() == null ? 1L : query.getCurrent(); - long size = query.getSize() == null ? 10L : query.getSize(); IPage page = this.lambdaQuery() .eq(CourseManagementDO::getDeleteEnum, DeleteEnum.FALSE.getCode()) .like(StringUtils.hasText(query.getCourseName()), CourseManagementDO::getCourseName, query.getCourseName()) .eq(query.getStatus() != null, CourseManagementDO::getStatus, query.getStatus()) + .eq(query.getTrainingType() != null, CourseManagementDO::getTrainingType, query.getTrainingType()) .orderByDesc(CourseManagementDO::getCreateTime) - .page(new Page<>(current, size)); - return page.convert(courseManagementConvertor::convertEToVo); + .page(new Page<>(query.getCurrent(), query.getSize())); + IPage convert = page.convert(courseManagementConvertor::convertEToVo); + convert.getRecords().forEach(vo -> { + vo.setCourseRelCoursewareVOList(courseRelCoursewareConvertor.convertEListToVoList( + courseRelCoursewareMapper.selectList(new LambdaQueryWrapper() + .eq(CourseRelCoursewareDO::getCourseId, vo.getId()) + .orderByAsc(CourseRelCoursewareDO::getSort)) + )); + }); + return convert; } @Override @@ -46,27 +65,48 @@ public class CourseManagementServiceImpl extends ServiceImpl() + .eq(CourseRelCoursewareDO::getCourseId, courseManagementVO.getId()) + .orderByAsc(CourseRelCoursewareDO::getSort)) + )); + return courseManagementVO; } @Override + @Transactional(rollbackFor = Exception.class) public boolean saveCourse(CourseManagementDTO dto) { CourseManagementDO entity = courseManagementConvertor.convertDtoToE(dto); + InsertFieldDefaults.applyIgnoreOrgId(entity); LocalDateTime now = LocalDateTime.now(); - entity.setCreateTime(now); entity.setUpdateTime(now); - entity.setVersion(0); if (entity.getUsed() == null) { entity.setUsed(0); } - return this.save(entity); + this.save(entity); + List courseRelCoursewareDOS = courseRelCoursewareConvertor.convertDtoListToEList(dto.getCourseRelCoursewareDTOList()); + for (CourseRelCoursewareDO courseRelCoursewareDO : courseRelCoursewareDOS) { + courseRelCoursewareDO.setCourseId(entity.getId()); + courseRelCoursewareMapper.insert(courseRelCoursewareDO); + } + return true; } @Override + @Transactional(rollbackFor = Exception.class) public boolean updateCourse(CourseManagementDTO dto) { CourseManagementDO entity = courseManagementConvertor.convertDtoToE(dto); - entity.setUpdateTime(LocalDateTime.now()); - return this.updateById(entity); + InsertFieldDefaults.applyForUpdateIgnoreOrgId(entity); + this.updateById(entity); + courseRelCoursewareMapper.delete(new LambdaQueryWrapper() + .eq(CourseRelCoursewareDO::getCourseId, entity.getId())); + List courseRelCoursewareDOS = courseRelCoursewareConvertor.convertDtoListToEList(dto.getCourseRelCoursewareDTOList()); + for (CourseRelCoursewareDO courseRelCoursewareDO : courseRelCoursewareDOS) { + courseRelCoursewareDO.setCourseId(entity.getId()); + courseRelCoursewareMapper.insert(courseRelCoursewareDO); + } + return true; } @Override diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/CourseRelCoursewareServiceImpl.java b/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/CourseRelCoursewareServiceImpl.java index 3ea91ef3..bf3e07cf 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/CourseRelCoursewareServiceImpl.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/CourseRelCoursewareServiceImpl.java @@ -4,10 +4,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.qinan.cedu.convertor.CourseRelCoursewareConvertor; +import org.qinan.cedu.mapper.CourseRelCoursewareMapper; import org.qinan.cedu.model.dto.CourseRelCoursewareDTO; import org.qinan.cedu.model.dto.CourseRelCoursewareVO; import org.qinan.cedu.model.entity.CourseRelCoursewareDO; -import org.qinan.cedu.mapper.CourseRelCoursewareMapper; import org.qinan.cedu.service.CourseRelCoursewareService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/CoursewareManagementServiceImpl.java b/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/CoursewareManagementServiceImpl.java index e71df819..29d1aa7a 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/CoursewareManagementServiceImpl.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/CoursewareManagementServiceImpl.java @@ -1,16 +1,20 @@ package org.qinan.cedu.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.qinan.cedu.convertor.CoursewareManagementConvertor; -import org.qinan.cedu.model.dto.CoursewareManagementDTO; -import org.qinan.cedu.model.query.CoursewareManagementPageQuery; -import org.qinan.cedu.model.dto.CoursewareManagementVO; -import org.qinan.cedu.model.entity.CoursewareManagementDO; import org.qinan.cedu.enums.DeleteEnum; import org.qinan.cedu.mapper.CoursewareManagementMapper; +import org.qinan.cedu.mapper.QuestionMapper; +import org.qinan.cedu.model.dto.CoursewareManagementDTO; +import org.qinan.cedu.model.dto.CoursewareManagementVO; +import org.qinan.cedu.model.entity.CoursewareManagementDO; +import org.qinan.cedu.model.entity.QuestionDO; +import org.qinan.cedu.model.query.CoursewareManagementPageQuery; import org.qinan.cedu.service.CoursewareManagementService; +import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; @@ -26,18 +30,24 @@ public class CoursewareManagementServiceImpl extends ServiceImpl pageQuery(CoursewareManagementPageQuery query) { - long current = query.getCurrent() == null ? 1L : query.getCurrent(); - long size = query.getSize() == null ? 10L : query.getSize(); IPage page = this.lambdaQuery() .eq(CoursewareManagementDO::getDeleteEnum, DeleteEnum.FALSE.getCode()) .like(StringUtils.hasText(query.getCoursewareName()), CoursewareManagementDO::getCoursewareName, query.getCoursewareName()) .eq(query.getStatus() != null, CoursewareManagementDO::getStatus, query.getStatus()) + .eq(query.getTrainingType() != null, CoursewareManagementDO::getTrainingType, query.getTrainingType()) .orderByDesc(CoursewareManagementDO::getCreateTime) - .page(new Page<>(current, size)); - return page.convert(coursewareManagementConvertor::convertEToVo); + .page(new Page<>(query.getCurrent(), query.getSize())); + IPage convert = page.convert(coursewareManagementConvertor::convertEToVo); + for (CoursewareManagementVO record : convert.getRecords()) { + record.setExerciseCount(questionMapper.selectCount(new LambdaQueryWrapper().eq(QuestionDO::getCoursewareId, record.getId()))); + } + return convert; } @Override @@ -46,23 +56,22 @@ public class CoursewareManagementServiceImpl extends ServiceImpl().eq(QuestionDO::getCoursewareId, coursewareManagementVO.getId()))); + return coursewareManagementVO; } @Override public boolean saveCourseware(CoursewareManagementDTO dto) { CoursewareManagementDO entity = coursewareManagementConvertor.convertDtoToE(dto); - LocalDateTime now = LocalDateTime.now(); - entity.setCreateTime(now); - entity.setUpdateTime(now); - entity.setVersion(0); + InsertFieldDefaults.applyIgnoreOrgId(entity); return this.save(entity); } @Override public boolean updateCourseware(CoursewareManagementDTO dto) { CoursewareManagementDO entity = coursewareManagementConvertor.convertDtoToE(dto); - entity.setUpdateTime(LocalDateTime.now()); + InsertFieldDefaults.applyForUpdateIgnoreOrgId(entity); return this.updateById(entity); } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/support/InsertFieldDefaults.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/support/InsertFieldDefaults.java index 0da8d4ef..0cc1e599 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/support/InsertFieldDefaults.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/support/InsertFieldDefaults.java @@ -116,6 +116,23 @@ public final class InsertFieldDefaults { } } + public static void applyForUpdateIgnoreOrgId(Object dataObject) { + if (dataObject == null) { + return; + } + LocalDateTime now = LocalDateTime.now(); + Long userId = AuthUserContextAdapter.getCurrentUserId(); + String userName = AuthUserContextAdapter.getCurrentUserName(); + + setIfNull(dataObject, "updateTime", now); + if (userId != null) { + setIfNull(dataObject, "updateId", userId); + } + if (userName != null) { + setIfNull(dataObject, "updateName", userName); + } + } + private static void setIfNull(Object target, String property, Object value) { try { String getterName = "get" + Character.toUpperCase(property.charAt(0)) + property.substring(1);