/** * */ package com.ycsoft.business.component.core; import java.util.List; import org.springframework.stereotype.Component; import com.ycsoft.beans.core.promotion.CPromotion; import com.ycsoft.beans.core.promotion.CPromotionAcct; import com.ycsoft.beans.core.promotion.CPromotionCard; import com.ycsoft.beans.core.promotion.CPromotionChange; import com.ycsoft.beans.core.promotion.CPromotionGift; import com.ycsoft.beans.core.promotion.CPromotionHis; import com.ycsoft.beans.prod.PPromotionAcct; import com.ycsoft.beans.prod.PPromotionCard; import com.ycsoft.beans.prod.PPromotionGift; import com.ycsoft.business.commons.abstracts.BaseBusiComponent; import com.ycsoft.business.dao.core.promotion.CPromotionAcctDao; import com.ycsoft.business.dao.core.promotion.CPromotionCardDao; import com.ycsoft.business.dao.core.promotion.CPromotionDao; import com.ycsoft.business.dao.core.promotion.CPromotionGiftDao; import com.ycsoft.business.dao.core.promotion.CPromotionHisDao; import com.ycsoft.business.dao.prod.PPromotionDao; import com.ycsoft.business.dto.core.prod.CProdDto; import com.ycsoft.business.dto.core.prod.CPromotionAcctDto; import com.ycsoft.business.dto.core.prod.PromotionDto; import com.ycsoft.commons.constants.StatusConstants; import com.ycsoft.commons.constants.SystemConstants; import com.ycsoft.commons.exception.ComponentException; import com.ycsoft.commons.helper.DateHelper; import com.ycsoft.commons.helper.StringHelper; /** * @author YC-SOFT * */ @Component public class UserPromComponent extends BaseBusiComponent { private CPromotionDao cPromotionDao; private CPromotionAcctDao cPromotionAcctDao; private CPromotionCardDao cPromotionCardDao; private CPromotionGiftDao cPromotionGiftDao; private PPromotionDao pPromotionDao; private CPromotionHisDao cPromotionHisDao; /** * 查找变更促销异动 * @param promotionSn * @return * @throws Exception */ public CPromotionChange queryPromotionChange(String promotionSn) throws Exception{ return cPromotionDao.queryPromotionChangeHis(promotionSn); } /** * 查询促销历史 * @param promotionSn * @return * @throws Exception */ public CPromotionHis queryPromotionHis(String promotionSn) throws Exception{ return cPromotionHisDao.queryBySn(promotionSn); } /** * 保存变更促销异动 * @param change * @throws Exception */ public void savePromotionChange(CPromotionChange change)throws Exception{ cPromotionDao.savePromotionChange(change); } public String addPromotion(String changeCreateSn,String custId,String userId,String acctId,String promotionId,Integer doneCode,int times,List<PPromotionAcct> acctList) throws Exception{ //获取促销信息 PromotionDto promotion = pPromotionDao.findByKey(promotionId); //保存促销信息 String sn = gPromotionSn(); CPromotion cp = new CPromotion(); cp.setPromotion_sn(sn); cp.setPromotion_id(promotion.getPromotion_id()); cp.setCust_id(custId); cp.setUser_id(userId); cp.setStatus(StatusConstants.ACTIVE); cp.setDone_code(doneCode); cp.setCreate_time(DateHelper.now()); cp.setTimes(times/10); cp.setPromotion_create_sn(StringHelper.isNotEmpty(changeCreateSn)?changeCreateSn:sn); setBaseInfo(cp); cPromotionDao.save(cp); if (acctList != null){ for (PPromotionAcct acct:acctList){ CPromotionAcct cpAcct = new CPromotionAcct(); cpAcct.setPromotion_sn(sn); //宽带自动匹配的情况 if(acct.getAcctitem_id().equals(SystemConstants.PROD_SERV_ID_BAND)){ List<CProdDto> list=cProdDao.queryAllProdAcct(custId,this.getOptr().getCounty_id()); boolean existsBand=false; for(CProdDto cprod:list){ if(cprod.getServ_id().equals(SystemConstants.PROD_SERV_ID_BAND)){ acct.setAcct_id(cprod.getAcct_id()); acct.setAcctitem_id(cprod.getProd_id()); acct.setTariff_id(cprod.getTariff_id()); if(cprod.getTariff_rent()>0){ acct.setPresent_type(SystemConstants.PRESENT_TYPE_FEE); acct.setFee( Math.round(acct.getPresent_month()*cprod.getTariff_rent()*1.0F/cprod.getBilling_cycle())); acct.setActive_amount(cprod.getTariff_rent()); acct.setCycle(cprod.getBilling_cycle()); } existsBand=true; break; } } if(!existsBand){ throw new ComponentException("错误:无宽带用户或者宽带用户未订产品."); } }else{ acct.setAcct_id(acctId); } cpAcct.setAcct_id(acct.getAcct_id()); cpAcct.setAcctitem_id(acct.getAcctitem_id()); if(acct.getRepetition_times()*10 > times){ cpAcct.setFee(acct.getFee()*times/10); cpAcct.setMonths(acct.getPresent_month()*times/10); }else{ cpAcct.setFee(acct.getFee()*acct.getRepetition_times()); cpAcct.setMonths(acct.getPresent_month()*acct.getRepetition_times()); } setBaseInfo(cpAcct); cPromotionAcctDao.save(cpAcct); } } if (promotion.getCardList() != null){ for (PPromotionCard card:promotion.getCardList()){ CPromotionCard cpCard = new CPromotionCard(); cpCard.setPromotion_sn(sn); cpCard.setCard_type(card.getCard_type()); cpCard.setCard_value(card.getCard_value()); setBaseInfo(cpCard); cPromotionCardDao.save(cpCard); } } if (promotion.getGiftList() != null){ for (PPromotionGift gift:promotion.getGiftList()){ CPromotionGift cpGift = new CPromotionGift(); cpGift.setPromotion_sn(sn); cpGift.setGift_type(gift.getGift_type()); cpGift.setAmount(gift.getAmount()); cpGift.setMoney(gift.getMoney()); setBaseInfo(cpGift); cPromotionGiftDao.save(cpGift); } } return sn; } public CPromotion queryBySn(String promotionSn) throws Exception{ return cPromotionDao.findByKey(promotionSn); } public List<CPromotionAcct> queryAcctBySn(String promotionSn) throws Exception{ return cPromotionAcctDao.queryBySn(promotionSn); } public List<CPromotionAcctDto> queryPromotionProdBySn(String promotionSn,String promotionId) throws Exception { return cPromotionAcctDao.queryPromotionProdBySn(promotionSn,promotionId); } /** * @param promotion_sn */ public void removeBySn(Integer doneCode,String promotionSn) throws Exception { cPromotionDao.removePromotionWithHis(promotionSn,doneCode); cPromotionAcctDao.removePromotionAcctWithHis(promotionSn,doneCode); cPromotionCardDao.removeBySn(promotionSn); cPromotionGiftDao.removeBySn(promotionSn); } public CPromotion queryByDoneCode(Integer doneCode) throws Exception{ return cPromotionDao.queryByDoneCode(doneCode); } private String gPromotionSn() throws Exception{ return cPromotionDao.findSequence().toString(); } public void setCPromotionDao(CPromotionDao promotionDao) { cPromotionDao = promotionDao; } public void setCPromotionAcctDao(CPromotionAcctDao promotionAcctDao) { cPromotionAcctDao = promotionAcctDao; } public void setCPromotionCardDao(CPromotionCardDao promotionCardDao) { cPromotionCardDao = promotionCardDao; } public void setCPromotionGiftDao(CPromotionGiftDao promotionGiftDao) { cPromotionGiftDao = promotionGiftDao; } public void setPPromotionDao(PPromotionDao promotionDao) { pPromotionDao = promotionDao; } public void setCPromotionHisDao(CPromotionHisDao promotionHisDao) { cPromotionHisDao = promotionHisDao; } }