using Learun.Util; using Learun.Util.SqlSugar; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using DbType = System.Data.DbType; namespace Learun.Application.Organization { /// /// 版 本 PIT-ADMS V7.0.3 敏捷开发框架 /// Copyright (c) 2013-2018 Hexagon PPM /// 创建人:研发部 /// 日 期:2017.03.04 /// 描 述:角色管理 /// public class RoleService { #region 仓储 Repository _roleRepository => new Repository(); #endregion #region 构造函数和属性 private string fieldSql; public RoleService() { fieldSql = @" t.F_RoleId, t.F_Category, t.F_EnCode, t.F_FullName, t.F_SortCode, t.F_DeleteMark, t.F_EnabledMark, t.F_Description, t.F_CreateDate, t.F_CreateUserId, t.F_CreateUserName, t.F_ModifyDate, t.F_ModifyUserId, t.F_ModifyUserName "; } #endregion #region 获取数据 /// /// 获取角色数据列表 /// /// public List GetList(string ProjectId) { try { //var dp = new DynamicParameters(new { }); var list = _roleRepository.GetList().Where(x => x.F_EnabledMark == 1 && x.F_DeleteMark == 0); if (!string.IsNullOrEmpty(ProjectId)) { list = list.Where(x => x.ProjectId == ProjectId); } return list.OrderBy(x => x.F_FullName).ToList(); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } public List GetPageList(Pagination pagination, string queryJson) { try { var strSql = new StringBuilder(); strSql.Append("SELECT "); strSql.Append(fieldSql); strSql.Append(@",(SELECT GROUP_CONCAT(st1.F_RealName) FROM lr_base_user st1 LEFT JOIN lr_base_userrelation st2 on st1.F_UserId = st2.F_UserId WHERE FIND_IN_SET(st2.F_ObjectId,t.F_RoleId)) AS MemberName"); strSql.Append(" FROM LR_Base_Role t "); strSql.Append(" WHERE t.F_EnabledMark = 1 AND t.F_DeleteMark = 0 "); var queryParam = queryJson.ToJObject(); // 虚拟参数 //var dp = new DynamicParameters(new { }); var dp = new List(); if (!queryParam["ProjectId"].IsEmpty()) { dp.Add(new SugarParameter("ProjectId", queryParam["ProjectId"].ToString(), DbType.String)); strSql.Append("AND t.ProjectId = @ProjectId "); } else { strSql.Append("AND IFNULL(t.ProjectId,'')=''"); } if (!queryParam["keyword"].IsEmpty()) { dp.Add(new SugarParameter("keyword", "%" + queryParam["keyword"].ToString() + "%", DbType.String)); strSql.Append(" AND( t.F_FullName like @keyword or t.F_EnCode like @keyword ) "); } //return this.BaseRepository().FindList(strSql.ToString(),dp, pagination); return SqlSugarHelper.Db.SqlQueryable(strSql.ToString()).AddParameters(dp).ToPageList(pagination.page, pagination.rows); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取角色数据列表 /// /// 主键串 /// public IEnumerable GetListByRoleIds(string roleIds) { try { return _roleRepository.GetList(t => roleIds.Contains(t.F_RoleId)); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取实体数据 /// /// 主键 /// public RoleEntity GetEntity(string keyValue) { try { return _roleRepository.GetById(keyValue); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } #endregion #region 提交数据 /// /// 虚拟删除角色 /// /// 主键 public void VirtualDelete(string keyValue) { SqlSugarHelper.Db.BeginTran(); try { RoleEntity entity = new RoleEntity() { F_RoleId = keyValue, F_DeleteMark = 1 }; _roleRepository.Update(entity); SqlSugarHelper.Db.Ado.ExecuteCommand(" Delete From LR_BASE_USERRELATION where F_OBJECTID = @keyValue ", new { keyValue = keyValue }); SqlSugarHelper.Db.CommitTran(); } catch (Exception ex) { SqlSugarHelper.Db.RollbackTran(); if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 保存角色(新增、修改) /// /// 主键值 /// 角色实体 /// public void SaveEntity(string keyValue, ref RoleEntity roleEntity) { try { if (!string.IsNullOrEmpty(keyValue)) { roleEntity.Modify(keyValue); _roleRepository.Update(roleEntity); } else { roleEntity.Create(); _roleRepository.Insert(roleEntity); } } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } #endregion } }