用户管理-初版

This commit is contained in:
zhong 2024-05-15 15:16:40 +08:00
parent 429223b1fb
commit 2a78628aaf
6 changed files with 179 additions and 8525 deletions

File diff suppressed because one or more lines are too long

View File

@ -1,18 +1,40 @@
package proto
import "github.com/NothAmor/SourceTrace/models"
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"`
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"`
}
func ParseUserArgToUser(userArgs UserArgs) models.Users {
return models.Users{
ID: userArgs.ID,
Username: *userArgs.Username,
Password: *userArgs.Password,
Name: *userArgs.Name,
Gender: *userArgs.Gender,
Avatar: *userArgs.Avatar,
Address: *userArgs.Address,
Role: *userArgs.Role,
Email: *userArgs.Email,
Phone: *userArgs.Phone,
}
}
type UsersResp struct {
Common
Data []models.Users `json:"data"`
}

View File

@ -289,8 +289,7 @@ func (t *Arith) AddUser(ctx context.Context, userArgs proto.UserArgs, result *pr
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
err = common.DB.First(&user, userID).Error
if err == gorm.ErrRecordNotFound {
result.Msg = "删除失败,删除用户不存在"
return nil
@ -303,3 +302,74 @@ func (t *Arith) DeleteUser(ctx context.Context, userID int, result *proto.Common
result.Msg = "删除成功"
return nil
}
func (t *Arith) UpdateUser(ctx context.Context, args proto.UserArgs, result *proto.Common) (err error) {
//修改用户
var users []models.Users
err = common.DB.Where("id=?", args.ID).Find(&users).Error
if err != nil {
result.Msg = err.Error()
result.Code = 100
return nil
}
if len(users) == 0 {
result.Msg = "修改失败,用户不存在"
result.Code = 100
return nil
}
newUser := proto.ParseUserArgToUser(args)
err = common.DB.Updates(&newUser).Error
if err != nil {
// 更新过程中发生错误
result.Msg = "修改失败"
result.Code = 100
return err
}
result.Msg = "修改成功"
result.Code = 200
return nil
}
func (t *Arith) ListUsers2(ctx context.Context, args proto.UserArgs, resp *proto.UsersResp) (err error) {
query := common.DB
if args.ID != 0 {
query = query.Where("id=?", args.ID)
}
//密码保留
if args.Username != nil && *args.Username != "" {
query = query.Where("username = ?", args.Username)
}
if args.Name != nil && *args.Name != "" {
query = query.Where("name like ?", "%"+*args.Name+"%")
}
if args.Gender != nil && *args.Gender != "" {
query = query.Where("gender = ?", args.Gender)
}
if args.Avatar != nil && *args.Avatar != "" {
query = query.Where("avatar = ?", args.Avatar)
}
if args.Address != nil && *args.Address != "" {
query = query.Where("address = ?", args.Address)
}
if args.Role != nil && *args.Role >= 0 {
query = query.Where("role = ?", args.Role)
}
if args.Email != nil && *args.Email != "" {
query = query.Where("email = ?", args.Email)
}
if args.Phone != nil && *args.Phone != "" {
query = query.Where("phone = ?", args.Phone)
}
var users []models.Users
if err = query.Find(&users).Error; err != nil {
return err
}
resp.Common.Code = 200
resp.Common.Msg = "查询成功"
resp.Data = users
for _, user := range resp.Data {
println(user.Username, user.Address)
}
return nil
}

View File

@ -35,7 +35,7 @@ func AddUser(c *gin.Context) {
//1.获取参数
var userArgs proto.UserArgs
c.ShouldBindJSON(&userArgs)
if userArgs.Username == "" || userArgs.Password == "" {
if userArgs.Username == nil || userArgs.Password == nil {
c.JSON(http.StatusOK, gin.H{
"code": 200,
"msg": "用户名&&密码不能为空",
@ -76,11 +76,41 @@ func DeleteUser(c *gin.Context) {
}
// // 修改用户
// func UpdateUser(c *gin.Context) {
// // 实现修改用户功能的代码
// }
func UpdateUser(c *gin.Context) {
// 实现修改用户功能的代码
var newUser proto.UserArgs
err := c.ShouldBindJSON(&newUser)
if err != nil {
log.Printf("should bind json failed. err:[%+v]\n", err)
return
}
// // 查询用户
// func GetUser(c *gin.Context) {
// // 实现查询用户功能的代码
// }
var result proto.Common
err = common.RPC.Call(context.Background(), "UpdateUser", newUser, &result)
if err != nil {
log.Printf("failed to call: %v", err)
return
}
c.JSON(http.StatusOK, result)
}
// 查询用户
func ListUsers2(c *gin.Context) {
// 实现查询用户功能的代码
var userArgs proto.UserArgs
err := c.ShouldBindJSON(&userArgs)
if err != nil {
log.Printf("should bind json failed. err:[%+v]\n", err)
return
}
var resp proto.UsersResp
err = common.RPC.Call(context.Background(), "ListUsers2", userArgs, &resp)
if err != nil {
log.Printf("failed to call:%v", err)
return
}
for _, user := range resp.Data {
println(user.Username, user.Address)
}
c.JSON(http.StatusOK, resp)
}

View File

@ -1,18 +1,40 @@
package proto
import "github.com/NothAmor/SourceTraceFront/models"
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"`
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"`
}
func ParseUserArgToUser(userArgs UserArgs) models.Users {
return models.Users{
ID: userArgs.ID,
Username: *userArgs.Username,
Password: *userArgs.Password,
Name: *userArgs.Name,
Gender: *userArgs.Gender,
Avatar: *userArgs.Avatar,
Address: *userArgs.Address,
Role: *userArgs.Role,
Email: *userArgs.Email,
Phone: *userArgs.Phone,
}
}
type UsersResp struct {
Common
Data []models.Users `json:"data"`
}

View File

@ -16,9 +16,11 @@ func InitRouter() {
common.Core.POST("/register", controllers.Register)
userGroup := common.Core.Group("/user")
userGroup.GET("/user/listUsers", controllers.ListUsers)
userGroup.POST("/user/addUser", controllers.AddUser)
userGroup.DELETE("/user/deleteUser/:id", controllers.DeleteUser)
userGroup.GET("/listUsers", controllers.ListUsers)
userGroup.POST("/addUser", controllers.AddUser)
userGroup.DELETE("/deleteUser/:id", controllers.DeleteUser)
userGroup.POST("/updateUser", controllers.UpdateUser)
userGroup.POST("/listUsers2", controllers.ListUsers2)
common.Core.GET("/submitUrl", controllers.SubmitUrls)
common.Core.POST("/submitUrl", controllers.SubmitUrl)