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;
}
}
}