diff --git a/src/main/java/org/blue/club/controller/ClubController.java b/src/main/java/org/blue/club/controller/ClubController.java index f68ab3b..d560959 100644 --- a/src/main/java/org/blue/club/controller/ClubController.java +++ b/src/main/java/org/blue/club/controller/ClubController.java @@ -7,9 +7,7 @@ import lombok.RequiredArgsConstructor; import org.blue.club.annotation.Auth; import org.blue.club.annotation.DescriptionType; import org.blue.club.annotation.PermissionDescription; -import org.blue.club.entities.dto.club.req.ClubAddUserRequest; -import org.blue.club.entities.dto.club.req.ClubChangeUserAuthRequest; -import org.blue.club.entities.dto.club.req.CreateClubRequest; +import org.blue.club.entities.dto.club.req.*; import org.blue.club.entities.dto.user.User; import org.blue.club.entities.vo.data.ClubVo; import org.blue.club.services.ClubServices; @@ -60,4 +58,23 @@ public class ClubController { public Result clubChangeUserAuth(@Auth(permissions = {@PermissionDescription(3), @PermissionDescription(value = 2, type = DescriptionType.CLUB)}) User user, @RequestBody ClubChangeUserAuthRequest request) { return clubServices.clubChangeUserAuth(user, request); } + + @PutMapping("/avatar") + @Operation(description = "修改社团头像") + public Result changeAvatar(@RequestParam("code") @Schema(description = "修改头像操作码,可以通过将图片文件上传至([POST] /api/avatar/upload)接口获取") String avatarOperationCode, @Schema(description = "被修改的社团ID") @RequestParam long clubId, @Auth(permissions = {@PermissionDescription(3), @PermissionDescription(value = 1, type = DescriptionType.CLUB)}) User user) { + return clubServices.changeAvatar(avatarOperationCode, clubId, user); + } + + @PutMapping("/name") + @Operation(description = "修改社团名称") + @Auth(permissions = {@PermissionDescription(3)}) + public Result changeName(@RequestBody ChangeClubNameRequest request) { + return clubServices.changeName(request); + } + + @PutMapping("/commit") + @Operation(description = "修改社团名称") + public Result changeCommit(@RequestBody ChangeClubCommitRequest request, @Auth(permissions = {@PermissionDescription(3), @PermissionDescription(value = 1, type = DescriptionType.CLUB)}) User user) { + return clubServices.changeCommit(request, user); + } } diff --git a/src/main/java/org/blue/club/controller/UserController.java b/src/main/java/org/blue/club/controller/UserController.java index 164f3ad..8110adb 100644 --- a/src/main/java/org/blue/club/controller/UserController.java +++ b/src/main/java/org/blue/club/controller/UserController.java @@ -74,8 +74,8 @@ public class UserController { @PutMapping("/avatar") @Operation(description = "修改用户头像") - public Result changeAvatar(@RequestParam("code") @Schema(description = "修改头像操作码,可以通过将图片文件上传至([POST] /api/avatar/upload)接口获取") String avatarOperationCode, @Auth User user) { - return userServices.changeAvatar(avatarOperationCode, user); + public Result changeAvatar(@RequestParam("code") @Schema(description = "修改头像操作码,可以通过将图片文件上传至([POST] /api/avatar/upload)接口获取") String avatarOperationCode, @Schema(description = "被修改的用户ID", defaultValue = "-1") @RequestParam long userId, @Auth User user) { + return userServices.changeAvatar(avatarOperationCode, userId, user); } @GetMapping("/verify") diff --git a/src/main/java/org/blue/club/entities/dto/club/req/ChangeClubCommitRequest.java b/src/main/java/org/blue/club/entities/dto/club/req/ChangeClubCommitRequest.java new file mode 100644 index 0000000..bbb92b1 --- /dev/null +++ b/src/main/java/org/blue/club/entities/dto/club/req/ChangeClubCommitRequest.java @@ -0,0 +1,8 @@ +package org.blue.club.entities.dto.club.req; + +import io.swagger.v3.oas.annotations.media.Schema; + +@Schema(name = "修改社团简介请求") +public record ChangeClubCommitRequest(@Schema(description = "社团ID") Long clubId, + @Schema(description = "新社团简介") String commit) { +} diff --git a/src/main/java/org/blue/club/entities/dto/club/req/ChangeClubNameRequest.java b/src/main/java/org/blue/club/entities/dto/club/req/ChangeClubNameRequest.java new file mode 100644 index 0000000..52f2c33 --- /dev/null +++ b/src/main/java/org/blue/club/entities/dto/club/req/ChangeClubNameRequest.java @@ -0,0 +1,8 @@ +package org.blue.club.entities.dto.club.req; + +import io.swagger.v3.oas.annotations.media.Schema; + +@Schema(name = "修改社团名称请求") +public record ChangeClubNameRequest(@Schema(description = "社团ID") Long clubId, + @Schema(description = "新社团名称") String name) { +} diff --git a/src/main/java/org/blue/club/services/ClubServices.java b/src/main/java/org/blue/club/services/ClubServices.java index 724fe5a..6ec1937 100644 --- a/src/main/java/org/blue/club/services/ClubServices.java +++ b/src/main/java/org/blue/club/services/ClubServices.java @@ -7,9 +7,7 @@ import lombok.extern.slf4j.Slf4j; import org.blue.club.dao.ClubDao; import org.blue.club.dao.ClubUserAuthDao; import org.blue.club.dao.UserDao; -import org.blue.club.entities.dto.club.req.ClubAddUserRequest; -import org.blue.club.entities.dto.club.req.ClubChangeUserAuthRequest; -import org.blue.club.entities.dto.club.req.CreateClubRequest; +import org.blue.club.entities.dto.club.req.*; import org.blue.club.entities.dto.user.User; import org.blue.club.entities.vo.data.ClubAuthVo; import org.blue.club.entities.vo.data.ClubUserAuthVo; @@ -25,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.Optional; import static com.mybatisflex.core.query.QueryMethods.select; import static org.blue.club.entities.vo.data.table.ClubUserAuthVoTableDef.CLUB_USER_AUTH_VO; @@ -37,6 +36,7 @@ import static org.blue.club.entities.vo.data.table.UserVoTableDef.USER_VO; public class ClubServices { private final ClubDao clubDao; private final ClubUserAuthDao clubUserAuthDao; + private final AvatarServices avatarServices; private final UserDao userDao; private final VoUtils voUtils; @@ -129,6 +129,41 @@ public class ClubServices { throw new AuthorizationException(Result.failed(HttpStatus.FORBIDDEN, "权限不足!")); clubUserAuthVo.setAuthId(targetClubAuthId); clubUserAuthDao.update(clubUserAuthVo); - return null; + return Result.success(true); + } + + public Result changeAvatar(String avatarOperationCode, long clubId, User user) { + long operatorUserClubId = NullableUtils.ifNonNullDoElse(user.getClub(), ClubVo::getId, -1L); + if (clubId != operatorUserClubId && !user.hasSuperAdminPermission()) + throw new AuthorizationException(Result.failed(HttpStatus.FORBIDDEN, "权限不足!")); + Optional result = avatarServices.permanentSaveAvatar(avatarOperationCode); + if (result.isEmpty()) return Result.failed(HttpStatus.NOT_FOUND, "操作码错误或过期"); + ClubVo clubVo = new ClubVo(); + clubVo.setId(clubId); + clubVo.setAvatar(result.get()); + clubDao.update(clubVo); + return Result.success(true); + } + + public Result changeName(ChangeClubNameRequest request) { + long clubId = request.clubId(); + String newName = request.name(); + ClubVo clubVo = new ClubVo(); + clubVo.setId(clubId); + clubVo.setName(newName); + clubDao.update(clubVo); + return Result.success(true); + } + + public Result changeCommit(ChangeClubCommitRequest request, User user) { + long operatorUserClubId = NullableUtils.ifNonNullDoElse(user.getClub(), ClubVo::getId, -1L); + long clubId = request.clubId(); + if (clubId != operatorUserClubId && !user.hasSuperAdminPermission()) + throw new AuthorizationException(Result.failed(HttpStatus.FORBIDDEN, "权限不足!")); + ClubVo clubVo = new ClubVo(); + clubVo.setId(clubId); + clubVo.setCommit(request.commit()); + clubDao.update(clubVo); + return Result.success(true); } } diff --git a/src/main/java/org/blue/club/services/UserServices.java b/src/main/java/org/blue/club/services/UserServices.java index 270cd4b..4fc4aca 100644 --- a/src/main/java/org/blue/club/services/UserServices.java +++ b/src/main/java/org/blue/club/services/UserServices.java @@ -130,11 +130,17 @@ public class UserServices { } - public Result changeAvatar(String avatarOperationCode, User user) { + public Result changeAvatar(String avatarOperationCode, long userId, User user) { + long operatorUserId = user.getId(); + if (userId == -1) { + userId = operatorUserId; + } + if (userId != operatorUserId && !user.hasSuperAdminPermission()) + throw new AuthorizationException(Result.failed(HttpStatus.FORBIDDEN, "权限不足!")); Optional result = avatarServices.permanentSaveAvatar(avatarOperationCode); if (result.isEmpty()) return Result.failed(HttpStatus.NOT_FOUND, "操作码错误或过期"); UserVo userVo = new UserVo(); - userVo.setId(user.getId()); + userVo.setId(userId); userVo.setAvatar(result.get()); userDao.update(userVo); return Result.success(true);