using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Znyc.Cloudcar.Admin.Commons.Entitys; using Znyc.Cloudcar.Admin.Commons.Enums; using Znyc.Cloudcar.Admin.Commons.Extensions; using Znyc.Cloudcar.Admin.Commons.Mapping; using Znyc.Cloudcar.Admin.Commons.Pages; using Znyc.Cloudcar.Admin.Commons.Services; using Znyc.Cloudcar.Admin.Security.Dtos; using Znyc.Cloudcar.Admin.Security.Entitys; using Znyc.Cloudcar.Admin.Security.IRepositories; using Znyc.Cloudcar.Admin.Security.IServices; namespace Znyc.Cloudcar.Admin.Security.Services { public class CallFeedbackService : BaseService, ICallFeedbackService { private readonly ICallFeedbackRepository _callFeedbackRepository; private readonly IUserRepository _userRepository; private readonly IWxUnifyUserRepository _wxUnifyUserRepository; public CallFeedbackService(ICallFeedbackRepository repository, IUserRepository userRepository, IWxUnifyUserRepository wxUnifyUserRepository ) : base(repository) { _callFeedbackRepository = repository; _userRepository = userRepository; _wxUnifyUserRepository = wxUnifyUserRepository; } /// /// 通话评价分页查询 /// /// 查询条件 /// public async Task> FindWithPagerSearchAsync(SearchCallFeedbackModel search) { bool order = search.Order == "asc" ? false : true; string where = GetDataPrivilege(false); if (search.Filter.ProductId > 0) { @where += $" and ProductId={search.Filter.ProductId}"; } if (search.Filter.ProductType > 0) { @where += $" and ProductType={search.Filter.ProductType}"; } if (search.Filter.State > 0) { @where += $" and State={search.Filter.State}"; } if (!string.IsNullOrEmpty(search.StartTime)) { @where += $" and CreatedTime >='{search.StartTime} 00:00:00'"; } if (!string.IsNullOrEmpty(search.EndTime)) { @where += $" and CreatedTime <='{search.EndTime} 23:59:59'"; } PagerInfo pagerInfo = new PagerInfo { CurrenetPageIndex = search.CurrenetPageIndex, PageSize = search.PageSize }; List list = (await repository.FindWithPagerAsync(where, pagerInfo, search.Sort, order)).MapTo(); List uIds = list.Select(x => x.UserId).ToList(); List usersList = (await _userRepository.GetListWhereAsync($" `State`=10 and Id in ({string.Join(", ", uIds.ToArray())})")).MapTo(); //云平台统一用户信息 List uninIds = usersList.Select(x => x.UnionId).ToList(); List wxUnifyUsers = (await _wxUnifyUserRepository.GetListWhereAsync($" IsDeleted=0 AND UnionId IN ('{string.Join("','", uninIds.ToArray())}')")) .MapTo(); foreach (var item in list) { var user = usersList.Find(x => x.Id == item.UserId); item.Phone = user.Phone; item.NickName = wxUnifyUsers.Find(x => x.UnionId == user.UnionId).NickName; item.WxAvatarUrl = wxUnifyUsers.Find(x => x.UnionId == user.UnionId).AvatarUrl; item.Content = EnumExtensions .ParseEnum(typeof(CallFeedbackStatusEnum), item.State.ToString()).ToDescription(); } PageResult pageResult = new PageResult { CurrentPage = pagerInfo.CurrenetPageIndex, Items = list, ItemsPerPage = pagerInfo.PageSize, TotalItems = pagerInfo.RecordCount }; return pageResult; } /// /// 修改通话反馈已读 /// /// /// /// public async Task UpdateIsReadAsync(long userId, long productId, int productType) { CommonResult result = new CommonResult(); await _callFeedbackRepository.UpdateIsReadAsync(userId, productId, productType); result.Success = true; return result; } } }