Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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);
        }