refactor: 管理后台用户列表页面重构

This commit is contained in:
RockYang
2023-06-19 18:23:09 +08:00
parent af3f7ac810
commit 502b8c2270
11 changed files with 213 additions and 556 deletions

View File

@@ -0,0 +1,79 @@
package admin
import (
"chatplus/core"
"chatplus/core/types"
"chatplus/handler"
"chatplus/store/model"
"chatplus/store/vo"
"chatplus/utils"
"chatplus/utils/resp"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
)
type ChatRoleHandler struct {
handler.BaseHandler
db *gorm.DB
}
func NewChatRoleHandler(app *core.AppServer, db *gorm.DB) *ChatRoleHandler {
h := ChatRoleHandler{db: db}
h.App = app
return &h
}
// Add 添加一个聊天角色
func (h *ChatRoleHandler) Add(c *gin.Context) {
var data vo.ChatRole
if err := c.ShouldBindJSON(&data); err != nil {
resp.ERROR(c, types.InvalidArgs)
return
}
if data.Key == "" || data.Name == "" || data.Icon == "" {
resp.ERROR(c, types.InvalidArgs)
return
}
//err := h.service.Create(data)
//if err != nil {
// resp.ERROR(c, "Save failed: "+err.Error())
// return
//}
resp.SUCCESS(c, data)
}
// Get 获取指定的角色
func (h *ChatRoleHandler) Get(c *gin.Context) {
}
// Update 更新某个聊天角色信息,这里只允许更改名称以及启用和禁用角色操作
func (h *ChatRoleHandler) Update(c *gin.Context) {
}
func (h *ChatRoleHandler) List(c *gin.Context) {
var items []model.ChatRole
var roles = make([]vo.ChatRole, 0)
res := h.db.Where("enable", true).Order("sort ASC").Find(&items)
if res.Error != nil {
resp.ERROR(c, "No data found")
return
}
for _, v := range items {
var role vo.ChatRole
err := utils.CopyObject(v, &role)
if err == nil {
role.Id = v.Id
role.CreatedAt = v.CreatedAt.Unix()
role.UpdatedAt = v.UpdatedAt.Unix()
roles = append(roles, role)
}
}
resp.SUCCESS(c, roles)
}

View File

@@ -0,0 +1,51 @@
package admin
import (
"chatplus/core"
"chatplus/handler"
"chatplus/store/model"
"chatplus/store/vo"
"chatplus/utils"
"chatplus/utils/resp"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
)
type UserHandler struct {
handler.BaseHandler
db *gorm.DB
}
func NewUserHandler(app *core.AppServer, db *gorm.DB) *UserHandler {
h := UserHandler{db: db}
h.App = app
return &h
}
// List 用户列表
func (h *UserHandler) List(c *gin.Context) {
page := h.GetInt(c, "page", 1)
pageSize := h.GetInt(c, "page_size", 20)
offset := (page - 1) * pageSize
var items []model.User
var users = make([]vo.User, 0)
var total int64
h.db.Model(&model.User{}).Count(&total)
res := h.db.Offset(offset).Limit(pageSize).Find(&items)
if res.Error == nil {
for _, item := range items {
var user vo.User
err := utils.CopyObject(item, &user)
if err == nil {
user.Id = item.Id
user.CreatedAt = item.CreatedAt.Unix()
user.UpdatedAt = item.UpdatedAt.Unix()
users = append(users, user)
} else {
logger.Error(err)
}
}
}
pageVo := vo.NewPage(total, page, pageSize, users)
resp.SUCCESS(c, pageVo)
}

View File

@@ -2,24 +2,21 @@ package handler
import (
"chatplus/core"
"chatplus/core/types"
"chatplus/service"
"chatplus/store/model"
"chatplus/store/vo"
"chatplus/utils"
"chatplus/utils/resp"
"strconv"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
)
type ChatRoleHandler struct {
BaseHandler
service *service.ChatRoleService
db *gorm.DB
}
func NewChatRoleHandler(app *core.AppServer, service *service.ChatRoleService) *ChatRoleHandler {
handler := &ChatRoleHandler{service: service}
func NewChatRoleHandler(app *core.AppServer, db *gorm.DB) *ChatRoleHandler {
handler := &ChatRoleHandler{db: db}
handler.App = app
return handler
}
@@ -27,15 +24,15 @@ func NewChatRoleHandler(app *core.AppServer, service *service.ChatRoleService) *
// List get user list
func (h *ChatRoleHandler) List(c *gin.Context) {
var roles []model.ChatRole
res := h.service.DB.Find(&roles)
res := h.db.Find(&roles)
if res.Error != nil {
resp.ERROR(c, "No roles found,"+res.Error.Error())
return
}
userId, err := strconv.Atoi(c.Query("user_id"))
if err == nil && userId > 0 {
userId := h.GetInt(c, "user_id", 0)
if userId > 0 {
var user model.User
h.service.DB.First(&user, userId)
h.db.First(&user, userId)
var roleMap map[string]int
err := utils.JsonDecode(user.ChatRoles, &roleMap)
if err == nil {
@@ -58,35 +55,3 @@ func (h *ChatRoleHandler) List(c *gin.Context) {
}
resp.SUCCESS(c, roleVos)
}
// Add 添加一个聊天角色
func (h *ChatRoleHandler) Add(c *gin.Context) {
var data vo.ChatRole
if err := c.ShouldBindJSON(&data); err != nil {
resp.ERROR(c, types.InvalidArgs)
return
}
if data.Key == "" || data.Name == "" || data.Icon == "" {
resp.ERROR(c, types.InvalidArgs)
return
}
err := h.service.Create(data)
if err != nil {
resp.ERROR(c, "Save failed: "+err.Error())
return
}
resp.SUCCESS(c, data)
}
// Get 获取指定的角色
func (h *ChatRoleHandler) Get(c *gin.Context) {
}
// Update 更新某个聊天角色信息,这里只允许更改名称以及启用和禁用角色操作
func (h *ChatRoleHandler) Update(c *gin.Context) {
}

View File

@@ -105,31 +105,6 @@ func (h *UserHandler) Register(c *gin.Context) {
resp.SUCCESS(c, user)
}
func (h *UserHandler) List(c *gin.Context) {
var users []model.User
res := h.db.Find(&users)
if res.Error != nil {
resp.ERROR(c, "No user found")
logger.Error("get user failed: ", res.Error.Error())
return
}
// 转成 VO 输出
var userVos = make([]vo.User, 0)
for _, u := range users {
logger.Info(u)
var v vo.User
err := utils.CopyObject(u, &v)
if err == nil {
v.Id = u.Id
v.CreatedAt = u.CreatedAt.Unix()
v.UpdatedAt = u.UpdatedAt.Unix()
userVos = append(userVos, v)
}
}
resp.SUCCESS(c, userVos)
}
// Login 用户登录
func (h *UserHandler) Login(c *gin.Context) {
var data struct {