📄 userinfoaction.java
字号:
/* * 作者: 胡李青 * qq: 31703299 * Copyright (c) 2007 huliqing * 主页 http://www.tbuy.biz/ * 你可以免费使用该软件,未经许可请勿作用于任何商业目的,如有技术问题请与本人联系! */package biz.tbuy.bbs;import biz.tbuy.common.pool.ProxyConn;import biz.tbuy.bbs.bean.BaseBean;import biz.tbuy.common.logs.Elog;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;/** * @author huliqing * <p><b>qq:</b>31703299 * <p><b>E-mail:</b> * <a href="mailto:huliqing.cn@gmail.com">huliqing.cn@gmail.com</a> * <p><b>Homepage:</b> * <a href="http://www.tbuy.biz/">http://www.tbuy.biz/</a> */public class UserinfoAction extends BaseBean{ public UserinfoAction() { } /** * 添加用户的BBS信息进数据库 * @param userId 用户的ID,也即帐号 * @return true 如果添加成功,否则返回false */ public static boolean addUserinfoByUserId(String userId) { boolean isOk = false; String sql = "insert into userinfo (u_lastOnline, u_byUser) " + "values (now(), ?)"; ProxyConn myConn = getConn(); try { PreparedStatement ps = myConn.prepareStatement(sql); ps.setString(1, userId); isOk = ps.executeUpdate() > 0; } catch (SQLException sqle) { Elog.log("UserinfoAction.getUserinfoById()/" + sqle.getMessage()); } finally { myConn.close(); } return isOk; } /** * 通过用户的id,判断用户的BBS信息是否存在. * 如果论坛信息存在则返回true,否则返回false * @param byUser 用户的ID * @return true 如果用户信息存在,否则返回false */ public static boolean isExistUserinfoById(String byUser) { boolean isOk = false; String sql = "select * from userinfo where u_byUser=?"; ProxyConn myConn = getConn(); try { PreparedStatement ps = myConn.prepareStatement(sql); ps.setString(1, byUser); ResultSet rs = ps.executeQuery(); isOk = rs.next(); } catch (SQLException sqle) { Elog.log("UserinfoAction.isExistUserinfoById()/" + sqle.getMessage()); } finally { myConn.close(); } return isOk; } /** * 检查该ID用户的Userinfo信息是否存在 * @param userId 所有检查的用户的ID * @param create 如果为true,则在查找不到该用户的Userinfo时自动创建,否则不创建. * @return isOk true如果存在该用户的Userinfo信息,否则返回fasle */ public static boolean checkExistUserinfoById(String userId, boolean create) { boolean isOk = false; // 如果该id的userinfo 已经存在 if (isExistUserinfoById(userId)) { isOk = true; } else { Elog.debug("UserinfoAction:用户BBS信息不存在:" + userId); if (create) { // 判断是否需要创建 Elog.debug("UserinfoAction:创建用户BBS信息:" + userId); isOk = addUserinfoByUserId(userId); if (isOk) { Elog.debug("UserinfoAction:创建BBS信息成功:" + userId); } } } return isOk; } /** * 获取用户的BBS信息(通过用户的ID) * @param userId 用户的ID,通过该ID查到用户的BBS信息 * @return userinfo 返回一个UserinfoModel 该对象包含用户的BBS用户信息 */ public static UserinfoModel getUserinfoByUserId(String userId) throws Exception { UserinfoModel userinfo = null; String sql = "select * from userinfo where u_byUser = ?"; ProxyConn myConn = getConn(); try { PreparedStatement ps = myConn.prepareStatement(sql); ps.setString(1, userId); ResultSet rs = ps.executeQuery(); List<UserinfoModel> list = new ArrayList<UserinfoModel>(1); list = getUserinfo(rs); if (list.isEmpty()) { Elog.debug("UserinfoAction:找不到用户BBS信息:" + userId); if (checkExistUserinfoById(userId, true)) { Elog.debug("UserinfoAction:重新获取用户BBS信息:" + userId); userinfo = getUserinfoByUserId(userId); } } else { userinfo = list.get(0); } } catch (SQLException sqle) { Elog.log("UserinfoAction.getUserinfoById()/" + sqle.getMessage()); } finally { myConn.close(); } return userinfo; } /** * 更新用户的BBS信息, 该方法不会更新用户的最后登录时间及IP * @see #updateByLogin(String, String) * @param userinfo 需要被更新的UserInfoModel对象 * @return true 如果更新成功,否则返回false */ public static boolean updateUserinfo(UserinfoModel userinfo) { boolean isOk = false; String sql = "update userinfo set " + "u_face=?, u_level=?, u_sign=?, " + "u_signable=?, u_group=?, u_beLock=?, " + "u_totalTopic=?, u_totalArticle=? " + "where u_byUser=?"; ProxyConn myConn = getConn(); try { PreparedStatement ps = myConn.prepareStatement(sql); ps.setString(1, userinfo.getFace()); ps.setInt(2, userinfo.getLevel()); ps.setString(3, userinfo.getSign()); ps.setBoolean(4, userinfo.getSignable()); ps.setString(5, userinfo.getGroup()); ps.setBoolean(6, userinfo.getBeLock()); ps.setInt(7, userinfo.getTotalTopic()); ps.setInt(8, userinfo.getTotalArticle()); ps.setString(9, userinfo.getByUser()); if (ps.executeUpdate() > 0) { isOk = true; } else { if (checkExistUserinfoById(userinfo.getByUser(), true)) { isOk = updateUserinfo(userinfo); } } } catch (SQLException sqle) { Elog.log("UserinfoAction.updateUserinfo()/" + sqle.getMessage()); } finally { myConn.close(); } return isOk; } /** * 通过用户的ID信息更新用户的最后登录时间及IP * @param userId 需要更新信息的用户id * @param ip 用户的最后登录ip * @return true 如果更新成功,否则返回false */ public static boolean updateByLogin(String userId, String ip) { boolean isOk = false; String sql = "update userinfo set " + "u_lastOnline=now(), " + "u_lastIp=? " + "where u_byUser=?"; ProxyConn myConn = getConn(); try { PreparedStatement ps = myConn.prepareStatement(sql); ps.setString(1, ip); ps.setString(2, userId); if (ps.executeUpdate() > 0) { isOk = true; } else { if (checkExistUserinfoById(userId, true)) { isOk = updateByLogin(userId, ip); } } } catch (SQLException sqle) { Elog.log("UserinfoAction.updateByLogin()/" + sqle.getMessage()); } finally { myConn.close(); } return isOk; } /** * get list of UserInfoModel by ResultSet * 注意:修改该方法时可能需要同时修改: * CommonAction.getRepliesOfObject(ResultSet rs) * @param a ResultSet of UserInfoModels * @return list of UserInfoModel */ private static List<UserinfoModel> getUserinfo(ResultSet rs) throws Exception { List<UserinfoModel> list = new ArrayList<UserinfoModel>(); try { while (rs.next()) { list.add(getUserinfoByRS(rs)); } } catch (SQLException sqle) { Elog.log("UserinfoAction.getUserinfo()/" + sqle.getMessage()); throw new Exception("UserinfoAction:getUserinfo:" + sqle.getMessage()); } return list; } /** * 通过该ResultSet的当前行获取相应的数据,并转为单个UserInfoModel返回 * 这里是真正从ResultSet中获取数据的地方,所有的userinfoModel都应该从 * 这里获得数据 * @param rs 一个ResultSet * @return userinfo */ public static UserinfoModel getUserinfoByRS(ResultSet rs) { UserinfoModel userinfo = new UserinfoModel(); try { userinfo.setBeLock(rs.getBoolean("u_beLock")); userinfo.setByUser(rs.getString("u_byUser")); userinfo.setSign(rs.getString("u_sign")); userinfo.setSignable(rs.getBoolean("u_signable")); userinfo.setFace(rs.getString("u_face")); userinfo.setGroup(rs.getString("u_group")); userinfo.setLevel(rs.getInt("u_level")); userinfo.setNum(rs.getInt("u_num")); userinfo.setTotalArticle(rs.getInt("u_totalArticle")); userinfo.setTotalTopic(rs.getInt("u_totalTopic")); userinfo.setLastOnline(rs.getTimestamp("u_lastOnline")); userinfo.setLastIp(rs.getString("u_lastIp")); } catch (SQLException sqle) { Elog.log("UserinfoAction.getUserinfoByRS()/" + sqle.getMessage()); } return userinfo; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -