using Mapster; using SqlSugar; using System.Text; using WMS.BZModels.Dto.UserCenterManager.AclUserRelationDtos; using WMS.BZModels.Dto.UserCenterManager.UserInfoDtos; using WMS.BZModels.Models.UserCenterManager; using WMS.BZSqlSugar; namespace WMS.BZServices.UserCenterManager { public class ACLUserRelationService { private readonly Repository _aclUserRelationRepository; private readonly Repository _acluserInfoRepository; public ACLUserRelationService(Repository aclUserRelationRepository, Repository acluserInfoRepository) { _aclUserRelationRepository = aclUserRelationRepository; _acluserInfoRepository = acluserInfoRepository; } /// /// 获取对象主键列表信息 /// /// 用户主键 /// 分类:1-角色2-用户组 /// public IEnumerable GetObjectIdList(long userId, int category = 0) { var predicate = Expressionable.Create(); predicate = predicate.AndIF(category>0, m => m.ObjectTypeNum == category); predicate = predicate.AndIF(userId > 0, m => m.UserId == userId); return _aclUserRelationRepository.Queryable().Where(predicate.ToExpression()).ToList().Adapt>(); } /// /// 获取对象主键列表信息 /// /// 用户主键 /// 分类:1-角色2-岗位 /// public string GetObjectIds(long userId, int category) { StringBuilder sb = new StringBuilder(); var list = GetObjectIdList(userId); foreach (var item in list) { if (sb.Length > 0) { sb.Append(","); } sb.Append(item.ObjectId); } return sb.ToString(); } public List GetUserList(string objectno, ACLObjType ACLObjType) { if (!long.TryParse(objectno, out long id)) { throw new ArgumentException("参数错误。"); } var predicate = Expressionable.Create(); var list = _acluserInfoRepository.Queryable().Where(it => SqlFunc.Subqueryable().Where(s => s.ObjectTypeNum == (int)ACLObjType && s.ObjectId == id && s.UserId == it.Id).Any()).ToList(); return list.Adapt>(); } public void SaveEntityList(string objectno, ACLObjType eACLObjType, List UserNos) { if (!long.TryParse(objectno, out long id)) { throw new ArgumentException("参数错误。"); } _aclUserRelationRepository.Deleteable().Where(it => it.ObjectTypeNum == (int)eACLObjType && it.ObjectId == id).ExecuteCommand(); if (UserNos != null && UserNos.Count > 0) { List lists = new List(); foreach (string s in UserNos) { lists.Add(new AclUserRelation() { ObjectId = id, ObjectTypeNum = (int)eACLObjType, UserId = long.Parse(s) }); } _aclUserRelationRepository.Insert(lists); } } } }