12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package service
- import (
- "app.yhyue.com/moapp/jybase/common"
- "app.yhyue.com/moapp/jybase/encrypt"
- elastic "app.yhyue.com/moapp/jybase/es"
- "app.yhyue.com/moapp/jybase/redis"
- MC "bp.jydev.jianyu360.cn/BaseService/biCenter/api/common"
- "bp.jydev.jianyu360.cn/BaseService/biCenter/api/internal/types"
- "fmt"
- "github.com/gogf/gf/v2/util/gconv"
- )
- type SqlService struct {
- }
- func (l SqlService) SqlManage(in *types.SqlManageReq) map[string]interface{} {
- sqlData := MC.BaseMysql.FindOne("sql_manage", map[string]interface{}{
- "id": common.Int64All(in.Id),
- }, "", "")
- if sqlData == nil || len(*sqlData) == 0 {
- return map[string]interface{}{}
- }
- dbType := (*sqlData)["db_type"]
- cache_time := common.IntAll((*sqlData)["cache_time"])
- key := common.GetMd5String(gconv.String(in))
- if cache_time != 0 {
- dataStr := redis.Get("other", key)
- if dataStr != nil {
- data, _ := dataStr.(map[string]interface{})
- return data
- }
- }
- 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")
- }
- result := map[string]interface{}{
- "data": rs,
- "count": count,
- }
- if count > 0 && cache_time != 0 {
- redis.Put("other", key, result, cache_time)
- }
- return result
- }
- 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...)
- }
|