/// <summary> /// 客服表添加记录 /// </summary> /// <param name="addServiceConnectRecordsDto"></param> public BaseOutput AddServiceConnectRecords(AddServiceConnectRecordsDto addServiceConnectRecordsDto) { BaseOutput output = new BaseOutput(); ServiceConnectRecords ServiceConnectRecordsModel = _ServiceConnectRecords.FirstOrDefault(e => e.ServiceId == addServiceConnectRecordsDto.ServiceId); if (ServiceConnectRecordsModel == null) { _ServiceConnectRecords.Insert(new ServiceConnectRecords { DeviceId = addServiceConnectRecordsDto.DeviceId, ServiceId = addServiceConnectRecordsDto.ServiceId, ServiceCode = addServiceConnectRecordsDto.ServiceCode, ServiceNickName = addServiceConnectRecordsDto.ServiceNickName, ServiceFaceImg = addServiceConnectRecordsDto.ServiceFaceImg, ServiceCount = 0, ServiceState = OrderInfo.LoginState.Online, }); } else { ServiceConnectRecordsModel.ServiceState = OrderInfo.LoginState.Online; _ServiceConnectRecords.Update(ServiceConnectRecordsModel); } return(output); }
/// <summary> /// 客服断连处理 /// </summary> public void ServicerOnDisconnected(ServicerOnDisconnectedDto servicerOnDisconnectedDto) { ServiceConnectRecords ServiceConnectRecordsModel = _serviceConnectRecords.FirstOrDefault(e => e.ServiceId == servicerOnDisconnectedDto.ServiceId); ServiceConnectRecordsModel.ServiceState = OrderInfo.LoginState.OffLine; _serviceConnectRecords.Update(ServiceConnectRecordsModel); List <ServiceRecords> ServiceRecordsList = _serviceRecords.GetAllList(e => e.ServiceId == servicerOnDisconnectedDto.ServiceId && e.ServiceState == OrderInfo.LoginState.Online); foreach (var item in ServiceRecordsList) { item.ServiceUnContentDate = DateTime.Now; item.ServiceState = OrderInfo.LoginState.OffLine; _serviceRecords.Update(item); ChatRecords ChatRecordsModel = new ChatRecords(); ChatRecordsModel = EntityHelper.CopyValue(item, ChatRecordsModel); ChatRecordsModel.Id = 0; ChatRecordsModel.ServiceRecordsId = item.Id; ChatRecordsModel.SendInfoType = OrderInfo.SendInfoType.TextInfo; ChatRecordsModel.SendSource = OrderInfo.TerminalRefer.system; ChatRecordsModel.SendContent = "客服下线"; ChatRecordsModel.SendDateTime = DateTime.Now; ChatRecordsModel.ReceiveState = OrderInfo.ReceiveState.Received; _chatRecords.Insert(ChatRecordsModel); } }
public BaseDataOutput <ServiceConnectRecordsInfoOutput> ServiceConnectRecordsInfo(ServiceConnectRecordsInfoInput serviceConnectRecordsInfoInput) { BaseDataOutput <ServiceConnectRecordsInfoOutput> output = new BaseDataOutput <ServiceConnectRecordsInfoOutput>(); ServiceConnectRecordsInfoOutput Model = new ServiceConnectRecordsInfoOutput(); ServiceConnectRecords ServiceConnectRecordsModel = _ServiceConnectRecords.FirstOrDefault(e => e.ServiceId == serviceConnectRecordsInfoInput.ServicerId); if (ServiceConnectRecordsModel != null) { Model.DeviceId = ServiceConnectRecordsModel.DeviceId; Model.ServiceId = ServiceConnectRecordsModel.ServiceId; Model.ServiceCode = ServiceConnectRecordsModel.ServiceCode; Model.ServiceNickName = ServiceConnectRecordsModel.ServiceNickName; Model.ServiceFaceImg = ServiceConnectRecordsModel.ServiceFaceImg; } output.Data = Model; return(output); }
/// <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); }