Compare commits

...

3 Commits

@ -0,0 +1,150 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>前端菜单管理</title>
<#include "/head/headaddedit.html" />
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>基本信息</h5>
</div>
<div class="ibox-content">
<div class="main-content">
<form name="SFrontmenuTform" method="post" id="SFrontmenuTform" class="form-horizontal" action="${ctx}/backstage/sfrontmenut/save">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 菜单名称:</label>
<div class="col-sm-9">
<input name="name" id="name" class="form-control" placeholder="菜单名称" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 菜单关键字:</label>
<div class="col-sm-9">
<input name="reskey" id="reskey" class="form-control" placeholder="菜单关键字" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 菜单链接:</label>
<div class="col-sm-9">
<input name="resurl" id="resurl" class="form-control" placeholder="菜单链接" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 描述:</label>
<div class="col-sm-9">
<input name="description" id="description" class="form-control" placeholder="描述" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-sm-offset-5">
<button id="savebutton" type="submit" class="btn btn-w-m btn-primary">保存</button>
<button type="button" onclick="rolesback()" class="btn btn-w-m btn-success">取消</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<#include "/head/footadd.html" />
<script type="text/javascript">
$(document).ready(function () {
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
$("#SFrontmenuTform").attr("action","${ctx}/backstage/oa/frontmenu/save");
var form1 = $('#SFrontmenuTform');
var error1 = $('.alert-danger', form1);
form1.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: "",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
parent.layer.load();
$("#savebutton").addClass('disabled');
$("#SFrontmenuTform").ajaxSubmit({
headers:{"logintoken": parent.getLoginToken()},
success:function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
parent.toastr.success(data.message);
rolesback();
}else if(data.code == "ERRORM"){
$.each(data.message,function(name,anArray) {
$.each(anArray,function(n,value){
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr( "id", n + "-error" ).addClass("help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
}else{
$("#savebutton").addClass('removeClass');
parent.toastr.error(data.message);
}
}
});
}
});
});
function rolesback() {
parent.closeItem(window.frameElement.name);
}
</script>
</body>
</html>

@ -0,0 +1,166 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>前端菜单管理</title>
<#include "/head/headaddedit.html" />
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>基本信息</h5>
</div>
<div class="ibox-content">
<div class="main-content">
<form name="SFrontmenuTform" method="post" id="SFrontmenuTform" class="form-horizontal" action="${ctx}/backstage/sfrontmenut/edit">
<input type="hidden" id="id" name="id">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 菜单名称:</label>
<div class="col-sm-9">
<input name="name" id="name" class="form-control" placeholder="菜单名称" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 菜单关键字:</label>
<div class="col-sm-9">
<input name="reskey" id="reskey" class="form-control" placeholder="菜单关键字" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 菜单链接:</label>
<div class="col-sm-9">
<input name="resurl" id="resurl" class="form-control" placeholder="菜单链接" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 描述:</label>
<div class="col-sm-9">
<input name="description" id="description" class="form-control" placeholder="描述" class="form-control" type="text" maxlength='100' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-sm-offset-5">
<button type="submit" class="btn btn-w-m btn-primary">保存</button>
<button type="button" onclick="rolesback()" class="btn btn-w-m btn-success">取消</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<#include "/head/footadd.html" />
<script type="text/javascript">
$(document).ready(function () {
parent.axgetXiaoyao('${ctx}/backstage/oa/frontmenu/getdata/${id}',null,false , function(data){
if(data.code == "OK"){
$("#id").val(data.data.id);
$("#name").val(data.data.name);
$("#parentid").val(data.data.parentid);
$("#reskey").val(data.data.reskey);
$("#resurl").val(data.data.resurl);
$("#level").val(data.data.level);
$("#icon").val(data.data.icon);
$("#ordernum").val(data.data.ordernum);
$("#ishide").val(data.data.ishide);
$("#description").val(data.data.description);
}else{
parent.toastr.error("非法请求。");
}
});
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
$("#SFrontmenuTform").attr("action","${ctx}/backstage/oa/frontmenu/edit");
var form1 = $('#SFrontmenuTform');
var error1 = $('.alert-danger', form1);
form1.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: ":hidden",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
parent.layer.load();
$("#SFrontmenuTform").ajaxSubmit({
headers:{"logintoken": parent.getLoginToken()},
success:function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
parent.toastr.success(data.message);
rolesback();
}else if(data.code == "ERRORM"){
$.each(data.message,function(name,anArray) {
$.each(anArray,function(n,value){
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr( "id", n + "-error" ).addClass("help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
}else{
parent.toastr.error(data.message);
}
}
});
}
});
});
function rolesback() {
parent.closeItem(window.frameElement.name);
}
</script>
</body>
</html>

@ -0,0 +1,201 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>前端菜单管理</title>
<#include "/head/headlist.html" />
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="ibox ">
<div class="ibox-content">
<div class="ibox-content">
<form id="searcheuser" class="form-inline">
<div class="form-group">
<input name='search_name' id='search_name' class='form-control' placeholder='name'/>
</div>
<div class="form-group">
<a class="btn btn-primary btn-rounded btn-sm" onclick="refreshTable()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$('#searcheuser')[0].reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</div>
</form>
</div>
</div>
</div>
<div class="ibox-content">
<div class="row row-lg">
<div class="col-sm-12">
<div class="container-div">
<div class="btn-group-sm" id="_mybutton" role="group">
</div>
<br/>
</div>
</div>
<div class="col-sm-12 select-table table-striped" >
<table id="SFrontmenuT_list" ></table>
</div>
</div>
</div>
</div>
<#include "/head/footlist.html" />
</body>
</html>
<script type="text/javascript">
var _tableListSFrontmenuT;
var jsptoolbar = '';
var jspOperation = '';
jQuery(document).ready(function($){
parent.axgetXiaoyao("${ctx}/backstage/admin/user/toolsbarOperation?" + "resourceid=${resourceid}",null,true ,
function(data){
if(data.code == "OK"){
jsptoolbar = data.data.Jsptoolbar;
jspOperation = data.data.JspOperation;
$("#_mybutton").empty();
$(jsptoolbar).each(function (i, toolbar) {
if(toolbar.methodid != '104'){
$("#_mybutton").append('<button class="btn sbold ' + toolbar.img + '" onClick="' + toolbar.actionmethod + '(\'${resourceid}' + toolbar.methodid + '\')"> ' + ' <i class="fa ' + toolbar.methodkey + '"></i> ' + toolbar.text + '</button>&nbsp');
}
});
_tableListSFrontmenuT = $('#SFrontmenuT_list').bootstrapTable({
url: '${ctx}/backstage/oa/frontmenu/list' ,
pagination: true, //是否显示分页(*
pageNumber:1, //初始化加载第一页,默认第一页
pageSize: 10, //每页的记录行数(*
sidePagination: "server",
height: "300", pageList: [10, 25, 50],
ajaxOptions:{
headers: {"logintoken": parent.getLoginToken()}
},
queryParams: function queryParams(params) {
return {
sortorder: params.order,
sortname: params.sort,
pagesize: params.limit,
start: (params.offset / params.limit) + 1,
search_name:'{"value":"' + $("#search_name").val() + '","op":"equal","type":"string"}'
};
},
responseHandler:function(res){
return{"rows": res.data.records, "total": res.data.total};
},
columns: [
{checkbox: true},
{ width:150,valign: "middle",field:'name',title:'菜单名称',sortable:true},
{ width:150,valign: "middle",field:'reskey',title:'菜单关键字',sortable:true},
{ width:150,valign: "middle",field:'resurl',title:'菜单链接',sortable:true},
{ width:150,valign: "middle",field:'description',title:'描述',sortable:true},
{
width:200,
field: 'id',
title: '操作',
formatter:function(value,oData,index) {
var listOperation = "";
$(jspOperation).each(function (i, toolbar) {
listOperation = listOperation + "<a href=\"javascript:" + toolbar.actionmethod + "('${resourceid}" + toolbar.methodid + "','" + oData.id + "');\" class=\"btn " + toolbar.img + " btn-xs\")><i class=\"fa " + toolbar.methodkey + "\"></i> " + toolbar.text + " </a>&nbsp;&nbsp;";
});
return listOperation;
}
}
]
});
}
}
);
});
function getIdSelections() {
return $.map(_tableListSFrontmenuT.bootstrapTable('getSelections'), function(row) {
return row.id
});
}
function t_actiongrant(jframeid){
parent._xiaoyaoOpenMenuTab('${ctx}/backstage/oa/userfrontmenuHtml/showlist',"人员授权管理",jframeid + '_action');
}
function _useradd(jframeid){
parent._xiaoyaoOpenMenuTab('${ctx}/backstage/oa/frontmenuHtml/toSave',"添加前端菜单管理",jframeid + '_add');
}
function updateData(jframeid,str){
var url = '${ctx}/backstage/oa/frontmenuHtml/toEdit/' + str ;
parent._xiaoyaoOpenMenuTab(url,"修改前端菜单管理",jframeid + '_edit');
}
function _useredit(jframeid){
var str = getIdSelections() + "";
var tempstr = str.split(",");
if(str.length > 0 && tempstr.length > 1){
parent.toastr.error("每次只能修改一条信息。");
}else{
if (str.length > 0) {
updateData(jframeid,str);
} else {
parent.toastr.error("至少选择一条信息操作。");
}
}
}
function t_delete(str){
parent.layer.closeAll('loading');
parent.axgetXiaoyao('${ctx}/backstage/oa/frontmenu/delmore' , {id:str},false, function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
swal(data.message, "您已经永久删除了这条信息。", "success");
refreshTable();
}else{
swal(data.message, "遇到未知错误!", "error");
}
});
}
function _deletebu(sourceid){
var str = getIdSelections() + "";
var tempstr = str.split(",");
if (str.length > 0 && tempstr.length > 0) {
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "是的,我要删除!",
cancelButtonText: "让我再考虑一下…",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
t_delete(str);
} else {
swal("已取消", "您取消了删除操作!", "error");
}
});
} else {
parent.toastr.error("至少选择一条数据操作");
}
}
function _delete(sourceid,str){
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "是的,我要删除!",
cancelButtonText: "让我再考虑一下…",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
t_delete(str);
} else {
swal("已取消", "您取消了删除操作!", "error");
}
});
}
function refreshTable(sourceid){
_tableListSFrontmenuT.bootstrapTable('refreshOptions',{pageNumber:1});
}
</script>

@ -0,0 +1,246 @@
<#include "../../../common/taglibs.html" />
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>管理员列表</title>
<meta name="keywords" content="管理员列表">
<meta name="description" content="管理员列表">
<#include "/head/headlist.html" />
<link href="${ctx}/static/css/plugins/iCheck/custom.css" rel="stylesheet">
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="ibox ">
<div class="ibox-content">
<form id="searcheuser" class="form-inline">
<div class="form-group">
<input name='search_loginname' id='search_loginname' class="form-control" placeholder='登陆账号'/>
</div>
<div class="form-group">
<input name='search_username' id='search_username' class='form-control' placeholder='姓名'/>
</div>
<div class="form-group">
<select class="form-control" name='search_usex' id='search_usex'>
<option value="">性别</option>
<option value="0"></option>
<option value="1"></option>
</select>
</div>
<a class="btn btn-primary btn-rounded btn-sm" onclick="refreshTable()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$('#searcheuser')[0].reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</form>
</div>
</div>
<!-- Panel Other -->
<div class="ibox-content">
<div class="row row-lg">
<div class="col-sm-12 select-table table-striped" >
<table id="user_list" >
</table>
</div>
</div>
</div>
<!-- End Panel Other -->
</div>
<div class="modal inmodal fade" id="frontMenumodal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content animated flipInY">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
<h6 class="modal-title">选择前端菜单</h6>
</div>
<div class="modal-body" id="frontmenuidCheckboxList">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-white" data-dismiss="modal">关闭</button>
<button type="button" onclick="saveFm()" class="btn btn-primary">保存</button>
</div>
</div>
</div>
</div>
<#include "/head/footlist.html" />
<script src="${ctx}/static/js/plugins/iCheck/icheck.min.js"></script>
<script >
var $frontMenumodal = $('#frontMenumodal');
var _userlisttable;
var selectUserid = "";
function selectFrontMenuTree(){
$frontMenumodal.modal();
$frontMenumodal.css("z-index",(parent.getMaxZIndex() + 1));
}
function closeFrontMenu(){
$frontMenumodal.modal('hide');
}
$(function(){
_userlisttable = $('#user_list').bootstrapTable({
url: '${ctx}/backstage/oa/userfrontmenu/list',
pagination: true, //是否显示分页(*
pageNumber:1, //初始化加载第一页,默认第一页
pageSize: 10, //每页的记录行数(*
sidePagination: "server",
pageList: [10, 25, 50,100],
height: "100%",
ajaxOptions:{
headers: {"logintoken": parent.getLoginToken()}
},
queryParams: function queryParams(params) {
return {
sortorder: params.order,
sortname: params.sort,
pagesize: params.limit,
start: (params.offset / params.limit) + 1,
search_loginname:'{"value":"' + $("#search_loginname").val() + '","op":"like","type":"string"}',
search_username:'{"value":"' + $("#search_username").val() + '","op":"like","type":"string"}',
search_usex:'{"value":"' + $("#search_usex").val() + '","op":"equal","type":"string"}',
};
},
responseHandler:function(res){
//console.log(res)
return{"rows": res.data.records, "total": res.data.total};
},
columns: [
{checkbox: true},
{ width:150,valign: "middle",field:'loginname',title:'登陆账号',sortable:true},
{ width:150,valign: "middle",field:'username',title:'用户名',sortable:true},
{ width:150,valign: "middle",field:'departname',title:'所属部门',sortable:true},
{ width:60,valign: "middle",field:'enabled',title:'是否可用',sortable:true,
formatter:function(value,oData,index) {
var listOperation = "";
if(oData.enabled == 1){
listOperation = "启用";
}else{
listOperation = "禁用";
}
return listOperation;
}
},
{ width:60,valign: "middle",field:'usex',title:'性别',sortable:true,
formatter:function(value,oData,index) {
var listOperation = "";
if(oData.usex == 1){
listOperation = "男";
}else{
listOperation = "女";
}
return listOperation;
}
},
{ width:100,valign: "middle",field:'mobile',title:'手机号',sortable:true},
{ width:150,valign: "middle",field:'email',title:'电子邮箱',sortable:true},
{
width:200,
field: 'caozuo',
title: '操作',
formatter:function(value,oData,index) {
var listOperation = '<a href="javascript:setFrontMenuData(\'' + oData.id + '\',\'' + index + '\');" class="btn btn-primary btn-xs" )=""><i class="fa fa-pencil"></i> 设置权限 </a>'
return [listOperation].join('&nbsp;&nbsp;');
}
}
]
});
});
function setFrontMenuData(usrid,selectIndex){
selectUserid = usrid;
var getdata = _userlisttable.bootstrapTable('getData');
var usermodelinfo = getdata[selectIndex];
var selectMenu = usermodelinfo.tempList;
console.log(usermodelinfo);
parent.axgetXiaoyao('${ctx}/backstage/oa/frontmenu/list' , {pagesize:100},false, function(dataMenu){
if(dataMenu.code == "OK"){
var showcheckstring = '';
var tempcount = 0;//记录循环的次数
var data = dataMenu.data;
$(data.records).each(function(idx,item){
var checked = "";
$(selectMenu).each(function (midx,mitem){
if(mitem.id == item.id){
checked = "checked";
}
})
tempcount++;
showcheckstring = showcheckstring + '<label class="checkbox-inline i-checks">';
showcheckstring = showcheckstring + '<input type="checkbox" name="frontmenuid" id="' + item.id + '" ' + checked + ' value="' + item.id + '" required="true" minlength="1">&nbsp;';
showcheckstring = showcheckstring + item.name + '</label>';
if(tempcount%5 == 0 ){
showcheckstring = showcheckstring + "<br/>";
}
});
console.log(data)
console.log(showcheckstring)
$("#frontmenuidCheckboxList").html(showcheckstring);
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
}
console.log(data);
});
selectFrontMenuTree();
}
function saveFm(){
var fmids = "";
$('input[name="frontmenuid"]:checked').each(function() {
var value = $(this).val();
if(fmids.length >= 1){
fmids = fmids + "," + value;
}else{
fmids = value;
}
});
if(fmids.length < 1){
parent.toastr.error("选择菜单");
return;
}else{
parent.axpostXiaoyao('${ctx}/backstage/oa/userfrontmenu/saveactiongrant' , {menuids:fmids,userid:selectUserid},false, function(data){
if(data.code == "OK"){
parent.toastr.success("设置完毕。");
closeFrontMenu();
refreshTable();
}else{
parent.toastr.error("失败。");
}
});
}
console.log("fmids===================" + fmids)
}
function refreshTable(){
_userlisttable.bootstrapTable('refreshOptions',{pageNumber:1});
}
</script>
</body>
</html>

@ -184,6 +184,10 @@ public class User implements BaseDto,java.io.Serializable {
//前端菜单展示列表权限
@TableField(exist = false)
private List<SFrontmenuT> frontmenuTList = new ArrayList<>();
//临时保存集合使用
@TableField(exist = false)
private List tempList = new ArrayList<>();
public UserToken getUserToken(){

@ -0,0 +1,113 @@
package cn.jyjz.xiaoyao.frontmenu.controller;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.jyjz.xiaoyao.common.base.util.RequestBaseUtil;
import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.common.mybatisplus.util.SearchQueryFormat;
import cn.jyjz.xiaoyao.frontmenu.dataobject.Frontmenu;
import cn.jyjz.xiaoyao.frontmenu.service.FrontmenuService;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import cn.jyjz.xiaoyao.admin.service.UserService;
import cn.jyjz.xiaoyao.common.base.service.UserTokenService;
import cn.jyjz.xiaoyao.common.base.controller.BaseController;
import cn.jyjz.xiaoyao.common.base.param.ParamterPage;
import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery;
import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@RestController
@RequestMapping("/backstage/oa/frontmenu")
public class FrontmenuController extends BaseController{
private Logger log = LoggerFactory.getLogger(this.getClass());
@Autowired
private FrontmenuService frontmenuService;
@Autowired
private UserTokenService userTokenService;
@Autowired
private UserService userService;
/**
*jsondto
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@GetMapping("/list")
public ResultVo<IPage<Frontmenu>> listSFrontmenuT(ParamterPage paramterPage, HttpServletRequest request, HttpServletResponse response) throws IOException{
SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request, "search_");
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
cn.jyjz.xiaoyao.admin.dataobject.User user = this.userService.getSessionUser(request);
Frontmenu sfrontmenut = new Frontmenu();
sfrontmenut.setSearchQueryrolesShowleave(user.getSearchQueryrolesShowleave());
QueryWrapper<Frontmenu> queryWrapper = SearchQueryFormat.queryStringFormat(searchQuery,sfrontmenut);
IPage<Frontmenu> page = this.frontmenuService.selectSearchListPage(paramterPage,queryWrapper);;
return ResultVoUtil.success(page);
}
/**
*
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@PostMapping("/save")
public ResultVo saveSFrontmenuT(HttpServletResponse response,HttpServletRequest request,Frontmenu tab) throws IOException{
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
this.frontmenuService.save(tab);
return ResultVoUtil.success();
}
/**
*form
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@PostMapping("/edit")
public ResultVo editSFrontmenuT(HttpServletResponse response,HttpServletRequest request,Frontmenu tab) throws IOException{
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
this.frontmenuService.updateById(tab);
return ResultVoUtil.success();
}
/**
*
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@GetMapping("/getdata/{id}")
@ResponseBody
public ResultVo getdateSFrontmenuT(HttpServletResponse response,HttpServletRequest request,@PathVariable("id") Long id) throws IOException{
Frontmenu dto = this.frontmenuService.selectDtoById(id);
if(null != dto){
return ResultVoUtil.success(dto);
}else{
return ResultVoUtil.error();
}
}
/**
*id1,2,3
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@GetMapping("/delmore")
@ResponseBody
public ResultVo delMoreSFrontmenuT(HttpServletResponse response,HttpServletRequest request) throws IOException{
String ids = request.getParameter("id");
this.frontmenuService.deleteByIdMore(ids);
return ResultVoUtil.success();
}
}

@ -0,0 +1,69 @@
package cn.jyjz.xiaoyao.frontmenu.controller;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.jyjz.xiaoyao.frontmenu.service.FrontmenuService;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import cn.jyjz.xiaoyao.admin.service.UserService;
import cn.jyjz.xiaoyao.common.base.service.UserTokenService;
import cn.jyjz.xiaoyao.common.base.controller.BaseController;
@Controller
@RequestMapping("/backstage/oa/frontmenuHtml")
public class FrontmenuHtmlController extends BaseController{
private Logger log = LoggerFactory.getLogger(this.getClass());
@Autowired
private FrontmenuService frontmenuService;
@Autowired
private UserTokenService userTokenService;
@Autowired
private UserService userService;
/**
*
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@GetMapping("/toList")
public String toListSFrontmenuT(HttpServletResponse response,HttpServletRequest request){
String resourceid = request.getParameter("resourceid");
request.setAttribute("resourceid",resourceid);
return "/backstage/oa/frontmenu/list";
}
/**
*
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@GetMapping("/toSave")
public String toSaveSFrontmenuT(HttpServletResponse response,HttpServletRequest request){
String resourceid = request.getParameter("resourceid");
request.setAttribute("resourceid",resourceid);
return "/backstage/oa/frontmenu/add";
}
/**
*ID
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@GetMapping("/toEdit/{id}")
public String toEditSFrontmenuT(HttpServletResponse response,HttpServletRequest request,@PathVariable("id") String id){
String resourceid = request.getParameter("resourceid");
request.setAttribute("resourceid",resourceid);
request.setAttribute("id", id);
return "/backstage/oa/frontmenu/edit";
}
}

@ -0,0 +1,104 @@
package cn.jyjz.xiaoyao.frontmenu.controller;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.jyjz.xiaoyao.admin.dataobject.User;
import cn.jyjz.xiaoyao.common.base.util.RequestBaseUtil;
import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.common.mybatisplus.util.SearchQueryFormat;
import cn.jyjz.xiaoyao.frontmenu.dataobject.Frontmenu;
import cn.jyjz.xiaoyao.frontmenu.dataobject.UserFrontmenu;
import cn.jyjz.xiaoyao.frontmenu.service.UserFrontmenuService;
import com.alanpoi.common.util.StringUtils;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import cn.jyjz.xiaoyao.admin.service.UserService;
import cn.jyjz.xiaoyao.common.base.service.UserTokenService;
import cn.jyjz.xiaoyao.common.base.controller.BaseController;
import cn.jyjz.xiaoyao.common.base.param.ParamterPage;
import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery;
import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@RestController
@RequestMapping("/backstage/oa/userfrontmenu")
public class UserFrontmenuController extends BaseController{
private Logger log = LoggerFactory.getLogger(this.getClass());
@Autowired
private UserFrontmenuService userFrontmenuService;
@Autowired
private UserTokenService userTokenService;
@Autowired
private UserService userService;
/**
*jsondto
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@GetMapping("/list")
public ResultVo<IPage<User>> listUserFrontmenu(ParamterPage paramterPage, HttpServletRequest request, HttpServletResponse response) throws IOException{
SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request, "search_");
User user = this.userService.getSessionUser(request);
QueryWrapper<User> queryWrapper = SearchQueryFormat.queryStringFormat(searchQuery,user,"u.");
queryWrapper.ne("u.ID",user.getId());
IPage<User> page = this.userService.selectSearchListPage(paramterPage,queryWrapper);
for(User usermodel:page.getRecords()){
//查询关联的菜单集合
List<Frontmenu> list = this.userFrontmenuService.listByUserid(usermodel.getId().toString());
usermodel.setTempList(list);
}
return ResultVoUtil.success(page);
}
/**
*
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@PostMapping("/saveactiongrant")
public ResultVo saveSUserFrontmenuT(HttpServletResponse response,HttpServletRequest request) throws IOException{
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
//获取选中的前端菜单主键
String menuids = request.getParameter("menuids");
String userid = request.getParameter("userid");
if(StringUtils.isNotBlank(menuids)){
String[] mids = menuids.split(",");
List<UserFrontmenu> userFrontmenuList = new ArrayList<>();
for(String mid:mids){
UserFrontmenu userFrontmenu = new UserFrontmenu();
userFrontmenu.setMenuid(Long.parseLong(mid));
userFrontmenu.setUserid(Long.parseLong(userid));
userFrontmenuList.add(userFrontmenu);
}
//保存之前先删除关联
this.userFrontmenuService.removeByUserid(userid);
return this.userFrontmenuService.saveBatch(userFrontmenuList)?ResultVoUtil.success():ResultVoUtil.error();
}
return ResultVoUtil.error();
}
}

@ -0,0 +1,45 @@
package cn.jyjz.xiaoyao.frontmenu.controller;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.jyjz.xiaoyao.frontmenu.service.UserFrontmenuService;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import cn.jyjz.xiaoyao.admin.service.UserService;
import cn.jyjz.xiaoyao.common.base.service.UserTokenService;
import cn.jyjz.xiaoyao.common.base.controller.BaseController;
@Controller
@RequestMapping("/backstage/oa/userfrontmenuHtml")
public class UserFrontmenuHtmlController extends BaseController{
private Logger log = LoggerFactory.getLogger(this.getClass());
@Autowired
private UserFrontmenuService userFrontmenuService;
@Autowired
private UserTokenService userTokenService;
@Autowired
private UserService userService;
/**
*
*mail.zhangyong@gmail.com
*2024-04-21 20:49:27
**/
@GetMapping("/showlist")
public String toListSUserFrontmenuT(HttpServletResponse response,HttpServletRequest request){
request.setAttribute("resourceid","3");
return "/backstage/oa/frontmenu/userfrontmenu";
}
}

@ -0,0 +1,11 @@
package cn.jyjz.xiaoyao.frontmenu.dataDao;
import cn.jyjz.xiaoyao.frontmenu.dataobject.Frontmenu;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
*
*/
@Mapper
public interface FrontmenuMybatisDao extends BaseMapper<Frontmenu> {
}

@ -0,0 +1,11 @@
package cn.jyjz.xiaoyao.frontmenu.dataDao;
import cn.jyjz.xiaoyao.frontmenu.dataobject.UserFrontmenu;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
*
*/
@Mapper
public interface UserFrontmenuMybatisDao extends BaseMapper<UserFrontmenu> {
}

@ -0,0 +1,103 @@
package cn.jyjz.xiaoyao.frontmenu.dataobject;
import cn.jyjz.xiaoyao.common.mybatisplus.dto.BaseDto;
import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Map;
import java.util.AbstractMap.SimpleEntry;
import java.util.stream.Stream;
import java.util.stream.Collectors;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "前端菜单管理", title = "前端菜单管理")
@TableName(value = "s_frontmenu_t")
public class Frontmenu implements BaseDto,java.io.Serializable {
private static final long serialVersionUID = -7176960824610287118L;
@Schema(description = "主键ID")
@TableId(value = "id",type = IdType.ASSIGN_ID)
@JsonSerialize(using = ToStringSerializer.class)
@TableField(value="id")
private Long id;
@Schema(description = "null")
@TableField(value="name")
private String name;
@Schema(description = "父级菜单ID")
@TableField(value="parentId")
private Integer parentid;
@Schema(description = "null")
@TableField(value="resKey")
private String reskey;
@Schema(description = "null")
@TableField(value="resUrl")
private String resurl;
@Schema(description = "菜单级别")
@TableField(value="level")
private Integer level;
@Schema(description = "null")
@TableField(value="icon")
private String icon;
@Schema(description = "菜单排序")
@TableField(value="orderNum")
private Integer ordernum;
@Schema(description = "菜单是否隐藏0:否,1:是)")
@TableField(value="ishide")
private Integer ishide;
@Schema(description = "null")
@TableField(value="description")
private String description;
//保存当前登录用户的数据权限范围的搜索条件
@TableField(exist = false)
private SearchQuery searchQueryrolesShowleave;
@TableField(exist = false)
private final Map<String,String> query = Stream.of(
new SimpleEntry<>("LISTDEPT","deptid"),
new SimpleEntry<>("ID","id"),
new SimpleEntry<>("NAME","name"),
new SimpleEntry<>("PARENTID","parentid"),
new SimpleEntry<>("RESKEY","reskey"),
new SimpleEntry<>("RESURL","resurl"),
new SimpleEntry<>("LEVEL","level"),
new SimpleEntry<>("ICON","icon"),
new SimpleEntry<>("ORDERNUM","ordernum"),
new SimpleEntry<>("ISHIDE","ishide"),
new SimpleEntry<>("DESCRIPTION","description")
)
.collect(Collectors.toMap(SimpleEntry::getKey, SimpleEntry::getValue));
@Override
public String getQueryFiled(String filedname){
String obj = null;
if(null != query && query.size() > 0){
obj = query.get(filedname);
}
return obj;
}
}

@ -0,0 +1,57 @@
package cn.jyjz.xiaoyao.frontmenu.dataobject;
import cn.jyjz.xiaoyao.common.mybatisplus.dto.BaseDto;
import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Map;
import java.util.AbstractMap.SimpleEntry;
import java.util.stream.Stream;
import java.util.stream.Collectors;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "用户和前端菜单关系表", title = "用户和前端菜单关系表")
@TableName(value = "s_user_frontmenu_t")
public class UserFrontmenu implements BaseDto,java.io.Serializable {
private static final long serialVersionUID = 3139365577414759746L;
@Schema(description = "用户主键id")
@TableField(value="userId")
private Long userid;
@Schema(description = "菜单ID")
@TableField(value="menuId")
private Long menuid;
//保存当前登录用户的数据权限范围的搜索条件
@TableField(exist = false)
private SearchQuery searchQueryrolesShowleave;
@TableField(exist = false)
private final Map<String,String> query = Stream.of(
new SimpleEntry<>("listdept","deptid"),
new SimpleEntry<>("userId","userid"),
new SimpleEntry<>("menuId","menuid")
)
.collect(Collectors.toMap(SimpleEntry::getKey, SimpleEntry::getValue));
@Override
public String getQueryFiled(String filedname){
String obj = null;
if(null != query && query.size() > 0){
obj = query.get(filedname);
}
return obj;
}
}

@ -0,0 +1,11 @@
package cn.jyjz.xiaoyao.frontmenu.service;
import java.util.List;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseService;
import cn.jyjz.xiaoyao.frontmenu.dataobject.Frontmenu;
/**
*
*/
public interface FrontmenuService extends BaseService<Frontmenu> {
}

@ -0,0 +1,26 @@
package cn.jyjz.xiaoyao.frontmenu.service;
import java.util.List;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseService;
import cn.jyjz.xiaoyao.frontmenu.dataobject.Frontmenu;
import cn.jyjz.xiaoyao.frontmenu.dataobject.UserFrontmenu;
/**
*
*/
public interface UserFrontmenuService extends BaseService<UserFrontmenu> {
/**
*
* @param userid
* @return
*/
public List<Frontmenu> listByUserid(String userid);
/**
*
* @param userid
* @return
*/
public boolean removeByUserid(String userid);
}

@ -0,0 +1,20 @@
package cn.jyjz.xiaoyao.frontmenu.service.impl;
import cn.jyjz.xiaoyao.frontmenu.dataDao.FrontmenuMybatisDao;
import cn.jyjz.xiaoyao.frontmenu.dataobject.Frontmenu;
import cn.jyjz.xiaoyao.frontmenu.service.FrontmenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl;
import lombok.extern.slf4j.Slf4j;
/**
*
*/
@Service
@Slf4j
public class FrontmenuServiceImpl extends BaseServiceImpl<FrontmenuMybatisDao, Frontmenu> implements FrontmenuService {
@Autowired
private FrontmenuMybatisDao frontmenuMybatisDao;
}

@ -0,0 +1,64 @@
package cn.jyjz.xiaoyao.frontmenu.service.impl;
import cn.jyjz.xiaoyao.frontmenu.dataDao.UserFrontmenuMybatisDao;
import cn.jyjz.xiaoyao.frontmenu.dataobject.Frontmenu;
import cn.jyjz.xiaoyao.frontmenu.dataobject.UserFrontmenu;
import cn.jyjz.xiaoyao.frontmenu.service.FrontmenuService;
import cn.jyjz.xiaoyao.frontmenu.service.UserFrontmenuService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
*
*/
@Service
@Slf4j
public class UserFrontmenuServiceImpl extends BaseServiceImpl<UserFrontmenuMybatisDao, UserFrontmenu> implements UserFrontmenuService {
@Resource
private UserFrontmenuMybatisDao userFrontmenuMybatisDao;
@Resource
private FrontmenuService frontmenuService;
/**
*
* @param userid
* @return
*/
public List<Frontmenu> listByUserid(String userid){
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("userId",userid);
List<UserFrontmenu> userFrontmenuList = this.userFrontmenuMybatisDao.selectList(queryWrapper);
List<Frontmenu> list = null;
if(null != userFrontmenuList && !userFrontmenuList.isEmpty()){
List<Long> ufidList = userFrontmenuList.stream().map(UserFrontmenu::getMenuid).collect(Collectors.toList());
QueryWrapper fmQuery = new QueryWrapper();
fmQuery.in("id",ufidList);
list = this.frontmenuService.selectSearchList(fmQuery);
}
return list;
}
/**
*
* @param userid
* @return
*/
public boolean removeByUserid(String userid){
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("userId",userid);
return this.remove(queryWrapper);
}
}

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.jyjz.xiaoyao.frontmenu.dataDao.FrontmenuMybatisDao">
<resultMap id="BaseResultMap" type="cn.jyjz.xiaoyao.frontmenu.dataobject.Frontmenu">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="name" property="name" jdbcType="VARCHAR"/>
<result column="parentId" property="parentid" jdbcType="INTEGER"/>
<result column="resKey" property="reskey" jdbcType="VARCHAR"/>
<result column="resUrl" property="resurl" jdbcType="VARCHAR"/>
<result column="level" property="level" jdbcType="INTEGER"/>
<result column="icon" property="icon" jdbcType="VARCHAR"/>
<result column="orderNum" property="ordernum" jdbcType="INTEGER"/>
<result column="ishide" property="ishide" jdbcType="INTEGER"/>
<result column="description" property="description" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
id AS id,
name AS name,
parentId AS parentid,
resKey AS reskey,
resUrl AS resurl,
level AS level,
icon AS icon,
orderNum AS ordernum,
ishide AS ishide,
description AS description
</sql>
<sql id="Base_Where">
<where>
<trim prefixOverrides="and|or">
<if test="id != null"> and id ${id.dataOp} ${id.likestar}#{id.value}${id.likeend}</if>
<if test="name != null"> and name ${name.dataOp} ${name.likestar}#{name.value}${name.likeend}</if>
<if test="parentid != null"> and parentId ${parentid.dataOp} ${parentid.likestar}#{parentid.value}${parentid.likeend}</if>
<if test="reskey != null"> and resKey ${reskey.dataOp} ${reskey.likestar}#{reskey.value}${reskey.likeend}</if>
<if test="resurl != null"> and resUrl ${resurl.dataOp} ${resurl.likestar}#{resurl.value}${resurl.likeend}</if>
<if test="level != null"> and level ${level.dataOp} ${level.likestar}#{level.value}${level.likeend}</if>
<if test="icon != null"> and icon ${icon.dataOp} ${icon.likestar}#{icon.value}${icon.likeend}</if>
<if test="ordernum != null"> and orderNum ${ordernum.dataOp} ${ordernum.likestar}#{ordernum.value}${ordernum.likeend}</if>
<if test="ishide != null"> and ishide ${ishide.dataOp} ${ishide.likestar}#{ishide.value}${ishide.likeend}</if>
<if test="description != null"> and description ${description.dataOp} ${description.likestar}#{description.value}${description.likeend}</if>
<if test="userid != null"> and USERID ${userid.dataOp} ${userid.likestar}#{userid.value}${userid.likeend}</if>
<if test="listdept != null">
and DEPARTID in
<foreach collection="listdept.value" item="item" index="index" open="(" separator="," close=")" >
#{item}
</foreach>
</if>
</trim>
</where>
<if test="page != null">
<if test="page.sortname != null"> order by ${page.sortname} ${page.sortorder}</if>
limit ${page.start}, ${page.Pagesize}
</if>
</sql>
</mapper>

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.jyjz.xiaoyao.frontmenu.dataDao.UserFrontmenuMybatisDao">
<resultMap id="BaseResultMap" type="cn.jyjz.xiaoyao.frontmenu.dataobject.UserFrontmenu">
<result column="userId" property="userid" jdbcType="BIGINT"/>
<result column="menuId" property="menuid" jdbcType="BIGINT"/>
</resultMap>
<sql id="Base_Column_List">
userId AS userid,
menuId AS menuid
</sql>
<sql id="Base_Where">
<where>
<trim prefixOverrides="and|or">
<if test="userid != null"> and userId ${userid.dataOp} ${userid.likestar}#{userid.value}${userid.likeend}</if>
<if test="menuid != null"> and menuId ${menuid.dataOp} ${menuid.likestar}#{menuid.value}${menuid.likeend}</if>
<if test="userid != null"> and USERID ${userid.dataOp} ${userid.likestar}#{userid.value}${userid.likeend}</if>
<if test="listdept != null">
and DEPARTID in
<foreach collection="listdept.value" item="item" index="index" open="(" separator="," close=")" >
#{item}
</foreach>
</if>
</trim>
</where>
<if test="page != null">
<if test="page.sortname != null"> order by ${page.sortname} ${page.sortorder}</if>
limit ${page.start}, ${page.Pagesize}
</if>
</sql>
</mapper>

@ -212,3 +212,35 @@ INSERT INTO S_BACKSTAGEOPENURL_T(ID,URL,REMARK) VALUES(1196092352600928213, '/fl
INSERT INTO S_BACKSTAGEOPENURL_T(ID,URL,REMARK) VALUES(1196092352600928214, '/backstage/admin/department/updateflowable', '公司关联工作流');
INSERT INTO S_RESOURCES_T(ID,RESOURCENAME,RPARENTID,ROOTID,RESOURCETYPE,PRIORITYPE,RESOURCE,RESOURCELIST,RESOURCEDESC,ENABLED,RIOCNIMAGE)
VALUES (1231708402914598912,'前端菜单管理',160000,160000, '1', '5','/backstage/oa/frontmenuHtml/toList','/backstage/oa/frontmenu/list','前端菜单管理', '1', 'icon-diamond');
INSERT INTO S_RESOURCEMETHOD_T (RESOURCEID,METHODID,RESOURCEBEFOR,RESOURCEAFTER) VALUES
(1231708402914598912, '101','/backstage/oa/frontmenuHtml/toSave','/backstage/oa/frontmenu/save');
INSERT INTO S_RESOURCEMETHOD_T (RESOURCEID,METHODID,RESOURCEBEFOR,RESOURCEAFTER) VALUES
(1231708402914598912, '102','/backstage/oa/frontmenuHtml/toEdit','/backstage/oa/frontmenu/edit');
INSERT INTO S_RESOURCEMETHOD_T (RESOURCEID,METHODID,RESOURCEBEFOR,RESOURCEAFTER) VALUES
(1231708402914598912, '103','/backstage/oa/frontmenu/delmore',null);
INSERT INTO S_RESOURCEMETHOD_T (RESOURCEID,METHODID,RESOURCEBEFOR,RESOURCEAFTER) VALUES
(1231708402914598912, '104','/backstage/oa/frontmenu/getdata',null);
INSERT INTO S_RESOURCEMETHOD_T (RESOURCEID,METHODID,RESOURCEBEFOR,RESOURCEAFTER) VALUES
(1231708402914598912, '111','/backstage/oa/frontmenuHtml/toEdit','/backstage/oa/frontmenu/edit');
INSERT INTO S_RESOURCEMETHOD_T (RESOURCEID,METHODID,RESOURCEBEFOR,RESOURCEAFTER) VALUES
(1231708402914598912, '112','/backstage/oa/frontmenu/delone',null);
INSERT INTO S_RESOURCEMETHOD_T (RESOURCEID,METHODID,RESOURCEBEFOR,RESOURCEAFTER)
VALUES (1231708402914598912, 105,'/backstage/oa/userfrontmenu/list','/backstage/oa/userfrontmenu/saveactiongrant');
INSERT INTO S_BACKSTAGEOPENURL_T(ID,URL,REMARK)
VALUES(1231708402641969153, '/backstage/oa/userfrontmenuHtml/showlist', '进入前端菜单用户列表');
INSERT INTO S_BACKSTAGEOPENURL_T(ID,URL,REMARK)
VALUES(1231708402641969153, '/backstage/oa/userfrontmenuHtml/showlist', '进入前端菜单用户列表');

@ -22,16 +22,16 @@ spring:
primary: master
datasource:
master:
url: jdbc:mysql://47.93.59.251:3306/ocrnew?useUnicode=true&nullCatalogMeansCurrent=true&characterEncoding=UTF-8&characterSetResults=utf8&serverTimezone=Asia/Shanghai&useSSL=false
url: jdbc:mysql://127.0.0.1:3306/ocrnew?useUnicode=true&nullCatalogMeansCurrent=true&characterEncoding=UTF-8&characterSetResults=utf8&serverTimezone=Asia/Shanghai&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: ysltest
password: ysltest2024.
username: ocrnew
password: ocrnew
type: com.alibaba.druid.pool.DruidDataSource
slave:
url: jdbc:mysql://47.93.59.251:3306/ocrnew?useUnicode=true&nullCatalogMeansCurrent=true&characterEncoding=UTF-8&characterSetResults=utf8&serverTimezone=Asia/Shanghai&useSSL=false
url: jdbc:mysql://127.0.0.1:3306/ocrnew?useUnicode=true&nullCatalogMeansCurrent=true&characterEncoding=UTF-8&characterSetResults=utf8&serverTimezone=Asia/Shanghai&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: ysltest
password: ysltest2024.
username: ocrnew
password: ocrnew
type: com.alibaba.druid.pool.DruidDataSource
druid:
# 初始连接数
@ -160,15 +160,15 @@ mybatis-plus:
xiaoyao:
web:
#上传文件路径
uploadPath: D:/Java/idea/IdeaWorkSpace/ocr/htmlweb/upload
uploadPath: D:/ideaWork/jeecg/ocr/htmlweb/upload
#页面根路径
frontPath: D:/Java/idea/IdeaWorkSpace/ocr/htmlweb
frontPath: D:/ideaWork/jeecg/ocr/htmlweb
#js、css、图片存放路径
staticPath: D:/Java/idea/IdeaWorkSpace/ocr/htmlweb/static
staticPath: D:/ideaWork/jeecg/ocr/htmlweb/static
#页面模版路径
webPath: D:/Java/idea/IdeaWorkSpace/ocr/htmlweb/web
webPath: D:/ideaWork/jeecg/ocr/htmlweb/web
#Lucene索引路径
lucenePath: D:/Java/idea/IdeaWorkSpace/ocr/htmlweb/lucene/indexDir
lucenePath: D:/ideaWork/jeecg/ocr/htmlweb/lucene/indexDir
#是否开启flowable
haveFlowable: true
webconfig:

Loading…
Cancel
Save