mirror of
https://gitee.com/XM-GO/PandaX.git
synced 2026-04-23 02:48:34 +08:00
优化功能,通知功能,任务功能
This commit is contained in:
28
apps/develop/entity/dev_gen_table.go
Normal file
28
apps/develop/entity/dev_gen_table.go
Normal file
@@ -0,0 +1,28 @@
|
||||
package entity
|
||||
|
||||
import "pandax/base/model"
|
||||
|
||||
type DevGenTable struct {
|
||||
TableId int64 `gorm:"table_id,primary" json:"tableId"` // 编号
|
||||
TableName string `gorm:"table_name" json:"tableName"` // 表名称
|
||||
TableComment string `gorm:"table_comment" json:"tableComment"` // 表描述
|
||||
ClassName string `gorm:"class_name" json:"className"` // 实体类名称
|
||||
TplCategory string `gorm:"tpl_category" json:"tplCategory"` // 使用的模板(crud单表操作 tree树表操作)
|
||||
PackageName string `gorm:"package_name" json:"packageName"` // 生成包路径
|
||||
ModuleName string `gorm:"module_name" json:"moduleName"` // 生成模块名
|
||||
BusinessName string `gorm:"business_name" json:"businessName"` // 生成业务名
|
||||
FunctionName string `gorm:"function_name" json:"functionName"` // 生成功能名
|
||||
FunctionAuthor string `gorm:"function_author" json:"functionAuthor"` // 生成功能作者
|
||||
Options string `gorm:"options" json:"options"` // 其它生成选项
|
||||
Remark string `gorm:"remark" json:"remark"` // 备注
|
||||
Columns []DevGenTableColumn `gorm:"-" json:"columns"` // 字段信息
|
||||
PkColumn DevGenTableColumn `gorm:"-" json:"pkColumn"` // 主键列信息
|
||||
model.BaseModel
|
||||
}
|
||||
|
||||
type ToolsGenTableExtend struct {
|
||||
DevGenTable
|
||||
TreeCode string `gorm:"-" json:"treeCode"` // 树编码字段
|
||||
TreeParentCode string `gorm:"-" json:"treeParentCode"` // 树父编码字段
|
||||
TreeName string `gorm:"-" json:"treeName"` // 树名称字段
|
||||
}
|
||||
29
apps/develop/entity/dev_gen_table_column.go
Normal file
29
apps/develop/entity/dev_gen_table_column.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package entity
|
||||
|
||||
type DevGenTableColumn struct {
|
||||
ColumnId int64 `gorm:"column_id,primary" json:"columnId"` // 编号
|
||||
TableId int64 `gorm:"table_id" json:"tableId"` // 归属表编号
|
||||
TableName string `gorm:"table_name" json:"tableName"`
|
||||
ColumnName string `gorm:"column_name" json:"columnName"` // 列名称
|
||||
ColumnComment string `gorm:"column_comment" json:"columnComment"` // 列描述
|
||||
ColumnType string `gorm:"column_type" json:"columnType"` // 列类型
|
||||
GoType string `gorm:"go_type" json:"goType"` // Go类型
|
||||
GoField string `gorm:"go_field" json:"goField"` // Go字段名
|
||||
HtmlField string `gorm:"html_field" json:"htmlField"` // html字段名
|
||||
IsPk string `gorm:"is_pk" json:"isPk"` // 是否主键(1是)
|
||||
IsIncrement string `gorm:"is_increment" json:"isIncrement"` // 是否自增(1是)
|
||||
IsRequired string `gorm:"is_required" json:"isRequired"` // 是否必填(1是)
|
||||
IsInsert string `gorm:"is_insert" json:"isInsert"` // 是否为插入字段(1是)
|
||||
IsEdit string `gorm:"is_edit" json:"isEdit"` // 是否编辑字段(1是)
|
||||
IsList string `gorm:"is_list" json:"isList"` // 是否列表字段(1是)
|
||||
IsQuery string `gorm:"is_query" json:"isQuery"` // 是否查询字段(1是)
|
||||
QueryType string `gorm:"query_type" json:"queryType"` // 查询方式(等于、不等于、大于、小于、范围)
|
||||
HtmlType string `gorm:"html_type" json:"htmlType"` // 显示类型(文本框、文本域、下拉框、复选框、单选框、日期控件)
|
||||
DictType string `gorm:"dict_type" json:"dictType"` // 字典类型
|
||||
Sort int `gorm:"sort" json:"sort"` // 排序
|
||||
LinkTableName string `gorm:"link_table_name" json:"linkTableName"` // 关联表名
|
||||
LinkTableClass string `gorm:"link_table_class" json:"linkTableClass"` // 关联表类名
|
||||
LinkTablePackage string `gorm:"link_table_package" json:"linkTablePackage"` // 关联表包名
|
||||
LinkLabelId string `gorm:"link_label_id" json:"linkLabelId"` // 关联表键名
|
||||
LinkLabelName string `gorm:"link_label_name" json:"linkLabelName"` // 关联表字段值
|
||||
}
|
||||
206
apps/develop/services/gen_table.go
Normal file
206
apps/develop/services/gen_table.go
Normal file
@@ -0,0 +1,206 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"pandax/apps/develop/entity"
|
||||
"pandax/base/biz"
|
||||
"pandax/base/config"
|
||||
"pandax/base/global"
|
||||
"strings"
|
||||
)
|
||||
|
||||
/**
|
||||
* @Description
|
||||
* @Author Panda
|
||||
* @Date 2021/12/31 8:58
|
||||
**/
|
||||
|
||||
type (
|
||||
SysGenTableModel interface {
|
||||
FindDbTablesListPage(page, pageSize int, data entity.DevGenTable) (*[]entity.DevGenTable, int64)
|
||||
FindDbTableOne(tableName string) *entity.DevGenTable
|
||||
|
||||
// 导入表数据
|
||||
Insert(data entity.DevGenTable)
|
||||
FindOne(dictCode int64) *entity.DevGenTable
|
||||
FindTree(data entity.DevGenTable) *[]entity.ToolsGenTableExtend
|
||||
FindListPage(page, pageSize int, data entity.DevGenTable) (*[]entity.DevGenTable, int64)
|
||||
Update(data entity.DevGenTable) *entity.DevGenTable
|
||||
Delete(dictCode []int64)
|
||||
}
|
||||
|
||||
devGenTableModelImpl struct {
|
||||
table string
|
||||
}
|
||||
)
|
||||
|
||||
var DevGenTableModelDao SysGenTableModel = &devGenTableModelImpl{
|
||||
table: "dev_gen_tables",
|
||||
}
|
||||
|
||||
func (m *devGenTableModelImpl) FindDbTablesListPage(page, pageSize int, data entity.DevGenTable) (*[]entity.DevGenTable, int64) {
|
||||
list := make([]entity.DevGenTable, 0)
|
||||
var total int64 = 0
|
||||
offset := pageSize * (page - 1)
|
||||
if config.Conf.Server.DbType != "mysql" && config.Conf.Server.DbType == "postgresql" {
|
||||
biz.ErrIsNil(errors.New("只支持mysql和postgresql数据库"), "只支持mysql和postgresql数据库")
|
||||
}
|
||||
db := global.Db.Table("information_schema.tables")
|
||||
db = db.Where("TABLE_NAME not in (select table_name from `" + config.Conf.Gen.Dbname + "`.sys_tables) ")
|
||||
db = db.Where("table_schema= ? ", config.Conf.Gen.Dbname)
|
||||
|
||||
if data.TableName != "" {
|
||||
db = db.Where("table_name = ?", data.TableName)
|
||||
}
|
||||
|
||||
err := db.Count(&total).Error
|
||||
err = db.Limit(pageSize).Offset(offset).Find(&list).Error
|
||||
biz.ErrIsNil(err, "查询配置分页列表信息失败")
|
||||
return &list, total
|
||||
}
|
||||
|
||||
func (m *devGenTableModelImpl) FindDbTableOne(tableName string) *entity.DevGenTable {
|
||||
resData := new(entity.DevGenTable)
|
||||
if config.Conf.Server.DbType != "mysql" && config.Conf.Server.DbType == "postgresql" {
|
||||
biz.ErrIsNil(errors.New("只支持mysql和postgresql数据库"), "只支持mysql和postgresql数据库")
|
||||
}
|
||||
db := global.Db.Table("information_schema.tables")
|
||||
db = db.Where("table_schema= ? ", config.Conf.Gen.Dbname)
|
||||
biz.IsTrue(tableName != "", "table name cannot be empty!")
|
||||
|
||||
db = db.Where("table_name = ?", tableName)
|
||||
err := db.First(&resData).Error
|
||||
biz.ErrIsNil(err, err.Error())
|
||||
return resData
|
||||
}
|
||||
|
||||
func (m *devGenTableModelImpl) Insert(dgt entity.DevGenTable) {
|
||||
err := global.Db.Table(m.table).Create(&dgt).Error
|
||||
biz.ErrIsNil(err, "新增生成代码表失败")
|
||||
for i := 0; i < len(dgt.Columns); i++ {
|
||||
dgt.Columns[i].TableId = dgt.TableId
|
||||
SysSysConfigModelDao.Insert(dgt.Columns[i])
|
||||
}
|
||||
}
|
||||
|
||||
func (m *devGenTableModelImpl) FindOne(tableId int64) *entity.DevGenTable {
|
||||
resData := new(entity.DevGenTable)
|
||||
err := global.Db.Table(m.table).Where("`table_id` = ?", tableId).First(resData).Error
|
||||
biz.ErrIsNil(err, "查询配置信息失败")
|
||||
return resData
|
||||
}
|
||||
|
||||
func (m *devGenTableModelImpl) FindTree(data entity.DevGenTable) *[]entity.ToolsGenTableExtend {
|
||||
resData := make([]entity.ToolsGenTableExtend, 0)
|
||||
db := global.Db.Table(m.table)
|
||||
|
||||
if data.TableName != "" {
|
||||
db = db.Where("table_name = ?", data.TableName)
|
||||
}
|
||||
if data.TableId != 0 {
|
||||
db = db.Where("table_id = ?", data.TableId)
|
||||
}
|
||||
if data.TableComment != "" {
|
||||
db = db.Where("table_comment = ?", data.TableComment)
|
||||
}
|
||||
err := db.Find(&resData).Error
|
||||
biz.ErrIsNil(err, err.Error())
|
||||
for i := 0; i < len(resData); i++ {
|
||||
var col entity.DevGenTableColumn
|
||||
col.TableId = resData[i].TableId
|
||||
columns := SysSysConfigModelDao.FindList(col)
|
||||
resData[i].Columns = *columns
|
||||
}
|
||||
return &resData
|
||||
}
|
||||
|
||||
func (m *devGenTableModelImpl) FindListPage(page, pageSize int, data entity.DevGenTable) (*[]entity.DevGenTable, int64) {
|
||||
list := make([]entity.DevGenTable, 0)
|
||||
var total int64 = 0
|
||||
offset := pageSize * (page - 1)
|
||||
|
||||
db := global.Db.Table(m.table)
|
||||
// 此处填写 where参数判断
|
||||
if data.TableName != "" {
|
||||
db = db.Where("table_name = ?", data.TableName)
|
||||
}
|
||||
if data.TableComment != "" {
|
||||
db = db.Where("table_comment = ?", data.TableComment)
|
||||
}
|
||||
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 *devGenTableModelImpl) Update(data entity.DevGenTable) *entity.DevGenTable {
|
||||
err := global.Db.Table(m.table).Model(&data).Updates(&data).Error
|
||||
biz.ErrIsNil(err, "修改生成代码信息失败")
|
||||
|
||||
tableNames := make([]string, 0)
|
||||
for i := range data.Columns {
|
||||
if data.Columns[i].LinkTableName != "" {
|
||||
tableNames = append(tableNames, data.Columns[i].LinkTableName)
|
||||
}
|
||||
}
|
||||
|
||||
tables := make([]entity.DevGenTable, 0)
|
||||
tableMap := make(map[string]*entity.DevGenTable)
|
||||
if len(tableNames) > 0 {
|
||||
err = global.Db.Table(m.table).Where("table_name in (?)", tableNames).Find(&tables).Error
|
||||
biz.ErrIsNil(err, err.Error())
|
||||
for i := range tables {
|
||||
tableMap[tables[i].TableName] = &tables[i]
|
||||
}
|
||||
}
|
||||
|
||||
for i := 0; i < len(data.Columns); i++ {
|
||||
if data.Columns[i].LinkTableName != "" {
|
||||
t, ok := tableMap[data.Columns[i].LinkTableName]
|
||||
if ok {
|
||||
data.Columns[i].LinkTableClass = t.ClassName
|
||||
data.Columns[i].LinkTablePackage = t.ModuleName
|
||||
} else {
|
||||
tableNameList := strings.Split(data.Columns[i].LinkTableName, "_")
|
||||
data.Columns[i].LinkTableClass = ""
|
||||
data.Columns[i].LinkTablePackage = ""
|
||||
for a := 0; a < len(tableNameList); a++ {
|
||||
strStart := string([]byte(tableNameList[a])[:1])
|
||||
strEnd := string([]byte(tableNameList[a])[1:])
|
||||
data.Columns[i].LinkTableClass += strings.ToUpper(strStart) + strEnd
|
||||
data.Columns[i].LinkTablePackage += strings.ToLower(strStart) + strings.ToLower(strEnd)
|
||||
}
|
||||
}
|
||||
}
|
||||
SysSysConfigModelDao.Update(data.Columns[i])
|
||||
}
|
||||
return &data
|
||||
}
|
||||
|
||||
func (e *devGenTableModelImpl) DeleteTables(tableId int64) bool {
|
||||
var err error
|
||||
success := false
|
||||
tx := global.Db.Begin()
|
||||
defer func() {
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
} else {
|
||||
tx.Commit()
|
||||
}
|
||||
}()
|
||||
if err = tx.Table("sys_tables").Delete(entity.DevGenTable{}, "table_id = ?", tableId).Error; err != nil {
|
||||
return success
|
||||
}
|
||||
if err = tx.Table("sys_columns").Delete(entity.DevGenTableColumn{}, "table_id = ?", tableId).Error; err != nil {
|
||||
return success
|
||||
}
|
||||
success = true
|
||||
return success
|
||||
}
|
||||
|
||||
func (m *devGenTableModelImpl) Delete(configIds []int64) {
|
||||
err := global.Db.Table(m.table).Delete(&entity.DevGenTable{}, "`table_id` in (?)", configIds).Error
|
||||
biz.ErrIsNil(err, "删除生成代码信息失败")
|
||||
return
|
||||
}
|
||||
102
apps/develop/services/gen_table_column.go
Normal file
102
apps/develop/services/gen_table_column.go
Normal file
@@ -0,0 +1,102 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"pandax/apps/develop/entity"
|
||||
"pandax/base/biz"
|
||||
"pandax/base/config"
|
||||
"pandax/base/global"
|
||||
)
|
||||
|
||||
/**
|
||||
* @Description
|
||||
* @Author Panda
|
||||
* @Date 2021/12/31 14:44
|
||||
**/
|
||||
|
||||
type (
|
||||
SysGenTableColumnModel interface {
|
||||
FindDbTablesColumnListPage(page, pageSize int, data entity.DevGenTableColumn) (*[]entity.DevGenTableColumn, int64)
|
||||
FindDbTableColumnList(tableName string) *[]entity.DevGenTableColumn
|
||||
|
||||
Insert(data entity.DevGenTableColumn) *entity.DevGenTableColumn
|
||||
FindList(data entity.DevGenTableColumn) *[]entity.DevGenTableColumn
|
||||
Update(data entity.DevGenTableColumn) *entity.DevGenTableColumn
|
||||
}
|
||||
|
||||
devTableColumnModelImpl struct {
|
||||
table string
|
||||
ColumnTypeStr []string //数据库字符串类型
|
||||
ColumnTypeTime []string //数据库时间类型
|
||||
ColumnTypeNumber []string //数据库数字类型
|
||||
ColumnNameNotEdit []string //页面不需要编辑字段
|
||||
ColumnNameNotList []string //页面不需要显示的列表字段
|
||||
ColumnNameNotQuery []string //页面不需要查询字段
|
||||
}
|
||||
)
|
||||
|
||||
var SysSysConfigModelDao SysGenTableColumnModel = &devTableColumnModelImpl{
|
||||
table: "dev_gen_table_columns",
|
||||
ColumnTypeStr: []string{"char", "varchar", "narchar", "varchar2", "tinytext", "text", "mediumtext", "longtext"},
|
||||
ColumnTypeTime: []string{"datetime", "time", "date", "timestamp"},
|
||||
ColumnTypeNumber: []string{"tinyint", "smallint", "mediumint", "int", "number", "integer", "bigint", "float", "float", "double", "decimal"},
|
||||
ColumnNameNotEdit: []string{"id", "created_by", "created_at", "updated_by", "updated_at", "deleted_at"},
|
||||
ColumnNameNotList: []string{"id", "created_by", "updated_by", "created_at", "updated_at", "deleted_at"},
|
||||
ColumnNameNotQuery: []string{"id", "created_by", "updated_by", "created_at", "updated_at", "deleted_at", "remark"},
|
||||
}
|
||||
|
||||
func (m *devTableColumnModelImpl) FindDbTablesColumnListPage(page, pageSize int, data entity.DevGenTableColumn) (*[]entity.DevGenTableColumn, int64) {
|
||||
list := make([]entity.DevGenTableColumn, 0)
|
||||
var total int64 = 0
|
||||
offset := pageSize * (page - 1)
|
||||
if config.Conf.Server.DbType != "mysql" && config.Conf.Server.DbType == "postgresql" {
|
||||
biz.ErrIsNil(errors.New("只支持mysql和postgresql数据库"), "只支持mysql和postgresql数据库")
|
||||
}
|
||||
|
||||
db := global.Db.Table("information_schema.COLUMNS")
|
||||
db = db.Where("table_schema= ? ", config.Conf.Gen.Dbname)
|
||||
|
||||
if data.TableName != "" {
|
||||
db = db.Where("table_name = ?", data.TableName)
|
||||
}
|
||||
|
||||
err := db.Count(&total).Error
|
||||
err = db.Limit(pageSize).Offset(offset).Find(&list).Error
|
||||
biz.ErrIsNil(err, "查询生成代码列表信息失败")
|
||||
return &list, total
|
||||
}
|
||||
|
||||
func (m *devTableColumnModelImpl) FindDbTableColumnList(tableName string) *[]entity.DevGenTableColumn {
|
||||
resData := make([]entity.DevGenTableColumn, 0)
|
||||
if config.Conf.Server.DbType != "mysql" && config.Conf.Server.DbType == "postgresql" {
|
||||
biz.ErrIsNil(errors.New("只支持mysql和postgresql数据库"), "只支持mysql和postgresql数据库")
|
||||
}
|
||||
db := global.Db.Table("information_schema.columns")
|
||||
db = db.Where("table_schema = ? ", config.Conf.Gen.Dbname)
|
||||
biz.IsTrue(tableName != "", "table name cannot be empty!")
|
||||
|
||||
db = db.Where("table_name = ?", tableName)
|
||||
err := db.First(&resData).Error
|
||||
biz.ErrIsNil(err, err.Error())
|
||||
return &resData
|
||||
}
|
||||
|
||||
func (m *devTableColumnModelImpl) Insert(dgt entity.DevGenTableColumn) *entity.DevGenTableColumn {
|
||||
err := global.Db.Table(m.table).Create(&dgt).Error
|
||||
biz.ErrIsNil(err, "新增生成代码字段表失败")
|
||||
return &dgt
|
||||
}
|
||||
|
||||
func (m *devTableColumnModelImpl) FindList(data entity.DevGenTableColumn) *[]entity.DevGenTableColumn {
|
||||
list := make([]entity.DevGenTableColumn, 0)
|
||||
err := global.Db.Table(m.table).Where("table_id = ?", data.TableId).Find(&list).Error
|
||||
|
||||
biz.ErrIsNil(err, "查询生成代码字段表信息失败")
|
||||
return &list
|
||||
}
|
||||
|
||||
func (m *devTableColumnModelImpl) Update(data entity.DevGenTableColumn) *entity.DevGenTableColumn {
|
||||
err := global.Db.Table(m.table).Model(&data).Updates(&data).Error
|
||||
biz.ErrIsNil(err, "修改生成代码字段表失败")
|
||||
return &data
|
||||
}
|
||||
Reference in New Issue
Block a user