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<String> tagList = new ArrayList();
|
for(int i=0;i<tags.length;i++){
|
if(!StringUtil.isEmpty(tags[i])){
|
tagList.add(tags[i]);
|
}
|
}
|
map.put("tag_list", tagList);
|
}
|
|
//附件
|
map.put("file_list", fileService.getFileList(ConvertUtil.obj2StrBlank(map.get("FILE_ID"))));
|
|
|
//知识关联
|
String linksql = "select B.ID,B.TITLE from KM_LIBRARY_KNOWLEDGE A,KM_LIBRARY B where A.KNOWLEDGE_ID = B.ID AND A.LIBRARY_ID=:library_id ";
|
List<Map> 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<Map> list = baseDao.queryForList(sql);
|
if (list != null && list.size() > 0) {
|
for (int i=0; i<list.size(); i++) {
|
resultMap.put(list.get(i).get("ID"), i+1);
|
}
|
}
|
return resultMap;
|
}
|
|
|
}
|