package service import ( "app.yhyue.com/moapp/jybase/common" "app.yhyue.com/moapp/jybase/encrypt" elastic "app.yhyue.com/moapp/jybase/es" MC "bp.jydev.jianyu360.cn/BaseService/biCenter/api/common" "bp.jydev.jianyu360.cn/BaseService/biCenter/api/internal/types" "fmt" ) type SqlService struct { } func (l SqlService) SqlManage(in *types.SqlManageReq) (*[]map[string]interface{}, int64) { sqlData := MC.BaseMysql.FindOne("sql_manage", map[string]interface{}{ "id": common.Int64All(in.Id), }, "", "") if sqlData == nil || len(*sqlData) == 0 { return &[]map[string]interface{}{}, 0 } dbType := (*sqlData)["db_type"] rs := &[]map[string]interface{}{} count := int64(0) switch dbType { case "es": count, rs = elastic.GetWithCount(common.InterfaceToStr((*sqlData)["db_name"]), common.InterfaceToStr((*sqlData)["db_name"]), "", Sqlformat(common.InterfaceToStr((*sqlData)["content"]), *in)) } for k, v := range *rs { (*rs)[k]["id"] = encrypt.EncodeArticleId2ByCheck(common.InterfaceToStr(v["id"])) delete((*rs)[k], "_id") } return rs, count } func Sqlformat(sqlStr string, sqlData types.SqlManageReq) string { data := []interface{}{} for _, v := range sqlData.Params { switch v.Type { case "string": data = append(data, v.Value) case "int": data = append(data, common.Int64All(v.Value)) } } return fmt.Sprintf(sqlStr, data...) }