diff --git a/.gitignore b/.gitignore index 0b2856cc..bca4b7ee 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ upload *.exe *.db build -*.db-journal \ No newline at end of file +*.db-journal +one-api diff --git a/controller/wechat.go b/controller/wechat.go index babfbc87..380cea3b 100644 --- a/controller/wechat.go +++ b/controller/wechat.go @@ -172,3 +172,21 @@ func WeChatBind(c *gin.Context) { }) return } + +func IsWeChatIdAvailable(c *gin.Context) { + + wechatId := c.Query("wechat_id") + + if model.IsWeChatIdAlreadyTaken(wechatId) { + c.JSON(http.StatusOK, gin.H{ + "success": false, + "message": "该微信账号已被绑定,不可用", + }) + return + } + c.JSON(http.StatusOK, gin.H{ + "success": true, + "message": "该微信账号未绑定任何账号,可用", + }) + return +} diff --git a/router/api-router.go b/router/api-router.go index 60962d9b..ec43595e 100644 --- a/router/api-router.go +++ b/router/api-router.go @@ -23,6 +23,7 @@ func SetApiRouter(router *gin.Engine) { apiRouter.GET("/oauth/github", middleware.CriticalRateLimit(), controller.GitHubOAuth) apiRouter.GET("/oauth/state", middleware.CriticalRateLimit(), controller.GenerateOAuthCode) apiRouter.GET("/oauth/wechat", middleware.CriticalRateLimit(), controller.WeChatAuth) + apiRouter.GET("/oauth/wechat/is_available", middleware.CriticalRateLimit(), controller.IsWeChatIdAvailable) apiRouter.GET("/oauth/wechat/bind", middleware.CriticalRateLimit(), middleware.UserAuth(), controller.WeChatBind) apiRouter.GET("/oauth/email/bind", middleware.CriticalRateLimit(), middleware.UserAuth(), controller.EmailBind)