From 805792e5facd722a28a7c5f3b23df80b87453d72 Mon Sep 17 00:00:00 2001 From: lyd <1419499670@qq.com> Date: Mon, 26 Sep 2022 17:47:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E5=B2=97=E4=BD=8D=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=89=8D=E5=90=8E=E7=AB=AF=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/nl/modules/system/domain/Job.java | 73 ---------- .../org/nl/modules/system/domain/User.java | 8 -- .../system/repository/JobRepository.java | 42 ------ .../nl/modules/system/rest/JobController.java | 96 ------------- .../nl/modules/system/service/JobService.java | 88 ------------ .../nl/modules/system/service/dto/JobDto.java | 46 ------- .../system/service/dto/JobQueryCriteria.java | 41 ------ .../system/service/dto/JobSmallDto.java | 33 ----- .../modules/system/service/dto/UserDto.java | 2 - .../system/service/impl/JobServiceImpl.java | 126 ------------------ .../system/service/impl/UserServiceImpl.java | 3 - .../system/service/mapstruct/JobMapper.java | 30 ----- .../service/mapstruct/JobSmallMapper.java | 31 ----- .../system/service/mapstruct/UserMapper.java | 2 +- .../nl/modules/system/service/vo/UserVo.java | 9 ++ .../modules/system/service/wql/SYS_ROLE.wql | 0 .../modules/system/service/wql/SYS_USER.wql | 0 .../java/org/nl/modules/system/wql/sys.xls | Bin 259072 -> 220160 bytes .../main/resources/config/application-dev.yml | 10 +- nladmin-ui/src/api/system/job.js | 40 ------ nladmin-ui/src/views/system/job/index.vue | 115 ---------------- .../src/views/system/job/module/form.vue | 110 --------------- .../src/views/system/job/module/header.vue | 32 ----- nladmin-ui/src/views/system/user/index.vue | 60 ++------- 24 files changed, 23 insertions(+), 974 deletions(-) delete mode 100644 nladmin-system/src/main/java/org/nl/modules/system/domain/Job.java delete mode 100644 nladmin-system/src/main/java/org/nl/modules/system/repository/JobRepository.java delete mode 100644 nladmin-system/src/main/java/org/nl/modules/system/rest/JobController.java delete mode 100644 nladmin-system/src/main/java/org/nl/modules/system/service/JobService.java delete mode 100644 nladmin-system/src/main/java/org/nl/modules/system/service/dto/JobDto.java delete mode 100644 nladmin-system/src/main/java/org/nl/modules/system/service/dto/JobQueryCriteria.java delete mode 100644 nladmin-system/src/main/java/org/nl/modules/system/service/dto/JobSmallDto.java delete mode 100644 nladmin-system/src/main/java/org/nl/modules/system/service/impl/JobServiceImpl.java delete mode 100644 nladmin-system/src/main/java/org/nl/modules/system/service/mapstruct/JobMapper.java delete mode 100644 nladmin-system/src/main/java/org/nl/modules/system/service/mapstruct/JobSmallMapper.java create mode 100644 nladmin-system/src/main/java/org/nl/modules/system/service/vo/UserVo.java create mode 100644 nladmin-system/src/main/java/org/nl/modules/system/service/wql/SYS_ROLE.wql create mode 100644 nladmin-system/src/main/java/org/nl/modules/system/service/wql/SYS_USER.wql delete mode 100644 nladmin-ui/src/api/system/job.js delete mode 100644 nladmin-ui/src/views/system/job/index.vue delete mode 100644 nladmin-ui/src/views/system/job/module/form.vue delete mode 100644 nladmin-ui/src/views/system/job/module/header.vue diff --git a/nladmin-system/src/main/java/org/nl/modules/system/domain/Job.java b/nladmin-system/src/main/java/org/nl/modules/system/domain/Job.java deleted file mode 100644 index 248d04bbe..000000000 --- a/nladmin-system/src/main/java/org/nl/modules/system/domain/Job.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * 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.modules.system.domain; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; -import org.nl.modules.common.base.BaseEntity; -import javax.persistence.*; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import java.io.Serializable; -import java.util.Objects; - -/** -* @author Zheng Jie -* @date 2019-03-29 -*/ -@Entity -@Getter -@Setter -@Table(name="sys_job") -public class Job extends BaseEntity implements Serializable { - - @Id - @Column(name = "job_id") - @NotNull(groups = Update.class) - @ApiModelProperty(value = "ID", hidden = true) - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @NotBlank - @ApiModelProperty(value = "岗位名称") - private String name; - - @NotNull - @ApiModelProperty(value = "岗位排序") - private Long jobSort; - - @NotNull - @ApiModelProperty(value = "是否启用") - private Boolean enabled; - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - Job job = (Job) o; - return Objects.equals(id, job.id); - } - - @Override - public int hashCode() { - return Objects.hash(id); - } -} \ No newline at end of file diff --git a/nladmin-system/src/main/java/org/nl/modules/system/domain/User.java b/nladmin-system/src/main/java/org/nl/modules/system/domain/User.java index fd6372988..7daa2adf8 100644 --- a/nladmin-system/src/main/java/org/nl/modules/system/domain/User.java +++ b/nladmin-system/src/main/java/org/nl/modules/system/domain/User.java @@ -55,13 +55,6 @@ public class User extends BaseEntity implements Serializable { inverseJoinColumns = {@JoinColumn(name = "role_id",referencedColumnName = "role_id")}) private Set roles; - @ManyToMany - @ApiModelProperty(value = "用户岗位") - @JoinTable(name = "sys_users_jobs", - joinColumns = {@JoinColumn(name = "user_id",referencedColumnName = "user_id")}, - inverseJoinColumns = {@JoinColumn(name = "job_id",referencedColumnName = "job_id")}) - private Set jobs; - @OneToOne @JoinColumn(name = "dept_id") @ApiModelProperty(value = "用户部门") @@ -78,7 +71,6 @@ public class User extends BaseEntity implements Serializable { private String nickName; @Email - @NotBlank @ApiModelProperty(value = "邮箱") private String email; diff --git a/nladmin-system/src/main/java/org/nl/modules/system/repository/JobRepository.java b/nladmin-system/src/main/java/org/nl/modules/system/repository/JobRepository.java deleted file mode 100644 index e29f5f694..000000000 --- a/nladmin-system/src/main/java/org/nl/modules/system/repository/JobRepository.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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.modules.system.repository; - -import org.nl.modules.system.domain.Job; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.JpaSpecificationExecutor; - -import java.util.Set; - -/** -* @author Zheng Jie -* @date 2019-03-29 -*/ -public interface JobRepository extends JpaRepository, JpaSpecificationExecutor { - - /** - * 根据名称查询 - * @param name 名称 - * @return / - */ - Job findByName(String name); - - /** - * 根据Id删除 - * @param ids / - */ - void deleteAllByIdIn(Set ids); -} \ No newline at end of file diff --git a/nladmin-system/src/main/java/org/nl/modules/system/rest/JobController.java b/nladmin-system/src/main/java/org/nl/modules/system/rest/JobController.java deleted file mode 100644 index a86625792..000000000 --- a/nladmin-system/src/main/java/org/nl/modules/system/rest/JobController.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * 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.modules.system.rest; - -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.exception.BadRequestException; -import org.nl.modules.logging.annotation.Log; -import org.nl.modules.system.domain.Job; -import org.nl.modules.system.service.JobService; -import org.nl.modules.system.service.dto.JobQueryCriteria; -import org.springframework.data.domain.Pageable; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.Set; - -/** -* @author Zheng Jie -* @date 2019-03-29 -*/ -@RestController -@RequiredArgsConstructor -@Api(tags = "系统:岗位管理") -@RequestMapping("/api/job") -public class JobController { - - private final JobService jobService; - private static final String ENTITY_NAME = "job"; - - @ApiOperation("导出岗位数据") - @GetMapping(value = "/download") - @SaCheckPermission("job:list") - public void download(HttpServletResponse response, JobQueryCriteria criteria) throws IOException { - jobService.download(jobService.queryAll(criteria), response); - } - - @ApiOperation("查询岗位") - @GetMapping - @SaCheckPermission(value = {"job:list", "user:list"}, mode = SaMode.AND) - public ResponseEntity query(JobQueryCriteria criteria, Pageable pageable){ - return new ResponseEntity<>(jobService.queryAll(criteria, pageable),HttpStatus.OK); - } - - @Log("新增岗位") - @ApiOperation("新增岗位") - @PostMapping - @SaCheckPermission("job:add") - public ResponseEntity create(@Validated @RequestBody Job resources){ - if (resources.getId() != null) { - throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); - } - jobService.create(resources); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @Log("修改岗位") - @ApiOperation("修改岗位") - @PutMapping - @SaCheckPermission("job:edit") - public ResponseEntity update(@Validated(Job.Update.class) @RequestBody Job resources){ - jobService.update(resources); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @Log("删除岗位") - @ApiOperation("删除岗位") - @DeleteMapping - @SaCheckPermission("job:del") - public ResponseEntity delete(@RequestBody Set ids){ - // 验证是否被用户关联 - jobService.verification(ids); - jobService.delete(ids); - return new ResponseEntity<>(HttpStatus.OK); - } -} \ No newline at end of file diff --git a/nladmin-system/src/main/java/org/nl/modules/system/service/JobService.java b/nladmin-system/src/main/java/org/nl/modules/system/service/JobService.java deleted file mode 100644 index 0c36a272f..000000000 --- a/nladmin-system/src/main/java/org/nl/modules/system/service/JobService.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * 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.modules.system.service; - -import org.nl.modules.system.domain.Job; -import org.nl.modules.system.service.dto.JobDto; -import org.nl.modules.system.service.dto.JobQueryCriteria; -import org.springframework.data.domain.Pageable; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.List; -import java.util.Map; -import java.util.Set; - -/** -* @author Zheng Jie -* @date 2019-03-29 -*/ -public interface JobService { - - /** - * 根据ID查询 - * @param id / - * @return / - */ - JobDto findById(Long id); - - /** - * 创建 - * @param resources / - * @return / - */ - void create(Job resources); - - /** - * 编辑 - * @param resources / - */ - void update(Job resources); - - /** - * 删除 - * @param ids / - */ - void delete(Set ids); - - /** - * 分页查询 - * @param criteria 条件 - * @param pageable 分页参数 - * @return / - */ - Map queryAll(JobQueryCriteria criteria, Pageable pageable); - - /** - * 查询全部数据 - * @param criteria / - * @return / - */ - List queryAll(JobQueryCriteria criteria); - - /** - * 导出数据 - * @param queryAll 待导出的数据 - * @param response / - * @throws IOException / - */ - void download(List queryAll, HttpServletResponse response) throws IOException; - - /** - * 验证是否被用户关联 - * @param ids / - */ - void verification(Set ids); -} \ No newline at end of file diff --git a/nladmin-system/src/main/java/org/nl/modules/system/service/dto/JobDto.java b/nladmin-system/src/main/java/org/nl/modules/system/service/dto/JobDto.java deleted file mode 100644 index cd6f1174e..000000000 --- a/nladmin-system/src/main/java/org/nl/modules/system/service/dto/JobDto.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * 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.modules.system.service.dto; - -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; -import org.nl.modules.common.base.BaseDTO; - -import java.io.Serializable; - -/** -* @author Zheng Jie -* @date 2019-03-29 -*/ -@Getter -@Setter -@NoArgsConstructor -public class JobDto extends BaseDTO implements Serializable { - - private Long id; - - private Integer jobSort; - - private String name; - - private Boolean enabled; - - public JobDto(String name, Boolean enabled) { - this.name = name; - this.enabled = enabled; - } -} \ No newline at end of file diff --git a/nladmin-system/src/main/java/org/nl/modules/system/service/dto/JobQueryCriteria.java b/nladmin-system/src/main/java/org/nl/modules/system/service/dto/JobQueryCriteria.java deleted file mode 100644 index 9b9dc469b..000000000 --- a/nladmin-system/src/main/java/org/nl/modules/system/service/dto/JobQueryCriteria.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * 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.modules.system.service.dto; - -import lombok.Data; -import lombok.NoArgsConstructor; -import org.nl.modules.common.annotation.Query; - -import java.sql.Timestamp; -import java.util.List; - -/** -* @author Zheng Jie -* @date 2019-6-4 14:49:34 -*/ -@Data -@NoArgsConstructor -public class JobQueryCriteria { - - @Query(type = Query.Type.INNER_LIKE) - private String name; - - @Query - private Boolean enabled; - - @Query(type = Query.Type.BETWEEN) - private List createTime; -} \ No newline at end of file diff --git a/nladmin-system/src/main/java/org/nl/modules/system/service/dto/JobSmallDto.java b/nladmin-system/src/main/java/org/nl/modules/system/service/dto/JobSmallDto.java deleted file mode 100644 index 2cb21df2e..000000000 --- a/nladmin-system/src/main/java/org/nl/modules/system/service/dto/JobSmallDto.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * 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.modules.system.service.dto; - -import lombok.Data; -import lombok.NoArgsConstructor; -import java.io.Serializable; - -/** -* @author Zheng Jie -* @date 2019-6-10 16:32:18 -*/ -@Data -@NoArgsConstructor -public class JobSmallDto implements Serializable { - - private Long id; - - private String name; -} \ No newline at end of file diff --git a/nladmin-system/src/main/java/org/nl/modules/system/service/dto/UserDto.java b/nladmin-system/src/main/java/org/nl/modules/system/service/dto/UserDto.java index 710e65577..11d92f4c8 100644 --- a/nladmin-system/src/main/java/org/nl/modules/system/service/dto/UserDto.java +++ b/nladmin-system/src/main/java/org/nl/modules/system/service/dto/UserDto.java @@ -38,8 +38,6 @@ public class UserDto extends BaseDTO implements Serializable { private Set roles; - private Set jobs; - private DeptSmallDto dept; private Long deptId; diff --git a/nladmin-system/src/main/java/org/nl/modules/system/service/impl/JobServiceImpl.java b/nladmin-system/src/main/java/org/nl/modules/system/service/impl/JobServiceImpl.java deleted file mode 100644 index 09247651b..000000000 --- a/nladmin-system/src/main/java/org/nl/modules/system/service/impl/JobServiceImpl.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * 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.modules.system.service.impl; - -import lombok.RequiredArgsConstructor; -import org.nl.modules.common.exception.BadRequestException; -import org.nl.modules.common.exception.EntityExistException; -import org.nl.modules.common.utils.*; -import org.nl.modules.system.domain.Job; -import org.nl.modules.system.repository.JobRepository; -import org.nl.modules.system.repository.UserRepository; -import org.nl.modules.system.service.JobService; -import org.nl.modules.system.service.dto.JobDto; -import org.nl.modules.system.service.dto.JobQueryCriteria; -import org.nl.modules.system.service.mapstruct.JobMapper; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.*; - -/** -* @author Zheng Jie -* @date 2019-03-29 -*/ -@Service -@RequiredArgsConstructor -@CacheConfig(cacheNames = "job") -public class JobServiceImpl implements JobService { - - private final JobRepository jobRepository; - private final JobMapper jobMapper; - private final RedisUtils redisUtils; - private final UserRepository userRepository; - - @Override - public Map queryAll(JobQueryCriteria criteria, Pageable pageable) { - Page page = jobRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); - return PageUtil.toPage(page.map(jobMapper::toDto).getContent(),page.getTotalElements()); - } - - @Override - public List queryAll(JobQueryCriteria criteria) { - List list = jobRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)); - return jobMapper.toDto(list); - } - - @Override - @Cacheable(key = "'id:' + #p0") - public JobDto findById(Long id) { - Job job = jobRepository.findById(id).orElseGet(Job::new); - ValidationUtil.isNull(job.getId(),"Job","id",id); - return jobMapper.toDto(job); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void create(Job resources) { - Job job = jobRepository.findByName(resources.getName()); - if(job != null){ - throw new EntityExistException(Job.class,"name",resources.getName()); - } - jobRepository.save(resources); - } - - @Override - @CacheEvict(key = "'id:' + #p0.id") - @Transactional(rollbackFor = Exception.class) - public void update(Job resources) { - Job job = jobRepository.findById(resources.getId()).orElseGet(Job::new); - Job old = jobRepository.findByName(resources.getName()); - if(old != null && !old.getId().equals(resources.getId())){ - throw new EntityExistException(Job.class,"name",resources.getName()); - } - ValidationUtil.isNull( job.getId(),"Job","id",resources.getId()); - resources.setId(job.getId()); - jobRepository.save(resources); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void delete(Set ids) { - jobRepository.deleteAllByIdIn(ids); - // 删除缓存 - redisUtils.delByKeys("job::id:", ids); - } - - @Override - public void download(List jobDtos, HttpServletResponse response) throws IOException { - List> list = new ArrayList<>(); - for (JobDto jobDTO : jobDtos) { - Map map = new LinkedHashMap<>(); - map.put("岗位名称", jobDTO.getName()); - map.put("岗位状态", jobDTO.getEnabled() ? "启用" : "停用"); - map.put("创建日期", jobDTO.getCreateTime()); - list.add(map); - } - FileUtil.downloadExcel(list, response); - } - - @Override - public void verification(Set ids) { - if(userRepository.countByJobs(ids) > 0){ - throw new BadRequestException("所选的岗位中存在用户关联,请解除关联再试!"); - } - } -} \ No newline at end of file diff --git a/nladmin-system/src/main/java/org/nl/modules/system/service/impl/UserServiceImpl.java b/nladmin-system/src/main/java/org/nl/modules/system/service/impl/UserServiceImpl.java index 60667b2dd..a68fbf7f2 100644 --- a/nladmin-system/src/main/java/org/nl/modules/system/service/impl/UserServiceImpl.java +++ b/nladmin-system/src/main/java/org/nl/modules/system/service/impl/UserServiceImpl.java @@ -27,7 +27,6 @@ import org.nl.modules.system.domain.User; import org.nl.modules.system.repository.UserRepository; import org.nl.modules.system.service.RoleService; import org.nl.modules.system.service.UserService; -import org.nl.modules.system.service.dto.JobSmallDto; import org.nl.modules.system.service.dto.RoleSmallDto; import org.nl.modules.system.service.dto.UserDto; import org.nl.modules.system.service.dto.UserQueryCriteria; @@ -132,7 +131,6 @@ public class UserServiceImpl implements UserService { user.setEnabled(resources.getEnabled()); user.setRoles(resources.getRoles()); user.setDept(resources.getDept()); - user.setJobs(resources.getJobs()); user.setPhone(resources.getPhone()); user.setNickName(resources.getNickName()); user.setGender(resources.getGender()); @@ -223,7 +221,6 @@ public class UserServiceImpl implements UserService { map.put("用户名", userDTO.getUsername()); map.put("角色", roles); map.put("部门", userDTO.getDept().getName()); - map.put("岗位", userDTO.getJobs().stream().map(JobSmallDto::getName).collect(Collectors.toList())); map.put("邮箱", userDTO.getEmail()); map.put("状态", userDTO.getEnabled() ? "启用" : "禁用"); map.put("手机号码", userDTO.getPhone()); diff --git a/nladmin-system/src/main/java/org/nl/modules/system/service/mapstruct/JobMapper.java b/nladmin-system/src/main/java/org/nl/modules/system/service/mapstruct/JobMapper.java deleted file mode 100644 index aeea1114b..000000000 --- a/nladmin-system/src/main/java/org/nl/modules/system/service/mapstruct/JobMapper.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * 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.modules.system.service.mapstruct; - -import org.mapstruct.Mapper; -import org.mapstruct.ReportingPolicy; -import org.nl.modules.common.base.BaseMapper; -import org.nl.modules.system.domain.Job; -import org.nl.modules.system.service.dto.JobDto; - -/** -* @author Zheng Jie -* @date 2019-03-29 -*/ -@Mapper(componentModel = "spring",uses = {DeptMapper.class},unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface JobMapper extends BaseMapper { -} \ No newline at end of file diff --git a/nladmin-system/src/main/java/org/nl/modules/system/service/mapstruct/JobSmallMapper.java b/nladmin-system/src/main/java/org/nl/modules/system/service/mapstruct/JobSmallMapper.java deleted file mode 100644 index 0bed4b265..000000000 --- a/nladmin-system/src/main/java/org/nl/modules/system/service/mapstruct/JobSmallMapper.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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.modules.system.service.mapstruct; - -import org.mapstruct.Mapper; -import org.mapstruct.ReportingPolicy; -import org.nl.modules.common.base.BaseMapper; -import org.nl.modules.system.domain.Job; -import org.nl.modules.system.service.dto.JobSmallDto; - -/** -* @author Zheng Jie -* @date 2019-03-29 -*/ -@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface JobSmallMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/nladmin-system/src/main/java/org/nl/modules/system/service/mapstruct/UserMapper.java b/nladmin-system/src/main/java/org/nl/modules/system/service/mapstruct/UserMapper.java index 82af1f5e3..caf1c7c28 100644 --- a/nladmin-system/src/main/java/org/nl/modules/system/service/mapstruct/UserMapper.java +++ b/nladmin-system/src/main/java/org/nl/modules/system/service/mapstruct/UserMapper.java @@ -25,6 +25,6 @@ import org.nl.modules.system.service.dto.UserDto; * @author Zheng Jie * @date 2018-11-23 */ -@Mapper(componentModel = "spring",uses = {RoleMapper.class, DeptMapper.class, JobMapper.class},unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring",uses = {RoleMapper.class, DeptMapper.class},unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface UserMapper extends BaseMapper { } diff --git a/nladmin-system/src/main/java/org/nl/modules/system/service/vo/UserVo.java b/nladmin-system/src/main/java/org/nl/modules/system/service/vo/UserVo.java new file mode 100644 index 000000000..39d2e6246 --- /dev/null +++ b/nladmin-system/src/main/java/org/nl/modules/system/service/vo/UserVo.java @@ -0,0 +1,9 @@ +package org.nl.modules.system.service.vo; + +/** + * @author: lyd + * @description: + * @Date: 2022/9/26 + */ +public class UserVo { +} diff --git a/nladmin-system/src/main/java/org/nl/modules/system/service/wql/SYS_ROLE.wql b/nladmin-system/src/main/java/org/nl/modules/system/service/wql/SYS_ROLE.wql new file mode 100644 index 000000000..e69de29bb diff --git a/nladmin-system/src/main/java/org/nl/modules/system/service/wql/SYS_USER.wql b/nladmin-system/src/main/java/org/nl/modules/system/service/wql/SYS_USER.wql new file mode 100644 index 000000000..e69de29bb diff --git a/nladmin-system/src/main/java/org/nl/modules/system/wql/sys.xls b/nladmin-system/src/main/java/org/nl/modules/system/wql/sys.xls index d253ff1325f777c0a146ef1dfe7fed1be89468ea..cc0336ee522fe30da2d6ec2b6135b13dbd4959de 100644 GIT binary patch delta 31949 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

NT00J=MjXST0U z2!*#CmnbB(u1yLnrgtl8Gz+bA+K2}3u#(2xp;A)h)4$C=|*HlTvw3qDzE*O4gXq{KOV>UZCM2Ld{uw5o``~N8Ksu zgvJnb_kxpIN%N{=8u;d)GaRLP8^2O2~sj_8>8nVaXz>x(!MesXL7ATPdVb5})7Q>MW9BHs>Tm;+&ARz@P zC=0o=$|0Eth0TzW4D4wjG!HTgAXNY?#gNVbVe$v7L+McnD@>~gfh)6paup5%)|Hrl zIgNrl+z{W5`xbZL&UN5k*9CVK(2+aef%|Y5+`AR-LI>_J-kjK=c1U`3<6YxUs#X^} za0}cwpc^j{vY^9kZahuV%I%0Z@5zpiOqB@d*KyRtr)JeKO(e5+7b11oENoYIVL+hT zK&qOm)n%+USqL?Zk&7^&Xz+lJp+h7NRrP}b0e-yw#|u@U(23VrENAn-$jeL#LZnC4 z>WPZ{3m`wdGm1(jJIW-4hB;?rNb_=MU6FVLsvjG!I|L(SIN|Do*DB1pY2MXBs|#M& zZL>}YgA8X3O8;=kHoO~!g)Vqq*R4rF8{#Y%ZL|8Z$=xQPU2*0`v#EY;ygP&?E_l(L zs2>||ig4HkuN%oH{xueya5A(L-kZ(;AB3t6)AtG>5@)`(K z2gn*#oI}a~BnU7s(#Ei+^Axm`T5`Tq$rjK#&sCxAV2IU1%bW^vploYT!N|@h3CrkV zwl7}zQh$$d3O16t05At0o2s(bx{}p0tGDY)XMvMZOOCNG3ARN>@kf&2-ZCIrSm>$} zVc?L|;-kAR9@)=z@oO*-REy)LaP_m*QTrce*Ts**^iVB+t6CP$PQ{O>2&ZUd2(Zc# zj?9?_I@H3z%oJz%cUzYoqe9?=o2JN(pw@=?@y?(XvB~g}&M(r+Hju zR?_ZxpBxSsBH8W|!54!J81?ArF~~3}X}mu^DdE9liA>VrFV-xyOYgEvAGS+_Yr^<| zn+j|I5Y5Y)k*=hx?9xqk=~m~mEP1wIh-+6^@Bu%}3V8T|Nku$3F$kxI3gys16WQjW zLbM+bRDe^Nq_MzZJYXu2PxWwuiie?zg1`t{-UMkSP-CwR6JV{6orIGGf@PUYhbOCz zi!^b92mhso?T}VgrIrft_7r=jRG0=K(#yCJ38E$ZAY3&VYz4a93x|gZI zT!59hmP5mZX)q;fi7prV@j^IzWt8Bn!)K0hz*)5gvJ6%9oDBX+itkWuEgInB`y7C3FSD5SKTUn3A65&iUq${6VY)g@t^WR+vfu)?g#G6^lVN+L${qVmuT-ml% zEQH_7#`%Z*kMn}`bK&Zw$d=tBF7sZ_)9?pA+qQ}gdIrdALfNvd;xhdPAU5j$M;39` ziZ`=1!XDnJz}|AC2mgl^tWSV2obHpB9vLkE1B=&>^f6;AzYf^&d=Sou;An;8O*oMD zHk{vq<6Y%i3i~pP|BDOEWD^4gS+=zL%QO!pp)+Gj z>GBt>_`e5Wsfw8Q4AVCWLWu`y4bqpm<9_^&yWwB>z)qsb@%edWb+x8jt7kU2p&#Fq zD|qS!&w+xcL8uF+LGJnh4sp&QDk!2iJzh7AxrLty)Vc74OF+IiK&AR)Y-G!U>z zwPYT=2jW9K=a7V{q*3fuIRqxiW^;-;E!Dg@85SXQ1;kVEr2%GQPRm#km(tfv;>>Xc zIh7M?$bwn5x7SyeFSXV;RL@UMsT8Y8O5cWgGvY=KCq<^b+Zt-;PhZ$jQ@a2r(sWhP zDC6weH8WQijUuy0TM4Xy-c|Il)qksKr7Me43X8J}^UWl!AUQq1I4_x4%$EG*{KBF! z>DHpWJZnLk)h$I_S7hCOOWpMOreabvue!dnpmx6d{MrRN{fL^Gb)>ewb~f|gCid*D z8#||_enM^C+!?jCbMH7^MfAGzIn~t-+3gWpI^_qRZmHTPX3#zaM9rwpuU%qEI$8x0 zQr@gtL!nY@O;r$psCg+pAkTxeyv4-Jus*?Fct9Nf(hji-9AEv|>Lm>%s*1P~HgBgm zC|p*Ue%_|ga+asr+dIYnY~v&1zqcHd*xqNwv=|IFp|hZ`DD*N8A2+a~_@)Ks7+`1Z z<|45t|HaxsmiwHjYiux;&mq(6s%KS>DlR5N3yLfml_SbqNA)cnK0I!%an%T7vSjo% zn?}u`E8jE?ubELdy{>pEDJ3+77_7nwQeIqJH@|)m$@istc#X1{JXO~U|829Lq*`@i z6)_j4rKc1XSxm`A=B#3B&Px{HmkE;1DH-N0=!?cebAEoBvHY!ixANi__^OSj*s6Qn*N%d)It#TCm7$KD#2$oWCfp)!RxQPM>2YPgyd$|_DTEGWvR>odmHSJ%~7T1c8DJFPNr;lf5z zIK5$dWcs|yvDNbzR+6G6Gppxi^)s9T z7}xX_sy2@B_IiPSR**WTdUjEdSv3t}&6rj;o7_{>`bJIep;U5*)%VSJhNYyXTQb)T zEqgu7(l@2x_0k9Ky|=Q?TwB{vxvD9bHI6B&DlRGXs-jG|fCt|mlvR91!*0ba>a;xRBN3QMK!?Io!`^2^0K0#PI zS4U=?f;)dMiI{)UE#)`2+JMy7L-Pan?mam-Acn1dQM5EZm~p`;qr>N0pP%Z^`S^O6 za`GnTt+fmx0e^dwTKiX%y2KYP#LwqLUCQUWetqVC2>+8NIp?|VamF6_tl^pJ5s8`U zEBw-z`oUk%^hQ6@7*9yT!yU{0e$nUpS*$H-ZN6X9KlLA5I`kd-CZERlI`nnD_oV&l zllH4m+Mh;!T8F;8L*K5S^Wv|1qmi;Zz7+3t1G^aJ!8(qMc`rRKeyj5W3j{{2mfQ~S zx1S0T5?H{~;+W9^v=_X_Hw0GtV0^(!puCWWYk|0wR{#`<24Eo%*8t6s%7bedT9C?u z)j$|`a4v=gze1kQCTZ+YC@e?)^J&o=8a|E7Ok>f{ialGr_lR5R=r|4RcoZI8q_W(-VyHhZ+B(Q(bM}g{E`()pVd6+8#*P<`M1VE!*05QB8B7yw`1FZN(D2gJzD3k%u617h0dg=2*hfi)G0 zgV-1Q#h}d#CpONw)_b?{!`Pv#&K6DXw)3Tb@(2UED{`05+SmR*XT+*4kG(s!?b&>l zKJkqw9~3Q5=RG^^_EU$?jy)D1Q!jvM*REg9*V zzcwtyu>g@A*^zqe(5u_8Hs;=cb2H)7 z-Wc}fsFAyinhWN?`P(6t{)(5+)F;oMC|+0da&zID-nUmN3NYUUX)7p$Xpt_1AABA= z5Yu-Noz+M>U~ny%?l-^MO~>uKwRaT}b*xvjSUglGM?n|_9XteXoygIRRE6nL7;01p z--ft)NfW6Wz=7j6e$)H!X^gL1puD5(n?d^U)SCJrg z`8x=}gZzcQUX&tW`~=`b_NZ3=aQ!Gfe8m?YvLD4J(>}8q{Yorg?_8i}VJBg~92H0E z{UJ9{jiiM~2wVJ>I7SFkDW0!E{&X&Z4LTuyuCsh~-h++&Ml`XEZvew*C&YNR;2ZI4 zh&`sB5F=Y=pA>ae$oqiJJ0))2c1%nZJA67=&tu|!Lc~h;$}zDoaGpIT_7nbH&ceSI zd(moE__a8aTA1{;cv5U=sAabu7dJfFCem%+iMiXp6&r*%0M@qvHUxkeRcOLnP=#*+ zY^X|c`#a>{%a)!NmwSH!Nu1c@rzQ70FvNMO+j!-G5li_f3e9oz!BzC|cdN9LxPbm8&S3 delta 65017 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 o3BC67Lv5|%L627+_Sj&*f19ZA{iRv -

- -
- - -
- - - - - - - - - - - - - - - - - - - - - - -
- - - - - diff --git a/nladmin-ui/src/views/system/job/module/form.vue b/nladmin-ui/src/views/system/job/module/form.vue deleted file mode 100644 index 6c8e0765d..000000000 --- a/nladmin-ui/src/views/system/job/module/form.vue +++ /dev/null @@ -1,110 +0,0 @@ - - - - - diff --git a/nladmin-ui/src/views/system/job/module/header.vue b/nladmin-ui/src/views/system/job/module/header.vue deleted file mode 100644 index 8cdad39f3..000000000 --- a/nladmin-ui/src/views/system/job/module/header.vue +++ /dev/null @@ -1,32 +0,0 @@ - - - diff --git a/nladmin-ui/src/views/system/user/index.vue b/nladmin-ui/src/views/system/user/index.vue index 8366c9d78..b05e7a6b3 100644 --- a/nladmin-ui/src/views/system/user/index.vue +++ b/nladmin-ui/src/views/system/user/index.vue @@ -90,23 +90,7 @@ placeholder="选择部门" /> - - - - - + @@ -123,12 +107,6 @@ - - - - - - { - if (!value) { - callback(new Error('请输入电话号码')) - } else if (!isvalidPhone(value)) { + if (!isvalidPhone(value)) { callback(new Error('请输入正确的11位手机号码')) } else { callback() @@ -265,8 +237,8 @@ export default { } return { height: document.documentElement.clientHeight - 180 + 'px;', - deptName: '', depts: [], deptDatas: [], jobs: [], level: 3, roles: [], - jobDatas: [], roleDatas: [], // 多选时使用 + deptName: '', depts: [], deptDatas: [], level: 3, roles: [], + roleDatas: [], // 多选时使用 defaultProps: { children: 'children', label: 'name', isLeaf: 'leaf' }, permission: { add: ['admin', 'user:add'], @@ -287,11 +259,10 @@ export default { { min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' } ], email: [ - { required: true, message: '请输入邮箱地址', trigger: 'blur' }, { type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur' } ], phone: [ - { required: true, trigger: 'blur', validator: validPhone } + { required: false, trigger: 'blur', validator: validPhone } ] } } @@ -341,7 +312,6 @@ export default { this.getSupDepts(form.dept.id) } this.getRoleLevel() - this.getJobs() form.enabled = form.enabled.toString() }, // 新增前将多选的值设置为空 @@ -351,8 +321,6 @@ export default { }, // 初始化编辑时候的角色与岗位 [CRUD.HOOK.beforeToEdit](crud, form) { - this.getJobs(this.form.dept.id) - this.jobDatas = [] this.roleDatas = [] userRoles = [] userJobs = [] @@ -362,11 +330,6 @@ export default { const rol = { id: role.id } userRoles.push(rol) }) - form.jobs.forEach(function(job, index) { - _this.jobDatas.push(job.id) - const data = { id: job.id } - userJobs.push(data) - }) }, // 提交前做的操作 [CRUD.HOOK.afterValidateCU](crud) { @@ -390,7 +353,7 @@ export default { return false } crud.form.roles = userRoles - crud.form.jobs = userJobs + // crud.form.jobs = userJobs return true }, // 获取左侧部门数据 @@ -489,13 +452,6 @@ export default { }).catch(() => { }) }, - // 获取弹窗内岗位数据 - getJobs() { - getAllJob().then(res => { - this.jobs = res.content - }).catch(() => { - }) - }, // 获取权限级别 getRoleLevel() { getLevel().then(res => {