您的位置:首页 > 编程语言 > Java开发

java中执行js

2012-06-26 14:41 169 查看
public class CnnicRegistrarServiceImpl implements RegistrarService {

//注入pricePolicyScript 

 @Required

 public void setPricePolicyScript(Resource pricePolicyScript) {

  this.pricePolicyScript = pricePolicyScript;

 }

//p:pricePolicyScript="file:///${web.root}${cnnic.registrarService.pricePolicy}"

//properties文件中的键值对:cnnic.registrarService.pricePolicy = WEB-INF/cnnic/pricePolicy.js

private Resource pricePolicyScript;

//加载bean后执行的方法 ,可心写多个@PostConstruct方法.

@PostConstruct

 public void reloadPricePolicy() throws ScriptException, IOException {

  ScriptEngineManager manager = new ScriptEngineManager();

  ScriptEngine engine = manager.getEngineByName("JavaScript");

  Reader reader = new InputStreamReader(pricePolicyScript.getInputStream(), "UTF-8");

  engine.eval(reader);

  engine.put("registrarId", registrarId);

  scriptEngine = (Invocable) engine;

  registrationPriceCache.clear();

  log.info("[" + registrarId + "] Price policy loaded.");

 }

 

public DomainPrice getDeletionPrice(String suffix, double registrationPrice, double settlementPrice, Date registrationDate, Date expirationDate, int userClass) {

  try {

   DomainPrice price = (DomainPrice) scriptEngine.invokeFunction("getDeletionPrice", suffix, registrationPrice, settlementPrice, registrationDate.getTime(), expirationDate.getTime(), userClass);

   if (price == null) {

    return null;

   } else {

    return price;

   }

  } catch (ScriptException e) {

   log.error("Error in price policy script.", e);

  } catch (NoSuchMethodException e) {

   log.error("Error in price policy script.", e);

  } catch (ClassCastException e) {

   log.error("Error in price policy script.", e);

  }

  return null;

 }

}

***********************************************************************************************************************

importPackage(com.zunmi.domain);

/*

 * 用户级别(userClass)说明:

 * 1: 系统

 * 2: 管理员

 * 3: 普通用户

 * 4: 分销商

 * 5: 战略分销商

 * 6: 高级用户

 * 7: 游客

 */

var basePrices = [0, 0, 0, 100, 45, 35, 50, 50];

var renewDiscounts = [0, 0, 0, 0, 0, 0, 0, 0];

var settlementPrice = 30;

function getRegistrationPriceList(suffix, userClass) {

 if (suffix != ".cn") {

  return null;

 } else {

  var priceList = new Array();

  for (var i = 1; i <= 10; i++) {

   var price = new DomainPrice();

   price.setId(registrarId + "-REG11-" + i + "Y");

   price.setPeriod(i);

   price.setUnit("Y");

   price.setPrice(i * basePrices[userClass]);

   price.setSettlementPrice(i * settlementPrice);

   price.setRemark("CN域名2011年注册价格");

   priceList.push(price);

  }

  return priceList;

 }

}

function getRenewalPriceList(suffix, registrationDate, expirationDate, userClass) {

 if (suffix != ".cn") {

  return null;

 } else {

  var priceList = new Array();

  var maxDate = new Date();

  var expDate = new Date();

  expDate.setTime(expirationDate);

  var maxYears = maxDate.getFullYear() - expDate.getFullYear() + 10;

  for (var i = 1; i <= maxYears; i++) {

   var price = new DomainPrice();

   price.setId(registrarId + "-RENEW11-" + i + "Y");

   price.setPeriod(i);

   price.setUnit("Y");

   price.setPrice(i * basePrices[userClass]);

   price.setSettlementPrice(i * settlementPrice);

   price.setRemark("CN域名2011年续费价格");

   priceList.push(price);

  }

  return priceList;

 }

}

function getDeletionPrice(suffix, regPrice, setPrice, registrationDate, expirationDate, userClass) {

 if (suffix != ".cn") {

  return null;

 } else {

  var price = null;

  var d = new Date();

  switch (userClass) {

  case 1:

   if (expirationDate < d) {

    price = new DomainPrice();

    price.setId(registrarId + "-DEL-EXPIRED");

    price.setPeriod(0);

    price.setUnit("");

    price.setPrice(0.0);

    price.setSettlementPrice(0.0);

    price.setRemark("CN域名过期删除");

   }

   break;

  case 2:

   price = new DomainPrice();

   if (expirationDate < d) {

    // 允许删除已过期域名

    price.setId(registrarId + "-DEL-EXPIRED");

    price.setPeriod(0);

    price.setUnit("");

    price.setPrice(0.0);

    price.setSettlementPrice(0.0);

    price.setRemark("CN域名过期删除");

   } else {

    // 管理员允许删除任意时间的域名

    price = new DomainPrice();

    price.setId(registrarId + "-DEL-A");

    price.setPeriod(0);

    price.setUnit("");

    price.setPrice(-regPrice);

    d.setDate(d.getDate() - 5);

    if (registrationDate > d) {

     price.setSettlementPrice(-setPrice);

     price.setRemark("CN域名管理员删除,100%退费");

    } else {

     price.setSettlementPrice(0.0);

     price.setRemark("CN域名管理员删除");

    }

   }

   break;

  case 4:

  case 5:

   // 分销商和战略分销商

   if (expirationDate < d) {

    // 允许删除已过期域名

    price = new DomainPrice();

    price.setId(registrarId + "-DEL-EXPIRED");

    price.setPeriod(0);

    price.setUnit("");

    price.setPrice(0.0);

    price.setSettlementPrice(0.0);

    price.setRemark("CN域名过期删除");

   } else {

    d.setDate(d.getDate() - 4);

    if (registrationDate > d) {

     // 只允许删除4天内新注册的域名

     price = new DomainPrice();

     price.setId(registrarId + "-DEL-R");

     price.setPeriod(0);

     price.setUnit("");

     price.setPrice(regPrice * -0.9);

     price.setSettlementPrice(-setPrice);

     price.setRemark("CN域名4天内删除扣除90%手续费");

    }

   }

   break;

  case 6:

   // 高级用户

   if (expirationDate < d) {

    // 允许删除已过期域名

    price = new DomainPrice();

    price.setId(registrarId + "-DEL-EXPIRED");

    price.setPeriod(0);

    price.setUnit("");

    price.setPrice(0.0);

    price.setSettlementPrice(0.0);

    price.setRemark("CN域名过期删除");

   } else {

    d.setDate(d.getDate() - 3);

    if (registrationDate > d) {

     // 只允许删除3天内新注册的域名

     price = new DomainPrice();

     price.setId(registrarId + "-DEL-U");

     price.setPeriod(0);

     price.setUnit("");

     price.setPrice(regPrice * -0.9);

     price.setSettlementPrice(-setPrice);

     price.setRemark("CN域名3天内删除扣除90%手续费");

    }

   }

   break;

  default:

   // 普通用户和游客

   if (expirationDate < d) {

    // 允许删除已过期域名

    price = new DomainPrice();

    price.setId(registrarId + "-DEL-EXPIRED");

    price.setPeriod(0);

    price.setUnit("");

    price.setPrice(0.0);

    price.setSettlementPrice(0.0);

    price.setRemark("CN域名过期删除");

   }

  }

  return price;

 }

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息