Exemplo n.º 1
0
        private string GetHasRightUserName(WxUserItem activeUser, Library lib)
        {
            string userName = "";
            string strError = "";

            // 查找当前微信用户绑定的工作人员账号
            //WxUserItem user = WxUserDatabase.Current.GetWorker(weixinId, libId);
            // todo 后面可以放开对读者的权限
            if (activeUser != null &&
                activeUser.type == WxUserDatabase.C_Type_Worker &&
                activeUser.userName != WxUserDatabase.C_Public)
            {
                // 检索是否有权限 _wx_setHomePage
                string needRight  = dp2WeiXinService.C_Right_SetBb;
                int    nHasRights = dp2WeiXinService.Instance.CheckRights(activeUser,
                                                                          lib.Entity,
                                                                          needRight,
                                                                          out strError);
                if (nHasRights == -1)
                {
                    dp2WeiXinService.Instance.WriteErrorLog("CheckRights()出错:" + strError);
                    userName = "";
                }
                if (nHasRights == 1)
                {
                    userName = activeUser.userName;
                }
                else
                {
                    userName = "";
                }
            }

            return(userName);
        }
Exemplo n.º 2
0
        public ActionResult Message(string code, string state)
        {
            string strError = "";
            int    nRet     = 0;

            // 检查当前是否已经选择了图书馆绑定了帐号
            WxUserItem activeUser = null;

            nRet = this.GetActive(code, state,
                                  out activeUser,
                                  out strError);
            if (nRet == -1)
            {
                goto ERROR1;
            }
            if (nRet == 0)
            {
                ViewBag.RedirectInfo = dp2WeiXinService.GetSelLibLink(state, "/Library/Message");
                return(View());
            }



            // 获取消息
            List <UserMessageItem> list = UserMessageDb.Current.GetByUserId(activeUser.weixinId);



            return(View(list));


ERROR1:
            ViewBag.Error = strError;
            return(View());
        }
Exemplo n.º 3
0
        // 书目查询主界面
        public ActionResult Detail(string code, string state, string biblioPath)
        {
            string strError = "";
            int    nRet     = 0;

            // 检查当前是否已经选择了图书馆绑定了帐号
            WxUserItem activeUser = null;

            nRet = this.GetActive(code, state,
                                  out activeUser,
                                  out strError);
            if (nRet == -1)
            {
                goto ERROR1;
            }
            if (nRet == 0)
            {
                ViewBag.RedirectInfo = dp2WeiXinService.GetSelLibLink(state, "/Biblio/Detail");
                return(View());
            }

            if (activeUser != null)
            {
                ViewBag.PatronBarcode = activeUser.readerBarcode;
            }

            ViewBag.BiblioPath = biblioPath;

            return(View());

ERROR1:
            ViewBag.Error = strError;
            return(View());
        }
Exemplo n.º 4
0
        /// <summary>
        /// 绑定账户
        /// </summary>
        /// <param name="code"></param>
        /// <param name="state"></param>
        /// <param name="returnUrl"></param>
        /// <returns></returns>
        public ActionResult Bind(string code, string state, string returnUrl, string from)
        {
            ViewBag.ReturnUrl = returnUrl;

            string strError = "";
            int    nRet     = 0;

            // 检查当前是否已经选择了图书馆绑定了帐号
            WxUserItem activeUser = null;

            nRet = this.GetActive(code, state,
                                  out activeUser,
                                  out strError);
            if (nRet == -1)
            {
                goto ERROR1;
            }
            if (nRet == 0)
            {
                ViewBag.RedirectInfo = dp2WeiXinService.GetSelLibLink(state, "/Accout/Bind");
                return(View());
            }

            //// web来源
            //if (from == "web")
            //{
            //    string weixinId = "temp";//这是时间还得用temp因为还没有登录成功,只是做一些初始化设置,后面 "~~" + guid; //2018/3/8

            //    // 初始化session
            //     state = "ilovelibrary";
            //    SessionInfo sessionInfo = null;
            //     nRet = this.InitSession(state, weixinId, out sessionInfo, out strError);
            //    if (nRet == -1)
            //        goto ERROR1;

            //    // 初始化 viewbag
            //    nRet = this.InitViewBag(sessionInfo, out strError);
            //    if (nRet == -1)
            //        goto ERROR1;

            //    ViewBag.fromUrl = "/Account/Bind?from=web";

            //    return View();
            //}

            //// 登录检查
            //nRet = this.CheckLogin(code, state, out strError);
            //if (nRet == -1 || nRet ==0)
            //{
            //    goto ERROR1;
            //}
            ViewBag.fromUrl = "/Account/Bind";

            return(View());

ERROR1:
            ViewBag.Error = strError;
            return(View());
        }
Exemplo n.º 5
0
        public ApiResult ActivePatron(string weixinId, string id)
        {
            ApiResult result = new ApiResult();
            string    error  = "";

            if (HttpContext.Current.Session[WeiXinConst.C_Session_sessioninfo] == null)
            {
                error = "session失效。";
                goto ERROR1;
            }
            SessionInfo sessionInfo = (SessionInfo)HttpContext.Current.Session[WeiXinConst.C_Session_sessioninfo];

            if (sessionInfo == null)
            {
                error = "session失效2。";
                goto ERROR1;
            }

            if (weixinId == "null")
            {
                weixinId = "";
            }

            if (id == "null")
            {
                id = "";
            }

            WxUserItem user = wxUserDb.GetById(id);

            if (user == null)
            {
                error = "未找到" + id + "对应的绑定用户";
                goto ERROR1;
            }

            //设为活动账户
            WxUserDatabase.Current.SetActivePatron1(user.weixinId, user.id);



            //更新session

            int nRet = sessionInfo.Init1(weixinId, out error);

            if (nRet == -1)
            {
                goto ERROR1;
            }


            return(result);// repo.Add(item);


ERROR1:
            result.errorCode = -1;
            result.errorInfo = error;
            return(result);
        }
Exemplo n.º 6
0
        /// <summary>
        /// 在借续借界面
        /// </summary>
        /// <param name="code"></param>
        /// <param name="state"></param>
        /// <returns></returns>
        public ActionResult BorrowInfo()
        {
            string strError = "";
            int    nRet     = 0;

            SessionInfo sessionInfo = this.GetSessionInfo1();

            if (sessionInfo == null)
            {
                strError = "session失效";
                goto ERROR1;
            }
            nRet = this.InitViewBag(sessionInfo, out strError);
            if (nRet == -1)
            {
                goto ERROR1;
            }
            WxUserItem activeUserItem = sessionInfo.Active;

            if (activeUserItem == null || activeUserItem.type != WxUserDatabase.C_Type_Patron)
            {
                strError = "当前帐户不是读者帐户";
                goto ERROR1;
            }
            ViewBag.patronBarcode = activeUserItem.readerBarcode;

            string patronXml = "";
            string recPath   = "";

            nRet = this.GetReaderXml(activeUserItem,
                                     out patronXml,
                                     out recPath,
                                     out strError);
            if (nRet == -1 || nRet == 0 || nRet == -2)
            {
                goto ERROR1;
            }



            string             strWarningText       = "";
            string             maxBorrowCountString = "";
            string             curBorrowCountString = "";
            List <BorrowInfo2> overdueList          = dp2WeiXinService.Instance.GetBorrowInfo(patronXml,
                                                                                              out strWarningText,
                                                                                              out maxBorrowCountString,
                                                                                              out curBorrowCountString);

            ViewBag.maxBorrowCount = maxBorrowCountString;
            ViewBag.curBorrowCount = curBorrowCountString;


            return(View(overdueList));

ERROR1:
            ViewBag.Error = strError;
            return(View());
        }
Exemplo n.º 7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="code"></param>
        /// <param name="state"></param>
        /// <returns>
        /// -1 出错,或者非正常途径登录
        /// -2 未绑定
        /// -3 未设置默认账户
        /// 0 未找到读者记录
        /// 1 成功
        /// </returns>
        private int GetReaderXml(WxUserItem activeUser,
                                 out string patronXml,
                                 out string recPath,
                                 out string strError)
        {
            patronXml = "";
            strError  = "";
            recPath   = "";
            int nRet = 0;

            if (activeUser == null)
            {
                strError = "activeUser参数不能为空";
                return(-1);
            }

            if (activeUser.type != WxUserDatabase.C_Type_Patron)
            {
                strError = "当前活动需为读者帐号";
                return(-1);
            }


            string libId         = activeUser.libId;
            string patronBarcode = activeUser.readerBarcode;

            // 登录人是读者自己
            string loginUserName = activeUser.readerBarcode;
            bool   isPatron      = true;



            // 获取读者记录
            LoginInfo loginInfo = new LoginInfo(loginUserName, isPatron);
            string    timestamp = "";

            nRet = dp2WeiXinService.Instance.GetPatronXml(libId,
                                                          loginInfo,
                                                          patronBarcode,
                                                          "advancexml", // 格式
                                                          out recPath,
                                                          out timestamp,
                                                          out patronXml,
                                                          out strError);
            if (nRet == -1 || nRet == 0)
            {
                return(-1);
            }

            activeUser.recPath = recPath; // todo 应该在绑定的时候赋值,但绑定时没有返回路径
            //todo1 要保存到数据库里


            return(1);
        }
Exemplo n.º 8
0
        public SetReaderInfoResult SetPatron(string libId,
                                             string userName,
                                             string opeType,
                                             string recPath,
                                             string timestamp,
                                             string weixinId,
                                             SimplePatron patron)
        {
            SetReaderInfoResult result = new SetReaderInfoResult();
            string strError            = "";

            string outputRecPath   = "";
            string outputTimestamp = "";

            WxUserItem userItem = null;
            int        nRet     = dp2WeiXinService.Instance.SetReaderInfo(libId,
                                                                          userName,
                                                                          opeType,
                                                                          recPath,
                                                                          timestamp,
                                                                          weixinId,
                                                                          patron,
                                                                          out outputRecPath,
                                                                          out outputTimestamp,
                                                                          out userItem,
                                                                          out strError);

            if (nRet == -1)
            {
                result.errorCode = -1;
                result.errorInfo = strError;
                return(result);
            }

            // 返回读者路径和时间戳
            result.recPath   = outputRecPath;
            result.timestamp = outputTimestamp;

            // 如果是读者自助注册过来的,需要把注册的这个帐户设置为当前帐户
            // reregister不需要设置活动帐户,因为当前帐户就是他本身。
            if (opeType == "register")
            {
                result.info = userItem.readerBarcode;

                nRet = ApiHelper.ActiveUser(userItem, out strError);
                if (nRet == -1)
                {
                    result.errorInfo = strError;
                    return(result);
                }
            }
            return(result);
        }
Exemplo n.º 9
0
        public WxUserResult Bind(BindItem item)
        {
            string error = "";

            dp2WeiXinService.Instance.WriteDebug("走进bind API");

            if (item.bindLibraryCode == null)
            {
                item.bindLibraryCode = "";
            }

            // 返回对象
            WxUserResult result = new WxUserResult();

            // 前端有时传上来是这个值
            if (item.prefix == "null")
            {
                item.prefix = "";
            }
            WxUserItem userItem = null;

            int nRet = dp2WeiXinService.Instance.Bind(item.libId,
                                                      item.bindLibraryCode,
                                                      item.prefix,
                                                      item.word,
                                                      item.password,
                                                      item.weixinId,
                                                      out userItem,
                                                      out error);

            if (nRet == -1)
            {
                result.errorCode = -1;
                result.errorInfo = error;
                return(result);
            }
            result.users = new List <WxUserItem>();
            result.users.Add(userItem);

            // 将绑定的帐户设为当前帐户
            nRet = ApiHelper.ActiveUser(userItem, out error);
            if (nRet == -1)
            {
                result.errorCode = -1;
                result.errorInfo = error;
                return(result);
            }



            return(result);
        }
Exemplo n.º 10
0
        /// <summary>
        /// 预约请求界面
        /// </summary>
        /// <param name="code"></param>
        /// <param name="state"></param>
        /// <returns></returns>
        public ActionResult Reservation()
        {
            string strError = "";
            int    nRet     = 0;

            SessionInfo sessionInfo = this.GetSessionInfo1();

            if (sessionInfo == null)
            {
                strError = "session失效";
                goto ERROR1;
            }
            nRet = this.InitViewBag(sessionInfo, out strError);
            if (nRet == -1)
            {
                goto ERROR1;
            }
            WxUserItem activeUserItem = sessionInfo.Active;

            if (activeUserItem == null || activeUserItem.type != WxUserDatabase.C_Type_Patron)
            {
                strError = "当前帐户不是读者帐户";
                goto ERROR1;
            }
            // 放到界面的变量
            ViewBag.patronBarcode = activeUserItem.readerBarcode;

            string patronXml = "";
            string recPath   = "";

            nRet = this.GetReaderXml(activeUserItem,
                                     out patronXml,
                                     out recPath,
                                     out strError);
            if (nRet == -1 || nRet == 0 || nRet == -2)
            {
                goto ERROR1;
            }


            // 预约请求
            string strReservationWarningText    = "";
            List <ReservationInfo> reservations = dp2WeiXinService.Instance.GetReservations(patronXml,
                                                                                            out strReservationWarningText);


            return(View(reservations));

ERROR1:
            ViewBag.Error = strError;
            return(View());
        }
Exemplo n.º 11
0
        /*
         * // web登录
         * public ActionResult WebLogin(string returnUrl)
         * {
         *  ViewBag.ReturnUrl = returnUrl;
         *
         *  string strError = "";
         *
         *  //// 检查是否从微信入口进来
         *  //string strError = "";
         *  //string state = "ilovelibrary";
         *  //int nRet = this.CheckIsFromWeiXin("", state, out strError);
         *  //if (nRet == -1 && strError!="未登录1")
         *  //    goto ERROR1;
         *
         *
         *
         *  // 临时id
         *  //string guid = Guid.NewGuid().ToString();
         *  string weixinId = "temp" ;//这是时间还得用temp因为还没有登录成功,只是做一些初始化设置,后面 "~~" + guid; //2018/3/8
         *
         *
         *  // 初始化session
         *  string state = "ilovelibrary";
         *  SessionInfo sessionInfo = null;
         * int nRet = this.InitSession(state, weixinId, out sessionInfo, out strError);
         *  if (nRet == -1)
         *      goto ERROR1;
         *
         *  // 初始化 viewbag
         *  nRet = this.InitViewBag(sessionInfo, out strError);
         *  if (nRet == -1)
         *      goto ERROR1;
         *
         *  return View();
         *
         *
         *  ERROR1:
         *  ViewBag.Error = strError;
         *  return View();
         * }
         */
        /// <summary>
        /// 账户管理
        /// </summary>
        /// <param name="code"></param>
        /// <param name="state"></param>
        /// <returns></returns>
        public ActionResult Index(string code, string state, string myWeixinId)
        {
            string strError = "";
            int    nRet     = 0;

            // 检查当前是否已经选择了图书馆绑定了帐号
            WxUserItem activeUser = null;

            nRet = this.GetActive(code, state,
                                  out activeUser,
                                  out strError,
                                  myWeixinId);
            if (nRet == -1)
            {
                goto ERROR1;
            }
            if (nRet == 0)
            {
                ViewBag.RedirectInfo = dp2WeiXinService.GetSelLibLink(state, "/Account/Index");
                return(View());
            }

            //dp2WeiXinService.Instance.WriteLog1("Index页面,获取完当前对象。");

            // 检查微信id是否已经绑定的读者
            string weixinId = ViewBag.weixinId; //(string)Session[WeiXinConst.C_Session_WeiXinId];


            //dp2WeiXinService.Instance.WriteLog1("Index页面,检查绑了" + userList.Count + "对象。");

            if (activeUser.type == WxUserDatabase.C_Type_Worker && activeUser.userName == "public")
            {
                List <WxUserItem> userList = WxUserDatabase.Current.Get(weixinId, null, -1);
                if (userList.Count > 1)
                {
                    ViewBag.Warn = "您尚未绑定当前图书馆[" + ViewBag.LibName + "]的帐户,请点击'新增绑定账号'按钮绑定帐户。";
                }
                else
                {
                    return(RedirectToAction("Bind"));
                }
            }

            return(View());

ERROR1:
            ViewBag.Error = strError;
            return(View());
        }
Exemplo n.º 12
0
        /// <summary>
        /// 将帐户置为当前活动帐户,会被bind,读者注册功能调用
        /// </summary>
        /// <param name="userItem"></param>
        /// <param name="error"></param>
        /// <returns></returns>
        public static int ActiveUser(WxUserItem userItem,
                                     out string error)
        {
            error = "";
            int nRet = 0;

            if (HttpContext.Current.Session[WeiXinConst.C_Session_sessioninfo] == null)
            {
                error = "session失效。";
                return(-1);
            }
            SessionInfo sessionInfo = (SessionInfo)HttpContext.Current.Session[WeiXinConst.C_Session_sessioninfo];

            if (sessionInfo == null)
            {
                error = "session失效2。";
                return(-1);
            }

            // 读者注册过来的,不可能为null
            if (userItem == null)
            {
                error = "异常:userItem不能为null。";
                return(-1);
            }

            if (sessionInfo.ActiveUser != null)
            {
                dp2WeiXinService.Instance.WriteDebug("原来session中的user对象id=[" + sessionInfo.ActiveUser.id + "],weixinid=[" + sessionInfo.WeixinId + "]");
            }
            else
            {
                dp2WeiXinService.Instance.WriteDebug("原来session中无user对象");
            }

            // 置为活动状态 2020-3-1,改在外面函数设,不再SaveUserToLocal函数里
            WxUserDatabase.Current.SetActivePatron1(userItem.weixinId, userItem.id);

            // 更新session的activeUser
            nRet = sessionInfo.GetActiveUser(userItem.weixinId, out error);
            if (nRet == -1)
            {
                return(-1);
            }

            return(0);
        }
Exemplo n.º 13
0
        /// <summary>
        /// 修改密码
        /// </summary>
        /// <param name="code"></param>
        /// <param name="state"></param>
        /// <param name="patronBarcode"></param>
        /// <returns></returns>
        public ActionResult ChangePassword(string code, string state, string patronBarcode)
        {
            string strError = "";
            int    nRet     = 0;

            // 检查当前是否已经选择了图书馆绑定了帐号
            WxUserItem activeUser = null;

            nRet = this.GetActive(code, state,
                                  out activeUser,
                                  out strError);
            if (nRet == -1)
            {
                goto ERROR1;
            }
            if (nRet == 0)
            {
                ViewBag.RedirectInfo = dp2WeiXinService.GetSelLibLink(state, "/Account/ChangePassword");
                return(View());
            }

            if (String.IsNullOrEmpty(patronBarcode) == true)
            {
                string     weixinId = ViewBag.weixinId; //(string)Session[WeiXinConst.C_Session_WeiXinId];
                WxUserItem userItem = WxUserDatabase.Current.GetActive(weixinId);
                if (userItem.type == WxUserDatabase.C_Type_Worker)
                {
                    strError = "当前用户不可能是工作人员";
                    goto ERROR1;
                }
                if (userItem != null)
                {
                    patronBarcode = userItem.readerBarcode;
                }
            }

            ViewBag.patronBarcode = patronBarcode;

            return(View());

ERROR1:
            ViewBag.Error = strError;
            return(View());
        }
Exemplo n.º 14
0
        public ApiResult UpdateUserInfo(string userId, string infoType)
        {
            ApiResult result = new ApiResult();
            string    error  = "";

            if (infoType == "libName")
            {
                WxUserItem user = WxUserDatabase.Current.GetById(userId);

                LibEntity lib = LibDatabase.Current.GetLibById1(user.libId);
                user.libName         = lib.libName;
                user.libraryCode     = "";
                user.bindLibraryCode = "";

                WxUserDatabase.Current.Update(user);
            }

            return(result);
        }
Exemplo n.º 15
0
        public ApiResult Setting(string weixinId, WxUserItem input)
        {
            ApiResult result = new ApiResult();
            string    error  = "";

            // 更新session信息???
            if (HttpContext.Current.Session[WeiXinConst.C_Session_sessioninfo] == null)
            {
                error = "session失效。";
                goto ERROR1;
            }
            SessionInfo sessionInfo = (SessionInfo)HttpContext.Current.Session[WeiXinConst.C_Session_sessioninfo];

            if (sessionInfo == null)
            {
                error = "session失效2。";
                goto ERROR1;
            }

            if (sessionInfo.Active == null)
            {
                error = "session中没有活动帐号,不可能的情况";
                goto ERROR1;
            }


            //sessionInfo.Active.libraryCode = input.libraryCode;
            sessionInfo.Active.showCover = input.showCover;
            sessionInfo.Active.showPhoto = input.showPhoto;

            WxUserDatabase.Current.Update(sessionInfo.Active);



            return(result);

ERROR1:
            result.errorCode = -1;
            result.errorInfo = error;
            return(result);
        }
Exemplo n.º 16
0
        // 柜台绑定
        public ActionResult ScanQRCodeBind(string code, string state,
                                           string libId)
        {
            string strError = "";
            int    nRet     = 0;

            // 检查当前是否已经选择了图书馆绑定了帐号
            WxUserItem activeUser = null;

            nRet = this.GetActive(code, state,
                                  out activeUser,
                                  out strError);
            if (nRet == -1)
            {
                goto ERROR1;
            }
            if (nRet == 0)
            {
                ViewBag.RedirectInfo = dp2WeiXinService.GetSelLibLink(state, "/Accout/ScanQRCodeBind");
                return(View());
            }

            if (libId == null)
            {
                libId = "";
            }

            // 图书馆html
            string weixinId = ViewBag.weixinId; //(string)Session[WeiXinConst.C_Session_WeiXinId];


            ViewBag.LibVersions = dp2WeiXinService.Instance.LibManager.GetLibVersiongString();



            return(View());

ERROR1:
            ViewBag.Error = strError;
            return(View());
        }
Exemplo n.º 17
0
        // 资源
        public ActionResult GetObject(string code, string state, string libId, string uri)
        {
            string strError = "";
            int    nRet     = 0;

            WxUserItem activeUser = null;

            nRet = this.GetActive(code, state,
                                  out activeUser,
                                  out strError);
            if (nRet == -1 && ViewBag.LibState != LibraryManager.C_State_Hangup)
            {
                goto ERROR1;
            }

            //处理 dp2 系统外部的 URL
            Uri tempUri = dp2WeiXinService.GetUri(uri);

            if (tempUri != null &&
                (tempUri.Scheme == "http" || tempUri.Scheme == "https"))
            {
                return(Redirect(uri));
            }

            string weixinId = ViewBag.weixinId;

            nRet = dp2WeiXinService.GetObject0(this, libId, weixinId, uri, out strError);
            if (nRet == -1)
            {
                goto ERROR1;
            }

            return(null);


ERROR1:
            MemoryStream ms = dp2WeiXinService.Instance.GetErrorImg(strError);

            return(File(ms.ToArray(), "image/jpeg"));
        }
Exemplo n.º 18
0
        public ApiResult Delete(string id)
        {
            ApiResult  result        = new ApiResult();
            string     error         = "";
            WxUserItem newActiveUser = null;
            int        nRet          = dp2WeiXinService.Instance.Unbind(id,
                                                                        out newActiveUser,
                                                                        out error);

            if (nRet == -1)
            {
                result.errorCode = -1;
                result.errorInfo = error;
                return(result);
            }

            // 由于有错误信息的话,把错误信息输出
            if (String.IsNullOrEmpty(error) == false)
            {
                result.errorInfo = error;
            }


            // 设置当前活动帐户,更新session信息
            if (newActiveUser != null)  //如果当前删除不是活动帐户,则返回的newActiveUser为null
            {
                nRet = ApiHelper.ActiveUser(newActiveUser, out error);
                if (nRet == -1)
                {
                    result.errorCode = -1;
                    result.errorInfo = error;
                    return(result);
                }
            }


            return(result);
        }
Exemplo n.º 19
0
        public ActionResult SelectLib(string code, string state, string returnUrl)
        {
            string strError = "";
            int    nRet     = 0;

            // 检查当前是否已经选择了图书馆绑定了帐号
            WxUserItem activeUser = null;

            nRet = this.GetActive(code, state,
                                  out activeUser,
                                  out strError);
            if (nRet == -1 && ViewBag.LibState != LibraryManager.C_State_Hangup)
            {
                goto ERROR1;
            }

            SessionInfo sessionInfo = this.GetSessionInfo1();

            ViewBag.returnUrl = returnUrl;



            // 2017-10-1 只列出可访问的图书馆
            List <Library> avaiblelibList = dp2WeiXinService.Instance.LibManager.GetLibraryByIds(sessionInfo.libIds);

            // 绑定的帐户
            List <WxUserItem> list = WxUserDatabase.Current.Get(sessionInfo.WeixinId, null, -1);

            // 可显示的域区
            List <Area> areaList = new List <Area>();

            foreach (Area area in dp2WeiXinService.Instance.areaMgr.areas)
            {
                //area.visible = true;
                //int disVisibleCout = 0;

                List <libModel> libList = new List <libModel>();
                foreach (libModel lib in area.libs)
                {
                    // lib.visible = true;
                    lib.Checked  = "";
                    lib.bindFlag = "";

                    // 如果是到期的图书馆,不显示出来
                    Library thisLib = dp2WeiXinService.Instance.LibManager.GetLibrary(lib.libId);//.GetLibById(lib.libId);
                    if (thisLib != null && thisLib.Entity.state == "到期")
                    {
                        //lib.visible = false;
                        //disVisibleCout++;
                        continue;
                    }

                    //如果不在可访问范围,不显示
                    if (thisLib != null && avaiblelibList.IndexOf(thisLib) == -1)
                    {
                        //lib.visible = false;
                        //disVisibleCout++;
                        continue;
                    }

                    libList.Add(lib);
                    //
                    if (this.CheckIsBind(list, lib) == true)  //libs.Contains(lib.libId)
                    {
                        lib.bindFlag = " * ";
                    }

                    if (sessionInfo.Active != null)
                    {
                        if (lib.libId == sessionInfo.Active.libId &&
                            lib.libraryCode == sessionInfo.Active.bindLibraryCode)
                        {
                            lib.Checked = " checked ";
                        }
                    }
                }

                // 如果下级图书馆都是到期状态,则地址不显示
                //if (disVisibleCout == area.libs.Count)
                //{
                //    area.visible = false;
                //}

                if (libList.Count > 0)
                {
                    Area newArea = new Area();
                    newArea.name = area.name;
                    newArea.libs = libList;
                    areaList.Add(newArea);
                }
            }

            ViewBag.areaList = areaList;// dp2WeiXinService.Instance.areaMgr.areas;

            return(View());

ERROR1:
            ViewBag.Error = strError;
            return(View());
        }
Exemplo n.º 20
0
        // 书目查询主界面
        public ActionResult Index(string code, string state)
        {
            // 登录检查
            string strError = "";
            int    nRet     = 0;

            // 检查当前是否已经选择了图书馆绑定了帐号
            WxUserItem activeUser = null;

            nRet = this.GetActive(code, state,
                                  out activeUser,
                                  out strError);
            if (nRet == -1)
            {
                goto ERROR1;
            }
            if (nRet == 0)
            {
                ViewBag.RedirectInfo = dp2WeiXinService.GetSelLibLink(state, "/Biblio/Index?a=1");// ("书目查询", "/Biblio/Index?a=1", lib.libName);
                return(View());
            }

            //    nRet = this.CheckLogin(code, state, out strError);
            //if (nRet == -1)
            //{
            //    goto ERROR1;
            //}
            //if (nRet == 0)
            //{
            //    return Redirect("~/Account/Bind?from=web");
            //}

            // 如果当前图书馆是不公开书目,则出现提示
            LibEntity lib = dp2WeiXinService.Instance.GetLibById(ViewBag.LibId);

            if (lib == null)
            {
                strError = "未设置当前图书馆。";
                goto ERROR1;
            }

            string weixinId = ViewBag.weixinId; // (string)Session[WeiXinConst.C_Session_WeiXinId];

            if (lib.noShareBiblio == 1)
            {
                List <WxUserItem> users = WxUserDatabase.Current.Get(weixinId, lib.id, -1);
                if (users.Count == 0)
                {
                    ViewBag.RedirectInfo = dp2WeiXinService.GetLinkHtml("书目查询", "/Biblio/Index?a=1", lib.libName);
                    return(View());
                }
            }


            WxUserItem userItem1 = WxUserDatabase.Current.GetActive(weixinId);

            if (userItem1 != null)
            {
                ViewBag.PatronBarcode = userItem1.readerBarcode;
            }

            string match = lib.match;

            if (String.IsNullOrEmpty(match) == true)
            {
                match = "left";
            }
            ViewBag.Match = match;
            return(View());

ERROR1:
            ViewBag.Error = strError;
            return(View());
        }
Exemplo n.º 21
0
        public ApiResult SetLibId(string weixinId, string libId)
        {
            ApiResult result = new ApiResult();
            string    error  = "";

            string temp            = libId;
            string bindLibraryCode = "";
            int    nIndex          = libId.IndexOf("~");

            if (nIndex > 0)
            {
                libId           = temp.Substring(0, nIndex);
                bindLibraryCode = temp.Substring(nIndex + 1);
            }

            if (HttpContext.Current.Session[WeiXinConst.C_Session_sessioninfo] == null)
            {
                error = "session失效。";
                goto ERROR1;
            }
            SessionInfo sessionInfo = (SessionInfo)HttpContext.Current.Session[WeiXinConst.C_Session_sessioninfo];

            if (sessionInfo == null)
            {
                error = "session失效2。";
                goto ERROR1;
            }

            //如果选择的图书馆就是是当前活动帐户对应的图书馆,则不用处理
            if (sessionInfo.Active != null &&
                sessionInfo.Active.libId == libId &&
                sessionInfo.Active.bindLibraryCode == bindLibraryCode)
            {
                return(result);
            }

            // 如果微信用户已经绑定了该图书馆的帐户,则设这个馆第一个帐户为活动帐户
            WxUserItem        user = null;
            List <WxUserItem> list = WxUserDatabase.Current.Get(weixinId, libId, -1); //注意这里不区分分馆,在下面还是要看分馆

            if (list.Count > 0)
            {
                List <WxUserItem> foundList = new List <WxUserItem>();
                foreach (WxUserItem u in list)
                {
                    if (u.bindLibraryCode == bindLibraryCode)
                    {
                        user = u;
                        break;
                    }
                }
            }
            if (user == null) // 绑public身份创建一个帐号
            {
                // 先看看有没有public的,有的话,用绑定的实际帐号替换
                //注意这里不过滤图书馆,就是说临时选择的图书馆,如果未绑定正式帐户,则会被新选择的图书馆public帐户代替
                List <WxUserItem> publicList = WxUserDatabase.Current.GetWorkers(weixinId, "", "public");
                if (publicList.Count > 0)
                {
                    user = publicList[0];
                    if (publicList.Count > 1)
                    {
                        dp2WeiXinService.Instance.WriteLog1("!!!异常:出现" + publicList.Count + "个public帐户?应该只有一个,把多余的帐户删除");
                        for (int i = 1; i < publicList.Count; i++)
                        {
                            WxUserDatabase.Current.SimpleDelete(publicList[i].id);
                        }
                    }

                    user.libId = libId;
                    Library lib = dp2WeiXinService.Instance.LibManager.GetLibrary(libId);
                    if (lib == null)
                    {
                        error = "未找到id=" + libId + "对应的图书馆";
                        goto ERROR1;
                    }
                    user.libName         = lib.Entity.libName;
                    user.bindLibraryCode = bindLibraryCode;
                    if (string.IsNullOrEmpty(user.bindLibraryCode) == false)
                    {
                        user.libName = user.bindLibraryCode;
                    }

                    user.libraryCode = "";
                    WxUserDatabase.Current.Update(user);
                }
                else
                {
                    try
                    {
                        user = WxUserDatabase.Current.CreatePublic(weixinId, libId, bindLibraryCode);
                    }
                    catch (Exception ex)
                    {
                        error = ex.Message;
                        goto ERROR1;
                    }
                }
            }

            // 设为当前帐户
            WxUserDatabase.Current.SetActivePatron1(user.weixinId, user.id);

            // 初始化sesson
            int nRet = sessionInfo.Init1(user.weixinId, out error);

            if (nRet == -1)
            {
                goto ERROR1;
            }



            //===================

            return(result);

ERROR1:
            result.errorCode = -1;
            result.errorInfo = error;
            return(result);
        }
Exemplo n.º 22
0
        public WxUserResult Bind(BindItem item)
        {
            string error = "";

            dp2WeiXinService.Instance.WriteLog1("!!!走进bind API");

            if (item.bindLibraryCode == null)
            {
                item.bindLibraryCode = "";
            }

            // 返回对象
            WxUserResult result = new WxUserResult();

            if (HttpContext.Current.Session[WeiXinConst.C_Session_sessioninfo] == null)
            {
                error = "session失效。";
                goto ERROR1;
            }
            SessionInfo sessionInfo = (SessionInfo)HttpContext.Current.Session[WeiXinConst.C_Session_sessioninfo];

            if (sessionInfo == null)
            {
                error = "session失效2。";
                goto ERROR1;
            }


            // 前端有时传上来是这个值
            if (item.prefix == "null")
            {
                item.prefix = "";
            }
            WxUserItem userItem = null;

            int nRet = dp2WeiXinService.Instance.Bind(item.libId,
                                                      item.bindLibraryCode,
                                                      item.prefix,
                                                      item.word,
                                                      item.password,
                                                      item.weixinId,
                                                      out userItem,
                                                      out error);

            if (nRet == -1)
            {
                goto ERROR1;
            }
            result.users = new List <WxUserItem>();
            result.users.Add(userItem);

            if (sessionInfo.Active != null)
            {
                dp2WeiXinService.Instance.WriteLog1("原来session中的user对象id=[" + sessionInfo.Active.id + "],weixinid=[" + sessionInfo.WeixinId + "]");
            }
            else
            {
                dp2WeiXinService.Instance.WriteLog1("原来session中无user对象");
            }

            dp2WeiXinService.Instance.WriteUserInfo(item.weixinId, "bind返回后");


            //更新session信息
            nRet = sessionInfo.Init1(item.weixinId, out error);
            if (nRet == -1)
            {
                goto ERROR1;
            }

            dp2WeiXinService.Instance.WriteUserInfo(item.weixinId, "session.init后");

            return(result);

ERROR1:
            result.errorCode = -1;
            result.errorInfo = error;
            return(result);
        }
Exemplo n.º 23
0
        /// <summary>
        /// 我的信息主界面
        /// </summary>
        /// <param name="code"></param>
        /// <param name="state"></param>
        /// <returns></returns>
        public ActionResult PersonalInfo(string code, string state)
        {
            string strError = "";
            int    nRet     = 0;

            // 检查当前是否已经选择了图书馆绑定了帐号
            WxUserItem activeUser = null;

            nRet = this.GetActive(code, state,
                                  out activeUser,
                                  out strError);
            if (nRet == -1)
            {
                goto ERROR1;
            }
            if (nRet == 0)
            {
                ViewBag.RedirectInfo = dp2WeiXinService.GetSelLibLink(state, "/Patron/PersonalInfo");
                return(View());
            }

            if (activeUser != null && activeUser.type != WxUserDatabase.C_Type_Patron)
            {
                ViewBag.RedirectInfo = dp2WeiXinService.GetLinkHtml("我的信息", "/Patron/PersonalInfo");
                return(View());
            }


            string patronXml = "";
            string recPath   = "";

            nRet = this.GetReaderXml(activeUser,
                                     out patronXml,
                                     out recPath,
                                     out strError);
            if (nRet == -1 || nRet == 0)
            {
                goto ERROR1;
            }



            //ViewBag.userName = loginUserName;
            //ViewBag.patronBarcode = patronBarcode;

            ViewBag.overdueUrl     = "../Patron/OverdueInfo";
            ViewBag.borrowUrl      = "../Patron/BorrowInfo";
            ViewBag.reservationUrl = "../Patron/Reservation";

            string libId  = ViewBag.LibId;
            Patron patron = null;

            patron = dp2WeiXinService.Instance.ParsePatronXml(libId,
                                                              patronXml,
                                                              recPath,
                                                              ViewBag.showPhoto);
            return(View(patron));

ERROR1:
            ViewBag.Error = strError;
            return(View());
        }
Exemplo n.º 24
0
 // PUT api/<controller>/5
 public long Put(WxUserItem item)
 {
     return(repo.Update(item));
 }
Exemplo n.º 25
0
        /// <summary>
        /// 获取当前帐号
        /// </summary>
        /// <param name="state"></param>
        /// <param name="code"></param>
        /// <param name="browseId"></param>
        /// <param name="strError"></param>
        /// <returns></returns>
        public int GetActive(string code,
                             string state,
                             out WxUserItem activeUser,
                             out string strError,
                             string myWeixinId = "")
        {
            strError = "";
            int nRet = 0;

            activeUser = null;



            // 获取session对象,如果不存在新new一个
            SessionInfo sessionInfo = this.GetSessionInfo1();

            try
            {
                if (sessionInfo != null)
                {
                    //sessionInfo.ClearDebugInfo();
                }
                else
                {
                    // 当发现session为空时,new一个sessioninfo
                    sessionInfo = new SessionInfo();

                    sessionInfo.AddDebugInfo("session不存在,新建一个session对象");
                    Session[WeiXinConst.C_Session_sessioninfo] = sessionInfo;

                    // 得到weixinid
                    GzhCfg        gzh1     = sessionInfo.gzh;
                    List <string> libList1 = new List <string>();
                    if (string.IsNullOrEmpty(state) == true)
                    {
                        if (string.IsNullOrEmpty(code) == false)
                        {
                            strError = "从微信入口进来,code参数不能为空";
                            return(-1);
                        }
                        state = "ilovelibrary";
                    }
                    sessionInfo.AddDebugInfo("给sesion存入state[" + state + "]");
                    nRet = dp2WeiXinService.Instance.GetGzhAndLibs(state,
                                                                   out gzh1,
                                                                   out libList1,
                                                                   out strError);
                    if (nRet == -1)
                    {
                        return(-1);
                    }
                    if (gzh1 == null)
                    {
                        strError = "异常,未得到公众号配置信息";
                        goto ERROR1;
                    }
                    sessionInfo.SetInfo(state, gzh1, libList1);
                }
                sessionInfo.AddDebugInfo("~~~~~~" + this.Request.Path + "~~~~~~");

                // 如果客户端特别传来了weixinid,使用传来的weixinid
                if (string.IsNullOrEmpty(myWeixinId) == false &&
                    sessionInfo.WeixinId != myWeixinId)
                {
                    sessionInfo.AddDebugInfo("原来的weixinid=" + sessionInfo.WeixinId);

                    sessionInfo.WeixinId = myWeixinId;
                    sessionInfo.Active   = null;
                    sessionInfo.AddDebugInfo("使用传进来的weixinId=" + myWeixinId);
                }


                if (code == null)
                {
                    code = "";
                }
                if (state == null)
                {
                    state = "";
                }
                if (sessionInfo.WeixinId == null)
                {
                    sessionInfo.WeixinId = "";
                }
                sessionInfo.AddDebugInfo("走进GetActive(),code=[" + code + "] state=[" + state + "],session.weixinId=[" + sessionInfo.WeixinId + "]");

                activeUser = sessionInfo.Active;
                if (activeUser != null)
                {
                    sessionInfo.AddDebugInfo("session中有活动帐号");

                    if (activeUser.weixinId.Substring(0, 2) == "~~" &&
                        string.IsNullOrEmpty(code) == false)
                    {
                        strError = "异常:微信入口怎么是临时ID";
                        goto ERROR1;
                    }

                    if (string.IsNullOrEmpty(state) == false && //传进来的state不为空
                        sessionInfo.gzhState != state)
                    {
                        sessionInfo.AddDebugInfo("发现之前state为[" + sessionInfo.gzhState + "],目前传入的state参数为[" + state + "],两者不一样,重新初始化session信息");
                        sessionInfo.AddDebugInfo("传入的code为[" + code + "],有值,重新获取weixinId");
                        sessionInfo.WeixinId = "";
                        sessionInfo.Active   = null;
                    }
                    else
                    {
                        sessionInfo.AddDebugInfo("使用当前已有session信息");
                        // 初始化 viewbag
                        nRet = this.InitViewBag(sessionInfo, out strError);
                        if (nRet == -1)
                        {
                            goto ERROR1;
                        }
                        sessionInfo.AddDebugInfo("GetActive()返回1,当前有活动帐号");
                        return(1);
                    }
                }

                // 得到weixinid
                GzhCfg        gzh     = sessionInfo.gzh;
                List <string> libList = new List <string>();
                if (string.IsNullOrEmpty(state) == true)
                {
                    if (string.IsNullOrEmpty(code) == false)
                    {
                        strError = "从微信入口进来,code参数不能为空";
                        return(-1);
                    }
                    state = "ilovelibrary";
                }
                sessionInfo.AddDebugInfo("给sesion存入state[" + state + "]");
                nRet = dp2WeiXinService.Instance.GetGzhAndLibs(state,
                                                               out gzh,
                                                               out libList,
                                                               out strError);
                if (nRet == -1)
                {
                    return(-1);
                }
                if (gzh == null)
                {
                    strError = "异常,未得到公众号配置信息";
                    goto ERROR1;
                }
                sessionInfo.SetInfo(state, gzh, libList);


                sessionInfo.AddDebugInfo("配置信息存到session");


                string weixinId = sessionInfo.WeixinId;
                if (string.IsNullOrEmpty(weixinId) == false &&
                    weixinId.Length > 2 &&
                    weixinId.Substring(0, 2) == "~~" &&
                    string.IsNullOrEmpty(code) == false)
                {
                    sessionInfo.AddDebugInfo("异常:发现微信入口是临时ID,根据code重新获取id");
                    weixinId = "";
                }

                // 正式id
                if (string.IsNullOrEmpty(weixinId) == false)
                {
                    sessionInfo.AddDebugInfo("session中已有id=[" + weixinId + "],直接使用该id初始化对象");
                }
                else
                {
                    //微信入口
                    if (string.IsNullOrEmpty(code) == false)
                    {
                        // 正式微信id的情况
                        sessionInfo.AddDebugInfo("微信入口,根据微信code=[" + code + "]获取weixinId");

                        // 根据微信接口得到weixinid
                        nRet = dp2WeiXinService.Instance.GetWeiXinId1(code,
                                                                      gzh,
                                                                      out weixinId,
                                                                      out strError);
                        if (nRet == -1)
                        {
                            goto ERROR1;
                        }
                        if (String.IsNullOrEmpty(weixinId) == true)
                        {
                            strError = "异常,未得到微信id";
                            return(-1);
                        }
                        sessionInfo.oauth2_return_code = code;

                        sessionInfo.AddDebugInfo("根据微信code获到的weixinId=[" + weixinId + "]");

                        // 写到微信浏览器的cookies里,以解决微信不退出,但web页面失效的问题
                        HttpCookie aCookie = new HttpCookie("browseId");
                        aCookie.Value   = weixinId;
                        aCookie.Expires = DateTime.MaxValue;//设为永久不失效, DateTime.Now.AddDays(1);
                        Response.Cookies.Add(aCookie);
                        sessionInfo.AddDebugInfo("将微信入口的weixinid写入微信浏览器的cookies=" + weixinId);
                    }
                    else
                    {
                        // 浏览器id
                        sessionInfo.AddDebugInfo("session中weixinid为空,且没有微信传来的code");

                        sessionInfo.AddDebugInfo("检查浏览器是否存在cookies");
                        string browseId = "";
                        if (Request.Cookies["browseId"] != null)
                        {
                            HttpCookie aCookie = Request.Cookies["browseId"];
                            browseId = aCookie.Value;

                            sessionInfo.AddDebugInfo("存在cookies=" + browseId);
                        }

                        if (string.IsNullOrEmpty(browseId) == true)
                        {
                            sessionInfo.AddDebugInfo("不存在cookies或值为空");

                            string guid = Guid.NewGuid().ToString();
                            browseId = "~~" + guid;

                            sessionInfo.AddDebugInfo("创建一个临时id=" + browseId);

                            // 写到cookies
                            HttpCookie aCookie = new HttpCookie("browseId");
                            aCookie.Value   = browseId;
                            aCookie.Expires = DateTime.MaxValue;//设为永久不失效, DateTime.Now.AddDays(1);
                            Response.Cookies.Add(aCookie);

                            sessionInfo.AddDebugInfo("将临时id写入cookies=" + browseId);
                        }


                        weixinId = browseId;
                    }
                }


                // 初始化session
                nRet = sessionInfo.Init1(weixinId, out strError);// this.InitSession(state, weixinId, out sessionInfo, out strError);
                if (nRet == -1)
                {
                    return(-1);
                }

                // 有当前帐号
                activeUser = sessionInfo.Active;
                if (activeUser != null)
                {
                    // 初始化 viewbag
                    nRet = this.InitViewBag(sessionInfo, out strError);
                    if (nRet == -1)
                    {
                        goto ERROR1;
                    }

                    sessionInfo.AddDebugInfo("GetActive()返回1,存在活动帐户");
                    return(1);
                }



                ViewBag.AppName  = sessionInfo.gzh.appNameCN;
                ViewBag.weixinId = sessionInfo.WeixinId;
            }
            catch (Exception ex)
            {
                strError = ex.Message;
                goto ERROR1;
            }

            strError = "尚未选择图书馆";
            sessionInfo.AddDebugInfo("GetActive()返回0,error=[" + strError + "]");
            return(0);

ERROR1:

            sessionInfo.AddDebugInfo("GetActive()返回-1,error=[" + strError + "]");

            return(-1);
        }
Exemplo n.º 26
0
        public ActionResult Setting(string code, string state, string returnUrl)
        {
            string strError = "";
            int    nRet     = 0;

            // 检查当前是否已经选择了图书馆绑定了帐号
            WxUserItem activeUser = null;

            nRet = this.GetActive(code, state,
                                  out activeUser,
                                  out strError);
            if (nRet == -1)
            {
                goto ERROR1;
            }
            if (nRet == 0)
            {
                ViewBag.RedirectInfo = dp2WeiXinService.GetSelLibLink(state, "/Patron/Setting");
                return(View());
            }



            string weixinId = ViewBag.weixinId; //(string)Session[WeiXinConst.C_Session_WeiXinId];

            ViewBag.returnUrl = returnUrl;


            string photoChecked = "";

            if (ViewBag.showPhoto == 1)
            {
                photoChecked = " checked='checked' ";
            }
            ViewBag.photoChecked = photoChecked;

            string coverChecked = "";

            if (ViewBag.showCover == 1)
            {
                coverChecked = " checked='checked' ";
            }
            ViewBag.coverChecked = coverChecked;

            // 检查是否绑定工作人员,决定界面上是否出现 打开监控功能
            ViewBag.info = "监控本馆消息";
            string tracingChecked = "";
            string maskChecked    = "";

            if (activeUser == null)
            {
                strError = "当前活动帐号不存在";
                goto ERROR1;
            }
            if (activeUser.type == WxUserDatabase.C_Type_Worker && activeUser.userName != "public")
            {
                ViewBag.workerId = activeUser.id;
                if (activeUser.tracing == "on" || activeUser.tracing == "on -mask")
                {
                    tracingChecked = " checked='checked' ";
                    maskChecked    = " checked='checked' ";
                    if (activeUser.tracing == "on -mask")
                    {
                        maskChecked = " ";
                    }
                }
            }
            ViewBag.tracingChecked = tracingChecked;
            ViewBag.maskChecked    = maskChecked;
            if (ViewBag.LibName == "[" + WeiXinConst.C_Dp2003LibName + "]")
            {
                ViewBag.info = "监控所有图书馆的消息";
            }



            ViewBag.subLibGray = "";
            // 未绑定帐户 ,todo 普通读者一样可选择关注馆藏地
            if (activeUser == null ||
                activeUser.userName == "public")
            //|| (activeUser.type==WxUserDatabase.C_Type_Worker && activeUser.userName=="public")
            //|| (activeUser.type==WxUserDatabase.C_Type_Patron && activeUser.rights.Contains("borrow") == false && activeUser.rights.Contains("return") == false))
            {
                //string bindUrl = "/Account/Bind?returnUrl=" + HttpUtility.UrlEncode(returnUrl);
                //string bindLink = "<a href='javascript:void(0)' onclick='gotoUrl(\"" + bindUrl + "\")'>尚未绑定帐户</a>。";
                //ViewBag.bindLink = bindLink;

                ViewBag.subLibGray = "color:#cccccc";
                return(View());
            }

            string accountInfo = "";

            if (activeUser.type == WxUserDatabase.C_Type_Worker)
            {
                accountInfo = "帐号:" + activeUser.userName;
            }
            else
            {
                accountInfo = "读者:" + activeUser.readerBarcode;
            }
            if (accountInfo != "")
            {
                accountInfo = "(" + accountInfo + ")";
            }
            ViewBag.accountInfo = accountInfo;
            ViewBag.userId      = activeUser.id;

            string locationXml = activeUser.location;

            if (String.IsNullOrEmpty(activeUser.location) == true &&
                activeUser.userName != "public")
            {
                // 从dp2服务器获取
                nRet = dp2WeiXinService.Instance.GetLocation(ViewBag.LibId,
                                                             activeUser,
                                                             out locationXml,
                                                             out strError);
                if (nRet == -1)
                {
                    goto ERROR1;
                }


                //保存到微信用户库
                activeUser.location = locationXml;
                WxUserDatabase.Current.Update(activeUser);
            }


            // 解析本帐户拥有的全部馆藏地
            List <SubLib> subLibs = SubLib.ParseSubLib(locationXml, true);

            //上次选中的打上勾
            if (String.IsNullOrEmpty(activeUser.selLocation) == false)
            {
                string selLocation = SubLib.ParseToSplitByComma(activeUser.selLocation);
                if (selLocation != "")
                {
                    string[] selLocList = selLocation.Split(new char[] { ',' });
                    foreach (SubLib subLib in subLibs)
                    {
                        foreach (Location loc in subLib.Locations)
                        {
                            string locPath = subLib.libCode + "/" + loc.Name;
                            if (selLocList.Contains(locPath) == true)
                            {
                                subLib.Checked = "checked";
                                loc.Checked    = "checked";
                            }
                        }
                    }
                }
                // end
            }

            // todo 其实,可以用一个字段来表示馆藏地和选中的项,就量在xml的字段中加checked属性,
            // 但如果服务器更新了,刷的时候就全部覆盖了。
            // 现在还没做到服务器更新后,自动刷过来


            ViewBag.libList = subLibs;


            ViewBag.verifyBarcode = "";
            if (activeUser != null && activeUser.verifyBarcode == 1)
            {
                ViewBag.verifyBarcode = "checked";
            }

            ViewBag.audioType = 1;
            if (activeUser != null && activeUser.audioType > 0)
            {
                ViewBag.audioType = activeUser.audioType;
            }

            return(View());

ERROR1:
            ViewBag.Error = strError;
            return(View());
        }
Exemplo n.º 27
0
        // 二维码
        public ActionResult QRcode(string code, string state)
        {
            string strError = "";
            int    nRet     = 0;

            // 检查当前是否已经选择了图书馆绑定了帐号
            WxUserItem activeUser = null;

            nRet = this.GetActive(code, state,
                                  out activeUser,
                                  out strError);
            if (nRet == -1)
            {
                goto ERROR1;
            }
            if (nRet == 0)
            {
                ViewBag.RedirectInfo = dp2WeiXinService.GetSelLibLink(state, "/Patron/QRcode");
                return(View());
            }

            if (activeUser != null && activeUser.type != WxUserDatabase.C_Type_Patron)
            {
                ViewBag.RedirectInfo = dp2WeiXinService.GetLinkHtml("二维码", "/Patron/QRcode");
                return(View());
            }


            string strXml        = "";
            string patronBarcode = "";
            string recPath       = "";

            nRet = this.GetReaderXml(activeUser,
                                     out strXml,
                                     out recPath,
                                     out strError);
            if (nRet == -1)
            {
                goto ERROR1;
            }



            // 如果图书馆是挂起状态,作为警告
            string  libId = activeUser.libId;
            Library lib   = dp2WeiXinService.Instance.LibManager.GetLibrary(libId);
            string  warn  = LibraryManager.GetLibHungWarn(lib);

            ViewBag.Warn = warn;

            string qrcodeUrl = "";

            if (String.IsNullOrEmpty(warn) == true)
            {
                qrcodeUrl = "./getphoto?libId=" + HttpUtility.UrlEncode(libId)
                            + "&type=pqri"
                            + "&barcode=" + HttpUtility.UrlEncode(activeUser.readerBarcode);
                //+ "&width=400&height=400";
            }
            ViewBag.qrcodeUrl = qrcodeUrl;


            return(View(activeUser));

ERROR1:
            ViewBag.Error = strError;
            return(View());
        }
Exemplo n.º 28
0
        // 图片
        public ActionResult GetPhoto(string code, string state, string libId, string type, string barcode, string objectPath)
        {
            MemoryStream ms       = new MemoryStream();;
            string       strError = "";
            int          nRet     = 0;

            WxUserItem activeUser = null;

            nRet = this.GetActive(code, state,
                                  out activeUser,
                                  out strError);
            if (nRet == -1 && ViewBag.LibState != LibraryManager.C_State_Hangup)
            {
                goto ERROR1;
            }


            // 读者二维码
            if (type == "pqri")
            {
                // 设置媒体类型
                Response.ContentType = "image/jpeg";

                // 获得读者证号二维码字符串
                string strCode = "";
                nRet = dp2WeiXinService.Instance.GetQRcode(libId,
                                                           barcode,
                                                           out strCode,
                                                           out strError);
                if (nRet == -1 || nRet == 0)
                {
                    goto ERROR1;
                }

                // 获得二维码图片
                string strWidth  = Request.QueryString["width"];
                string strHeight = Request.QueryString["height"];
                int    nWidth    = 0;
                if (string.IsNullOrEmpty(strWidth) == false)
                {
                    if (Int32.TryParse(strWidth, out nWidth) == false)
                    {
                        strError = "width 参数 '" + strWidth + "' 格式不合法";
                        goto ERROR1;
                    }
                }
                int nHeight = 0;
                if (string.IsNullOrEmpty(strHeight) == false)
                {
                    if (Int32.TryParse(strHeight, out nHeight) == false)
                    {
                        strError = "height 参数 '" + strHeight + "' 格式不合法";
                        goto ERROR1;
                    }
                }
                dp2WeiXinService.Instance.GetQrImage(strCode,
                                                     nWidth,
                                                     nHeight,
                                                     Response.OutputStream,
                                                     out strError);
                if (strError != "")
                {
                    goto ERROR1;
                }
                return(null);
            }

            // 取头像 或 封面
            string weixinId = ViewBag.weixinId;

            nRet = dp2WeiXinService.GetObject0(this, libId, weixinId, objectPath, out strError);
            if (nRet == -1)
            {
                goto ERROR1;
            }

            return(null);


ERROR1:

            ms = dp2WeiXinService.Instance.GetErrorImg(strError);
            return(File(ms.ToArray(), "image/jpeg"));
        }
Exemplo n.º 29
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="weixinId"></param>
        /// <param name="libId"></param>
        /// <param name="msgId"></param>
        /// <param name="style">browse/full</param>
        /// <returns></returns>
        public WxMessageResult GetMessage(string weixinId,
                                          string group,
                                          string libId,
                                          string msgId,
                                          string subject,
                                          string style)
        {
            WxMessageResult result   = new WxMessageResult();
            string          strError = "";

            strError = dp2WeiXinService.checkGroup(group);
            if (strError != "")
            {
                result.errorInfo = strError;
                result.errorCode = -1;
                return(result);
            }

            if (HttpContext.Current.Session[WeiXinConst.C_Session_sessioninfo] == null)
            {
                result.errorInfo = "session失效。";
                result.errorCode = -1;
                return(result);
            }
            SessionInfo sessionInfo = (SessionInfo)HttpContext.Current.Session[WeiXinConst.C_Session_sessioninfo];

            if (sessionInfo == null)
            {
                result.errorInfo = "session失效2。";
                result.errorCode = -1;
                return(result);
            }

            // 检查下有无绑定工作人员账号
            result.userName = "";
            string userName    = "";
            string libraryCode = "";

            if (string.IsNullOrEmpty(weixinId) == false)
            {
                // 查找当前微信用户绑定的工作人员账号

                WxUserItem user = sessionInfo.Active; //WxUserDatabase.Current.GetWorker(weixinId, libId);
                if (user != null)
                {
                    libraryCode = user.bindLibraryCode;
                    // 检索是否有权限 _wx_setbbj
                    string needRight = dp2WeiXinService.GetNeedRight(group);

                    LibEntity lib = dp2WeiXinService.Instance.GetLibById(libId);
                    if (lib == null)
                    {
                        result.errorInfo = "未找到id为[" + libId + "]的图书馆定义。";
                        result.errorCode = -1;
                        return(result);
                    }

                    int nHasRights = dp2WeiXinService.Instance.CheckRights(user,
                                                                           lib,
                                                                           needRight,
                                                                           out strError);
                    if (nHasRights == -1)
                    {
                        result.errorInfo = strError;
                        result.errorCode = -1;
                        return(result);
                    }
                    if (nHasRights == 1)
                    {
                        userName = user.userName;
                    }
                    else
                    {
                        userName = "";
                    }
                }
            }
            result.userName = userName;

            List <MessageItem> list = null;
            int nRet = dp2WeiXinService.Instance.GetMessage(group,
                                                            libId + "/" + libraryCode,
                                                            msgId,
                                                            subject,
                                                            style,
                                                            out list,
                                                            out strError);

            if (nRet == -1)
            {
                result.errorCode = -1;
                result.errorInfo = strError;
            }
            result.items = list;

            result.errorCode = nRet;
            result.errorInfo = strError;

            return(result);
        }
Exemplo n.º 30
0
        /// <summary>
        /// 绑定
        /// </summary>
        /// <param name="strParam"></param>
        /// <returns></returns>
        private bool DoBinding(string strParam)
        {
            // 设置当前命令
            this.CurrentCmdName = dp2CommandUtility.C_Command_Binding;

            if (strParam == "")
            {
                Console.WriteLine("请输入'读者证条码号'(注:您也可以同时输入'读者证条码号'和'密码',中间以/分隔,例如:R0000001/123)。");
                return(false);
            }

            // 看看上一次输入过用户名的没有?如果已存在用户名,那么这次输入的就是密码
            BindingCommand bindingCmd = (BindingCommand)this.CmdContiner.GetCommand(dp2CommandUtility.C_Command_Binding);

            string readerBarcode = strParam;
            int    nTempIndex    = strParam.IndexOf('/');

            if (nTempIndex > 0) // 同时输入读者证条码与密码
            {
                bindingCmd.ReaderBarcode = strParam.Substring(0, nTempIndex);
                bindingCmd.Password      = strParam.Substring(nTempIndex + 1);
            }
            else
            {
                // 看看上一次输入过用户名的没有?如果已存在用户名,那么这次输入的就是密码
                if (bindingCmd.ReaderBarcode == "")
                {
                    bindingCmd.ReaderBarcode = strParam;
                    Console.WriteLine("读输入密码");
                    return(false);
                }
                else
                {
                    bindingCmd.Password = strParam;
                }
            }


            string     strReaderBarcode = "";
            string     strError         = "";
            WxUserItem userItem         = null;
            long       lRet             = dp2CommandService.Instance.
                                          Bind("", "", bindingCmd.ReaderBarcode,
                                               bindingCmd.Password,
                                               this.WeiXinId,
                                               out userItem,
                                               out strReaderBarcode,
                                               out strError);

            if (lRet == -1)
            {
                Console.WriteLine(strError);
                return(false);
            }

            // 把用户名与密码清掉,以便再绑其它账号
            bindingCmd.ReaderBarcode = "";
            bindingCmd.Password      = "";

            // 设到当前读者变量上
            this.ReaderBarcode = strReaderBarcode;
            Console.WriteLine("绑定成功!");
            return(false);
        }