Browse Source

temp commit

hsun 1 year ago
parent
commit
154418935e

+ 319 - 0
controllers/chart_framework/chart_framework.go

@@ -0,0 +1,319 @@
+package chart_framework
+
+import (
+	"encoding/json"
+	"eta/eta_api/controllers"
+	"eta/eta_api/models"
+	"eta/eta_api/models/data_manage"
+	"eta/eta_api/utils"
+	"fmt"
+	"strings"
+	"time"
+)
+
+// ChartFrameworkController 图库框架
+type ChartFrameworkController struct {
+	controllers.BaseAuthController
+}
+
+// List
+// @Title 列表
+// @Description 列表
+// @Param   Visibility	query	int		false	"可见度: 0-所有(默认); 1-我的; 2-公开"
+// @Param   Keyword		query	string	false	"关键词"
+// @Success 200 Ret=200 获取成功
+// @router /list [get]
+func (this *ChartFrameworkController) List() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+}
+
+// Add
+// @Title 新增框架
+// @Description 新增框架
+// @Param	request	body data_manage.ChartFrameworkAddReq true "type json string"
+// @Success 200 Ret=200 操作成功
+// @router /add [post]
+func (this *ChartFrameworkController) Add() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	// 参数校验
+	var req data_manage.ChartFrameworkAddReq
+	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + e.Error()
+		return
+	}
+	req.FrameworkName = strings.TrimSpace(req.FrameworkName)
+	if req.FrameworkName == "" {
+		br.Msg = "框架名称不可为空"
+		return
+	}
+
+	// 重名校验
+	{
+		ob := new(data_manage.ChartFramework)
+		cond := fmt.Sprintf(` AND %s = ?`, data_manage.ChartFrameworkColumns.FrameworkName)
+		pars := make([]interface{}, 0)
+		pars = append(pars, req.FrameworkName)
+		exist, e := ob.GetItemByCondition(cond, pars)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			br.Msg = "操作失败"
+			br.ErrMsg = "获取重名框架失败, Err: " + e.Error()
+			return
+		}
+		if exist != nil {
+			br.Msg = "框架名称已存在"
+			return
+		}
+	}
+
+	now := time.Now().Local()
+	frameworkCode := utils.MD5(fmt.Sprint(now.UnixMilli()))
+	item := new(data_manage.ChartFramework)
+	item.FrameworkName = req.FrameworkName
+	item.FrameworkCode = frameworkCode
+	item.FrameworkImg = req.FrameworkImg
+	item.FrameworkContent = req.FrameworkContent
+	item.AdminId = sysUser.AdminId
+	item.AdminName = sysUser.RealName
+	item.CreateTime = now
+	item.ModifyTime = now
+	nodes := make([]*data_manage.ChartFrameworkNode, 0)
+	if len(req.Nodes) > 0 {
+		for _, v := range req.Nodes {
+			if v <= 0 {
+				continue
+			}
+			t := new(data_manage.ChartFrameworkNode)
+			t.MyChartClassifyId = v
+			t.CreateTime = now
+		}
+	}
+	if e := item.CreateFrameworkAndNodes(item, nodes); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "新增框架及节点失败, Err: " + e.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}
+
+// Edit
+// @Title 编辑框架
+// @Description 编辑框架
+// @Param	request	body eta_business.EtaBusinessAddReq true "type json string"
+// @Success 200 Ret=200 操作成功
+// @router /edit [post]
+func (this *ChartFrameworkController) Edit() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	// 参数校验
+	var req data_manage.ChartFrameworkEditReq
+	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + e.Error()
+		return
+	}
+	if req.ChartFrameworkId <= 0 {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprintf("参数有误, ChartFrameworkId: %d", req.ChartFrameworkId)
+		return
+	}
+	req.FrameworkName = strings.TrimSpace(req.FrameworkName)
+	if req.FrameworkName == "" {
+		br.Msg = "框架名称不可为空"
+		return
+	}
+
+	frameworkOb := new(data_manage.ChartFramework)
+	item, e := frameworkOb.GetItemById(req.ChartFrameworkId)
+	if e != nil {
+		if e.Error() == utils.ErrNoRow() {
+			br.Msg = "框架不存在, 请刷新页面"
+			return
+		}
+		br.Msg = "操作失败"
+		br.ErrMsg = "获取框架失败, Err: " + e.Error()
+		return
+	}
+
+	// 重名校验
+	{
+		ob := new(data_manage.ChartFramework)
+		cond := fmt.Sprintf(` AND %s <> ? AND %s = ?`, ob.PrimaryId(), data_manage.ChartFrameworkColumns.FrameworkName)
+		pars := make([]interface{}, 0)
+		pars = append(pars, req.FrameworkName)
+		exist, e := ob.GetItemByCondition(cond, pars)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			br.Msg = "操作失败"
+			br.ErrMsg = "获取重名框架失败, Err: " + e.Error()
+			return
+		}
+		if exist != nil {
+			br.Msg = "框架名称已存在"
+			return
+		}
+	}
+
+	now := time.Now().Local()
+	item.FrameworkName = req.FrameworkName
+	item.FrameworkImg = req.FrameworkImg
+	item.FrameworkContent = req.FrameworkContent
+	item.ModifyTime = now
+	updateCols := []string{"FrameworkName", "FrameworkImg", "FrameworkContent", "ModifyTime"}
+	nodes := make([]*data_manage.ChartFrameworkNode, 0)
+	if len(req.Nodes) > 0 {
+		for _, v := range req.Nodes {
+			if v <= 0 {
+				continue
+			}
+			t := new(data_manage.ChartFrameworkNode)
+			t.ChartFrameworkId = item.ChartFrameworkId
+			t.MyChartClassifyId = v
+			t.CreateTime = now
+		}
+	}
+	if e := item.EditFrameworkAndNodes(item, updateCols, nodes); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "编辑框架及节点失败, Err: " + e.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}
+
+// Remove
+// @Title 删除框架
+// @Description 删除视频
+// @Param	request	body eta_training_video.EtaTrainingVideoRemoveReq true "type json string"
+// @Success 200 Ret=200 操作成功
+// @router /remove [post]
+//func (this *ChartFrameworkController) Remove() {
+//	br := new(models.BaseResponse).Init()
+//	defer func() {
+//		if br.ErrMsg == "" {
+//			br.IsSendEmail = false
+//		}
+//		this.Data["json"] = br
+//		this.ServeJSON()
+//	}()
+//	sysUser := this.SysUser
+//	if sysUser == nil {
+//		br.Msg = "请登录"
+//		br.ErrMsg = "请登录,SysUser Is Empty"
+//		br.Ret = 408
+//		return
+//	}
+//
+//	// 参数校验
+//	var req eta_training_video.EtaTrainingVideoRemoveReq
+//	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
+//		br.Msg = "参数解析异常!"
+//		br.ErrMsg = "参数解析失败,Err:" + e.Error()
+//		return
+//	}
+//	if req.VideoId <= 0 {
+//		br.Msg = "参数有误"
+//		br.ErrMsg = fmt.Sprint("参数有误, 视频ID: ", req.VideoId)
+//		return
+//	}
+//
+//	ob := new(eta_training_video.EtaTrainingVideo)
+//	item, e := ob.GetItemById(req.VideoId)
+//	if e != nil {
+//		if e.Error() == utils.ErrNoRow() {
+//			br.Ret = 200
+//			br.Success = true
+//			br.Msg = "操作成功"
+//			return
+//		}
+//		br.Msg = "操作失败"
+//		br.ErrMsg = "获取ETA培训视频失败, Err: " + e.Error()
+//		return
+//	}
+//	if e := item.Del(); e != nil {
+//		br.Msg = "操作失败"
+//		br.ErrMsg = "删除ETA培训视频失败, Err: " + e.Error()
+//		return
+//	}
+//
+//	// 移除分类、标签关联, 更新标签引用数
+//	go func() {
+//		cr := new(eta_training_video.EtaTrainingVideoClassifyRelate)
+//		_ = cr.RemoveRelateByVideoId(item.EtaTrainingVideoId)
+//
+//		tr := new(eta_training_video.EtaTrainingVideoTagRelate)
+//		_ = tr.RemoveRelateByVideoId(item.EtaTrainingVideoId)
+//
+//		t := new(eta_training_video.EtaTrainingVideoTag)
+//		_ = t.RemoveVideoTotalByVideoId(item.EtaTrainingVideoId)
+//	}()
+//
+//	// 操作日志
+//	go func() {
+//		logItem := new(eta_training_video.EtaTrainingVideoOpLog)
+//		logItem.EtaTrainingVideoId = item.EtaTrainingVideoId
+//		logItem.SysUserId = sysUser.AdminId
+//		logItem.SysRealName = sysUser.RealName
+//		logItem.OpType = eta_training_video.VideoOpTypeRemove
+//		b, e := json.Marshal(item)
+//		if e != nil {
+//			return
+//		}
+//		logItem.OpData = string(b)
+//		logItem.CreateTime = time.Now().Local()
+//		_ = logItem.Create()
+//	}()
+//
+//	br.Ret = 200
+//	br.Success = true
+//	br.Msg = "操作成功"
+//}

+ 254 - 0
models/data_manage/chart_framework.go

@@ -0,0 +1,254 @@
+package data_manage
+
+import (
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+	"strings"
+	"time"
+)
+
+// ChartFramework 图库框架表
+type ChartFramework struct {
+	ChartFrameworkId int       `orm:"column(chart_framework_id);pk"`
+	FrameworkCode    string    `description:"框架唯一编码"`
+	FrameworkName    string    `description:"框架名称"`
+	FrameworkImg     string    `description:"框架图片"`
+	FrameworkContent string    `description:"框架内容"`
+	IsPublic         int       `description:"是否公开:0-私有;1-公开"`
+	PublicTime       time.Time `description:"公开时间"`
+	Sort             int       `description:"排序"`
+	AdminId          int       `description:"创建人ID"`
+	AdminName        string    `description:"创建人姓名"`
+	CreateTime       time.Time `description:"创建时间"`
+	ModifyTime       time.Time `description:"更新时间"`
+}
+
+func (m *ChartFramework) TableName() string {
+	return "chart_framework"
+}
+
+func (m *ChartFramework) PrimaryId() string {
+	return ChartFrameworkColumns.ChartFrameworkId
+}
+
+var ChartFrameworkColumns = struct {
+	ChartFrameworkId string
+	FrameworkCode    string
+	FrameworkName    string
+	FrameworkImg     string
+	FrameworkContent string
+	IsPublic         string
+	PublicTime       string
+	Sort             string
+	AdminId          string
+	AdminName        string
+	CreateTime       string
+	ModifyTime       string
+}{
+	ChartFrameworkId: "chart_framework_id",
+	FrameworkCode:    "framework_code",
+	FrameworkName:    "framework_name",
+	FrameworkImg:     "framework_img",
+	FrameworkContent: "framework_content",
+	IsPublic:         "is_public",
+	PublicTime:       "public_time",
+	Sort:             "sort",
+	AdminId:          "admin_id",
+	AdminName:        "admin_name",
+	CreateTime:       "create_time",
+	ModifyTime:       "modify_time",
+}
+
+func (m *ChartFramework) Create() (err error) {
+	o := orm.NewOrmUsingDB("data")
+	id, err := o.Insert(m)
+	if err != nil {
+		return
+	}
+	m.ChartFrameworkId = int(id)
+	return
+}
+
+func (m *ChartFramework) CreateMulti(items []*ChartFramework) (err error) {
+	if len(items) == 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.InsertMulti(len(items), items)
+	return
+}
+
+func (m *ChartFramework) Update(cols []string) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.Update(m, cols...)
+	return
+}
+
+func (m *ChartFramework) Del() (err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
+	_, err = o.Raw(sql, m.ChartFrameworkId).Exec()
+	return
+}
+
+func (m *ChartFramework) GetItemById(id int) (item *ChartFramework, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
+	err = o.Raw(sql, id).QueryRow(&item)
+	return
+}
+
+func (m *ChartFramework) GetItemByCondition(condition string, pars []interface{}) (item *ChartFramework, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s LIMIT 1`, m.TableName(), condition)
+	err = o.Raw(sql, pars).QueryRow(&item)
+	return
+}
+
+func (m *ChartFramework) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
+	err = o.Raw(sql, pars).QueryRow(&count)
+	return
+}
+
+func (m *ChartFramework) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*ChartFramework, err error) {
+	o := orm.NewOrmUsingDB("data")
+	fields := strings.Join(fieldArr, ",")
+	if len(fieldArr) == 0 {
+		fields = `*`
+	}
+	order := `ORDER BY create_time DESC`
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+func (m *ChartFramework) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*ChartFramework, err error) {
+	o := orm.NewOrmUsingDB("data")
+	fields := strings.Join(fieldArr, ",")
+	if len(fieldArr) == 0 {
+		fields = `*`
+	}
+	order := `ORDER BY create_time DESC`
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+func (m *ChartFramework) CreateFrameworkAndNodes(item *ChartFramework, nodes []*ChartFrameworkNode) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	tx, e := o.Begin()
+	if e != nil {
+		err = fmt.Errorf("orm begin err: %s", e.Error())
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = tx.Rollback()
+			return
+		}
+		_ = tx.Commit()
+	}()
+
+	id, e := tx.Insert(item)
+	if e != nil {
+		err = fmt.Errorf("insert framework err: %s", e.Error())
+		return
+	}
+	newId := int(id)
+	item.ChartFrameworkId = newId
+
+	if len(nodes) > 0 {
+		for _, n := range nodes {
+			n.ChartFrameworkId = newId
+		}
+		_, e = tx.InsertMulti(len(nodes), nodes)
+		if e != nil {
+			err = fmt.Errorf("insert multi nodes err: %s", e.Error())
+			return
+		}
+	}
+	return
+}
+
+func (m *ChartFramework) EditFrameworkAndNodes(item *ChartFramework, updateCols []string, nodes []*ChartFrameworkNode) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	tx, e := o.Begin()
+	if e != nil {
+		err = fmt.Errorf("orm begin err: %s", e.Error())
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = tx.Rollback()
+			return
+		}
+		_ = tx.Commit()
+	}()
+
+	_, e = tx.Update(item, updateCols...)
+	if e != nil {
+		err = fmt.Errorf("framework update err: %s", e.Error())
+		return
+	}
+
+	sql := `DELETE FROM chart_framework_node WHERE chart_framework_id = ?`
+	_, e = tx.Raw(sql, item.ChartFrameworkId).Exec()
+	if e != nil {
+		err = fmt.Errorf("clear nodes err: %s", e.Error())
+		return
+	}
+	if len(nodes) > 0 {
+		_, e = tx.InsertMulti(len(nodes), nodes)
+		if e != nil {
+			err = fmt.Errorf("insert multi nodes err: %s", e.Error())
+			return
+		}
+	}
+	return
+}
+
+// ChartFrameworkAddReq 图库框架新增请求体
+type ChartFrameworkAddReq struct {
+	FrameworkName    string `description:"框架名称"`
+	FrameworkImg     string `description:"框架图片"`
+	FrameworkContent string `description:"框架内容"`
+	Nodes            []int  `description:"框架关联的所有节点ID"`
+}
+
+// ChartFrameworkEditReq 图库框架编辑请求体
+type ChartFrameworkEditReq struct {
+	ChartFrameworkId int `description:"图库框架ID"`
+	ChartFrameworkAddReq
+}
+
+// ChartFrameworkRemoveReq 图库框架编辑请求体
+type ChartFrameworkRemoveReq struct {
+	ChartFrameworkId int `description:"图库框架ID"`
+}
+
+// ChartFrameworkRenameReq 图库框架重命名请求体
+type ChartFrameworkRenameReq struct {
+	ChartFrameworkId int `description:"图库框架ID"`
+	FrameworkName    int `description:"框架名称"`
+}
+
+// ChartFrameworkEditPublicReq 图库框架编辑公开请求体
+type ChartFrameworkEditPublicReq struct {
+	ChartFrameworkId int `description:"图库框架ID"`
+	IsPublic         int `description:"0-隐藏公开; 1-公开"`
+}
+
+// ChartFrameworkMoveReq 图库框架移动排序请求体
+type ChartFrameworkMoveReq struct {
+	ChartFrameworkId     int `description:"图库框架ID"`
+	PrevChartFrameworkId int `description:"上一个框架ID"`
+	NextChartFrameworkId int `description:"下一个框架ID"`
+}

+ 108 - 0
models/data_manage/chart_framework_node.go

@@ -0,0 +1,108 @@
+package data_manage
+
+import (
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+	"strings"
+	"time"
+)
+
+// ChartFrameworkNode 图库框架节点表
+type ChartFrameworkNode struct {
+	ChartFrameworkNodeId int       `orm:"column(chart_framework_node_id);pk"`
+	ChartFrameworkId     int       `description:"框架ID"`
+	NodeName             string    `description:"节点名称"`
+	MyChartClassifyId    int       `description:"我的图表分类ID"`
+	CreateTime           time.Time `description:"创建时间"`
+}
+
+func (m *ChartFrameworkNode) TableName() string {
+	return "chart_framework_node"
+}
+
+func (m *ChartFrameworkNode) PrimaryId() string {
+	return "chart_framework_node_id"
+}
+
+func (m *ChartFrameworkNode) Create() (err error) {
+	o := orm.NewOrmUsingDB("data")
+	id, err := o.Insert(m)
+	if err != nil {
+		return
+	}
+	m.ChartFrameworkNodeId = int(id)
+	return
+}
+
+func (m *ChartFrameworkNode) CreateMulti(items []*ChartFrameworkNode) (err error) {
+	if len(items) == 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.InsertMulti(len(items), items)
+	return
+}
+
+func (m *ChartFrameworkNode) Update(cols []string) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.Update(m, cols...)
+	return
+}
+
+func (m *ChartFrameworkNode) Del() (err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
+	_, err = o.Raw(sql, m.ChartFrameworkNodeId).Exec()
+	return
+}
+
+func (m *ChartFrameworkNode) GetItemById(id int) (item *ChartFrameworkNode, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
+	err = o.Raw(sql, id).QueryRow(&item)
+	return
+}
+
+func (m *ChartFrameworkNode) GetItemByCondition(condition string, pars []interface{}) (item *ChartFrameworkNode, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s LIMIT 1`, m.TableName(), condition)
+	err = o.Raw(sql, pars).QueryRow(&item)
+	return
+}
+
+func (m *ChartFrameworkNode) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
+	err = o.Raw(sql, pars).QueryRow(&count)
+	return
+}
+
+func (m *ChartFrameworkNode) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*ChartFrameworkNode, err error) {
+	o := orm.NewOrmUsingDB("data")
+	fields := strings.Join(fieldArr, ",")
+	if len(fieldArr) == 0 {
+		fields = `*`
+	}
+	order := `ORDER BY create_time DESC`
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+func (m *ChartFrameworkNode) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*ChartFrameworkNode, err error) {
+	o := orm.NewOrmUsingDB("data")
+	fields := strings.Join(fieldArr, ",")
+	if len(fieldArr) == 0 {
+		fields = `*`
+	}
+	order := `ORDER BY create_time DESC`
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	return
+}

+ 11 - 0
models/db.go

@@ -134,6 +134,9 @@ func init() {
 	// 商家配置
 	initBusinessConf()
 
+	// 图库框架
+	initChartFramework()
+
 	// 外部链接
 	initOutLink()
 	// ETA试用相关表
@@ -414,3 +417,11 @@ func initEtaTrial() {
 		new(eta_trial.QuestionnaireFillRecord), // 问卷填写记录表
 	)
 }
+
+// initChartFramework 图库框架相关表
+func initChartFramework() {
+	orm.RegisterModel(
+		new(data_manage.ChartFramework),     // 图库框架主表
+		new(data_manage.ChartFrameworkNode), // 图库框架节点表
+	)
+}

+ 6 - 0
routers/router.go

@@ -9,6 +9,7 @@ package routers
 
 import (
 	"eta/eta_api/controllers"
+	"eta/eta_api/controllers/chart_framework"
 	"eta/eta_api/controllers/data_manage"
 	"eta/eta_api/controllers/data_manage/correlation"
 	future_good2 "eta/eta_api/controllers/data_manage/future_good"
@@ -287,6 +288,11 @@ func init() {
 				&controllers.MeetingProbabilitiesController{},
 			),
 		),
+		web.NSNamespace("/chart_framework",
+			web.NSInclude(
+				&chart_framework.ChartFrameworkController{},
+			),
+		),
 	)
 	web.AddNamespace(ns)
 }