瀏覽代碼

Merge branch 'bug/8456' into debug

Roc 1 天之前
父節點
當前提交
4ba7f73baf

+ 6 - 3
controllers/base_auth.go

@@ -570,8 +570,8 @@ func (c *BaseAuthController) Prepare() {
 
 	//接口权限校验
 	roleId := admin.RoleId
-	// 单点登录逻辑
-	token := c.Ctx.GetCookie("token")
+	// 国能单点登录逻辑
+	token := c.Ctx.GetCookie("gn_token")
 	c.GnToken = token
 	list, e := services.GetMenuList(token, roleId)
 	if e != nil {
@@ -629,7 +629,10 @@ func checkToken(c *BaseAuthController) (isOk bool, session *system.SysSession, r
 	var token string
 
 	// 单点登录逻辑
-	aiUser := c.Ctx.GetCookie("ai_user")
+	aiUser := c.Ctx.GetCookie("user_name")
+	if aiUser == `` {
+		aiUser = c.Ctx.GetCookie("ai_user")
+	}
 	if aiUser == `` {
 		aiUser = c.Ctx.GetCookie("ai_token")
 	}

+ 90 - 0
controllers/data_manage/chart_info.go

@@ -1163,6 +1163,16 @@ func (this *ChartInfoController) ChartInfoDetail() {
 
 	//图表操作权限
 	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, chartInfo.HaveOperaAuth)
+	// 如果没有操作权限,那么去获取共享用户的编辑权限
+	if !chartInfo.IsEdit {
+		chartInfo.IsEdit, err = data.CheckChartInfoEditPermission(chartInfo.ChartInfoId, sysUser.AdminId)
+		if err != nil {
+			br.Msg = `获取失败`
+			br.ErrMsg = `获取失败:` + err.Error()
+			return
+		}
+	}
+
 	chartInfo.Button = data_manage.ChartViewButton{
 		IsEdit:    chartInfo.IsEdit,
 		IsEnChart: chartInfo.IsEnChart,
@@ -1365,8 +1375,18 @@ func (this *ChartInfoController) PreviewChartInfoDetail() {
 
 	//图表操作权限
 	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
+	// 如果没有操作权限,那么去获取共享用户的编辑权限
+	if !chartInfo.IsEdit {
+		chartInfo.IsEdit, err = data.CheckChartInfoEditPermission(chartInfo.ChartInfoId, sysUser.AdminId)
+		if err != nil {
+			br.Msg = `获取失败`
+			br.ErrMsg = `获取失败:` + err.Error()
+			return
+		}
+	}
 	//判断是否需要展示英文标识
 	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, chartInfo.Source, chartInfo.ChartType)
+
 	chartInfo.Button = data_manage.ChartViewButton{
 		IsEdit:    chartInfo.IsEdit,
 		IsEnChart: chartInfo.IsEnChart,
@@ -1716,6 +1736,16 @@ func (this *ChartInfoController) ChartInfoDetailV2() {
 
 	//图表操作权限
 	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, chartInfo.HaveOperaAuth)
+	// 如果没有操作权限,那么去获取共享用户的编辑权限
+	if !chartInfo.IsEdit {
+		chartInfo.IsEdit, err = data.CheckChartInfoEditPermission(chartInfoId, sysUser.AdminId)
+		if err != nil {
+			br.Msg = `获取失败`
+			br.ErrMsg = `获取失败:` + err.Error()
+			return
+		}
+	}
+
 	chartInfo.Button = data_manage.ChartViewButton{
 		IsEdit:    chartInfo.IsEdit,
 		IsEnChart: chartInfo.IsEnChart,
@@ -2592,6 +2622,16 @@ func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCa
 				}
 				//图表操作权限
 				chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, resp.ChartInfo.HaveOperaAuth)
+				// 如果没有操作权限,那么去获取共享用户的编辑权限
+				if !chartInfo.IsEdit {
+					chartInfo.IsEdit, err = data.CheckChartInfoEditPermission(chartInfo.ChartInfoId, sysUser.AdminId)
+					if err != nil {
+						msg = "获取失败"
+						errMsg = "获取图表分享情况信息失败,GetAllUserIdListByChartInfoId,Err:" + err.Error()
+						return
+					}
+				}
+
 				chartInfo.Button = data_manage.ChartViewButton{
 					IsEdit:    chartInfo.IsEdit,
 					IsEnChart: chartInfo.IsEnChart,
@@ -3384,8 +3424,18 @@ func (this *ChartInfoController) PreviewBarChartInfo() {
 
 	//图表操作权限
 	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
+	// 如果没有操作权限,那么去获取共享用户的编辑权限
+	if !chartInfo.IsEdit {
+		chartInfo.IsEdit, err = data.CheckChartInfoEditPermission(chartInfo.ChartInfoId, sysUser.AdminId)
+		if err != nil {
+			br.Msg = `获取失败`
+			br.ErrMsg = `获取失败:` + err.Error()
+			return
+		}
+	}
 	//判断是否需要展示英文标识
 	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, chartInfo.Source, chartInfo.ChartType)
+
 	chartInfo.Button = data_manage.ChartViewButton{
 		IsEdit:    chartInfo.IsEdit,
 		IsEnChart: chartInfo.IsEnChart,
@@ -3532,8 +3582,18 @@ func (this *ChartInfoController) PreviewSectionScatterChartInfo() {
 
 	//图表操作权限
 	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
+	// 如果没有操作权限,那么去获取共享用户的编辑权限
+	if !chartInfo.IsEdit {
+		chartInfo.IsEdit, err = data.CheckChartInfoEditPermission(chartInfo.ChartInfoId, sysUser.AdminId)
+		if err != nil {
+			br.Msg = `获取失败`
+			br.ErrMsg = `获取失败:` + err.Error()
+			return
+		}
+	}
 	//判断是否需要展示英文标识
 	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, utils.CHART_SOURCE_DEFAULT, chartType)
+
 	chartInfo.Button = data_manage.ChartViewButton{
 		IsEdit:    chartInfo.IsEdit,
 		IsEnChart: chartInfo.IsEnChart,
@@ -3673,6 +3733,16 @@ func (this *ChartInfoController) PreviewRadarChartInfo() {
 
 	//图表操作权限
 	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
+	// 如果没有操作权限,那么去获取共享用户的编辑权限
+	if !chartInfo.IsEdit {
+		chartInfo.IsEdit, err = data.CheckChartInfoEditPermission(chartInfo.ChartInfoId, sysUser.AdminId)
+		if err != nil {
+			br.Msg = `获取失败`
+			br.ErrMsg = `获取失败:` + err.Error()
+			return
+		}
+	}
+
 	//判断是否需要展示英文标识
 	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, utils.CHART_SOURCE_DEFAULT, chartType)
 	chartInfo.Button = data_manage.ChartViewButton{
@@ -3807,6 +3877,16 @@ func (this *ChartInfoController) ChartInfoConvertDetail() {
 
 		//图表操作权限
 		chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, chartInfo.HaveOperaAuth)
+		// 如果没有操作权限,那么去获取共享用户的编辑权限
+		if !chartInfo.IsEdit {
+			chartInfo.IsEdit, err = data.CheckChartInfoEditPermission(chartInfo.ChartInfoId, sysUser.AdminId)
+			if err != nil {
+				br.Msg = `获取失败`
+				br.ErrMsg = `获取失败:` + err.Error()
+				return
+			}
+		}
+
 		chartInfo.Button = data_manage.ChartViewButton{
 			IsEdit:    chartInfo.IsEdit,
 			IsEnChart: chartInfo.IsEnChart,
@@ -4179,6 +4259,16 @@ func (this *ChartInfoController) PreviewSeasonChartInfo() {
 
 	//图表操作权限
 	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
+	// 如果没有操作权限,那么去获取共享用户的编辑权限
+	if !chartInfo.IsEdit {
+		chartInfo.IsEdit, err = data.CheckChartInfoEditPermission(chartInfo.ChartInfoId, sysUser.AdminId)
+		if err != nil {
+			br.Msg = `获取失败`
+			br.ErrMsg = `获取失败:` + err.Error()
+			return
+		}
+	}
+
 	//判断是否需要展示英文标识
 	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, utils.CHART_SOURCE_DEFAULT, chartType)
 	chartInfo.Button = data_manage.ChartViewButton{

+ 143 - 9
controllers/sys_menu.go

@@ -3,6 +3,7 @@ package controllers
 import (
 	"eta_gn/eta_api/models"
 	"eta_gn/eta_api/models/system"
+	"eta_gn/eta_api/services"
 	"strconv"
 )
 
@@ -55,17 +56,77 @@ func (this *SysRoleController) SysMenuList() {
 	//openMap := map[string]bool{"false": false, "true": true}
 	//openApprove := openMap[confMap[models.BusinessConfIsReportApprove]]
 
-	list, err := system.GetMenuListAllByRoleIds(roleIds)
+	var resp system.MenuListResp
+	if this.GnToken == `` {
+		resp, err = getMenuListByRoleIds(roleIds)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取商家菜单失败, Err: " + err.Error()
+			return
+		}
+	} else {
+		resp, err = getMenuListByGnToken(this.GnToken)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取商家菜单失败, Err: " + err.Error()
+			return
+		}
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// @Title 获取顶部菜单
+// @Description 获取顶部菜单
+// @Success 200 {object} []services.TopMenuItemResp
+// @router /menu_top/list [get]
+func (this *SysRoleController) TopMenuList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		return
+	}
+	var resp []services.TopMenuItemResp
+
+	this.GnToken = `eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI4YWUwODhmNC1mNjhmLTRmZGMtYTBiZS1lZTFmODllZDAzNjgiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsIm5hbWUiOiLkvIog5YedIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiMjAwODE1NzEiLCJnaXZlbl9uYW1lIjoi5LyKIiwiZmFtaWx5X25hbWUiOiLlh50ifQ.qE8AjA9Ms-3Ec-Svw4C2EUXwN2a3NufAakW9n06rk5I`
+	resp, err := services.GetTopMenuList(this.GnToken)
 	if err != nil {
 		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
+		br.ErrMsg = "获取商家菜单失败, Err: " + err.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// getMenuListByRoleIds
+// @Description: 根据角色获取菜单
+// @author: Roc
+// @datetime 2025-06-17 10:01:53
+// @param roleIds string
+// @return resp system.MenuListResp
+// @return err error
+func getMenuListByRoleIds(roleIds string) (resp system.MenuListResp, err error) {
+	resp = system.MenuListResp{}
+	list, err := system.GetMenuListAllByRoleIds(roleIds)
+	if err != nil {
 		return
 	}
 
 	rootList, err := system.GetMenuListByRoleIds(roleIds)
 	if err != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
 
@@ -97,10 +158,83 @@ func (this *SysRoleController) SysMenuList() {
 			firstMenus.Children = secondMenus
 		}
 	}
-	resp := new(system.MenuListResp)
 	resp.List = rootList
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
+
+	return
+}
+
+// getMenuListByRoleIds
+// @Description: 根据角色获取菜单
+// @author: Roc
+// @datetime 2025-06-17 10:01:53
+// @param roleIds string
+// @return resp system.MenuListResp
+// @return err error
+func getMenuListByGnToken(gnToken string) (resp system.MenuListResp, err error) {
+	resp = system.MenuListResp{}
+
+	menuList, err := services.GetMenuList(gnToken, 0)
+	if err != nil {
+		return
+	}
+
+	list := make([]*system.MenuList, 0)
+	rootList := make([]*system.MenuList, 0)
+	for _, v := range menuList {
+		if v.MenuType != 0 {
+			continue
+		}
+		var hidden bool
+		if v.Hidden == 1 {
+			hidden = true
+		}
+		tmpMenuList := &system.MenuList{
+			MenuId:    v.MenuId,
+			IsLevel:   v.IsLevel,
+			Name:      v.Name,
+			NameEn:    v.NameEn,
+			Path:      v.Path,
+			IconPath:  v.IconPath,
+			LevelPath: v.LevelPath,
+			Component: v.Component,
+			Hidden:    hidden,
+			ParentId:  v.ParentId,
+			Children:  make([]*system.MenuList, 0),
+		}
+		list = append(list, tmpMenuList)
+		if v.ParentId == 2000 {
+			rootList = append(rootList, tmpMenuList)
+		}
+	}
+	menuMap := make(map[int][]*system.MenuList)
+
+	for _, v := range list {
+		if menus, ok := menuMap[v.ParentId]; !ok {
+			menus = make([]*system.MenuList, 0)
+			menus = append(menus, v)
+			menuMap[v.ParentId] = menus
+		} else {
+			menus = append(menus, v)
+			menuMap[v.ParentId] = menus
+		}
+	}
+
+	//menuList := make([]*system.MenuList, 0)
+	for _, firstMenus := range rootList {
+		if secondMenus, ok := menuMap[firstMenus.MenuId]; ok {
+			for _, sencodMenu := range secondMenus {
+				if thirdMenus, ok := menuMap[sencodMenu.MenuId]; ok {
+					sencodMenu.Children = thirdMenus
+				} else {
+					thirdMenuList := make([]*system.MenuList, 0)
+					sencodMenu.Children = thirdMenuList
+				}
+			}
+
+			firstMenus.Children = secondMenus
+		}
+	}
+	resp.List = rootList
+
+	return
 }

+ 16 - 0
models/data_manage/chart_info_share.go

@@ -199,6 +199,22 @@ func (m ChartInfoShare) GetAllUserIdListByChartInfoIdAndNoShareType(chartInfoId
 	return
 }
 
+// GetAllUserIdListByChartInfoIdAndShareType
+// @Description: 根据图表id和共享类型,获取所有用户id
+// @author: Roc
+// @receiver m
+// @datetime 2024-12-27 15:33:16
+// @param chartInfoId int
+// @param shareType int8
+// @return list []int
+// @return err error
+func (m ChartInfoShare) GetAllUserIdListByChartInfoIdAndShareType(chartInfoId int, shareType int8) (list []int, err error) {
+	sql := `SELECT a.sys_user_id  FROM chart_info_share AS a 
+	  WHERE 1=1 AND a.chart_info_id = ? AND a.share_type = ? GROUP BY a.sys_user_id `
+	err = global.DmSQL["data"].Raw(sql, chartInfoId, shareType).Scan(&list).Error
+	return
+}
+
 // GetAllEditSharedChartInfoIdListByReceivedUserId
 // @Description: 获取所有我收到的共享的、可以编辑的图表id列表
 // @author: Roc

+ 9 - 0
routers/commentsRouter.go

@@ -8620,6 +8620,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta_gn/eta_api/controllers:SysRoleController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers:SysRoleController"],
+        beego.ControllerComments{
+            Method: "TopMenuList",
+            Router: `/menu_top/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta_gn/eta_api/controllers:SysRoleController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers:SysRoleController"],
         beego.ControllerComments{
             Method: "Add",

+ 1 - 0
services/data/chart_info.go

@@ -66,6 +66,7 @@ func CheckOpChartPermission(sysUser *system.Admin, createUserId int, haveOperaAu
 	if ok == false && sysUser.ChartPermission == 1 {
 		ok = true
 	}
+
 	return
 }
 

+ 26 - 0
services/data/chart_info_share.go

@@ -2,6 +2,7 @@ package data
 
 import (
 	"eta_gn/eta_api/models/data_manage"
+	"eta_gn/eta_api/utils"
 	"strconv"
 	"strings"
 )
@@ -187,3 +188,28 @@ func GetAllEditSharedChartInfoIdMapByReceivedUserIdAndChartInfoIdList(userId int
 
 	return
 }
+
+// CheckChartInfoEditPermission
+// @Description: 检测图表是否有编辑权限
+// @author: Roc
+// @datetime 2025-06-23 10:57:05
+// @param chartInfoId int
+// @param userId int
+// @return isOk bool
+// @return err error
+func CheckChartInfoEditPermission(chartInfoId int, userId int) (isOk bool, err error) {
+	// 共享列表
+	obj := data_manage.ChartInfoShare{}
+	shareUserIdList, err := obj.GetAllUserIdListByChartInfoIdAndShareType(chartInfoId, utils.ShareTypeEdit)
+	if err != nil {
+		return
+	}
+	for _, shareUserId := range shareUserIdList {
+		if shareUserId == userId {
+			isOk = true
+			break
+		}
+	}
+
+	return
+}

+ 66 - 8
services/system.go

@@ -170,13 +170,13 @@ func GetMenuList(token string, roleId int) (items []*system.SysMenu, err error)
 
 	// 先从缓存里面获取,如果取不到,那么再去调用接口
 	key := fmt.Sprintf("%s%s", utils.CACHE_USER_MENU, utils.MD5(token))
-	//menuJsonStr, tmpErr := utils.Rc.RedisString(key)
-	//if tmpErr == nil && menuJsonStr != `` {
-	//	err = json.Unmarshal([]byte(menuJsonStr), &items)
-	//	if err == nil {
-	//		return
-	//	}
-	//}
+	menuJsonStr, tmpErr := utils.Rc.RedisString(key)
+	if tmpErr == nil && menuJsonStr != `` {
+		err = json.Unmarshal([]byte(menuJsonStr), &items)
+		if err == nil {
+			return
+		}
+	}
 
 	resp, err := third.GetUserInfo(token)
 	if err != nil {
@@ -185,7 +185,6 @@ func GetMenuList(token string, roleId int) (items []*system.SysMenu, err error)
 	}
 
 	if resp.Info.Resource != nil && len(resp.Info.Resource) > 0 {
-
 		for _, v := range resp.Info.Resource {
 			var nameEn, path, iconPath, component, levelPath, buttonCode, api string
 			if v.NameEn != nil {
@@ -244,3 +243,62 @@ func GetMenuList(token string, roleId int) (items []*system.SysMenu, err error)
 
 	return
 }
+
+type TopMenuItemResp struct {
+	OrderNum int
+	MenuId   int
+	MenuName string
+	IsFrame  int    ` description:"1左边,0右边"`
+	Path     string `description:"跳转地址"`
+}
+
+// GetTopMenuList
+// @Description: 获取顶部的菜单
+// @author: Roc
+// @datetime 2025-06-19 17:11:31
+// @param userId int
+// @return items []TopMenuItemResp
+// @return err error
+func GetTopMenuList(token string) (items []TopMenuItemResp, err error) {
+	items = make([]TopMenuItemResp, 0)
+	if utils.GnSciUserApiUrl == `` || token == `` {
+		return
+	}
+
+	// 先从缓存里面获取,如果取不到,那么再去调用接口
+	key := fmt.Sprintf("%s%d", utils.CACHE_SCI_TOP_MENU, utils.MD5(token))
+	menuJsonStr, tmpErr := utils.Rc.RedisString(key)
+	if tmpErr == nil && menuJsonStr != `` {
+		err = json.Unmarshal([]byte(menuJsonStr), &items)
+		if err == nil {
+			return
+		}
+	}
+
+	resp, err := third.GetTopMenuInfo(token)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+
+	if resp.Info != nil && len(resp.Info) > 0 {
+		for _, v := range resp.Info {
+
+			items = append(items, TopMenuItemResp{
+				MenuId:   v.MenuId,
+				MenuName: v.MenuName,
+				IsFrame:  v.IsFrame,
+				Path:     v.Path,
+				OrderNum: v.OrderNum,
+			})
+		}
+	}
+
+	// 30分钟缓存,避免多次调用接口获取数据
+	menuJsonByte, tmpErr := json.Marshal(items)
+	if tmpErr == nil {
+		_ = utils.Rc.Put(key, menuJsonByte, 30*time.Minute)
+	}
+
+	return
+}

+ 48 - 0
services/third/gn.go

@@ -86,6 +86,54 @@ func GetUserInfo(token string) (resp *UserInfoResp, err error) {
 	return
 }
 
+type TopMenuResp struct {
+	SciUserBaseInfoResp
+
+	Info []TopMenuItemResp `json:"info"`
+}
+
+type TopMenuItemResp struct {
+	Path     string `json:"path" description:"跳转地址"`
+	MenuName string `json:"menu_name"`
+	OrderNum int    `json:"order_num"`
+	MenuId   int    `json:"menu_id"`
+	IsFrame  int    `json:"is_frame" description:"1左边,0右边"`
+}
+
+type T struct {
+	Code int    `json:"code"`
+	Msg  string `json:"msg"`
+	Info []struct {
+		Path     string `json:"path"`
+		MenuName string `json:"menu_name"`
+		OrderNum int    `json:"order_num"`
+		MenuId   int    `json:"menu_id"`
+		IsFrame  int    `json:"is_frame"`
+	} `json:"info"`
+}
+
+// GetTopMenuInfo
+// @Description: 获取用户信息
+// @author: Roc
+// @datetime 2025-06-09 17:01:43
+// @param token string
+// @return resp *UserInfoResp
+// @return err error
+func GetTopMenuInfo(token string) (resp *TopMenuResp, err error) {
+	urlPath := `index/getRootMenu?token=` + token
+	result, err := HttpUserGet(urlPath)
+	if err != nil {
+		return
+	}
+	//  解析响应结果
+	err = json.Unmarshal(result, &resp)
+	if err != nil {
+		return
+	}
+
+	return
+}
+
 // HttpUserGet
 // @Description: get请求
 // @author: Roc

+ 4 - 3
utils/constants.go

@@ -218,8 +218,9 @@ const (
 	CACHE_KEY_REPLACE_EDB                   = "eta:replace_edb"                   //系统用户操作日志队列
 	CACHE_KEY_BI_DASHBOARD_PREPARE_RESOURCE = "eta:bi_dashboard:prepare_resource" // 准备引用到看板的知识资源
 	CACHE_KEY_DATA_COLLECT_HANDLER          = "eta:data:collect:handler"          // 资产收藏处理队列
-	CACHE_REPORT_ICE_MSG_PUSH               = "eta:report:ice_msg:push:"           // 研报消息推送缓存
+	CACHE_REPORT_ICE_MSG_PUSH               = "eta:report:ice_msg:push:"          // 研报消息推送缓存
 	CACHE_USER_MENU                         = "eta:user:menu:"                    // 用户菜单权限
+	CACHE_SCI_TOP_MENU                      = "eta:sci:top:menu:"                 // 顶部菜单
 )
 
 // 模板消息推送类型
@@ -480,8 +481,8 @@ const (
 )
 
 const (
-	ShareTypeRead = 1 // 仅查看
-	ShareTypeEdit = 2 // 可编辑
+	ShareTypeRead int8 = 1 // 仅查看
+	ShareTypeEdit int8 = 2 // 可编辑
 )
 
 const (