guanxf

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

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  71 随笔 :: 1 文章 :: 41 评论 :: 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为客服人员对象
//(客服人员ID,客服人员姓名,单位id ,单位名称 ,状态(1在线、2忙碌、3离线),在线——1在咨询中,2空闲,如果状态是不在线:值为0)。
super.init(config);  
ServletContext application=this.getServletContext();  //得到Application对象
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("技术支持");
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="请电话咨询,电话号码为:XXXXX";
}else{
Map<String,WorkerOnlineVO> childWorkerMap =workersMap.get(workerId);
if(childWorkerMap==null){
outmsg="请电话咨询,电话号码为:XXXXX";
}else{
//boolean flagTel=false; //无客服人员在线
 String  workerUserIdTemp="";
  Set<String> key = childWorkerMap.keySet();
  for (Iterator it = key.iterator(); it.hasNext();) {
WorkerOnlineVO workerOnlineVo =childWorkerMap.get((String)it.next()); 
//状态(1在线、2忙碌、3离线),在线——1在咨询中,2空闲,如果状态是不在线:值为0
//安排人员的优先级:在线 --空闲  》在线--咨询中 ,其他条件不符合。
if(workerOnlineVo.getState().equals("1")&& workerOnlineVo.getConsultate().equals("2")){
//在线 --空闲  ------------优先级最高
workerUserIdTemp=workerOnlineVo.getWorkerUserId();
break;
else if(workerOnlineVo.getState().equals("1")&& workerOnlineVo.getConsultate().equals("1")){
//在线--咨询中
if(workerUserIdTemp.equals("")){
workerUserIdTemp=workerOnlineVo.getWorkerUserId();
}
}
       }
if(workerUserIdTemp.equals("")){
outmsg="请电话咨询,电话号码为:XXXXX";
}else{
WorkerOnlineVO workerOnlineVo = childWorkerMap.get(workerUserIdTemp);
workerOnlineVo.setState("1");
workerOnlineVo.setConsultate("1");
childWorkerMap.put(workerOnlineVo.getWorkerUserId(), workerOnlineVo);
workersMap.put(workerId, childWorkerMap); //和原来的Map一样
//application.setAttribute("workersKey", workersMap);
outmsg = "您好,请问有什么可以帮助您的吗?";
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、中间类:
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 管先飞 阅读(2124) 评论(11)  编辑  收藏 所属分类: Java技术

评论

# re: Java在线咨询,多人咨询。 2013-01-19 21:38 那天
嗨,你好,我最近也在做这个功能,请问下可以发一份完整的源代码给我学习下吗,在此先谢过了!
邮箱:1262176582@qq.com  回复  更多评论
  

# re: Java在线咨询,多人咨询。 2013-04-12 05:06 罗黎明
你好,guanxf:
最近在学习做在线客服,在网上狂搜一通,觉得你的不错,能帮我发一份完整的源代码供学习使用吗? 不甚感谢!

我的邮箱:
lichunming3793789@126.com  回复  更多评论
  

# re: Java在线咨询,多人咨询。 2013-07-16 22:36 彬彬
您好 能否给我发一分源码 最近在学习这个 谢了 313710351@qq.com  回复  更多评论
  

# re: Java在线咨询,多人咨询。 2013-09-22 15:55 小孟
嗨,你好,我最近也在做这个功能,请问下可以发一份完整的源代码给我学习下吗,在此先谢过了!
邮箱:1135509405@qq.com   回复  更多评论
  

# re: Java在线咨询,多人咨询。[未登录] 2013-12-02 13:58 小光
你好,我最近也在做这个功能,请问下可以发一份完整的源代码给我学习下吗,在此先谢过了!
邮箱:66550907@qq.com  回复  更多评论
  

# re: Java在线咨询,多人咨询。[未登录] 2013-12-15 23:00 wj
你好,我最近也在学着做这个功能,在网上搜了好多,觉得你的不错,请问下可以发一份完整的源代码给我学习下吗,在此先谢过了!
邮箱:934051639@qq.com  回复  更多评论
  

# re: Java在线咨询,多人咨询。 2013-12-15 23:10 管先飞
@wj
其实这个没啥难的就是2步:
1、将客服的信息放入到一个Map中。
2、咨询者咨询的时候将客户的id给咨询者,这样就成功建立了一个回话。
  回复  更多评论
  

# re: Java在线咨询,多人咨询。 2014-02-26 21:38 马媛
您好,网上找了一圈,还是没整出来,可以发一份给我吗?非常谢谢!273694566@qq.com  回复  更多评论
  

# re: Java在线咨询,多人咨询。 2014-05-07 16:16 东东在线
正在学习这方面的东西,能给我发一份源码么?时分感谢  回复  更多评论
  

# re: Java在线咨询,多人咨询。[未登录] 2014-07-16 15:26
5、编程实现:
要求:从输入端输入各学生{学号、姓名、性别、年龄、成绩}的信息输入到对应的对象数组中,首先,按照学生的性别(先女后男)进行分类,分别存储到两个对应的对象数组中。
对两个对象数组先按照学号进行排序由低到高,输出学“学号”->“姓名”->“性别”;
对两个对象数组先按照年龄进行排序由小到大,输出学“姓名”->“年龄”->“性别”;
输出两组对应的平均成绩:成绩1、成绩2.
  回复  更多评论
  

# re: Java在线咨询,多人咨询。[未登录] 2014-09-10 15:48 石头
我最近在学习这一方面的内容,网上搜了好多,觉得你的不错,请问下可以发一份完整的源代码给我学习下吗,在此先谢过了! 邮箱:511271991@qq.com  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: