Zxd.Core/code/Zxd.Crm.Domain/ExtuserDomain.cs

60 lines
2.3 KiB
C#

using DG.EntityFramework;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MySqlConnector;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Zxd.Crm.Domain.Dto;
using Zxd.Crm.Domain.Dto.Extuser;
using Zxd.Crm.Domain.Impl;
using Zxd.Entity.SSO;
using Zxd.EntityFramework;
namespace Zxd.Crm.Domain
{
public class ExtuserDomain : IExtuserDomain
{
private readonly IServiceProvider _serviceProvider;
public ExtuserDomain(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
public async Task<bool> BindExtUser(ExtUserCreateDto model)
{
try
{
var sql = @"INSERT INTO ww_extuser_resid(resid,userid,deptcode)
values(@resid,@userid,@deptcode)
on duplicate key update putnum = putnum+1; ";
if (model.type == "unbind")
{
sql = "delete from ww_extuser_resid where resid=@resid and userid=@userid";
}
using (var scope = _serviceProvider.CreateAsyncScope())
{
var userCenterRepository = scope.ServiceProvider.GetRequiredService<IBaseRepository<ZxdDbContext>>();
var param = new List<MySqlParameter>()
{
new MySqlParameter() { ParameterName="resid", MySqlDbType = MySqlDbType.VarChar, Value=model.resid },
new MySqlParameter() { ParameterName="userid", MySqlDbType = MySqlDbType.VarChar, Value=model.userid },
new MySqlParameter() { ParameterName="deptcode", MySqlDbType = MySqlDbType.VarChar, Value=model.deptcode }
};
Log.Information($"sql: {sql}, param: {model.ToJson()}");
await userCenterRepository.ExecuteSqlCommandNonQueryAsync(CommandType.Text, sql, param.ToArray());
}
}
catch (Exception ex)
{
Log.Error($"绑定客户企微关系失败{ex.Message}【{model.ToJson()}】");
return false;
}
return true;
}
}
}