用户管理:列表,添加,删除
This commit is contained in:
@@ -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
18
SourceTrace/proto/user.go
Normal 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"`
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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": "用户名&&密码不能为空",
|
||||
|
||||
86
SourceTraceFront/controllers/user_controller.go
Normal file
86
SourceTraceFront/controllers/user_controller.go
Normal 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) {
|
||||
// // 实现查询用户功能的代码
|
||||
// }
|
||||
14
SourceTraceFront/models/user.go
Normal file
14
SourceTraceFront/models/user.go
Normal 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"`
|
||||
}
|
||||
18
SourceTraceFront/proto/user.go
Normal file
18
SourceTraceFront/proto/user.go
Normal 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"`
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user