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), "请输入联系方式");
@@ -165,15 +238,8 @@
                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("该ID已存在");
                    }
                    if (exist.PhoneNumber == input.PhoneNumber)
                    {
                        throw new FormatException("该手机号已申请");
                    }
                    CheckExtensions.IfTrueThrowUserFriendlyException(exist.IdNumber == input.IdNumber, "该ID已存在");
                    CheckExtensions.IfTrueThrowUserFriendlyException(exist.PhoneNumber == input.PhoneNumber, "该手机号已申请");
                }
            }
@@ -182,7 +248,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 +260,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,
                };
            }
        }