123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- package role
- import (
- "authService/model"
- "authService/response"
- "authService/util"
- "authService/validators"
- "github.com/golang-module/carbon"
- jsoniter "github.com/json-iterator/go"
- )
- var json = jsoniter.ConfigCompatibleWithStandardLibrary
- // 创建角色
- func Create(role *validators.Role) *response.ErrCode {
- var permissions = util.JsonEncode(role.Permissions)
- createErr := model.DB.Create(&model.Role{
- Name: role.Name,
- Permissions: permissions,
- }).Error
- if createErr != nil {
- return response.Err
- }
- return nil
- }
- // 修改角色
- func Update(role *validators.Role) *response.ErrCode {
- if role.ID == 0 {
- return &response.ErrCode{
- Msg: "ID不能为空",
- Code: response.ERROR,
- }
- }
- var permissions = util.JsonEncode(role.Permissions)
- updateErr := model.DB.Where("id = ?", role.ID).Select("name", "permissions").Updates(model.Role{
- Name: role.Name,
- Permissions: permissions,
- }).Error
- if updateErr != nil {
- return response.Err
- }
- return nil
- }
- // 获取角色列表
- func FindByRoleIdWithUser(id int64) (*model.Role, *response.ErrCode) {
- var role *model.Role
- err := model.DB.Model(&model.Role{}).Where("id = ?", id).Preload("Users.Roles").First(&role).Error
- if err != nil {
- return nil, response.Err
- }
- return role, nil
- }
- // 获取角色列表
- func List() (roles []*model.Role) {
- model.DB.Order("id desc").Find(&roles)
- return
- }
- func Paginate(page, pageSize int, key string) ([]*model.Role, int64) {
- var total int64
- var roles []*model.Role
- query := model.DB.Model(&model.Role{})
- if key != "" {
- query = query.Where("name like ?", "%"+key+"%")
- }
- query.Count(&total)
- query.Scopes(model.Paginate(page, pageSize)).Preload("Users").Order("id desc").Find(&roles)
- return roles, total
- }
- // 删除角色
- func Delete(id int64) *response.ErrCode {
- // 检查角色是否关联了用户
- var count int64
- model.DB.Model(&model.UserRole{}).Where("role_id = ?", id).Count(&count)
- if count > 0 {
- return &response.ErrCode{
- Msg: "角色已关联用户,无法删除",
- Code: response.ERROR,
- }
- }
- model.DB.Where("id = ?", id).Delete(&model.Role{})
- return nil
- }
- func FormatRole(role *model.Role) *validators.Role {
- var permissions []string
- json.UnmarshalFromString(role.Permissions, &permissions)
- if permissions == nil {
- permissions = make([]string, 0)
- }
- return &validators.Role{
- ID: role.ID,
- Name: role.Name,
- Permissions: permissions,
- UserTotal: len(role.Users),
- CreatedAt: carbon.Time2Carbon(role.CreatedAt).Format("Y/m/d H:i:s"),
- }
- }
|