123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- package services
- import (
- "encoding/json"
- "eta/eta_forum_hub/models"
- "eta/eta_forum_hub/models/chart_theme/request"
- "eta/eta_forum_hub/utils"
- "fmt"
- "time"
- )
- func AddOrUpdateChartTheme(req models.ChartTheme) (err error) {
- // 查询主题信息是否存在
- chartTheme := new(models.ChartTheme)
- if req.ChartThemeId > 0 {
- var e error
- chartTheme, e = models.GetChartThemeId(req.ChartThemeId)
- if e != nil && e.Error() != utils.ErrNoRow() {
- err = fmt.Errorf("查询主题信息失败 %v", e)
- return
- }
- if e == nil {
- if chartTheme.BusinessCode != chartTheme.BusinessCode {
- err = fmt.Errorf("更新主题信息失败")
- }
- chartTheme.ChartThemeName = req.ChartThemeName
- chartTheme.ChartThemeTypeId = req.ChartThemeTypeId
- chartTheme.Config = req.Config
- chartTheme.ChartImage = req.ChartImage
- chartTheme.IsDelete = req.IsDelete
- chartTheme.SysUserId = req.SysUserId
- chartTheme.SysUserRealName = req.SysUserRealName
- chartTheme.ModifyTime = time.Now()
- // 添加入库
- err = chartTheme.Update([]string{})
- if err != nil {
- err = fmt.Errorf("添加或更新图表主题失败,%v", err)
- return
- }
- return
- }
- }
- chartTheme = &models.ChartTheme{
- ChartThemeId: req.ChartThemeId,
- ChartThemeName: req.ChartThemeName,
- ChartThemeTypeId: req.ChartThemeTypeId,
- Config: req.Config,
- ChartImage: req.ChartImage,
- IsDelete: req.IsDelete,
- SysUserId: req.SysUserId,
- SysUserRealName: req.SysUserRealName,
- ModifyTime: time.Now(),
- CreateTime: time.Now(),
- BusinessCode: req.BusinessCode,
- }
- // 添加入库
- err = chartTheme.Add()
- if err != nil {
- err = fmt.Errorf("添加或更新图表主题失败,%v", err)
- return
- }
- return
- }
- func AddOrUpdateChartThemeType(req models.ChartThemeType) (err error) {
- // 查询主题信息是否存在
- chartThemeType := new(models.ChartThemeType)
- if req.ChartThemeTypeId > 0 {
- var e error
- chartThemeType, e = models.GetChartThemeTypeById(req.ChartThemeTypeId)
- if e != nil && e.Error() != utils.ErrNoRow() {
- err = fmt.Errorf("查询主题信息失败 %v", e)
- return
- }
- if e == nil {
- // 添加入库
- chartThemeType.ChartTypeName = req.ChartTypeName
- chartThemeType.ChartType = req.ChartType
- chartThemeType.DefaultChartThemeId = req.DefaultChartThemeId
- chartThemeType.ChartSource = req.ChartSource
- chartThemeType.ModifyTime = time.Now()
- err = chartThemeType.Update([]string{})
- if err != nil {
- err = fmt.Errorf("添加或更新图表主题失败,%v", err)
- return
- }
- return
- }
- }
- chartThemeType = &models.ChartThemeType{
- ChartTypeName: req.ChartTypeName,
- ChartType: req.ChartType,
- ChartSource: req.ChartSource,
- DefaultChartThemeId: req.DefaultChartThemeId,
- ModifyTime: time.Now(),
- CreateTime: time.Now(),
- }
- // 添加入库
- err = chartThemeType.Add()
- if err != nil {
- err = fmt.Errorf("添加或更新图表主题失败,%v", err)
- return
- }
- return
- }
- // GetChartThemeConfig
- // @Description: 根据主题id获取主题信息,如果获取不到的话,那么就获取默认的主题
- // @author: Roc
- // @datetime 2023-12-19 14:31:17
- // @param chartThemeId int
- // @param chartType int
- // @param source int
- // @return chartTheme *models.ChartTheme
- // @return err error
- func GetChartThemeConfig(chartThemeId, source, chartType int) (chartTheme *models.ChartTheme, err error) {
- chartTheme, err = models.GetChartThemeId(chartThemeId)
- if err != nil && err.Error() != utils.ErrNoRow() {
- return
- }
- err = nil
- // 如果找到了,那么就返回
- if chartTheme != nil {
- // 兼容历史数据,加入新字段LineOptionList
- newConfig, e := ConvertOldChartOptions(chartTheme.Config)
- if e == nil {
- chartTheme.Config = newConfig
- }
- return
- }
- // 没有找到的话,那么就找默认的主题
- // 查找主题类型id
- chartThemeType, err := models.GetChartThemeTypeByChartTypeAndSource(chartType, source)
- if err != nil {
- return
- }
- // 寻找默认的主题id
- chartTheme, err = models.GetChartThemeId(chartThemeType.DefaultChartThemeId)
- if err != nil && err.Error() != utils.ErrNoRow() {
- return
- }
- err = nil
- // 如果找到了,那么就返回
- if chartTheme != nil {
- // 兼容历史数据,加入新字段LineOptionList
- newConfig, e := ConvertOldChartOptions(chartTheme.Config)
- if e == nil {
- chartTheme.Config = newConfig
- }
- return
- }
- // 如果还是没找到,那就系统的主题id
- chartTheme, err = models.GetSystemChartTheme(chartThemeType.ChartThemeTypeId)
- // 兼容历史数据,加入新字段LineOptionList
- newConfig, e := ConvertOldChartOptions(chartTheme.Config)
- if e == nil {
- chartTheme.Config = newConfig
- }
- return
- }
- // 兼容历史数据,加入新字段LineOptionList
- func ConvertOldChartOptions(config string) (newConfig string, err error) {
- var oldTheme request.OldChartOptions
- var newTheme request.NewChartOptions
- err = json.Unmarshal([]byte(config), &oldTheme)
- if err != nil {
- return
- }
- if oldTheme.LineOptionList != nil && len(oldTheme.LineOptionList) > 0 {
- newConfig = config
- return
- }
- newTheme.OldChartOptions = oldTheme
- for i := 0; i < 10; i++ {
- newLineOption := request.NewLineOptions{
- LineOptions: oldTheme.LineOptions,
- Color: oldTheme.ColorsOptions[i],
- DataMark: "none",
- MarkType: "square",
- MarkSize: 5,
- MarkColor: oldTheme.ColorsOptions[i],
- }
- newTheme.LineOptionList = append(newTheme.LineOptionList, newLineOption)
- }
- newThemeStr, _ := json.Marshal(newTheme)
- newConfig = string(newThemeStr)
- return
- }
|