Explorar el Código

Merge branch 'feature/eta_1.7.8' into debug

hsun hace 11 meses
padre
commit
71fc893921

+ 122 - 0
controller/fe_calendar/fe_calendar.go

@@ -0,0 +1,122 @@
+package fe_calendar
+
+import (
+	"fmt"
+	"github.com/gin-gonic/gin"
+	"hongze/hongze_yb/controller/response"
+	"hongze/hongze_yb/models/request"
+	"hongze/hongze_yb/models/tables/chart_permission"
+	"hongze/hongze_yb/models/tables/fe_calendar_matter"
+	"hongze/hongze_yb/services/company"
+	userService "hongze/hongze_yb/services/user"
+	"hongze/hongze_yb/utils"
+	"time"
+)
+
+// PermissionList 品种列表
+func PermissionList(c *gin.Context) {
+	userInfo := userService.GetInfoByClaims(c)
+
+	// 获取用户有权限的品种
+	validPermissionIds, e := company.GetValidPermissionIdListByCompany2ProductId(userInfo.CompanyID, int64(utils.FiccProductId))
+	if e != nil {
+		response.FailMsg("获取失败", "获取有权限品种列表失败, Err: "+e.Error(), c)
+		return
+	}
+
+	// 遍历品种树
+	permissions, e := chart_permission.GetChartPermissionsByProductId()
+	if e != nil {
+		response.FailMsg("获取失败", "获取品种列表失败, Err: "+e.Error(), c)
+		return
+	}
+	parents := make([]*chart_permission.SimpleChartPermission, 0)
+	parentPermissions := make(map[int][]*chart_permission.SimpleChartPermission, 0)
+	for _, v := range permissions {
+		if v.ParentId > 0 && utils.InArrayByInt(validPermissionIds, int(v.ChartPermissionID)) {
+			if parentPermissions[v.ParentId] == nil {
+				parentPermissions[v.ParentId] = make([]*chart_permission.SimpleChartPermission, 0)
+			}
+			parentPermissions[v.ParentId] = append(parentPermissions[v.ParentId], chart_permission.FormatChartPermission2Simple(v))
+			continue
+		}
+		parents = append(parents, chart_permission.FormatChartPermission2Simple(v))
+	}
+	resp := make([]*chart_permission.SimpleChartPermission, 0)
+	for _, v := range parents {
+		if parentPermissions[v.ChartPermissionId] == nil {
+			continue
+		}
+		v.Children = parentPermissions[v.ChartPermissionId]
+		resp = append(resp, v)
+	}
+
+	response.OkData("获取成功", resp, c)
+}
+
+// MatterList 事项列表
+func MatterList(c *gin.Context) {
+	var req request.FeCalendarMatterListReq
+	if err := c.Bind(&req); err != nil {
+		response.Fail("参数有误", c)
+		return
+	}
+	if req.ChartPermissionId <= 0 {
+		response.Fail("请选择品种", c)
+		return
+	}
+	//userInfo := userService.GetInfoByClaims(c)
+
+	cond := ` 1=1`
+	pars := make([]interface{}, 0)
+	if req.ChartPermissionId > 0 {
+		cond += fmt.Sprintf(` AND %s = ?`, fe_calendar_matter.FeCalendarMatterColumns.ChartPermissionId)
+		pars = append(pars, req.ChartPermissionId)
+	}
+	if req.StartDate != "" && req.EndDate != "" {
+		_, e := time.Parse(utils.FormatDate, req.StartDate)
+		if e != nil {
+			response.Fail("开始日期格式有误", c)
+			return
+		}
+		_, e = time.Parse(utils.FormatDate, req.EndDate)
+		if e != nil {
+			response.Fail("结束日期格式有误", c)
+			return
+		}
+		cond += fmt.Sprintf(` AND %s >= ? AND %s <= ?`, fe_calendar_matter.FeCalendarMatterColumns.MatterDate, fe_calendar_matter.FeCalendarMatterColumns.MatterDate)
+		pars = append(pars, req.StartDate, req.EndDate)
+	}
+
+	matterOb := new(fe_calendar_matter.FeCalendarMatter)
+	order := fmt.Sprintf(`%s ASC, %s ASC`, fe_calendar_matter.FeCalendarMatterColumns.MatterDate, fe_calendar_matter.FeCalendarMatterColumns.Sort)
+	matters, e := matterOb.GetItemsByCondition(cond, pars, []string{}, order)
+	if e != nil {
+		response.FailMsg("获取失败", "获取事项列表失败, Err: "+e.Error(), c)
+		return
+	}
+
+	dateMatter := make(map[string][]*fe_calendar_matter.FeCalendarMatterItem)
+	for _, v := range matters {
+		d := v.MatterDate.Format(utils.FormatDate)
+		if dateMatter[d] == nil {
+			dateMatter[d] = make([]*fe_calendar_matter.FeCalendarMatterItem, 0)
+		}
+		dateMatter[d] = append(dateMatter[d], fe_calendar_matter.FormatFeCalendarMatter2Item(v))
+	}
+	dateExist := make(map[string]bool)
+	resp := make([]*fe_calendar_matter.FeCalendarMatterListItem, 0)
+	for _, v := range matters {
+		d := v.MatterDate.Format(utils.FormatDate)
+		if dateExist[d] {
+			continue
+		}
+		dateExist[d] = true
+		resp = append(resp, &fe_calendar_matter.FeCalendarMatterListItem{
+			Date:    d,
+			Matters: dateMatter[d],
+		})
+	}
+
+	response.OkData("获取成功", resp, c)
+}

+ 3 - 1
init_serve/router.go

@@ -2,8 +2,8 @@ package init_serve
 
 import (
 	"github.com/gin-gonic/gin"
-	"github.com/swaggo/gin-swagger"
 	"github.com/swaggo/files"
+	"github.com/swaggo/gin-swagger"
 	_ "hongze/hongze_yb/docs"
 	"hongze/hongze_yb/global"
 	"hongze/hongze_yb/middleware"
@@ -81,5 +81,7 @@ func InitRouter() (r *gin.Engine) {
 	routers.InitMyChart(r)
 	// 持仓分析
 	routers.InitTradeAnalysis(r)
+	// 外汇日历
+	routers.InitFeCalendar(r)
 	return
 }

+ 8 - 0
models/request/fe_calendar.go

@@ -0,0 +1,8 @@
+package request
+
+// FeCalendarMatterListReq 事项列表请求体
+type FeCalendarMatterListReq struct {
+	ChartPermissionId int    `form:"chart_permission_id" json:"chart_permission_id" description:"品种ID"`
+	StartDate         string `form:"start_date" json:"start_date" description:"开始日期"`
+	EndDate           string `form:"end_date" json:"end_date" description:"结束日期"`
+}

+ 24 - 0
models/tables/chart_permission/query.go

@@ -61,3 +61,27 @@ func GetFiccFirstListExceptTacticByProductId() (list []*ChartPermission, err err
 	err = global.DEFAULT_MYSQL.Where(" enabled = 1 AND permission_type = 0 AND product_id = 1 and classify_name != '市场策略' AND parent_id = 0").Order("sort asc").Find(&list).Error
 	return
 }
+
+// GetChartPermissionsByProductId 获取权限列表
+func GetChartPermissionsByProductId() (list []*ChartPermission, err error) {
+	err = global.DEFAULT_MYSQL.Where(" enabled = 1 AND product_id = 1").Order("parent_id ASC, sort ASC, created_time ASC").Find(&list).Error
+	return
+}
+
+type SimpleChartPermission struct {
+	ChartPermissionId   int                      `description:"品种ID" json:"chart_permission_id"`
+	ChartPermissionName string                   `description:"品种名称" json:"chart_permission_name"`
+	Sort                int                      `description:"排序" json:"sort"`
+	Children            []*SimpleChartPermission `description:"子分类" json:"children"`
+}
+
+func FormatChartPermission2Simple(origin *ChartPermission) (item *SimpleChartPermission) {
+	if origin == nil {
+		return
+	}
+	item = new(SimpleChartPermission)
+	item.ChartPermissionId = int(origin.ChartPermissionID)
+	item.ChartPermissionName = origin.PermissionName
+	item.Sort = origin.Sort
+	return
+}

+ 71 - 0
models/tables/fe_calendar_matter/entity.go

@@ -0,0 +1,71 @@
+package fe_calendar_matter
+
+import "time"
+
+// FeCalendarMatter 外汇日历-事项表
+type FeCalendarMatter struct {
+	FeCalendarMatterId  int       `gorm:"primaryKey;column:fe_calendar_matter_id;type:int(10) unsigned;not null" json:"-"`                                            // 事项Id
+	ChartPermissionId   int       `gorm:"index:idx_chart_permission_id;column:chart_permission_id;type:int(10) unsigned;not null;default:0" json:"chartPermissionId"` // 品种Id
+	ChartPermissionName string    `gorm:"column:chart_permission_name;type:varchar(128);not null;default:''" json:"chartPermissionName"`                              // 品种名称
+	MatterMonth         string    `gorm:"index:idx_matter_month;column:matter_month;type:varchar(16);not null;default:''" json:"matterMonth"`                         // 事项年月:格式2006-01
+	MatterDate          time.Time `gorm:"index:idx_matter_date;column:matter_date;type:date" json:"matterDate"`                                                       // 事项日期
+	Title               string    `gorm:"column:title;type:varchar(255);not null;default:''" json:"title"`                                                            // 标题
+	MatterType          int       `gorm:"column:matter_type;type:tinyint(4) unsigned;not null;default:0" json:"matterType"`                                           // 事项类型:1-自定义事项;2-基础指标;3-预测指标
+	EdbInfoId           int       `gorm:"column:edb_info_id;type:int(10) unsigned;not null;default:0" json:"edbInfoId"`                                               // 指标Id
+	EdbUniqueCode       string    `gorm:"column:edb_unique_code;type:varchar(128);not null;default:''" json:"edbUniqueCode"`                                          // 指标唯一编码
+	EdbCode             string    `gorm:"column:edb_code;type:varchar(128);not null;default:''" json:"edbCode"`                                                       // 指标编码
+	FontColor           string    `gorm:"column:font_color;type:varchar(64);not null;default:''" json:"fontColor"`                                                    // 字体颜色
+	FillingColor        string    `gorm:"column:filling_color;type:varchar(64);not null;default:''" json:"fillingColor"`                                              // 填充颜色
+	FontBold            int       `gorm:"column:font_bold;type:tinyint(4) unsigned;not null;default:0" json:"fontBold"`                                               // 字体加粗:0-否;1-是
+	Sort                int       `gorm:"column:sort;type:int(10) unsigned;not null;default:0" json:"sort"`                                                           // 排序
+	SysUserId           int       `gorm:"column:sys_user_id;type:int(10) unsigned;not null;default:0" json:"sysUserId"`                                               // 创建人Id
+	SysUserName         string    `gorm:"column:sys_user_name;type:varchar(128);not null;default:''" json:"sysUserName"`                                              // 创建人姓名
+	CreateTime          time.Time `gorm:"column:create_time;type:datetime" json:"createTime"`                                                                         // 创建时间
+	ModifyTime          time.Time `gorm:"column:modify_time;type:datetime" json:"modifyTime"`                                                                         // 更新时间
+}
+
+// TableName get sql table name.获取数据库表名
+func (m *FeCalendarMatter) TableName() string {
+	return "fe_calendar_matter"
+}
+
+// FeCalendarMatterColumns get sql column name.获取数据库列名
+var FeCalendarMatterColumns = struct {
+	FeCalendarMatterId  string
+	ChartPermissionId   string
+	ChartPermissionName string
+	MatterMonth         string
+	MatterDate          string
+	Title               string
+	MatterType          string
+	EdbInfoId           string
+	EdbUniqueCode       string
+	EdbCode             string
+	FontColor           string
+	FillingColor        string
+	FontBold            string
+	Sort                string
+	SysUserId           string
+	SysUserName         string
+	CreateTime          string
+	ModifyTime          string
+}{
+	FeCalendarMatterId:  "fe_calendar_matter_id",
+	ChartPermissionId:   "chart_permission_id",
+	ChartPermissionName: "chart_permission_name",
+	MatterMonth:         "matter_month",
+	MatterDate:          "matter_date",
+	Title:               "title",
+	MatterType:          "matter_type",
+	EdbInfoId:           "edb_info_id",
+	EdbUniqueCode:       "edb_unique_code",
+	EdbCode:             "edb_code",
+	FontColor:           "font_color",
+	FillingColor:        "filling_color",
+	FontBold:            "font_bold",
+	Sort:                "sort",
+	SysUserId:           "sys_user_id",
+	SysUserName:         "sys_user_name",
+	CreateTime:          "create_time",
+	ModifyTime:          "modify_time",
+}

+ 59 - 0
models/tables/fe_calendar_matter/model.go

@@ -0,0 +1,59 @@
+package fe_calendar_matter
+
+import (
+	"fmt"
+	"hongze/hongze_yb/global"
+	"hongze/hongze_yb/utils"
+)
+
+type FeCalendarMatterItem struct {
+	FeCalendarMatterId  int    `description:"事项ID" json:"fe_calendar_matter_id"`
+	ChartPermissionId   int    `description:"品种ID" json:"chart_permission_id"`
+	ChartPermissionName string `description:"品种名称" json:"chart_permission_name"`
+	MatterDate          string `description:"事项日期" json:"matter_date"`
+	Title               string `description:"标题" json:"title"`
+	MatterType          int    `description:"事项类型:1-自定义事项;2-基础指标;3-预测指标" json:"matter_type"`
+	EdbInfoId           int    `description:"指标ID" json:"edb_info_id"`
+	EdbUniqueCode       string `description:"指标唯一编码" json:"edb_unique_code"`
+	EdbCode             string `description:"指标编码" json:"edb_code"`
+	FontColor           string `description:"字体颜色" json:"font_color"`
+	FillingColor        string `description:"填充颜色" json:"filling_color"`
+	FontBold            int    `description:"字体加粗:0-否;1-是" json:"font_bold"`
+	Sort                int    `description:"排序" json:"sort"`
+}
+
+func FormatFeCalendarMatter2Item(origin *FeCalendarMatter) (item *FeCalendarMatterItem) {
+	if origin == nil {
+		return
+	}
+	item = new(FeCalendarMatterItem)
+	item.FeCalendarMatterId = origin.FeCalendarMatterId
+	item.ChartPermissionId = origin.ChartPermissionId
+	item.ChartPermissionName = origin.ChartPermissionName
+	item.MatterDate = utils.TimeTransferString(utils.FormatDate, origin.MatterDate)
+	item.Title = origin.Title
+	item.MatterType = origin.MatterType
+	item.EdbInfoId = origin.EdbInfoId
+	item.EdbUniqueCode = origin.EdbUniqueCode
+	item.EdbCode = origin.EdbCode
+	item.FontColor = origin.FontColor
+	item.FillingColor = origin.FillingColor
+	item.FontBold = origin.FontBold
+	item.Sort = origin.Sort
+	return
+}
+
+// FeCalendarMatterListItem 事项列表
+type FeCalendarMatterListItem struct {
+	Date    string                  `description:"日期" json:"date"`
+	Matters []*FeCalendarMatterItem `description:"日期事项" json:"matters"`
+}
+
+func (m *FeCalendarMatter) GetItemsByCondition(cond string, pars []interface{}, fieldArr []string, orderRule string) (items []*FeCalendarMatter, err error) {
+	order := fmt.Sprintf(`%s DESC`, FeCalendarMatterColumns.CreateTime)
+	if orderRule != "" {
+		order = orderRule
+	}
+	err = global.MYSQL["data"].Where(cond, pars...).Order(order).Find(&items).Error
+	return
+}

+ 13 - 0
routers/fe_calendar.go

@@ -0,0 +1,13 @@
+package routers
+
+import (
+	"github.com/gin-gonic/gin"
+	"hongze/hongze_yb/controller/fe_calendar"
+	"hongze/hongze_yb/middleware"
+)
+
+func InitFeCalendar(r *gin.Engine) {
+	rGroup := r.Group("api/fe_calendar").Use(middleware.Token(), middleware.CheckBaseAuth())
+	rGroup.GET("/permission/list", fe_calendar.PermissionList)
+	rGroup.GET("/matter/list", fe_calendar.MatterList)
+}

+ 7 - 3
utils/constants.go

@@ -4,7 +4,7 @@ package utils
 const (
 	FormatTime            = "15:04:05"                //时间格式
 	FormatDate            = "2006-01-02"              //日期格式
-	FormatDateCN          = "2006年01月02日"          //日期格式(中文)
+	FormatDateCN          = "2006年01月02日"             //日期格式(中文)
 	FormatDateUnSpace     = "20060102"                //日期格式
 	FormatDateTime        = "2006-01-02 15:04:05"     //完整时间格式
 	HlbFormatDateTime     = "2006-01-02_15:04:05.999" //完整时间格式
@@ -200,9 +200,9 @@ const (
 )
 
 const (
-	AdminId     = 11           //系统操作的用户id
+	AdminId     = 11      //系统操作的用户id
 	RealName    = "超级管理员" //系统操作的用户名称
-	HzCompanyId = 16           // 弘则研究公司ID
+	HzCompanyId = 16      // 弘则研究公司ID
 )
 
 // 图表样式类型
@@ -370,3 +370,7 @@ const (
 
 // 默认的品种图片
 const APPLY_VARIETY_IMG_DEFAULT = "https://hzstatic.hzinsights.com/static/yb_variety/default_permission.png"
+
+const (
+	FiccProductId = 1 // FICC标识ID
+)