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 _repository; private readonly ISystemConfigDomain _systemConfigService; public ResCustomerDomain(IBaseRepository repository, ISystemConfigDomain systemConfigService) { _repository = repository; _systemConfigService = systemConfigService; } public async Task ResgisterCustomer(string CNumber, string ResId, string CustomerFrom, string customerDetailXml = null) { try { var mobile = await _repository.GetRepository().Query().FirstOrDefaultAsync(p => p.ResId == ResId); if (mobile == null) { var md5 = ResUtil.UserMd5(CNumber); await _repository.GetRepository().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 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 { 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 { 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 ContractUser(string resid, string userName) { try { var param = new List { 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; } } } }