liaoxujun@qq.com
2023-08-04 b4f4b640ac62bf583e25512656ac92bb09872b8a
DocumentServiceAPI.Application/UserAndLogin/Services/UserService.cs
@@ -1,8 +1,12 @@
using DocumentServiceAPI.Application.UserAndLogin.Services.Interfaces;
using DocumentServiceAPI.Application.Repository;
using DocumentServiceAPI.Application.UserAndLogin.Services.Interfaces;
using DocumentServiceAPI.Application.UserAndLogin.ViewMode;
using DocumentServiceAPI.Model;
using DocumentServiceAPI.Model.cyDocumentModel;
using DocumentServiceAPI.Model.UserInfoModel;
using DocumentServiceAPI.Utility;
using Furion.Logging.Extensions;
using MapsterMapper;
using SqlSugar.Extensions;
using System;
using System.Collections.Generic;
@@ -13,15 +17,20 @@
namespace DocumentServiceAPI.Application.UserAndLogin.Services
{
    /// <summary>
    /// 登录验证服务
    /// </summary>
    public class UserService : ILoginVerifyService, IScoped
    public class UserService : IUserService, IScoped
    {
        private ISqlSugarClient _db { get; set; }
        public UserService(ISqlSugarClient db)
        private EmployeeRepository  _employeeRepository{ get; set; }
        private IMapper _mapper {  get; set; }
        public UserService(ISqlSugarClient db, EmployeeRepository employeeRepository, IMapper mapper)
        {
            _db = db;
            _employeeRepository= employeeRepository;
            _mapper = mapper;
        }
        /// <summary>
        /// 员工详情
@@ -55,16 +64,17 @@
            jwtInfo.LogInSource = (LogInFrom)(App.User?.FindFirstValue("loginfrom")?.ObjToInt() ?? 0);
            jwtInfo.EID = App.User?.FindFirstValue("eid")?.ObjToInt();
            jwtInfo.UID = App.User?.FindFirstValue("uid")?.ObjToInt();
            jwtInfo.TID = App.User?.FindFirstValue("tid")?.ObjToInt();
            jwtInfo.TEID = App.User?.FindFirstValue("teid")?.ObjToInt();
            var guid = App.User?.FindFirstValue("jid");
            jwtInfo.JID = string.IsNullOrEmpty(guid) ? new Guid(guid) : null;
            jwtInfo.JID = string.IsNullOrEmpty(guid) ? null: new Guid(guid);
            return jwtInfo;
        }
        /// <summary>
        /// 获取单位列表
        /// </summary>
        /// <returns></returns>
        public async Task<List<UnitVM>> GetUserUnitInfo(int  tid )
        public async Task<List<UnitVM>> GetUserUnitList(int  tid )
        {
            var list = await _db.Queryable<DocumentServiceAPI.Model.cyDocumentModel.Document_TenderUnit>()
@@ -75,7 +85,7 @@
                       UnitName = tu.UnitName,
                       Remark = tu.Remark,
                       UnitLogo = tu.UnitLogo,
                   })
                   }).WithCache(10)
                   .ToListAsync();
            return list;
        }
@@ -109,7 +119,7 @@
                 TenderId = ti.Id
                 
             }
              ).ToListAsync();
              ).WithCache( 10).ToListAsync();
            var ten = await _db.Queryable<TenantInfo>().Where(x => x.IsEn == true && x.IsDel != true && x.ItCode == ItCode)
                   .Select(x => new TenderVM
@@ -122,7 +132,7 @@
                       IsTender = true
                   }
              ).ToListAsync()  ;
              ).WithCache(10).ToListAsync()  ;
            ten.AddRange(tentlist);
            return ten;
@@ -166,7 +176,209 @@
        }
        /// <summary>
        /// 获取用户详情,包括员工信息,租户信息,单位信息
        /// </summary>
        /// <param name="TenantID"> 租户ID</param>
        /// <param name="EmployeeID">员工ID </param>
        /// <param name="UnitID">单位ID</param>
        /// <returns></returns>
        public async Task<RetUserInfo> GetUserInfo(int? TenantID,int? EmployeeID,int?  UnitID)
        {
            TenderInfoVM Tenant = null;
            EmployeeInfoVM Employee = null;
            if (TenantID != null)
             Tenant = await _db.Queryable<TenantInfo>().Where(x => x.Id == TenantID)
                 .Select(x => new TenderInfoVM
                 {
                     Description = x.Description,
                     Id = x.Id,
                     ItCode = x.ItCode,
                     Name = x.Name,
                     ReMark = x.ReMark,
                 }).WithCache(20).FirstAsync();
            if (EmployeeID != null)
                Employee = await _db.Queryable<Document_EmployeeInfo>().Where(x => x.EmployeeId == EmployeeID)
                .Select(x => new EmployeeInfoVM
                { AdviseFlag = x.AdviseFlag,
                 CardPositive = x.CardPositive,
                  CardPositiveSize = x.CardPositiveSize,
                   CardPositiveVersionNo = x.CardPositiveVersionNo,
                    EmployeeId = x.EmployeeId,
                     EmployeeName = x.EmployeeName,
                     Job = x.Job,
                      LastUpdateName = x.LastUpdateName,
                       UserName = x.UserName,
                }).WithCache(20).FirstAsync();
            UnitInfoVM Unit = null;
            if (UnitID != null)
                 Unit = await _db.Queryable<Model.cyDocumentModel.Document_TenderUnit>().Where(x => x.UnitId == UnitID)
              .Select(x => new UnitInfoVM
              {
                   FirmQualificationLevel = x.FirmQualificationLevel,
                    Fax = x.Fax,
                       CorporaterTechnicalPost= x.CorporaterTechnicalPost,
                        LastUpdateName= x.LastUpdateName,
                         Address = x.Address,
                          AdviseFlag = x.AdviseFlag, BankNum = x.BankNum,
                           BusinessContent = x.BusinessContent,
                            BusinessLicense = x.BusinessLicense,
                             CardPositive= x.CardPositive,
                              CardPositiveSize= x.CardPositiveSize,
                               CardPositiveVersionNo= x.CardPositiveVersionNo,
                                ContactPerson= x.ContactPerson,
                                 ContactPhone= x.ContactPhone,
                                  CorporatePhone= x.CorporatePhone,
                                   Corporater= x.Corporater,
                                    CorporaterPost= x.CorporaterPost,
                                     CreatTime= x.CreatTime,
                                      Mechanicer= x.Mechanicer,
                                       MiddleStaff= x.MiddleStaff,
                                        OpenBank= x.OpenBank,
                                         OrgStructure= x.OrgStructure,
                                          PrimaryStaff= x.PrimaryStaff,
                                           ProjectManager= x.ProjectManager,
                                            RegMoney= x.RegMoney,
                                             Remark= x.Remark,
                                              UnitId= x.UnitId,
                                               TechnicalLeader= x.TechnicalLeader,
                                                 SeniorStaff= x.SeniorStaff,
                                                  StaffCount= x.StaffCount,
                                                   TechnicalPhone= x.TechnicalPhone,
                                                    TechnicalPost= x.TechnicalPost,
                                                     UnitLogo= x.UnitLogo,
                                                      UnitLogoSize= x.UnitLogoSize,
                                                       UnitLogoVersionNo= x.UnitLogoVersionNo,
                                                        UnitName= x.UnitName,
                                                         UnitType= x.UnitType,
                                                          WebUrl= x.WebUrl,
                                                           ZipCode= x.ZipCode,
              }).WithCache(20).FirstAsync();
            return new RetUserInfo
            {
                EmployeeInfo = Employee,
                TenderInfo = Tenant,
                UnitInfo = Unit
            };
        }
        /// <summary>
        /// 获取员工列表
        /// </summary>
        /// <param name="_businessService"></param>
        /// <param name="page"></param>
        /// <returns></returns>
        public async Task<PageResult<EmployeeInfoVM>> postEmployeeList( EmployeePageSearch page)
        {
            var a = GetJwtInfo();
            if(a.EID!=null)
                throw Oops.Oh($"没有权限");
            SqlSugar.PageModel pg = new SqlSugar.PageModel();
            pg.PageSize = page.PageSize;
            pg.PageIndex = page.PageIndex;
            RefAsync<int> total = 0;
            PageResult<EmployeeInfoVM> result = new PageResult<EmployeeInfoVM>();
            result.Items = await _db.Queryable<EmployeeAtTenant, Document_EmployeeInfo>((et, ei) =>
             new JoinQueryInfos(JoinType.Left, et.EmployeeID==ei.EmployeeId
                 )).Where((ei,et)=>ei.TenantID==a.TEID)
                 .Select((ei,et)=>new EmployeeInfoVM
                 {
                      EmployeeId = et.EmployeeId,
                       AdviseFlag=et.AdviseFlag,
                        CardPositive=et.CardPositive,
                         CardPositiveSize=et.CardPositiveSize,
                          CardPositiveVersionNo=et.CardPositiveVersionNo,
                           EmployeeName=et.EmployeeName,
                            IsWork=et.IsWork,
                             Job=et.Job,
                              LeaveTime=et.LeaveTime,
                               Phone=et.Phone,
                                  UserId=et.UserId,
                                   UserName=et.UserName,
                 }).MergeTable().OrderBy(x=>x.EmployeeId).ToPageListAsync(page.PageIndex,page.PageSize, total);
            result.TotalCount = pg.TotalCount;
            return result;
        }
        public async Task<bool > UpEmployee(EmployeeInfoVM vm)
        {
            var jwtinfo = GetJwtInfo();
            if (jwtinfo.EID != null)
                throw Oops.Oh($"没有权限");
            var info = await GetUserInfo(jwtinfo.TEID, null, null);
            Document_EmployeeInfo a =  _mapper.Map<Document_EmployeeInfo>(vm);
            a.LastUpdateName = info.EmployeeInfo.UserName;
            a.LastUpdateTime = DateTime.Now;
             return await   _employeeRepository.UpdateAsync(a);
        }
        public async Task<bool> InEmployee(EmployeeInfoVM vm)
        {
            var jwtinfo = GetJwtInfo();
            if (jwtinfo.EID != null)
                throw Oops.Oh($"没有权限");
            Document_EmployeeInfo a = _mapper.Map<Document_EmployeeInfo>(vm);
            var info = await GetUserInfo(jwtinfo.TEID, null, null);
            EmployeeAtTenant elt = new EmployeeAtTenant
            {
                CreatBy = info.TenderInfo.ItCode,
                CreatTime = DateTime.Now,
                TenantID = info.TenderInfo.Id,
            };
            try
            {
             await   _employeeRepository.AsTenant().BeginTranAsync();
              var jwtId=   await _employeeRepository.InsertReturnIdentityAsync(a);
                elt.EmployeeID = jwtId;
                await _db.Insertable(elt).ExecuteCommandAsync();
              await  _employeeRepository.AsTenant().CommitTranAsync();
            }
            catch (Exception e)
            {
                await _employeeRepository.AsTenant().RollbackTranAsync();
                //写日志
               $"   插入新员工失败, 错误消息:{e.Message} \r\n 堆栈错误:{e.StackTrace}" .LogInformation();
                throw Oops.Oh("新增失败");
            }
             return await  _employeeRepository.InsertAsync(a);
        }
    }