cy
2022-06-21 129904537f66509f97b285e7eb4f42b3dc349dd0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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;
    }
    
 
}