From 47cd9ecc0eff38ffe6b3b794b2bf197e958f4403 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 14 五月 2025 15:50:57 +0800
Subject: [PATCH] bug:学员有状态不能修改问题

---
 src/main/java/com/mindskip/xzs/service/impl/SubjectServiceImpl.java |   92 ++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 81 insertions(+), 11 deletions(-)

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 bf9c107..7cbf9f7 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/SubjectServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/SubjectServiceImpl.java
@@ -1,19 +1,28 @@
 package com.mindskip.xzs.service.impl;
 
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.mindskip.xzs.base.RestResponse;
 import com.mindskip.xzs.context.WebContext;
 import com.mindskip.xzs.domain.Subject;
+import com.mindskip.xzs.domain.SubjectDept;
+import com.mindskip.xzs.domain.enums.RoleEnum;
+import com.mindskip.xzs.domain.form.AddSubjectForm;
+import com.mindskip.xzs.domain.form.EditSubjectForm;
 import com.mindskip.xzs.repository.BaseMapper;
 import com.mindskip.xzs.repository.DepartmentMapper;
+import com.mindskip.xzs.repository.SubjectDeptMapper;
 import com.mindskip.xzs.repository.SubjectMapper;
 import com.mindskip.xzs.service.SubjectService;
 import com.mindskip.xzs.viewmodel.admin.education.SubjectPageRequestVM;
-import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 @Service
 public class SubjectServiceImpl extends BaseServiceImpl<Subject> implements SubjectService {
@@ -21,12 +30,14 @@
     private final SubjectMapper subjectMapper;
     private final WebContext webContext;
     private final DepartmentMapper departmentMapper;
+    private final SubjectDeptMapper subjectDeptMapper;
 
-    public SubjectServiceImpl(BaseMapper<Subject> baseMapper, SubjectMapper subjectMapper, WebContext webContext, DepartmentMapper departmentMapper) {
+    public SubjectServiceImpl(BaseMapper<Subject> baseMapper, SubjectMapper subjectMapper, WebContext webContext, DepartmentMapper departmentMapper, SubjectDeptMapper subjectDeptMapper) {
         super(baseMapper);
         this.subjectMapper = subjectMapper;
         this.webContext = webContext;
         this.departmentMapper = departmentMapper;
+        this.subjectDeptMapper = subjectDeptMapper;
     }
 
     @Override
@@ -46,13 +57,16 @@
 
     @Override
     public List<Subject> allSubject() {
-        // 濡傛灉鏄儴闂ㄧ鐞嗗憳锛屽彧鏌ュ叧鑱旇閮ㄩ棬鐨勮鐩�
-        boolean deptAdmin = webContext.isDeptAdmin();
-        List<Integer> deptIds = new ArrayList<>();
-        if (deptAdmin) {
-            deptIds = webContext.getAdminDeptIds();
-        }
-        return subjectMapper.allSubject(deptIds);
+        // 鍙煡鑷繁閮ㄩ棬鐨勮鐩�
+        List<Integer> deptIds = webContext.getAdminDeptIds();
+        Boolean admin = RoleEnum.ADMIN.getCode().equals(webContext.getCurrentUser().getRole());
+        return subjectMapper.allSubject(deptIds, admin);
+    }
+
+    public List<Subject> studentSubList() {
+        // 鍙煡鑷繁閮ㄩ棬鐨勮鐩�
+        List<Integer> deptIds = webContext.getAdminDeptIds();
+        return subjectMapper.allSubject(deptIds, Boolean.FALSE);
     }
 
     @Override
@@ -77,4 +91,60 @@
         return subjectMapper.selectByIds(ids);
     }
 
+    @Override
+    public List<Subject> listByDeptId(Integer deptId) {
+        return subjectMapper.listByDeptId(deptId);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public RestResponse add(AddSubjectForm form) {
+        Subject subject = new Subject();
+        subject.setName(form.getSubjectName());
+        subject.setDeleted(false);
+        try {
+            subjectMapper.insert(subject);
+        } catch (Exception e) {
+            return RestResponse.fail(500, "璇剧洰鍚嶄笉鑳介噸澶�");
+        }
+
+        SubjectDept subjectDept = new SubjectDept();
+        subjectDept.setDeptId(form.getDeptId());
+        subjectDept.setSubjectId(subject.getId());
+        List<SubjectDept> s = new ArrayList<>(1);
+        s.add(subjectDept);
+        subjectDeptMapper.add(s);
+        return RestResponse.ok();
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void edit(EditSubjectForm form) {
+        if (ObjectUtils.isNotEmpty(form.getDeptId())) {
+            // 鍒犻櫎鍘熷厛鐨勮鐩紝鍐嶆柊澧�
+            subjectDeptMapper.deleteByDeptId(form.getDeptId());
+            List<SubjectDept> toAddList = form.getSubjectIds().stream().map(subjectId -> {
+                SubjectDept subjectDept = new SubjectDept();
+                subjectDept.setDeptId(form.getDeptId());
+                subjectDept.setSubjectId(subjectId);
+                return subjectDept;
+            }).collect(Collectors.toList());
+            if (ObjectUtils.isNotEmpty(toAddList)) {
+                subjectDeptMapper.add(toAddList);
+            }
+        }
+    }
+
+    /**
+     * 妫�鏌ュ悕绉版槸鍚﹀瓨鍦�
+     *
+     * @param id
+     * @param name
+     * @return
+     */
+    @Override
+    public Boolean selectByName(Integer id, String name) {
+        Subject subject = subjectMapper.selectByName(id,name);
+        return Objects.nonNull(subject);
+    }
 }

--
Gitblit v1.8.0