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

📄 rmrecommandproductservice.java

📁 电信的网厅的整站代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/**
 * @author chenjq
 */
package com.doone.fj1w.fjmgr.sysmgr;

import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.*;

import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import com.doone.data.DacClient;
import com.doone.data.DataRow;
import com.doone.data.DataTable;
import com.doone.util.ExtString;
import com.doone.util.FileLogger;

public class RMRecommandProductService {

	
	private FileLogger log = new FileLogger();
	private RMRecommandInterface rmrDAO;//接口
	private DacClient dacClient=new DacClient();//DacClient对象


	private int top=3;//推荐产品数目
	private int show_count=0;
	
	/**
	 * 构造函数
	 * @param request
	 */
	public RMRecommandProductService(){
		rmrDAO=new RMRecommandDAO(dacClient);	
	}

	
	/**
	 * 1-特别推荐,2-其他推荐
	 * @param request ServletRequest对象
	 * @param response ServletResponse对象
	 * @param map 条件参数
	 * @return 返回"特别推荐(?) 其他推荐(?)"的字符串
	 */
	public String getRecommandProductMethod(ServletRequest request,ServletResponse response,Map map){
	
		StringBuffer sb=new StringBuffer();
		sb.append("<table><tr><td style='cursor: default;'>");
		//获取前端要显示的条数
		int total=0;
		try {
			total = rmrDAO.getRecommandProductCount(map);
		} catch (SQLException e) {
			log.error(e.getMessage());
		}
		int others=0;
		if (total==0){
			sb.append("&nbsp;&nbsp;<font color='red'>没有符合以上条件的查询记录结果。</font>");
		}
		else if (total>top){
			others=total-top;
			sb.append("&nbsp;&nbsp;<a href='javascript:' ")
			  .append(" onclick='fnStateClick(this)' ")
			  .append(" name='ACTION' ")
			  .append(" value='special' ")
			  .append(" style='color: white;'>")
			  .append(" 特别推荐(").append(top).append(")</a>");
			sb.append("<a href='javascript:' ")
			  .append(" onclick='fnStateClick(this)' ")
			  .append(" name='ACTION' ")
			  .append(" value='others' ")
			  .append(" style='color: white;'>")
			  .append(" &nbsp;&nbsp;其他推荐(").append(others).append(")</a>");
		}
		
		else{
			top=total;
			others=0;
			sb.append("&nbsp;&nbsp;<a href='javascript:' ")
			  .append(" onclick='fnStateClick(this)' ")
			  .append(" name='ACTION' ")
			  .append(" value='special' ")
			  .append(" style='color: white;'>")
			  .append(" 特别推荐(").append(top).append(")</a>");
			sb.append(" &nbsp;&nbsp;其他推荐(").append(0).append(")");
		}
		
		sb.append("</td></tr></table>");
		return sb.toString();
	}
	
	/**
	 * 分类方式的行(表格的行数)
	 * @param request ServletRequest对象
	 * @param response ServletResponse对象
	 * @param map 条件参数
	 * @return
	 */
	public int getRecommandProductMethodCount(ServletRequest request,
			   								  ServletResponse response, 
			   								  Map map){
		return 1;
	}
	
	
	/**
	 * 隐藏过长的字符串
	 * @param target 目标字符串
	 * @param length 显示的长度
	 * @return
	 */
	private String cutString(String target,int length){
		if(target.length()<=length){
			return target;
		}else{
			return target.substring(0,length)+"......";
		}
	}
	
	/**
	 * 获取推荐产品列表的数据
	 * @param request ServletRequest对象
	 * @param response ServletResponse对象
	 * @param map 条件参数
	 * @return 列表字符串
	 */
	public String getRecommandProductList(ServletRequest request,
				 						  ServletResponse response, 
				 						  Map map){
		DataTable dt=null;
		try {
			dt = rmrDAO.getRecommandProductList(map);
		} catch (SQLException e) {
			log.error(e.getMessage());
		}
		if(dt!=null){
			StringBuffer sb=new StringBuffer();
			sb.append("<table><tbody>");
			show_count=dt.getRows().getCount();
			for(int i=0;i<dt.getRows().getCount();i++){
				DataRow dr=dt.getRow(i);
				
				int iRecommandId=dr.getInt("RECOMMENDID");//推荐产品序号
				String sTitle=ExtString.getHTMLString(this.cutString(dr.getString("TITLE"),10));//标题
				String sAbstract=ExtString.getHTMLString(this.cutString(dr.getString("ABSTRACT"),20));//摘要
				String sCityName=dr.getString("CITYNAME");//地市名称
				int iRmIndex=dr.getInt("RMINDEX");//级别指数
				String state=dr.getString("STATE");//状态
				Date dStartTime=dr.getDate("STARTTIME");//开始时间
				Date dEndTime=dr.getDate("ENDTIME");//结束时间
				
				SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
				String sStartTime=sdf.format(dStartTime);
				String sEndTime=sdf.format(dEndTime);
				
				String sToday=sdf.format(new Date());
				java.sql.Date d1=java.sql.Date.valueOf(sEndTime);	
				java.sql.Date d2=java.sql.Date.valueOf(sToday);
				boolean enabled=d1.before(d2);
				
				
				sb.append("<tr key='").append(iRecommandId).append("'");
				if(enabled && state.equals("可用")){
					//sb.append(" style='background-color:gray'");
					//过期,设置不可用
					try {
						rmrDAO.deleteRMRecommandProduct(new Long(iRecommandId));
						state="禁用";
					} catch (SQLException e) {
						log.error(e.getMessage());
					}
				}
				sb.append(">");
				sb.append("<td class='body_td' align='left' nowrap width='20%'>")
				  .append("<a href='javascript:' onclick='window.setTimeout(\"fn_dblClick();\",10);'>")
				  .append(sTitle).append("</a>").append("</td>");
				sb.append("<td class='body_td' align='left' nowrap width='35%'>")
				  .append(sAbstract).append("</td>");
				sb.append("<td class='body_td' align='center' nowrap width='10%'>")
				  .append(sStartTime).append("</td>");
				sb.append("<td class='body_td' align='center' nowrap width='10%'>")
				  .append(sEndTime).append("</td>");
				sb.append("<td class='body_td' align='center' nowrap width='10%'>")
				  .append(sCityName).append("</td>");
				sb.append("<td class='body_td' align='center' nowrap width='5%'>")
				  .append(iRmIndex).append("</td>");
				sb.append("<td class='body_td' align='center' nowrap width='10%'>")
				  .append(state).append("</td>");
				sb.append("</tr>");
			}
			sb.append("</tbody></table>");
			return sb.toString();
			
		}
		return null;
	}
	
	/**
	 * 检索出来的记录显示的行数(pagesize)
	 * @param request ServletRequest对象
	 * @param response ServletResponse对象
	 * @param map 条件参数
	 * @return
	 */
	public int getRecommandProductCount(ServletRequest request,
										ServletResponse response, 
										Map map){
		return show_count;
	}
	


	
	/**
	 * 增加推荐产品信息(私有函数)
	 * @throws SQLException
	 */
	private long add_recommandproduct(RMRecommandProductBean rmrpb) throws SQLException{
		TD_RecommandProduct bean=buildTD_RecommandProduct(rmrpb);
		bean.save();			
		return bean.getRECOMMENDID();
	}

	/**
	 * 增加推荐产品条件信息(私有函数)
	 * @param reomandid
	 * @throws SQLException
	 */
	private void add_product_affair(long recomandid,List lst_product,List lst_affair) throws SQLException{

		//循环增加推荐产品条件
		Map map=new HashMap();
		if(lst_product!=null){

			//针对conditionType="P"的程控
			for(int i=0;i<lst_product.size();i++){
				RMRecommendConditionBean productbean=(RMRecommendConditionBean)lst_product.get(i);
				productbean.setRecommandId(recomandid);
				productbean.setUpConditionId(0);
				TD_RecommendCondition bean1=buildTD_RecommendCondition(productbean);
				bean1.save();
				//保存conditionType="F"的recommendcontion对象的序列号,key:产品id,value:序列号
				map.put(productbean.getParameter(),new Long(bean1.getCONDITIONID()));
			}
			
			if(lst_affair!=null){
				//针对conditionType="F"的程控,先要设置它的upConditionId
				//upConditionId根据flag来获取,flag保存了它的产品id
				for(int i=0;i<lst_affair.size();i++){
					RMRecommendConditionBean affairbean=(RMRecommendConditionBean)lst_affair.get(i);
					affairbean.setRecommandId(recomandid);
					//通过flag(所属的产品id号),在hashMap中查找相应的产品序列号,即程控的upconditionid
					affairbean.setUpConditionId(((Long)map.get(affairbean.getFlag())).longValue());
					TD_RecommendCondition bean2=buildTD_RecommendCondition(affairbean);
					bean2.save();
				}
			}
		}	
	}

	/**
	 * 将RMRecommandProductBean的值转到TD_RecommandProduct对象中,可用于增加和修改
	 * @param bean
	 * @return
	 */
	private TD_RecommandProduct buildTD_RecommandProduct(RMRecommandProductBean rmrpb){
		TD_RecommandProduct bean=null;
		long recommandId=rmrpb.getRecommandId();
		
		if(recommandId==0L){//增加
			bean=new TD_RecommandProduct(this.dacClient);
		}else{//修改
			bean=new TD_RecommandProduct(this.dacClient,recommandId);
		}
		
		bean.setABSTRACT(rmrpb.getAbstracts());
		bean.setCITYCODE(rmrpb.getCityCode());
		bean.setCREATETIME(new Date());
		bean.setDESCRIPTION(rmrpb.getDescrption());
		bean.setDISPLAYTYPE(rmrpb.getDisplaytype());
		bean.setENDTIME(rmrpb.getEndTime());
		bean.setRMINDEX(rmrpb.getRmindex());
		bean.setSTARTTIME(rmrpb.getStartTime());
		bean.setSTATE(rmrpb.getState());
		bean.setTITLE(rmrpb.getTitle());
		return bean;
	}	
	
	/**
	 * 将RMRecommendConditionBean的值转到TD_RecommendCondition对象中,仅用于增加
	 * @param bean
	 * @return
	 */
	private TD_RecommendCondition buildTD_RecommendCondition(RMRecommendConditionBean bean){
		TD_RecommendCondition bean2=new TD_RecommendCondition(this.dacClient);
		bean2.setRECOMMENDID(bean.getRecommandId());
		bean2.setCONDITIONTYPE(bean.getConditionType());
		bean2.setEXPERSSION(bean.getExpression());
		bean2.setPARAMETER(bean.getParameter());
		bean2.setSTATE(bean.getState());
		bean2.setUPCONDITIONID(bean.getUpConditionId());
		return bean2;
	}
	
	/**
	 * 增加推荐产品
	 * @param request
	 * @return 1-正常,0-出异常
	 */
	public int addRMRecommandProduct(RMRecommandProductBean rmrpb,List lst_product,List lst_affair){
				
		if(rmrpb==null) return 0;
		
		try {
			dacClient.beginTransaction(-1);//启动事务

			long recommandid=this.add_recommandproduct(rmrpb);//增加推荐产品信息,返回推荐产品id
			
			if(recommandid<=0){
				dacClient.endTransaction(false);

⌨️ 快捷键说明

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