Roc 18 цаг өмнө
parent
commit
eb693a7170

+ 32 - 0
controllers/sys_menu.go

@@ -79,6 +79,38 @@ func (this *SysRoleController) SysMenuList() {
 	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()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
 // getMenuListByRoleIds
 // @Description: 根据角色获取菜单
 // @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",

+ 59 - 0
services/system.go

@@ -201,3 +201,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

+ 2 - 1
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:"                 // 顶部菜单
 )
 
 // 模板消息推送类型