package cn.ksource.web.facade.uc.knowledge; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import cn.ksource.beans.KM_LIBRARY_HIT_RECORD; import cn.ksource.core.dao.BaseDao; import cn.ksource.core.dao.SqlParameter; import cn.ksource.core.util.ConvertUtil; import cn.ksource.core.util.DateUtil; import cn.ksource.core.util.StringUtil; import cn.ksource.web.service.file.FileService; @Service("ucKnowledgeFacade") public class UcKnowledgeFacadeImpl implements UcKnowledgeFacade { @Autowired private BaseDao baseDao; @Autowired private FileService fileService; @Override public Map getLibraryById(String libraryId, HttpServletRequest request) { //基本信息 StringBuilder sql = new StringBuilder("select k.*,p.STATE as P_STATE "); sql.append("from km_library k LEFT JOIN KM_LIBRARY_TEMP p on p.ORIGINAL_ID = k.ID where k.ID=:id "); SqlParameter param = new SqlParameter(); param.addValue("id", libraryId); Map map = baseDao.queryForMap(sql.toString(), param); //标签 String tag = ConvertUtil.obj2Str(map.get("TAG")); if (tag != null) { String[] tags = tag.split("\\s"); List tagList = new ArrayList(); for(int i=0;i linkList = baseDao.queryForList(linksql, new SqlParameter("library_id", libraryId)); map.put("link_list", linkList); //点击排名 Map rankMap = this.getLibraryRankForHits(); map.put("RANK", rankMap.get(libraryId)); return map; } @Override public Integer updateLibraryHits(String libraryId, String userId) { String sql = "SELECT COUNT(ID) FROM KM_LIBRARY_HIT_RECORD WHERE LIBRARY_ID = :libraryId AND CREATE_USER_ID = :userId "; Map param = new HashMap(); param.put("libraryId", libraryId); param.put("userId", userId); int count = baseDao.queryForInteger(sql, param); if(count <= 0){ KM_LIBRARY_HIT_RECORD record = new KM_LIBRARY_HIT_RECORD(); record.setLibrary_id(libraryId).setCreate_user_id(userId).setCreate_time(DateUtil.getCurrentDate14()).insert(); String sqlupd = "update KM_LIBRARY set HITS=HITS+1 where ID=:libraryId "; baseDao.execute(sqlupd, param); } return baseDao.queryForInteger("select HITS FROM KM_LIBRARY WHERE ID=:id",new SqlParameter("id",libraryId)); } /** * 获取文库点击排名 * @param partnerId * @return key=library_id,value=rank */ private Map getLibraryRankForHits() { Map resultMap = new HashMap(); String sql = "select ID,HITS from km_library where STATE=1 order by HITS desc "; List list = baseDao.queryForList(sql); if (list != null && list.size() > 0) { for (int i=0; i