xiangpei
2024-09-23 32ec64370ad5af7df86d59acdc134e697d936db2
课目管理
8个文件已修改
138 ■■■■■ 已修改文件
src/main/java/com/mindskip/xzs/controller/admin/EducationController.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/repository/SubjectMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/SubjectService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/impl/SubjectServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/vo/SubjectVO.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/DepartmentMapper.xml 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/SubjectMapper.xml 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/controller/admin/EducationController.java
@@ -1,6 +1,8 @@
package com.mindskip.xzs.controller.admin;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.mindskip.xzs.base.BaseApiController;
import com.mindskip.xzs.base.RestResponse;
import com.mindskip.xzs.domain.ExamPaperSubject;
@@ -12,11 +14,14 @@
import com.mindskip.xzs.domain.vo.SubjectDeptVO;
import com.mindskip.xzs.repository.DepartmentMapper;
import com.mindskip.xzs.repository.SubjectDeptMapper;
import com.mindskip.xzs.repository.SubjectMapper;
import com.mindskip.xzs.service.*;
import com.mindskip.xzs.viewmodel.admin.education.SubjectEditRequestVM;
import com.mindskip.xzs.viewmodel.admin.education.SubjectPageRequestVM;
import com.mindskip.xzs.vo.SubjectVO;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -32,6 +37,7 @@
public class EducationController extends BaseApiController {
    private final SubjectService subjectService;
    private final SubjectMapper subjectMapper;
    private final SubjectDeptMapper subjectDeptMapper;
    private final QuestionSubjectService questionSubjectService;
    private final ExamPaperSubjectService examPaperSubjectService;
@@ -52,9 +58,34 @@
        return subjectService.add(form);
    }
    @PostMapping("/subject/save")
    public RestResponse<Object> save(@RequestBody @Validated Subject form) {
        form.setDeleted(Boolean.FALSE);
        try {
            subjectMapper.insert(form);
        } catch (Exception e) {
            return RestResponse.fail(500, "课目名不能重复");
        }
        return RestResponse.ok();
    }
    @PostMapping("/subject/edit")
    public RestResponse<Object> edit(@RequestBody @Validated EditSubjectForm form) {
        subjectService.edit(form);
        return RestResponse.ok();
    }
    @PostMapping("/subject/edit1")
    @Transactional(rollbackFor = Exception.class)
    public RestResponse<Object> edit1(@RequestBody Subject form) {
        form.setDeleted(Boolean.FALSE);
        try {
            subjectService.updateById(form);
        } catch (Exception e) {
            return RestResponse.fail(500, "课目名不能重复");
        }
        return RestResponse.ok();
    }
@@ -62,6 +93,14 @@
    public RestResponse<List<Subject>> listByDeptId(@PathVariable("deptId") Integer deptId) {
        List<Subject> subjects = subjectService.listByDeptId(deptId);
        return RestResponse.ok(subjects);
    }
    @RequestMapping(value = "/subject/page1", method = RequestMethod.POST)
    public RestResponse<Object> page(@RequestBody SubjectPageRequestVM model) {
        PageInfo<SubjectVO> page = PageHelper.startPage(model.getPageIndex(), model.getPageSize(), "id desc").doSelectPageInfo(() ->
                departmentMapper.page1(model));
        return RestResponse.ok(page);
    }
    @RequestMapping(value = "/subject/page", method = RequestMethod.POST)
@@ -140,16 +179,17 @@
    }
    @Transactional(rollbackFor = Exception.class)
    @RequestMapping(value = "/subject/delete/{id}", method = RequestMethod.POST)
    public RestResponse delete(@PathVariable Integer id) {
        Subject subject = subjectService.selectById(id);
        subject.setDeleted(true);
        subjectService.updateByIdFilter(subject);
        subjectService.deleteById(id);
        questionSubjectService.removeSubjectId(id);
        Integer[] ids = examPaperSubjectService.getBySubjectId(id)
                .stream().map(ExamPaperSubject::getExamPaperId).toArray(Integer[]::new);
        examPaperService.removeByIds(ids);
        examPaperDepartmentService.removeByExamPaperIds(ids);
        if (ids.length > 0) {
            examPaperService.removeByIds(ids);
            examPaperDepartmentService.removeByExamPaperIds(ids);
        }
        examPaperSubjectService.removeBySubjectId(id);
        return RestResponse.ok();
    }
src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java
@@ -3,6 +3,8 @@
import com.mindskip.xzs.domain.Department;
import com.mindskip.xzs.domain.vo.CascaderDataVO;
import com.mindskip.xzs.viewmodel.admin.department.DepartmentResponseVM;
import com.mindskip.xzs.viewmodel.admin.education.SubjectPageRequestVM;
import com.mindskip.xzs.vo.SubjectVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -63,4 +65,11 @@
     * @return
     */
    List<CascaderDataVO> getLevelDeptList(@Param("level") Integer level);
    /**
     * 管理分页
     *
     * @return
     */
    List<SubjectVO> page1(@Param("query") SubjectPageRequestVM model);
}
src/main/java/com/mindskip/xzs/repository/SubjectMapper.java
@@ -33,4 +33,12 @@
     * @return
     */
    List<Subject> listByDeptId(@Param("deptId") Integer deptId);
    /**
     * 名称搜索
     *
     * @param name
     * @return
     */
    Subject selectByName(@Param("id") Integer id, @Param("name") String name);
}
src/main/java/com/mindskip/xzs/service/SubjectService.java
@@ -44,4 +44,14 @@
     * @param form
     */
    void edit(EditSubjectForm form);
    /**
     * 名称查找
     *
     *
     * @param id
     * @param name
     * @return
     */
    Boolean selectByName(Integer id,String name);
}
src/main/java/com/mindskip/xzs/service/impl/SubjectServiceImpl.java
@@ -21,6 +21,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
@@ -98,7 +99,7 @@
        try {
            subjectMapper.insert(subject);
        } catch (Exception e) {
            return RestResponse.fail(500, "科目名不能重复");
            return RestResponse.fail(500, "课目名不能重复");
        }
        SubjectDept subjectDept = new SubjectDept();
@@ -127,4 +128,17 @@
            }
        }
    }
    /**
     * 检查名称是否存在
     *
     * @param id
     * @param name
     * @return
     */
    @Override
    public Boolean selectByName(Integer id, String name) {
        Subject subject = subjectMapper.selectByName(id,name);
        return Objects.nonNull(subject);
    }
}
src/main/java/com/mindskip/xzs/vo/SubjectVO.java
@@ -13,4 +13,10 @@
    private String subjectName;
    /**
     * 兼容
     *
     */
    private String name;
}
src/main/resources/mapper/DepartmentMapper.xml
@@ -145,10 +145,10 @@
    <select id="getChilds" resultType="integer">
        WITH RECURSIVE temp_table AS (
            SELECT
                id, name, parent_id,special,level FROM t_department WHERE id in <foreach collection="deptIds" open="(" item="deptId" close=")" separator=",">#{deptId}</foreach>
                id, name, parent_id,special,level FROM t_department WHERE id in <foreach collection="deptIds" open="(" item="deptId" close=")" separator=",">#{deptId}</foreach> AND deleted = 0
            UNION ALL
            SELECT
                so.id, so.name, so.parent_id, so.special, so.level FROM t_department so INNER JOIN temp_table tb ON so.parent_id = tb.id
                so.id, so.name, so.parent_id, so.special, so.level FROM t_department so INNER JOIN temp_table tb ON so.parent_id = tb.id AND so.deleted = 0
        )
        SELECT
            DISTINCT id
@@ -159,10 +159,10 @@
    <select id="getFather" resultType="integer">
        WITH RECURSIVE temp_table AS (
        SELECT
        id, name, parent_id,special,level FROM t_department WHERE id = #{deptId}
        id, name, parent_id,special,level FROM t_department WHERE id = #{deptId} AND deleted = 0
        UNION ALL
        SELECT
        so.id, so.name, so.parent_id, so.special, so.level FROM t_department so INNER JOIN temp_table tb ON so.id = tb.parent_id
        so.id, so.name, so.parent_id, so.special, so.level FROM t_department so INNER JOIN temp_table tb ON so.id = tb.parent_id AND so.deleted = 0
        )
        SELECT
        DISTINCT id
@@ -171,7 +171,19 @@
    </select>
    <select id="getLevelDeptList" resultType="com.mindskip.xzs.domain.vo.CascaderDataVO">
        SELECT id as value, name as label, parent_id, special, level FROM t_department WHERE level = #{level}
        SELECT id as value, name as label, parent_id, special, level FROM t_department WHERE level = #{level} AND deleted = 0
    </select>
    <select id="page1" resultType="com.mindskip.xzs.vo.SubjectVO">
        SELECT
               id, name
        FROM
             t_subject
        WHERE
              deleted = 0
              <if test="query.name != null and query.name != ''">
                  AND name like concat('%', #{query.name}  , '%')
              </if>
    </select>
</mapper>
src/main/resources/mapper/SubjectMapper.xml
@@ -25,9 +25,9 @@
        where id = #{id,jdbcType=INTEGER}
    </delete>
    <insert id="insert" parameterType="com.mindskip.xzs.domain.Subject" useGeneratedKeys="true" keyProperty="id">
        insert into t_subject (id, name, level,
        insert into t_subject (name, level,
                               level_name, item_order, deleted)
        values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{level,jdbcType=INTEGER},
        values (#{name,jdbcType=VARCHAR}, #{level,jdbcType=INTEGER},
                #{levelName,jdbcType=VARCHAR}, #{itemOrder,jdbcType=INTEGER}, #{deleted,jdbcType=BIT})
    </insert>
    <insert id="insertSelective" parameterType="com.mindskip.xzs.domain.Subject" useGeneratedKeys="true"
@@ -135,6 +135,19 @@
        where ts.deleted = 0
    </select>
    <select id="selectByName" resultType="com.mindskip.xzs.domain.Subject">
        SELECT
               name
        FROM
             t_subject
        WHERE
              name = #{name} AND deleted = 0
            <if test="id != null">
                AND id != #{id}
            </if>
        limit 1
    </select>
    <select id="page" resultMap="BaseResultMap"
            parameterType="com.mindskip.xzs.viewmodel.admin.education.SubjectPageRequestVM">