Files
bl/modules/base/service/base_sys_department.go
昔念 720294ad27 refactor(blazing): 重构项目并优化数据结构
- 更新 LoginUserInfo 结构体,将 uint64 类型改为 uint32
- 调整 ServerInfo 结构体,将 IP 字段从 []byte 改为 string
- 移除未使用的 ArraySerialize 结构体
- 更新 ByteArray 类,修改相关方法名
- 删除未使用的 serialize 相关代码
- 优化模块导入,移除冗余依赖
2025-06-22 12:05:07 +08:00

81 lines
1.8 KiB
Go

package service
import (
"blazing/cool"
"blazing/modules/base/model"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
)
type BaseSysDepartmentService struct {
*cool.Service
}
// GetByRoleIds 获取部门
func (s *BaseSysDepartmentService) GetByRoleIds(roleIds []string, isAdmin bool) (res []uint) {
var (
result gdb.Result
BaseSysRoleDepartment = model.NewBaseSysRoleDepartment()
)
// 如果roleIds不为空
if len(roleIds) > 0 {
// 如果是超级管理员,则返回所有部门
if isAdmin {
result, _ = cool.DBM(s.Model).Fields("id").All()
for _, v := range result {
vmap := v.Map()
if vmap["id"] != nil {
res = append(res, gconv.Uint(vmap["id"]))
}
}
} else {
// 如果不是超级管理员,则返回角色所在部门
result, _ = cool.DBM(BaseSysRoleDepartment).Where("roleId IN (?)", roleIds).Fields("departmentId").All()
for _, v := range result {
vmap := v.Map()
if vmap["departmentId"] != nil {
res = append(res, gconv.Uint(vmap["departmentId"]))
}
}
}
}
return
}
// Order 排序部门
func (s *BaseSysDepartmentService) Order(ctx g.Ctx) (err error) {
r := g.RequestFromCtx(ctx).GetMap()
type item struct {
Id uint32 `json:"id"`
ParentId *uint32 `json:"parentId,omitempty"`
OrderNum int32 `json:"orderNum"`
}
var data *item
for _, v := range r {
err = gconv.Struct(v, &data)
if err != nil {
continue
}
cool.DBM(s.Model).Where("id = ?", data.Id).Data(data).Update()
}
return
}
// NewBaseSysDepartmentService 创建一个BaseSysDepartmentService实例
func NewBaseSysDepartmentService() *BaseSysDepartmentService {
return &BaseSysDepartmentService{
Service: &cool.Service{
Model: model.NewBaseSysDepartment(),
ListQueryOp: &cool.QueryOp{},
},
}
}