@@ -228,6 +240,8 @@
+
+
<%--隐藏字段--%>
@@ -375,15 +389,129 @@
+
+
diff --git a/src/main/java/com/casic/accessControl/user/dto/UserDto.java b/src/main/java/com/casic/accessControl/user/dto/UserDto.java
index 398b2b4..2db723e 100644
--- a/src/main/java/com/casic/accessControl/user/dto/UserDto.java
+++ b/src/main/java/com/casic/accessControl/user/dto/UserDto.java
@@ -25,6 +25,7 @@
private Long roleId;
private String roleName;
private Integer roleType;
+ private String datascope; // 数据权限
private String btnEdit = "
编辑";
private String btnDelete = "
删除";
@@ -117,6 +118,14 @@
this.roleType = roleType;
}
+ public String getDatascope() {
+ return datascope;
+ }
+
+ public void setDatascope(String datascope) {
+ this.datascope = datascope;
+ }
+
public static UserDto Convert(User user) {
if (user == null) {
return null;
@@ -139,6 +148,7 @@
userDto.setRoleName(role.getRoleName());
userDto.setRoleType(role.getType());
}
+ userDto.setDatascope(user.getDatascope());
return userDto;
}
diff --git a/src/main/java/com/casic/accessControl/user/manager/UserManager.java b/src/main/java/com/casic/accessControl/user/manager/UserManager.java
index 704a5de..63bdf25 100644
--- a/src/main/java/com/casic/accessControl/user/manager/UserManager.java
+++ b/src/main/java/com/casic/accessControl/user/manager/UserManager.java
@@ -18,8 +18,11 @@
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.net.SocketException;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
/**
@@ -29,6 +32,11 @@
public class UserManager extends HibernateEntityDao
{
private Logger logger = LoggerFactory.getLogger(this.getClass());
+ @Resource
+ private RoleManager roleManager;
+ @Resource
+ private CompanyManager companyManager;
+
/**
* 用户登录
*
@@ -87,6 +95,17 @@
if (StringUtils.isNotBlank(parameter.getsSearch())) {
criteria.add(Restrictions.like("userName", "%" + parameter.getsSearch() + "%"));
}
+
+ // 数据权限
+ if(com.casic.accessControl.core.util.StringUtils.isNotBlank(user.getDatascope())){
+ String[] datascope = user.getDatascope().split(",");
+ List compnyIds = new ArrayList<>();
+ Arrays.asList(datascope).forEach(obj -> compnyIds.add(Long.valueOf(obj)));
+ criteria.add(Restrictions.in("company",companyManager.getCompanyByIds(compnyIds)));
+ } else {
+ criteria.add(Restrictions.eq("company", user.getCompany()));
+ }
+
Page page = pagedQuery(criteria, pageNo, pageSize);
List userDtos = UserDto.Converts((List) page.getResult());
result.setAaData(userDtos);
@@ -132,6 +151,9 @@
user.setIsValid(1);
}
this.getSession().saveOrUpdate(user);
+ User currentUser = (User) session.getAttribute(com.casic.accessControl.util.StringUtils.SYS_USER);
+ currentUser = getUserById(currentUser.getId());
+ session.setAttribute(com.casic.accessControl.util.StringUtils.SYS_USER, currentUser);
}
/**
@@ -217,5 +239,34 @@
return users;
}
+ public void updateCurrentDataScope(Long companyId, HttpSession session){
+ User user = (User) session.getAttribute(com.casic.accessControl.util.StringUtils.SYS_USER);
+ if(user.getDatascope() != null && !user.getDatascope().contains(companyId.toString())){
+ user.setDatascope((user.getDatascope().concat(",").concat(companyId.toString())));
+ }else{
+ user.setDatascope(companyId.toString());
+ }
+ this.getSession().saveOrUpdate(user);
+ session.setAttribute(com.casic.accessControl.util.StringUtils.SYS_USER, user);
+ }
+
+ public void updateAdminDataScope(Long companyId, HttpSession session){
+ Criteria criteria = this.createCriteria(User.class);
+ Role amdinRole = roleManager.get(7L);
+ criteria.add(Restrictions.eq("isValid", 1));
+ criteria.add(Restrictions.eq("role", amdinRole));
+ List users = criteria.list();
+ for (User user : users) {
+ if(user.getDatascope() != null && !user.getDatascope().contains(companyId.toString())){
+ user.setDatascope((user.getDatascope().concat(",").concat(companyId.toString())));
+ }else{
+ user.setDatascope(companyId.toString());
+ }
+ this.getSession().saveOrUpdate(user);
+ }
+ User user = (User) session.getAttribute(com.casic.accessControl.util.StringUtils.SYS_USER);
+ user = getUserById(user.getId());
+ session.setAttribute(com.casic.accessControl.util.StringUtils.SYS_USER, user);
+ }
}
diff --git a/src/main/java/com/casic/accessControl/user/web/UserController.java b/src/main/java/com/casic/accessControl/user/web/UserController.java
index 3534a97..0bf06c1 100644
--- a/src/main/java/com/casic/accessControl/user/web/UserController.java
+++ b/src/main/java/com/casic/accessControl/user/web/UserController.java
@@ -87,7 +87,7 @@
}
@RequestMapping("user-info-edit")
- public String edit(@RequestParam(value = "id", required = false) Long id, Model model) {
+ public String edit(@RequestParam(value = "id", required = false) Long id, Model model,HttpSession session) {
UserDto userDto = new UserDto();
if (id != null) {
@@ -95,11 +95,11 @@
}
List roles = roleManager.getRoles();
List roleDtos = RoleDto.Converts(roles);
- List companies = companyManager.getCompanies();
+ List companies = companyManager.getCompanies(session);
List companyDtos = CompanyDto.Converts(companies);
model.addAttribute("model", userDto);
model.addAttribute("roles",roleDtos);
- model.addAttribute("companies",companyDtos);
+ model.addAttribute("companies",new Gson().toJson(companyDtos));
return "user/user-info-edit";
}
@@ -127,6 +127,7 @@
user.setPhoneNumber(userDto.getPhoneNumber());
user.setCompany(company);
user.setRole(role);
+ user.setDatascope(userDto.getDatascope());
user.setIsValid(1);
userManager.saveUser(user, session);
if (userDto.getId() == null ) {//新增用户
diff --git a/src/main/webapp/content/user/user-info-edit.jsp b/src/main/webapp/content/user/user-info-edit.jsp
index ab95a4d..5ee2d9e 100644
--- a/src/main/webapp/content/user/user-info-edit.jsp
+++ b/src/main/webapp/content/user/user-info-edit.jsp
@@ -46,7 +46,16 @@
+
+
+
+
+
+<%----%>
+ <%----%>
+ <%----%>
+
@@ -175,23 +184,15 @@
<%--<%––%>--%>
<%-- --%>
<%--
--%>
-
+
@@ -228,6 +240,8 @@
+
+
<%--隐藏字段--%>
@@ -375,15 +389,129 @@
+
+
diff --git a/src/main/webapp/s/app/user/user-info-edit.js b/src/main/webapp/s/app/user/user-info-edit.js
index 11d947e..dc7a3ae 100644
--- a/src/main/webapp/s/app/user/user-info-edit.js
+++ b/src/main/webapp/s/app/user/user-info-edit.js
@@ -1,3 +1,36 @@
+function companiseToList(companies) {
+ let list = [];
+ for (let company of companies) {
+ let item = {}
+ item.id = company.id
+ item.title = company.companyName;
+ item.parentCompanyId = company.parentCompanyId
+ list.push(item)
+ }
+ return list;
+}
+
+function listToTreeList(list) { // 将普通列表转换为树结构的列表
+ if (!list || !list.length) {
+ return []
+ }
+ let treeListMap = {};
+ for (let item of list) {
+ treeListMap[item.id] = item
+ }
+ for (let i = 0; i < list.length; i++) {
+ if ((list[i].parentCompanyId || list[i].parentCompanyId === 0) && treeListMap[list[i].parentCompanyId]) {
+ if (!treeListMap[list[i].parentCompanyId].subs) {
+ treeListMap[list[i].parentCompanyId].subs = []
+ }
+ treeListMap[list[i].parentCompanyId].subs.push(list[i]);
+ list.splice(i, 1);
+ i--
+ }
+ }
+ return list
+}
+
/**
* Created by Administrator on 2015/7/26.
*/
@@ -11,6 +44,55 @@
var error = $('.alert-error', form);
var success = $('.alert-success', form);
+ var data = $("#companies").val();
+ console.log(data)
+ var val = eval("("+data+")");
+ console.log(val)
+ var list = companiseToList(val);
+ var tree = listToTreeList(list);
+ console.log(tree)
+
+ comboTree1 = $('#selectCompany').comboTree({
+ source : tree,
+ isMultiple: false,
+ cascadeSelect: true,
+ collapse: false
+ });
+ comboTree1.setSource(tree);
+ if($("#companyId").val()){
+ console.log('setSelection',$("#companyId").val())
+ comboTree1.setSelection([$("#companyId").val()])
+ }
+ comboTree1.onChange(function(){
+ var selectedIds = comboTree1.getSelectedIds();
+ $('#companyId').val(selectedIds)
+ console.log('companyId',$('#companyId').val())
+ })
+
+
+ comboTree2 = $('#selectDataScope').comboTree({
+ source : tree,
+ isMultiple: true,
+ cascadeSelect: true,
+ collapse: false
+ });
+ comboTree2.setSource(tree);
+ if($("#datascope").val()){
+
+ var datascopeStr = $("#datascope").val()
+ var datascpeInts = []
+ for (item of datascopeStr.split(',')){
+ datascpeInts.push(parseInt(item))
+ }
+ console.log('setDatascope',datascpeInts)
+ comboTree2.setSelection(datascpeInts)
+ }
+ comboTree2.onChange(function(){
+ var selectedIds = comboTree2.getSelectedIds();
+ $('#datascope').val(selectedIds)
+ console.log('datascope',$('#datascope').val())
+ })
+
$('#cancelBtn').live('click', function (e) {
location.href = $("#context").val() + "/content/user/user-info-list.jsp";
@@ -30,7 +112,7 @@
minlength: 5,
required: true
},
- companyId: {
+ companyName: {
required: true
},
roleId: {
@@ -45,7 +127,7 @@
required: "请输入密码",
minlength:"密码要大于五位"
},
- companyId: {
+ companyName: {
required: "请选择权属单位"
},
roleId: {