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

📄 userdao.java

📁 EasyJForum 是一个基于 Java 技术的免费社区论坛软件系统
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
            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 + -