From 1c68add527e7dae02a01a6bee475b9accc94eba9 Mon Sep 17 00:00:00 2001 From: Yu Date: Thu, 9 Dec 2021 14:23:24 +0800 Subject: [PATCH] #532 select role when create user --- .../cc/controller/admin/UsersController.java | 34 ++++++++----- .../cc/controller/api/ApiUserController.java | 49 ++++++++++++++----- .../resources/templates/admin/user/add.pug | 8 +++ .../resources/templates/admin/user/index.pug | 2 +- 4 files changed, 69 insertions(+), 24 deletions(-) diff --git a/contact-center/app/src/main/java/com/chatopera/cc/controller/admin/UsersController.java b/contact-center/app/src/main/java/com/chatopera/cc/controller/admin/UsersController.java index c9ce97a5..4dc6bc06 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/controller/admin/UsersController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/controller/admin/UsersController.java @@ -16,17 +16,32 @@ */ 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.MainContext; import com.chatopera.cc.controller.Handler; 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.*; +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.UserProxy; import com.chatopera.cc.util.Menu; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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.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 * @version 1.0.0 @@ -60,6 +68,9 @@ public class UsersController extends Handler { @Autowired private UserRoleRepository userRoleRes; + @Autowired + private RoleRepository roleRes; + @Autowired OrganProxy organProxy; @@ -77,6 +88,7 @@ public class UsersController extends Handler { /** * 只返回根用户:只属于该部门的非下级部门的用户 + * * @param map * @param request * @return @@ -94,9 +106,7 @@ public class UsersController extends Handler { super.getP(request), super.getPs(request), Sort.Direction.ASC, - "createtime" - ))); - + "createtime"))); return request(super.createView("/admin/user/index")); } @@ -107,8 +117,10 @@ public class UsersController extends Handler { ModelAndView view = request(super.createView("/admin/user/add")); Organ currentOrgan = super.getOrgan(request); Map organs = organProxy.findAllOrganByParentAndOrgi(currentOrgan, super.getOrgi(request)); + List sysRoles = roleRes.findByOrgi(super.getOrgi(request)); map.addAttribute("currentOrgan", currentOrgan); map.addAttribute("organList", organs.values()); + map.addAttribute("sysRoles", sysRoles); return view; } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/controller/api/ApiUserController.java b/contact-center/app/src/main/java/com/chatopera/cc/controller/api/ApiUserController.java index fba0810e..9fec99c5 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/controller/api/ApiUserController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/controller/api/ApiUserController.java @@ -16,15 +16,28 @@ */ 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.MainContext; import com.chatopera.cc.basic.MainUtils; import com.chatopera.cc.cache.Cache; import com.chatopera.cc.controller.Handler; 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.OrganUserRepository; +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.UserProxy; @@ -34,6 +47,7 @@ import com.chatopera.cc.util.RestResultType; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.JsonParser; + import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; 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.RestController; -import javax.servlet.http.HttpServletRequest; -import javax.validation.Valid; -import java.util.Date; -import java.util.List; -import java.util.stream.Collectors; - - @RestController @RequestMapping("/api/user") public class ApiUserController extends Handler { @@ -75,6 +82,9 @@ public class ApiUserController extends Handler { @Autowired private OrganRepository organRes; + @Autowired + private RoleRepository roleRes; + @Autowired private UserRoleRepository userRoleRes; @@ -116,10 +126,12 @@ public class ApiUserController extends Handler { */ @RequestMapping(method = RequestMethod.POST) @Menu(type = "apps", subtype = "user", access = true) - public ResponseEntity operations(HttpServletRequest request, @RequestBody final String body, @Valid String q) { + public ResponseEntity operations(HttpServletRequest request, @RequestBody final String body, + @Valid String q) { logger.info("[operations] body {}, q {}", body, q); - final JsonObject j = StringUtils.isBlank(body) ? (new JsonObject()) : (new JsonParser()).parse( - body).getAsJsonObject(); + final JsonObject j = StringUtils.isBlank(body) ? (new JsonObject()) + : (new JsonParser()).parse( + body).getAsJsonObject(); JsonObject json = new JsonObject(); HttpHeaders headers = RestUtils.header(); @@ -149,7 +161,6 @@ public class ApiUserController extends Handler { return new ResponseEntity(json.toString(), headers, HttpStatus.OK); } - /** * 创建新用户 * @@ -165,11 +176,25 @@ public class ApiUserController extends Handler { parentOrgan = organRes.getOne(parent); } + String roleId = payload.get("role").getAsString(); + // 创建新用户时,阻止传入ID payload.remove("id"); // 从payload中创建User User user = userProxy.parseUserFromJson(payload); 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()); return resp; } diff --git a/contact-center/app/src/main/resources/templates/admin/user/add.pug b/contact-center/app/src/main/resources/templates/admin/user/add.pug index cfae25cb..86dbd11e 100644 --- a/contact-center/app/src/main/resources/templates/admin/user/add.pug +++ b/contact-center/app/src/main/resources/templates/admin/user/add.pug @@ -32,6 +32,14 @@ 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;') 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 label.layui-form-label 管理员: .layui-input-inline diff --git a/contact-center/app/src/main/resources/templates/admin/user/index.pug b/contact-center/app/src/main/resources/templates/admin/user/index.pug index 7a543bc6..eaf7ce34 100644 --- a/contact-center/app/src/main/resources/templates/admin/user/index.pug +++ b/contact-center/app/src/main/resources/templates/admin/user/index.pug @@ -6,7 +6,7 @@ block content h1.site-h1(style='background-color:#FFFFFF;') | #{currentOrgan.name}根用户列表 (#{userList.totalElements?userList.totalElements:0}) 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;') blockquote.layui-elem-quote.layui-quote-nm