From 32ec64370ad5af7df86d59acdc134e697d936db2 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期一, 23 九月 2024 20:41:11 +0800
Subject: [PATCH] 课目管理

---
 src/main/resources/mapper/DepartmentMapper.xml                           |   22 +++++-
 src/main/java/com/mindskip/xzs/service/SubjectService.java               |   10 +++
 src/main/resources/mapper/SubjectMapper.xml                              |   17 +++++
 src/main/java/com/mindskip/xzs/controller/admin/EducationController.java |   50 +++++++++++++++-
 src/main/java/com/mindskip/xzs/repository/SubjectMapper.java             |    8 ++
 src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java          |    9 +++
 src/main/java/com/mindskip/xzs/service/impl/SubjectServiceImpl.java      |   16 +++++
 src/main/java/com/mindskip/xzs/vo/SubjectVO.java                         |    6 ++
 8 files changed, 125 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/mindskip/xzs/controller/admin/EducationController.java b/src/main/java/com/mindskip/xzs/controller/admin/EducationController.java
index bd18ee5..3ecde91 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/EducationController.java
+++ b/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();
     }
diff --git a/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java b/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java
index ead08a8..4d42187 100644
--- a/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java
+++ b/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);
 }
diff --git a/src/main/java/com/mindskip/xzs/repository/SubjectMapper.java b/src/main/java/com/mindskip/xzs/repository/SubjectMapper.java
index f9909a7..bd374bd 100644
--- a/src/main/java/com/mindskip/xzs/repository/SubjectMapper.java
+++ b/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);
 }
diff --git a/src/main/java/com/mindskip/xzs/service/SubjectService.java b/src/main/java/com/mindskip/xzs/service/SubjectService.java
index 85753ee..7d29f5d 100644
--- a/src/main/java/com/mindskip/xzs/service/SubjectService.java
+++ b/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);
 }
diff --git a/src/main/java/com/mindskip/xzs/service/impl/SubjectServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/SubjectServiceImpl.java
index 26791e9..e7c9c58 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/SubjectServiceImpl.java
+++ b/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);
+    }
 }
diff --git a/src/main/java/com/mindskip/xzs/vo/SubjectVO.java b/src/main/java/com/mindskip/xzs/vo/SubjectVO.java
index 5b22752..e004ec5 100644
--- a/src/main/java/com/mindskip/xzs/vo/SubjectVO.java
+++ b/src/main/java/com/mindskip/xzs/vo/SubjectVO.java
@@ -13,4 +13,10 @@
 
     private String subjectName;
 
+    /**
+     * 鍏煎
+     *
+     */
+    private String name;
+
 }
diff --git a/src/main/resources/mapper/DepartmentMapper.xml b/src/main/resources/mapper/DepartmentMapper.xml
index a698ca9..6270696 100644
--- a/src/main/resources/mapper/DepartmentMapper.xml
+++ b/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>
diff --git a/src/main/resources/mapper/SubjectMapper.xml b/src/main/resources/mapper/SubjectMapper.xml
index e7d4ac5..7c75ea3 100644
--- a/src/main/resources/mapper/SubjectMapper.xml
+++ b/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">

--
Gitblit v1.8.0