mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	管理界面可以切换风格
This commit is contained in:
		@@ -35,7 +35,7 @@ func init() {
 | 
				
			|||||||
	})
 | 
						})
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 启用条目
 | 
					// EnableAdmin 启用条目
 | 
				
			||||||
func (this *AdminDAO) EnableAdmin(tx *dbs.Tx, id int64) (rowsAffected int64, err error) {
 | 
					func (this *AdminDAO) EnableAdmin(tx *dbs.Tx, id int64) (rowsAffected int64, err error) {
 | 
				
			||||||
	return this.Query(tx).
 | 
						return this.Query(tx).
 | 
				
			||||||
		Pk(id).
 | 
							Pk(id).
 | 
				
			||||||
@@ -43,7 +43,7 @@ func (this *AdminDAO) EnableAdmin(tx *dbs.Tx, id int64) (rowsAffected int64, err
 | 
				
			|||||||
		Update()
 | 
							Update()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 禁用条目
 | 
					// DisableAdmin 禁用条目
 | 
				
			||||||
func (this *AdminDAO) DisableAdmin(tx *dbs.Tx, id int64) (rowsAffected int64, err error) {
 | 
					func (this *AdminDAO) DisableAdmin(tx *dbs.Tx, id int64) (rowsAffected int64, err error) {
 | 
				
			||||||
	return this.Query(tx).
 | 
						return this.Query(tx).
 | 
				
			||||||
		Pk(id).
 | 
							Pk(id).
 | 
				
			||||||
@@ -51,7 +51,7 @@ func (this *AdminDAO) DisableAdmin(tx *dbs.Tx, id int64) (rowsAffected int64, er
 | 
				
			|||||||
		Update()
 | 
							Update()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 查找启用中的条目
 | 
					// FindEnabledAdmin 查找启用中的条目
 | 
				
			||||||
func (this *AdminDAO) FindEnabledAdmin(tx *dbs.Tx, id int64) (*Admin, error) {
 | 
					func (this *AdminDAO) FindEnabledAdmin(tx *dbs.Tx, id int64) (*Admin, error) {
 | 
				
			||||||
	result, err := this.Query(tx).
 | 
						result, err := this.Query(tx).
 | 
				
			||||||
		Pk(id).
 | 
							Pk(id).
 | 
				
			||||||
@@ -63,7 +63,7 @@ func (this *AdminDAO) FindEnabledAdmin(tx *dbs.Tx, id int64) (*Admin, error) {
 | 
				
			|||||||
	return result.(*Admin), err
 | 
						return result.(*Admin), err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 检查管理员是否存在
 | 
					// ExistEnabledAdmin 检查管理员是否存在
 | 
				
			||||||
func (this *AdminDAO) ExistEnabledAdmin(tx *dbs.Tx, adminId int64) (bool, error) {
 | 
					func (this *AdminDAO) ExistEnabledAdmin(tx *dbs.Tx, adminId int64) (bool, error) {
 | 
				
			||||||
	return this.Query(tx).
 | 
						return this.Query(tx).
 | 
				
			||||||
		Pk(adminId).
 | 
							Pk(adminId).
 | 
				
			||||||
@@ -71,7 +71,7 @@ func (this *AdminDAO) ExistEnabledAdmin(tx *dbs.Tx, adminId int64) (bool, error)
 | 
				
			|||||||
		Exist()
 | 
							Exist()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 获取管理员名称
 | 
					// FindAdminFullname 获取管理员名称
 | 
				
			||||||
func (this *AdminDAO) FindAdminFullname(tx *dbs.Tx, adminId int64) (string, error) {
 | 
					func (this *AdminDAO) FindAdminFullname(tx *dbs.Tx, adminId int64) (string, error) {
 | 
				
			||||||
	return this.Query(tx).
 | 
						return this.Query(tx).
 | 
				
			||||||
		Pk(adminId).
 | 
							Pk(adminId).
 | 
				
			||||||
@@ -79,7 +79,7 @@ func (this *AdminDAO) FindAdminFullname(tx *dbs.Tx, adminId int64) (string, erro
 | 
				
			|||||||
		FindStringCol("")
 | 
							FindStringCol("")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 检查用户名、密码
 | 
					// CheckAdminPassword 检查用户名、密码
 | 
				
			||||||
func (this *AdminDAO) CheckAdminPassword(tx *dbs.Tx, username string, encryptedPassword string) (int64, error) {
 | 
					func (this *AdminDAO) CheckAdminPassword(tx *dbs.Tx, username string, encryptedPassword string) (int64, error) {
 | 
				
			||||||
	if len(username) == 0 || len(encryptedPassword) == 0 {
 | 
						if len(username) == 0 || len(encryptedPassword) == 0 {
 | 
				
			||||||
		return 0, nil
 | 
							return 0, nil
 | 
				
			||||||
@@ -94,7 +94,7 @@ func (this *AdminDAO) CheckAdminPassword(tx *dbs.Tx, username string, encryptedP
 | 
				
			|||||||
		FindInt64Col(0)
 | 
							FindInt64Col(0)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 根据用户名查询管理员ID
 | 
					// FindAdminIdWithUsername 根据用户名查询管理员ID
 | 
				
			||||||
func (this *AdminDAO) FindAdminIdWithUsername(tx *dbs.Tx, username string) (int64, error) {
 | 
					func (this *AdminDAO) FindAdminIdWithUsername(tx *dbs.Tx, username string) (int64, error) {
 | 
				
			||||||
	one, err := this.Query(tx).
 | 
						one, err := this.Query(tx).
 | 
				
			||||||
		Attr("username", username).
 | 
							Attr("username", username).
 | 
				
			||||||
@@ -110,7 +110,7 @@ func (this *AdminDAO) FindAdminIdWithUsername(tx *dbs.Tx, username string) (int6
 | 
				
			|||||||
	return int64(one.(*Admin).Id), nil
 | 
						return int64(one.(*Admin).Id), nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 更改管理员密码
 | 
					// UpdateAdminPassword 更改管理员密码
 | 
				
			||||||
func (this *AdminDAO) UpdateAdminPassword(tx *dbs.Tx, adminId int64, password string) error {
 | 
					func (this *AdminDAO) UpdateAdminPassword(tx *dbs.Tx, adminId int64, password string) error {
 | 
				
			||||||
	if adminId <= 0 {
 | 
						if adminId <= 0 {
 | 
				
			||||||
		return errors.New("invalid adminId")
 | 
							return errors.New("invalid adminId")
 | 
				
			||||||
@@ -122,7 +122,7 @@ func (this *AdminDAO) UpdateAdminPassword(tx *dbs.Tx, adminId int64, password st
 | 
				
			|||||||
	return err
 | 
						return err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 创建管理员
 | 
					// CreateAdmin 创建管理员
 | 
				
			||||||
func (this *AdminDAO) CreateAdmin(tx *dbs.Tx, username string, canLogin bool, password string, fullname string, isSuper bool, modulesJSON []byte) (int64, error) {
 | 
					func (this *AdminDAO) CreateAdmin(tx *dbs.Tx, username string, canLogin bool, password string, fullname string, isSuper bool, modulesJSON []byte) (int64, error) {
 | 
				
			||||||
	op := NewAdminOperator()
 | 
						op := NewAdminOperator()
 | 
				
			||||||
	op.IsOn = true
 | 
						op.IsOn = true
 | 
				
			||||||
@@ -144,7 +144,7 @@ func (this *AdminDAO) CreateAdmin(tx *dbs.Tx, username string, canLogin bool, pa
 | 
				
			|||||||
	return types.Int64(op.Id), nil
 | 
						return types.Int64(op.Id), nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 修改管理员个人资料
 | 
					// UpdateAdminInfo 修改管理员个人资料
 | 
				
			||||||
func (this *AdminDAO) UpdateAdminInfo(tx *dbs.Tx, adminId int64, fullname string) error {
 | 
					func (this *AdminDAO) UpdateAdminInfo(tx *dbs.Tx, adminId int64, fullname string) error {
 | 
				
			||||||
	if adminId <= 0 {
 | 
						if adminId <= 0 {
 | 
				
			||||||
		return errors.New("invalid adminId")
 | 
							return errors.New("invalid adminId")
 | 
				
			||||||
@@ -156,7 +156,7 @@ func (this *AdminDAO) UpdateAdminInfo(tx *dbs.Tx, adminId int64, fullname string
 | 
				
			|||||||
	return err
 | 
						return err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 修改管理员详细信息
 | 
					// UpdateAdmin 修改管理员详细信息
 | 
				
			||||||
func (this *AdminDAO) UpdateAdmin(tx *dbs.Tx, adminId int64, username string, canLogin bool, password string, fullname string, isSuper bool, modulesJSON []byte, isOn bool) error {
 | 
					func (this *AdminDAO) UpdateAdmin(tx *dbs.Tx, adminId int64, username string, canLogin bool, password string, fullname string, isSuper bool, modulesJSON []byte, isOn bool) error {
 | 
				
			||||||
	if adminId <= 0 {
 | 
						if adminId <= 0 {
 | 
				
			||||||
		return errors.New("invalid adminId")
 | 
							return errors.New("invalid adminId")
 | 
				
			||||||
@@ -180,7 +180,7 @@ func (this *AdminDAO) UpdateAdmin(tx *dbs.Tx, adminId int64, username string, ca
 | 
				
			|||||||
	return err
 | 
						return err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 检查用户名是否存在
 | 
					// CheckAdminUsername 检查用户名是否存在
 | 
				
			||||||
func (this *AdminDAO) CheckAdminUsername(tx *dbs.Tx, adminId int64, username string) (bool, error) {
 | 
					func (this *AdminDAO) CheckAdminUsername(tx *dbs.Tx, adminId int64, username string) (bool, error) {
 | 
				
			||||||
	query := this.Query(tx).
 | 
						query := this.Query(tx).
 | 
				
			||||||
		State(AdminStateEnabled).
 | 
							State(AdminStateEnabled).
 | 
				
			||||||
@@ -193,7 +193,7 @@ func (this *AdminDAO) CheckAdminUsername(tx *dbs.Tx, adminId int64, username str
 | 
				
			|||||||
	return query.Exist()
 | 
						return query.Exist()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 修改管理员登录信息
 | 
					// UpdateAdminLogin 修改管理员登录信息
 | 
				
			||||||
func (this *AdminDAO) UpdateAdminLogin(tx *dbs.Tx, adminId int64, username string, password string) error {
 | 
					func (this *AdminDAO) UpdateAdminLogin(tx *dbs.Tx, adminId int64, username string, password string) error {
 | 
				
			||||||
	if adminId <= 0 {
 | 
						if adminId <= 0 {
 | 
				
			||||||
		return errors.New("invalid adminId")
 | 
							return errors.New("invalid adminId")
 | 
				
			||||||
@@ -208,7 +208,7 @@ func (this *AdminDAO) UpdateAdminLogin(tx *dbs.Tx, adminId int64, username strin
 | 
				
			|||||||
	return err
 | 
						return err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 修改管理员可以管理的模块
 | 
					// UpdateAdminModules 修改管理员可以管理的模块
 | 
				
			||||||
func (this *AdminDAO) UpdateAdminModules(tx *dbs.Tx, adminId int64, allowModulesJSON []byte) error {
 | 
					func (this *AdminDAO) UpdateAdminModules(tx *dbs.Tx, adminId int64, allowModulesJSON []byte) error {
 | 
				
			||||||
	if adminId <= 0 {
 | 
						if adminId <= 0 {
 | 
				
			||||||
		return errors.New("invalid adminId")
 | 
							return errors.New("invalid adminId")
 | 
				
			||||||
@@ -223,25 +223,25 @@ func (this *AdminDAO) UpdateAdminModules(tx *dbs.Tx, adminId int64, allowModules
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 查询所有管理的权限
 | 
					// FindAllAdminModules 查询所有管理的权限
 | 
				
			||||||
func (this *AdminDAO) FindAllAdminModules(tx *dbs.Tx) (result []*Admin, err error) {
 | 
					func (this *AdminDAO) FindAllAdminModules(tx *dbs.Tx) (result []*Admin, err error) {
 | 
				
			||||||
	_, err = this.Query(tx).
 | 
						_, err = this.Query(tx).
 | 
				
			||||||
		State(AdminStateEnabled).
 | 
							State(AdminStateEnabled).
 | 
				
			||||||
		Attr("isOn", true).
 | 
							Attr("isOn", true).
 | 
				
			||||||
		Result("id", "modules", "isSuper", "fullname").
 | 
							Result("id", "modules", "isSuper", "fullname", "theme").
 | 
				
			||||||
		Slice(&result).
 | 
							Slice(&result).
 | 
				
			||||||
		FindAll()
 | 
							FindAll()
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 计算所有管理员数量
 | 
					// CountAllEnabledAdmins 计算所有管理员数量
 | 
				
			||||||
func (this *AdminDAO) CountAllEnabledAdmins(tx *dbs.Tx) (int64, error) {
 | 
					func (this *AdminDAO) CountAllEnabledAdmins(tx *dbs.Tx) (int64, error) {
 | 
				
			||||||
	return this.Query(tx).
 | 
						return this.Query(tx).
 | 
				
			||||||
		State(AdminStateEnabled).
 | 
							State(AdminStateEnabled).
 | 
				
			||||||
		Count()
 | 
							Count()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 列出单页的管理员
 | 
					// ListEnabledAdmins 列出单页的管理员
 | 
				
			||||||
func (this *AdminDAO) ListEnabledAdmins(tx *dbs.Tx, offset int64, size int64) (result []*Admin, err error) {
 | 
					func (this *AdminDAO) ListEnabledAdmins(tx *dbs.Tx, offset int64, size int64) (result []*Admin, err error) {
 | 
				
			||||||
	_, err = this.Query(tx).
 | 
						_, err = this.Query(tx).
 | 
				
			||||||
		State(AdminStateEnabled).
 | 
							State(AdminStateEnabled).
 | 
				
			||||||
@@ -253,3 +253,11 @@ func (this *AdminDAO) ListEnabledAdmins(tx *dbs.Tx, offset int64, size int64) (r
 | 
				
			|||||||
		FindAll()
 | 
							FindAll()
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// UpdateAdminTheme 设置管理员Theme
 | 
				
			||||||
 | 
					func (this *AdminDAO) UpdateAdminTheme(tx *dbs.Tx, adminId int64, theme string) error {
 | 
				
			||||||
 | 
						return this.Query(tx).
 | 
				
			||||||
 | 
							Pk(adminId).
 | 
				
			||||||
 | 
							Set("theme", theme).
 | 
				
			||||||
 | 
							UpdateQuickly()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
package models
 | 
					package models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 管理员
 | 
					// Admin 管理员
 | 
				
			||||||
type Admin struct {
 | 
					type Admin struct {
 | 
				
			||||||
	Id        uint32 `field:"id"`        // ID
 | 
						Id        uint32 `field:"id"`        // ID
 | 
				
			||||||
	IsOn      uint8  `field:"isOn"`      // 是否启用
 | 
						IsOn      uint8  `field:"isOn"`      // 是否启用
 | 
				
			||||||
@@ -13,6 +13,7 @@ type Admin struct {
 | 
				
			|||||||
	State     uint8  `field:"state"`     // 状态
 | 
						State     uint8  `field:"state"`     // 状态
 | 
				
			||||||
	Modules   string `field:"modules"`   // 允许的模块
 | 
						Modules   string `field:"modules"`   // 允许的模块
 | 
				
			||||||
	CanLogin  uint8  `field:"canLogin"`  // 是否可以登录
 | 
						CanLogin  uint8  `field:"canLogin"`  // 是否可以登录
 | 
				
			||||||
 | 
						Theme     string `field:"theme"`     // 模板设置
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type AdminOperator struct {
 | 
					type AdminOperator struct {
 | 
				
			||||||
@@ -27,6 +28,7 @@ type AdminOperator struct {
 | 
				
			|||||||
	State     interface{} // 状态
 | 
						State     interface{} // 状态
 | 
				
			||||||
	Modules   interface{} // 允许的模块
 | 
						Modules   interface{} // 允许的模块
 | 
				
			||||||
	CanLogin  interface{} // 是否可以登录
 | 
						CanLogin  interface{} // 是否可以登录
 | 
				
			||||||
 | 
						Theme     interface{} // 模板设置
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewAdminOperator() *AdminOperator {
 | 
					func NewAdminOperator() *AdminOperator {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -298,6 +298,7 @@ func (this *AdminService) FindAllAdminModules(ctx context.Context, req *pb.FindA
 | 
				
			|||||||
			AdminId:  int64(admin.Id),
 | 
								AdminId:  int64(admin.Id),
 | 
				
			||||||
			IsSuper:  admin.IsSuper == 1,
 | 
								IsSuper:  admin.IsSuper == 1,
 | 
				
			||||||
			Fullname: admin.Fullname,
 | 
								Fullname: admin.Fullname,
 | 
				
			||||||
 | 
								Theme:    admin.Theme,
 | 
				
			||||||
			Modules:  pbModules,
 | 
								Modules:  pbModules,
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		result = append(result, list)
 | 
							result = append(result, list)
 | 
				
			||||||
@@ -633,3 +634,17 @@ func (this *AdminService) ComposeAdminDashboard(ctx context.Context, req *pb.Com
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	return resp, nil
 | 
						return resp, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// UpdateAdminTheme 修改管理员使用的界面风格
 | 
				
			||||||
 | 
					func (this *AdminService) UpdateAdminTheme(ctx context.Context, req *pb.UpdateAdminThemeRequest) (*pb.RPCSuccess, error) {
 | 
				
			||||||
 | 
						_, err := this.ValidateAdmin(ctx, req.AdminId)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						var tx = this.NullTx()
 | 
				
			||||||
 | 
						err = models.SharedAdminDAO.UpdateAdminTheme(tx, req.AdminId, req.Theme)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return this.Success()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user