package project.cms.internal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import org.apache.commons.lang3.StringUtils; import org.springframework.jdbc.core.JdbcTemplate; import kernel.bo.RecordObjectMapper; import kernel.web.ApplicationUtil; import kernel.web.Page; import project.cms.AdminCmsService; import project.cms.Cms; import project.cms.CmsRedisKeys; import project.cms.PropertiesUtilCms; import project.redis.RedisHandler; public class AdminCmsServiceImpl implements AdminCmsService { private JdbcTemplate jdbcTemplate; private RedisHandler redisHandler; /** * 新增Cms记录 */ public void saveCms(Cms entity) { String insertSql = "INSERT INTO T_CMS(UUID,TITLE,CONTENT,CREATE_TIME,MODEL,LANGUAGE,CONTENT_CODE) VALUES (?,?,?,?,?,?,?)"; jdbcTemplate.update(insertSql,entity.getId(),entity.getTitle(),entity.getContent(), entity.getCreateTime(),entity.getModel(),entity.getLanguage(),entity.getContent_code()); redisHandler.setSync(CmsRedisKeys.CMS_LANGUAGE_CONTENTCODE + entity.getLanguage() + entity.getContent_code(), entity); Map cacheLanguage = (Map) redisHandler.get(CmsRedisKeys.CMS_LANGUAGE + entity.getLanguage()); if(cacheLanguage==null) { cacheLanguage = new ConcurrentHashMap(); } cacheLanguage.put(entity.getContent_code(), entity); redisHandler.setSync(CmsRedisKeys.CMS_LANGUAGE+entity.getLanguage(),cacheLanguage); } public void update(Cms entity,String strOriginalLanguage,String strOriginalContentCode) { //清理 CMS_LANGUAGE_CONTENTCODE_?0?1(?0:language ?1:contentcode) String strRedisKey = CmsRedisKeys.CMS_LANGUAGE_CONTENTCODE + strOriginalLanguage + strOriginalContentCode; redisHandler.remove(strRedisKey); //清理 CMS_LANGUAGE_?0(?0:language) Map cacheLanguage = (Map) redisHandler.get(CmsRedisKeys.CMS_LANGUAGE + strOriginalLanguage); if(null != cacheLanguage) { for(Map.Entry it : cacheLanguage.entrySet()){ Cms cms = it.getValue(); if(null != cms) { String strContentCode = cms.getContent_code(); if(!strContentCode.isEmpty()) { if(0 == strContentCode.compareTo(strOriginalContentCode)) { cacheLanguage.remove(strOriginalContentCode); redisHandler.setSync(CmsRedisKeys.CMS_LANGUAGE + strOriginalLanguage,cacheLanguage); break; } } } } } String updateSql = "UPDATE T_CMS SET TITLE=?, CONTENT=?, MODEL=?, LANGUAGE=?, CONTENT_CODE=? WHERE UUID=?"; jdbcTemplate.update(updateSql,entity.getTitle(), entity.getContent(), entity.getModel(), entity.getLanguage(), entity.getContent_code(), entity.getId()); redisHandler.setSync(CmsRedisKeys.CMS_LANGUAGE_CONTENTCODE + entity.getLanguage() + entity.getContent_code(), entity); if(cacheLanguage==null) { cacheLanguage = new ConcurrentHashMap(); } cacheLanguage.put(entity.getContent_code(), entity); redisHandler.setSync(CmsRedisKeys.CMS_LANGUAGE + entity.getLanguage(), cacheLanguage); } public Page pagedQuery(int pageNo, int pageSize, String language, String title,String content_code_para) { if (pageNo <= 0) pageNo = 1; Page page = new Page(pageNo, pageSize, Integer.MAX_VALUE); StringBuilder whereBuilder=new StringBuilder("WHERE 1=1 "); ArrayList params=new ArrayList(); if (StringUtils.isNotEmpty(language)) { whereBuilder.append("AND LANGUAGE=? "); params.add(language); } if (StringUtils.isNotEmpty(title)) { whereBuilder.append("AND TITLE LIKE ? "); params.add("%"+title+"%"); } if (StringUtils.isNotEmpty(content_code_para)) { whereBuilder.append("AND CONTENT_CODE=? "); params.add(content_code_para); } whereBuilder.append("ORDER BY CREATE_TIME DESC LIMIT ?,? "); params.add(page.getFirstElementNumber()); params.add(pageSize); List list=ApplicationUtil.executeSelect(Cms.class,whereBuilder.toString(),params.toArray(new Object[params.size()])); page.setElements(list); return page; } public Cms findById(String id) { List list = jdbcTemplate.query("SELECT * FROM T_CMS WHERE UUID=?", RecordObjectMapper.newInstance(Cms.class), id); if (null != list && list.size() > 0) { return list.get(0); } return null; } public Map getModelDatasDictionary() { String datas = PropertiesUtilCms.getProperty("system_cms_model_list"); String[] splits = datas.split(","); Map map = new HashMap(); for (String data : splits) { map.put(data, data); } return map; } public void delete(Cms cms) { if (cms != null) { jdbcTemplate.update("DELETE FROM T_CMS WHERE UUID=?", cms.getId()); redisHandler.setSync(CmsRedisKeys.CMS_LANGUAGE_CONTENTCODE + cms.getLanguage() + cms.getContent_code(), null); Map cacheLanguage = (Map) redisHandler.get(CmsRedisKeys.CMS_LANGUAGE + cms.getLanguage()); if (cacheLanguage != null) { cacheLanguage.remove(cms.getContent_code()); } redisHandler.setSync(CmsRedisKeys.CMS_LANGUAGE + cms.getLanguage(), cacheLanguage); } } public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public void setRedisHandler(RedisHandler redisHandler) { this.redisHandler = redisHandler; } }