网站和主题单独菜单管理

This commit is contained in:
duandongmei
2019-01-08 12:17:57 +06:00
parent 5f4d300d6a
commit 94dc852118
8 changed files with 494 additions and 2 deletions

View File

@@ -3,7 +3,7 @@ package com.nis.domain;
import java.io.Serializable;
public class SysDataDictionaryItem implements Serializable {
public class SysDataDictionaryItem extends BaseEntity<SysDataDictionaryItem> implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private String itemCode;

View File

@@ -1,5 +1,7 @@
package com.nis.web.controller.sys;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -12,6 +14,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.nis.domain.Page;
import com.nis.domain.SysDataDictionaryItem;
import com.nis.domain.SysDataDictionaryName;
import com.nis.util.CacheUtils;
import com.nis.util.Constants;
@@ -37,7 +40,61 @@ public class DictController extends BaseController {
return "/sys/dictList";
}
@RequestMapping(value = {"/topicAndWebsiteList", ""})
public String topicList(SysDataDictionaryItem sysDictItem,HttpServletRequest request, HttpServletResponse response, Model model) {
if(sysDictItem ==null){
sysDictItem=new SysDataDictionaryItem();
}
Page<SysDataDictionaryItem> page = dictService.findDictItemList(new Page<SysDataDictionaryItem>(request, response), sysDictItem);
model.addAttribute("page", page);
model.addAttribute("sysDataDictionaryName",sysDictItem);
return "/basics/dictList";
}
/**
* 进入字典添加或修改页面
* @param sysDictName
* @param model
* @return
*/
@RequestMapping(value={"dictItemForm"})
public String dictItemForm(SysDataDictionaryItem item, Model model) {
if (item != null && !StringUtil.isEmpty(item.getId())){
List list=dictService.findDictItemList(item);
if(!StringUtil.isEmpty(list)){
item=(SysDataDictionaryItem) list.get(0);
}
}
model.addAttribute("sysDataDictionaryItem",item);
return "/basics/dictForm";
}
/**
* 进入字典添加或修改页面
* @param sysDictName
* @param model
* @return
*/
@ResponseBody
@RequestMapping(value={"checkItemCode"})
public String checkItemCode(Long id, String itemCode, int dictionaryId) {
SysDataDictionaryItem item=new SysDataDictionaryItem();
item.setDictionaryId(dictionaryId);
item.setId(id);
item.setItemCode(itemCode);
if (item != null ){
List list=dictService.findDictItemList(item);
if(StringUtil.isEmpty(item.getId()) && !StringUtil.isEmpty(list) && list.size()>=1){
return "false";
}
if(!StringUtil.isEmpty(item.getId()) && !StringUtil.isEmpty(list) && list.size()>=2){
return "false";
}
}
return "true";
}
/**
* 进入字典添加或修改页面
@@ -75,6 +132,37 @@ public class DictController extends BaseController {
return "redirect:" + adminPath + "/sys/dict/list";
}
@RequestMapping(value = "saveOrUpdateItem")
public String saveOrUpdateItem(SysDataDictionaryItem sysDictItem,Model model, RedirectAttributes redirectAttributes) {
try {
dictService.saveOrUpdateItem(sysDictItem);
//删除字典缓存
CacheUtils.remove(Constants.CACHE_DICT_MAP);
addMessage(redirectAttributes,"success", "save_success");
} catch (Exception e) {
e.printStackTrace();
addMessage(redirectAttributes,"error", "save_failed");
}
return "redirect:" + adminPath + "/sys/dict/topicAndWebsiteList?dictionaryId="+sysDictItem.getDictionaryId();
}
@RequestMapping(value = "deleteItem")
public String delete(SysDataDictionaryItem item,Model model, RedirectAttributes redirectAttributes) {
try {
dictService.deleteDictItem(item);
//删除字典缓存
CacheUtils.remove(Constants.CACHE_DICT_MAP);
addMessage(redirectAttributes,"success", "delete_success");
} catch (Exception e) {
e.printStackTrace();
addMessage(redirectAttributes,"error", "delete_failed");
}
return "redirect:" + adminPath + "/sys/dict/topicAndWebsiteList?dictionaryId="+item.getDictionaryId();
}
@RequiresPermissions("sys:dict:edit")
@RequestMapping(value = "delete")
public String delete(Integer id,Model model, RedirectAttributes redirectAttributes) {

View File

@@ -15,15 +15,22 @@ public interface SysDictDao extends CrudDao<SysDataDictionaryName> {
List<SysDataDictionaryName> findDictList(SysDataDictionaryName sysDictName);
List<SysDataDictionaryItem> findDictItemList(SysDataDictionaryItem sysDictItem);
SysDataDictionaryName getDictById(@Param("DEL_FLAG_NORMAL")Integer DEL_FLAG_NORMAL,@Param("id") Integer id);
void insertDictName(SysDataDictionaryName sysDictName);
void updateDictName(SysDataDictionaryName sysDictName);
void insertDictItem(SysDataDictionaryItem sysDictitem);
int findMaxItemSort(SysDataDictionaryItem sysDictitem);
int findMaxItemCode(SysDataDictionaryItem sysDictitem);
void deleteDictItem(@Param("dictId")Integer dictId);
void deleteDictItemById(SysDataDictionaryItem sysDictitem);
void deleteDictName(@Param("dictId")Integer dictId);

View File

@@ -22,6 +22,17 @@
</collection>
</resultMap>
<resultMap id="dictItemResultMap" type="com.nis.domain.SysDataDictionaryItem" >
<id column="id" property="id" jdbcType="INTEGER" />
<result property="itemCode" column="item_code" jdbcType="VARCHAR" />
<result property="itemValue" column="item_value" jdbcType="VARCHAR" />
<result property="itemDesc" column="item_desc" jdbcType="VARCHAR" />
<result property="itemSort" column="item_sort" jdbcType="INTEGER" />
<result property="status" column="item_status" jdbcType="INTEGER" />
<result property="type" column="type" jdbcType="INTEGER" />
<result property="dictionaryId" column="dictionary_id" jdbcType="INTEGER" />
</resultMap>
@@ -112,6 +123,36 @@
</select>
<select id="findDictItemList" resultMap="dictItemResultMap" parameterType="com.nis.domain.SysDataDictionaryItem">
SELECT * FROM sys_data_dictionary_item WHERE status=1
<if test="itemCode != null and itemCode != '' " >
AND item_code = #{itemCode}
</if>
<if test="id != null " >
AND id = #{id}
</if>
<if test="itemValue != null and itemValue != '' " >
AND item_value like '%${itemValue}%'
</if>
<if test="itemDesc != null and itemDesc != '' " >
AND item_desc like '%${itemDesc}%'
</if>
<if test="dictionaryId != null" >
AND dictionary_id = #{dictionaryId}
</if>
<choose>
<when test="page !=null and page.orderBy != null and page.orderBy != ''">
ORDER BY ${page.orderBy}
</when>
<otherwise>
ORDER BY item_sort desc
</otherwise>
</choose>
</select>
<!-- 插入词典标识信息 -->
<insert id="insertDictName" parameterType="com.nis.domain.SysDataDictionaryName" useGeneratedKeys="true" keyProperty="id" >
insert into sys_data_dictionary_name (module_name, mark,
@@ -143,6 +184,11 @@
delete from sys_data_dictionary_item
where dictionary_id = #{dictId}
</delete>
<!-- 删除词典项信息 -->
<delete id="deleteDictItemById">
delete from sys_data_dictionary_item
where id = #{id} and dictionary_id= #{dictionaryId}
</delete>
<!-- 编辑词典标识信息 -->
<update id="updateDictName" parameterType="com.nis.domain.SysDataDictionaryName" >
@@ -163,4 +209,21 @@
type=#{type}, dictionary_id=#{dictionaryId}
where id = #{id,jdbcType=INTEGER}
</update>
<select id="findMaxItemCode" resultType="java.lang.Integer" parameterType="com.nis.domain.SysDataDictionaryItem">
SELECT max(item_code) FROM sys_data_dictionary_item
<where>
<if test="dictionaryId != null" >
AND dictionary_id = #{dictionaryId}
</if>
</where>
</select>
<select id="findMaxItemSort" resultType="java.lang.Integer" parameterType="com.nis.domain.SysDataDictionaryItem">
SELECT max(item_sort) FROM sys_data_dictionary_item
<where>
<if test="dictionaryId != null" >
AND dictionary_id = #{dictionaryId}
</if>
</where>
</select>
</mapper>

View File

@@ -28,6 +28,13 @@ public class DictService extends BaseService {
page.setList(dictDao.findDictList(sysDictName));
return page;
}
public Page<SysDataDictionaryItem> findDictItemList(Page<SysDataDictionaryItem> page, SysDataDictionaryItem sysDictItem) {
// 设置分页参数
sysDictItem.setPage(page);
// 执行分页查询
page.setList(dictDao.findDictItemList(sysDictItem));
return page;
}
public List<SysDataDictionaryName> findDicByName(SysDataDictionaryName sysDictName){
return dictDao.findDicByName(sysDictName.DEL_FLAG_NORMAL, sysDictName.getModuleName(),sysDictName.getMark());
@@ -90,7 +97,31 @@ public class DictService extends BaseService {
}
public void saveOrUpdateItem(SysDataDictionaryItem sysDictItem) {
if(StringUtil.isEmpty(sysDictItem.getItemCode())){
Integer maxCode=dictDao.findMaxItemCode(sysDictItem);
if(!StringUtil.isEmpty(maxCode)){
sysDictItem.setItemCode((maxCode+1)+"");
}
}
if(StringUtil.isEmpty(sysDictItem.getId())){
Integer maxSort=dictDao.findMaxItemSort(sysDictItem);
if(!StringUtil.isEmpty(maxSort)){
sysDictItem.setItemSort(maxSort+1);
}
dictDao.insertDictItem(sysDictItem);
}else{
dictDao.updateDictItem(sysDictItem);
}
}
public void deleteDictItem(SysDataDictionaryItem sysDictItem) {
//删除词典项
dictDao.deleteDictItemById(sysDictItem);
}
public void deleteDict(Integer dictId) {
//删除词典项
@@ -105,6 +136,10 @@ public class DictService extends BaseService {
return dictDao.getDictById(1,id);
}
public List findDictItemList(SysDataDictionaryItem item) {
return dictDao.findDictItemList(item);
}
public void updateDictItem(SysDataDictionaryItem sysDictItem){
dictDao.updateDictItem(sysDictItem);
}

View File

@@ -0,0 +1,2 @@
INSERT INTO `sys_menu` VALUES (1233, 109, '0,1,109,', 'website_server', '网站管理', 5030, '/sys/dict/topicAndWebsiteList?dictionaryId=111', '', 'fa fa-globe', 1, 'basic:topic:list', '1', '2019-1-7 18:58:23', '1', '2019-1-8 12:12:26', '', 1, NULL, 0, 0, NULL);
INSERT INTO `sys_menu` VALUES (1235, 109, '0,1,109,', 'topic', '主题管理', 5030, '/sys/dict/topicAndWebsiteList?dictionaryId=112', '', 'fa fa-sitemap', 1, 'basic:topic:list', '1', '2019-1-8 12:00:58', '1', '2019-1-8 12:12:44', '', 1, NULL, 0, 0, NULL);

View File

@@ -0,0 +1,167 @@
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ include file="/WEB-INF/include/taglib.jsp"%>
<html>
<head>
<title>用户管理</title>
<style type="text/css">
#items p input{
margin-left:0px;
width:80px;
}
#items p select{
width:50px;
}
</style>
<script type="text/javascript">
$(document).ready(function() {
var $inputForm = $("#inputForm");
var $error = $('.alert-error', $inputForm);
var $success = $('.alert-success', $inputForm);
$inputForm.validate({
rules: {
'itemValue':{
required:true
},
'itemCode':{
digits:true
}
},
submitHandler: function(form){
if(!validateItem()) {
return false;
}
loading('onloading...');
form.submit();
}/* ,
errorContainer: "#messageBox",
errorPlacement: function(error, element) {
$("#messageBox").text("<spring:message code='enter_error'/>");
if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
error.appendTo(element.parent().parent());
} else {
error.insertAfter(element);
}
} */
});
});
function validateItem(){
var isValid=true;
var itemCode=$("input[name='itemCode']").val();
var dictionaryId=$("input[name='dictionaryId']").val();
var id=$("input[name='id']").val();
if(itemCode != null && itemCode !=''){
$.ajax({
type:'post',
url:'${ctx}/sys/dict/checkItemCode',
data:{"itemCode":itemCode,"dictionaryId":dictionaryId,"id":id},
dataType:'text',
async:false,
success:function (data){
if(data=='true'){
$("#messageBox").addClass("hidden");
isValid= true;
}else {
$("#messageBox").text("<spring:message code='duplicate'/> <spring:message code='item_code'/>");
$("#messageBox").removeClass("hidden");
isValid= false;
}
}
});
}
return isValid;
}
</script>
</head>
<body>
<div class="page-content">
<div class="row">
<div class="theme-panel hidden-xs hidden-sm">
<button type="button" class="btn btn-default" onclick="history.go(-1)"><spring:message code="back"/></button>
</div>
<%-- <h3 class="page-title">
<spring:message code="dictManage"/>
</h3> --%>
<div class="col-md-12">
<%-- <ul class="nav nav-tabs">
<li><a href="${ctx}/sys/dict/list">字典列表</a></li>
<li class="active"><a href="${ctx}/sys/dict/form?id=${sysDataDictionaryName.id}">字典
<shiro:hasPermission name="sys:dict:edit"></shiro:hasPermission>${not empty sysDataDictionaryName.id?'修改':'添加'}
<shiro:lacksPermission name="sys:dict:edit">查看</shiro:lacksPermission>
</a></li>
</ul><br/> --%>
<div class="portlet box blue">
<div class="portlet-title">
<div class="caption">
<i class="fa fa-gift"></i><c:if test="${not empty sysDataDictionaryItem.id}"><spring:message code="edit"/></c:if><c:if test="${empty sysDataDictionaryItem.id}"><spring:message code="add"/></c:if></div>
</div>
<div class="portlet-body form">
<form:form id="inputForm" modelAttribute="sysDataDictionaryItem" action="${ctx}/sys/dict/saveOrUpdateItem" method="post" class="form-horizontal">
<form:hidden path="id"/>
<form:hidden path="dictionaryId"/>
<form:hidden path="status" value="1"/>
<form:hidden path="type" value="1"/>
<sys:message content="${message}" type="${messageType }"/>
<div id="messageBox" class="alert alert-error hidden"></div>
<div class="alert alert-error hide">
<button class="close" data-dismiss="alert"></button>
<spring:message code="submit_error"/>
</div>
<div class="alert alert-success hide">
<button class="close" data-dismiss="alert"></button>
<spring:message code="form_validate"/>
</div>
<div class="form-body">
<div class="form-group">
<label class="col-md-3 control-label"><spring:message code="item_code"/>:</label>
<div class="col-md-4">
<form:input path="itemCode" htmlEscape="false" maxlength="50" class="form-control"/>
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label"><spring:message code="item_value"/>:</label>
<div class="col-md-4">
<form:input path="itemValue" htmlEscape="false" maxlength="50" class="required form-control"/>
</div>
<span class="help-inline"><font color="red">*</font> </span>
</div>
<div class="form-group">
<label class="col-md-3 control-label"><spring:message code="desc"/>:</label>
<div class="col-md-4">
<form:textarea path="itemDesc" htmlEscape="false" rows="3" maxlength="200" class="span6 form-control"/>
</div>
</div>
<div class="form-actions">
<div class="row">
<div class="col-md-offset-3 col-md-9">
<button type="submit" class="btn btn-circle blue"><spring:message code="submit"></spring:message></button>
<button type="button" class="btn btn-circle grey-salsa btn-outline" onclick="history.go(-1)"><spring:message code="cancel"></spring:message></button>
</div>
</div>
</div>
</div>
</form:form>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,130 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ include file="/WEB-INF/include/taglib.jsp"%>
<html>
<head>
<title>字典管理</title>
<style type="text/css">
.revisionBox {
margin: 5px;
}
span.label.label-success{
width: 250px;
}
.popover {
max-width: 800px;
}
.btn.purple-stripe {
border-left: 3px solid #852B99;
}
</style>
<script type="text/javascript">
function page(n,s){
if(n) $("#pageNo").val(n);
if(s) $("#pageSize").val(s);
$("#searchForm").attr("action","${ctx}/sys/dict/topicAndWebsiteList");
$("#searchForm").submit();
return false;
}
</script>
</head>
<body>
<div class="page-content">
<div class="theme-panel hidden-xs hidden-sm">
<button type="button" class="btn btn-primary" onClick="javascript:window.location='${ctx}/sys/dict/dictItemForm?dictionaryId=${sysDataDictionaryItem.dictionaryId }'">
<i class="fa fa-plus"></i>
<spring:message code="add"/></button>
</div>
<h3 class="page-title">
<spring:message code="dictManage"></spring:message>
</h3>
<h5 class="page-header"></h5>
<div class="row">
<div class="col-md-12">
<div class="portlet">
<div class="portlet-body">
<div class="row" >
<form:form id="searchForm" action="${ctx}/sys/dict/topicAndWebsiteList" method="post" class="form-search">
<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
<input id="dictionaryId" name="dictionaryId" type="hidden" value="${sysDataDictionaryItem.dictionaryId}"/>
<sys:tableSort id="orderBy" name="orderBy" value="${page.orderBy}" callback="page();"/>
<!-- 搜索内容与操作按钮栏 -->
<div class="col-md-12 filter-action-select-panle" style="background-color:transparent">
<div class="row">
<div class="col-md-2">
<div class="form-group">
<label><spring:message code="item_code"/></label>
<input id="itemCode" name="itemCode" type="text" maxlength="50" class="form-control" value="${sysDataDictionaryItem.itemCode}"/>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label><spring:message code="item_value"/></label>
<input id="itemValue" name="itemValue" type="text" maxlength="50" class="form-control" value="${sysDataDictionaryItem.itemValue}"/>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label><spring:message code="desc"/></label>
<input id="itemDesc" name="itemDesc" type="text" maxlength="50" class="form-control" value="${sysDataDictionaryItem.itemDesc}"/>
</div>
</div>
<div class="col-md-1">
<div class="form-group">
<label>&nbsp;</label>
<button type="submit" class="btn blue form-control"><i class="fa fa-search"></i><spring:message code="search" /></button>
</div>
</div>
</div>
</div>
</form:form>
</div>
<sys:message content="${message}" type="${messageType }" />
<br>
<table id="contentTable1" class="table table-striped table-bordered table-condensed">
<thead>
<tr>
<th class="sort-column item_code" width="15%"><spring:message code="itemCode"/></th>
<th class="sort-column item_value" width="20%"><spring:message code="itemValue"/></th>
<th class="sort-column item_desc" width="15%"><spring:message code="itemDesc"/></th>
<th width="15%"><spring:message code="operation"/></th>
</tr>
</thead>
<tbody>
<c:forEach items="${page.list}" var="dict">
<tr>
<td>${dict.itemCode}</td>
<td>${dict.itemValue}</td>
<td title="${dict.itemDesc }">${fns:abbr(dict.itemDesc,200)}</td>
<td><a href="${ctx}/sys/dict/dictItemForm?dictionaryId=${sysDataDictionaryItem.dictionaryId}&id=${dict.id}">update</a>
<a href="${ctx}/sys/dict/deleteItem?dictionaryId=${sysDataDictionaryItem.dictionaryId}&id=${dict.id}">delete</a></td>
</tr>
</c:forEach>
</tbody>
</table>
<div class="page">${page}</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>