Files
juipnet/Services/Hncore.Pass.Manage/Controllers/ManagerController.cs
“wanyongkang” 9400508941 管理员领取用户
2023-08-11 15:11:13 +08:00

284 lines
12 KiB
C#

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;
}
/// <summary>
/// 创建管理员添加权限
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
[HttpPost]
public async Task<ApiResult> Post([FromBody] EditManagerRequest param)
{
param.TenantId = this.Request.GetManageUserInfo().TenantId;
var manager = await Manager.Create(param, m_DbContext.Set<Manager>().GetQueryable());
await m_DbContext.Set<Manager>().AddAsync(manager);
await m_DbContext.SaveChangesAsync();
List<ManagerToPermission> list = new List<ManagerToPermission>();
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<ManagerToPermission>().AddRangeAsync(list);
await m_DbContext.SaveChangesAsync();
return Success(new EditManagerResponse().FromEntity(manager));
}
[HttpPost]
public async Task<ApiResult> Put([FromBody] EditManagerRequest param)
{
param.TenantId = this.Request.GetManageUserInfo().TenantId;
var manager = await m_DbContext.Set<Manager>().FindByIdAsync(param.Id);
await manager.Edit(param, m_DbContext.Set<Manager>().GetQueryable());
List<ManagerToPermission> list = new List<ManagerToPermission>();
List<ManagerToPermission> listdel = new List<ManagerToPermission>();
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<ManagerToPermission>().GetQueryable().Where(p => p.DeleteTag == 0 && p.ManagerId == param.Id);
foreach (var item in search)
{
listdel.Add(item);
}
m_DbContext.Set<ManagerToPermission>().RemoveRange(listdel);
await m_DbContext.Set<ManagerToPermission>().AddRangeAsync(list);
await m_DbContext.SaveChangesAsync();
return Success(new EditManagerResponse().FromEntity(manager));
}
/// <summary>
/// 删除管理员
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
[HttpPost]
public async Task<ApiResult> Delete([FromBody] DelManagerRequest param)
{
var manager = await m_DbContext.Set<Manager>().FindByIdAsync(param.Id);
manager.Delete(param.OperaterId);
await m_DbContext.SaveChangesAsync();
return Success(manager);
}
/// <summary>
/// 获取单个管理员
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
[HttpGet]
public async Task<ApiResult> GetOne([FromQuery] QueryByIdRequest param)
{
return Success(await QueryItemManagerResponse.Query(
m_DbContext.Set<Manager>().GetQueryable()
, m_DbContext.Set<ManagerToPermission>().GetQueryable()
, m_DbContext.Set<AuthorityManagerDataDomain>().GetQueryable()
, param)
);
}
/// <summary>
/// 获取单个管理员,门禁调用
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
[HttpGet,AllowAnonymous]
public async Task<ApiResult> GetOneManage([FromQuery] QueryByIdRequest param)
{
return Success(await m_DbContext.Set<Manager>().GetOneAsync(p=>p.Id==param.Id));
}
/// <summary>
/// 获取列表数据
/// </summary>
/// <param name="request">请求参数对象</param>
/// <returns>响应结果对象</returns>
[HttpGet]
public async Task<ApiResult<List<QueryListManagerResponse>>> Get([FromQuery]QueryListManagerRequest request)
{
request.TenantId = this.Request.GetManageUserInfo().TenantId;
request.OperaterId = this.Request.GetManageUserInfo().OperaterId;
(int total, List<QueryListManagerResponse> list) res = await _managerService.Get(request);
return SuccessPaged(res.total, res.list, "成功");
}
/// <summary>
/// 超级管理员移交管理员权限
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
[HttpPost,AllowAnonymous]
public async Task<ApiResult> TransferPrivilege([FromBody] RequestBase<TransferPrivilegeDTO> param)
{
#region
if (!param.Data.Key.Has() || !param.Data.Code.Has()) return Error("短信验证码错误");
var tmp = RedisHelper.Get<SmsValidDTO>(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<Manager>().FindByIdAsync(param.OperaterId);
manager.IsRoot = false;
manager.DeleteTag = 1;
m_DbContext.Set<Manager>().Update(manager);
var managernew = await m_DbContext.Set<Manager>().FindByIdAsync(param.Data.Id);
managernew.IsRoot = true;
m_DbContext.Set<Manager>().Update(managernew);
///管理员权限表操作
var search = m_DbContext.Set<ManagerToPermission>().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<ManagerToPermission>().Add(mp);
}
var del = m_DbContext.Set<ManagerToPermission>().GetQueryable().Where(p => p.DeleteTag == 0 && p.ManagerId == param.Data.Id).ToList();
m_DbContext.Set<ManagerToPermission>().RemoveRange(del);
//被转移人项目
var recipientProject = m_DbContext.Set<AuthorityManagerDataDomain>().GetQueryable().Where(p => p.DeleteTag == 0 && p.ManagerId == param.Data.Id);
//我的项目
var myProject = m_DbContext.Set<AuthorityManagerDataDomain>().GetQueryable().Where(p => p.DeleteTag == 0 && p.ManagerId == param.OperaterId);
foreach (var item in recipientProject)
{
item.DeleteTag = 1;
m_DbContext.Set<AuthorityManagerDataDomain>().Update(item);
}
foreach (var item in myProject)
{
item.DeleteTag = 1;
m_DbContext.Set<AuthorityManagerDataDomain>().Update(item);
}
//物业总项目
var ownerProject = m_DbContext.Set<etor_property_estate>().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<AuthorityManagerDataDomain>().Add(mp);
}
var mymanager = await m_DbContext.Set<Manager>().FindByIdAsync(param.OperaterId);
mymanager.IsRoot = false;
manager.DeleteTag = 1;
m_DbContext.Set<Manager>().Update(mymanager);
await m_DbContext.SaveChangesAsync();
return Success(param.Data.Id);
}
/// <summary>
/// 根据管理员获取管理员小区权限
/// </summary>
/// <param name="managerId"></param>
/// <returns></returns>
[HttpGet,AllowAnonymous]
public async Task<ApiResult> GetByManageId([FromQuery] int ManagerId)
{
var result = await QueryPermissionByManagerIdResponse.GetByManageId(m_DbContext.Set<AuthorityManagerDataDomain>().GetQueryable(), m_DbContext.Set<etor_property_estate>().GetQueryable(), m_DbContext.Set<Manager>().GetQueryable(), ManagerId);
return Success(result);
}
/// <summary>
/// 根据当前登录人,查询本物业下边超级管理员手机号
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
[HttpGet]
public async Task<ApiResult> GetAdminPhoneByManageId([FromQuery] QueryByIdRequest param)
{
var result = m_DbContext.Set<Manager>().GetQueryable().Where(p => p.IsRoot == true).ToList();
if (result != null && result.Count() > 0) return Success<string>(result[0].Phone);
return Success<string>("");
}
}
}