fubojin hai 1 mes
pai
achega
716de4bc89

+ 29 - 1
yami-shop-bean/src/main/java/com/yami/shop/bean/model/Dept.java

@@ -1,16 +1,17 @@
 
 package com.yami.shop.bean.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 部门实体类
  *
- * @author
  */
 @Data
 @TableName("tz_sys_dept")
@@ -42,6 +43,22 @@ public class Dept implements Serializable {
      * 部门层级
      */
     private Integer level;
+    /**
+     * 部门负责人(用户ID)
+     */
+    private Long leaderUserId;
+    @TableField(exist = false)
+    private Long leaderUserName;
+
+    /**
+     * 联系电话(加密存储)
+     */
+    private String phone;
+
+    /**
+     * 邮箱
+     */
+    private String email;
 
     /**
      * 排序
@@ -53,6 +70,11 @@ public class Dept implements Serializable {
      */
     private Integer status;
 
+    /**
+     * 删除状态 0-正常, 1-已被删除
+     */
+    private Integer isDelete;
+
     /**
      * 创建时间
      */
@@ -62,4 +84,10 @@ public class Dept implements Serializable {
      * 更新时间
      */
     private Date updateTime;
+    /**
+     * 子部门
+     */
+    @TableField(exist = false)
+    private List<Dept> children;
+
 }

+ 30 - 4
yami-shop-service/src/main/java/com/yami/shop/service/impl/DeptServiceImpl.java

@@ -10,6 +10,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 部门Service实现类
@@ -24,7 +25,28 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements De
 
     @Override
     public List<Dept> listAllDept() {
-        return list();
+        // 获取所有未删除的部门数据
+        List<Dept> allDepts = list(new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<Dept>()
+                .eq(Dept::getIsDelete, 0));
+
+        // 构建树形结构
+        return buildDeptTree(allDepts, 0L);
+    }
+
+    /**
+     * 构建部门树形结构
+     * @param depts 所有部门列表
+     * @param parentId 父级ID
+     * @return 树形结构的部门列表
+     */
+    private List<Dept> buildDeptTree(List<Dept> depts, Long parentId) {
+        return depts.stream()
+                .filter(dept -> dept.getParentId().equals(parentId))
+                .peek(dept -> {
+                    List<Dept> children = buildDeptTree(depts, dept.getDeptId());
+                    dept.setChildren(children);
+                })
+                .collect(Collectors.toList());
     }
 
     @Override
@@ -41,6 +63,7 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements De
     public boolean saveDept(Dept dept) {
         dept.setCreateTime(new Date());
         dept.setUpdateTime(new Date());
+        dept.setIsDelete(0); // 默认未删除
         return save(dept);
     }
 
@@ -53,9 +76,12 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements De
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean deleteDept(Long deptId) {
-        // 删除部门下的用户关联
-        // 删除子部门及关联关系(如果需要)
-        return removeById(deptId);
+        // 软删除:更新 is_delete 字段为 1
+        Dept dept = new Dept();
+        dept.setDeptId(deptId);
+        dept.setIsDelete(1);
+        dept.setUpdateTime(new Date());
+        return updateById(dept);
     }
 
     @Override

+ 51 - 15
yami-shop-service/src/main/resources/mapper/DeptMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.yami.shop.platform.mapper.DeptMapper">
+<mapper namespace="com.yami.shop.dao.DeptMapper">
 
     <resultMap id="BaseResultMap" type="com.yami.shop.bean.model.Dept">
         <id column="dept_id" property="deptId"/>
@@ -10,34 +10,70 @@
         <result column="level" property="level"/>
         <result column="seq" property="seq"/>
         <result column="status" property="status"/>
+        <result column="is_delete" property="isDelete"/>
+        <result column="leader_user_id" property="leaderUserId"/>
+        <result column="phone" property="phone"/>
+        <result column="email" property="email"/>
         <result column="create_time" property="createTime"/>
         <result column="update_time" property="updateTime"/>
     </resultMap>
 
-
+    <resultMap id="DeptWithLeaderMap" type="com.yami.shop.bean.model.Dept" extends="BaseResultMap">
+        <result column="leader_user_name" property="leaderUserName"/>
+    </resultMap>
 
     <!-- 根据父级部门ID获取子部门列表 -->
     <select id="selectByParentId" resultMap="BaseResultMap">
-        SELECT  dept_id, dept_name, description, parent_id, level, seq, status, create_time, update_time
+        SELECT  dept_id, dept_name, description, parent_id, level, seq, status, is_delete, leader_user_id, phone, email, create_time, update_time
         FROM tz_sys_dept
-        WHERE parent_id = #{parentId}
+        WHERE parent_id = #{parentId} AND is_delete = 0
         ORDER BY seq
     </select>
 
-    <!-- 获取部门树结构 -->
-    <select id="selectDeptTree" resultMap="BaseResultMap">
-        SELECT  dept_id, dept_name, description, parent_id, level, seq, status, create_time, update_time
-        FROM tz_sys_dept
-        WHERE status = 1
-        ORDER BY parent_id, seq
+    <!-- 获取部门树结构(包含负责人姓名) -->
+    <select id="selectDeptTree" resultMap="DeptWithLeaderMap">
+        SELECT
+            d.dept_id,
+            d.dept_name,
+            d.description,
+            d.parent_id,
+            d.level,
+            d.seq,
+            d.status,
+            d.is_delete,
+            d.leader_user_id,
+            d.phone,
+            d.email,
+            d.create_time,
+            d.update_time,
+            u.username as leader_user_name
+        FROM tz_sys_dept d
+                 LEFT JOIN tz_sys_user u ON d.leader_user_id = u.user_id
+        WHERE d.status = 1 AND d.is_delete = 0
+        ORDER BY d.parent_id, d.seq
     </select>
 
-    <!-- 根据用户ID获取所属部门列表 -->
-    <select id="selectDeptsByUserId" resultMap="BaseResultMap">
-        SELECT d.dept_id, d.dept_name, d.description, d.parent_id, d.level, d.seq, d.status, d.create_time, d.update_time
+    <!-- 根据用户ID获取所属部门列表(包含负责人姓名) -->
+    <select id="selectDeptsByUserId" resultMap="DeptWithLeaderMap">
+        SELECT
+            d.dept_id,
+            d.dept_name,
+            d.description,
+            d.parent_id,
+            d.level,
+            d.seq,
+            d.status,
+            d.is_delete,
+            d.leader_user_id,
+            d.phone,
+            d.email,
+            d.create_time,
+            d.update_time,
+            u.username as leader_user_name
         FROM tz_sys_dept d
-        INNER JOIN tz_sys_dept_user du ON d.dept_id = du.dept_id
-        WHERE du.user_id = #{userId}
+                 INNER JOIN tz_sys_dept_user du ON d.dept_id = du.dept_id
+                 LEFT JOIN tz_sys_user u ON d.leader_user_id = u.user_id
+        WHERE du.user_id = #{userId} AND d.is_delete = 0
         ORDER BY d.parent_id, d.seq
     </select>
 

+ 1 - 1
yami-shop-service/src/main/resources/mapper/DeptUserMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.yami.shop.platform.mapper.DeptUserMapper">
+<mapper namespace="com.yami.shop.dao.DeptUserMapper">
 
     <resultMap id="BaseResultMap" type="com.yami.shop.bean.model.DeptUser">
         <id column="id" property="id"/>

+ 1 - 2
yami-shop-sys/src/main/java/com/yami/shop/sys/controller/SysUserController.java

@@ -23,6 +23,7 @@ import com.yami.shop.common.util.R;
 import com.yami.shop.security.comment.model.UpdatePasswordDto;
 import com.yami.shop.security.platform.util.SecurityUtils;
 import com.yami.shop.common.config.Constant;
+import com.yami.shop.service.DeptService;
 import com.yami.shop.sys.model.SysUser;
 import com.yami.shop.sys.service.SysRoleService;
 import com.yami.shop.sys.service.SysUserService;
@@ -66,8 +67,6 @@ public class SysUserController {
 
 		IPage<SysUser> sysUserPage = sysUserService.page(page, new LambdaQueryWrapper<SysUser>()
 				.like(StrUtil.isNotBlank(username), SysUser::getUsername, username));
-
-
 		return R.SUCCESS(sysUserPage);
 	}
 

+ 7 - 0
yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysUser.java

@@ -16,6 +16,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.yami.shop.bean.model.Dept;
 import com.yami.shop.common.util.PrincipalUtil;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -80,6 +81,12 @@ public class SysUser implements Serializable {
 	@TableField(exist=false)
 	private List<Long> roleIdList;
 
+	/**
+	 * 部门列表
+	 */
+	@TableField(exist=false)
+	private List<Dept> depts;
+
 	/**
 	 * 创建时间
 	 */

+ 14 - 1
yami-shop-sys/src/main/java/com/yami/shop/sys/service/impl/SysUserServiceImpl.java

@@ -13,15 +13,19 @@ package com.yami.shop.sys.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yami.shop.bean.model.Dept;
+import com.yami.shop.service.DeptService;
 import com.yami.shop.sys.dao.SysUserMapper;
 import com.yami.shop.sys.dao.SysUserRoleMapper;
 import com.yami.shop.sys.model.SysUser;
 import com.yami.shop.sys.service.SysUserService;
 import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
+import java.util.List;
 
 
 /**
@@ -35,6 +39,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 	private SysUserRoleMapper sysUserRoleMapper;
 
 	private SysUserMapper sysUserMapper;
+	@Autowired
+	private DeptService deptService; // 注入部门服务
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
@@ -79,6 +85,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
 	@Override
 	public SysUser getSysUserById(Long userId) {
-		return sysUserMapper.selectById(userId);
+		SysUser user = sysUserMapper.selectById(userId);
+		//获取用户所属部门
+		if (user != null) {
+			// 通过关联表查询用户对应的部门信息
+			List<Dept> depts = deptService.listDeptsByUserId(String.valueOf(userId));
+			user.setDepts(depts);
+		}
+		return user;
 	}
 }