Просмотр исходного кода

devops-manager 更新用户管理接口

reghao 2 лет назад
Родитель
Сommit
73b062546b

+ 4 - 8
manager/src/main/java/cn/reghao/devops/manager/rbac/controller/UserController.java

@@ -1,11 +1,9 @@
 package cn.reghao.devops.manager.rbac.controller;
 
+import cn.reghao.devops.manager.rbac.model.dto.UserCreateDto;
 import cn.reghao.jutil.jdk.result.WebResult;
 import cn.reghao.devops.manager.rbac.model.dto.UserInfo;
 import cn.reghao.devops.manager.rbac.model.dto.UserRole;
-import cn.reghao.devops.manager.rbac.model.po.UserAuthority;
-import cn.reghao.devops.manager.rbac.model.po.Role;
-import cn.reghao.devops.manager.rbac.model.po.User;
 import cn.reghao.devops.manager.rbac.service.UserService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -16,8 +14,6 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.validation.constraints.NotNull;
 import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
 
 /**
  * @author reghao
@@ -36,12 +32,12 @@ public class UserController {
     @PreAuthorize("hasRole('ROLE_ADMIN')")
     @ApiOperation(value = "创建用户")
     @PostMapping(produces = MediaType.APPLICATION_JSON_VALUE)
-    public String createUser(@Validated User user, @RequestParam("roles") Set<Role> roles) {
-        Set<UserAuthority> authorities = roles.stream()
+    public String createUser(@Validated UserCreateDto userCreateDTO) {
+        /*Set<UserAuthority> authorities = roles.stream()
                 .map(role -> new UserAuthority(role.getTitle()))
                 .collect(Collectors.toSet());
         user.setAuthorities(authorities);
-        userService.createUser(user);
+        userService.createUser(user);*/
         return WebResult.success();
     }
 

+ 24 - 0
manager/src/main/java/cn/reghao/devops/manager/rbac/model/dto/UserCreateDto.java

@@ -0,0 +1,24 @@
+package cn.reghao.devops.manager.rbac.model.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author reghao
+ * @date 2023-10-23 17:38:19
+ */
+@Setter
+@Getter
+public class UserCreateDto {
+    @NotBlank(message = "必须指定登录名")
+    private String username;
+    @NotBlank(message = "必须指定用户名")
+    private String nickname;
+    @NotBlank(message = "必须指定登录密码")
+    private String password;
+    @NotNull(message = "必须选择用户角色")
+    private Integer roleId;
+}

+ 1 - 0
manager/src/main/java/cn/reghao/devops/manager/rbac/model/po/User.java

@@ -41,6 +41,7 @@ public class User extends BaseEntity implements UserDetails {
     //@CollectionTable(name = "sys_user_role")
     private Set<String> role;
     @Transient
+    @Deprecated
     private Set<UserAuthority> authorities;
     private Boolean isEnabled = true;
     private Boolean isLocked = false;

+ 1 - 0
manager/src/main/java/cn/reghao/devops/manager/rbac/model/po/UserAuthority.java

@@ -10,6 +10,7 @@ import org.springframework.util.Assert;
  * @author reghao
  * @date 2020-06-24 14:44:25
  */
+@Deprecated
 public class UserAuthority implements GrantedAuthority {
     private static final long serialVersionUID = SpringSecurityCoreVersion.SERIAL_VERSION_UID;
     private final String role;

+ 8 - 22
manager/src/main/java/cn/reghao/devops/manager/rbac/service/impl/UserServiceImpl.java

@@ -11,6 +11,7 @@ import cn.reghao.devops.manager.rbac.model.dto.UserRole;
 import cn.reghao.devops.manager.rbac.model.po.UserAuthority;
 import cn.reghao.devops.manager.rbac.model.po.User;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.security.core.GrantedAuthority;
 import org.springframework.stereotype.Service;
 
 import java.security.NoSuchAlgorithmException;
@@ -57,6 +58,10 @@ public class UserServiceImpl implements UserService {
             return;
         }
 
+        Set<String> roles = user.getAuthorities().stream()
+                .map(GrantedAuthority::getAuthority)
+                .collect(Collectors.toSet());
+        user.setRole(roles);
         setEncryptPassword(user);
         userRepository.save(user);
     }
@@ -73,23 +78,14 @@ public class UserServiceImpl implements UserService {
     @Override
     public void modifyUserPassword(Integer userId, String newPassword) {
         User userEntity = userRepository.getOne(userId);
-        if (userEntity != null) {
-            userEntity.setPassword(newPassword);
-            setEncryptPassword(userEntity);
-            userRepository.save(userEntity);
-        } else {
-            log.error("用户不存在");
-        }
+        userEntity.setPassword(newPassword);
+        setEncryptPassword(userEntity);
+        userRepository.save(userEntity);
     }
 
     @Override
     public void modifyUserInfo(UserInfo userInfo) {
         User userEntity = userRepository.getOne(userInfo.getUserId());
-        if (userEntity == null) {
-            log.error("用户不存在");
-            return;
-        }
-
         userEntity.setNickname(userInfo.getNickname());
         userEntity.setMobilePhone(userInfo.getMobilePhone());
         userEntity.setEmail(userInfo.getEmail());
@@ -99,11 +95,6 @@ public class UserServiceImpl implements UserService {
     @Override
     public void setUserRoles(UserRole userRole) {
         User userEntity = userRepository.getOne(userRole.getUserId());
-        if (userEntity == null) {
-            log.error("用户不存在");
-            return;
-        }
-
         /*Set<UserAuthority> authorities = userRole.getRoles().stream()
                 .map(role -> new UserAuthority(role.getTitle()))
                 .collect(Collectors.toSet());
@@ -119,11 +110,6 @@ public class UserServiceImpl implements UserService {
     @Override
     public void setUserStatus(Integer userId, Boolean enable) {
         User userEntity = userRepository.getOne(userId);
-        if (userEntity == null) {
-            log.error("用户不存在");
-            return;
-        }
-
         userEntity.setIsEnabled(enable);
         userRepository.save(userEntity);
     }

+ 12 - 12
manager/src/main/resources/application.yml

@@ -4,23 +4,16 @@ server:
     session:
       timeout: 86400
 spring:
-  servlet:
-    multipart:
-      max-file-size: 1GB
-      max-request-size: 1GB
   application:
     name: devops-manager
   profiles:
     active: @profile.active@
+  servlet:
+    multipart:
+      max-file-size: 1GB
+      max-request-size: 1GB
   mvc:
     dispatch-options-request: true
-  thymeleaf:
-    prefix: classpath:/templates
-    suffix: .html
-    mode: HTML
-    encoding: utf-8
-    servlet:
-      content-type: text/html
 #    cache: true
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
@@ -43,4 +36,11 @@ spring:
       hibernate:
         hbm2ddl:
           auto: update
-        dialect: org.hibernate.dialect.MySQL57Dialect
+        dialect: org.hibernate.dialect.MySQL57Dialect
+  thymeleaf:
+    prefix: classpath:/templates
+    suffix: .html
+    mode: HTML
+    encoding: utf-8
+    servlet:
+      content-type: text/html

+ 1 - 33
manager/src/main/resources/templates/rbac/user/add.html

@@ -22,42 +22,10 @@
                 <input class="layui-input" type="password" name="password" placeholder="请输入用户密码">
             </div>
         </div>
-        <div class="layui-form-item">
-            <label class="layui-form-label">手机号码</label>
-            <div class="layui-input-inline">
-                <input class="layui-input" type="text" name="mobilePhone" placeholder="请输入手机号码">
-            </div>
-        </div>
-        <div class="layui-form-item">
-            <label class="layui-form-label">邮箱</label>
-            <div class="layui-input-inline">
-                <input class="layui-input" type="text" name="email" placeholder="请输入邮箱">
-            </div>
-        </div>
-        <div class="layui-form-item">
-            <label class="layui-form-label">选择性别</label>
-            <div class="layui-input-inline">
-                <input type="radio" name="gender" value="1" title="男" checked>
-                <div class="layui-unselect layui-form-radio layui-form-radioed">
-                    <i class="layui-anim layui-icon"></i>
-                    <div>男</div>
-                </div>
-                <input type="radio" name="gender" value="2" title="女">
-                <div class="layui-unselect layui-form-radio">
-                    <i class="layui-anim layui-icon"></i>
-                    <div>女</div>
-                </div>
-                <input type="radio" name="gender" value="3" title="未知">
-                <div class="layui-unselect layui-form-radio">
-                    <i class="layui-anim layui-icon"></i>
-                    <div>未知</div>
-                </div>
-            </div>
-        </div>
         <div class="layui-form-item">
             <label class="layui-form-label required">用户角色</label>
             <div class="layui-input-block">
-                <input th:each="item:${allRoles}" type="checkbox" name="roles" th:title="${item.name}"
+                <input th:each="item:${allRoles}" type="checkbox" name="roleId" th:title="${item.name}"
                        th:value="${item.id}" th:checked="${#sets.contains(userRoles, item)}" lay-skin="primary">
             </div>
         </div>

+ 22 - 39
manager/src/main/resources/templates/rbac/user/index.html

@@ -9,32 +9,27 @@
     </div>
     <div class="layui-card-body">
         <div class="layui-row timo-card-screen put-row">
-            <div class="pull-left layui-form-pane timo-search-box">
-                <div class="layui-inline">
-                    <label class="layui-form-label">用户名</label>
-                    <div class="layui-input-block">
-                        <input type="text" name="nickname" th:value="${param.nickname}" placeholder="请输入用户名"
-                               autocomplete="off" class="layui-input">
+            <div class="layui-row timo-card-screen put-row">
+                <div class="pull-left layui-form-pane timo-search-box">
+                    <div class="layui-inline">
+                        <label class="layui-form-label">用户名</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="nickname" th:value="${param.nickname}" placeholder="请输入用户名"
+                                   autocomplete="off" class="layui-input">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <button class="layui-btn timo-search-btn">
+                            <i class="fa fa-search"></i>
+                        </button>
                     </div>
                 </div>
-                <div class="layui-inline">
-                    <button class="layui-btn timo-search-btn">
-                        <i class="fa fa-search"></i>
-                    </button>
-                </div>
-            </div>
-            <div class="pull-right screen-btn-group">
-                <div class="btn-group-right">
-                    <button class="layui-btn open-popup" data-title="添加用户" th:attr="data-url=@{/rbac/user/add}"
-                             data-size="auto">
-                        <i class="fa fa-plus"></i> 添加
-                    </button>
-                    <div class="btn-group">
-                        <button class="layui-btn">启用/禁用<span class="caret"></span></button>
-                        <dl class="layui-nav-child layui-anim layui-anim-upbit">
-                            <dd><a class="ajax-status" th:href="@{/api/rbac/user/status/1}">启用</a></dd>
-                            <dd><a class="ajax-status" th:href="@{/api/rbac/user/status/0}">禁用</a></dd>
-                        </dl>
+                <div class="pull-right">
+                    <div class="btn-group-right">
+                        <button class="layui-btn open-popup" data-title="添加用户" th:attr="data-url=@{/rbac/user/add}"
+                                data-size="auto">
+                            <i class="fa fa-plus"></i> 添加
+                        </button>
                     </div>
                 </div>
             </div>
@@ -43,15 +38,8 @@
             <table class="layui-table timo-table">
                 <thead>
                 <tr>
-                    <th class="timo-table-checkbox">
-                        <label class="timo-checkbox"><input type="checkbox">
-                            <i class="layui-icon layui-icon-ok"></i></label>
-                    </th>
                     <th data-field="username">登录名</th>
                     <th data-field="nickname">用户名</th>
-                    <th data-field="sex">性别</th>
-                    <th data-field="mobilePhone">手机号</th>
-                    <th data-field="email">邮箱</th>
                     <th data-field="createDate">创建时间</th>
                     <th>状态</th>
                     <th>分配角色</th>
@@ -61,13 +49,8 @@
                 </thead>
                 <tbody>
                 <tr th:each="item:${list}">
-                    <td><label class="timo-checkbox"><input type="checkbox" th:value="${item.userId}">
-                        <i class="layui-icon layui-icon-ok"></i></label></td>
                     <td th:text="${item.username}">登录名</td>
                     <td th:text="${item.nickname}">用户名</td>
-                    <td th:text="${item.gender}">性别</td>
-                    <td th:text="${item.mobilePhone}">手机号</td>
-                    <td th:text="${item.email}">邮箱</td>
                     <td th:text="${item.createTime}">创建时间</td>
                     <td th:text="${item.status}">状态</td>
                     <td>
@@ -81,11 +64,11 @@
                            href="#">修改</a>
                     </td>
                     <td>
-                        <a class="open-popup" data-title="编辑用户" th:attr="data-url=@{'/rbac/user/edit/'+${item.userId}}"
-                           data-size="640,480" href="#">编辑</a>
                         <a class="open-popup" data-title="详细信息" th:attr="data-url=@{'/rbac/user/detail/'+${item.userId}}"
                            data-size="640,480" href="#">详细</a>
-                        <a class="ajax-delete" th:attr="data-msg='确定要删除 '+ ${item.username} + '?'"
+                        <a class="ajax-delete" th:attr="data-msg='确定要禁用帐号 '+ ${item.username}"
+                           th:href="@{'/api/rbac/user/' + ${item.userId}}">禁用</a>
+                        <a class="ajax-delete" th:attr="data-msg='确定要删除帐号 '+ ${item.username}"
                            th:href="@{'/api/rbac/user/' + ${item.userId}}">删除</a>
                     </td>
                 </tr>