From aac63222bda173c8e76db693cd313f04d1951183 Mon Sep 17 00:00:00 2001 From: yxh Date: Tue, 17 Aug 2021 16:39:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E4=BA=BA=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BA=BA=E5=88=97=E8=A1=A8=E6=98=BE=E7=A4=BA=E4=B8=BA?= =?UTF-8?q?=E6=98=B5=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/system/api/sys_user.go | 10 ++++ app/system/model/sys_user.go | 6 ++ app/system/router/router.go | 1 + app/system/service/sys_user.go | 75 ++++++++++++++++++++++++ template/vm/go/dao.template | 1 + template/vm/js/api.template | 15 +++++ template/vm/vue/list-vue.template | 96 +++++++++++++++++++++++++------ template/vm/vue/tree-vue.template | 96 +++++++++++++++++++++++++------ 8 files changed, 264 insertions(+), 36 deletions(-) diff --git a/app/system/api/sys_user.go b/app/system/api/sys_user.go index 79c49df..53d7674 100644 --- a/app/system/api/sys_user.go +++ b/app/system/api/sys_user.go @@ -83,6 +83,16 @@ func (c *user) GetEditUser(r *ghttp.Request) { c.SusJsonExit(r, res) } +// 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) +} + // EditUser 编辑用户提交 func (c *user) EditUser(r *ghttp.Request) { var req *model.EditUserReq diff --git a/app/system/model/sys_user.go b/app/system/model/sys_user.go index f97eb55..24d36d1 100644 --- a/app/system/model/sys_user.go +++ b/app/system/model/sys_user.go @@ -112,3 +112,9 @@ type ProfileUpdatePwdReq struct { OldPassword string `p:"oldPassword" 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"` +} diff --git a/app/system/router/router.go b/app/system/router/router.go index 375a210..8f0939b 100644 --- a/app/system/router/router.go +++ b/app/system/router/router.go @@ -110,6 +110,7 @@ func init() { //用户管理 group.GET("userList", api.User.UserList) group.GET("userGet", api.User.Get) + group.GET("usersGet", api.User.UsersGet) group.POST("addUser", api.User.AddUser) group.GET("getEditUser", api.User.GetEditUser) group.PUT("editUser", api.User.EditUser) diff --git a/app/system/service/sys_user.go b/app/system/service/sys_user.go index 80874f7..d79cecf 100644 --- a/app/system/service/sys_user.go +++ b/app/system/service/sys_user.go @@ -18,6 +18,7 @@ import ( "github.com/gogf/gf/util/gconv" "github.com/gogf/gf/util/grand" "github.com/mssola/user_agent" + "reflect" ) type sysUser struct { @@ -773,3 +774,77 @@ func (s *sysUser) ProfileUpdatePwd(req *model.ProfileUpdatePwdReq) error { }) 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.ListStrAny + 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 +} diff --git a/template/vm/go/dao.template b/template/vm/go/dao.template index 94d7042..3ea026b 100644 --- a/template/vm/go/dao.template +++ b/template/vm/go/dao.template @@ -40,6 +40,7 @@ var ( // Fill with you ideas below. //// + // {{.table.ClassName}}SearchReq 分页请求参数 type {{.table.ClassName}}SearchReq struct { {{range $index, $column := .table.Columns}} diff --git a/template/vm/js/api.template b/template/vm/js/api.template index d54b40b..35aa87c 100644 --- a/template/vm/js/api.template +++ b/template/vm/js/api.template @@ -52,6 +52,7 @@ export function del{{.table.ClassName}}({{.table.PkColumn.HtmlField}}s) { } +{{$getUserList:=false}} {{range $index,$column:= .table.Columns}} {{if and (HasSuffix $column.ColumnName "status") (eq $column.IsList "1") }} @@ -78,4 +79,18 @@ export function list{{$column.LinkTableClass}}(query){ }) } {{end}} +{{if eq $column.HtmlField "createdBy" "updatedBy"}} +{{$getUserList = true}} +{{end}} +{{end}} + +{{if $getUserList}} +//获取用户信息列表 +export function getUserList(uIds){ + return request({ + url: '/system/auth/usersGet', + method: 'get', + params: {ids:uIds} + }) +} {{end}} \ No newline at end of file diff --git a/template/vm/vue/list-vue.template b/template/vm/vue/list-vue.template index ad07231..5612a7e 100644 --- a/template/vm/vue/list-vue.template +++ b/template/vm/vue/list-vue.template @@ -105,6 +105,10 @@ {{VueTag "{{"}} parseTime(scope.row.{{$column.HtmlField}}, '{y}-{m}-{d}') {{VueTag "}}"}} + {{else if and (eq $column.IsList "1") (eq $column.HtmlField "createdBy")}} + + {{else if and (eq $column.IsList "1") (eq $column.HtmlField "updatedBy")}} + {{else if and (eq $column.IsList "1") (eq $column.HtmlType "imagefile")}}