/// <summary> /// 选择图书馆 /// </summary> /// <param name="strWeiXinId"></param> /// <param name="libCode"></param> public WxUserItem SelectLib(string strWeiXinId, string libCode, string libUserName) { WxUserItem userItem = WxUserDatabase.Current.GetActiveOrFirst(strWeiXinId, libCode); if (userItem == null) { userItem = new WxUserItem(); userItem.weixinId = strWeiXinId; userItem.libCode = libCode; userItem.libUserName = libUserName; userItem.readerBarcode = ""; userItem.readerName = ""; userItem.xml = ""; userItem.refID = ""; userItem.createTime = DateTimeUtil.DateTimeToString(DateTime.Now); userItem.updateTime = userItem.createTime; WxUserDatabase.Current.Add(userItem); } //设为当前活动状态 WxUserDatabase.Current.SetActive(userItem); //记下来,以便点对点方便访问该图书馆 //this.libCode = libCode; //this.remoteUserName = libUserName; return(userItem); }
/// <summary> /// 删除 /// </summary> /// <param name="item"></param> public void Delete(String id) { if (string.IsNullOrEmpty(id) == true || id == "null") { return; } IMongoCollection <WxUserItem> collection = this.wxUserCollection; var filter = Builders <WxUserItem> .Filter.Eq("id", id); // 检查一下是否被删除读者是否为默认读者,如果是,把自动将默认值设了第一个读者上。 List <WxUserItem> list = this.wxUserCollection.Find(filter).ToList(); string weixinId = ""; if (list.Count > 0) { weixinId = list[0].weixinId; } // 先删除 collection.DeleteOne(filter); // 自动将第一个设为默认的 WxUserItem newUserItem = this.GetOneByWeixinId(weixinId); if (newUserItem != null) { this.SetActive(newUserItem); } }
public WxUserItem Add(WxUserItem item) { //item.CreateTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); this.wxUserCollection.InsertOne(item); return(item); }
public virtual int Bind(string remoteUserName, string libCode, string strFullWord, string strPassword, string strWeiXinId, out WxUserItem userItem, out string strReaderBarcode, out string strError) { userItem = null; strReaderBarcode = ""; strError = "未实现"; return(-1); }
/// <summary> /// 检查微信用户是否已经选择了图书馆 /// </summary> /// <param name="strWeiXinId"></param> /// <returns></returns> public WxUserItem CheckIsSelectLib(string strWeiXinId) { WxUserItem userItem = WxUserDatabase.Current.GetActive(strWeiXinId); if (userItem == null) { return(null); } //记下来,以便点对点方便访问该图书馆 //this.libCode = userItem.libCode; //this.remoteUserName = userItem.libUserName; return(userItem); }
public string CheckIsSelectLib(string strWeiXinId) { WxUserItem userItem = WxUserDatabase.Current.GetOneByWeixinId(strWeiXinId); if (userItem == null) { return(""); } if (userItem.libCode == "") { return(""); } return(userItem.libCode); }
// 更新 public long Update(WxUserItem item) { IMongoCollection <WxUserItem> collection = this.wxUserCollection; var filter = Builders <WxUserItem> .Filter.Eq("weixinId", item.weixinId); var update = Builders <WxUserItem> .Update .Set("weixinId", item.weixinId) .Set("readerBarcode", item.readerBarcode) .Set("readerName", item.readerName) .Set("libCode", item.libCode) .Set("createTime", item.createTime); UpdateResult ret = collection.UpdateOne(filter, update); return(ret.ModifiedCount); }
public void SelectLib(string strWeiXinId, string libCode) { WxUserItem userItem = WxUserDatabase.Current.GetOneByWeixinId(strWeiXinId); if (userItem == null) { userItem = new WxUserItem(); userItem.weixinId = strWeiXinId; userItem.libCode = libCode; userItem.readerBarcode = ""; userItem.readerName = ""; userItem.createTime = DateTimeUtil.DateTimeToString(DateTime.Now); WxUserDatabase.Current.Add(userItem); } else { userItem.libCode = libCode; userItem.readerBarcode = ""; userItem.readerName = ""; userItem.createTime = DateTimeUtil.DateTimeToString(DateTime.Now); WxUserDatabase.Current.Update(userItem); } }
/// <summary> /// 根据微信id检索读者 /// </summary> /// <param name="strWeiXinId"></param> /// <param name="strRecPath"></param> /// <param name="strXml"></param> /// <param name="strError"></param> /// <returns></returns> public long SearchReaderByWeiXinId(string strWeiXinId, out string strRecPath, out string strXml, out string strError) { strError = ""; strRecPath = ""; strXml = ""; long lRet = 0; LibraryChannel channel = this.ChannelPool.GetChannel(this.dp2Url, this.dp2UserName); channel.Password = this.dp2Password; try { strWeiXinId = dp2CommandUtility.C_WeiXinIdPrefix + strWeiXinId;//weixinid: // 先从mongodb查 if (this.IsUseMongoDb == true) { return(0); } lRet = this.SearchReaderByWeiXinId(channel, strWeiXinId, out strError); if (lRet == -1) { strError = "检索微信用户对应的读者出错:" + strError; return(-1); } else if (lRet > 1) { strError = "检索微信用户对应的读者异常,得到" + lRet.ToString() + "条读者记录"; return(-1); } else if (lRet == 0) { strError = "根据微信id未找到对应读者。"; return(0); } else if (lRet == 1) { lRet = this.GetSearchResultForWeiXinUser(channel, out strRecPath, out strXml, out strError); if (lRet != 1) { strError = "获取结果集异常:" + strError; return(-1); } XmlDocument dom = new XmlDocument(); dom.LoadXml(strXml); string strBarcode = DomUtil.GetNodeText(dom.DocumentElement.SelectSingleNode("barcode")); // 将关系存到mongodb库 if (this.IsUseMongoDb == true) { //name string name = ""; XmlNode node = dom.DocumentElement.SelectSingleNode("name"); if (node != null) { name = DomUtil.GetNodeText(node); } WxUserItem userItem = new WxUserItem(); userItem.weixinId = strWeiXinId; userItem.readerBarcode = strBarcode; userItem.readerName = name; userItem.libCode = ""; userItem.createTime = DateTimeUtil.DateTimeToString(DateTime.Now); WxUserDatabase.Current.Add(userItem); } } } finally { this.ChannelPool.ReturnChannel(channel); } return(1); }
/// <summary> /// /// </summary> /// <param name="strBarcode"></param> /// <param name="strPassword"></param> /// <param name="weiXinId"></param> /// <returns> /// -1 出错 /// 0 读者证条码号或密码不正确 /// 1 成功 /// </returns> public int Binding(string strBarcode, string strPassword, string strWeiXinId, out string strReaderBarcode, out string strError) { strError = ""; strReaderBarcode = ""; LibraryChannel channel = this.ChannelPool.GetChannel(this.dp2Url, this.dp2UserName); channel.Password = this.dp2Password; try { // 检验用户名与密码 long lRet = channel.VerifyReaderPassword(strBarcode, strPassword, out strError); if (lRet == -1) { strError = "读者证条码号或密码不正确。\n请重新输入'读者证条码号'(注:您也可以同时输入'读者证条码号'和'密码',中间以/分隔,例如:R0000001/123)"; return(0); } if (lRet == 0) { strError = "读者证条码号或密码不正确。\n请重新输入'读者证条码号'(注:您也可以同时输入'读者证条码号'和'密码',中间以/分隔,例如:R0000001/123)"; return(0); } if (lRet == 1) { // 进行绑定 // 先根据barcode检索出来,得到原记录与时间戳 GetReaderInfoResponse response = channel.GetReaderInfo(strBarcode, "xml"); if (response.GetReaderInfoResult.Value != 1) { strError = "根据读者证条码号得到读者记录异常:" + response.GetReaderInfoResult.ErrorInfo; return(-1); } string strRecPath = response.strRecPath; string strTimestamp = StringUtil.GetHexTimeStampString(response.baTimestamp); string strXml = response.results[0]; // 改读者的email字段 XmlDocument readerDom = new XmlDocument(); readerDom.LoadXml(strXml); XmlNode emailNode = readerDom.SelectSingleNode("//email"); if (emailNode == null) { emailNode = readerDom.CreateElement("email"); readerDom.DocumentElement.AppendChild(emailNode); } emailNode.InnerText = JoinEmail(emailNode.InnerText, strWeiXinId); string strNewXml = ConvertXmlToString(readerDom); // 更新到读者库 lRet = channel.SetReaderInfoForWeiXin(strRecPath, strNewXml, strTimestamp, out strError); if (lRet == -1) { strError = "绑定出错:" + strError; return(-1); } // 绑定成功,把读者证条码记下来,用于续借 2015/11/7,不要用strbarcode变量,因为可能做的大小写转换 strReaderBarcode = DomUtil.GetNodeText(readerDom.DocumentElement.SelectSingleNode("barcode")); // 将关系存到mongodb库 if (this.IsUseMongoDb == true) { //name string name = ""; XmlNode node = readerDom.DocumentElement.SelectSingleNode("name"); if (node != null) { name = DomUtil.GetNodeText(node); } WxUserItem userItem = WxUserDatabase.Current.GetOneByWeixinId(strWeiXinId); if (userItem == null) { // 大微信号管理多个图书馆不可能出现不存在的情况,必然先选择了图书馆 userItem = new WxUserItem(); userItem.weixinId = strWeiXinId; userItem.libCode = ""; userItem.readerBarcode = ""; userItem.readerName = ""; userItem.createTime = DateTimeUtil.DateTimeToString(DateTime.Now); WxUserDatabase.Current.Add(userItem); } else { userItem.readerBarcode = strBarcode; userItem.readerName = name; userItem.createTime = DateTimeUtil.DateTimeToString(DateTime.Now); lRet = WxUserDatabase.Current.Update(userItem); } } return(1); } strError = "校验读者账号返回未知情况,返回值:" + lRet.ToString() + "-" + strError; return(-1); } finally { this.ChannelPool.ReturnChannel(channel); } }
public void SetActive(WxUserItem item) { this.SetActive(item.weixinId, item.id); }
/// <summary> /// 根据微信id检索读者 /// </summary> /// <param name="strWeiXinId"></param> /// <param name="strRecPath"></param> /// <param name="strXml"></param> /// <param name="strError"></param> /// <returns></returns> public override long SearchOnePatronByWeiXinId(string remoteUserName, string libCode, string strWeiXinId, out string strBarcode, out string strError) { strError = ""; strBarcode = ""; long lRet = 0; LibraryChannel channel = this.ChannelPool.GetChannel(this.dp2Url, this.dp2UserName); channel.Password = this.dp2Password; try { strWeiXinId = dp2CommandUtility.C_WeiXinIdPrefix + strWeiXinId;//weixinid: // 先从mongodb查 if (this.IsUseMongoDb == true) { return(0); } lRet = channel.SearchReader("", strWeiXinId, -1, "email", "exact", "zh", "weixin", "keyid", out strError); if (lRet == -1) { strError = "检索微信用户对应的读者出错:" + strError; return(-1); } else if (lRet > 1) { strError = "检索微信用户对应的读者异常,得到" + lRet.ToString() + "条读者记录"; return(-1); } else if (lRet == 0) { strError = "根据微信id未找到对应读者。"; return(0); } else if (lRet == 1) { Record[] searchresults = null; lRet = channel.GetSearchResult("weixin", 0, -1, "id,xml", "zh", out searchresults, out strError); if (searchresults.Length != 1) { throw new Exception("获得的记录数不是1"); } if (lRet != 1) { strError = "获取结果集异常:" + strError; return(-1); } string strXml = searchresults[0].RecordBody.Xml; XmlDocument dom = new XmlDocument(); dom.LoadXml(strXml); strBarcode = DomUtil.GetNodeText(dom.DocumentElement.SelectSingleNode("barcode")); // 将关系存到mongodb库 if (this.IsUseMongoDb == true) { //name string name = ""; XmlNode node = dom.DocumentElement.SelectSingleNode("name"); if (node != null) { name = DomUtil.GetNodeText(node); } WxUserItem userItem = new WxUserItem(); userItem.weixinId = strWeiXinId; userItem.readerBarcode = strBarcode; userItem.readerName = name; userItem.libCode = ""; userItem.libUserName = ""; userItem.xml = strXml; userItem.refID = searchresults[0].Path; userItem.createTime = DateTimeUtil.DateTimeToString(DateTime.Now); userItem.updateTime = userItem.createTime; WxUserDatabase.Current.Add(userItem); } } } finally { this.ChannelPool.ReturnChannel(channel); } return(0); }