Răsfoiți Sursa

创建人 修改人列表显示为昵称

yxh 4 ani în urmă
părinte
comite
aac63222bd

+ 10 - 0
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

+ 6 - 0
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"`
+}

+ 1 - 0
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)

+ 75 - 0
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
+}

+ 1 - 0
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}}

+ 15 - 0
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}}

+ 76 - 16
template/vm/vue/list-vue.template

@@ -105,6 +105,10 @@
             <span>{{VueTag "{{"}} parseTime(scope.row.{{$column.HtmlField}}, '{y}-{m}-{d}') {{VueTag "}}"}}</span>
         </template>
       </el-table-column>
+      {{else if and (eq $column.IsList "1") (eq $column.HtmlField "createdBy")}}
+      <el-table-column label="{{$column.ColumnComment}}" align="center" prop="createdUser" />
+      {{else if and (eq $column.IsList "1") (eq $column.HtmlField "updatedBy")}}
+      <el-table-column label="{{$column.ColumnComment}}" align="center" prop="updatedUser" />
       {{else if and (eq $column.IsList "1") (eq $column.HtmlType "imagefile")}}
       <el-table-column align="center" label="缩略图" width="100">
       <template slot-scope="scope">
@@ -292,26 +296,12 @@
 </template>
 
 <script>
-import {
-    list{{.table.ClassName}},
-    get{{.table.ClassName}},
-    del{{.table.ClassName}},
-    add{{.table.ClassName}},
-    update{{.table.ClassName}},
-    {{range $index,$column:= .table.Columns}}
-    {{if and (HasSuffix $column.ColumnName "status") (eq $column.IsList "1") }}
-    change{{$.table.ClassName}}{{$column.GoField}},
-    {{end}}
-    {{if ne $column.LinkTableName ""}}
-    list{{$column.LinkTableClass}},
-    {{end}}
-    {{end}}
-} from "@/api/{{.table.ModuleName}}/{{$businessName}}";
 
 {{$tokenImp := false}}
 {{$imgsImp := false}}
 {{$editImp := false }}
 {{$fileImp := false}}
+{{$getUserList:=false}}
 
 {{range $index,$column:=.table.Columns}}
 {{if eq $column.HtmlType "richtext"}}
@@ -323,8 +313,30 @@ import {
 {{else if eq $column.HtmlType "file" "files"}}
 {{$fileImp = true}}
 {{end}}
+{{if eq $column.HtmlField "createdBy" "updatedBy"}}
+{{$getUserList = true}}
+{{end}}
 {{end}}
 
+import {
+    list{{.table.ClassName}},
+    get{{.table.ClassName}},
+    del{{.table.ClassName}},
+    add{{.table.ClassName}},
+    update{{.table.ClassName}},
+    {{range $index,$column:= .table.Columns}}
+    {{if and (HasSuffix $column.ColumnName "status") (eq $column.IsList "1") }}
+    change{{$.table.ClassName}}{{$column.GoField}},
+    {{end}}
+    {{if ne $column.LinkTableName ""}}
+    list{{$column.LinkTableClass}},
+    {{end}}
+    {{end}}
+    {{if $getUserList}}
+    getUserList,
+    {{end}}
+} from "@/api/{{.table.ModuleName}}/{{$businessName}}";
+
 {{if $editImp}}
 import Editor from "@/components/CKeditor";
 {{end}}
@@ -478,7 +490,55 @@ export default {
     getList() {
       this.loading = true;
       list{{.table.ClassName}}(this.queryParams).then(response => {
-        this.{{$businessName}}List = response.data.list;
+        let list = response.data.list;
+        {{$hasCreatedBy := false}}
+        {{$hasUpdatedBy := false}}
+        {{range $index,$column := .table.Columns}}
+        {{if and (eq $column.IsList "1") (eq $column.HtmlField "createdBy")}}
+        {{$hasCreatedBy = true}}
+        {{end}}
+        {{if and (eq $column.IsList "1") (eq $column.HtmlField "updatedBy")}}
+        {{$hasUpdatedBy = true}}
+        {{end}}
+        {{end}}
+        {{if or $hasCreatedBy $hasUpdatedBy}}
+        let listUid = [];
+        {{end}}
+        {{if and $hasCreatedBy $hasUpdatedBy}}
+        list.map(item=>{
+            listUid.push(item.createdBy,item.updatedBy)
+        });
+        {{else if $hasCreatedBy}}
+        listUid = list.map(item=>{
+            return item.createdBy
+        });
+        {{else if $hasUpdatedBy}}
+        listUid = list.map(item=>{
+            return item.updatedBy
+        });
+        {{end}}
+        {{if or $hasCreatedBy $hasUpdatedBy}}
+        getUserList(listUid).then(response =>{
+            let users = response.data||[]
+            list.map(item=>{
+                users.forEach(user=>{
+                    {{if $hasCreatedBy}}
+                    if(item.createdBy==user.id){
+                        item.createdUser = user.userNickname
+                    }
+                    {{end}}
+                    {{if $hasUpdatedBy}}
+                    if(item.updatedBy==user.id){
+                        item.updatedUser = user.userNickname
+                    }
+                    {{end}}
+                })
+            })
+            this.{{$businessName}}List = list;
+        })
+        {{else}}
+        this.{{$businessName}}List = list;
+        {{end}}
         this.total = response.data.total;
         this.loading = false;
       });

+ 78 - 18
template/vm/vue/tree-vue.template

@@ -113,6 +113,10 @@
             <span>{{VueTag "{{"}} parseTime(scope.row.{{$column.HtmlField}}, '{y}-{m}-{d}') {{VueTag "}}"}}</span>
         </template>
       </el-table-column>
+      {{else if and (eq $column.IsList "1") (eq $column.HtmlField "createdBy")}}
+      <el-table-column label="{{$column.ColumnComment}}" align="center" prop="createdUser" />
+      {{else if and (eq $column.IsList "1") (eq $column.HtmlField "updatedBy")}}
+      <el-table-column label="{{$column.ColumnComment}}" align="center" prop="updatedUser" />
       {{else if and (eq $column.IsList "1") (eq $column.HtmlType "imagefile")}}
       <el-table-column align="center" label="缩略图" width="100">
       <template slot-scope="scope">
@@ -296,28 +300,12 @@
 </template>
 
 <script>
-import {
-    list{{.table.ClassName}},
-    get{{.table.ClassName}},
-    del{{.table.ClassName}},
-    add{{.table.ClassName}},
-    update{{.table.ClassName}},
-    {{range $index,$column:= .table.Columns}}
-    {{if and (HasSuffix $column.ColumnName "status") (eq $column.IsList "1") }}
-    change{{$.table.ClassName}}{{$column.GoField}},
-    {{end}}
-    {{if ne $column.LinkTableName ""}}
-    list{{$column.LinkTableClass}},
-    {{end}}
-    {{end}}
-} from "@/api/{{.table.ModuleName}}/{{$businessName}}";
-import Treeselect from "@riophae/vue-treeselect";
-import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 
 {{$tokenImp := false}}
 {{$imgsImp := false}}
 {{$editImp := false }}
 {{$fileImp := false}}
+{{$getUserList:=false}}
 
 {{range $index,$column:=.table.Columns}}
 {{if eq $column.HtmlType "richtext"}}
@@ -329,8 +317,32 @@ import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 {{else if eq $column.HtmlType "file" "files"}}
 {{$fileImp = true}}
 {{end}}
+{{if eq $column.HtmlField "createdBy" "updatedBy"}}
+{{$getUserList = true}}
+{{end}}
 {{end}}
 
+import {
+    list{{.table.ClassName}},
+    get{{.table.ClassName}},
+    del{{.table.ClassName}},
+    add{{.table.ClassName}},
+    update{{.table.ClassName}},
+    {{range $index,$column:= .table.Columns}}
+    {{if and (HasSuffix $column.ColumnName "status") (eq $column.IsList "1") }}
+    change{{$.table.ClassName}}{{$column.GoField}},
+    {{end}}
+    {{if ne $column.LinkTableName ""}}
+    list{{$column.LinkTableClass}},
+    {{end}}
+    {{end}}
+    {{if $getUserList}}
+    getUserList,
+    {{end}}
+} from "@/api/{{.table.ModuleName}}/{{$businessName}}";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
 {{if $editImp}}
 import Editor from "@/components/CKeditor";
 {{end}}
@@ -488,7 +500,55 @@ export default {
     getList() {
       this.loading = true;
       list{{.table.ClassName}}(this.queryParams).then(response => {
-        this.{{$businessName}}List = this.handleTree(response.data.list||[], "{{$treeCode}}", "{{$treeParentCode}}");
+        let list = this.handleTree(response.data.list||[], "{{$treeCode}}", "{{$treeParentCode}}");
+        {{$hasCreatedBy := false}}
+        {{$hasUpdatedBy := false}}
+        {{range $index,$column := .table.Columns}}
+        {{if and (eq $column.IsList "1") (eq $column.HtmlField "createdBy")}}
+        {{$hasCreatedBy = true}}
+        {{end}}
+        {{if and (eq $column.IsList "1") (eq $column.HtmlField "updatedBy")}}
+        {{$hasUpdatedBy = true}}
+        {{end}}
+        {{end}}
+        {{if or $hasCreatedBy $hasUpdatedBy}}
+        let listUid = [];
+        {{end}}
+        {{if and $hasCreatedBy $hasUpdatedBy}}
+        list.map(item=>{
+            listUid.push(item.createdBy,item.updatedBy)
+        });
+        {{else if $hasCreatedBy}}
+        listUid = list.map(item=>{
+            return item.createdBy
+        });
+        {{else if $hasUpdatedBy}}
+        listUid = list.map(item=>{
+            return item.updatedBy
+        });
+        {{end}}
+        {{if or $hasCreatedBy $hasUpdatedBy}}
+        getUserList(listUid).then(response =>{
+            let users = response.data||[]
+            list.map(item=>{
+                users.forEach(user=>{
+                    {{if $hasCreatedBy}}
+                    if(item.createdBy==user.id){
+                        item.createdUser = user.userNickname
+                    }
+                    {{end}}
+                    {{if $hasUpdatedBy}}
+                    if(item.updatedBy==user.id){
+                        item.updatedUser = user.userNickname
+                    }
+                    {{end}}
+                })
+            })
+            this.{{$businessName}}List = list;
+        })
+        {{else}}
+        this.{{$businessName}}List = list;
+        {{end}}
         this.loading = false;
       });
     },