package controllers import ( "encoding/json" "eta/eta_hub/models" "eta/eta_hub/models/data_manage" "eta/eta_hub/services/data" "eta/eta_hub/utils" "fmt" "github.com/rdlucklib/rdluck_tools/paging" "strings" ) // Push // @Title 指标数据 // @Description 指标数据 // @Success 200 {object} data.BaseFromBusinessIndexResp // @router /push [post] func (c *EdbController) Push() { br := new(models.BaseResponse).Init() defer func() { c.Data["json"] = br c.ServeJSON() }() body := c.Ctx.Input.RequestBody var req data_manage.PushBusinessIndexReq err := json.Unmarshal(body, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } //if req.IndexCode == `` { // br.Msg = "指标编码不能为空" // return //} if req.IndexName == `` { br.Msg = "指标名称不能为空" return } if req.Unit == `` { br.Msg = "指标单位不能为空" return } if req.Frequency == `` { br.Msg = "指标频度不能为空" return } if req.SourceName == `` { br.Msg = "数据来源名称不能为空" return } // 兼容频度缺少度的字段 if !strings.Contains(req.Frequency, "度") { req.Frequency = req.Frequency + "度" } if !utils.VerifyFrequency(req.Frequency) { br.Msg = "指标频度不合法:" + req.Frequency return } reqJson, err := json.Marshal(req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } respItem, err := data.PushEdb(string(reqJson)) if err != nil { br.Msg = "处理失败" br.ErrMsg = "处理失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = respItem.Msg br.ErrMsg = respItem.ErrMsg return } br.Data = respItem.Data br.Ret = 200 br.Msg = "处理成功" } // BusinessEdbList // @Title 获取自有数据列表 // @Description 获取自有数据列表 // @Success 200 {object} data_manage.BaseFromBusinessIndexResp // @router /business/edb/list [get] func (c *EdbController) BusinessEdbList() { br := new(models.BaseResponse).Init() defer func() { c.Data["json"] = br c.ServeJSON() }() pageSize, _ := c.GetInt("PageSize") currentIndex, _ := c.GetInt("CurrentIndex") var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = utils.StartIndex(currentIndex, pageSize) //通过指标ID、指标名称、渠道、单位、频度查询匹配自有数据中已有的指标; indexCode := c.GetString("IndexCode") indexName := c.GetString("IndexName") sysSource := c.GetString("SysSource") //if indexName == `` && indexCode == `` { // br.Msg = "IndexCode与IndexName不能同时为空" // br.ErrMsg = "IndexCode与IndexName不能同时为空" // return //} cond := `` pars := make([]interface{}, 0) var orderRule string var fieldArr []string if sysSource == "ht_mini_crm" { fieldArr = []string{"index_code", "index_name", "frequency", "unit", "source_name", "start_date", "end_date", "create_time"} KeyWord := c.GetString("KeyWord") if KeyWord != "" { cond = `And (index_name like ? or index_code like ?)` pars = utils.GetLikeKeywordPars(pars, KeyWord, 2) } sourceName := c.GetString("SourceName") SortColumn := c.GetString("SortColumn") if SortColumn == "" { SortColumn = "create_time" } SortOrder := c.GetString("SortOrder") if SortOrder == "" { SortOrder = "desc" } if sourceName != "" { cond += ` AND source_name = ?` pars = append(pars, sourceName) } else { cond += ` AND source_name like ?` pars = append(pars, "一期-%") } frequency := c.GetString("Frequency") if frequency != `` { cond += ` AND frequency = ?` pars = append(pars, frequency) } orderRule = fmt.Sprintf("%s %s", SortColumn, SortOrder) } else { orderRule = "base_from_business_index_id DESC" fieldArr = []string{"index_code", "index_name", "frequency", "unit", "source_name"} if indexCode != `` { cond += ` AND index_code = ?` pars = append(pars, indexCode) } if indexName != `` { cond += ` AND index_name like ?` pars = utils.GetLikeKeywordPars(pars, indexName, 1) } sourceName := c.GetString("SourceName") if sourceName != `` { cond += ` AND source_name = ?` pars = append(pars, sourceName) } unit := c.GetString("Unit") if unit != `` { cond += ` AND unit = ?` pars = append(pars, unit) } frequency := c.GetString("Frequency") if frequency != `` { cond += ` AND frequency = ?` pars = append(pars, frequency) } } edbOb := new(data_manage.BaseFromBusinessIndex) total, edbList, e := edbOb.GetItemsByCondition(cond, pars, fieldArr, orderRule, startSize, pageSize) if e != nil { br.Msg = "获取失败" br.ErrMsg = "EdbList GetItemsByCondition err: " + e.Error() return } page := paging.GetPaging(currentIndex, pageSize, total) resp := data_manage.BaseFromBusinessIndexResp{ Paging: page, List: edbList, } br.Data = resp br.Ret = 200 br.Msg = "获取成功" } // BusinessSourceList // @Title 获取来源列表 // @Description 获取来源列表 // @Success 200 {object} data_manage.BaseFromBusinessIndexResp // @router /business/edb/source/list [get] func (c *EdbController) BusinessSourceList() { br := new(models.BaseResponse).Init() defer func() { c.Data["json"] = br c.ServeJSON() }() obj := new(data_manage.EdbBusinessSource) list, err := obj.GetAllList() if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } br.Ret = 200 br.Msg = "获取成功" br.Data = list } // DataList // @Title 获取指标数据列表 // @Description 获取指标数据列表接口 // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param IndexCode query string true "频度" // @Success 200 {object} models.DataListResp // @router /business/edb/data/list [get] func (c *EdbController) DataList() { br := new(models.BaseResponse).Init() defer func() { c.Data["json"] = br c.ServeJSON() }() req := new(data_manage.BusinessDataDataListReq) if e := c.ParseForm(req); e != nil { br.Msg = "获取失败" br.ErrMsg = "参数解析失败, Err: " + e.Error() return } pageSize := req.PageSize currentIndex := req.CurrentIndex var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = utils.StartIndex(currentIndex, pageSize) if req.IndexCode == "" { br.Msg = "指标编码为空" br.ErrMsg = "指标编码为空" return } // 获取分页数据 dataCount, dataList, err := data.GetPageBaseBusinessIndexData(req.IndexCode, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取指标信息失败" br.ErrMsg = "获取指标数据总数失败,Err:" + err.Error() return } page := paging.GetPaging(currentIndex, pageSize, dataCount) resp := data_manage.BusinessIndexDataListResp{ List: dataList, Paging: page, } br.Ret = 200 br.Msg = "获取成功" br.Data = resp } // BusinessEdbDel // @Title 删除指标数据 // @Description 删除指标数据 // @Success 200 {object} data_manage.EdbInfoItem // @router /business/edb/del [post] func (c *EdbController) BusinessEdbDel() { br := new(models.BaseResponse).Init() defer func() { c.Data["json"] = br c.ServeJSON() }() body := c.Ctx.Input.RequestBody var req data_manage.DelBusinessIndexReq err := json.Unmarshal(body, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if len(req.IndexCodeList) < 0 { br.Msg = "指标编码不允许为空" return } reqJson, err := json.Marshal(req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } respItem, err := data.DelBusinessIndex(string(reqJson)) if err != nil { br.Msg = "删除失败" br.ErrMsg = "删除失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = respItem.Msg br.ErrMsg = respItem.ErrMsg return } br.Data = respItem.Data br.Ret = 200 br.Msg = "删除成功" } // BusinessEdbDataDel // @Title 删除指标数据 // @Description 删除指标数据 // @Success 200 {object} data_manage.EdbInfoItem // @router /business/data/del [post] func (c *EdbController) BusinessEdbDataDel() { br := new(models.BaseResponse).Init() defer func() { c.Data["json"] = br c.ServeJSON() }() body := c.Ctx.Input.RequestBody var req data_manage.DelBusinessDataReq err := json.Unmarshal(body, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.IndexCode == `` { br.Msg = "指标编码不能为空" return } if req.StartDate == `` && req.EndDate == `` { br.Msg = "开始日期和结束日期不允许同时为空" return } reqJson, err := json.Marshal(req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } respItem, err := data.DelBusinessIndexData(string(reqJson)) if err != nil { br.Msg = "删除失败" br.ErrMsg = "删除失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = respItem.Msg br.ErrMsg = respItem.ErrMsg return } br.Data = respItem.Data br.Ret = 200 br.Msg = "删除成功" }