mirror of
https://github.com/tiger1103/gfast.git
synced 2026-09-21 18:20:47 +00:00
添加数据权限演示
This commit is contained in:
@@ -0,0 +1,102 @@
|
|||||||
|
// ==========================================================================
|
||||||
|
// GFast自动生成控制器相关代码,只生成一次,按需修改,再次生成不会覆盖.
|
||||||
|
// 生成日期:2022-03-03 10:11:15
|
||||||
|
// 生成路径: gfast/app/demo/api/demo_data_auth.go
|
||||||
|
// 生成人:gfast
|
||||||
|
// ==========================================================================
|
||||||
|
|
||||||
|
package api
|
||||||
|
|
||||||
|
import (
|
||||||
|
"gfast/app/demo/dao"
|
||||||
|
"gfast/app/demo/model"
|
||||||
|
"gfast/app/demo/service"
|
||||||
|
sysApi "gfast/app/system/api"
|
||||||
|
systemService "gfast/app/system/service"
|
||||||
|
"github.com/gogf/gf/frame/g"
|
||||||
|
"github.com/gogf/gf/net/ghttp"
|
||||||
|
"github.com/gogf/gf/util/gvalid"
|
||||||
|
)
|
||||||
|
|
||||||
|
type demoDataAuth struct {
|
||||||
|
sysApi.SystemBase
|
||||||
|
}
|
||||||
|
|
||||||
|
var DemoDataAuth = new(demoDataAuth)
|
||||||
|
|
||||||
|
// List 列表
|
||||||
|
func (c *demoDataAuth) List(r *ghttp.Request) {
|
||||||
|
var req *dao.DemoDataAuthSearchReq
|
||||||
|
//获取参数
|
||||||
|
if err := r.Parse(&req); err != nil {
|
||||||
|
c.FailJsonExit(r, err.(gvalid.Error).FirstString())
|
||||||
|
}
|
||||||
|
req.Ctx = r.GetCtx()
|
||||||
|
userInfo := c.GetCurrentUser(req.Ctx)
|
||||||
|
where, err := systemService.SysUser.GetDataWhere(userInfo, &model.DemoDataAuth{})
|
||||||
|
if err != nil {
|
||||||
|
c.FailJsonExit(r, err.Error())
|
||||||
|
}
|
||||||
|
total, page, list, err := service.DemoDataAuth.GetList(req, where)
|
||||||
|
if err != nil {
|
||||||
|
c.FailJsonExit(r, err.Error())
|
||||||
|
}
|
||||||
|
result := g.Map{
|
||||||
|
"currentPage": page,
|
||||||
|
"total": total,
|
||||||
|
"list": list,
|
||||||
|
}
|
||||||
|
c.SusJsonExit(r, result)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add 添加
|
||||||
|
func (c *demoDataAuth) Add(r *ghttp.Request) {
|
||||||
|
var req *dao.DemoDataAuthAddReq
|
||||||
|
//获取参数
|
||||||
|
err := r.Parse(&req)
|
||||||
|
if err != nil {
|
||||||
|
c.FailJsonExit(r, err.(gvalid.Error).FirstString())
|
||||||
|
}
|
||||||
|
req.CreatedBy = c.GetCurrentUser(r.GetCtx()).GetUserId()
|
||||||
|
err = service.DemoDataAuth.Add(r.GetCtx(), req)
|
||||||
|
if err != nil {
|
||||||
|
c.FailJsonExit(r, err.Error())
|
||||||
|
}
|
||||||
|
c.SusJsonExit(r, "添加成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get 获取
|
||||||
|
func (c *demoDataAuth) Get(r *ghttp.Request) {
|
||||||
|
id := r.GetUint("id")
|
||||||
|
info, err := service.DemoDataAuth.GetInfoById(r.GetCtx(), id)
|
||||||
|
if err != nil {
|
||||||
|
c.FailJsonExit(r, err.Error())
|
||||||
|
}
|
||||||
|
c.SusJsonExit(r, info)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Edit 修改
|
||||||
|
func (c *demoDataAuth) Edit(r *ghttp.Request) {
|
||||||
|
var req *dao.DemoDataAuthEditReq
|
||||||
|
//获取参数
|
||||||
|
err := r.Parse(&req)
|
||||||
|
if err != nil {
|
||||||
|
c.FailJsonExit(r, err.(gvalid.Error).FirstString())
|
||||||
|
}
|
||||||
|
req.UpdatedBy = c.GetCurrentUser(r.GetCtx()).GetUserId() //获取登陆用户id
|
||||||
|
err = service.DemoDataAuth.Edit(r.GetCtx(), req)
|
||||||
|
if err != nil {
|
||||||
|
c.FailJsonExit(r, err.Error())
|
||||||
|
}
|
||||||
|
c.SusJsonExit(r, "修改成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete 删除
|
||||||
|
func (c *demoDataAuth) Delete(r *ghttp.Request) {
|
||||||
|
ids := r.GetInts("ids")
|
||||||
|
err := service.DemoDataAuth.DeleteByIds(r.GetCtx(), ids)
|
||||||
|
if err != nil {
|
||||||
|
c.FailJsonExit(r, err.Error())
|
||||||
|
}
|
||||||
|
c.SusJsonExit(r, "删除成功")
|
||||||
|
}
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
// ==========================================================================
|
||||||
|
// GFast自动生成dao操作代码,无需手动修改,重新生成不会自动覆盖.
|
||||||
|
// 生成日期:2022-03-03 10:11:15
|
||||||
|
// 生成路径: gfast/app/demo/dao/demo_data_auth.go
|
||||||
|
// 生成人:gfast
|
||||||
|
// ==========================================================================
|
||||||
|
|
||||||
|
package dao
|
||||||
|
|
||||||
|
import (
|
||||||
|
comModel "gfast/app/common/model"
|
||||||
|
"gfast/app/demo/dao/internal"
|
||||||
|
"github.com/gogf/gf/os/gtime"
|
||||||
|
)
|
||||||
|
|
||||||
|
// demoDataAuthDao is the manager for logic model data accessing and custom defined data operations functions management.
|
||||||
|
// You can define custom methods on it to extend its functionality as you wish.
|
||||||
|
type demoDataAuthDao struct {
|
||||||
|
*internal.DemoDataAuthDao
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
// DemoDataAuth is globally public accessible object for table tools_gen_table operations.
|
||||||
|
DemoDataAuth = demoDataAuthDao{
|
||||||
|
internal.NewDemoDataAuthDao(),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// Fill with you ideas below.
|
||||||
|
|
||||||
|
// DemoDataAuthSearchReq 分页请求参数
|
||||||
|
type DemoDataAuthSearchReq struct {
|
||||||
|
Id string `p:"id" v:"id@integer#ID需为整数"` //ID
|
||||||
|
Title string `p:"title"` //标题
|
||||||
|
CreatedBy string `p:"createdBy" v:"createdBy@integer#创建人需为整数"` //创建人
|
||||||
|
CreatedAt string `p:"createdAt" v:"createdAt@datetime#创建时间需为YYYY-MM-DD hh:mm:ss格式"` //创建时间
|
||||||
|
comModel.PageReq
|
||||||
|
}
|
||||||
|
|
||||||
|
// DemoDataAuthAddReq 添加操作请求参数
|
||||||
|
type DemoDataAuthAddReq struct {
|
||||||
|
Title string `p:"title" v:"required#标题不能为空"`
|
||||||
|
CreatedBy uint64
|
||||||
|
}
|
||||||
|
|
||||||
|
// DemoDataAuthEditReq 修改操作请求参数
|
||||||
|
type DemoDataAuthEditReq struct {
|
||||||
|
Id uint `p:"id" v:"required#主键ID不能为空"`
|
||||||
|
Title string `p:"title" v:"required#标题不能为空"`
|
||||||
|
UpdatedBy uint64
|
||||||
|
}
|
||||||
|
|
||||||
|
// DemoDataAuthListRes 列表返回结果
|
||||||
|
type DemoDataAuthListRes struct {
|
||||||
|
Id uint `json:"id"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
CreatedBy uint `json:"createdBy"`
|
||||||
|
CreatedAt *gtime.Time `json:"createdAt"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// DemoDataAuthInfoRes 数据返回结果
|
||||||
|
type DemoDataAuthInfoRes struct {
|
||||||
|
Id uint `json:"id"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
CreatedBy uint `json:"createdBy"`
|
||||||
|
UpdatedBy uint `json:"updatedBy"`
|
||||||
|
CreatedAt *gtime.Time `json:"createdAt"`
|
||||||
|
UpdatedAt *gtime.Time `json:"updatedAt"`
|
||||||
|
DeletedAt *gtime.Time `json:"deletedAt"`
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
// ==========================================================================
|
||||||
|
// GFast自动生成dao internal操作代码,无需手动修改,重新生成会自动覆盖.
|
||||||
|
// 生成日期:2022-03-03 10:11:15
|
||||||
|
// 生成路径: gfast/app/demo/dao/internal/demo_data_auth.go
|
||||||
|
// 生成人:gfast
|
||||||
|
// ==========================================================================
|
||||||
|
|
||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"gfast/app/demo/model"
|
||||||
|
"github.com/gogf/gf/database/gdb"
|
||||||
|
"github.com/gogf/gf/frame/g"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DemoDataAuthDao is the manager for logic model data accessing and custom defined data operations functions management.
|
||||||
|
type DemoDataAuthDao struct {
|
||||||
|
Table string // Table is the underlying table name of the DAO.
|
||||||
|
Group string // Group is the database configuration group name of current DAO.
|
||||||
|
Columns DemoDataAuthColumns // Columns is the short type for Columns, which contains all the column names of Table for convenient usage.
|
||||||
|
}
|
||||||
|
|
||||||
|
// DemoDataAuthColumns defines and stores column names for table demo_data_auth.
|
||||||
|
type DemoDataAuthColumns struct {
|
||||||
|
Id string // ID
|
||||||
|
Title string // 标题
|
||||||
|
CreatedBy string // 创建人
|
||||||
|
UpdatedBy string // 修改人
|
||||||
|
CreatedAt string // 创建时间
|
||||||
|
UpdatedAt string // 修改时间
|
||||||
|
DeletedAt string // 删除时间
|
||||||
|
}
|
||||||
|
|
||||||
|
var demoDataAuthColumns = DemoDataAuthColumns{
|
||||||
|
Id: "id",
|
||||||
|
Title: "title",
|
||||||
|
CreatedBy: "created_by",
|
||||||
|
UpdatedBy: "updated_by",
|
||||||
|
CreatedAt: "created_at",
|
||||||
|
UpdatedAt: "updated_at",
|
||||||
|
DeletedAt: "deleted_at",
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewDemoDataAuthDao creates and returns a new DAO object for table data access.
|
||||||
|
func NewDemoDataAuthDao() *DemoDataAuthDao {
|
||||||
|
return &DemoDataAuthDao{
|
||||||
|
Group: "default",
|
||||||
|
Table: "demo_data_auth",
|
||||||
|
Columns: demoDataAuthColumns,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DB retrieves and returns the underlying raw database management object of current DAO.
|
||||||
|
func (dao *DemoDataAuthDao) DB() gdb.DB {
|
||||||
|
return g.DB(dao.Group)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ctx creates and returns the Model for current DAO, It automatically sets the context for current operation.
|
||||||
|
func (dao *DemoDataAuthDao) Ctx(ctx context.Context) *gdb.Model {
|
||||||
|
return dao.DB().Model(model.DemoDataAuth{}).Safe().Ctx(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transaction wraps the transaction logic using function f.
|
||||||
|
// It rollbacks the transaction and returns the error from function f if it returns non-nil error.
|
||||||
|
// It commits the transaction and returns nil if function f returns nil.
|
||||||
|
//
|
||||||
|
// Note that, you should not Commit or Rollback the transaction in function f
|
||||||
|
// as it is automatically handled by this function.
|
||||||
|
func (dao *DemoDataAuthDao) Transaction(ctx context.Context, f func(ctx context.Context, tx *gdb.TX) error) (err error) {
|
||||||
|
return dao.Ctx(ctx).Transaction(ctx, f)
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
// ==========================================================================
|
||||||
|
// GFast自动生成model代码,无需手动修改,重新生成会自动覆盖.
|
||||||
|
// 生成日期:2022-03-03 10:11:15
|
||||||
|
// 生成路径: gfast/app/demo/model/demo_data_auth.go
|
||||||
|
// 生成人:gfast
|
||||||
|
// ==========================================================================
|
||||||
|
|
||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/gogf/gf/os/gtime"
|
||||||
|
"github.com/gogf/gf/util/gmeta"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DemoDataAuth is the golang structure for table demo_data_auth.
|
||||||
|
type DemoDataAuth struct {
|
||||||
|
gmeta.Meta `orm:"table:demo_data_auth"`
|
||||||
|
Id uint `orm:"id,primary" json:"id"` // ID
|
||||||
|
Title string `orm:"title" json:"title"` // 标题
|
||||||
|
CreatedBy uint `orm:"created_by" json:"createdBy"` // 创建人
|
||||||
|
UpdatedBy uint `orm:"updated_by" json:"updatedBy"` // 修改人
|
||||||
|
CreatedAt *gtime.Time `orm:"created_at" json:"createdAt"` // 创建时间
|
||||||
|
UpdatedAt *gtime.Time `orm:"updated_at" json:"updatedAt"` // 修改时间
|
||||||
|
DeletedAt *gtime.Time `orm:"deleted_at" json:"deletedAt"` // 删除时间
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
// ==========================================================================
|
||||||
|
// GFast自动生成路由代码,只生成一次,按需修改,再次生成不会覆盖.
|
||||||
|
// 生成日期:2022-03-03 10:11:15
|
||||||
|
// 生成路径: gfast/app/demo/router/demo_data_auth.go
|
||||||
|
// 生成人:gfast
|
||||||
|
// ==========================================================================
|
||||||
|
|
||||||
|
package router
|
||||||
|
|
||||||
|
import (
|
||||||
|
"gfast/app/demo/api"
|
||||||
|
sysApi "gfast/app/system/api"
|
||||||
|
"gfast/middleware"
|
||||||
|
"github.com/gogf/gf/frame/g"
|
||||||
|
"github.com/gogf/gf/net/ghttp"
|
||||||
|
)
|
||||||
|
|
||||||
|
//加载路由
|
||||||
|
func init() {
|
||||||
|
s := g.Server()
|
||||||
|
s.Group("/", func(group *ghttp.RouterGroup) {
|
||||||
|
group.Group("/demo", func(group *ghttp.RouterGroup) {
|
||||||
|
group.Group("/demoDataAuth", func(group *ghttp.RouterGroup) {
|
||||||
|
//gToken拦截器
|
||||||
|
sysApi.GfToken.AuthMiddleware(group)
|
||||||
|
//context拦截器
|
||||||
|
group.Middleware(middleware.Ctx, middleware.Auth)
|
||||||
|
//后台操作日志记录
|
||||||
|
group.Hook("/*", ghttp.HookAfterOutput, sysApi.SysOperLog.OperationLog)
|
||||||
|
group.GET("list", api.DemoDataAuth.List)
|
||||||
|
group.GET("get", api.DemoDataAuth.Get)
|
||||||
|
group.POST("add", api.DemoDataAuth.Add)
|
||||||
|
group.PUT("edit", api.DemoDataAuth.Edit)
|
||||||
|
group.DELETE("delete", api.DemoDataAuth.Delete)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
// ==========================================================================
|
||||||
|
// GFast自动生成业务逻辑层相关代码,只生成一次,按需修改,再次生成不会覆盖.
|
||||||
|
// 生成日期:2022-03-03 10:11:15
|
||||||
|
// 生成路径: gfast/app/demo/service/demo_data_auth.go
|
||||||
|
// 生成人:gfast
|
||||||
|
// ==========================================================================
|
||||||
|
|
||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
comModel "gfast/app/common/model"
|
||||||
|
"gfast/app/demo/dao"
|
||||||
|
"gfast/app/demo/model"
|
||||||
|
"github.com/gogf/gf/errors/gerror"
|
||||||
|
"github.com/gogf/gf/frame/g"
|
||||||
|
"github.com/gogf/gf/util/gconv"
|
||||||
|
)
|
||||||
|
|
||||||
|
type demoDataAuth struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
var DemoDataAuth = new(demoDataAuth)
|
||||||
|
|
||||||
|
// GetList 获取列表
|
||||||
|
func (s *demoDataAuth) GetList(req *dao.DemoDataAuthSearchReq, where ...g.Map) (total, page int, list []*dao.DemoDataAuthListRes, err error) {
|
||||||
|
m := dao.DemoDataAuth.Ctx(req.Ctx).WithAll().As("demo").
|
||||||
|
Unscoped().
|
||||||
|
LeftJoin("sys_user user", "demo.created_by=user.id").
|
||||||
|
Where("demo.deleted_at is null")
|
||||||
|
if req.Id != "" {
|
||||||
|
m = m.Where("demo."+dao.DemoDataAuth.Columns.Id+" = ?", gconv.Uint(req.Id))
|
||||||
|
}
|
||||||
|
if req.Title != "" {
|
||||||
|
m = m.Where("demo."+dao.DemoDataAuth.Columns.Title+" = ?", req.Title)
|
||||||
|
}
|
||||||
|
if req.CreatedBy != "" {
|
||||||
|
m = m.Where("demo."+dao.DemoDataAuth.Columns.CreatedBy+" = ?", gconv.Uint(req.CreatedBy))
|
||||||
|
}
|
||||||
|
if req.BeginTime != "" {
|
||||||
|
m = m.Where("demo."+dao.DemoDataAuth.Columns.CreatedAt+" >=", req.BeginTime)
|
||||||
|
}
|
||||||
|
if req.EndTime != "" {
|
||||||
|
m = m.Where("demo."+dao.DemoDataAuth.Columns.CreatedAt+" <", req.EndTime)
|
||||||
|
}
|
||||||
|
if len(where) > 0 {
|
||||||
|
m = m.Where(where[0])
|
||||||
|
}
|
||||||
|
total, err = m.Count()
|
||||||
|
if err != nil {
|
||||||
|
g.Log().Error(err)
|
||||||
|
err = gerror.New("获取总行数失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if req.PageNum == 0 {
|
||||||
|
req.PageNum = 1
|
||||||
|
}
|
||||||
|
page = req.PageNum
|
||||||
|
if req.PageSize == 0 {
|
||||||
|
req.PageSize = comModel.PageSize
|
||||||
|
}
|
||||||
|
order := "demo.id asc"
|
||||||
|
if req.OrderBy != "" {
|
||||||
|
order = req.OrderBy
|
||||||
|
}
|
||||||
|
var res []*model.DemoDataAuth
|
||||||
|
err = m.Fields("demo.*").Page(page, req.PageSize).Order(order).Scan(&res)
|
||||||
|
if err != nil {
|
||||||
|
g.Log().Error(err)
|
||||||
|
err = gerror.New("获取数据失败")
|
||||||
|
}
|
||||||
|
list = make([]*dao.DemoDataAuthListRes, len(res))
|
||||||
|
for k, v := range res {
|
||||||
|
list[k] = &dao.DemoDataAuthListRes{
|
||||||
|
Id: v.Id,
|
||||||
|
Title: v.Title,
|
||||||
|
CreatedBy: v.CreatedBy,
|
||||||
|
CreatedAt: v.CreatedAt,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetInfoById 通过id获取
|
||||||
|
func (s *demoDataAuth) GetInfoById(ctx context.Context, id uint) (info *dao.DemoDataAuthInfoRes, err error) {
|
||||||
|
if id == 0 {
|
||||||
|
err = gerror.New("参数错误")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var data *model.DemoDataAuth
|
||||||
|
err = dao.DemoDataAuth.Ctx(ctx).WithAll().Where(dao.DemoDataAuth.Columns.Id, id).Scan(&data)
|
||||||
|
if err != nil {
|
||||||
|
g.Log().Error(err)
|
||||||
|
}
|
||||||
|
if data == nil || err != nil {
|
||||||
|
err = gerror.New("获取信息失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
info = &dao.DemoDataAuthInfoRes{
|
||||||
|
Id: data.Id,
|
||||||
|
Title: data.Title,
|
||||||
|
CreatedBy: data.CreatedBy,
|
||||||
|
UpdatedBy: data.UpdatedBy,
|
||||||
|
CreatedAt: data.CreatedAt,
|
||||||
|
UpdatedAt: data.UpdatedAt,
|
||||||
|
DeletedAt: data.DeletedAt,
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add 添加
|
||||||
|
func (s *demoDataAuth) Add(ctx context.Context, req *dao.DemoDataAuthAddReq) (err error) {
|
||||||
|
_, err = dao.DemoDataAuth.Ctx(ctx).Insert(req)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Edit 修改
|
||||||
|
func (s *demoDataAuth) Edit(ctx context.Context, req *dao.DemoDataAuthEditReq) error {
|
||||||
|
_, err := dao.DemoDataAuth.Ctx(ctx).FieldsEx(dao.DemoDataAuth.Columns.Id, dao.DemoDataAuth.Columns.CreatedAt).Where(dao.DemoDataAuth.Columns.Id, req.Id).
|
||||||
|
Update(req)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteByIds 删除
|
||||||
|
func (s *demoDataAuth) DeleteByIds(ctx context.Context, ids []int) (err error) {
|
||||||
|
if len(ids) == 0 {
|
||||||
|
err = gerror.New("参数错误")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, err = dao.DemoDataAuth.Ctx(ctx).Delete(dao.DemoDataAuth.Columns.Id+" in (?)", ids)
|
||||||
|
if err != nil {
|
||||||
|
g.Log().Error(err)
|
||||||
|
err = gerror.New("删除失败")
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
@@ -103,6 +103,16 @@ func (c *user) EditUser(r *ghttp.Request) {
|
|||||||
c.SusJsonExit(r, "修改管理员成功")
|
c.SusJsonExit(r, "修改管理员成功")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UsersGet 获取用户信息列表
|
||||||
|
func (c *user) UsersGet(r *ghttp.Request) {
|
||||||
|
ids := r.GetInts("ids")
|
||||||
|
res, err := service.SysUser.GetUsers(ids)
|
||||||
|
if err != nil {
|
||||||
|
c.FailJsonExit(r, err.Error())
|
||||||
|
}
|
||||||
|
c.SusJsonExit(r, res)
|
||||||
|
}
|
||||||
|
|
||||||
// GetInfo 获取登陆用户信息
|
// GetInfo 获取登陆用户信息
|
||||||
func (c *user) GetInfo(r *ghttp.Request) {
|
func (c *user) GetInfo(r *ghttp.Request) {
|
||||||
userInfo := c.GetCurrentUser(r.Context())
|
userInfo := c.GetCurrentUser(r.Context())
|
||||||
|
|||||||
@@ -112,3 +112,9 @@ type ProfileUpdatePwdReq struct {
|
|||||||
OldPassword string `p:"oldPassword" v:"required#旧密码不能为空"`
|
OldPassword string `p:"oldPassword" v:"required#旧密码不能为空"`
|
||||||
NewPassword string `p:"newPassword" v:"required#新密码不能为空"`
|
NewPassword string `p:"newPassword" v:"required#新密码不能为空"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SysUserRes 用于查询用户信息对象
|
||||||
|
type SysUserRes struct {
|
||||||
|
Id uint64 `json:"id" orm:"id"`
|
||||||
|
UserNickname string `json:"userNickname" orm:"user_nickname"`
|
||||||
|
}
|
||||||
|
|||||||
@@ -115,6 +115,7 @@ func init() {
|
|||||||
//用户管理
|
//用户管理
|
||||||
group.GET("userList", api.User.UserList)
|
group.GET("userList", api.User.UserList)
|
||||||
group.GET("userGet", api.User.Get)
|
group.GET("userGet", api.User.Get)
|
||||||
|
group.GET("usersGet", api.User.UsersGet)
|
||||||
group.POST("addUser", api.User.AddUser)
|
group.POST("addUser", api.User.AddUser)
|
||||||
group.GET("getEditUser", api.User.GetEditUser)
|
group.GET("getEditUser", api.User.GetEditUser)
|
||||||
group.PUT("editUser", api.User.EditUser)
|
group.PUT("editUser", api.User.EditUser)
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import (
|
|||||||
"github.com/gogf/gf/util/gconv"
|
"github.com/gogf/gf/util/gconv"
|
||||||
"github.com/gogf/gf/util/grand"
|
"github.com/gogf/gf/util/grand"
|
||||||
"github.com/mssola/user_agent"
|
"github.com/mssola/user_agent"
|
||||||
|
"reflect"
|
||||||
)
|
)
|
||||||
|
|
||||||
type sysUser struct {
|
type sysUser struct {
|
||||||
@@ -773,3 +774,77 @@ func (s *sysUser) ProfileUpdatePwd(req *model.ProfileUpdatePwdReq) error {
|
|||||||
})
|
})
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetDataWhere 获取数据权限判断条件
|
||||||
|
func (s *sysUser) GetDataWhere(userInfo *dao.CtxUser, entity interface{}) (where g.Map, err error) {
|
||||||
|
t := reflect.TypeOf(entity)
|
||||||
|
for i := 0; i < t.Elem().NumField(); i++ {
|
||||||
|
if t.Elem().Field(i).Name == "CreatedBy" {
|
||||||
|
//若存在用户id的字段,则生成判断数据权限的条件
|
||||||
|
//1、获取当前用户所属角色
|
||||||
|
allRoles := ([]*model.SysRole)(nil)
|
||||||
|
allRoles, err = SysRole.GetRoleList()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
roles := ([]*model.SysRole)(nil)
|
||||||
|
roles, err = s.GetAdminRole(userInfo.Id, allRoles)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
//2获取角色对应数据权限
|
||||||
|
deptIdArr := gset.New()
|
||||||
|
for _, role := range roles {
|
||||||
|
switch role.DataScope {
|
||||||
|
case 1: //全部数据权限
|
||||||
|
return
|
||||||
|
case 2: //自定数据权限
|
||||||
|
var deptIds []int64
|
||||||
|
deptIds, err = Dept.GetRoleDepts(gconv.Int64(role.Id))
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
deptIdArr.Add(gconv.Interfaces(deptIds)...)
|
||||||
|
case 3: //本部门数据权限
|
||||||
|
deptIdArr.Add(gconv.Int64(userInfo.DeptId))
|
||||||
|
case 4: //本部门及以下数据权限
|
||||||
|
deptIdArr.Add(gconv.Int64(userInfo.DeptId))
|
||||||
|
//获取正常状态部门数据
|
||||||
|
depts := ([]*model.SysDept)(nil)
|
||||||
|
depts, err = Dept.GetList(&dao.SysDeptSearchParams{Status: "1"})
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var dList g.List
|
||||||
|
for _, d := range depts {
|
||||||
|
m := g.Map{
|
||||||
|
"id": d.DeptId,
|
||||||
|
"pid": d.ParentId,
|
||||||
|
"label": d.DeptName,
|
||||||
|
}
|
||||||
|
dList = append(dList, m)
|
||||||
|
}
|
||||||
|
l := library.FindSonByParentId(dList, gconv.Int(userInfo.DeptId), "pid", "id")
|
||||||
|
for _, li := range l {
|
||||||
|
deptIdArr.Add(gconv.Int64(li["id"]))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if deptIdArr.Size() > 0 {
|
||||||
|
where = g.Map{"user.dept_id": deptIdArr.Slice()}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetUsers 通过用户ids查询多个用户信息
|
||||||
|
func (s *sysUser) GetUsers(ids []int) (users []*model.SysUserRes, err error) {
|
||||||
|
if len(ids) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
idsSet := gset.NewIntSetFrom(ids).Slice()
|
||||||
|
err = dao.SysUser.Where(dao.SysUser.Columns.Id+" in(?)", idsSet).Fields(model.SysUserRes{}).
|
||||||
|
Order(dao.SysUser.Columns.Id + " ASC").Scan(&users)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
package router
|
||||||
|
|
||||||
|
import _ "gfast/app/demo/router"
|
||||||
Reference in New Issue
Block a user