📄 skinutil.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 + -