diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/dept/DeptController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/dept/DeptController.java new file mode 100644 index 0000000..7e8a990 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/dept/DeptController.java @@ -0,0 +1,104 @@ +/* + * Copyright 2019-2020 Zheng Jie + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.nl.system.controller.dept; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.nl.modules.common.utils.PageUtil; +import org.nl.system.service.dept.ISysDeptService; +import org.nl.system.service.dept.dao.SysDept; +import org.nl.system.service.dept.dto.DeptQuery; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** +* @author Zheng Jie +* @date 2019-03-25 +*/ +@RestController +@RequiredArgsConstructor +@Api(tags = "系统:部门管理") +@RequestMapping("/api/dept") +public class DeptController { + + private final ISysDeptService deptService; + private static final String ENTITY_NAME = "dept"; + + @ApiOperation("查询部门") + @GetMapping + public ResponseEntity query(DeptQuery query) throws Exception { + List list = deptService.list(query.build()); + return new ResponseEntity<>(PageUtil.toPage(list, list.size()),HttpStatus.OK); + } + + @ApiOperation("查询部门") + @GetMapping("/vo") + public ResponseEntity queryvo(DeptQuery query) throws Exception { + List sysDepts = deptService.queryVo(query); + return new ResponseEntity<>(PageUtil.toPage(sysDepts, sysDepts.size()),HttpStatus.OK); + } + + + @ApiOperation("查询所有部门树") + @GetMapping("/allTree") + public ResponseEntity allTree(DeptQuery query) { + return new ResponseEntity<>(deptService.buildTree(query),HttpStatus.OK); + } + + @ApiOperation("查询部门:根据ID获取同级与上级数据") + @PostMapping("/superior") + @SaCheckPermission(value = {"user:list", "dept:list"}, mode = SaMode.AND) + public ResponseEntity getSuperior(@RequestBody List ids) { + if (CollectionUtils.isEmpty(ids)){ + return ResponseEntity.noContent().build(); + } + return new ResponseEntity<>(deptService.getSuperior(ids),HttpStatus.OK); + } +// +// @Log("新增部门") +// @ApiOperation("新增部门") +// @PostMapping +//// @SaCheckPermission("dept:add") +// public ResponseEntity create(@Validated @RequestBody Dept resources){ +//// deptService.create(resources); +// return new ResponseEntity<>(HttpStatus.CREATED); +// } +// +// @Log("修改部门") +// @ApiOperation("修改部门") +// @PutMapping +//// @SaCheckPermission("dept:edit") +// public ResponseEntity update(@RequestBody Dept resources){ +// deptService.update(resources); +// return new ResponseEntity<>(HttpStatus.NO_CONTENT); +// } +// +// @Log("删除部门") +// @ApiOperation("删除部门") +// @DeleteMapping +//// @SaCheckPermission("dept:del") +// public ResponseEntity delete(@RequestBody Set ids){ +// deptService.delete(ids); +// return new ResponseEntity<>(HttpStatus.OK); +// } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/dept/SysUserDeptController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/dept/SysUserDeptController.java new file mode 100644 index 0000000..626ab54 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/dept/SysUserDeptController.java @@ -0,0 +1,20 @@ +package org.nl.system.controller.dept; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 部门表 前端控制器 + *

+ * + * @author generator + * @since 2022-12-15 + */ +@RestController +@RequestMapping("/sysUserDept") +public class SysUserDeptController { + +} + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/ISysDeptService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/ISysDeptService.java new file mode 100644 index 0000000..87e762a --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/ISysDeptService.java @@ -0,0 +1,34 @@ +package org.nl.system.service.dept; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.system.service.dept.dao.SysDept; +import org.nl.system.service.dept.dto.DeptQuery; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 部门 服务类 + *

+ * + * @author generator + * @since 2022-12-15 + */ +public interface ISysDeptService extends IService { + /** + * 条件查询 + * @param query + * @return + */ + List queryVo(DeptQuery query); + + /** + * 条件查询树结构 + * @param query + * @return + */ + Map buildTree(DeptQuery query); + Map getSuperior(List deptIds); + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/ISysUserDeptService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/ISysUserDeptService.java new file mode 100644 index 0000000..d36b292 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/ISysUserDeptService.java @@ -0,0 +1,16 @@ +package org.nl.system.service.dept; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.system.service.dept.dao.SysUserDept; + +/** + *

+ * 部门表 服务类 + *

+ * + * @author generator + * @since 2022-12-15 + */ +public interface ISysUserDeptService extends IService { + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/SysDept.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/SysDept.java new file mode 100644 index 0000000..d46f54c --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/SysDept.java @@ -0,0 +1,89 @@ +package org.nl.system.service.dept.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

+ * 部门 + *

+ * + * @author generator + * @since 2022-12-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("sys_dept") +public class SysDept implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * ID + */ + @TableId(value = "dept_id", type = IdType.AUTO) + private Long deptId; + + /** + * 上级部门 + */ + private Long pid; + + /** + * 子部门数目 + */ + private Integer subCount; + + /** + * 名称 + */ + private String name; + + /** + * 排序 + */ + private Integer deptSort; + + /** + * 状态 + */ + private String isUsed; + + private Long createId; + + /** + * 创建者 + */ + private String createName; + + private Long updateOptid; + + /** + * 更新者 + */ + private String updateOptname; + + /** + * 创建日期 + */ + private String createTime; + + /** + * 更新时间 + */ + private String updateTime; + + /** + * 部门编号 + */ + private String code; + + private String extId; + + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/SysUserDept.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/SysUserDept.java new file mode 100644 index 0000000..1cd05ab --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/SysUserDept.java @@ -0,0 +1,35 @@ +package org.nl.system.service.dept.dao; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

+ * 部门表 + *

+ * + * @author generator + * @since 2022-12-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("sys_user_dept") +public class SysUserDept implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 用户标识 + */ + private Long userId; + + /** + * 部门标识 + */ + private Long deptId; + + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.java new file mode 100644 index 0000000..82f0a7d --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.java @@ -0,0 +1,16 @@ +package org.nl.system.service.dept.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.system.service.dept.dao.SysDept; + +/** + *

+ * 部门 Mapper 接口 + *

+ * + * @author generator + * @since 2022-12-15 + */ +public interface SysDeptMapper extends BaseMapper { + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.xml new file mode 100644 index 0000000..5adc573 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysUserDeptMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysUserDeptMapper.java new file mode 100644 index 0000000..54a4953 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysUserDeptMapper.java @@ -0,0 +1,16 @@ +package org.nl.system.service.dept.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.system.service.dept.dao.SysUserDept; + +/** + *

+ * 部门表 Mapper 接口 + *

+ * + * @author generator + * @since 2022-12-15 + */ +public interface SysUserDeptMapper extends BaseMapper { + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysUserDeptMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysUserDeptMapper.xml new file mode 100644 index 0000000..6abf529 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysUserDeptMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dto/DeptQuery.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dto/DeptQuery.java new file mode 100644 index 0000000..478170c --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dto/DeptQuery.java @@ -0,0 +1,33 @@ +package org.nl.system.service.dept.dto; + +import lombok.Data; +import org.nl.common.domain.query.BaseQuery; +import org.nl.common.domain.query.QParam; +import org.nl.common.enums.QueryTEnum; +import org.nl.system.service.dept.dao.SysDept; + +import java.util.List; + +/* + * @author ZZQ + * @Date 2022/12/15 4:20 下午 + */ +@Data +public class DeptQuery extends BaseQuery { + + private List deptIds; + + private String name; + + private String code; + + private Long pid; + + private Boolean pidIsNull; + + @Override + public void paramMapping() { + super.doP.put("pidIsNull", QParam.builder().k(new String[]{"pid"}).type(QueryTEnum.LK).build()); + super.doP.put("deptIds", QParam.builder().k(new String[]{"deptId"}).type(QueryTEnum.IN).build()); + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/impl/SysDeptServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/impl/SysDeptServiceImpl.java new file mode 100644 index 0000000..2a46ec9 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/impl/SysDeptServiceImpl.java @@ -0,0 +1,97 @@ +package org.nl.system.service.dept.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.nl.modules.system.domain.Dept; +import org.nl.modules.system.domain.vo.DeptVo; +import org.nl.modules.system.service.dto.DeptTree; +import org.nl.modules.system.util.CopyUtil; +import org.nl.system.service.dept.ISysDeptService; +import org.nl.system.service.dept.dao.SysDept; +import org.nl.system.service.dept.dao.mapper.SysDeptMapper; +import org.nl.system.service.dept.dto.DeptQuery; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; + +/** + *

+ * 部门 服务实现类 + *

+ * + * @author generator + * @since 2022-12-15 + */ +@Service +public class SysDeptServiceImpl extends ServiceImpl implements ISysDeptService { + + @Override + public Map buildTree(DeptQuery query) { + List list = this.list(query.build()); + List deptTrees = CopyUtil.copyList(list, DeptTree.class); + return this.buildTree(deptTrees); + } + + @Override + public Map getSuperior(List deptIds) { + return null; + } + + private Map buildTree(List deptDtos) { + List trees= new ArrayList<>(); + Set depts = new LinkedHashSet<>(); + List deptNames = deptDtos.stream().map(DeptTree::getName).collect(Collectors.toList()); + boolean isChild; + for (DeptTree deptDTO : deptDtos) { + isChild = false; + if (deptDTO.getPid() == null) { + trees.add(deptDTO); + } + for (DeptTree it : deptDtos) { + if (it.getPid() != null && deptDTO.getDept_id().equals(it.getPid())) { + isChild = true; + if (deptDTO.getChildren() == null) { + deptDTO.setChildren(new ArrayList<>()); + } + deptDTO.getChildren().add(it); + } + } + if (isChild) { + depts.add(deptDTO); + } else if (deptDTO.getPid() != null && !deptNames.contains(this.getById(deptDTO.getPid()).getName())) { + depts.add(deptDTO); + } + } + + Map map = new HashMap<>(2); + map.put("totalElements", deptDtos.size()); + map.put("content", CollectionUtil.isEmpty(trees) ? deptDtos : trees); + return map; + } + + @Override + public List queryVo(DeptQuery query) { + Boolean hasChild = false; + if (query.getPidIsNull() == null){ + if (query.getPid() == null){ + query.setPidIsNull(true); + } + if (StringUtils.isNotEmpty(query.getName())||!query.getIsUsed()){ + query.setPidIsNull(null); + hasChild=true; + } + } + List list = this.list(query.build()); + List deptVos = CopyUtil.copyList(list, DeptVo.class); + if (hasChild){ + deptVos.forEach(a->{ + a.setHasChildren(false); + }); + } + return list; + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/impl/SysUserDeptServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/impl/SysUserDeptServiceImpl.java new file mode 100644 index 0000000..e9a9774 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/impl/SysUserDeptServiceImpl.java @@ -0,0 +1,20 @@ +package org.nl.system.service.dept.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.system.service.dept.ISysUserDeptService; +import org.nl.system.service.dept.dao.SysUserDept; +import org.nl.system.service.dept.dao.mapper.SysUserDeptMapper; +import org.springframework.stereotype.Service; + +/** + *

+ * 部门表 服务实现类 + *

+ * + * @author generator + * @since 2022-12-15 + */ +@Service +public class SysUserDeptServiceImpl extends ServiceImpl implements ISysUserDeptService { + +} diff --git a/nladmin-ui/src/views/system/user/user.js b/nladmin-ui/src/views/system/user/user.js new file mode 100644 index 0000000..6cd91a5 --- /dev/null +++ b/nladmin-ui/src/views/system/user/user.js @@ -0,0 +1,61 @@ +import request from '@/utils/request' +import { encrypt } from '@/utils/rsaEncrypt' + +export function add(data) { + return request({ + url: 'api/users', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/users', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/users', + method: 'put', + data + }) +} + +export function editUser(data) { + return request({ + url: 'api/users/center', + method: 'put', + data + }) +} + +export function updatePass(user) { + const data = { + oldPass: encrypt(user.oldPass), + newPass: encrypt(user.newPass) + } + return request({ + url: 'api/users/updatePass/', + method: 'post', + data + }) +} + +export function updateEmail(form) { + const data = { + password: encrypt(form.pass), + email: form.email + } + return request({ + url: 'api/users/updateEmail/' + form.code, + method: 'post', + data + }) +} + +export default { add, edit, del } +