Browse Source

Merge branch 'develop' of http://132.232.92.186:3000/XinXiBu/OA2023 into develop

yuanrf 2 years ago
parent
commit
830c49d56a
39 changed files with 1562 additions and 257 deletions
  1. 1 0
      OASystem/EntitySync/Program.cs
  2. 25 18
      OASystem/OASystem.Api/Controllers/AuthController.cs
  3. 61 9
      OASystem/OASystem.Api/Controllers/GroupsController.cs
  4. 192 0
      OASystem/OASystem.Api/Controllers/ResourceController.cs
  5. 112 4
      OASystem/OASystem.Api/Controllers/SystemController.cs
  6. 4 0
      OASystem/OASystem.Api/GlobalUsings.cs
  7. 55 0
      OASystem/OASystem.Api/OAMethodLib/AutofacIocManager.cs
  8. 27 0
      OASystem/OASystem.Api/OAMethodLib/AutofacRegister.cs
  9. 0 93
      OASystem/OASystem.Api/OAMethodLib/BaseConfig.cs
  10. 76 0
      OASystem/OASystem.Api/OAMethodLib/GroupStepForDelegation.cs
  11. 24 0
      OASystem/OASystem.Api/OAMethodLib/JsonConvertOverride.cs
  12. 6 3
      OASystem/OASystem.Api/Program.cs
  13. 7 2
      OASystem/OASystem.Api/appsettings.json
  14. 10 0
      OASystem/OASystem.Domain/AutoMappers/_baseMappingProfile.cs
  15. 57 0
      OASystem/OASystem.Domain/Common/DepartmentCode.cs
  16. 1 1
      OASystem/OASystem.Domain/Dtos/DtoBase.cs
  17. 21 5
      OASystem/OASystem.Domain/Dtos/Groups/GroupListDto.cs
  18. 36 0
      OASystem/OASystem.Domain/Dtos/Groups/GroupsConfig.cs
  19. 311 0
      OASystem/OASystem.Domain/Dtos/Resource/CarDataDto.cs
  20. 61 0
      OASystem/OASystem.Domain/Dtos/System/MsgDto.cs
  21. 19 0
      OASystem/OASystem.Domain/Dtos/System/SetDataDto.cs
  22. 1 1
      OASystem/OASystem.Domain/Dtos/UserDto/LoginDto.cs
  23. 48 37
      OASystem/OASystem.Domain/Entities/Customer/Crm_DeleClient.cs
  24. 2 2
      OASystem/OASystem.Domain/Entities/Groups/Grp_DelegationInfo.cs
  25. 6 0
      OASystem/OASystem.Domain/Entities/Groups/Grp_ScheduleInfo.cs
  26. 13 4
      OASystem/OASystem.Domain/Enums/GrpScheduleEnum.cs
  27. 1 1
      OASystem/OASystem.Domain/Result.cs
  28. 15 4
      OASystem/OASystem.Domain/ViewModels/Group/DelegationInfoView.cs
  29. 5 0
      OASystem/OASystem.Domain/ViewModels/LoginView.cs
  30. 13 0
      OASystem/OASystem.Domain/ViewModels/Resource/CarDataView.cs
  31. 54 0
      OASystem/OASystem.Domain/ViewModels/System/MessageView.cs
  32. 5 5
      OASystem/OASystem.Domain/ViewModels/System/UserInfoView.cs
  33. 11 0
      OASystem/OASystem.Infrastructure/Repositories/BaseRepository.cs
  34. 104 35
      OASystem/OASystem.Infrastructure/Repositories/Groups/DelegationInfoRepository.cs
  35. 19 9
      OASystem/OASystem.Infrastructure/Repositories/Groups/GrpScheduleRepository.cs
  36. 17 2
      OASystem/OASystem.Infrastructure/Repositories/Login/LoginRepository.cs
  37. 12 0
      OASystem/OASystem.Infrastructure/Repositories/Resource/CarDataRepository.cs
  38. 129 21
      OASystem/OASystem.Infrastructure/Repositories/System/MessageRepository.cs
  39. 1 1
      OASystem/OASystem.Infrastructure/Repositories/System/UsersRepository.cs

+ 1 - 0
OASystem/EntitySync/Program.cs

@@ -80,5 +80,6 @@ db.CodeFirst.SetStringDefaultLength(50).BackupTable().InitTables(new Type[]
 
 
     //typeof(Sys_Message),
     //typeof(Sys_Message),
     //typeof(Sys_MessageReadAuth)
     //typeof(Sys_MessageReadAuth)
+    typeof(Crm_DeleClient)
 });
 });
 Console.WriteLine("数据库结构同步完成!");
 Console.WriteLine("数据库结构同步完成!");

+ 25 - 18
OASystem/OASystem.Api/Controllers/AuthController.cs

@@ -6,6 +6,7 @@ using OASystem.Domain.Dtos.UserDto;
 using OASystem.API.OAMethodLib;
 using OASystem.API.OAMethodLib;
 using Serilog.Parsing;
 using Serilog.Parsing;
 using OASystem.Domain.Dtos.System;
 using OASystem.Domain.Dtos.System;
+using System.Drawing.Drawing2D;
 
 
 namespace OASystem.API.Controllers
 namespace OASystem.API.Controllers
 {
 {
@@ -19,6 +20,7 @@ namespace OASystem.API.Controllers
         private readonly IConfiguration _config;
         private readonly IConfiguration _config;
         private readonly LoginRepository _loginRep;
         private readonly LoginRepository _loginRep;
         private readonly MessageRepository _message; 
         private readonly MessageRepository _message; 
+
         public AuthController(IConfiguration config, LoginRepository loginRep, IMapper mapper,MessageRepository message)
         public AuthController(IConfiguration config, LoginRepository loginRep, IMapper mapper,MessageRepository message)
         {
         {
             _config = config;
             _config = config;
@@ -38,22 +40,27 @@ namespace OASystem.API.Controllers
         public async Task<IActionResult> LoginAsync(LoginDto dto)
         public async Task<IActionResult> LoginAsync(LoginDto dto)
         {
         {
             #region 校验用户信息 
             #region 校验用户信息 
-            var userData = _loginRep.Login(dto);
+            var userData = _loginRep.Login(dto).Result;
-            if (userData.Result.Code != 0)
+            if (userData.Code != 0)
             {
             {
-                if (userData.Result.Code != 0) { return Ok(JsonView(false, userData.Result.Msg)); }
+                if (userData.Code != 0) { return Ok(JsonView(false, userData.Msg)); }
 
 
                 return Ok(JsonView(false, "暂无该员工信息!"));
                 return Ok(JsonView(false, "暂无该员工信息!"));
             }
             }
 
 
             #endregion
             #endregion
+
+
+            dynamic authData = null;
+
             var view = new LoginView
             var view = new LoginView
             {
             {
-                UserInfo = userData.Result.Data
+                UserInfo = userData.Data,
+                AuthData = authData,
             };
             };
 
 
 
 
-            DateTime createZebraTime = DateTime.UtcNow;
+            DateTime createZebraTime = DateTime.Now;
             string authorId = dto.Number + "Token";
             string authorId = dto.Number + "Token";
             string authorToken = await RedisRepository.RedisFactory.CreateRedisRepository().StringGetAsync<string>(authorId);//string 取
             string authorToken = await RedisRepository.RedisFactory.CreateRedisRepository().StringGetAsync<string>(authorId);//string 取
             if (authorToken !=  null)
             if (authorToken !=  null)
@@ -84,19 +91,19 @@ namespace OASystem.API.Controllers
 
 
             #region 测试添加系统消息
             #region 测试添加系统消息
 
 
-            await _message.AddMsg(new MessageDto()
+            //await _message.AddMsg(new MessageDto()
-            {
+            //{
-                Type = 1,
+            //    Type = 1,
-                IssuerId = 208,
+            //    IssuerId = 208,
-                Title = "测试添加消息标题",
+            //    Title = "测试添加消息标题",
-                Content = "消息体测试",
+            //    Content = "消息体测试",
-                ReleaseTime = DateTime.Now,
+            //    ReleaseTime = DateTime.Now,
-                UIdList = new List<int> {
+            //    UIdList = new List<int> {
-                    5,
+            //        5,
-                    208,
+            //        208,
-                    219
+            //        219
-                }
+            //    }
-            });
+            //});
             #endregion
             #endregion
 
 
             return Ok(JsonView(view));
             return Ok(JsonView(view));

+ 61 - 9
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -1,5 +1,6 @@
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc;
 using Newtonsoft.Json.Serialization;
 using Newtonsoft.Json.Serialization;
+using OASystem.API.OAMethodLibs;
 using OASystem.Domain.Dtos.Groups;
 using OASystem.Domain.Dtos.Groups;
 using OASystem.Domain.ViewModels.Groups;
 using OASystem.Domain.ViewModels.Groups;
 using OASystem.Infrastructure.Repositories.Groups;
 using OASystem.Infrastructure.Repositories.Groups;
@@ -16,6 +17,7 @@ namespace OASystem.API.Controllers
         private readonly GrpScheduleRepository _grpScheduleRep;
         private readonly GrpScheduleRepository _grpScheduleRep;
         private readonly IMapper _mapper;
         private readonly IMapper _mapper;
         private readonly DelegationInfoRepository _groupRepository;
         private readonly DelegationInfoRepository _groupRepository;
+
         public GroupsController(IMapper mapper, GrpScheduleRepository grpScheduleRep, DelegationInfoRepository groupRepository)
         public GroupsController(IMapper mapper, GrpScheduleRepository grpScheduleRep, DelegationInfoRepository groupRepository)
         {
         {
             _mapper = mapper;
             _mapper = mapper;
@@ -44,14 +46,15 @@ namespace OASystem.API.Controllers
             {
             {
                 if (_ScheduleDto.SearchType == 2)//获取列表
                 if (_ScheduleDto.SearchType == 2)//获取列表
                 {
                 {
-
+                    List<Grp_ScheduleView> _grpScheduleViewList = await _grpScheduleRep.GetViewList_GrpSchedule(_ScheduleDto);
+                    return Ok(JsonView(_grpScheduleViewList));
                 }
                 }
                 else//获取对象
                 else//获取对象
                 {
                 {
                     Grp_ScheduleView _grpScheduleView = await _grpScheduleRep.GetView_GrpSchedule(_ScheduleDto);
                     Grp_ScheduleView _grpScheduleView = await _grpScheduleRep.GetView_GrpSchedule(_ScheduleDto);
                     if (_grpScheduleView != null)
                     if (_grpScheduleView != null)
                     {
                     {
-                        return Ok(JsonView(0, "获取成功", _grpScheduleView));
+                        return Ok(JsonView(_grpScheduleView));
                     }
                     }
                 }
                 }
             }
             }
@@ -63,6 +66,13 @@ namespace OASystem.API.Controllers
             return Ok(JsonView(false, "暂无数据!"));
             return Ok(JsonView(false, "暂无数据!"));
         }
         }
 
 
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public void testGrpSchedule()
+        {
+            GroupStepForDelegation.CreateWorkStep(1228);
+        }
+
         #endregion
         #endregion
 
 
         #region 团组基本信息
         #region 团组基本信息
@@ -110,30 +120,68 @@ namespace OASystem.API.Controllers
         [HttpPost]
         [HttpPost]
         public async Task<IActionResult> GroupEditBasicSource(GroupListDto dto)
         public async Task<IActionResult> GroupEditBasicSource(GroupListDto dto)
         {
         {
+
             var groupData = await _groupRepository.GroupEditBasicSource(dto);
             var groupData = await _groupRepository.GroupEditBasicSource(dto);
             if (groupData.Code != 0)
             if (groupData.Code != 0)
             {
             {
                 return Ok(JsonView(false, groupData.Msg));
                 return Ok(JsonView(false, groupData.Msg));
             }
             }
-
             return Ok(JsonView(groupData.Data));
             return Ok(JsonView(groupData.Data));
+
         }
         }
 
 
         /// <summary>
         /// <summary>
-        /// 接团信息 操作(增改)
+        /// 接团信息 操作(增改)
         /// </summary>
         /// </summary>
         /// <param name="dto"></param>
         /// <param name="dto"></param>
         /// <returns></returns>
         /// <returns></returns>
         [HttpPost]
         [HttpPost]
         public async Task<IActionResult> GroupOperation(GroupOperationDto dto)
         public async Task<IActionResult> GroupOperation(GroupOperationDto dto)
         {
         {
-            var groupData = await _groupRepository.GroupOperation(dto);
+            try
-            if (groupData.Code != 0)
             {
             {
-                return Ok(JsonView(false, groupData.Msg));
+                var groupData = await _groupRepository.GroupOperation(dto);
+                if (groupData.Code != 0)
+                {
+                    return Ok(JsonView(false, groupData.Msg));
+                }
+
+                return Ok(JsonView(true));
+            }
+            catch (Exception ex)
+            {
+
+                Logs("[response]" +  JsonConvert.SerializeObject( dto));
+                Logs(ex.Message);
+                return Ok(JsonView(false, ex.Message));
             }
             }
+        }
 
 
-            return Ok(JsonView(true));
+        /// <summary>
+        /// 接团信息 操作(删除)
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public async Task<IActionResult> GroupDel(GroupDelDto dto)
+        {
+            try
+            {
+                var groupData = await _groupRepository.GroupDel(dto);
+                if (groupData.Code != 0)
+                {
+                    return Ok(JsonView(false, groupData.Msg));
+                }
+
+                return Ok(JsonView(true));
+            }
+            catch (Exception ex)
+            {
+
+                Logs("[response]" + JsonConvert.SerializeObject(dto));
+                Logs(ex.Message);
+                return Ok(JsonView(false, ex.Message));
+            }
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -149,8 +197,12 @@ namespace OASystem.API.Controllers
             {
             {
                 return Ok(JsonView(false, groupData.Msg));
                 return Ok(JsonView(false, groupData.Msg));
             }
             }
+            object salesQuoteNo = new
+            {
+                SalesQuoteNo = groupData.Data
+            };
 
 
-            return Ok(JsonView(true, groupData.Data));
+            return Ok(JsonView(salesQuoteNo));
         }
         }
         #endregion
         #endregion
     }
     }

+ 192 - 0
OASystem/OASystem.Api/Controllers/ResourceController.cs

@@ -0,0 +1,192 @@
+
+
+namespace OASystem.API.Controllers
+{
+    /// <summary>
+    /// 资料相关
+    /// </summary>
+    //[Authorize]
+    [Route("api/[controller]/[action]")]
+    public class ResourceController : ControllerBase
+    {
+        private readonly IMapper _mapper;
+        private readonly IConfiguration _config;
+        private readonly CarDataRepository _carDataRep;
+       
+        public ResourceController(IMapper mapper, IConfiguration config,CarDataRepository carDataRep)
+        {
+            _mapper = mapper;
+            _config = config;
+            _carDataRep = carDataRep;
+        }
+        #region 车公司资料板块
+
+        /// <summary>
+        /// 车公司信息查询
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> QuerCarData(DtoBase dto)
+        {
+            try
+            {
+                if (dto.PortType==1)
+                {
+                    var carDada = _carDataRep.QueryDto<Res_CarData, CarDataView>().ToList();
+                    if (carDada.Count == 0)
+                    {
+                        return Ok(JsonView(false, "暂无数据!"));
+                    }
+                    carDada = carDada.OrderByDescending(s => s.CreateTime).ToList();
+                    return Ok(JsonView(true, "查询成功", carDada));
+                }
+                else if(dto.PortType==2)
+                {
+                    var carDada = _carDataRep.QueryDto<Res_CarData, CarDataView>().ToList();
+                    if (carDada.Count == 0)
+                    {
+                        return Ok(JsonView(false, "暂无数据!"));
+                    }
+                    carDada=carDada.OrderByDescending(s=>s.CreateTime).ToList();
+                    return Ok(JsonView(true, "查询成功", carDada));
+                }
+                else
+                {
+                    return Ok(JsonView(false, "请传入PortType参数!1:Web,2:Android,3:IOS"));
+                }
+               
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+           
+            
+        }
+
+        /// <summary>
+        /// 车公司信息添加
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> AddCarData(AddCarDataDto dto)
+        {
+            try
+            {
+                if (dto.UnitArea == "")
+                {
+                    return Ok(JsonView(false, "请检查单位区域是否填写!"));
+                }
+                if (dto.UnitName == "")
+                {
+                    return Ok(JsonView(false, "请检查单位名称是否填写!"));
+                }
+                if (dto.Contact == "")
+                {
+                    return Ok(JsonView(false, "请检查单位联系人是否填写!"));
+                }
+                if (dto.ContactTel == "")
+                {
+                    return Ok(JsonView(false, "请检查联系方式是否填写正确!"));
+                }
+                Res_CarData _CarData = _mapper.Map<Res_CarData>(dto);
+                int id = await _carDataRep.AddAsyncReturnId(_CarData);
+                if (id == 0) 
+                {
+                    return Ok(JsonView(false, "添加失败!"));
+                }
+                return Ok(JsonView(true, "添加成功", new { Id = id }));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+        }
+
+        /// <summary>
+        /// 车公司信息修改
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> UpCarData(UpCarDataDto dto)
+        {
+            try
+            {
+                if (dto.UnitArea == "")
+                {
+                    return Ok(JsonView(false, "请检查单位区域是否填写!"));
+                }
+                if (dto.UnitName == "")
+                {
+                    return Ok(JsonView(false, "请检查单位名称是否填写!"));
+                }
+                if (dto.Contact == "")
+                {
+                    return Ok(JsonView(false, "请检查单位联系人是否填写!"));
+                }
+                if (dto.ContactTel == "")
+                {
+                    return Ok(JsonView(false, "请检查联系方式是否填写正确!"));
+                }
+                bool res = await _carDataRep.UpdateAsync(a => a.Id == dto.Id, a => new Res_CarData
+                {
+                    UnitArea = dto.UnitArea,
+                    UnitName = dto.UnitName,
+                    Address = dto.Address,
+                    Contact = dto.Contact,
+                    ContactTel = dto.ContactTel,
+                    ContactEmail = dto.ContactEmail,
+                    ContactFax = dto.ContactFax,
+                    CarDes = dto.CarDes,
+                    CarPicPaths = dto.CarPicPaths,
+                    OtherInfo = dto.OtherInfo,
+                    Score = dto.Score,
+                    QualificationScore = dto.QualificationScore,
+                    CarAgeScore = dto.CarAgeScore,
+                    CleanImgScore = dto.CleanImgScore,
+                    SmellScore = dto.SmellScore,
+                    WaterPaperScore = dto.WaterPaperScore,
+                    HardwareScore = dto.HardwareScore,
+                    TimeScore = dto.TimeScore,
+                    SafetyScore = dto.SafetyScore,
+                    DrivingAgeScore = dto.DrivingAgeScore,
+                    Remark = dto.Remark,
+                });
+                if (!res) { return Ok(JsonView(false, "修改失败!")); }
+                return Ok(JsonView(true, "修改成功"));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+        }
+        /// <summary>
+        /// 车公司信息修改
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> DelCarData(DelCarDataDto dto)
+        {
+            try
+            {
+                bool res = await _carDataRep.SoftDeleteByIdAsync<Res_CarData>(dto.Id.ToString(), dto.DeleteUserId);
+                if (!res) { return Ok(JsonView(false, "删除失败!")); }
+                return Ok(JsonView(true, "删除成功"));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+        }
+        #endregion
+
+    }
+}

+ 112 - 4
OASystem/OASystem.Api/Controllers/SystemController.cs

@@ -1,4 +1,7 @@
-using System.Collections;
+
+using OASystem.Domain.Dtos.System;
+using Org.BouncyCastle.Asn1.Cms;
+using System.Collections;
 using static OpenAI.GPT3.ObjectModels.SharedModels.IOpenAiModels;
 using static OpenAI.GPT3.ObjectModels.SharedModels.IOpenAiModels;
 
 
 namespace OASystem.API.Controllers
 namespace OASystem.API.Controllers
@@ -15,7 +18,7 @@ namespace OASystem.API.Controllers
         private readonly DepartmentRepository _sysDepRep;
         private readonly DepartmentRepository _sysDepRep;
         private readonly UsersRepository _userRep;
         private readonly UsersRepository _userRep;
         private readonly IMapper _mapper;
         private readonly IMapper _mapper;
-
+        private readonly MessageRepository _messageRep;
         private readonly SetDataRepository _setDataRepository;
         private readonly SetDataRepository _setDataRepository;
         private readonly SystemMenuPermissionRepository _SystemMenuPermissionRepository;
         private readonly SystemMenuPermissionRepository _SystemMenuPermissionRepository;
         private readonly CompanyRepository _CompanyRepository;
         private readonly CompanyRepository _CompanyRepository;
@@ -29,12 +32,13 @@ namespace OASystem.API.Controllers
         public SystemController( CompanyRepository syscom, DepartmentRepository sysDepRep, UsersRepository userRep,
         public SystemController( CompanyRepository syscom, DepartmentRepository sysDepRep, UsersRepository userRep,
             IMapper mapper, SetDataRepository setDataRepository, CompanyRepository companyRepository,
             IMapper mapper, SetDataRepository setDataRepository, CompanyRepository companyRepository,
             SystemMenuPermissionRepository systemMenuPermissionRepository, PageFunctionPermissionRepository pageFunctionPermissionRepository,
             SystemMenuPermissionRepository systemMenuPermissionRepository, PageFunctionPermissionRepository pageFunctionPermissionRepository,
-            SystemMenuAndFunctionRepository systemMenuAndFunctionRepository, JobPostAuthorityRepository jobPostAuthorityRepository, JobPostRepository jobRep
+            SystemMenuAndFunctionRepository systemMenuAndFunctionRepository, JobPostAuthorityRepository jobPostAuthorityRepository, 
-            , UserAuthorityRepository userAuthorityRepository)
+            JobPostRepository jobRep,UserAuthorityRepository userAuthorityRepository, MessageRepository messageRep)
             
             
         {
         {
             _syscomRep = syscom;
             _syscomRep = syscom;
             _sysDepRep = sysDepRep;
             _sysDepRep = sysDepRep;
+            _messageRep = messageRep;
             _userRep = userRep;
             _userRep = userRep;
             _mapper = mapper;
             _mapper = mapper;
             _setDataRepository = setDataRepository;
             _setDataRepository = setDataRepository;
@@ -48,8 +52,112 @@ namespace OASystem.API.Controllers
         }
         }
         #region 消息
         #region 消息
 
 
+        /// <summary>
+        /// 获取消息列表
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> GetMsgList(MsgDto dto)
+        {
+            var msgData = await _messageRep.GetMsgList(dto);
+
+            if (msgData.Code != 0)
+            {
+                return Ok(JsonView(false, msgData.Msg));
+            }
+
+            return Ok(JsonView(true, msgData.Data));
+        }
+
+        /// <summary>
+        /// 获取消息详细信息
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> GetMsgInfo(MsgInfoDto dto)
+        {
+            var msgData = await _messageRep.GetMsgInfo(dto);
+
+            if (msgData.Code != 0)
+            {
+                return Ok(JsonView(false, msgData.Msg));
+            }
+
+            return Ok(JsonView(true, msgData.Data));
+        }
+
+        /// <summary>
+        /// 消息设置已读
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> SetMessageRead(MsgSetReadDto dto)
+        {
+            var msgData = await _messageRep.SetMsgRead(dto);
+
+            if (msgData.Code != 0)
+            {
+                return Ok(JsonView(false, msgData.Msg));
+            }
+
+            return Ok(JsonView(true, msgData.Data));
+        }
 
 
+        /// <summary>
+        /// 消息设置已读
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> DeleMsg(MsgDeleteDto dto)
+        {
+            var msgData = await _messageRep.DelMsg(dto);
 
 
+            if (msgData.Code != 0)
+            {
+                return Ok(JsonView(false, msgData.Msg));
+            }
+
+            return Ok(JsonView(true, msgData.Data));
+        }
+        #endregion
+
+        #region 类型表
+        /// <summary>
+        /// 查询类型数据
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> QuerSetData(SetDataDto dto)
+        {
+            try
+            {
+                if (dto.DataType==0)
+                {
+                    return Ok(JsonView(false, "请传类型Id!"));
+                }
+                var setData = _setDataRepository.QueryDto<Sys_SetData, SetDataView>(s=>s.STid==dto.DataType).ToList();
+                if (setData.Count == 0)
+                {
+                    return Ok(JsonView(false, "暂无数据!"));
+                }
+                return Ok(JsonView(true, "查询成功!",setData));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+        }
         #endregion
         #endregion
 
 
         #region 企业操作
         #region 企业操作

+ 4 - 0
OASystem/OASystem.Api/GlobalUsings.cs

@@ -51,5 +51,9 @@ global using OASystem.Domain.Dtos.System;
 global using OASystem.Domain.Entities.System;
 global using OASystem.Domain.Entities.System;
 global using OASystem.Domain.ViewModels.System;
 global using OASystem.Domain.ViewModels.System;
 global using OASystem.Infrastructure.Repositories.System;
 global using OASystem.Infrastructure.Repositories.System;
+global using OASystem.Domain.Dtos.Resource;
+global using OASystem.Domain.Entities.Resource;
+global using OASystem.Domain.ViewModels.Resource;
+global using OASystem.Infrastructure.Repositories.Resource;
 
 
 
 

+ 55 - 0
OASystem/OASystem.Api/OAMethodLib/AutofacIocManager.cs

@@ -0,0 +1,55 @@
+using Autofac.Core;
+
+namespace OASystem.API.OAMethodLib
+{
+    public class AutofacIocManager
+    {
+        public static AutofacIocManager Instance = new AutofacIocManager();
+        public ILifetimeScope Container { get; set; }
+
+        public T GetService<T>()
+        {
+            return ResolutionExtensions.Resolve<T>((IComponentContext)(object)this.Container);
+        }
+
+        public T GetService<T>(string serviceKey)
+        {
+            return ResolutionExtensions.ResolveKeyed<T>((IComponentContext)(object)this.Container, (object)serviceKey);
+        }
+
+        public T GetService<T>(string serviceKey, params Parameter[] parameters)
+        {
+            return ResolutionExtensions.ResolveKeyed<T>((IComponentContext)(object)this.Container, (object)serviceKey, parameters);
+        }
+
+        public object GetService(Type serviceType)
+        {
+            return ResolutionExtensions.Resolve((IComponentContext)(object)this.Container, serviceType);
+        }
+
+        public object GetService(string serviceKey, Type serviceType)
+        {
+            return ResolutionExtensions.ResolveKeyed((IComponentContext)(object)this.Container, (object)serviceKey, serviceType);
+        }
+
+        public bool IsRegistered<T>()
+        {
+            return ResolutionExtensions.IsRegistered<T>((IComponentContext)(object)this.Container);
+        }
+
+        public bool IsRegistered<T>(string serviceKey)
+        {
+            return ResolutionExtensions.IsRegisteredWithKey<T>((IComponentContext)(object)this.Container, (object)serviceKey);
+        }
+
+        public bool IsRegistered(Type serviceType)
+        {
+            return ResolutionExtensions.IsRegistered((IComponentContext)(object)this.Container, serviceType);
+        }
+
+        public bool IsRegisteredWithKey(string serviceKey, Type serviceType)
+        {
+            return ResolutionExtensions.IsRegisteredWithKey((IComponentContext)(object)this.Container, (object)serviceKey, serviceType);
+        }
+    }
+}

+ 27 - 0
OASystem/OASystem.Api/OAMethodLib/AutofacRegister.cs

@@ -0,0 +1,27 @@
+using Microsoft.Extensions.Configuration.Json;
+using OASystem.Domain.Dtos.Groups;
+
+namespace OASystem.API.OAMethodLib
+{
+    public class AutofacRegister : Autofac.Module
+    {
+        protected override void Load(ContainerBuilder builder)
+        {
+            //OASystem.Infrastructure中所有以Repository结尾的文件都会被注入到项目
+            var assemblyServices = Assembly.Load("OASystem.Infrastructure");
+            builder.RegisterAssemblyTypes(assemblyServices).Where(a => a.Name.EndsWith("Repository")).AsSelf();
+
+            #region 团组流程管控配置
+
+            GroupsConfig _groupsConfig = new GroupsConfig();
+            _groupsConfig.AutoCreate = int.Parse(AppSettingsHelper.Get(GroupsConfig.KEY, "AutoCreate"));
+            _groupsConfig.Leader = int.Parse(AppSettingsHelper.Get(GroupsConfig.KEY, "Leader"));
+            _groupsConfig.ExBeginDays = int.Parse(AppSettingsHelper.Get(GroupsConfig.KEY, "ExBeginDays"));
+            _groupsConfig.ExEndDays = int.Parse(AppSettingsHelper.Get(GroupsConfig.KEY, "ExEndDays"));
+
+            builder.RegisterInstance<GroupsConfig>(_groupsConfig);
+            #endregion
+
+        }
+    }
+}

+ 0 - 93
OASystem/OASystem.Api/OAMethodLib/BaseConfig.cs

@@ -1,93 +0,0 @@
-namespace OASystem.API.OAMethodLib
-{
-    public static class BaseConfig
-    {
-        /// <summary>
-        /// 版本号
-        /// </summary>
-        public const string Version = "0.0.1";
-
-        /// <summary>
-        /// 编码方式
-        /// </summary>
-        public const string Encoding = "UTF-8";
-
-        /// <summary>
-        /// 签名方法 SM2
-        /// </summary>
-        public const string SignMethod = "02";
-
-        /// <summary>
-        /// 招商银行商户号
-        /// </summary>
-        public const string MER_ID = "3089991727300CV";
-
-        /// <summary>
-        /// 招商银行收银员
-        /// </summary>
-        public const string USER_ID = "V000072134"; // 
-
-        /// <summary>
-        /// header中的APPID
-        /// </summary>
-        public const string APPID = "8ab74856-8772-45c9-96db-54cb30ab9f74"; // 
-
-        /// <summary>
-        /// 用于生成header中的APISign
-        /// </summary>
-        public const string APP_SECRET = "5b96f20a-011f-4254-8be8-9a5ceb2f317f"; // 
-
-        private static X9ECParameters x9ECParameters = GMNamedCurves.GetByName("sm2p256v1");
-        private static ECDomainParameters ecDomainParameters = new ECDomainParameters(x9ECParameters.Curve, x9ECParameters.G, x9ECParameters.N);
-        /// <summary>
-        /// 国密标准公钥头(固定值)
-        /// </summary>
-        public const string SM2_KEY_TITLE = "3059301306072a8648ce3d020106082a811ccf5501822d03420004";
-        /// <summary>
-        /// 国密局推荐 ID(固定值)
-        /// </summary>
-        public const string SM_USER_ID = "1234567812345678";
-        /// <summary>
-        /// 国密私钥
-        /// </summary>
-        public const string SM_PRIVATE_KEY = "D5F2AFA24E6BA9071B54A8C9AD735F9A1DE9C4657FA386C09B592694BC118B38";
-        /// <summary>
-        /// 国密公钥 base64
-        /// </summary>
-        public const string SM_PUBLIC_KEY = "MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE6Q+fktsnY9OFP+LpSR5Udbxf5zHCFO0PmOKlFNTxDIGl8jsPbbB/9ET23NV+acSz4FEkzD74sW2iiNVHRLiKHg==";
-
-    }
-
-    public static class UrlConfig
-    {
-        /// <summary>
-        /// 通知地址
-        /// </summary>
-        public const string NotifyUrl = "https://payment.wh-trip.com:8082/Notify";
-
-        /// <summary>
-        /// 收款码申请
-        /// </summary>
-        public const string CollectionQRCode = "https://api.cmburl.cn:8065/polypay/v1.0/mchorders/qrcodeapply";
-
-        /// <summary>
-        /// 支付结果查询
-        /// </summary>
-        public const string OrderqueryUrl = "https://api.cmburl.cn:8065/polypay/v1.0/mchorders/orderquery";
-
-        /// <summary>
-        /// 发起退款申请
-        /// </summary>
-        public const string RefundUrl = "https://api.cmburl.cn:8065/polypay/v1.0/mchorders/refund";
-
-        /// <summary>
-        /// 退款申请查询
-        /// </summary>
-        public const string RefundqueryUrl = "https://api.cmburl.cn:8065/polypay/v1.0/mchorders/refundquery";
-
-        /// <summary>
-        /// 支付宝native支付
-        /// </summary>
-        public const string ZFBQRCodeUrl = "https://api.cmburl.cn:8065/polypay/v1.0/mchorders/zfbqrcode";
-    }
-}

+ 76 - 0
OASystem/OASystem.Api/OAMethodLib/GroupStepForDelegation.cs

@@ -0,0 +1,76 @@
+using OASystem.API.OAMethodLib;
+using OASystem.Domain.Dtos.Groups;
+using OASystem.Domain.Entities.Groups;
+using OASystem.Infrastructure.Repositories.Groups;
+using System.Configuration;
+
+namespace OASystem.API.OAMethodLibs
+{
+
+    /// <summary>
+    /// 团组流程管控
+    /// </summary>
+    public static class GroupStepForDelegation
+    {
+
+        /// <summary>
+        /// 创建流程管控
+        /// </summary>
+        /// <param name="Diid">团组Id</param>
+        public static async void CreateWorkStep(int DiId)
+        {
+            var _grpScheduleRep = AutofacIocManager.Instance.GetService<GrpScheduleRepository>();
+
+            //判断是否已存在团组的流程管控
+            Grp_ScheduleInfo check = _grpScheduleRep.Query(s => s.DiId == DiId).First();
+
+            if (check == null)
+            {
+                _grpScheduleRep.BeginTran();
+
+                GroupsConfig _groupConfig = AutofacIocManager.Instance.GetService<GroupsConfig>();
+
+                #region 主流程
+                Grp_ScheduleInfo _primary = new Grp_ScheduleInfo();
+                _primary.CreateUserId = _groupConfig.AutoCreate;
+                _primary.DiId = DiId;
+                _primary.Exception = 0;
+                _primary.ExpectBeginDt = DateTime.Now.AddDays(_groupConfig.ExBeginDays);
+                _primary.ExpectEndDt = DateTime.Now.AddDays(_groupConfig.ExEndDays);
+                _primary.Leader = _groupConfig.Leader;
+                _primary.PrimaryStep = GrpSchedulePrimaryStepEnum.Wait;
+                _primary.Remark = "请设置各流程预计开始/结束时间";
+                int _primaryId = await _grpScheduleRep.AddAsync(_primary);
+                if (_primaryId > 0)
+                {
+                    #region 子流程
+
+                    #region 经费预算
+
+                    Grp_ScheduleDetailInfo grp_budget = new Grp_ScheduleDetailInfo();
+                    grp_budget.CreateTime = DateTime.Now;
+                    grp_budget.CreateUserId = _groupConfig.AutoCreate;
+                    //grp_budget.Duty=
+
+                    #endregion
+
+
+                    #endregion
+                }
+                else
+                {
+                    _grpScheduleRep.RollbackTran();
+                }
+                #endregion
+
+                _grpScheduleRep.CommitTran();
+            }
+
+        }
+
+
+
+    }
+
+
+}

+ 24 - 0
OASystem/OASystem.Api/OAMethodLib/JsonConvertOverride.cs

@@ -48,4 +48,28 @@ namespace OASystem.API.OAMethodLib
 
 
     #endregion
     #endregion
 
 
+
+    #region String null值转换(读/写)
+
+
+    //public class Int32JsonConverter : System.Text.Json.Serialization.JsonConverter<int?>
+    //{
+    //    private readonly string Format;
+    //    public Int32JsonConverter(string format)
+    //    {
+    //        Format = format;
+    //    }
+    //    public override void Write(Utf8JsonWriter writer, int? value, JsonSerializerOptions options)
+    //    {
+    //        writer.WriteStringValue((value ?? 0).ToString());
+    //    }
+    //    public override int Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+    //    {
+    //        return Convert.ToInt32(reader.GetString()) ?? 0; 
+    //    }
+
+    //}
+
+    #endregion
+
 }
 }

+ 6 - 3
OASystem/OASystem.Api/Program.cs

@@ -6,6 +6,8 @@ using OASystem.RedisRepository.RedisAsyncHelper;
 using OASystem.RedisRepository.Config;
 using OASystem.RedisRepository.Config;
 using OASystem.API.OAMethodLib;
 using OASystem.API.OAMethodLib;
 using System.Text.Json.Serialization;
 using System.Text.Json.Serialization;
+using OASystem.API.OAMethodLibs;
+using OASystem.Domain.Dtos.Groups;
 
 
 var builder = WebApplication.CreateBuilder(args);
 var builder = WebApplication.CreateBuilder(args);
 var basePath = AppContext.BaseDirectory;
 var basePath = AppContext.BaseDirectory;
@@ -175,14 +177,13 @@ Log.Logger = new LoggerConfiguration()
        .CreateLogger();
        .CreateLogger();
 #endregion
 #endregion
 
 
-#region 引入注册Autofac OASystem.Infrastructure中所有以Repository结尾的文件都会被注入到项目
+#region 引入注册Autofac Module
 builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
 builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
 var hostBuilder = builder.Host.ConfigureContainer<ContainerBuilder>(builder =>
 var hostBuilder = builder.Host.ConfigureContainer<ContainerBuilder>(builder =>
 {
 {
     try
     try
     {
     {
-        var assemblyServices = Assembly.Load("OASystem.Infrastructure");
+        builder.RegisterModule(new AutofacRegister());
-        builder.RegisterAssemblyTypes(assemblyServices).Where(a => a.Name.EndsWith("Repository")).AsSelf();
     }
     }
     catch (Exception ex)
     catch (Exception ex)
     {
     {
@@ -203,6 +204,7 @@ builder.Services.AddScoped<IMapper, Mapper>();
 #endregion
 #endregion
 
 
 var app = builder.Build();
 var app = builder.Build();
+AutofacIocManager.Instance.Container = app.UseHostFiltering().ApplicationServices.GetAutofacRoot();//AutofacIocManager
 
 
 // Configure the HTTP request pipeline.
 // Configure the HTTP request pipeline.
 if (!app.Environment.IsDevelopment())
 if (!app.Environment.IsDevelopment())
@@ -234,6 +236,7 @@ if (AppSettingsHelper.Get("UseSwagger").ToBool())
 }
 }
 #endregion
 #endregion
 
 
+
 app.MapControllerRoute(
 app.MapControllerRoute(
     name: "default",
     name: "default",
     pattern: "{controller=Home}/{action=Index}/{id?}");
     pattern: "{controller=Home}/{action=Index}/{id?}");

+ 7 - 2
OASystem/OASystem.Api/appsettings.json

@@ -3,6 +3,11 @@
     "OA2023DB": "server=132.232.92.186;uid=sa;pwd=Yjx@158291;database=OA2023DB;"
     "OA2023DB": "server=132.232.92.186;uid=sa;pwd=Yjx@158291;database=OA2023DB;"
   },
   },
   "JwtSecurityKey": "48d3f4fe770940a1068052f581536b81", //jwt密钥
   "JwtSecurityKey": "48d3f4fe770940a1068052f581536b81", //jwt密钥
-  "UseSwagger": "true" //启用Swagger
+  "UseSwagger": "true", //启用Swagger
-
+  "GroupsConfig": {
+    "AutoCreate": "4",
+    "Leader": "149",
+    "ExBeginDays": "3",
+    "ExEndDays": "30"
+  }
 }
 }

+ 10 - 0
OASystem/OASystem.Domain/AutoMappers/_baseMappingProfile.cs

@@ -1,10 +1,13 @@
 using OASystem.Domain.Dtos.Groups;
 using OASystem.Domain.Dtos.Groups;
+using OASystem.Domain.Dtos.Resource;
 using OASystem.Domain.Dtos.System;
 using OASystem.Domain.Dtos.System;
 using OASystem.Domain.Dtos.UserDto;
 using OASystem.Domain.Dtos.UserDto;
 using OASystem.Domain.Entities;
 using OASystem.Domain.Entities;
 using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.Entities.Groups;
+using OASystem.Domain.Entities.Resource;
 using OASystem.Domain.Entities.System;
 using OASystem.Domain.Entities.System;
 using OASystem.Domain.ViewModels;
 using OASystem.Domain.ViewModels;
+using OASystem.Domain.ViewModels.Resource;
 using OASystem.Domain.ViewModels.System;
 using OASystem.Domain.ViewModels.System;
 
 
 namespace OASystem.Domain.AutoMappers
 namespace OASystem.Domain.AutoMappers
@@ -56,6 +59,13 @@ namespace OASystem.Domain.AutoMappers
 
 
             CreateMap<GroupListDto, Grp_DelegationInfo>();
             CreateMap<GroupListDto, Grp_DelegationInfo>();
             #endregion
             #endregion
+
+            #region Resource
+            #region 车公司资料
+            CreateMap<Res_CarData, CarDataView>();
+            CreateMap<AddCarDataDto, Res_CarData>();
+            #endregion
+            #endregion
         }
         }
     }
     }
 }
 }

+ 57 - 0
OASystem/OASystem.Domain/Common/DepartmentCode.cs

@@ -0,0 +1,57 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Common
+{
+    public class DepartmentCode
+    {
+        /// <summary>
+        /// 总经办
+        /// </summary>
+        public static int GMO = 1;
+
+        /// <summary>
+        /// 信息部
+        /// </summary>
+        public static int INFO = 2;
+
+        /// <summary>
+        /// 财务部
+        /// </summary>
+        public static int FIN = 3;
+
+        /// <summary>
+        /// 人事部
+        /// </summary>
+        public static int HR = 4;
+
+        /// <summary>
+        /// 策划部
+        /// </summary>
+        public static int PLAN = 5;
+
+        /// <summary>
+        /// 市场部
+        /// </summary>
+        public static int MARKET = 6;
+
+        /// <summary>
+        /// 国交部
+        /// </summary>
+        public static int IC = 7;
+
+        /// <summary>
+        /// 项目部
+        /// </summary>
+        public static int PROJECT = 8;
+
+        /// <summary>
+        /// OA管理部
+        /// </summary>
+        public static int OA = 9;
+
+    }
+}

+ 1 - 1
OASystem/OASystem.Domain/Dtos/DtoBase.cs

@@ -15,7 +15,7 @@ namespace OASystem.Domain.Dtos
         /// 请求端口分类
         /// 请求端口分类
         /// 1 Web 2 Android 3 IOS
         /// 1 Web 2 Android 3 IOS
         /// </summary>
         /// </summary>
-        public int PortType { get; set; }
+        public int PortType { get; set; } = 1;
 
 
         public int PageIndex { get; set; }
         public int PageIndex { get; set; }
         public int PageSize { get; set; }
         public int PageSize { get; set; }

+ 21 - 5
OASystem/OASystem.Domain/Dtos/Groups/GroupListDto.cs

@@ -1,5 +1,7 @@
-using System;
+using Newtonsoft.Json;
+using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
+using System.ComponentModel;
 using System.Linq;
 using System.Linq;
 using System.Text;
 using System.Text;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
@@ -94,7 +96,7 @@ namespace OASystem.Domain.Dtos.Groups
         /// <summary>
         /// <summary>
         /// 出访时间
         /// 出访时间
         /// </summary>
         /// </summary>
-        public DateTime VisitDate { get; set; }
+        public string VisitDate { get; set; }
 
 
         /// <summary>
         /// <summary>
         /// 出访天数
         /// 出访天数
@@ -109,12 +111,12 @@ namespace OASystem.Domain.Dtos.Groups
         /// <summary>
         /// <summary>
         /// 合同时间
         /// 合同时间
         /// </summary>
         /// </summary>
-        public DateTime TontractTime { get; set; }
+        public string TontractTime { get; set; }
 
 
         /// <summary>
         /// <summary>
         /// 预付期限
         /// 预付期限
         /// </summary>
         /// </summary>
-        public DateTime PayDay { get; set; }
+        public int PayDay { get; set; }
 
 
         /// <summary>
         /// <summary>
         /// 支付款项(预付)
         /// 支付款项(预付)
@@ -167,5 +169,19 @@ namespace OASystem.Domain.Dtos.Groups
         public string Remark { get; set; }
         public string Remark { get; set; }
     }
     }
 
 
-    
+    /// <summary>
+    /// 团组信息删除
+    /// </summary>
+    public class GroupDelDto:DtoBase
+    {
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 用户Id
+        /// </summary>
+        public int UserId { get; set; }
+    }
 }
 }

+ 36 - 0
OASystem/OASystem.Domain/Dtos/Groups/GroupsConfig.cs

@@ -0,0 +1,36 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Groups
+{
+    /// <summary>
+    /// appsettings.json配置对应实体类(团组管控流程配置)
+    /// </summary>
+    public class GroupsConfig
+    {
+        public const string KEY = "GroupsConfig";
+
+        /// <summary>
+        /// 创建团组管控流程的默认用户Id ,当前为管理员4
+        /// </summary>
+        public int AutoCreate { get; set; }
+
+        /// <summary>
+        /// 团组管控流程默认总负责人,当前为王鸽149
+        /// </summary>
+        public int Leader { get; set; }
+
+        /// <summary>
+        /// 团组默认初始日期(增加3天)
+        /// </summary>
+        public int ExBeginDays { get; set; }
+
+        /// <summary>
+        /// 团组默认结束日期(增加30天)
+        /// </summary>
+        public int ExEndDays { get; set; }  
+    }
+}

+ 311 - 0
OASystem/OASystem.Domain/Dtos/Resource/CarDataDto.cs

@@ -0,0 +1,311 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Resource
+{
+    /// <summary>
+    /// 添加车公司数据参数
+    /// </summary>
+    public class AddCarDataDto
+    {
+        /// <summary>
+        /// 区域
+        /// </summary>
+        public string UnitArea { get; set; }
+
+        /// <summary>
+        /// 公司名称
+        /// </summary>
+        public string UnitName { get; set; }
+
+        /// <summary>
+        /// 地址
+        /// </summary>
+        public string Address { get; set; }
+
+        /// <summary>
+        /// 联系人
+        /// </summary>
+        public string Contact { get; set; }
+
+        /// <summary>
+        /// 联系人手机号
+        /// </summary>
+        private string contactTel;
+        public string ContactTel
+        {
+            get
+            {
+                return contactTel;
+            }
+            set
+            {
+                if (Regex.IsMatch(value, @"^[1]+[2,3,4,5,6,7,8,9]+\d{9}"))
+                {
+                    contactTel = value;
+                }
+                else
+                {
+                    contactTel = "";
+                }
+
+            }
+        }
+
+        /// <summary>
+        /// 联系人邮箱
+        /// </summary>
+        public string ContactEmail { get; set; }
+
+        /// <summary>
+        /// 联系人传真
+        /// </summary>
+        public string ContactFax { get; set; }
+
+        /// <summary>
+        /// 车描述
+        /// </summary>
+        public string CarDes { get; set; }
+
+        /// <summary>
+        /// 车图片路径
+        /// 存储多个 使用/r/n
+        /// </summary>
+        public string CarPicPaths { get; set; }
+
+
+        /// <summary>
+        /// 其他信息
+        /// </summary>
+        public string OtherInfo { get; set; }
+
+        /// <summary>
+        /// 服务评分
+        /// </summary>
+        public int Score { get; set; }
+
+        /// <summary>
+        /// 相关的车辆资质
+        /// A B C  选择
+        /// </summary>
+        public string QualificationScore { get; set; }
+
+        /// <summary>
+        /// 车辆2-4年新,VIP及以上需要2年新
+        /// A B C  选择
+        /// </summary>
+        public string CarAgeScore { get; set; }
+
+        /// <summary>
+        /// 车身干净,无文字图片等
+        /// A B C  选择
+        /// </summary>
+        public string CleanImgScore { get; set; }
+
+        /// <summary>
+        /// 车内整洁、无异味
+        /// A B C  选择
+        /// </summary>
+        public string SmellScore { get; set; }
+
+        /// <summary>
+        /// 提前备水,纸巾等
+        /// A B C  选择
+        /// </summary>
+        public string WaterPaperScore { get; set; }
+
+        /// <summary>
+        /// 车辆配置高(皮座椅等)
+        /// A B C  选择
+        /// </summary>
+        public string HardwareScore { get; set; }
+
+        /// <summary>
+        /// 时间概念强
+        /// A B C  选择
+        /// </summary>
+        public string TimeScore { get; set; }
+
+        /// <summary>
+        /// 安全意识高
+        /// A B C  选择
+        /// </summary>
+        public string SafetyScore { get; set; }
+
+        /// <summary>
+        /// 司机驾龄时间长,提前熟悉路线
+        /// A B C  选择
+        /// </summary>
+        public string DrivingAgeScore { get; set; }
+        /// <summary>
+        /// 创建者Id
+        /// </summary>
+        public int CreateUserId { get; set; }
+        /// <summary>
+        /// 备注
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
+        public string Remark { get; set; }
+    }
+    /// <summary>
+    /// 修改车公司数据参数
+    /// </summary>
+    public class UpCarDataDto
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public int Id { get; set; }
+        /// <summary>
+        /// 区域
+        /// </summary>
+        public string UnitArea { get; set; }
+
+        /// <summary>
+        /// 公司名称
+        /// </summary>
+        public string UnitName { get; set; }
+
+        /// <summary>
+        /// 地址
+        /// </summary>
+        public string Address { get; set; }
+
+        /// <summary>
+        /// 联系人
+        /// </summary>
+        public string Contact { get; set; }
+
+        /// <summary>
+        /// 联系人手机号
+        /// </summary>
+        private string contactTel;
+        public string ContactTel
+        {
+            get
+            {
+                return contactTel;
+            }
+            set
+            {
+                if (Regex.IsMatch(value, @"^[1]+[2,3,4,5,6,7,8,9]+\d{9}"))
+                {
+                    contactTel = value;
+                }
+                else
+                {
+                    contactTel = "";
+                }
+
+            }
+        }
+
+        /// <summary>
+        /// 联系人邮箱
+        /// </summary>
+        public string ContactEmail { get; set; }
+
+        /// <summary>
+        /// 联系人传真
+        /// </summary>
+        public string ContactFax { get; set; }
+
+        /// <summary>
+        /// 车描述
+        /// </summary>
+        public string CarDes { get; set; }
+
+        /// <summary>
+        /// 车图片路径
+        /// 存储多个 使用/r/n
+        /// </summary>
+        public string CarPicPaths { get; set; }
+
+
+        /// <summary>
+        /// 其他信息
+        /// </summary>
+        public string OtherInfo { get; set; }
+
+        /// <summary>
+        /// 服务评分
+        /// </summary>
+        public int Score { get; set; }
+
+        /// <summary>
+        /// 相关的车辆资质
+        /// A B C  选择
+        /// </summary>
+        public string QualificationScore { get; set; }
+
+        /// <summary>
+        /// 车辆2-4年新,VIP及以上需要2年新
+        /// A B C  选择
+        /// </summary>
+        public string CarAgeScore { get; set; }
+
+        /// <summary>
+        /// 车身干净,无文字图片等
+        /// A B C  选择
+        /// </summary>
+        public string CleanImgScore { get; set; }
+
+        /// <summary>
+        /// 车内整洁、无异味
+        /// A B C  选择
+        /// </summary>
+        public string SmellScore { get; set; }
+
+        /// <summary>
+        /// 提前备水,纸巾等
+        /// A B C  选择
+        /// </summary>
+        public string WaterPaperScore { get; set; }
+
+        /// <summary>
+        /// 车辆配置高(皮座椅等)
+        /// A B C  选择
+        /// </summary>
+        public string HardwareScore { get; set; }
+
+        /// <summary>
+        /// 时间概念强
+        /// A B C  选择
+        /// </summary>
+        public string TimeScore { get; set; }
+
+        /// <summary>
+        /// 安全意识高
+        /// A B C  选择
+        /// </summary>
+        public string SafetyScore { get; set; }
+
+        /// <summary>
+        /// 司机驾龄时间长,提前熟悉路线
+        /// A B C  选择
+        /// </summary>
+        public string DrivingAgeScore { get; set; }
+       
+        /// <summary>
+        /// 备注
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
+        public string Remark { get; set; }
+    }
+
+    public class DelCarDataDto
+    {
+        /// <summary>
+        /// 删除Id
+        /// </summary>
+        public int Id { get; set; }
+        /// <summary>
+        /// 删除人Id
+        /// </summary>
+        public int DeleteUserId { get; set; }
+    }
+}

+ 61 - 0
OASystem/OASystem.Domain/Dtos/System/MsgDto.cs

@@ -0,0 +1,61 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.System
+{
+    /// <summary>
+    /// 消息列表
+    /// 请求dto
+    /// </summary>
+    public class MsgDto:DtoBase
+    {
+        /// <summary>
+        /// 用户ID
+        /// </summary>
+        public int UserId { get; set; }
+    }
+
+    /// <summary>
+    /// 消息详细信息
+    /// 请求dto
+    /// </summary>
+    public class MsgInfoDto : DtoBase
+    {
+        /// <summary>
+        /// 消息Id
+        /// </summary>
+        public int MsgId { get; set; }
+    }
+
+    /// <summary>
+    /// 消息设置已读
+    /// 请求dto
+    /// </summary>
+    public class MsgSetReadDto : DtoBase
+    {
+        /// <summary>
+        /// MsgAnthId
+        /// </summary>
+        public int MsgAnthId { get; set; }
+    }
+
+    /// <summary>
+    /// 消息删除
+    /// 请求dto
+    /// </summary>
+    public class MsgDeleteDto : DtoBase
+    {
+        /// <summary>
+        /// MsgId
+        /// </summary>
+        public int MsgId { get; set; }
+
+        /// <summary>
+        /// userId
+        /// </summary>
+        public int UserId { get; set; }
+    }
+}

+ 19 - 0
OASystem/OASystem.Domain/Dtos/System/SetDataDto.cs

@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.System
+{
+    /// <summary>
+    /// 类型表参数
+    /// </summary>
+    public class SetDataDto
+    {
+        /// <summary>
+        /// 数据类型
+        /// </summary>
+        public int DataType { get; set; }
+    }
+}

+ 1 - 1
OASystem/OASystem.Domain/Dtos/UserDto/LoginDto.cs

@@ -6,7 +6,7 @@ namespace OASystem.Domain.Dtos.UserDto;
 /// 用户登录
 /// 用户登录
 /// 提交DTO
 /// 提交DTO
 /// </summary>
 /// </summary>
-public class LoginDto
+public class LoginDto:DtoBase
 {
 {
     /// <summary>
     /// <summary>
     /// 登录账号
     /// 登录账号

+ 48 - 37
OASystem/OASystem.Domain/Entities/Customer/Crm_DeleClient.cs

@@ -13,36 +13,6 @@ namespace OASystem.Domain.Entities.Customer
     [SugarTable("Crm_DeleClient")]
     [SugarTable("Crm_DeleClient")]
     public class Crm_DeleClient:EntityBase
     public class Crm_DeleClient:EntityBase
     {
     {
-        /// <summary>
-        /// 客户公司表Id
-        /// </summary>
-        [SugarColumn(IsNullable =true,ColumnDataType ="int")]
-        public int CompanyId { get; set; }
-        /// <summary>
-        /// 机票喜好舱位
-        /// </summary>
-        [SugarColumn(IsNullable =true,ColumnDataType = "varchar(300)")]
-        public string AirType { get; set; }
-        /// <summary>
-        /// 是否靠窗
-        /// </summary>
-        [SugarColumn(IsNullable =true,ColumnDataType ="int")]
-        public int SeatPref { get; set; }
-        /// <summary>
-        /// 机票备注
-        /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
-        public string AirRemark { get; set; }
-        /// <summary>
-        /// 酒店喜好房型
-        /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
-        public string RoomType { get; set; }
-        /// <summary>
-        /// 酒店需求
-        /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
-        public string RoomPref { get; set; }
         /// <summary>
         /// <summary>
         /// 中文姓名
         /// 中文姓名
         /// </summary>
         /// </summary>
@@ -69,11 +39,11 @@ namespace OASystem.Domain.Entities.Customer
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int Sex { get; set; }
         public int Sex { get; set; }
         /// <summary>
         /// <summary>
-        /// 婚姻状况 0、1、2 (已婚、未婚、离异等)
+        /// 婚姻状况 0、1、2、3、4 (未设置、未婚、已婚、离异、丧偶)
         /// </summary>
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int Marriage { get; set; }
         public int Marriage { get; set; }
-        /// <summary>
+
         /// 客户手机号
         /// 客户手机号
         /// </summary>
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(20)")]
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(20)")]
@@ -93,6 +63,33 @@ namespace OASystem.Domain.Entities.Customer
         /// </summary>
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "DateTime")]
         [SugarColumn(IsNullable = true, ColumnDataType = "DateTime")]
         public string BirthDay { get; set; }
         public string BirthDay { get; set; }
+
+        /// <summary>
+        /// 机票喜好舱位
+        /// </summary>
+        [SugarColumn(IsNullable =true,ColumnDataType = "varchar(300)")]
+        public string AirType { get; set; }
+        /// <summary>
+        /// 是否靠窗
+        /// </summary>
+        [SugarColumn(IsNullable =true,ColumnDataType ="int")]
+        public int SeatPref { get; set; }
+        /// <summary>
+        /// 机票备注
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
+        public string AirRemark { get; set; }
+        /// <summary>
+        /// 酒店喜好房型
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
+        public string RoomType { get; set; }
+        /// <summary>
+        /// 酒店需求
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
+        public string RoomPref { get; set; }
+       
         /// <summary>
         /// <summary>
         /// 客户联系方式
         /// 客户联系方式
         /// </summary>
         /// </summary>
@@ -118,6 +115,13 @@ namespace OASystem.Domain.Entities.Customer
         /// </summary>
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
         public string PostCodes { get; set; }
         public string PostCodes { get; set; }
+
+        /// <summary>
+        /// 客户公司Id
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public string CrmCompanyId { get; set; }
+
         /// <summary>
         /// <summary>
         /// 职位
         /// 职位
         /// </summary>
         /// </summary>
@@ -164,7 +168,8 @@ namespace OASystem.Domain.Entities.Customer
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(20)")]
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(20)")]
         public string ClientLeaderJob { get; set; }
         public string ClientLeaderJob { get; set; }
         /// <summary>
         /// <summary>
-        /// 是否有获批的申根签证 0否1是
+        /// 是否有获批的申根签证 
+        /// 0否1是
         /// </summary>
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int IsGetSchengen { get; set; }
         public int IsGetSchengen { get; set; }
@@ -179,7 +184,8 @@ namespace OASystem.Domain.Entities.Customer
         [SugarColumn(IsNullable = true, ColumnDataType = "Datetime")]
         [SugarColumn(IsNullable = true, ColumnDataType = "Datetime")]
         public DateTime EndTime { get; set; }
         public DateTime EndTime { get; set; }
         /// <summary>
         /// <summary>
-        /// 申根是否在使馆有指纹记录 0否1是
+        /// 申根是否在使馆有指纹记录 
+        /// 0否1是
         /// </summary>
         /// </summary>
         [SugarColumn(IsNullable =true,ColumnDataType ="int")]
         [SugarColumn(IsNullable =true,ColumnDataType ="int")]
         public int IsFinger { get; set; }
         public int IsFinger { get; set; }
@@ -190,6 +196,7 @@ namespace OASystem.Domain.Entities.Customer
         public DateTime FingerDate { get; set; }
         public DateTime FingerDate { get; set; }
         /// <summary>
         /// <summary>
         /// 是否因公去过美国/加拿大
         /// 是否因公去过美国/加拿大
+        /// 0否1是
         /// </summary>
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int IsVisitUC { get; set; }
         public int IsVisitUC { get; set; }
@@ -220,6 +227,7 @@ namespace OASystem.Domain.Entities.Customer
         public int IsUSAVia { get; set; }
         public int IsUSAVia { get; set; }
         /// <summary>
         /// <summary>
         /// 因公美国签证最近获得时间
         /// 因公美国签证最近获得时间
+        /// 0否1是
         /// </summary>
         /// </summary>
         [SugarColumn(IsNullable =true,ColumnDataType ="DateTime")]
         [SugarColumn(IsNullable =true,ColumnDataType ="DateTime")]
         public DateTime GetUSAVisaDate { get; set; }
         public DateTime GetUSAVisaDate { get; set; }
@@ -289,7 +297,8 @@ namespace OASystem.Domain.Entities.Customer
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int IsUSAVisa { get; set; }
         public int IsUSAVisa { get; set; }
         /// <summary>
         /// <summary>
-        /// 夫/妻是否已在美国 0否1是
+        /// 夫/妻是否已在美国 
+        /// 0否1是
         /// </summary>
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int MateUSA { get; set; }
         public int MateUSA { get; set; }
@@ -309,7 +318,8 @@ namespace OASystem.Domain.Entities.Customer
         [SugarColumn(IsNullable =true,ColumnDataType ="varchar(50)")]
         [SugarColumn(IsNullable =true,ColumnDataType ="varchar(50)")]
         public string WHIden { get; set; }
         public string WHIden { get; set; }
         /// <summary>
         /// <summary>
-        /// 父/母是否已在美国 0否1是
+        /// 父/母是否已在美国
+        /// 0否1是
         /// </summary>
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int ParentUSA { get; set; }
         public int ParentUSA { get; set; }
@@ -344,7 +354,8 @@ namespace OASystem.Domain.Entities.Customer
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
         public string Social { get; set; }
         public string Social { get; set; }
         /// <summary> 
         /// <summary> 
-        /// 是否参军  0否1是
+        /// 是否参军  
+        /// 0否1是
         /// </summary>
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public string IsArmy { get; set; }
         public string IsArmy { get; set; }

+ 2 - 2
OASystem/OASystem.Domain/Entities/Groups/Grp_DelegationInfo.cs

@@ -192,8 +192,8 @@ namespace OASystem.Domain.Entities.Groups
         /// <summary>
         /// <summary>
         /// 预付期限
         /// 预付期限
         /// </summary>
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "DateTime")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
-        public DateTime PayDay { get; set; }
+        public int PayDay { get; set; }
         /// <summary>
         /// <summary>
         /// 出国任务审批部门名称
         /// 出国任务审批部门名称
         /// </summary>
         /// </summary>

+ 6 - 0
OASystem/OASystem.Domain/Entities/Groups/Grp_ScheduleInfo.cs

@@ -104,6 +104,12 @@ namespace OASystem.Domain.Entities.Groups
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int Duty { get; set; }
         public int Duty { get; set; }
 
 
+        /// <summary>
+        /// 工作内容
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
+        public string JobContent { get; set; }
+
         /// <summary>
         /// <summary>
         /// 预计开始时间
         /// 预计开始时间
         /// </summary>
         /// </summary>

+ 13 - 4
OASystem/OASystem.Domain/Enums/GrpScheduleEnum.cs

@@ -13,15 +13,15 @@ namespace OASystem.Domain.Enums
     public enum GrpSchedulePrimaryStepEnum
     public enum GrpSchedulePrimaryStepEnum
     {
     {
         /// <summary>
         /// <summary>
-        /// 未开始
+        /// 未开始/等待任务分配
         /// </summary>
         /// </summary>
-        [Description("未开始")]
+        [Description("未开始/等待任务分配")]
         Wait = 0,
         Wait = 0,
 
 
         /// <summary>
         /// <summary>
-        /// 确认出团
+        /// 确认出团/任务分配
         /// </summary>
         /// </summary>
-        [Description("确认出团")]
+        [Description("确认出团/任务分配完成")]
         Confirm = 1,
         Confirm = 1,
 
 
         /// <summary>
         /// <summary>
@@ -29,6 +29,15 @@ namespace OASystem.Domain.Enums
         /// </summary>
         /// </summary>
         [Description("经费预算")]
         [Description("经费预算")]
         Budget = 2,
         Budget = 2,
+        /// <summary>
+        /// 经费预算子流程01:完成经费预算
+        /// </summary>
+        [Description("完成经费预算")]
+        BudgetChild01 = 201,
+        /// <summary>
+        /// 经费预算自定义子流程:
+        /// </summary>
+        BudgetChildCustom = 2011,
 
 
         /// <summary>
         /// <summary>
         /// 市场部人员对接反馈
         /// 市场部人员对接反馈

+ 1 - 1
OASystem/OASystem.Domain/Result.cs

@@ -10,6 +10,6 @@ namespace OASystem.Domain
     {
     {
         public int Code { get; set; } = -1;
         public int Code { get; set; } = -1;
         public string Msg { get; set; } = "未知错误";
         public string Msg { get; set; } = "未知错误";
-        public dynamic Data { get; set; } = null;
+        public dynamic? Data { get; set; } = null;
     }
     }
 }
 }

+ 15 - 4
OASystem/OASystem.Domain/ViewModels/Group/DelegationInfoView.cs

@@ -1,7 +1,9 @@
-using OASystem.Domain.Dtos;
+using Newtonsoft.Json;
+using OASystem.Domain.Dtos;
 using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.Entities.Groups;
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
+using System.ComponentModel;
 using System.Linq;
 using System.Linq;
 using System.Text;
 using System.Text;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
@@ -31,6 +33,11 @@ namespace OASystem.Domain.ViewModels.Group
         public string SalesQuoteNo { get; set; }
         public string SalesQuoteNo { get; set; }
 
 
 
 
+        /// <summary>
+        /// 接团人ID
+        /// </summary>
+        public int JietuanOperator { get; set; }
+
         /// <summary>
         /// <summary>
         /// 团组等级
         /// 团组等级
         /// </summary>
         /// </summary>
@@ -80,11 +87,10 @@ namespace OASystem.Domain.ViewModels.Group
         /// 合同时间
         /// 合同时间
         /// </summary>
         /// </summary>
         public DateTime TontractTime { get; set; }
         public DateTime TontractTime { get; set; }
-
         /// <summary>
         /// <summary>
-        /// 预付
+        /// 预付期
         /// </summary>
         /// </summary>
-        public DateTime PayDay { get; set; }
+        public int PayDay { get; set; }
 
 
         /// <summary>
         /// <summary>
         /// 预付金额
         /// 预付金额
@@ -150,6 +156,11 @@ namespace OASystem.Domain.ViewModels.Group
         /// </summary>
         /// </summary>
         public string SalesQuoteNo { get; set; }
         public string SalesQuoteNo { get; set; }
 
 
+        /// <summary>
+        /// 团号
+        /// </summary>
+        public string TourCode { get; set; }
+
         /// <summary>
         /// <summary>
         /// 接团操作人
         /// 接团操作人
         /// </summary>
         /// </summary>

+ 5 - 0
OASystem/OASystem.Domain/ViewModels/LoginView.cs

@@ -19,4 +19,9 @@ public class LoginView
     /// 返回用户信息
     /// 返回用户信息
     /// </summary>
     /// </summary>
     public object? UserInfo { get; set; }
     public object? UserInfo { get; set; }
+
+    /// <summary>
+    /// 返回用户权限信息
+    /// </summary>
+    public object? AuthData { get; set; }
 }
 }

+ 13 - 0
OASystem/OASystem.Domain/ViewModels/Resource/CarDataView.cs

@@ -0,0 +1,13 @@
+using OASystem.Domain.Entities.Resource;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.ViewModels.Resource
+{
+    public class CarDataView:Res_CarData
+    {
+    }
+}

+ 54 - 0
OASystem/OASystem.Domain/ViewModels/System/MessageView.cs

@@ -67,4 +67,58 @@ namespace OASystem.Domain.ViewModels.System
         public DateTime? ReadTime { get; set; }
         public DateTime? ReadTime { get; set; }
     }
     }
 
 
+    public class MessageInfoView 
+    {
+        /// <summary>
+        /// 消息类型
+        /// </summary>
+        public int Type { get; set; }
+
+        /// <summary>
+        /// 公司名称
+        /// </summary>
+        public string CompanyName { get; set; }
+
+        /// <summary>
+        /// 部门名称
+        /// </summary>
+        public string DepName { get; set; }
+
+        /// <summary>
+        /// 岗位名称
+        /// </summary>
+        public string JobName { get; set; }
+
+        /// <summary>
+        /// 发布人
+        /// </summary>
+        public string CnName { get; set; }
+
+        /// <summary>
+        /// 发布时间
+        /// </summary>
+        public DateTime ReleaseTime { get; set; }
+
+        /// <summary>
+        /// 消息标题
+        /// </summary>
+        public string Title { get; set; }
+
+        /// <summary>
+        /// 消息内容
+        /// </summary>
+        public string Content { get; set; }
+
+        /// <summary>
+        /// 是否已读
+        /// 0 未读 1 已读
+        /// </summary>
+        public int IsRead { get; set; }
+
+        /// <summary>
+        /// 已读时间
+        /// 1990-01-01 00:00:000 未读
+        /// </summary>
+        public DateTime ReadTime { get; set; }
+    }
 }
 }

+ 5 - 5
OASystem/OASystem.Domain/ViewModels/System/UserInfoView.cs

@@ -94,10 +94,10 @@ namespace OASystem.Domain.ViewModels.System
     /// </summary>
     /// </summary>
     public class UserLoginInfoView
     public class UserLoginInfoView
     {
     {
-        ///// <summary>
+        /// <summary>
-        ///// 工号
+        /// 工号
-        ///// </summary>
+        /// </summary>
-        ////public string Number { get; set; }
+        //public string Number { get; set; }
 
 
         /// <summary>
         /// <summary>
         /// 用户Id
         /// 用户Id
@@ -127,7 +127,7 @@ namespace OASystem.Domain.ViewModels.System
         /// <summary>
         /// <summary>
         /// 邮箱
         /// 邮箱
         /// </summary>
         /// </summary>
-        public int DepId { get; set; }
+        public string Email { get; set; }
 
 
     }
     }
     /// <summary>
     /// <summary>

+ 11 - 0
OASystem/OASystem.Infrastructure/Repositories/BaseRepository.cs

@@ -177,6 +177,7 @@ namespace OASystem.Infrastructure.Repositories
             }).ExecuteCommandAsync();
             }).ExecuteCommandAsync();
             return result > 0;
             return result > 0;
         }
         }
+       
         public virtual async Task<bool> SoftDeleteAsync(Expression<Func<TEntity, bool>> wherexp)
         public virtual async Task<bool> SoftDeleteAsync(Expression<Func<TEntity, bool>> wherexp)
         {
         {
             var result = await _sqlSugar.Updateable<TEntity>().Where(wherexp).SetColumns(a => new TEntity()
             var result = await _sqlSugar.Updateable<TEntity>().Where(wherexp).SetColumns(a => new TEntity()
@@ -244,6 +245,16 @@ namespace OASystem.Infrastructure.Repositories
             }).ExecuteCommandAsync();
             }).ExecuteCommandAsync();
             return result > 0;
             return result > 0;
         }
         }
+        public virtual async Task<bool> SoftDeleteByIdAsync<T>(string id,int DeleteUserId) where T : EntityBase, new()
+        {
+            var result = await _sqlSugar.Updateable<TEntity>().Where(a => a.Id.Equals(id)).SetColumns(a => new TEntity()
+            {
+                IsDel = 1,
+                DeleteUserId = DeleteUserId,
+                DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
+            }).ExecuteCommandAsync();
+            return result > 0;
+        }
         public virtual async Task<bool> SoftDeleteAsync<T>(Expression<Func<TEntity, bool>> wherexp) where T : EntityBase, new()
         public virtual async Task<bool> SoftDeleteAsync<T>(Expression<Func<TEntity, bool>> wherexp) where T : EntityBase, new()
         {
         {
             var result = await _sqlSugar.Updateable<TEntity>().Where(wherexp).SetColumns(a => new TEntity()
             var result = await _sqlSugar.Updateable<TEntity>().Where(wherexp).SetColumns(a => new TEntity()

+ 104 - 35
OASystem/OASystem.Infrastructure/Repositories/Groups/DelegationInfoRepository.cs

@@ -6,6 +6,7 @@ using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.ViewModels.Group;
 using OASystem.Domain.ViewModels.Group;
 using OASystem.Infrastructure.Repositories.System;
 using OASystem.Infrastructure.Repositories.System;
 using Org.BouncyCastle.Utilities.Collections;
 using Org.BouncyCastle.Utilities.Collections;
+using Serilog;
 using SqlSugar;
 using SqlSugar;
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
@@ -22,6 +23,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
     {
     {
         private readonly SetDataRepository _setDataRepository;
         private readonly SetDataRepository _setDataRepository;
         private readonly UsersRepository _usersRepository;
         private readonly UsersRepository _usersRepository;
+        //public readonly Logs _logs;
 
 
         public DelegationInfoRepository(SqlSugarClient sqlSugar, SetDataRepository setDataRepository, UsersRepository usersRepository)
         public DelegationInfoRepository(SqlSugarClient sqlSugar, SetDataRepository setDataRepository, UsersRepository usersRepository)
             : base(sqlSugar)
             : base(sqlSugar)
@@ -39,7 +41,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
         {
         {
             Result result = new Result() { Code = -2, Msg = "未知错误" };
             Result result = new Result() { Code = -2, Msg = "未知错误" };
 
 
-            if (dto.PortType == 1) //web
+            if (dto.PortType == 1 || dto.PortType == 2) //web
             {
             {
                 string sql = string.Format(@"Select gdi.Id,SalesQuoteNo,TourCode,ssd.Name TeamType,ssd1.Name TeamLev,TeamName,ClientName,
                 string sql = string.Format(@"Select gdi.Id,SalesQuoteNo,TourCode,ssd.Name TeamType,ssd1.Name TeamLev,TeamName,ClientName,
                                                     ClientUnit,VisitDate,VisitDays,VisitPNumber,su.CnName JietuanOperator,IsSure
                                                     ClientUnit,VisitDate,VisitDays,VisitPNumber,su.CnName JietuanOperator,IsSure
@@ -77,7 +79,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
         {
         {
             Result result = new Result() { Code = -2, Msg = "未知错误" };
             Result result = new Result() { Code = -2, Msg = "未知错误" };
 
 
-            if (dto.PortType == 1) //web
+            if (dto.PortType == 1 || dto.PortType == 2) //web
             {
             {
                 string sql = string.Format(@"Select Id,SalesQuoteNo,JietuanOperator,TeamLevSId,TeamDid,TeamName,ClientName,
                 string sql = string.Format(@"Select Id,SalesQuoteNo,JietuanOperator,TeamLevSId,TeamDid,TeamName,ClientName,
 	                                                ClientUnit,VisitCountry,VisitDate,VisitDays,VisitPNumber,TontractTime,
 	                                                ClientUnit,VisitCountry,VisitDate,VisitDays,VisitPNumber,TontractTime,
@@ -112,41 +114,50 @@ namespace OASystem.Infrastructure.Repositories.Groups
         {
         {
             Result result = new Result() { Code = -2, Msg = "未知错误" };
             Result result = new Result() { Code = -2, Msg = "未知错误" };
 
 
-            if (dto.PortType == 1) //web
+            try
             {
             {
-                dynamic? teamTypeData1 = null;
+                if (dto.PortType == 1 || dto.PortType == 2) //web
-                string teamTypeSql = string.Format(@"Select Id,Name From  Sys_SetData Where STid = {0} And IsDel = {1}", 10, 0);
-                var teamTypeData = await _sqlSugar.SqlQueryable<SetDataInfoView>(teamTypeSql).ToListAsync(); ;  //团组分类 10
-                if (teamTypeData.Count > 0)
                 {
                 {
-                    teamTypeData1 = teamTypeData;
+                    dynamic? teamTypeData1 = null;
-                }
+                    string teamTypeSql = string.Format(@"Select Id,Name From  Sys_SetData Where STid = {0} And IsDel = {1}", 10, 0);
+                    var teamTypeData = await _sqlSugar.SqlQueryable<SetDataInfoView>(teamTypeSql).ToListAsync(); ;  //团组分类 10
+                    if (teamTypeData.Count > 0)
+                    {
+                        teamTypeData1 = teamTypeData;
+                    }
 
 
-                dynamic? teamLevData1 = null;
+                    dynamic? teamLevData1 = null;
-                string teamLevSql = string.Format(@"Select Id,Name From  Sys_SetData Where STid = {0} And IsDel = {1}", 56, 0);
+                    string teamLevSql = string.Format(@"Select Id,Name From  Sys_SetData Where STid = {0} And IsDel = {1}", 56, 0);
-                var teamLevData = await _sqlSugar.SqlQueryable<SetDataInfoView>(teamLevSql).ToListAsync(); ;  //团组等级 56
+                    var teamLevData = await _sqlSugar.SqlQueryable<SetDataInfoView>(teamLevSql).ToListAsync(); ;  //团组等级 56
-                if (teamLevData.Count > 0)
+                    if (teamLevData.Count > 0)
-                {
+                    {
-                    teamLevData1 = teamLevData;
+                        teamLevData1 = teamLevData;
-                }
+                    }
 
 
-                dynamic? userData1 = null;
+                    dynamic? userData1 = null;
-                string userSql = string.Format(@"Select Id,CnName From  Sys_Users Where IsDel = {0}", 0);
+                    string userSql = string.Format(@"Select Id,CnName From  Sys_Users Where IsDel = {0}", 0);
-                var userData = await _sqlSugar.SqlQueryable<UserNameView>(userSql).ToListAsync(); ;
+                    var userData = await _sqlSugar.SqlQueryable<UserNameView>(userSql).ToListAsync(); ;
-                if (userData.Count > 0)
+                    if (userData.Count > 0)
-                {
+                    {
-                    userData1 = userData;
+                        userData1 = userData;
+                    }
+
+                    result.Code = 0;
+                    result.Msg = "成功!";
+                    result.Data = new
+                    {
+                        teamTypeData = teamTypeData1,
+                        teamLevData = teamLevData1,
+                        userData = userData1
+                    };
                 }
                 }
+            }
+            catch (Exception)
+            {
 
 
-                result.Code = 0;
+                throw;
-                result.Msg = "成功!";
-                result.Data = new
-                {
-                    teamTypeData = teamTypeData1,
-                    teamLevData = teamLevData1,
-                    userData = userData1
-                };
             }
             }
+            
 
 
             return result;
             return result;
         }
         }
@@ -160,7 +171,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
         {
         {
             Result result = new Result() { Code = -2, Msg = "未知错误" };
             Result result = new Result() { Code = -2, Msg = "未知错误" };
 
 
-            if (dto.PortType == 1) //web
+            if (dto.PortType == 1 || dto.PortType == 2) //web
             {
             {
                 Grp_DelegationInfo groupInfo = new Grp_DelegationInfo()
                 Grp_DelegationInfo groupInfo = new Grp_DelegationInfo()
                 {
                 {
@@ -170,7 +181,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                     ClientUnit = dto.ClientUnit,
                     ClientUnit = dto.ClientUnit,
                     TeamName = dto.TeamName,
                     TeamName = dto.TeamName,
                     TeamDid = dto.TeamDid,
                     TeamDid = dto.TeamDid,
-                    VisitDate = dto.VisitDate,
+                    VisitDate = Convert.ToDateTime(dto.VisitDate),
                     VisitCountry = dto.VisitCountry,
                     VisitCountry = dto.VisitCountry,
                     VisitPurpose = dto.VisitPurpose,
                     VisitPurpose = dto.VisitPurpose,
                     VisitDays = dto.VisitDays,
                     VisitDays = dto.VisitDays,
@@ -184,7 +195,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                     CGRWSPWH = dto.CGRWSPWH,
                     CGRWSPWH = dto.CGRWSPWH,
                     ZZSCBMMC = dto.ZZSCBMMC,
                     ZZSCBMMC = dto.ZZSCBMMC,
                     ZZSCSPWH = dto.ZZSCSPWH,
                     ZZSCSPWH = dto.ZZSCSPWH,
-                    TontractTime = dto.TontractTime,
+                    TontractTime = Convert.ToDateTime(dto.TontractTime),
                     PaymentMoney = dto.PaymentMoney,
                     PaymentMoney = dto.PaymentMoney,
                     PayDay = dto.PayDay
                     PayDay = dto.PayDay
                 };
                 };
@@ -212,7 +223,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                     string teamCode = "";
                     string teamCode = "";
                     while (true)
                     while (true)
                     {
                     {
-                        teamCode = Tools.CommonFun.GetRandomAllStr(6);
+                        teamCode = Tools.CommonFun.GetRandomStr(6);
 
 
                         if (!teamCodeItem.Equals(teamCode))
                         if (!teamCodeItem.Equals(teamCode))
                         {
                         {
@@ -251,7 +262,31 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 }  //增加
                 }  //增加
                 else if (dto.Status == 2)     //修改
                 else if (dto.Status == 2)     //修改
                 {
                 {
-                    var updateStatus = await UpdateAsync(a => a.Id == dto.Id, a => groupInfo);
+                    var updateStatus = await UpdateAsync(a => a.Id == dto.Id, a => new Grp_DelegationInfo {
+                        SalesQuoteNo = dto.SalesQuoteNo,
+                        TeamLevSId = dto.TeamLevSId,
+                        ClientName = dto.ClientName,
+                        ClientUnit = dto.ClientUnit,
+                        TeamName = dto.TeamName,
+                        TeamDid = dto.TeamDid,
+                        VisitDate = Convert.ToDateTime(dto.VisitDate),
+                        VisitCountry = dto.VisitCountry,
+                        VisitPurpose = dto.VisitPurpose,
+                        VisitDays = dto.VisitDays,
+                        VisitPNumber = dto.VisitPNumber,
+                        SpecialNeeds = dto.SpecialNeeds,
+                        OtherNeeds = dto.OtherNeeds,
+                        Remark = dto.Remark,
+                        JietuanOperator = dto.UserId,
+                        TellPhone = dto.TellPhone,
+                        CGRWSPBMMC = dto.CGRWSPBMMC,
+                        CGRWSPWH = dto.CGRWSPWH,
+                        ZZSCBMMC = dto.ZZSCBMMC,
+                        ZZSCSPWH = dto.ZZSCSPWH,
+                        TontractTime = Convert.ToDateTime(dto.TontractTime),
+                        PaymentMoney = dto.PaymentMoney,
+                        PayDay = dto.PayDay
+                    });
 
 
                     if (updateStatus)
                     if (updateStatus)
                     {
                     {
@@ -286,6 +321,40 @@ namespace OASystem.Infrastructure.Repositories.Groups
             return result;
             return result;
         }
         }
 
 
+
+        /// <summary>
+        /// 团组信息操作
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> GroupDel(GroupDelDto dto)
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+
+            if (dto.PortType == 1 || dto.PortType == 2) //web
+            {
+                var deleteStatus = await UpdateAsync(a => a.Id == dto.Id, a => new Grp_DelegationInfo
+                {
+                    DeleteUserId = dto.UserId,
+                    DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+                    IsDel = 1
+                });
+
+                if (deleteStatus)
+                {
+                    result.Code = 0;
+                    result.Msg = "删除成功!";
+                }
+                else
+                {
+                    result.Msg = "删除失败!";
+                }
+                
+            }
+
+            return result;
+        }
+
         /// <summary>
         /// <summary>
         /// 获取销售报价号
         /// 获取销售报价号
         /// </summary>
         /// </summary>

+ 19 - 9
OASystem/OASystem.Infrastructure/Repositories/Groups/GrpScheduleRepository.cs

@@ -15,7 +15,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
         {
         {
         }
         }
 
 
-        public string SetSqlWhere_GrpScheduleDto(Grp_ScheduleDto _dto)
+        public string SetSql_GrpScheduleDto(Grp_ScheduleDto _dto)
         {
         {
             string sqlWhere = string.Empty;
             string sqlWhere = string.Empty;
 
 
@@ -35,7 +35,12 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 sqlWhere = r.Replace(sqlWhere, "Where", 1);
                 sqlWhere = r.Replace(sqlWhere, "Where", 1);
             }
             }
 
 
-            return sqlWhere;
+            string sql = string.Format(@" Select s.Id,s.DiId,di.TeamName as DeleName,s.PrimaryStep,s.ExpectBeginDt,s.ExpectEndDt,s.Leader,s.Exception,u.CnName as LeaderName
+            From Grp_Schedule as s With(Nolock) Inner Join Grp_DelegationInfo as di With(Nolock) On s.DiId=di.Id
+            Inner Join Sys_Users as u With(Nolock) On s.Leader=u.Id
+            {0} ", sqlWhere);
+
+            return sql;
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -47,18 +52,23 @@ namespace OASystem.Infrastructure.Repositories.Groups
         public async Task<Grp_ScheduleView> GetView_GrpSchedule(Grp_ScheduleDto _dto)
         public async Task<Grp_ScheduleView> GetView_GrpSchedule(Grp_ScheduleDto _dto)
         {
         {
             Grp_ScheduleView _view = null;
             Grp_ScheduleView _view = null;
+            string sql = this.SetSql_GrpScheduleDto(_dto);
+            _view = await _sqlSugar.SqlQueryable<Grp_ScheduleView>(sql).FirstAsync();
+            return _view;
+        }
 
 
-            string sqlWhere = this.SetSqlWhere_GrpScheduleDto(_dto);
+        public async Task<List<Grp_ScheduleView>> GetViewList_GrpSchedule(Grp_ScheduleDto _dto)
-            string sql = string.Format(@" Select s.Id,s.DiId,di.TeamName as DeleName,s.PrimaryStep,s.ExpectBeginDt,s.ExpectEndDt,s.Leader,s.Exception,u.CnName as LeaderName
+        {
-            From Grp_Schedule as s With(Nolock) Inner Join Grp_DelegationInfo as di With(Nolock) On s.DiId=di.Id
+            List<Grp_ScheduleView> _viewList = new List<Grp_ScheduleView>();
-            Inner Join Sys_Users as u With(Nolock) On s.Leader=u.Id
+            string sqlInner = this.SetSql_GrpScheduleDto(_dto);
-            {0} ", sqlWhere);
+            string sql = string.Format(@" Select * From ( Select ROW_NUMBER() Over(order By Id desc) as RowNumber,* From ( {2} ) ) as tb Where tb.RowNumber Between {0} And {1} ", (((_dto.PageIndex > 0) ? (_dto.PageIndex - 1) : 0) * _dto.PageSize) + 1, (((_dto.PageIndex > 0) ? (_dto.PageIndex - 1) : 0) + 1) * _dto.PageSize, sqlInner);
 
 
-            _view = await _sqlSugar.SqlQueryable<Grp_ScheduleView>(sql).FirstAsync();
+            _viewList = await _sqlSugar.SqlQueryable<Grp_ScheduleView>(sql).ToListAsync();
 
 
-            return _view;
+            return _viewList;
         }
         }
 
 
 
 
+
     }
     }
 }
 }

+ 17 - 2
OASystem/OASystem.Infrastructure/Repositories/Login/LoginRepository.cs

@@ -57,6 +57,8 @@ namespace OASystem.Infrastructure.Repositories.Login
                 return result;
                 return result;
             }
             }
 
 
+            //portType 处理端口 
+            dynamic longinData = null;
 
 
             //员工数据
             //员工数据
             string sqlWhere = string.Format(" Where su.Id={0}", _entity.Id);
             string sqlWhere = string.Format(" Where su.Id={0}", _entity.Id);
@@ -65,11 +67,24 @@ namespace OASystem.Infrastructure.Repositories.Login
                                                   Inner Join Sys_Company sc On su.CompanyId = sc.Id
                                                   Inner Join Sys_Company sc On su.CompanyId = sc.Id
                                                   Inner Join Sys_Department sd On su.DepId = sd.Id
                                                   Inner Join Sys_Department sd On su.DepId = sd.Id
                                                   Inner Join Sys_JobPost sjp On su.JobPostId = sjp.Id {0}", sqlWhere);
                                                   Inner Join Sys_JobPost sjp On su.JobPostId = sjp.Id {0}", sqlWhere);
-            var _userBasicInfo = await _sqlSugar.SqlQueryable<UserLoginInfoView>(userSqlWhere).FirstAsync();
+           
+
+            if (loginDto.PortType == 1) //web
+            {
+                var _userBasicInfo = await _sqlSugar.SqlQueryable<UserLoginInfoView>(userSqlWhere).FirstAsync();
+
+                longinData = _userBasicInfo;
+
+            }
+            else if (loginDto.PortType == 2) // Android
+            {
+                var _userBasicInfo = await _sqlSugar.SqlQueryable<UserLoginInfoView>(userSqlWhere).FirstAsync();
+                longinData = _userBasicInfo;
+            }
 
 
             result.Code = 0;
             result.Code = 0;
             result.Msg = "登录成功!";
             result.Msg = "登录成功!";
-            result.Data = _userBasicInfo;
+            result.Data = longinData;
             return result;
             return result;
 
 
         }
         }

+ 12 - 0
OASystem/OASystem.Infrastructure/Repositories/Resource/CarDataRepository.cs

@@ -0,0 +1,12 @@
+using OASystem.Domain.Entities.Resource;
+using OASystem.Domain.ViewModels.Resource;
+namespace OASystem.Infrastructure.Repositories.Resource
+{
+    public class CarDataRepository: BaseRepository<Res_CarData, CarDataView>
+    {
+        public CarDataRepository(SqlSugarClient sqlSugar) : base(sqlSugar)
+        {
+
+        }
+    }
+}

+ 129 - 21
OASystem/OASystem.Infrastructure/Repositories/System/MessageRepository.cs

@@ -3,6 +3,7 @@ using OASystem.Domain.Dtos.System;
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.Linq;
 using System.Linq;
+using System.Security.Cryptography;
 using System.Text;
 using System.Text;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
 
 
@@ -85,40 +86,147 @@ namespace OASystem.Infrastructure.Repositories.System
         }
         }
 
 
         /// <summary>
         /// <summary>
-        /// 获取消息 List
+        /// 获取消息列表
         /// </summary>
         /// </summary>
         /// <param name="uId">可读用户Id</param>
         /// <param name="uId">可读用户Id</param>
         /// <returns></returns>
         /// <returns></returns>
-        public async Task<Result> GetMsgList(int uId)
+        public async Task<Result> GetMsgList(MsgDto dto)
         {
         {
             Result result = new Result() { Code = -1, Msg = "未知错误", Data = null };
             Result result = new Result() { Code = -1, Msg = "未知错误", Data = null };
 
 
-            string msgSqlWhere = string.Format(@"Select sm.Type,sm.Title,sm.Content,sd.DepName issuerDep,su.CnName issuerUser, 
+            if (dto.PortType == 1 || dto.PortType == 2)  // web/android
-                                                        sm.ReleaseTime,smra.Id AuthId,smra.ReadableUId,smra.IsRead,smra.ReadTime 
-                                                 From Sys_Message sm 
-                                                 Inner Join Sys_MessageReadAuth smra On sm.Id = smra.MsgId
-                                                 Inner Join Sys_Users su On sm.IssuerId = su.Id
-                                                 Inner Join Sys_Department sd On su.DepId = sd.Id
-                                                 Inner Join Sys_Users suAuth On smra.ReadableUId = suAuth.Id
-                                                 Where sm.IsDel = 0
-                                                 And smra.IsDel = 0 
-                                                 And smra.ReadableUId = {0}
-                                                 Order By ReleaseTime Desc ", uId);
-            var _readableMsgList = await _sqlSugar.SqlQueryable<ReadbleMessageView>(msgSqlWhere).ToListAsync();
-            if (_readableMsgList.Count > 0)
             {
             {
-                result.Code = 0;
+                string msgSqlWhere = string.Format(@"Select sm.Type,sm.Title,sm.Content,sd.DepName issuerDep,su.CnName issuerUser, 
-                result.Msg = "成功!";
+                                                            sm.ReleaseTime,smra.Id AuthId,smra.ReadableUId,smra.IsRead,smra.ReadTime 
-                result.Data = _readableMsgList;
+                                                     From Sys_Message sm 
+                                                     Inner Join Sys_MessageReadAuth smra On sm.Id = smra.MsgId
+                                                     Inner Join Sys_Users su On sm.IssuerId = su.Id
+                                                     Inner Join Sys_Department sd On su.DepId = sd.Id
+                                                     Inner Join Sys_Users suAuth On smra.ReadableUId = suAuth.Id
+                                                     Where sm.IsDel = 0
+                                                     And smra.IsDel = 0 
+                                                     And smra.ReadableUId = {0}
+                                                     Order By ReleaseTime Desc ", dto.UserId);
+                var _readableMsgList = await _sqlSugar.SqlQueryable<ReadbleMessageView>(msgSqlWhere).ToListAsync();
+                if (_readableMsgList.Count > 0)
+                {
+                    result.Code = 0;
+                    result.Msg = "成功!";
+                    result.Data = _readableMsgList;
+                }
+                else
+                {
+                    result.Msg = "暂无该用户的消息!";
+                }
             }
             }
-            else
+
+            return result;
+        }
+
+        /// <summary>
+        /// 获取消息详细
+        /// </summary>
+        /// <param name="dto">msgInfo请求dto</param>
+        /// <returns></returns>
+        public async Task<Result> GetMsgInfo(MsgInfoDto dto)
+        {
+            Result result = new Result() { Code = -1, Msg = "未知错误", Data = null };
+
+            if (dto.PortType == 1 || dto.PortType == 2)
             {
             {
-                result.Msg = "暂无该用户的消息!";
+                string msgSqlWhere = string.Format(@"Select sm.Type,sc.CompanyName,sd.DepName,sjp.JobName,su.CnName,sm.ReleaseTime,
+	                                                        sm.Title,sm.Content,smra.IsRead,smra.ReadTime
+                                                     From Sys_Message sm
+                                                     Inner Join Sys_MessageReadAuth smra On sm.Id = smra.MsgId
+                                                     Inner Join Sys_Users su On sm.IssuerId = su.id
+                                                     Inner Join Sys_JobPost sjp On su.JobPostId = sjp.Id
+                                                     Inner Join Sys_Department sd On su.DepId = sd.Id
+                                                     Inner Join Sys_Company sc On su.CompanyId = sc.Id
+                                                     Where sm.IsDel = 0 
+                                                     And sm.Id = {0}
+                                                     And smra.IsDel = 0", dto.MsgId);
+                var _readableMsgInfo = await _sqlSugar.SqlQueryable<MessageInfoView>(msgSqlWhere).FirstAsync();
+                if (_readableMsgInfo != null)
+                {
+                    result.Code = 0;
+                    result.Msg = "成功!";
+                    result.Data = _readableMsgInfo;
+                }
+                else
+                {
+                    result.Msg = "暂无该用户的消息!";
+                }
             }
             }
 
 
             return result;
             return result;
         }
         }
-        
 
 
+        /// <summary>
+        /// 消息设置已读
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> SetMsgRead(MsgSetReadDto dto)
+        {
+            Result result = new Result() { Code = -1, Msg = "未知错误", Data = null };
+
+            if (dto.PortType == 1 || dto.PortType == 2)
+            {
+
+                  var msgReadStatus = await _sqlSugar.Updateable<Sys_MessageReadAuth>()
+                                      .Where(a => a.Id == dto.MsgAnthId)
+                                      .SetColumns(a => new Sys_MessageReadAuth
+                                      {
+                                          IsRead = 1
+                                      }).ExecuteCommandAsync();
+
+                if (msgReadStatus > 0)
+                {
+                    result.Code = 0;
+                    result.Msg = "成功!";
+                }
+                else
+                {
+                    result.Msg = "失败!";
+                }
+            }
+
+            return result;
+        }
+
+        /// <summary>
+        /// 消息设置已读
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> DelMsg(MsgDeleteDto dto)
+        {
+            Result result = new Result() { Code = -1, Msg = "未知错误", Data = null };
+
+            if (dto.PortType == 1 || dto.PortType == 2)
+            {
+
+                var msgReadStatus = await _sqlSugar.Updateable<Sys_Message>()
+                                    .Where(a => a.Id == dto.MsgId)
+                                    .SetColumns(a => new Sys_Message
+                                    {
+                                        IsDel = 1,
+                                        DeleteUserId = dto.UserId,
+                                        DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
+                                    }).ExecuteCommandAsync();
+
+                if (msgReadStatus > 0)
+                {
+                    result.Code = 0;
+                    result.Msg = "成功!";
+                }
+                else
+                {
+                    result.Msg = "操作失败!";
+                }
+            }
+
+            return result;
+        }
     }
     }
 }
 }

+ 1 - 1
OASystem/OASystem.Infrastructure/Repositories/System/UsersRepository.cs

@@ -113,7 +113,7 @@ namespace OASystem.Infrastructure.Repositories.System
         {
         {
             Result result = new Result() { Code = -2 };
             Result result = new Result() { Code = -2 };
 
 
-            if (portType == 1) //web
+            if (portType == 1 || portType == 2) //web
             {
             {
                 string sql = string.Format(@"Select Id,CnName From  Sys_Users");
                 string sql = string.Format(@"Select Id,CnName From  Sys_Users");
                 var _userList = await _sqlSugar.SqlQueryable<UserNameView>(sql).ToListAsync();
                 var _userList = await _sqlSugar.SqlQueryable<UserNameView>(sql).ToListAsync();