From 12afc554dfde40c49f19c788ee51e061d037d084 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期四, 12 六月 2025 10:43:03 +0800
Subject: [PATCH] fix:创建或更新推广员 重复校验修改

---
 LifePayment/LifePayment.Application/Promoter/PromoterService.cs |  110 +++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 91 insertions(+), 19 deletions(-)

diff --git a/LifePayment/LifePayment.Application/Promoter/PromoterService.cs b/LifePayment/LifePayment.Application/Promoter/PromoterService.cs
index 0df452f..5258676 100644
--- a/LifePayment/LifePayment.Application/Promoter/PromoterService.cs
+++ b/LifePayment/LifePayment.Application/Promoter/PromoterService.cs
@@ -11,6 +11,7 @@
 using System.Collections.Generic;
 using System.Linq;
 using System.Threading.Tasks;
+using Volo.Abp;
 using Volo.Abp.Application.Services;
 using Volo.Abp.AutoMapper;
 using Volo.Abp.Domain.Repositories;
@@ -66,8 +67,49 @@
                 ApplyCount = it.ApplyCount,
                 Remark = it.Remark,
             });
+            if (input.StartDate.HasValue)
+            {
+                query = query.Where(s => s.CreationTime >= input.StartDate);
+            }
+
+            if (input.EndDate.HasValue)
+            {
+                query = query.Where(s => s.CreationTime <= input.EndDate);
+            }
+
+            if (!string.IsNullOrEmpty(input.SearchKey))
+            {
+                query = query.Where(s =>
+                    s.IdNumber.Contains(input.SearchKey)
+                    || s.PhoneNumber.Contains(input.SearchKey)
+                    || s.Name.Contains(input.SearchKey));
+            }
+
             var result = await query.GetPageResult(input.PageModel);
             return result;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎺ㄥ箍鍛樹俊鎭�
+        /// </summary>
+        /// <param name="phoneNumber"></param>
+        /// <returns></returns>
+        public async Task<PromoterDto> GetPromoter(string phoneNumber)
+        {
+            return await lifePayPromoterRepository
+                .Where(it => it.PhoneNumber == phoneNumber)
+                .Select(it => new PromoterDto
+                {
+                    Id = it.Id,
+                    CreationTime = it.CreationTime,
+                    IdNumber = it.IdNumber,
+                    Name = it.Name,
+                    PhoneNumber = it.PhoneNumber,
+                    ClickCount = it.ClickCount,
+                    ApplyCount = it.ApplyCount,
+                    Remark = it.Remark,
+                })
+                .FirstOrDefaultAsync();
         }
 
         /// <summary>
@@ -111,12 +153,43 @@
                 query = query.Where(s =>
                     s.Name.Contains(input.SearchKey)
                     || s.PhoneNumber.Contains(input.SearchKey)
-                    || s.Name.Contains(input.SearchKey)
-                    || s.PhoneNumber.Contains(input.SearchKey));
+                    || s.PromoterName.Contains(input.SearchKey)
+                    || s.PromoterPhoneNumber.Contains(input.SearchKey));
             }
 
             var result = await query.GetPageResult(input.PageModel);
             return result;
+        }
+
+        /// <summary>
+        /// 鑾峰彇娓犻亾鍜ㄨId
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        /// <exception cref="FriendlyException"></exception>
+        public async Task<ChannelConsultationDto> GetChannelConsultationById(Guid id)
+        {
+            var query = from cc in lifePayChannelConsultationRepository
+                        join p in lifePayPromoterRepository on cc.PromoterId equals p.Id into pg
+                        from pgd in pg.DefaultIfEmpty()
+                        where cc.Id == id
+                        select new ChannelConsultationDto
+                        {
+                            Id = cc.Id,
+                            CreationTime = cc.CreationTime,
+                            Name = cc.Name,
+                            AgentType = cc.AgentType,
+                            PhoneNumber = cc.PhoneNumber,
+                            CompanyName = cc.CompanyName,
+                            CustomerResources = cc.CustomerResources,
+                            PromoterIdNumber = pgd.IdNumber,
+                            PromoterName = pgd.Name,
+                            PromoterPhoneNumber = pgd.PhoneNumber,
+                            FollowupStatus = cc.FollowupStatus,
+                            LastFollowupTime = cc.LastFollowupTime,
+                            FollowupRemark = cc.FollowupRemark,
+                        };
+            return await query.FirstOrDefaultAsync();
         }
 
         /// <summary>
@@ -152,7 +225,7 @@
         /// <param name="input"></param>
         /// <returns></returns>
         /// <exception cref="FormatException"></exception>
-        public async Task<Guid> CreateOrUpdatePromoter(CreateOrUpdatePromoterInput input)
+        public async Task<CreateOrUpdatePromoterOutput> CreateOrUpdatePromoter(CreateOrUpdatePromoterInput input)
         {
             CheckExtensions.IfTrueThrowUserFriendlyException(string.IsNullOrWhiteSpace(input.Name), "璇疯緭鍏ユ帹骞夸汉");
             CheckExtensions.IfTrueThrowUserFriendlyException(string.IsNullOrWhiteSpace(input.PhoneNumber), "璇疯緭鍏ヨ仈绯绘柟寮�");
@@ -160,21 +233,12 @@
             {
                 input.IdNumber = BuildIdNumber();
             }
-            else if (input.Id == null)
-            {
-                var exist = await lifePayPromoterRepository.FirstOrDefaultAsync(it => it.IdNumber == input.IdNumber || it.PhoneNumber == input.PhoneNumber);
-                if (exist != null)
-                {
-                    if (exist.IdNumber == input.IdNumber)
-                    {
-                        throw new FormatException("璇D宸插瓨鍦�");
-                    }
 
-                    if (exist.PhoneNumber == input.PhoneNumber)
-                    {
-                        throw new FormatException("璇ユ墜鏈哄彿宸茬敵璇�");
-                    }
-                }
+            var exist = await lifePayPromoterRepository.FirstOrDefaultAsync(it => it.Id != input.Id && (it.IdNumber == input.IdNumber || it.PhoneNumber == input.PhoneNumber));
+            if (exist != null)
+            {
+                CheckExtensions.IfTrueThrowUserFriendlyException(exist.IdNumber == input.IdNumber, "璇D宸插瓨鍦�");
+                CheckExtensions.IfTrueThrowUserFriendlyException(exist.PhoneNumber == input.PhoneNumber, "璇ユ墜鏈哄彿宸茬敵璇�");
             }
 
             if (input.Id == null)
@@ -182,7 +246,11 @@
                 var entity = new LifePayPromoter();
                 ObjectMapper.Map(input, entity);
                 await lifePayPromoterRepository.InsertAsync(entity);
-                return entity.Id;
+                return new CreateOrUpdatePromoterOutput
+                {
+                    Id = entity.Id,
+                    IdNumber = entity.IdNumber,
+                };
             }
             else
             {
@@ -190,7 +258,11 @@
                 CheckExtensions.IfTrueThrowUserFriendlyException(entity == null, "璇ユ帹骞垮憳涓嶅瓨鍦�");
                 ObjectMapper.Map(input, entity);
                 await lifePayPromoterRepository.UpdateAsync(entity);
-                return entity.Id;
+                return new CreateOrUpdatePromoterOutput
+                {
+                    Id = entity.Id,
+                    IdNumber = entity.IdNumber,
+                };
             }
         }
 

--
Gitblit v1.9.1