using Hncore.Infrastructure.EF; using Hncore.Infrastructure.Extension; using Hncore.Infrastructure.WebApi; using Hncore.Pass.Manage.Domain; using Hncore.Pass.Manage.Repository; using Hncore.Pass.Manage.Request; using Hncore.Pass.Manage.Response; using Hncore.Pass.Manage.Response.ManagerToPermission; using Hncore.Pass.Manage.Service; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace Hncore.Pass.Manage.Controllers { public class ManagerController : ManageControllerBase { EfDbContext m_DbContext { get; set; } private ManagerService _managerService; public ManagerController(EfDbContext _DbContext, ManagerService managerService, IHttpContextAccessor hca) : base(hca) { m_DbContext = _DbContext; _managerService = managerService; } /// /// 创建管理员添加权限 /// /// /// [HttpPost] public async Task Post([FromBody] EditManagerRequest param) { param.TenantId = this.Request.GetManageUserInfo().TenantId; var manager = await Manager.Create(param, m_DbContext.Set().GetQueryable()); await m_DbContext.Set().AddAsync(manager); await m_DbContext.SaveChangesAsync(); List list = new List(); foreach (var item in param.Permissions) { if (item.AllowView == 1) { ManagerToPermission mp = new ManagerToPermission(); mp.TenantId = param.TenantId; mp.ManagerId = manager.Id; mp.PermissionCode = item.PermissionCode; mp.AllowView = item.AllowView; mp.AllowAdd = item.AllowAdd; mp.AllowEdit = item.AllowEdit; mp.AllowDel = item.AllowDel; mp.CreateTime = DateTime.Now; mp.UpdateTime = DateTime.Now; mp.CreatorId = param.OperaterId; list.Add(mp); } } await m_DbContext.Set().AddRangeAsync(list); await m_DbContext.SaveChangesAsync(); return Success(new EditManagerResponse().FromEntity(manager)); } [HttpPost] public async Task Put([FromBody] EditManagerRequest param) { param.TenantId = this.Request.GetManageUserInfo().TenantId; var manager = await m_DbContext.Set().FindByIdAsync(param.Id); await manager.Edit(param, m_DbContext.Set().GetQueryable()); List list = new List(); List listdel = new List(); foreach (var item in param.Permissions) { if (item.AllowView == 1) { ManagerToPermission mp = new ManagerToPermission(); mp.TenantId = param.TenantId; mp.ManagerId = manager.Id; mp.PermissionCode = item.PermissionCode; mp.AllowView = item.AllowView; mp.AllowAdd = item.AllowAdd; mp.AllowEdit = item.AllowEdit; mp.AllowDel = item.AllowDel; mp.CreateTime = DateTime.Now; mp.UpdateTime = DateTime.Now; mp.CreatorId = param.OperaterId; list.Add(mp); } } var search = m_DbContext.Set().GetQueryable().Where(p => p.DeleteTag == 0 && p.ManagerId == param.Id); foreach (var item in search) { listdel.Add(item); } m_DbContext.Set().RemoveRange(listdel); await m_DbContext.Set().AddRangeAsync(list); await m_DbContext.SaveChangesAsync(); return Success(new EditManagerResponse().FromEntity(manager)); } /// /// 删除管理员 /// /// /// [HttpPost] public async Task Delete([FromBody] DelManagerRequest param) { var manager = await m_DbContext.Set().FindByIdAsync(param.Id); manager.Delete(param.OperaterId); await m_DbContext.SaveChangesAsync(); return Success(manager); } /// /// 获取单个管理员 /// /// /// [HttpGet] public async Task GetOne([FromQuery] QueryByIdRequest param) { return Success(await QueryItemManagerResponse.Query( m_DbContext.Set().GetQueryable() , m_DbContext.Set().GetQueryable() , m_DbContext.Set().GetQueryable() , param) ); } /// /// 获取单个管理员,门禁调用 /// /// /// [HttpGet,AllowAnonymous] public async Task GetOneManage([FromQuery] QueryByIdRequest param) { return Success(await m_DbContext.Set().GetOneAsync(p=>p.Id==param.Id)); } /// /// 获取列表数据 /// /// 请求参数对象 /// 响应结果对象 [HttpGet] public async Task>> Get([FromQuery]QueryListManagerRequest request) { request.TenantId = this.Request.GetManageUserInfo().TenantId; request.OperaterId = this.Request.GetManageUserInfo().OperaterId; (int total, List list) res = await _managerService.Get(request); return SuccessPaged(res.total, res.list, "成功"); } /// /// 超级管理员移交管理员权限 /// /// /// [HttpPost,AllowAnonymous] public async Task TransferPrivilege([FromBody] RequestBase param) { #region 需要后台判断短信验证码防非法操作 if (!param.Data.Key.Has() || !param.Data.Code.Has()) return Error("短信验证码错误"); var tmp = RedisHelper.Get(param.Data.Key); if (tmp==null) return Error("短信验证码过期"); if (!string.Equals(tmp.Code, param.Data.Code)) return Error("短信验证码错误"); #endregion //管理员表操作 var manager = await m_DbContext.Set().FindByIdAsync(param.OperaterId); manager.IsRoot = false; manager.DeleteTag = 1; m_DbContext.Set().Update(manager); var managernew = await m_DbContext.Set().FindByIdAsync(param.Data.Id); managernew.IsRoot = true; m_DbContext.Set().Update(managernew); ///管理员权限表操作 var search = m_DbContext.Set().GetQueryable().Where(p => p.DeleteTag == 0 && p.ManagerId == param.OperaterId); foreach (var item in search) { ManagerToPermission mp = new ManagerToPermission(); mp.TenantId = param.TenantId; mp.ManagerId = param.Data.Id; mp.PermissionCode = item.PermissionCode; mp.AllowView = item.AllowView; mp.AllowAdd = item.AllowAdd; mp.AllowEdit = item.AllowEdit; mp.AllowDel = item.AllowDel; mp.CreateTime = DateTime.Now; mp.UpdateTime = DateTime.Now; mp.CreatorId = param.OperaterId; m_DbContext.Set().Add(mp); } var del = m_DbContext.Set().GetQueryable().Where(p => p.DeleteTag == 0 && p.ManagerId == param.Data.Id).ToList(); m_DbContext.Set().RemoveRange(del); //被转移人项目 var recipientProject = m_DbContext.Set().GetQueryable().Where(p => p.DeleteTag == 0 && p.ManagerId == param.Data.Id); //我的项目 var myProject = m_DbContext.Set().GetQueryable().Where(p => p.DeleteTag == 0 && p.ManagerId == param.OperaterId); foreach (var item in recipientProject) { item.DeleteTag = 1; m_DbContext.Set().Update(item); } foreach (var item in myProject) { item.DeleteTag = 1; m_DbContext.Set().Update(item); } //物业总项目 var ownerProject = m_DbContext.Set().GetQueryable().Where(p => p.DeleteTag == 0 && p.owner_id == param.TenantId); foreach (var item in ownerProject) { AuthorityManagerDataDomain mp = new AuthorityManagerDataDomain(); mp.TenantId = item.owner_id; mp.ProjectCode = item.projectcode; mp.DeleteTag = 0; mp.ManagerId = param.Data.Id; mp.UpdateTime = DateTime.Now; mp.UpdatorId = param.OperaterId; m_DbContext.Set().Add(mp); } var mymanager = await m_DbContext.Set().FindByIdAsync(param.OperaterId); mymanager.IsRoot = false; manager.DeleteTag = 1; m_DbContext.Set().Update(mymanager); await m_DbContext.SaveChangesAsync(); return Success(param.Data.Id); } /// /// 根据管理员获取管理员小区权限 /// /// /// [HttpGet,AllowAnonymous] public async Task GetByManageId([FromQuery] int ManagerId) { var result = await QueryPermissionByManagerIdResponse.GetByManageId(m_DbContext.Set().GetQueryable(), m_DbContext.Set().GetQueryable(), m_DbContext.Set().GetQueryable(), ManagerId); return Success(result); } /// /// 根据当前登录人,查询本物业下边超级管理员手机号 /// /// /// [HttpGet] public async Task GetAdminPhoneByManageId([FromQuery] QueryByIdRequest param) { var result = m_DbContext.Set().GetQueryable().Where(p => p.IsRoot == true).ToList(); if (result != null && result.Count() > 0) return Success(result[0].Phone); return Success(""); } } }