package fe_calendar import ( "eta/eta_api/utils" "fmt" "github.com/beego/beego/v2/client/orm" "strings" "time" ) const ( MatterTypeFree = 1 // 事项类型-自定义事项 MatterTypeEdb = 2 // 事项类型-基础指标 MatterTypePredict = 3 // 事项类型-预测指标 ) // FeCalendarMatter 外汇日历-事项表 type FeCalendarMatter struct { FeCalendarMatterId int `orm:"column(fe_calendar_matter_id);pk" 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 := orm.NewOrmUsingDB("data") id, err := o.Insert(m) if err != nil { return } m.FeCalendarMatterId = int(id) return } func (m *FeCalendarMatter) CreateMulti(items []*FeCalendarMatter) (err error) { if len(items) == 0 { return } o := orm.NewOrmUsingDB("data") _, err = o.InsertMulti(len(items), items) return } func (m *FeCalendarMatter) Update(cols []string) (err error) { o := orm.NewOrmUsingDB("data") _, err = o.Update(m, cols...) return } func (m *FeCalendarMatter) 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.FeCalendarMatterId).Exec() return } func (m *FeCalendarMatter) MultiDel(menuIds []int) (err error) { if len(menuIds) == 0 { return } o := orm.NewOrmUsingDB("data") sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.PrimaryId(), utils.GetOrmInReplace(len(menuIds))) _, err = o.Raw(sql, menuIds).Exec() return } func (m *FeCalendarMatter) GetItemById(id int) (item *FeCalendarMatter, 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 *FeCalendarMatter) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *FeCalendarMatter, err error) { o := orm.NewOrmUsingDB("data") 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).QueryRow(&item) return } func (m *FeCalendarMatter) 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 *FeCalendarMatter) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*FeCalendarMatter, err error) { o := orm.NewOrmUsingDB("data") 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).QueryRows(&items) return } func (m *FeCalendarMatter) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*FeCalendarMatter, err error) { o := orm.NewOrmUsingDB("data") 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) _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items) 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 := orm.NewOrmUsingDB("data") tx, e := o.Begin() if e != nil { err = fmt.Errorf("begin tx err: %s", e.Error()) return } defer func() { if err != nil { _ = tx.Rollback() return } _ = tx.Commit() }() if len(addMatters) > 0 { _, e = tx.InsertMulti(len(addMatters), addMatters) if e != nil { err = fmt.Errorf("insert multi err: %s", e.Error()) return } } if len(editMatters) > 0 { for _, v := range editMatters { _, e = tx.Update(v, updateCols...) if e != nil { err = fmt.Errorf("update err: %s", e.Error()) return } } } if len(removeMatters) > 0 { p, e := tx.Raw(fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())).Prepare() if e != nil { err = fmt.Errorf("remove prepare err: %s", e.Error()) return } defer func() { _ = p.Close() }() for _, v := range removeMatters { _, e = p.Exec(v.FeCalendarMatterId) if e != nil { err = fmt.Errorf("remove exec err: %s", e.Error()) return } } } return }