opt: ueInfo and ueNum support neid is empty

This commit is contained in:
2024-07-15 17:03:17 +08:00
parent d3657f8a8a
commit cc4428ed40
4 changed files with 222 additions and 120 deletions

View File

@@ -15,16 +15,12 @@ import (
"be.ems/lib/services" "be.ems/lib/services"
"be.ems/restagent/config" "be.ems/restagent/config"
tokenConst "be.ems/src/framework/constants/token" tokenConst "be.ems/src/framework/constants/token"
"be.ems/src/modules/network_element/model"
neService "be.ems/src/modules/network_element/service" neService "be.ems/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"
) )
// SmfUENum SMF在线用户数
type SmfUENum struct {
UENum int `json:"ueNum"` // 当前在线用户数
}
// N3iwfUEInfo N3IWF在线用户信息 // N3iwfUEInfo N3IWF在线用户信息
type N3iwfUEInfo struct { type N3iwfUEInfo struct {
IMSI string `json:"imsi"` IMSI string `json:"imsi"`
@@ -206,35 +202,6 @@ func GetSubscriptionsFromNSSF(w http.ResponseWriter, r *http.Request) {
} }
} }
// ImsUEInfo IMS在线用户信息
type ImsUEInfo struct {
IMSI string `json:"imsi"`
MSISDN string `json:"msisdn"`
IMPU string `json:"impu"`
Barring int `json:"barring"`
RegState int `json:"regState"`
Activetime string `json:"activeTime"`
}
// ImsUEInfo IMS在线用户信息
type TenantImsUEInfo struct {
IMSI string `json:"imsi"`
MSISDN string `json:"msisdn"`
IMPU string `json:"impu"`
Barring int `json:"barring"`
RegState int `json:"regState"`
Activetime string `json:"activeTime"`
TenantName string `json:"tenantName"`
}
type ImsUEInfoResponse struct {
Data []ImsUEInfo `json:"data"`
}
type TenantImsUEInfoResponse struct {
Data []TenantImsUEInfo `json:"data"`
}
// SmfUEInfo SMF在线用户信息 // SmfUEInfo SMF在线用户信息
type SmfUEInfo struct { type SmfUEInfo struct {
IMSI string `json:"imsi"` IMSI string `json:"imsi"`
@@ -255,6 +222,8 @@ type SmfUEInfo struct {
} }
type TenantUEInfo struct { type TenantUEInfo struct {
NeType string `json:"neType"`
NeID string `json:"neId"`
IMSI string `json:"imsi"` IMSI string `json:"imsi"`
MSISDN string `json:"msisdn"` MSISDN string `json:"msisdn"`
RatType string `json:"ratType"` RatType string `json:"ratType"`
@@ -287,21 +256,28 @@ func GetUEInfoFromNF(w http.ResponseWriter, r *http.Request) {
neId := ctx.GetQuery(r, "neId") neId := ctx.GetQuery(r, "neId")
neType := "smf" neType := "smf"
if neType == "" || neId == "" { // if neType == "" || neId == "" {
log.Error("elementTypeValue/neId is empty") // log.Error("elementTypeValue/neId is empty")
services.ResponseNotFound404UriNotExist(w, r) // services.ResponseNotFound404UriNotExist(w, r)
return // return
} // }
var tenantName string var tenantName string
tenantNames := services.GetParamsArrByName("tenantName", r) tenantNames := services.GetParamsArrByName("tenantName", r)
if len(tenantNames) > 0 { if len(tenantNames) > 0 {
tenantName = tenantNames[0] tenantName = tenantNames[0]
} }
neInfo := neService.NewNeInfoImpl.SelectNeInfoByNeTypeAndNeID(neType, neId) var neInfos []model.NeInfo
if neId != "" {
neInfo := neService.NewNeInfoImpl.SelectNeInfoByNeTypeAndNeID(neType, neId)
neInfos = append(neInfos, neInfo)
} else {
neInfos = neService.NewNeInfoImpl.SelectNeInfoByNeType(neType)
}
var response services.MapResponse var response UEInfoResponse
if neInfo.NeId == neId && neInfo.NeId != "" { for _, neInfo := range neInfos {
//if neInfo.NeId == neId && neInfo.NeId != "" {
requestURI2NF := fmt.Sprintf("http://%s:%v%s", neInfo.IP, neInfo.Port, r.RequestURI) requestURI2NF := fmt.Sprintf("http://%s:%v%s", neInfo.IP, neInfo.Port, r.RequestURI)
//requestURI2NF := "http://127.0.0.1:4523/m1/3157310-1528434-default/api/rest/ueManagement/v1/elementType/smf/objectType/ueInfo?apifoxApiId=128609449" //requestURI2NF := "http://127.0.0.1:4523/m1/3157310-1528434-default/api/rest/ueManagement/v1/elementType/smf/objectType/ueInfo?apifoxApiId=128609449"
log.Debug("requestURI2NF:", requestURI2NF) log.Debug("requestURI2NF:", requestURI2NF)
@@ -312,8 +288,9 @@ func GetUEInfoFromNF(w http.ResponseWriter, r *http.Request) {
Get(requestURI2NF) Get(requestURI2NF)
if err != nil { if err != nil {
log.Error("Failed to Get from NF:", err) log.Error("Failed to Get from NF:", err)
services.ResponseInternalServerError500ProcessError(w, err) // services.ResponseInternalServerError500ProcessError(w, err)
return // return
continue
} }
// multi-tenancy solution // multi-tenancy solution
var tenantID, where string var tenantID, where string
@@ -329,20 +306,23 @@ func GetUEInfoFromNF(w http.ResponseWriter, r *http.Request) {
tenantName, _ = dborm.XormGetSingleColStringByWhere("sys_tenant", "tenant_name", where) tenantName, _ = dborm.XormGetSingleColStringByWhere("sys_tenant", "tenant_name", where)
} }
if tenantID == "" { if tenantID == "" {
var response UEInfoResponse var ueInfos UEInfoResponse
_ = json.Unmarshal(resp.Body(), &response) _ = json.Unmarshal(resp.Body(), &ueInfos)
for i := 0; i < len(response.Data); i++ { for i := 0; i < len(ueInfos.Data); i++ {
where = fmt.Sprintf("status='1' and tenancy_type='IMSI' and '%s' like tenancy_key", response.Data[i].IMSI[5:]) where = fmt.Sprintf("status='1' and tenancy_type='IMSI' and '%s' like tenancy_key", ueInfos.Data[i].IMSI[5:])
tenantID, _ = dborm.XormGetSingleColStringByWhere("sys_tenant", "parent_id", where) tenantID, _ = dborm.XormGetSingleColStringByWhere("sys_tenant", "parent_id", where)
where = fmt.Sprintf("status='1' and tenant_id='%s'", tenantID) where = fmt.Sprintf("status='1' and tenant_id='%s'", tenantID)
tenantName, _ = dborm.XormGetSingleColStringByWhere("sys_tenant", "tenant_name", where) tenantName, _ = dborm.XormGetSingleColStringByWhere("sys_tenant", "tenant_name", where)
log.Tracef("tenantName: %s tenantID: %s", tenantName, tenantID) log.Tracef("tenantName: %s tenantID: %s", tenantName, tenantID)
response.Data[i].TenantName = tenantName ueInfos.Data[i].NeType = strings.ToUpper(neType)
ueInfos.Data[i].NeID = neInfo.NeId
ueInfos.Data[i].TenantName = tenantName
response.Data = append(response.Data, ueInfos.Data[i])
} }
services.ResponseWithJson(w, resp.StatusCode(), &response) // services.ResponseWithJson(w, resp.StatusCode(), &response)
return // return
} else { } else {
var tenantUEInfos []TenantUEInfo //var tenantUEInfos []TenantUEInfo
var ueInfos UEInfoResponse var ueInfos UEInfoResponse
log.Trace("body:", string(resp.Body())) log.Trace("body:", string(resp.Body()))
_ = json.Unmarshal(resp.Body(), &ueInfos) _ = json.Unmarshal(resp.Body(), &ueInfos)
@@ -353,40 +333,80 @@ func GetUEInfoFromNF(w http.ResponseWriter, r *http.Request) {
where = fmt.Sprintf("status='1' and parent_id='%s' and tenancy_type='IMSI' and '%s' like tenancy_key", tenantID, n.IMSI[5:]) where = fmt.Sprintf("status='1' and parent_id='%s' and tenancy_type='IMSI' and '%s' like tenancy_key", tenantID, n.IMSI[5:])
has, err := dborm.XormExistTableOne("sys_tenant", where) has, err := dborm.XormExistTableOne("sys_tenant", where)
if err == nil && has { if err == nil && has {
n.NeType = strings.ToUpper(neType)
n.NeID = neInfo.NeId
n.TenantName = tenantName n.TenantName = tenantName
tenantUEInfos = append(tenantUEInfos, n) response.Data = append(response.Data, n)
} }
} }
var response UEInfoResponse // var response UEInfoResponse
response.Data = tenantUEInfos // response.Data = tenantUEInfos
services.ResponseWithJson(w, resp.StatusCode(), &response) // services.ResponseWithJson(w, resp.StatusCode(), &response)
return // return
} }
} }
services.ResponseWithJson(w, http.StatusOK, response) services.ResponseWithJson(w, http.StatusOK, response)
} }
// ImsUEInfo IMS在线用户信息
type ImsUEInfo struct {
IMSI string `json:"imsi"`
MSISDN string `json:"msisdn"`
IMPU string `json:"impu"`
Barring int `json:"barring"`
RegState int `json:"regState"`
Activetime string `json:"activeTime"`
}
// ImsUEInfo IMS在线用户信息
type TenantImsUEInfo struct {
NeType string `json:"neType"`
NeID string `json:"neId"`
IMSI string `json:"imsi"`
MSISDN string `json:"msisdn"`
IMPU string `json:"impu"`
Barring int `json:"barring"`
RegState int `json:"regState"`
Activetime string `json:"activeTime"`
TenantName string `json:"tenantName"`
}
type ImsUEInfoResponse struct {
Data []ImsUEInfo `json:"data"`
}
type TenantImsUEInfoResponse struct {
Data []TenantImsUEInfo `json:"data"`
}
// Get UEInfo from NF/NFs, IMS Online users // Get UEInfo from NF/NFs, IMS Online users
func GetIMSUEInfoFromNF(w http.ResponseWriter, r *http.Request) { func GetIMSUEInfoFromNF(w http.ResponseWriter, r *http.Request) {
log.Debug("GetUEInfoFromNF processing... ") log.Debug("GetIMSUEInfoFromNF processing... ")
neId := ctx.GetQuery(r, "neId") neId := ctx.GetQuery(r, "neId")
neType := "ims" neType := "ims"
if neType == "" || neId == "" { // if neType == "" || neId == "" {
log.Error("elementTypeValue/neId is empty") // log.Error("elementTypeValue/neId is empty")
services.ResponseNotFound404UriNotExist(w, r) // services.ResponseNotFound404UriNotExist(w, r)
return // return
} // }
var tenantName string var tenantName string
tenantNames := services.GetParamsArrByName("tenantName", r) tenantNames := services.GetParamsArrByName("tenantName", r)
if len(tenantNames) > 0 { if len(tenantNames) > 0 {
tenantName = tenantNames[0] tenantName = tenantNames[0]
} }
neInfo := neService.NewNeInfoImpl.SelectNeInfoByNeTypeAndNeID(neType, neId) var neInfos []model.NeInfo
if neId != "" {
neInfo := neService.NewNeInfoImpl.SelectNeInfoByNeTypeAndNeID(neType, neId)
neInfos = append(neInfos, neInfo)
} else {
neInfos = neService.NewNeInfoImpl.SelectNeInfoByNeType(neType)
}
var response services.MapResponse var response TenantImsUEInfoResponse
if neInfo.NeId == neId && neInfo.NeId != "" { for _, neInfo := range neInfos {
requestURI2NF := fmt.Sprintf("http://%s:%v%s", neInfo.IP, neInfo.Port, r.RequestURI) requestURI2NF := fmt.Sprintf("http://%s:%v%s", neInfo.IP, neInfo.Port, r.RequestURI)
//requestURI2NF := "http://127.0.0.1:4523/m1/3157310-1528434-default/api/rest/ueManagement/v1/elementType/ims/objectType/ueInfo?apifoxApiId=128609458" //requestURI2NF := "http://127.0.0.1:4523/m1/3157310-1528434-default/api/rest/ueManagement/v1/elementType/ims/objectType/ueInfo?apifoxApiId=128609458"
log.Debug("requestURI2NF:", requestURI2NF) log.Debug("requestURI2NF:", requestURI2NF)
@@ -397,8 +417,9 @@ func GetIMSUEInfoFromNF(w http.ResponseWriter, r *http.Request) {
Get(requestURI2NF) Get(requestURI2NF)
if err != nil { if err != nil {
log.Error("Failed to Get from NF:", err) log.Error("Failed to Get from NF:", err)
services.ResponseInternalServerError500ProcessError(w, err) // services.ResponseInternalServerError500ProcessError(w, err)
return // return
continue
} }
// multi-tenancy solution // multi-tenancy solution
var tenantID, where string var tenantID, where string
@@ -414,20 +435,23 @@ func GetIMSUEInfoFromNF(w http.ResponseWriter, r *http.Request) {
tenantName, _ = dborm.XormGetSingleColStringByWhere("sys_tenant", "tenant_name", where) tenantName, _ = dborm.XormGetSingleColStringByWhere("sys_tenant", "tenant_name", where)
} }
if tenantID == "" { if tenantID == "" {
var response TenantImsUEInfoResponse var ueInfos TenantImsUEInfoResponse
_ = json.Unmarshal(resp.Body(), &response) _ = json.Unmarshal(resp.Body(), &ueInfos)
for i := 0; i < len(response.Data); i++ { for i := 0; i < len(response.Data); i++ {
where = fmt.Sprintf("status='1' and tenancy_type='IMSI' and '%s' like tenancy_key", response.Data[i].IMSI) where = fmt.Sprintf("status='1' and tenancy_type='IMSI' and '%s' like tenancy_key", ueInfos.Data[i].IMSI)
tenantID, _ = dborm.XormGetSingleColStringByWhere("sys_tenant", "parent_id", where) tenantID, _ = dborm.XormGetSingleColStringByWhere("sys_tenant", "parent_id", where)
where = fmt.Sprintf("status='1' and tenant_id='%s'", tenantID) where = fmt.Sprintf("status='1' and tenant_id='%s'", tenantID)
tenantName, _ = dborm.XormGetSingleColStringByWhere("sys_tenant", "tenant_name", where) tenantName, _ = dborm.XormGetSingleColStringByWhere("sys_tenant", "tenant_name", where)
log.Tracef("tenantName: %s tenantID: %s", tenantName, tenantID) log.Tracef("tenantName: %s tenantID: %s", tenantName, tenantID)
response.Data[i].TenantName = tenantName ueInfos.Data[i].NeType = strings.ToUpper(neType)
ueInfos.Data[i].NeID = neInfo.NeId
ueInfos.Data[i].TenantName = tenantName
response.Data = append(response.Data, ueInfos.Data[i])
} }
services.ResponseWithJson(w, resp.StatusCode(), &response) // services.ResponseWithJson(w, resp.StatusCode(), &response)
return // return
} else { } else {
var tenantUEInfos []TenantImsUEInfo //var tenantUEInfos []TenantImsUEInfo
var ueInfos TenantImsUEInfoResponse var ueInfos TenantImsUEInfoResponse
log.Trace("body:", string(resp.Body())) log.Trace("body:", string(resp.Body()))
_ = json.Unmarshal(resp.Body(), &ueInfos) _ = json.Unmarshal(resp.Body(), &ueInfos)
@@ -438,14 +462,16 @@ func GetIMSUEInfoFromNF(w http.ResponseWriter, r *http.Request) {
where = fmt.Sprintf("status='1' and parent_id='%s' and tenancy_type='IMSI' and '%s' like tenancy_key", tenantID, n.IMSI) where = fmt.Sprintf("status='1' and parent_id='%s' and tenancy_type='IMSI' and '%s' like tenancy_key", tenantID, n.IMSI)
has, err := dborm.XormExistTableOne("sys_tenant", where) has, err := dborm.XormExistTableOne("sys_tenant", where)
if err == nil && has { if err == nil && has {
n.NeType = strings.ToUpper(neType)
n.NeID = neInfo.NeId
n.TenantName = tenantName n.TenantName = tenantName
tenantUEInfos = append(tenantUEInfos, n) response.Data = append(response.Data, n)
} }
} }
var response TenantImsUEInfoResponse // var response TenantImsUEInfoResponse
response.Data = tenantUEInfos // response.Data = tenantUEInfos
services.ResponseWithJson(w, resp.StatusCode(), &response) // services.ResponseWithJson(w, resp.StatusCode(), &response)
return // return
} }
} }
services.ResponseWithJson(w, http.StatusOK, response) services.ResponseWithJson(w, http.StatusOK, response)
@@ -664,6 +690,22 @@ func DeletePCFUserInfo(w http.ResponseWriter, r *http.Request) {
} }
} }
// SmfUENum SMF在线用户数
// type SmfUENum struct {
// UENum int `json:"ueNum"` // 当前在线用户数
// }
// SmfUENum SMF在线用户数
type UENumInfo struct {
NeType string `json:"neType"`
NeId string `json:"neId"`
UENum int `json:"ueNum"` // 当前在线用户数
}
type UENumResponse struct {
UENums []UENumInfo
}
// Get UEInfo from SMF // Get UEInfo from SMF
func GetUENumFromNF(w http.ResponseWriter, r *http.Request) { func GetUENumFromNF(w http.ResponseWriter, r *http.Request) {
log.Info("GetUENumFromNF processing... ") log.Info("GetUENumFromNF processing... ")
@@ -675,14 +717,15 @@ func GetUENumFromNF(w http.ResponseWriter, r *http.Request) {
return return
} }
//neTypeLower := strings.ToLower(neType) //neTypeLower := strings.ToLower(neType)
var neId string //var neId string
neIds := services.GetParamsArrByName("neId", r) //neIds := services.GetParamsArrByName("neId", r)
if len(neIds) == 1 { neId := ctx.GetQuery(r, "neId")
neId = neIds[0] // if len(neIds) == 1 {
} else { // neId = neIds[0]
services.ResponseNotFound404UriNotExist(w, r) // } else {
return // services.ResponseNotFound404UriNotExist(w, r)
} // return
// }
// token, err := services.CheckFrontValidRequest(w, r) // token, err := services.CheckFrontValidRequest(w, r)
// if err != nil { // if err != nil {
@@ -691,40 +734,60 @@ func GetUENumFromNF(w http.ResponseWriter, r *http.Request) {
// } // }
// log.Debug("token:", token) // log.Debug("token:", token)
neInfo, err := dborm.XormGetNeInfo(neType, neId) // neInfo, err := dborm.XormGetNeInfo(neType, neId)
if err != nil { // if err != nil {
log.Error("Failed to XormGetNeInfo:", err) // log.Error("Failed to XormGetNeInfo:", err)
services.ResponseInternalServerError500ProcessError(w, err) // services.ResponseInternalServerError500ProcessError(w, err)
return // return
} else if neInfo == nil { // } else if neInfo == nil {
err := global.ErrCMNotFoundTargetNE // err := global.ErrCMNotFoundTargetNE
log.Error(global.ErrCMNotFoundTargetNE) // log.Error(global.ErrCMNotFoundTargetNE)
services.ResponseInternalServerError500ProcessError(w, err) // services.ResponseInternalServerError500ProcessError(w, err)
return // return
} // }
log.Trace("neInfo:", neInfo) // log.Trace("neInfo:", neInfo)
hostUri := fmt.Sprintf("http://%s:%v", neInfo.Ip, neInfo.Port) var neInfos []model.NeInfo
requestURI2NF := fmt.Sprintf("%s%s", hostUri, r.RequestURI) if neId != "" {
neInfo := neService.NewNeInfoImpl.SelectNeInfoByNeTypeAndNeID(neType, neId)
log.Debug("requestURI2NF:", requestURI2NF) neInfos = append(neInfos, neInfo)
resp, err := client.R().
EnableTrace().
SetHeaders(map[string]string{tokenConst.HEADER_KEY: r.Header.Get(tokenConst.HEADER_KEY)}).
// SetHeaders(map[string]string{"accessToken": token}).
SetHeaders(map[string]string{"User-Agent": config.GetDefaultUserAgent()}).
SetHeaders(map[string]string{"Content-Type": "application/json;charset=UTF-8"}).
Get(requestURI2NF)
if err != nil {
log.Error("Get system state from NF is failed:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
} else { } else {
var response services.MapResponse neInfos = neService.NewNeInfoImpl.SelectNeInfoByNeType(neType)
_ = json.Unmarshal(resp.Body(), &response) }
services.ResponseWithJson(w, resp.StatusCode(), response)
return var response []UENumInfo
for _, neInfo := range neInfos {
hostUri := fmt.Sprintf("http://%s:%v", neInfo.IP, neInfo.Port)
requestURI2NF := fmt.Sprintf("%s%s", hostUri, r.RequestURI)
log.Debug("requestURI2NF:", requestURI2NF)
resp, err := client.R().
EnableTrace().
SetHeaders(map[string]string{tokenConst.HEADER_KEY: r.Header.Get(tokenConst.HEADER_KEY)}).
// SetHeaders(map[string]string{"accessToken": token}).
SetHeaders(map[string]string{"User-Agent": config.GetDefaultUserAgent()}).
SetHeaders(map[string]string{"Content-Type": "application/json;charset=UTF-8"}).
Get(requestURI2NF)
if err != nil {
log.Error("failed to get UENum from NF:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
} else {
var ueNum UENumInfo
_ = json.Unmarshal(resp.Body(), &ueNum)
ueNum.NeType = strings.ToUpper(neType)
ueNum.NeId = neInfo.NeId
response = append(response, ueNum)
// services.ResponseWithJson(w, resp.StatusCode(), response)
// return
}
}
if neId != "" {
services.ResponseWithJson(w, http.StatusOK, response[0])
} else {
services.ResponseWithJson(w, http.StatusOK, response)
} }
} }

View File

@@ -9,6 +9,9 @@ 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
// SelectNeInfoByNeType 通过ne_type和ne_id查询网元信息
SelectNeInfoByNeType(neType string) []model.NeInfo
// SelectPage 根据条件分页查询 // SelectPage 根据条件分页查询
SelectPage(query map[string]any) map[string]any SelectPage(query map[string]any) map[string]any

View File

@@ -124,6 +124,19 @@ func (r *NeInfoImpl) SelectNeInfoByNeTypeAndNeID(neType, neID string) model.NeIn
return model.NeInfo{} return model.NeInfo{}
} }
// SelectNeInfoByNeTypeAndNeID 通过ne_type和ne_id查询网元信息
func (r *NeInfoImpl) SelectNeInfoByNeType(neType string) []model.NeInfo {
querySql := r.selectSql + " where ne_type = ?"
results, err := datasource.RawDB("", querySql, []any{neType})
if err != nil {
logger.Errorf("query err => %v", err)
return []model.NeInfo{}
}
// 转换实体
rows := r.convertResultRows(results)
return rows
}
// SelectPage 根据条件分页查询 // SelectPage 根据条件分页查询
func (r *NeInfoImpl) SelectPage(query map[string]any) map[string]any { func (r *NeInfoImpl) SelectPage(query map[string]any) map[string]any {
// 查询条件拼接 // 查询条件拼接

View File

@@ -53,6 +53,29 @@ func (r *NeInfoImpl) SelectNeInfoByNeTypeAndNeID(neType, neID string) model.NeIn
return neInfo return neInfo
} }
// SelectNeInfoByNeTyp 通过ne_type查询网元信息
func (r *NeInfoImpl) SelectNeInfoByNeType(neType string) []model.NeInfo {
var neInfos []model.NeInfo
key := fmt.Sprintf("%s%s:", cachekey.NE_KEY, strings.ToUpper(neType))
jsonStr, _ := redis.Get("", key)
if len(jsonStr) > 7 {
err := json.Unmarshal([]byte(jsonStr), &neInfos)
if err != nil {
neInfos = []model.NeInfo{}
}
} else {
neInfos = r.neInfoRepository.SelectNeInfoByNeType(neType)
for _, neInfo := range neInfos {
if neInfo.ID != "" {
redis.Del("", key)
values, _ := json.Marshal(neInfos)
redis.Set("", key, string(values))
}
}
}
return neInfos
}
// RefreshByNeTypeAndNeID 通过ne_type和ne_id刷新redis中的缓存 // RefreshByNeTypeAndNeID 通过ne_type和ne_id刷新redis中的缓存
func (r *NeInfoImpl) RefreshByNeTypeAndNeID(neType, neID string) model.NeInfo { func (r *NeInfoImpl) RefreshByNeTypeAndNeID(neType, neID string) model.NeInfo {
var neInfo model.NeInfo var neInfo model.NeInfo