1
This commit is contained in:
22
internal/app/system/controller/area_dict.go
Normal file
22
internal/app/system/controller/area_dict.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/tiger1103/gfast/v3/api/v1/system"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/service"
|
||||
)
|
||||
|
||||
var (
|
||||
AreaDict = areaDictController{}
|
||||
)
|
||||
|
||||
type areaDictController struct {
|
||||
BaseController
|
||||
}
|
||||
|
||||
// List 用户列表
|
||||
func (c *areaDictController) List(ctx context.Context, req *system.AreaDictListReq) (res *system.AreaDictListRes, err error) {
|
||||
res, err = service.AreaDict().GetAreaDictListSearch(ctx, req)
|
||||
return
|
||||
}
|
||||
22
internal/app/system/controller/base.go
Normal file
22
internal/app/system/controller/base.go
Normal file
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
* @desc:system base controller
|
||||
* @company:云南奇讯科技有限公司
|
||||
* @Author: yixiaohu
|
||||
* @Date: 2022/3/4 18:12
|
||||
*/
|
||||
|
||||
package controller
|
||||
|
||||
import (
|
||||
"github.com/gogf/gf/v2/net/ghttp"
|
||||
commonController "github.com/tiger1103/gfast/v3/internal/app/common/controller"
|
||||
)
|
||||
|
||||
type BaseController struct {
|
||||
commonController.BaseController
|
||||
}
|
||||
|
||||
// Init 自动执行的初始化方法
|
||||
func (c *BaseController) Init(r *ghttp.Request) {
|
||||
c.BaseController.Init(r)
|
||||
}
|
||||
61
internal/app/system/controller/cache.go
Normal file
61
internal/app/system/controller/cache.go
Normal file
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* @desc:缓存处理
|
||||
* @company:云南奇讯科技有限公司
|
||||
* @Author: yixiaohu<yxh669@qq.com>
|
||||
* @Date: 2023/2/1 18:14
|
||||
*/
|
||||
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/container/gvar"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
"github.com/tiger1103/gfast/v3/api/v1/system"
|
||||
commonConsts "github.com/tiger1103/gfast/v3/internal/app/common/consts"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/common/service"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/consts"
|
||||
)
|
||||
|
||||
var Cache = new(cacheController)
|
||||
|
||||
type cacheController struct {
|
||||
BaseController
|
||||
}
|
||||
|
||||
func (c *cacheController) Remove(ctx context.Context, req *system.CacheRemoveReq) (res *system.CacheRemoveRes, err error) {
|
||||
service.Cache().RemoveByTag(ctx, commonConsts.CacheSysDictTag)
|
||||
service.Cache().RemoveByTag(ctx, commonConsts.CacheSysConfigTag)
|
||||
service.Cache().RemoveByTag(ctx, consts.CacheSysAuthTag)
|
||||
cacheRedis := g.Cfg().MustGet(ctx, "system.cache.model").String()
|
||||
if cacheRedis == commonConsts.CacheModelRedis {
|
||||
cursor := 0
|
||||
cachePrefix := g.Cfg().MustGet(ctx, "system.cache.prefix").String()
|
||||
cachePrefix += commonConsts.CachePrefix
|
||||
for {
|
||||
var v *gvar.Var
|
||||
v, err = g.Redis().Do(ctx, "scan", cursor, "match", cachePrefix+"*", "count", "100")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
data := gconv.SliceAny(v)
|
||||
var dataSlice []string
|
||||
err = gconv.Structs(data[1], &dataSlice)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
for _, d := range dataSlice {
|
||||
_, err = g.Redis().Do(ctx, "del", d)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
cursor = gconv.Int(data[0])
|
||||
if cursor == 0 {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
27
internal/app/system/controller/module_tenant.go
Normal file
27
internal/app/system/controller/module_tenant.go
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* @desc:模块租户关系控制器
|
||||
* @company:云南奇讯科技有限公司
|
||||
* @Author: system
|
||||
* @Date: 2026/1/6
|
||||
*/
|
||||
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/tiger1103/gfast/v3/api/v1/system"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/service"
|
||||
)
|
||||
|
||||
var ModuleTenant = moduleTenantController{}
|
||||
|
||||
type moduleTenantController struct {
|
||||
BaseController
|
||||
}
|
||||
|
||||
// Add 添加模块租户关系
|
||||
func (c *moduleTenantController) Add(ctx context.Context, req *system.ModuleTenantAddReq) (res *system.ModuleTenantAddRes, err error) {
|
||||
err = service.ModuleTenant().Add(ctx, req)
|
||||
return
|
||||
}
|
||||
50
internal/app/system/controller/personal.go
Normal file
50
internal/app/system/controller/personal.go
Normal file
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* @desc:xxxx功能描述
|
||||
* @company:云南奇讯科技有限公司
|
||||
* @Author: yixiaohu<yxh669@qq.com>
|
||||
* @Date: 2022/11/3 10:32
|
||||
*/
|
||||
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/crypto/gmd5"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
"github.com/tiger1103/gfast/v3/api/v1/system"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/service"
|
||||
"github.com/tiger1103/gfast/v3/library/libUtils"
|
||||
)
|
||||
|
||||
var Personal = new(personalController)
|
||||
|
||||
type personalController struct {
|
||||
}
|
||||
|
||||
func (c *personalController) GetPersonal(ctx context.Context, req *system.PersonalInfoReq) (res *system.PersonalInfoRes, err error) {
|
||||
res, err = service.Personal().GetPersonalInfo(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
func (c *personalController) EditPersonal(ctx context.Context, req *system.PersonalEditReq) (res *system.PersonalEditRes, err error) {
|
||||
ip := libUtils.GetClientIp(ctx)
|
||||
userAgent := libUtils.GetUserAgent(ctx)
|
||||
res = new(system.PersonalEditRes)
|
||||
res.UserInfo, err = service.Personal().EditPersonal(ctx, req)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
key := gconv.String(res.UserInfo.Id) + "-" + gmd5.MustEncryptString(res.UserInfo.UserName) + gmd5.MustEncryptString(res.UserInfo.UserPassword)
|
||||
if g.Cfg().MustGet(ctx, "gfToken.multiLogin").Bool() {
|
||||
key = gconv.String(res.UserInfo.Id) + "-" + gmd5.MustEncryptString(res.UserInfo.UserName) + gmd5.MustEncryptString(res.UserInfo.UserPassword+ip+userAgent)
|
||||
}
|
||||
res.UserInfo.UserPassword = ""
|
||||
res.Token, err = service.GfToken().GenerateToken(ctx, key, res.UserInfo)
|
||||
return
|
||||
}
|
||||
|
||||
func (c *personalController) ResetPwdPersonal(ctx context.Context, req *system.PersonalResetPwdReq) (res *system.PersonalResetPwdRes, err error) {
|
||||
res, err = service.Personal().ResetPwdPersonal(ctx, req)
|
||||
return
|
||||
}
|
||||
79
internal/app/system/controller/sys_auth_rule.go
Normal file
79
internal/app/system/controller/sys_auth_rule.go
Normal file
@@ -0,0 +1,79 @@
|
||||
/*
|
||||
* @desc:菜单
|
||||
* @company:云南奇讯科技有限公司
|
||||
* @Author: yixiaohu
|
||||
* @Date: 2022/3/16 10:36
|
||||
*/
|
||||
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/tiger1103/gfast/v3/api/v1/system"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/model"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/service"
|
||||
)
|
||||
|
||||
var Menu = menuController{}
|
||||
|
||||
type menuController struct {
|
||||
BaseController
|
||||
}
|
||||
|
||||
func (c *menuController) List(ctx context.Context, req *system.RuleSearchReq) (res *system.RuleListRes, err error) {
|
||||
var list []*model.SysAuthRuleInfoRes
|
||||
res = &system.RuleListRes{
|
||||
Rules: make([]*model.SysAuthRuleTreeRes, 0),
|
||||
}
|
||||
list, err = service.SysAuthRule().GetMenuListSearch(ctx, req)
|
||||
if req.Title != "" || req.Component != "" {
|
||||
for _, menu := range list {
|
||||
res.Rules = append(res.Rules, &model.SysAuthRuleTreeRes{
|
||||
SysAuthRuleInfoRes: menu,
|
||||
})
|
||||
}
|
||||
} else {
|
||||
res.Rules = service.SysAuthRule().GetMenuListTree(0, list)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (c *menuController) Add(ctx context.Context, req *system.RuleAddReq) (res *system.RuleAddRes, err error) {
|
||||
err = service.SysAuthRule().Add(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// GetAddParams 获取菜单添加及编辑相关参数
|
||||
func (c *menuController) GetAddParams(ctx context.Context, req *system.RuleGetParamsReq) (res *system.RuleGetParamsRes, err error) {
|
||||
// 获取角色列表
|
||||
res = new(system.RuleGetParamsRes)
|
||||
res.Roles, err = service.SysRole().GetRoleList(ctx)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
res.Menus, err = service.SysAuthRule().GetIsMenuList(ctx)
|
||||
return
|
||||
}
|
||||
|
||||
// Get 获取菜单信息
|
||||
func (c *menuController) Get(ctx context.Context, req *system.RuleInfoReq) (res *system.RuleInfoRes, err error) {
|
||||
res = new(system.RuleInfoRes)
|
||||
res.Rule, err = service.SysAuthRule().Get(ctx, req.Id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
res.RoleIds, err = service.SysAuthRule().GetMenuRoles(ctx, req.Id)
|
||||
return
|
||||
}
|
||||
|
||||
// Update 菜单修改
|
||||
func (c *menuController) Update(ctx context.Context, req *system.RuleUpdateReq) (res *system.RuleUpdateRes, err error) {
|
||||
err = service.SysAuthRule().Update(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// Delete 删除菜单
|
||||
func (c *menuController) Delete(ctx context.Context, req *system.RuleDeleteReq) (res *system.RuleDeleteRes, err error) {
|
||||
err = service.SysAuthRule().DeleteMenuByIds(ctx, req.Ids)
|
||||
return
|
||||
}
|
||||
51
internal/app/system/controller/sys_config.go
Normal file
51
internal/app/system/controller/sys_config.go
Normal file
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* @desc:系统参数配置
|
||||
* @company:云南奇讯科技有限公司
|
||||
* @Author: yixiaohu
|
||||
* @Date: 2022/4/18 21:17
|
||||
*/
|
||||
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/tiger1103/gfast/v3/api/v1/system"
|
||||
commonService "github.com/tiger1103/gfast/v3/internal/app/common/service"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/service"
|
||||
)
|
||||
|
||||
var Config = configController{}
|
||||
|
||||
type configController struct {
|
||||
BaseController
|
||||
}
|
||||
|
||||
// List 系统参数列表
|
||||
func (c *configController) List(ctx context.Context, req *system.ConfigSearchReq) (res *system.ConfigSearchRes, err error) {
|
||||
res, err = commonService.SysConfig().List(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// Add 添加系统参数
|
||||
func (c *configController) Add(ctx context.Context, req *system.ConfigAddReq) (res *system.ConfigAddRes, err error) {
|
||||
err = commonService.SysConfig().Add(ctx, req, service.Context().GetUserId(ctx))
|
||||
return
|
||||
}
|
||||
|
||||
// Get 获取系统参数
|
||||
func (c *configController) Get(ctx context.Context, req *system.ConfigGetReq) (res *system.ConfigGetRes, err error) {
|
||||
res, err = commonService.SysConfig().Get(ctx, req.Id)
|
||||
return
|
||||
}
|
||||
|
||||
// Edit 修改系统参数
|
||||
func (c *configController) Edit(ctx context.Context, req *system.ConfigEditReq) (res *system.ConfigEditRes, err error) {
|
||||
err = commonService.SysConfig().Edit(ctx, req, service.Context().GetUserId(ctx))
|
||||
return
|
||||
}
|
||||
|
||||
// Delete 删除系统参数
|
||||
func (c *configController) Delete(ctx context.Context, req *system.ConfigDeleteReq) (res *system.ConfigDeleteRes, err error) {
|
||||
err = commonService.SysConfig().Delete(ctx, req.Ids)
|
||||
return
|
||||
}
|
||||
60
internal/app/system/controller/sys_dept.go
Normal file
60
internal/app/system/controller/sys_dept.go
Normal file
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* @desc:部门管理
|
||||
* @company:云南奇讯科技有限公司
|
||||
* @Author: yixiaohu<yxh669@qq.com>
|
||||
* @Date: 2022/4/6 15:15
|
||||
*/
|
||||
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/tiger1103/gfast/v3/api/v1/system"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/model/entity"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/service"
|
||||
)
|
||||
|
||||
var Dept = sysDeptController{}
|
||||
|
||||
type sysDeptController struct {
|
||||
BaseController
|
||||
}
|
||||
|
||||
// List 部门列表
|
||||
func (c *sysDeptController) List(ctx context.Context, req *system.DeptSearchReq) (res *system.DeptSearchRes, err error) {
|
||||
res = new(system.DeptSearchRes)
|
||||
res.DeptList, err = service.SysDept().GetList(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// Add 添加部门
|
||||
func (c *sysDeptController) Add(ctx context.Context, req *system.DeptAddReq) (res *system.DeptAddRes, err error) {
|
||||
_, err = service.SysDept().Add(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// Edit 修改部门
|
||||
func (c *sysDeptController) Edit(ctx context.Context, req *system.DeptEditReq) (res *system.DeptEditRes, err error) {
|
||||
err = service.SysDept().Edit(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// Delete 删除部门
|
||||
func (c *sysDeptController) Delete(ctx context.Context, req *system.DeptDeleteReq) (res *system.DeptDeleteRes, err error) {
|
||||
err = service.SysDept().Delete(ctx, req.Id)
|
||||
return
|
||||
}
|
||||
|
||||
// TreeSelect 获取部门数据结构数据
|
||||
func (c *sysDeptController) TreeSelect(ctx context.Context, req *system.DeptTreeSelectReq) (res *system.DeptTreeSelectRes, err error) {
|
||||
var deptList []*entity.SysDept
|
||||
deptList, err = service.SysDept().GetList(ctx, &system.DeptSearchReq{
|
||||
Status: "1", //正常状态数据
|
||||
})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
res = new(system.DeptTreeSelectRes)
|
||||
res.Deps = service.SysDept().GetListTree(0, deptList)
|
||||
return
|
||||
}
|
||||
61
internal/app/system/controller/sys_dict_data.go
Normal file
61
internal/app/system/controller/sys_dict_data.go
Normal file
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* @desc:字典数据管理
|
||||
* @company:云南奇讯科技有限公司
|
||||
* @Author: yixiaohu<yxh669@qq.com>
|
||||
* @Date: 2022/3/18 11:57
|
||||
*/
|
||||
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/tiger1103/gfast/v3/api/v1/system"
|
||||
commonService "github.com/tiger1103/gfast/v3/internal/app/common/service"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/service"
|
||||
)
|
||||
|
||||
var DictData = dictDataController{}
|
||||
|
||||
type dictDataController struct {
|
||||
}
|
||||
|
||||
// GetDictDataTree 根据remark获取字典数据树形结构
|
||||
func (c *dictDataController) GetDictDataTree(ctx context.Context, req *system.GetDictTreeReq) (res *system.GetDictTreeRes, err error) {
|
||||
res, err = commonService.SysDictData().GetDictDataTree(ctx, req.Remark)
|
||||
return
|
||||
}
|
||||
|
||||
// GetDictData 获取字典数据
|
||||
func (c *dictDataController) GetDictData(ctx context.Context, req *system.GetDictReq) (res *system.GetDictRes, err error) {
|
||||
res, err = commonService.SysDictData().GetDictWithDataByType(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// List 获取字典数据列表
|
||||
func (c *dictDataController) List(ctx context.Context, req *system.DictDataSearchReq) (res *system.DictDataSearchRes, err error) {
|
||||
res, err = commonService.SysDictData().List(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// Add 添加字典数据
|
||||
func (c *dictDataController) Add(ctx context.Context, req *system.DictDataAddReq) (res *system.DictDataAddRes, err error) {
|
||||
err = commonService.SysDictData().Add(ctx, req, service.Context().GetUserId(ctx))
|
||||
return
|
||||
}
|
||||
|
||||
// Get 获取对应的字典数据
|
||||
func (c *dictDataController) Get(ctx context.Context, req *system.DictDataGetReq) (res *system.DictDataGetRes, err error) {
|
||||
res, err = commonService.SysDictData().Get(ctx, req.DictCode)
|
||||
return
|
||||
}
|
||||
|
||||
// Edit 修改字典数据
|
||||
func (c *dictDataController) Edit(ctx context.Context, req *system.DictDataEditReq) (res *system.DictDataEditRes, err error) {
|
||||
err = commonService.SysDictData().Edit(ctx, req, service.Context().GetUserId(ctx))
|
||||
return
|
||||
}
|
||||
|
||||
func (c *dictDataController) Delete(ctx context.Context, req *system.DictDataDeleteReq) (res *system.DictDataDeleteRes, err error) {
|
||||
err = commonService.SysDictData().Delete(ctx, req.Ids)
|
||||
return
|
||||
}
|
||||
57
internal/app/system/controller/sys_dict_type.go
Normal file
57
internal/app/system/controller/sys_dict_type.go
Normal file
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
* @desc:字典类型
|
||||
* @company:云南奇讯科技有限公司
|
||||
* @Author: yixiaohu<yxh669@qq.com>
|
||||
* @Date: 2022/3/18 11:57
|
||||
*/
|
||||
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/tiger1103/gfast/v3/api/v1/system"
|
||||
commonService "github.com/tiger1103/gfast/v3/internal/app/common/service"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/service"
|
||||
)
|
||||
|
||||
var DictType = &SysDictTypeController{}
|
||||
|
||||
type SysDictTypeController struct {
|
||||
}
|
||||
|
||||
// List 字典类型列表
|
||||
func (c *SysDictTypeController) List(ctx context.Context, req *system.DictTypeSearchReq) (res *system.DictTypeSearchRes, err error) {
|
||||
res, err = commonService.SysDictType().List(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// Add 添加字典类型
|
||||
func (c *SysDictTypeController) Add(ctx context.Context, req *system.DictTypeAddReq) (res *system.DictTypeAddRes, err error) {
|
||||
err = commonService.SysDictType().Add(ctx, req, service.Context().GetUserId(ctx))
|
||||
return
|
||||
}
|
||||
|
||||
// Get 获取字典类型
|
||||
func (c *SysDictTypeController) Get(ctx context.Context, req *system.DictTypeGetReq) (res *system.DictTypeGetRes, err error) {
|
||||
res = new(system.DictTypeGetRes)
|
||||
res.DictType, err = commonService.SysDictType().Get(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// Edit 修改字典数据
|
||||
func (c *SysDictTypeController) Edit(ctx context.Context, req *system.DictTypeEditReq) (res *system.DictTypeEditRes, err error) {
|
||||
err = commonService.SysDictType().Edit(ctx, req, service.Context().GetUserId(ctx))
|
||||
return
|
||||
}
|
||||
|
||||
func (c *SysDictTypeController) Delete(ctx context.Context, req *system.DictTypeDeleteReq) (res *system.DictTypeDeleteRes, err error) {
|
||||
err = commonService.SysDictType().Delete(ctx, req.DictIds)
|
||||
return
|
||||
}
|
||||
|
||||
// OptionSelect 获取字典选择框列表
|
||||
func (c *SysDictTypeController) OptionSelect(ctx context.Context, req *system.DictTypeAllReq) (res *system.DictTYpeAllRes, err error) {
|
||||
res = new(system.DictTYpeAllRes)
|
||||
res.DictType, err = commonService.SysDictType().GetAllDictType(ctx)
|
||||
return
|
||||
}
|
||||
119
internal/app/system/controller/sys_login.go
Normal file
119
internal/app/system/controller/sys_login.go
Normal file
@@ -0,0 +1,119 @@
|
||||
/*
|
||||
* @desc:登录
|
||||
* @company:云南奇讯科技有限公司
|
||||
* @Author: yixiaohu
|
||||
* @Date: 2022/4/27 21:52
|
||||
*/
|
||||
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/gogf/gf/v2/crypto/gmd5"
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/gctx"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
"github.com/gogf/gf/v2/util/gmode"
|
||||
"github.com/tiger1103/gfast/v3/api/v1/system"
|
||||
commonService "github.com/tiger1103/gfast/v3/internal/app/common/service"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/model"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/service"
|
||||
"github.com/tiger1103/gfast/v3/library/libUtils"
|
||||
)
|
||||
|
||||
var (
|
||||
Login = loginController{}
|
||||
)
|
||||
|
||||
type loginController struct {
|
||||
BaseController
|
||||
}
|
||||
|
||||
func (c *loginController) Login(ctx context.Context, req *system.UserLoginReq) (res *system.UserLoginRes, err error) {
|
||||
var (
|
||||
user *model.LoginUserRes
|
||||
token string
|
||||
permissions []string
|
||||
menuList []*model.UserMenus
|
||||
)
|
||||
//判断验证码是否正确
|
||||
debug := gmode.IsDevelop()
|
||||
if !debug {
|
||||
if !commonService.Captcha().VerifyString(req.VerifyKey, req.VerifyCode) {
|
||||
err = gerror.New("验证码输入错误")
|
||||
return
|
||||
}
|
||||
}
|
||||
ip := libUtils.GetClientIp(ctx)
|
||||
userAgent := libUtils.GetUserAgent(ctx)
|
||||
user, err = service.SysUser().GetAdminUserByUsernamePassword(ctx, req)
|
||||
if err != nil {
|
||||
// 保存登录失败的日志信息
|
||||
service.SysLoginLog().Invoke(gctx.New(), &model.LoginLogParams{
|
||||
Status: 0,
|
||||
Username: req.Username,
|
||||
Ip: ip,
|
||||
UserAgent: userAgent,
|
||||
Msg: err.Error(),
|
||||
Module: "系统后台",
|
||||
})
|
||||
return
|
||||
}
|
||||
err = service.SysUser().UpdateLoginInfo(ctx, user.Id, ip)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
// 报存登录成功的日志信息
|
||||
service.SysLoginLog().Invoke(gctx.New(), &model.LoginLogParams{
|
||||
Status: 1,
|
||||
Username: req.Username,
|
||||
Ip: ip,
|
||||
UserAgent: userAgent,
|
||||
Msg: "登录成功",
|
||||
Module: "系统后台",
|
||||
})
|
||||
key := gconv.String(user.Id) + "-" + gmd5.MustEncryptString(user.UserName) + gmd5.MustEncryptString(user.UserPassword)
|
||||
if g.Cfg().MustGet(ctx, "gfToken.multiLogin").Bool() {
|
||||
key = gconv.String(user.Id) + "-" + gmd5.MustEncryptString(user.UserName) + gmd5.MustEncryptString(user.UserPassword+ip+userAgent)
|
||||
}
|
||||
user.UserPassword = ""
|
||||
token, err = service.GfToken().GenerateToken(ctx, key, user)
|
||||
g.Log().Debugf(ctx, "==========================key:%v;user:%v;token:%v==========================", key, user, token)
|
||||
if err != nil {
|
||||
g.Log().Error(ctx, err)
|
||||
err = gerror.New("登录失败,后端服务出现错误")
|
||||
return
|
||||
}
|
||||
_, err = service.ModuleTenant().AddRedisByTenantId(ctx, &system.AddRedisByTenantIdReq{TenantId: user.TenantId})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
//获取用户菜单数据
|
||||
menuList, permissions, err = service.SysUser().GetAdminRules(ctx, user.Id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
res = &system.UserLoginRes{
|
||||
UserInfo: user,
|
||||
Token: token,
|
||||
MenuList: menuList,
|
||||
Permissions: permissions,
|
||||
}
|
||||
//用户在线状态保存
|
||||
service.SysUserOnline().Invoke(gctx.New(), &model.SysUserOnlineParams{
|
||||
UserAgent: userAgent,
|
||||
Uuid: gmd5.MustEncrypt(token),
|
||||
Token: token,
|
||||
Username: user.UserName,
|
||||
Ip: ip,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// LoginOut 退出登录
|
||||
func (c *loginController) LoginOut(ctx context.Context, req *system.UserLoginOutReq) (res *system.UserLoginOutRes, err error) {
|
||||
err = service.GfToken().RemoveToken(ctx, service.GfToken().GetRequestToken(g.RequestFromCtx(ctx)))
|
||||
return
|
||||
}
|
||||
35
internal/app/system/controller/sys_login_log.go
Normal file
35
internal/app/system/controller/sys_login_log.go
Normal file
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* @desc:登录日志管理
|
||||
* @company:云南奇讯科技有限公司
|
||||
* @Author: yixiaohu
|
||||
* @Date: 2022/4/24 22:14
|
||||
*/
|
||||
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/tiger1103/gfast/v3/api/v1/system"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/service"
|
||||
)
|
||||
|
||||
var LoginLog = loginLogController{}
|
||||
|
||||
type loginLogController struct {
|
||||
BaseController
|
||||
}
|
||||
|
||||
func (c *loginLogController) List(ctx context.Context, req *system.LoginLogSearchReq) (res *system.LoginLogSearchRes, err error) {
|
||||
res, err = service.SysLoginLog().List(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
func (c *loginLogController) Delete(ctx context.Context, req *system.LoginLogDelReq) (res *system.LoginLogDelRes, err error) {
|
||||
err = service.SysLoginLog().DeleteLoginLogByIds(ctx, req.Ids)
|
||||
return
|
||||
}
|
||||
|
||||
func (c *loginLogController) Clear(ctx context.Context, req *system.LoginLogClearReq) (res *system.LoginLogClearRes, err error) {
|
||||
err = service.SysLoginLog().ClearLoginLog(ctx)
|
||||
return
|
||||
}
|
||||
147
internal/app/system/controller/sys_monitor.go
Normal file
147
internal/app/system/controller/sys_monitor.go
Normal file
@@ -0,0 +1,147 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/gogf/gf/v2/os/gtime"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
"github.com/shirou/gopsutil/v3/cpu"
|
||||
"github.com/shirou/gopsutil/v3/disk"
|
||||
"github.com/shirou/gopsutil/v3/host"
|
||||
"github.com/shirou/gopsutil/v3/load"
|
||||
"github.com/shirou/gopsutil/v3/mem"
|
||||
"github.com/shirou/gopsutil/v3/process"
|
||||
"github.com/tiger1103/gfast/v3/api/v1/system"
|
||||
"github.com/tiger1103/gfast/v3/library/libUtils"
|
||||
"os"
|
||||
"runtime"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
var Monitor = sysMonitorController{
|
||||
startTime: gtime.Now(),
|
||||
}
|
||||
|
||||
type sysMonitorController struct {
|
||||
BaseController
|
||||
startTime *gtime.Time
|
||||
}
|
||||
|
||||
func (c *sysMonitorController) List(ctx context.Context, req *system.MonitorSearchReq) (res *system.MonitorSearchRes, err error) {
|
||||
cpuNum := runtime.NumCPU() //核心数
|
||||
var cpuUsed float64 = 0 //用户使用率
|
||||
var cpuAvg5 float64 = 0 //CPU负载5
|
||||
var cpuAvg15 float64 = 0 //当前空闲率
|
||||
|
||||
cpuInfo, err := cpu.Percent(time.Duration(time.Second), false)
|
||||
if err == nil {
|
||||
cpuUsed, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", cpuInfo[0]), 64)
|
||||
}
|
||||
|
||||
loadInfo, err := load.Avg()
|
||||
if err == nil {
|
||||
cpuAvg5, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", loadInfo.Load5), 64)
|
||||
cpuAvg15, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", loadInfo.Load5), 64)
|
||||
}
|
||||
|
||||
var memTotal uint64 = 0 //总内存
|
||||
var memUsed uint64 = 0 //总内存 := 0 //已用内存
|
||||
var memFree uint64 = 0 //剩余内存
|
||||
var memUsage float64 = 0 //使用率
|
||||
|
||||
v, err := mem.VirtualMemory()
|
||||
if err == nil {
|
||||
memTotal = v.Total
|
||||
memUsed = v.Used
|
||||
memFree = memTotal - memUsed
|
||||
memUsage, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", v.UsedPercent), 64)
|
||||
}
|
||||
|
||||
var goTotal uint64 = 0 //go分配的总内存数
|
||||
var goUsed uint64 = 0 //go使用的内存数
|
||||
var goFree uint64 = 0 //go剩余的内存数
|
||||
var goUsage float64 = 0 //使用率
|
||||
|
||||
p, err := process.NewProcess(int32(os.Getpid()))
|
||||
if err == nil {
|
||||
memInfo, err := p.MemoryInfo()
|
||||
if err == nil {
|
||||
goUsed = memInfo.RSS
|
||||
goUsage = gconv.Float64(fmt.Sprintf("%.2f", gconv.Float64(goUsed)/gconv.Float64(memTotal)*100))
|
||||
}
|
||||
}
|
||||
|
||||
sysComputerIp := "" //服务器IP
|
||||
ip, err := libUtils.GetLocalIP()
|
||||
if err == nil {
|
||||
sysComputerIp = ip
|
||||
}
|
||||
|
||||
sysComputerName := "" //服务器名称
|
||||
sysOsName := "" //操作系统
|
||||
sysOsArch := "" //系统架构
|
||||
|
||||
sysInfo, err := host.Info()
|
||||
|
||||
if err == nil {
|
||||
sysComputerName = sysInfo.Hostname
|
||||
sysOsName = sysInfo.OS
|
||||
sysOsArch = sysInfo.KernelArch
|
||||
}
|
||||
|
||||
goName := "GoLang" //语言环境
|
||||
goVersion := runtime.Version() //版本
|
||||
gtime.Date()
|
||||
goStartTime := c.startTime //启动时间
|
||||
|
||||
goRunTime := gtime.Now().Timestamp() - c.startTime.Timestamp() //运行时长(秒)
|
||||
goHome := runtime.GOROOT() //安装路径
|
||||
goUserDir := "" //项目路径
|
||||
|
||||
curDir, err := os.Getwd()
|
||||
|
||||
if err == nil {
|
||||
goUserDir = curDir
|
||||
}
|
||||
|
||||
//服务器磁盘信息
|
||||
diskList := make([]disk.UsageStat, 0)
|
||||
diskInfo, err := disk.Partitions(true) //所有分区
|
||||
if err == nil {
|
||||
for _, p := range diskInfo {
|
||||
diskDetail, err := disk.Usage(p.Mountpoint)
|
||||
if err == nil {
|
||||
diskDetail.UsedPercent, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", diskDetail.UsedPercent), 64)
|
||||
diskList = append(diskList, *diskDetail)
|
||||
}
|
||||
}
|
||||
}
|
||||
res = new(system.MonitorSearchRes)
|
||||
res = &system.MonitorSearchRes{
|
||||
"cpuNum": cpuNum,
|
||||
"cpuUsed": cpuUsed,
|
||||
"cpuAvg5": gconv.String(cpuAvg5),
|
||||
"cpuAvg15": gconv.String(cpuAvg15),
|
||||
"memTotal": memTotal,
|
||||
"goTotal": goTotal,
|
||||
"memUsed": memUsed,
|
||||
"goUsed": goUsed,
|
||||
"memFree": memFree,
|
||||
"goFree": goFree,
|
||||
"memUsage": memUsage,
|
||||
"goUsage": goUsage,
|
||||
"sysComputerName": sysComputerName,
|
||||
"sysOsName": sysOsName,
|
||||
"sysComputerIp": sysComputerIp,
|
||||
"sysOsArch": sysOsArch,
|
||||
"goName": goName,
|
||||
"goVersion": goVersion,
|
||||
"goStartTime": goStartTime,
|
||||
"goRunTime": goRunTime,
|
||||
"goHome": goHome,
|
||||
"goUserDir": goUserDir,
|
||||
"diskList": diskList,
|
||||
}
|
||||
return
|
||||
}
|
||||
43
internal/app/system/controller/sys_oper_log.go
Normal file
43
internal/app/system/controller/sys_oper_log.go
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* @desc:系统后台操作日志
|
||||
* @company:云南奇讯科技有限公司
|
||||
* @Author: yixiaohu<yxh669@qq.com>
|
||||
* @Date: 2022/9/21 16:10
|
||||
*/
|
||||
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/tiger1103/gfast/v3/api/v1/system"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/service"
|
||||
)
|
||||
|
||||
var OperLog = new(operateLogController)
|
||||
|
||||
type operateLogController struct {
|
||||
BaseController
|
||||
}
|
||||
|
||||
// List 列表
|
||||
func (c *operateLogController) List(ctx context.Context, req *system.SysOperLogSearchReq) (res *system.SysOperLogSearchRes, err error) {
|
||||
res, err = service.OperateLog().List(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// Get 获取操作日志
|
||||
func (c *operateLogController) Get(ctx context.Context, req *system.SysOperLogGetReq) (res *system.SysOperLogGetRes, err error) {
|
||||
res = new(system.SysOperLogGetRes)
|
||||
res.SysOperLogInfoRes, err = service.OperateLog().GetByOperId(ctx, req.OperId)
|
||||
return
|
||||
}
|
||||
|
||||
func (c *operateLogController) Delete(ctx context.Context, req *system.SysOperLogDeleteReq) (res *system.SysOperLogDeleteRes, err error) {
|
||||
err = service.OperateLog().DeleteByIds(ctx, req.OperIds)
|
||||
return
|
||||
}
|
||||
|
||||
func (c *operateLogController) Clear(ctx context.Context, req *system.SysOperLogClearReq) (res *system.SysOperLogClearRes, err error) {
|
||||
err = service.OperateLog().ClearLog(ctx)
|
||||
return
|
||||
}
|
||||
44
internal/app/system/controller/sys_post.go
Normal file
44
internal/app/system/controller/sys_post.go
Normal file
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* @desc:岗位管理
|
||||
* @company:云南奇讯科技有限公司
|
||||
* @Author: yixiaohu
|
||||
* @Date: 2022/4/7 23:12
|
||||
*/
|
||||
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/tiger1103/gfast/v3/api/v1/system"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/service"
|
||||
)
|
||||
|
||||
var Post = postController{}
|
||||
|
||||
type postController struct {
|
||||
BaseController
|
||||
}
|
||||
|
||||
// List 岗位列表
|
||||
func (c *postController) List(ctx context.Context, req *system.PostSearchReq) (res *system.PostSearchRes, err error) {
|
||||
res, err = service.SysPost().List(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// Add 添加岗位
|
||||
func (c *postController) Add(ctx context.Context, req *system.PostAddReq) (res *system.PostAddRes, err error) {
|
||||
err = service.SysPost().Add(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// Edit 修改岗位
|
||||
func (c *postController) Edit(ctx context.Context, req *system.PostEditReq) (res *system.PostEditRes, err error) {
|
||||
err = service.SysPost().Edit(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// Delete 删除岗位
|
||||
func (c *postController) Delete(ctx context.Context, req *system.PostDeleteReq) (res *system.PostDeleteRes, err error) {
|
||||
err = service.SysPost().Delete(ctx, req.Ids)
|
||||
return
|
||||
}
|
||||
69
internal/app/system/controller/sys_role.go
Normal file
69
internal/app/system/controller/sys_role.go
Normal file
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
* @desc:角色管理
|
||||
* @company:云南奇讯科技有限公司
|
||||
* @Author: yixiaohu<yxh669@qq.com>
|
||||
* @Date: 2022/3/30 9:08
|
||||
*/
|
||||
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/tiger1103/gfast/v3/api/v1/system"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/service"
|
||||
)
|
||||
|
||||
var Role = roleController{}
|
||||
|
||||
type roleController struct {
|
||||
BaseController
|
||||
}
|
||||
|
||||
// List 角色列表
|
||||
func (c *roleController) List(ctx context.Context, req *system.RoleListReq) (res *system.RoleListRes, err error) {
|
||||
res, err = service.SysRole().GetRoleListSearch(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// GetParams 获取角色表单参数
|
||||
func (c *roleController) GetParams(ctx context.Context, req *system.RoleGetParamsReq) (res *system.RoleGetParamsRes, err error) {
|
||||
res = new(system.RoleGetParamsRes)
|
||||
res.Menu, err = service.SysAuthRule().GetMenuList(ctx)
|
||||
return
|
||||
}
|
||||
|
||||
// GetParamsInfo 获取角色表单参数信息
|
||||
func (c *roleController) GetParamsInfo(ctx context.Context, req *system.RoleGetParamsInfoReq) (res *system.RoleGetParamsRes, err error) {
|
||||
res = new(system.RoleGetParamsRes)
|
||||
res.Menu, err = service.SysAuthRule().GetMenuListByRole(ctx)
|
||||
return
|
||||
}
|
||||
|
||||
// Add 添加角色信息
|
||||
func (c *roleController) Add(ctx context.Context, req *system.RoleAddReq) (res *system.RoleAddRes, err error) {
|
||||
err = service.SysRole().AddRole(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// Get 获取角色信息
|
||||
func (c *roleController) Get(ctx context.Context, req *system.RoleGetReq) (res *system.RoleGetRes, err error) {
|
||||
res = new(system.RoleGetRes)
|
||||
res.Role, err = service.SysRole().Get(ctx, req.Id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
res.MenuIds, err = service.SysRole().GetFilteredNamedPolicy(ctx, req.Id)
|
||||
return
|
||||
}
|
||||
|
||||
// Edit 修改角色信息
|
||||
func (c *roleController) Edit(ctx context.Context, req *system.RoleEditReq) (res *system.RoleEditRes, err error) {
|
||||
err = service.SysRole().EditRole(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// Delete 删除角色
|
||||
func (c *roleController) Delete(ctx context.Context, req *system.RoleDeleteReq) (res *system.RoleDeleteRes, err error) {
|
||||
err = service.SysRole().DeleteByIds(ctx, req.Ids)
|
||||
return
|
||||
}
|
||||
137
internal/app/system/controller/sys_user.go
Normal file
137
internal/app/system/controller/sys_user.go
Normal file
@@ -0,0 +1,137 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/tiger1103/gfast/v3/api/v1/system"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/model"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/model/entity"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/service"
|
||||
)
|
||||
|
||||
var (
|
||||
User = userController{}
|
||||
)
|
||||
|
||||
type userController struct {
|
||||
BaseController
|
||||
}
|
||||
|
||||
// GetUserMenus 获取用户菜单及按钮权限
|
||||
func (c *userController) GetUserMenus(ctx context.Context, req *system.UserMenusReq) (res *system.UserMenusRes, err error) {
|
||||
var (
|
||||
permissions []string
|
||||
menuList []*model.UserMenus
|
||||
)
|
||||
userId := service.Context().GetUserId(ctx)
|
||||
menuList, permissions, err = service.SysUser().GetAdminRules(ctx, userId)
|
||||
res = &system.UserMenusRes{
|
||||
MenuList: menuList,
|
||||
Permissions: permissions,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// List 用户列表
|
||||
func (c *userController) List(ctx context.Context, req *system.UserSearchReq) (res *system.UserSearchRes, err error) {
|
||||
var (
|
||||
total interface{}
|
||||
userList []*entity.SysUser
|
||||
)
|
||||
res = new(system.UserSearchRes)
|
||||
total, userList, err = service.SysUser().List(ctx, req)
|
||||
if err != nil || total == 0 {
|
||||
return
|
||||
}
|
||||
res.Total = total
|
||||
res.UserList, err = service.SysUser().GetUsersRoleDept(ctx, userList)
|
||||
return
|
||||
}
|
||||
|
||||
// GetList 用户列表
|
||||
func (c *userController) GetList(ctx context.Context, req *system.GetUserSearchReq) (res *system.UserSearchRes, err error) {
|
||||
var (
|
||||
total interface{}
|
||||
userList []*entity.SysUser
|
||||
)
|
||||
res = new(system.UserSearchRes)
|
||||
total, userList, err = service.SysUser().GetList(ctx, req)
|
||||
if err != nil || total == 0 {
|
||||
return
|
||||
}
|
||||
res.Total = total
|
||||
res.UserList, err = service.SysUser().GetUsersRoleDeptInfo(ctx, userList)
|
||||
res.UserList, err = service.SysUser().GetTenantInfo(ctx, res.UserList)
|
||||
return
|
||||
}
|
||||
|
||||
// GetParams 获取用户维护相关参数
|
||||
func (c *userController) GetParams(ctx context.Context, req *system.UserGetParamsReq) (res *system.UserGetParamsRes, err error) {
|
||||
res = new(system.UserGetParamsRes)
|
||||
res.RoleList, err = service.SysRole().GetRoleList(ctx)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
res.Posts, err = service.SysPost().GetUsedPost(ctx)
|
||||
return
|
||||
}
|
||||
|
||||
// GetParamsInfo 获取用户维护相关参数信息
|
||||
func (c *userController) GetParamsInfo(ctx context.Context, req *system.UserGetParamsInfoReq) (res *system.UserGetParamsRes, err error) {
|
||||
res = new(system.UserGetParamsRes)
|
||||
res.RoleList, err = service.SysRole().GetRoleListInfo(ctx)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
res.Posts, err = service.SysPost().GetUsedPost(ctx)
|
||||
return
|
||||
}
|
||||
|
||||
// Add 添加用户
|
||||
func (c *userController) Add(ctx context.Context, req *system.UserAddReq) (res *system.UserAddRes, err error) {
|
||||
_, err = service.SysUser().Add(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// GetEditUser 获取修改用户信息
|
||||
func (c *userController) GetEditUser(ctx context.Context, req *system.UserGetEditReq) (res *system.UserGetEditRes, err error) {
|
||||
res, err = service.SysUser().GetEditUser(ctx, req.Id)
|
||||
return
|
||||
}
|
||||
|
||||
// Edit 修改用户
|
||||
func (c *userController) Edit(ctx context.Context, req *system.UserEditReq) (res *system.UserEditRes, err error) {
|
||||
err = service.SysUser().Edit(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// ResetPwd 重置密码
|
||||
func (c *userController) ResetPwd(ctx context.Context, req *system.UserResetPwdReq) (res *system.UserResetPwdRes, err error) {
|
||||
err = service.SysUser().ResetUserPwd(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// SetStatus 修改用户状态
|
||||
func (c *userController) SetStatus(ctx context.Context, req *system.UserStatusReq) (res *system.UserStatusRes, err error) {
|
||||
err = service.SysUser().ChangeUserStatus(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// Delete 删除用户
|
||||
func (c *userController) Delete(ctx context.Context, req *system.UserDeleteReq) (res *system.UserDeleteRes, err error) {
|
||||
err = service.SysUser().Delete(ctx, req.Ids)
|
||||
return
|
||||
}
|
||||
|
||||
// GetUsers 通过用户id批量获取用户信息
|
||||
func (c *userController) GetUsers(ctx context.Context, req *system.UserGetByIdsReq) (res *system.UserGetByIdsRes, err error) {
|
||||
res = new(system.UserGetByIdsRes)
|
||||
res.List, err = service.SysUser().GetUsers(ctx, req.Ids)
|
||||
return
|
||||
}
|
||||
|
||||
func (c *userController) IsSuperAdmin(ctx context.Context, req *system.IsSuperAdminReq) (IsSuperAdminRes *system.IsSuperAdminRes, err error) {
|
||||
IsSuperAdminRes = new(system.IsSuperAdminRes)
|
||||
IsSuperAdminRes.IsSuperAdmin, err = service.SysUser().IsSuperAdmin(ctx, req)
|
||||
return
|
||||
}
|
||||
28
internal/app/system/controller/sys_user_online.go
Normal file
28
internal/app/system/controller/sys_user_online.go
Normal file
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* @desc:在线用户管理
|
||||
* @company:云南奇讯科技有限公司
|
||||
* @Author: yixiaohu<yxh669@qq.com>
|
||||
* @Date: 2023/1/10 17:23
|
||||
*/
|
||||
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/tiger1103/gfast/v3/api/v1/system"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/service"
|
||||
)
|
||||
|
||||
var UserOnline = new(SysUserOnlineController)
|
||||
|
||||
type SysUserOnlineController struct{}
|
||||
|
||||
func (c *SysUserOnlineController) List(ctx context.Context, req *system.SysUserOnlineSearchReq) (res *system.SysUserOnlineSearchRes, err error) {
|
||||
res, err = service.SysUserOnline().GetOnlineListPage(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
func (c *SysUserOnlineController) ForceLogout(ctx context.Context, req *system.SysUserOnlineForceLogoutReq) (res *system.SysUserOnlineForceLogoutRes, err error) {
|
||||
err = service.SysUserOnline().ForceLogout(ctx, req.Ids)
|
||||
return
|
||||
}
|
||||
57
internal/app/system/controller/tenant.go
Normal file
57
internal/app/system/controller/tenant.go
Normal file
@@ -0,0 +1,57 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/tiger1103/gfast/v3/api/v1/system"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/system/service"
|
||||
)
|
||||
|
||||
var (
|
||||
Tenant = tenantController{}
|
||||
)
|
||||
|
||||
type tenantController struct {
|
||||
BaseController
|
||||
}
|
||||
|
||||
// List 用户列表
|
||||
func (c *tenantController) List(ctx context.Context, req *system.TenantListReq) (res *system.TenantListRes, err error) {
|
||||
res, err = service.Tenant().GetTenantListSearch(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// Add 添加用户
|
||||
func (c *tenantController) Add(ctx context.Context, req *system.TenantAddReq) (res *system.TenantAddRes, err error) {
|
||||
err = service.Tenant().Add(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
// Edit 修改租户
|
||||
func (c *tenantController) Edit(ctx context.Context, req *system.TenantEditReq) (res *system.TenantEditRes, err error) {
|
||||
err = service.Tenant().Edit(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
func (c *tenantController) GetTenantDetailsByIds(ctx context.Context, req *system.GetTenantDetailsByIdsReq) (res *system.GetTenantDetailsByIdsRes, err error) {
|
||||
res, err = service.Tenant().GetTenantDetailsByIds(ctx, req)
|
||||
return
|
||||
}
|
||||
|
||||
func (c *tenantController) GetTenantDetails(ctx context.Context, req *system.GetTenantDetailsReq) (res *system.GetTenantDetailsRes, err error) {
|
||||
res = new(system.GetTenantDetailsRes)
|
||||
res.Tenant, err = service.Tenant().GetTenantDetails(ctx, req.TenantId)
|
||||
return
|
||||
}
|
||||
|
||||
func (c *tenantController) GetTenantAdminById(ctx context.Context, req *system.GetTenantDetailsReq) (res *system.GetTenantListRes, err error) {
|
||||
res = new(system.GetTenantListRes)
|
||||
res.List, err = service.Tenant().GetTenantAdminById(ctx, req.TenantId)
|
||||
return
|
||||
}
|
||||
|
||||
func (c *tenantController) GetTenantList(ctx context.Context, req *system.GetTenantListReq) (res *system.GetTenantListRes, err error) {
|
||||
res = new(system.GetTenantListRes)
|
||||
res.List, err = service.Tenant().GetTenantIdList(ctx, req)
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user