feat(api): 删除账号
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
package account
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/ssdomei232/goodBaby/api/rule"
|
||||
"github.com/ssdomei232/goodBaby/api/user"
|
||||
"github.com/ssdomei232/goodBaby/handler/db"
|
||||
"github.com/ssdomei232/goodBaby/model"
|
||||
@@ -60,3 +63,70 @@ func HandleGetAllAccounts(c *gin.Context) {
|
||||
|
||||
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": "删除账号成功"})
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -33,6 +33,7 @@ func main() {
|
||||
authorized.DELETE("/rules/:ruleID", rule.HandleDeleteRule)
|
||||
authorized.GET("/accounts", account.HandleGetAllAccounts)
|
||||
authorized.POST("/accounts", account.HandleAddAccount)
|
||||
authorized.GET("/accounts/:accountID/check", account.HandleCheckDeleteAccount)
|
||||
}
|
||||
|
||||
r.Run(":8088")
|
||||
|
||||
Reference in New Issue
Block a user