Skip to content

Commit ef56a07

Browse files
committed
feat(user): add unbind Bangumi account functionality and update related services
1 parent 6df3952 commit ef56a07

3 files changed

Lines changed: 32 additions & 1 deletion

File tree

flow-client/src/main/java/com/ligg/flowclient/controller/AccountController.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,8 @@ public Result<BangumiBindVo> getBangumiBind(
127127
}
128128

129129
/**
130-
* 绑定 Bangumi 账号(需已登录 AnimeFlow,Body 传 OAuth 授权码 code)。
130+
* 绑定 Bangumi 账号
131+
* 需已登录 AnimeFlow,Body 传 OAuth 授权码 code。
131132
*/
132133
@PostMapping("/oauth/bangumi/bind")
133134
@IpEndpointRateLimit(keyPrefix = "animeflow:account:bind-bangumi:ip:", seconds = 60, maxRequests = 10)
@@ -139,6 +140,19 @@ public Result<BangumiBindVo> bindBangumi(
139140
return Result.success(ResponseCode.SUCCESS, bindVo);
140141
}
141142

143+
/**
144+
* 解绑当前账号绑定的 Bangumi 账号
145+
* 删除关联的 OAuth 记录。
146+
*/
147+
@PostMapping("/oauth/bangumi/unbind")
148+
@IpEndpointRateLimit(keyPrefix = "animeflow:account:unbind-bangumi:ip:", seconds = 60, maxRequests = 10)
149+
public Result<BangumiBindVo> unbindBangumi(
150+
@RequestAttribute(AuthorizationInterceptor.ACCESS_TOKEN_REQUEST_ATTRIBUTE) String accessToken) {
151+
Long userId = jwtTokenService.validateAccessToken(accessToken);
152+
BangumiBindVo bindVo = userOauthService.unbindBangumi(userId);
153+
return Result.success(ResponseCode.SUCCESS, bindVo);
154+
}
155+
142156
/**
143157
* 绑定邮箱并设置登录密码。
144158
*/

flow-client/src/main/java/com/ligg/flowclient/service/UserOauthService.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,11 @@ public interface UserOauthService {
2020
* Bangumi 第三方授权登录:已绑定则直接登录,未绑定则创建本地账号(邮箱/密码为空)并登录。
2121
*/
2222
FlowTokenVo loginBangumi(String code, Platform platform);
23+
24+
/**
25+
* 解绑当前用户绑定的 Bangumi 账号,删除 user_oauth 中的关联记录。
26+
*
27+
* @return 解绑后的绑定状态(始终为 {@link BangumiBindVo#notBound()})
28+
*/
29+
BangumiBindVo unbindBangumi(Long userId);
2330
}

flow-client/src/main/java/com/ligg/flowclient/service/impl/UserOauthServiceImpl.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,16 @@ public BangumiBindVo bindBangumi(Long userId, String code) {
7676
return toBindVo(context.me());
7777
}
7878

79+
@Override
80+
@Transactional(rollbackFor = Exception.class)
81+
public BangumiBindVo unbindBangumi(Long userId) {
82+
UserOauthEntity entity = findByUserAndPlatform(userId);
83+
if (entity != null) {
84+
userOauthMapper.deleteById(entity.getId());
85+
}
86+
return BangumiBindVo.notBound();
87+
}
88+
7989
@Override
8090
@Transactional(rollbackFor = Exception.class)
8191
public FlowTokenVo loginBangumi(String code, Platform platform) {

0 commit comments

Comments
 (0)