diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java index 5cfc0fbc..8d87a97a 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java @@ -49,6 +49,7 @@ import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.text.ParseException; import java.util.*; import java.util.stream.Collectors; @@ -223,9 +224,22 @@ public class SysUserController { @RequestMapping(value = "/delete", method = RequestMethod.DELETE) public Result delete(@RequestParam(name="id",required=true) String id) { baseCommonService.addLog("删除用户,id: " +id ,CommonConstant.LOG_TYPE_2, 3); - this.sysUserService.deleteUser(id); - return Result.ok("删除用户成功"); - } + try { + return this.sysUserService.deleteUser(id); + } catch (ParseException e) { + throw new RuntimeException(e); + } + } + + /** + * 删除用户 + */ + //@RequiresPermissions("system:user:delete") + @RequestMapping(value = "/deleteById", method = RequestMethod.DELETE) + public Result deleteById(@RequestParam(name="id",required=true) String id) { + baseCommonService.addLog("删除用户,id: " +id ,CommonConstant.LOG_TYPE_2, 3); + return this.sysUserService.deleteById(id); + } /** * 批量删除用户 diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java index 34a427f2..fa081336 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java @@ -17,6 +17,7 @@ import org.jeecg.modules.system.vo.lowapp.UpdateDepartInfo; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; +import java.text.ParseException; import java.util.Collection; import java.util.List; import java.util.Map; @@ -67,7 +68,14 @@ public interface ISysUserService extends IService { * @param userId * @return */ - public boolean deleteUser(String userId); + public Result deleteUser(String userId) throws ParseException; + + /** + * 删除用户 + * @param userId + * @return + */ + public Result deleteById(String userId); /** * 批量删除用户 diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java index 1f186baf..ca362795 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java @@ -50,6 +50,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import java.text.ParseException; import java.util.*; import java.util.stream.Collectors; @@ -97,6 +98,10 @@ public class SysUserServiceImpl extends ServiceImpl impl private SysUserTenantMapper relationMapper; @Autowired private SysUserTenantMapper userTenantMapper; + @Autowired + private SysTaskMapper sysTaskMapper; + @Autowired + private SysTaskStationMapper sysTaskStationMapper; @Value("${system.auth.defaultPassword}") private String defaultPassword; @@ -220,10 +225,46 @@ public class SysUserServiceImpl extends ServiceImpl impl @Override @CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true) @Transactional(rollbackFor = Exception.class) - public boolean deleteUser(String userId) { + public Result deleteUser(String userId) throws ParseException { + //判断当前用户是否有排班任务,如果有就不让删除 + LambdaQueryWrapper taskQueryWrapper = new LambdaQueryWrapper<>(); + taskQueryWrapper.eq(SysTask::getUserId, userId); + taskQueryWrapper.ge(SysTask::getSchedulingDate, DateUtils.parseDate(DateUtils.formatDate(new Date()) ,"yyyy-MM-dd")); + List sysTasks = sysTaskMapper.selectList(taskQueryWrapper); + if (CollectionUtils.isNotEmpty(sysTasks)){ + return Result.error("删除失败, 当前用户存在排班任务信息!"); + } + //删除用户关联的权限信息 + LambdaQueryWrapper userRoleQueryWrapper = new LambdaQueryWrapper<>(); + userRoleQueryWrapper.eq(SysUserRole::getUserId, userId); + sysUserRoleMapper.delete(userRoleQueryWrapper); //1.删除用户 - this.removeById(userId); - return false; + this.baseMapper.deleteById(userId); + return Result.ok("删除用户成功"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result deleteById(String userId) { + //根据用户id删除排班任务信息 + LambdaQueryWrapper taskQueryWrapper = new LambdaQueryWrapper<>(); + taskQueryWrapper.eq(SysTask::getUserId, userId); + List sysTasks = sysTaskMapper.selectList(taskQueryWrapper); + //如果排班任务信息不为空,删除排班任务相关台站信息 + if (CollectionUtils.isNotEmpty(sysTasks)){ + List taskIds = sysTasks.stream().map(SysTask::getId).collect(Collectors.toList()); + LambdaQueryWrapper taskStationQueryWrapper = new LambdaQueryWrapper<>(); + taskStationQueryWrapper.in(SysTaskStation::getTaskId, taskIds); + sysTaskStationMapper.delete(taskStationQueryWrapper); + } + sysTaskMapper.delete(taskQueryWrapper); + //删除用户关联的权限信息 + LambdaQueryWrapper userRoleQueryWrapper = new LambdaQueryWrapper<>(); + userRoleQueryWrapper.eq(SysUserRole::getUserId, userId); + sysUserRoleMapper.delete(userRoleQueryWrapper); + //1.删除用户 + this.baseMapper.deleteById(userId); + return Result.ok("删除用户成功"); } @Override