1
0
mirror of https://github.com/chatopera/cosin.git synced 2025-07-16 00:22:22 +08:00

#532 select role when create user

This commit is contained in:
Yu 2021-12-09 14:23:24 +08:00
parent 507346a313
commit 1c68add527
4 changed files with 69 additions and 24 deletions

View File

@ -16,17 +16,32 @@
*/ */
package com.chatopera.cc.controller.admin; package com.chatopera.cc.controller.admin;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import com.chatopera.cc.basic.Constants; import com.chatopera.cc.basic.Constants;
import com.chatopera.cc.basic.MainContext; import com.chatopera.cc.basic.MainContext;
import com.chatopera.cc.controller.Handler; import com.chatopera.cc.controller.Handler;
import com.chatopera.cc.model.Organ; import com.chatopera.cc.model.Organ;
import com.chatopera.cc.model.OrganUser; import com.chatopera.cc.model.OrganUser;
import com.chatopera.cc.model.Role;
import com.chatopera.cc.model.User; import com.chatopera.cc.model.User;
import com.chatopera.cc.model.UserRole; import com.chatopera.cc.model.UserRole;
import com.chatopera.cc.persistence.repository.*; import com.chatopera.cc.persistence.repository.ExtensionRepository;
import com.chatopera.cc.persistence.repository.OrganUserRepository;
import com.chatopera.cc.persistence.repository.PbxHostRepository;
import com.chatopera.cc.persistence.repository.RoleRepository;
import com.chatopera.cc.persistence.repository.UserRepository;
import com.chatopera.cc.persistence.repository.UserRoleRepository;
import com.chatopera.cc.proxy.OrganProxy; import com.chatopera.cc.proxy.OrganProxy;
import com.chatopera.cc.proxy.UserProxy; import com.chatopera.cc.proxy.UserProxy;
import com.chatopera.cc.util.Menu; import com.chatopera.cc.util.Menu;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -37,13 +52,6 @@ import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/** /**
* @author 程序猿DD * @author 程序猿DD
* @version 1.0.0 * @version 1.0.0
@ -60,6 +68,9 @@ public class UsersController extends Handler {
@Autowired @Autowired
private UserRoleRepository userRoleRes; private UserRoleRepository userRoleRes;
@Autowired
private RoleRepository roleRes;
@Autowired @Autowired
OrganProxy organProxy; OrganProxy organProxy;
@ -77,6 +88,7 @@ public class UsersController extends Handler {
/** /**
* 只返回根用户只属于该部门的非下级部门的用户 * 只返回根用户只属于该部门的非下级部门的用户
*
* @param map * @param map
* @param request * @param request
* @return * @return
@ -94,9 +106,7 @@ public class UsersController extends Handler {
super.getP(request), super.getP(request),
super.getPs(request), super.getPs(request),
Sort.Direction.ASC, Sort.Direction.ASC,
"createtime" "createtime")));
)));
return request(super.createView("/admin/user/index")); return request(super.createView("/admin/user/index"));
} }
@ -107,8 +117,10 @@ public class UsersController extends Handler {
ModelAndView view = request(super.createView("/admin/user/add")); ModelAndView view = request(super.createView("/admin/user/add"));
Organ currentOrgan = super.getOrgan(request); Organ currentOrgan = super.getOrgan(request);
Map<String, Organ> organs = organProxy.findAllOrganByParentAndOrgi(currentOrgan, super.getOrgi(request)); Map<String, Organ> organs = organProxy.findAllOrganByParentAndOrgi(currentOrgan, super.getOrgi(request));
List<Role> sysRoles = roleRes.findByOrgi(super.getOrgi(request));
map.addAttribute("currentOrgan", currentOrgan); map.addAttribute("currentOrgan", currentOrgan);
map.addAttribute("organList", organs.values()); map.addAttribute("organList", organs.values());
map.addAttribute("sysRoles", sysRoles);
return view; return view;
} }

View File

@ -16,15 +16,28 @@
*/ */
package com.chatopera.cc.controller.api; package com.chatopera.cc.controller.api;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import com.chatopera.cc.basic.Constants; import com.chatopera.cc.basic.Constants;
import com.chatopera.cc.basic.MainContext; import com.chatopera.cc.basic.MainContext;
import com.chatopera.cc.basic.MainUtils; import com.chatopera.cc.basic.MainUtils;
import com.chatopera.cc.cache.Cache; import com.chatopera.cc.cache.Cache;
import com.chatopera.cc.controller.Handler; import com.chatopera.cc.controller.Handler;
import com.chatopera.cc.controller.api.request.RestUtils; import com.chatopera.cc.controller.api.request.RestUtils;
import com.chatopera.cc.model.*; import com.chatopera.cc.model.AgentStatus;
import com.chatopera.cc.model.Organ;
import com.chatopera.cc.model.OrganUser;
import com.chatopera.cc.model.Role;
import com.chatopera.cc.model.User;
import com.chatopera.cc.model.UserRole;
import com.chatopera.cc.persistence.repository.OrganRepository; import com.chatopera.cc.persistence.repository.OrganRepository;
import com.chatopera.cc.persistence.repository.OrganUserRepository; import com.chatopera.cc.persistence.repository.OrganUserRepository;
import com.chatopera.cc.persistence.repository.RoleRepository;
import com.chatopera.cc.persistence.repository.UserRepository; import com.chatopera.cc.persistence.repository.UserRepository;
import com.chatopera.cc.persistence.repository.UserRoleRepository; import com.chatopera.cc.persistence.repository.UserRoleRepository;
import com.chatopera.cc.proxy.UserProxy; import com.chatopera.cc.proxy.UserProxy;
@ -34,6 +47,7 @@ import com.chatopera.cc.util.RestResultType;
import com.google.gson.JsonArray; import com.google.gson.JsonArray;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -48,13 +62,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@RestController @RestController
@RequestMapping("/api/user") @RequestMapping("/api/user")
public class ApiUserController extends Handler { public class ApiUserController extends Handler {
@ -75,6 +82,9 @@ public class ApiUserController extends Handler {
@Autowired @Autowired
private OrganRepository organRes; private OrganRepository organRes;
@Autowired
private RoleRepository roleRes;
@Autowired @Autowired
private UserRoleRepository userRoleRes; private UserRoleRepository userRoleRes;
@ -116,10 +126,12 @@ public class ApiUserController extends Handler {
*/ */
@RequestMapping(method = RequestMethod.POST) @RequestMapping(method = RequestMethod.POST)
@Menu(type = "apps", subtype = "user", access = true) @Menu(type = "apps", subtype = "user", access = true)
public ResponseEntity<String> operations(HttpServletRequest request, @RequestBody final String body, @Valid String q) { public ResponseEntity<String> operations(HttpServletRequest request, @RequestBody final String body,
@Valid String q) {
logger.info("[operations] body {}, q {}", body, q); logger.info("[operations] body {}, q {}", body, q);
final JsonObject j = StringUtils.isBlank(body) ? (new JsonObject()) : (new JsonParser()).parse( final JsonObject j = StringUtils.isBlank(body) ? (new JsonObject())
body).getAsJsonObject(); : (new JsonParser()).parse(
body).getAsJsonObject();
JsonObject json = new JsonObject(); JsonObject json = new JsonObject();
HttpHeaders headers = RestUtils.header(); HttpHeaders headers = RestUtils.header();
@ -149,7 +161,6 @@ public class ApiUserController extends Handler {
return new ResponseEntity<String>(json.toString(), headers, HttpStatus.OK); return new ResponseEntity<String>(json.toString(), headers, HttpStatus.OK);
} }
/** /**
* 创建新用户 * 创建新用户
* *
@ -165,11 +176,25 @@ public class ApiUserController extends Handler {
parentOrgan = organRes.getOne(parent); parentOrgan = organRes.getOne(parent);
} }
String roleId = payload.get("role").getAsString();
// 创建新用户时阻止传入ID // 创建新用户时阻止传入ID
payload.remove("id"); payload.remove("id");
// 从payload中创建User // 从payload中创建User
User user = userProxy.parseUserFromJson(payload); User user = userProxy.parseUserFromJson(payload);
JsonObject resp = userProxy.createNewUser(user, parentOrgan); JsonObject resp = userProxy.createNewUser(user, parentOrgan);
if (StringUtils.isNotEmpty(roleId)) {
Role role = roleRes.getOne(roleId);
UserRole userRole = new UserRole();
userRole.setUser(user);
userRole.setRole(role);
userRole.setOrgi(Constants.SYSTEM_ORGI);
userRole.setCreater(super.getUser(request).getId());
userRole.setOrgan(parentOrgan.getId());
userRoleRes.save(userRole);
}
logger.info("[create] response {}", resp.toString()); logger.info("[create] response {}", resp.toString());
return resp; return resp;
} }

View File

@ -32,6 +32,14 @@
i.layui-icon(style='position: absolute;right: 3px;top: 6px;font-size: 25px;${systemConfig.color!\'color:#0096C4;\'}', onclick='showMenu()')  i.layui-icon(style='position: absolute;right: 3px;top: 6px;font-size: 25px;${systemConfig.color!\'color:#0096C4;\'}', onclick='showMenu()') 
#menuContent.ukefu-ztree(style='display:none; position: absolute;z-index:10000;width: 218px;') #menuContent.ukefu-ztree(style='display:none; position: absolute;z-index:10000;width: 218px;')
ul#organTree.ztree(style='width:208px;') ul#organTree.ztree(style='width:208px;')
.layui-form-item
label.layui-form-label 角色:
.layui-input-inline
.layui-input-inline(style='width:218px;margin:0px;')
select(name='role', required, lay-verify='required')
option
for r in sysRoles
option(value=r.id)= r.name
.layui-form-item .layui-form-item
label.layui-form-label 管理员: label.layui-form-label 管理员:
.layui-input-inline .layui-input-inline

View File

@ -6,7 +6,7 @@ block content
h1.site-h1(style='background-color:#FFFFFF;') h1.site-h1(style='background-color:#FFFFFF;')
| #{currentOrgan.name}根用户列表 (#{userList.totalElements?userList.totalElements:0}) | #{currentOrgan.name}根用户列表 (#{userList.totalElements?userList.totalElements:0})
span(style='float:right') span(style='float:right')
button.layui-btn.layui-btn-small.green(href='/admin/user/add.html', data-toggle='ajax', data-width='750', data-height='540', data-title='创建新用户') button.layui-btn.layui-btn-small.green(href='/admin/user/add.html', data-toggle='ajax', data-width='750', data-height='600', data-title='创建新用户')
| 创建新用户 | 创建新用户
.row(style='padding:5px;') .row(style='padding:5px;')
blockquote.layui-elem-quote.layui-quote-nm blockquote.layui-elem-quote.layui-quote-nm