2023-01-18 16:23:39 +08:00
|
|
|
|
// Package sysin
|
|
|
|
|
// @Link https://github.com/bufanyun/hotgo
|
2023-02-23 17:53:04 +08:00
|
|
|
|
// @Copyright Copyright (c) 2023 HotGo CLI
|
2023-01-18 16:23:39 +08:00
|
|
|
|
// @Author Ms <133814250@qq.com>
|
|
|
|
|
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
|
|
|
package sysin
|
|
|
|
|
|
|
|
|
|
import (
|
2023-02-23 17:53:04 +08:00
|
|
|
|
"context"
|
|
|
|
|
"github.com/gogf/gf/v2/errors/gerror"
|
|
|
|
|
"github.com/gogf/gf/v2/text/gregex"
|
2023-02-08 20:29:34 +08:00
|
|
|
|
"github.com/gogf/gf/v2/util/gconv"
|
2023-02-23 17:53:04 +08:00
|
|
|
|
"hotgo/internal/consts"
|
2023-01-18 16:23:39 +08:00
|
|
|
|
"hotgo/internal/model"
|
|
|
|
|
"hotgo/internal/model/entity"
|
|
|
|
|
"hotgo/internal/model/input/form"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// GenCodesMaxSortInp 最大排序
|
|
|
|
|
type GenCodesMaxSortInp struct {
|
|
|
|
|
Id int64
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type GenCodesMaxSortModel struct {
|
|
|
|
|
Sort int
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// GenCodesEditInp 修改/新增数据
|
|
|
|
|
type GenCodesEditInp struct {
|
|
|
|
|
entity.SysGenCodes
|
|
|
|
|
}
|
2023-02-23 17:53:04 +08:00
|
|
|
|
|
|
|
|
|
func (in *GenCodesEditInp) Filter(ctx context.Context) (err error) {
|
|
|
|
|
return genFilter(ctx, in.SysGenCodes)
|
|
|
|
|
}
|
|
|
|
|
|
2023-01-18 16:23:39 +08:00
|
|
|
|
type GenCodesEditModel struct {
|
|
|
|
|
entity.SysGenCodes
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// GenCodesDeleteInp 删除
|
|
|
|
|
type GenCodesDeleteInp struct {
|
|
|
|
|
Id interface{}
|
|
|
|
|
}
|
|
|
|
|
type GenCodesDeleteModel struct{}
|
|
|
|
|
|
|
|
|
|
// GenCodesViewInp 获取信息
|
|
|
|
|
type GenCodesViewInp struct {
|
|
|
|
|
Id int64
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type GenCodesViewModel struct {
|
|
|
|
|
entity.SysGenCodes
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// GenCodesListInp 获取列表
|
|
|
|
|
type GenCodesListInp struct {
|
|
|
|
|
form.PageReq
|
|
|
|
|
form.StatusReq
|
|
|
|
|
GenType int `json:"genType"`
|
|
|
|
|
VarName string `json:"varName"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type GenCodesListModel struct {
|
|
|
|
|
entity.SysGenCodes
|
2023-02-09 13:53:19 +08:00
|
|
|
|
GenTemplateGroup string `json:"genTemplateGroup" dc:"生成模板组名"`
|
2023-01-18 16:23:39 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// GenCodesStatusInp 更新状态
|
|
|
|
|
type GenCodesStatusInp struct {
|
|
|
|
|
Id int64 `json:"id" description:"生成ID"`
|
|
|
|
|
Status int `json:"status" description:"生成状态"`
|
|
|
|
|
}
|
|
|
|
|
type GenCodesStatusModel struct{}
|
|
|
|
|
|
|
|
|
|
// GenCodesSelectsInp 选项
|
|
|
|
|
type GenCodesSelectsInp struct {
|
|
|
|
|
}
|
|
|
|
|
type GenCodesSelectsModel struct {
|
2023-02-08 20:29:34 +08:00
|
|
|
|
GenType GenTypeSelects `json:"genType" dc:"生成类型"`
|
|
|
|
|
Db form.Selects `json:"db" dc:"数据库选项"`
|
|
|
|
|
Status form.Selects `json:"status" dc:"生成状态"`
|
|
|
|
|
LinkMode form.Selects `json:"linkMode" dc:"关联表方式"`
|
|
|
|
|
BuildMeth form.Selects `json:"buildMeth" dc:"生成方式"`
|
2023-01-18 16:23:39 +08:00
|
|
|
|
// 字段表格选项
|
2023-02-26 14:18:22 +08:00
|
|
|
|
FormMode form.Selects `json:"formMode" dc:"表单组件"`
|
|
|
|
|
FormRole form.Selects `json:"formRole" dc:"表单验证"`
|
|
|
|
|
DictMode []*DictTypeTree `json:"dictMode" dc:"字典类型"`
|
|
|
|
|
WhereMode form.Selects `json:"whereMode" dc:"查询条件"`
|
|
|
|
|
Addons form.Selects `json:"addons" dc:"插件选项"`
|
2023-01-18 16:23:39 +08:00
|
|
|
|
}
|
|
|
|
|
|
2023-02-08 20:29:34 +08:00
|
|
|
|
type GenTypeSelects []*GenTypeSelect
|
|
|
|
|
|
|
|
|
|
type GenTypeSelect struct {
|
2023-02-23 17:53:04 +08:00
|
|
|
|
Value int `json:"value"`
|
|
|
|
|
Label string `json:"label"`
|
|
|
|
|
Name string `json:"name"`
|
|
|
|
|
Templates GenTemplateSelects `json:"templates"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type GenTemplateSelects []*GenTemplateSelect
|
|
|
|
|
type GenTemplateSelect struct {
|
|
|
|
|
Value interface{} `json:"value"`
|
|
|
|
|
Label string `json:"label"`
|
|
|
|
|
Name string `json:"name"`
|
|
|
|
|
IsAddon bool `json:"isAddon"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (p GenTemplateSelects) Len() int {
|
|
|
|
|
return len(p)
|
|
|
|
|
}
|
|
|
|
|
func (p GenTemplateSelects) Swap(i, j int) {
|
|
|
|
|
p[i], p[j] = p[j], p[i]
|
|
|
|
|
}
|
|
|
|
|
func (p GenTemplateSelects) Less(i, j int) bool {
|
|
|
|
|
return gconv.Int64(p[j].Value) > gconv.Int64(p[i].Value)
|
2023-02-08 20:29:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (p GenTypeSelects) Len() int {
|
|
|
|
|
return len(p)
|
|
|
|
|
}
|
|
|
|
|
func (p GenTypeSelects) Swap(i, j int) {
|
|
|
|
|
p[i], p[j] = p[j], p[i]
|
|
|
|
|
}
|
|
|
|
|
func (p GenTypeSelects) Less(i, j int) bool {
|
|
|
|
|
return gconv.Int64(p[j].Value) > gconv.Int64(p[i].Value)
|
|
|
|
|
}
|
|
|
|
|
|
2023-01-18 16:23:39 +08:00
|
|
|
|
// GenCodesTableSelectInp 数据库表选项
|
|
|
|
|
type GenCodesTableSelectInp struct {
|
|
|
|
|
Name string `json:"name" dc:"数据库配置名称"`
|
|
|
|
|
}
|
|
|
|
|
type GenCodesTableSelectModel struct {
|
|
|
|
|
Value string `json:"value"`
|
|
|
|
|
Label string `json:"label"`
|
|
|
|
|
Name string `json:"name"`
|
|
|
|
|
DaoName string `json:"daoName" dc:"orm模型名称"`
|
|
|
|
|
DefVarName string `json:"defVarName" dc:"默认实体名称"`
|
|
|
|
|
DefAlias string `json:"defAlias" dc:"默认关联表别名"`
|
|
|
|
|
DefTableComment string `json:"defTableComment" dc:"默认菜单名称"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// GenCodesColumnSelectInp 表字段选项
|
|
|
|
|
type GenCodesColumnSelectInp struct {
|
|
|
|
|
Name string `json:"name" dc:"数据库配置名称"`
|
|
|
|
|
Table string `json:"table" dc:"表名称"`
|
|
|
|
|
}
|
|
|
|
|
type GenCodesColumnSelectModel struct {
|
|
|
|
|
Value string `json:"value"`
|
|
|
|
|
Label string `json:"label"`
|
|
|
|
|
Name string `json:"name"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// GenCodesColumnListInp 表字段列表
|
|
|
|
|
type GenCodesColumnListInp struct {
|
|
|
|
|
Name string `json:"name" dc:"数据库配置名称"`
|
|
|
|
|
Table string `json:"table" dc:"表名称"`
|
|
|
|
|
IsLink int64 `json:"isLink" dc:"是否是关联表"`
|
|
|
|
|
Alias string `json:"alias" dc:"关联表别名"`
|
|
|
|
|
}
|
|
|
|
|
type GenCodesColumnListModel struct {
|
|
|
|
|
model.GenCodesColumn
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// GenCodesPreviewInp 生成预览
|
|
|
|
|
type GenCodesPreviewInp struct {
|
|
|
|
|
entity.SysGenCodes
|
|
|
|
|
}
|
|
|
|
|
|
2023-02-23 17:53:04 +08:00
|
|
|
|
func (in *GenCodesPreviewInp) Filter(ctx context.Context) (err error) {
|
|
|
|
|
return genFilter(ctx, in.SysGenCodes)
|
|
|
|
|
}
|
|
|
|
|
|
2023-01-18 16:23:39 +08:00
|
|
|
|
// GenFile 生成文件配置
|
|
|
|
|
type GenFile struct {
|
|
|
|
|
Content string `json:"content" dc:"页面内容"`
|
|
|
|
|
Path string `json:"path" dc:"生成路径"`
|
|
|
|
|
Meth int `json:"meth" dc:"生成方式"`
|
|
|
|
|
Required bool `json:"required" dc:"是否是必要构建文件"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type GenCodesPreviewModel struct {
|
|
|
|
|
Config *model.GenerateConfig `json:"config"`
|
|
|
|
|
Views map[string]*GenFile `json:"views" dc:"页面"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// GenCodesBuildInp 提交生成
|
|
|
|
|
type GenCodesBuildInp struct {
|
|
|
|
|
entity.SysGenCodes
|
|
|
|
|
}
|
2023-02-23 17:53:04 +08:00
|
|
|
|
|
|
|
|
|
func (in *GenCodesBuildInp) Filter(ctx context.Context) (err error) {
|
|
|
|
|
return genFilter(ctx, in.SysGenCodes)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func genFilter(ctx context.Context, in entity.SysGenCodes) (err error) {
|
|
|
|
|
if in.VarName == "" {
|
|
|
|
|
err = gerror.New("实体命名不能为空")
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if !gregex.IsMatchString(`^[a-zA-Z]{1}\w{1,23}$`, in.VarName) {
|
|
|
|
|
err = gerror.New("实体命名格式不正确,字母开头,只能包含字母、数字和下划线,长度在2~24之间")
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if in.GenType == consts.GenCodesTypeCurd || in.GenType == consts.GenCodesTypeTree {
|
|
|
|
|
if in.DbName == "" {
|
|
|
|
|
err = gerror.New("数据库不能为空")
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if in.TableName == "" {
|
|
|
|
|
err = gerror.New("数据库表不能为空")
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if in.TableComment == "" {
|
|
|
|
|
err = gerror.New("菜单名称不能为空")
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return
|
|
|
|
|
}
|