Browse Source

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

yuanrf 4 months ago
parent
commit
6f53fa7d11

+ 2 - 0
OASystem/EntitySync/Program.cs

@@ -1,5 +1,6 @@
 using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.Entities.PersonnelModule;
+using OASystem.Domain.Entities.Resource;
 using OASystem.Domain.Entities.System;
 using SqlSugar;
 
@@ -139,6 +140,7 @@ db.CodeFirst.SetStringDefaultLength(50).BackupTable().InitTables(new Type[]
     //typeof(Pm_GoodsInfo),//物品详细表 
     //typeof(Grp_Opinionaire),//团组接待意见调查 
     //typeof(Sys_ExchangeRateRecord),//团组接待意见调查 
+    typeof(Res_TranslatorLibrary),//翻译人员库 
 
 });
 Console.WriteLine("数据库结构同步完成!");

+ 242 - 1
OASystem/OASystem.Api/Controllers/ResourceController.cs

@@ -1,10 +1,13 @@
 using Aspose.Words;
+using EyeSoft.Extensions;
 using OASystem.API.OAMethodLib;
 using OASystem.API.OAMethodLib.QiYeWeChatAPI.AppNotice;
 using OASystem.Domain.Dtos.Groups;
 using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.ViewModels.Groups;
 using OASystem.Infrastructure.Repositories.Groups;
+using Org.BouncyCastle.Utilities.Encoders;
+using static OASystem.API.OAMethodLib.JWTHelper;
 
 namespace OASystem.API.Controllers
 {
@@ -33,6 +36,7 @@ namespace OASystem.API.Controllers
         private readonly TicketBlackCodeRepository _ticketBlackCodeRep;
         private readonly TourClientListRepository _tourClientListRep;
         private readonly DelegationInfoRepository _delegationInfoRep;
+        private readonly TranslatorLibraryRepoository _translatorRep;
 
         public ResourceController(IMapper mapper, 
                                   IConfiguration config, 
@@ -51,7 +55,8 @@ namespace OASystem.API.Controllers
                                   AskDataRepository askDataRep,
                                   TicketBlackCodeRepository ticketBlackCodeRep, 
                                   TourClientListRepository tourClientListRep, 
-                                  DelegationInfoRepository delegationInfoRep)
+                                  DelegationInfoRepository delegationInfoRep,
+                                  TranslatorLibraryRepoository translatorRep)
         {
             _mapper = mapper;
             _config = config;
@@ -71,6 +76,7 @@ namespace OASystem.API.Controllers
             _ticketBlackCodeRep = ticketBlackCodeRep;
             _tourClientListRep = tourClientListRep;
             _delegationInfoRep = delegationInfoRep;
+            _translatorRep = translatorRep;
         }
 
 
@@ -2788,6 +2794,241 @@ Inner Join Sys_Department as d With(Nolock) On u.DepId=d.Id Where m.Id={0} ", _m
             }
         }
         #endregion
+
+        #region 翻译人员
+
+        /// <summary>
+        /// 翻译人员库
+        /// Init
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpGet()]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> TranslatorLibraryInit()
+        {
+            var view = await _sqlSugar.Queryable<Sys_SetData>()
+                .Where(x => x.IsDel == 0 && x.STid == 66)
+                .Select(x => new {
+                    x.Id,
+                    x.Name,
+                })
+                .ToListAsync();
+
+            return Ok(JsonView(view));
+        }
+
+        /// <summary>
+        /// 翻译人员库
+        /// 详情
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpGet("id")]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> TranslatorLibraryInfo(int id)
+        {
+            if (id <1 ) return Ok(JsonView(false,"请传入有效的Id!"));
+
+            var view = await _translatorRep.Query(x => x.Id == id)
+                .Select(x => new { 
+                    x.Id,
+                    x.Name,
+                    x.Sex,
+                    x.Photo,
+                    x.Tel,
+                    x.Email,
+                    x.WechatNo,
+                    x.OtherSocialAccounts,
+                    x.Language,
+                    x.Price,
+                    x.Currency,
+                    x.Files
+                })
+                .FirstAsync();
+
+            return Ok(JsonView(view));
+        }
+
+
+        /// <summary>
+        /// 翻译人员库
+        /// Item
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> TranslatorLibraryItem(TranslatorLibraryItemDto dto)
+        {
+            if (dto.PortType < 1 || dto.PortType > 3) return Ok(JsonView(false, MsgTips.Port));
+
+            RefAsync<int> total = 0;
+            var view = await _sqlSugar.Queryable<Res_TranslatorLibrary>()
+                .Where(x => x.IsDel == 0)
+                .WhereIF(!string.IsNullOrEmpty(dto.Name), x => x.Name.Contains(dto.Name))
+                .Select(x => new
+                {
+                    x.Id,
+                    x.Area,
+                    x.Name,
+                    Sex = x.Sex == 0 ? "未设置" : x.Sex == 1 ? "男" : "女",
+                    x.Tel,
+                    x.Email,
+                    x.WechatNo,
+                    x.Language,
+                    x.Price,
+                    x.Currency,
+                    //Currency = SqlFunc.Subqueryable<Sys_SetData>().Where(x1 => x1.Id == x.Currency).Select(x1 => x1.Name) ?? "-",
+                    CreateUserName = SqlFunc.Subqueryable<Sys_Users>().Where(x1 => x1.Id == x.CreateUserId).Select(x1 => x1.CnName) ?? "-",
+                    x.CreateTime
+                })
+                .OrderByDescending(x => x.CreateTime)
+                .ToPageListAsync(dto.PageIndex, dto.PageSize, total);
+
+            return Ok(JsonView(view, total));
+        }
+
+        /// <summary>
+        /// 翻译人员库
+        /// OP
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> TranslatorLibraryOp(TranslatorLibraryOpDto dto)
+        {
+            if (dto.PortType < 1 || dto.PortType > 3) return Ok(JsonView(false, MsgTips.Port));
+            if (dto.OpStatus < 1 || dto.OpStatus > 2) return Ok(JsonView(false, MsgTips.Status));
+
+            var currUserInfo = JwtHelper.SerializeJwt(HttpContext.Request.Headers.Authorization);
+            if (currUserInfo == null) return Ok(JsonView(false, "请传入token!"));
+
+            var fileNames = new List<string>();
+            //D:\FTP\File\OA2023\Office\GrpFile\TranslatorLibrary
+            var fileBasePath = $"{AppSettingsHelper.Get("GrpFileBasePath")}TranslatorLibrary";
+            #region 保存文件
+            foreach (var item in dto.Files)
+            {
+                if (item.Length < 1) continue;
+
+                if (!System.IO.Directory.Exists(fileBasePath))
+                {
+                    System.IO.Directory.CreateDirectory(fileBasePath);
+                }
+
+                var file = item;
+
+                // 将文件保存到指定位置
+                var filePath = Path.Combine(fileBasePath, file.FileName);
+                using (var stream = new FileStream(filePath, FileMode.Create))
+                {
+                    await file.CopyToAsync(stream);
+                }
+
+                //验证文件是否上传成功
+                if (!System.IO.File.Exists(filePath))
+                {
+                    foreach (var filePathStr in fileNames)
+                    {
+                        System.IO.File.Delete(Path.Combine(fileBasePath, filePathStr));
+                    }
+                    return Ok(JsonView(false, "文件上传失败!"));
+                }
+                fileNames.Add(file.Name);
+            }
+
+            #endregion
+
+            #region 参数处理
+
+            var translatorInfo = _mapper.Map<Res_TranslatorLibrary>(dto);
+
+            #endregion
+
+
+            if (dto.OpStatus == 1)
+            {
+                translatorInfo.CreateUserId = currUserInfo.UserId;
+                if (fileNames.Count > 0)
+                {
+                    translatorInfo.Files = JsonConvert.SerializeObject(fileNames);
+                }
+
+                var add = await _translatorRep.AddAsync(translatorInfo);
+                if (add > 0) return Ok(JsonView(true));
+            }
+            else if (dto.OpStatus == 2)
+            {
+                var info = await _translatorRep.Query(x => x.Id == dto.Id).FirstAsync();
+                if (info != null)
+                {
+                    if (!string.IsNullOrEmpty(info.Files))
+                    {
+                        try
+                        {
+                            var selectFiles = JsonConvert.DeserializeObject<List<string>>(info.Files);
+                            fileNames.AddRange(selectFiles);
+                        }
+                        catch (Exception)
+                        {
+
+                        }
+                    }
+                }
+                if (fileNames.Count > 0)
+                {
+                    translatorInfo.Files = JsonConvert.SerializeObject(fileNames);
+                }
+
+                var upd = await _translatorRep
+                    .UpdateAsync(x => x.Id == dto.Id, x => new Res_TranslatorLibrary()
+                    {
+                        Area = translatorInfo.Area,
+                        Name = translatorInfo.Name,
+                        Sex = translatorInfo.Sex,
+                        Photo = translatorInfo.Photo,
+                        Tel = translatorInfo.Tel,
+                        Email = translatorInfo.Email,
+                        WechatNo = translatorInfo.WechatNo,
+                        OtherSocialAccounts = translatorInfo.OtherSocialAccounts,
+                        Language = translatorInfo.Language,
+                        Price = translatorInfo.Price,
+                        Currency = translatorInfo.Currency,
+                        Remark = translatorInfo.Remark,
+                        Files = translatorInfo.Files,
+                    });
+
+                if (upd) Ok(JsonView(true));
+            }
+
+            return Ok(JsonView(false));
+        }
+
+
+        /// <summary>
+        /// 翻译人员库
+        /// Del
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpDelete("id")]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> TranslatorLibraryDel(int id)
+        {
+            if (id < 1) return Ok(JsonView(false, MsgTips.Id));
+
+            var currUserInfo = JwtHelper.SerializeJwt(HttpContext.Request.Headers.Authorization);
+            if (currUserInfo == null) return Ok(JsonView(false, "请传入token!"));
+
+            var upd = await _translatorRep.SoftDeleteByIdAsync<Res_TranslatorLibrary>(id.ToString(), currUserInfo.UserId);
+            if (!upd) return Ok(JsonView(false));
+
+            return Ok(JsonView(true));
+        }
+
+        #endregion
     }
 }
 

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

@@ -238,6 +238,10 @@ namespace OASystem.Domain.AutoMappers
             #region 黑屏代码录入
             CreateMap<OpTicketBlackCodeDto, Air_TicketBlackCode>();
             #endregion
+
+            #region 翻译人员库
+            CreateMap<TranslatorLibraryOpDto, Res_TranslatorLibrary>();
+            #endregion
             #endregion
 
             #region Crm

+ 96 - 0
OASystem/OASystem.Domain/Dtos/Resource/TranslatorLibraryDto.cs

@@ -0,0 +1,96 @@
+using Microsoft.AspNetCore.Http;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Resource
+{
+    public class TranslatorLibraryDto
+    {
+    }
+
+    public class TranslatorLibraryItemDto : DtoBase
+    {
+        public string Name { get; set; }
+    }
+
+    public class TranslatorLibraryOpDto:PortDtoBase
+    {
+        /// <summary>
+        /// 操作状态
+        /// 1 添加
+        /// 2 编辑
+        /// </summary>
+        public int OpStatus { get; set; }
+
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 所在地区
+        /// </summary>
+        public string Area { get; set; }
+
+        /// <summary>
+        /// 姓名
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 性别(0:未设置 1:男 2:女)
+        /// </summary>
+        public int Sex { get; set; }
+
+        /// <summary>
+        /// 照片
+        /// 传输图片转base64字符串
+        /// </summary>
+        public string Photo { get; set; }
+
+        /// <summary>
+        /// 联系电话
+        /// </summary>
+        public string Tel { get; set; }
+
+        /// <summary>
+        /// 邮箱号
+        /// </summary>
+        public string Email { get; set; }
+
+        /// <summary>
+        /// 微信号
+        /// </summary>
+        public string WechatNo { get; set; }
+
+        /// <summary>
+        /// 其他社交账号
+        /// </summary>
+        public string OtherSocialAccounts { get; set; }
+
+        /// <summary>
+        /// 语种
+        /// </summary>
+        public string Language { get; set; }
+
+        /// <summary>
+        /// 费用
+        /// </summary>
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 币种
+        /// </summary>
+        public int Currency { get; set; }
+
+        /// <summary>
+        /// 简历或其他证书
+        /// </summary>
+        public IFormFile[] Files { get; set; }
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string Remark { get; set; }
+    }
+}

+ 4 - 5
OASystem/OASystem.Domain/Entities/EntityBase.cs

@@ -11,17 +11,16 @@ namespace OASystem.Domain.Entities
         /// 编号
         /// </summary>
         [SugarColumn(ColumnDescription = "主键", IsPrimaryKey = true, IsIdentity = true, IsNullable = false)]
-        //[DatabaseGenerated(DatabaseGeneratedOption.None)]
         public int Id { get; set; }
         /// <summary>
         /// 创建者Id
         /// </summary>
-        [SugarColumn(ColumnDescription = "创建者Id", IsNullable = true,ColumnDataType ="int")]
+        [SugarColumn(ColumnDescription = "创建者Id", IsNullable = true, ColumnDataType = "int")]
         public int CreateUserId { get; set; }
         /// <summary>
         /// 创建时间
         /// </summary>
-        [SugarColumn(ColumnDescription = "创建时间", IsNullable = true,ColumnDataType = "DateTime")]
+        [SugarColumn(ColumnDescription = "创建时间", IsNullable = true, ColumnDataType = "DateTime")]
         public DateTime CreateTime { get; set; } = DateTime.Now;
         /// <summary>
         /// 删除者Id
@@ -31,12 +30,12 @@ namespace OASystem.Domain.Entities
         /// <summary>
         /// 删除时间
         /// </summary>
-        [SugarColumn(ColumnDescription = "删除时间",IsNullable = true,ColumnDataType = "varchar(30)")]
+        [SugarColumn(ColumnDescription = "删除时间", IsNullable = true, ColumnDataType = "varchar(30)")]
         public string DeleteTime { get; set; }
         /// <summary>
         /// 备注
         /// </summary>
-        [SugarColumn(IsNullable =true,ColumnDataType ="varchar(500)")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
         public string Remark { get; set; }
         /// <summary>
         /// 是否删除

+ 89 - 0
OASystem/OASystem.Domain/Entities/Resource/Res_TranslatorLibrary.cs

@@ -0,0 +1,89 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Entities.Resource
+{
+    /// <summary>
+    /// 翻译人员库
+    /// </summary>
+    [SugarTable("Res_TranslatorLibrary")]
+    public class Res_TranslatorLibrary : EntityBase
+    {
+        /// <summary>
+        /// 所在地区
+        /// </summary>
+        [SugarColumn(ColumnDescription = "所在地区", IsNullable = false, ColumnDataType = "nvarchar(100)")]
+        public string Area { get; set; }
+
+        /// <summary>
+        /// 姓名
+        /// </summary>
+        [SugarColumn(ColumnDescription = "翻译人员姓名", IsNullable = false, ColumnDataType = "nvarchar(100)")]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 性别(0:未设置 1:男 2:女)
+        /// </summary>
+        [SugarColumn(ColumnDescription = "性别(0:未设置 1:男 2:女)", IsNullable = false, ColumnDataType = "int")]
+        public int Sex { get; set; }
+
+        /// <summary>
+        /// 照片
+        /// </summary>
+        [SugarColumn(ColumnDescription = "照片", IsNullable = false, ColumnDataType = "nvarchar(500)")]
+        public string Photo { get; set; }
+
+
+        /// <summary>
+        /// 联系电话
+        /// </summary>
+        [SugarColumn(ColumnDescription = "联系电话", IsNullable = false, ColumnDataType = "varchar(50)")]
+        public string Tel { get; set; }
+
+        /// <summary>
+        /// 邮箱号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "邮箱号", IsNullable = false, ColumnDataType = "varchar(50)")]
+        public string Email { get; set; }
+
+        /// <summary>
+        /// 微信号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "微信号", IsNullable = false, ColumnDataType = "varchar(50)")]
+        public string WechatNo { get; set; }
+
+        /// <summary>
+        /// 其他社交账号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "其他社交账号", IsNullable = false, ColumnDataType = "varchar(50)")]
+        public string OtherSocialAccounts { get; set; }
+
+        /// <summary>
+        /// 语种
+        /// </summary>
+        [SugarColumn(ColumnDescription = "语种", IsNullable = false, ColumnDataType = "varchar(50)")]
+        public string Language { get; set; }
+
+        /// <summary>
+        /// 费用
+        /// </summary>
+        [SugarColumn(ColumnDescription = "费用", IsNullable = false, ColumnDataType = "decimal(10,2)")]
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 币种
+        /// </summary>
+        [SugarColumn(ColumnDescription = "语种", IsNullable = false, ColumnDataType = "int")]
+        public int Currency { get; set; }
+
+        /// <summary>
+        /// 简历或其他证书
+        /// </summary>
+        [SugarColumn(ColumnDescription = "简历或其他证书", IsNullable = false, ColumnDataType = "varchar(200)")]
+        public string Files { get; set; }
+
+    }
+}

+ 13 - 0
OASystem/OASystem.Domain/ViewModels/Resource/TranslatorLibraryView.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 TranslatorLibraryView : Res_TranslatorLibrary
+    {
+    }
+}

+ 23 - 0
OASystem/OASystem.Infrastructure/Repositories/Resource/TranslatorLibraryRepoository.cs

@@ -0,0 +1,23 @@
+using OASystem.Domain.Entities.Resource;
+using OASystem.Domain.ViewModels.Resource;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using AutoMapper;
+
+namespace OASystem.Infrastructure.Repositories.Resource
+{
+    /// <summary>
+    /// 翻译人员 仓储
+    /// </summary>
+    public class TranslatorLibraryRepoository:BaseRepository<Res_TranslatorLibrary, TranslatorLibraryView>
+    {
+        private readonly IMapper _mapper;
+        public TranslatorLibraryRepoository(SqlSugarClient sqlSugar, IMapper mapper) : base(sqlSugar)
+        {
+            _mapper = mapper;
+        }
+    }
+}