/// <summary> /// 用户断连处理 /// </summary> public void CustomerOnDisconnected(CustomerOnDisconnectedDto customerOnDisconnectedDto) { ServiceRecords ServiceRecordsModel = _serviceRecords.FirstOrDefault(e => e.Id == customerOnDisconnectedDto.ServiceRecordId); ServiceRecordsModel.CustomerUnContentDate = DateTime.Now; ServiceRecordsModel.CustomerState = OrderInfo.LoginState.OffLine; _serviceRecords.Update(ServiceRecordsModel); CustomerConnectRecords CustomerConnectRecordsModel = _customerConnectRecords.FirstOrDefault(e => e.DeviceId == customerOnDisconnectedDto.DeviceId); CustomerConnectRecordsModel.CustomerState = OrderInfo.LoginState.OffLine; _customerConnectRecords.Update(CustomerConnectRecordsModel); ChatRecords ChatRecordsModel = new ChatRecords(); ChatRecordsModel = EntityHelper.CopyValue(ServiceRecordsModel, ChatRecordsModel); ChatRecordsModel.Id = 0; ChatRecordsModel.ServiceRecordsId = customerOnDisconnectedDto.ServiceRecordId; ChatRecordsModel.SendInfoType = OrderInfo.SendInfoType.TextInfo; ChatRecordsModel.SendSource = OrderInfo.TerminalRefer.system; ChatRecordsModel.SendContent = "用户下线"; ChatRecordsModel.SendDateTime = DateTime.Now; ChatRecordsModel.ReceiveState = OrderInfo.ReceiveState.Received; _chatRecords.Insert(ChatRecordsModel); }
/// <summary> /// 添加客户,并建立连接 /// </summary> /// <param name="addCustomerConnectRecordsDto"></param> public BaseDataOutput <int> AddServiceConnectRecords(AddCustomerConnectRecordsDto addCustomerConnectRecordsDto) { BaseDataOutput <int> output = new BaseDataOutput <int>(); int CustomerConnectRecordsId = 0; int ServiceRecordsId = 0; ChatRecords ChatRecordsModel = new ChatRecords(); //处理客户记录表 CustomerConnectRecords CustomerConnectRecordsModel = _CustomerConnectRecords.FirstOrDefault(e => e.DeviceId == addCustomerConnectRecordsDto.DeviceId); if (CustomerConnectRecordsModel == null) { CustomerConnectRecords NewCustomerConnectRecordsModel = new CustomerConnectRecords(); NewCustomerConnectRecordsModel = EntityHelper.CopyValue(addCustomerConnectRecordsDto, NewCustomerConnectRecordsModel); NewCustomerConnectRecordsModel.CustomerState = OrderInfo.LoginState.Online; CustomerConnectRecordsId = _CustomerConnectRecords.InsertAndGetId(NewCustomerConnectRecordsModel); } else { CustomerConnectRecordsModel.CustomerState = OrderInfo.LoginState.Online; _CustomerConnectRecords.Update(CustomerConnectRecordsModel); CustomerConnectRecordsId = CustomerConnectRecordsModel.Id; } //处理连接记录表 ServiceRecords ServiceRecordsModel = new ServiceRecords(); ServiceRecordsModel = EntityHelper.CopyValue(addCustomerConnectRecordsDto, ServiceRecordsModel); ServiceRecordsModel.CustomerDeviceId = addCustomerConnectRecordsDto.DeviceId; //连接记录表-处理客户信息 ServiceRecordsModel.CustomerConnectRecordsId = CustomerConnectRecordsId; ServiceRecordsModel.CustomerContentDate = DateTime.Now; ServiceRecordsModel.CustomerState = OrderInfo.LoginState.Online; //连接记录表-如果匹配到客服,则处理客服信息 if (addCustomerConnectRecordsDto.ServiceId != null) { ServiceConnectRecords ServiceConnectRecordsModel = _ServiceConnectRecords.FirstOrDefault(e => e.ServiceId == addCustomerConnectRecordsDto.ServiceId); if (ServiceConnectRecordsModel != null) { //连接记录表-处理客服信息 ServiceRecordsModel = EntityHelper.CopyValue(ServiceConnectRecordsModel, ServiceRecordsModel); ServiceRecordsModel.Id = 0; ServiceRecordsModel.ServiceConnectRecordsId = ServiceConnectRecordsModel.Id; ServiceRecordsModel.ServiceId = addCustomerConnectRecordsDto.ServiceId; ServiceRecordsModel.ServiceContentDate = DateTime.Now; ServiceRecordsModel.ServiceState = OrderInfo.LoginState.Online; ServiceConnectRecordsModel.ServiceCount += 1; _ServiceConnectRecords.Update(ServiceConnectRecordsModel); //聊天记录表-处理客服信息 ChatRecordsModel = EntityHelper.CopyValue(ServiceConnectRecordsModel, ChatRecordsModel); ChatRecordsModel.ServiceId = addCustomerConnectRecordsDto.ServiceId; } } ServiceRecordsId = _ServiceRecords.InsertAndGetId(ServiceRecordsModel); //聊天记录表-处理客户信息 ChatRecordsModel = EntityHelper.CopyValue(addCustomerConnectRecordsDto, ChatRecordsModel); ChatRecordsModel.Id = 0; ChatRecordsModel.CustomerDeviceId = addCustomerConnectRecordsDto.DeviceId; //聊天记录表-处理聊天信息 ChatRecordsModel.ServiceRecordsId = ServiceRecordsId; ChatRecordsModel.SendInfoType = OrderInfo.SendInfoType.TextInfo; ChatRecordsModel.SendSource = OrderInfo.TerminalRefer.system; ChatRecordsModel.SendContent = "客服[" + ChatRecordsModel.ServiceNickName + "]为您服务"; ChatRecordsModel.SendDateTime = DateTime.Now; ChatRecordsModel.ReceiveState = OrderInfo.ReceiveState.Received; _ChatRecords.Insert(ChatRecordsModel); output.Data = ServiceRecordsId; return(output); }
/// <summary> /// 根据AccessToken获取用户信息 /// </summary> /// <param name="authorizationAccessTokenlInput"></param> /// <returns></returns> public async Task <BaseDataOutput <string> > AuthorizationAccessToken(AuthorizationAccessTokenlInput authorizationAccessTokenlInput) { BaseDataOutput <string> Output = new BaseDataOutput <string>(); if (!string.IsNullOrEmpty(authorizationAccessTokenlInput.OAuthCode) && !string.IsNullOrEmpty(authorizationAccessTokenlInput.ThirdPlatCode)) { BaseDataOutput <string> AccessTokenOutput = new BaseDataOutput <string>(); BaseDataOutput <AuthorizationUserInfoDto> ThirdOutput = new BaseDataOutput <AuthorizationUserInfoDto>(); OauthSetting OauthSettingModel = _oauthSetting.FirstOrDefault(e => e.ThirdPlatCode == authorizationAccessTokenlInput.ThirdPlatCode); if (OauthSettingModel != null) { var GetAccessTokenObj = new { OAuthCode = authorizationAccessTokenlInput.OAuthCode }; var CodeResult = await _httpClientFactory.CreateClient().PostAsync(OauthSettingModel.GetAccessTokenUrl, new StringContent(JsonConvert.SerializeObject(GetAccessTokenObj), Encoding.UTF8, "application/json")); var ResultStr = await CodeResult.Content.ReadAsStringAsync(); AccessTokenOutput = JsonConvert.DeserializeObject <BaseDataOutput <string> >(ResultStr); if (AccessTokenOutput.Code == 0) { #region 根据AccessToken获取用户信息 var GetUserInfoObj = new { AccessToken = AccessTokenOutput.Data }; var UserInfoResult = await _httpClientFactory.CreateClient().PostAsync(OauthSettingModel.AuthorizationUrl, new StringContent(JsonConvert.SerializeObject(GetUserInfoObj), Encoding.UTF8, "application/json")); var UserInfoResultStr = await UserInfoResult.Content.ReadAsStringAsync(); ThirdOutput = JsonConvert.DeserializeObject <BaseDataOutput <AuthorizationUserInfoDto> >(UserInfoResultStr); if (ThirdOutput.Code == 0) { if (ThirdOutput.Data.UserType == OrderInfo.TerminalRefer.servicer) { ServiceConnectRecords ServiceConnectRecordsModel = _serviceConnectRecords.FirstOrDefault(e => e.ServiceId == ThirdOutput.Data.UserId); if (ServiceConnectRecordsModel == null) { int UserId = _serviceConnectRecords.InsertAndGetId(new ServiceConnectRecords { ServiceId = ThirdOutput.Data.UserId, ServiceCode = ThirdOutput.Data.UserCode, ServiceNickName = ThirdOutput.Data.UserNickName, ServiceCount = 0, ServiceFaceImg = ThirdOutput.Data.UserFaceImg, ServiceState = OrderInfo.LoginState.OffLine, DeviceId = authorizationAccessTokenlInput.DeviceId }); Output.Data = ThirdOutput.Data.UserId; } else { Output.Data = ServiceConnectRecordsModel.ServiceId.ToString(); } } if (ThirdOutput.Data.UserType == OrderInfo.TerminalRefer.user) { CustomerConnectRecords CustomerConnectRecordsModel = _customerConnectRecords.FirstOrDefault(e => e.CustomerId == ThirdOutput.Data.UserId); if (CustomerConnectRecordsModel == null) { int CustomerId = _customerConnectRecords.InsertAndGetId(new CustomerConnectRecords { CustomerId = ThirdOutput.Data.UserId, CustomerCode = ThirdOutput.Data.UserCode, CustomerNickName = ThirdOutput.Data.UserNickName, CustomerFaceImg = ThirdOutput.Data.UserFaceImg, CustomerState = OrderInfo.LoginState.OffLine, DeviceId = authorizationAccessTokenlInput.DeviceId }); Output.Data = ThirdOutput.Data.UserId; } else { Output.Data = CustomerConnectRecordsModel.CustomerId.ToString(); } } } else { Output.Code = 1; Output.Message = ThirdOutput.Message; } #endregion } else { Output.Code = 1; Output.Message = "获取AccessToken失败:" + AccessTokenOutput.Message; } } else { Output.Code = 1; Output.Message = "未获取到授权设置信息"; } } else { Output.Code = 1; Output.Message = "未获取AccessToken或第三方平台编号"; } return(Output); }