📄 onlinebizim.java
字号:
package com.yhbbs.user.biz;
import java.util.ArrayList;
import java.util.List;
import com.yhbbs.bbs.biz.BbsStatBiz;
import com.yhbbs.user.itface.bean.UserSession;
/**
* <p>Title:论坛在线用户操作Bean</p>
* <li> 论坛在线用户操作 <br>
* <br><b>WebSite: www.yyhweb.com</b>
* <br><b>CopyRight: yyhweb[由由华网]</b>
* @author stephen
* @version YHBBS-2.0
*/
public class OnlineBizIm {
private static int guestcount = 0;
private static int usercount = 0;
private static int forumgc = 0;
private static int forumuc = 0;
private static int forumc = 0;
/** onlinelist:系统总在线list forumonlist:某论坛在线list useridlist:系统在线登录用户Id的list */
private static List<UserSession> onlinelist = new ArrayList<UserSession>();
private static List<UserSession> forumonlist = new ArrayList<UserSession>();
private static List<Integer> useridlist = new ArrayList<Integer>();
/**
* @return 返回所有在线用户数
*/
public static int getOnlineCount(){
return guestcount+usercount;
}
/**
* @return 论坛的在线用户数
*/
public static int getForumCount(){
return forumc;
}
/**
* @return 在线游客数
*/
public static int getOnlineGuestC(){
return guestcount;
}
/**
* @return 在线用户数
*/
public static int getOnlineUserC(){
return usercount;
}
/**
* 游客来访
*/
public static void comeguest(){
guestcount++;
}
/**
* 用户来访
*/
public static void comeuser(){
usercount++;
}
/**
* 游客离开
*/
public static void outguest(){
if(guestcount>0)
guestcount--;
}
/**
* 用户离开
*/
public static void outuser(){
if(usercount>0)
usercount--;
}
/**
* @return 论坛游客数
*/
public static int getForumgc() {
return forumgc;
}
/**
* @return 论坛用户数
*/
public static int getForumuc() {
return forumuc;
}
/**
* @return 在线用户列表
*/
public static List getOnlinelist() {
return onlinelist;
}
/**
* @return 论坛用户列表
*/
public static List getForumlist() {
return forumonlist;
}
/**
* @return 登录用户Id列表
*/
public static List getUseridlist() {
return useridlist;
}
/**
* @param forumId
* 获取forumId论坛的在线用户
* 同时计算本论坛的用户和guest的数
*/
public static void setForumOnlist(int forumId) {
forumgc=0;
forumuc=0;
forumc=0;
forumonlist.clear();
UserSession us = null;
for(int i=0;i<onlinelist.size();i++){
us = (UserSession)onlinelist.get(i);
if(us.getForumid()==forumId){
if(us.getUserId()==0)
forumgc = forumgc+1;
else
forumuc = forumuc+1;
forumc = forumc+1;
forumonlist.add(us);
}
}
}
/** 增加一个用户到用户在线列表中
* 其中包括一用户两处登录的处理
* @param onlineuser
*/
public static synchronized void addUser(UserSession onlineuser){
int curUserId = onlineuser.getUserId();
if(curUserId>0){
//while one user login in different palce was deal with in login action;
if(!useridlist.contains((Object)curUserId)){
useridlist.add(curUserId);
onlinelist.add(onlineuser);
comeuser();
}else{ // 如果检测到在线用户里已经存在该用户,删除前一次登陆的用户,问题是如何让他的session也失效。
for(int i=0;i<onlinelist.size();i++){
UserSession us = (UserSession) onlinelist.get(i);
if(us.getUserId()==curUserId)
onlinelist.remove(i);
else
continue;
}
onlinelist.add(onlineuser);
}
}else if(curUserId==0){
onlinelist.add(onlineuser);
comeguest();
}
BbsStatBiz.upMaxOnline(getOnlineCount());
}
/** session失效或用户退出时 从列表里删除用户
* @param onlineuser
*/
public static synchronized void removeUser(UserSession onlineuser){
int curUserId = onlineuser.getUserId();
if(curUserId>0){
if(useridlist.contains((Object)curUserId)){
useridlist.remove((Object)curUserId);
onlinelist.remove(onlineuser);
outuser();
}
UserBiz.userLogout(curUserId); // 更新用户离线信息
}else if(curUserId==0){
onlinelist.remove(onlineuser);
outguest();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -