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

📄 clearmonthsubthread.java

📁 WAP PUSH后台源码,WAP PUSH后台源码
💻 JAVA
字号:
package com.sxit.wap.threads;

import java.sql.*;
import java.util.*;
import com.sxit.wap.channel.*;
import com.sxit.wap.channelfee.*;
import com.sxit.wap.sms.*;

/********************************
 这个程序是用来清除包月的定制记录
 一个月运行一次,而且在月初的时候运行
 ******************************/
public class ClearMonthSubThread
    extends Thread {
  private int index;
  private static int i = 0;
  public ClearMonthSubThread() {
    index = i++;
  }

  public void run() {
    System.out.println("清除包月定制线程 :" + index);
    String sql = "";
    try {
      String curr = DateUtil.getDateSql(Database.dbType, DateUtil.getCurrTime());
      System.out.println(curr);
      if (getClearSubType() == 1) { //如果继定的话,那把结束时间调到下个月初

        Timestamp nextMonthFirstDay = DateUtil.getNextMonthFirstDay();
        String str = DateUtil.getDateSql(Database.dbType, nextMonthFirstDay);

        sql = "DELETE FROM WAP_USER_SUB WHERE CHANNEL_ID IN (SELECT ID FROM WAP_CHANNEL WHERE CHANNEL_STATUS = 9)";
        //删除那些频道已经被删除的定制;
        Database.updateBySql(sql);
        System.out.println("clear sub which the channel is deleted");

        sql = "DELETE FROM WAP_USER_SUB WHERE USER_MDN IN (SELECT MDN FROM USER_CHECK WHERE SUBSTATUS = '91003' OR SUBSTATUS = '91004')";    //清除所有销户用户的定制信息
        Database.updateBySql(sql);
        System.out.println("check user is finishd");

        sql = "SELECT u.USER_MDN,u.CHANNEL_ID,u.FEE_TYPE,u.FEE_CODE FROM WAP_USER_SUB u, wap_channel c WHERE u.IS_CANCEL=0 AND u.FEE_TYPE =3 AND u.channel_id=c.id AND c.channel_status=1 AND u.END_DATE <= TO_DATE('" + DateUtil.getYYYYMM(DateUtil.getCurrTime()) + "-01','YYYY-MM-DD')";
        Collection coll = Database.queryBySql(sql);
        Iterator it = coll.iterator();
        while (it.hasNext()) {
          UserSubModel user = (UserSubModel) it.next();
         //获取频道的最新费率
          int feeNow = ChannelFeeBean.getFeeCode(user.getChannelId(),
                                                 user.getFeeType());

          //写进定制表,以便产生话单
          sql = "INSERT INTO WAP_USER_SUB_HIS VALUES('" + user.getUserMdn() +
              "'," + user.getChannelId() + "," + curr + "," + user.getFeeType() +
              "," + feeNow + ", '0', '2')";
          System.out.println(sql);
          Database.updateBySql(sql);

          //更新包月用户的定制记录的费率
          sql = "UPDATE WAP_USER_SUB SET END_DATE = " + str + ",fee_code=" +
              feeNow + " WHERE user_mdn='" + user.getUserMdn() +
              "' and channel_id=" + user.getChannelId() + " AND FEE_TYPE = 3";
          System.out.println(sql);
          Database.updateBySql(sql);

          /*
           短信通知
          ChannelModel channel = ChannelDao.findByPK(user.getChannelId());
          String msg = new String("你所订制的".getBytes(), "GB2312");
          msg = msg + channel.getChannelName();
          msg = msg + new String("已经成功续定,有效期至".getBytes(), "GB2312");
          msg = msg +
              new String(DateUtil.getYYYYMMDDHHMISS(nextMonthFirstDay).getBytes(),
                         "GB2312");
          System.out.println(444);
          smsInterface sms = new smsInterface();
          if (sms.sendMessageByDate(user.getUserMdn(), msg, 10)) {
            System.out.println("短信发送成功");
          }
          else {
            System.out.println("短信发送失败");
          }
         */
        }

        //删除不续定用户的记录
        sql = "DELETE FROM WAP_USER_SUB WHERE IS_CANCEL = 1 AND FEE_TYPE = 3 AND END_DATE <= TO_DATE('"+ DateUtil.getYYYYMM(DateUtil.getCurrTime()) + "-01','YYYY-MM-DD')";
        System.out.println(sql);
        Database.updateBySql(sql);
      }
      else { //如果不继定的话,就删除
        sql = "DELETE FROM WAP_USER_SUB WHERE END_DATE <= " + curr +
            " AND FEE_TYPE = 3";
        System.out.println(DateUtil.getCurrTime() + ">>>>>" + sql);
        Database.updateBySql(sql);
        System.out.println(666);
      }
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }

  public int getClearSubType() throws Exception {
    Connection dbConnection = null;
    Statement stmt = null;
    ResultSet rs = null;
    int rowCount = 0;
    String sql = "SELECT CLEAR_SUB_TYPE FROM WAP_SYSTEM_PARAM";
    try {
      dbConnection = Database.getConnection();
      stmt = dbConnection.createStatement();
      rs = stmt.executeQuery(sql);
      if (rs.next()) {
        rowCount = rs.getInt(1);
      }
      else {
        throw new Exception("ERROR in get row count!!");
      }
      return rowCount;
    }
    catch (SQLException e) {
      throw new Exception(
          "SQLException while execute getRowCountBySql mothod :\n" + e);
    }
    finally {
      Database.closeResultSet(rs);
      Database.closeStatement(stmt);
      Database.closeConnection(dbConnection);
    }
  }

  public static void main(String[] args) {
    ClearMonthSubThread clearMonthSubThread = new ClearMonthSubThread();
    clearMonthSubThread.start();
  }
}

⌨️ 快捷键说明

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