feat:完善项目

This commit is contained in:
henry
2021-11-12 15:01:49 +08:00
parent a22029f4a3
commit 2a1aa6826c
5 changed files with 38 additions and 29 deletions

View File

@ -9,12 +9,18 @@ import (
type Role struct{} type Role struct{}
type roleForm 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"` Name string `json:"name" form:"name" binding:"required"`
Remark string `json:"remark" form:"remark" binding:"required"` Remark string `json:"remark" form:"remark" binding:"required"`
Sort int `json:"sort" form:"sort"` Sort int `json:"sort" form:"sort"`
} }
func (this *roleForm) parentInfo() uint64 {
obj := new(IDStringForm)
obj.ID = this.ParentID
return obj.Convert()
}
/** /**
* @apiDefine Role 角色管理 * @apiDefine Role 角色管理
*/ */
@ -66,7 +72,7 @@ func (a *Role) Add(c *gin.Context) {
return return
} }
err := role.NewInstance()(getSession()(c).(*service.Session)).Form(&role.InstanceParams{ 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) APIResponse(err)(c)
} }
@ -81,7 +87,7 @@ func (a *Role) Edit(c *gin.Context) {
return return
} }
err := role.NewInstance()(getSession()(c).(*service.Session)).Form(&role.InstanceParams{ 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) APIResponse(err)(c)
} }

View File

@ -165,6 +165,7 @@ func (*User) List(c *gin.Context) {
func (*User) Detail(c *gin.Context) { func (*User) Detail(c *gin.Context) {
form := new(IDStringForm) form := new(IDStringForm)
if err := bind(form)(c); err != nil { if err := bind(form)(c); err != nil {
APIFailure(err.(error))(c) APIFailure(err.(error))(c)
return return

View File

@ -28,7 +28,7 @@ type Model struct {
// ModelTenant // ModelTenant
type ModelTenant struct { 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 // ModelDeleted
@ -73,6 +73,13 @@ func (m *Model) GetEncodeID() string {
return utils.HASHIDEncode(int(m.ID)) 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) { func (m *Model) SetDatabase(database string, key ...string) {
m.Database = database + "_" + strings.Join(key, "_") m.Database = database + "_" + strings.Join(key, "_")
} }

View File

@ -11,7 +11,7 @@ type SysUser struct {
Model Model
ModelTenant ModelTenant
UUID uint64 `gorm:"column:uuid;uniqueIndex:idx_sys_user_uuid;type:int;default:0;comment:用户唯一UUID" json:"-"` 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"` 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"` 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"` Mobile string `gorm:"column:mobile;index:idx_sys_user_mobile;type:varchar(15);default:null;comment:联系方式" json:"mobile"`

View File

@ -7,7 +7,6 @@ import (
"ArmedPolice/app/service" "ArmedPolice/app/service"
"ArmedPolice/config" "ArmedPolice/config"
"ArmedPolice/serve/orm" "ArmedPolice/serve/orm"
"ArmedPolice/utils"
"errors" "errors"
"gorm.io/gorm" "gorm.io/gorm"
"time" "time"
@ -33,12 +32,8 @@ type (
InstanceDetailInfo struct { InstanceDetailInfo struct {
ID string `json:"id"` ID string `json:"id"`
*model2.SysUser *model2.SysUser
Roles []*InstanceRoleInfo `json:"roles"` TenantID string `json:"tenant_id"`
} RoleIDs []string `json:"role_ids"`
// InstanceRoleInfo 角色信息
InstanceRoleInfo struct {
ID string `json:"id"`
*model.SysUserRoleInfo
} }
// InstanceParams 参数信息 // InstanceParams 参数信息
InstanceParams struct { InstanceParams struct {
@ -64,7 +59,6 @@ func (c *InstanceParams) roleHandle(tx *gorm.DB, uid uint64) error {
return err return err
} }
roles := make([]*model2.SysUserRole, 0) roles := make([]*model2.SysUserRole, 0)
obj := make([]string, 0)
mark := make(map[uint64]uint64, 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 { if _, has := mark[v]; has {
continue continue
} }
obj = append(obj, utils.UintToString(v))
roles = append(roles, &model2.SysUserRole{ roles = append(roles, &model2.SysUserRole{
UID: uid, RoleID: v, UID: uid, RoleID: v,
}) })
@ -129,7 +121,7 @@ func (c *Instance) List(name, mobile string, tenantID uint64, page, pageSize int
} }
var count int64 var count int64
out, err := mSysUser.Users(page, pageSize, &count) out, err := mSysUser.Users(page, pageSize, &count, where...)
if err != nil { if err != nil {
return nil, err return nil, err
@ -152,12 +144,14 @@ func (*Instance) Detail(id uint64) (*InstanceDetailInfo, error) {
mSysUser := model.NewSysUser() mSysUser := model.NewSysUser()
mSysUser.ID = id 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 { if err != nil {
return nil, err return nil, err
} else if !isExist { } else if !isExist {
return nil, err return nil, errors.New("操作错误,用户信息不存在或已被删除")
} }
mSysUserRole := model.NewSysUserRole() mSysUserRole := model.NewSysUserRole()
@ -166,17 +160,18 @@ func (*Instance) Detail(id uint64) (*InstanceDetailInfo, error) {
if roles, err = mSysUserRole.Roles(mSysUser.UUID); err != nil { if roles, err = mSysUserRole.Roles(mSysUser.UUID); err != nil {
return nil, err return nil, err
} }
mModel := &model2.Image{Image: mSysUser.Avatar}
mSysUser.Avatar = mModel.Analysis(config.SystemConfig[config.Domain].(string))
out := &InstanceDetailInfo{ out := &InstanceDetailInfo{
ID: mSysUser.GetEncodeID(), ID: mSysUser.GetEncodeID(),
SysUser: mSysUser.SysUser, SysUser: mSysUser.SysUser,
Roles: make([]*InstanceRoleInfo, 0), TenantID: mSysUser.GetEncodeTenantID(),
RoleIDs: make([]string, 0),
} }
for _, v := range roles { for _, v := range roles {
mSysUserRole.ID = v.ID mSysUserRole.ID = v.ID
out.Roles = append(out.Roles, &InstanceRoleInfo{ out.RoleIDs = append(out.RoleIDs, mSysUserRole.GetEncodeID())
ID: mSysUserRole.GetEncodeID(),
SysUserRoleInfo: v,
})
} }
return out, nil return out, nil
} }
@ -188,7 +183,7 @@ func (c *Instance) Form(params *InstanceParams) error {
if params.ID > 0 { if params.ID > 0 {
mSysUser.ID = params.ID 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 { if err != nil {
return err return err
@ -206,8 +201,8 @@ func (c *Instance) Form(params *InstanceParams) error {
} }
return orm.GetDB().Transaction(func(tx *gorm.DB) error { return orm.GetDB().Transaction(func(tx *gorm.DB) error {
if err = model2.Updates(mSysUser.SysUser, map[string]interface{}{ 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, "tenant_id": params.TenantID, "name": params.Name, "mobile": params.Mobile, "avatar": params.Avatar,
"status": params.Status, "remark": params.Remark, "updated_at": time.Now(), "gender": params.Gender, "status": params.Status, "remark": params.Remark, "updated_at": time.Now(),
}, tx); err != nil { }, tx); err != nil {
return err return err
} }