135 lines
3.1 KiB
Go
135 lines
3.1 KiB
Go
package dao
|
|
|
|
import (
|
|
"intent-system/pkg/dal/models"
|
|
"intent-system/pkg/proto"
|
|
"intent-system/pkg/utils"
|
|
|
|
"github.com/civet148/log"
|
|
"github.com/civet148/sqlca/v2"
|
|
)
|
|
|
|
type RoleDAO struct {
|
|
db *sqlca.Engine
|
|
}
|
|
|
|
func NewRoleDAO(db *sqlca.Engine) *RoleDAO {
|
|
|
|
return &RoleDAO{
|
|
db: db,
|
|
}
|
|
}
|
|
|
|
func (dao *RoleDAO) SelectRoleById(id int32) (do *models.RoleDO, err error) {
|
|
if _, err = dao.db.Model(&do).Table(models.TableNameRole).Where("%s='%d'", models.ROLE_COLUMN_ID, id).Query(); err != nil {
|
|
log.Errorf(err.Error())
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
func (dao *RoleDAO) Insert(do *models.RoleDO) (id int64, err error) {
|
|
if id, err = dao.db.Model(&do).Table(models.TableNameRole).Insert(); err != nil {
|
|
log.Errorf(err.Error())
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
func (dao *RoleDAO) Upsert(do *models.RoleDO, columns ...string) (lastId int64, err error) {
|
|
if lastId, err = dao.db.Model(do).Table(models.TableNameRole).Select(columns...).Upsert(); err != nil {
|
|
log.Errorf(err.Error())
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
func (dao *RoleDAO) Update(do *models.RoleDO, columns ...string) (err error) {
|
|
if _, err = dao.db.Model(do).
|
|
Table(models.TableNameRole).
|
|
Select(columns...).
|
|
Update(); err != nil {
|
|
log.Errorf(err.Error())
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
func (dao *RoleDAO) Delete(do *models.RoleDO) (err error) {
|
|
var strName = do.RoleName
|
|
do.RoleName = utils.MakeTimestampSuffix(do.RoleName)
|
|
_, err = dao.db.Model(do).
|
|
Table(models.TableNameRole).
|
|
Select(
|
|
models.ROLE_COLUMN_ROLE_NAME,
|
|
models.ROLE_COLUMN_DELETED,
|
|
models.ROLE_COLUMN_EDIT_USER,
|
|
).
|
|
Eq(models.ROLE_COLUMN_ROLE_NAME, strName).
|
|
Eq(models.ROLE_COLUMN_IS_INHERENT, 0).
|
|
Update()
|
|
return
|
|
}
|
|
|
|
func (dao *RoleDAO) SelectPlatformRoles(pageNo, pageSize int, strRoleName string) (roles []*proto.PlatformRole, total int64, err error) {
|
|
e := dao.db.Model(&roles).
|
|
Table(models.TableNameRole).
|
|
Eq(models.ROLE_COLUMN_DELETED, 0).
|
|
Page(pageNo, pageSize)
|
|
|
|
if strRoleName != "" {
|
|
e.And("%s='%s'", models.ROLE_COLUMN_ROLE_NAME, strRoleName)
|
|
}
|
|
if _, total, err = e.QueryEx(); err != nil {
|
|
|
|
log.Errorf(err.Error())
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
func (dao *RoleDAO) SelectUserRole(strUserName string) (role *models.RoleDO, err error) {
|
|
|
|
if _, err = dao.db.Model(&role).
|
|
Table("user_role a", "`role` b").
|
|
Select("b.id, b.role_name, b.role_alias, b.remark").
|
|
Where("a.user_name='%v'", strUserName).
|
|
And("a.deleted=0").
|
|
And("a.role_name=b.role_name").
|
|
Query(); err != nil {
|
|
|
|
log.Errorf(err.Error())
|
|
return
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (dao *RoleDAO) SelectRoleByName(strRoleName string) (role *models.RoleDO, err error) {
|
|
_, err = dao.db.Model(&role).
|
|
Table(models.TableNameRole).
|
|
Eq(models.ROLE_COLUMN_ROLE_NAME, strRoleName).
|
|
Eq(models.ROLE_COLUMN_DELETED, 0).
|
|
Query()
|
|
return
|
|
}
|
|
|
|
func (dao *RoleDAO) CheckRoleExistByName(strRoleName string) (ok bool, err error) {
|
|
var count int64
|
|
var do *models.RoleDO
|
|
if count, err = dao.db.Model(&do).
|
|
Table(models.TableNameRole).
|
|
Eq(models.ROLE_COLUMN_ROLE_NAME, strRoleName).
|
|
Eq(models.ROLE_COLUMN_DELETED, 0).
|
|
Query(); err != nil {
|
|
|
|
log.Errorf("error [%s]", err.Error())
|
|
return
|
|
}
|
|
|
|
if count == 0 {
|
|
return false, nil
|
|
}
|
|
return true, nil
|
|
}
|