From 49429bad1036c81c056faeadfa009c53ba777fad Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期二, 07 五月 2024 18:02:11 +0800
Subject: [PATCH] feat:反馈保存、展示、处理、删除

---
 src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java |   91 ++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 88 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java
index 633dd45..5383ce2 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java
@@ -1,25 +1,41 @@
 package com.mindskip.xzs.service.impl;
 
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.mindskip.xzs.domain.Department;
+import com.mindskip.xzs.domain.UserDepartment;
+import com.mindskip.xzs.domain.enums.DeptAdminEnum;
+import com.mindskip.xzs.domain.vo.BaseSelect;
+import com.mindskip.xzs.domain.vo.UpdateDeptAdminVO;
 import com.mindskip.xzs.repository.BaseMapper;
 import com.mindskip.xzs.repository.DepartmentMapper;
+import com.mindskip.xzs.repository.UserDepartmentMapper;
+import com.mindskip.xzs.repository.UserMapper;
 import com.mindskip.xzs.service.DepartmentService;
 import com.mindskip.xzs.utility.ModelMapperSingle;
 import com.mindskip.xzs.viewmodel.admin.department.DepartmentResponseVM;
 import org.modelmapper.ModelMapper;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Objects;
+
 @Service
 public class DepartmentServiceImpl extends BaseServiceImpl<Department> implements DepartmentService {
 
     protected final static ModelMapper modelMapper = ModelMapperSingle.Instance();
 
     private final DepartmentMapper departmentMapper;
+    private final UserDepartmentMapper userDepartmentMapper;
+    private final UserMapper userMapper;
 
-    public DepartmentServiceImpl(BaseMapper<Department> baseMapper, DepartmentMapper departmentMapper) {
+    public DepartmentServiceImpl(BaseMapper<Department> baseMapper, DepartmentMapper departmentMapper, UserDepartmentMapper userDepartmentMapper, UserMapper userMapper) {
         super(baseMapper);
         this.departmentMapper = departmentMapper;
+        this.userDepartmentMapper = userDepartmentMapper;
+        this.userMapper = userMapper;
     }
 
     @Override
@@ -38,15 +54,84 @@
         return departmentMapper.update(department);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public Integer update(Department department) {
-        return departmentMapper.update(department);
+//        userDepartmentMapper.removeByDepartmentId(department.getId());
+        Department entity = departmentMapper.getById(department.getId());
+        if (Objects.isNull(entity)) {
+            throw new RuntimeException("璇ラ儴闂ㄤ笉瀛樺湪");
+        }
+        if (Objects.nonNull(department.getAdminId())) {
+            Integer adminNum = departmentMapper.countByAdminId(department.getAdminId(), department.getId());
+            if (adminNum > 0) {
+                throw new RuntimeException("涓�涓敤鎴峰彧鑳芥槸涓�涓崟浣嶇殑绠$悊鍛�");
+            }
+            if (! Objects.equals(entity.getAdminId(), department.getAdminId())) {
+                // 鍙栨秷鍘熷厛鐨勭鐞嗗憳鏍囪瘑
+                userMapper.updateDeptAdmin(entity.getAdminId(), DeptAdminEnum.NO.getValue());
+            }
+            // 鏍囪瘑閮ㄩ棬绠$悊鍛�
+            userMapper.updateDeptAdmin(department.getAdminId(), DeptAdminEnum.YES.getValue());
+        }
+        Integer update = departmentMapper.update(department);
+        return update;
     }
 
     @Override
-    public PageInfo<Department> gets(DepartmentResponseVM departmentResponseVM) {
+    public PageInfo<DepartmentResponseVM> gets(DepartmentResponseVM departmentResponseVM) {
         return PageHelper.startPage(departmentResponseVM.getPageIndex(), departmentResponseVM.getPageSize(), "id desc").doSelectPageInfo(() ->
                 departmentMapper.page(departmentResponseVM)
         );
     }
+
+    @Override
+    public Department getById(Integer id) {
+        return departmentMapper.getById(id);
+    }
+
+    @Override
+    public List<Department> gets(Integer deptId) {
+        if (deptId == null || deptId == -1) {
+            deptId = null;
+        }
+        return departmentMapper.gets(deptId);
+    }
+
+    @Override
+    public Department getName(String name) {
+        return departmentMapper.getName(name);
+    }
+
+    /**
+     * 鑾峰彇閮ㄩ棬鐢ㄦ埛涓嬫媺鍒楄〃
+     * @param deptId
+     * @return
+     */
+    @Override
+    public List<BaseSelect> getDeptUserList(Integer deptId) {
+        return userDepartmentMapper.getDeptUserList(deptId);
+    }
+
+    @Override
+    public void updateAdmin(UpdateDeptAdminVO form) {
+        Department entity = departmentMapper.getById(form.getId());
+        if (Objects.isNull(form)) {
+            throw new RuntimeException("璇ラ儴闂ㄤ笉瀛樺湪");
+        }
+        if (Objects.nonNull(form.getAdminId())) {
+            Integer adminNum = departmentMapper.countByAdminId(form.getAdminId(), form.getId());
+            if (adminNum > 0) {
+                throw new RuntimeException("涓�涓敤鎴峰彧鑳芥槸涓�涓崟浣嶇殑绠$悊鍛�");
+            }
+            if (! Objects.equals(entity.getAdminId(), form.getAdminId())) {
+                // 鍙栨秷鍘熷厛鐨勭鐞嗗憳鏍囪瘑
+                userMapper.updateDeptAdmin(entity.getAdminId(), DeptAdminEnum.NO.getValue());
+            }
+            // 鏍囪瘑閮ㄩ棬绠$悊鍛�
+            userMapper.updateDeptAdmin(form.getAdminId(), DeptAdminEnum.YES.getValue());
+        }
+        entity.setAdminId(form.getAdminId());
+        departmentMapper.update(entity);
+    }
 }

--
Gitblit v1.8.0