package project.news.internal; import java.io.Serializable; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.springframework.jdbc.core.JdbcTemplate; import kernel.bo.RecordObjectMapper; import kernel.web.Page; import kernel.web.PagedQueryDao; import project.news.AdminNewsService; import project.news.News; import project.news.NewsService; public class AdminNewsServiceImpl implements AdminNewsService { private JdbcTemplate jdbcTemplate; private PagedQueryDao pagedQueryDao; private NewsService newsService; public void save(News entity) { if(entity.getIndex()) { News news = findByIndexAndLanguage(entity.getIndex(),entity.getLanguage()); if(news != null) { news.setIndex(false); newsService.update(news); } } newsService.save(entity); } public Page pagedQuery(int pageNo, int pageSize, String name_para, String title, String language) { StringBuffer queryString = new StringBuffer(); queryString.append("SELECT"); queryString.append(" party.USERNAME username, party.ROLENAME rolename, party.USERCODE usercode, party_parent.USERNAME username_parent, "); queryString.append(" news.UUID id, news.TITLE title, news.CONTENT content, news.CREATE_TIME create_time, news.START_TIME start_time, news.END_TIME end_time, " + " news.LANGUAGE language, news.INDEX_TOP index_top, " + " news.IMG_URL img_url, news.IMG_JUMP_URL img_jump_url, news.CLICK click, news.POP_UP pop_up "); queryString.append(" FROM "); queryString.append(" T_NEWS news " + " LEFT JOIN PAT_PARTY party ON news.PARTY_ID = party.UUID " + " LEFT JOIN PAT_USER_RECOM user ON user.PARTY_ID = party.UUID " + " LEFT JOIN PAT_PARTY party_parent ON user.RECO_ID = party_parent.UUID "); queryString.append(" WHERE 1=1 "); Map parameters = new HashMap(); if (StringUtils.isNotEmpty(name_para)) { queryString.append(" AND (party.USERNAME like :name_para or party.USERCODE =:usercode) "); parameters.put("name_para", "%" + name_para + "%"); parameters.put("usercode", name_para); } if (StringUtils.isNotEmpty(name_para)) { queryString.append(" AND (party.USERNAME like:username OR party.USERCODE like:username ) "); parameters.put("username", "%" + name_para + "%"); } if (StringUtils.isNotEmpty(language)) { queryString.append(" AND news.LANGUAGE =:language "); parameters.put("language", language); } if (StringUtils.isNotEmpty(title)) { queryString.append(" AND news.TITLE like:title "); parameters.put("title", "%" + title + "%"); } queryString.append(" order by news.CREATE_TIME desc "); Page page = this.pagedQueryDao.pagedQuerySQL(pageNo, pageSize, queryString.toString(), parameters); return page; } public News findById(Serializable id) { List list = jdbcTemplate.query("SELECT * FROM T_NEWS WHERE UUID=?", RecordObjectMapper.newInstance(News.class), id); if (null != list && list.size() > 0) { return list.get(0); } return null; } public void delete(String id) { newsService.delete(id); } public void update(News entity) { if(entity.getIndex()) { News news = findByIndexAndLanguage(entity.getIndex(),entity.getLanguage()); if(news != null && !entity.getId().equals(news.getId())) { news.setIndex(false); newsService.update(news); } } newsService.update(entity); } @Override public News findByIndexAndLanguage(boolean index, String language) { List list = jdbcTemplate.query("SELECT * FROM T_NEWS WHERE INDEX_TOP=? AND LANGUAGE=?", RecordObjectMapper.newInstance(News.class), index ? "Y":"N", language); if (null != list && list.size() > 0) { return list.get(0); } return null; } public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public void setPagedQueryDao(PagedQueryDao pagedQueryDao) { this.pagedQueryDao = pagedQueryDao; } public void setNewsService(NewsService newsService) { this.newsService = newsService; } }