🎨用户接口处理完毕
This commit is contained in:
155
http/api/user.go
155
http/api/user.go
@@ -1,7 +1,9 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"gitee.ltd/lxh/logger/log"
|
||||
"github.com/gin-gonic/gin"
|
||||
"wireguard-dashboard/client"
|
||||
"wireguard-dashboard/compoment"
|
||||
"wireguard-dashboard/constant"
|
||||
"wireguard-dashboard/http/param"
|
||||
@@ -66,26 +68,159 @@ func (u user) Login(c *gin.Context) {
|
||||
})
|
||||
}
|
||||
|
||||
// Logout
|
||||
// @description: 退出登陆
|
||||
// @receiver u
|
||||
// @param c
|
||||
func (u user) Logout(c *gin.Context) {
|
||||
data, ok := c.Get("user")
|
||||
if !ok {
|
||||
utils.GinResponse(c).FailedWithMsg("你还没有登陆")
|
||||
return
|
||||
}
|
||||
if err := compoment.JWT().Logout(data.(*entity.User).Id); err != nil {
|
||||
log.Errorf("退出登陆失败: %v", err.Error())
|
||||
utils.GinResponse(c).FailedWithMsg("退出登陆失败")
|
||||
return
|
||||
}
|
||||
utils.GinResponse(c).OK()
|
||||
}
|
||||
|
||||
// List
|
||||
// @description: 用户列表
|
||||
// @receiver u
|
||||
// @param c
|
||||
func (u user) List(c *gin.Context) {
|
||||
var p param.UserList
|
||||
if err := c.ShouldBind(&p); err != nil {
|
||||
utils.GinResponse(c).FailedWithErr("参数错误", err)
|
||||
return
|
||||
}
|
||||
|
||||
data, total, err := repository.User().List(p)
|
||||
if err != nil {
|
||||
utils.GinResponse(c).FailedWithMsg("获取失败")
|
||||
return
|
||||
}
|
||||
|
||||
utils.GinResponse(c).OkWithPage(data, total, p.Current, p.Size)
|
||||
}
|
||||
|
||||
// GetUser
|
||||
// @description: 获取登陆用户信息
|
||||
// @receiver u
|
||||
// @param c
|
||||
func (u user) GetUser(c *gin.Context) {
|
||||
user, ok := c.Get("user")
|
||||
info, ok := c.Get("user")
|
||||
if !ok {
|
||||
utils.GinResponse(c).FailedWithMsg("获取信息失败")
|
||||
return
|
||||
}
|
||||
data := &vo.User{
|
||||
Id: user.(*entity.User).Id,
|
||||
Name: user.(*entity.User).Name,
|
||||
Avatar: user.(*entity.User).Avatar,
|
||||
Account: user.(*entity.User).Account,
|
||||
Email: user.(*entity.User).Email,
|
||||
IsAdmin: user.(*entity.User).IsAdmin,
|
||||
Status: user.(*entity.User).Status,
|
||||
CreatedAt: user.(*entity.User).CreatedAt,
|
||||
UpdatedAt: user.(*entity.User).UpdatedAt,
|
||||
Id: info.(*entity.User).Id,
|
||||
Name: info.(*entity.User).Name,
|
||||
Avatar: info.(*entity.User).Avatar,
|
||||
Account: info.(*entity.User).Account,
|
||||
Email: info.(*entity.User).Email,
|
||||
IsAdmin: info.(*entity.User).IsAdmin,
|
||||
Status: info.(*entity.User).Status,
|
||||
CreatedAt: info.(*entity.User).CreatedAt,
|
||||
UpdatedAt: info.(*entity.User).UpdatedAt,
|
||||
}
|
||||
utils.GinResponse(c).OKWithData(data)
|
||||
}
|
||||
|
||||
// Save
|
||||
// @description: 新增/更改用户信息
|
||||
// @receiver u
|
||||
// @param c
|
||||
func (u user) Save(c *gin.Context) {
|
||||
var p param.SaveUser
|
||||
if err := c.ShouldBind(&p); err != nil {
|
||||
utils.GinResponse(c).FailedWithErr("参数错误", err)
|
||||
return
|
||||
}
|
||||
|
||||
// 只有新增才会判断
|
||||
if p.ID == "" {
|
||||
// 判断用户是否已经存在
|
||||
var count int64
|
||||
if err := client.DB.Model(&entity.User{}).Where("account = ?", p.Account).Count(&count).Error; err != nil {
|
||||
utils.GinResponse(c).FailedWithMsg("查询失败")
|
||||
return
|
||||
}
|
||||
|
||||
if count > 0 {
|
||||
utils.GinResponse(c).FailedWithMsg("用户已存在!")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if err := repository.User().Save(&entity.User{
|
||||
Base: entity.Base{
|
||||
Id: p.ID,
|
||||
},
|
||||
Avatar: p.Avatar,
|
||||
Name: p.Name,
|
||||
Account: p.Account,
|
||||
Email: p.Email,
|
||||
Password: p.Password,
|
||||
IsAdmin: p.IsAdmin,
|
||||
Status: p.Status,
|
||||
}); err != nil {
|
||||
utils.GinResponse(c).FailedWithMsg(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
utils.GinResponse(c).OK()
|
||||
}
|
||||
|
||||
// ChangePassword
|
||||
// @description: 更改密码
|
||||
// @receiver u
|
||||
// @param c
|
||||
func (u user) ChangePassword(c *gin.Context) {
|
||||
var p param.ChangePassword
|
||||
if err := c.ShouldBind(&p); err != nil {
|
||||
utils.GinResponse(c).FailedWithErr("参数错误", err)
|
||||
return
|
||||
}
|
||||
|
||||
user, ok := c.Get("user")
|
||||
if !ok {
|
||||
utils.GinResponse(c).AuthorizationFailed()
|
||||
return
|
||||
}
|
||||
|
||||
if !utils.Password().ComparePassword(user.(*entity.User).Password, p.OriginPassword) {
|
||||
utils.GinResponse(c).FailedWithMsg("原密码错误")
|
||||
return
|
||||
}
|
||||
|
||||
// 开始变更密码
|
||||
if err := repository.User().ChangePassword(p, user.(*entity.User).Id); err != nil {
|
||||
utils.GinResponse(c).FailedWithMsg("更改密码失败")
|
||||
return
|
||||
}
|
||||
|
||||
utils.GinResponse(c).OK()
|
||||
}
|
||||
|
||||
// ChangeUserState
|
||||
// @description: 改变用户状态
|
||||
// @receiver u
|
||||
// @param c
|
||||
func (u user) ChangeUserState(c *gin.Context) {
|
||||
var p param.ChangeUserState
|
||||
if err := c.ShouldBind(&p); err != nil {
|
||||
utils.GinResponse(c).FailedWithErr("参数错误", err)
|
||||
return
|
||||
}
|
||||
|
||||
if err := repository.User().ChangeUserState(p); err != nil {
|
||||
utils.GinResponse(c).FailedWithMsg("操作失败")
|
||||
return
|
||||
}
|
||||
|
||||
utils.GinResponse(c).OK()
|
||||
}
|
||||
|
6
http/param/base.go
Normal file
6
http/param/base.go
Normal file
@@ -0,0 +1,6 @@
|
||||
package param
|
||||
|
||||
type page struct {
|
||||
Current int `json:"current" form:"current" binding:"required"`
|
||||
Size int `json:"size" form:"size" binding:"required"`
|
||||
}
|
@@ -1,8 +1,46 @@
|
||||
package param
|
||||
|
||||
import "wireguard-dashboard/constant"
|
||||
|
||||
// Login
|
||||
// @description: 登陆
|
||||
type Login struct {
|
||||
Account string `json:"account" form:"account" binding:"required"`
|
||||
Password string `json:"password" form:"password" binding:"required"`
|
||||
CaptchaId string `json:"captchaId" form:"captchaId" binding:"required"`
|
||||
CaptchaAnswer string `json:"captchaAnswer" form:"captchaAnswer" binding:"required"`
|
||||
Account string `json:"account" form:"account" binding:"required"` // 账号
|
||||
Password string `json:"password" form:"password" binding:"required"` // 密码
|
||||
CaptchaId string `json:"captchaId" form:"captchaId" binding:"required"` // 验证码id
|
||||
CaptchaAnswer string `json:"captchaAnswer" form:"captchaAnswer" binding:"required"` // 验证码
|
||||
}
|
||||
|
||||
// SaveUser
|
||||
// @description: 新增/编辑用户信息
|
||||
type SaveUser struct {
|
||||
ID string `json:"id" form:"id" binding:"omitempty"`
|
||||
Name string `json:"name" form:"name" binding:"required"` // 用户名
|
||||
Account string `json:"account" form:"account" binding:"required"` // 账号 唯一
|
||||
Avatar string `json:"avatar" form:"avatar" binding:"omitempty"` // 头像
|
||||
Email string `json:"email" form:"email" binding:"omitempty"` // 联系邮箱
|
||||
Password string `json:"password" form:"password" binding:"omitempty"` // 密码
|
||||
IsAdmin constant.UserType `json:"isAdmin" form:"isAdmin" binding:"required"` // 是否为管理员 0 - 否 | 1 - 是
|
||||
Status constant.UserStatus `json:"status" form:"status" binding:"required"` // 用户状态 0 - 禁用 | 1 - 正常
|
||||
}
|
||||
|
||||
// ChangePassword
|
||||
// @description: 更改密码
|
||||
type ChangePassword struct {
|
||||
OriginPassword string `json:"originPassword" form:"originPassword" binding:"required"` // 原密码
|
||||
NewPassword string `json:"newPassword" form:"newPassword" binding:"required"` // 新密码
|
||||
ConfirmPassword string `json:"confirmPassword" form:"confirmPassword" binding:"required,eqfield=NewPassword"` // 确认密码
|
||||
}
|
||||
|
||||
// UserList
|
||||
// @description: 用户列表
|
||||
type UserList struct {
|
||||
page
|
||||
}
|
||||
|
||||
// ChangeUserState
|
||||
// @description: 变更状态
|
||||
type ChangeUserState struct {
|
||||
ID string `json:"id" form:"id" binding:"required"` // 用户id
|
||||
Status string `json:"status" form:"status" binding:"required,oneof=0 1"` // 用户状态
|
||||
}
|
||||
|
Reference in New Issue
Block a user