2
peternameyakj
2024-08-14 9bcf85f8d8f9b503e386a67924f5943cd77bd813
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
package project.cms.internal;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
 
import org.springframework.jdbc.core.JdbcTemplate;
 
import kernel.bo.RecordObjectMapper;
import kernel.util.DateUtils;
import project.cms.Banner;
import project.cms.BannerService;
 
public class BannerServiceImpl implements BannerService {
    
    private JdbcTemplate jdbcTemplate;
 
    // base64过大,不适合做redis
    private Map<String, Banner> cache = new ConcurrentHashMap<String, Banner>();
 
    public void init() {
        List<Banner> list = jdbcTemplate.query("SELECT * FROM T_BANNER", RecordObjectMapper.newInstance(Banner.class));
        for (Banner banner : list) {
            cache.put(banner.getId().toString(), banner);
        }
    }
 
    public void save(Banner entity) {
        String insertSql = "INSERT INTO T_BANNER(UUID,LANGUAGE,CONTENT_CODE,IMAGE,URL,MODEL,ON_SHOW,SORT_INDEX,CLICK,CREATE_TIME) VALUES (?,?,?,?,?,?,?,?,?,?)";
        jdbcTemplate.update(insertSql,entity.getId(),entity.getLanguage(),entity.getContent_code(),entity.getImage(),entity.getUrl(),entity.getModel(),
                entity.getOn_show(),entity.getSort_index(),entity.getClick(),entity.getCreateTime());
        
        cache.put(entity.getId().toString(), entity);
    }
 
    public void update(Banner entity) {
        String updateSql = "UPDATE T_BANNER SET LANGUAGE=?,CONTENT_CODE=?,IMAGE=?,URL=?,MODEL=?,ON_SHOW=?,SORT_INDEX=?,CLICK=? WHERE UUID=?";
        jdbcTemplate.update(updateSql,entity.getLanguage(),entity.getContent_code(),entity.getImage(),entity.getUrl(),entity.getModel(),
                entity.getOn_show(),entity.getSort_index(),entity.getClick(),entity.getId());
        cache.put(entity.getId().toString(), entity);
    }
 
    public void delete(String id) {
        Banner entity = cacheById(id);
        if(null != entity) {
            jdbcTemplate.update("DELETE FROM T_BANNER WHERE UUID=?", entity.getId());
            cache.remove(entity.getId());
        }
    }
 
    public Banner cacheById(String id) {
        return cache.get(id);
    }
 
    @Override
    public List<Banner> cacheListByModelAndLanguage(String model, String language) {
        // TODO Auto-generated method stub
        List<Banner> list = new ArrayList<Banner>();
        for (Banner banner : cache.values()) {
            if (banner.getOn_show() == 1 && model.equals(banner.getModel()) && language.equals(banner.getLanguage())) {
                list.add(banner);
            }
        }
        Collections.sort(list);
        return list;
    }
 
    @Override
    public Banner cacheByCodeAndLanguage(String contentCode, String language) {
        for (Banner banner : cache.values()) {
            if (banner.getOn_show() == 1 && contentCode.equals(banner.getContent_code())
                    && language.equals(banner.getLanguage())) {
                return banner;
            }
        }
        return null;
    }
 
    public Map<String, Object> bindOne(Banner entity) {
        Map<String, Object> result = new HashMap<String, Object>();
        result.put("content_code", entity.getContent_code());
        result.put("image", entity.getImage());
        result.put("index", entity.getSort_index());
        result.put("language", entity.getLanguage());
        result.put("model", entity.getModel());
        result.put("url", entity.getUrl());
        result.put("click", entity.getClick());
        result.put("create_time", DateUtils.format(entity.getCreateTime(), DateUtils.DF_yyyyMMddHHmm));
        result.put("id", entity.getId());
 
        return result;
    }
 
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
    
}