⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 onlinebizim.java

📁 一个不错的bbs论坛系统.对初学者很有帮助
💻 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 + -