feat优化字典数据错误判断写法

This commit is contained in:
zhangwenjian
2021-05-08 13:53:27 +08:00
committed by wenjianzhang
parent c6d94c03fb
commit c6a52134b3
69 changed files with 591 additions and 479 deletions
-104
View File
@@ -1,104 +0,0 @@
package dto
import (
"errors"
vd "github.com/bytedance/go-tagexpr/v2/validator"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api"
"go-admin/app/admin/models"
"go-admin/common/dto"
common "go-admin/common/models"
)
type SysCategorySearch struct {
dto.Pagination `search:"-"`
Name string `form:"name" search:"type:exact;column:name;table:sys_category" comment:"名称" vd:"?"`
Status string `form:"status" search:"type:exact;column:status;table:sys_category" comment:"状态" vd:"?"`
CateId int `form:"cateId" search:"type:exact;column:cate_id;table:sys_category" comment:"分类id" vd:"?"`
}
func (m *SysCategorySearch) GetNeedSearch() interface{} {
return *m
}
func (m *SysCategorySearch) Bind(ctx *gin.Context) error {
log := api.GetRequestLogger(ctx)
err := ctx.ShouldBind(m)
if err != nil {
log.Debugf("ShouldBind error: %s", err.Error())
}
if err = vd.Validate(m); err != nil {
log.Errorf("Validate error: %s", err.Error())
return err
}
return err
}
func (m *SysCategorySearch) Generate() dto.Index {
o := *m
return &o
}
type SysCategoryControl struct {
ID int `uri:"Id" comment:"标识"`
Name string `json:"name" comment:"名称" vd:"len($)>0 && $!=' '; msg:'invalid name: 不能是空字符串'"`
Img string `json:"img" comment:"图标" vd:"?"`
Sort int `json:"sort" comment:"排序" vd:"?"`
Status int `json:"status" comment:"状态" vd:"$>0; msg:'invalid status: 状态无效'"`
Remark string `json:"remark" comment:"备注" vd:"?"`
}
func (s *SysCategoryControl) Bind(ctx *gin.Context) error {
log := api.GetRequestLogger(ctx)
err := ctx.ShouldBindUri(s)
if err != nil {
log.Errorf("ShouldBindUri error: %s", err.Error())
return errors.New("数据绑定出错")
}
err = ctx.ShouldBind(s)
if err != nil {
log.Errorf("ShouldBind error: %s", err.Error())
err = errors.New("数据绑定出错")
}
if err1 := vd.Validate(s); err != nil {
log.Errorf("Validate error: %s", err1.Error())
return err1
}
return err
}
func (s *SysCategoryControl) Generate() dto.Control {
cp := *s
return &cp
}
func (s *SysCategoryControl) GenerateM() (common.ActiveRecord, error) {
return &models.SysCategory{
Model: common.Model{Id: s.ID},
Name: s.Name,
Img: s.Img,
Sort: s.Sort,
Status: s.Status,
Remark: s.Remark,
}, nil
}
func (s *SysCategoryControl) GetId() interface{} {
return s.ID
}
type SysCategoryById struct {
dto.ObjectById `vd:"?"`
}
func (s *SysCategoryById) Generate() dto.Control {
cp := *s
return &cp
}
func (s *SysCategoryById) GenerateM() (common.ActiveRecord, error) {
return &models.SysCategory{}, nil
}
-94
View File
@@ -1,94 +0,0 @@
package dto
import (
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api"
"go-admin/app/admin/models"
"go-admin/common/dto"
common "go-admin/common/models"
)
type SysContentSearch struct {
dto.Pagination `search:"-"`
Name string `form:"name" search:"type:exact;column:name;table:sys_category" comment:"名称"`
Status string `form:"status" search:"type:exact;column:status;table:sys_category" comment:"状态"`
}
func (m *SysContentSearch) GetNeedSearch() interface{} {
return *m
}
func (m *SysContentSearch) Bind(ctx *gin.Context) error {
log := api.GetRequestLogger(ctx)
err := ctx.ShouldBind(m)
if err != nil {
log.Debugf("ShouldBind error: %s", err.Error())
}
return err
}
func (m *SysContentSearch) Generate() dto.Index {
o := *m
return &o
}
type SysContentControl struct {
ID int `uri:"ID" comment:""` //
CateId int `json:"cateId" comment:""`
Name string `json:"name" comment:""`
Status int `json:"status" comment:""`
Img string `json:"img" comment:""`
Content string `json:"content" comment:""`
Remark string `json:"remark" comment:""`
Sort int `json:"sort" comment:""`
}
func (s *SysContentControl) Bind(ctx *gin.Context) error {
log := api.GetRequestLogger(ctx)
err := ctx.ShouldBindUri(s)
if err != nil {
log.Debugf("ShouldBindUri error: %s", err.Error())
return err
}
err = ctx.ShouldBind(s)
if err != nil {
log.Debugf("ShouldBind error: %s", err.Error())
}
return err
}
func (s *SysContentControl) Generate() dto.Control {
cp := *s
return &cp
}
func (s *SysContentControl) GenerateM() (common.ActiveRecord, error) {
return &models.SysContent{
Model: common.Model{s.ID},
CateId: s.CateId,
Name: s.Name,
Status: s.Status,
Img: s.Img,
Content: s.Content,
Remark: s.Remark,
Sort: s.Sort,
}, nil
}
func (s *SysContentControl) GetId() interface{} {
return s.ID
}
type SysContentById struct {
dto.ObjectById
}
func (s *SysContentById) Generate() dto.Control {
cp := *s
return &cp
}
func (s *SysContentById) GenerateM() (common.ActiveRecord, error) {
return &models.SysContent{}, nil
}
-99
View File
@@ -1,99 +0,0 @@
package dto
import (
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api"
"go-admin/app/admin/models"
"go-admin/common/dto"
common "go-admin/common/models"
)
type SysFileDirSearch struct {
dto.Pagination `search:"-"`
ID int `form:"Id" search:"type:exact;column:id;table:sys_file_dir" comment:"标识"`
Label string `form:"label" search:"type:exact;column:label;table:sys_file_dir" comment:"目录名称"`
PId string `form:"pId" search:"type:exact;column:p_id;table:sys_file_dir" comment:"上级目录"`
//Sort string `form:"sort" search:"type:exact;column:sort;table:sys_file_dir" comment:"排序"`
Path string `form:"path" search:"type:exact;column:path;table:sys_file_dir" comment:"路径"`
}
func (m *SysFileDirSearch) GetNeedSearch() interface{} {
return *m
}
func (m *SysFileDirSearch) Bind(ctx *gin.Context) error {
log := api.GetRequestLogger(ctx)
err := ctx.ShouldBind(m)
if err != nil {
log.Debugf("ShouldBind error: %s", err.Error())
}
return err
}
func (m *SysFileDirSearch) Generate() dto.Index {
o := *m
return &o
}
type SysFileDirControl struct {
ID int `uri:"Id" comment:"标识"` // 标识
Label string `json:"label" comment:"目录名称"`
PId int `json:"pId" comment:"上级目录"`
Sort string `json:"sort" comment:"排序"`
Path string `json:"path" comment:"路径"`
CreateBy int `json:"-"`
UpdateBy int `json:"-"`
}
func (s *SysFileDirControl) Bind(ctx *gin.Context) error {
log := api.GetRequestLogger(ctx)
err := ctx.ShouldBindUri(s)
if err != nil {
log.Debugf("ShouldBindUri error: %s", err.Error())
return err
}
err = ctx.ShouldBind(s)
if err != nil {
log.Debugf("ShouldBind error: %s", err.Error())
}
return err
}
func (s *SysFileDirControl) Generate() dto.Control {
cp := *s
return &cp
}
func (s *SysFileDirControl) GenerateM() (common.ActiveRecord, error) {
return &models.SysFileDir{
Model: common.Model{Id: s.ID},
Label: s.Label,
PId: s.PId,
//Sort: s.Sort,
Path: s.Path,
ControlBy: common.ControlBy{
CreateBy: s.CreateBy,
UpdateBy: s.UpdateBy,
},
}, nil
}
func (s *SysFileDirControl) GetId() interface{} {
return s.ID
}
type SysFileDirById struct {
dto.ObjectById
UpdateBy int `json:"-"`
}
func (s *SysFileDirById) Generate() dto.Control {
cp := *s
return &cp
}
func (s *SysFileDirById) GenerateM() (common.ActiveRecord, error) {
return &models.SysFileDir{}, nil
}
-52
View File
@@ -1,52 +0,0 @@
package dto
import (
"go-admin/app/admin/models"
"go-admin/common/dto"
common "go-admin/common/models"
)
type SysFileInfoSearch struct {
dto.Pagination `search:"-"`
ID int `form:"Id" search:"type:exact;column:id;table:sys_file_info" comment:"标识"`
Type string `form:"type" search:"type:exact;column:type;table:sys_file_info" comment:"类型"`
Name string `form:"name" search:"type:exact;column:name;table:sys_file_info" comment:"名称"`
PId string `form:"pId" search:"type:exact;column:p_id;table:sys_file_info" comment:"目录"`
Source string `form:"source" search:"type:exact;column:source;table:sys_file_info" comment:"来源"`
}
func (m *SysFileInfoSearch) GetNeedSearch() interface{} {
return *m
}
type SysFileInfoControl struct {
ID int `uri:"id" comment:"标识"` // 标识
Type string `json:"type" comment:"类型"`
Name string `json:"name" comment:"名称"`
Size string `json:"size" comment:"大小"`
PId int `json:"pId" comment:"目录"`
Source string `json:"source" comment:"来源"`
Url string `json:"url" comment:"地址"`
FullUrl string `json:"fullUrl" comment:"全地址"`
CreateBy int `json:"-"`
UpdateBy int `json:"-"`
}
func (s *SysFileInfoControl) Generate() (*models.SysFileInfo, error) {
return &models.SysFileInfo{
Model: common.Model{Id: s.ID},
Type: s.Type,
Name: s.Name,
Size: s.Size,
PId: s.PId,
Source: s.Source,
Url: s.Url,
FullUrl: s.FullUrl,
ControlBy: common.ControlBy{CreateBy: s.CreateBy, UpdateBy: s.UpdateBy},
}, nil
}
type SysFileInfoById struct {
dto.ObjectById
UpdateBy int `json:"-"`
}
-108
View File
@@ -1,108 +0,0 @@
package dto
import (
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api"
"go-admin/app/admin/models"
"go-admin/common/dto"
common "go-admin/common/models"
)
type SysJobSearch struct {
dto.Pagination `search:"-"`
JobId int `form:"jobId" search:"type:exact;column:job_id;table:sys_job"`
JobName string `form:"jobName" search:"type:icontains;column:job_name;table:sys_job"`
JobGroup string `form:"jobGroup" search:"type:exact;column:job_group;table:sys_job"`
CronExpression string `form:"cronExpression" search:"type:exact;column:cron_expression;table:sys_job"`
InvokeTarget string `form:"invokeTarget" search:"type:exact;column:invoke_target;table:sys_job"`
Status int `form:"status" search:"type:exact;column:status;table:sys_job"`
}
func (m *SysJobSearch) GetNeedSearch() interface{} {
return *m
}
func (m *SysJobSearch) Bind(ctx *gin.Context) error {
log := api.GetRequestLogger(ctx)
err := ctx.ShouldBind(m)
if err != nil {
log.Errorf("Bind error: %s", err)
}
return err
}
func (m *SysJobSearch) Generate() dto.Index {
o := *m
return &o
}
type SysJobControl struct {
JobId int `json:"jobId"`
JobName string `json:"jobName" validate:"required"` // 名称
JobGroup string `json:"jobGroup"` // 任务分组
JobType int `json:"jobType"` // 任务类型
CronExpression string `json:"cronExpression"` // cron表达式
InvokeTarget string `json:"invokeTarget"` // 调用目标
Args string `json:"args"` // 目标参数
MisfirePolicy int `json:"misfirePolicy"` // 执行策略
Concurrent int `json:"concurrent"` // 是否并发
Status int `json:"status"` // 状态
EntryId int `json:"entryId"` // job启动时返回的id
}
func (s *SysJobControl) Bind(ctx *gin.Context) error {
return ctx.ShouldBind(s)
}
func (s *SysJobControl) Generate() dto.Control {
cp := *s
return &cp
}
func (s *SysJobControl) GenerateM() (common.ActiveRecord, error) {
return &models.SysJob{
JobId: s.JobId,
JobName: s.JobName,
JobGroup: s.JobGroup,
JobType: s.JobType,
CronExpression: s.CronExpression,
InvokeTarget: s.InvokeTarget,
Args: s.Args,
MisfirePolicy: s.MisfirePolicy,
Concurrent: s.Concurrent,
Status: s.Status,
EntryId: s.EntryId,
}, nil
}
func (s *SysJobControl) GetId() interface{} {
return s.JobId
}
type SysJobById struct {
dto.ObjectById
}
func (s *SysJobById) Generate() dto.Control {
cp := *s
return &cp
}
func (s *SysJobById) GenerateM() (common.ActiveRecord, error) {
return &models.SysJob{}, nil
}
type SysJobItem struct {
JobId int `json:"jobId"`
JobName string `json:"jobName" validate:"required"` // 名称
JobGroup string `json:"jobGroup"` // 任务分组
JobType int `json:"jobType"` // 任务类型
CronExpression string `json:"cronExpression"` // cron表达式
InvokeTarget string `json:"invokeTarget"` // 调用目标
Args string `json:"args"` // 目标参数
MisfirePolicy int `json:"misfirePolicy"` // 执行策略
Concurrent int `json:"concurrent"` // 是否并发
Status int `json:"status"` // 状态
EntryId int `json:"entryId"` // job启动时返回的id
}
-98
View File
@@ -1,98 +0,0 @@
package dto
import (
"time"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api"
"go-admin/app/admin/models"
"go-admin/common/dto"
common "go-admin/common/models"
)
type SysChinaAreaDataSearch struct {
dto.Pagination `search:"-"`
PId string `form:"pId" search:"type:exact;column:p_id;table:sys_china_area_data" comment:"上级编码"`
Name string `form:"name" search:"type:exact;column:name;table:sys_china_area_data" comment:"名称"`
}
func (m *SysChinaAreaDataSearch) GetNeedSearch() interface{} {
return *m
}
func (m *SysChinaAreaDataSearch) Bind(ctx *gin.Context) error {
log := api.GetRequestLogger(ctx)
err := ctx.ShouldBind(m)
if err != nil {
log.Debugf("ShouldBind error: %s", err.Error())
}
return err
}
type SysChinaAreaDataControl struct {
Id int `uri:"id" comment:"编码"` // 编码
PId string `json:"pId" comment:"上级编码"`
Name string `json:"name" comment:"名称"`
CreateTime time.Time `json:"createTime" comment:""`
UpdateTime time.Time `json:"updateTime" comment:""`
DeleteTime time.Time `json:"deleteTime" comment:""`
}
func (s *SysChinaAreaDataControl) Bind(ctx *gin.Context) error {
log := api.GetRequestLogger(ctx)
err := ctx.ShouldBindUri(s)
if err != nil {
log.Debugf("ShouldBindUri error: %s", err.Error())
return err
}
err = ctx.ShouldBind(s)
if err != nil {
log.Debugf("ShouldBind error: %s", err.Error())
}
return err
}
func (s *SysChinaAreaDataControl) Generate() (*models.SysChinaAreaData, error) {
return &models.SysChinaAreaData{
Model: common.Model{Id: s.Id},
PId: s.PId,
Name: s.Name,
}, nil
}
func (s *SysChinaAreaDataControl) GetId() interface{} {
return s.Id
}
type SysChinaAreaDataById struct {
Id int `uri:"id"`
Ids []int `json:"ids"`
}
func (s *SysChinaAreaDataById) GetId() interface{} {
if len(s.Ids) > 0 {
s.Ids = append(s.Ids, s.Id)
return s.Ids
}
return s.Id
}
func (s *SysChinaAreaDataById) Bind(ctx *gin.Context) error {
log := api.GetRequestLogger(ctx)
err := ctx.ShouldBindUri(s)
if err != nil {
log.Debugf("ShouldBindUri error: %s", err.Error())
return err
}
err = ctx.ShouldBind(s)
if err != nil {
log.Debugf("ShouldBind error: %s", err.Error())
}
return err
}
func (s *SysChinaAreaDataById) SetUpdateBy(id int) {
}
-106
View File
@@ -1,106 +0,0 @@
package service
import (
"errors"
"gorm.io/gorm"
"go-admin/app/admin/models"
"go-admin/app/admin/service/dto"
"go-admin/common/actions"
cDto "go-admin/common/dto"
"go-admin/common/service"
)
type SysChinaAreaData struct {
service.Service
}
// GetSysChinaAreaDataPage 获取SysChinaAreaData列表
func (e *SysChinaAreaData) GetSysChinaAreaDataPage(c *dto.SysChinaAreaDataSearch, p *actions.DataPermission, list *[]models.SysChinaAreaData, count *int64) error {
var data models.SysChinaAreaData
err := e.Orm.Model(&data).
Scopes(
cDto.MakeCondition(c.GetNeedSearch()),
cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
actions.Permission(data.TableName(), p),
).
Find(list).Limit(-1).Offset(-1).
Count(count).Error
if err != nil {
e.Log.Errorf("Service GetSysChinaAreaDataPage error:%s", err)
return err
}
return nil
}
// GetSysChinaAreaData 获取SysChinaAreaData对象
func (e *SysChinaAreaData) GetSysChinaAreaData(d *dto.SysChinaAreaDataById, p *actions.DataPermission, model *models.SysChinaAreaData) error {
var data models.SysChinaAreaData
err := e.Orm.Model(&data).
Scopes(
actions.Permission(data.TableName(), p),
).
First(model, d.GetId()).Error
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
err = errors.New("查看对象不存在或无权查看")
e.Log.Errorf("db error:%s", err)
return err
}
if err != nil {
e.Log.Errorf("Service GetSysChinaAreaData error:%s", err)
return err
}
return nil
}
// InsertSysChinaAreaData 创建SysChinaAreaData对象
func (e *SysChinaAreaData) InsertSysChinaAreaData(model *models.SysChinaAreaData) error {
var data models.SysChinaAreaData
err := e.Orm.Model(&data).
Create(model).Error
if err != nil {
e.Log.Errorf("Service InsertSysChinaAreaData error:%s", err)
return err
}
return nil
}
// UpdateSysChinaAreaData 修改SysChinaAreaData对象
func (e *SysChinaAreaData) UpdateSysChinaAreaData(c *models.SysChinaAreaData, p *actions.DataPermission) error {
db := e.Orm.Model(c).
Scopes(
actions.Permission(c.TableName(), p),
).Where(c.GetId()).Updates(c)
if err := db.Error; err != nil {
e.Log.Errorf("Service UpdateSysChinaAreaData error: %s", err)
return err
}
if db.RowsAffected == 0 {
return errors.New("无权更新该数据")
}
return nil
}
// RemoveSysChinaAreaData 删除SysChinaAreaData
func (e *SysChinaAreaData) RemoveSysChinaAreaData(d *dto.SysChinaAreaDataById, p *actions.DataPermission) error {
var data models.SysChinaAreaData
db := e.Orm.Model(&data).
Scopes(
actions.Permission(data.TableName(), p),
).Delete(&data, d.GetId())
if err := db.Error; err != nil {
e.Log.Errorf("Service RemoveSysChinaAreaData error: %s", err)
return err
}
if db.RowsAffected == 0 {
return errors.New("无权删除该数据")
}
return nil
}
+1 -1
View File
@@ -75,7 +75,7 @@ func (e *SysDictData) Update(c *system.SysDictData) error {
db := e.Orm.Model(&data).
Where(c.GetId()).Updates(c)
if db.Error != nil {
if err = db.Error; err != nil {
e.Log.Errorf("db error: %s", err)
return err
}
-168
View File
@@ -1,168 +0,0 @@
package service
import (
"errors"
"fmt"
"gorm.io/gorm"
"go-admin/app/admin/models"
"go-admin/app/admin/service/dto"
"go-admin/common/actions"
cDto "go-admin/common/dto"
"go-admin/common/service"
)
type SysFileDir struct {
service.Service
}
// GetSysFileDirPage 获取SysFileDir列表
func (e *SysFileDir) GetSysFileDirPage(c *dto.SysFileDirSearch, list *[]models.SysFileDirL) error {
var err error
var data models.SysFileDir
err = e.Orm.Model(&data).
Scopes(
cDto.MakeCondition(c.GetNeedSearch()),
).
Find(list). //Limit(-1).Offset(-1).
Error
if err != nil {
e.Log.Errorf("db error: %s", err)
return err
}
return nil
}
// GetSysFileDir 获取SysFileDir对象
func (e *SysFileDir) GetSysFileDir(d cDto.Control, model *models.SysFileDir) error {
var err error
var data models.SysFileDir
db := e.Orm.Model(&data).
First(model, d.GetId())
err = db.Error
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
err = errors.New("查看对象不存在或无权查看")
e.Log.Errorf("db error: %s", err)
return err
}
if db.Error != nil {
e.Log.Errorf("db error:%s", err)
return err
}
return nil
}
// InsertSysFileDir 创建SysFileDir对象
func (e *SysFileDir) InsertSysFileDir(model *dto.SysFileDirControl) error {
var err error
data, _ := model.GenerateM()
err = e.Orm.Create(data).Error
if err != nil {
e.Log.Errorf("db error: %s", err)
return err
}
path := fmt.Sprintf("/%d", model.ID)
//db = e.Orm.Model(&data).
// First(&data, model.GetId())
//err = db.Error
if model.PId != 0 {
var dept models.SysFileDir
e.Orm.Model(&models.SysFileDir{}).Where("id = ?", model.PId).First(&dept)
path = dept.Path + path
} else {
path = "/0" + path
}
//var mp = map[string]string{}
//mp["path"] = path
if err = e.Orm.Model(&models.SysFileDir{}).Where("id = ?", model.ID).Update("path", path).Error; err != nil {
return err
}
return nil
}
// UpdateSysFileDir 修改SysFileDir对象
func (e *SysFileDir) UpdateSysFileDir(c *dto.SysFileDirControl, p *actions.DataPermission) error {
var err error
data, _ := c.GenerateM()
db := e.Orm.
Scopes(
actions.Permission(data.TableName(), p),
).Where(c.ID).Updates(data)
if db.Error != nil {
e.Log.Errorf("db error: %s", err)
return err
}
if db.RowsAffected == 0 {
return errors.New("无权更新该数据")
}
return nil
}
// RemoveSysFileDir 删除SysFileDir
func (e *SysFileDir) RemoveSysFileDir(d *dto.SysFileDirById, p *actions.DataPermission) error {
var err error
var data models.SysFileDir
db := e.Orm.Model(&data).
Scopes(
actions.Permission(data.TableName(), p),
).Where(d.Id).Delete(&data)
if db.Error != nil {
err = db.Error
e.Log.Errorf("Delete error: %s", err)
return err
}
if db.RowsAffected == 0 {
err = errors.New("无权删除该数据")
return err
}
return nil
}
func (e *SysFileDir) SetSysFileDir(c *dto.SysFileDirSearch) (*[]models.SysFileDirL, error) {
var list []models.SysFileDirL
err := e.GetSysFileDirPage(c, &list)
m := make([]models.SysFileDirL, 0)
for i := 0; i < len(list); i++ {
if list[i].PId != 0 {
continue
}
info := SysFileDirCall(&list, list[i])
m = append(m, info)
}
return &m, err
}
func SysFileDirCall(list *[]models.SysFileDirL, m models.SysFileDirL) models.SysFileDirL {
listGroup := *list
min := make([]models.SysFileDirL, 0)
for j := 0; j < len(listGroup); j++ {
if m.Id != listGroup[j].PId {
continue
}
mi := models.SysFileDirL{}
mi.Id = listGroup[j].Id
mi.PId = listGroup[j].PId
mi.Label = listGroup[j].Label
//mi.Sort = listGroup[j].Sort
mi.CreatedAt = listGroup[j].CreatedAt
mi.UpdatedAt = listGroup[j].UpdatedAt
mi.Children = []models.SysFileDirL{}
ms := SysFileDirCall(list, mi)
min = append(min, ms)
}
if len(min) > 0 {
m.Children = min
} else {
m.Children = nil
}
return m
}
-126
View File
@@ -1,126 +0,0 @@
package service
import (
"errors"
"gorm.io/gorm"
"go-admin/app/admin/models"
"go-admin/app/admin/service/dto"
"go-admin/common/actions"
cDto "go-admin/common/dto"
"go-admin/common/service"
)
type SysFileInfo struct {
service.Service
}
// GetSysFileInfoPage 获取SysFileInfo列表
func (e *SysFileInfo) GetSysFileInfoPage(c *dto.SysFileInfoSearch, p *actions.DataPermission, list *[]models.SysFileInfo, count *int64) error {
var err error
var data models.SysFileInfo
err = e.Orm.Model(&data).
Scopes(
cDto.MakeCondition(c.GetNeedSearch()),
cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
actions.Permission(data.TableName(), p),
).
Find(list).Limit(-1).Offset(-1).
Count(count).Error
if err != nil {
e.Log.Errorf("db error: %s", err)
return err
}
return nil
}
// GetSysFileInfo 获取SysFileInfo对象
func (e *SysFileInfo) GetSysFileInfo(d *dto.SysFileInfoById, p *actions.DataPermission, model *models.SysFileInfo) error {
var err error
var data models.SysFileInfo
db := e.Orm.Model(&data).
Scopes(
actions.Permission(data.TableName(), p),
).
First(model, d.GetId())
err = db.Error
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
err = errors.New("查看对象不存在或无权查看")
e.Log.Errorf("db error: %s", err)
return err
}
if db.Error != nil {
e.Log.Errorf("db error: %s", err)
return err
}
return nil
}
// InsertSysFileInfo 创建SysFileInfo对象
func (e *SysFileInfo) InsertSysFileInfo(model *dto.SysFileInfoControl) error {
var err error
var data *models.SysFileInfo
data, err = model.Generate()
if err != nil {
e.Log.Errorf("db error: %s", err)
return err
}
err = e.Orm.Model(&data).
Create(data).Error
if err != nil {
e.Log.Errorf("db error: %s", err)
return err
}
return nil
}
// UpdateSysFileInfo 修改SysFileInfo对象
func (e *SysFileInfo) UpdateSysFileInfo(c *dto.SysFileInfoControl, p *actions.DataPermission) error {
var err error
var data *models.SysFileInfo
data, err = c.Generate()
if err != nil {
e.Log.Errorf("db error: %s", err)
return err
}
err = e.Orm.Debug().Model(&data).
Scopes(
actions.Permission(data.TableName(), p),
).Where("id = ?", c.ID).Updates(&data).Error
if err != nil {
e.Log.Errorf("db error: %s", err)
return err
}
if err == gorm.ErrRecordNotFound {
return errors.New("无权更新该数据")
}
return nil
}
// RemoveSysFileInfo 删除SysFileInfo
func (e *SysFileInfo) RemoveSysFileInfo(d *dto.SysFileInfoById, p *actions.DataPermission) error {
var err error
var data models.SysFileInfo
db := e.Orm.Model(&data).
Scopes(
actions.Permission(data.TableName(), p),
).Where(d.GetId()).Delete(&data)
if db.Error != nil {
err = db.Error
e.Log.Errorf("Delete error: %s", err)
return err
}
if db.RowsAffected == 0 {
err = errors.New("无权删除该数据")
return err
}
return nil
}
-86
View File
@@ -1,86 +0,0 @@
package service
import (
"github.com/robfig/cron/v3"
"time"
"go-admin/app/admin/models"
"go-admin/app/jobs"
"go-admin/common/dto"
"go-admin/common/service"
)
type SysJob struct {
service.Service
Cron *cron.Cron
}
// RemoveJob 删除job
func (e *SysJob) RemoveJob(c *dto.GeneralDelDto) error {
var err error
var data models.SysJob
data.JobId = c.Id
err = e.Orm.Table(data.TableName()).First(&data).Error
if err != nil {
e.Log.Errorf("db error: %s", err)
return err
}
cn := jobs.Remove(e.Cron, data.EntryId)
select {
case res := <-cn:
if res {
err = e.Orm.Table(data.TableName()).Where("entry_id = ?", data.EntryId).Update("entry_id", 0).Error
if err != nil {
e.Log.Errorf("db error: %s", err)
}
return err
}
case <-time.After(time.Second * 1):
e.Msg = "操作超时!"
return nil
}
return nil
}
// StartJob 启动任务
func (e *SysJob) StartJob(c *dto.GeneralGetDto) error {
var data models.SysJob
var err error
err = e.Orm.Table(data.TableName()).First(&data, c.Id).Error
if err != nil {
e.Log.Errorf("db error: %s", err)
return err
}
if data.JobType == 1 {
var j = &jobs.HttpJob{}
j.InvokeTarget = data.InvokeTarget
j.CronExpression = data.CronExpression
j.JobId = data.JobId
j.Name = data.JobName
data.EntryId, err = jobs.AddJob(e.Cron, j)
if err != nil {
e.Log.Errorf("jobs AddJob[HttpJob] error: %s", err)
}
} else {
var j = &jobs.ExecJob{}
j.InvokeTarget = data.InvokeTarget
j.CronExpression = data.CronExpression
j.JobId = data.JobId
j.Name = data.JobName
j.Args = data.Args
data.EntryId, err = jobs.AddJob(e.Cron, j)
if err != nil {
e.Log.Errorf("jobs AddJob[ExecJob] error: %s", err)
}
}
if err != nil {
return err
}
err = e.Orm.Table(data.TableName()).Where(c.Id).Updates(&data).Error
if err != nil {
e.Log.Errorf("db error: %s", err)
}
return err
}
+7 -11
View File
@@ -41,21 +41,19 @@ func (e *SysUser) GetSysUserPage(c cDto.Index, p *actions.DataPermission, list *
// GetSysUser 获取SysUser对象
func (e *SysUser) GetSysUser(d cDto.Control, p *actions.DataPermission, model *system.SysUser) error {
var err error
var data system.SysUser
db := e.Orm.Model(&data).
err := e.Orm.Model(&data).
Scopes(
actions.Permission(data.TableName(), p),
).
First(model, d.GetId())
err = db.Error
First(model, d.GetId()).Error
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
err = errors.New("查看对象不存在或无权查看")
e.Log.Errorf("db error: %s", err)
return err
}
if db.Error != nil {
if err != nil {
e.Log.Errorf("db error: %s", err)
return err
}
@@ -84,8 +82,8 @@ func (e *SysUser) UpdateSysUser(c common.ActiveRecord, p *actions.DataPermission
Scopes(
actions.Permission(c.TableName(), p),
).Where(c.GetId()).Updates(c)
if db.Error != nil {
e.Log.Errorf("db error: %s", err)
if err = db.Error; err != nil {
e.Log.Errorf("Service UpdateSysUser error: %s", err)
return err
}
if db.RowsAffected == 0 {
@@ -104,14 +102,12 @@ func (e *SysUser) RemoveSysUser(d cDto.Control, c common.ActiveRecord, p *action
Scopes(
actions.Permission(data.TableName(), p),
).Where(d.GetId()).Delete(c)
if db.Error != nil {
err = db.Error
if err = db.Error; err != nil {
e.Log.Errorf("Delete error: %s", err)
return err
}
if db.RowsAffected == 0 {
err = errors.New("无权删除该数据")
return err
return errors.New("无权删除该数据")
}
return nil
}