www.pudn.com > WSMS.rar > ServiceMgr.java


//Source file: D:\\WORK\\1G项目实践\\WSMS\\CI\\CODE\\src\\com\\intacpurun\\wsms\\srvclogic\\ServiceMgr.java 
 
package com.intacpurun.wsms.srvclogic; 
 
import java.sql.*; 
import java.util.*; 
 
import com.intacpurun.wsms.comm.*; 
import com.intacpurun.wsms.comm.db.*; 
import com.intacpurun.wsms.comm.vo.*; 
 
/** 
 * 短信业务管理 
 */ 
public class ServiceMgr 
{ 
 
  /** 
   * @roseuid 44D017A400AB 
   */ 
  public ServiceMgr() 
  { 
 
  } 
 
  /** 
   * 获得短信业务信息 
   * @param serviceId 
   * @return com.intacpurun.wsms.comm.vo.ServiceVo 
   * @roseuid 44CEAF8703C8 
   */ 
  public static ServiceVo getServiceInfo(int serviceId) 
  { 
 
    String sql = "select serviceid,name,priceinfo,servicedesc,freqdesc,example " + 
                 "from serviceinfo " + 
                 "where serviceid = " + serviceId; 
 
    ServiceVo serviceVo = new ServiceVo(); 
 
    DbUtil db = DbUtil.open(); 
    ResultSet rs = db.executeQuery(sql); 
 
    try 
    { 
      if (rs.next()) 
      { 
        serviceVo.setServiceId(rs.getInt("serviceid")); 
        serviceVo.setName(rs.getString("name")); 
        serviceVo.setPriceInfo(rs.getString("priceinfo")); 
        serviceVo.setDesc(rs.getString("servicedesc")); 
        serviceVo.setFreqDesc(rs.getString("freqdesc")); 
        serviceVo.setExample(rs.getString("example")); 
      } 
    } catch (Exception ex) 
    { 
      System.out.println(ex); 
      ex.printStackTrace(); 
    } finally 
    { 
      db.close(); 
    } 
 
    return serviceVo; 
  } 
 
  /** 
   * 获得定购确认码 
   * @return String 
   * @roseuid 44CEB78701B5 
   */ 
  public static String getConfirmCode() 
  { 
    Random rand = new Random(); 
    int temp = rand.nextInt(100000); 
 
    return String.valueOf(temp); 
  } 
 
  /** 
   * 生成用户定购关系,判断定购业务是否为天气预报,对对象进行塑形 
   * @param addProvisionVo 
   * @return boolean 
   * @roseuid 44CEBCFB002E 
   */ 
  public static boolean provision(AddProvisionVo addProvisionVo) 
  { 
    boolean isSuccess = false; 
    /*** 天气预报业务判断处理开始 ***/ 
    AddForecastProvisionVo addForecastProvisionVo; 
 
    int serviceId = addProvisionVo.getServiceId(); 
    if (serviceId == Constants.SERVICE_WEATHER_FORECAST_ID) 
    { 
      //天气预报业务订购处理 
      addForecastProvisionVo = (AddForecastProvisionVo) addProvisionVo; 
      isSuccess = provisionForecast(addForecastProvisionVo); 
    } else 
    { 
      //普通业务订购处理 
      String sql = 
          "insert into provision(" + 
          "provisionid,serviceid,usermsisdn,provisiontime) " + 
          "values(s_provisionid.nextval," + addProvisionVo.getServiceId() + 
          ",'" + addProvisionVo.getUserMsisdn() + "',sysdate)"; 
 
      DbUtil db = DbUtil.open(); 
      int insertRet = db.executeUpdate(sql); 
      if (insertRet >= 0) 
        isSuccess = true; 
      else 
        isSuccess = false; 
 
      db.close(); 
    } 
 
    return isSuccess; 
  } 
 
  /** 
   * 生成天气预报业务订购关系 
   * @param addForecastProvisionVo AddForecastProvisionVo 
   * @return boolean 
   */ 
  private static boolean provisionForecast(AddForecastProvisionVo 
                                           addForecastProvisionVo) 
  { 
    boolean isSuccess = false; 
    //获得订购标识 
    int provisionId = getProvisionId(); 
    if (provisionId <= 0) 
    { 
      System.out.println("error happend  when getting provision ID from database!"); 
      System.out.println("provision defeated!"); 
      return false; 
    } 
 
    String provisionSql = 
        "insert into provision(" + 
        "provisionid,serviceid,usermsisdn,provisiontime) " + 
        "values(" + provisionId + "," + addForecastProvisionVo.getServiceId() + 
        ",'" + addForecastProvisionVo.getUserMsisdn() + "',sysdate)"; 
 
    String addCitySql = 
        "insert into forecastcity(provisionid,cityid) " + 
        "values(" + provisionId + ",'" + 
        addForecastProvisionVo.getCityId() + "')"; 
 
    DbUtil db1 = DbUtil.open(); 
    DbUtil db2 = DbUtil.open(); 
 
//    db1.setAutoCommitFalse(); 
//    db2.setAutoCommitFalse(); 
 
    int ret1 = db1.executeUpdate(provisionSql); 
    int ret2 = db2.executeUpdate(addCitySql); 
 
    if ((ret1 != -1) && (ret2 != -1)) 
    { 
//      db1.commit(); 
//      db2.commit(); 
 
      isSuccess = true; 
    } else 
      return false; 
//    } else 
//    { 
//      db1.rollBack(); 
//      db2.rollBack(); 
 
//      isSuccess = false; 
//    } 
 
    db1.close(); 
    db2.close(); 
 
    return isSuccess; 
  } 
 
  /** 
   * 判断用户手否已经订购该业务 
   * @param msisdn String 用户电话号码 
   * @param serviceId String 用户订购业务的编号 
   * @return boolean 
   */ 
  public static boolean isProvision(String msisdn,String serviceId) 
  { 
    boolean isProvision = false; 
 
    String sql = 
      "select count(1) " + 
      "from provision "+ 
      "where serviceid =" + serviceId + " "+ 
      "and usermsisdn ='"+ msisdn +"'"; 
 
    DbUtil db = DbUtil.open(); 
 
    ResultSet  rs = db.executeQuery(sql); 
 
    try 
    { 
      if (rs.next()) 
      { 
        int count = rs.getInt(1); 
        if (count > 0) 
        { 
          isProvision = true; 
        } else 
        { 
          isProvision = false; 
        } 
      }//end if rs.next 
    } catch (Exception ex) 
    { 
      System.out.println(ex); 
      ex.printStackTrace(); 
    }finally 
    { 
      db.close(); 
    } 
 
    return isProvision; 
  } 
 
  /** 
   * 获得订购编号,当取值出错时,返回-1 
   * @return int 
   */ 
  private static int getProvisionId() 
  { 
    int provisionId = 0; 
    String sql = "select s_provisionid.nextval from dual"; 
 
    DbUtil db = DbUtil.open(); 
    ResultSet rs = db.executeQuery(sql); 
 
    try 
    { 
      if (rs.next()) 
      { 
        provisionId = rs.getInt(1); 
      } 
    } catch (Exception e) 
    { 
      System.out.println(e); 
      e.printStackTrace(); 
 
      provisionId = -1; 
    } finally 
    { 
      db.close(); 
    } 
 
    return provisionId; 
  } 
}