/// <summary> /// 更改门店职员信息 /// </summary> /// <param name="staffL">门店职员信息</param> public void Edit(ESSChannelStaff staff) { ISession session = NHSessionProvider.GetCurrentSession(); session.SaveOrUpdate(staff); session.Flush(); }
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 = "登录密码错误!" }); } }
public ESSChannelStaff QueryStaffById(int id) { ISession session = NHSessionProvider.GetCurrentSession(); ESSChannelStaff staff = session .Query <ESSChannelStaff>() .Where(x => x.FID == id) .ToList() .FirstOrDefault(); return(staff); }
/// <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 }); } } }
/// <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 = "职员不存在" }); } }
/// <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 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); } }