feat(api): 删除账号

This commit is contained in:
mei
2026-04-05 22:46:11 +08:00
parent 52dc548c53
commit 80e427d7c3
3 changed files with 92 additions and 0 deletions
+70
View File
@@ -1,7 +1,10 @@
package account package account
import ( import (
"strconv"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/ssdomei232/goodBaby/api/rule"
"github.com/ssdomei232/goodBaby/api/user" "github.com/ssdomei232/goodBaby/api/user"
"github.com/ssdomei232/goodBaby/handler/db" "github.com/ssdomei232/goodBaby/handler/db"
"github.com/ssdomei232/goodBaby/model" "github.com/ssdomei232/goodBaby/model"
@@ -60,3 +63,70 @@ func HandleGetAllAccounts(c *gin.Context) {
c.JSON(200, gin.H{"code": 200, "data": accounts}) c.JSON(200, gin.H{"code": 200, "data": accounts})
} }
// 检查删除账号请求
//
// 删除账号会同时删除相关规则,先请求该接口获取受影响的规则
func HandleCheckDeleteAccount(c *gin.Context) {
userInfo, err := user.GetUserInfoByGinCtx(c)
if err != nil {
c.JSON(401, gin.H{"code": 401, "data": "获取用户信息失败"})
return
}
accountID, err := strconv.Atoi(c.Param("accountID"))
if err != nil {
c.JSON(400, gin.H{"code": 400, "data": "账号ID格式错误"})
return
}
rules, err := getRulesByAccountID(uint(accountID), userInfo.ID)
if err != nil {
c.JSON(500, gin.H{"code": 500, "data": "获取相关规则失败"})
return
}
c.JSON(200, gin.H{"code": 200, "data": rules})
}
// 删除账号
func HandleDeleteAccount(c *gin.Context) {
userInfo, err := user.GetUserInfoByGinCtx(c)
if err != nil {
c.JSON(401, gin.H{"code": 401, "data": "获取用户信息失败"})
return
}
accountID, err := strconv.Atoi(c.Param("accountID"))
if err != nil {
c.JSON(400, gin.H{"code": 400, "data": "账号ID格式错误"})
return
}
rules, err := getRulesByAccountID(uint(accountID), userInfo.ID)
if err != nil {
c.JSON(500, gin.H{"code": 500, "data": "获取相关规则失败"})
return
}
for _, oneRule := range rules {
err = rule.DeleteRuleByID(oneRule.ID, userInfo.ID)
if err != nil {
c.JSON(500, gin.H{"code": 500, "data": "删除相关规则失败"})
return
}
}
gormDB, err := db.GetGormDB()
if err != nil {
c.JSON(500, gin.H{"code": 500, "data": "服务器内部错误"})
return
}
result := gormDB.Where("id = ? AND uid = ?", accountID, userInfo.ID).Delete(&model.Account{})
if result.Error != nil {
c.JSON(500, gin.H{"code": 500, "data": "删除账号失败"})
return
}
c.JSON(200, gin.H{"code": 200, "data": "删除账号成功"})
}
+21
View File
@@ -0,0 +1,21 @@
package account
import (
"github.com/ssdomei232/goodBaby/handler/db"
"github.com/ssdomei232/goodBaby/model"
)
// 获取账号相关的规则列表
func getRulesByAccountID(accountID uint, uid uint) ([]*model.Rule, error) {
gormDB, err := db.GetGormDB()
if err != nil {
return nil, err
}
var rules []*model.Rule
result := gormDB.Where("account_id = ? AND uid = ?", accountID, uid).Find(&rules)
if result.Error != nil {
return nil, result.Error
}
return rules, nil
}
+1
View File
@@ -33,6 +33,7 @@ func main() {
authorized.DELETE("/rules/:ruleID", rule.HandleDeleteRule) authorized.DELETE("/rules/:ruleID", rule.HandleDeleteRule)
authorized.GET("/accounts", account.HandleGetAllAccounts) authorized.GET("/accounts", account.HandleGetAllAccounts)
authorized.POST("/accounts", account.HandleAddAccount) authorized.POST("/accounts", account.HandleAddAccount)
authorized.GET("/accounts/:accountID/check", account.HandleCheckDeleteAccount)
} }
r.Run(":8088") r.Run(":8088")