ziwen 2 years ago
parent
commit
649843c017

+ 23 - 0
controller/company/company_permission.go

@@ -50,5 +50,28 @@ func GetBindFiccPermissions(c *gin.Context) {
 		return
 	}
 
+	response.OkData("获取成功", list, c)
+}
+
+// GetCommoditiesBindFiccPermissions 大宗商品展示有权限的品种列表,无权限的隐藏
+// @Tags 客户模块
+// @Summary  获取FICC品种权限列表
+// @Description 获取FICC品种权限列表
+// @Security ApiKeyAuth
+// @Param Authorization	header string true "Bearer 31a165baebe6dec616b1f8f3207b4273"
+// @Accept  json
+// @Product json
+// @Success 200 {object} []company.FiccPermissionList
+// @failure 400 {string} string "获取失败"
+// @Router /company/permission/commodities [get]
+func GetCommoditiesBindFiccPermissions(c *gin.Context) {
+	userinfo := userService.GetInfoByClaims(c)
+
+	list, err := company.GetCommoditiesBindFiccPermissions(userinfo)
+	if err !=nil {
+		response.Fail(err.Error(), c)
+		return
+	}
+
 	response.OkData("获取成功", list, c)
 }

+ 1 - 0
routers/company.go

@@ -12,5 +12,6 @@ func InitCompany(r *gin.Engine) {
 		rGroup.GET("/getPermissionList", company.GetHomeFiccPermissions)
 		rGroup.GET("/permission/tree", company.GetPermissionTree)
 		rGroup.GET("/permission/bind", company.GetBindFiccPermissions)
+		rGroup.GET("/permission/commodities", company.GetCommoditiesBindFiccPermissions)
 	}
 }

+ 105 - 0
services/company/permission.go

@@ -1001,3 +1001,108 @@ func GetBindFiccPermissions(user user.UserInfo) (ret response.BindPermissionFicc
 	return
 }
 
+func GetCommoditiesBindFiccPermissions(user user.UserInfo) (ret response.BindPermissionFiccResp, err error) {
+	var errMsg string
+	defer func() {
+		if err != nil {
+			global.LOG.Critical(fmt.Sprintf("GetHomeFiccPermissions: userId=%d, err:%s, errMsg:%s", user.UserID, err.Error(), errMsg))
+		}
+	}()
+	ret.PermissionList = make([]*response.BindPermissionFiccItem, 0)
+	// 判断用户状态是否是正常和永续
+	var productAuthOk bool
+	companyProduct, err := company_product.GetByCompany2ProductId(user.CompanyID, 1)
+	if err == utils.ErrNoRow {
+		err = nil
+		return
+	}
+	if err != nil {
+		errMsg = err.Error()
+		err = errors.New("查询用户购买产品出错")
+		return
+	}
+	if companyProduct != nil {
+		// 无FICC权限的客户不可见
+		if companyProduct.CompanyProductID > 0 {
+			// 已购或者试用用户可见
+			if strings.Contains("永续,正式", companyProduct.Status) || (companyProduct.Status == "试用" && companyProduct.IsSuspend != 1) {
+				productAuthOk = true
+			}
+		}
+	}
+	if !productAuthOk {
+		return
+	}
+	validPermissionList, err := GetValidPermissionByCompany2ProductId(user.CompanyID, 1)
+	if err != nil {
+		return
+	}
+	var validPermissionIds []int
+	for _, item := range validPermissionList {
+		validPermissionIds = append(validPermissionIds, item.ChartPermissionID)
+	}
+	permissionList, err := chart_permission.GetFiccListExceptTacticByProductIdOrderSort()
+	if err != nil {
+		return
+	}
+	permissionMap := make(map[uint64]bool)
+	permissionFirstMap := make(map[string]*response.BindPermissionFiccItem)
+
+	//查询首页展示的图标
+	permissionFirstList, err := chart_permission_first.GetIndexShowListOrderSort()
+	if err != nil {
+		return
+	}
+	for _, v := range permissionFirstList {
+		permissionFirstMap[v.ClassifyName] = &response.BindPermissionFiccItem{
+			Id:          int(v.Id),
+			ClassifyName: v.YbIndexName,
+		}
+	}
+
+	for _, v := range permissionList {
+		permissionMap[v.ChartPermissionID] = false
+		for _, myPerId := range validPermissionIds {
+			if int(v.ChartPermissionID) == myPerId {
+				permissionMap[v.ChartPermissionID] = true
+				break
+			}
+		}
+	}
+
+	for _, v := range permissionList {
+		temp := new(response.BindPermissionFiccSecondItem)
+		temp.ChartPermissionID = int(v.ChartPermissionID)
+		temp.ChartPermissionName = v.PermissionName
+		if _, ok := permissionFirstMap[v.ClassifyName]; ok && permissionMap[v.ChartPermissionID] {
+			permissionFirstMap[v.ClassifyName].List = append(permissionFirstMap[v.ClassifyName].List, temp)
+		}
+	}
+
+	var list []*response.BindPermissionFiccItem
+LOOP:
+	for _, v := range permissionFirstList {
+		item := permissionFirstMap[v.ClassifyName]
+		if len(item.List) > 0 {
+			temp := new(response.BindPermissionFiccItem)
+			temp.Id = item.Id
+			temp.ClassifyName = item.ClassifyName
+			temp.List = item.List
+			//大宗商品分类内合并PTA&MEG
+			if temp.ClassifyName == "化工" {
+				for _, secondItem := range temp.List {
+					if secondItem.ChartPermissionName == "PTA"{
+						secondItem.ChartPermissionName = "PTA&MEG"
+					}
+					if secondItem.ChartPermissionName == "MEG" {
+						continue LOOP
+					}
+				}
+			}
+			list = append(list, temp)
+		}
+	}
+
+	ret.PermissionList = list
+	return
+}

+ 33 - 2
services/pc/classify.go

@@ -5,9 +5,12 @@ import (
 	"fmt"
 	"hongze/hongze_yb/global"
 	"hongze/hongze_yb/models/response/pc"
+	"hongze/hongze_yb/models/tables/company_product"
 	"hongze/hongze_yb/models/tables/rddp/classify"
 	"hongze/hongze_yb/services/user"
+	"hongze/hongze_yb/utils"
 	"sort"
+	"strings"
 )
 
 // GetClassifyFirstList 获取一级分类列表
@@ -54,7 +57,7 @@ func GetClassifyFirstList(user user.UserInfo) (list pc.ClassifyFirstList, err er
 		if temp.Sort == 0 {
 			continue
 		}
-		// ShowType展示类型:1-列表 2-专栏; RedirectType跳转类型:1-专栏列表 2-报告列表 3-专栏详情
+		// ShowType展示类型:1-列表 2-专栏; RedirectType跳转类型:1-专栏列表 2-报告列表 3-专栏详情 4-品种类型列表
 		temp.RedirectType = 2
 		if item.ShowType == 2 {
 			temp.RedirectType = 1
@@ -65,10 +68,38 @@ func GetClassifyFirstList(user user.UserInfo) (list pc.ClassifyFirstList, err er
 				temp.ClassifyNameSecond = classifyChild[0].ClassifyName
 				temp.RedirectType = 3
 			}
+		} else if item.ShowType == 3 {
+			temp.RedirectType = 4
 		}
 		list = append(list, temp)
 	}
-	for _, item := range list {
+	// 判断用户状态是否是正常和永续
+	var productAuthOk bool
+	companyProduct, err := company_product.GetByCompany2ProductId(user.CompanyID, 1)
+	if err == utils.ErrNoRow {
+		err = nil
+		return
+	}
+	if err != nil {
+		errMsg = err.Error()
+		err = errors.New("查询用户购买产品出错")
+		return
+	}
+	if companyProduct != nil {
+		// 无FICC权限的客户不可见
+		if companyProduct.CompanyProductID > 0 {
+			// 已购或者试用用户可见
+			if strings.Contains("永续,正式", companyProduct.Status) || (companyProduct.Status == "试用" && companyProduct.IsSuspend != 1) {
+				productAuthOk = true
+			}
+		}
+	}
+
+	for i, item := range list {
+		//无权限用户关闭大宗商品入口
+		if item.ClassifyNameFirst == "大宗商品" && !productAuthOk{
+			list = append(list[:i], list[i+1:]...)
+		}
 		for _, report := range reportList {
 			if report.ClassifyNameFirst == item.ClassifyNameFirst {
 				item.Latest = report.Stage

+ 29 - 0
services/report/classify.go

@@ -351,6 +351,35 @@ func GetClassifyFirstList(user user.UserInfo) (list response.ClassifyFirstList,
 		}
 		list = append(list, temp)
 	}
+	// 判断用户状态是否是正常和永续
+	var productAuthOk bool
+	companyProduct, err := company_product.GetByCompany2ProductId(user.CompanyID, 1)
+	if err == utils.ErrNoRow {
+		err = nil
+		return
+	}
+	if err != nil {
+		errMsg = err.Error()
+		err = errors.New("查询用户购买产品出错")
+		return
+	}
+	if companyProduct != nil {
+		// 无FICC权限的客户不可见
+		if companyProduct.CompanyProductID > 0 {
+			// 已购或者试用用户可见
+			if strings.Contains("永续,正式", companyProduct.Status) || (companyProduct.Status == "试用" && companyProduct.IsSuspend != 1) {
+				productAuthOk = true
+			}
+		}
+	}
+
+	for i, item := range list {
+		//无权限用户关闭大宗商品入口
+		if item.ClassifyNameFirst == "大宗商品" && !productAuthOk {
+			list = append(list[:i], list[i+1:]...)
+		}
+	}
+
 	if len(list) > 0 {
 		sort.Sort(list)
 	}