using Admin.NET.Core; using Furion.DatabaseAccessor; using Furion.DependencyInjection; using Mapster; using Microsoft.EntityFrameworkCore; namespace Admin.NET.Application { /// /// 员工服务 /// public class SysEmpService : ISysEmpService, ITransient { private readonly IRepository _sysEmpRep; // 员工表仓储 private readonly ISysEmpExtOrgPosService _sysEmpExtOrgPosService; private readonly ISysEmpPosService _sysEmpPosService; /// /// 构造函数 /// /// /// /// public SysEmpService(IRepository sysEmpRep, ISysEmpExtOrgPosService sysEmpExtOrgPosService, ISysEmpPosService sysEmpPosService) { _sysEmpRep = sysEmpRep; _sysEmpExtOrgPosService = sysEmpExtOrgPosService; _sysEmpPosService = sysEmpPosService; } /// /// 获取用户员工相关信息(包括登录) /// /// /// public async Task GetEmpInfo(long empId) { var empInfoOutput = new EmpOutput(); var sysEmp = await _sysEmpRep.FirstOrDefaultAsync(u => u.Id == empId, false); if (sysEmp == null) return empInfoOutput; empInfoOutput = sysEmp.Adapt(); empInfoOutput.ExtOrgPos = await _sysEmpExtOrgPosService.GetEmpExtOrgPosList(empId); empInfoOutput.Positions = await _sysEmpPosService.GetEmpPosList(empId); return empInfoOutput; } /// /// 增加或编辑员工相关信息 /// /// [UnitOfWork] public async Task AddOrUpdate(EmpOutput2 sysEmpParam) { // 先删除员工信息 var emps = await _sysEmpRep.Where(u => u.Id == long.Parse(sysEmpParam.Id)).ToListAsync(); await _sysEmpRep.DeleteAsync(emps); // 再新增新员工信息 var emp = sysEmpParam.Adapt(); await _sysEmpRep.InsertNowAsync(emp); // 更新附属机构职位信息 await _sysEmpExtOrgPosService.AddOrUpdate(emp.Id, sysEmpParam.ExtIds); // 更新职位信息 await _sysEmpPosService.AddOrUpdate(emp.Id, sysEmpParam.PosIdList); } /// /// 修改员工相关机构信息 /// /// /// /// public async Task UpdateEmpOrgInfo(long orgId, string orgName) { var emps = await _sysEmpRep.Where(u => u.OrgId == orgId).ToListAsync(); emps.ForEach(u => { u.OrgName = orgName; }); } /// /// 根据机构Id判断该机构下是否有员工 /// /// /// public async Task HasOrgEmp(long orgId) { return await _sysEmpRep.DetachedEntities.AnyAsync(u => u.OrgId == orgId); } /// /// 根据员工Id删除对应的员工表信息 /// /// /// //[UnitOfWork] public async Task DeleteEmpInfoByUserId(long empId) { // 删除员工信息 await _sysEmpRep.DeleteAsync(empId); // 级联删除对应的员工-附属信息 await _sysEmpExtOrgPosService.DeleteEmpExtInfoByUserId(empId); // 级联删除对用的员工-职位信息 await _sysEmpPosService.DeleteEmpPosInfoByUserId(empId); } /// /// 获取员工机构Id /// /// /// public async Task GetEmpOrgId(long empId) { return (await _sysEmpRep.FirstOrDefaultAsync(u => u.Id == empId, false)).OrgId; } /// /// 获取子机构用户 /// /// /// public async Task> HasOrgEmp(List orgIds) { return await _sysEmpRep.DetachedEntities.Where(u => orgIds.Contains(u.OrgId)).ToListAsync(); } } }