//----------SysPost开始---------- using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Admin.Core.IRepository; using Admin.Core.Model; using Admin.Core.Common; using System.Linq.Expressions; using Admin.Core.IRepository.ISys; using Admin.Core.IService.ISys; using Admin.Core.Model.Sys; namespace Admin.Core.Service.Sys { /// <summary> /// 岗位信息表Service /// </summary> public partial class SysPostService : BaseServices<SysPost>, ISysPostService { IBaseRepository<SysPost> dal; ISysUserPostRepository _sysUserPostRepository; public SysPostService(IBaseRepository<SysPost> dal, ISysUserPostRepository sysUserPostRepository) { this.dal = dal; BaseDal = dal; _sysUserPostRepository = sysUserPostRepository; } /// <summary> /// 查询岗位信息集合 /// </summary> /// <param name="pageQuery"> 岗位信息 </param> /// <returns> 岗位信息集合 </returns> public async Task<PageModel<SysPost>> SelectPostList(PageQuery<SysPost> pageQuery) { Expression<Func<SysPost, bool>> whereExpression = x => true; if (pageQuery.Query.PostName.IsNotEmptyOrNull()) { whereExpression = whereExpression.And(x => x.PostName.Contains(pageQuery.Query.PostName)); } if (pageQuery.Query.PostCode.IsNotEmptyOrNull()) { whereExpression = whereExpression.And(x => x.PostCode.Contains(pageQuery.Query.PostCode)); } if (pageQuery.Query.Status.IsNotEmptyOrNull()) { whereExpression = whereExpression.And(x => x.Status == pageQuery.Query.Status); } var data = await dal.QueryPageAsync(whereExpression, pageQuery.Page, pageQuery.PageSize, "PostSort asc"); return data; } /// <summary> /// 查询所有岗位 /// </summary> /// <returns> 岗位列表 </returns> public async Task<List<SysPost>> SelectPostAll() { return await dal.QueryAsync(x => x.Status == SysConst.ENABLE); } /// <summary> /// 通过岗位ID查询岗位信息 /// </summary> /// <param name="postId"> 岗位ID </param> /// <returns> 角色对象信息 </returns> public async Task<SysPost> SelectPostById(int postId) { return await dal.QueryByIdAsync(postId); } /// <summary> /// 根据用户ID获取岗位选择框列表 /// </summary> /// <param name="userId"> 用户ID </param> /// <returns> 选中岗位ID列表 </returns> public async Task<List<int>> SelectPostListByUserId(int userId) { var userPosts = await _sysUserPostRepository.QueryAsync(x => x.UserID == userId); return userPosts.Select(x => (int)x.PostID).ToList(); } /// <summary> /// 校验岗位名称是否唯一 /// </summary> /// <param name="post"> 岗位信息 </param> /// <returns> 结果 </returns> public async Task<bool> CheckPostNameUnique(SysPost post) { Expression<Func<SysPost, bool>> whereExpression = x => true; if (post.PostName.IsNotEmptyOrNull()) { whereExpression = whereExpression.And(x => x.PostName == post.PostName); } if (post.PostID.IsNotEmptyOrNull() && post.PostID > 0) { whereExpression = whereExpression.And(x => x.PostID != post.PostID); } var posts = await dal.QueryAsync(whereExpression); return posts.Count == 0; } /// <summary> /// 校验岗位编码是否唯一 /// </summary> /// <param name="post"> 岗位信息 </param> /// <returns> 结果 </returns> public async Task<bool> CheckPostCodeUnique(SysPost post) { Expression<Func<SysPost, bool>> whereExpression = x => true; if (post.PostCode.IsNotEmptyOrNull()) { whereExpression = whereExpression.And(x => x.PostCode == post.PostCode); } if (post.PostID.IsNotEmptyOrNull() && post.PostID > 0) { whereExpression = whereExpression.And(x => x.PostID != post.PostID); } var posts = await dal.QueryAsync(whereExpression); return posts.Count == 0; } /// <summary> /// 通过岗位ID查询岗位使用数量 /// </summary> /// <param name="postIds"> 岗位ID </param> /// <returns> 结果 </returns> public async Task<int> CountUserPostById(List<int> postIds) { var userPosts = await _sysUserPostRepository.QueryAsync(x => postIds.Contains((int)x.PostID)); return userPosts.Count; } /// <summary> /// 删除岗位信息 /// </summary> /// <param name="postId"> 岗位ID </param> /// <returns> 结果 </returns> public async Task<bool> DeletePostById(int postId) { return await dal.DeleteByIdAsync(postId); } /// <summary> /// 批量删除岗位信息 /// </summary> /// <param name="postIds"> 需要删除的岗位ID </param> /// <returns> 结果 </returns> /// <exception cref="Exception"> 异常 </exception> public async Task<bool> DeletePostByIds(List<int> postIds) { var posts = await dal.QueryAsync(x => postIds.Contains(x.PostID)); return await dal.DeletesAsync(posts); } /// <summary> /// 新增保存岗位信息 /// </summary> /// <param name="post"> 岗位信息 </param> /// <returns> 结果 </returns> public async Task<int> InsertPost(SysPost post) { post.CreateTime = DateTime.Now; post.UpdateTime = DateTime.Now; return await dal.AddAsync(post); } /// <summary> /// 修改保存岗位信息 /// </summary> /// <param name="post"> 岗位信息 </param> /// <returns> 结果 </returns> public async Task<bool> UpdatePost(SysPost post) { post.UpdateTime = DateTime.Now; return await dal.UpdateAsync(post); } } } //----------SysPost结束----------