From 7cd87e30ed364aa6806eaa28939ea94ad1524a50 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 08 三月 2024 14:46:50 +0800
Subject: [PATCH] 部门增加管理员

---
 src/main/java/com/mindskip/xzs/configuration/plus/MybatisPlusConfig.java            |   24 ++++
 src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java              |   29 ++++
 src/main/java/com/mindskip/xzs/repository/UserDepartmentMapper.java                 |    5 
 pom.xml                                                                             |   15 ++
 src/main/java/com/mindskip/xzs/viewmodel/admin/department/DepartmentResponseVM.java |   40 +-----
 src/main/resources/mapper/DepartmentMapper.xml                                      |   64 +++++++---
 src/main/resources/mapper/UserDepartmentMapper.xml                                  |   15 ++
 src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java           |   29 +++-
 src/main/java/com/mindskip/xzs/domain/Department.java                               |   41 +-----
 src/main/java/com/mindskip/xzs/service/DepartmentService.java                       |   12 +
 src/main/resources/application-dev.yml                                              |   11 +
 src/main/java/com/mindskip/xzs/domain/vo/UpdateDeptAdminVO.java                     |   29 ++++
 src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java                     |    2 
 src/main/java/com/mindskip/xzs/domain/vo/BaseSelect.java                            |   22 +++
 14 files changed, 237 insertions(+), 101 deletions(-)

diff --git a/pom.xml b/pom.xml
index a1db51a..e2408eb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -95,15 +95,24 @@
             <artifactId>spring-boot-starter-undertow</artifactId>
             <version>${spring.boot.version}</version>
         </dependency>
+
+        <!--MyBatis Plus 渚濊禆-->
         <dependency>
-            <groupId>org.mybatis.spring.boot</groupId>
-            <artifactId>mybatis-spring-boot-starter</artifactId>
-            <version>2.1.0</version>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.5.4</version>
         </dependency>
+
         <dependency>
             <groupId>com.github.pagehelper</groupId>
             <artifactId>pagehelper-spring-boot-starter</artifactId>
             <version>1.2.12</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>jsqlparser</artifactId>
+                    <groupId>com.github.jsqlparser</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
 
         <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-aop -->
diff --git a/src/main/java/com/mindskip/xzs/configuration/plus/MybatisPlusConfig.java b/src/main/java/com/mindskip/xzs/configuration/plus/MybatisPlusConfig.java
new file mode 100644
index 0000000..ed1cb21
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/configuration/plus/MybatisPlusConfig.java
@@ -0,0 +1,24 @@
+package com.mindskip.xzs.configuration.plus;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author xp
+ * @date 2024/3/6
+ */
+@Configuration
+public class MybatisPlusConfig {
+
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+
+        // 閰嶇疆鍒嗛〉鎻掍欢
+        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+        return interceptor;
+    }
+}
diff --git a/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java b/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java
index b2ad052..ded0bc5 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java
@@ -6,7 +6,10 @@
 import com.mindskip.xzs.domain.Department;
 import com.mindskip.xzs.domain.User;
 import com.mindskip.xzs.domain.UserDepartment;
+import com.mindskip.xzs.domain.vo.BaseSelect;
 import com.mindskip.xzs.domain.vo.DepartmentVO;
+import com.mindskip.xzs.domain.vo.UpdateDeptAdminVO;
+import com.mindskip.xzs.domain.vo.UserVO;
 import com.mindskip.xzs.repository.UserDepartmentMapper;
 import com.mindskip.xzs.service.DepartmentService;
 import com.mindskip.xzs.service.UserService;
@@ -30,6 +33,24 @@
     private final UserService userService;
     private final UserDepartmentMapper userDepartmentMapper;
 
+    /**
+     * 鑾峰彇閮ㄩ棬涓嬬敤鎴峰垪琛�(涓嬫媺)
+     * @param deptId
+     * @return
+     */
+    @GetMapping("/{id}/user-list")
+    public RestResponse<List<BaseSelect>> getDeptUserList(@PathVariable("id") Integer deptId) {
+        List<BaseSelect> data = departmentService.getDeptUserList(deptId);
+        return RestResponse.ok(data);
+    }
+
+
+    @PostMapping("/update-admin")
+    public RestResponse updateAdmin(@RequestBody UpdateDeptAdminVO form) {
+        departmentService.updateAdmin(form);
+        return RestResponse.ok();
+    }
+
     @Autowired
     public DepartmentController(DepartmentService departmentService, UserService userService, UserDepartmentMapper userDepartmentMapper) {
         this.departmentService = departmentService;
@@ -46,12 +67,8 @@
 
     @RequestMapping(value = "/page/list", method = RequestMethod.POST)
     public RestResponse<PageInfo<DepartmentResponseVM>> pageList(@RequestBody DepartmentResponseVM model) {
-        PageInfo<Department> pageInfo = departmentService.gets(model);
-        PageInfo<DepartmentResponseVM> page = PageInfoHelper.copyMap(pageInfo, q -> {
-            DepartmentResponseVM vm = modelMapper.map(q,DepartmentResponseVM.class);
-            return vm;
-        });
-        return RestResponse.ok(page);
+        PageInfo<DepartmentResponseVM> pageInfo = departmentService.gets(model);
+        return RestResponse.ok(pageInfo);
     }
 
     @RequestMapping(value = "/add", method = RequestMethod.POST)
diff --git a/src/main/java/com/mindskip/xzs/domain/Department.java b/src/main/java/com/mindskip/xzs/domain/Department.java
index dc026c2..1df1c96 100644
--- a/src/main/java/com/mindskip/xzs/domain/Department.java
+++ b/src/main/java/com/mindskip/xzs/domain/Department.java
@@ -1,47 +1,22 @@
 package com.mindskip.xzs.domain;
 
+import lombok.Data;
+
 import javax.sql.rowset.serial.SerialArray;
 import java.io.Serializable;
 
-
+@Data
 public class Department implements Serializable {
 
     private Integer id;
 
     private String name;
 
+    /**
+     * 閮ㄩ棬绠$悊鍛�
+     */
+    private Integer adminId;
+
     private String deleted;
 
-    public Integer getId() {
-        return id;
-    }
-
-    public void setId(Integer id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getDeleted() {
-        return deleted;
-    }
-
-    public void setDeleted(String deleted) {
-        this.deleted = deleted;
-    }
-
-    @Override
-    public String toString() {
-        return "Department{" +
-                "id=" + id +
-                ", name='" + name + '\'' +
-                ", deleted='" + deleted + '\'' +
-                '}';
-    }
 }
diff --git a/src/main/java/com/mindskip/xzs/domain/vo/BaseSelect.java b/src/main/java/com/mindskip/xzs/domain/vo/BaseSelect.java
new file mode 100644
index 0000000..a0d01f0
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/domain/vo/BaseSelect.java
@@ -0,0 +1,22 @@
+package com.mindskip.xzs.domain.vo;
+
+import lombok.Data;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/3/8 11:24
+ */
+@Data
+public class BaseSelect {
+
+    /**
+     * id
+     */
+    private Integer id;
+
+    /**
+     * 涓嬫媺閫夐」鍊�
+     */
+    private String value;
+
+}
diff --git a/src/main/java/com/mindskip/xzs/domain/vo/UpdateDeptAdminVO.java b/src/main/java/com/mindskip/xzs/domain/vo/UpdateDeptAdminVO.java
new file mode 100644
index 0000000..166d9a1
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/domain/vo/UpdateDeptAdminVO.java
@@ -0,0 +1,29 @@
+package com.mindskip.xzs.domain.vo;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 淇敼閮ㄩ棬绠$悊鍛�
+ *
+ * @author锛歺p
+ * @date锛�2024/3/8 13:55
+ */
+@Data
+public class UpdateDeptAdminVO {
+
+    /**
+     * 閮ㄩ棬
+     */
+    @NotNull(message = "閮ㄩ棬涓嶈兘涓虹┖")
+    private Integer id;
+
+    /**
+     * 绠$悊鍛橈紝userId
+     */
+    @NotNull(message = "閮ㄩ棬绠$悊鍛樹笉鑳戒负绌�")
+    private Integer deptAdmin;
+
+}
diff --git a/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java b/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java
index 5cabd55..2e92684 100644
--- a/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java
@@ -15,7 +15,7 @@
 
     List<Department> gets();
 
-    List<Department> page(DepartmentResponseVM departmentResponseVM);
+    List<DepartmentResponseVM> page(DepartmentResponseVM departmentResponseVM);
 
     Department getName(String name);
 
diff --git a/src/main/java/com/mindskip/xzs/repository/UserDepartmentMapper.java b/src/main/java/com/mindskip/xzs/repository/UserDepartmentMapper.java
index 9c70b21..2b5b30e 100644
--- a/src/main/java/com/mindskip/xzs/repository/UserDepartmentMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/UserDepartmentMapper.java
@@ -1,13 +1,14 @@
 package com.mindskip.xzs.repository;
 
 import com.mindskip.xzs.domain.UserDepartment;
+import com.mindskip.xzs.domain.vo.BaseSelect;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
 @Mapper
-public interface UserDepartmentMapper extends BaseMapper<UserDepartment>{
+public interface UserDepartmentMapper extends BaseMapper<UserDepartment> {
 
     List<UserDepartment> selectByUserId(@Param("userId") Integer userId);
 
@@ -19,4 +20,6 @@
     UserDepartment selectByUser(Integer id);
 
     void updateUserDepartMent(UserDepartment userDepartment);
+
+    List<BaseSelect> getDeptUserList(Integer deptId);
 }
diff --git a/src/main/java/com/mindskip/xzs/service/DepartmentService.java b/src/main/java/com/mindskip/xzs/service/DepartmentService.java
index 6cd40ea..dbbfa41 100644
--- a/src/main/java/com/mindskip/xzs/service/DepartmentService.java
+++ b/src/main/java/com/mindskip/xzs/service/DepartmentService.java
@@ -3,6 +3,8 @@
 import com.github.pagehelper.PageInfo;
 import com.mindskip.xzs.domain.Department;
 import com.mindskip.xzs.domain.Question;
+import com.mindskip.xzs.domain.vo.BaseSelect;
+import com.mindskip.xzs.domain.vo.UpdateDeptAdminVO;
 import com.mindskip.xzs.viewmodel.admin.department.DepartmentResponseVM;
 
 import java.util.List;
@@ -34,11 +36,19 @@
      * 鏌ヨ鎵�鏈夐儴闂�
      * @return
      */
-    PageInfo<Department> gets(DepartmentResponseVM departmentResponseVM);
+    PageInfo<DepartmentResponseVM> gets(DepartmentResponseVM departmentResponseVM);
 
     Department getById(Integer id);
 
     List<Department> gets();
 
     Department getName(String name);
+
+    List<BaseSelect> getDeptUserList(Integer deptId);
+
+    /**
+     * 淇敼閮ㄩ棬绠$悊鍛�
+     * @param form
+     */
+    void updateAdmin(UpdateDeptAdminVO form);
 }
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 e1022b9..0c737eb 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java
@@ -1,8 +1,12 @@
 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.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;
@@ -14,6 +18,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.Objects;
 
 @Service
 public class DepartmentServiceImpl extends BaseServiceImpl<Department> implements DepartmentService {
@@ -48,12 +53,12 @@
     @Transactional(rollbackFor = Exception.class)
     @Override
     public Integer update(Department department) {
-        userDepartmentMapper.removeByDepartmentId(department.getId());
+//        userDepartmentMapper.removeByDepartmentId(department.getId());
         return departmentMapper.update(department);
     }
 
     @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)
         );
@@ -73,4 +78,24 @@
     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 department = departmentMapper.getById(form.getId());
+        if (Objects.isNull(department)) {
+            throw new RuntimeException("璇ラ儴闂ㄤ笉瀛樺湪");
+        }
+        department.setAdminId(form.getDeptAdmin());
+        departmentMapper.update(department);
+    }
 }
diff --git a/src/main/java/com/mindskip/xzs/viewmodel/admin/department/DepartmentResponseVM.java b/src/main/java/com/mindskip/xzs/viewmodel/admin/department/DepartmentResponseVM.java
index 33dd791..69b7a01 100644
--- a/src/main/java/com/mindskip/xzs/viewmodel/admin/department/DepartmentResponseVM.java
+++ b/src/main/java/com/mindskip/xzs/viewmodel/admin/department/DepartmentResponseVM.java
@@ -1,7 +1,9 @@
 package com.mindskip.xzs.viewmodel.admin.department;
 
 import com.mindskip.xzs.base.BasePage;
+import lombok.Data;
 
+@Data
 public class DepartmentResponseVM extends BasePage {
 
 
@@ -9,38 +11,10 @@
 
     private String name;
 
-    private String deleted;
+    /**
+     * 绠$悊鍛�
+     */
+    private Integer adminId;
+    private String adminName;
 
-    public Integer getId() {
-        return id;
-    }
-
-    public void setId(Integer id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getDeleted() {
-        return deleted;
-    }
-
-    public void setDeleted(String deleted) {
-        this.deleted = deleted;
-    }
-
-    @Override
-    public String toString() {
-        return "Department{" +
-                "id=" + id +
-                ", name='" + name + '\'' +
-                ", deleted='" + deleted + '\'' +
-                '}';
-    }
 }
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fcd2df7..8e0d161 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,9 +1,16 @@
 logging:
   path: ./log/
 
+#spring:
+#  datasource:
+#    url: jdbc:mysql://80.36.32.171:3306/xzs?useSSL=false&useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&allowMultiQueries=true
+#    username: root
+#    password: qirong_123
+#    driver-class-name: com.mysql.cj.jdbc.Driver
+
 spring:
   datasource:
-    url: jdbc:mysql://80.36.32.171:3306/xzs?useSSL=false&useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&allowMultiQueries=true
+    url: jdbc:mysql://42.193.1.25:3306/qyxzs?useSSL=false&useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&allowMultiQueries=true
     username: root
-    password: qirong_123
+    password: 321$YcYl@1970!
     driver-class-name: com.mysql.cj.jdbc.Driver
diff --git a/src/main/resources/mapper/DepartmentMapper.xml b/src/main/resources/mapper/DepartmentMapper.xml
index 7146268..5eee8cd 100644
--- a/src/main/resources/mapper/DepartmentMapper.xml
+++ b/src/main/resources/mapper/DepartmentMapper.xml
@@ -13,8 +13,8 @@
     </sql>
 
     <insert id="add" parameterType="com.mindskip.xzs.domain.Department" useGeneratedKeys="true" keyProperty="id">
-        insert into t_department (name, deleted)
-        values (#{name,jdbcType=VARCHAR}, #{deleted,jdbcType=VARCHAR})
+        insert into t_department (name, admin_id, deleted)
+        values (#{name,jdbcType=VARCHAR}, {#{adminId}, #{deleted,jdbcType=VARCHAR})
     </insert>
 
     <update id="update" parameterType="com.mindskip.xzs.domain.Department">
@@ -22,6 +22,9 @@
         <set>
             <if test="name != null">
                 name = #{name,jdbcType=VARCHAR},
+            </if>
+            <if test="adminId != null">
+                admin_id = #{adminId},
             </if>
             <if test="deleted != null">
                 deleted = #{deleted,jdbcType=VARCHAR},
@@ -31,38 +34,63 @@
     </update>
 
     <select id="gets" resultMap="BaseResultMap">
-        select
-        <include refid="Base_Column_List"/>
-        from t_department where deleted=0
+        SELECT
+            td.id,
+            td.name,
+            td.admin_id as adminId,
+            tu.real_name as adminName
+        FROM
+            t_department td
+                LEFT JOIN t_user tu ON td.admin_id = tu.id AND tu.deleted = 0
+        WHERE
+            td.deleted = 0
     </select>
 
     <select id="getById" resultMap="BaseResultMap">
-        select
-        <include refid="Base_Column_List"/>
-        from t_department where deleted=0
-        and id = #{id}
+        SELECT
+            td.id,
+            td.name,
+            td.admin_id as adminId,
+            tu.real_name as adminName
+        FROM
+            t_department td
+                LEFT JOIN t_user tu ON td.admin_id = tu.id AND tu.deleted = 0
+        WHERE
+              td.id = #{id} AND td.deleted = 0
     </select>
 
-    <select id="page" resultMap="BaseResultMap"
+    <select id="page" resultType="com.mindskip.xzs.viewmodel.admin.department.DepartmentResponseVM"
             parameterType="com.mindskip.xzs.viewmodel.admin.department.DepartmentResponseVM">
         SELECT
-        <include refid="Base_Column_List"/>
-        FROM t_department
+            td.id,
+            td.name,
+            td.admin_id as adminId,
+            tu.real_name as adminName
+        FROM
+             t_department td
+                 LEFT JOIN t_user tu ON td.admin_id = tu.id AND tu.deleted = 0
         <where>
-            and deleted=0
+            AND td.deleted = 0
             <if test="id != null ">
-                and id= #{id}
+                AND td.id= #{id}
             </if>
             <if test="name != null ">
-                and name like concat('%',#{name},'%')
+                AND td.name like concat('%',#{name},'%')
             </if>
 
         </where>
     </select>
 
     <select id="getName" resultMap="BaseResultMap">
-        select
-        <include refid="Base_Column_List"/>
-        from t_department where deleted=0 and name = #{name}
+        SELECT
+            td.id,
+            td.name,
+            td.admin_id as adminId,
+            tu.real_name as adminName
+        FROM
+            t_department td
+                LEFT JOIN t_user tu ON td.admin_id = tu.id AND tu.deleted = 0
+        WHERE
+            td.name = #{name} AND td.deleted = 0
     </select>
 </mapper>
diff --git a/src/main/resources/mapper/UserDepartmentMapper.xml b/src/main/resources/mapper/UserDepartmentMapper.xml
index 4434e15..8f97bd9 100644
--- a/src/main/resources/mapper/UserDepartmentMapper.xml
+++ b/src/main/resources/mapper/UserDepartmentMapper.xml
@@ -53,4 +53,17 @@
         </set>
         where id = #{id}
     </update>
-</mapper>
\ No newline at end of file
+
+    <select id="getDeptUserList" resultType="com.mindskip.xzs.domain.vo.BaseSelect" >
+        SELECT
+               tu.id,
+               tu.real_name as 'value'
+        FROM
+             t_user tu
+                 INNER JOIN t_user_department tud ON tud.user_id = tu.id
+        <where>
+            AND tud.department_id = #{depId}
+        </where>
+    </select>
+
+</mapper>

--
Gitblit v1.8.0