| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- using Abp.Application.Services.Dto;
- using Abp.Dependency;
- using Abp.Domain.Repositories;
- using Microsoft.EntityFrameworkCore;
- using VberZero.BaseSystem;
- namespace VberZero.DomainService.AutoCompletes;
- public class AutoCompleteQueryManager : VzDomainServiceBase, IAutoCompleteQueryManager, ISingletonDependency
- {
- public AutoCompleteQueryManager(IRepository<SysAutoCompleteQuery> repository)
- {
- Repository = repository;
- }
- private IRepository<SysAutoCompleteQuery> Repository { get; }
- /// <summary>
- /// 添加/修改新的查询
- /// </summary>
- /// <param name="codeKey"></param>
- /// <param name="value"></param>
- /// <param name="name"></param>
- /// <returns></returns>
- public async Task InsertOrUpdate(string codeKey, string value, string name)
- {
- await InsertOrUpdate(codeKey, value, name, null);
- }
- /// <summary>
- /// 添加/修改新的查询
- /// </summary>
- /// <param name="codeKey"></param>
- /// <param name="value"></param>
- /// <param name="name"></param>
- /// <param name="fun">给记录添加扩展值</param>
- /// <returns></returns>
- public async Task InsertOrUpdate(string codeKey, string value, string name,
- Func<SysAutoCompleteQuery, SysAutoCompleteQuery> fun)
- {
- var entity =
- await Repository.FirstOrDefaultAsync(a =>
- a.CodeKey == codeKey && a.ValueKey == value);
- var date = DateTime.Now;
- if (entity == null)
- {
- entity = new SysAutoCompleteQuery()
- {
- CodeKey = codeKey,
- ValueKey = value,
- NameKey = name,
- UseCount = 1,
- LastUseDate = date
- };
- fun?.Invoke(entity);
- await Repository.InsertAsync(entity);
- }
- else
- {
- entity.UseCount++;
- entity.LastUseDate = date;
- fun?.Invoke(entity);
- await Repository.UpdateAsync(entity);
- }
- }
- /// <summary>
- /// 查询指定记录
- /// </summary>
- /// <param name="codeKey"></param>
- /// <param name="value"></param>
- /// <returns></returns>
- public async Task<SysAutoCompleteQuery> QueryItem(string codeKey, string value)
- {
- var item = await Repository.FirstOrDefaultAsync(a => a.CodeKey == codeKey && a.ValueKey == value);
- return item;
- }
- /// <summary>
- /// 查询记录列表
- /// </summary>
- /// <param name="codeKey"></param>
- /// <param name="name"></param>
- /// <returns></returns>
- public async Task<List<SysAutoCompleteQuery>> QueryItems(string codeKey, string name)
- {
- var list = await Repository.GetAll().Where(a => a.CodeKey == codeKey && (string.IsNullOrEmpty(name) || a.NameKey.Contains(name))).OrderByDescending(a => a.UseCount).ThenByDescending(a => a.LastUseDate).ToListAsync();
- return list;
- }
- /// <summary>
- /// 查询记录列表分页
- /// </summary>
- /// <param name="codeKey"></param>
- /// <param name="keywords"></param>
- /// <param name="skip"></param>
- /// <param name="take"></param>
- /// <returns></returns>
- public async Task<PagedResultDto<SysAutoCompleteQuery>> PageItems(string codeKey, string keywords, int skip,
- int take)
- {
- take = take == 0 ? 20 : take;
- var query = Repository.GetAll().Where(a => a.CodeKey == codeKey && (string.IsNullOrEmpty(keywords) || a.NameKey.Contains(keywords)));
- var total = await query.CountAsync();
- var list = await query.OrderByDescending(a => a.UseCount).ThenByDescending(a => a.LastUseDate).Skip(skip).Take(take).ToListAsync();
- return new PagedResultDto<SysAutoCompleteQuery>(total, list);
- }
- }
|