using ApiTools.Core; using Furion.DatabaseAccessor; using Mapster; using MediatR; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ApiTools.UserServer.Application { /// /// 保存渠道用户 /// public class ChannelUserCommandHandler( IRepository rep ) : IRequestHandler { private readonly IRepository rep = rep; /// /// 保存渠道用户 /// /// /// /// public async Task Handle(SaveChannelUserCommand request, CancellationToken cancellationToken) { var entity = await request.SaveData( q => { return rep.AsQueryable() .Where(it => it.Type == EnumUserType.Channel && it.ChannelId == request.ChannelId); }, it => it.Type == EnumUserType.Channel && it.ChannelId == request.ChannelId && it.UserName == request.UserName && it.Id != request.Id, entity => { if (request.Id == null) { entity.Type = EnumUserType.Channel; } request.Adapt(entity); }); return entity.Id; } } }