content: package com.ruoyi.system.service.impl;
  
  import java.util.List;
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.stereotype.Service;
  import com.ruoyi.common.constant.UserConstants;
  import com.ruoyi.common.core.text.Convert;
  import com.ruoyi.common.exception.ServiceException;
  import com.ruoyi.common.utils.StringUtils;
  import com.ruoyi.system.domain.SysPost;
  import com.ruoyi.system.mapper.SysPostMapper;
  import com.ruoyi.system.mapper.SysUserPostMapper;
  import com.ruoyi.system.service.ISysPostService;
  
  /**
   * 岗位信息 服务层处理
   * 
   * @author ruoyi
   */
  @Service
  public class SysPostServiceImpl implements ISysPostService
  {
      @Autowired
      private SysPostMapper postMapper;
  
      @Autowired
      private SysUserPostMapper userPostMapper;
  
      /**
       * 查询岗位信息集合
       * 
       * @param post 岗位信息
       * @return 岗位信息集合
       */
      @Override
      public List<SysPost> selectPostList(SysPost post)
      {
          return postMapper.selectPostList(post);
      }
  
      /**
       * 查询所有岗位
       * 
       * @return 岗位列表
       */
      @Override
      public List<SysPost> selectPostAll()
      {
          return postMapper.selectPostAll();
      }
  
      /**
       * 根据用户ID查询岗位
       * 
       * @param userId 用户ID
       * @return 岗位列表
       */
      @Override
      public List<SysPost> selectPostsByUserId(Long userId)
      {
          List<SysPost> userPosts = postMapper.selectPostsByUserId(userId);
          List<SysPost> posts = postMapper.selectPostAll();
          for (SysPost post : posts)
          {
              for (SysPost userRole : userPosts)
              {
                  if (post.getPostId().longValue() == userRole.getPostId().longValue())
                  {
                      post.setFlag(true);
                      break;
                  }
              }
          }
          return posts;
      }
  
      /**
       * 通过岗位ID查询岗位信息
       * 
       * @param postId 岗位ID
       * @return 角色对象信息
       */
      @Override
      public SysPost selectPostById(Long postId)
      {
          return postMapper.selectPostById(postId);
      }
  
      /**
       * 批量删除岗位信息
       * 
       * @param ids 需要删除的数据ID
       * @return 结果
       */
      @Override
      public int deletePostByIds(String ids)
      {
          Long[] postIds = Convert.toLongArray(ids);
          for (Long postId : postIds)
          {
              SysPost post = selectPostById(postId);
              if (countUserPostById(postId) > 0)
              {
                  throw new ServiceException(String.format("%1$s已分配,不能删除", post.getPostName()));
              }
          }
          return postMapper.deletePostByIds(postIds);
      }
  
      /**
       * 新增保存岗位信息
       * 
       * @param post 岗位信息
       * @return 结果
       */
      @Override
      public int insertPost(SysPost post)
      {
          return postMapper.insertPost(post);
      }
  
      /**
       * 修改保存岗位信息
       * 
       * @param post 岗位信息
       * @return 结果
       */
      @Override
      public int updatePost(SysPost post)
      {
          return postMapper.updatePost(post);
      }
  
      /**
       * 通过岗位ID查询岗位使用数量
       * 
       * @param postId 岗位ID
       * @return 结果
       */
      @Override
      public int countUserPostById(Long postId)
      {
          return userPostMapper.countUserPostById(postId);
      }
  
      /**
       * 校验岗位名称是否唯一
       * 
       * @param post 岗位信息
       * @return 结果
       */
      @Override
      public boolean checkPostNameUnique(SysPost post)
      {
          Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId();
          SysPost info = postMapper.checkPostNameUnique(post.getPostName());
          if (StringUtils.isNotNull(info) && info.getPostId().longValue() != postId.longValue())
          {
              return UserConstants.NOT_UNIQUE;
          }
          return UserConstants.UNIQUE;
      }
  
      /**
       * 校验岗位编码是否唯一
       * 
       * @param post 岗位信息
       * @return 结果
       */
      @Override
      public boolean checkPostCodeUnique(SysPost post)
      {
          Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId();
          SysPost info = postMapper.checkPostCodeUnique(post.getPostCode());
          if (StringUtils.isNotNull(info) && info.getPostId().longValue() != postId.longValue())
          {
              return UserConstants.NOT_UNIQUE;
          }
          return UserConstants.UNIQUE;
      }
  }
  