feat(api): 删除账号
This commit is contained in:
@@ -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": "删除账号成功"})
|
||||||
|
}
|
||||||
|
|||||||
@@ -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.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")
|
||||||
|
|||||||
Reference in New Issue
Block a user