Просмотр исходного кода

商邀资料AI 设置复选框单条选中

Lyyyi недель назад: 2
Родитель
Сommit
7704a7ca02

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

@@ -2939,6 +2939,57 @@ Inner Join Sys_Department as d With(Nolock) On u.DepId=d.Id Where m.Id={0} ", _m
             }));
         }
 
+        /// <summary>
+        /// 商邀资料AI 设置复选框单条选中
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> InvitationAISetChecked([FromBody] InvitationAISetCheckedDto dto)
+        {
+            // 采用统一拦截或更简洁的验证
+            if (dto.Id < 1 || dto.CurrUserId < 1 || string.IsNullOrEmpty(dto.Guid))
+                return Ok(JsonView(false, "请求参数不完整"));
+
+            // 只查询必要的列
+            var invAiInfo = await _sqlSugar.Queryable<Res_InvitationAI>()
+                .FirstAsync(x => x.IsDel == 0 && x.Id == dto.Id);
+
+            if (invAiInfo?.AiCrawledDetails == null || !invAiInfo.AiCrawledDetails.Any())
+                return Ok(JsonView(false, "邀请信息集合不存在或已损坏"));
+
+            // 使用 Linq 快速定位目标项
+            var targetItem = invAiInfo.AiCrawledDetails.FirstOrDefault(x => x.Guid == dto.Guid);
+            if (targetItem == null)
+                return Ok(JsonView(false, "未找到对应的邀请信息"));
+
+            // 获取操作人姓名 
+            string operatorName = await _sqlSugar.Queryable<Sys_Users>()
+                .Where(x => x.Id == dto.CurrUserId)
+                .Select(x => x.CnName)
+                .FirstAsync() ?? "-";
+
+            // 更新目标属性
+            targetItem.IsChecked = dto.IsChecked;
+            targetItem.OperatedAt = DateTime.Now;
+            targetItem.Operator = operatorName;
+
+            // 排序处理(如果业务要求每次操作都要置顶,则保留)
+            invAiInfo.AiCrawledDetails = invAiInfo.AiCrawledDetails
+                .OrderByDescending(x => x.OperatedAt)
+                .ToList();
+
+            // 执行局部更新:仅更新 AiCrawledDetails 字段,减少 IO
+            bool isSuccess = await _sqlSugar.Updateable(invAiInfo)
+                .UpdateColumns(x => x.AiCrawledDetails)
+                .ExecuteCommandHasChangeAsync(); 
+
+            return Ok(isSuccess
+                ? JsonView(true, "设置成功")
+                : JsonView(false, "设置失败,数据未变更"));
+        }
+
         /// <summary>
         /// 商邀资料AI 保存
         /// </summary>

+ 12 - 0
OASystem/OASystem.Domain/Dtos/Resource/InvitationAI.cs

@@ -29,6 +29,18 @@ namespace OASystem.Domain.Dtos.Resource
         public int CurrUserId { get; set; }
     }
 
+    public class InvitationAISetCheckedDto : InvitationAISearchDto
+    {
+        public string Guid { get; set; }
+
+        /// <summary>
+        /// 是否选中
+        /// true 选中
+        /// false 未选中
+        /// </summary>
+        public bool IsChecked { get; set; }
+    }
+
     public class InvitationAISearchDto
     {
         public int Id { get; set; }

+ 5 - 0
OASystem/OASystem.Domain/Entities/Resource/Res_InvitationAI.cs

@@ -48,6 +48,11 @@ namespace OASystem.Domain.Entities.Resource
         /// </summary>
         public string Guid { get; set; }
 
+        /// <summary>
+        /// 复选框是否选中
+        /// </summary>
+        public bool IsChecked { get; set; } = false;
+
         /// <summary>
         /// 数据来源
         /// 0-本地数据;1-第三方AI接口数据