Преглед изворни кода

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

LEIYI пре 1 месец
родитељ
комит
c28011bde5

+ 80 - 0
OASystem/OASystem.Api/Controllers/MarketCustomerResourcesController.cs

@@ -12,6 +12,8 @@ using System.Diagnostics;
 using System.Linq;
 using OASystem.Domain.Attributes;
 using EyeSoft.Extensions;
+using OASystem.RedisRepository;
+using System.Linq.Expressions;
 
 namespace OASystem.API.Controllers
 {
@@ -23,6 +25,7 @@ namespace OASystem.API.Controllers
     {
         private readonly NewClientDataRepository _clientDataRepository;
         private readonly SqlSugarClient _sqlSugar;
+        private string keyName = "newClient_SearchKey";
         /// <summary>
         /// 初始化
         /// </summary>
@@ -190,6 +193,10 @@ namespace OASystem.API.Controllers
                 //await GeneralMethod.NewClientOperationRecord(dto.PortType, operationEnum, dto.CreateUserId, dto.Id, "");
                 #endregion
 
+                //this.keyName += "_" + dto.CreateUserId;
+                //var exists = await RedisFactory.CreateRedisRepository().KeyExistsAsync(keyName);
+                //if (exists) await RedisFactory.CreateRedisRepository().KeyDeleteAsync(keyName);
+
                 return Ok(JsonView(true, result.Msg + "Id:" + dto.Id));
             }
             catch (Exception ex)
@@ -234,6 +241,10 @@ namespace OASystem.API.Controllers
             //await GeneralMethod.NewClientOperationRecord(dto.PortType, OperationEnum.Del, dto.DeleteUserId, dto.Id, "");
             #endregion
 
+            //this.keyName += "_" + dto.DeleteUserId;
+            //var exists = await RedisFactory.CreateRedisRepository().KeyExistsAsync(keyName);
+            //if (exists) await RedisFactory.CreateRedisRepository().KeyDeleteAsync(keyName);
+
             return Ok(JsonView(true, "删除成功!"));
         }
 
@@ -1097,5 +1108,74 @@ namespace OASystem.API.Controllers
 
         }
 
+        [HttpPost]
+        public async Task<IActionResult> SearchClientByKeyword(SearchClientByKeywordDto dto)
+        {
+            var jw = JsonView(true);
+            var expression = Expressionable.Create<Crm_NewClientData>()
+                                           .And(x=>x.IsDel == 0);
+            this.keyName += "_" + dto.UserId;
+            //获取个人的客户
+            if (dto.UserId != 21)
+            {
+                var userList = _clientDataRepository.GetNewExistClient(dto.UserId).Select(x=>x.Id);
+                var newClientData = _sqlSugar.Queryable<Crm_ClientDataAndUser>()
+                         .Where(x => x.IsDel == 0 && userList.Contains(x.usersId))
+                         .Select(x=>x.NewClientDataId)
+                         .Distinct()
+                         .ToList();
+                expression = expression.And(x=> newClientData.Contains(x.Id));
+            }
+
+            var exists = false;
+            //var exists = await RedisFactory.CreateRedisRepository().KeyExistsAsync(keyName);
+            //if (exists) exists = await RedisFactory.CreateRedisRepository().HashFieldExistAsync(keyName, dto.Keyword);
+
+            if (!exists)
+            {
+                string field = "Id,Client";
+                var newClitnData = _sqlSugar.Queryable<Crm_NewClientData>()
+                                            .Where(expression.ToExpression())
+                                            .Select(field)
+                                            .ToList();
+                foreach (var item in newClitnData)
+                {
+                    EncryptionProcessor.DecryptProperties(item);
+                }
+
+                var keywordArray = dto.Keyword.ToCharArray();
+                var matches = newClitnData
+                        .Where(fullString => !string.IsNullOrWhiteSpace(fullString.Client) &&
+                             keywordArray.All(keyword => fullString.Client.Contains(keyword)))
+                        .Select(x=> new
+                        {
+                            x.Client,
+                            x.Id
+                        })
+                        .DistinctBy(x=>x.Client)
+                        .ToList();
+
+                if (matches.Any())
+                {
+                    //await RedisFactory.CreateRedisRepository().HashSetAsync(keyName, dto.Keyword, matches);
+                    //await RedisFactory.CreateRedisRepository().KeyExpireInAsync(keyName, new TimeSpan(0,1,0));
+                    jw.Data = matches;
+                }
+                else
+                {
+                    jw.Code = 201;
+                    jw.Msg = "empty list";
+                    jw.Data = new List<string>(1);
+                }
+
+            }
+            else
+            {
+                jw.Data = await RedisFactory.CreateRedisRepository().HashGetAsync<List<string>>(keyName, dto.Keyword);
+            }
+
+            return Ok(jw);
+        }
+
     }
 }

+ 11 - 5
OASystem/OASystem.Domain/Dtos/CRM/NewClientDataQueryDto.cs

@@ -15,7 +15,7 @@ using static Google.Protobuf.Reflection.SourceCodeInfo.Types;
 
 namespace OASystem.Domain.Dtos.CRM
 {
-    public class NewClientDataQueryDto:DtoBase
+    public class NewClientDataQueryDto : DtoBase
     {
         public int OperationUserId { get; set; }
 
@@ -92,7 +92,7 @@ namespace OASystem.Domain.Dtos.CRM
         public string EndTime { get; set; }
     }
 
-    public class NewClientOpDto:PortDtoBase
+    public class NewClientOpDto : PortDtoBase
     {
         /// <summary>
         /// 操作状态
@@ -233,7 +233,7 @@ namespace OASystem.Domain.Dtos.CRM
     /// <summary>
     /// 详情 Dto
     /// </summary>
-    public class NewClientDataDetailsDto:PortDtoBase
+    public class NewClientDataDetailsDto : PortDtoBase
     {
         public int UserId { get; set; }
         public int Id { get; set; }
@@ -258,7 +258,7 @@ namespace OASystem.Domain.Dtos.CRM
 
     public class MarketCustomerInitDto : PortDtoBase
     {
-       public int UserId { get; set;}
+        public int UserId { get; set; }
     }
 
     public class QueryClientTypeDto
@@ -306,5 +306,11 @@ namespace OASystem.Domain.Dtos.CRM
         }
     }
 
-    
+    public class SearchClientByKeywordDto
+    {
+        public string Keyword { get; set; }
+
+        public int UserId { get; set; }
+    }
+
 }

+ 1 - 1
OASystem/OASystem.Infrastructure/Repositories/CRM/NewClientDataRepository.cs

@@ -1397,7 +1397,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
                 return userArr.Where(x=> dic[userid].Contains(x.Id)).ToList();
             }
 
-            return userArr;
+            return userArr.WhereIF(userid != 21 ,x=>x.Id == userid).ToList();
         }
 
         /// <summary>