feat: 网元类型缓存ByNeTypeAndNeID

This commit is contained in:
TsMask
2024-02-05 14:39:30 +08:00
parent 5da8a8b51d
commit df9d880a7f
5 changed files with 84 additions and 16 deletions

View File

@@ -16,6 +16,7 @@ import (
"ems.agt/lib/services" "ems.agt/lib/services"
"ems.agt/restagent/config" "ems.agt/restagent/config"
tokenConst "ems.agt/src/framework/constants/token" tokenConst "ems.agt/src/framework/constants/token"
neService "ems.agt/src/modules/network_element/service"
"github.com/go-resty/resty/v2" "github.com/go-resty/resty/v2"
"github.com/gorilla/mux" "github.com/gorilla/mux"
@@ -158,6 +159,9 @@ func PostNeInfo(w http.ResponseWriter, r *http.Request) {
return return
} }
// 刷新缓存不存在结构体网元Id空字符串
neService.NewNeInfoImpl.RefreshByNeTypeAndNeID(neInfo.NeType, neInfo.NeId)
mapRow := make(map[string]interface{}) mapRow := make(map[string]interface{})
row := map[string]interface{}{"affectedRows": affected} row := map[string]interface{}{"affectedRows": affected}
mapRow["data"] = row mapRow["data"] = row
@@ -205,6 +209,10 @@ func PostNeInfo(w http.ResponseWriter, r *http.Request) {
} else if affected <= 0 { } else if affected <= 0 {
log.Infof("Not record affected to insert ne_info") log.Infof("Not record affected to insert ne_info")
} }
// 刷新缓存不存在结构体网元Id空字符串
neService.NewNeInfoImpl.RefreshByNeTypeAndNeID(neInfo.NeType, neInfo.NeId)
services.ResponseStatusOK204NoContent(w) services.ResponseStatusOK204NoContent(w)
return return
default: default:
@@ -261,6 +269,9 @@ func PutNeInfo(w http.ResponseWriter, r *http.Request) {
return return
} }
// 刷新缓存不存在结构体网元Id空字符串
neService.NewNeInfoImpl.RefreshByNeTypeAndNeID(neInfo.NeType, neInfo.NeId)
mapRow := make(map[string]interface{}) mapRow := make(map[string]interface{})
row := map[string]interface{}{"affectedRows": affected} row := map[string]interface{}{"affectedRows": affected}
mapRow["data"] = row mapRow["data"] = row
@@ -309,6 +320,10 @@ func PutNeInfo(w http.ResponseWriter, r *http.Request) {
} else if affected <= 0 { } else if affected <= 0 {
log.Infof("Not record affected to insert ne_info") log.Infof("Not record affected to insert ne_info")
} }
// 刷新缓存不存在结构体网元Id空字符串
neService.NewNeInfoImpl.RefreshByNeTypeAndNeID(neInfo.NeType, neInfo.NeId)
services.ResponseStatusOK204NoContent(w) services.ResponseStatusOK204NoContent(w)
return return
default: default:
@@ -390,6 +405,9 @@ func DeleteNeInfo(w http.ResponseWriter, r *http.Request) {
return return
} }
// 刷新缓存不存在结构体网元Id空字符串
neService.NewNeInfoImpl.RefreshByNeTypeAndNeID(neInfo.NeType, neInfo.NeId)
mapRow := make(map[string]interface{}) mapRow := make(map[string]interface{})
row := map[string]interface{}{"affectedRows": affected} row := map[string]interface{}{"affectedRows": affected}
mapRow["data"] = row mapRow["data"] = row

View File

@@ -6,6 +6,7 @@ import (
"ems.agt/src/framework/middleware/collectlogs" "ems.agt/src/framework/middleware/collectlogs"
"ems.agt/src/framework/middleware/repeat" "ems.agt/src/framework/middleware/repeat"
"ems.agt/src/modules/network_element/controller" "ems.agt/src/modules/network_element/controller"
"ems.agt/src/modules/network_element/service"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )
@@ -14,6 +15,9 @@ import (
func Setup(router *gin.Engine) { func Setup(router *gin.Engine) {
logger.Infof("开始加载 ====> network_element 模块路由") logger.Infof("开始加载 ====> network_element 模块路由")
// 启动时需要的初始参数
InitLoad()
neGroup := router.Group("/ne") neGroup := router.Group("/ne")
{ {
neGroup.GET("/info", neGroup.GET("/info",
@@ -155,18 +159,10 @@ func Setup(router *gin.Engine) {
controller.NewUDMSub.Import, controller.NewUDMSub.Import,
) )
} }
}
// 性能统计信息
kpiGroup := neGroup.Group("/kpi") // InitLoad 初始参数
{ func InitLoad() {
kpiGroup.GET("/title", // 启动时,清除缓存-网元类型
middleware.PreAuthorize(nil), service.NewNeInfoImpl.ClearNeCacheByNeType("*")
controller.NewPerfKPI.Title,
)
kpiGroup.GET("/data",
middleware.PreAuthorize(nil),
controller.NewPerfKPI.GoldKPI,
)
}
} }

View File

@@ -7,6 +7,12 @@ type INeInfo interface {
// SelectNeInfoByNeTypeAndNeID 通过ne_type和ne_id查询网元信息 // SelectNeInfoByNeTypeAndNeID 通过ne_type和ne_id查询网元信息
SelectNeInfoByNeTypeAndNeID(neType, neID string) model.NeInfo SelectNeInfoByNeTypeAndNeID(neType, neID string) model.NeInfo
// RefreshByNeTypeAndNeID 通过ne_type和ne_id刷新redis中的缓存
RefreshByNeTypeAndNeID(neType, neID string) model.NeInfo
// ClearNeCacheByNeType 清除网元类型缓存
ClearNeCacheByNeType(neType string) bool
// SelectNeList 查询网元列表 // SelectNeList 查询网元列表
SelectNeList(ne model.NeInfo, bandStatus bool) []model.NeInfo SelectNeList(ne model.NeInfo, bandStatus bool) []model.NeInfo
} }

View File

@@ -1,6 +1,11 @@
package service package service
import ( import (
"encoding/json"
"fmt"
"ems.agt/src/framework/constants/cachekey"
"ems.agt/src/framework/redis"
"ems.agt/src/modules/network_element/model" "ems.agt/src/modules/network_element/model"
"ems.agt/src/modules/network_element/repository" "ems.agt/src/modules/network_element/repository"
) )
@@ -18,7 +23,50 @@ type NeInfoImpl struct {
// SelectNeInfoByNeTypeAndNeID 通过ne_type和ne_id查询网元信息 // SelectNeInfoByNeTypeAndNeID 通过ne_type和ne_id查询网元信息
func (r *NeInfoImpl) SelectNeInfoByNeTypeAndNeID(neType, neID string) model.NeInfo { func (r *NeInfoImpl) SelectNeInfoByNeTypeAndNeID(neType, neID string) model.NeInfo {
return r.neInfoRepository.SelectNeInfoByNeTypeAndNeID(neType, neID) var neInfo model.NeInfo
key := fmt.Sprintf("%s%s.%s", cachekey.NE_KEY, neType, neID)
jsonStr, _ := redis.Get("", key)
if len(jsonStr) > 7 {
err := json.Unmarshal([]byte(jsonStr), &neInfo)
if err != nil {
neInfo = model.NeInfo{}
}
} else {
neInfo = r.neInfoRepository.SelectNeInfoByNeTypeAndNeID(neType, neID)
if neInfo.NeId == neID {
redis.Del("", key)
values, _ := json.Marshal(neInfo)
redis.Set("", key, string(values))
}
}
return neInfo
}
// RefreshByNeTypeAndNeID 通过ne_type和ne_id刷新redis中的缓存
func (r *NeInfoImpl) RefreshByNeTypeAndNeID(neType, neID string) model.NeInfo {
var neInfo model.NeInfo
key := fmt.Sprintf("%s%s.%s", cachekey.NE_KEY, neType, neID)
redis.Del("", key)
neInfo = r.neInfoRepository.SelectNeInfoByNeTypeAndNeID(neType, neID)
if neInfo.NeId == neID {
values, _ := json.Marshal(neInfo)
redis.Set("", key, string(values))
}
return neInfo
}
// ClearNeCacheByNeType 清除网元类型缓存
func (r *NeInfoImpl) ClearNeCacheByNeType(neType string) bool {
key := fmt.Sprintf("%s*", cachekey.NE_KEY)
if neType != "*" {
key = fmt.Sprintf("%s%s*", cachekey.NE_KEY, neType)
}
keys, err := redis.GetKeys("", key)
if err != nil {
return false
}
delOk, _ := redis.DelKeys("", keys)
return delOk
} }
// SelectNeList 查询网元列表 // SelectNeList 查询网元列表

View File

@@ -13,7 +13,7 @@ type ISysMenu interface {
// SelectMenuPermsByUserId 根据用户ID查询权限 // SelectMenuPermsByUserId 根据用户ID查询权限
SelectMenuPermsByUserId(userId string) []string SelectMenuPermsByUserId(userId string) []string
// SelectMenuPermsByUserId 根据用户ID查询权限 // SelectMenuTreeByUserId 根据用户ID查询权限
SelectMenuTreeByUserId(userId string) []model.SysMenu SelectMenuTreeByUserId(userId string) []model.SysMenu
// SelectMenuTreeSelectByUserId 查询菜单树结构信息 // SelectMenuTreeSelectByUserId 查询菜单树结构信息