xf hace 2 años
padre
commit
a0b904cc81

+ 1 - 0
src/Hotline.Api/Controllers/OrderController.cs

@@ -106,6 +106,7 @@ public class OrderController : BaseController
     {
         var (total, items) = await _orderRepository.Queryable()
             .Where(d => d.FromPhone == dto.PhoneNo)
+            .WhereIF(!string.IsNullOrEmpty(dto.OrderId), d => d.Id != dto.OrderId)
             .OrderByDescending(d => d.CreationTime)
             .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
         return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));

+ 2 - 0
src/Hotline.Api/Controllers/WorkflowController.cs

@@ -190,6 +190,8 @@ public class WorkflowController : BaseController
             throw UserFriendlyException.SameMessage("草稿需发布才能启用");
         if (definition.Status == EDefinitionStatus.Disable)
         {
+            await _definitionDomainService.EnableAsync(definition.ModuleCode, HttpContext.RequestAborted);
+
             definition.Status = EDefinitionStatus.Enable;
             await _definitionRepository.UpdateAsync(definition, HttpContext.RequestAborted);
         }

+ 1 - 0
src/Hotline.Share/Dtos/Order/QueryOrderHistoryDto.cs

@@ -10,5 +10,6 @@ namespace Hotline.Share.Dtos.Order
     public record QueryOrderHistoryDto : PagedRequest
     {
         public string PhoneNo { get; set; }
+        public string? OrderId { get; set; }
     }
 }

+ 18 - 0
src/Hotline/FlowEngine/Definitions/DefinitionDomainService.cs

@@ -43,9 +43,27 @@ public class DefinitionDomainService : IDefinitionDomainService, IScopeDependenc
         definitionTemp.Version = lastVersion + 1;
         definitionTemp.Status = EDefinitionStatus.Enable;
 
+        await EnableAsync(definitionTemp.ModuleCode!, cancellationToken);
+
         await _definitionRepository.UpdateAsync(definitionTemp, cancellationToken);
     }
 
+    /// <summary>
+    /// 禁用指定业务模块下所有模板
+    /// </summary>
+    /// <param name="moduleCode"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    public async Task EnableAsync(string moduleCode, CancellationToken cancellationToken)
+    {
+        if (string.IsNullOrEmpty(moduleCode))
+            throw new UserFriendlyException("moduleCode为空");
+        var definitions = await _definitionRepository.QueryAsync(d =>
+            d.ModuleCode == moduleCode && d.Status == EDefinitionStatus.Enable);
+        definitions.ForEach(d => d.Status = EDefinitionStatus.Disable);
+        await _definitionRepository.UpdateRangeAsync(definitions, cancellationToken);
+    }
+
     /// <summary>
     /// 发布(保存并发布)
     /// </summary>

+ 5 - 0
src/Hotline/FlowEngine/Definitions/IDefinitionDomainService.cs

@@ -20,6 +20,11 @@ namespace Hotline.FlowEngine.Definitions
         Task<Definition?> GetLastVersionDefinitionAsync(string code, CancellationToken cancellationToken);
         Task<Definition?> GetLastVersionDefinitionByModuleCodeAsync(string moduleCode, CancellationToken cancellationToken);
 
+        /// <summary>
+        /// 禁用指定业务模块下所有模板
+        /// </summary>
+        Task EnableAsync(string moduleCode, CancellationToken cancellationToken);
+
         /// <summary>
         /// 未开启的流程,查找start节点配置的nextSteps信息,用作开启流程的传参
         /// </summary>