📄 userdb.java
字号:
package com.redmoon.forum.person;
import java.io.*;
import java.sql.*;
import java.util.*;
import java.util.Date;
import javax.servlet.*;
import cn.js.fan.base.*;
import cn.js.fan.db.*;
import cn.js.fan.util.*;
import cn.js.fan.web.*;
import com.redmoon.blog.*;
import com.redmoon.chat.*;
import com.redmoon.forum.*;
import com.redmoon.forum.Config;
import com.redmoon.forum.setup.*;
import com.redmoon.forum.treasure.*;
import com.redmoon.kit.util.*;
public class UserDb extends ObjectDb {
String name, pwdMd5, realName, email;
int experience, credit, addCount, delCount;
String realPic;
private String gender;
private Date regDate;
public static final int CHECK_STATUS_NOT = 0;
public static final int CHECK_STATUS_PASS = 1;
public UserDb(String name) {
this.name = name;
init();
load();
}
public UserDb() {
init();
}
public String getRealPic() {
return this.realPic;
}
public void setRealPic(String r) {
this.realPic = r;
}
public ObjectBlockIterator getUsers(String query,
int startIndex,
int endIndex) {
// if (!SecurityUtil.isValidSql(query))
// return null;
//可能取得的infoBlock中的元素的顺序号小于endIndex
Object[] docBlock = getObjectBlock(query, startIndex);
return new ObjectBlockIterator(this, docBlock, query,
startIndex, endIndex);
}
public boolean create() throws ErrMsgException {
UserDb user = getUserDbByNick(name);
if (user != null && user.isLoaded()) {
throw new ErrMsgException("该用户名已被注册,请选择新的用户名!");
}
String tzID = timeZone.getID();
boolean isvalid = false;
int srt = secret ? 1 : 0;
int id = (int) SequenceMgr.nextID(SequenceMgr.SQ_USER);
name = "" + id;
PreparedStatement ps = null;
String sql =
"insert into sq_user (name,pwd,Question,Answer,RealName,Career,Gender,Job, Birthday," +
"Marriage, Phone, Mobile, State, City, Address, PostCode, IDCard," +
"RealPic, Hobbies, Email,OICQ,RegDate,sign,experience,credit,gold,diskSpaceAllowed,diskSpaceUsed,isSecret,IP,rawPwd,timeZone,home,msn,lastTime,curTime,locale,nick,check_status) values (" +
"?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
Conn conn = new Conn(connname);
try {
ps = conn.prepareStatement(sql);
ps.setString(1, name);
ps.setString(2, pwdMd5);
ps.setString(3, question);
ps.setString(4, answer);
ps.setString(5, realName);
ps.setString(6, career);
ps.setString(7, gender);
ps.setString(8, job);
ps.setString(9, "" + birthday.getTime());
ps.setInt(10, marriage);
ps.setString(11, phone);
ps.setString(12, mobile);
ps.setString(13, state);
ps.setString(14, city);
ps.setString(15, address);
ps.setString(16, postCode);
ps.setString(17, IDCard);
ps.setString(18, realPic);
ps.setString(19, hobbies);
ps.setString(20, email);
ps.setString(21, oicq);
ps.setString(22, "" + System.currentTimeMillis());
ps.setString(23, sign);
ps.setInt(24, experience);
ps.setInt(25, credit);
ps.setInt(26, gold);
ps.setLong(27, diskSpaceAllowed);
ps.setLong(28, diskSpaceUsed);
ps.setInt(29, srt);
ps.setString(30, ip);
ps.setString(31, rawPwd);
ps.setString(32, tzID);
ps.setString(33, home);
ps.setString(34, msn);
ps.setString(35, "" + System.currentTimeMillis());
ps.setString(36, "" + System.currentTimeMillis());
ps.setString(37, locale);
ps.setString(38, nick);
ps.setInt(39, checkStatus);
isvalid = conn.executePreUpdate() == 1 ? true : false;
} catch (SQLException e) {
logger.error("create:" + e.getMessage());
isvalid = false;
} finally {
if (conn != null) {
conn.close();
conn = null;
}
}
if (isvalid) {
UserCache uc = new UserCache(this);
uc.refreshCreate();
}
// 更新论坛总人数
if (isvalid) {
ForumDb fd = new ForumDb();
fd = fd.getForumDb();
fd.setUserCount(fd.getUserCount() + 1);
fd.setUserNew(name);
fd.save();
}
return isvalid;
}
public ObjectDb getObjectDb(Object primaryKeyValue) {
UserCache uc = new UserCache(this);
primaryKey.setValue(primaryKeyValue);
return (UserDb) uc.getObjectDb(primaryKey);
}
public boolean del() throws ResKeyException, ErrMsgException {
boolean re = false;
// 删除博客
UserConfigDb ucd = new UserConfigDb();
ucd = ucd.getUserConfigDb(name);
ucd.del();
// 删除用户的贴子
MsgDb md = new MsgDb();
md.delMessagesOfUser(name);
// 删除好友列表
UserFriendDb ufd = new UserFriendDb();
ufd.delFriendsOfUser(name);
// 删除版主
BoardManagerDb bmd = new BoardManagerDb();
bmd.delManager(name);
// 删除财富
TreasureUserDb tu = new TreasureUserDb();
tu.delTreasureOfUser(name);
// 删除聊天室主持
RoomEmceeDb red = new RoomEmceeDb();
red.delEmcee(name);
// 更新会员总数
ForumDb fd = ForumDb.getInstance();
fd.setUserCount(fd.getUserCount() - 1);
fd.save();
// 删除权限
UserPrivDb upd = new UserPrivDb();
upd = upd.getUserPrivDb(name);
upd.del();
Conn conn = new Conn(connname);
try {
PreparedStatement ps = conn.prepareStatement(QUERY_DEL);
ps.setString(1, name);
re = conn.executePreUpdate() == 1 ? true : false;
} catch (Exception e) {
logger.error("del:" + e.getMessage());
} finally {
UserCache uc = new UserCache(this);
primaryKey.setValue(name);
uc.refreshDel(primaryKey);
if (conn != null) {
conn.close();
conn = null;
}
}
return re;
}
public int getObjectCount(String sql) {
UserCache uc = new UserCache(this);
return uc.getObjectCount(sql);
}
public int getUserCount(String sql) {
return getObjectCount(sql);
}
public Object[] getObjectBlock(String query, int startIndex) {
UserCache dcm = new UserCache(this);
return dcm.getObjectBlock(query, startIndex);
}
public ObjectDb getObjectRaw(PrimaryKey pk) {
return new UserDb(pk.getStrValue());
}
public void setQueryCreate() {
}
public void setQuerySave() {
this.QUERY_SAVE =
"update sq_user set pwd=?,Question=?,Answer=?,realname=?," +
"Career=?,Gender=?,Job=?," +
"Birthday=?,Marriage=?,Phone=?," +
"Mobile=?,State=?,City=?,Address=?," +
"PostCode=?,IDCard=?,RealPic=?,Hobbies=?," +
"Email=?,OICQ=?,sign=?,myface=?,myfacewidth=?," +
"myfaceheight=?,experience=?,credit=?,addcount=?," +
"delcount=?,arrestday=?,arrestreason=?,arresttime=?,arrestpolice=?,ispolice=?,lastTime=?,curTime=?,eliteCount=?,gold=?,favoriate=?,isValid=?,rawPwd=?,diskSpaceAllowed=?,diskSpaceUsed=?,isSecret=?,ip=?,releasetime=?,timeZone=?,home=?,msn=?,group_code=?,locale=?,nick=?,check_status=? where name=?";
}
public void setQueryDel() {
QUERY_DEL = "delete from sq_user where name=?";
}
public void setQueryLoad() {
QUERY_LOAD = "select pwd,Question,Answer,realname," +
"Career,Gender,Job," +
"Birthday,Marriage,Phone," +
"Mobile,State,City,Address," +
"PostCode,IDCard,RealPic,Hobbies," +
"Email,OICQ,sign,myface,myfacewidth," +
"myfaceheight,experience,credit,addcount," +
"delcount,arrestday,arrestreason,arresttime,arrestpolice,ispolice,RegDate,lastTime,curTime,eliteCount,gold,favoriate,isValid,rawPwd,diskSpaceAllowed,diskSpaceUsed,isSecret,ip,releasetime,timeZone,home,msn,group_code,locale,nick,check_status from sq_user where name=?";
}
public void setQueryList() {
QUERY_LIST = "select name from sq_user order by RegDate desc";
}
public synchronized boolean save() {
boolean re = false;
Conn conn = new Conn(connname);
try {
PreparedStatement ps = conn.prepareStatement(QUERY_SAVE);
ps.setString(1, pwdMd5);
ps.setString(2, question);
ps.setString(3, answer);
ps.setString(4, realName);
ps.setString(5, career);
ps.setString(6, gender);
ps.setString(7, job);
ps.setString(8, "" + DateUtil.toLong(birthday));
ps.setInt(9, marriage);
ps.setString(10, phone);
ps.setString(11, mobile);
ps.setString(12, state);
ps.setString(13, city);
ps.setString(14, address);
ps.setString(15, postCode);
ps.setString(16, IDCard);
ps.setString(17, realPic);
ps.setString(18, hobbies);
ps.setString(19, email);
ps.setString(20, oicq);
ps.setString(21, sign);
ps.setString(22, myface);
ps.setInt(23, myfaceWidth);
ps.setInt(24, myfaceHeight);
ps.setInt(25, experience);
ps.setInt(26, credit);
ps.setInt(27, addCount);
ps.setInt(28, delCount);
ps.setInt(29, arrestDay);
ps.setString(30, arrestReason);
if (arrestTime == null)
ps.setString(31, null);
else
ps.setString(31, DateUtil.toLongString(arrestTime));
ps.setString(32, arrestPolice);
ps.setInt(33, isPolice);
ps.setString(34, DateUtil.toLongString(lastTime));
ps.setString(35, DateUtil.toLongString(curTime));
ps.setInt(36, eliteCount);
ps.setInt(37, gold);
ps.setString(38, favoriate);
ps.setInt(39, valid ? 1 : 0);
ps.setString(40, rawPwd);
ps.setInt(41, (int) diskSpaceAllowed);
ps.setInt(42, (int) diskSpaceUsed);
ps.setInt(43, secret ? 1 : 0);
ps.setString(44, ip);
releaseTime = DateUtil.addDate(arrestTime, arrestDay);
ps.setString(45, DateUtil.toLongString(releaseTime));
String tzID = timeZone.getID();
ps.setString(46, tzID);
ps.setString(47, home);
ps.setString(48, msn);
ps.setString(49, groupCode);
ps.setString(50, locale);
ps.setString(51, nick);
ps.setInt(52, checkStatus);
ps.setString(53, name);
re = conn.executePreUpdate() == 1 ? true : false;
} catch (Exception e) {
logger.error("save:" + e.getMessage());
e.printStackTrace();
} finally {
UserCache uc = new UserCache(this);
primaryKey.setValue(name);
uc.refreshSave(primaryKey);
uc.refreshNick(nick);
if (conn != null) {
conn.close();
conn = null;
}
}
return re;
}
public void setPrimaryKey() {
primaryKey = new PrimaryKey("name", PrimaryKey.TYPE_STRING);
}
public UserDb getUserDbByIP(String ip) {
String sql = "select name from sq_user where ip=? order by RegDate desc";
PreparedStatement pstmt = null;
ResultSet rs = null;
Conn conn = new Conn(connname);
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, ip);
rs = conn.executePreQuery();
if (rs != null && rs.next()) {
return getUser(rs.getString(1));
}
} catch (Exception e) {
logger.error("getUserDbByIP: " + e.getMessage());
} finally {
if (conn != null) {
conn.close();
conn = null;
}
}
return null;
}
public UserDb getUserDbByNick(String nick) {
UserCache uc = new UserCache(this);
return uc.getUserDbByNick(nick);
}
public boolean validEmailOnly(String email) {
String sql = "select name from sq_user where Email=?";
PreparedStatement pstmt = null;
ResultSet rs = null;
Conn conn = new Conn(connname);
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, email);
rs = conn.executePreQuery();
if (rs != null && rs.next()) {
return false;
}
} catch (Exception e) {
logger.error("getUserDbByNick: " + e.getMessage());
} finally {
if (conn != null) {
conn.close();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -