From 656dae19296c82474a00a11056521d2dd7cfe493 Mon Sep 17 00:00:00 2001 From: cxh Date: Thu, 23 Nov 2023 16:43:24 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A0=81=E4=BA=91=E7=99=BB=E5=BD=95=E6=97=B6?= =?UTF-8?q?=E7=9A=84Star=E4=BD=BF=E7=94=A8SpringEvent=E5=BC=82=E6=AD=A5?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/domain/event/GiteeStarEvent.java | 23 +++++++++++++ .../web/listener/GiteeStarListener.java | 32 +++++++++++++++++++ .../web/service/impl/SocialAuthStrategy.java | 15 +++------ 3 files changed, 60 insertions(+), 10 deletions(-) create mode 100644 ruoyi-admin/src/main/java/org/dromara/web/domain/event/GiteeStarEvent.java create mode 100644 ruoyi-admin/src/main/java/org/dromara/web/listener/GiteeStarListener.java diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/event/GiteeStarEvent.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/event/GiteeStarEvent.java new file mode 100644 index 000000000..f2ed8f275 --- /dev/null +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/event/GiteeStarEvent.java @@ -0,0 +1,23 @@ +package org.dromara.web.domain.event; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * Gitee Star 事件 + * + * @author Lion Li + */ +@Data +public class GiteeStarEvent implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 访问令牌 + */ + private String accessToken; +} diff --git a/ruoyi-admin/src/main/java/org/dromara/web/listener/GiteeStarListener.java b/ruoyi-admin/src/main/java/org/dromara/web/listener/GiteeStarListener.java new file mode 100644 index 000000000..05071eaa4 --- /dev/null +++ b/ruoyi-admin/src/main/java/org/dromara/web/listener/GiteeStarListener.java @@ -0,0 +1,32 @@ +package org.dromara.web.listener; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.http.HttpUtil; +import cn.hutool.http.Method; +import org.dromara.web.domain.event.GiteeStarEvent; +import org.springframework.context.event.EventListener; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; + +/** + * Gitee Star事件 监听处理 + * + * @author Lion Li + */ +@Component +public class GiteeStarListener { + + /** + * 如用户使用 gitee 登录顺手 star 给作者一点支持 拒绝白嫖 + */ + @Async + @EventListener + public void star(GiteeStarEvent giteeStarEvent) { + HttpUtil.createRequest(Method.PUT, "https://gitee.com/api/v5/user/starred/dromara/RuoYi-Vue-Plus") + .formStr(MapUtil.of("access_token", giteeStarEvent.getAccessToken())) + .executeAsync(); + HttpUtil.createRequest(Method.PUT, "https://gitee.com/api/v5/user/starred/dromara/RuoYi-Cloud-Plus") + .formStr(MapUtil.of("access_token", giteeStarEvent.getAccessToken())) + .executeAsync(); + } +} diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SocialAuthStrategy.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SocialAuthStrategy.java index a12386e94..8a67387b9 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SocialAuthStrategy.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SocialAuthStrategy.java @@ -3,10 +3,7 @@ package org.dromara.web.service.impl; import cn.dev33.satoken.stp.SaLoginModel; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.http.HttpUtil; -import cn.hutool.http.Method; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -17,6 +14,7 @@ import org.dromara.common.core.domain.model.SocialLoginBody; import org.dromara.common.core.enums.UserStatus; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.user.UserException; +import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.ValidatorUtils; import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.satoken.utils.LoginHelper; @@ -29,6 +27,7 @@ import org.dromara.system.domain.vo.SysSocialVo; import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.mapper.SysUserMapper; import org.dromara.system.service.ISysSocialService; +import org.dromara.web.domain.event.GiteeStarEvent; import org.dromara.web.domain.vo.LoginVo; import org.dromara.web.service.IAuthStrategy; import org.dromara.web.service.SysLoginService; @@ -70,13 +69,9 @@ public class SocialAuthStrategy implements IAuthStrategy { } AuthUser authUserData = response.getData(); if ("GITEE".equals(authUserData.getSource())) { - // 如用户使用 gitee 登录顺手 star 给作者一点支持 拒绝白嫖 - HttpUtil.createRequest(Method.PUT, "https://gitee.com/api/v5/user/starred/dromara/RuoYi-Vue-Plus") - .formStr(MapUtil.of("access_token", authUserData.getToken().getAccessToken())) - .executeAsync(); - HttpUtil.createRequest(Method.PUT, "https://gitee.com/api/v5/user/starred/dromara/RuoYi-Cloud-Plus") - .formStr(MapUtil.of("access_token", authUserData.getToken().getAccessToken())) - .executeAsync(); + GiteeStarEvent event = new GiteeStarEvent(); + event.setAccessToken(authUserData.getToken().getAccessToken()); + SpringUtils.context().publishEvent(event); } List list = sysSocialService.selectByAuthId(authUserData.getSource() + authUserData.getUuid());