guanxf

          我的博客:http://blog.sina.com.cn/17learning

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            71 隨筆 :: 1 文章 :: 41 評(píng)論 :: 0 Trackbacks
          1、客服登錄:客服有客服ID,單位ID:
             WorkerVO workerVO = (WorkerVO) req.getSession().getAttribute("workerVO");
          if(workerVO==null){
          workerVO = new WorkerVO();
          String workerid = req.getParameter("workerid"); //單位ID
          String userid = req.getParameter("userid"); //用戶ID
          if(!StringUtil.isBlank(workerid)){
          boolean b = WorkerLogService.getWorker(workerid, workerVO); //獲取單位信息
          if(b){ //登陸成功
          workerVO.setStartDate((new Date()).getTime());
          if(!StringUtil.isBlank(userid)){
          DeptService deptService = new DeptService();
          OrgUserVO userVO = deptService.getOrgUser(userid); //獲取用戶信息
          workerVO.setUserId(userid);
          if(userVO!=null){
          workerVO.setUserName(userVO.getUserName());
          }
          }
          //1. get map
          // key-userkey  value-workersMap   workersMap<String,Map> ------String 為單位id,
          //--- Map為客服人員集合,Map<String,Object> ,key為客服Id, value為客服人員對(duì)象
          //(客服人員ID,客服人員姓名,單位id ,單位名稱(chēng) ,狀態(tài)(1在線、2忙碌、3離線),在線——1在咨詢中,2空閑,如果狀態(tài)是不在線:值為0)。
          super.init(config);  
          ServletContext application=this.getServletContext();  //得到Application對(duì)象
          Map<String,Map> workersMap = (Map)application.getAttribute("workersKey");
          if(workersMap == null){ //判斷Map是否為空
          //初始化
          Map<String,Map> workerMap = new Hashtable<String,Map>();
          Map<String,Object> childWorkerMap = new Hashtable<String, Object>();
          WorkerOnlineVO onlineWorker=new WorkerOnlineVO();
          onlineWorker.setDeptId(workerVO.getDeptNo().toString());//單位Id
          onlineWorker.setDeptName(workerVO.getDeptName());
          onlineWorker.setWorkerUserId(workerVO.getUserId());
          onlineWorker.setWorkerUserName(workerVO.getUserName());
          onlineWorker.setState("1");
          onlineWorker.setConsultate("2");
          childWorkerMap.put(workerVO.getUserId(), onlineWorker);
          workerMap.put(workerVO.getDeptNo().toString(), childWorkerMap);
          application.setAttribute("workersKey", workerMap);
          }else{
          Map<String,Object> childWorkerMap=workersMap.get(workerVO.getDeptNo());
          WorkerOnlineVO workerOnline=(WorkerOnlineVO) childWorkerMap.get(workerVO.getUserId());
          if(workerOnline==null){
          WorkerOnlineVO onlineWorker=new WorkerOnlineVO();
          onlineWorker.setDeptId(workerVO.getDeptNo().toString());
          onlineWorker.setDeptName(workerVO.getDeptName());
          onlineWorker.setWorkerUserId(workerVO.getUserId());
          onlineWorker.setWorkerUserName(workerVO.getUserName());
          onlineWorker.setState("1");
          onlineWorker.setConsultate("2");
          childWorkerMap.put(workerVO.getUserId(), onlineWorker);
          workersMap.put(workerVO.getDeptNo().toString(), childWorkerMap);
          //application.setAttribute("workersKey", workersMap);
          }else{
          workerOnline.setState("1");
          workerOnline.setConsultate("2");
          childWorkerMap.put(workerVO.getUserId(), workerOnline);
          workersMap.put(workerVO.getDeptNo().toString(), childWorkerMap);
          // application.setAttribute("workersKey", workersMap);
          }
          }
          req.getSession().setAttribute("workerVO", workerVO);
          OnlineStatusVO.WORKER_QUESTER_MAP.put(workerid, new ArrayList<QuesterVO>());
          OnlineStatusVO.WORKER_VO_MAP.put(workerid, workerVO);
          req.getRequestDispatcher("../worker.jsp").forward(req, res);
          }else{
          res.sendRedirect("../worker_index.jsp?flag=1");
          }
          }else if(!StringUtil.isBlank(userid)){
          if("1".equals(userid)){
          workerVO.setId("0");
          workerVO.setDeptName("技術(shù)支持");
          workerVO.setDeptNo("0");
          workerVO.setState("1");
          workerVO.setUserId(userid);
          req.getSession().setAttribute("workerVO", workerVO);
          OnlineStatusVO.WORKER_QUESTER_MAP.put("0", new ArrayList<QuesterVO>());
          OnlineStatusVO.WORKER_VO_MAP.put("0", workerVO);
          req.getRequestDispatcher("../worker.jsp").forward(req, res);
          }
          }else{
          res.sendRedirect("../worker_index.jsp?flag=1");
          }
          }else{ //workerVO != null
          if(StringUtil.isBlank(OnlineStatusVO.WORKER_QUESTER_MAP.get(workerVO.getId()))){
          OnlineStatusVO.WORKER_QUESTER_MAP.put(workerVO.getId(), new ArrayList<QuesterVO>());
          }
          if(StringUtil.isBlank(OnlineStatusVO.WORKER_VO_MAP.get(workerVO.getId()))){
          System.out.println("===OnlineStatusVO.WORKER_VO_MAP.get======");
          OnlineStatusVO.WORKER_VO_MAP.put(workerVO.getId(), workerVO);
          }
          req.getRequestDispatcher("../worker.jsp").forward(req, res);
          }

          1、咨詢者咨詢:單位ID:
          String workerId = req.getParameter("workerId"); //單位ID
          String outmsg = "";
          if(StringUtil.isBlank(workerId)){
          Log.error("---單位Id為空------");
          }else{
          super.init(config);  
          ServletContext application=this.getServletContext();  
          Map<String,Map> workersMap = (Map)application.getAttribute("workersKey");
          if(workersMap==null){ //如果workersMap為空
          outmsg="請(qǐng)電話咨詢,電話號(hào)碼為:XXXXX";
          }else{
          Map<String,WorkerOnlineVO> childWorkerMap =workersMap.get(workerId);
          if(childWorkerMap==null){
          outmsg="請(qǐng)電話咨詢,電話號(hào)碼為:XXXXX";
          }else{
          //boolean flagTel=false; //無(wú)客服人員在線
           String  workerUserIdTemp="";
            Set<String> key = childWorkerMap.keySet();
            for (Iterator it = key.iterator(); it.hasNext();) {
          WorkerOnlineVO workerOnlineVo =childWorkerMap.get((String)it.next()); 
          //狀態(tài)(1在線、2忙碌、3離線),在線——1在咨詢中,2空閑,如果狀態(tài)是不在線:值為0
          //安排人員的優(yōu)先級(jí):在線 --空閑  》在線--咨詢中 ,其他條件不符合。
          if(workerOnlineVo.getState().equals("1")&& workerOnlineVo.getConsultate().equals("2")){
          //在線 --空閑  ------------優(yōu)先級(jí)最高
          workerUserIdTemp=workerOnlineVo.getWorkerUserId();
          break;
          else if(workerOnlineVo.getState().equals("1")&& workerOnlineVo.getConsultate().equals("1")){
          //在線--咨詢中
          if(workerUserIdTemp.equals("")){
          workerUserIdTemp=workerOnlineVo.getWorkerUserId();
          }
          }
                 }
          if(workerUserIdTemp.equals("")){
          outmsg="請(qǐng)電話咨詢,電話號(hào)碼為:XXXXX";
          }else{
          WorkerOnlineVO workerOnlineVo = childWorkerMap.get(workerUserIdTemp);
          workerOnlineVo.setState("1");
          workerOnlineVo.setConsultate("1");
          childWorkerMap.put(workerOnlineVo.getWorkerUserId(), workerOnlineVo);
          workersMap.put(workerId, childWorkerMap); //和原來(lái)的Map一樣
          //application.setAttribute("workersKey", workersMap);
          outmsg = "您好,請(qǐng)問(wèn)有什么可以幫助您的嗎?";
          QuesterVO questerVO = (QuesterVO) req.getSession().getAttribute("questerVO");
          if(questerVO==null || !workerId.equals(questerVO.getWorkerId())){
          OnlineStatusVO.WORKER_USER.put("workerUser", workerOnlineVo);
          questerVO = QuesterLogService.getQuester(workerId); //必須使用人id
          questerVO.setWorkerUserId(workerOnlineVo.getWorkerUserId());
          req.getSession().setAttribute("questerVO", questerVO);
          OnlineStatusVO.WORKER_QUESTER_MAP.get(workerId).add(questerVO);
          OnlineStatusVO.QUESTER_VO_MAP.put(questerVO.getId(), questerVO);
          req.setAttribute("workerOnlineVo", workerOnlineVo);
          }
          }
          req.setAttribute("outmsg", outmsg);
          req.getRequestDispatcher("/quester.jsp").forward(req, res);
          }
          }
          }

          3、中間類(lèi):
          public class OnlineStatusVO {
          public static Map<String,WorkerVO> WORKER_VO_MAP = new HashMap<String,WorkerVO>();
          public static Map<String,QuesterVO> QUESTER_VO_MAP = new HashMap<String,QuesterVO>();
          public static Map<String, List<QuesterVO>> WORKER_QUESTER_MAP = new HashMap<String, List<QuesterVO>>();
          public static Map<String, WorkerOnlineVO> WORKER_USER = new HashMap<String, WorkerOnlineVO>();
          }
          posted on 2012-11-25 16:00 管先飛 閱讀(2371) 評(píng)論(11)  編輯  收藏 所屬分類(lèi): Java技術(shù)

          評(píng)論

          # re: Java在線咨詢,多人咨詢。 2013-01-19 21:38 那天
          嗨,你好,我最近也在做這個(gè)功能,請(qǐng)問(wèn)下可以發(fā)一份完整的源代碼給我學(xué)習(xí)下嗎,在此先謝過(guò)了!
          郵箱:1262176582@qq.com  回復(fù)  更多評(píng)論
            

          # re: Java在線咨詢,多人咨詢。 2013-04-12 05:06 羅黎明
          你好,guanxf:
          最近在學(xué)習(xí)做在線客服,在網(wǎng)上狂搜一通,覺(jué)得你的不錯(cuò),能幫我發(fā)一份完整的源代碼供學(xué)習(xí)使用嗎? 不甚感謝!

          我的郵箱:
          lichunming3793789@126.com  回復(fù)  更多評(píng)論
            

          # re: Java在線咨詢,多人咨詢。 2013-07-16 22:36 彬彬
          您好 能否給我發(fā)一分源碼 最近在學(xué)習(xí)這個(gè) 謝了 313710351@qq.com  回復(fù)  更多評(píng)論
            

          # re: Java在線咨詢,多人咨詢。 2013-09-22 15:55 小孟
          嗨,你好,我最近也在做這個(gè)功能,請(qǐng)問(wèn)下可以發(fā)一份完整的源代碼給我學(xué)習(xí)下嗎,在此先謝過(guò)了!
          郵箱:1135509405@qq.com   回復(fù)  更多評(píng)論
            

          # re: Java在線咨詢,多人咨詢。[未登錄](méi) 2013-12-02 13:58 小光
          你好,我最近也在做這個(gè)功能,請(qǐng)問(wèn)下可以發(fā)一份完整的源代碼給我學(xué)習(xí)下嗎,在此先謝過(guò)了!
          郵箱:66550907@qq.com  回復(fù)  更多評(píng)論
            

          # re: Java在線咨詢,多人咨詢。[未登錄](méi) 2013-12-15 23:00 wj
          你好,我最近也在學(xué)著做這個(gè)功能,在網(wǎng)上搜了好多,覺(jué)得你的不錯(cuò),請(qǐng)問(wèn)下可以發(fā)一份完整的源代碼給我學(xué)習(xí)下嗎,在此先謝過(guò)了!
          郵箱:934051639@qq.com  回復(fù)  更多評(píng)論
            

          # re: Java在線咨詢,多人咨詢。 2013-12-15 23:10 管先飛
          @wj
          其實(shí)這個(gè)沒(méi)啥難的就是2步:
          1、將客服的信息放入到一個(gè)Map中。
          2、咨詢者咨詢的時(shí)候?qū)⒖蛻舻膇d給咨詢者,這樣就成功建立了一個(gè)回話。
            回復(fù)  更多評(píng)論
            

          # re: Java在線咨詢,多人咨詢。 2014-02-26 21:38 馬媛
          您好,網(wǎng)上找了一圈,還是沒(méi)整出來(lái),可以發(fā)一份給我嗎?非常謝謝!273694566@qq.com  回復(fù)  更多評(píng)論
            

          # re: Java在線咨詢,多人咨詢。 2014-05-07 16:16 東東在線
          正在學(xué)習(xí)這方面的東西,能給我發(fā)一份源碼么?時(shí)分感謝  回復(fù)  更多評(píng)論
            

          # re: Java在線咨詢,多人咨詢。[未登錄](méi) 2014-07-16 15:26
          5、編程實(shí)現(xiàn):
          要求:從輸入端輸入各學(xué)生{學(xué)號(hào)、姓名、性別、年齡、成績(jī)}的信息輸入到對(duì)應(yīng)的對(duì)象數(shù)組中,首先,按照學(xué)生的性別(先女后男)進(jìn)行分類(lèi),分別存儲(chǔ)到兩個(gè)對(duì)應(yīng)的對(duì)象數(shù)組中。
          對(duì)兩個(gè)對(duì)象數(shù)組先按照學(xué)號(hào)進(jìn)行排序由低到高,輸出學(xué)“學(xué)號(hào)”->“姓名”->“性別”;
          對(duì)兩個(gè)對(duì)象數(shù)組先按照年齡進(jìn)行排序由小到大,輸出學(xué)“姓名”->“年齡”->“性別”;
          輸出兩組對(duì)應(yīng)的平均成績(jī):成績(jī)1、成績(jī)2.
            回復(fù)  更多評(píng)論
            

          # re: Java在線咨詢,多人咨詢。[未登錄](méi) 2014-09-10 15:48 石頭
          我最近在學(xué)習(xí)這一方面的內(nèi)容,網(wǎng)上搜了好多,覺(jué)得你的不錯(cuò),請(qǐng)問(wèn)下可以發(fā)一份完整的源代碼給我學(xué)習(xí)下嗎,在此先謝過(guò)了! 郵箱:511271991@qq.com  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 米易县| 宁远县| 宁化县| 赫章县| 睢宁县| 屯门区| 普安县| 那坡县| 大田县| 都兰县| 明水县| 文山县| 西乌珠穆沁旗| 宣恩县| 滕州市| 长寿区| 赞皇县| 山西省| 奉化市| 临高县| 紫阳县| 隆子县| 大姚县| 儋州市| 浦江县| 霍林郭勒市| 京山县| 临泉县| 建德市| 枣强县| 万山特区| 连江县| 峨边| 浏阳市| 视频| 凤阳县| 隆昌县| 通海县| 延安市| 武强县| 杨浦区|