Zxd.Core/code/Zxd.Domain/ResCustomerDomain.cs

105 lines
4.7 KiB
C#

using DG.EntityFramework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using MySqlConnector;
using DG.Tool;
using Serilog;
using Microsoft.EntityFrameworkCore;
using Zxd.Domain.Impl;
namespace Zxd.Domain
{
public class ResCustomerDomain : IResCustomerDomain
{
private readonly IBaseRepository<ZxdDbContext> _repository;
private readonly ISystemConfigDomain _systemConfigService;
public ResCustomerDomain(IBaseRepository<ZxdDbContext> repository,
ISystemConfigDomain systemConfigService)
{
_repository = repository;
_systemConfigService = systemConfigService;
}
public async Task<int> ResgisterCustomer(string CNumber, string ResId, string CustomerFrom, string customerDetailXml = null)
{
try
{
var mobile = await _repository.GetRepository<RES_MOBILE_MD5>().Query().FirstOrDefaultAsync(p => p.ResId == ResId);
if (mobile == null)
{
var md5 = ResUtil.UserMd5(CNumber);
await _repository.GetRepository<RES_MOBILE_MD5>().InsertAsync(new RES_MOBILE_MD5() { ResId = ResId, Md5 = md5 });
}
}
catch (Exception ex)
{
Log.Error(ex.ToString());
}
return await ResgisterCustomerByProcedure(CNumber, ResId, CustomerFrom, customerDetailXml);
}
public async Task<int> ResgisterCustomerByProcedure(string CNumber, string ResId, string CustomerFrom, string customerDetailXml = null)
{
try
{
CNumber = CNumber.Replace("+86", "");
if (CNumber.StartsWith("01") && CNumber.Length == 12)
{
CNumber = CNumber.Substring(1);
}
string enkey = _systemConfigService.GetSystemConfig().CRMClientKey;
ClientKey clientid = _systemConfigService.GetClientKey(enkey);
var param = new List<MySqlParameter>
{
new MySqlParameter() { ParameterName = "p_CNumber", DbType = DbType.String, Value =SecurityHelper.EncyptData(CNumber,clientid.AccessKey)},
new MySqlParameter() { ParameterName = "p_ResId", DbType = DbType.String, Value = ResId },
new MySqlParameter() { ParameterName = "p_CustomerFrom", DbType = DbType.String, Value = CustomerFrom }
};
//param.Add(!string.IsNullOrEmpty(customerDetailXml) ? new MySqlParameter() { ParameterName = "p_customerDetailXml", DbType = DbType.String, Value = customerDetailXml } : new MySqlParameter() { ParameterName = "p_customerDetailXml", DbType = DbType.String, Value = DBNull.Value });
param.Add(!string.IsNullOrEmpty(CNumber) ? new MySqlParameter() { ParameterName = "p_ECNumber", DbType = DbType.String, Value = ResUtil.NumberFormat(CNumber) } : new MySqlParameter() { ParameterName = "p_ECNumber", DbType = DbType.String, Value = DBNull.Value });
return await _repository.ExecuteSqlCommandNonQueryAsync(CommandType.StoredProcedure, "res_ResgisterCustomer", param.ToArray());
}
catch (Exception e)
{
Log.Error(string.Concat("【ResgisterCustomer】---CNumber=" + CNumber + "-----ResId=" + ResId + "-----CustomerFrom=" + CustomerFrom));
Log.Error(string.Concat("ResgisterCustomer", e.Message, e.StackTrace));
throw;
}
}
public async Task SetQuantity(int ch, int eid, int salegroupid)
{
var param = new List<MySqlParameter>
{
new MySqlParameter("@arg_ch", ch),
new MySqlParameter("@arg_eid", eid),
new MySqlParameter("@arg_salegroupid", salegroupid)
};
await _repository.ExecuteSqlCommandNonQueryAsync(CommandType.StoredProcedure, "assign_setquantity", param.ToArray());
}
public async Task<int> ContractUser(string resid, string userName)
{
try
{
var param = new List<MySqlParameter>
{
new MySqlParameter() { ParameterName = "v_Resid", DbType = DbType.String, Value = resid },
new MySqlParameter() { ParameterName = "v_UserName", DbType = DbType.String, Value = userName }
};
return await _repository.ExecuteSqlCommandNonQueryAsync(CommandType.StoredProcedure, "res_ContractSoftUser", param.ToArray());
}
catch
{
throw;
}
}
}
}