diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index fdc392f..096c6cc 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -16,5 +16,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index 1aedf92..d12190c 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -21,6 +21,10 @@ configurations {
}
repositories {
+ maven { url = uri("https://maven.aliyun.com/repository/gradle-plugin") }
+ maven { url = uri("https://maven.aliyun.com/repository/public/") }
+ maven { url = uri("https://repo.huaweicloud.com/repository/maven/") }
+ maven { url = uri("https://mirrors.cloud.tencent.com/repository/maven/") }
mavenCentral()
}
@@ -37,6 +41,8 @@ dependencies {
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.5.0")
// https://mvnrepository.com/artifact/commons-codec/commons-codec
implementation("commons-codec:commons-codec:1.16.1")
+ // https://mvnrepository.com/artifact/com.auth0/java-jwt
+ implementation("com.auth0:java-jwt:4.4.0")
compileOnly("org.projectlombok:lombok")
developmentOnly("org.springframework.boot:spring-boot-devtools")
runtimeOnly("com.mysql:mysql-connector-j")
diff --git a/src/main/java/org/mmga/clubs/commands/UserCommands.java b/src/main/java/org/mmga/clubs/commands/UserCommands.java
new file mode 100644
index 0000000..a63a40e
--- /dev/null
+++ b/src/main/java/org/mmga/clubs/commands/UserCommands.java
@@ -0,0 +1,31 @@
+package org.mmga.clubs.commands;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.mmga.clubs.controller.UserController;
+import org.mmga.clubs.entities.BaseResponse;
+import org.mmga.clubs.entities.user.User;
+import org.mmga.clubs.entities.user.UserLoginVo;
+import org.mmga.clubs.entities.user.UserRegVo;
+import org.mmga.clubs.utils.ShellUtils;
+import org.springframework.shell.standard.ShellComponent;
+import org.springframework.shell.standard.ShellMethod;
+
+@ShellComponent
+@Slf4j
+public class UserCommands {
+ private final UserController userController;
+ public UserCommands(UserController userController){
+ this.userController = userController;
+ }
+ @ShellMethod("创建用户")
+ public void createUser(String name, String password) {
+ BaseResponse user = this.userController.createUser(new UserRegVo(name, DigestUtils.md5Hex(password), 1));
+ ShellUtils.logToResult(log, user);
+ }
+ @ShellMethod("登录")
+ public void login(String name, String password) {
+ BaseResponse user = this.userController.login(new UserLoginVo(name, DigestUtils.md5Hex(password)));
+ ShellUtils.logToResult(log, user);
+ }
+}
diff --git a/src/main/java/org/mmga/clubs/dao/AuthDao.java b/src/main/java/org/mmga/clubs/dao/AuthDao.java
index 44bd1c8..e4790c0 100644
--- a/src/main/java/org/mmga/clubs/dao/AuthDao.java
+++ b/src/main/java/org/mmga/clubs/dao/AuthDao.java
@@ -1,8 +1,9 @@
package org.mmga.clubs.dao;
import org.apache.ibatis.annotations.Mapper;
+import org.mmga.clubs.entities.auth.AuthVo;
@Mapper
public interface AuthDao {
-
+ AuthVo getAuthById(int id);
}
diff --git a/src/main/java/org/mmga/clubs/dao/AuthPermissionDao.java b/src/main/java/org/mmga/clubs/dao/AuthPermissionDao.java
index b1ca95e..b7ee5ea 100644
--- a/src/main/java/org/mmga/clubs/dao/AuthPermissionDao.java
+++ b/src/main/java/org/mmga/clubs/dao/AuthPermissionDao.java
@@ -1,7 +1,12 @@
package org.mmga.clubs.dao;
import org.apache.ibatis.annotations.Mapper;
+import org.mmga.clubs.entities.permission.Permission;
+import org.mmga.clubs.entities.permission.PermissionVo;
+
+import java.util.List;
@Mapper
public interface AuthPermissionDao {
+ List getAllPermissionByAuthId(int authId);
}
diff --git a/src/main/java/org/mmga/clubs/dao/PermissionDao.java b/src/main/java/org/mmga/clubs/dao/PermissionDao.java
index b148b1f..9af6502 100644
--- a/src/main/java/org/mmga/clubs/dao/PermissionDao.java
+++ b/src/main/java/org/mmga/clubs/dao/PermissionDao.java
@@ -1,6 +1,9 @@
package org.mmga.clubs.dao;
import org.apache.ibatis.annotations.Mapper;
+import org.mmga.clubs.entities.permission.Permission;
+
+import java.util.List;
@Mapper
public interface PermissionDao {
diff --git a/src/main/java/org/mmga/clubs/dao/PermissionRouterDao.java b/src/main/java/org/mmga/clubs/dao/PermissionRouterDao.java
index 0f925da..3be2fbc 100644
--- a/src/main/java/org/mmga/clubs/dao/PermissionRouterDao.java
+++ b/src/main/java/org/mmga/clubs/dao/PermissionRouterDao.java
@@ -1,7 +1,11 @@
package org.mmga.clubs.dao;
import org.apache.ibatis.annotations.Mapper;
+import org.mmga.clubs.entities.router.RouterVo;
+
+import java.util.List;
@Mapper
public interface PermissionRouterDao {
+ List getRouterByPermissionId(int permissionId);
}
diff --git a/src/main/java/org/mmga/clubs/entities/auth/Auth.java b/src/main/java/org/mmga/clubs/entities/auth/Auth.java
index 7ccad51..3d57868 100644
--- a/src/main/java/org/mmga/clubs/entities/auth/Auth.java
+++ b/src/main/java/org/mmga/clubs/entities/auth/Auth.java
@@ -1,12 +1,14 @@
package org.mmga.clubs.entities.auth;
import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
import lombok.Data;
import org.mmga.clubs.entities.permission.Permission;
import java.util.List;
@Data
+@AllArgsConstructor
@Schema(description = "用户权限组")
public class Auth {
@Schema(description = "权限组ID")
diff --git a/src/main/java/org/mmga/clubs/entities/permission/Permission.java b/src/main/java/org/mmga/clubs/entities/permission/Permission.java
index daf2771..06fba63 100644
--- a/src/main/java/org/mmga/clubs/entities/permission/Permission.java
+++ b/src/main/java/org/mmga/clubs/entities/permission/Permission.java
@@ -1,12 +1,14 @@
package org.mmga.clubs.entities.permission;
import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
import lombok.Data;
import org.mmga.clubs.entities.router.Router;
import java.util.List;
@Data
+@AllArgsConstructor
@Schema(description = "单个权限")
public class Permission {
@Schema(description = "权限ID")
diff --git a/src/main/java/org/mmga/clubs/entities/router/Router.java b/src/main/java/org/mmga/clubs/entities/router/Router.java
index 8c25138..5fa92fb 100644
--- a/src/main/java/org/mmga/clubs/entities/router/Router.java
+++ b/src/main/java/org/mmga/clubs/entities/router/Router.java
@@ -1,11 +1,13 @@
package org.mmga.clubs.entities.router;
import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.List;
@Data
+@AllArgsConstructor
@Schema(description = "路由节点")
public class Router {
@Schema(description = "节点ID")
diff --git a/src/main/java/org/mmga/clubs/entities/router/RouterVo.java b/src/main/java/org/mmga/clubs/entities/router/RouterVo.java
index 7fe8212..a53b30b 100644
--- a/src/main/java/org/mmga/clubs/entities/router/RouterVo.java
+++ b/src/main/java/org/mmga/clubs/entities/router/RouterVo.java
@@ -2,5 +2,5 @@ package org.mmga.clubs.entities.router;
import java.util.Date;
-public record RouterVo(int id, String name, int parent, String component, Date createTime, Date updateTime) {
+public record RouterVo(int id, String name, Integer parent, String component, Date createTime, Date updateTime) {
}
diff --git a/src/main/java/org/mmga/clubs/service/AuthService.java b/src/main/java/org/mmga/clubs/service/AuthService.java
index 91a91eb..c3c8a4e 100644
--- a/src/main/java/org/mmga/clubs/service/AuthService.java
+++ b/src/main/java/org/mmga/clubs/service/AuthService.java
@@ -2,16 +2,31 @@ package org.mmga.clubs.service;
import org.mmga.clubs.dao.AuthDao;
import org.mmga.clubs.dao.AuthPermissionDao;
+import org.mmga.clubs.entities.auth.Auth;
+import org.mmga.clubs.entities.auth.AuthVo;
+import org.mmga.clubs.entities.permission.Permission;
+import org.mmga.clubs.entities.permission.PermissionVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.util.List;
+
@Service
public class AuthService {
private final AuthDao authDao;
private final AuthPermissionDao authPermissionDao;
+ private final PermissionService permissionService;
@Autowired
- public AuthService(AuthDao authDao, AuthPermissionDao authPermissionDao) {
+ public AuthService(AuthDao authDao, AuthPermissionDao authPermissionDao, PermissionService permissionService) {
this.authDao = authDao;
this.authPermissionDao = authPermissionDao;
+ this.permissionService = permissionService;
+ }
+
+ public Auth getAuthById(int auth) {
+ AuthVo authVo = this.authDao.getAuthById(auth);
+ List permissionVos = this.authPermissionDao.getAllPermissionByAuthId(auth);
+ List permissions = permissionVos.stream().map(permissionService::packagePermission).toList();
+ return new Auth(authVo.id(), authVo.name(), permissions);
}
}
diff --git a/src/main/java/org/mmga/clubs/service/PermissionService.java b/src/main/java/org/mmga/clubs/service/PermissionService.java
index c8485ef..30c393a 100644
--- a/src/main/java/org/mmga/clubs/service/PermissionService.java
+++ b/src/main/java/org/mmga/clubs/service/PermissionService.java
@@ -2,14 +2,28 @@ package org.mmga.clubs.service;
import org.mmga.clubs.dao.PermissionDao;
import org.mmga.clubs.dao.PermissionRouterDao;
+import org.mmga.clubs.entities.permission.Permission;
+import org.mmga.clubs.entities.permission.PermissionVo;
+import org.mmga.clubs.entities.router.Router;
+import org.mmga.clubs.entities.router.RouterVo;
import org.springframework.stereotype.Service;
+import java.util.List;
+
@Service
public class PermissionService {
private final PermissionDao permissionDao;
private final PermissionRouterDao permissionRouterDao;
- public PermissionService(PermissionDao permissionDao, PermissionRouterDao permissionRouterDao) {
+ private final RouterService routerService;
+ public PermissionService(PermissionDao permissionDao, PermissionRouterDao permissionRouterDao, RouterService routerService) {
this.permissionDao = permissionDao;
this.permissionRouterDao = permissionRouterDao;
+ this.routerService = routerService;
+ }
+ public Permission packagePermission(PermissionVo vo){
+ int id = vo.id();
+ List routerVos = permissionRouterDao.getRouterByPermissionId(id);
+ List routers = this.routerService.packageRouter(routerVos);
+ return new Permission(id, vo.name(), routers);
}
}
diff --git a/src/main/java/org/mmga/clubs/service/RouterService.java b/src/main/java/org/mmga/clubs/service/RouterService.java
index 7170b72..e1d01bc 100644
--- a/src/main/java/org/mmga/clubs/service/RouterService.java
+++ b/src/main/java/org/mmga/clubs/service/RouterService.java
@@ -1,12 +1,36 @@
package org.mmga.clubs.service;
import org.mmga.clubs.dao.RouterDao;
+import org.mmga.clubs.entities.router.Router;
+import org.mmga.clubs.entities.router.RouterVo;
import org.springframework.stereotype.Service;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
@Service
public class RouterService {
private final RouterDao routerDao;
public RouterService(RouterDao routerDao) {
this.routerDao = routerDao;
}
+ public List packageRouter(List routerVos) {
+ Map idRouterMap = new HashMap<>();
+ List rootId = new ArrayList<>();
+ for (RouterVo routerVo : routerVos) {
+ idRouterMap.put(routerVo.id(), new Router(routerVo.id(), routerVo.name(), routerVo.component(), new ArrayList<>()));
+ if (routerVo.parent() == null){
+ rootId.add(routerVo.id());
+ }
+ }
+ for (RouterVo routerVo : routerVos) {
+ Integer parent = routerVo.parent();
+ if (parent != null) {
+ idRouterMap.get(parent).getChildren().add(idRouterMap.get(routerVo.id()));
+ }
+ }
+ return rootId.stream().map(idRouterMap::get).toList();
+ }
}
diff --git a/src/main/java/org/mmga/clubs/service/UserService.java b/src/main/java/org/mmga/clubs/service/UserService.java
index 4fc5815..c24f631 100644
--- a/src/main/java/org/mmga/clubs/service/UserService.java
+++ b/src/main/java/org/mmga/clubs/service/UserService.java
@@ -10,13 +10,15 @@ import org.springframework.stereotype.Service;
@Service
public class UserService {
private final UserDao userDao;
+ private final AuthService authService;
@Autowired
- public UserService(UserDao userDao){
+ public UserService(UserDao userDao, AuthService authService){
this.userDao = userDao;
+ this.authService = authService;
}
public BaseResponse login(UserLoginVo user) {
- UserVo userVo = userDao.getUser(user.name(), DigestUtils.sha1Hex(user.name()));
+ UserVo userVo = userDao.getUser(user.name(), DigestUtils.sha1Hex(user.password()));
User u = packageUser(userVo);
return u == null ? BaseResponse.failed(404, "无效用户") : BaseResponse.success(u);
}
@@ -35,6 +37,10 @@ public class UserService {
if (vo == null){
return null;
}
- return null;
+ User result = new User();
+ result.setId(vo.id());
+ result.setName(vo.name());
+ result.setAuth(authService.getAuthById(vo.auth()));
+ return result;
}
}
diff --git a/src/main/java/org/mmga/clubs/utils/JwtUtils.java b/src/main/java/org/mmga/clubs/utils/JwtUtils.java
new file mode 100644
index 0000000..bbf54f1
--- /dev/null
+++ b/src/main/java/org/mmga/clubs/utils/JwtUtils.java
@@ -0,0 +1,8 @@
+package org.mmga.clubs.utils;
+
+public class JwtUtils {
+ public static String createToken(int userId){
+ //TODO 签名密钥创建
+ return "";
+ }
+}
diff --git a/src/main/java/org/mmga/clubs/utils/ShellUtils.java b/src/main/java/org/mmga/clubs/utils/ShellUtils.java
new file mode 100644
index 0000000..886e8bf
--- /dev/null
+++ b/src/main/java/org/mmga/clubs/utils/ShellUtils.java
@@ -0,0 +1,11 @@
+package org.mmga.clubs.utils;
+
+import org.mmga.clubs.entities.BaseResponse;
+import org.slf4j.Logger;
+
+public class ShellUtils {
+ public static void logToResult(Logger logger, BaseResponse> response){
+ logger.info("返回代码:{},返回信息:{}", response.getCode(), response.getMsg());
+ logger.info("返回结果:{}", response.getData());
+ }
+}
diff --git a/src/main/resources/org/mmga/clubs/dao/AuthDao.xml b/src/main/resources/org/mmga/clubs/dao/AuthDao.xml
index 2244e52..7f088dd 100644
--- a/src/main/resources/org/mmga/clubs/dao/AuthDao.xml
+++ b/src/main/resources/org/mmga/clubs/dao/AuthDao.xml
@@ -3,4 +3,7 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
\ No newline at end of file
diff --git a/src/main/resources/org/mmga/clubs/dao/AuthPermissionDao.xml b/src/main/resources/org/mmga/clubs/dao/AuthPermissionDao.xml
index 6526335..761de38 100644
--- a/src/main/resources/org/mmga/clubs/dao/AuthPermissionDao.xml
+++ b/src/main/resources/org/mmga/clubs/dao/AuthPermissionDao.xml
@@ -3,4 +3,7 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
\ No newline at end of file
diff --git a/src/main/resources/org/mmga/clubs/dao/PermissionRouterDao.xml b/src/main/resources/org/mmga/clubs/dao/PermissionRouterDao.xml
index 94b3a72..5e5b9a7 100644
--- a/src/main/resources/org/mmga/clubs/dao/PermissionRouterDao.xml
+++ b/src/main/resources/org/mmga/clubs/dao/PermissionRouterDao.xml
@@ -3,4 +3,7 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
\ No newline at end of file