package com.ycsoft.business.component.resource; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.springframework.stereotype.Component; import com.ycsoft.beans.config.TServerRes; import com.ycsoft.beans.prod.PPackageProd; import com.ycsoft.beans.prod.PProd; import com.ycsoft.beans.prod.PProdTariff; import com.ycsoft.beans.prod.PProdTariffDisct; import com.ycsoft.beans.prod.PProdUserRes; import com.ycsoft.business.commons.abstracts.BaseBusiComponent; import com.ycsoft.business.dao.prod.PDictProdDao; import com.ycsoft.business.dao.prod.PPackageProdDao; import com.ycsoft.business.dao.prod.PProdTariffDisctDao; import com.ycsoft.business.dao.prod.PProdUserResDao; import com.ycsoft.business.dao.prod.TServerResDao; import com.ycsoft.business.dto.core.prod.PProdDto; import com.ycsoft.business.dto.core.prod.ProdDictDto; import com.ycsoft.business.dto.core.prod.ProdResDto; import com.ycsoft.business.dto.core.prod.ProdTariffDto; import com.ycsoft.business.dto.core.prod.ResGroupDto; import com.ycsoft.commons.constants.DataRight; import com.ycsoft.commons.constants.SystemConstants; import com.ycsoft.commons.helper.CollectionHelper; import com.ycsoft.commons.helper.StringHelper; import com.ycsoft.daos.core.JDBCException; /** * @author YC-SOFT * */ @Component public class ProdComponent extends BaseBusiComponent { private PProdTariffDisctDao pProdTariffDisctDao; private PPackageProdDao pPackageProdDao; private PDictProdDao pDictProdDao; private PProdUserResDao pProdUserResDao; private TServerResDao tServerResDao; /** * 判断产品是否按照到期日停机 * @param prod * @param tariff * @return */ public String stopByInvaliddate(PProd prod, PProdTariff tariff) { String stopByInvlaidDate = SystemConstants.BOOLEAN_FALSE; if ( SystemConstants.BOOLEAN_TRUE.equals(prod.getJust_for_once()) || tariff.getBilling_cycle()>1 || (tariff.getBilling_type().equals(SystemConstants.BILLING_TYPE_MONTH) && tariff.getRent() ==0)){ stopByInvlaidDate = SystemConstants.BOOLEAN_TRUE; } return stopByInvlaidDate; } /** * 创建产品目录树 * @param userType * @return * @throws Exception */ public List<ProdDictDto> queryProdTree(String userType) throws Exception { List<ProdDictDto> prodList = pDictProdDao.queryAll(userType, getOptr() .getArea_id()); return prodList; } /** * 创建产品目录树 * @param orderprods * @return */ public List<ProdDictDto> queryProdTree(List<PProd> orderprods) throws Exception { if (orderprods != null && orderprods.size()>0){ String[] prodIds = new String[orderprods.size()]; for (int i = 0;i<orderprods.size();i++){ prodIds[i] = orderprods.get(i).getProd_id(); } Map<String, PProd> prodMap = CollectionHelper.converToMapSingle(orderprods,"prod_id"); List<ProdDictDto> prodList = pDictProdDao.queryProdDict(prodIds, getOptr() .getArea_id(),getOptr().getCounty_id()); for (ProdDictDto p :prodList){ p.setPProd(prodMap.get(p.getNode_id())); //设置产品的ID:自身ID+父节点ID if(p.getPProd() != null){ p.setNode_id(p.getNode_pid()+","+p.getNode_id()); } } return prodList; } return new ArrayList<ProdDictDto>(); } /** * 根据产品id获取产品基本信息 * @param prodId * @return * @throws Exception */ public PProd queryProdById(String prodId) throws Exception{ PProd prod = pProdDao.queryProdById(prodId); return prod; } public PProd queryById(String prodId) throws Exception { return pProdDao.findByKey(prodId); } /** * 根据产品id,获取产品对应的资源信息 * @param prodId * @return * @throws Exception */ public List<ProdResDto> queryProdRes(String prodId) throws Exception{ List<ProdResDto> prodResList = new ArrayList<ProdResDto>(); Map<String,ProdResDto> prodResMap = new HashMap<String,ProdResDto>(); //查找产品的基本信息 PProd prod = pProdDao.findByKey(prodId); //判断产品是否为套餐,如果为套餐,查询子产品,并遍历子产品,查找子产品对应的资源信息 //如果不是套餐,则直接查找产品对应的资源信息 if(null != prod){ if (prod.isPkg()){ //查找套餐对应的自产品 // List<PPackageProd> pkgProdList = queryPackageProd(prod.getProd_id()); // for(PPackageProd p:pkgProdList){ // ProdResDto prodResDto = this.queryProdRes(p.getProd()); // if(null==prodResMap.get(prodResDto.getProd_id())){ // prodResMap.put(prodResDto.getProd_id(), prodResDto); // } // } } else { prodResList.add(this.queryProdRes(prod)); } } Iterator<String> iterator = prodResMap.keySet().iterator(); while(iterator.hasNext()){ prodResList.add(prodResMap.get(iterator.next())); } return prodResList; } /** * 根据产品id获取产品对应的有效资费 * 设置每个资费对应的业务规则和折扣信息 * @param prodId * @return * @throws Exception */ public List<ProdTariffDto> queryTariffByProd(String prodId) throws Exception{ String dataRight = this.queryDataRightCon(getOptr(), DataRight.TARIFF.toString()); List<ProdTariffDto> tariffList = pProdTariffDao.queryProdTariff(prodId,getOptr().getCounty_id(),dataRight); return tariffList; } /** * 操作员是否有修改资费生效日期权限 * @return * @throws Exception */ public String queryChangeTariffRole() throws Exception { return this.queryDataRightCon(getOptr(), DataRight.CHANGE_TARIFF.toString()); } /** * 根据产品id获取产品对应的有效资费和折扣 * 设置每个资费对应的业务规则和折扣信息 * @param prodId * @return * @throws Exception */ public List<PProdDto> queryTariffByProdDisct(String prodId) throws Exception{ String dataRight = this.queryDataRightCon(getOptr(), DataRight.TARIFF.toString()); return pProdTariffDao.queryProdTariffDisct(prodId,getOptr().getCounty_id(),dataRight); } /** * 根据资费id获取资费的基本信息 * @param tariffId * @return * @throws Exception */ public PProdTariff queryTariffById(String tariffId) throws Exception{ return pProdTariffDao.findByKey(tariffId); } /** * 查询VOD按次点播资费 * @return */ public PProdTariff queryVodProdTariff() throws Exception{ return pProdTariffDao.queryVodProdTariff(getOptr().getCounty_id()); } /** * 查询产品信息 * @param prodSn * @return */ public PProd queryProdByProdSn(String prodSn) throws JDBCException { return pProdDao.queryProdByProdSn(prodSn); } /** * 根据资费id获取资费的基本信息 * @param tariffId * @return * @throws Exception */ public PProdTariffDisct queryDisctById(String disctId) throws Exception{ return pProdTariffDisctDao.findByKey(disctId); } /** * 根据产品id,获取基本产品对应的资源信息 * @param prodId * @return * @throws Exception */ private ProdResDto queryProdRes(PProd prod ) throws Exception{ ProdResDto prodRes = new ProdResDto(); prodRes.setProd_id(prod.getProd_id()); prodRes.setProd_name(prod.getProd_name()); //查找产品对应的静态资源信息 prodRes.setStaticResList(pProdDao.queryProdStaticRes(getOptr().getCounty_id(),prod.getProd_id())); prodRes.setDynamicResList(pProdDao.queryResGroup(prod.getProd_id())); if (prodRes.getDynamicResList() != null && prodRes.getDynamicResList().size()>0){ for (ResGroupDto resGroup:prodRes.getDynamicResList()){ resGroup.setResList(pProdDao.queryResByGroupId(resGroup.getGroup_id())); } } return prodRes; } /** * 根据套餐编号获取对应的子产品信息 * @param pkgId * @return * @throws Exception */ public List<PPackageProd> queryPackageProd(String pkgId) throws Exception{ PPackageProd pkgProd = new PPackageProd(); pkgProd.setPackage_id(pkgId); //pkgProd.setType(SystemConstants.PACKAGE_MARKET_TYPE); List<PPackageProd> pkgProdList= pPackageProdDao.findByEntity(pkgProd); // // String[] prodIds = CollectionHelper.converValueToArray(pkgProdList, "prod_id"); // Map<String, PProd> prodMap = null; // if(null!=prodIds && prodIds.length>0){ // prodMap = CollectionHelper.converToMapSingle( // pProdDao.findByProdIds(prodIds), "prod_id"); // } // String[] prodTariffIds = CollectionHelper.converValueToArray(pkgProdList, "tariff_id"); // Map<String, PProdTariff> tariffMap = CollectionHelper // .converToMapSingle(pProdTariffDao // .queryPTariffByIds(prodTariffIds), // "tariff_id"); // // for(PPackageProd pkg:pkgProdList){ // pkg.setProd(prodMap.get(pkg.getProd_id())); // if (StringHelper.isNotEmpty(pkg.getTariff_id())) // pkg.setProdTariff(tariffMap.get(pkg.getTariff_id())); // } return pkgProdList; } /** * 根据套餐编号,资费 获取对应的子产品信息 * @param pkgId * @return * @throws Exception */ public List<PPackageProd> queryPackageProd(String pkgId,String tariffId) throws Exception{ List<PPackageProd> pkgProdList= pPackageProdDao.getMarketPackProdById(pkgId, tariffId); // String[] prodIds = CollectionHelper.converValueToArray(pkgProdList, "prod_id"); // Map<String, PProd> prodMap = null; // if(null!=prodIds && prodIds.length>0){ // prodMap = CollectionHelper.converToMapSingle( // pProdDao.findByProdIds(prodIds), "prod_id"); // } // String[] prodTariffIds = CollectionHelper.converValueToArray(pkgProdList, "tariff_id"); // Map<String, PProdTariff> tariffMap = CollectionHelper // .converToMapSingle(pProdTariffDao // .queryPTariffByIds(prodTariffIds), // "tariff_id"); // // for(PPackageProd pkg:pkgProdList){ // pkg.setProd(prodMap.get(pkg.getProd_id())); // if (StringHelper.isNotEmpty(pkg.getTariff_id())) // pkg.setProdTariff(tariffMap.get(pkg.getTariff_id())); // } return pkgProdList; } public void setPProdTariffDisctDao(PProdTariffDisctDao prodTariffDisctDao) { pProdTariffDisctDao = prodTariffDisctDao; } /** * @param packageProdDao the pPackageProdDao to set */ public void setPPackageProdDao(PPackageProdDao packageProdDao) { pPackageProdDao = packageProdDao; } /** * @param dictProdDao the pDictProdDao to set */ public void setPDictProdDao(PDictProdDao dictProdDao) { pDictProdDao = dictProdDao; } /** * 查询产品的子产品 * @param prodId * @return */ public List<PProd> querSubProds(String prodId) throws JDBCException { return pProdDao.querySubProds(prodId); } /** * 获取产品用户特殊资源 */ public List<PProdUserRes> queryUserResByCountyId () throws Exception{ return pProdUserResDao.queryByCountyId(getOptr().getCounty_id()); } public void setPProdUserResDao(PProdUserResDao prodUserResDao) { pProdUserResDao = prodUserResDao; } //中兴宽带资源 public List<TServerRes> queryZteBandRes() throws Exception { return tServerResDao.queryBandRes(SystemConstants.BAND_ZX_SREVER_ID); } public void setTServerResDao(TServerResDao serverResDao) { tServerResDao = serverResDao; } }