/// <summary> /// 添加客户与客服的关联 /// </summary> /// <param name="FWXOPENID"></param> public void ZXKH_AddShip(string FWXOPENID)//需要改动 { var result = Dao.ZXKH_SelectStaff(); if (result.Count != 0) //判断管理人员是否为空 { long min = (long)result[0]["Id"]; long fpkid = (long)result[0]["FID"]; string KfOpneid = (string)result[0]["XCXOPENID"]; foreach (var item in result) { if (min > item["Id"]) { min = (long)item["Id"]; fpkid = (long)item["FID"]; KfOpneid = (string)item["XCXOPENID"]; } } WxappService.ZXKH_WriteTxt(min.ToString()); WxappService.ZXKH_WriteTxt(fpkid.ToString()); WxappService.ZXKH_WriteTxt(KfOpneid); //int fpkid = (int)result[result.Count - 1]["FID"]; //选取最后一个管理人fid //string KfOpneid = (string)result[result.Count - 1]["XCXFromOpenId"]; //选取最后一个管理人openid Dao.ZXKH_AddShip(FWXOPENID, fpkid); //添加关系; CustomerServiceMessage WxXmlModels = new CustomerServiceMessage(); //用户默认发送消息 WxXmlModels.MsgId = 0; WxXmlModels.XCXFromOpenId = FWXOPENID; WxXmlModels.XCXToOpenId = KfOpneid; WxXmlModels.MsgType = "text"; WxXmlModels.Content = "您好,请问有时间回复吗?"; WxXmlModels.CreateTime = WxappService.ZXKH_ConvertDateTimeInt(DateTime.Now); WxappService.ZXKH_savemessage(WxXmlModels); //var results = WxappService.ZXKH_QueryPicture(WxXmlModels.XCXFromOpenId); //WxXmlModels.PicUrl = (string)results["PICTURE"]; //WxXmlModels.KHNAME = (string)results["KHNAME"]; //var staff = WxappService.ZXKH_QueryFID(WxXmlModels.XCXToOpenId); //if (staff != null) //{ // var fid = staff["FID"].ToString(); // dynamic result1 = WxappService.ZXKH_SendWebSocket(fid); // if (result1 != null) // { // string users = (string)result1["ConnectionID"]; // wxappcont ZXKH_SendWeb // } //} } else { Dao.ZXKH_AddShip(FWXOPENID, 0); } }
/// <summary> /// 绑定客户-微信公众号进入 /// </summary> /// <param name="payload"></param> /// <returns></returns> private Response BindCustomerServiceStaff(WxPayloadVO payload) { HttpClient client = new HttpClient(); string url = "https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code"; url = string.Format(url, AppId, Secret, payload.Code); HttpResponseMessage response = client.GetAsync(url).Result; response.EnsureSuccessStatusCode(); string msg = response.Content.ReadAsStringAsync().Result; dynamic data = JsonConvert.DeserializeObject <dynamic>(msg); if (data.errmsg == null) { var openid = (string)data.openid; var session_key = (string)data.session_key; byte[] encryData = Convert.FromBase64String(payload.EncryptedData); RijndaelManaged rijndaelCipher = new RijndaelManaged { Key = Convert.FromBase64String(session_key), IV = Convert.FromBase64String(payload.Iv), Mode = CipherMode.CBC, Padding = PaddingMode.PKCS7 }; ICryptoTransform transform = rijndaelCipher.CreateDecryptor(); byte[] plainText = transform.TransformFinalBlock(encryData, 0, encryData.Length); string result = Encoding.Default.GetString(plainText); //动态解析result 成对象 dynamic obj = Newtonsoft.Json.Linq.JToken.Parse(result) as dynamic; string phoneNumber = (string)obj.phoneNumber; //查询手机号是否已注册 dynamic staff = StaffService.QueryWxappUserByPhoneNumber(phoneNumber); if (staff == null) { ESSChannelStaff customer = StaffService.QueryCustomerByWxopenid(openid); if (customer == null) { HttpClient clients = new HttpClient(); var tokens = WxappService.ZXKH_IsExistAccess_Token(); //HttpClient client = new HttpClient(); string urls = string.Format("https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}&lang=zh_CN", tokens, payload.gzhopenid); HttpResponseMessage responses = client.GetAsync(urls).Result; responses.EnsureSuccessStatusCode(); string msgs = responses.Content.ReadAsStringAsync().Result; dynamic datas = JsonConvert.DeserializeObject <dynamic>(msgs); // 以上openid获取用户信息 ChannelStaffVO vo = new ChannelStaffVO(); vo.ISNEW = false; vo.FCHANNELID = 27; vo.FMOBILE = phoneNumber; vo.FWXOPENID = payload.gzhopenid; vo.XCXOPENID = openid; vo.FENABLE = '1'; vo.FTELE = string.Empty; vo.FCREATEDATE = System.DateTime.Now; vo.FMODIFYDATE = System.DateTime.Now; vo.FCREATORID = 0; vo.FMODIFIERID = 0; vo.FQQ = string.Empty; vo.ISNEW = false; vo.KHNAME = datas.nickname; ChannelStaffLVO staffLVO = new ChannelStaffLVO { FNAME = "微信注册用户", FJOB = "客户", FREMARK = string.Empty, FROLEID = 1001 }; vo.ChannelStaffLVOs = staffLVO; StaffService.Save(vo); if (StaffService.ZXKH_Staff_Customers(openid)) //判断该用户是否有客服关联,微信小程序消息发送进行人员的第一次分配 { StaffService.ZXKH_AddShip(openid); //添加人员关系 } NHSessionProvider.GetCurrentSession().Flush(); customer = StaffService.QueryCustomerByWxopenid(openid); ESSChannelStaffAvatar avatar = new ESSChannelStaffAvatar { //Picture = "Image/head.png", Picture = datas.headimgurl, StaffId = customer.FID, UseWxAvatar = false }; StaffService.SaveAvatar(avatar); } else { customer.FMOBILE = phoneNumber; } NHSessionProvider.GetCurrentSession().Flush(); staff = StaffService.QueryWxappUserByPhoneNumber(phoneNumber); } dynamic staffFwxOpenid = StaffService.QueryWxappUserByFwxOpenid(phoneNumber); if (staffFwxOpenid == null) { StaffService.QueryWxappUserEditFwxOpenid(phoneNumber, payload.gzhopenid); } var token = JwtHelper.GenerateToken((int)staff["FID"], (string)staff["FJOB"], 2); var user = new { userId = (int)staff["FID"], userName = (string)staff["FNAME"], wxopenid = (string)staff["FWXOPENID"], FJOB = (string)staff["FJOB"], channelName = (string)staff["CHANNELNAME"], channelCode = (string)staff["FCHANNELCODE"], channelId = (int)staff["FCHANNELID"], customerId = (int)staff["FCUSTOMERID"], channelTypeId = (int)staff["FCHANNELTYPEID"], channelTypeName = (string)staff["FCHANNELTYPENAME"], avatarUrl = (string)staff["PICTURE"], nickName = (string)staff["KHNAME"], xcxopenid = (string)staff["XCXOPENID"], phoneNumber = phoneNumber }; return(new Response { Result = new { token, user } }); } else { throw new Exception((string)data.errmsg); } }