Quellcode durchsuchen

add:课程评价方式管理

caozixuan vor 1 Jahr
Ursprung
Commit
477c56c7e9

+ 70 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/CourseEvaluationParam.java

@@ -0,0 +1,70 @@
+package com.qmth.distributed.print.business.bean.params;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import org.hibernate.validator.constraints.Length;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description: 课程评价方式参数
+ * @Author: CaoZixuan
+ * @Date: 2024-02-29
+ */
+public class CourseEvaluationParam {
+
+    @ApiModelProperty("考试id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @NotNull(message = "缺少考试")
+    @Range(min = 1L, message = "缺少考试")
+    private Long examId;
+
+    @ApiModelProperty("课程编号")
+    @NotNull(message = "缺少课程编号")
+    @Length(min = 1, message = "缺少课程编号")
+    private String courseCode;
+
+    @ApiModelProperty("评价方式")
+    @NotNull(message = "缺少评价方式")
+    @Length(min = 1, message = "缺少评价方式")
+    private String evaluation;
+
+    @ApiModelProperty("评价方式描述")
+    @NotNull(message = "缺少评价方式描述")
+    @Length(min = 1, message = "缺少评价方式描述")
+    private String evaluationDesc;
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getEvaluation() {
+        return evaluation;
+    }
+
+    public void setEvaluation(String evaluation) {
+        this.evaluation = evaluation;
+    }
+
+    public String getEvaluationDesc() {
+        return evaluationDesc;
+    }
+
+    public void setEvaluationDesc(String evaluationDesc) {
+        this.evaluationDesc = evaluationDesc;
+    }
+}

+ 47 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/CourseEvaluationResult.java

@@ -0,0 +1,47 @@
+package com.qmth.distributed.print.business.bean.result;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 课程评价方式查询结果
+ * @Author: CaoZixuan
+ * @Date: 2024-02-29
+ */
+public class CourseEvaluationResult {
+
+    @ApiModelProperty("课程评价方式id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long evaluationId;
+
+    @ApiModelProperty("课程评价方式")
+    private String evaluation;
+
+    @ApiModelProperty("课程评价方式描述")
+    private String evaluationDesc;
+
+    public Long getEvaluationId() {
+        return evaluationId;
+    }
+
+    public void setEvaluationId(Long evaluationId) {
+        this.evaluationId = evaluationId;
+    }
+
+    public String getEvaluation() {
+        return evaluation;
+    }
+
+    public void setEvaluation(String evaluation) {
+        this.evaluation = evaluation;
+    }
+
+    public String getEvaluationDesc() {
+        return evaluationDesc;
+    }
+
+    public void setEvaluationDesc(String evaluationDesc) {
+        this.evaluationDesc = evaluationDesc;
+    }
+}

+ 0 - 20
distributed-print-business/src/main/java/com/qmth/distributed/print/business/controller/CourseDimensionController.java

@@ -1,20 +0,0 @@
-package com.qmth.distributed.print.business.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 课程知识点表 前端控制器
- * </p>
- *
- * @author CaoZixuan
- * @since 2024-02-27
- */
-@RestController
-@RequestMapping("/course-dimension")
-public class CourseDimensionController {
-
-}

+ 9 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/CourseEvaluationTypeEnum.java

@@ -6,15 +6,22 @@ package com.qmth.distributed.print.business.enums;
  * @Date: 2024-02-28
  */
 public enum CourseEvaluationTypeEnum {
-    DEFAULT("默认"), CUSTOM("自定义");
+    DEFAULT("默认", "按阅卷功能模块里的卷面成绩计算"), CUSTOM("自定义", "");
 
     private final String name;
 
-    CourseEvaluationTypeEnum(String name) {
+    private final String value;
+
+    CourseEvaluationTypeEnum(String name, String value) {
         this.name = name;
+        this.value = value;
     }
 
     public String getName() {
         return name;
     }
+
+    public String getValue() {
+        return value;
+    }
 }

+ 11 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/CourseEvaluationMapper.java

@@ -1,7 +1,11 @@
 package com.qmth.distributed.print.business.mapper;
 
+import com.qmth.distributed.print.business.bean.result.CourseEvaluationResult;
 import com.qmth.distributed.print.business.entity.CourseEvaluation;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +17,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface CourseEvaluationMapper extends BaseMapper<CourseEvaluation> {
 
+    /**
+     * 查询课程评价方式集合
+     *
+     * @param teachCourseId 教学课程id
+     * @return 课程评价方式列表
+     */
+    List<CourseEvaluationResult> findCourseEvaluationList(@Param("teachCourseId") Long teachCourseId);
 }

+ 29 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/CourseEvaluationService.java

@@ -1,7 +1,12 @@
 package com.qmth.distributed.print.business.service;
 
+import com.qmth.distributed.print.business.bean.params.CourseEvaluationParam;
+import com.qmth.distributed.print.business.bean.result.CourseEvaluationResult;
 import com.qmth.distributed.print.business.entity.CourseEvaluation;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.teachcloud.common.entity.SysUser;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +18,28 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface CourseEvaluationService extends IService<CourseEvaluation> {
 
+    /**
+     * 查询课程评价方式集合
+     *
+     * @param examId     考试id
+     * @param courseCode 课程编号
+     * @param userId     用户id
+     * @return 课程评价方式结果
+     */
+    List<CourseEvaluationResult> findCourseEvaluationList(Long examId, String courseCode, Long userId);
+
+    /**
+     * 保存课程评价方式
+     *
+     * @param courseEvaluationParam 课程评价方式参数
+     * @param requestUser           请求用户
+     */
+    void saveCourseEvaluation(CourseEvaluationParam courseEvaluationParam, SysUser requestUser);
+
+    /**
+     * 删除课程评价方式
+     *
+     * @param id 课程评价方式id
+     */
+    void deleteCourseEvaluation(Long id);
 }

+ 64 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CourseEvaluationServiceImpl.java

@@ -1,10 +1,24 @@
 package com.qmth.distributed.print.business.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.distributed.print.business.bean.params.CourseEvaluationParam;
+import com.qmth.distributed.print.business.bean.result.CourseEvaluationResult;
 import com.qmth.distributed.print.business.entity.CourseEvaluation;
+import com.qmth.distributed.print.business.entity.TeachCourse;
+import com.qmth.distributed.print.business.enums.CourseEvaluationTypeEnum;
+import com.qmth.distributed.print.business.enums.CourseSettingTypeEnum;
 import com.qmth.distributed.print.business.mapper.CourseEvaluationMapper;
 import com.qmth.distributed.print.business.service.CourseEvaluationService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.distributed.print.business.service.TeachCourseService;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -17,4 +31,53 @@ import org.springframework.stereotype.Service;
 @Service
 public class CourseEvaluationServiceImpl extends ServiceImpl<CourseEvaluationMapper, CourseEvaluation> implements CourseEvaluationService {
 
+    @Resource
+    private TeachCourseService teachCourseService;
+
+    @Override
+    public List<CourseEvaluationResult> findCourseEvaluationList(Long examId, String courseCode, Long userId) {
+        TeachCourse teachCourse = teachCourseService.findByExamIdCourseCodeAndUserId(examId, courseCode, userId);
+        return this.baseMapper.findCourseEvaluationList(teachCourse.getId());
+    }
+
+    @Transactional
+    @Override
+    public void saveCourseEvaluation(CourseEvaluationParam courseEvaluationParam, SysUser requestUser) {
+        Long requestUserId = requestUser.getId();
+        Long examId = courseEvaluationParam.getExamId();
+        String courseCode = courseEvaluationParam.getCourseCode();
+        String evaluation = courseEvaluationParam.getEvaluation();
+        String evaluationDesc = courseEvaluationParam.getEvaluationDesc();
+
+        TeachCourse teachCourse = teachCourseService.findByExamIdCourseCodeAndUserId(examId, courseCode, requestUserId);
+        Long teachCourseId = teachCourse.getId();
+        if (this.count(
+                new QueryWrapper<CourseEvaluation>().lambda().eq(CourseEvaluation::getTeachCourseId, teachCourseId)
+                        .eq(CourseEvaluation::getEvaluation, evaluation)) > 0) {
+            throw ExceptionResultEnum.ERROR.exception("评价方式重复");
+        }
+
+        CourseEvaluation courseEvaluation = new CourseEvaluation();
+        courseEvaluation.setTeachCourseId(teachCourseId);
+        courseEvaluation.setSchoolId(requestUser.getSchoolId());
+        courseEvaluation.setExamId(examId);
+        courseEvaluation.setCourseCode(courseCode);
+        courseEvaluation.setUserId(requestUserId);
+        courseEvaluation.setType(CourseEvaluationTypeEnum.CUSTOM);
+        courseEvaluation.setEvaluation(evaluation);
+        courseEvaluation.setEvaluationDesc(evaluationDesc);
+        courseEvaluation.insertInfo(requestUserId);
+        this.save(courseEvaluation);
+    }
+
+    @Transactional
+    @Override
+    public void deleteCourseEvaluation(Long id) {
+        CourseEvaluation courseEvaluation = this.getById(id);
+        if (Objects.nonNull(courseEvaluation)) {
+            Long teachCourseId = courseEvaluation.getTeachCourseId();
+            teachCourseService.clearCourseSetting(teachCourseId, CourseSettingTypeEnum.COURSE_EVALUATION);
+            this.removeById(id);
+        }
+    }
 }

+ 4 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CourseTargetServiceImpl.java

@@ -197,8 +197,10 @@ public class CourseTargetServiceImpl extends ServiceImpl<CourseTargetMapper, Cou
     @Override
     public void deleteCourseTarget(Long id) {
         CourseTarget courseTarget = this.getById(id);
-        teachCourseService.clearCourseSetting(courseTarget.getTeachCourseId(), CourseSettingTypeEnum.COURSE_TARGET);
-        this.removeById(id);
+        if (Objects.nonNull(courseTarget)) {
+            teachCourseService.clearCourseSetting(courseTarget.getTeachCourseId(), CourseSettingTypeEnum.COURSE_TARGET);
+            this.removeById(id);
+        }
     }
 
     /**

+ 14 - 0
distributed-print-business/src/main/resources/mapper/CourseEvaluationMapper.xml

@@ -2,4 +2,18 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.qmth.distributed.print.business.mapper.CourseEvaluationMapper">
 
+    <select id="findCourseEvaluationList"
+            resultType="com.qmth.distributed.print.business.bean.result.CourseEvaluationResult">
+        SELECT
+            id AS evaluationId,
+            evaluation,
+            evaluation_desc AS evaluationDesc
+        FROM
+            course_evaluation
+        <where>
+            <if test="teachCourseId != null">
+                AND teach_course_id = #{teachCourseId}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 53 - 3
distributed-print/src/main/java/com/qmth/distributed/print/api/CourseEvaluationController.java

@@ -1,9 +1,23 @@
 package com.qmth.distributed.print.api;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.distributed.print.business.bean.params.CourseEvaluationParam;
+import com.qmth.distributed.print.business.bean.result.CourseEvaluationResult;
+import com.qmth.distributed.print.business.service.CourseEvaluationService;
+import com.qmth.teachcloud.common.annotation.OperationLogDetail;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
+import com.qmth.teachcloud.common.util.Result;
+import com.qmth.teachcloud.common.util.ResultUtil;
+import com.qmth.teachcloud.common.util.ServletUtil;
+import io.swagger.annotations.*;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
 
-import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
+import javax.validation.Valid;
 
 /**
  * <p>
@@ -13,8 +27,44 @@ import org.springframework.web.bind.annotation.RestController;
  * @author CaoZixuan
  * @since 2024-02-22
  */
+@Api(tags = "评价方式管理controller")
 @RestController
-@RequestMapping("/course-evaluation")
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_TEACH + "/course_evaluation")
 public class CourseEvaluationController {
 
+    @Resource
+    private CourseEvaluationService courseEvaluationService;
+
+    @ApiOperation(value = "评价方式管理-列表查询")
+    @RequestMapping(value = "/list", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "查询成功", response = CourseEvaluationResult.class) })
+    public Result findCourseEvaluation(@ApiParam(value = "学期id") @RequestParam(required = false) String examId,
+            @ApiParam(value = "考试id") @RequestParam(required = false) String courseCode) {
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        return ResultUtil.ok(
+                courseEvaluationService.findCourseEvaluationList(SystemConstant.convertIdToLong(examId), courseCode,
+                        requestUser.getId()));
+    }
+
+    @ApiOperation(value = "评价方式管理-新增/编辑")
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "更新成功", response = Result.class) })
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EDIT)
+    public Result saveCourseEvaluation(@Valid @RequestBody CourseEvaluationParam courseEvaluationParam, BindingResult bindingResult) {
+        if (bindingResult.hasErrors()) {
+            return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
+        }
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        courseEvaluationService.saveCourseEvaluation(courseEvaluationParam, sysUser);
+        return ResultUtil.ok();
+    }
+
+    @ApiOperation(value = "评价方式管理-删除")
+    @RequestMapping(value = "/delete", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "删除成功", response = Result.class) })
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.DELETE)
+    public Result deleteCourseEvaluation(@ApiParam(value = "选择要删除的评价方式id", required = true) @RequestParam String id) {
+        courseEvaluationService.deleteCourseEvaluation(SystemConstant.convertIdToLong(id));
+        return ResultUtil.ok();
+    }
 }

+ 2 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/CourseTargetController.java

@@ -92,8 +92,8 @@ public class CourseTargetController {
     @RequestMapping(value = "/delete", method = RequestMethod.POST)
     @ApiResponses({ @ApiResponse(code = 200, message = "删除成功", response = Result.class) })
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.DELETE)
-    public Result deleteCourseTarget(@ApiParam(value = "选择要删除的课程目标id", required = true) @RequestParam Long id) {
-        courseTargetService.deleteCourseTarget(id);
+    public Result deleteCourseTarget(@ApiParam(value = "选择要删除的课程目标id", required = true) @RequestParam String id) {
+        courseTargetService.deleteCourseTarget(SystemConstant.convertIdToLong(id));
         return ResultUtil.ok();
     }
 }