From 2a1aa6826c52783ed10a3cf92afbe32de175ea9d Mon Sep 17 00:00:00 2001 From: henry Date: Fri, 12 Nov 2021 15:01:49 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E5=AE=8C=E5=96=84=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/role.go | 12 ++++++--- app/api/user.go | 1 + app/common/model/model.go | 9 ++++++- app/common/model/sys_user.go | 2 +- app/controller/user/instance.go | 43 +++++++++++++++------------------ 5 files changed, 38 insertions(+), 29 deletions(-) diff --git a/app/api/role.go b/app/api/role.go index 9693742..ccf4cd0 100644 --- a/app/api/role.go +++ b/app/api/role.go @@ -9,12 +9,18 @@ import ( type Role struct{} type roleForm struct { - ParentID uint64 `json:"parent_id" form:"parent_id"` + ParentID string `json:"parent_id" form:"parent_id"` Name string `json:"name" form:"name" binding:"required"` Remark string `json:"remark" form:"remark" binding:"required"` Sort int `json:"sort" form:"sort"` } +func (this *roleForm) parentInfo() uint64 { + obj := new(IDStringForm) + obj.ID = this.ParentID + return obj.Convert() +} + /** * @apiDefine Role 角色管理 */ @@ -66,7 +72,7 @@ func (a *Role) Add(c *gin.Context) { return } err := role.NewInstance()(getSession()(c).(*service.Session)).Form(&role.InstanceParams{ - ParentID: form.ParentID, Name: form.Name, Remark: form.Remark, Sort: form.Sort, + ParentID: form.parentInfo(), Name: form.Name, Remark: form.Remark, Sort: form.Sort, }) APIResponse(err)(c) } @@ -81,7 +87,7 @@ func (a *Role) Edit(c *gin.Context) { return } err := role.NewInstance()(getSession()(c).(*service.Session)).Form(&role.InstanceParams{ - ID: form.Convert(), ParentID: form.ParentID, Name: form.Name, Remark: form.Remark, Sort: form.Sort, + ID: form.Convert(), ParentID: form.parentInfo(), Name: form.Name, Remark: form.Remark, Sort: form.Sort, }) APIResponse(err)(c) } diff --git a/app/api/user.go b/app/api/user.go index 3164dea..0d7f1b9 100644 --- a/app/api/user.go +++ b/app/api/user.go @@ -165,6 +165,7 @@ func (*User) List(c *gin.Context) { func (*User) Detail(c *gin.Context) { form := new(IDStringForm) + if err := bind(form)(c); err != nil { APIFailure(err.(error))(c) return diff --git a/app/common/model/model.go b/app/common/model/model.go index e2cd4a2..4b185a0 100644 --- a/app/common/model/model.go +++ b/app/common/model/model.go @@ -28,7 +28,7 @@ type Model struct { // ModelTenant type ModelTenant struct { - TenantID uint64 `gorm:"column:tenant_id;index:idx_sys_tenant_id;type:int(11);default:0;comment:租户ID" json:"tenant_id"` + TenantID uint64 `gorm:"column:tenant_id;index:idx_sys_tenant_id;type:int(11);default:0;comment:租户ID" json:"-"` } // ModelDeleted @@ -73,6 +73,13 @@ func (m *Model) GetEncodeID() string { return utils.HASHIDEncode(int(m.ID)) } +func (m *ModelTenant) GetEncodeTenantID() string { + if m.TenantID <= 0 { + return "" + } + return utils.HASHIDEncode(int(m.TenantID)) +} + func (m *Model) SetDatabase(database string, key ...string) { m.Database = database + "_" + strings.Join(key, "_") } diff --git a/app/common/model/sys_user.go b/app/common/model/sys_user.go index 8a4c02c..0e66951 100644 --- a/app/common/model/sys_user.go +++ b/app/common/model/sys_user.go @@ -11,7 +11,7 @@ type SysUser struct { Model ModelTenant UUID uint64 `gorm:"column:uuid;uniqueIndex:idx_sys_user_uuid;type:int;default:0;comment:用户唯一UUID" json:"-"` - Account string `gorm:"column:account;type:varchar(50);default:null;comment:账户名" json:"account"` + Account string `gorm:"column:account;index:idx_sys_user_account;type:varchar(50);default:null;comment:登陆账号" json:"account"` Avatar string `gorm:"column:avatar;type:varchar(255);default:null;comment:头像" json:"avatar"` Name string `gorm:"column:name;type:varchar(20);default:null;comment:真实姓名" json:"name"` Mobile string `gorm:"column:mobile;index:idx_sys_user_mobile;type:varchar(15);default:null;comment:联系方式" json:"mobile"` diff --git a/app/controller/user/instance.go b/app/controller/user/instance.go index 1a405d8..0fd529a 100644 --- a/app/controller/user/instance.go +++ b/app/controller/user/instance.go @@ -7,7 +7,6 @@ import ( "ArmedPolice/app/service" "ArmedPolice/config" "ArmedPolice/serve/orm" - "ArmedPolice/utils" "errors" "gorm.io/gorm" "time" @@ -33,12 +32,8 @@ type ( InstanceDetailInfo struct { ID string `json:"id"` *model2.SysUser - Roles []*InstanceRoleInfo `json:"roles"` - } - // InstanceRoleInfo 角色信息 - InstanceRoleInfo struct { - ID string `json:"id"` - *model.SysUserRoleInfo + TenantID string `json:"tenant_id"` + RoleIDs []string `json:"role_ids"` } // InstanceParams 参数信息 InstanceParams struct { @@ -64,7 +59,6 @@ func (c *InstanceParams) roleHandle(tx *gorm.DB, uid uint64) error { return err } roles := make([]*model2.SysUserRole, 0) - obj := make([]string, 0) mark := make(map[uint64]uint64, 0) @@ -72,8 +66,6 @@ func (c *InstanceParams) roleHandle(tx *gorm.DB, uid uint64) error { if _, has := mark[v]; has { continue } - obj = append(obj, utils.UintToString(v)) - roles = append(roles, &model2.SysUserRole{ UID: uid, RoleID: v, }) @@ -129,7 +121,7 @@ func (c *Instance) List(name, mobile string, tenantID uint64, page, pageSize int } var count int64 - out, err := mSysUser.Users(page, pageSize, &count) + out, err := mSysUser.Users(page, pageSize, &count, where...) if err != nil { return nil, err @@ -152,12 +144,14 @@ func (*Instance) Detail(id uint64) (*InstanceDetailInfo, error) { mSysUser := model.NewSysUser() mSysUser.ID = id - isExist, err := model2.FirstWhere(mSysUser.SysUser) - + isExist, err := model2.FirstField(mSysUser.SysUser, []string{ + "id", "tenant_id", "uuid", "account", "name", "avatar", "gender", "mobile", + "email", "remark", "status", "created_at", + }) if err != nil { return nil, err } else if !isExist { - return nil, err + return nil, errors.New("操作错误,用户信息不存在或已被删除") } mSysUserRole := model.NewSysUserRole() @@ -166,17 +160,18 @@ func (*Instance) Detail(id uint64) (*InstanceDetailInfo, error) { if roles, err = mSysUserRole.Roles(mSysUser.UUID); err != nil { return nil, err } + mModel := &model2.Image{Image: mSysUser.Avatar} + mSysUser.Avatar = mModel.Analysis(config.SystemConfig[config.Domain].(string)) + out := &InstanceDetailInfo{ - ID: mSysUser.GetEncodeID(), - SysUser: mSysUser.SysUser, - Roles: make([]*InstanceRoleInfo, 0), + ID: mSysUser.GetEncodeID(), + SysUser: mSysUser.SysUser, + TenantID: mSysUser.GetEncodeTenantID(), + RoleIDs: make([]string, 0), } for _, v := range roles { mSysUserRole.ID = v.ID - out.Roles = append(out.Roles, &InstanceRoleInfo{ - ID: mSysUserRole.GetEncodeID(), - SysUserRoleInfo: v, - }) + out.RoleIDs = append(out.RoleIDs, mSysUserRole.GetEncodeID()) } return out, nil } @@ -188,7 +183,7 @@ func (c *Instance) Form(params *InstanceParams) error { if params.ID > 0 { mSysUser.ID = params.ID - isExist, err := model2.FirstField(mSysUser.SysUser, []string{"id", "name", "mobile"}) + isExist, err := model2.FirstField(mSysUser.SysUser, []string{"id", "uuid", "name", "mobile"}) if err != nil { return err @@ -206,8 +201,8 @@ func (c *Instance) Form(params *InstanceParams) error { } return orm.GetDB().Transaction(func(tx *gorm.DB) error { if err = model2.Updates(mSysUser.SysUser, map[string]interface{}{ - "tenant_id": params.TenantID, "name": params.Name, "mobile": params.Mobile, "avatar": params.Avatar, "gender": params.Gender, - "status": params.Status, "remark": params.Remark, "updated_at": time.Now(), + "tenant_id": params.TenantID, "name": params.Name, "mobile": params.Mobile, "avatar": params.Avatar, + "gender": params.Gender, "status": params.Status, "remark": params.Remark, "updated_at": time.Now(), }, tx); err != nil { return err }