public void SaveAvatar(ESSChannelStaffAvatar avatar) { Dao.SaveAvatar(avatar); }
public Response Register(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; ESSChannelStaff customer = StaffService.QueryCustomerByWxopenid(openid); if (customer == null) { ChannelStaffVO vo = new ChannelStaffVO(); vo.ISNEW = false; vo.FCHANNELID = 27; vo.FMOBILE = ""; vo.FWXOPENID = 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.KHNAME = payload.NickName; ChannelStaffLVO staffLVO = new ChannelStaffLVO { FNAME = "微信注册用户", FJOB = "门店客户", FREMARK = string.Empty, FROLEID = 3027 }; vo.ChannelStaffLVOs = staffLVO; StaffService.Save(vo); NHSessionProvider.GetCurrentSession().Flush(); customer = StaffService.QueryCustomerByWxopenid(openid); ESSChannelStaffAvatar avatar = new ESSChannelStaffAvatar { Picture = payload.AvatarUrl, StaffId = customer.FID, UseWxAvatar = true }; StaffService.SaveAvatar(avatar); } else { if (string.IsNullOrWhiteSpace(customer.KHNAME)) { customer.KHNAME = payload.NickName; } var avatar = StaffService.QueryCustomerAvatar(customer.FID); if (avatar == null) { avatar = new ESSChannelStaffAvatar { Picture = payload.AvatarUrl, StaffId = customer.FID, UseWxAvatar = true }; StaffService.SaveAvatar(avatar); } else { if (string.IsNullOrWhiteSpace(avatar.Picture)) { avatar.Picture = payload.AvatarUrl; avatar.UseWxAvatar = true; } } } NHSessionProvider.GetCurrentSession().Flush(); return(new Response { Result = 1 }); } else { throw new Exception((string)data.errmsg); } }
/// <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); } }
public void SaveAvatar(ESSChannelStaffAvatar avatar) { ISession session = NHSessionProvider.GetCurrentSession(); session.Save(avatar); }