123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392 |
- package fe_calendar
- import (
- "encoding/json"
- "eta/eta_api/controllers"
- "eta/eta_api/models"
- "eta/eta_api/models/fe_calendar"
- "eta/eta_api/services/data"
- "eta/eta_api/utils"
- "fmt"
- "strings"
- "time"
- )
- // FeCalendarMatterController 外汇日历-事项
- type FeCalendarMatterController struct {
- controllers.BaseAuthController
- }
- // List
- // @Title 事项列表
- // @Description 事项列表
- // @Param ChartPermissionId query int true "品种ID"
- // @Param StartDate query string true "开始日期"
- // @Param EndDate query string true "结束日期"
- // @Success 200 {object} fe_calendar.FeCalendarMatterListItem
- // @router /matter/list [get]
- func (this *FeCalendarMatterController) List() {
- br := new(models.BaseResponse).Init()
- defer func() {
- if br.ErrMsg == "" {
- br.IsSendEmail = false
- }
- this.Data["json"] = br
- this.ServeJSON()
- }()
- sysUser := this.SysUser
- if sysUser == nil {
- br.Msg = "请登录"
- br.ErrMsg = "请登录,SysUser Is Empty"
- br.Ret = 408
- return
- }
- params := new(fe_calendar.FeCalendarMatterListReq)
- if e := this.ParseForm(params); e != nil {
- br.Msg = "获取失败"
- br.ErrMsg = "入参解析失败, Err: " + e.Error()
- return
- }
- if params.ChartPermissionId <= 0 {
- br.Msg = "请选择品种"
- return
- }
- cond := ``
- pars := make([]interface{}, 0)
- if params.ChartPermissionId > 0 {
- cond += fmt.Sprintf(` AND %s = ?`, fe_calendar.FeCalendarMatterCols.ChartPermissionId)
- pars = append(pars, params.ChartPermissionId)
- }
- if params.StartDate != "" && params.EndDate != "" {
- _, e := time.Parse(utils.FormatDate, params.StartDate)
- if e != nil {
- br.Msg = "开始日期格式有误"
- return
- }
- _, e = time.Parse(utils.FormatDate, params.EndDate)
- if e != nil {
- br.Msg = "结束日期格式有误"
- return
- }
- cond += fmt.Sprintf(` AND %s >= ? AND %s <= ?`, fe_calendar.FeCalendarMatterCols.MatterDate, fe_calendar.FeCalendarMatterCols.MatterDate)
- pars = append(pars, params.StartDate, params.EndDate)
- }
- matterOb := new(fe_calendar.FeCalendarMatter)
- order := fmt.Sprintf(`%s ASC, %s ASC`, fe_calendar.FeCalendarMatterCols.MatterDate, fe_calendar.FeCalendarMatterCols.Sort)
- matters, e := matterOb.GetItemsByCondition(cond, pars, []string{}, order)
- if e != nil {
- br.Msg = "获取失败"
- br.ErrMsg = "获取事项列表失败, Err: " + e.Error()
- return
- }
- dateMatter := make(map[string][]*fe_calendar.FeCalendarMatterItem)
- for _, v := range matters {
- d := v.MatterDate.Format(utils.FormatDate)
- if dateMatter[d] == nil {
- dateMatter[d] = make([]*fe_calendar.FeCalendarMatterItem, 0)
- }
- dateMatter[d] = append(dateMatter[d], fe_calendar.FormatFeCalendarMatter2Item(v))
- }
- dateExist := make(map[string]bool)
- resp := make([]*fe_calendar.FeCalendarMatterListItem, 0)
- for _, v := range matters {
- d := v.MatterDate.Format(utils.FormatDate)
- if dateExist[d] {
- continue
- }
- dateExist[d] = true
- resp = append(resp, &fe_calendar.FeCalendarMatterListItem{
- Date: d,
- Matters: dateMatter[d],
- })
- }
- br.Data = resp
- br.Ret = 200
- br.Success = true
- br.Msg = "获取成功"
- }
- // Detail
- // @Title 事项详情
- // @Description 事项详情
- // @Param ChartPermissionId query int true "品种ID"
- // @Param MatterDate query string true "事项日期"
- // @Success 200 {object} fe_calendar.FeCalendarMatterItem
- // @router /matter/detail [get]
- func (this *FeCalendarMatterController) Detail() {
- br := new(models.BaseResponse).Init()
- defer func() {
- if br.ErrMsg == "" {
- br.IsSendEmail = false
- }
- this.Data["json"] = br
- this.ServeJSON()
- }()
- sysUser := this.SysUser
- if sysUser == nil {
- br.Msg = "请登录"
- br.ErrMsg = "请登录,SysUser Is Empty"
- br.Ret = 408
- return
- }
- permissionId, _ := this.GetInt("ChartPermissionId")
- if permissionId <= 0 {
- br.Msg = "请选择品种"
- return
- }
- matterDate := this.GetString("MatterDate")
- if matterDate == "" {
- br.Msg = "请选择日期"
- return
- }
- _, e := time.Parse(utils.FormatDate, matterDate)
- if e != nil {
- br.Msg = "日期格式有误"
- return
- }
- matterOb := new(fe_calendar.FeCalendarMatter)
- cond := fmt.Sprintf(` AND %s = ? AND %s = ?`, fe_calendar.FeCalendarMatterCols.ChartPermissionId, fe_calendar.FeCalendarMatterCols.MatterDate)
- pars := make([]interface{}, 0)
- pars = append(pars, permissionId, matterDate)
- order := fmt.Sprintf(`%s ASC`, fe_calendar.FeCalendarMatterCols.Sort)
- matters, e := matterOb.GetItemsByCondition(cond, pars, []string{}, order)
- if e != nil {
- br.Msg = "获取失败"
- br.ErrMsg = "获取事项列表失败, Err: " + e.Error()
- return
- }
- resp := make([]*fe_calendar.FeCalendarMatterItem, 0)
- for _, v := range matters {
- resp = append(resp, fe_calendar.FormatFeCalendarMatter2Item(v))
- }
- br.Data = resp
- br.Ret = 200
- br.Success = true
- br.Msg = "获取成功"
- }
- // Save
- // @Title 保存事项
- // @Description 保存事项
- // @Param request body fe_calendar.FeCalendarMatterSaveReq true "type json string"
- // @Success 200 string "操作成功"
- // @router /matter/save [post]
- func (this *FeCalendarMatterController) Save() {
- br := new(models.BaseResponse).Init()
- defer func() {
- if br.ErrMsg == "" {
- br.IsSendEmail = false
- }
- this.Data["json"] = br
- this.ServeJSON()
- }()
- sysUser := this.SysUser
- if sysUser == nil {
- br.Msg = "请登录"
- br.ErrMsg = "请登录,SysUser Is Empty"
- br.Ret = 408
- return
- }
- var req fe_calendar.FeCalendarMatterSaveReq
- if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
- br.Msg = "参数有误"
- br.ErrMsg = "参数解析失败, Err: " + e.Error()
- return
- }
- // 参数校验
- if req.ChartPermissionId <= 0 {
- br.Msg = "请选择品种"
- return
- }
- if req.MatterDate == "" {
- br.Msg = "请选择日期"
- return
- }
- var matterMonth string
- matterDate, e := time.ParseInLocation(utils.FormatDate, req.MatterDate, time.Local)
- if e != nil {
- br.Msg = "日期格式有误"
- return
- }
- matterMonth = matterDate.Format("2006-01")
- if len(req.Matters) > 0 {
- for _, v := range req.Matters {
- if v.MatterType != fe_calendar.MatterTypeFree && v.MatterType != fe_calendar.MatterTypeEdb && v.MatterType != fe_calendar.MatterTypePredict {
- br.Msg = "事项类型有误"
- br.ErrMsg = fmt.Sprintf("事项类型有误, MatterType: %d", v.MatterType)
- return
- }
- v.Title = strings.TrimSpace(v.Title)
- if v.Title == "" {
- br.Msg = "请输入指标/事项名称"
- return
- }
- if len([]rune(v.Title)) > 15 {
- br.Msg = "名称超出15个字,请重新编辑"
- return
- }
- if v.MatterType == fe_calendar.MatterTypeEdb || v.MatterType == fe_calendar.MatterTypePredict {
- if v.EdbInfoId <= 0 || v.EdbUniqueCode == "" || v.EdbCode == "" {
- br.Msg = "指标信息有误"
- br.ErrMsg = fmt.Sprintf("指标信息有误, EdbInfoId: %d, EdbUniqueCode: %s, EdbCode: %s", v.EdbInfoId, v.EdbUniqueCode, v.EdbCode)
- return
- }
- }
- }
- }
- // 品种信息
- permissionItem, e := models.GetChartPermissionById(req.ChartPermissionId)
- if e != nil {
- br.Msg = "操作失败"
- br.ErrMsg = "获取品种失败, Err: " + e.Error()
- return
- }
- // 获取已有事项
- matterOb := new(fe_calendar.FeCalendarMatter)
- cond := fmt.Sprintf(` AND %s = ? AND %s = ?`, fe_calendar.FeCalendarMatterCols.ChartPermissionId, fe_calendar.FeCalendarMatterCols.MatterDate)
- pars := make([]interface{}, 0)
- pars = append(pars, req.ChartPermissionId, req.MatterDate)
- order := fmt.Sprintf(`%s ASC`, fe_calendar.FeCalendarMatterCols.Sort)
- matters, e := matterOb.GetItemsByCondition(cond, pars, []string{}, order)
- if e != nil {
- br.Msg = "操作失败"
- br.ErrMsg = "获取已有事项列表失败, Err: " + e.Error()
- return
- }
- addMatters := make([]*fe_calendar.FeCalendarMatter, 0)
- editMatters := make([]*fe_calendar.FeCalendarMatter, 0)
- removeMatters := make([]*fe_calendar.FeCalendarMatter, 0)
- updateCols := []string{fe_calendar.FeCalendarMatterCols.Title, fe_calendar.FeCalendarMatterCols.FontColor, fe_calendar.FeCalendarMatterCols.FillingColor, fe_calendar.FeCalendarMatterCols.FontBold, fe_calendar.FeCalendarMatterCols.Sort, fe_calendar.FeCalendarMatterCols.ChartPermissionName, fe_calendar.FeCalendarMatterCols.ModifyTime}
- editIds := make([]int, 0)
- editMatterMap := make(map[int]*fe_calendar.FeCalendarMatterSaveItem)
- for _, v := range req.Matters {
- // 更新的事项map
- if v.FeCalendarMatterId > 0 {
- editIds = append(editIds, v.FeCalendarMatterId)
- editMatterMap[v.FeCalendarMatterId] = v
- continue
- }
- // 新增事项
- addMatters = append(addMatters, &fe_calendar.FeCalendarMatter{
- ChartPermissionId: req.ChartPermissionId,
- ChartPermissionName: permissionItem.PermissionName,
- MatterMonth: matterMonth,
- MatterDate: matterDate,
- Title: strings.TrimSpace(v.Title),
- MatterType: v.MatterType,
- EdbInfoId: v.EdbInfoId,
- EdbUniqueCode: v.EdbUniqueCode,
- EdbCode: v.EdbCode,
- FontColor: v.FontColor,
- FillingColor: v.FillingColor,
- FontBold: v.FontBold,
- Sort: v.Sort,
- SysUserId: sysUser.AdminId,
- SysUserName: sysUser.RealName,
- CreateTime: time.Now().Local(),
- ModifyTime: time.Now().Local(),
- })
- }
- for _, v := range matters {
- // 移除的事项
- if !utils.InArrayByInt(editIds, v.FeCalendarMatterId) {
- removeMatters = append(removeMatters, v)
- continue
- }
- // 编辑的事项
- ed := editMatterMap[v.FeCalendarMatterId]
- if ed != nil {
- v.Title = strings.TrimSpace(ed.Title)
- v.FontColor = ed.FontColor
- v.FillingColor = ed.FillingColor
- v.FontBold = ed.FontBold
- v.Sort = ed.Sort
- v.ChartPermissionName = permissionItem.PermissionName
- v.ModifyTime = time.Now().Local()
- editMatters = append(editMatters, v)
- }
- }
- // 保存/删除
- if e = matterOb.Save(addMatters, editMatters, removeMatters, updateCols); e != nil {
- br.Msg = "操作失败"
- br.ErrMsg = "保存事项失败, Err: " + e.Error()
- return
- }
- _ = data.SaveCalendarEdbInfoRelation(req.ChartPermissionId, req.MatterDate, editMatters, removeMatters)
- br.Ret = 200
- br.Success = true
- br.Msg = "操作成功"
- }
- // PermissionList
- // @Title 品种列表
- // @Description 品种列表
- // @Success 200 {object} models.SimpleChartPermission
- // @router /permission/list [get]
- func (this *FeCalendarMatterController) PermissionList() {
- br := new(models.BaseResponse).Init()
- defer func() {
- if br.ErrMsg == "" {
- br.IsSendEmail = false
- }
- this.Data["json"] = br
- this.ServeJSON()
- }()
- permissions, e := models.GetChartPermissionsByProductId()
- if e != nil {
- br.Msg = "获取失败"
- br.ErrMsg = "获取品种列表失败, Err: " + e.Error()
- return
- }
- var resp models.FaCalendarPermissionResp
- list := make([]*models.SimpleChartPermission, 0)
- parentPermissions := make(map[int][]*models.SimpleChartPermission, 0)
- for _, v := range permissions {
- if v.ParentId > 0 {
- if parentPermissions[v.ParentId] == nil {
- parentPermissions[v.ParentId] = make([]*models.SimpleChartPermission, 0)
- }
- parentPermissions[v.ParentId] = append(parentPermissions[v.ParentId], models.FormatChartPermission2Simple(v))
- continue
- }
- list = append(list, models.FormatChartPermission2Simple(v))
- }
- for _, v := range list {
- v.Children = parentPermissions[v.ChartPermissionId]
- }
- lastEditPermissionId := 0
- // 查询最近被编辑过的品种ID
- matterOb := new(fe_calendar.FeCalendarMatter)
- cond := ""
- pars := make([]interface{}, 0)
- order := fmt.Sprintf(`%s Desc`, fe_calendar.FeCalendarMatterCols.ModifyTime)
- matter, e := matterOb.GetItemByCondition(cond, pars, order)
- if e != nil && e.Error() != utils.ErrNoRow() {
- br.Msg = "获取失败"
- br.ErrMsg = "获取事项列表失败, Err: " + e.Error()
- return
- }
- if e == nil {
- lastEditPermissionId = matter.ChartPermissionId
- }
- resp.CheckedPermissionId = lastEditPermissionId
- resp.List = list
- br.Data = resp
- br.Ret = 200
- br.Success = true
- br.Msg = "获取成功"
- }
|