86 lines
2.6 KiB
Go
86 lines
2.6 KiB
Go
package isql
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/eryajf-world/go-ldap-admin/model"
|
|
"github.com/eryajf-world/go-ldap-admin/public/common"
|
|
"github.com/eryajf-world/go-ldap-admin/public/tools"
|
|
"github.com/eryajf-world/go-ldap-admin/svc/request"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type GroupService struct{}
|
|
|
|
// List 获取数据列表
|
|
func (s GroupService) List(req *request.GroupListReq) ([]*model.Group, error) {
|
|
var list []*model.Group
|
|
db := common.DB.Model(&model.Group{}).Order("created_at DESC")
|
|
|
|
groupName := strings.TrimSpace(req.GroupName)
|
|
if groupName != "" {
|
|
db = db.Where("group_name LIKE ?", fmt.Sprintf("%%%s%%", groupName))
|
|
}
|
|
groupRemark := strings.TrimSpace(req.Remark)
|
|
if groupRemark != "" {
|
|
db = db.Where("remark LIKE ?", fmt.Sprintf("%%%s%%", groupRemark))
|
|
}
|
|
|
|
pageReq := tools.NewPageOption(req.PageNum, req.PageSize)
|
|
err := db.Offset(pageReq.PageNum).Limit(pageReq.PageSize).Preload("Users").Find(&list).Error
|
|
return list, err
|
|
}
|
|
|
|
// Count 获取数据总数
|
|
func (s GroupService) Count() (int64, error) {
|
|
var count int64
|
|
err := common.DB.Model(&model.Group{}).Count(&count).Error
|
|
return count, err
|
|
}
|
|
|
|
// Add 添加资源
|
|
func (s GroupService) Add(data *model.Group) error {
|
|
return common.DB.Create(data).Error
|
|
}
|
|
|
|
// Update 更新资源
|
|
func (s GroupService) Update(dataObj *model.Group) error {
|
|
return common.DB.Model(dataObj).Where("id = ?", dataObj.ID).Updates(dataObj).Error
|
|
}
|
|
|
|
// Find 获取单个资源
|
|
func (s GroupService) Find(filter map[string]interface{}, data *model.Group) error {
|
|
return common.DB.Where(filter).Preload("Users").First(&data).Error
|
|
}
|
|
|
|
// Exist 判断资源是否存在
|
|
func (s GroupService) Exist(filter map[string]interface{}) bool {
|
|
var dataObj model.Group
|
|
err := common.DB.Debug().Order("created_at DESC").Where(filter).First(&dataObj).Error
|
|
return !errors.Is(err, gorm.ErrRecordNotFound)
|
|
}
|
|
|
|
// Delete 批量删除
|
|
func (s GroupService) Delete(ids []uint) error {
|
|
return common.DB.Where("id IN (?)", ids).Select("Users").Unscoped().Delete(&model.Group{}).Error
|
|
}
|
|
|
|
// GetApisById 根据接口ID获取接口列表
|
|
func (s GroupService) GetGroupByIds(ids []uint) (datas []*model.Group, err error) {
|
|
err = common.DB.Where("id IN (?)", ids).Preload("Users").Find(&datas).Error
|
|
return datas, err
|
|
}
|
|
|
|
// AddUserToGroup 添加用户到分组
|
|
func (s GroupService) AddUserToGroup(group *model.Group, users []model.User) error {
|
|
return common.DB.Model(&group).Association("Users").Append(users)
|
|
}
|
|
|
|
// RemoveUserFromGroup 将用户从分组移除
|
|
func (s GroupService) RemoveUserFromGroup(group *model.Group, users []model.User) error {
|
|
return common.DB.Model(&group).Association("Users").Delete(users)
|
|
}
|