Пример #1
0
        /// <summary>
        /// 更改门店职员信息
        /// </summary>
        /// <param name="staffL">门店职员信息</param>
        public void Edit(ESSChannelStaff staff)
        {
            ISession session = NHSessionProvider.GetCurrentSession();

            session.SaveOrUpdate(staff);
            session.Flush();
        }
Пример #2
0
        public Response UpdatePwd(PwdVo vo)
        {
            ESSChannelStaff staff = StaffService.QueryStaffById(Convert.ToInt32(vo.UserId));

            if (staff == null)
            {
                throw new Exception("用户不存在!");
            }
            //反转字符串
            var array = vo.Noncestr.ToCharArray();

            Array.Reverse(array);
            var key = new string(array);
            // md5加密
            var md5 = new MD5CryptoServiceProvider();

            byte[] output1 = md5.ComputeHash(Encoding.Default.GetBytes(key));
            var    keyStr  = BitConverter.ToString(output1).Replace("-", "").ToLower();

            var ivChar = keyStr.ToCharArray();

            Array.Reverse(ivChar);
            var iv = new string(ivChar);

            byte[] output2 = md5.ComputeHash(Encoding.Default.GetBytes(iv));
            var    ivStr   = BitConverter.ToString(output2).Replace("-", "").ToLower().Substring(0, 16);
            //密码解密
            var password = AES256Helper.Decrypt(vo.Pwd, Encoding.Default.GetBytes(keyStr), Encoding.Default.GetBytes(ivStr));

            var isSuccess = BouncyCastleHashing.ValidatePassword(password, staff.SALT, staff.PASSWORD);

            if (isSuccess)
            {
                //生成新密码
                byte[] saltBytes = BouncyCastleHashing.CreateSalt();
                var    newPwd    = AES256Helper.Decrypt(vo.NewPwd, Encoding.Default.GetBytes(keyStr), Encoding.Default.GetBytes(ivStr));
                var    encrypt   = BouncyCastleHashing.EncryptionPassword(newPwd, saltBytes);

                staff.SALT     = Convert.ToBase64String(saltBytes);
                staff.PASSWORD = encrypt;
                return(new Response
                {
                    Result = 1
                });
            }
            else
            {
                return(new Response
                {
                    Errcode = ExceptionHelper.UNKNOWN,
                    Errmsg = "登录密码错误!"
                });
            }
        }
Пример #3
0
        public ESSChannelStaff QueryStaffById(int id)
        {
            ISession session = NHSessionProvider.GetCurrentSession();


            ESSChannelStaff staff = session
                                    .Query <ESSChannelStaff>()
                                    .Where(x => x.FID == id)
                                    .ToList()
                                    .FirstOrDefault();

            return(staff);
        }
Пример #4
0
        /// <summary>
        /// 门店职员 --新增
        /// </summary>
        /// <param name="vo"></param>
        /// <returns></returns>
        public Response Save(ChannelStaffVO vo)
        {
            lock (locker)
            {
                ESSChannelStaff staff = AutoMapper.Mapper.Map <ESSChannelStaff>(vo);

                // 新增生成默认密码
                if (staff.FID == 0)
                {
                    //生成默认密码
                    byte[] saltBytes = BouncyCastleHashing.CreateSalt();
                    var    encrypt   = BouncyCastleHashing.EncryptionPassword(USER_DEFAULT_PWD, saltBytes);

                    staff.SALT     = Convert.ToBase64String(saltBytes);
                    staff.PASSWORD = encrypt;
                }

                if (staff != null)
                {
                    staff.FID         = Convert.ToInt32(TableMaxIdDao.QueryMaxId("ESS_CHANNELSTAFF"));
                    staff.FCREATEDATE = DateTime.Now.ToLocalTime();
                    staff.FMODIFYDATE = DateTime.Now.ToLocalTime();
                    Dao.Save(staff);

                    vo.ChannelStaffLVOs.FID = staff.FID;
                    // 看仔细了
                    vo.ChannelStaffLVOs.FPKID     = staff.FID;
                    vo.ChannelStaffLVOs.FLOCALEID = 2052;
                    if (vo.FCHANNELID == 27 && string.IsNullOrWhiteSpace(vo.ChannelStaffLVOs.FNAME))
                    {
                        vo.ChannelStaffLVOs.FNAME = "微信注册用户";
                    }
                    EntrySave(vo.ChannelStaffLVOs);
                    return(new Response
                    {
                        Result = 1
                    });
                }
                else
                {
                    return(new Response
                    {
                        Errcode = ExceptionHelper.DBNOTEXISTS,
                        Errmsg = "参数不合法。",
                        Result = null
                    });
                }
            }
        }
Пример #5
0
        /// <summary>
        /// 门店职员 --编辑
        /// </summary>
        /// <param name="vo"></param>
        /// <returns></returns>
        public Response Edit(ChannelStaffVO vo)
        {
            ESSChannelStaff staff = AutoMapper.Mapper.Map <ESSChannelStaff>(vo);

            var item = Dao.Detail(staff.FID);

            //NHSessionProvider.GetCurrentSession().Merge(staff);
            //NHSessionProvider.GetCurrentSession().Clear();
            if (item != null)
            {
                item.FCHANNELID  = staff.FCHANNELID;
                item.FCREATEDATE = DateTime.Now.ToLocalTime();
                item.FMODIFYDATE = DateTime.Now.ToLocalTime();
                item.FMOBILE     = staff.FMOBILE; //修改电话号码
                //item.KHNAME = staff.KHNAME;    //修改用户名称
                item.AREA     = staff.AREA;       //用户地区
                item.BIRTHDAY = staff.BIRTHDAY;   //用户生日
                item.FQQ      = staff.FQQ;        //用户QQ
                item.FTELE    = staff.FTELE;      //用户办公电话
                item.FWECHAT  = staff.FWECHAT;    //用户微信
                item.GENDER   = staff.GENDER;     //性别
                if (string.IsNullOrWhiteSpace(item.PASSWORD))
                {
                    //生成默认密码
                    byte[] saltBytes = BouncyCastleHashing.CreateSalt();
                    var    encrypt   = BouncyCastleHashing.EncryptionPassword(USER_DEFAULT_PWD, saltBytes);

                    item.SALT     = Convert.ToBase64String(saltBytes);
                    item.PASSWORD = encrypt;
                }
                else
                {
                    item.SALT     = item.SALT;
                    item.PASSWORD = item.PASSWORD;
                }
                Dao.Edit(item);
                ESSChannelStaff_L staffL = AutoMapper.Mapper.Map <ESSChannelStaff_L>(vo.ChannelStaffLVOs);
                staffL.FPKID = staff.FID;
                staffL.FNAME = staff.KHNAME;
                if (vo.FCHANNELID == 27)
                {
                    staffL.FNAME = "微信注册用户";
                }
                Dao.EditEntry(staffL);
                //EntryEdit(vo.ChannelStaffLVOs);
                //if (!string.IsNullOrWhiteSpace(staff.KHNAME))
                //{
                //    var data = new
                //    {
                //        memberPhone = staff.FMOBILE,
                //        name = staff.KHNAME
                //    };
                //    A3Service.UpdateCustomerInfo(data);
                //}
                //if (!string.IsNullOrWhiteSpace(staff.GENDER))
                //{
                //    var data = new
                //    {
                //        memberPhone = staff.FMOBILE,
                //        gender = staff.GENDER
                //    };
                //    A3Service.UpdateCustomerInfo(data);
                //}
                //if (!string.IsNullOrWhiteSpace(staff.BIRTHDAY))
                //{
                //    var data = new
                //    {
                //        memberPhone = staff.FMOBILE,
                //        birthday = staff.BIRTHDAY
                //    };
                //    A3Service.UpdateCustomerInfo(data);
                //}
                //if (!string.IsNullOrWhiteSpace(staff.AREA))
                //{
                //    var data = new
                //    {
                //        memberPhone = staff.FMOBILE,
                //        area = staff.AREA
                //    };
                //    A3Service.UpdateCustomerInfo(data);
                //}
                //if (!string.IsNullOrWhiteSpace(staff.KHTEL))
                //{
                //    var data = new
                //    {
                //        memberPhone = staff.FMOBILE,
                //        workPhone = staff.KHTEL
                //    };
                //    A3Service.UpdateCustomerInfo(data);
                //}
                return(new Response
                {
                    Result = 1
                });
            }
            else
            {
                return(new Response
                {
                    Errcode = ExceptionHelper.UNKNOWN,
                    Errmsg = "职员不存在"
                });
            }
        }
Пример #6
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);
            }
        }
Пример #7
0
        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);
            }
        }