Ver Fonte

角色管理

孙永军 há 1 ano atrás
pai
commit
2d62ec635b

+ 7 - 0
src/main/java/com/sxtvs/open/api/user/controller/UserController.java

@@ -1,6 +1,7 @@
 package com.sxtvs.open.api.user.controller;
 
 import com.sxtvs.open.api.user.dto.LoginDto;
+import com.sxtvs.open.api.user.dto.PwdResetDTO;
 import com.sxtvs.open.api.user.dto.TokenDto;
 import com.sxtvs.open.api.user.entity.User;
 import com.sxtvs.open.api.user.service.impl.UserServiceImpl;
@@ -44,4 +45,10 @@ public class UserController {
         userService.logout();
     }
 
+    @RequestMapping("pwd/reset")
+    @LoginRequired
+    public void reset(@RequestBody PwdResetDTO pwdResetDTO){
+        userService.reset(pwdResetDTO);
+    }
+
 }

+ 35 - 3
src/main/java/com/sxtvs/open/api/user/controller/UserRoleController.java

@@ -1,7 +1,13 @@
 package com.sxtvs.open.api.user.controller;
 
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.sxtvs.open.api.user.dto.RoleDTO;
+import com.sxtvs.open.api.user.entity.UserRole;
+import com.sxtvs.open.api.user.service.impl.UserRoleServiceImpl;
+import com.sxtvs.open.core.auth.LoginRequired;
+import jakarta.annotation.Resource;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * <p>
@@ -12,7 +18,33 @@ import org.springframework.web.bind.annotation.RestController;
  * @since 2023-05-26
  */
 @RestController
-@RequestMapping("/user/userRole")
+@RequestMapping("/user/role")
 public class UserRoleController {
 
+    @Resource
+    private UserRoleServiceImpl userRoleService;
+
+    @RequestMapping("list")
+    @LoginRequired
+    public List<UserRole> userRoles(){
+        return userRoleService.roles();
+    }
+
+    @RequestMapping("store")
+    @LoginRequired
+    public void store(@RequestBody RoleDTO roleDTO){
+        userRoleService.createRole(roleDTO);
+    }
+
+    @RequestMapping("update")
+    @LoginRequired
+    public void update(@RequestBody RoleDTO roleDTO){
+        userRoleService.updateRole(roleDTO);
+    }
+
+    @GetMapping("delete")
+    @LoginRequired
+    public void del(@RequestParam("id") Integer id){
+        userRoleService.deleteRole(id);
+    }
 }

+ 11 - 0
src/main/java/com/sxtvs/open/api/user/dto/PwdResetDTO.java

@@ -0,0 +1,11 @@
+package com.sxtvs.open.api.user.dto;
+
+import lombok.Data;
+
+@Data
+public class PwdResetDTO {
+
+    private String oldPwd;
+
+    private String pwd;
+}

+ 17 - 0
src/main/java/com/sxtvs/open/api/user/dto/RoleDTO.java

@@ -0,0 +1,17 @@
+package com.sxtvs.open.api.user.dto;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class RoleDTO {
+
+    private Integer id;
+
+    private String name;
+
+    private List<String> menuId;
+
+}

+ 41 - 0
src/main/java/com/sxtvs/open/api/user/service/impl/UserRoleServiceImpl.java

@@ -1,11 +1,20 @@
 package com.sxtvs.open.api.user.service.impl;
 
+import com.sxtvs.open.api.user.dto.RoleDTO;
+import com.sxtvs.open.api.user.entity.Menus;
 import com.sxtvs.open.api.user.entity.UserRole;
 import com.sxtvs.open.api.user.mapper.UserRoleMapper;
 import com.sxtvs.open.api.user.service.IUserRoleService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sxtvs.open.core.advice.BizException;
+import jakarta.annotation.Resource;
+import org.apache.logging.log4j.util.Strings;
 import org.springframework.stereotype.Service;
 
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * <p>
  *  服务实现类
@@ -17,4 +26,36 @@ import org.springframework.stereotype.Service;
 @Service
 public class UserRoleServiceImpl extends ServiceImpl<UserRoleMapper, UserRole> implements IUserRoleService {
 
+    @Resource
+    private MenusServiceImpl menusService;
+
+    public List<UserRole> roles(){
+        return list().stream().peek(role -> {
+            role.setMenus(menusService.lambdaQuery().in(Menus::getId, Arrays.asList(role.getMenuId().split(","))).list());
+        }).collect(Collectors.toList());
+    }
+
+    public void createRole(RoleDTO roleDTO){
+        UserRole userRole = new UserRole();
+        userRole.setName(roleDTO.getName());
+        userRole.setMenuId(Strings.join(roleDTO.getMenuId(), ','));
+        save(userRole);
+    }
+
+    public void updateRole(RoleDTO roleDTO){
+        UserRole ur = getById(roleDTO.getId());
+        if (null == ur){
+            throw new BizException("角色不存在");
+        }
+        ur.setName(roleDTO.getName());
+        ur.setMenuId(Strings.join(roleDTO.getMenuId(), ','));
+        updateById(ur);
+    }
+
+    public void deleteRole(Integer id){
+        removeById(id);
+    }
+
+
+
 }

+ 17 - 0
src/main/java/com/sxtvs/open/api/user/service/impl/UserServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.crypto.SecureUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.sxtvs.open.api.user.dto.LoginDto;
+import com.sxtvs.open.api.user.dto.PwdResetDTO;
 import com.sxtvs.open.api.user.dto.TokenDto;
 import com.sxtvs.open.api.user.entity.Menus;
 import com.sxtvs.open.api.user.entity.User;
@@ -21,6 +22,7 @@ import org.springframework.stereotype.Service;
 import java.time.LocalDateTime;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * <p>
@@ -115,4 +117,19 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         user.setLogoutTime(LocalDateTime.now());
         updateById(user);
     }
+
+    public void reset(PwdResetDTO pwdResetDTO){
+        Optional<String> token = HttpContextUtil.getToken();
+
+        String uid = AESUtil.decryptStr(token.get());
+        User user = this.lambdaQuery().eq(User::getId, Long.parseLong(uid)).eq(User::getLoginPassword, pwdResetDTO.getOldPwd()).one();
+        if(null == user){
+            throw new BizException(40001, "原密码错误");
+        }
+
+        user.setLoginPassword(pwdResetDTO.getPwd());
+        user.setEncodePassword("密码已修改");
+        updateById(user);
+
+    }
 }