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

📄 forumschedulerunit.java~19~

📁 源码/软件简介: 云网论坛1.1RC国际版是采用JSP开发的集论坛、CMS(网站内容管理系统)、博客、聊天室、商城、交友、语音灌水等于一体的门户式社区。拥有CWBBS ( Cloud Web BBS
💻 JAVA~19~
字号:
package com.redmoon.forum;

import cn.js.fan.kernal.BaseSchedulerUnit;
import cn.js.fan.util.ErrMsgException;
import cn.js.fan.db.Conn;
import cn.js.fan.web.Global;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.log4j.Logger;
import java.util.Date;
import java.sql.PreparedStatement;
import com.redmoon.forum.message.MessageDb;


/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2005</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class ForumSchedulerUnit extends BaseSchedulerUnit {
    static Logger logger = Logger.getLogger(ForumSchedulerUnit.class.getName());

    static int refreshOnlineInterval = 5; // 5分钟
    static long lastRefreshOnlineIntervalTime;

    static long lastClearUserMessageInerval = System.currentTimeMillis();
    static long clearUserMessageInterval = 24 * 60 * 60 * 1000; // 每隔24小时清除用户超出容量的短信息
    static int message_expire_day = 150; // 天

    static {
        Config cfg = new Config();
        refreshOnlineInterval = cfg.getIntProperty("forum.refreshOnlineInterval");
        message_expire_day = cfg.getIntProperty("forum.message_expire_day");
        clearUserMessageInterval = cfg.getIntProperty("interval_clear_message") * 60 * 60 * 1000;
        name = "论坛调度器";
    }

    public ForumSchedulerUnit() {
        lastTime = System.currentTimeMillis();
        interval = 600000; // 每隔10分钟刷新一次
        lastRefreshOnlineIntervalTime = System.currentTimeMillis();
        lastClearUserMessageInerval = System.currentTimeMillis();
    }

    /**
     * OnTimer
     *
     * @param currentTime long
     * @todo Implement this cn.js.fan.kernal.ISchedulerUnit method
     */
    public void OnTimer(long curTime) {
        // logger.info("curTime=" + curTime);
        if (curTime-lastTime>=interval) {
            action();
            lastTime = curTime;
        }
        if (curTime-lastRefreshOnlineIntervalTime>=refreshOnlineInterval) {
            OnlineUserDb oud = new OnlineUserDb();
            oud.refreshOnlineUser();
            lastRefreshOnlineIntervalTime = curTime;
        }

        if (curTime - lastClearUserMessageInerval >= clearUserMessageInterval) {
            clearMessageExpired(message_expire_day);
            lastClearUserMessageInerval = curTime;
        }
    }

    public void clearMessageExpired(int expireDay) {
        MessageDb md = new MessageDb();
        md.clearMessageExpired(expireDay);
    }

    public synchronized void action() {
        refreshColor();
        refreshBold();
    }

    public void refreshBold() {
        MsgDb md = new MsgDb();
        String sql = "select id from sq_message where isBold=1 and boldExpire<?";
        // 如果加粗显示已到期
        Conn conn = new Conn(Global.defaultDB);
        ResultSet rs = null;
        try {
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1, "" + System.currentTimeMillis());
            rs = conn.executePreQuery();
            while (rs.next()) {
                int id = rs.getInt(1);
                // logger.info("msgRootId=" + msgRootId);
                md = md.getMsgDb(id);
                try {
                    md.ChangeBold(id, 0, new Date());
                } catch (ErrMsgException e) {
                    logger.error("action:" + e.getMessage());
                }
            }
        } catch (SQLException e) {
            logger.error("refreshBold:" + e.getMessage());
        } finally {
            if (conn != null) {
                conn.close();
                conn = null;
            }
        }
    }

    public void refreshColor() {
        MsgDb md = new MsgDb();
        String sql = "select id from sq_message where color<>'' and colorExpire<?";
        // 如果颜色值已到期
        Conn conn = new Conn(Global.defaultDB);
        ResultSet rs = null;
        try {
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1, "" + System.currentTimeMillis());
            rs = conn.executePreQuery();
            // logger.info("rs=" + rs);
            while (rs.next()) {
                int id = rs.getInt(1);
                // logger.info("msgRootId=" + msgRootId);
                md = md.getMsgDb(id);
                try {
                    md.ChangeColor(id, "", new Date());
                } catch (ErrMsgException e) {
                    logger.error("refreshColor:" + e.getMessage());
                }
            }
        } catch (SQLException e) {
            logger.error("refreshColor1:" + e.getMessage());
        } finally {
            if (conn != null) {
                conn.close();
                conn = null;
            }
        }
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -