From 99df89efbca19c8723eedb8a3044a3709f0620aa Mon Sep 17 00:00:00 2001 From: wzp Date: Thu, 25 Apr 2024 17:21:24 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E4=BA=86?= =?UTF-8?q?=E7=A4=BE=E5=9B=A2=E7=9B=B8=E5=85=B3=E6=9D=83=E9=99=90=E7=BB=84?= =?UTF-8?q?=E5=8F=8A=E5=85=B6=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/mmga/clubs/dao/AuthPermissionDao.java | 1 - src/main/java/org/mmga/clubs/dao/ClubDao.java | 9 ++++ .../org/mmga/clubs/dao/ClubUserAuthDao.java | 9 ++++ .../org/mmga/clubs/dao/PermissionDao.java | 3 -- .../mmga/clubs/entities/ClubUserAuthVo.java | 6 +++ .../org/mmga/clubs/entities/ClubUserVo.java | 7 ---- .../org/mmga/clubs/entities/club/Club.java | 18 ++++++++ .../org/mmga/clubs/entities/user/User.java | 3 ++ .../org/mmga/clubs/service/ClubService.java | 42 +++++++++++++++++++ .../org/mmga/clubs/service/UserService.java | 5 ++- .../resources/org/mmga/clubs/dao/ClubDao.xml | 9 ++++ .../org/mmga/clubs/dao/ClubUserAuthDao.xml | 9 ++++ 12 files changed, 109 insertions(+), 12 deletions(-) create mode 100644 src/main/java/org/mmga/clubs/dao/ClubDao.java create mode 100644 src/main/java/org/mmga/clubs/dao/ClubUserAuthDao.java create mode 100644 src/main/java/org/mmga/clubs/entities/ClubUserAuthVo.java delete mode 100644 src/main/java/org/mmga/clubs/entities/ClubUserVo.java create mode 100644 src/main/java/org/mmga/clubs/entities/club/Club.java create mode 100644 src/main/java/org/mmga/clubs/service/ClubService.java create mode 100644 src/main/resources/org/mmga/clubs/dao/ClubDao.xml create mode 100644 src/main/resources/org/mmga/clubs/dao/ClubUserAuthDao.xml diff --git a/src/main/java/org/mmga/clubs/dao/AuthPermissionDao.java b/src/main/java/org/mmga/clubs/dao/AuthPermissionDao.java index 1f20c2a..44b0fcc 100644 --- a/src/main/java/org/mmga/clubs/dao/AuthPermissionDao.java +++ b/src/main/java/org/mmga/clubs/dao/AuthPermissionDao.java @@ -1,7 +1,6 @@ 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; diff --git a/src/main/java/org/mmga/clubs/dao/ClubDao.java b/src/main/java/org/mmga/clubs/dao/ClubDao.java new file mode 100644 index 0000000..ccbbaa8 --- /dev/null +++ b/src/main/java/org/mmga/clubs/dao/ClubDao.java @@ -0,0 +1,9 @@ +package org.mmga.clubs.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.mmga.clubs.entities.club.ClubVo; + +@Mapper +public interface ClubDao { + ClubVo getClubById(int id); +} diff --git a/src/main/java/org/mmga/clubs/dao/ClubUserAuthDao.java b/src/main/java/org/mmga/clubs/dao/ClubUserAuthDao.java new file mode 100644 index 0000000..806146a --- /dev/null +++ b/src/main/java/org/mmga/clubs/dao/ClubUserAuthDao.java @@ -0,0 +1,9 @@ +package org.mmga.clubs.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.mmga.clubs.entities.ClubUserAuthVo; + +@Mapper +public interface ClubUserAuthDao { + ClubUserAuthVo getClubUserAuthVoByUserId(int userId); +} diff --git a/src/main/java/org/mmga/clubs/dao/PermissionDao.java b/src/main/java/org/mmga/clubs/dao/PermissionDao.java index 9af6502..b148b1f 100644 --- a/src/main/java/org/mmga/clubs/dao/PermissionDao.java +++ b/src/main/java/org/mmga/clubs/dao/PermissionDao.java @@ -1,9 +1,6 @@ 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/entities/ClubUserAuthVo.java b/src/main/java/org/mmga/clubs/entities/ClubUserAuthVo.java new file mode 100644 index 0000000..cd01813 --- /dev/null +++ b/src/main/java/org/mmga/clubs/entities/ClubUserAuthVo.java @@ -0,0 +1,6 @@ +package org.mmga.clubs.entities; + +import java.util.Date; + +public record ClubUserAuthVo(int userId, int clubId, int authId, Date createTime, Date updateTime) { +} diff --git a/src/main/java/org/mmga/clubs/entities/ClubUserVo.java b/src/main/java/org/mmga/clubs/entities/ClubUserVo.java deleted file mode 100644 index 9f955b6..0000000 --- a/src/main/java/org/mmga/clubs/entities/ClubUserVo.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.mmga.clubs.entities; - -import java.util.Date; - -public record ClubUserVo(int clubId, int userId, Date createTime, Date updateTime) { -} - diff --git a/src/main/java/org/mmga/clubs/entities/club/Club.java b/src/main/java/org/mmga/clubs/entities/club/Club.java new file mode 100644 index 0000000..dcdc0b8 --- /dev/null +++ b/src/main/java/org/mmga/clubs/entities/club/Club.java @@ -0,0 +1,18 @@ +package org.mmga.clubs.entities.club; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.mmga.clubs.entities.auth.Auth; + +@Data +@Schema(description = "社团信息") +public class Club { + @Schema(description = "社团ID") + private int id; + @Schema(description = "社团名称") + private String name; + @Schema(description = "社团简介") + private String commit; + @Schema(description = "用户在社团中所属权限组") + private Auth auth; +} diff --git a/src/main/java/org/mmga/clubs/entities/user/User.java b/src/main/java/org/mmga/clubs/entities/user/User.java index c59298c..ad9091e 100644 --- a/src/main/java/org/mmga/clubs/entities/user/User.java +++ b/src/main/java/org/mmga/clubs/entities/user/User.java @@ -3,6 +3,7 @@ package org.mmga.clubs.entities.user; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.mmga.clubs.entities.auth.Auth; +import org.mmga.clubs.entities.club.Club; @Data @Schema(description = "用户") @@ -15,4 +16,6 @@ public class User { private Auth auth; @Schema(description = "用户头像SHA1值") private String avatar; + @Schema(description = "用户所属社团") + private Club club; } diff --git a/src/main/java/org/mmga/clubs/service/ClubService.java b/src/main/java/org/mmga/clubs/service/ClubService.java new file mode 100644 index 0000000..576b21c --- /dev/null +++ b/src/main/java/org/mmga/clubs/service/ClubService.java @@ -0,0 +1,42 @@ +package org.mmga.clubs.service; + +import org.mmga.clubs.dao.ClubDao; +import org.mmga.clubs.dao.ClubUserAuthDao; +import org.mmga.clubs.entities.ClubUserAuthVo; +import org.mmga.clubs.entities.auth.Auth; +import org.mmga.clubs.entities.club.Club; +import org.mmga.clubs.entities.club.ClubVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class ClubService { + private final ClubUserAuthDao clubUserAuthDao; + private final ClubDao clubDao; + private final AuthService authService; + @Autowired + public ClubService(ClubUserAuthDao clubUserAuthDao, ClubDao clubDao, AuthService authService){ + this.clubDao = clubDao; + this.clubUserAuthDao = clubUserAuthDao; + this.authService = authService; + } + public Club getClubWithoutAuthById(int id){ + ClubVo clubById = this.clubDao.getClubById(id); + if (clubById == null){ + return null; + } + Club club = new Club(); + club.setId(id); + club.setName(clubById.name()); + club.setCommit(clubById.commit()); + return club; + } + public Club getClubByUserId(int userId){ + ClubUserAuthVo clubUserAuthVoByUserId = this.clubUserAuthDao.getClubUserAuthVoByUserId(userId); + int i = clubUserAuthVoByUserId.authId(); + Auth auth = i != -1 ? authService.getAuthById(i) : null; + Club clubById = getClubWithoutAuthById(clubUserAuthVoByUserId.clubId()); + clubById.setAuth(auth); + return clubById; + } +} diff --git a/src/main/java/org/mmga/clubs/service/UserService.java b/src/main/java/org/mmga/clubs/service/UserService.java index 7c8ed92..5f3c86d 100644 --- a/src/main/java/org/mmga/clubs/service/UserService.java +++ b/src/main/java/org/mmga/clubs/service/UserService.java @@ -45,9 +45,10 @@ public class UserService { private final File tempDir; private final AvatarDao avatarDao; private final File avatarDir; + private final ClubService clubService; @Autowired - public UserService(UserDao userDao, AuthService authService, JwtUtils jwtUtils, VerifyCodeService verifyCodeService, File tempDir, AvatarDao avatarDao, @Qualifier("avatarDir") File avatarDir){ + public UserService(UserDao userDao, AuthService authService, JwtUtils jwtUtils, VerifyCodeService verifyCodeService, File tempDir, AvatarDao avatarDao, @Qualifier("avatarDir") File avatarDir, ClubService clubService){ this.userDao = userDao; this.authService = authService; this.jwtUtils = jwtUtils; @@ -55,6 +56,7 @@ public class UserService { this.tempDir = tempDir; this.avatarDao = avatarDao; this.avatarDir = avatarDir; + this.clubService = clubService; } public BaseResponse login(UserLoginVo user, HttpServletResponse response) { @@ -105,6 +107,7 @@ public class UserService { result.setName(vo.name()); result.setAvatar(vo.avatar()); result.setAuth(authService.getAuthById(vo.auth())); + result.setClub(clubService.getClubByUserId(vo.id())); return result; } diff --git a/src/main/resources/org/mmga/clubs/dao/ClubDao.xml b/src/main/resources/org/mmga/clubs/dao/ClubDao.xml new file mode 100644 index 0000000..055335f --- /dev/null +++ b/src/main/resources/org/mmga/clubs/dao/ClubDao.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/src/main/resources/org/mmga/clubs/dao/ClubUserAuthDao.xml b/src/main/resources/org/mmga/clubs/dao/ClubUserAuthDao.xml new file mode 100644 index 0000000..535f40e --- /dev/null +++ b/src/main/resources/org/mmga/clubs/dao/ClubUserAuthDao.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file From bf23cc4c9cc3cb508ae25eabdc46009c75fcca05 Mon Sep 17 00:00:00 2001 From: wzp Date: Thu, 25 Apr 2024 17:47:57 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E4=BA=86?= =?UTF-8?q?=E7=A4=BE=E5=9B=A2=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD=EF=BC=88?= =?UTF-8?q?=E6=9F=A5=E6=89=BE=E7=A4=BE=E5=9B=A2=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mmga/clubs/controller/ClubController.java | 26 +++++++++++++ .../org/mmga/clubs/dao/ClubUserAuthDao.java | 3 ++ src/main/java/org/mmga/clubs/dao/UserDao.java | 3 ++ .../clubs/entities/club/ClubInformation.java | 20 ++++++++++ .../user/ClubUserSimpleInformation.java | 15 ++++++++ .../entities/user/UserSimpleInformation.java | 15 ++++++++ .../org/mmga/clubs/service/ClubService.java | 37 ++++++++++++++++++- .../org/mmga/clubs/service/UserService.java | 4 ++ .../org/mmga/clubs/dao/ClubUserAuthDao.xml | 3 ++ .../resources/org/mmga/clubs/dao/UserDao.xml | 3 ++ 10 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/mmga/clubs/controller/ClubController.java create mode 100644 src/main/java/org/mmga/clubs/entities/club/ClubInformation.java create mode 100644 src/main/java/org/mmga/clubs/entities/user/ClubUserSimpleInformation.java create mode 100644 src/main/java/org/mmga/clubs/entities/user/UserSimpleInformation.java diff --git a/src/main/java/org/mmga/clubs/controller/ClubController.java b/src/main/java/org/mmga/clubs/controller/ClubController.java new file mode 100644 index 0000000..f71cb68 --- /dev/null +++ b/src/main/java/org/mmga/clubs/controller/ClubController.java @@ -0,0 +1,26 @@ +package org.mmga.clubs.controller; + +import io.swagger.v3.oas.annotations.tags.Tag; +import org.mmga.clubs.entities.BaseResponse; +import org.mmga.clubs.entities.club.ClubInformation; +import org.mmga.clubs.service.ClubService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/club") +@Tag(name = "社团", description = "社团相关接口") +public class ClubController { + private final ClubService clubService; + @Autowired + public ClubController(ClubService clubService) { + this.clubService = clubService; + } + @GetMapping("/") + public BaseResponse getClub(@RequestParam("id") int clubId){ + return clubService.getClubInformationById(clubId); + } +} diff --git a/src/main/java/org/mmga/clubs/dao/ClubUserAuthDao.java b/src/main/java/org/mmga/clubs/dao/ClubUserAuthDao.java index 806146a..344fab5 100644 --- a/src/main/java/org/mmga/clubs/dao/ClubUserAuthDao.java +++ b/src/main/java/org/mmga/clubs/dao/ClubUserAuthDao.java @@ -3,7 +3,10 @@ package org.mmga.clubs.dao; import org.apache.ibatis.annotations.Mapper; import org.mmga.clubs.entities.ClubUserAuthVo; +import java.util.List; + @Mapper public interface ClubUserAuthDao { ClubUserAuthVo getClubUserAuthVoByUserId(int userId); + List getUsersByClubId(int clubId); } diff --git a/src/main/java/org/mmga/clubs/dao/UserDao.java b/src/main/java/org/mmga/clubs/dao/UserDao.java index 92b3352..22a42bc 100644 --- a/src/main/java/org/mmga/clubs/dao/UserDao.java +++ b/src/main/java/org/mmga/clubs/dao/UserDao.java @@ -2,6 +2,7 @@ package org.mmga.clubs.dao; import org.apache.ibatis.annotations.Mapper; import org.mmga.clubs.entities.user.UserRegResponseVo; +import org.mmga.clubs.entities.user.UserSimpleInformation; import org.mmga.clubs.entities.user.UserVo; import java.util.List; @@ -20,4 +21,6 @@ public interface UserDao { void changePasswordAdmin(int id, String password); void changeAuth(int id, int authId); void changeAvatar(int id, String sha); + + UserSimpleInformation getUserSimpleInformation(int userId); } diff --git a/src/main/java/org/mmga/clubs/entities/club/ClubInformation.java b/src/main/java/org/mmga/clubs/entities/club/ClubInformation.java new file mode 100644 index 0000000..3f0b05a --- /dev/null +++ b/src/main/java/org/mmga/clubs/entities/club/ClubInformation.java @@ -0,0 +1,20 @@ +package org.mmga.clubs.entities.club; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.mmga.clubs.entities.user.ClubUserSimpleInformation; + +import java.util.List; + +@Data +@Schema(description = "社团详细详细") +public class ClubInformation { + @Schema(description = "社团ID") + private int id; + @Schema(description = "社团名称") + private String name; + @Schema(description = "社团简介") + private String commit; + @Schema(description = "社团用户信息") + private List users; +} diff --git a/src/main/java/org/mmga/clubs/entities/user/ClubUserSimpleInformation.java b/src/main/java/org/mmga/clubs/entities/user/ClubUserSimpleInformation.java new file mode 100644 index 0000000..d64b875 --- /dev/null +++ b/src/main/java/org/mmga/clubs/entities/user/ClubUserSimpleInformation.java @@ -0,0 +1,15 @@ +package org.mmga.clubs.entities.user; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +@Schema(description = "社团用户简单信息") +public class ClubUserSimpleInformation extends UserSimpleInformation{ + @Schema(description = "社团ID") + private int clubId; + @Schema(description = "社团职务名称") + private String clubAuthName; +} diff --git a/src/main/java/org/mmga/clubs/entities/user/UserSimpleInformation.java b/src/main/java/org/mmga/clubs/entities/user/UserSimpleInformation.java new file mode 100644 index 0000000..a534b1a --- /dev/null +++ b/src/main/java/org/mmga/clubs/entities/user/UserSimpleInformation.java @@ -0,0 +1,15 @@ +package org.mmga.clubs.entities.user; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "用户基础信息") +public class UserSimpleInformation { + @Schema(description = "用户ID") + private int id; + @Schema(description = "用户名") + private String name; + @Schema(description = "用户头像SHA1") + private String avatar; +} diff --git a/src/main/java/org/mmga/clubs/service/ClubService.java b/src/main/java/org/mmga/clubs/service/ClubService.java index 576b21c..ed4d575 100644 --- a/src/main/java/org/mmga/clubs/service/ClubService.java +++ b/src/main/java/org/mmga/clubs/service/ClubService.java @@ -2,23 +2,33 @@ package org.mmga.clubs.service; import org.mmga.clubs.dao.ClubDao; import org.mmga.clubs.dao.ClubUserAuthDao; +import org.mmga.clubs.entities.BaseResponse; import org.mmga.clubs.entities.ClubUserAuthVo; import org.mmga.clubs.entities.auth.Auth; import org.mmga.clubs.entities.club.Club; +import org.mmga.clubs.entities.club.ClubInformation; import org.mmga.clubs.entities.club.ClubVo; +import org.mmga.clubs.entities.user.ClubUserSimpleInformation; +import org.mmga.clubs.entities.user.UserSimpleInformation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.util.List; + @Service public class ClubService { private final ClubUserAuthDao clubUserAuthDao; private final ClubDao clubDao; private final AuthService authService; + private final UserService userService; + @Autowired - public ClubService(ClubUserAuthDao clubUserAuthDao, ClubDao clubDao, AuthService authService){ + public ClubService(ClubUserAuthDao clubUserAuthDao, ClubDao clubDao, AuthService authService, @Lazy UserService userService){ this.clubDao = clubDao; this.clubUserAuthDao = clubUserAuthDao; this.authService = authService; + this.userService = userService; } public Club getClubWithoutAuthById(int id){ ClubVo clubById = this.clubDao.getClubById(id); @@ -39,4 +49,29 @@ public class ClubService { clubById.setAuth(auth); return clubById; } + private List getUserInformationByClubId(int clubId){ + List usersByClubId = this.clubUserAuthDao.getUsersByClubId(clubId); + return usersByClubId.stream().map(this::packageInformation).toList(); + } + private ClubUserSimpleInformation packageInformation(ClubUserAuthVo clubUserAuthVo){ + int i = clubUserAuthVo.authId(); + String authName = i != -1 ? authService.getAuthById(i).getName() : "社员"; + UserSimpleInformation userSimpleInformation = userService.getUserSimpleInformation(clubUserAuthVo.userId()); + ClubUserSimpleInformation clubUserSimpleInformation = new ClubUserSimpleInformation(); + clubUserSimpleInformation.setId(userSimpleInformation.getId()); + clubUserSimpleInformation.setName(userSimpleInformation.getName()); + clubUserSimpleInformation.setAvatar(userSimpleInformation.getAvatar()); + clubUserSimpleInformation.setClubId(clubUserAuthVo.clubId()); + clubUserSimpleInformation.setClubAuthName(authName); + return clubUserSimpleInformation; + } + public BaseResponse getClubInformationById(int clubId) { + Club clubWithoutAuthById = getClubWithoutAuthById(clubId); + ClubInformation clubInformation = new ClubInformation(); + clubInformation.setId(clubWithoutAuthById.getId()); + clubInformation.setName(clubWithoutAuthById.getName()); + clubInformation.setCommit(clubWithoutAuthById.getCommit()); + clubInformation.setUsers(this.getUserInformationByClubId(clubId)); + return BaseResponse.success(clubInformation); + } } diff --git a/src/main/java/org/mmga/clubs/service/UserService.java b/src/main/java/org/mmga/clubs/service/UserService.java index 5f3c86d..d232119 100644 --- a/src/main/java/org/mmga/clubs/service/UserService.java +++ b/src/main/java/org/mmga/clubs/service/UserService.java @@ -230,4 +230,8 @@ public class UserService { fileInputStream.close(); } } + + public UserSimpleInformation getUserSimpleInformation(int userId) { + return userDao.getUserSimpleInformation(userId); + } } diff --git a/src/main/resources/org/mmga/clubs/dao/ClubUserAuthDao.xml b/src/main/resources/org/mmga/clubs/dao/ClubUserAuthDao.xml index 535f40e..ff336ec 100644 --- a/src/main/resources/org/mmga/clubs/dao/ClubUserAuthDao.xml +++ b/src/main/resources/org/mmga/clubs/dao/ClubUserAuthDao.xml @@ -6,4 +6,7 @@ + \ No newline at end of file diff --git a/src/main/resources/org/mmga/clubs/dao/UserDao.xml b/src/main/resources/org/mmga/clubs/dao/UserDao.xml index 8b50e07..8b78ef0 100644 --- a/src/main/resources/org/mmga/clubs/dao/UserDao.xml +++ b/src/main/resources/org/mmga/clubs/dao/UserDao.xml @@ -36,4 +36,7 @@ + \ No newline at end of file