first commit

This commit is contained in:
Ray
2026-02-19 03:37:37 +08:00
commit ccfd8c79a4
2813 changed files with 453657 additions and 0 deletions

158
comm/News/WebContent/news_add.jsp Executable file
View File

@@ -0,0 +1,158 @@
<%@ page language="java" pageEncoding="utf-8"%>
<%@ include file="include/pagetop.jsp"%>
<!DOCTYPE html>
<html>
<head>
<%@ include file="include/head.jsp"%>
</head>
<body>
<%@ include file="include/loading.jsp"%>
<%@ include file="include/top.jsp"%>
<%@ include file="include/menu_left.jsp"%>
<!-- //////////////////////////////////////////////////////////////////////////// -->
<!-- START CONTENT -->
<div class="content">
<!-- //////////////////////////////////////////////////////////////////////////// -->
<!-- START CONTAINER -->
<div class="container-default">
<h3>新闻管理
</h3>
<%@ include file="include/alert.jsp"%>
<!-- //////////////////////////////////////////////////////////////////////////// -->
<!-- START queryForm -->
<s:if test='isResourceAccessible("ADMIN_NEWS_LIST")'>
<form action="<%=basePath%>normal/adminNewsAction!list.action"
method="post" id="queryForm">
<input type="hidden" name="pageNo" id="pageNo"
value="${param.pageNo}">
</form>
</s:if>
<!-- END queryForm -->
<!-- //////////////////////////////////////////////////////////////////////////// -->
<div class="row">
<div class="col-md-12 col-lg-12">
<div class="panel panel-default">
<div class="panel-title">
添加新闻
<ul class="panel-tools">
<li><a class="icon minimise-tool"><i
class="fa fa-minus"></i></a></li>
<li><a class="icon expand-tool"><i class="fa fa-expand"></i></a></li>
</ul>
</div>
<div class="panel-body">
<s:if test='isResourceAccessible("ADMIN_NEWS_ADD")'>
<form class="form-horizontal"
action="<%=basePath%>normal/adminNewsAction!add.action"
method="post" name="mainForm" id="mainForm">
<s:hidden name="id" id="id"></s:hidden>
<div class="form-group">
<label class="col-sm-1 control-label form-label">标题</label>
<div class="col-sm-10">
<s:textfield id="title" name="title" cssClass="form-control "
placeholder="标题" />
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label form-label">语言</label>
<div class="col-sm-2">
<s:select id="language" cssClass="form-control "
name="language" list="languageMap"
listKey="key" listValue="value" />
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label form-label">是否置顶</label>
<div class="col-sm-2">
<s:select id="index" cssClass="form-control "
name="index" list="#{true:'置顶',false:'不置顶'}"
listKey="key" listValue="value" value="index" />
</div>
</div>
<div class="form-group">
<div class="col-sm-11">
<div id="summernote"></div>
</div>
<s:hidden name="content" id="content"></s:hidden>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<a href="javascript:goUrl(<s:property value="pageNo" />)"
class="btn">取消</a> <a href="javascript:submit()"
class="btn btn-default">保存</a>
</div>
</div>
</form>
</s:if>
</div>
</div>
</div>
</div>
</div>
<!-- END CONTAINER -->
<!-- //////////////////////////////////////////////////////////////////////////// -->
<%@ include file="include/footer.jsp"%>
</div>
<!-- End Content -->
<!-- //////////////////////////////////////////////////////////////////////////// -->
<%@ include file="include/js.jsp"%>
<script src="<%=basePath%>js/util.js" type="text/javascript"></script>
<script type="text/javascript"
src="<%=basePath%>js/summernote/summernote.min.js"></script>
<script>
/* SUMMERNOTE*/
$(document).ready(function() {
$('#summernote').summernote();
var content=$("#content").val();
$('#summernote').code(content)
});
</script>
<s:if test='isResourceAccessible("ADMIN_NEWS_ADD")'>
<script type="text/javascript">
function submit() {
swal({
title : "是否保存?",
text : "",
type : "warning",
showCancelButton : true,
confirmButtonColor : "#DD6B55",
confirmButtonText : "确认",
closeOnConfirm : false
}, function() {
var sHTML = $('#summernote').code();
$("#content").val(sHTML);
document.getElementById("mainForm").submit();
});
}
</script>
</s:if>
</body>
</html>

View File

@@ -0,0 +1,222 @@
<%@ page language="java" pageEncoding="utf-8"%>
<%@ include file="include/pagetop.jsp"%>
<!DOCTYPE html>
<html>
<head>
<%@ include file="include/head.jsp"%>
</head>
<body>
<%@ include file="include/loading.jsp"%>
<%@ include file="include/top.jsp"%>
<%@ include file="include/menu_left.jsp"%>
<!-- //////////////////////////////////////////////////////////////////////////// -->
<!-- START CONTENT -->
<div class="content">
<!-- //////////////////////////////////////////////////////////////////////////// -->
<!-- START CONTAINER -->
<div class="container-default">
<h3>新闻管理
</h3>
<%@ include file="include/alert.jsp"%>
<!-- //////////////////////////////////////////////////////////////////////////// -->
<!-- START queryForm -->
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-title">查询条件</div>
<div class="panel-body">
<s:if test='isResourceAccessible("ADMIN_NEWS_LIST")'>
<form class="form-horizontal"
action="<%=basePath%>normal/adminNewsAction!list.action"
method="post" id="queryForm">
<s:hidden name="pageNo" id="pageNo"></s:hidden>
<div class="col-md-12 col-lg-4">
<fieldset>
<div class="control-group">
<div class="controls">
<s:textfield id="para_title" name="para_title" cssClass="form-control " placeholder="标题"/>
</div>
</div>
</fieldset>
</div>
<div class="col-md-12 col-lg-4">
<fieldset>
<div class="control-group">
<div class="controls">
<s:select id="para_language" cssClass="form-control "
name="para_language"
list="languageMap" listKey="key"
listValue="value" headerKey="" headerValue="所有语言"
value="para_language" />
</div>
</div>
</fieldset>
</div>
<div class="col-md-12 col-lg-2">
<button type="submit" class="btn btn-block btn-default">确定</button>
</div>
</form>
</s:if>
</div>
</div>
</div>
</div>
<%-- <form class="form-horizontal"
action="<%=basePath%>normal/adminNewsAction!list.action"
method="post" id="queryForm">
<input type="hidden" name="pageNo" id="pageNo"
value="${param.pageNo}">
</form> --%>
<!-- END queryForm -->
<!-- //////////////////////////////////////////////////////////////////////////// -->
<div class="row">
<div class="col-md-12">
<!-- Start Panel -->
<div class="panel panel-default">
<div class="panel-title">查询结果</div>
<sec:authorize ifAnyGranted="ROLE_ROOT,ROLE_ADMIN">
<s:if test='isResourceAccessible("ADMIN_NEWS_TOADD")'>
<a href="<%=basePath%>normal/adminNewsAction!toAdd.action"
class="btn btn-light" style="margin-bottom: 10px"><i
class="fa fa-pencil"></i>新增新闻</a>
</s:if>
</sec:authorize>
<div class="panel-body">
<table class="table table-bordered table-striped">
<thead>
<tr>
<td >标题</td>
<td >是否置顶</td>
<td >日期</td>
<td class="col-md-2">语言</td>
<sec:authorize ifAnyGranted="ROLE_ROOT,ROLE_ADMIN">
<td class="col-md-2"></td>
</sec:authorize>
</tr>
</thead>
<tbody>
<s:iterator value="page.elements" status="stat">
<tr>
<td><s:property value="title" /></td>
<td>
<s:if test='index_top=="Y"'>
<span class="right label label-success">
</span>
</s:if>
<s:if test='index_top=="N"'>
</s:if>
</td>
<td><s:date name="create_time" format="YYYY-MM-dd HH:mm:ss " /></td>
<td class="col-md-2">
<s:if test='language=="zh-CN"'>
简体中文
</s:if>
<s:if test='language=="CN"'>
繁体中文
</s:if>
<s:if test='language=="en"'>
英语
</s:if>
</td>
<sec:authorize ifAnyGranted="ROLE_ROOT,ROLE_ADMIN">
<td>
<div class="btn-group">
<button type="button" class="btn btn-light">操作</button>
<button type="button"
class="btn btn-light dropdown-toggle"
data-toggle="dropdown" aria-expanded="false">
<span class="caret"></span> <span class="sr-only">Toggle
Dropdown</span>
</button>
<ul class="dropdown-menu" role="menu">
<s:if test='isResourceAccessible("ADMIN_NEWS_TOUPDATE")'>
<li><a
href="<%=basePath%>normal/adminNewsAction!toUpdate.action?id=<s:property value="id" />">修改</a></li>
</s:if>
<s:if test='isResourceAccessible("ADMIN_NEWS_DELETE")'>
<li><a
href="javascript:ondelete('<s:property value="id" />')">删除</a></li>
</s:if>
</ul>
</div>
</td>
</sec:authorize>
</tr>
</s:iterator>
</tbody>
</table>
<%@ include file="include/page_simple.jsp"%>
<nav>
</div>
</div>
<!-- End Panel -->
</div>
</div>
</div>
<!-- END CONTAINER -->
<!-- //////////////////////////////////////////////////////////////////////////// -->
<%@ include file="include/footer.jsp"%>
</div>
<!-- End Content -->
<!-- //////////////////////////////////////////////////////////////////////////// -->
<%@ include file="include/js.jsp"%>
<sec:authorize ifAnyGranted="ROLE_ADMIN,ROLE_ROOT">
<s:if test='isResourceAccessible("ADMIN_NEWS_DELETE")'>
<form action="<%=basePath%>normal/adminNewsAction!delete.action"
method="post" id="ondelete">
<input type="hidden" name="pageNo" id="pageNo"
value="${param.pageNo}">
<s:hidden name="id" id="news_id"></s:hidden>
</form>
<script type="text/javascript">
function ondelete(id) {
$("#news_id").val(id);
swal({
title : "是否确认删除?",
text : "",
type : "warning",
showCancelButton : true,
confirmButtonColor : "#DD6B55",
confirmButtonText : "确认",
closeOnConfirm : false
}, function() {
document.getElementById("ondelete").submit();
});
}
</script>
</s:if>
</sec:authorize>
</body>
</html>

View File

@@ -0,0 +1,159 @@
<%@ page language="java" pageEncoding="utf-8"%>
<%@ include file="include/pagetop.jsp"%>
<!DOCTYPE html>
<html>
<head>
<%@ include file="include/head.jsp"%>
</head>
<body>
<%@ include file="include/loading.jsp"%>
<%@ include file="include/top.jsp"%>
<%@ include file="include/menu_left.jsp"%>
<!-- //////////////////////////////////////////////////////////////////////////// -->
<!-- START CONTENT -->
<div class="content">
<!-- //////////////////////////////////////////////////////////////////////////// -->
<!-- START CONTAINER -->
<div class="container-default">
<h3>新闻管理
</h3>
<%@ include file="include/alert.jsp"%>
<!-- //////////////////////////////////////////////////////////////////////////// -->
<!-- START queryForm -->
<s:if test='isResourceAccessible("ADMIN_NEWS_LIST")'>
<form action="<%=basePath%>normal/adminNewsAction!list.action"
method="post" id="queryForm">
<input type="hidden" name="pageNo" id="pageNo"
value="${param.pageNo}">
</form>
</s:if>
<!-- END queryForm -->
<!-- //////////////////////////////////////////////////////////////////////////// -->
<div class="row">
<div class="col-md-12 col-lg-12">
<div class="panel panel-default">
<div class="panel-title">
添加新闻
<ul class="panel-tools">
<li><a class="icon minimise-tool"><i
class="fa fa-minus"></i></a></li>
<li><a class="icon expand-tool"><i class="fa fa-expand"></i></a></li>
</ul>
</div>
<div class="panel-body">
<s:if test='isResourceAccessible("ADMIN_NEWS_UPDATE")'>
<form class="form-horizontal"
action="<%=basePath%>normal/adminNewsAction!update.action"
method="post" name="mainForm" id="mainForm">
<s:hidden name="id" id="id"></s:hidden>
<div class="form-group">
<label class="col-sm-1 control-label form-label">标题</label>
<div class="col-sm-10">
<s:textfield id="title" name="title" cssClass="form-control "
placeholder="标题" />
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label form-label">语言</label>
<div class="col-sm-2">
<s:select id="language" cssClass="form-control "
name="language" list="languageMap"
listKey="key" listValue="value" />
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label form-label">是否置顶</label>
<div class="col-sm-2">
<s:select id="index" cssClass="form-control "
name="index" list="#{true:'置顶',false:'不置顶'}"
listKey="key" listValue="value" value="index" />
</div>
</div>
<div class="form-group">
<div class="col-sm-11">
<div id="summernote"></div>
</div>
<s:hidden name="content" id="content"></s:hidden>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<a href="javascript:goUrl(<s:property value="pageNo" />)"
class="btn">取消</a> <a href="javascript:submit()"
class="btn btn-default">保存</a>
</div>
</div>
</form>
</s:if>
</div>
</div>
</div>
</div>
</div>
<!-- END CONTAINER -->
<!-- //////////////////////////////////////////////////////////////////////////// -->
<%@ include file="include/footer.jsp"%>
</div>
<!-- End Content -->
<!-- //////////////////////////////////////////////////////////////////////////// -->
<%@ include file="include/js.jsp"%>
<script src="<%=basePath%>js/util.js" type="text/javascript"></script>
<script type="text/javascript"
src="<%=basePath%>js/summernote/summernote.min.js"></script>
<script>
/* SUMMERNOTE*/
$(document).ready(function() {
$('#summernote').summernote();
var content=$("#content").val();
$('#summernote').code(content)
});
</script>
<s:if test='isResourceAccessible("ADMIN_NEWS_UPDATE")'>
<script type="text/javascript">
function submit() {
swal({
title : "是否保存?",
text : "",
type : "warning",
showCancelButton : true,
confirmButtonColor : "#DD6B55",
confirmButtonText : "确认",
closeOnConfirm : false
}, function() {
var sHTML = $('#summernote').code();
$("#content").val(sHTML);
document.getElementById("mainForm").submit();
});
}
</script>
</s:if>
</body>
</html>

View File

@@ -0,0 +1,10 @@
admin
<!-- news -->
<value>newsService</value>
<value>adminNewsService</value>
api
<!-- news -->
<value>newsService</value>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<bean id="newsService" class="project.news.internal.NewsServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="redisHandler" ref="redisHandler" />
</bean>
</beans>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<bean id="adminNewsService" class="project.news.internal.AdminNewsServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedDao" ref="pagedDao" />
<property name="newsService" ref="newsService" />
</bean>
<bean id="newsService" class="project.news.internal.NewsServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="redisHandler" ref="redisHandler" />
</bean>
</beans>

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<!-- init-method="init" -->
<bean id="newsService" class="project.news.internal.NewsServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="redisHandler" ref="redisHandler" />
</bean>
<bean id="newsLoadCacheService"
class="project.data.loadcache.NewsLoadCacheService">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="redisHandler" ref="redisHandler" />
</bean>
</beans>

View File

@@ -0,0 +1,13 @@
admin
<action name="adminNewsAction" class="project.news.web.AdminNewsAction">
<result name="list">/news_list.jsp</result>
<result name="add">/news_add.jsp</result>
<result name="update">/news_update.jsp</result>
</action>
api
<action name="news"
class="project.news.web.NewsAction">
</action>

View File

@@ -0,0 +1,11 @@
DROP TABLE IF EXISTS `T_NEWS`;
CREATE TABLE `T_NEWS` (
`UUID` varchar(32) NOT NULL,
`TITLE` varchar(128) NOT NULL COMMENT '标题',
`CONTENT` longtext COMMENT '公告内容',
`CREATE_TIME` datetime DEFAULT NULL COMMENT '创建时间',
`LANGUAGE` varchar(32) DEFAULT NULL COMMENT '语言',
`INDEX_TOP` char(1) DEFAULT NULL ;
PRIMARY KEY (`UUID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

View File

@@ -0,0 +1,22 @@
package project.news;
import java.io.Serializable;
import kernel.web.Page;
public interface AdminNewsService {
public News findById(Serializable id);
/**
* 新增新闻
* @param entity
*/
public void save(News entity);
public void delete(News news);
public void update(News entity);
Page pagedQuery(int pageNo, int pageSize, String title, String lang, String startTime, String endTime, Integer status);
}

View File

@@ -0,0 +1,35 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="project.news.News" table="T_NEWS">
<id name="id" type="java.lang.String">
<column name="UUID" />
<generator class="uuid.hex" />
</id>
<property name="title" type="java.lang.String">
<column name="TITLE" />
</property>
<property name="content" type="java.lang.String">
<column name="CONTENT" />
</property>
<property name="lang" type="java.lang.String">
<column name="LANG" />
</property>
<property name="sort" type="int">
<column name="SORT" />
</property>
<property name="iconImg" type="java.lang.String">
<column name="ICON_IMG" />
</property>
<property name="createTime" type="timestamp">
<column name="CREATE_TIME" />
</property>
<property name="releaseTime" type="java.lang.String">
<column name="RELEASE_TIME" />
</property>
<property name="status" type="int">
<column name="STATUS" />
</property>
</class>
</hibernate-mapping>

View File

@@ -0,0 +1,54 @@
package project.news;
import kernel.bo.EntityObject;
import lombok.Data;
import java.util.Date;
/**
* 新闻管理
*
*/
@Data
public class News extends EntityObject {
private static final long serialVersionUID = -4670490376092518726L;
/**
* 标题
*/
private String title;
/**
* 内容
*/
private String content;
/**
* 语言
*/
private String lang;
/**
* 图片
*/
private String iconImg;
/**
* 序号
*/
private Integer sort;
/**
* 创建时间
*/
private Date createTime;
/**
* 发布时间
*/
private String releaseTime;
/**
* 状态值
*/
private Integer status;
}

View File

@@ -0,0 +1,34 @@
package project.news;
import java.io.Serializable;
import java.util.List;
import kernel.web.Page;
import project.invest.expert.model.Expert;
import project.invest.project.model.Project;
public interface NewsService {
public News findById(Serializable id);
public News cacheById(Serializable id);
public News getIndex(String language);
public void save(News entity);
public void delete(String id);
public void update(News entity);
public Page cachePagedQuery(int pageNo, int pageSize, String language);
List<String> selectByLanguage(String language);
List<String> selectAnnouncements(String language);
List<News> listNewsPage(String language, int pageNum, int pageSize);
List<Expert> listExpertPage(String language, int pageNum, int pageSize);
}

View File

@@ -0,0 +1,86 @@
package project.news.internal;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import kernel.util.DateUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import kernel.web.Page;
import kernel.web.PagedQueryDao;
import project.news.AdminNewsService;
import project.news.News;
public class AdminNewsServiceImpl extends HibernateDaoSupport implements AdminNewsService {
private PagedQueryDao pagedDao;
@Override
public Page pagedQuery(int pageNo, int pageSize, String title, String lang, String startTime, String endTime, Integer status) {
StringBuffer queryString = new StringBuffer(
" SELECT UUID id, TITLE title, CONTENT content, Lang lang, ICON_IMG iconImg, "
+ " CREATE_TIME createTime, RELEASE_TIME releaseTime, SORT sort, STATUS status ");
queryString.append(
" FROM T_NEWS WHERE 1 = 1 ");
Map<String, Object> parameters = new HashMap();
if (StringUtils.isNotEmpty(lang)) {
queryString.append(" AND LANG =:lang ");
parameters.put("lang", lang);
}
if (StringUtils.isNotEmpty(title)) {
queryString.append(" AND TITLE like:title ");
parameters.put("title", "%" + title + "%");
}
if (-2 != status) {
queryString.append(" and STATUS =:status");
parameters.put("status", status);
}
if (!kernel.util.StringUtils.isNullOrEmpty(startTime)) {
queryString.append(" AND DATE(CREATE_TIME) >= DATE(:startTime) ");
parameters.put("startTime", DateUtils.toDate(startTime));
}
if (!kernel.util.StringUtils.isNullOrEmpty(endTime)) {
queryString.append(" AND DATE(CREATE_TIME) <= DATE(:endTime) ");
parameters.put("endTime", DateUtils.toDate(endTime));
}
queryString.append(" order by CREATE_TIME desc ");
Page page = this.pagedDao.pagedQuerySQL(pageNo, pageSize, queryString.toString(), parameters);
return page;
}
public News findById(Serializable id) {
return getHibernateTemplate().get(News.class, id);
}
@Override
public void save(News entity) {
this.getHibernateTemplate().save(entity);
}
@Override
public void delete(News news) {
this.getHibernateTemplate().delete(news);
}
/**
* 更新新闻
* @param entity
*/
@Override
public void update(News entity) {
this.getHibernateTemplate().update(entity);
}
public void setPagedDao(PagedQueryDao pagedDao) {
this.pagedDao = pagedDao;
}
}

View File

@@ -0,0 +1,80 @@
package project.news.internal;
import kernel.web.Page;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Property;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import project.invest.expert.model.Expert;
import project.invest.project.model.Project;
import project.news.News;
import project.news.NewsService;
import java.io.Serializable;
import java.util.List;
public class NewsServiceImpl extends HibernateDaoSupport implements NewsService {
@Override
public News findById(Serializable id) {
return this.getHibernateTemplate().get(News.class, id); }
@Override
public News cacheById(Serializable id) {
return null;
}
@Override
public News getIndex(String language) {
return null;
}
@Override
public void save(News entity) {
}
@Override
public void delete(String id) {
}
@Override
public void update(News entity) {
}
@Override
public Page cachePagedQuery(int pageNo, int pageSize, String language) {
return null;
}
@Override
public List<String> selectByLanguage(String language) {
return null;
}
@Override
public List<String> selectAnnouncements(String language) {
List<String> results = (List<String>)this.getHibernateTemplate().
find("SELECT content FROM Cms WHERE type = 0 and status = 0 and language = ?0", new Object[]{language});
return results;
}
@Override
public List<News> listNewsPage(String language, int pageNum, int pageSize) {
DetachedCriteria query = DetachedCriteria.forClass(News.class);
query.add( Property.forName("lang").eq(language) );
query.add( Property.forName("status").eq(1) );
query.addOrder(Order.asc("sort"));
return (List<News>) getHibernateTemplate().findByCriteria(query,(pageNum-1)*pageSize,pageSize);
}
@Override
public List<Expert> listExpertPage(String language, int pageNum, int pageSize) {
DetachedCriteria query = DetachedCriteria.forClass(Expert.class);
query.add( Property.forName("lang").eq(language) );
query.add( Property.forName("status").eq(1) );
query.addOrder(Order.asc("sort"));
return (List<Expert>) getHibernateTemplate().findByCriteria(query,(pageNum-1)*pageSize,pageSize);
}
}

View File

@@ -0,0 +1,338 @@
package project.web.admin;
import java.text.MessageFormat;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.providers.encoding.PasswordEncoder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import kernel.exception.BusinessException;
import kernel.util.StringUtils;
import kernel.web.PageActionSupport;
import project.Constants;
import project.log.LogService;
import project.news.AdminNewsService;
import project.news.News;
import security.SecUser;
import security.internal.SecUserService;
/**
* 新闻管理
*/
@RestController
public class AdminNewsController extends PageActionSupport {
private Logger logger = LogManager.getLogger(AdminNewsController.class);
@Autowired
private AdminNewsService adminNewsService;
@Autowired
private SecUserService secUserService;
@Autowired
private LogService logService;
@Autowired
private PasswordEncoder passwordEncoder;
private final String action = "normal/adminNewsAction!";
/**
* 获取 新闻管理 列表
*/
@RequestMapping(action + "list.action")
public ModelAndView list(HttpServletRequest request) {
String pageNo = request.getParameter("pageNo");
String message = request.getParameter("message");
String error = request.getParameter("error");
String title = request.getParameter("title");
String lang = request.getParameter("lang");
String startTime = request.getParameter("startTime");
String endTime = request.getParameter("endTime");
Integer status = request.getParameter("status") == null ? -2 : Integer.parseInt(request.getParameter("status"));
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("news_list");
try {
this.checkAndSetPageNo(pageNo);
this.pageSize = 20;
this.page = this.adminNewsService.pagedQuery(this.pageNo, this.pageSize, title, lang,startTime,endTime,status);
} catch (BusinessException e) {
modelAndView.addObject("error", e.getMessage());
return modelAndView;
} catch (Throwable t) {
logger.error(" error ", t);
modelAndView.addObject("error", "[ERROR] " + t.getMessage());
return modelAndView;
}
modelAndView.addObject("pageNo", this.pageNo);
modelAndView.addObject("pageSize", this.pageSize);
modelAndView.addObject("page", this.page);
modelAndView.addObject("message", message);
modelAndView.addObject("error", error);
modelAndView.addObject("title", title);
modelAndView.addObject("lang", lang);
// modelAndView.addObject("languageMap", Constants.LANGUAGE);
return modelAndView;
}
/**
* 新增 新闻管理 页面
*/
@RequestMapping(action + "toAdd.action")
public ModelAndView toAdd(HttpServletRequest request) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("languageMap", Constants.LANGUAGE);
modelAndView.setViewName("news_add");
return modelAndView;
}
/**
* 新增 新闻管理
*
* title 标题
* content 内容
* index 是否置顶
* language 语言
*/
@RequestMapping(action + "add.action")
public ModelAndView add(HttpServletRequest request) {
String pageNo = request.getParameter("pageNo");
String title = request.getParameter("title");
String content_text = request.getParameter("content");
String lang = request.getParameter("lang");
String iconImg = request.getParameter("iconImg");
String status = request.getParameter("status");
String sort = request.getParameter("sort");
String releaseTime = request.getParameter("releaseTime");
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("pageNo", pageNo);
modelAndView.addObject("title", title);
modelAndView.addObject("content", content_text);
modelAndView.addObject("lang", lang);
modelAndView.addObject("status", status);
modelAndView.addObject("sort", sort);
modelAndView.addObject("iconImg", iconImg);
modelAndView.addObject("releaseTime", releaseTime);
try {
String error = this.verif(title, content_text,iconImg,sort,releaseTime);
if (!StringUtils.isNullOrEmpty(error)) {
throw new BusinessException(error);
}
String userNameLogin = this.getUsername_login();
News news = new News();
news.setTitle(title);
news.setCreateTime(new Date());
news.setIconImg(iconImg);
news.setStatus(Integer.parseInt(status));
news.setContent(content_text);
news.setLang(lang);
news.setReleaseTime(releaseTime);
news.setSort(Integer.parseInt(sort));
this.adminNewsService.save(news);
SecUser sec = this.secUserService.findUserByLoginName(userNameLogin);
String log = MessageFormat.format("ip:" + this.getIp() + ",管理员新增新闻,id:{0},标题:{1},语言:{2},内容:{3}",
news.getId(), news.getTitle(), news.getLang(),news.getContent());
this.saveLog(sec, userNameLogin, log);
} catch (BusinessException e) {
modelAndView.addObject("error", e.getMessage());
modelAndView.setViewName("news_add");
return modelAndView;
} catch (Throwable t) {
logger.error(" error ", t);
modelAndView.addObject("error", "[ERROR] " + t.getMessage());
modelAndView.setViewName("news_add");
return modelAndView;
}
modelAndView.addObject("message", "操作成功");
modelAndView.setViewName("redirect:/" + action + "list.action");
return modelAndView;
}
private String verif(String title, String content_text, String iconImg, String sort, String releaseTime) {
if(StringUtils.isEmptyString(title)){
throw new BusinessException("标题不能为空");
}
if(StringUtils.isEmptyString(content_text)){
throw new BusinessException("内容不能为空");
}
if(StringUtils.isEmptyString(iconImg)){
throw new BusinessException("请选择照片");
}
if(StringUtils.isEmptyString(sort)){
throw new BusinessException("请输入排序");
}
if(StringUtils.isEmptyString(releaseTime)){
throw new BusinessException("请输入发布时间");
}
return null;
}
/**
* 修改 新闻管理 页面
*
* title 标题
* content 内容
* index 是否置顶
* language 语言
*/
@RequestMapping(action + "toUpdate.action")
public ModelAndView toUpdate(HttpServletRequest request) {
String id = request.getParameter("id");
ModelAndView modelAndView = new ModelAndView();
try {
News news = this.adminNewsService.findById(id);
modelAndView.addObject("news", news);
// modelAndView.addObject("title", news.getTitle());
// modelAndView.addObject("content", news.getContent());
// modelAndView.addObject("lang", news.getLang());
// modelAndView.addObject("status", news.getStatus());
// modelAndView.addObject("sort", news.getSort());
// modelAndView.addObject("iconImg", iconImg);
// modelAndView.addObject("releaseTime", releaseTime);
} catch (BusinessException e) {
modelAndView.addObject("error", e.getMessage());
modelAndView.setViewName("redirect:/" + action + "list.action");
return modelAndView;
} catch (Throwable t) {
logger.error(" error ", t);
modelAndView.addObject("error", "[ERROR] " + t.getMessage());
modelAndView.setViewName("redirect:/" + action + "list.action");
return modelAndView;
}
modelAndView.setViewName("news_update");
return modelAndView;
}
/**
* 修改 新闻管理
*
* title 标题
* content 内容
* index 是否置顶
* language 语言
*/
@RequestMapping(action + "update.action")
public ModelAndView update(HttpServletRequest request, News news, @RequestParam Map<String, String> paramMap) {
ModelAndView modelAndView = new ModelAndView();
String content_text = request.getParameter("content");
try {
String error = this.verif(news.getTitle(),content_text,news.getIconImg(),news.getSort().toString(),news.getReleaseTime());
if (!StringUtils.isNullOrEmpty(error)) {
throw new BusinessException(error);
}
String userNameLogin = this.getUsername_login();
SecUser sec = this.secUserService.findUserByLoginName(userNameLogin);
News bean = this.adminNewsService.findById(news.getId());
news.setCreateTime(bean.getCreateTime());
this.adminNewsService.update(news);
String log = MessageFormat.format(",新标题:{0},新语言:{1},新内容:{3}",
news.getTitle(), news.getLang(), content_text);
this.saveLog(sec, userNameLogin, log);
} catch (BusinessException e) {
modelAndView.addObject("error", e.getMessage());
modelAndView.addObject("news", news);
modelAndView.setViewName("news_update");
return modelAndView;
} catch (Throwable t) {
logger.error(" error ", t);
modelAndView.addObject("error", "[ERROR] " + t.getMessage());
modelAndView.addObject("news", news);
modelAndView.setViewName("news_update");
return modelAndView;
}
modelAndView.addObject("message", "操作成功");
modelAndView.setViewName("redirect:/" + action + "list.action");
return modelAndView;
}
/**
* 删除 新闻管理
*/
@RequestMapping(action + "delete.action")
public ModelAndView delete(HttpServletRequest request) {
String id = request.getParameter("id");
String login_safeword = request.getParameter("login_safeword");
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("redirect:/" + action + "list.action");
try {
String userNameLogin = this.getUsername_login();
SecUser sec = this.secUserService.findUserByLoginName(userNameLogin);
this.checkLoginSafeword(sec, userNameLogin, login_safeword);
News news = this.adminNewsService.findById(id);
String log = MessageFormat.format("ip:" + this.getIp() + ",管理员删除新闻,id:{0},原标题:{1},原语言:{2},原内容:{3}",
news.getId(), news.getTitle(), news.getLang(), news.getContent());
this.saveLog(sec, userNameLogin, log);
this.adminNewsService.delete(news);
} catch (BusinessException e) {
modelAndView.addObject("error", e.getMessage());
return modelAndView;
} catch (Throwable t) {
logger.error("update error ", t);
modelAndView.addObject("error", "程序错误");
return modelAndView;
}
modelAndView.addObject("message", "操作成功");
return modelAndView;
}
/**
* 验证登录人资金密码
*/
protected void checkLoginSafeword(SecUser secUser, String operatorUsername, String loginSafeword) {
// SecUser sec = this.secUserService.findUserByLoginName(operatorUsername);
String sysSafeword = secUser.getSafeword();
String safeword_md5 = this.passwordEncoder.encodePassword(loginSafeword, operatorUsername);
if (!safeword_md5.equals(sysSafeword)) {
throw new BusinessException("登录人资金密码错误");
}
}
public void saveLog(SecUser secUser, String operator, String context) {
project.log.Log log = new project.log.Log();
log.setCategory(Constants.LOG_CATEGORY_OPERATION);
log.setOperator(operator);
log.setUsername(secUser.getUsername());
log.setPartyId(secUser.getPartyId());
log.setLog(context);
log.setCreateTime(new Date());
this.logService.saveSync(log);
}
}

View File

@@ -0,0 +1,83 @@
package project.web.api;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import kernel.util.Arith;
import kernel.util.PageInfo;
import kernel.web.BaseAction;
import kernel.web.ResultObject;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import project.invest.InvestRedisKeys;
import project.invest.expert.model.Expert;
import project.invest.project.model.Project;
import project.invest.project.model.ProjectLang;
import project.news.News;
import project.news.NewsService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@RestController
@CrossOrigin
public class NewsController extends BaseAction {
private final String action = "/api/news!";
@Resource
private NewsService newsService;
/**
* 新闻分页
* @return
*/
@PostMapping( action+"list_news.action")
public Object listNews(HttpServletRequest request){
ResultObject resultObject = new ResultObject();
PageInfo pageInfo = getPageInfo(request);
String lang = this.getLanguage(request);
JSONArray jsonArray = new JSONArray();
for(News ns : newsService.listNewsPage(lang,pageInfo.getPageNum(),pageInfo.getPageSize())){
JSONObject o = new JSONObject();
o.put("id", ns.getId().toString());
o.put("title", ns.getTitle());
o.put("iconImg", ns.getIconImg());
o.put("releaseTime", ns.getReleaseTime());
o.put("content",ns.getContent());
jsonArray.add(o);
}
JSONObject object = new JSONObject();
object.put("pageInfo", pageInfo);
object.put("pageList", jsonArray);
resultObject.setData(object);
return resultObject;
}
/**
* 新闻详情
* @return
*/
@PostMapping( action+"detail_news.action")
public Object detailNews(HttpServletRequest request){
ResultObject resultObject = new ResultObject();
String id = request.getParameter("id");
News ns = newsService.findById(id);
JSONObject o = new JSONObject();
o.put("id", ns.getId().toString());
o.put("title", ns.getTitle());
o.put("iconImg", ns.getIconImg());
o.put("releaseTime", ns.getReleaseTime());
o.put("content",ns.getContent());
JSONObject object = new JSONObject();
object.put("news", o);
resultObject.setData(object);
return resultObject;
}
}