From 5ea53387a552d8a38c1d6cc90764b8693badaef3 Mon Sep 17 00:00:00 2001 From: lihongbiao <964708803@qq.com> Date: Tue, 15 Jul 2025 10:51:56 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/UserDetailsServiceImpl.java | 33 ++- .../security/service/dto/JwtUserDto.java | 6 +- .../system/controller/EmAreaController.java | 2 +- .../controller/EmEmployeesController.java | 169 +++++++++---- .../system/controller/EmScenicController.java | 8 +- .../modules/system/domain/EmArea.java | 2 +- .../modules/system/domain/EmEmployees.java | 18 -- .../modules/system/domain/EmScenic.java | 4 +- .../aircraft/modules/system/domain/User.java | 20 ++ .../modules/system/domain/vo/AreaTreeVo.java | 2 +- .../modules/system/mapper/EmScenicMapper.java | 2 +- .../modules/system/rest/UserController.java | 3 +- .../modules/system/service/EmAreaService.java | 2 + .../system/service/EmEmployeesService.java | 78 +++--- .../system/service/EmScenicService.java | 4 +- .../modules/system/service/UserService.java | 8 + .../service/impl/EmAreaServiceImpl.java | 7 + .../service/impl/EmEmployeesServiceImpl.java | 232 +++++++++--------- .../service/impl/EmScenicServiceImpl.java | 12 +- .../system/service/impl/UserServiceImpl.java | 50 ++++ 20 files changed, 422 insertions(+), 240 deletions(-) diff --git a/aircraft-system/src/main/java/com/aircraft/modules/security/service/UserDetailsServiceImpl.java b/aircraft-system/src/main/java/com/aircraft/modules/security/service/UserDetailsServiceImpl.java index 93d889d..8ebde28 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/security/service/UserDetailsServiceImpl.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/security/service/UserDetailsServiceImpl.java @@ -17,6 +17,8 @@ package com.aircraft.modules.security.service; import cn.hutool.core.bean.BeanUtil; import com.aircraft.modules.security.service.dto.LoginUserDto; +import com.aircraft.modules.system.domain.EmEmployees; +import com.aircraft.modules.system.service.EmEmployeesService; import com.aircraft.utils.enums.UserTypeEnum; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -27,6 +29,7 @@ import com.aircraft.modules.system.domain.User; import com.aircraft.modules.system.service.DataService; import com.aircraft.modules.system.service.RoleService; import com.aircraft.modules.system.service.UserService; +import org.springframework.context.annotation.Lazy; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.stereotype.Service; import java.util.List; @@ -43,6 +46,8 @@ public class UserDetailsServiceImpl implements UserDetailsService { private final RoleService roleService; private final DataService dataService; private final UserCacheManager userCacheManager; + @Lazy + private final EmEmployeesService emEmployeesService; @Override public JwtUserDto loadUserByUsername(String username) { @@ -57,12 +62,38 @@ public class UserDetailsServiceImpl implements UserDetailsService { } // 获取用户的权限 List authorities = roleService.buildPermissions(user); + EmEmployees emEmployees = null; + if (user.getUserType()==1) { + emEmployees = emEmployeesService.findByUserId(user.getId()); + } // 初始化JwtUserDto - jwtUserDto = new JwtUserDto(BeanUtil.copyProperties(user, LoginUserDto.class), UserTypeEnum.getByValue(user.getUserType()),dataService.getDeptIds(user), authorities); + jwtUserDto = new JwtUserDto(BeanUtil.copyProperties(user, LoginUserDto.class), UserTypeEnum.getByValue(user.getUserType()),dataService.getDeptIds(user), authorities,emEmployees); // 添加缓存数据 userCacheManager.addUserCache(username, jwtUserDto); } } return jwtUserDto; } + +// @Override +// public JwtUserDto loadEmEmployeesByUsername(String username) { +// JwtUserDto jwtUserDto = userCacheManager.getUserCache(username); +// if(jwtUserDto == null){ +// User user = userService.getLoginData(username); +// if (user == null) { +// throw new BadRequestException("用户不存在"); +// } else { +// if (!user.getEnabled()) { +// throw new BadRequestException("账号未激活!"); +// } +// // 获取用户的权限 +// List authorities = roleService.buildPermissions(user); +// // 初始化JwtUserDto +// jwtUserDto = new JwtUserDto(BeanUtil.copyProperties(user, LoginUserDto.class), UserTypeEnum.getByValue(user.getUserType()),dataService.getDeptIds(user), authorities); +// // 添加缓存数据 +// userCacheManager.addUserCache(username, jwtUserDto); +// } +// } +// return jwtUserDto; +// } } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/security/service/dto/JwtUserDto.java b/aircraft-system/src/main/java/com/aircraft/modules/security/service/dto/JwtUserDto.java index 0b9a5dc..24c06ba 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/security/service/dto/JwtUserDto.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/security/service/dto/JwtUserDto.java @@ -17,6 +17,7 @@ package com.aircraft.modules.security.service.dto; import com.aircraft.modules.system.domain.CnCustomer; import com.aircraft.modules.system.domain.Dept; +import com.aircraft.modules.system.domain.EmEmployees; import com.aircraft.utils.enums.UserTypeEnum; import com.alibaba.fastjson2.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; @@ -49,7 +50,8 @@ public class JwtUserDto implements UserDetails { @ApiModelProperty(value = "角色") private final List authorities; - + @ApiModelProperty(value = "飞行员端信息") + private final EmEmployees emEmployees; public JwtUserDto createcnCustomerJwtUserDto(CnCustomer cnCustomer){ LoginUserDto userDto = new LoginUserDto(); @@ -60,7 +62,7 @@ public class JwtUserDto implements UserDetails { userDto.setPassword(null); userDto.setEnabled(true); userDto.setIsAdmin(false); - return new JwtUserDto(userDto, UserTypeEnum.CUSTOMER,new ArrayList<>(),new ArrayList<>()); + return new JwtUserDto(userDto, UserTypeEnum.CUSTOMER,new ArrayList<>(),new ArrayList<>(),null); } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/controller/EmAreaController.java b/aircraft-system/src/main/java/com/aircraft/modules/system/controller/EmAreaController.java index 31b8f14..c3275ef 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/controller/EmAreaController.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/controller/EmAreaController.java @@ -64,7 +64,7 @@ public class EmAreaController { @ApiOperation(value = "删除区域") @RequestMapping(value = "{id}", method = {RequestMethod.DELETE}) @ApiImplicitParam(name = "id", value = "区域ID", required = true, paramType = "path") - public ResponseEntity delete(@PathVariable final Integer id) { + public ResponseEntity delete(@PathVariable final Long id) { try { EmArea area = entityService.getById(id); List emScenics = emScenicService.findByAreaId(id); diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/controller/EmEmployeesController.java b/aircraft-system/src/main/java/com/aircraft/modules/system/controller/EmEmployeesController.java index b4ae9e1..316d601 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/controller/EmEmployeesController.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/controller/EmEmployeesController.java @@ -16,21 +16,43 @@ package com.aircraft.modules.system.controller; import com.aircraft.annotation.Log; +import com.aircraft.annotation.rest.AnonymousPostMapping; +import com.aircraft.config.properties.RsaProperties; +import com.aircraft.exception.BadRequestException; +import com.aircraft.modules.security.config.CaptchaConfig; +import com.aircraft.modules.security.config.LoginProperties; +import com.aircraft.modules.security.config.SecurityProperties; +import com.aircraft.modules.security.security.TokenProvider; +import com.aircraft.modules.security.service.OnlineUserService; +import com.aircraft.modules.security.service.UserDetailsServiceImpl; +import com.aircraft.modules.security.service.dto.AuthUserDto; +import com.aircraft.modules.security.service.dto.JwtUserDto; import com.aircraft.modules.system.domain.EmEmployees; import com.aircraft.modules.system.domain.vo.EmEmployeesDetailVo; import com.aircraft.modules.system.domain.vo.EmEmployeesVo; import com.aircraft.modules.system.service.EmEmployeesService; import com.aircraft.modules.system.domain.dto.EmEmployeesQueryCriteria; import com.aircraft.utils.PageResult; +import com.aircraft.utils.RedisUtils; +import com.aircraft.utils.RsaUtils; +import com.aircraft.utils.StringUtils; import lombok.RequiredArgsConstructor; + +import java.util.HashMap; import java.util.List; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import io.swagger.annotations.*; import java.io.IOException; +import java.util.Map; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -41,59 +63,106 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; **/ @RestController @RequiredArgsConstructor -@Api(tags = "员工管理") +@Api(tags = "飞行员管理") @RequestMapping("/api/emEmployees") public class EmEmployeesController { - private final EmEmployeesService emEmployeesService; + private final SecurityProperties properties; + private final RedisUtils redisUtils; + private final OnlineUserService onlineUserService; + private final TokenProvider tokenProvider; + private final LoginProperties loginProperties; + private final PasswordEncoder passwordEncoder; + private final UserDetailsServiceImpl userDetailsService; +// private final EmEmployeesService emEmployeesService; - @ApiOperation("导出数据") - @GetMapping(value = "/download") - @PreAuthorize("@el.check('emEmployees:list')") - public void exportEmEmployees(HttpServletResponse response, EmEmployeesQueryCriteria criteria) throws IOException { - emEmployeesService.download(emEmployeesService.queryAll(criteria), response); +// @ApiOperation("导出数据") +// @GetMapping(value = "/download") +// @PreAuthorize("@el.check('emEmployees:list')") +// public void exportEmEmployees(HttpServletResponse response, EmEmployeesQueryCriteria criteria) throws IOException { +// emEmployeesService.download(emEmployeesService.queryAll(criteria), response); +// } +// +// @GetMapping +// @ApiOperation("查询员工管理") +// @PreAuthorize("@el.check('emEmployees:list')") +// public ResponseEntity> queryEmEmployees(EmEmployeesQueryCriteria criteria){ +// Page page = new Page<>(criteria.getPage(), criteria.getSize()); +// return new ResponseEntity<>(emEmployeesService.queryAll(criteria,page),HttpStatus.OK); +// } +// +// @PostMapping +// @Log("新增员工管理") +// @ApiOperation("新增员工管理") +// @PreAuthorize("@el.check('emEmployees:add')") +// public ResponseEntity createEmEmployees(@Validated @RequestBody EmEmployeesVo resources){ +// emEmployeesService.create(resources); +// return new ResponseEntity<>(HttpStatus.CREATED); +// } +// +// @PutMapping +// @Log("修改员工管理") +// @ApiOperation("修改员工管理") +// @PreAuthorize("@el.check('emEmployees:edit')") +// public ResponseEntity updateEmEmployees(@Validated @RequestBody EmEmployeesVo resources){ +// emEmployeesService.update(resources); +// return new ResponseEntity<>(HttpStatus.NO_CONTENT); +// } +// +// @DeleteMapping +// @Log("删除员工管理") +// @ApiOperation("删除员工管理") +// @PreAuthorize("@el.check('emEmployees:del')") +// public ResponseEntity deleteEmEmployees(@ApiParam(value = "传ID数组[]") @RequestBody List ids) { +// emEmployeesService.deleteAll(ids); +// return new ResponseEntity<>(HttpStatus.OK); +// } + +// @GetMapping("findByPage") +// @ApiOperation("分页查询员工管理") +// public ResponseEntity> findByPage(final EmEmployeesDetailVo example, final Page page){ +// PageResult records = emEmployeesService.page(example,page); +// return new ResponseEntity<>(records,HttpStatus.OK); +// } + + @Log("用户登录") + @ApiOperation("登录授权") + @AnonymousPostMapping(value = "/login") + public ResponseEntity login(@Validated @RequestBody AuthUserDto authUser, HttpServletRequest request) throws Exception { + // 密码解密 + String password = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey, authUser.getPassword()); + // 查询验证码 + String code = redisUtils.get(authUser.getUuid(), String.class); + // 清除验证码 + redisUtils.del(authUser.getUuid()); + if (StringUtils.isBlank(code)) { + throw new BadRequestException("验证码不存在或已过期"); + } + if (StringUtils.isBlank(authUser.getCode()) || !authUser.getCode().equalsIgnoreCase(code)) { + throw new BadRequestException("验证码错误"); + } + // 获取用户信息 + JwtUserDto jwtUser = userDetailsService.loadUserByUsername(authUser.getUsername()); + // 验证用户密码 + if (!passwordEncoder.matches(password, jwtUser.getPassword())) { + throw new BadRequestException("登录密码错误"); + } + Authentication authentication = new UsernamePasswordAuthenticationToken(jwtUser, null, jwtUser.getAuthorities()); + SecurityContextHolder.getContext().setAuthentication(authentication); + // 生成令牌 + String token = tokenProvider.createToken(jwtUser); + // 返回 token 与 用户信息 + Map authInfo = new HashMap(2) {{ + put("token", properties.getTokenStartWith() + token); + put("user", jwtUser); + }}; + if (loginProperties.isSingleLogin()) { + // 踢掉之前已经登录的token + onlineUserService.kickOutForUsername(authUser.getUsername()); + } + // 保存在线信息 + onlineUserService.save(jwtUser, token, request); + // 返回登录信息 + return ResponseEntity.ok(authInfo); } - - @GetMapping - @ApiOperation("查询员工管理") - @PreAuthorize("@el.check('emEmployees:list')") - public ResponseEntity> queryEmEmployees(EmEmployeesQueryCriteria criteria){ - Page page = new Page<>(criteria.getPage(), criteria.getSize()); - return new ResponseEntity<>(emEmployeesService.queryAll(criteria,page),HttpStatus.OK); - } - - @PostMapping - @Log("新增员工管理") - @ApiOperation("新增员工管理") - @PreAuthorize("@el.check('emEmployees:add')") - public ResponseEntity createEmEmployees(@Validated @RequestBody EmEmployeesVo resources){ - emEmployeesService.create(resources); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @PutMapping - @Log("修改员工管理") - @ApiOperation("修改员工管理") - @PreAuthorize("@el.check('emEmployees:edit')") - public ResponseEntity updateEmEmployees(@Validated @RequestBody EmEmployeesVo resources){ - emEmployeesService.update(resources); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @DeleteMapping - @Log("删除员工管理") - @ApiOperation("删除员工管理") - @PreAuthorize("@el.check('emEmployees:del')") - public ResponseEntity deleteEmEmployees(@ApiParam(value = "传ID数组[]") @RequestBody List ids) { - emEmployeesService.deleteAll(ids); - return new ResponseEntity<>(HttpStatus.OK); - } - - @GetMapping("findByPage") - @ApiOperation("分页查询员工管理") - public ResponseEntity> findByPage(final EmEmployeesDetailVo example, final Page page){ - PageResult records = emEmployeesService.page(example,page); - return new ResponseEntity<>(records,HttpStatus.OK); - } - } \ No newline at end of file diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/controller/EmScenicController.java b/aircraft-system/src/main/java/com/aircraft/modules/system/controller/EmScenicController.java index ed98593..43b08ec 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/controller/EmScenicController.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/controller/EmScenicController.java @@ -4,8 +4,10 @@ package com.aircraft.modules.system.controller; import com.aircraft.annotation.Log; import com.aircraft.modules.system.domain.EmEmployees; import com.aircraft.modules.system.domain.EmScenic; +import com.aircraft.modules.system.domain.User; import com.aircraft.modules.system.service.EmEmployeesService; import com.aircraft.modules.system.service.EmScenicService; +import com.aircraft.modules.system.service.UserService; import com.aircraft.utils.PageResult; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -46,7 +48,7 @@ public class EmScenicController { @Autowired private EmScenicService entityService; @Autowired - private EmEmployeesService employeesService; + private UserService userService; @Log("分页查询景区") @ApiOperation(value = "分页查询景区", notes = "分页查询景区") @@ -61,13 +63,13 @@ public class EmScenicController { @ApiOperation(value = "删除景区") @RequestMapping(value = "{id}", method = {RequestMethod.DELETE}) @ApiImplicitParam(name = "id", value = "景区ID", required = true, paramType = "path") - public ResponseEntity delete(@PathVariable final Integer id) { + public ResponseEntity delete(@PathVariable final Long id) { try { EmScenic scenic = entityService.getById(id); if (null == scenic) { throw new RuntimeException("没有找到id对应对象"); } - List fdBaseUsers = employeesService.findByScenicId(id); + List fdBaseUsers = userService.findByScenicId(id); if (null != fdBaseUsers && !fdBaseUsers.isEmpty()) { throw new RuntimeException("部门里面还存在用户,无法删除"); } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/domain/EmArea.java b/aircraft-system/src/main/java/com/aircraft/modules/system/domain/EmArea.java index 7acd8d0..4608fc4 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/domain/EmArea.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/domain/EmArea.java @@ -20,7 +20,7 @@ public class EmArea extends BaseEntity { private static final long serialVersionUID = 1L; - private Integer id; + private Long id; /** * 区域名称 diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/domain/EmEmployees.java b/aircraft-system/src/main/java/com/aircraft/modules/system/domain/EmEmployees.java index b8e6988..458317c 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/domain/EmEmployees.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/domain/EmEmployees.java @@ -42,15 +42,9 @@ public class EmEmployees extends BaseEntity { @ApiModelProperty(value = "姓名") private String name; - @ApiModelProperty(value = "性别") - private String gender; - @ApiModelProperty(value = "电话") private String phone; - @ApiModelProperty(value = "所属部门ID") - private Long departmentId; - @ApiModelProperty(value = "员工状态") private String status; @@ -60,18 +54,6 @@ public class EmEmployees extends BaseEntity { @ApiModelProperty(value = "更新时间") private Timestamp updateTime; - @ApiModelProperty(value = "区域id") - private Integer areaId; - - @ApiModelProperty(value = "景区id") - private Integer scenicId; - - @ApiModelProperty(value = "飞行资质") - private String qualification; - - @ApiModelProperty(value = "飞行资质附件") - private String qualificationAttachment; - @ApiModelProperty(value = "userid") private Long userid; diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/domain/EmScenic.java b/aircraft-system/src/main/java/com/aircraft/modules/system/domain/EmScenic.java index b93140e..7f26d02 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/domain/EmScenic.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/domain/EmScenic.java @@ -21,12 +21,12 @@ public class EmScenic extends BaseEntity { private static final long serialVersionUID = 1L; - private Integer id; + private Long id; /** * 区域id */ - private Integer areaId; + private Long areaId; /** * 名称 diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/domain/User.java b/aircraft-system/src/main/java/com/aircraft/modules/system/domain/User.java index 1a38216..a15e0ae 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/domain/User.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/domain/User.java @@ -104,6 +104,26 @@ public class User extends BaseEntity implements Serializable { @ApiModelProperty(value = "最后修改密码的时间", hidden = true) private Date pwdResetTime; + @ApiModelProperty(value = "区域id") + private Long areaId; + + @ApiModelProperty(value = "景区id") + private Long scenicId; + + @ApiModelProperty(value = "飞行资质") + private String qualification; + + @ApiModelProperty(value = "飞行资质附件") + private String qualificationAttachment; + + @TableField(exist = false) + @ApiModelProperty(value = "区域名称") + private String areaName; + + @TableField(exist = false) + @ApiModelProperty(value = "景区名称") + private String scenicName; + @Override public boolean equals(Object o) { if (this == o) { diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/domain/vo/AreaTreeVo.java b/aircraft-system/src/main/java/com/aircraft/modules/system/domain/vo/AreaTreeVo.java index 55f06fe..92ef940 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/domain/vo/AreaTreeVo.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/domain/vo/AreaTreeVo.java @@ -12,7 +12,7 @@ import java.util.List; @Data public class AreaTreeVo implements Serializable { - private Integer id; + private Long id; @ApiModelProperty(value = "名称") private String name; diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/mapper/EmScenicMapper.java b/aircraft-system/src/main/java/com/aircraft/modules/system/mapper/EmScenicMapper.java index a1ac638..ff0a895 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/mapper/EmScenicMapper.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/mapper/EmScenicMapper.java @@ -25,7 +25,7 @@ public interface EmScenicMapper extends BaseMapper { * @param name * @return */ - EmScenic findByAreaIdAndName(@Param("areaId") Integer areaId, @Param("name") String name); + EmScenic findByAreaIdAndName(@Param("areaId") Long areaId, @Param("name") String name); /** * 景区按区域统计数量 diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/rest/UserController.java b/aircraft-system/src/main/java/com/aircraft/modules/system/rest/UserController.java index ba7f012..bd8339b 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/rest/UserController.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/rest/UserController.java @@ -109,7 +109,8 @@ public class UserController { public ResponseEntity createUser(@Validated @RequestBody User resources){ checkLevel(resources); // 默认密码 123456 - resources.setPassword(passwordEncoder.encode("123456")); +// resources.setPassword(passwordEncoder.encode("123456")); + resources.setPassword(passwordEncoder.encode(resources.getPassword())); userService.create(resources); return new ResponseEntity<>(HttpStatus.CREATED); } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/service/EmAreaService.java b/aircraft-system/src/main/java/com/aircraft/modules/system/service/EmAreaService.java index 51959a3..b514c65 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/service/EmAreaService.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/service/EmAreaService.java @@ -55,4 +55,6 @@ public interface EmAreaService extends IService { List findByIdIn(List collect); Map getNameMapByIds(List regionIds); + + EmArea findById(Long areaId); } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/service/EmEmployeesService.java b/aircraft-system/src/main/java/com/aircraft/modules/system/service/EmEmployeesService.java index 209e692..8851598 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/service/EmEmployeesService.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/service/EmEmployeesService.java @@ -21,6 +21,7 @@ import com.aircraft.modules.system.domain.dto.EmEmployeesQueryCriteria; import java.util.List; import java.io.IOException; import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.NotNull; import com.aircraft.modules.system.domain.vo.EmEmployeesDetailVo; import com.aircraft.modules.system.domain.vo.EmEmployeesVo; @@ -50,44 +51,51 @@ public interface EmEmployeesService extends IService { */ List queryAll(EmEmployeesQueryCriteria criteria); - /** - * 创建 - * @param resources / - */ - void create(EmEmployeesVo resources); +// /** +// * 创建 +// * @param resources / +// */ +// void create(EmEmployeesVo resources); +// +// /** +// * 编辑 +// * @param resources / +// */ +// void update(EmEmployeesVo resources); +// +// /** +// * 多选删除 +// * @param ids / +// */ +// void deleteAll(List ids); +// +// /** +// * 导出数据 +// * @param all 待导出的数据 +// * @param response / +// * @throws IOException / +// */ +// void download(List all, HttpServletResponse response) throws IOException; +// +// /** +// * 分页查询 +// * @param example +// * @param page +// * @return +// */ +// PageResult page(EmEmployeesDetailVo example, Page page); +// +// /** +// * 获取景区下的用户 +// * @param id +// * @return +// */ +// List findByScenicId(Long id); /** - * 编辑 - * @param resources / - */ - void update(EmEmployeesVo resources); - - /** - * 多选删除 - * @param ids / - */ - void deleteAll(List ids); - - /** - * 导出数据 - * @param all 待导出的数据 - * @param response / - * @throws IOException / - */ - void download(List all, HttpServletResponse response) throws IOException; - - /** - * 分页查询 - * @param example - * @param page - * @return - */ - PageResult page(EmEmployeesDetailVo example, Page page); - - /** - * 获取景区下的用户 + * 根据userid查找用户 * @param id * @return */ - List findByScenicId(Integer id); + EmEmployees findByUserId(Long id); } \ No newline at end of file diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/service/EmScenicService.java b/aircraft-system/src/main/java/com/aircraft/modules/system/service/EmScenicService.java index 41a0bbf..6cb8fdd 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/service/EmScenicService.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/service/EmScenicService.java @@ -33,7 +33,7 @@ public interface EmScenicService extends IService { */ PageResult page(EmScenic example, IPage page); - List findByAreaId(Integer id); + List findByAreaId(Long id); /** * 查询区域下景区名称 @@ -41,7 +41,7 @@ public interface EmScenicService extends IService { * @param name * @return */ - EmScenic findByAreaIdAndName(Integer areaId, String name); + EmScenic findByAreaIdAndName(Long areaId, String name); /** * 景区按区域统计数量 diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/service/UserService.java b/aircraft-system/src/main/java/com/aircraft/modules/system/service/UserService.java index 22af5bd..f0feb68 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/service/UserService.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/service/UserService.java @@ -15,6 +15,7 @@ */ package com.aircraft.modules.system.service; +import com.aircraft.modules.system.domain.EmEmployees; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.aircraft.modules.system.domain.User; @@ -136,4 +137,11 @@ public interface UserService extends IService { void delCaches(Long id, String username); + /** + * 获取景区下的用户 + * @param areaId + * @return + */ + List findByScenicId(Long areaId); + } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/EmAreaServiceImpl.java b/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/EmAreaServiceImpl.java index d1348d0..b892095 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/EmAreaServiceImpl.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/EmAreaServiceImpl.java @@ -101,6 +101,13 @@ public class EmAreaServiceImpl extends ServiceImpl impleme )); } + @Override + public EmArea findById(Long areaId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.lambda().eq(EmArea::getId, areaId); + return this.baseMapper.selectOne(wrapper); + } + /** * 构建查询 * diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/EmEmployeesServiceImpl.java b/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/EmEmployeesServiceImpl.java index 0cb9f44..ed63a28 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/EmEmployeesServiceImpl.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/EmEmployeesServiceImpl.java @@ -33,6 +33,7 @@ import com.aircraft.modules.system.domain.dto.EmEmployeesQueryCriteria; import com.aircraft.modules.system.mapper.EmEmployeesMapper; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -50,11 +51,6 @@ import javax.servlet.http.HttpServletResponse; public class EmEmployeesServiceImpl extends ServiceImpl implements EmEmployeesService { private final EmEmployeesMapper emEmployeesMapper; - private final UserMapper userMapper; - private final UserRoleMapper userRoleMapper; - private final RedisUtils redisUtils; - @Autowired - private UserService userService; @Override public PageResult queryAll(EmEmployeesQueryCriteria criteria, Page page){ @@ -66,121 +62,123 @@ public class EmEmployeesServiceImpl extends ServiceImpl ids) { +// Set userIds = new HashSet<>(); +// for (Long id : ids) { +// EmEmployees emEmployees = getById(id); +// emEmployees.setDelFlag(1); +// emEmployeesMapper.updateById(emEmployees); +// // 清理缓存 +// User user = userService.getById(emEmployees.getUserid()); +// userService.delCaches(user.getId(), user.getUsername()); +// userIds.add(emEmployees.getUserid()); +// } +// userMapper.deleteBatchIds(ids); +// // 删除用户角色 +// userRoleMapper.deleteByUserIds(userIds); +// } +// +// @Override +// public void download(List all, HttpServletResponse response) throws IOException { +// List> list = new ArrayList<>(); +// for (EmEmployees emEmployees : all) { +// Map map = new LinkedHashMap<>(); +// map.put("姓名", emEmployees.getName()); +// map.put("电话", emEmployees.getPhone()); +// map.put("员工状态", emEmployees.getStatus()); +// map.put("创建时间", emEmployees.getCreateTime()); +// map.put("更新时间", emEmployees.getUpdateTime()); +// map.put("userid", emEmployees.getUserid()); +// list.add(map); +// } +// FileUtil.downloadExcel(list, response); +// } +// +// @Override +// public PageResult page(EmEmployeesDetailVo example, Page page) { +// page.setOptimizeCountSql(false); +// return PageUtil.toPage(this.baseMapper.findByExample(buildWrapper(example),page)); +// } +// +// /** +// * 构建查询 +// * +// * @param example +// * @return +// */ +// private QueryWrapper buildWrapper(EmEmployeesDetailVo example) { +// String name = example.getName(); +// QueryWrapper wrapper = new QueryWrapper<>(); +// wrapper.lambda() +// .like(StringUtils.isNotEmpty(name), EmEmployees::getName, name); +// return wrapper; +// } +// +// @Override +// public List findByScenicId(Long areaId) { +// QueryWrapper wrapper = new QueryWrapper<>(); +// wrapper.lambda() +// .eq(EmEmployees::getAreaId, areaId) +// .eq(EmEmployees::getDelFlag, 0); +// return super.list(wrapper); +// } +// @Override - @Transactional(rollbackFor = Exception.class) - public void create(EmEmployeesVo resources) { - if (userMapper.findByUsername(resources.getUsername()) != null) { - throw new EntityExistException(User.class, "username", resources.getUsername()); - } - User user = new User(); - BeanUtils.copyProperties(resources, user); - user.setNickName(resources.getName()); - user.setEnabled(true); - userMapper.insert(user); - // 保存用户角色 - userRoleMapper.insertData(user.getId(), resources.getRoles()); - EmEmployees emEmployees = new EmEmployees(); - BeanUtils.copyProperties(resources, emEmployees); - emEmployees.setDelFlag(0); - emEmployees.setStatus("1"); - emEmployees.setUserid(user.getId()); - emEmployeesMapper.insert(resources); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void update(EmEmployeesVo resources) { - User user1 = userMapper.findByUsername(resources.getUsername()); - EmEmployees emEmployees = getById(resources.getId()); - emEmployees.copy(resources); - // 如果用户的角色改变 - if (!resources.getRoles().equals(resources.getRoles())) { - redisUtils.del(CacheKey.DATA_USER + resources.getId()); - redisUtils.del(CacheKey.MENU_USER + resources.getId()); - redisUtils.del(CacheKey.ROLE_AUTH + resources.getId()); - redisUtils.del(CacheKey.ROLE_USER + resources.getId()); - } - user1.setUsername(resources.getUsername()); - user1.setRoles(resources.getRoles()); - user1.setPhone(resources.getPhone()); - user1.setNickName(resources.getName()); - user1.setGender(resources.getGender()); - userMapper.updateById(user1); - // 清除缓存 - userService.delCaches(user1.getId(), user1.getUsername()); - emEmployeesMapper.updateById(emEmployees); - // 更新用户角色 - userRoleMapper.deleteByUserId(resources.getId()); - userRoleMapper.insertData(resources.getId(), resources.getRoles()); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteAll(List ids) { - Set userIds = new HashSet<>(); - for (Long id : ids) { - EmEmployees emEmployees = getById(id); - emEmployees.setDelFlag(1); - emEmployeesMapper.updateById(emEmployees); - // 清理缓存 - User user = userService.getById(emEmployees.getUserid()); - userService.delCaches(user.getId(), user.getUsername()); - userIds.add(emEmployees.getUserid()); - } - userMapper.deleteBatchIds(ids); - // 删除用户角色 - userRoleMapper.deleteByUserIds(userIds); - } - - @Override - public void download(List all, HttpServletResponse response) throws IOException { - List> list = new ArrayList<>(); - for (EmEmployees emEmployees : all) { - Map map = new LinkedHashMap<>(); - map.put("姓名", emEmployees.getName()); - map.put("性别", emEmployees.getGender()); - map.put("电话", emEmployees.getPhone()); - map.put("所属部门ID", emEmployees.getDepartmentId()); - map.put("员工状态", emEmployees.getStatus()); - map.put("创建时间", emEmployees.getCreateTime()); - map.put("更新时间", emEmployees.getUpdateTime()); - map.put("区域id", emEmployees.getAreaId()); - map.put("景区id", emEmployees.getScenicId()); - map.put("飞行资质", emEmployees.getQualification()); - map.put("飞行资质附件", emEmployees.getQualificationAttachment()); - map.put("userid", emEmployees.getUserid()); - list.add(map); - } - FileUtil.downloadExcel(list, response); - } - - @Override - public PageResult page(EmEmployeesDetailVo example, Page page) { - page.setOptimizeCountSql(false); - return PageUtil.toPage(this.baseMapper.findByExample(buildWrapper(example),page)); - } - - /** - * 构建查询 - * - * @param example - * @return - */ - private QueryWrapper buildWrapper(EmEmployeesDetailVo example) { - String name = example.getName(); - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.lambda() - .like(StringUtils.isNotEmpty(name), EmEmployees::getName, name); - return wrapper; - } - - @Override - public List findByScenicId(Integer areaId) { + public EmEmployees findByUserId(Long id) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() - .eq(EmEmployees::getAreaId, areaId) - .eq(EmEmployees::getDelFlag, 0); - return super.list(wrapper); + .eq(EmEmployees::getUserid,id); + return this.baseMapper.selectOne(wrapper); } } \ No newline at end of file diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/EmScenicServiceImpl.java b/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/EmScenicServiceImpl.java index a657911..053b6c3 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/EmScenicServiceImpl.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/EmScenicServiceImpl.java @@ -3,11 +3,13 @@ package com.aircraft.modules.system.service.impl; import com.aircraft.modules.system.domain.EmArea; import com.aircraft.modules.system.domain.EmEmployees; import com.aircraft.modules.system.domain.EmScenic; +import com.aircraft.modules.system.domain.User; import com.aircraft.modules.system.domain.vo.AreaNumStatisVo; import com.aircraft.modules.system.mapper.EmScenicMapper; import com.aircraft.modules.system.service.EmAreaService; import com.aircraft.modules.system.service.EmEmployeesService; import com.aircraft.modules.system.service.EmScenicService; +import com.aircraft.modules.system.service.UserService; import com.aircraft.utils.PageResult; import com.aircraft.utils.PageUtil; import com.aircraft.utils.StringUtils; @@ -38,7 +40,7 @@ public class EmScenicServiceImpl extends ServiceImpl i private EmAreaService areaService; @Lazy @Autowired - private EmEmployeesService employeesService; + private UserService userService; @Override public List list(EmScenic example) { @@ -50,7 +52,7 @@ public class EmScenicServiceImpl extends ServiceImpl i IPage emScenicIPage = this.page(page,buildWrapper(example)); if (emScenicIPage.getRecords() != null&& !emScenicIPage.getRecords().isEmpty()) { for (EmScenic record : emScenicIPage.getRecords()) { - List fdBaseUsers = employeesService.findByScenicId(record.getId()); + List fdBaseUsers = userService.findByScenicId(record.getId()); record.setPeopleNum(fdBaseUsers.size()); } } @@ -58,7 +60,7 @@ public class EmScenicServiceImpl extends ServiceImpl i } @Override - public List findByAreaId(Integer areaId) { + public List findByAreaId(Long areaId) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(EmScenic::getAreaId, areaId) @@ -67,7 +69,7 @@ public class EmScenicServiceImpl extends ServiceImpl i } @Override - public EmScenic findByAreaIdAndName(Integer areaId, String name) { + public EmScenic findByAreaIdAndName(Long areaId, String name) { return this.baseMapper.findByAreaIdAndName(areaId, name); } @@ -92,7 +94,7 @@ public class EmScenicServiceImpl extends ServiceImpl i private QueryWrapper buildWrapper(EmScenic example) { QueryWrapper wrapper = new QueryWrapper<>(); - Integer areaId = example.getAreaId(); + Long areaId = example.getAreaId(); String name = example.getName(); Integer createId = example.getCreateId(); diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/UserServiceImpl.java b/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/UserServiceImpl.java index 97bf3ab..f81ba14 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/UserServiceImpl.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/UserServiceImpl.java @@ -15,6 +15,11 @@ */ package com.aircraft.modules.system.service.impl; +import com.aircraft.modules.system.domain.EmEmployees; +import com.aircraft.modules.system.service.EmAreaService; +import com.aircraft.modules.system.service.EmEmployeesService; +import com.aircraft.modules.system.service.EmScenicService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; @@ -32,6 +37,7 @@ import com.aircraft.modules.system.mapper.UserMapper; import com.aircraft.modules.system.mapper.UserRoleMapper; import com.aircraft.modules.system.service.UserService; import com.aircraft.utils.*; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @@ -58,11 +64,23 @@ public class UserServiceImpl extends ServiceImpl implements Us private final RedisUtils redisUtils; private final UserCacheManager userCacheManager; private final OnlineUserService onlineUserService; + private final EmAreaService areaService; + private final EmScenicService scenicService; + @Lazy + private final EmEmployeesService employeesService; @Override public PageResult queryAll(UserQueryCriteria criteria, Page page) { criteria.setOffset(page.offset()); List users = userMapper.findAll(criteria); + for (User user : users) { + if (user.getAreaId() != null) { + user.setAreaName(areaService.findById(user.getAreaId()).getName()); + } + if (user.getScenicId() != null) { + user.setScenicName(scenicService.findByAreaIdAndName(user.getScenicId(), user.getAreaName()).getName()); + } + } Long total = userMapper.countAll(criteria); return PageUtil.toPage(users, total); } @@ -79,6 +97,12 @@ public class UserServiceImpl extends ServiceImpl implements Us User user = redisUtils.get(key, User.class); if (user == null) { user = getById(id); + if (user.getAreaId() != null) { + user.setAreaName(areaService.findById(user.getAreaId()).getName()); + } + if (user.getScenicId() != null) { + user.setScenicName(scenicService.findByAreaIdAndName(user.getScenicId(), user.getAreaName()).getName()); + } redisUtils.set(key, user, 1, TimeUnit.DAYS); } return user; @@ -98,6 +122,13 @@ public class UserServiceImpl extends ServiceImpl implements Us throw new EntityExistException(User.class, "phone", resources.getPhone()); } save(resources); + if (resources.getUserType()==1){ + EmEmployees emEmployees = new EmEmployees(); + emEmployees.setDelFlag(0); + emEmployees.setPhone(resources.getPhone()); + emEmployees.setName(resources.getNickName()); + employeesService.save(emEmployees); + } // 保存用户岗位 userJobMapper.insertData(resources.getId(), resources.getJobs()); // 保存用户角色 @@ -146,6 +177,12 @@ public class UserServiceImpl extends ServiceImpl implements Us user.setNickName(resources.getNickName()); user.setGender(resources.getGender()); saveOrUpdate(user); + if (resources.getUserType()==1){ + EmEmployees emEmployees = employeesService.findByUserId(resources.getId()); + emEmployees.setPhone(resources.getPhone()); + emEmployees.setName(resources.getNickName()); + employeesService.saveOrUpdate(emEmployees); + } // 清除缓存 delCaches(user.getId(), user.getUsername()); // 更新用户岗位 @@ -178,6 +215,10 @@ public class UserServiceImpl extends ServiceImpl implements Us for (Long id : ids) { // 清理缓存 User user = getById(id); + if (user.getUserType()==1){ + EmEmployees emEmployees = employeesService.findByUserId(id); + employeesService.removeById(emEmployees.getId()); + } delCaches(user.getId(), user.getUsername()); } userMapper.deleteBatchIds(ids); @@ -283,6 +324,15 @@ public class UserServiceImpl extends ServiceImpl implements Us flushCache(username); } + @Override + public List findByScenicId(Long areaId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.lambda() + .eq(User::getAreaId, areaId) + .eq(User::getDelFlag, 0); + return super.list(wrapper); + } + /** * 清理 登陆时 用户缓存信息 *