Browse Source

fix:新增自有数据批量删除接口

Roc 9 months ago
parent
commit
03f5c80949

+ 264 - 0
controllers/business_edb.go

@@ -0,0 +1,264 @@
+package controllers
+
+import (
+	"encoding/json"
+	"eta/eta_hub/models"
+	"eta/eta_hub/models/data_manage"
+	"eta/eta_hub/services/data"
+	"eta/eta_hub/utils"
+	"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")
+
+	//if indexName == `` && indexCode == `` {
+	//	br.Msg = "IndexCode与IndexName不能同时为空"
+	//	br.ErrMsg = "IndexCode与IndexName不能同时为空"
+	//	return
+	//}
+
+	cond := ``
+	pars := make([]interface{}, 0)
+	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, []string{"index_code", "index_name", "frequency", "unit", "source_name"}, "base_from_business_index_id DESC", 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 = "获取成功"
+}
+
+// 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 = "删除成功"
+}

+ 0 - 76
controllers/edb.go

@@ -1,14 +1,12 @@
 package controllers
 
 import (
-	"encoding/json"
 	"eta/eta_hub/models"
 	"eta/eta_hub/models/data_manage"
 	"eta/eta_hub/services"
 	"eta/eta_hub/services/data"
 	"eta/eta_hub/utils"
 	"time"
-	"strings"
 )
 
 // EdbController 指标
@@ -288,77 +286,3 @@ func (this *EdbInfoController) TraceEdbInfo() {
 	br.Data = resp
 	br.Msg = "刷新成功"
 }
-
-// Push
-// @Title 指标数据
-// @Description 指标数据
-// @Success 200 {object} data_manage.EdbInfoItem
-// @router /push [post]
-func (this *EdbController) Push() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-
-	body := this.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 = edbData
-	br.Ret = 200
-	br.Msg = "处理成功"
-}

+ 68 - 0
models/data_manage/base_from_business.go

@@ -0,0 +1,68 @@
+package data_manage
+
+import (
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"strings"
+	"time"
+)
+
+// BaseFromBusinessIndex
+// @Description: 外部指标(商家系统)表
+type BaseFromBusinessIndex struct {
+	BaseFromBusinessIndexId int64     `orm:"column(base_from_business_index_id);pk"`
+	IndexCode               string    `description:"指标编码"`
+	IndexName               string    `description:"指标名称"`
+	Unit                    string    `description:"单位"`
+	Frequency               string    `description:"频度"`
+	Source                  int       `description:"数据来源"`
+	SourceName              string    `description:"数据来源名称"`
+	StartDate               time.Time `description:"开始日期"`
+	EndDate                 time.Time `description:"结束日期"`
+	Remark                  string    `description:"备注字段"`
+	BaseModifyTime          time.Time `description:"基础信息(名称,单位,频度)变更时间"`
+	DataUpdateTime          time.Time `description:"最近一次数据发生变化的时间"`
+	CreateTime              time.Time `description:"创建时间"`
+	ModifyTime              time.Time `description:"修改时间"`
+}
+
+// BaseFromBusinessIndexItem
+// @Description: 外部指标结构
+type BaseFromBusinessIndexItem struct {
+	IndexCode  string `description:"指标编码"`
+	IndexName  string `description:"指标名称"`
+	Unit       string `description:"单位"`
+	Frequency  string `description:"频度"`
+	SourceName string `description:"数据来源名称"`
+}
+
+// BaseFromBusinessIndexResp 联合国商品贸易列表数据返回
+type BaseFromBusinessIndexResp struct {
+	Paging         *paging.PagingItem
+	List           []*BaseFromBusinessIndexItem
+	LastUpdateTime string
+}
+
+func (m *BaseFromBusinessIndex) GetItemsByCondition(cond string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (total int, items []*BaseFromBusinessIndexItem, err error) {
+	o := orm.NewOrmUsingDB("data")
+	fields := strings.Join(fieldArr, ",")
+	if len(fieldArr) == 0 {
+		fields = `*`
+	}
+	// 获取总数
+	sql := fmt.Sprintf(`SELECT count(1) FROM base_from_business_index WHERE 1=1 %s `, cond)
+	err = o.Raw(sql, pars).QueryRow(&total)
+	if err != nil {
+		return
+	}
+
+	// 排序字段
+	order := `ORDER BY create_time DESC`
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql = fmt.Sprintf(`SELECT %s FROM base_from_business_index WHERE 1=1 %s %s limit ?,?`, fields, cond, order)
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	return
+}

+ 14 - 0
models/data_manage/request.go

@@ -18,3 +18,17 @@ type AddBusinessDataReq struct {
 	Value float64 `description:"值"`
 	Date  string  `description:"日期"`
 }
+
+// DelBusinessIndexReq
+// @Description:  删除外部指标(商家)请求
+type DelBusinessIndexReq struct {
+	IndexCodeList []string `description:"指标编码列表"`
+}
+
+// DelBusinessDataReq
+// @Description:  删除外部指标(商家)明细请求
+type DelBusinessDataReq struct {
+	IndexCode string `description:"指标编码"`
+	StartDate string `description:"开始日期"`
+	EndDate   string `description:"结束日期"`
+}

+ 27 - 0
routers/commentsRouter.go

@@ -43,6 +43,33 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_hub/controllers:EdbController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:EdbController"],
+        beego.ControllerComments{
+            Method: "BusinessEdbDataDel",
+            Router: `/business/data/del`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_hub/controllers:EdbController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:EdbController"],
+        beego.ControllerComments{
+            Method: "BusinessEdbDel",
+            Router: `/business/edb/del`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_hub/controllers:EdbController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:EdbController"],
+        beego.ControllerComments{
+            Method: "BusinessEdbList",
+            Router: `/business/edb/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_hub/controllers:EdbController"] = append(beego.GlobalControllerRouter["eta/eta_hub/controllers:EdbController"],
         beego.ControllerComments{
             Method: "ClassifyList",

+ 68 - 3
services/data/base_edb_lib.go

@@ -9,14 +9,32 @@ import (
 	"strings"
 )
 
+type PushEdbResponse struct {
+	Ret     int
+	Msg     string
+	ErrMsg  string
+	ErrCode string
+	Data    BaseFromBusinessIndexResp
+}
+
+// BaseFromBusinessIndexResp
+// @Description: 外部指标(商家系统)表
+type BaseFromBusinessIndexResp struct {
+	IndexCode  string `description:"指标编码"`
+	IndexName  string `description:"指标名称"`
+	Unit       string `description:"单位"`
+	Frequency  string `description:"频度"`
+	SourceName string `description:"数据来源名称"`
+}
+
 // PushEdb
 // @Description:处理外部(商家)指标的接口
 // @author: Roc
 // @datetime 2024-04-28 11:10:44
 // @param paramStr string
-// @return resp *models.BaseResponse
+// @return resp *PushEdbResponse
 // @return err error
-func PushEdb(paramStr string) (resp *models.BaseResponse, err error) {
+func PushEdb(paramStr string) (resp *PushEdbResponse, err error) {
 	_, resultByte, err := postEdbLib(paramStr, "/business_index/handle")
 	err = json.Unmarshal(resultByte, &resp)
 	if err != nil {
@@ -25,6 +43,53 @@ func PushEdb(paramStr string) (resp *models.BaseResponse, err error) {
 	return
 }
 
+type DelBusinessIndexResponse struct {
+	Ret     int
+	Msg     string
+	ErrMsg  string
+	ErrCode string
+	Data    DelBusinessIndexResp
+}
+
+// DelBusinessIndexResp
+// @Description: 外部指标(商家系统)表
+type DelBusinessIndexResp struct {
+	IsDeleteEdbCodeList []string `description:"已经删除了的指标编码"`
+	NoDeleteEdbCodeList []string `description:"未删除的指标编码"`
+}
+
+// DelBusinessIndex
+// @Description: 删除外部(商家)指标的接口
+// @author: Roc
+// @datetime 2024-5-31 15:26:19
+// @param paramStr string
+// @return resp *models.BaseResponse
+// @return err error
+func DelBusinessIndex(paramStr string) (resp *DelBusinessIndexResponse, err error) {
+	_, resultByte, err := postEdbLib(paramStr, "/business_index/index/del")
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
+		return
+	}
+	return
+}
+
+// DelBusinessIndexData
+// @Description:删除外部(商家)指标的明细数据接口
+// @author: Roc
+// @datetime 2024-5-31 15:26:19
+// @param paramStr string
+// @return resp *models.BaseResponse
+// @return err error
+func DelBusinessIndexData(paramStr string) (resp *models.BaseResponse, err error) {
+	_, resultByte, err := postEdbLib(paramStr, "/business_index/data/del")
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
+		return
+	}
+	return
+}
+
 // postRefreshEdbData 刷新指标数据
 func postRefreshEdbData(param map[string]interface{}, urlStr string) (resp *models.BaseResponse, err error) {
 	postUrl := utils.EDB_LIB_URL + urlStr
@@ -63,7 +128,7 @@ func postEdbLib(paramStr string, urlStr string) (resp *models.BaseResponse, resu
 	if err != nil {
 		return
 	}
-	
+
 	return
 }