Sfoglia il codice sorgente

添加最后更新信息字段及相关逻辑

在多个文件中添加了 `LastUpdateUserId` 和 `LastUpdateTime` 字段及其赋值逻辑,以记录最后更新的用户ID和更新时间。具体修改包括:
- `ResourceController.cs` 中添加赋值逻辑。
- `Res_CarData.cs`、`Res_LocalGuideData.cs` 和 `Res_TranslatorLibrary.cs` 中添加字段。
- `CarDataView.cs` 和 `LocalGuideDataView.cs` 中添加 `LastUpdateDays` 属性。
- `LocalGuideDataView.cs` 中添加 `LastUpdate` 属性。
- `TranslatorLibraryView.cs` 中添加 `LastUpdateDays` 属性。
- 修改 `CarDataRepository.cs` 和 `LocalGuideDataRepository.cs` 的查询逻辑,使用视图类代替资源类,并包含映射后的视图列表。
- `InvitationOfficialActivityDataRepository.cs` 中添加 `LastUpdateTime` 字段的赋值逻辑。
LEIYI 2 mesi fa
parent
commit
87b5b4b555

+ 9 - 2
OASystem/OASystem.Api/Controllers/ResourceController.cs

@@ -194,6 +194,8 @@ namespace OASystem.API.Controllers
                 .First();
             if (carDadaInfo != null) return Ok(JsonView(false, "该信息已存在,请勿重复添加!"));
             var carData = _mapper.Map<Res_CarData>(dto);
+            carData.LastUpdateUserId = dto.CreateUserId;
+            carData.LastUpdateTime = DateTime.Now;
             EncryptionProcessor.EncryptProperties(carData);
             int id = await _carDataRep.AddAsyncReturnId(carData);
             if (id < 1) return Ok(JsonView(false, "添加失败!"));
@@ -214,6 +216,8 @@ namespace OASystem.API.Controllers
             if (string.IsNullOrEmpty(dto.ContactTel)) return Ok(JsonView(false, "请检查联系方式是否填写正确!"));
 
             var carData = _mapper.Map<Res_CarData>(dto);
+
+            carData.LastUpdateTime = DateTime.Now;
             EncryptionProcessor.EncryptProperties(carData);
 
             var res = await _sqlSugar.Updateable(carData)
@@ -4236,6 +4240,8 @@ WHERE
 
             EncryptionProcessor.EncryptProperties(dto);
             var translatorInfo = _mapper.Map<Res_TranslatorLibrary>(dto);
+            translatorInfo.LastUpdateTime = translatorInfo.CreateTime;
+            translatorInfo.CreateUserId = currUserInfo.UserId;
 
             #endregion
 
@@ -4247,7 +4253,6 @@ WHERE
                 if (info != null) return Ok(JsonView(false, "该条数据已存在!"));
 
 
-                translatorInfo.CreateUserId = currUserInfo.UserId;
                 if (fileNames.Count > 0)
                 {
                     translatorInfo.Files = AesEncryptionHelper.Encrypt(JsonConvert.SerializeObject(fileNames));
@@ -4303,7 +4308,7 @@ WHERE
                 {
                     translatorInfo.Files = AesEncryptionHelper.Encrypt(JsonConvert.SerializeObject(fileNames));
                 }
-
+                translatorInfo.LastUpdateTime = DateTime.Now;
                 var upd = await _translatorRep
                     .UpdateAsync(x => x.Id == dto.Id, x => new Res_TranslatorLibrary()
                     {
@@ -4320,6 +4325,8 @@ WHERE
                         Currency = translatorInfo.Currency,
                         Remark = translatorInfo.Remark,
                         Files = translatorInfo.Files,
+                        LastUpdateTime = translatorInfo.LastUpdateTime,
+                        LastUpdateUserId = translatorInfo.LastUpdateUserId,
                     });
 
                 if (upd) {

+ 11 - 0
OASystem/OASystem.Domain/Entities/Resource/Res_CarData.cs

@@ -161,5 +161,16 @@ namespace OASystem.Domain.Entities.Resource
         [Encrypted]
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
         public string DrivingAgeScore { get; set; }
+
+        /// <summary>
+        /// 最后更新者Id
+        /// </summary>
+        [SugarColumn(ColumnDescription = "最后更新者Id", IsNullable = true, ColumnDataType = "int")]
+        public int LastUpdateUserId { get; set; }
+        /// <summary>
+        ///  最后更新时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "最后更新时间", IsNullable = true, ColumnDataType = "DateTime")]
+        public DateTime LastUpdateTime { get; set; }
     }
 }

+ 10 - 2
OASystem/OASystem.Domain/Entities/Resource/Res_LocalGuideData.cs

@@ -138,7 +138,15 @@ namespace OASystem.Domain.Entities.Resource
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int StaffType { get; set; }
 
-        [SugarColumn(IsNullable = true, ColumnDataType = "dateTime")]
-        public DateTime LastUpdate { get; set; } = DateTime.Now;
+        /// <summary>
+        /// 最后更新者Id
+        /// </summary>
+        [SugarColumn(ColumnDescription = "最后更新者Id", IsNullable = true, ColumnDataType = "int")]
+        public int LastUpdateUserId { get; set; }
+        /// <summary>
+        ///  最后更新时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "最后更新时间", IsNullable = true, ColumnDataType = "DateTime")]
+        public DateTime LastUpdateTime { get; set; }
     }
 }

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

@@ -94,5 +94,15 @@ namespace OASystem.Domain.Entities.Resource
         [SugarColumn(ColumnDescription = "简历或其他证书", IsNullable = true, ColumnDataType = "text")]
         public string Files { get; set; }
 
+        /// <summary>
+        /// 最后更新者Id
+        /// </summary>
+        [SugarColumn(ColumnDescription = "最后更新者Id", IsNullable = true, ColumnDataType = "int")]
+        public int LastUpdateUserId { get; set; }
+        /// <summary>
+        ///  最后更新时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "最后更新时间", IsNullable = true, ColumnDataType = "DateTime")]
+        public DateTime LastUpdateTime { get; set; }
     }
 }

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

@@ -11,6 +11,14 @@ namespace OASystem.Domain.ViewModels.Resource
 {
     public class CarDataView : Res_CarData
     {
+        public int LastUpdateDays
+        {
+            get
+            {
+                if (LastUpdateTime == DateTime.MinValue) return DateTime.Now.Subtract(CreateTime).Days;
+                else return DateTime.Now.Subtract(LastUpdateTime).Days;
+            }
+        }
     }
 
     public class CarDataSelectView

+ 18 - 0
OASystem/OASystem.Domain/ViewModels/Resource/LocalGuideDataView.cs

@@ -10,6 +10,24 @@ namespace OASystem.Domain.ViewModels.Resource
 {
     public class LocalGuideDataView : Res_LocalGuideData
     {
+        public DateTime LastUpdate
+        {
+            get
+            {
+                if (LastUpdateTime == DateTime.MinValue || DateTime.Compare(LastUpdateTime, new DateTime(1900, 1, 1, 0, 0, 0)) == 0) return CreateTime;
+                else return LastUpdateTime;
+            }
+        }
+        /// <summary>
+        /// 最后更新时间距今天的天数
+        /// </summary>
+        public int LastUpdateDays
+        {
+            get
+            {
+                return DateTime.Now.Subtract(LastUpdateTime).Days;
+            }
+        }
     }
     public class QueryLocalGuideSelectView
     {

+ 3 - 0
OASystem/OASystem.Domain/ViewModels/Resource/TranslatorLibraryView.cs

@@ -160,6 +160,9 @@ namespace OASystem.Domain.ViewModels.Resource
         [Encrypted]
         public string Remark { get; set; }
         public DateTime LastUpddateTime { get; set; }
+        /// <summary>
+        /// 最后更新时间距今天的天数
+        /// </summary>
         public int LastUpdateDays
         {
             get

+ 5 - 3
OASystem/OASystem.Infrastructure/Repositories/Resource/CarDataRepository.cs

@@ -38,10 +38,12 @@ namespace OASystem.Infrastructure.Repositories.Resource
             if (dto.PortType == 1)
             {
                 string sql = string.Format(@"select * from Res_CarData {0}", sqlWhere);
-                var carDatas = await _sqlSugar.SqlQueryable<Res_CarData>(sql).ToListAsync();
-                if (carDatas.Count == 0) return  new Result() { Code = -1, Msg = "暂无数据" };
+                var carDataView = await _sqlSugar.SqlQueryable<Res_CarData>(sql).ToListAsync();
+                if (carDataView.Count == 0) return  new Result() { Code = -1, Msg = "暂无数据" };
 
-                carDatas = carDatas.OrderByDescending(x => x.CreateTime).ToList();
+                carDataView = carDataView.OrderByDescending(x => x.CreateTime).ToList();
+
+                var carDatas = _mapper.Map<List<CarDataView>>(carDataView);
 
                 if (dto.PageSize == 0 && dto.PageIndex == 0)
                 {

+ 1 - 0
OASystem/OASystem.Infrastructure/Repositories/Resource/InvitationOfficialActivityDataRepository.cs

@@ -242,6 +242,7 @@ namespace OASystem.Infrastructure.Repositories.Resource
             }
             else if (dto.Status == 2)//修改
             {
+                _info.LastUpdateTime = DateTime.Now;
                 var fileNameJsonStr = string.Empty;
                 var fileNames = await Upload(dto.Files);
                 if (fileNames.Count > 0)

+ 31 - 14
OASystem/OASystem.Infrastructure/Repositories/Resource/LocalGuideDataRepository.cs

@@ -25,7 +25,8 @@ namespace OASystem.Infrastructure.Repositories.Resource
         public async Task<Result> LocalGuideOperation(LocalGuideOperationDto dto)
         {
             var localGuideDat = _mapper.Map<Res_LocalGuideData>(dto);
-            localGuideDat.LastUpdate = DateTime.Now;
+            localGuideDat.LastUpdateTime = DateTime.Now;
+            localGuideDat.LastUpdateUserId = dto.CreateUserId;
             EncryptionProcessor.EncryptProperties(localGuideDat);
 
             if (dto.Status == 1)//添加
@@ -62,27 +63,43 @@ namespace OASystem.Infrastructure.Repositories.Resource
         {
             Result result = new Result() { Code = -2, Msg = "未知错误" };
 
-            var localGuideDatas = await _sqlSugar.Queryable<Res_LocalGuideData>().Where(x => x.IsDel == 0).ToListAsync();
-
             string unitName = dto.UnitName, unitArea = dto.UnitArea, contact = dto.Contact, contactTel = dto.ContactTel;
-
             int pageSize = dto.PageSize, pageIndex = dto.PageIndex;
 
+            var localGuideDataSearch = await _sqlSugar
+                .Queryable<Res_LocalGuideData>()
+                .Where(x => x.IsDel == 0)
+                .Select(x => new Res_LocalGuideData()
+                {
+                    Id = x.Id,
+                    UnitName = x.UnitName,
+                    UnitArea = x.UnitArea,
+                    Contact = x.Contact,
+                    ContactTel = x.ContactTel
+                })
+                .ToListAsync();
+
             //处理要查询的字段解密
-            foreach (var item in localGuideDatas)
+            foreach (var item in localGuideDataSearch)
             {
-                if (!string.IsNullOrEmpty(unitName)) AesEncryptionHelper.Decrypt(unitName);
-                if (!string.IsNullOrEmpty(unitArea)) AesEncryptionHelper.Decrypt(unitName);
-                if (!string.IsNullOrEmpty(contact)) AesEncryptionHelper.Decrypt(unitName);
-                if (!string.IsNullOrEmpty(contactTel)) AesEncryptionHelper.Decrypt(unitName);
+                item.UnitName = AesEncryptionHelper.Decrypt(item.UnitName);
+                item.UnitArea = AesEncryptionHelper.Decrypt(item.UnitArea);
+                item.Contact = AesEncryptionHelper.Decrypt(item.Contact);
+                item.ContactTel = AesEncryptionHelper.Decrypt(item.ContactTel);
             }
-            localGuideDatas = localGuideDatas
-                .WhereIF(!string.IsNullOrEmpty(unitName),x => x.UnitName.Contains(unitName))
-                .WhereIF(!string.IsNullOrEmpty(unitArea), x => x.UnitArea.Contains(unitArea))
-                .WhereIF(!string.IsNullOrEmpty(contact), x => x.Contact.Contains(contact))
-                .WhereIF(!string.IsNullOrEmpty(contactTel), x => x.ContactTel.Contains(contactTel))
+            var localGuideIds = localGuideDataSearch
+                .WhereIF(!string.IsNullOrEmpty(unitName), x => !string.IsNullOrEmpty(x.UnitName) && x.UnitName.Contains(unitName))
+                .WhereIF(!string.IsNullOrEmpty(unitArea), x => !string.IsNullOrEmpty(x.UnitArea) && x.UnitArea.Contains(unitArea))
+                .WhereIF(!string.IsNullOrEmpty(contact), x => !string.IsNullOrEmpty(x.Contact) && x.Contact.Contains(contact))
+                .WhereIF(!string.IsNullOrEmpty(contactTel), x => !string.IsNullOrEmpty(x.ContactTel) && x.ContactTel.Contains(contactTel))
+                .Select(x => x.Id)
                 .ToList();
 
+            var localGuideDataInfos = await _sqlSugar
+                .Queryable<Res_LocalGuideData>()
+                .WhereIF(localGuideIds.Any(), x => localGuideIds.Contains(x.Id))
+                .ToListAsync();
+            var localGuideDatas = _mapper.Map<List<LocalGuideDataView>>(localGuideDataInfos);
             if (dto.PortType == 1 || dto.PortType == 2)
             {
                 if (localGuideDatas.Count == 0)