Prechádzať zdrojové kódy

增加“获取交易端菜单”接口

zhou.xiaoning 4 rokov pred
rodič
commit
22e3bafb7f

+ 1 - 0
config/mobile_menu.json

@@ -0,0 +1 @@
+[]

+ 298 - 0
config/pc_menu.json

@@ -0,0 +1,298 @@
+[
+    {
+        "code": "market",
+        "title": "市场",
+        "sort": 1,
+        "type": 1,
+        "rulekey": "",
+        "isshow": true,
+        "children": [
+            {
+                "code": "futures",
+                "title": "期货",
+                "sort": 1,
+                "type": 1,
+                "rulekey": "",
+                "isshow": true,
+                "children": [
+                    {
+                        "code": "dominant_contract",
+                        "title": "主力",
+                        "sort": 1,
+                        "type": 1,
+                        "rulekey": "",
+                        "isshow": true,
+                        "children": []
+                    },
+                    {
+                        "code": "night_plate",
+                        "title": "夜盘",
+                        "sort": 2,
+                        "type": 1,
+                        "rulekey": "",
+                        "isshow": true,
+                        "children": []
+                    },
+                    {
+                        "code": "main_contract",
+                        "title": "主连",
+                        "sort": 3,
+                        "type": 1,
+                        "rulekey": "",
+                        "isshow": true,
+                        "children": []
+                    },
+                    {
+                        "code": "position",
+                        "title": "持仓",
+                        "sort": 21,
+                        "type": 1,
+                        "rulekey": "",
+                        "isshow": true,
+                        "children": [
+                            {
+                                "code": "open",
+                                "title": "开仓",
+                                "sort": 1,
+                                "type": 2,
+                                "rulekey": "",
+                                "isshow": true,
+                                "children": []
+                            },
+                            {
+                                "code": "close",
+                                "title": "平仓",
+                                "sort": 2,
+                                "type": 2,
+                                "rulekey": "",
+                                "isshow": true,
+                                "children": []
+                            }
+                        ]
+                    },
+                    {
+                        "code": "orderdetail",
+                        "title": "委托",
+                        "sort": 22,
+                        "type": 1,
+                        "rulekey": "",
+                        "isshow": true,
+                        "children": []
+                    },
+                    {
+                        "code": "tradedetail",
+                        "title": "成交",
+                        "sort": 23,
+                        "type": 1,
+                        "rulekey": "",
+                        "isshow": true,
+                        "children": []
+                    },
+                    {
+                        "code": "closedetail",
+                        "title": "平仓",
+                        "sort": 24,
+                        "type": 1,
+                        "rulekey": "",
+                        "isshow": true,
+                        "children": []
+                    }
+                ]
+            }
+        ]
+    },
+    {
+        "code": "info",
+        "title": "信息",
+        "sort": 2,
+        "type": 1,
+        "rulekey": "",
+        "isshow": true,
+        "children": [
+            {
+                "code": "custom_info",
+                "title": "客户资料",
+                "sort": 1,
+                "type": 1,
+                "rulekey": "",
+                "isshow": true,
+                "children": []
+            },
+            {
+                "code": "goods_info",
+                "title": "商品信息",
+                "sort": 2,
+                "type": 1,
+                "rulekey": "",
+                "isshow": true,
+                "children": []
+            },
+            {
+                "code": "spot_contract",
+                "title": "现货合同",
+                "sort": 3,
+                "type": 1,
+                "rulekey": "",
+                "isshow": true,
+                "children": []
+            },
+            {
+                "code": "warehouse_info",
+                "title": "仓库信息",
+                "sort": 4,
+                "type": 1,
+                "rulekey": "",
+                "isshow": true,
+                "children": []
+            }
+        ]
+    },
+    {
+        "code": "business",
+        "title": "业务",
+        "sort": 3,
+        "type": 1,
+        "rulekey": "",
+        "isshow": true,
+        "children": [
+            {
+                "code": "purchase",
+                "title": "采购",
+                "sort": 1,
+                "type": 1,
+                "rulekey": "",
+                "isshow": true,
+                "children": []
+            },
+            {
+                "code": "sell",
+                "title": "销售",
+                "sort": 2,
+                "type": 1,
+                "rulekey": "",
+                "isshow": true,
+                "children": []
+            },
+            {
+                "code": "exposure",
+                "title": "敞口",
+                "sort": 3,
+                "type": 1,
+                "rulekey": "",
+                "isshow": true,
+                "children": []
+            },
+            {
+                "code": "plan",
+                "title": "计划",
+                "sort": 4,
+                "type": 1,
+                "rulekey": "",
+                "isshow": true,
+                "children": []
+            }
+        ]
+    },
+    {
+        "code": "manage",
+        "title": "管理",
+        "sort": 4,
+        "type": 1,
+        "rulekey": "",
+        "isshow": true,
+        "children": [
+            {
+                "code": "business_review",
+                "title": "业务审核",
+                "sort": 1,
+                "type": 1,
+                "rulekey": "",
+                "isshow": true,
+                "children": []
+            },
+            {
+                "code": "finance_review",
+                "title": "财务审核",
+                "sort": 2,
+                "type": 1,
+                "rulekey": "",
+                "isshow": true,
+                "children": []
+            },
+            {
+                "code": "inventory_review",
+                "title": "库存审核",
+                "sort": 3,
+                "type": 1,
+                "rulekey": "",
+                "isshow": true,
+                "children": []
+            }
+        ]
+    },
+    {
+        "code": "search",
+        "title": "查询",
+        "sort": 5,
+        "type": 1,
+        "rulekey": "",
+        "isshow": true,
+        "children": [
+            {
+                "code": "inventory",
+                "title": "库存管理",
+                "sort": 1,
+                "type": 1,
+                "rulekey": "",
+                "isshow": true,
+                "children": []
+            }
+        ]
+    },
+    {
+        "code": "report",
+        "title": "报表",
+        "sort": 6,
+        "type": 1,
+        "rulekey": "",
+        "isshow": true,
+        "children": [
+            {
+                "code": "finance_report",
+                "title": "财务报表",
+                "sort": 1,
+                "type": 1,
+                "rulekey": "",
+                "isshow": true,
+                "children": []
+            },
+            {
+                "code": "exposure_report",
+                "title": "敞口报表",
+                "sort": 2,
+                "type": 1,
+                "rulekey": "",
+                "isshow": true,
+                "children": []
+            },
+            {
+                "code": "spot_report",
+                "title": "现货报表",
+                "sort": 3,
+                "type": 1,
+                "rulekey": "",
+                "isshow": true,
+                "children": []
+            },
+            {
+                "code": "inventory_report",
+                "title": "库存报表",
+                "sort": 4,
+                "type": 1,
+                "rulekey": "",
+                "isshow": true,
+                "children": []
+            }
+        ]
+    }
+]

+ 119 - 0
controllers/common/menu.go

@@ -0,0 +1,119 @@
+package common
+
+import (
+	"encoding/json"
+	"fmt"
+	"mtp2_if/global/app"
+	"mtp2_if/global/e"
+	"mtp2_if/logger"
+	"mtp2_if/models"
+	"net/http"
+	"os"
+
+	"github.com/gin-gonic/gin"
+)
+
+// ClientMenu 客户端菜单
+type ClientMenu struct {
+	Code     string       `json:"code"`     // ID
+	Title    string       `json:"title"`    // 标题
+	Sort     int          `json:"sort"`     // 排序
+	Type     int          `json:"type"`     // 类型,1:菜单 2:按钮
+	RuleKey  string       `json:"rulekey"`  // 对应权限主键,对应FUNCMENULIST表RESOURCECODE
+	IsShow   bool         `json:"isshow"`   // 是否显示
+	Children []ClientMenu `json:"children"` // 子菜单列表
+}
+
+// GetClientMenusReq 获取PC交易端菜单请求参数
+type GetClientMenusReq struct {
+	LoginID    int `form:"loginID"`
+	ClientType int `form:"clientType"`
+}
+
+// GetClientMenus 获取交易端菜单
+// @Summary 获取交易端菜单
+// @Produce json
+// @Security ApiKeyAuth
+// @Param loginID query int true "登录账号"
+// @Param clientType query int false "终端类型,0:PC 1:Mobile"
+// @Success 200 {array} ClientMenu
+// @Failure 500 {object} app.Response
+// @Router /Common/GetClientMenus [get]
+// @Tags 通用服务
+func GetClientMenus(c *gin.Context) {
+	appG := app.Gin{C: c}
+
+	// 获取请求参数
+	var req GetClientMenusReq
+	if err := c.ShouldBind(&req); err != nil {
+		logger.GetLogger().Errorf("GetClientMenus parse query req: %v", err)
+		appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
+		return
+	}
+
+	// 获取菜单数据
+	jsonFile := "pc_menu.json"
+	if req.ClientType == 1 {
+		// Mobile
+		jsonFile = "mobile_menu.json"
+	}
+
+	// 读取json文件
+	filePtr, err := os.Open(fmt.Sprintf("config/%s", jsonFile))
+	if err != nil {
+		// 读取文件失败
+		logger.GetLogger().Errorf("GetClientMenus failed: %s", err.Error())
+		appG.Response(http.StatusBadRequest, e.ERROR_CFG_FILE_FAIL, nil)
+		return
+	}
+	defer filePtr.Close()
+
+	var datas []interface{}
+	// 创建Json编码器
+	decoder := json.NewDecoder(filePtr)
+	if err = decoder.Decode(&datas); err != nil {
+		// Json解码失败
+		logger.GetLogger().Errorf("GetClientMenus failed: %s", err.Error())
+		appG.Response(http.StatusBadRequest, e.ERROR_CFG_JSON_FAIL, nil)
+		return
+	}
+
+	rst := createMenu(datas, req.LoginID)
+
+	// 查询成功
+	logger.GetLogger().Debugln("GetPCMenus successed: %v", rst)
+	appG.Response(http.StatusOK, e.SUCCESS, rst)
+}
+
+// createMenu 创建菜单数据
+func createMenu(datas []interface{}, loginID int) []ClientMenu {
+	clientMenus := make([]ClientMenu, 0)
+	for _, v := range datas {
+		data := v.(map[string]interface{})
+		if data["isshow"].(bool) {
+			rulekey := data["rulekey"].(string)
+			if len(rulekey) != 0 {
+				// 判断是否有权限
+				funcMenuList, err := models.GetRoleFuncMenuLists(loginID, rulekey)
+				if err != nil {
+					continue
+				}
+				if len(funcMenuList) == 0 {
+					continue
+				}
+			}
+
+			clientMenus = append(clientMenus, ClientMenu{
+				Code:     data["code"].(string),
+				Title:    data["title"].(string),
+				Sort:     int(data["sort"].(float64)),
+				Type:     int(data["type"].(float64)),
+				RuleKey:  data["rulekey"].(string),
+				IsShow:   data["isshow"].(bool),
+				Children: createMenu(data["children"].([]interface{}), loginID), // 这里为什么可以这样转?
+			})
+		}
+	}
+
+	return clientMenus
+}

+ 0 - 36
controllers/common/table.go

@@ -63,42 +63,6 @@ func QueryTraderMenu(c *gin.Context) {
 	appG.Response(http.StatusOK, e.SUCCESS, queryTraderMenuRsp)
 }
 
-// GetPCMenusReq 获取PC交易端菜单请求参数
-type GetPCMenusReq struct {
-	ResourceCode string `form:"resourceCode"`
-	ParentCode   string `form:"parentCode"`
-}
-
-// GetPCMenus 获取PC交易端菜单
-// @Summary 获取PC交易端菜单
-// @Produce json
-// @Param resourceCode query string false "资源代码"
-// @Param parentCode query string false "上级资源代码"
-// @Success 200 {array} models.Funcmenulist
-// @Failure 500 {object} app.Response
-// @Router /Common/GetPCMenus [get]
-// @Tags 通用服务
-func GetPCMenus(c *gin.Context) {
-	appG := app.Gin{C: c}
-
-	// 获取请求参数
-	var req GetPCMenusReq
-	appG.C.ShouldBindQuery(&req)
-
-	// 获取功能菜单
-	var f models.Funcmenulist
-	datas, err := f.GetPCMenuList(req.ResourceCode, req.ParentCode)
-	if err != nil {
-		logger.GetLogger().Errorf("GetPCMenus failed: %s", err.Error())
-		appG.Response(http.StatusBadRequest, e.ERROR_QUERY_OPERATIONMENU_FAIL, nil)
-		return
-	}
-
-	// 查询成功
-	logger.GetLogger().Debugln("GetPCMenus successed: %v", datas)
-	appG.Response(http.StatusOK, e.SUCCESS, datas)
-}
-
 // QueryTableDefineReq 查询交易端列表头信息请求参数
 type QueryTableDefineReq struct {
 	TableKey  string `form:"tableKey"`

+ 1 - 1
controllers/ermcp/qryUser.go

@@ -78,7 +78,7 @@ func GetErmcpRoleFuncMenuLists(c *gin.Context) {
 	}
 
 	// 获取数据
-	rst, err := models.GetErmcpRoleFuncMenuLists(req.LoginID)
+	rst, err := models.GetRoleFuncMenuLists(req.LoginID, "")
 	if err != nil {
 		// 查询失败
 		logger.GetLogger().Errorf("GetErmcpRolefuncMenu failed: %s", err.Error())

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 422 - 325
docs/docs.go


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 422 - 325
docs/swagger.json


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 3320 - 2942
docs/swagger.yaml


+ 19 - 0
models/common.go

@@ -759,3 +759,22 @@ func GetSystemParams() ([]Systemparam, error) {
 
 	return systemParams, nil
 }
+
+// GetRoleFuncMenuLists 获取终端权限
+func GetRoleFuncMenuLists(loginID int, resourceCode string) ([]Funcmenulist, error) {
+	funcMenuLists := make([]Funcmenulist, 0)
+
+	sql := fmt.Sprintf(`select F.* from FUNCMENULIST F where F.MENUTYPE = 3 
+						and 
+						F.RESOURCECODE in 
+						(select R.RESOURCECODE from ROLEFUNCMENU R 
+							inner join LOGINACCOUNT L on L.CLIENTROLEID = R.ROLEID where L.LOGINID = %d)`, loginID)
+	if len(resourceCode) != 0 {
+		sql += fmt.Sprintf(" and F.RESOURCECODE = '%s'", resourceCode)
+	}
+	if err := db.GetEngine().SQL(sql).Find(&funcMenuLists); err != nil {
+		return nil, err
+	}
+
+	return funcMenuLists, nil
+}

+ 0 - 13
models/ermcpUser.go

@@ -195,16 +195,3 @@ func (r *ErmcpUserModel) GetData(queryType int32) ([]ErmcpUserModel, error) {
 
 	return sData, nil
 }
-
-// GetErmcpRoleFuncMenuLists 获取企业风管终端权限
-func GetErmcpRoleFuncMenuLists(loginID int) ([]Funcmenulist, error) {
-	funcMenuLists := make([]Funcmenulist, 0)
-
-	sql := fmt.Sprintf(`select F.* from FUNCMENULIST F where F.MENUTYPE = 3 
-						and F.RESOURCECODE in (select R.RESOURCECODE from ROLEFUNCMENU R inner join LOGINACCOUNT L on L.CLIENTROLEID = R.ROLEID where L.LOGINID = %d)`, loginID)
-	if err := db.GetEngine().SQL(sql).Find(&funcMenuLists); err != nil {
-		return nil, err
-	}
-
-	return funcMenuLists, nil
-}

+ 2 - 2
routers/router.go

@@ -99,8 +99,6 @@ func InitRouter() *gin.Engine {
 	{
 		// 查询交易端菜单
 		commonR.GET("/QueryTraderMenu", common.QueryTraderMenu)
-		// 获取PC交易端菜单
-		commonR.GET("/GetPCMenus", common.GetPCMenus)
 		// 查询交易端列表头信息
 		commonR.GET("/QueryTableDefine", common.QueryTableDefine)
 		// 查询省市信息(不包括区)
@@ -119,6 +117,8 @@ func InitRouter() *gin.Engine {
 		commonR.Use(token.Auth()).GET("/QueryNotice", common.QueryNotice)
 		// 通知公告设置已读请求
 		commonR.Use(token.Auth()).POST("/NoticeReaded", common.NoticeReaded)
+		// 获取交易端菜单
+		commonR.Use(token.Auth()).GET("/GetClientMenus", common.GetClientMenus)
 	}
 	// ************************ 通用市场 ************************
 	marketR := apiR.Group("Market")

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov