mirror of
https://gitee.com/XM-GO/PandaX.git
synced 2026-04-27 05:49:37 +08:00
项目目录优化,任务模块后端代码
This commit is contained in:
119
apps/system/services/api.go
Normal file
119
apps/system/services/api.go
Normal file
@@ -0,0 +1,119 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"gorm.io/gorm"
|
||||
"pandax/apps/system/entity"
|
||||
"pandax/base/biz"
|
||||
"pandax/base/casbin"
|
||||
"pandax/base/global"
|
||||
)
|
||||
|
||||
type (
|
||||
SysApiModel interface {
|
||||
Insert(data entity.SysApi) *entity.SysApi
|
||||
FindOne(id int64) *entity.SysApi
|
||||
FindListPage(page, pageSize int, data entity.SysApi) (*[]entity.SysApi, int64)
|
||||
FindList(data entity.SysApi) *[]entity.SysApi
|
||||
Update(data entity.SysApi) *entity.SysApi
|
||||
Delete(ids []int64)
|
||||
}
|
||||
|
||||
sysSysApiModelImpl struct {
|
||||
table string
|
||||
}
|
||||
)
|
||||
|
||||
var SysSysApiModelDao = &sysSysApiModelImpl{
|
||||
table: `sys_apis`,
|
||||
}
|
||||
|
||||
func (m *sysSysApiModelImpl) Insert(api entity.SysApi) *entity.SysApi {
|
||||
err := global.Db.Table(m.table).Where("path = ? AND method = ?", api.Path, api.Method).First(&entity.SysApi{}).Error
|
||||
biz.IsTrue(errors.Is(err, gorm.ErrRecordNotFound), "存在相同api")
|
||||
err = global.Db.Table(m.table).Create(&api).Error
|
||||
biz.ErrIsNil(err, "新增Api失败")
|
||||
return &api
|
||||
}
|
||||
|
||||
func (m *sysSysApiModelImpl) FindOne(id int64) (resData *entity.SysApi) {
|
||||
resData = new(entity.SysApi)
|
||||
err := global.Db.Table(m.table).Where("id = ?", id).First(&resData).Error
|
||||
biz.ErrIsNil(err, "查询Api失败")
|
||||
return
|
||||
}
|
||||
|
||||
func (m *sysSysApiModelImpl) FindListPage(page, pageSize int, data entity.SysApi) (*[]entity.SysApi, int64) {
|
||||
list := make([]entity.SysApi, 0)
|
||||
var total int64 = 0
|
||||
offset := pageSize * (page - 1)
|
||||
|
||||
db := global.Db.Table(m.table)
|
||||
|
||||
if data.Path != "" {
|
||||
db = db.Where("path LIKE ?", "%"+data.Path+"%")
|
||||
}
|
||||
|
||||
if data.Description != "" {
|
||||
db = db.Where("description LIKE ?", "%"+data.Description+"%")
|
||||
}
|
||||
|
||||
if data.Method != "" {
|
||||
db = db.Where("method = ?", data.Method)
|
||||
}
|
||||
|
||||
if data.ApiGroup != "" {
|
||||
db = db.Where("api_group = ?", data.ApiGroup)
|
||||
}
|
||||
|
||||
db.Where("delete_time IS NULL")
|
||||
err := db.Count(&total).Error
|
||||
err = db.Order("api_group").Limit(pageSize).Offset(offset).Find(&list).Error
|
||||
biz.ErrIsNil(err, "查询配置分页列表信息失败")
|
||||
return &list, total
|
||||
}
|
||||
|
||||
func (m *sysSysApiModelImpl) FindList(data entity.SysApi) *[]entity.SysApi {
|
||||
list := make([]entity.SysApi, 0)
|
||||
db := global.Db.Table(m.table)
|
||||
|
||||
if data.Path != "" {
|
||||
db = db.Where("path LIKE ?", "%"+data.Path+"%")
|
||||
}
|
||||
|
||||
if data.Description != "" {
|
||||
db = db.Where("description LIKE ?", "%"+data.Description+"%")
|
||||
}
|
||||
|
||||
if data.Method != "" {
|
||||
db = db.Where("method = ?", data.Method)
|
||||
}
|
||||
|
||||
if data.ApiGroup != "" {
|
||||
db = db.Where("api_group = ?", data.ApiGroup)
|
||||
}
|
||||
db.Where("delete_time IS NULL")
|
||||
err := db.Order("api_group").Find(&list).Error
|
||||
biz.ErrIsNil(err, "查询Api列表信息失败")
|
||||
return &list
|
||||
}
|
||||
|
||||
func (m *sysSysApiModelImpl) Update(api entity.SysApi) *entity.SysApi {
|
||||
var oldA entity.SysApi
|
||||
err := global.Db.Table(m.table).Where("id = ?", api.Id).First(&oldA).Error
|
||||
biz.ErrIsNil(err, "【修改api】查询api失败")
|
||||
if oldA.Path != api.Path || oldA.Method != api.Method {
|
||||
err := global.Db.Table(m.table).Where("path = ? AND method = ?", api.Path, api.Method).First(&entity.SysApi{}).Error
|
||||
biz.IsTrue(errors.Is(err, gorm.ErrRecordNotFound), "存在相同api路径")
|
||||
}
|
||||
// 异常直接抛错误
|
||||
casbin.UpdateCasbinApi(oldA.Path, api.Path, oldA.Method, api.Method)
|
||||
err = global.Db.Table(m.table).Model(&api).Updates(&api).Error
|
||||
biz.ErrIsNil(err, "修改api信息失败")
|
||||
return &api
|
||||
}
|
||||
|
||||
func (m *sysSysApiModelImpl) Delete(ids []int64) {
|
||||
err := global.Db.Table(m.table).Delete(&entity.SysApi{}, "`id` in (?)", ids).Error
|
||||
biz.ErrIsNil(err, "删除配置信息失败")
|
||||
}
|
||||
94
apps/system/services/config.go
Normal file
94
apps/system/services/config.go
Normal file
@@ -0,0 +1,94 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"pandax/apps/system/entity"
|
||||
"pandax/base/biz"
|
||||
"pandax/base/global"
|
||||
)
|
||||
|
||||
type (
|
||||
SysConfigModel interface {
|
||||
Insert(data entity.SysConfig) *entity.SysConfig
|
||||
FindOne(dictCode int64) *entity.SysConfig
|
||||
FindListPage(page, pageSize int, data entity.SysConfig) (*[]entity.SysConfig, int64)
|
||||
FindList(data entity.SysConfig) *[]entity.SysConfig
|
||||
Update(data entity.SysConfig) *entity.SysConfig
|
||||
Delete(dictCode []int64)
|
||||
}
|
||||
|
||||
sysSysConfigModelImpl struct {
|
||||
table string
|
||||
}
|
||||
)
|
||||
|
||||
var SysSysConfigModelDao = &sysSysConfigModelImpl{
|
||||
table: `sys_configs`,
|
||||
}
|
||||
|
||||
func (m *sysSysConfigModelImpl) Insert(data entity.SysConfig) *entity.SysConfig {
|
||||
err := global.Db.Table(m.table).Create(&data).Error
|
||||
biz.ErrIsNil(err, "新增配置失败")
|
||||
return &data
|
||||
}
|
||||
|
||||
func (m *sysSysConfigModelImpl) FindOne(configId int64) *entity.SysConfig {
|
||||
resData := new(entity.SysConfig)
|
||||
err := global.Db.Table(m.table).Where("`config_id` = ?", configId).First(resData).Error
|
||||
biz.ErrIsNil(err, "查询配置信息失败")
|
||||
return resData
|
||||
}
|
||||
|
||||
func (m *sysSysConfigModelImpl) FindListPage(page, pageSize int, data entity.SysConfig) (*[]entity.SysConfig, int64) {
|
||||
list := make([]entity.SysConfig, 0)
|
||||
var total int64 = 0
|
||||
offset := pageSize * (page - 1)
|
||||
|
||||
db := global.Db.Table(m.table)
|
||||
// 此处填写 where参数判断
|
||||
if data.ConfigName != "" {
|
||||
db = db.Where("config_name like ?", "%"+data.ConfigName+"%")
|
||||
}
|
||||
if data.ConfigKey != "" {
|
||||
db = db.Where("config_key like ?", "%"+data.ConfigKey+"%")
|
||||
}
|
||||
if data.ConfigType != "" {
|
||||
db = db.Where("config_type = ?", data.ConfigType)
|
||||
}
|
||||
db.Where("delete_time IS NULL")
|
||||
err := db.Count(&total).Error
|
||||
err = db.Limit(pageSize).Offset(offset).Find(&list).Error
|
||||
biz.ErrIsNil(err, "查询配置分页列表信息失败")
|
||||
return &list, total
|
||||
}
|
||||
|
||||
func (m *sysSysConfigModelImpl) FindList(data entity.SysConfig) *[]entity.SysConfig {
|
||||
list := make([]entity.SysConfig, 0)
|
||||
|
||||
db := global.Db.Table(m.table)
|
||||
// 此处填写 where参数判断
|
||||
if data.ConfigName != "" {
|
||||
db = db.Where("config_name like ?", "%"+data.ConfigName+"%")
|
||||
}
|
||||
if data.ConfigKey != "" {
|
||||
db = db.Where("config_key like ?", "%"+data.ConfigKey+"%")
|
||||
}
|
||||
if data.ConfigType != "" {
|
||||
db = db.Where("config_type = ?", data.ConfigType)
|
||||
}
|
||||
db.Where("delete_time IS NULL")
|
||||
err := db.Order("create_time").Find(&list).Error
|
||||
biz.ErrIsNil(err, "查询配置列表信息失败")
|
||||
return &list
|
||||
}
|
||||
|
||||
func (m *sysSysConfigModelImpl) Update(data entity.SysConfig) *entity.SysConfig {
|
||||
err := global.Db.Table(m.table).Model(&data).Updates(&data).Error
|
||||
biz.ErrIsNil(err, "修改配置信息失败")
|
||||
return &data
|
||||
}
|
||||
|
||||
func (m *sysSysConfigModelImpl) Delete(configIds []int64) {
|
||||
err := global.Db.Table(m.table).Delete(&entity.SysConfig{}, "`config_id` in (?)", configIds).Error
|
||||
biz.ErrIsNil(err, "删除配置信息失败")
|
||||
return
|
||||
}
|
||||
179
apps/system/services/dept.go
Normal file
179
apps/system/services/dept.go
Normal file
@@ -0,0 +1,179 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"pandax/apps/system/entity"
|
||||
"pandax/base/biz"
|
||||
"pandax/base/global"
|
||||
)
|
||||
|
||||
type (
|
||||
SysDeptModel interface {
|
||||
Insert(data entity.SysDept) *entity.SysDept
|
||||
FindOne(deptId int64) *entity.SysDept
|
||||
FindListPage(page, pageSize int, data entity.SysDept) (*[]entity.SysDept, int64)
|
||||
FindList(data entity.SysDept) *[]entity.SysDept
|
||||
Update(data entity.SysDept) *entity.SysDept
|
||||
Delete(deptId []int64)
|
||||
SelectDept(data entity.SysDept) []entity.SysDept
|
||||
SelectDeptLable(data entity.SysDept) []entity.DeptLable
|
||||
}
|
||||
|
||||
sysDeptModelImpl struct {
|
||||
table string
|
||||
}
|
||||
)
|
||||
|
||||
var SysDeptModelDao = &sysDeptModelImpl{
|
||||
table: `sys_depts`,
|
||||
}
|
||||
|
||||
func (m *sysDeptModelImpl) Insert(data entity.SysDept) *entity.SysDept {
|
||||
biz.ErrIsNil(global.Db.Table(m.table).Create(&data).Error, "新增部门信息失败")
|
||||
return &data
|
||||
}
|
||||
|
||||
func (m *sysDeptModelImpl) FindOne(deptId int64) *entity.SysDept {
|
||||
resData := new(entity.SysDept)
|
||||
err := global.Db.Table(m.table).Where("`dept_id` = ?", deptId).First(resData).Error
|
||||
biz.ErrIsNil(err, "查询部门信息失败")
|
||||
return resData
|
||||
}
|
||||
|
||||
func (m *sysDeptModelImpl) FindListPage(page, pageSize int, data entity.SysDept) (*[]entity.SysDept, int64) {
|
||||
list := make([]entity.SysDept, 0)
|
||||
var total int64 = 0
|
||||
offset := pageSize * (page - 1)
|
||||
|
||||
db := global.Db.Table(m.table)
|
||||
// 此处填写 where参数判断
|
||||
if data.DeptId != 0 {
|
||||
db = db.Where("dept_id = ?", data.DeptId)
|
||||
}
|
||||
if data.DeptName != "" {
|
||||
db = db.Where("dept_name like ?", "%"+data.DeptName+"%")
|
||||
}
|
||||
if data.Status != "" {
|
||||
db = db.Where("status = ?", data.Status)
|
||||
}
|
||||
if data.DeptPath != "" {
|
||||
db = db.Where("deptPath like %?%", data.DeptPath)
|
||||
}
|
||||
db.Where("delete_time IS NULL")
|
||||
err := db.Count(&total).Error
|
||||
err = db.Limit(pageSize).Offset(offset).Find(&list).Error
|
||||
biz.ErrIsNil(err, "查询部门分页列表信息失败")
|
||||
return &list, total
|
||||
}
|
||||
|
||||
func (m *sysDeptModelImpl) FindList(data entity.SysDept) *[]entity.SysDept {
|
||||
list := make([]entity.SysDept, 0)
|
||||
|
||||
db := global.Db.Table(m.table)
|
||||
// 此处填写 where参数判断
|
||||
if data.DeptId != 0 {
|
||||
db = db.Where("dept_id = ?", data.DeptId)
|
||||
}
|
||||
if data.DeptName != "" {
|
||||
db = db.Where("dept_name like ?", "%"+data.DeptName+"%")
|
||||
}
|
||||
if data.Status != "" {
|
||||
db = db.Where("status = ?", data.Status)
|
||||
}
|
||||
db.Where("delete_time IS NULL")
|
||||
err := db.Order("sort").Find(&list).Error
|
||||
biz.ErrIsNil(err, "查询部门列表信息失败")
|
||||
return &list
|
||||
}
|
||||
|
||||
func (m *sysDeptModelImpl) Update(data entity.SysDept) *entity.SysDept {
|
||||
err := global.Db.Table(m.table).Model(&data).Updates(&data).Error
|
||||
biz.ErrIsNil(err, "修改部门信息失败")
|
||||
return &data
|
||||
}
|
||||
|
||||
func (m *sysDeptModelImpl) Delete(deptIds []int64) {
|
||||
err := global.Db.Table(m.table).Delete(&entity.SysDept{}, "`dept_id` in (?)", deptIds).Error
|
||||
biz.ErrIsNil(err, "删除部门信息失败")
|
||||
return
|
||||
}
|
||||
|
||||
func (m *sysDeptModelImpl) SelectDept(data entity.SysDept) []entity.SysDept {
|
||||
list := m.FindList(data)
|
||||
|
||||
sd := make([]entity.SysDept, 0)
|
||||
li := *list
|
||||
for i := 0; i < len(li); i++ {
|
||||
if li[i].ParentId != 0 {
|
||||
continue
|
||||
}
|
||||
info := Digui(list, li[i])
|
||||
|
||||
sd = append(sd, info)
|
||||
}
|
||||
return sd
|
||||
}
|
||||
|
||||
func (m *sysDeptModelImpl) SelectDeptLable(data entity.SysDept) []entity.DeptLable {
|
||||
deptlist := m.FindList(data)
|
||||
|
||||
dl := make([]entity.DeptLable, 0)
|
||||
deptl := *deptlist
|
||||
for i := 0; i < len(deptl); i++ {
|
||||
if deptl[i].ParentId != 0 {
|
||||
continue
|
||||
}
|
||||
e := entity.DeptLable{}
|
||||
e.DeptId = deptl[i].DeptId
|
||||
e.DeptName = deptl[i].DeptName
|
||||
deptsInfo := DiguiDeptLable(deptlist, e)
|
||||
|
||||
dl = append(dl, deptsInfo)
|
||||
}
|
||||
return dl
|
||||
}
|
||||
|
||||
func Digui(deptlist *[]entity.SysDept, menu entity.SysDept) entity.SysDept {
|
||||
list := *deptlist
|
||||
|
||||
min := make([]entity.SysDept, 0)
|
||||
for j := 0; j < len(list); j++ {
|
||||
|
||||
if menu.DeptId != list[j].ParentId {
|
||||
continue
|
||||
}
|
||||
mi := entity.SysDept{}
|
||||
mi.DeptId = list[j].DeptId
|
||||
mi.ParentId = list[j].ParentId
|
||||
mi.DeptPath = list[j].DeptPath
|
||||
mi.DeptName = list[j].DeptName
|
||||
mi.Sort = list[j].Sort
|
||||
mi.Leader = list[j].Leader
|
||||
mi.Phone = list[j].Phone
|
||||
mi.Email = list[j].Email
|
||||
mi.Status = list[j].Status
|
||||
mi.CreatedAt = list[j].CreatedAt
|
||||
mi.UpdatedAt = list[j].UpdatedAt
|
||||
mi.Children = []entity.SysDept{}
|
||||
ms := Digui(deptlist, mi)
|
||||
min = append(min, ms)
|
||||
}
|
||||
menu.Children = min
|
||||
return menu
|
||||
}
|
||||
func DiguiDeptLable(deptlist *[]entity.SysDept, dept entity.DeptLable) entity.DeptLable {
|
||||
list := *deptlist
|
||||
|
||||
min := make([]entity.DeptLable, 0)
|
||||
for j := 0; j < len(list); j++ {
|
||||
|
||||
if dept.DeptId != list[j].ParentId {
|
||||
continue
|
||||
}
|
||||
mi := entity.DeptLable{list[j].DeptId, list[j].DeptName, []entity.DeptLable{}}
|
||||
ms := DiguiDeptLable(deptlist, mi)
|
||||
min = append(min, ms)
|
||||
|
||||
}
|
||||
dept.Children = min
|
||||
return dept
|
||||
}
|
||||
94
apps/system/services/dict_data.go
Normal file
94
apps/system/services/dict_data.go
Normal file
@@ -0,0 +1,94 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"pandax/apps/system/entity"
|
||||
"pandax/base/biz"
|
||||
"pandax/base/global"
|
||||
)
|
||||
|
||||
type (
|
||||
SysDictDataModel interface {
|
||||
Insert(data entity.SysDictData) *entity.SysDictData
|
||||
FindOne(dictCode int64) *entity.SysDictData
|
||||
FindListPage(page, pageSize int, data entity.SysDictData) (*[]entity.SysDictData, int64)
|
||||
FindList(data entity.SysDictData) *[]entity.SysDictData
|
||||
Update(data entity.SysDictData) *entity.SysDictData
|
||||
Delete(dictCode []int64)
|
||||
}
|
||||
|
||||
sysDictDataModelImpl struct {
|
||||
table string
|
||||
}
|
||||
)
|
||||
|
||||
var SysDictDataModelDao = &sysDictDataModelImpl{
|
||||
table: `sys_dict_data`,
|
||||
}
|
||||
|
||||
func (m *sysDictDataModelImpl) Insert(data entity.SysDictData) *entity.SysDictData {
|
||||
err := global.Db.Table(m.table).Create(&data).Error
|
||||
biz.ErrIsNil(err, "新增字典数据失败")
|
||||
return &data
|
||||
}
|
||||
|
||||
func (m *sysDictDataModelImpl) FindOne(codeId int64) *entity.SysDictData {
|
||||
resData := new(entity.SysDictData)
|
||||
err := global.Db.Table(m.table).Where("`dict_code` = ?", codeId).First(resData).Error
|
||||
biz.ErrIsNil(err, "查询字典数据信息失败")
|
||||
return resData
|
||||
}
|
||||
|
||||
func (m *sysDictDataModelImpl) FindListPage(page, pageSize int, data entity.SysDictData) (*[]entity.SysDictData, int64) {
|
||||
list := make([]entity.SysDictData, 0)
|
||||
var total int64 = 0
|
||||
offset := pageSize * (page - 1)
|
||||
|
||||
db := global.Db.Table(m.table)
|
||||
// 此处填写 where参数判断
|
||||
if data.DictLabel != "" {
|
||||
db = db.Where("dict_label = ?", data.DictLabel)
|
||||
}
|
||||
if data.Status != "" {
|
||||
db = db.Where("status = ?", data.Status)
|
||||
}
|
||||
if data.DictType != "" {
|
||||
db = db.Where("dict_type = ?", data.DictType)
|
||||
}
|
||||
db.Where("delete_time IS NULL")
|
||||
err := db.Count(&total).Error
|
||||
err = db.Order("dict_sort").Limit(pageSize).Offset(offset).Find(&list).Error
|
||||
biz.ErrIsNil(err, "查询字典数据分页列表信息失败")
|
||||
return &list, total
|
||||
}
|
||||
|
||||
func (m *sysDictDataModelImpl) FindList(data entity.SysDictData) *[]entity.SysDictData {
|
||||
list := make([]entity.SysDictData, 0)
|
||||
|
||||
db := global.Db.Table(m.table)
|
||||
// 此处填写 where参数判断
|
||||
if data.DictLabel != "" {
|
||||
db = db.Where("dict_label like ?", "%"+data.DictLabel+"%")
|
||||
}
|
||||
if data.Status != "" {
|
||||
db = db.Where("status = ?", data.Status)
|
||||
}
|
||||
if data.DictType != "" {
|
||||
db = db.Where("dict_type = ?", data.DictType)
|
||||
}
|
||||
db.Where("delete_time IS NULL")
|
||||
err := db.Order("dict_sort").Find(&list).Error
|
||||
biz.ErrIsNil(err, "查询字典数据列表信息失败")
|
||||
return &list
|
||||
}
|
||||
|
||||
func (m *sysDictDataModelImpl) Update(data entity.SysDictData) *entity.SysDictData {
|
||||
err := global.Db.Table(m.table).Where("dict_code = ?", data.DictCode).Updates(&data).Error
|
||||
biz.ErrIsNil(err, "修改字典数据信息失败")
|
||||
return &data
|
||||
}
|
||||
|
||||
func (m *sysDictDataModelImpl) Delete(codeIds []int64) {
|
||||
err := global.Db.Table(m.table).Delete(&entity.SysDept{}, "`dict_code` in (?)", codeIds).Error
|
||||
biz.ErrIsNil(err, "删除字典数据信息失败")
|
||||
return
|
||||
}
|
||||
94
apps/system/services/dict_type.go
Normal file
94
apps/system/services/dict_type.go
Normal file
@@ -0,0 +1,94 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"pandax/apps/system/entity"
|
||||
"pandax/base/biz"
|
||||
"pandax/base/global"
|
||||
)
|
||||
|
||||
type (
|
||||
SysDictTypeModel interface {
|
||||
Insert(data entity.SysDictType) *entity.SysDictType
|
||||
FindOne(deptId int64) *entity.SysDictType
|
||||
FindListPage(page, pageSize int, data entity.SysDictType) (*[]entity.SysDictType, int64)
|
||||
FindList(data entity.SysDictType) *[]entity.SysDictType
|
||||
Update(data entity.SysDictType) *entity.SysDictType
|
||||
Delete(deptId []int64)
|
||||
}
|
||||
|
||||
sysDictTypeModelImpl struct {
|
||||
table string
|
||||
}
|
||||
)
|
||||
|
||||
var SysDictTypeModelDao = &sysDictTypeModelImpl{
|
||||
table: `sys_dict_types`,
|
||||
}
|
||||
|
||||
func (m *sysDictTypeModelImpl) Insert(data entity.SysDictType) *entity.SysDictType {
|
||||
err := global.Db.Table(m.table).Create(&data).Error
|
||||
biz.ErrIsNil(err, "新增字典类型失败")
|
||||
return &data
|
||||
}
|
||||
|
||||
func (m *sysDictTypeModelImpl) FindOne(dictId int64) *entity.SysDictType {
|
||||
resData := new(entity.SysDictType)
|
||||
err := global.Db.Table(m.table).Where("`dict_id` = ?", dictId).First(resData).Error
|
||||
biz.ErrIsNil(err, "查询字典类型信息失败")
|
||||
return resData
|
||||
}
|
||||
|
||||
func (m *sysDictTypeModelImpl) FindListPage(page, pageSize int, data entity.SysDictType) (*[]entity.SysDictType, int64) {
|
||||
list := make([]entity.SysDictType, 0)
|
||||
var total int64 = 0
|
||||
offset := pageSize * (page - 1)
|
||||
|
||||
db := global.Db.Table(m.table)
|
||||
// 此处填写 where参数判断
|
||||
if data.DictName != "" {
|
||||
db = db.Where("dict_name like ?", "%"+data.DictName+"%")
|
||||
}
|
||||
if data.DictType != "" {
|
||||
db = db.Where("dict_type like ?", "%"+data.DictType+"%")
|
||||
}
|
||||
if data.Status != "" {
|
||||
db = db.Where("status = ?", data.Status)
|
||||
}
|
||||
db.Where("delete_time IS NULL")
|
||||
err := db.Count(&total).Error
|
||||
err = db.Limit(pageSize).Offset(offset).Find(&list).Error
|
||||
biz.ErrIsNil(err, "查询字典类型分页列表信息失败")
|
||||
return &list, total
|
||||
}
|
||||
|
||||
func (m *sysDictTypeModelImpl) FindList(data entity.SysDictType) *[]entity.SysDictType {
|
||||
list := make([]entity.SysDictType, 0)
|
||||
|
||||
db := global.Db.Table(m.table)
|
||||
// 此处填写 where参数判断
|
||||
if data.DictName != "" {
|
||||
db = db.Where("dict_name like ?", "%"+data.DictName+"%")
|
||||
}
|
||||
if data.DictType != "" {
|
||||
db = db.Where("dict_type like ?", "%"+data.DictType+"%")
|
||||
}
|
||||
if data.Status != "" {
|
||||
db = db.Where("status = ?", data.Status)
|
||||
}
|
||||
db.Where("delete_time IS NULL")
|
||||
err := db.Order("create_time").Find(&list).Error
|
||||
biz.ErrIsNil(err, "查询字典类型列表信息失败")
|
||||
return &list
|
||||
}
|
||||
|
||||
func (m *sysDictTypeModelImpl) Update(data entity.SysDictType) *entity.SysDictType {
|
||||
err := global.Db.Table(m.table).Where("dict_id = ?", data.DictId).Updates(&data).Error
|
||||
biz.ErrIsNil(err, "修改字典类型信息失败")
|
||||
return &data
|
||||
}
|
||||
|
||||
func (m *sysDictTypeModelImpl) Delete(dictIds []int64) {
|
||||
err := global.Db.Table(m.table).Delete(&entity.SysDictType{}, "`dict_id` in (?)", dictIds).Error
|
||||
biz.ErrIsNil(err, "删除字典类型信息失败")
|
||||
return
|
||||
}
|
||||
249
apps/system/services/menu.go
Normal file
249
apps/system/services/menu.go
Normal file
@@ -0,0 +1,249 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"pandax/apps/system/entity"
|
||||
"pandax/base/biz"
|
||||
"pandax/base/global"
|
||||
)
|
||||
|
||||
type (
|
||||
SysMenuModel interface {
|
||||
Insert(data entity.SysMenu) *entity.SysMenu
|
||||
FindOne(menuId int64) *entity.SysMenu
|
||||
FindListPage(page, pageSize int, data entity.SysMenu) (*[]entity.SysMenu, int64)
|
||||
FindList(data entity.SysMenu) *[]entity.SysMenu
|
||||
Update(data entity.SysMenu) *entity.SysMenu
|
||||
Delete(menuId []int64)
|
||||
SelectMenu(data entity.SysMenu) *[]entity.SysMenu
|
||||
SelectMenuLable(data entity.SysMenu) *[]entity.MenuLable
|
||||
SelectMenuRole(roleName string) *[]entity.SysMenu
|
||||
GetMenuRole(data entity.MenuRole) *[]entity.MenuRole
|
||||
}
|
||||
|
||||
sysMenuModelImpl struct {
|
||||
table string
|
||||
}
|
||||
)
|
||||
|
||||
var SysMenuModelDao SysMenuModel = &sysMenuModelImpl{
|
||||
table: `sys_menus`,
|
||||
}
|
||||
|
||||
func (m *sysMenuModelImpl) Insert(data entity.SysMenu) *entity.SysMenu {
|
||||
err := global.Db.Table(m.table).Create(&data).Error
|
||||
biz.ErrIsNil(err, "添加菜单失败")
|
||||
//m.InitPaths(&data)
|
||||
return &data
|
||||
}
|
||||
|
||||
func (m *sysMenuModelImpl) FindOne(menuId int64) *entity.SysMenu {
|
||||
resData := new(entity.SysMenu)
|
||||
err := global.Db.Table(m.table).Where("`menu_id` = ?", menuId).First(resData).Error
|
||||
biz.ErrIsNil(err, "查询菜单失败")
|
||||
return resData
|
||||
}
|
||||
|
||||
func (m *sysMenuModelImpl) FindListPage(page, pageSize int, data entity.SysMenu) (*[]entity.SysMenu, int64) {
|
||||
list := make([]entity.SysMenu, 0)
|
||||
var total int64 = 0
|
||||
|
||||
offset := pageSize * (page - 1)
|
||||
db := global.Db.Table(m.table)
|
||||
// 此处填写 where参数判断
|
||||
db.Where("delete_time IS NULL")
|
||||
err := db.Count(&total).Error
|
||||
err = db.Limit(pageSize).Offset(offset).Find(&list).Error
|
||||
biz.ErrIsNil(err, "查询分页菜单失败")
|
||||
return &list, total
|
||||
}
|
||||
|
||||
func (m *sysMenuModelImpl) FindList(data entity.SysMenu) *[]entity.SysMenu {
|
||||
list := make([]entity.SysMenu, 0)
|
||||
|
||||
db := global.Db.Table(m.table)
|
||||
// 此处填写 where参数判断
|
||||
if data.MenuName != "" {
|
||||
db = db.Where("menu_name like ?", "%"+data.MenuName+"%")
|
||||
}
|
||||
if data.Path != "" {
|
||||
db = db.Where("path = ?", data.Path)
|
||||
}
|
||||
if data.MenuType != "" {
|
||||
db = db.Where("menu_type = ?", data.MenuType)
|
||||
}
|
||||
if data.Title != "" {
|
||||
db = db.Where("title like ?", "%"+data.Title+"%")
|
||||
}
|
||||
if data.Status != "" {
|
||||
db = db.Where("status = ?", data.Status)
|
||||
}
|
||||
db.Where("delete_time IS NULL")
|
||||
err := db.Order("sort").Find(&list).Error
|
||||
biz.ErrIsNil(err, "查询菜单列表失败")
|
||||
return &list
|
||||
}
|
||||
|
||||
func (m *sysMenuModelImpl) Update(data entity.SysMenu) *entity.SysMenu {
|
||||
err := global.Db.Table(m.table).Updates(&data).Error
|
||||
biz.ErrIsNil(err, "修改菜单失败")
|
||||
//m.InitPaths(&data)
|
||||
return &data
|
||||
}
|
||||
|
||||
func (m *sysMenuModelImpl) Delete(menuIds []int64) {
|
||||
err := global.Db.Table(m.table).Delete(&entity.SysMenu{}, "`menu_id` in (?)", menuIds).Error
|
||||
biz.ErrIsNil(err, "修改菜单失败")
|
||||
return
|
||||
}
|
||||
|
||||
func (m *sysMenuModelImpl) SelectMenu(data entity.SysMenu) *[]entity.SysMenu {
|
||||
menuList := m.FindList(data)
|
||||
|
||||
redData := make([]entity.SysMenu, 0)
|
||||
ml := *menuList
|
||||
for i := 0; i < len(ml); i++ {
|
||||
if ml[i].ParentId != 0 {
|
||||
continue
|
||||
}
|
||||
menusInfo := DiguiMenu(menuList, ml[i])
|
||||
redData = append(redData, menusInfo)
|
||||
}
|
||||
return &redData
|
||||
}
|
||||
|
||||
func (m *sysMenuModelImpl) SelectMenuLable(data entity.SysMenu) *[]entity.MenuLable {
|
||||
menuList := m.FindList(data)
|
||||
|
||||
redData := make([]entity.MenuLable, 0)
|
||||
ml := *menuList
|
||||
for i := 0; i < len(ml); i++ {
|
||||
if ml[i].ParentId != 0 {
|
||||
continue
|
||||
}
|
||||
e := entity.MenuLable{}
|
||||
e.MenuId = ml[i].MenuId
|
||||
e.MenuName = ml[i].MenuName
|
||||
menusInfo := DiguiMenuLable(menuList, e)
|
||||
|
||||
redData = append(redData, menusInfo)
|
||||
}
|
||||
return &redData
|
||||
}
|
||||
|
||||
func (m *sysMenuModelImpl) GetMenuByRoleKey(roleKey string) *[]entity.SysMenu {
|
||||
menus := make([]entity.SysMenu, 0)
|
||||
db := global.Db.Table(m.table).Select("sys_menus.*").Joins("left join sys_role_menus on sys_role_menus.menu_id=sys_menus.menu_id")
|
||||
db = db.Where("sys_role_menus.role_name=? and menu_type in ('M','C')", roleKey)
|
||||
db.Where("sys_menus.delete_time IS NULL")
|
||||
err := db.Order("sort").Find(&menus).Error
|
||||
biz.ErrIsNil(err, "通过角色名查询菜单失败")
|
||||
return &menus
|
||||
}
|
||||
|
||||
func (m *sysMenuModelImpl) SelectMenuRole(roleKey string) *[]entity.SysMenu {
|
||||
redData := make([]entity.SysMenu, 0)
|
||||
|
||||
menulist := m.GetMenuByRoleKey(roleKey)
|
||||
menuList := *menulist
|
||||
redData = make([]entity.SysMenu, 0)
|
||||
for i := 0; i < len(menuList); i++ {
|
||||
if menuList[i].ParentId != 0 {
|
||||
continue
|
||||
}
|
||||
menusInfo := DiguiMenu(&menuList, menuList[i])
|
||||
|
||||
redData = append(redData, menusInfo)
|
||||
}
|
||||
return &redData
|
||||
}
|
||||
func (m *sysMenuModelImpl) GetMenuRole(data entity.MenuRole) *[]entity.MenuRole {
|
||||
menus := make([]entity.MenuRole, 0)
|
||||
|
||||
db := global.Db.Table(m.table)
|
||||
if data.MenuName != "" {
|
||||
db = db.Where("menu_name = ?", data.MenuName)
|
||||
}
|
||||
db.Where("delete_time IS NULL")
|
||||
biz.ErrIsNil(db.Order("sort").Find(&menus).Error, "查询角色菜单失败")
|
||||
return &menus
|
||||
}
|
||||
|
||||
//func (m *sysMenuModelImpl) InitPaths(menu *entity.SysMenu) {
|
||||
// parentMenu := new(entity.SysMenu)
|
||||
// if int(menu.ParentId) != 0 {
|
||||
// parentMenu = m.FindOne(menu.ParentId)
|
||||
// biz.IsTrue(parentMenu.Paths != "", "父级paths异常,请尝试对当前节点父级菜单进行更新操作!")
|
||||
// menu.Paths = parentMenu.Paths + "/" + kgo.KConv.Int2Str(menu.MenuId)
|
||||
// } else {
|
||||
// menu.Paths = "/0/" + kgo.KConv.Int2Str(menu.MenuId)
|
||||
// }
|
||||
// global.Db.Table(m.table).Where("menu_id = ?", menu.MenuId).Update("paths", menu.Paths)
|
||||
// return
|
||||
//}
|
||||
|
||||
func DiguiMenu(menulist *[]entity.SysMenu, menu entity.SysMenu) entity.SysMenu {
|
||||
list := *menulist
|
||||
|
||||
min := make([]entity.SysMenu, 0)
|
||||
for j := 0; j < len(list); j++ {
|
||||
|
||||
if menu.MenuId != list[j].ParentId {
|
||||
continue
|
||||
}
|
||||
mi := entity.SysMenu{}
|
||||
mi.MenuId = list[j].MenuId
|
||||
mi.MenuName = list[j].MenuName
|
||||
mi.Title = list[j].Title
|
||||
mi.Icon = list[j].Icon
|
||||
mi.Path = list[j].Path
|
||||
mi.MenuType = list[j].MenuType
|
||||
mi.IsKeepAlive = list[j].IsKeepAlive
|
||||
mi.Permission = list[j].Permission
|
||||
mi.ParentId = list[j].ParentId
|
||||
mi.IsAffix = list[j].IsAffix
|
||||
mi.IsLink = list[j].IsLink
|
||||
mi.Component = list[j].Component
|
||||
mi.Sort = list[j].Sort
|
||||
mi.Status = list[j].Status
|
||||
mi.IsHide = list[j].IsHide
|
||||
mi.CreatedAt = list[j].CreatedAt
|
||||
mi.UpdatedAt = list[j].UpdatedAt
|
||||
mi.Children = []entity.SysMenu{}
|
||||
|
||||
if mi.MenuType != "F" {
|
||||
ms := DiguiMenu(menulist, mi)
|
||||
min = append(min, ms)
|
||||
|
||||
} else {
|
||||
min = append(min, mi)
|
||||
}
|
||||
|
||||
}
|
||||
menu.Children = min
|
||||
return menu
|
||||
}
|
||||
|
||||
func DiguiMenuLable(menulist *[]entity.SysMenu, menu entity.MenuLable) entity.MenuLable {
|
||||
list := *menulist
|
||||
|
||||
min := make([]entity.MenuLable, 0)
|
||||
for j := 0; j < len(list); j++ {
|
||||
|
||||
if menu.MenuId != list[j].ParentId {
|
||||
continue
|
||||
}
|
||||
mi := entity.MenuLable{}
|
||||
mi.MenuId = list[j].MenuId
|
||||
mi.MenuName = list[j].MenuName
|
||||
mi.Children = []entity.MenuLable{}
|
||||
if list[j].MenuType != "F" {
|
||||
ms := DiguiMenuLable(menulist, mi)
|
||||
min = append(min, ms)
|
||||
} else {
|
||||
min = append(min, mi)
|
||||
}
|
||||
|
||||
}
|
||||
menu.Children = min
|
||||
return menu
|
||||
}
|
||||
94
apps/system/services/post.go
Normal file
94
apps/system/services/post.go
Normal file
@@ -0,0 +1,94 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"pandax/apps/system/entity"
|
||||
"pandax/base/biz"
|
||||
"pandax/base/global"
|
||||
)
|
||||
|
||||
type (
|
||||
SysPostModel interface {
|
||||
Insert(data entity.SysPost) *entity.SysPost
|
||||
FindOne(postId int64) *entity.SysPost
|
||||
FindListPage(page, pageSize int, data entity.SysPost) (*[]entity.SysPost, int64)
|
||||
FindList(data entity.SysPost) *[]entity.SysPost
|
||||
Update(data entity.SysPost) *entity.SysPost
|
||||
Delete(postId []int64)
|
||||
}
|
||||
|
||||
sysPostModelImpl struct {
|
||||
table string
|
||||
}
|
||||
)
|
||||
|
||||
var SysPostModelDao SysPostModel = &sysPostModelImpl{
|
||||
table: `sys_posts`,
|
||||
}
|
||||
|
||||
func (m *sysPostModelImpl) Insert(data entity.SysPost) *entity.SysPost {
|
||||
err := global.Db.Table(m.table).Create(&data).Error
|
||||
biz.ErrIsNil(err, "添加岗位失败")
|
||||
return &data
|
||||
}
|
||||
|
||||
func (m *sysPostModelImpl) FindOne(postId int64) *entity.SysPost {
|
||||
resData := new(entity.SysPost)
|
||||
err := global.Db.Table(m.table).Where("`post_id` = ?", postId).First(resData).Error
|
||||
biz.ErrIsNil(err, "查询岗位失败")
|
||||
return resData
|
||||
}
|
||||
|
||||
func (m *sysPostModelImpl) FindListPage(page, pageSize int, data entity.SysPost) (*[]entity.SysPost, int64) {
|
||||
list := make([]entity.SysPost, 0)
|
||||
var total int64 = 0
|
||||
offset := pageSize * (page - 1)
|
||||
db := global.Db.Table(m.table)
|
||||
// 此处填写 where参数判断
|
||||
if data.PostId != 0 {
|
||||
db = db.Where("post_id = ?", data.PostId)
|
||||
}
|
||||
if data.PostName != "" {
|
||||
db = db.Where("post_name like ?", "%"+data.PostName+"%")
|
||||
}
|
||||
if data.PostCode != "" {
|
||||
db = db.Where("post_code like ?", "%"+data.PostCode+"%")
|
||||
}
|
||||
if data.Status != "" {
|
||||
db = db.Where("status = ?", data.Status)
|
||||
}
|
||||
db.Where("delete_time IS NULL")
|
||||
err := db.Count(&total).Error
|
||||
err = db.Order("sort").Limit(pageSize).Offset(offset).Find(&list).Error
|
||||
biz.ErrIsNil(err, "查询岗位分页列表失败")
|
||||
return &list, total
|
||||
}
|
||||
|
||||
func (m *sysPostModelImpl) FindList(data entity.SysPost) *[]entity.SysPost {
|
||||
list := make([]entity.SysPost, 0)
|
||||
db := global.Db.Table(m.table)
|
||||
// 此处填写 where参数判断
|
||||
if data.PostId != 0 {
|
||||
db = db.Where("post_id = ?", data.PostId)
|
||||
}
|
||||
if data.PostName != "" {
|
||||
db = db.Where("post_name = ?", data.PostName)
|
||||
}
|
||||
if data.PostCode != "" {
|
||||
db = db.Where("post_code = ?", data.PostCode)
|
||||
}
|
||||
if data.Status != "" {
|
||||
db = db.Where("status = ?", data.Status)
|
||||
}
|
||||
db.Where("delete_time IS NULL")
|
||||
biz.ErrIsNil(db.Order("sort").Find(&list).Error, "查询岗位列表失败")
|
||||
return &list
|
||||
}
|
||||
|
||||
func (m *sysPostModelImpl) Update(data entity.SysPost) *entity.SysPost {
|
||||
biz.ErrIsNil(global.Db.Table(m.table).Updates(&data).Error, "修改岗位失败")
|
||||
return &data
|
||||
}
|
||||
|
||||
func (m *sysPostModelImpl) Delete(postIds []int64) {
|
||||
biz.ErrIsNil(global.Db.Table(m.table).Delete(&entity.SysPost{}, "`post_id` in (?)", postIds).Error, "删除岗位失败")
|
||||
}
|
||||
132
apps/system/services/role.go
Normal file
132
apps/system/services/role.go
Normal file
@@ -0,0 +1,132 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"pandax/apps/system/entity"
|
||||
"pandax/base/biz"
|
||||
"pandax/base/global"
|
||||
)
|
||||
|
||||
type (
|
||||
SysRoleModel interface {
|
||||
Insert(data entity.SysRole) *entity.SysRole
|
||||
FindOne(roleId int64) *entity.SysRole
|
||||
FindListPage(page, pageSize int, data entity.SysRole) (list *[]entity.SysRole, total int64)
|
||||
FindList(data entity.SysRole) (list *[]entity.SysRole)
|
||||
Update(data entity.SysRole) *entity.SysRole
|
||||
Delete(roleId []int64)
|
||||
GetRoleMeunId(data entity.SysRole) []int64
|
||||
GetRoleDeptId(data entity.SysRole) []int64
|
||||
}
|
||||
|
||||
sysRoleModel struct {
|
||||
table string
|
||||
}
|
||||
)
|
||||
|
||||
var SysRoleModelDao SysRoleModel = &sysRoleModel{
|
||||
table: `sys_roles`,
|
||||
}
|
||||
|
||||
func (m *sysRoleModel) Insert(data entity.SysRole) *entity.SysRole {
|
||||
var i int64 = 0
|
||||
global.Db.Table(m.table).Where("(role_name = ? or role_key = ?) and `delete_time` IS NULL", data.RoleName, data.RoleKey).Count(&i)
|
||||
biz.IsTrue(i == 0, "角色名称或者角色标识已经存在!")
|
||||
|
||||
data.UpdateBy = ""
|
||||
err := global.Db.Table(m.table).Create(&data).Error
|
||||
biz.ErrIsNil(err, "添加角色失败")
|
||||
|
||||
return &data
|
||||
}
|
||||
|
||||
func (m *sysRoleModel) FindOne(roleId int64) *entity.SysRole {
|
||||
resData := new(entity.SysRole)
|
||||
biz.ErrIsNil(global.Db.Table(m.table).Where("`role_id` = ?", roleId).First(resData).Error, "查询角色失败")
|
||||
return resData
|
||||
}
|
||||
|
||||
func (m *sysRoleModel) FindListPage(page, pageSize int, data entity.SysRole) (*[]entity.SysRole, int64) {
|
||||
|
||||
list := make([]entity.SysRole, 0)
|
||||
var total int64 = 0
|
||||
|
||||
offset := pageSize * (page - 1)
|
||||
db := global.Db.Table(m.table)
|
||||
// 此处填写 where参数判断
|
||||
if data.RoleId != 0 {
|
||||
db = db.Where("role_id = ?", data.RoleId)
|
||||
}
|
||||
if data.RoleName != "" {
|
||||
db = db.Where("role_name like ?", "%"+data.RoleName+"%")
|
||||
}
|
||||
if data.Status != "" {
|
||||
db = db.Where("status = ?", data.Status)
|
||||
}
|
||||
if data.RoleKey != "" {
|
||||
db = db.Where("role_key like ?", "%"+data.RoleKey+"%")
|
||||
}
|
||||
db.Where("delete_time IS NULL")
|
||||
err := db.Count(&total).Error
|
||||
err = db.Order("role_sort").Limit(pageSize).Offset(offset).Find(&list).Error
|
||||
biz.ErrIsNil(err, "查询角色分页列表失败")
|
||||
return &list, total
|
||||
}
|
||||
|
||||
func (m *sysRoleModel) FindList(data entity.SysRole) *[]entity.SysRole {
|
||||
list := make([]entity.SysRole, 0)
|
||||
db := global.Db.Table(m.table)
|
||||
// 此处填写 where参数判断
|
||||
if data.RoleName != "" {
|
||||
db = db.Where("role_name like ?", "%"+data.RoleName+"%")
|
||||
}
|
||||
if data.Status != "" {
|
||||
db = db.Where("status = ?", data.Status)
|
||||
}
|
||||
if data.RoleKey != "" {
|
||||
db = db.Where("role_key like ?", "%"+data.RoleKey+"%")
|
||||
}
|
||||
db.Where("delete_time IS NULL")
|
||||
biz.ErrIsNil(db.Order("role_sort").Find(&list).Error, "查询角色列表失败")
|
||||
return &list
|
||||
}
|
||||
|
||||
func (m *sysRoleModel) Update(data entity.SysRole) *entity.SysRole {
|
||||
update := new(entity.SysRole)
|
||||
biz.ErrIsNil(global.Db.Table(m.table).First(update, data.RoleId).Error, "查询角色失败")
|
||||
if data.RoleKey != "" && data.RoleKey != update.RoleKey {
|
||||
biz.ErrIsNil(errors.New("角色标识不允许修改!"), "角色标识不允许修改!")
|
||||
}
|
||||
biz.ErrIsNil(global.Db.Table(m.table).Updates(&data).Error, "修改角色失败")
|
||||
return &data
|
||||
}
|
||||
|
||||
func (m *sysRoleModel) Delete(roleIds []int64) {
|
||||
biz.ErrIsNil(global.Db.Table(m.table).Delete(&entity.SysRole{}, "`role_id` in (?)", roleIds).Error, "删除角色失败")
|
||||
return
|
||||
}
|
||||
|
||||
// 获取角色对应的菜单ids
|
||||
func (m *sysRoleModel) GetRoleMeunId(data entity.SysRole) []int64 {
|
||||
menuIds := make([]int64, 0)
|
||||
menuList := make([]entity.MenuIdList, 0)
|
||||
err := global.Db.Table("sys_menus").Select("sys_menus.menu_id").Joins("LEFT JOIN sys_role_menus on sys_role_menus.menu_id=sys_menus.menu_id").Where("sys_role_menus.role_id = ? ", data.RoleId).Where("sys_menus.menu_id not in (select sys_menus.parent_id from sys_menus LEFT JOIN sys_role_menus on sys_menus.menu_id=sys_role_menus.menu_id where sys_role_menus.role_id =? )", data.RoleId).Find(&menuList).Error
|
||||
|
||||
biz.ErrIsNil(err, "查询角色菜单列表失败")
|
||||
for i := 0; i < len(menuList); i++ {
|
||||
menuIds = append(menuIds, menuList[i].MenuId)
|
||||
}
|
||||
return menuIds
|
||||
}
|
||||
|
||||
func (m *sysRoleModel) GetRoleDeptId(data entity.SysRole) []int64 {
|
||||
deptIds := make([]int64, 0)
|
||||
deptList := make([]entity.DeptIdList, 0)
|
||||
err := global.Db.Table("sys_role_depts").Select("sys_role_depts.dept_id").Joins("LEFT JOIN sys_depts on sys_depts.dept_id=sys_role_depts.dept_id").Where("role_id = ? ", data.RoleId).Where(" sys_role_depts.dept_id not in(select sys_depts.parent_id from sys_role_depts LEFT JOIN sys_depts on sys_depts.dept_id=sys_role_depts.dept_id where role_id =? )", data.RoleId).Find(&deptList).Error
|
||||
biz.ErrIsNil(err, "查询角色部门列表失败")
|
||||
|
||||
for i := 0; i < len(deptList); i++ {
|
||||
deptIds = append(deptIds, deptList[i].DeptId)
|
||||
}
|
||||
return deptIds
|
||||
}
|
||||
43
apps/system/services/role_dept.go
Normal file
43
apps/system/services/role_dept.go
Normal file
@@ -0,0 +1,43 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"pandax/apps/system/entity"
|
||||
"pandax/base/biz"
|
||||
"pandax/base/global"
|
||||
)
|
||||
|
||||
type (
|
||||
SysRoleDeptModel interface {
|
||||
Insert(roleId int64, deptIds []int64) bool
|
||||
Delete(rm entity.SysRoleDept)
|
||||
}
|
||||
|
||||
sysRoleDeptImpl struct {
|
||||
table string
|
||||
}
|
||||
)
|
||||
|
||||
var SysRoleDeptModelDao SysRoleDeptModel = &sysRoleDeptImpl{
|
||||
table: `sys_role_depts`,
|
||||
}
|
||||
|
||||
func (m *sysRoleDeptImpl) Insert(roleId int64, deptIds []int64) bool {
|
||||
sql := "INSERT INTO `sys_role_depts` (`role_id`,`dept_id`) VALUES "
|
||||
|
||||
for i := 0; i < len(deptIds); i++ {
|
||||
if len(deptIds)-1 == i {
|
||||
//最后一条数据 以分号结尾
|
||||
sql += fmt.Sprintf("(%d,%d);", roleId, deptIds[i])
|
||||
} else {
|
||||
sql += fmt.Sprintf("(%d,%d),", roleId, deptIds[i])
|
||||
}
|
||||
}
|
||||
global.Db.Exec(sql)
|
||||
return true
|
||||
}
|
||||
|
||||
func (m *sysRoleDeptImpl) Delete(rm entity.SysRoleDept) {
|
||||
biz.ErrIsNil(global.Db.Table(m.table).Where("role_id = ?", rm.RoleId).Delete(&rm).Error, "删除角色失败")
|
||||
return
|
||||
}
|
||||
124
apps/system/services/role_menu.go
Normal file
124
apps/system/services/role_menu.go
Normal file
@@ -0,0 +1,124 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"pandax/apps/system/entity"
|
||||
"pandax/base/biz"
|
||||
"pandax/base/global"
|
||||
)
|
||||
|
||||
type (
|
||||
SysRoleMenuModel interface {
|
||||
Insert(roleId int64, menuId []int64) bool
|
||||
FindList(data entity.SysRoleMenu) *[]entity.SysRoleMenu
|
||||
Update(data entity.SysRoleMenu) *entity.SysRoleMenu
|
||||
Delete(RoleId int64, MenuID int64)
|
||||
GetPermis(roleId int64) []string
|
||||
GetMenuPaths(rm entity.SysRoleMenu) []entity.MenuPath
|
||||
DeleteRoleMenu(RoleId int64)
|
||||
DeleteRoleMenus(roleIds []int64)
|
||||
}
|
||||
|
||||
sysRoleMenuImpl struct {
|
||||
table string
|
||||
}
|
||||
)
|
||||
|
||||
var SysRoleMenuModelDao SysRoleMenuModel = &sysRoleMenuImpl{
|
||||
table: `sys_role_menus`,
|
||||
}
|
||||
|
||||
func (m *sysRoleMenuImpl) Insert(roleId int64, menuId []int64) bool {
|
||||
|
||||
var role entity.SysRole
|
||||
biz.ErrIsNil(global.Db.Table("sys_roles").Where("role_id = ?", roleId).First(&role).Error, "查询角色失败")
|
||||
|
||||
var menu []entity.SysMenu
|
||||
biz.ErrIsNil(global.Db.Table("sys_menus").Where("menu_id in (?)", menuId).Find(&menu).Error, "查询菜单失败")
|
||||
|
||||
//拼接 sql 串
|
||||
sql := "INSERT INTO `sys_role_menus` (`role_id`,`menu_id`,`role_name`) VALUES "
|
||||
|
||||
for i := 0; i < len(menu); i++ {
|
||||
if len(menu)-1 == i {
|
||||
//最后一条数据 以分号结尾
|
||||
sql += fmt.Sprintf("(%d,%d,'%s');", role.RoleId, menu[i].MenuId, role.RoleKey)
|
||||
} else {
|
||||
sql += fmt.Sprintf("(%d,%d,'%s'),", role.RoleId, menu[i].MenuId, role.RoleKey)
|
||||
}
|
||||
}
|
||||
biz.ErrIsNil(global.Db.Exec(sql).Error, "新增角色菜单失败")
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func (m *sysRoleMenuImpl) FindList(data entity.SysRoleMenu) *[]entity.SysRoleMenu {
|
||||
list := make([]entity.SysRoleMenu, 0)
|
||||
db := global.Db.Table(m.table)
|
||||
// 此处填写 where参数判断
|
||||
if data.RoleId != 0 {
|
||||
db = db.Where("role_id = ?", data.RoleId)
|
||||
}
|
||||
biz.ErrIsNil(db.Find(&list).Error, "查询角色菜单失败")
|
||||
return &list
|
||||
}
|
||||
|
||||
// 查询权限标识
|
||||
func (m *sysRoleMenuImpl) GetPermis(roleId int64) []string {
|
||||
var r []entity.SysMenu
|
||||
db := global.Db.Select("sys_menus.permission").Table("sys_menus").Joins("left join sys_role_menus on sys_menus.menu_id = sys_role_menus.menu_id")
|
||||
|
||||
db = db.Where("role_id = ?", roleId)
|
||||
|
||||
db = db.Where("sys_menus.menu_type in ('F','C')")
|
||||
|
||||
biz.ErrIsNil(db.Find(&r).Error, "查询查询权限标识列表失败")
|
||||
|
||||
var list []string
|
||||
for i := 0; i < len(r); i++ {
|
||||
list = append(list, r[i].Permission)
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
func (m *sysRoleMenuImpl) GetMenuPaths(rm entity.SysRoleMenu) []entity.MenuPath {
|
||||
var r []entity.MenuPath
|
||||
db := global.Db.Select("sys_menus.path").Table(m.table)
|
||||
db = db.Joins("left join sys_roles on sys_roles.role_id=sys_role_menus.role_id")
|
||||
db = db.Joins("left join sys_menus on sys_menus.id=sys_role_menus.menu_id")
|
||||
db = db.Where("sys_roles.role_key = ? and sys_menus.type=1", rm.RoleName)
|
||||
|
||||
biz.ErrIsNil(db.Find(&r).Error, "查询菜单路径失败")
|
||||
return r
|
||||
}
|
||||
|
||||
func (m *sysRoleMenuImpl) Update(data entity.SysRoleMenu) *entity.SysRoleMenu {
|
||||
biz.ErrIsNil(global.Db.Table(m.table).Updates(&data).Error, "修改菜单失败")
|
||||
return &data
|
||||
}
|
||||
|
||||
func (m *sysRoleMenuImpl) DeleteRoleMenu(roleId int64) {
|
||||
var rm entity.SysRoleMenu
|
||||
if err := global.Db.Table(m.table).Where("role_id = ?", roleId).Delete(&rm).Error; err != nil {
|
||||
biz.ErrIsNil(err, "删除角色菜单失败")
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (m *sysRoleMenuImpl) DeleteRoleMenus(roleIds []int64) {
|
||||
var rm entity.SysRoleMenu
|
||||
biz.ErrIsNil(global.Db.Table(m.table).Where("role_id in (?)", roleIds).Delete(&rm).Error, "批量删除角色菜单失败")
|
||||
}
|
||||
|
||||
func (m *sysRoleMenuImpl) Delete(RoleId int64, MenuID int64) {
|
||||
var rm entity.SysRoleMenu
|
||||
rm.RoleId = RoleId
|
||||
db := global.Db.Table(m.table).Where("role_id = ?", RoleId)
|
||||
if MenuID != 0 {
|
||||
db = db.Where("menu_id = ?", MenuID)
|
||||
}
|
||||
|
||||
biz.ErrIsNil(db.Delete(&rm).Error, "删除角色菜单失败")
|
||||
return
|
||||
|
||||
}
|
||||
188
apps/system/services/user.go
Normal file
188
apps/system/services/user.go
Normal file
@@ -0,0 +1,188 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"github.com/kakuilan/kgo"
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
"pandax/apps/system/entity"
|
||||
"pandax/base/biz"
|
||||
"pandax/base/global"
|
||||
)
|
||||
|
||||
type (
|
||||
SysUserModel interface {
|
||||
Login(u entity.Login) *entity.SysUser
|
||||
Insert(data entity.SysUser) *entity.SysUser
|
||||
FindOne(data entity.SysUser) (resData *entity.SysUserView)
|
||||
FindListPage(page, pageSize int, data entity.SysUser) (list *[]entity.SysUserPage, total int64)
|
||||
FindList(data entity.SysUser) (list *[]entity.SysUserView)
|
||||
Update(data entity.SysUser) *entity.SysUser
|
||||
Delete(userId []int64)
|
||||
SetPwd(data entity.SysUser, pwd entity.SysUserPwd) bool
|
||||
}
|
||||
|
||||
sysUserModelImpl struct {
|
||||
table string
|
||||
}
|
||||
)
|
||||
|
||||
var con = global.Db
|
||||
var SysUserModelDao SysUserModel = &sysUserModelImpl{
|
||||
table: `sys_users`,
|
||||
}
|
||||
|
||||
func (m *sysUserModelImpl) Login(u entity.Login) *entity.SysUser {
|
||||
user := new(entity.SysUser)
|
||||
err := global.Db.Table(m.table).Where("username = ? ", u.Username).Find(user)
|
||||
biz.ErrIsNil(err.Error, "查询用户信息失败")
|
||||
|
||||
// 验证密码
|
||||
b := kgo.KEncr.PasswordVerify([]byte(u.Password), []byte(user.Password))
|
||||
biz.IsTrue(b, "密码错误")
|
||||
return user
|
||||
}
|
||||
|
||||
func (m *sysUserModelImpl) Insert(data entity.SysUser) *entity.SysUser {
|
||||
bytes, _ := kgo.KEncr.PasswordHash([]byte(data.Password), bcrypt.DefaultCost)
|
||||
data.Password = string(bytes)
|
||||
|
||||
// check 用户名
|
||||
var count int64
|
||||
global.Db.Table(m.table).Where("username = ? and `delete_time` IS NULL", data.Username).Count(&count)
|
||||
biz.IsTrue(count == 0, "账户已存在!")
|
||||
|
||||
biz.ErrIsNil(global.Db.Table(m.table).Create(&data).Error, "添加用户失败")
|
||||
return &data
|
||||
}
|
||||
|
||||
func (m *sysUserModelImpl) FindOne(data entity.SysUser) *entity.SysUserView {
|
||||
resData := new(entity.SysUserView)
|
||||
|
||||
db := global.Db.Table(m.table).Select([]string{"sys_users.*", "sys_roles.role_name"})
|
||||
db = db.Joins("left join sys_roles on sys_users.role_id=sys_roles.role_id")
|
||||
if data.UserId != 0 {
|
||||
db = db.Where("user_id = ?", data.UserId)
|
||||
}
|
||||
|
||||
if data.Username != "" {
|
||||
db = db.Where("username = ?", data.Username)
|
||||
}
|
||||
|
||||
if data.Password != "" {
|
||||
db = db.Where("password = ?", data.Password)
|
||||
}
|
||||
|
||||
if data.RoleId != 0 {
|
||||
db = db.Where("role_id = ?", data.RoleId)
|
||||
}
|
||||
|
||||
if data.DeptId != 0 {
|
||||
db = db.Where("dept_id = ?", data.DeptId)
|
||||
}
|
||||
|
||||
if data.PostId != 0 {
|
||||
db = db.Where("post_id = ?", data.PostId)
|
||||
}
|
||||
biz.ErrIsNil(db.First(resData).Error, "查询用户失败")
|
||||
|
||||
return resData
|
||||
}
|
||||
|
||||
func (m *sysUserModelImpl) FindListPage(page, pageSize int, data entity.SysUser) (*[]entity.SysUserPage, int64) {
|
||||
list := make([]entity.SysUserPage, 0)
|
||||
var total int64 = 0
|
||||
offset := pageSize * (page - 1)
|
||||
db := global.Db.Table(m.table).Select("sys_users.*,sys_depts.dept_name")
|
||||
db = db.Joins("left join sys_depts on sys_depts.dept_id = sys_users.dept_id")
|
||||
// 此处填写 where参数判断
|
||||
if data.Username != "" {
|
||||
db = db.Where("sys_users.username = ?", data.Username)
|
||||
}
|
||||
|
||||
if data.NickName != "" {
|
||||
db = db.Where("sys_users.nick_name like ?", "%"+data.NickName+"%")
|
||||
}
|
||||
|
||||
if data.Status != "" {
|
||||
db = db.Where("sys_users.status = ?", data.Status)
|
||||
}
|
||||
|
||||
if data.Phone != "" {
|
||||
db = db.Where("sys_users.phone like ?", "%"+data.Phone+"%")
|
||||
}
|
||||
if data.DeptId != 0 {
|
||||
db = db.Where("sys_users.dept_id = ?", data.DeptId)
|
||||
}
|
||||
db.Where("sys_users.delete_time IS NULL")
|
||||
err := db.Count(&total).Error
|
||||
err = db.Limit(pageSize).Offset(offset).Find(&list).Error
|
||||
biz.ErrIsNil(err, "查询用户分页列表失败")
|
||||
return &list, total
|
||||
}
|
||||
|
||||
func (m *sysUserModelImpl) FindList(data entity.SysUser) *[]entity.SysUserView {
|
||||
list := make([]entity.SysUserView, 0)
|
||||
// 此处填写 where参数判断
|
||||
db := global.Db.Table(m.table).Select([]string{"sys_users.*", "sys_roles.role_name"})
|
||||
db = db.Joins("left join sys_roles on sys_users.role_id=sys_roles.role_id")
|
||||
if data.UserId != 0 {
|
||||
db = db.Where("user_id = ?", data.UserId)
|
||||
}
|
||||
|
||||
if data.Username != "" {
|
||||
db = db.Where("username = ?", data.Username)
|
||||
}
|
||||
|
||||
if data.Password != "" {
|
||||
db = db.Where("password = ?", data.Password)
|
||||
}
|
||||
|
||||
if data.RoleId != 0 {
|
||||
db = db.Where("role_id = ?", data.RoleId)
|
||||
}
|
||||
|
||||
if data.DeptId != 0 {
|
||||
db = db.Where("dept_id = ?", data.DeptId)
|
||||
}
|
||||
|
||||
if data.PostId != 0 {
|
||||
db = db.Where("post_id = ?", data.PostId)
|
||||
}
|
||||
if data.Status != "" {
|
||||
db = db.Where("status = ?", data.Status)
|
||||
}
|
||||
db.Where("sys_users.delete_time IS NULL")
|
||||
biz.ErrIsNil(db.Find(&list).Error, "查询用户列表失败")
|
||||
|
||||
return &list
|
||||
}
|
||||
|
||||
func (m *sysUserModelImpl) Update(data entity.SysUser) *entity.SysUser {
|
||||
if data.Password != "" {
|
||||
bytes, _ := kgo.KEncr.PasswordHash([]byte(data.Password), bcrypt.DefaultCost)
|
||||
data.Password = string(bytes)
|
||||
}
|
||||
update := new(entity.SysUser)
|
||||
biz.ErrIsNil(global.Db.Table(m.table).First(update, data.UserId).Error, "查询用户失败")
|
||||
|
||||
if data.RoleId == 0 {
|
||||
data.RoleId = update.RoleId
|
||||
}
|
||||
|
||||
biz.ErrIsNil(global.Db.Table(m.table).Updates(&data).Error, "修改用户失败")
|
||||
return &data
|
||||
}
|
||||
|
||||
func (m *sysUserModelImpl) Delete(userIds []int64) {
|
||||
biz.ErrIsNil(global.Db.Table(m.table).Delete(&entity.SysUser{}, "`user_id` in (?)", userIds).Error, "删除用户失败")
|
||||
}
|
||||
|
||||
func (m *sysUserModelImpl) SetPwd(data entity.SysUser, pwd entity.SysUserPwd) bool {
|
||||
user := m.FindOne(data)
|
||||
bl := kgo.KEncr.PasswordVerify([]byte(pwd.OldPassword), []byte(user.Password))
|
||||
biz.IsTrue(bl, "旧密码输入错误")
|
||||
|
||||
data.Password = pwd.NewPassword
|
||||
m.Update(data)
|
||||
|
||||
return true
|
||||
}
|
||||
Reference in New Issue
Block a user