feat(all): 添加了用户相关功能
添加了用户信息的获取相关方法 添加了创建用户的相关方法 添加了控制台登录相关方法 添加了JWT相关工具库
This commit is contained in:
parent
50220334d7
commit
0902b2e1db
20
.idea/jarRepositories.xml
generated
20
.idea/jarRepositories.xml
generated
@ -16,5 +16,25 @@
|
||||
<option name="name" value="MavenRepo" />
|
||||
<option name="url" value="https://repo.maven.apache.org/maven2/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="maven" />
|
||||
<option name="name" value="maven" />
|
||||
<option name="url" value="https://maven.aliyun.com/repository/gradle-plugin" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="maven4" />
|
||||
<option name="name" value="maven4" />
|
||||
<option name="url" value="https://mirrors.cloud.tencent.com/repository/maven/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="maven2" />
|
||||
<option name="name" value="maven2" />
|
||||
<option name="url" value="https://maven.aliyun.com/repository/public/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="maven3" />
|
||||
<option name="name" value="maven3" />
|
||||
<option name="url" value="https://repo.huaweicloud.com/repository/maven/" />
|
||||
</remote-repository>
|
||||
</component>
|
||||
</project>
|
@ -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")
|
||||
|
31
src/main/java/org/mmga/clubs/commands/UserCommands.java
Normal file
31
src/main/java/org/mmga/clubs/commands/UserCommands.java
Normal file
@ -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> 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> user = this.userController.login(new UserLoginVo(name, DigestUtils.md5Hex(password)));
|
||||
ShellUtils.logToResult(log, user);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
@ -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<PermissionVo> getAllPermissionByAuthId(int authId);
|
||||
}
|
||||
|
@ -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 {
|
||||
|
@ -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<RouterVo> getRouterByPermissionId(int permissionId);
|
||||
}
|
||||
|
@ -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")
|
||||
|
@ -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")
|
||||
|
@ -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")
|
||||
|
@ -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) {
|
||||
}
|
||||
|
@ -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<PermissionVo> permissionVos = this.authPermissionDao.getAllPermissionByAuthId(auth);
|
||||
List<Permission> permissions = permissionVos.stream().map(permissionService::packagePermission).toList();
|
||||
return new Auth(authVo.id(), authVo.name(), permissions);
|
||||
}
|
||||
}
|
||||
|
@ -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<RouterVo> routerVos = permissionRouterDao.getRouterByPermissionId(id);
|
||||
List<Router> routers = this.routerService.packageRouter(routerVos);
|
||||
return new Permission(id, vo.name(), routers);
|
||||
}
|
||||
}
|
||||
|
@ -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<Router> packageRouter(List<RouterVo> routerVos) {
|
||||
Map<Integer, Router> idRouterMap = new HashMap<>();
|
||||
List<Integer> 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();
|
||||
}
|
||||
}
|
||||
|
@ -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<User> 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;
|
||||
}
|
||||
}
|
||||
|
8
src/main/java/org/mmga/clubs/utils/JwtUtils.java
Normal file
8
src/main/java/org/mmga/clubs/utils/JwtUtils.java
Normal file
@ -0,0 +1,8 @@
|
||||
package org.mmga.clubs.utils;
|
||||
|
||||
public class JwtUtils {
|
||||
public static String createToken(int userId){
|
||||
//TODO 签名密钥创建
|
||||
return "";
|
||||
}
|
||||
}
|
11
src/main/java/org/mmga/clubs/utils/ShellUtils.java
Normal file
11
src/main/java/org/mmga/clubs/utils/ShellUtils.java
Normal file
@ -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());
|
||||
}
|
||||
}
|
@ -3,4 +3,7 @@
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.mmga.clubs.dao.AuthDao">
|
||||
<select id="getAuthById" resultType="org.mmga.clubs.entities.auth.AuthVo">
|
||||
select * from `auth` where `id` = #{id};
|
||||
</select>
|
||||
</mapper>
|
@ -3,4 +3,7 @@
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.mmga.clubs.dao.AuthPermissionDao">
|
||||
<select id="getAllPermissionByAuthId" resultType="org.mmga.clubs.entities.permission.PermissionVo">
|
||||
select `permission`.* from `auth_permission` left join `permission` on `auth_permission`.`permission_id` = `permission`.`id` where `auth_id` = #{authId};
|
||||
</select>
|
||||
</mapper>
|
@ -3,4 +3,7 @@
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.mmga.clubs.dao.PermissionRouterDao">
|
||||
<select id="getRouterByPermissionId" resultType="org.mmga.clubs.entities.router.RouterVo">
|
||||
select `router`.* from `permission_router` left join `router` on `permission_router`.`router_id` = `router`.`id` where `permission_id` = #{permissionId};
|
||||
</select>
|
||||
</mapper>
|
Loading…
x
Reference in New Issue
Block a user