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

📄 skinutil.java

📁 BBS论坛设计JSP+MYSQL
💻 JAVA
字号:
package com.bcxy.bbs.forum;

/**
 * Title:
 * Description:
 * Copyright:
 * Company: www.liyunet.com
 * 
 * @author lishujiang	
 * @version 1.0
 */
import java.sql.ResultSet;
import java.util.Vector;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;

import com.bcxy.bbs.database.DBConnect;
import com.bcxy.ip.IPLocalizer;
import com.bcxy.bbs.util.Format;
import com.bcxy.bbs.util.GCookie;
import com.bcxy.bbs.util.ParamUtil;
import com.bcxy.bbs.util.StringUtils;
import com.bcxy.db.SqlQuery;
import com.bcxy.util.StringUtil;
import com.bcxy.util.SysUtil;
public class SkinUtil {

	static Logger log = Logger.getLogger(SkinUtil.class);
	
	public static int checkStyle(HttpServletRequest request,HttpServletResponse response) throws Exception
	{
		int ret = 0;
		int styleID = ParamUtil.getInt(request, "style", -1);
		if(styleID!=-1){
			GCookie.setCookie(response, "UJBBUSTYLE", String.valueOf(styleID), -1);
		}
		String CStyle = GCookie.getCookieValue(request, "UJBBUSTYLE", "");
		if(!"".equals(CStyle)){
			ret = StringUtil.parseInt(CStyle);
		}
		return ret;
	}
	
	public static User checkUser(HttpServletRequest request,
			HttpServletResponse response, int loginSign)
			throws UserNotFoundException, Exception {
		String userName = GCookie.getCookieValue(request, "UJBBUName", "");
		String userPassword = GCookie.getCookieValue(request, "UJBBUPSW", "");
		User tempUser = null;
		int forumID = ParamUtil.getInt(request, "forumID", 0);
		int forumSkin = ForumFactory.getForum(forumID).getForumSkin();
		switch (forumSkin) {
		case 0:
			tempUser = new User(userName, userPassword, loginSign);
			break;
		case 1:
			// 常规
			tempUser = new User(userName, userPassword, loginSign);
			break;
		case 2:
			// 开放,不需要检验用户
			break;
		case 3:
			// 评论,只会员回复
			tempUser = new User(userName, userPassword, loginSign);
			if(loginSign==2 && tempUser.getUserClass()<19){
				throw new Exception("评论论坛坛主和版主允许发言,普通会员只允许回复!");
			}
			break;
		case 4:
			// 精华,版主可用
			tempUser = new User(userName, userPassword, loginSign);
			if(tempUser.getUserClass()<19){
				throw new Exception("评论论坛只允许坛主和版主允许发言!");
			}			
			break;
		case 5:
			// 认证
			tempUser = new User(userName, userPassword, loginSign);
			if(!(tempUser.getUserClass()>18 || ForumFactory.getForum(forumID).getForumUser().indexOf(userName)>=0)){
				throw new Exception("您没有通过论坛管理员认证!");
			}			
			break;
		case 6:
			// 正规
			tempUser = new User(userName, userPassword, loginSign);
			break;
		}
		return tempUser;
	}
	
	public static void userLogin(HttpServletRequest request,
			HttpServletResponse response, int loginSign)
			throws UserNotFoundException, Exception {
		String userName = ParamUtil.getString(request, "userName", "");
		String userPassword = ParamUtil.getString(request, "userPassword", "");
		//
		new User(userName,userPassword,loginSign);
		//
		int cookieDate = ParamUtil.getInt(request, "cookieDate", 1);
		switch (cookieDate) {
		case 1:
			cookieDate = 3600 * 24;
			break;
		case 2:
			cookieDate = 30 * 3600 * 24;
			break;
		case 3:
			cookieDate = 365 * 30 * 3600 * 24;
			break;

		default:
			cookieDate = 3600 * 24;
			break;
		}

		GCookie.setCookie(response, "UJBBUName", SysUtil.encodeOutDB(userName), cookieDate);
		GCookie.setCookie(response, "UJBBUPSW", SysUtil.encodeOutDB(userPassword), cookieDate);
	}

	public static void userLogout(HttpServletResponse response,
			HttpServletRequest request) throws Exception {
		SqlQuery dbc = new SqlQuery();
		String userName = GCookie.getCookieValue(request, "UJBBUName", "");
		String userPassword = GCookie.getCookieValue(request, "UJBBUPSW", "");
		GCookie.setCookie(response, "UJBBUName", userName, 0);
		GCookie.setCookie(response, "UJBBUPSW", userPassword, 0);

		long statUserID = Long.parseLong(StringUtils.replace(request
				.getRemoteAddr(), ".", ""));
		String sql = "delete from online where ID=" + statUserID;
		dbc.doUpdate(sql);
	}

	public static User userLogin(String userName, String userPassword,
			int loginSign) throws UserNotFoundException, Exception {
		User tempUser = new User(userName, userPassword, loginSign);
		return tempUser;
	}

	public static void checkUserStats(HttpServletRequest request,
			HttpServletResponse response) {
		String stats;
		if ((stats = request.getParameter("stats")) == null)
			stats = "论坛首页 response";

		checkUserStats(request, response, stats);

	}

	public static void checkUserStats(HttpServletRequest request,
			HttpServletResponse response, String stats) {

		String userName = GCookie.getCookieValue(request, "UJBBUName", "");
		String userPassword = GCookie.getCookieValue(request, "UJBBUPSW", "");
		String ip = request.getRemoteAddr();
		String[] addr = IPLocalizer.search(request);
		String comeFrom = "";
		for (int i = 0; i < addr.length; i++){
			comeFrom += addr[i];
		}
		//
		comeFrom = SysUtil.encodeInDB(comeFrom);
		stats = SysUtil.encodeInDB(stats);
		//
		String actCome = request.getHeader("X_FORWARDED_FOR");
		//long statUserID = Long.parseLong(StringUtils.replace(ip, ".", ""));
		String statUserID = request.getSession().getId();
		//log.info("statUserID=" + statUserID);
		boolean onlineSign = false;
		String browser = request.getHeader("User-Agent");
		DBConnect dbc = null;
		ResultSet rs;
		try {
			String sql = "";
			dbc = new DBConnect();
			try {
				sql = "select id from online where id=?";
				dbc.prepareStatement(sql);
				dbc.setString(1, statUserID);
				rs = dbc.executeQuery();
				if (rs.next()){
					onlineSign = true;
				}else{
					onlineSign = false;
				}
				rs.close();
			} catch (Exception e) {
				onlineSign = false;
			}

			if ("".equals(userName)) {
				if (!onlineSign) {
					sql = "insert into online (id,username,userclass,ip,startime,lastimebk,browser,stats,actforip,ComeFrom,actCome) values(?,?,?,?,?,?,?,?,?,?,?)";
					dbc.prepareStatement(sql);
					dbc.setString(1, statUserID);
					dbc.setString(2, "guest");
					dbc.setString(3, "客人");
					dbc.setString(4, ip);
					dbc.setString(5, Format.getDateTime());
					dbc.setString(6, Format.getDateTime());
					dbc.setString(7, browser);
					dbc.setString(8, stats);
					dbc.setString(9, actCome);
					dbc.setString(10, comeFrom);
					dbc.setString(11, actCome);
					dbc.executeUpdate();
					dbc.clearParameters();

				} else {
					sql = "update online set lastimebk=?,lastime=?,ComeFrom=?,actCome=?,stats=? where id=?";
					dbc.prepareStatement(sql);
					dbc.setString(1, Format.getDateTime());
					dbc.setString(2, Format.getStrDateTime());
					dbc.setString(3, comeFrom);
					dbc.setString(4, actCome);
					dbc.setString(5, stats);
					dbc.setString(6, statUserID);
					dbc.executeUpdate();
					dbc.clearParameters();

				}
			} else {
				sql = "select id from online where  ID=? or username=?";
				dbc.prepareStatement(sql);
				dbc.setString(1, statUserID);
				dbc.setString(2, userName);
				rs = dbc.executeQuery();
				if (rs.next()){
					onlineSign = true;
				}else{
					onlineSign = false;
				}
				dbc.clearParameters();
				try {
					User theUser = new User(userName, userPassword, 4);
					if (onlineSign) {

						sql = "update online set id=?,userName=?,userClass=?,lastimebk=?,lastime=?,ComeFrom=?,actCome=?,stats=? where id=? or username=?";
						dbc.prepareStatement(sql);
						dbc.setString(1, statUserID);
						dbc.setString(2, userName);
						dbc.setString(3, getUserClass(theUser.getUserClass()));
						dbc.setString(4, Format.getDateTime());
						dbc.setString(5, Format.getStrDateTime());
						dbc.setString(6, comeFrom);
						dbc.setString(7, actCome);
						dbc.setString(8, stats);
						dbc.setString(9, statUserID);
						dbc.setString(10, userName);
						dbc.executeUpdate();
						dbc.clearParameters();
					} else {

						sql = "insert into online(id,username,userclass,ip,startime,lastimebk,browser,stats,actforip,ComeFrom,actCome) values(?,?,?,?,?,?,?,?,?,?,?)";
						dbc.prepareStatement(sql);
						dbc.setString(1, statUserID);// statUserID);
						dbc.setString(2, userName);
						dbc.setString(3, getUserClass(theUser.getUserClass())
								);
						dbc.setString(4, ip);
						dbc.setString(5, Format.getDateTime());
						dbc.setString(6, Format.getStrDateTime());
						dbc.setString(7, browser);
						dbc.setString(8, stats);
						if (actCome == null) {
							dbc.setString(9, "null");
							dbc.setString(11, "null");
						} else {
							dbc.setString(9, actCome);
							dbc.setString(11, actCome);
						}

						dbc.setString(10, comeFrom);

						dbc.executeUpdate();
						dbc.clearParameters();
					}
				} catch (Exception e) {

					if (!onlineSign) {
						sql = "insert into online (id,username,userclass,ip,startime,lastimebk,browser,stats,actforip,ComeFrom,actCome) values(?,?,?,?,?,?,?,?,?,?,?)";
						dbc.prepareStatement(sql);
						dbc.setString(1, statUserID);
						dbc.setString(2, "guest");
						dbc.setString(3, "客人");
						dbc.setString(4, ip);
						dbc.setString(5, Format.getDateTime());
						dbc.setString(6, Format.getDateTime());
						dbc.setString(7, browser);
						dbc.setString(8, stats);
						dbc.setString(9, actCome);
						dbc.setString(10, comeFrom);
						dbc.setString(11, actCome);
						dbc.executeUpdate();
						dbc.clearParameters();

					} else {
						sql = "update online set lastimebk=?,lastime=?,ComeFrom=?,actCome=?,stats=? where id=?";
						dbc.prepareStatement(sql);
						dbc.setString(1, Format.getDateTime());
						dbc.setString(2, Format.getStrDateTime());
						dbc.setString(3, comeFrom);
						dbc.setString(4, actCome);
						dbc.setString(5, stats);
						dbc.setString(6, statUserID);
						dbc.executeUpdate();
						dbc.clearParameters();

					}

				}

			}

			sql = "delete from online where now()>date_add(lastimebk,interval 20 minute)";

			dbc.executeUpdate(sql);
			sql = "select Maxonline from config";
			rs = dbc.executeQuery(sql);
			rs.next();
			int oldMaxOnLine = rs.getInt(1);
			sql = "select count(*) from online";
			ResultSet tmprs = dbc.executeQuery(sql);
			tmprs.next();
			int newMaxOnLine = tmprs.getInt(1);
			if (newMaxOnLine > oldMaxOnLine) {
				sql = "update config set Maxonline=" + newMaxOnLine
						+ ",MaxonlineDate=now()";
				dbc.executeUpdate(sql);
				ForumPropertiesManager.resetManager();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				dbc.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	public static String getUserClass(int userClass) {
		String user_level = "";
		switch (userClass) {

		case 1:
			user_level = "新手上路";
			break;
		case 2:
			user_level = "论坛游民";
			break;
		case 3:
			user_level = "论坛游侠";
			break;
		case 4:
			user_level = "业余侠客";
			break;
		case 5:
			user_level = "职业侠客";
			break;
		case 6:
			user_level = "侠之大者";
			break;
		case 7:
			user_level = "黑侠";
			break;
		case 8:
			user_level = "蝙蝠侠";
			break;
		case 9:
			user_level = "蜘蛛侠";
			break;
		case 10:
			user_level = "青蜂侠";
			break;
		case 11:
			user_level = "小飞侠";
			break;
		case 12:
			user_level = "火箭侠";
			break;
		case 13:
			user_level = "蒙面侠";
			break;
		case 14:
			user_level = "城市猎人";
			break;
		case 15:
			user_level = "罗宾汉";
			break;
		case 16:
			user_level = "阿诺";
			break;
		case 17:
			user_level = "侠圣";
			break;
		case 18:
			user_level = "贵宾";
			break;
		case 19:
			user_level = "版主";
			break;
		case 20:
			user_level = "总版主";
			break;
		default:
			user_level = "新手上路";
			break;
		}
		user_level = SysUtil.encodeInDB(user_level);
		
		return user_level;
	}

	public static int getPoint(int p) {
		int level_point = 0;
		switch (p) {
		case 1:
			level_point = 0;
			break;
		case 2:
			level_point = 100;
			break;
		case 3:
			level_point = 200;
			break;
		case 4:
			level_point = 300;
			break;
		case 5:
			level_point = 400;
			break;
		case 6:
			level_point = 500;
			break;
		case 7:
			level_point = 600;
			break;
		case 8:
			level_point = 800;
			break;
		case 9:
			level_point = 1000;
			break;
		case 10:
			level_point = 1200;
			break;
		case 11:
			level_point = 1500;
			break;
		case 12:
			level_point = 1800;
			break;
		case 13:
			level_point = 2100;
			break;
		case 14:
			level_point = 2500;
			break;
		case 15:
			level_point = 3000;
			break;
		case 16:
			level_point = 3500;
			break;
		case 17:
			level_point = 4000;
			break;
		default:
			level_point = 0;
			break;
		}
		return level_point;
	}

	public static Vector getTopList(HttpServletRequest request)
			throws Exception {
		int orders = ParamUtil.getInt(request, "orders", 7);
		String sql = "";
		switch (orders) {
		case 1:
			sql = "select username,useremail,userclass,oicq,homePage,article,addDate,userwealth as wealth ,userID from user order by article desc limit 0,10";
			break;
		case 2:
			sql = "select  username,useremail,userclass,oicq,homePage,article,addDate,userwealth as wealth ,userID from user order by AddDate desc limit 0,10";
			break;
		case 7:
			sql = "select username,useremail,userclass,oicq,homePage,article,addDate,userwealth as wealth ,userID from user order by AddDate desc ";
			break;
		default:
			sql = "select  username,useremail,userclass,oicq,homePage,article,addDate,userwealth as wealth ,userID from user order by article desc limit 0,10";
			break;
		}

		SqlQuery rs = new SqlQuery(sql);

		Vector userVector = new Vector();
		while (rs.next()) {
			User tempUser = new User();
			tempUser.setUserName(rs.getString(1));
			tempUser.setUserEmail(rs.getString(2));
			tempUser.setUserClass(rs.getInt(3));
			tempUser.setOicq(rs.getString(4));
			tempUser.setHomePage(rs.getString(5));
			tempUser.setArticle(rs.getInt(6));
			tempUser.setAddDate(rs.getString(7));
			tempUser.setUserWealth(rs.getInt(8));
			tempUser.setUserID(rs.getInt(9));
			userVector.add(tempUser);
		}
		return userVector;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -