feat: add club information change related controller

This commit is contained in:
wzp 2024-12-25 19:51:21 +08:00
parent 6c286868f6
commit dabf9c71d1
6 changed files with 85 additions and 11 deletions

View File

@ -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<Boolean> 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<Boolean> 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<Boolean> changeName(@RequestBody ChangeClubNameRequest request) {
return clubServices.changeName(request);
}
@PutMapping("/commit")
@Operation(description = "修改社团名称")
public Result<Boolean> changeCommit(@RequestBody ChangeClubCommitRequest request, @Auth(permissions = {@PermissionDescription(3), @PermissionDescription(value = 1, type = DescriptionType.CLUB)}) User user) {
return clubServices.changeCommit(request, user);
}
}

View File

@ -74,8 +74,8 @@ public class UserController {
@PutMapping("/avatar")
@Operation(description = "修改用户头像")
public Result<Boolean> changeAvatar(@RequestParam("code") @Schema(description = "修改头像操作码,可以通过将图片文件上传至([POST] /api/avatar/upload)接口获取") String avatarOperationCode, @Auth User user) {
return userServices.changeAvatar(avatarOperationCode, user);
public Result<Boolean> 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")

View File

@ -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) {
}

View File

@ -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) {
}

View File

@ -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<Boolean> 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<String> 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<Boolean> 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<Boolean> 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);
}
}

View File

@ -130,11 +130,17 @@ public class UserServices {
}
public Result<Boolean> changeAvatar(String avatarOperationCode, User user) {
public Result<Boolean> 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<String> 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);