Roc 1 ano atrás
pai
commit
4a5656ef28

+ 9 - 0
controllers/chart.go

@@ -301,6 +301,15 @@ func GetLeadUnitEn(unit string) (unitEn string) {
 // GetChartInfoDetailFromUniqueCode 根据编码获取图表详情
 func GetChartInfoDetailFromUniqueCode(chartInfo *models.ChartInfo, key string) (resp *models.ChartInfoDetailResp, isOk bool, msg, errMsg string) {
 	resp = new(models.ChartInfoDetailResp)
+	// 获取主题样式
+	chartTheme, err := data.GetChartThemeConfig(chartInfo.ChartThemeId, chartInfo.Source, chartInfo.ChartType)
+	if err != nil {
+		msg = "获取失败"
+		errMsg = "获取主题信息失败,Err:" + err.Error()
+		return
+	}
+	chartInfo.ChartThemeStyle = chartTheme.Config
+	chartInfo.ChartThemeId = chartTheme.ChartThemeId
 
 	chartInfoId := chartInfo.ChartInfoId
 

+ 60 - 3
controllers/chart_common.go

@@ -129,6 +129,16 @@ func (this *ChartController) CommonChartInfoDetailFromUniqueCode() {
 func GetFutureGoodChartInfoDetailFromUniqueCode(chartInfo *models.ChartInfo, key string) (resp *models.ChartInfoDetailResp, isOk bool, msg, errMsg string) {
 	resp = new(models.ChartInfoDetailResp)
 
+	// 获取主题样式
+	chartTheme, err := data.GetChartThemeConfig(chartInfo.ChartThemeId, utils.CHART_SOURCE_DEFAULT, 1)
+	if err != nil {
+		msg = "获取失败"
+		errMsg = "获取主题信息失败,Err:" + err.Error()
+		return
+	}
+	chartInfo.ChartThemeStyle = chartTheme.Config
+	chartInfo.ChartThemeId = chartTheme.ChartThemeId
+
 	chartInfoId := chartInfo.ChartInfoId
 
 	startDate := chartInfo.StartDate
@@ -237,9 +247,19 @@ func GetFutureGoodProfitChartInfoDetailFromUniqueCode(chartInfo *models.ChartInf
 
 	chartInfoId := chartInfo.ChartInfoId
 
+	// 获取主题样式
+	chartTheme, err := data.GetChartThemeConfig(chartInfo.ChartThemeId, utils.CHART_SOURCE_DEFAULT, 1)
+	if err != nil {
+		msg = "获取失败"
+		errMsg = "获取主题信息失败,Err:" + err.Error()
+		return
+	}
+	chartInfo.ChartThemeStyle = chartTheme.Config
+	chartInfo.ChartThemeId = chartTheme.ChartThemeId
+
 	// 商品利润曲线图的一些配置
 	var extraConf request.ChartInfoReq
-	err := json.Unmarshal([]byte(chartInfo.ExtraConfig), &extraConf)
+	err = json.Unmarshal([]byte(chartInfo.ExtraConfig), &extraConf)
 	if err != nil {
 		msg = "商品利润曲线图配置异常"
 		errMsg = "商品利润曲线图配置异常,Err:" + err.Error()
@@ -325,6 +345,15 @@ func GetFutureGoodProfitChartInfoDetailFromUniqueCode(chartInfo *models.ChartInf
 // GetLineEquationChartInfoDetailFromUniqueCode 根据编码获取拟合方程图表详情
 func GetLineEquationChartInfoDetailFromUniqueCode(chartInfo *models.ChartInfo, key string) (resp *models.ChartInfoDetailResp, isOk bool, msg, errMsg string) {
 	resp = new(models.ChartInfoDetailResp)
+	// 获取主题样式
+	chartTheme, err := data.GetChartThemeConfig(chartInfo.ChartThemeId, utils.CHART_SOURCE_DEFAULT, 1)
+	if err != nil {
+		msg = "获取失败"
+		errMsg = "获取主题信息失败,Err:" + err.Error()
+		return
+	}
+	chartInfo.ChartThemeStyle = chartTheme.Config
+	chartInfo.ChartThemeId = chartTheme.ChartThemeId
 
 	//chartInfoId := chartInfo.ChartInfoId
 	if chartInfo.ExtraConfig == `` {
@@ -334,7 +363,7 @@ func GetLineEquationChartInfoDetailFromUniqueCode(chartInfo *models.ChartInfo, k
 	}
 
 	var lineChartInfoConfig line_equationReq.LineChartInfoReq
-	err := json.Unmarshal([]byte(chartInfo.ExtraConfig), &lineChartInfoConfig)
+	err = json.Unmarshal([]byte(chartInfo.ExtraConfig), &lineChartInfoConfig)
 	if err != nil {
 		msg = "获取失败"
 		errMsg = "获取图表配置信息失败, Err:" + err.Error()
@@ -392,6 +421,16 @@ func GetLineEquationChartInfoDetailFromUniqueCode(chartInfo *models.ChartInfo, k
 // GetLineFeatureChartInfoDetailFromUniqueCode 根据编码获取统计特征图表详情
 func GetLineFeatureChartInfoDetailFromUniqueCode(chartInfo *models.ChartInfo, key string) (resp *models.ChartInfoDetailResp, isOk bool, msg, errMsg string) {
 	resp = new(models.ChartInfoDetailResp)
+	// 获取主题样式
+	chartTheme, err := data.GetChartThemeConfig(chartInfo.ChartThemeId, utils.CHART_SOURCE_DEFAULT, 1)
+	if err != nil {
+		msg = "获取失败"
+		errMsg = "获取主题信息失败,Err:" + err.Error()
+		return
+	}
+	chartInfo.ChartThemeStyle = chartTheme.Config
+	chartInfo.ChartThemeId = chartTheme.ChartThemeId
+
 	// 获取图表关联指标
 	edbMappingList, err := models.GetChartEdbMappingList(chartInfo.ChartInfoId)
 	if err != nil {
@@ -475,6 +514,15 @@ func GetLineFeatureChartInfoDetailFromUniqueCode(chartInfo *models.ChartInfo, ke
 // GetCrossVarietyChartInfoDetailFromUniqueCode 根据编码获取图表详情
 func GetCrossVarietyChartInfoDetailFromUniqueCode(chartInfo *models.ChartInfo, key string) (resp *models.ChartInfoDetailResp, isOk bool, msg, errMsg string) {
 	resp = new(models.ChartInfoDetailResp)
+	// 获取主题样式
+	chartTheme, err := data.GetChartThemeConfig(chartInfo.ChartThemeId, utils.CHART_SOURCE_DEFAULT, 5)
+	if err != nil {
+		msg = "获取失败"
+		errMsg = "获取主题信息失败,Err:" + err.Error()
+		return
+	}
+	chartInfo.ChartThemeStyle = chartTheme.Config
+	chartInfo.ChartThemeId = chartTheme.ChartThemeId
 
 	if chartInfo.ExtraConfig == `` {
 		msg = "图表配置信息异常"
@@ -482,7 +530,7 @@ func GetCrossVarietyChartInfoDetailFromUniqueCode(chartInfo *models.ChartInfo, k
 		return
 	}
 	var config cross_varietyReq.ChartConfigReq
-	err := json.Unmarshal([]byte(chartInfo.ExtraConfig), &config)
+	err = json.Unmarshal([]byte(chartInfo.ExtraConfig), &config)
 	if err != nil {
 		msg = "解析跨品种分析配置失败"
 		errMsg = "解析跨品种分析配置失败,Err:" + err.Error()
@@ -593,6 +641,15 @@ func (this *ChartController) FutureGoodChartInfoRefresh() {
 // GetCorrelationChartInfoDetailFromUniqueCode 根据编码获取相关性图表详情
 func GetCorrelationChartInfoDetailFromUniqueCode(chartInfo *models.ChartInfo, key string) (resp *models.ChartInfoDetailResp, isOk bool, msg, errMsg string) {
 	resp = new(models.ChartInfoDetailResp)
+	// 获取主题样式
+	chartTheme, err := data.GetChartThemeConfig(chartInfo.ChartThemeId, utils.CHART_SOURCE_DEFAULT, 1)
+	if err != nil {
+		msg = "获取失败"
+		errMsg = "获取主题信息失败,Err:" + err.Error()
+		return
+	}
+	chartInfo.ChartThemeStyle = chartTheme.Config
+	chartInfo.ChartThemeId = chartTheme.ChartThemeId
 
 	chartInfoId := chartInfo.ChartInfoId
 

+ 6 - 0
models/chart.go

@@ -41,6 +41,12 @@ type ChartInfo struct {
 	ChartSourceEn     string    `description:"图表来源(英文)"`
 	SeasonExtraConfig string    `description:"季节性图表中的配置,json数据"`
 	StartYear         int       `description:"当选择的日期类型为最近N年类型时,即date_type=20, 用start_year表示N"`
+	ChartThemeId      int       `description:"图表应用主题ID"`
+	ChartThemeStyle   string    `description:"图表应用主题样式"`
+	SourcesFrom       string    `description:"图表来源"`
+	Instructions      string    `description:"图表说明"`
+	MarkersLines      string    `description:"标识线"`
+	MarkersAreas      string    `description:"标识区"`
 }
 
 func GetChartInfoByUniqueCode(uniqueCode string) (item *ChartInfo, err error) {

+ 151 - 0
models/data_manage/chart_theme/chart_theme.go

@@ -0,0 +1,151 @@
+package chart_theme
+
+import (
+	"errors"
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// ChartTheme
+// @Description: 图表主题表
+type ChartTheme struct {
+	ChartThemeId     int       `description:"图表主题类型ID" orm:"column(chart_theme_id);pk"`
+	ChartThemeName   string    `description:"图表主题名称"`
+	ChartThemeTypeId int       `description:"图表主题类型ID"`
+	ChartImage       string    `description:"缩略图"`
+	Config           string    `description:"配置"`
+	IsDelete         int       `description:"是否删除,0:未删除;1:已删除"`
+	SysUserId        int       `description:"操作人"`
+	SysUserRealName  string    `description:"操作人的真实名称"`
+	IsSystemTheme    int       `description:"是否是系统主题,0:不是;1:是"`
+	ModifyTime       time.Time `description:"修改时间"`
+	CreateTime       time.Time `description:"创建时间"`
+}
+
+// GetChartThemeId
+// @Description: 根据id获取主题
+// @author: Roc
+// @datetime 2023-12-14 16:05:36
+// @param chartThemeId int
+// @return item *ChartTheme
+// @return err error
+func GetChartThemeId(chartThemeId int) (item *ChartTheme, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM chart_theme where chart_theme_id = ? AND is_delete = 0`
+	err = o.Raw(sql, chartThemeId).QueryRow(&item)
+
+	return
+}
+
+// Add
+// @Description: 添加
+// @author: Roc
+// @receiver m
+// @datetime 2023-12-14 16:11:10
+// @param cols []string
+// @return err error
+func (m *ChartTheme) Add() (err error) {
+	if m.ChartThemeId > 0 {
+		err = errors.New("该配置已存在")
+		return
+	}
+	o := orm.NewOrmUsingDB("data")
+	lastId, err := o.Insert(m)
+	if err != nil {
+		return
+	}
+	m.ChartThemeId = int(lastId)
+
+	return
+}
+
+// Update
+// @Description: 更新
+// @author: Roc
+// @receiver m
+// @datetime 2023-12-14 16:11:10
+// @param cols []string
+// @return err error
+func (m *ChartTheme) Update(cols []string) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.Update(m, cols...)
+	return
+}
+
+// GetChartThemeListByTypeId
+// @Description: 根据图表类型获取关联的图表主题列表
+// @author: Roc
+// @datetime 2023-12-13 17:39:48
+// @return list []*ChartTheme
+// @return err error
+func GetChartThemeListByTypeId(chartThemeTypeId int) (list []*ChartTheme, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM chart_theme WHERE chart_theme_type_id = ? AND  is_delete=0 ORDER BY chart_theme_id ASC `
+	_, err = o.Raw(sql, chartThemeTypeId).QueryRows(&list)
+
+	return
+}
+
+// GetAllChartThemeList
+// @Description: 获取所有图表主题列表
+// @author: Roc
+// @datetime 2023-12-13 17:39:48
+// @return list []*ChartTheme
+// @return err error
+func GetAllChartThemeList() (list []*ChartTheme, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM chart_theme WHERE  is_delete=0 ORDER BY chart_theme_id ASC `
+	_, err = o.Raw(sql).QueryRows(&list)
+
+	return
+}
+
+// ChartThemeItem
+// @Description: 图表主题配置
+type ChartThemeItem struct {
+	ChartThemeId     int    `description:"图表主题类型ID" orm:"column(chart_theme_id);pk"`
+	ChartThemeName   string `description:"图表主题名称"`
+	ChartThemeTypeId int    `description:"图表主题类型ID"`
+	Config           string `description:"配置"`
+	ChartImage       string `description:"缩略图"`
+	//IsDelete            int       `description:"是否删除,0:未删除;1:已删除"`
+	IsSystemTheme       int       `description:"是否是系统主题,0:不是;1:是"`
+	SysUserId           int       `description:"操作人"`
+	SysUserRealName     string    `description:"操作人的真实名称"`
+	ModifyTime          time.Time `description:"修改时间"`
+	CreateTime          time.Time `description:"创建时间"`
+	DefaultChartThemeId int       `description:"默认使用的图表主题ID"`
+}
+
+// GetChartThemeItemList
+// @Description: 根据图表类型id获取配置列表
+// @author: Roc
+// @datetime 2023-12-14 14:26:35
+// @param chartThemeTypeId int
+// @return list []*ChartThemeConfig
+// @return err error
+func GetChartThemeItemList(chartThemeTypeId int) (list []*ChartThemeItem, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT a.*,b.default_chart_theme_id FROM chart_theme a 
+         JOIN chart_theme_type b on a.chart_theme_type_id =b.chart_theme_type_id 
+         WHERE a.chart_theme_type_id = ? AND a.is_delete=0 ORDER BY a.chart_theme_id ASC `
+	_, err = o.Raw(sql, chartThemeTypeId).QueryRows(&list)
+
+	return
+}
+
+// GetSystemChartTheme
+// @Description: 根据图表类型id获取系统配置
+// @author: Roc
+// @datetime 2023-12-14 14:26:35
+// @param chartThemeTypeId int
+// @return item *ChartTheme
+// @return err error
+func GetSystemChartTheme(chartThemeTypeId int) (item *ChartTheme, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT a.* FROM chart_theme a
+         WHERE a.chart_theme_type_id = ? AND a.is_system_theme=1 ORDER BY a.chart_theme_id ASC `
+	err = o.Raw(sql, chartThemeTypeId).QueryRow(&item)
+
+	return
+}

+ 90 - 0
models/data_manage/chart_theme/chart_theme_type.go

@@ -0,0 +1,90 @@
+package chart_theme
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// ChartThemeType
+// @Description: 图表主题类型表
+type ChartThemeType struct {
+	ChartThemeTypeId    int       `description:"图表主题类型ID" orm:"column(chart_theme_type_id);pk"`
+	ChartTypeName       string    `description:"类型名称"`
+	ChartType           int       `description:"图表类型"`
+	ChartSource         int       `description:"图表来源"`
+	DefaultChartThemeId int       `description:"默认使用的主题id"`
+	ModifyTime          time.Time `description:"修改时间"`
+	CreateTime          time.Time `description:"创建时间"`
+}
+
+// Update
+// @Description: 更新
+// @author: Roc
+// @receiver m
+// @datetime 2023-12-14 16:11:10
+// @param cols []string
+// @return err error
+func (m *ChartThemeType) Update(cols []string) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.Update(m, cols...)
+	return
+}
+
+// GetAllChartThemeTypeList
+// @Description: 获取所有图表主题类型列表
+// @author: Roc
+// @datetime 2023-12-13 17:31:03
+// @return list []*ChartThemeType
+// @return err error
+func GetAllChartThemeTypeList() (list []*ChartThemeType, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM chart_theme_type ORDER BY chart_theme_type_id ASC `
+	_, err = o.Raw(sql).QueryRows(&list)
+
+	return
+}
+
+// GetChartThemeTypeListBySource
+// @Description: 根据来源获取图表主题类型列表
+// @author: Roc
+// @datetime 2023-12-13 17:31:03
+// @param source int
+// @return list []*ChartThemeType
+// @return err error
+func GetChartThemeTypeListBySource(source int) (list []*ChartThemeType, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM chart_theme_type WHERE chart_source = ?  ORDER BY chart_theme_type_id ASC `
+	_, err = o.Raw(sql, source).QueryRows(&list)
+
+	return
+}
+
+// GetChartThemeTypeById
+// @Description: 通过类型id获取类型
+// @author: Roc
+// @datetime 2023-12-14 09:53:58
+// @param chartThemeTypeId int
+// @return item *ChartThemeType
+// @return err error
+func GetChartThemeTypeById(chartThemeTypeId int) (item *ChartThemeType, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM chart_theme_type where chart_theme_type_id = ? `
+	err = o.Raw(sql, chartThemeTypeId).QueryRow(&item)
+
+	return
+}
+
+// GetChartThemeTypeByChartTypeAndSource
+// @Description: 通过图表类型和来源获取类型
+// @author: Roc
+// @datetime 2023-12-14 09:53:58
+// @param chartThemeTypeId int
+// @return item *ChartThemeType
+// @return err error
+func GetChartThemeTypeByChartTypeAndSource(chartType, source int) (item *ChartThemeType, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM chart_theme_type where chart_type = ? AND chart_source = ? `
+	err = o.Raw(sql, chartType, source).QueryRow(&item)
+
+	return
+}

+ 40 - 0
services/data/chart_theme.go

@@ -0,0 +1,40 @@
+package data
+
+import (
+	"eta/eta_chart_lib/models/data_manage/chart_theme"
+	"eta/eta_chart_lib/utils"
+)
+
+// GetChartThemeConfig
+// @Description: 根据主题id获取主题信息,如果获取不到的话,那么就获取默认的主题
+// @author: Roc
+// @datetime 2023-12-19 14:31:17
+// @param chartThemeId int
+// @param chartType int
+// @param source int
+// @return chartTheme *chart_theme.ChartTheme
+// @return err error
+func GetChartThemeConfig(chartThemeId, source, chartType int) (chartTheme *chart_theme.ChartTheme, err error) {
+	chartTheme, err = chart_theme.GetChartThemeId(chartThemeId)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return
+	}
+
+	err = nil
+
+	// 如果找到了,那么就返回
+	if chartTheme != nil {
+		return
+	}
+
+	// 没有找到的话,那么就找默认的主题
+
+	// 查找主题类型id
+	chartThemeType, err := chart_theme.GetChartThemeTypeByChartTypeAndSource(chartType, source)
+	if err != nil {
+		return
+	}
+	chartTheme, err = chart_theme.GetSystemChartTheme(chartThemeType.ChartThemeTypeId)
+
+	return
+}