Prechádzať zdrojové kódy

add:中台增加权限管理(编辑部门功能)

lyx 1 týždeň pred
rodič
commit
198d34bfe0

+ 33 - 0
alien-entity/src/main/java/shop/alien/entity/store/dto/LifeSysDeptUpdateDto.java

@@ -0,0 +1,33 @@
+package shop.alien.entity.store.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * 部门编辑DTO
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "LifeSysDeptUpdateDto对象", description = "部门编辑信息")
+public class LifeSysDeptUpdateDto {
+
+    @ApiModelProperty(value = "部门ID", required = true)
+    private Long deptId;
+
+    @ApiModelProperty(value = "部门名称", required = true)
+    private String deptName;
+
+    @ApiModelProperty(value = "部门描述")
+    private String description;
+
+    @ApiModelProperty(value = "部门负责人")
+    private Integer leader;
+}
+

+ 17 - 1
alien-store/src/main/java/shop/alien/store/controller/LifeSysDeptController.java

@@ -8,6 +8,7 @@ import shop.alien.entity.result.R;
 import shop.alien.entity.store.LifeSysDept;
 import shop.alien.entity.store.dto.LifeSysDeptAddDto;
 import shop.alien.entity.store.dto.LifeSysDeptSortDto;
+import shop.alien.entity.store.dto.LifeSysDeptUpdateDto;
 import shop.alien.store.service.LifeSysDeptService;
 
 /**
@@ -59,9 +60,24 @@ public class LifeSysDeptController {
         return lifeSysDeptService.updateFirstLevelDeptSort(sortDto);
     }
 
-    @ApiOperation("删除部门")
+    @ApiOperation("编辑部门")
     @ApiOperationSupport(order = 3)
     @ApiImplicitParams({
+            @ApiImplicitParam(name = "deptId", value = "部门ID", dataType = "Long", paramType = "body", required = true),
+            @ApiImplicitParam(name = "deptName", value = "部门名称", dataType = "String", paramType = "body", required = true),
+            @ApiImplicitParam(name = "description", value = "部门描述", dataType = "String", paramType = "body"),
+            @ApiImplicitParam(name = "leader", value = "部门负责人", dataType = "Integer", paramType = "body"),
+    })
+    @PostMapping(value = "/updateDept")
+    public R<LifeSysDept> updateDept(@RequestBody LifeSysDeptUpdateDto updateDto) {
+        log.info("LifeSysDeptController.updateDept => deptId={}, deptName={}, description={}, leader={}",
+                updateDto.getDeptId(), updateDto.getDeptName(), updateDto.getDescription(), updateDto.getLeader());
+        return lifeSysDeptService.updateDept(updateDto);
+    }
+
+    @ApiOperation("删除部门")
+    @ApiOperationSupport(order = 4)
+    @ApiImplicitParams({
             @ApiImplicitParam(name = "deptId", value = "部门ID", dataType = "Long", paramType = "query", required = true),
     })
     @DeleteMapping(value = "/deleteDept")

+ 9 - 0
alien-store/src/main/java/shop/alien/store/service/LifeSysDeptService.java

@@ -4,6 +4,7 @@ import shop.alien.entity.result.R;
 import shop.alien.entity.store.LifeSysDept;
 import shop.alien.entity.store.dto.LifeSysDeptAddDto;
 import shop.alien.entity.store.dto.LifeSysDeptSortDto;
+import shop.alien.entity.store.dto.LifeSysDeptUpdateDto;
 
 /**
  * 部门表 服务接口
@@ -36,5 +37,13 @@ public interface LifeSysDeptService {
      * @return R<Boolean>
      */
     R<Boolean> deleteDept(Long deptId);
+
+    /**
+     * 编辑部门
+     *
+     * @param updateDto 编辑部门信息
+     * @return R<LifeSysDept>
+     */
+    R<LifeSysDept> updateDept(LifeSysDeptUpdateDto updateDto);
 }
 

+ 64 - 0
alien-store/src/main/java/shop/alien/store/service/impl/LifeSysDeptServiceImpl.java

@@ -11,6 +11,7 @@ import shop.alien.entity.result.R;
 import shop.alien.entity.store.LifeSysDept;
 import shop.alien.entity.store.dto.LifeSysDeptAddDto;
 import shop.alien.entity.store.dto.LifeSysDeptSortDto;
+import shop.alien.entity.store.dto.LifeSysDeptUpdateDto;
 import shop.alien.mapper.LifeSysDeptMapper;
 import shop.alien.store.service.LifeSysDeptService;
 
@@ -296,5 +297,68 @@ public class LifeSysDeptServiceImpl implements LifeSysDeptService {
             return R.fail("删除部门失败:" + e.getMessage());
         }
     }
+
+    @Override
+    public R<LifeSysDept> updateDept(LifeSysDeptUpdateDto updateDto) {
+        log.info("LifeSysDeptServiceImpl.updateDept?updateDto={}", updateDto);
+
+        // 参数校验
+        if (updateDto == null) {
+            log.warn("编辑部门失败:参数为空");
+            return R.fail("参数不能为空");
+        }
+
+        // 校验必填字段:部门ID
+        if (updateDto.getDeptId() == null) {
+            return R.fail("部门ID不能为空");
+        }
+
+        // 校验必填字段:部门名称
+        if (!StringUtils.hasText(updateDto.getDeptName())) {
+            return R.fail("部门名称不能为空");
+        }
+
+        // 查询部门是否存在
+        LifeSysDept dept = lifeSysDeptMapper.selectById(updateDto.getDeptId());
+        if (dept == null) {
+            return R.fail("部门不存在");
+        }
+
+        // 检查是否已被删除
+        if (!"0".equals(dept.getDelFlag())) {
+            return R.fail("该部门已被删除");
+        }
+
+        // 如果部门名称有变化,校验新名称是否与其他部门重复(同一父部门下不能有重名)
+        if (!updateDto.getDeptName().equals(dept.getDeptName())) {
+            QueryWrapper<LifeSysDept> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("dept_name", updateDto.getDeptName());
+            queryWrapper.eq("del_flag", "0"); // 未删除的部门
+            queryWrapper.ne("dept_id", updateDto.getDeptId()); // 排除当前部门
+            Long parentId = dept.getParentId() != null ? dept.getParentId() : 0L;
+            queryWrapper.eq("parent_id", parentId);
+            LifeSysDept existingDept = lifeSysDeptMapper.selectOne(queryWrapper);
+            if (existingDept != null) {
+                return R.fail("该部门名称已存在,请更换其他名称");
+            }
+        }
+
+        // 更新部门信息
+        dept.setDeptName(updateDto.getDeptName());
+        if (StringUtils.hasText(updateDto.getDescription())) {
+            dept.setDescription(updateDto.getDescription());
+        }
+        if (updateDto.getLeader() != null) {
+            dept.setLeader(updateDto.getLeader());
+        }
+
+        // 保存更新
+        int result = lifeSysDeptMapper.updateById(dept);
+        if (result > 0) {
+            log.info("编辑部门成功,部门ID={}, 部门名称={}", dept.getDeptId(), dept.getDeptName());
+            return R.data(dept, "编辑部门成功");
+        }
+        return R.fail("编辑部门失败,请稍后重试");
+    }
 }