📄 userdao.java
字号:
conn.setAutoCommit(false);
if (removepost.equals("yes"))
{
String sql2 = "select userID,email from ejf_user" + whereSql;
userList = this.execSelectSql(sql2, paramValues, conn);
}
String sql = "delete from ejf_user" + whereSql;
this.execUpdateSql(sql, paramValues, conn);
if (userList != null && userList.size() > 0)
{
removeUserPosts(userList, conn);
}
// Add admin log
String reason = PageUtils.getParam(request,"reason");
ActionLogDAO.getInstance().addAdminLog(request, "删除用户", reason, conn);
conn.commit();
}
catch(SQLException se)
{
conn.rollback();
throw se;
}
finally
{
dbManager.closeConnection(conn);
}
}
/**
* Delete user avatars by query conditions
* @param
* request - HttpServletRequest
* @return none
* @throws SQLException
* @since 1.0
*/
public void deleteAvatars(HttpServletRequest request) throws Exception
{
// Update state
ArrayList<Object> paramValues = new ArrayList<Object>();
String whereSql = this.buildSearchWhereSql(request, paramValues);
whereSql = whereSql + " and userID <> ?";
paramValues.add(AppContext.getInstance().getAdminUser());
Connection conn = dbManager.getConnection();
try
{
conn.setAutoCommit(false);
String sql = "update ejf_user set avatar=''" + whereSql;
this.execUpdateSql(sql, paramValues, conn);
// Add admin log
String reason = PageUtils.getParam(request,"reason");
ActionLogDAO.getInstance().addAdminLog(request, "删除头像", reason, conn);
conn.commit();
}
catch(SQLException se)
{
conn.rollback();
throw se;
}
finally
{
dbManager.closeConnection(conn);
}
}
public void cleanExpiredUsers() throws Exception
{
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE,
(-1)*ForumSetting.getInstance().getInt(ForumSetting.ACCESS, "userExpireDays"));
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd");
String expireDate = dateFormatter.format(cal.getTime());
ArrayList<Object> paramValues = new ArrayList<Object>();
paramValues.add(expireDate);
this.execUpdateSql(adapter.User_CleanExpired, paramValues);
}
private void removeUserPosts(ArrayList<HashMap> userList,
Connection conn) throws SQLException
{
PreparedStatement pstmtUpdate1 = null;
PreparedStatement pstmtUpdate2 = null;
try
{
pstmtUpdate1 = conn.prepareStatement(adapter.Attach_RemoveByUser);
pstmtUpdate2 = conn.prepareStatement(adapter.Topic_RemoveByUser);
String userID = null;
for (int i=0; i<userList.size(); i++)
{
userID = (String)userList.get(i).get("USERID");
pstmtUpdate1.setString(1, userID);
pstmtUpdate1.addBatch();
pstmtUpdate2.setString(1, userID);
pstmtUpdate2.addBatch();
}
pstmtUpdate1.executeBatch();
pstmtUpdate2.executeBatch();
}
finally
{
dbManager.closePStatement(pstmtUpdate1);
dbManager.closePStatement(pstmtUpdate2);
}
}
/**
* Audit new users
* @param
* request - HttpServletRequest
* @return none
* @throws SQLException
* @since 1.0
*/
public void auditUsers(HttpServletRequest request) throws Exception
{
Connection conn = null;
try
{
String[] userIDs = request.getParameterValues("userID");
String[] emails = PageUtils.getParamValues(request,"email");
String[] reasons = PageUtils.getParamValues(request,"remark");
conn = dbManager.getConnection();
for (int i=0; i<userIDs.length; i++)
{
auditUser(request, userIDs[i], emails[i], reasons[i], conn);
}
}
finally
{
dbManager.closeConnection(conn);
}
}
/**
* Audit a user
* @param
* request - HttpServletRequest
* @return none
* @throws SQLException
* @since 1.0
*/
private void auditUser(HttpServletRequest request, String userID,
String email, String reason, Connection conn) throws SQLException
{
String decodedUserID = PageUtils.decodeParam(userID);
String operation = PageUtils.getParam(request, "op_" + userID);
String subject = ForumSetting.getInstance().getForumName();
StringBuilder message = new StringBuilder();
message.append("尊敬的").append(decodedUserID)
.append(",您在").append(subject).append("的新用户申请");
if (operation.equals("no"))
{
ArrayList<Object> paramValues = new ArrayList<Object>();
paramValues.add(decodedUserID);
this.execUpdateSql(adapter.User_Delete, paramValues, conn);
subject = subject + ": 很抱歉,您的注册申请已被拒绝";
message.append("已被拒绝,");
if (reason.trim().length() > 0)
message.append("拒绝的原因是:").append(reason).append("。<br>");
message.append("您可以根据情况重新注册并等待审核。");
message.append(PageUtils.getSysMailFooter(request));
// Add admin log
ActionLogDAO.getInstance().addAdminLog(request, "审核新用户", "否决: " + reason, conn);
// Send notice
AppUtils.sendMail(email,subject,message.toString());
}
else if (operation.equals("yes"))
{
String sql = adapter.User_ModState + " where userID=?";
ArrayList<Object> paramValues = new ArrayList<Object>();
paramValues.add("N");
paramValues.add(decodedUserID);
this.execUpdateSql(sql, paramValues, conn);
subject = subject + ": 您的注册申请已通过审核";
message.append("已通过审核,您现在可以登录论坛并畅所欲言了。");
message.append(PageUtils.getSysMailFooter(request));
// Add admin log
ActionLogDAO.getInstance().addAdminLog(request, "审核新用户", "通过: " + reason, conn);
// Send notice
AppUtils.sendMail(email,subject,message.toString());
}
}
/**
* Modify users' state by query conditions
* @param
* request - HttpServletRequest
* @return none
* @throws SQLException
* @since 1.0
*/
public void modifyStates(HttpServletRequest request) throws Exception
{
Connection conn = null;
PreparedStatement pstmtUpdate = null;
ArrayList<HashMap> userList = null;
try
{
// Update state
String state = PageUtils.getParam(request,"newstate");
ArrayList<Object> paramValues = new ArrayList<Object>();
String whereSql = this.buildSearchWhereSql(request, paramValues);
whereSql = whereSql + " and userID <> ?";
paramValues.add(AppContext.getInstance().getAdminUser());
String sql = adapter.User_ModState;
conn = dbManager.getConnection();
pstmtUpdate = conn.prepareStatement(sql + whereSql);
pstmtUpdate.setString(1, state);
int count = paramValues.size();
for (int i=0; i<count; i++)
{
pstmtUpdate.setObject(i+2, paramValues.get(i));
}
pstmtUpdate.executeUpdate();
// Add admin log
String reason = PageUtils.getParam(request,"reason");
String action = "用户状态";
if (state.charAt(0) == 'N')
action = action + ":恢复正常";
else if (state.charAt(0) == 'P')
action = action + ":禁止发言";
else if (state.charAt(0) == 'S')
action = action + ":禁止访问";
ActionLogDAO.getInstance().addAdminLog(request, action, reason, conn);
String sendnotice = PageUtils.getParam(request,"sendnotice");
if (sendnotice.equals("yes"))
{
String sql2 = "select userID,email from ejf_user" + whereSql;
userList = this.execSelectSql(sql2, paramValues, conn);
}
}
finally
{
dbManager.closePStatement(pstmtUpdate);
dbManager.closeConnection(conn);
}
// Send notice
if (userList != null && userList.size() > 0)
{
this.sendNotice(request, userList);
}
}
private void sendNotice(HttpServletRequest request,
ArrayList<HashMap> userList) throws Exception
{
String subject = PageUtils.getParam(request,"subject");
String message = PageUtils.getParam(request,"message");
String sendby = PageUtils.getParam(request,"sendby");
if (sendby.equals("sms"))
{
HashMap aUserMap = null;
String[] userIDs = new String[userList.size()];
for (int i=0; i<userList.size(); i++)
{
aUserMap = userList.get(i);
userIDs[i] = (String)aUserMap.get("USERID");
}
subject = "[系统消息]" + subject;
String fromUser = null;
UserInfo userinfo = PageUtils.getSessionUser(request);
if (userinfo != null)
{
fromUser = userinfo.userID;
}
ShortMsgDAO.getInstance().addShortMsgs(fromUser, userIDs, subject, message);
}
else if (sendby.equals("email"))
{
HashMap aUserMap = null;
String[] toAddrs = new String[userList.size()];
for (int i=0; i<userList.size(); i++)
{
aUserMap = userList.get(i);
toAddrs[i] = (String)aUserMap.get("EMAIL");
}
AppUtils.sendMail(toAddrs, subject,
message + PageUtils.getSysMailFooter(request));
}
}
/**
* Modify users' credits by query conditions
* @param
* request - HttpServletRequest
* @return none
* @throws SQLException
* @since 1.0
*/
public void modifyCredits(HttpServletRequest request) throws Exception
{
Connection conn = null;
PreparedStatement pstmtUpdate = null;
ArrayList<HashMap> userList = null;
try
{
// Update credits
String credits = PageUtils.getParam(request,"credits");
credits = credits.replace('+', ' ').trim();
ArrayList<Object> paramValues = new ArrayList<Object>();
String whereSql = this.buildSearchWhereSql(request, paramValues);
whereSql = whereSql + " and userID <> ?";
paramValues.add(AppContext.getInstance().getAdminUser());
String sql = "update ejf_user set credits = credits + ?";
conn = dbManager.getConnection();
pstmtUpdate = conn.prepareStatement(sql + whereSql);
pstmtUpdate.setString(1, credits);
int count = paramValues.size();
for (int i=0; i<count; i++)
{
pstmtUpdate.setObject(i+2, paramValues.get(i));
}
pstmtUpdate.executeUpdate();
// Add admin log
String reason = PageUtils.getParam(request,"reason");
if (Integer.parseInt(credits) > 0)
reason = reason + ", 积分+" + credits;
else
reason = reason + ", 积分" + credits;
ActionLogDAO.getInstance().addAdminLog(request, "积分奖惩", reason, conn);
// Send notice
String sendnotice = PageUtils.getParam(request,"sendnotice");
if (sendnotice.equals("yes"))
{
String sql2 = "select userID, email from ejf_user" + whereSql;
userList = this.execSelectSql(sql2, paramValues, conn);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -