mirror of
https://github.com/bufanyun/hotgo.git
synced 2025-11-10 11:13:44 +08:00
v2.0
This commit is contained in:
142
server/internal/controller/backend/admin/dept.go
Normal file
142
server/internal/controller/backend/admin/dept.go
Normal file
@@ -0,0 +1,142 @@
|
||||
// Package admin
|
||||
// @Link https://github.com/bufanyun/hotgo
|
||||
// @Copyright Copyright (c) 2022 HotGo CLI
|
||||
// @Author Ms <133814250@qq.com>
|
||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
||||
//
|
||||
package admin
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
"hotgo/api/backend/dept"
|
||||
"hotgo/internal/model/input/adminin"
|
||||
"hotgo/internal/service"
|
||||
)
|
||||
|
||||
var (
|
||||
Dept = cDept{}
|
||||
)
|
||||
|
||||
type cDept struct{}
|
||||
|
||||
// NameUnique 名称是否唯一
|
||||
func (c *cDept) NameUnique(ctx context.Context, req *dept.NameUniqueReq) (*dept.NameUniqueRes, error) {
|
||||
|
||||
data, err := service.AdminDept().NameUnique(ctx, adminin.DeptNameUniqueInp{Id: req.Id, Name: req.Name})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var res dept.NameUniqueRes
|
||||
res.IsUnique = data.IsUnique
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// Delete 删除
|
||||
func (c *cDept) Delete(ctx context.Context, req *dept.DeleteReq) (res *dept.DeleteRes, err error) {
|
||||
var in adminin.DeptDeleteInp
|
||||
if err = gconv.Scan(req, &in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = service.AdminDept().Delete(ctx, in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// Edit 更新
|
||||
func (c *cDept) Edit(ctx context.Context, req *dept.EditReq) (res *dept.EditRes, err error) {
|
||||
|
||||
var in adminin.DeptEditInp
|
||||
if err = gconv.Scan(req, &in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = service.AdminDept().Edit(ctx, in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// MaxSort 最大排序
|
||||
func (c *cDept) MaxSort(ctx context.Context, req *dept.MaxSortReq) (*dept.MaxSortRes, error) {
|
||||
|
||||
data, err := service.AdminDept().MaxSort(ctx, adminin.DeptMaxSortInp{Id: req.Id})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var res dept.MaxSortRes
|
||||
res.Sort = data.Sort
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// View 获取指定信息
|
||||
func (c *cDept) View(ctx context.Context, req *dept.ViewReq) (*dept.ViewRes, error) {
|
||||
|
||||
data, err := service.AdminDept().View(ctx, adminin.DeptViewInp{Id: req.Id})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var res dept.ViewRes
|
||||
res.DeptViewModel = data
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// List 查看列表
|
||||
func (c *cDept) List(ctx context.Context, req *dept.ListReq) (*dept.ListRes, error) {
|
||||
|
||||
var (
|
||||
in adminin.DeptListInp
|
||||
res dept.ListRes
|
||||
)
|
||||
|
||||
if err := gconv.Scan(req, &in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
data, err := service.AdminDept().List(ctx, in)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_ = gconv.Structs(data, &res)
|
||||
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// ListTree 查看列表树
|
||||
func (c *cDept) ListTree(ctx context.Context, req *dept.ListTreeReq) (*dept.ListTreeRes, error) {
|
||||
|
||||
var (
|
||||
in adminin.DeptListTreeInp
|
||||
res dept.ListTreeRes
|
||||
)
|
||||
|
||||
if err := gconv.Scan(req, &in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
data, err := service.AdminDept().ListTree(ctx, in)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_ = gconv.Structs(data, &res)
|
||||
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// Status 更新部门状态
|
||||
func (c *cDept) Status(ctx context.Context, req *dept.StatusReq) (res *dept.StatusRes, err error) {
|
||||
|
||||
var in adminin.DeptStatusInp
|
||||
if err = gconv.Scan(req, &in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = service.AdminDept().Status(ctx, in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
289
server/internal/controller/backend/admin/member.go
Normal file
289
server/internal/controller/backend/admin/member.go
Normal file
@@ -0,0 +1,289 @@
|
||||
// Package admin
|
||||
// @Link https://github.com/bufanyun/hotgo
|
||||
// @Copyright Copyright (c) 2022 HotGo CLI
|
||||
// @Author Ms <133814250@qq.com>
|
||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
||||
//
|
||||
package admin
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
"hotgo/api/backend/member"
|
||||
"hotgo/internal/library/contexts"
|
||||
"hotgo/internal/model/input/adminin"
|
||||
"hotgo/internal/model/input/form"
|
||||
"hotgo/internal/service"
|
||||
)
|
||||
|
||||
var (
|
||||
Member = cMember{}
|
||||
)
|
||||
|
||||
type cMember struct{}
|
||||
|
||||
// UpdateProfile 修改登录密码
|
||||
func (c *cMember) UpdateProfile(ctx context.Context, req *member.UpdateProfileReq) (res *member.UpdateProfileRes, err error) {
|
||||
|
||||
var in adminin.MemberUpdateProfileInp
|
||||
if err = gconv.Scan(req, &in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err = service.AdminMember().UpdateProfile(ctx, in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// UpdatePwd 修改登录密码
|
||||
func (c *cMember) UpdatePwd(ctx context.Context, req *member.UpdatePwdReq) (res *member.UpdatePwdRes, err error) {
|
||||
|
||||
memberId := contexts.Get(ctx).User.Id
|
||||
if memberId <= 0 {
|
||||
err := gerror.New("获取用户信息失败!")
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err = service.AdminMember().
|
||||
UpdatePwd(ctx, adminin.MemberUpdatePwdInp{Id: memberId, OldPassword: req.OldPassword, NewPassword: req.NewPassword}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Profile 获取登录用户的基本信息
|
||||
func (c *cMember) Profile(ctx context.Context, req *member.ProfileReq) (*member.ProfileRes, error) {
|
||||
|
||||
var res member.ProfileRes
|
||||
|
||||
memberId := contexts.Get(ctx).User.Id
|
||||
if memberId <= 0 {
|
||||
err := gerror.New("获取用户信息失败!")
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 用户基本信息
|
||||
memberInfo, err := service.AdminMember().View(ctx, adminin.MemberViewInp{Id: memberId})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
res.User = memberInfo
|
||||
|
||||
// 所在部门
|
||||
sysDept, err := service.AdminDept().View(ctx, adminin.DeptViewInp{Id: memberInfo.DeptId})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
res.SysDept = sysDept
|
||||
|
||||
// 角色列表
|
||||
sysRoles, err := service.AdminRole().GetMemberList(ctx, memberInfo.Role)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
res.SysRoles = sysRoles
|
||||
|
||||
// 获取角色名称
|
||||
roleGroup, err := service.AdminRole().GetName(ctx, memberInfo.Role)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
res.RoleGroup = roleGroup
|
||||
|
||||
// 获取第一岗位名称
|
||||
postGroup, err := service.AdminPost().GetMemberByStartName(ctx, memberInfo.Id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
res.PostGroup = postGroup
|
||||
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// ResetPwd 重置密码
|
||||
func (c *cMember) ResetPwd(ctx context.Context, req *member.ResetPwdReq) (res *member.ResetPwdRes, err error) {
|
||||
|
||||
if err = service.AdminMember().
|
||||
ResetPwd(ctx, adminin.MemberResetPwdInp{Id: req.Id, Password: req.Password}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// EmailUnique 邮箱是否唯一
|
||||
func (c *cMember) EmailUnique(ctx context.Context, req *member.EmailUniqueReq) (*member.EmailUniqueRes, error) {
|
||||
|
||||
data, err := service.AdminMember().EmailUnique(ctx, adminin.MemberEmailUniqueInp{Id: req.Id, Email: req.Email})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var res member.EmailUniqueRes
|
||||
res.IsUnique = data.IsUnique
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// MobileUnique 手机号是否唯一
|
||||
func (c *cMember) MobileUnique(ctx context.Context, req *member.MobileUniqueReq) (*member.MobileUniqueRes, error) {
|
||||
|
||||
data, err := service.AdminMember().MobileUnique(ctx, adminin.MemberMobileUniqueInp{Id: req.Id, Mobile: req.Mobile})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var res member.MobileUniqueRes
|
||||
res.IsUnique = data.IsUnique
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// NameUnique 名称是否唯一
|
||||
func (c *cMember) NameUnique(ctx context.Context, req *member.NameUniqueReq) (*member.NameUniqueRes, error) {
|
||||
|
||||
data, err := service.AdminMember().NameUnique(ctx, adminin.MemberNameUniqueInp{Id: req.Id, Username: req.Username})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var res member.NameUniqueRes
|
||||
res.IsUnique = data.IsUnique
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// Delete 删除
|
||||
func (c *cMember) Delete(ctx context.Context, req *member.DeleteReq) (res *member.DeleteRes, err error) {
|
||||
|
||||
var in adminin.MemberDeleteInp
|
||||
if err = gconv.Scan(req, &in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = service.AdminMember().Delete(ctx, in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// Edit 修改/新增
|
||||
func (c *cMember) Edit(ctx context.Context, req *member.EditReq) (res *member.EditRes, err error) {
|
||||
|
||||
var in adminin.MemberEditInp
|
||||
if err = gconv.Scan(req, &in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = service.AdminMember().Edit(ctx, in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// MaxSort 最大排序
|
||||
func (c *cMember) MaxSort(ctx context.Context, req *member.MaxSortReq) (*member.MaxSortRes, error) {
|
||||
|
||||
data, err := service.AdminMember().MaxSort(ctx, adminin.MemberMaxSortInp{Id: req.Id})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var res member.MaxSortRes
|
||||
res.Sort = data.Sort
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// View 获取指定信息
|
||||
func (c *cMember) View(ctx context.Context, req *member.ViewReq) (*member.ViewRes, error) {
|
||||
|
||||
postsList, _, err := service.AdminPost().List(ctx, adminin.PostListInp{})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
roleList, _, err := service.AdminRole().List(ctx, adminin.RoleListInp{})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var res member.ViewRes
|
||||
res.Posts = postsList
|
||||
res.Roles = roleList
|
||||
|
||||
if req.Id <= 0 {
|
||||
return &res, err
|
||||
}
|
||||
|
||||
memberInfo, err := service.AdminMember().View(ctx, adminin.MemberViewInp{Id: req.Id})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res.MemberViewModel = memberInfo
|
||||
|
||||
res.PostIds, err = service.AdminMemberPost().GetMemberByIds(ctx, memberInfo.Id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res.RoleIds = []int64{memberInfo.Role}
|
||||
res.DeptName, err = service.AdminDept().GetName(ctx, memberInfo.DeptId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// List 查看列表
|
||||
func (c *cMember) List(ctx context.Context, req *member.ListReq) (*member.ListRes, error) {
|
||||
|
||||
var (
|
||||
in adminin.MemberListInp
|
||||
res member.ListRes
|
||||
)
|
||||
|
||||
if err := gconv.Scan(req, &in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
list, totalCount, err := service.AdminMember().List(ctx, in)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res.List = list
|
||||
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
|
||||
res.Page = req.Page
|
||||
res.PerPage = req.PerPage
|
||||
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// Info 登录用户信息
|
||||
func (c *cMember) Info(ctx context.Context, req *member.InfoReq) (res *member.InfoRes, err error) {
|
||||
|
||||
model, err := service.AdminMember().LoginMemberInfo(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err = gconv.Scan(model, &res); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Status 更新状态
|
||||
func (c *cMember) Status(ctx context.Context, req *member.StatusReq) (res *member.StatusRes, err error) {
|
||||
|
||||
var in adminin.MemberStatusInp
|
||||
if err = gconv.Scan(req, &in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = service.AdminMember().Status(ctx, in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
120
server/internal/controller/backend/admin/menu.go
Normal file
120
server/internal/controller/backend/admin/menu.go
Normal file
@@ -0,0 +1,120 @@
|
||||
// Package admin
|
||||
// @Link https://github.com/bufanyun/hotgo
|
||||
// @Copyright Copyright (c) 2022 HotGo CLI
|
||||
// @Author Ms <133814250@qq.com>
|
||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
||||
//
|
||||
package admin
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
"hotgo/api/backend/menu"
|
||||
"hotgo/internal/model/input/adminin"
|
||||
"hotgo/internal/service"
|
||||
)
|
||||
|
||||
// Menu 菜单
|
||||
var (
|
||||
Menu = cMenu{}
|
||||
)
|
||||
|
||||
type cMenu struct{}
|
||||
|
||||
// RoleList 查询角色菜单列表
|
||||
func (c *cMenu) RoleList(ctx context.Context, req *menu.RoleListReq) (*menu.RoleListRes, error) {
|
||||
|
||||
var in adminin.MenuRoleListInp
|
||||
if err := gconv.Scan(req, &in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
data, err := service.AdminMenu().RoleList(ctx, in)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var res menu.RoleListRes
|
||||
res.CheckedKeys = data.CheckedKeys
|
||||
res.Menus = data.Menus
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// SearchList 查询菜单列表
|
||||
func (c *cMenu) SearchList(ctx context.Context, req *menu.SearchListReq) (res *menu.SearchListRes, err error) {
|
||||
|
||||
res, err = service.AdminMenu().SearchList(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// MaxSort 最大排序
|
||||
func (c *cMenu) MaxSort(ctx context.Context, req *menu.MaxSortReq) (res *menu.MaxSortRes, err error) {
|
||||
|
||||
res, err = service.AdminMenu().MaxSort(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// NameUnique 菜单名称是否唯一
|
||||
func (c *cMenu) NameUnique(ctx context.Context, req *menu.NameUniqueReq) (res *menu.NameUniqueRes, err error) {
|
||||
|
||||
res, err = service.AdminMenu().NameUnique(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// CodeUnique 菜单编码是否唯一
|
||||
func (c *cMenu) CodeUnique(ctx context.Context, req *menu.CodeUniqueReq) (res *menu.CodeUniqueRes, err error) {
|
||||
|
||||
res, err = service.AdminMenu().CodeUnique(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// Delete 删除
|
||||
func (c *cMenu) Delete(ctx context.Context, req *menu.DeleteReq) (res *menu.DeleteRes, err error) {
|
||||
|
||||
if err = service.AdminMenu().Delete(ctx, req); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// Edit 更新
|
||||
func (c *cMenu) Edit(ctx context.Context, req *menu.EditReq) (res *menu.EditRes, err error) {
|
||||
|
||||
if err = service.AdminMenu().Edit(ctx, req); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// View 获取信息
|
||||
func (c *cMenu) View(ctx context.Context, req *menu.ViewReq) (res *menu.ViewRes, err error) {
|
||||
|
||||
res, err = service.AdminMenu().View(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// List 获取列表
|
||||
func (c *cMenu) List(ctx context.Context, req *menu.ListReq) (res menu.ListRes, err error) {
|
||||
|
||||
res.List, err = service.AdminMenu().List(ctx, req)
|
||||
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
110
server/internal/controller/backend/admin/monitor.go
Normal file
110
server/internal/controller/backend/admin/monitor.go
Normal file
@@ -0,0 +1,110 @@
|
||||
// Package admin
|
||||
// @Link https://github.com/bufanyun/hotgo
|
||||
// @Copyright Copyright (c) 2022 HotGo CLI
|
||||
// @Author Ms <133814250@qq.com>
|
||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
||||
//
|
||||
package admin
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/grpool"
|
||||
"hotgo/api/backend/monitor"
|
||||
"hotgo/internal/consts"
|
||||
"hotgo/internal/model/input/form"
|
||||
"hotgo/internal/websocket"
|
||||
"hotgo/utility/useragent"
|
||||
"sort"
|
||||
)
|
||||
|
||||
// Monitor 监控
|
||||
var Monitor = cMonitor{
|
||||
wsManager: websocket.Manager(),
|
||||
}
|
||||
|
||||
type cMonitor struct {
|
||||
wsManager *websocket.ClientManager
|
||||
}
|
||||
|
||||
// Offline 下线用户
|
||||
func (c *cMonitor) Offline(ctx context.Context, req *monitor.OfflineReq) (res *monitor.OfflineRes, err error) {
|
||||
client := c.wsManager.GetClient(req.Id)
|
||||
if client == nil {
|
||||
err = gerror.New("客户端已离线")
|
||||
return
|
||||
}
|
||||
|
||||
err = grpool.AddWithRecover(ctx, func(ctx context.Context) {
|
||||
websocket.SendSuccess(client, "kick")
|
||||
websocket.Close(client)
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// View 获取指定信息
|
||||
func (c *cMonitor) View(ctx context.Context, req *monitor.OnlineViewReq) (*monitor.OnlineViewRes, error) {
|
||||
var res monitor.OnlineViewRes
|
||||
// ...
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// OnlineList 获取在线列表
|
||||
func (c *cMonitor) OnlineList(ctx context.Context, req *monitor.OnlineListReq) (*monitor.OnlineListRes, error) {
|
||||
var (
|
||||
res monitor.OnlineListRes
|
||||
clients []*monitor.OnlineModel
|
||||
i int
|
||||
)
|
||||
|
||||
if c.wsManager.GetClientsLen() == 0 {
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
for c, _ := range c.wsManager.GetClients() {
|
||||
if c.SendClose || c.User == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
if req.UserId > 0 && req.UserId != c.User.Id {
|
||||
continue
|
||||
}
|
||||
clients = append(clients, &monitor.OnlineModel{
|
||||
ID: c.ID,
|
||||
Addr: c.Addr,
|
||||
Os: useragent.GetOs(c.UserAgent),
|
||||
Browser: useragent.GetBrowser(c.UserAgent),
|
||||
FirstTime: c.FirstTime,
|
||||
HeartbeatTime: c.HeartbeatTime,
|
||||
App: c.User.App,
|
||||
UserId: c.User.Id,
|
||||
Username: c.User.Username,
|
||||
Avatar: c.User.Avatar,
|
||||
ExpTime: c.User.Exp,
|
||||
})
|
||||
}
|
||||
|
||||
res.PageCount = form.CalPageCount(len(clients), req.PerPage)
|
||||
res.Page = req.Page
|
||||
res.PerPage = req.PerPage
|
||||
|
||||
sort.Sort(monitor.OnlineModels(clients))
|
||||
isDemo, _ := g.Cfg().Get(ctx, "hotgo.isDemo", false)
|
||||
_, perPage, offset := form.CalPage(ctx, req.Page, req.PerPage)
|
||||
|
||||
for k, v := range clients {
|
||||
if k >= offset && i <= perPage {
|
||||
i++
|
||||
if isDemo.Bool() {
|
||||
v.Addr = consts.DemoTips
|
||||
}
|
||||
res.List = append(res.List, v)
|
||||
}
|
||||
}
|
||||
|
||||
return &res, nil
|
||||
}
|
||||
113
server/internal/controller/backend/admin/notice.go
Normal file
113
server/internal/controller/backend/admin/notice.go
Normal file
@@ -0,0 +1,113 @@
|
||||
// Package admin
|
||||
// @Link https://github.com/bufanyun/hotgo
|
||||
// @Copyright Copyright (c) 2022 HotGo CLI
|
||||
// @Author Ms <133814250@qq.com>
|
||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
||||
//
|
||||
package admin
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
"hotgo/api/backend/notice"
|
||||
"hotgo/internal/model/input/adminin"
|
||||
"hotgo/internal/model/input/form"
|
||||
"hotgo/internal/service"
|
||||
)
|
||||
|
||||
var (
|
||||
Notice = cNotice{}
|
||||
)
|
||||
|
||||
type cNotice struct{}
|
||||
|
||||
// Delete 删除
|
||||
func (c *cNotice) Delete(ctx context.Context, req *notice.DeleteReq) (res *notice.DeleteRes, err error) {
|
||||
var in adminin.NoticeDeleteInp
|
||||
if err = gconv.Scan(req, &in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = service.AdminNotice().Delete(ctx, in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// Edit 更新
|
||||
func (c *cNotice) Edit(ctx context.Context, req *notice.EditReq) (res *notice.EditRes, err error) {
|
||||
|
||||
var in adminin.NoticeEditInp
|
||||
if err = gconv.Scan(req, &in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = service.AdminNotice().Edit(ctx, in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// MaxSort 最大排序
|
||||
func (c *cNotice) MaxSort(ctx context.Context, req *notice.MaxSortReq) (*notice.MaxSortRes, error) {
|
||||
|
||||
data, err := service.AdminNotice().MaxSort(ctx, adminin.NoticeMaxSortInp{Id: req.Id})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var res notice.MaxSortRes
|
||||
res.Sort = data.Sort
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// View 获取指定信息
|
||||
func (c *cNotice) View(ctx context.Context, req *notice.ViewReq) (*notice.ViewRes, error) {
|
||||
|
||||
data, err := service.AdminNotice().View(ctx, adminin.NoticeViewInp{Id: req.Id})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var res notice.ViewRes
|
||||
res.NoticeViewModel = data
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// List 查看列表
|
||||
func (c *cNotice) List(ctx context.Context, req *notice.ListReq) (*notice.ListRes, error) {
|
||||
|
||||
var (
|
||||
in adminin.NoticeListInp
|
||||
res notice.ListRes
|
||||
)
|
||||
|
||||
if err := gconv.Scan(req, &in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
list, totalCount, err := service.AdminNotice().List(ctx, in)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res.List = list
|
||||
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
|
||||
res.Page = req.Page
|
||||
res.PerPage = req.PerPage
|
||||
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// Status 更新部门状态
|
||||
func (c *cNotice) Status(ctx context.Context, req *notice.StatusReq) (res *notice.StatusRes, err error) {
|
||||
|
||||
var in adminin.NoticeStatusInp
|
||||
if err = gconv.Scan(req, &in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = service.AdminNotice().Status(ctx, in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
140
server/internal/controller/backend/admin/post.go
Normal file
140
server/internal/controller/backend/admin/post.go
Normal file
@@ -0,0 +1,140 @@
|
||||
// Package admin
|
||||
// @Link https://github.com/bufanyun/hotgo
|
||||
// @Copyright Copyright (c) 2022 HotGo CLI
|
||||
// @Author Ms <133814250@qq.com>
|
||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
||||
//
|
||||
package admin
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
"hotgo/api/backend/post"
|
||||
"hotgo/internal/model/input/adminin"
|
||||
"hotgo/internal/model/input/form"
|
||||
"hotgo/internal/service"
|
||||
)
|
||||
|
||||
// Post 岗位
|
||||
var Post = cPost{}
|
||||
|
||||
type cPost struct{}
|
||||
|
||||
// Delete 删除
|
||||
func (c *cPost) Delete(ctx context.Context, req *post.DeleteReq) (res *post.DeleteRes, err error) {
|
||||
var in adminin.PostDeleteInp
|
||||
if err = gconv.Scan(req, &in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = service.AdminPost().Delete(ctx, in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// Edit 修改/新增
|
||||
func (c *cPost) Edit(ctx context.Context, req *post.EditReq) (res *post.EditRes, err error) {
|
||||
|
||||
var in adminin.PostEditInp
|
||||
if err = gconv.Scan(req, &in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = service.AdminPost().Edit(ctx, in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// MaxSort 最大排序
|
||||
func (c *cPost) MaxSort(ctx context.Context, req *post.MaxSortReq) (*post.MaxSortRes, error) {
|
||||
|
||||
data, err := service.AdminPost().MaxSort(ctx, adminin.PostMaxSortInp{Id: req.Id})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var res post.MaxSortRes
|
||||
res.Sort = data.Sort
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// NameUnique 名称是否唯一
|
||||
func (c *cPost) NameUnique(ctx context.Context, req *post.NameUniqueReq) (*post.NameUniqueRes, error) {
|
||||
|
||||
data, err := service.AdminPost().NameUnique(ctx, adminin.PostNameUniqueInp{Id: req.Id, Name: req.Name})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var res post.NameUniqueRes
|
||||
res.IsUnique = data.IsUnique
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// CodeUnique 编码是否唯一
|
||||
func (c *cPost) CodeUnique(ctx context.Context, req *post.CodeUniqueReq) (*post.CodeUniqueRes, error) {
|
||||
|
||||
data, err := service.AdminPost().CodeUnique(ctx, adminin.PostCodeUniqueInp{Id: req.Id, Code: req.Code})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var res post.CodeUniqueRes
|
||||
res.IsUnique = data.IsUnique
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// View 获取指定信息
|
||||
func (c *cPost) View(ctx context.Context, req *post.ViewReq) (*post.ViewRes, error) {
|
||||
|
||||
data, err := service.AdminPost().View(ctx, adminin.PostViewInp{Id: req.Id})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var res post.ViewRes
|
||||
res.PostViewModel = data
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// List 获取列表
|
||||
func (c *cPost) List(ctx context.Context, req *post.ListReq) (*post.ListRes, error) {
|
||||
var in adminin.PostListInp
|
||||
if err := gconv.Scan(req, &in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
//adminin.PostListInp{
|
||||
// Page: req.Page,
|
||||
// PerPage: req.PerPage,
|
||||
// Name: req.Name,
|
||||
// Code: req.Code,
|
||||
// Status: req.Status,
|
||||
//}
|
||||
list, totalCount, err := service.AdminPost().List(ctx, in)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var res post.ListRes
|
||||
res.List = list
|
||||
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
|
||||
res.Page = req.Page
|
||||
res.PerPage = req.PerPage
|
||||
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// Status 更新状态
|
||||
func (c *cPost) Status(ctx context.Context, req *post.StatusReq) (res *post.StatusRes, err error) {
|
||||
|
||||
var in adminin.PostStatusInp
|
||||
if err = gconv.Scan(req, &in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = service.AdminPost().Status(ctx, in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
117
server/internal/controller/backend/admin/role.go
Normal file
117
server/internal/controller/backend/admin/role.go
Normal file
@@ -0,0 +1,117 @@
|
||||
// Package admin
|
||||
// @Link https://github.com/bufanyun/hotgo
|
||||
// @Copyright Copyright (c) 2022 HotGo CLI
|
||||
// @Author Ms <133814250@qq.com>
|
||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
||||
//
|
||||
package admin
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
"hotgo/api/backend/role"
|
||||
"hotgo/internal/library/contexts"
|
||||
"hotgo/internal/model/input/adminin"
|
||||
"hotgo/internal/model/input/form"
|
||||
"hotgo/internal/service"
|
||||
)
|
||||
|
||||
var (
|
||||
Role = cRole{}
|
||||
)
|
||||
|
||||
type cRole struct{}
|
||||
|
||||
// RoleMemberList 获取角色下的会员列表
|
||||
func (c *cRole) RoleMemberList(ctx context.Context, req *role.MemberListReq) (*role.MemberListRes, error) {
|
||||
|
||||
var in adminin.RoleMemberListInp
|
||||
if err := gconv.Scan(req, &in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
list, totalCount, err := service.AdminMember().RoleMemberList(ctx, in)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var res role.MemberListRes
|
||||
res.List = list
|
||||
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
|
||||
res.PerPage = req.Page
|
||||
res.PerPage = req.PerPage
|
||||
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// List 获取列表
|
||||
func (c *cRole) List(ctx context.Context, req *role.ListReq) (*role.ListRes, error) {
|
||||
|
||||
list, totalCount, err := service.AdminRole().List(ctx, adminin.RoleListInp{
|
||||
Page: req.Page,
|
||||
PerPage: req.PerPage,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var res role.ListRes
|
||||
res.List = list
|
||||
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
|
||||
res.PerPage = req.Page
|
||||
res.PerPage = req.PerPage
|
||||
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
// Edit 修改角色
|
||||
func (c *cRole) Edit(ctx context.Context, req *role.EditReq) (res *role.EditRes, err error) {
|
||||
err = service.AdminRole().Edit(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// Delete 删除
|
||||
func (c *cRole) Delete(ctx context.Context, req *role.DeleteReq) (res *role.DeleteRes, err error) {
|
||||
|
||||
if err = service.AdminRole().Delete(ctx, req); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// Dynamic 动态路由
|
||||
func (c *cRole) Dynamic(ctx context.Context, req *role.DynamicReq) (res role.DynamicRes, err error) {
|
||||
|
||||
res, err = service.AdminMenu().GetMenuList(ctx, contexts.GetUserId(ctx))
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// GetPermissions 获取指定角色权限
|
||||
func (c *cRole) GetPermissions(ctx context.Context, req *role.GetPermissionsReq) (res *role.GetPermissionsRes, err error) {
|
||||
MenuIds, err := service.AdminRole().GetPermissions(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
res = &role.GetPermissionsRes{
|
||||
MenuIds: []int64{},
|
||||
}
|
||||
if MenuIds != nil {
|
||||
res.MenuIds = MenuIds
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// UpdatePermissions 修改角色菜单权限
|
||||
func (c *cRole) UpdatePermissions(ctx context.Context, req *role.UpdatePermissionsReq) (res *role.UpdatePermissionsRes, err error) {
|
||||
err = service.AdminRole().UpdatePermissions(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
Reference in New Issue
Block a user