Commit 296548e7 by liuyongshuai Committed by liuyongshuai

增加用户查询功能;增加用户过滤逻辑

parent 869e9c6c
package com.xzxtshiro.controller;
import com.xzxtshiro.pojo.SysPermissionNew;
import com.xzxtshiro.pojo.SysUser;
import com.xzxtshiro.service.SysUserService;
import com.xzxtshiro.util.TokenUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
/**
* @author liuys
* @desc
* @date 2018-07-20 16:46
*/
@RequestMapping(value = "/access")
@Controller
public class AccessController {
@Autowired
SysUserService userService;
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(SysUser user, Model model){
String msg=null;
StringBuffer perList =null;
try{
//用户登录
user = TokenUtil.login(user, true);
}catch (Exception e){
e.printStackTrace();
}finally {
if (msg == null) {
SysUser user1 = TokenUtil.getUser();
String userId = user1.getId();
List<List<SysPermissionNew>> list= userService.selectMenusByUserId(userId);
//System.out.println(list);
model.addAttribute("list", list);
return "";
}
model.addAttribute("msg", msg);
return "login";
}
}
@RequestMapping(value = "/queryPermission", method = RequestMethod.POST)
public String queryPermission(SysUser user){
List<SysPermissionNew> list=userService.selectSysPermissionNewByUserId(user.getId());
StringBuffer perList = new StringBuffer();
for (SysPermissionNew per:list) {
perList.append(per.getId()+",");
}
return perList.toString();
}
}
......@@ -46,6 +46,7 @@ public class SysUserController {
/*if (msg!=null&&msg!=""){
model.addAttribute("msg","用户添加成功!");
}*/
setAddCS(model,dictitemService,roleService);
return "admin/user/list";
}
......@@ -58,9 +59,47 @@ public class SysUserController {
@ResponseBody
@RequestMapping(value = "/list", method = RequestMethod.GET)
public BaseModel list(SysUser user) {
//获取当前登录用户
SysUser dlUser = TokenUtil.getUser();
String usergrade = dlUser.getGrade();
String dw = "";
if ("".equals(user.getUnitcode())||user.getUnitcode()==null){
//当页面上传递的单位代码为空或者首次进来时,根据countycode查询,
//添加限制条件根据用户权限筛选用户能够看到的列表
//grade:X=县级,D=地市级,S=省级,T=特级
//1.举个栗子,陕西省渭南市用户只能看到渭南市以下的用户
System.out.println("usergrade===================="+usergrade);
if (usergrade!=null&&!"".equals(usergrade)){
dw = getString(usergrade, dlUser.getUnitcode(), dw);
}
}else{
//unitcode不为空,则根据unitcode+countycode双层查询
if (usergrade!=null&&!"".equals(usergrade)){
dw = getString(usergrade, user.getUnitcode(), dw);
}
}
user.setCountycode(dw);
return userService.selectSysUserPage(user);
}
private static String getString(String usergrade, String unitcode, String dw) {
if (usergrade.equals("S") || usergrade.equals("T")) {
dw=unitcode.substring(0, 2);
} else if (usergrade.equals("D")) {
dw=unitcode.substring(0, 4);
} else if (usergrade.equals("X")) {
dw=unitcode.substring(0, 6);
} else if (usergrade.equals("K")) {
dw=unitcode.substring(0, 8);
} else if (usergrade.equals("P")) {
dw=unitcode;
}
return dw;
}
/**
* 跳转到用户添加页面
......
......@@ -30,7 +30,7 @@ public interface SysUserDao {
List<SysUser> selectSysUserByCondition(SysUser user);
Integer selectSysUserCountByCondition();
Integer selectSysUserCountByCondition(SysUser user);
Integer updateSysUserById(SysUser user);
......
......@@ -107,6 +107,9 @@
<if test="isparent != null" >
AND ISPARENT = #{isparent,jdbcType=VARCHAR}
</if>
<if test="isparent == null" >
AND ISPARENT = 'true'
</if>
<if test="yycj7 != null" >
AND YYCJ7 = #{yycj7,jdbcType=VARCHAR}
</if>
......@@ -149,7 +152,7 @@
select
<include refid="Base_Column_List" />
from SYS_DICTITEM
where 1=1
where SCBZ=0
<include refid="queryWhere" />
and CODE LIKE #{codeStr,jdbcType=VARCHAR}
</select>
......
......@@ -50,7 +50,7 @@
SELECT
<include refid="Base_Column_List" />
FROM SYS_ROLE
WHERE 1=1
WHERE SCBZ=0
<include refid="queryWhere" />
</select>
......
......@@ -490,12 +490,27 @@
</select>
<!--查询用户列表-->
<select id="selectSysUserByCondition" resultMap="BaseResultMap">
select * from (
select t.*,rownum rn from (
select
<include refid="Base_Column_List" />
from SYS_USER
where SCBZ='0'
<include refid="Base_Column_List" />,ROLENAME
from SYS_USER t
left join
(select u.user_id ,
listagg( roleName, ',' ) within group ( order by u.user_id ) as roleName
from sys_role r join sys_user_role u on r.id=u.role_id where u.scbz='0' and r.scbz='0' GROUP BY u.user_id) tt
on t.id=tt.user_id
where scbz='0'
<if test="countycode !=null"> and UNITCODE like '%'||#{countycode}||'%'</if>
<if test="roleName !=null"> and ROLENAME like '%'||#{roleName}||'%'</if>
<if test="username !=null"> and USERNAME like '%'||#{username}||'%'</if>
<if test="trueName !=null"> and true_name like '%'||#{trueName}||'%'</if>
<if test="identitycard !=null"> and IDENTITYCARD like '%'||#{identitycard}||'%'</if>
<if test="policemanid !=null"> and policemanid = #{policemanid}</if>
<if test="unitcode !=null"> and unitcode like '%'||#{unitcode}||'%'</if>
<if test="sex !=null"> and sex = #sex#</if>
<if test="openFlag !=null"> and OPEN_FLAG = #openFlag#</if>
) t where ROWNUM <![CDATA[<=]]>
${limit*page}
) where rn > ${(page-1)*limit}
......@@ -505,9 +520,22 @@
<!---->
SELECT
count(1)
FROM
SYS_USER
WHERE scbz='0'
from SYS_USER t
left join
(select u.user_id ,
listagg( roleName, ',' ) within group ( order by u.user_id ) as roleName
from sys_role r join sys_user_role u on r.id=u.role_id where u.scbz='0' and r.scbz='0' GROUP BY u.user_id) tt
on t.id=tt.user_id
where scbz='0'
<if test="countycode !=null"> and UNITCODE like '%'||#{countycode}||'%'</if>
<if test="roleName !=null"> and ROLENAME like '%'||#{roleName}||'%'</if>
<if test="username !=null"> and USERNAME like '%'||#{username}||'%'</if>
<if test="trueName !=null"> and true_name like '%'||#{trueName}||'%'</if>
<if test="identitycard !=null"> and IDENTITYCARD like '%'||#{identitycard}||'%'</if>
<if test="policemanid !=null"> and policemanid =#{policemanid}</if>
<if test="unitcode !=null"> and unitcode like '%'||#{unitcode}||'%'</if>
<if test="sex !=null"> and sex = #sex#</if>
<if test="openFlag !=null"> and OPEN_FLAG = #openFlag#</if>
</select>
<!--批量添加用户角色信息-->
......
......@@ -84,6 +84,8 @@ public class SysUser extends BaseModel implements Serializable {
protected String roleNames;
protected String countycode; //根据用户级别截取单位代码
/**角色的id合集*/
protected String roleId;
......
......@@ -74,18 +74,8 @@ public class SysUserServiceImpl implements SysUserService {
@Override
public BaseModel selectSysUserPage(SysUser user) {
//在此可以加条件过滤出需要显示的用户列表,目前暂时不加限制
List<SysUser> data = userDao.selectSysUserByCondition(user);
for (SysUser u:data){
//根据用户id查询用户所拥有的角色
List<SysRole> roleList = sysRoleDao.querySysRoleByUserId(u.getId());
StringBuffer roleNames = new StringBuffer();
for (SysRole role:roleList){
roleNames.append(role.getRolename()+",");
}
u.setRoleNames(roleNames.toString());
}
Integer count = userDao.selectSysUserCountByCondition();
Integer count = userDao.selectSysUserCountByCondition(user);
BaseModel userPage = new BaseModel();
userPage.setCount(count);
userPage.setData(data);
......
......@@ -103,7 +103,6 @@ public class MyRealm extends AuthorizingRealm {
// SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(user, user.getPassword(), getName());
// 设置盐值
// info.setCredentialsSalt(ByteSource.Util.bytes(username.getBytes()));
System.out.println("password+++++++++++++++++++++++++++++=="+user.getPassword());
String realmName = getName();
//4). 盐值.
......
package com.xzxtshiro.util;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.net.URI;
import java.util.ArrayList;
......@@ -132,4 +140,18 @@ public class HttpClientUtil {
return resultString;
}
public static String doRequest(CloseableHttpClient httpclient, HttpUriRequest httpUriRequest, BasicCookieStore cookieStore) throws IOException {
//返回相应
CloseableHttpResponse response = httpclient.execute(httpUriRequest);
//获取response返回的相应实体
HttpEntity entity = response.getEntity();
entity.getContent();
//转码
String res=EntityUtils.toString(response.getEntity(), HTTP.UTF_8);
System.out.println("返回参数==="+res.toString());
return res;
}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String perurl = (String)session.getAttribute("url");
%>
<!DOCTYPE html>
<html>
......@@ -7,6 +10,15 @@
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title>用户列表</title>
<style>
.layui-form-item{
display: inline;
}
.layui-form-item>.layui-input-block>input{
width: 20%;
}
</style>
</head>
<body>
......@@ -29,31 +41,77 @@
<i class="layui-icon" style="line-height:25px">&#x1002</i></a>
</div>
</div>
<a class="layui-btn layui-btn-normal" role="button"
style="margin-right: 10px;float: right" href="${pageContext.request.contextPath}/admin/user/add">添加用户</a>
<div class="layui-col-xs12 layui-col-sm12 layui-col-md12">
<table class="layui-table"
lay-data="{height: 'full-110',even: true,url:'${pageContext.request.contextPath}/admin/user/list',limits:[10,30,50,100], limit: 10,page:true,id:'id'}"
<div class="layui-form-mid">
<label class="layui-form-label">用户账号</label>
<div class="layui-input-inline">
<input type="text" name="username" id="username" lay-verify="required"
class="layui-input">
</div>
</div>
<div class="layui-form-mid">
<label class="layui-form-label">用户姓名</label>
<div class="layui-input-block">
<input type="text" name="trueName" id="trueName" lay-verify="required"
class="layui-input">
</div>
</div>
<div class="layui-form-mid">
<label class="layui-form-label">身份证号</label>
<div class="layui-input-block">
<input type="text" name="identitycard" id="identitycard" lay-verify="required"
class="layui-input">
</div>
</div>
<div class="layui-form-mid">
<label class="layui-form-label">用户警号</label>
<div class="layui-input-block">
<input type="text" name="policemanid" id="policemanid" lay-verify="required"
class="layui-input">
</div>
</div>
<div class="layui-form-mid">
<label class="layui-form-label">所属单位</label>
<div class="layui-input-block">
<input type="text" name="unitname" id="unitname" lay-verify="required"
class="layui-input">
<input type="text" id="unitcode" Name="unitcode" style="display: none;">
<span class="layui-btn" id="checkPer" style="position: relative; top: -38px;left: 182px;" onclick="checkTree('myUnitTree');">选择单位</span>
<div id="myUnitTree" style="display: none">
<ul id="unit" class="ztree"></ul>
</div>
</div>
</div>
<div class="layui-form-mid">
<label class="layui-form-label">角色</label>
<div class="layui-input-block">
<input type="text" name="roleName" id="roleName" lay-verify="required"
class="layui-input">
<input type="text" id="roleId" Name="roleId" style="display: none;">
<span class="layui-btn" id="checkRolePid" style="position: relative; top: -38px;left: 182px;" onclick="checkTree('myRoleTree');">选择角色</span>
<div id="myRoleTree" style="display: none">
<ul id="roleTree" class="ztree"></ul>
</div>
</div>
</div>
<br/><br/><br/><br/><br/><br/><br/>
<div class="layui-form-item" style="display: inline-block;">
<div class="layui-form-item">
<button class="layui-btn queryUserList" data-type="reload" style="margin-left: 200px;">查询</button>
<button class="layui-btn layui-btn-danger" style="margin-left: 200px;" type="reset">清空</button>
<a class="layui-btn layui-btn-normal" role="button" style="margin-left: 200px;" href="${pageContext.request.contextPath}/admin/user/add">新增</a>
</div>
</div>
<table class="layui-table" id="userTable"
lay-filter="user">
<thead>
<tr>
<!--<th lay-data="{checkbox:true, fixed: true}"></th>-->
<th lay-data="{field:'rn',align:'center', width:100, sort: true}">序号</th>
<th lay-data="{field:'id',align:'center', width:100, sort: true}">ID</th>
<th lay-data="{field:'username',align:'center', width:100, sort: true}">登录名</th>
<th lay-data="{field:'trueName', align:'center',width:100, sort: true}">用户姓名</th>
<th lay-data="{field:'unitname', align:'center',width:200, sort: true}">所属部门</th>
<th lay-data="{field:'roleNames', align:'center',width:100, sort: true}">用户角色</th>
<th lay-data="{field:'openFlag',align:'center', width:100, sort: true,templet: '#userStateTpl'}">
用户状态
</th>
<th lay-data="{width:120, align:'center', toolbar: '#toolBar'}">操作</th>
</tr>
</thead>
</table>
</div>
</div>
</div>
<script type="text/html" id="toolBar">
<a class="layui-btn layui-btn-danger layui-btn-mini" lay-event="update">修改</a>
<a class="layui-btn layui-btn-warm layui-btn-mini" lay-event="delete">删除</a>
......@@ -69,6 +127,10 @@
</script>
<script src="${pageContext.request.contextPath}/resources/layui/layui.js"></script>
<script>
$(function () {
var url = "<%=perurl%>";
console.log("++++权限++++"+url);
})
layui.use(['table', 'element', 'jquery'], function () {
var table = layui.table,
element = layui.element,
......@@ -130,13 +192,90 @@
})
}
});
//弹出层
var msg = "${msg}";
if (msg.length != "") {
layer.msg(msg, {icon: 6});
$("#msg").text("");
}
var data = ${unit};
var zNodes =[];
for (var i=0;i<data.length;i++){
zNodes.push({id:data[i].codeStr,pId:data[i].pid,name:data[i].name,open:false,file:"core/simpleData"});
}
setTree(zNodes,"unit","nocheck","unitcode","unitname");
data = ${role};
var zNodes =[];
for (var i=0;i<data.length;i++){
zNodes.push({id:data[i].id,pId:data[i].pid,name:data[i].rolename,open:false,file:"core/simpleData"});
}
setTree(zNodes,"roleTree","nocheck","roleId","roleName");
});
</script>
<script>
layui.use('table', function(){
var table = layui.table;
//方法级渲染
table.render({
elem: '#userTable',
limit: 10 ,//默认采用10
url: '${pageContext.request.contextPath}/admin/user/list',
cols: [[
{field:'rn',title:'序号',align:'center', width:50, sort: true},
{field:'identitycard',title:'身份证号',align:'center', width:200, sort: true},
{field:'username',title:'登录名',align:'center', width:90, sort: true},
{field:'trueName',title:'用户姓名', align:'center',width:100, sort: true},
{field:'unitname', title:'所属部门',align:'center',width:260, sort: true},
{field:'roleName',title:'用户角色', align:'center',width:200, sort: true},
{field:'openFlag',title:'用户状态',align:'center', width:100, sort: true,templet: '#userStateTpl'},
{width:120, title:'操作',align:'center', toolbar: '#toolBar'}
]],
id: 'testReload',
page: true,
height: 315
});
var $ = layui.$, active = {
reload: function(){
var username = cheNull($('#username').val());
var trueName = cheNull($('#trueName').val());
var identitycard = cheNull($('#identitycard').val());
var policemanid = cheNull($('#policemanid').val());
var unitcode = cheNull($('#unitcode').val());
var roleName = cheNull($('#roleName').val());
table.reload('testReload', {
where: {
username: username,
trueName: trueName,
identitycard:identitycard,
policemanid:policemanid,
unitcode:unitcode,
roleName:roleName
}
});
}
};
$('.queryUserList').on('click', function(){
console.log("进入查询");
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
});
function cheNull(str) {
if (str==""){
return undefined;
}else{
return str;
}
}
</script>
</body>
......
......@@ -225,8 +225,11 @@
});
//判断当前登录用户
debugger;
var username = "${sessionScope.user.username }";
console.log(username);
if (username == '8888') {
console.log(username);
setTimeout(displaynavbar($(".pngfix").get(0).tagName, 0));
}
</script>
......
......@@ -1386,7 +1386,7 @@ a cite {
float: left;
display: block;
padding: 8px 0!important;
margin-right: 10px
margin-right: 80px
}
.layui-form-danger+.layui-form-select .layui-input,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment