用户管理:列表,添加,删除

This commit is contained in:
zhong
2024-05-13 19:28:41 +08:00
parent b6e4a813a5
commit ef4526aefe
9 changed files with 208 additions and 14 deletions

View File

@@ -1,14 +1,14 @@
package models
type Users struct {
ID int `gorm:"primaryKey"`
Username string `gorm:"username"`
Password string
Name string
Gender string
Avatar string `gorm:"default:https://git.nothamor.com:3000/avatars/5ac7c55998b93af2cb5c74e669959fc5?size=870"`
Address string
Role int
Email string
Phone string
ID int `json:"id" gorm:"primaryKey"`
Username string `json:"username" gorm:"username"`
Password string `json:"password"`
Name string `json:"name"`
Gender string `json:"gender"`
Avatar string `json:"avatar" gorm:"default:https://git.nothamor.com:3000/avatars/5ac7c55998b93af2cb5c74e669959fc5?size=870"`
Address string `json:"address"`
Role int `json:"role" gorm:"default:1"`
Email string `json:"email"`
Phone string `json:"phone"`
}

18
SourceTrace/proto/user.go Normal file
View File

@@ -0,0 +1,18 @@
package proto
type PageArgs struct {
Page int `json:"page"`
}
type UserArgs struct {
ID int `json:"id" gorm:"primaryKey"`
Username string `json:"username" gorm:"username"`
Password string `json:"password"`
Name string `json:"name"`
Gender string `json:"gender"`
Avatar string `json:"avatar" gorm:"default:https://git.nothamor.com:3000/avatars/5ac7c55998b93af2cb5c74e669959fc5?size=870"`
Address string `json:"address"`
Role int `json:"role" gorm:"default:1"`
Email string `json:"email"`
Phone string `json:"phone"`
}

View File

@@ -15,6 +15,7 @@ import (
"github.com/NothAmor/SourceTrace/models"
"github.com/NothAmor/SourceTrace/proto"
"github.com/NothAmor/SourceTrace/tools"
"github.com/ulule/deepcopier"
"golang.org/x/exp/maps"
"gorm.io/gorm"
)
@@ -248,3 +249,57 @@ func (t *Arith) Login(ctx context.Context, loginReq proto.LoginReq, loginResult
loginResult.Role = user.Role
return nil
}
func (t *Arith) ListUsers(ctx context.Context, pageArgs proto.PageArgs, listUsers *[]models.Users) (err error) {
println("开始查询")
err = common.DB.Find(&listUsers).Error
if err != nil {
println("查询失败")
return err
}
println("查询成功")
return nil
}
func (t *Arith) AddUser(ctx context.Context, userArgs proto.UserArgs, result *proto.Common) (err error) {
//1.判断用户名是否存在
var users []models.Users
err = common.DB.Where("username=?", userArgs.Username).Find(&users).Error
if err != nil {
result.Msg = "添加失败"
return err
}
if len(users) > 0 {
result.Msg = "添加失败,用户名重复"
return nil
}
//添加用户
var user models.Users
//参数拷贝
deepcopier.Copy(userArgs).To(&user)
err = common.DB.Create(&user).Error
if err != nil {
result.Msg = "添加失败"
return err
}
result.Msg = "添加成功"
return nil
}
func (t *Arith) DeleteUser(ctx context.Context, userID int, result *proto.Common) (err error) {
//删除用户
var user models.Users
user.ID = userID
err = common.DB.First(&user).Error
if err == gorm.ErrRecordNotFound {
result.Msg = "删除失败,删除用户不存在"
return nil
}
err = common.DB.Delete(&user).Error
if err != nil {
result.Msg = "删除失败"
return err
}
result.Msg = "删除成功"
return nil
}

View File

@@ -19,7 +19,7 @@ func Login(c *gin.Context) {
println(err)
}
if loginReq.Password == "" || loginReq.Password == "" {
if loginReq.Username == "" || loginReq.Password == "" {
c.JSON(http.StatusOK, gin.H{
"code": 200,
"msg": "用户名&&密码不能为空",
@@ -30,8 +30,8 @@ func Login(c *gin.Context) {
println(" 测试参数获取成功,后续可删除"+loginReq.Username, loginReq.Password+"开始调用远程服务接口")
//2.RPC调用接口实现登录功能
var loginResult = proto.LoginResult{}
err2 := common.RPC.Call(context.Background(), "Login", loginReq, &loginResult)
if err2 != nil {
err = common.RPC.Call(context.Background(), "Login", loginReq, &loginResult)
if err != nil {
log.Printf("failed to call: %v", err)
return
}

View File

@@ -18,7 +18,7 @@ func Register(c *gin.Context) {
println(err)
}
if registerReq.Password == "" || registerReq.Password == "" {
if registerReq.Username == "" || registerReq.Password == "" {
c.JSON(http.StatusOK, gin.H{
"code": 200,
"msg": "用户名&&密码不能为空",

View File

@@ -0,0 +1,86 @@
package controllers
import (
"context"
"log"
"net/http"
"strconv"
"github.com/NothAmor/SourceTraceFront/common"
"github.com/NothAmor/SourceTraceFront/models"
"github.com/NothAmor/SourceTraceFront/proto"
"github.com/gin-gonic/gin"
// 导入其他必要的包
)
// 用户列表
func ListUsers(c *gin.Context) {
var listUsers []models.Users
pageArgs := proto.PageArgs{Page: 1}
err := common.RPC.Call(context.Background(), "ListUsers", pageArgs, &listUsers)
if err != nil {
log.Printf("failed to call: %v", err)
return
}
c.JSON(http.StatusOK, gin.H{
"code": 200,
"msg": "查询成功",
"data": listUsers,
})
}
// 增加用户
func AddUser(c *gin.Context) {
// 实现增加用户功能的代码
//1.获取参数
var userArgs proto.UserArgs
c.ShouldBindJSON(&userArgs)
if userArgs.Username == "" || userArgs.Password == "" {
c.JSON(http.StatusOK, gin.H{
"code": 200,
"msg": "用户名&&密码不能为空",
"data": nil,
})
return
}
var result proto.Common
err := common.RPC.Call(context.Background(), "AddUser", userArgs, &result)
if err != nil {
log.Printf("failed to call: %v", err)
return
}
c.JSON(http.StatusOK, gin.H{
"code": 200,
"msg": result.Msg,
"data": nil,
})
}
// 删除用户
func DeleteUser(c *gin.Context) {
//获取要删除的用户id
userIDStr := c.Param("id")
userID, err := strconv.Atoi(userIDStr)
var result proto.Common
err = common.RPC.Call(context.Background(), "DeleteUser", userID, &result)
if err != nil {
log.Printf("failed to call: %v", err)
return
}
c.JSON(http.StatusOK, gin.H{
"code": 200,
"msg": result.Msg,
"data": nil,
})
}
// // 修改用户
// func UpdateUser(c *gin.Context) {
// // 实现修改用户功能的代码
// }
// // 查询用户
// func GetUser(c *gin.Context) {
// // 实现查询用户功能的代码
// }

View File

@@ -0,0 +1,14 @@
package models
type Users struct {
ID int `json:"id" gorm:"primaryKey"`
Username string `json:"username" gorm:"username"`
Password string `json:"password"`
Name string `json:"name"`
Gender string `json:"gender"`
Avatar string `json:"avatar" gorm:"default:https://git.nothamor.com:3000/avatars/5ac7c55998b93af2cb5c74e669959fc5?size=870"`
Address string `json:"address"`
Role int `json:"role" gorm:"default:1"`
Email string `json:"email"`
Phone string `json:"phone"`
}

View File

@@ -0,0 +1,18 @@
package proto
type PageArgs struct {
Page int `json:"page"`
}
type UserArgs struct {
ID int `json:"id" gorm:"primaryKey"`
Username string `json:"username" gorm:"username"`
Password string `json:"password"`
Name string `json:"name"`
Gender string `json:"gender"`
Avatar string `json:"avatar" gorm:"default:https://git.nothamor.com:3000/avatars/5ac7c55998b93af2cb5c74e669959fc5?size=870"`
Address string `json:"address"`
Role int `json:"role" gorm:"default:1"`
Email string `json:"email"`
Phone string `json:"phone"`
}

View File

@@ -9,6 +9,9 @@ func InitRouter() {
common.Core.GET("/", controllers.Search)
common.Core.POST("/login", controllers.Login)
common.Core.POST("/register", controllers.Register)
common.Core.GET("/user/listUsers", controllers.ListUsers)
common.Core.POST("/user/addUser", controllers.AddUser)
common.Core.DELETE("/user/deleteUser/:id", controllers.DeleteUser)
common.Core.GET("/submitUrl", controllers.SubmitUrls)
common.Core.POST("/submitUrl", controllers.SubmitUrl)