package fe_calendar import ( "eta/eta_api/global" "eta/eta_api/utils" "fmt" "strings" "time" ) const ( MatterTypeFree = 1 // 事项类型-自定义事项 MatterTypeEdb = 2 // 事项类型-基础指标 MatterTypePredict = 3 // 事项类型-预测指标 ) // FeCalendarMatter 外汇日历-事项表 type FeCalendarMatter struct { FeCalendarMatterId int `orm:"column(fe_calendar_matter_id);pk" gorm:"primaryKey" description:"事项ID"` ChartPermissionId int `description:"品种ID"` ChartPermissionName string `description:"品种名称"` MatterMonth string `description:"事项年月:格式2006-01"` MatterDate time.Time `description:"事项日期"` Title string `description:"标题"` MatterType int `description:"事项类型:1-自定义事项;2-基础指标;3-预测指标"` EdbInfoId int `description:"指标ID"` EdbUniqueCode string `description:"指标唯一编码"` EdbCode string `description:"指标编码"` FontColor string `description:"字体颜色"` FillingColor string `description:"填充颜色"` FontBold int `description:"字体加粗:0-否;1-是"` Sort int `description:"排序"` SysUserId int `description:"创建人ID"` SysUserName string `description:"创建人姓名"` CreateTime time.Time `description:"创建时间"` ModifyTime time.Time `description:"更新时间"` } var FeCalendarMatterCols = 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", } func (m *FeCalendarMatter) TableName() string { return "fe_calendar_matter" } func (m *FeCalendarMatter) PrimaryId() string { return FeCalendarMatterCols.FeCalendarMatterId } func (m *FeCalendarMatter) Create() (err error) { o := global.DbMap[utils.DbNameIndex] err = o.Create(m).Error return } func (m *FeCalendarMatter) CreateMulti(items []*FeCalendarMatter) (err error) { if len(items) == 0 { return } o := global.DbMap[utils.DbNameIndex] err = o.CreateInBatches(items, utils.MultiAddNum).Error return } func (m *FeCalendarMatter) Update(cols []string) (err error) { o := global.DbMap[utils.DbNameIndex] err = o.Select(cols).Updates(m).Error return } func (m *FeCalendarMatter) Del() (err error) { o := global.DbMap[utils.DbNameIndex] sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId()) err = o.Exec(sql, m.FeCalendarMatterId).Error return } func (m *FeCalendarMatter) MultiDel(menuIds []int) (err error) { if len(menuIds) == 0 { return } o := global.DbMap[utils.DbNameIndex] sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.PrimaryId(), utils.GetOrmInReplace(len(menuIds))) err = o.Exec(sql, menuIds).Error return } func (m *FeCalendarMatter) GetItemById(id int) (item *FeCalendarMatter, err error) { o := global.DbMap[utils.DbNameIndex] sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId()) err = o.Raw(sql, id).First(&item).Error return } func (m *FeCalendarMatter) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *FeCalendarMatter, err error) { o := global.DbMap[utils.DbNameIndex] order := `` if orderRule != "" { order = ` ORDER BY ` + orderRule } sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order) err = o.Raw(sql, pars...).First(&item).Error return } func (m *FeCalendarMatter) GetCountByCondition(condition string, pars []interface{}) (count int, err error) { o := global.DbMap[utils.DbNameIndex] sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition) err = o.Raw(sql, pars...).Scan(&count).Error return } func (m *FeCalendarMatter) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*FeCalendarMatter, err error) { o := global.DbMap[utils.DbNameIndex] fields := strings.Join(fieldArr, ",") if len(fieldArr) == 0 { fields = `*` } order := fmt.Sprintf(`ORDER BY %s DESC`, FeCalendarMatterCols.CreateTime) 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...).Find(&items).Error return } func (m *FeCalendarMatter) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*FeCalendarMatter, err error) { o := global.DbMap[utils.DbNameIndex] fields := strings.Join(fieldArr, ",") if len(fieldArr) == 0 { fields = `*` } order := fmt.Sprintf(`ORDER BY %s DESC`, FeCalendarMatterCols.CreateTime) if orderRule != "" { order = ` ORDER BY ` + orderRule } sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order) pars = append(pars, startSize, pageSize) err = o.Raw(sql, pars...).Find(&items).Error return } type FeCalendarMatterItem struct { FeCalendarMatterId int `description:"事项ID"` ChartPermissionId int `description:"品种ID"` ChartPermissionName string `description:"品种名称"` MatterDate string `description:"事项日期"` Title string `description:"标题"` MatterType int `description:"事项类型:1-自定义事项;2-基础指标;3-预测指标"` EdbInfoId int `description:"指标ID"` EdbUniqueCode string `description:"指标唯一编码"` EdbCode string `description:"指标编码"` FontColor string `description:"字体颜色"` FillingColor string `description:"填充颜色"` FontBold int `description:"字体加粗:0-否;1-是"` Sort int `description:"排序"` } 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 } // FeCalendarMatterListReq 事项列表请求体 type FeCalendarMatterListReq struct { ChartPermissionId int `form:"ChartPermissionId" description:"品种ID"` StartDate string `form:"StartDate" description:"开始日期"` EndDate string `form:"EndDate" description:"结束日期"` } // FeCalendarMatterListItem 事项列表 type FeCalendarMatterListItem struct { Date string `description:"日期"` Matters []*FeCalendarMatterItem `description:"日期事项"` } // FeCalendarMatterSaveReq 保存事项请求体 type FeCalendarMatterSaveReq struct { ChartPermissionId int `description:"品种ID"` MatterDate string `description:"日期"` Matters []*FeCalendarMatterSaveItem `description:"事项"` } type FeCalendarMatterSaveItem struct { FeCalendarMatterId int `description:"事项ID"` Title string `description:"标题"` MatterType int `description:"事项类型:1-自定义事项;2-基础指标;3-预测指标"` EdbInfoId int `description:"指标ID"` EdbUniqueCode string `description:"指标唯一编码"` EdbCode string `description:"指标编码"` FontColor string `description:"字体颜色"` FillingColor string `description:"填充颜色"` FontBold int `description:"字体加粗:0-否;1-是"` Sort int `description:"排序"` } func (m *FeCalendarMatter) Save(addMatters, editMatters, removeMatters []*FeCalendarMatter, updateCols []string) (err error) { o := global.DbMap[utils.DbNameIndex] tx := o.Begin() defer func() { if err != nil { _ = tx.Rollback() return } _ = tx.Commit() }() if len(addMatters) > 0 { e := tx.CreateInBatches(addMatters, utils.MultiAddNum).Error if e != nil { err = fmt.Errorf("insert multi err: %s", e.Error()) return } } if len(editMatters) > 0 { for _, v := range editMatters { e := tx.Select(updateCols).Updates(v).Error if e != nil { err = fmt.Errorf("update err: %s", e.Error()) return } } } if len(removeMatters) > 0 { sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId()) for _, v := range removeMatters { e := tx.Exec(sql, v.FeCalendarMatterId).Error if e != nil { err = fmt.Errorf("remove exec err: %s", e.Error()) return } } } return }