示例#1
0
文件: StaffService.cs 项目: MenJun/kf
        /// <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);
            }
        }
示例#2
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);
            }
        }