Bläddra i källkod

增加系统配置接口

kobe6258 4 månader sedan
förälder
incheckning
8c16236004
2 ändrade filer med 81 tillägg och 59 borttagningar
  1. 45 37
      controllers/product.go
  2. 36 22
      services/product.go

+ 45 - 37
controllers/product.go

@@ -119,13 +119,13 @@ func (this *ProductController) UnSetProductList() {
 			defer wg.Done()
 			switch product.ProductType {
 			case "report":
-				product.RiskLevel, _, _ = services.GetRiskLevel("report", product.SourceId)
+				product.RiskLevel, _, product.PermissionNames, _ = services.GetRiskLevel("report", product.SourceId)
 				product.ProductType = "报告"
 			case "video":
-				product.RiskLevel, _, _ = services.GetRiskLevel("media", product.SourceId)
+				product.RiskLevel, _, product.PermissionNames, _ = services.GetRiskLevel("media", product.SourceId)
 				product.ProductType = "视频"
 			case "audio":
-				product.RiskLevel, _, _ = services.GetRiskLevel("media", product.SourceId)
+				product.RiskLevel, _, product.PermissionNames, _ = services.GetRiskLevel("media", product.SourceId)
 				product.ProductType = "音频"
 			}
 		}(product)
@@ -198,16 +198,16 @@ func (this *ProductController) AddProduct() {
 	}
 	switch req.Type {
 	case "report":
-		_, product.Title, err = services.GetRiskLevel("report", req.SourceId)
+		_, product.Title, _, err = services.GetRiskLevel("report", req.SourceId)
 		product.IsPermanent = true
 	case "audio":
-		_, product.Title, err = services.GetRiskLevel("audio", req.SourceId)
+		_, product.Title, _, err = services.GetRiskLevel("audio", req.SourceId)
 		product.IsPermanent = true
 	case "video":
-		_, product.Title, err = services.GetRiskLevel("video", req.SourceId)
+		_, product.Title, _, err = services.GetRiskLevel("video", req.SourceId)
 		product.IsPermanent = true
 	case "package":
-		_, permissionName, err = services.GetRiskLevel("package", req.SourceId)
+		_, permissionName, _, err = services.GetRiskLevel("package", req.SourceId)
 	default:
 		br.Msg = "产品类型错误"
 		br.ErrMsg = "获取产品列表失败,Err:产品类型错误"
@@ -489,34 +489,42 @@ func (this *ProductController) ProductList() {
 		return
 	}
 	var ListView []*services.ProductView
+	var wg sync.WaitGroup
+	wg.Add(len(List))
 	for _, product := range List {
-		view := &services.ProductView{
-			Id:            product.Id,
-			ProductName:   product.Title,
-			ProductType:   CNProductMap[product.Type],
-			PublishedTime: product.CreatedTime.Format(time.DateTime),
-			Price:         fmt.Sprintf("¥%s", product.Price),
-			SaleStatus:    CNSaleStatusMap[product.SaleStatus],
-			CoverSrc:      product.CoverUrl,
-			ValidDays:     product.ValidDays,
-			Creator:       product.Creator,
-			IsPermanent:   product.IsPermanent,
-			Description:   product.Description,
-			SourceId:      product.SourceId,
-		}
-		if product.CoverUrl == "" && product.CoverSrc > 0 {
-			image, imageErr := models.GetImageById(product.CoverSrc)
-			if err != nil {
-				utils.FileLog.Warn("获取图片资源失败,err:%s,imageId:%d", imageErr, product.CoverSrc)
-			} else {
-				view.CoverSrc = image.SrcUrl
+		go func(product *models.MerchantProduct) {
+			defer wg.Done()
+			view := &services.ProductView{
+				Id:            product.Id,
+				ProductName:   product.Title,
+				ProductType:   CNProductMap[product.Type],
+				PublishedTime: product.CreatedTime.Format(time.DateTime),
+				Price:         fmt.Sprintf("¥%s", product.Price),
+				SaleStatus:    CNSaleStatusMap[product.SaleStatus],
+				CoverSrc:      product.CoverUrl,
+				ValidDays:     product.ValidDays,
+				Creator:       product.Creator,
+				IsPermanent:   product.IsPermanent,
+				Description:   product.Description,
+				SourceId:      product.SourceId,
 			}
-		}
-		if !product.UpdatedTime.IsZero() {
-			view.UpdatedTime = product.UpdatedTime.Format(time.DateTime)
-		}
-		ListView = append(ListView, view)
+			if product.CoverUrl == "" && product.CoverSrc > 0 {
+				image, imageErr := models.GetImageById(product.CoverSrc)
+				if err != nil {
+					utils.FileLog.Warn("获取图片资源失败,err:%s,imageId:%d", imageErr, product.CoverSrc)
+				} else {
+					view.CoverSrc = image.SrcUrl
+				}
+			}
+			if !product.UpdatedTime.IsZero() {
+				view.UpdatedTime = product.UpdatedTime.Format(time.DateTime)
+			}
+			view.RiskLevel, _, _, _ = services.GetRiskLevel(string(product.Type), product.Id)
+			ListView = append(ListView, view)
+		}(product)
+
 	}
+	wg.Wait()
 	page := paging.GetPaging(currentIndex, pageSize, total)
 	resp := new(response.ProductListResp)
 	resp.List = ListView
@@ -551,7 +559,7 @@ func (this *ProductController) ProductRisk() {
 		br.ErrMsg = "无效的产品ID:" + strconv.Itoa(SourceId)
 		return
 	}
-	riskLevel, _, err := services.GetRiskLevel(ProductType, SourceId)
+	riskLevel, _, _, err := services.GetRiskLevel(ProductType, SourceId)
 	if err != nil {
 		utils.FileLog.Error("查询产品风险等级失败", err.Error)
 		return
@@ -623,13 +631,13 @@ func (this *ProductController) EditProduct() {
 	}
 	switch req.Type {
 	case "report":
-		_, product.Title, err = services.GetRiskLevel("report", req.SourceId)
+		_, product.Title, _, err = services.GetRiskLevel("report", req.SourceId)
 	case "audio":
-		_, product.Title, err = services.GetRiskLevel("audio", req.SourceId)
+		_, product.Title, _, err = services.GetRiskLevel("audio", req.SourceId)
 	case "video":
-		_, product.Title, err = services.GetRiskLevel("video", req.SourceId)
+		_, product.Title, _, err = services.GetRiskLevel("video", req.SourceId)
 	case "package":
-		_, _, err = services.GetRiskLevel("package", req.SourceId)
+		_, _, _, err = services.GetRiskLevel("package", req.SourceId)
 	default:
 		br.Msg = "产品类型错误"
 		br.ErrMsg = "获取产品列表失败,Err:产品类型错误"

+ 36 - 22
services/product.go

@@ -6,6 +6,7 @@ import (
 	"eta/eta_mini_crm_ht/utils"
 	"fmt"
 	"strconv"
+	"strings"
 	"time"
 )
 
@@ -159,23 +160,24 @@ func GetUnsetProductByCondition(productType string, ids []int, sortCondition str
 }
 
 type ProductView struct {
-	Id            int
-	ProductName   string
-	SourceId      int
-	ProductType   string
-	RiskLevel     string
-	PublishedTime string
-	UpdatedTime   string
-	Price         string
-	IsPermanent   bool
-	ValidDays     int
-	CoverSrc      string
-	SaleStatus    string
-	Creator       string
-	Description   string
+	Id              int
+	ProductName     string
+	SourceId        int
+	ProductType     string
+	RiskLevel       string
+	PublishedTime   string
+	PermissionNames string
+	UpdatedTime     string
+	Price           string
+	IsPermanent     bool
+	ValidDays       int
+	CoverSrc        string
+	SaleStatus      string
+	Creator         string
+	Description     string
 }
 
-func GetRiskLevel(productType string, id int) (riskLevel string, productName string, err error) {
+func GetRiskLevel(productType string, id int) (riskLevel string, productName string, permissionName string, err error) {
 	switch productType {
 	case "report":
 		var report *models.Report
@@ -192,7 +194,7 @@ func GetRiskLevel(productType string, id int) (riskLevel string, productName str
 				utils.FileLog.Error("获取品种信息,无法确认风险等级", err.Error())
 				return
 			}
-			return permission.RiskLevel, report.Title, nil
+			return permission.RiskLevel, report.Title, permission.Name, nil
 		case models.SourceETA:
 			var permissionIds []int
 			permissionIds, err = models.GetByPermissionIdsByClassifyId(report.ClassifyId)
@@ -201,7 +203,12 @@ func GetRiskLevel(productType string, id int) (riskLevel string, productName str
 				return
 			}
 			var permissions []models.Permission
+			var permissionNameArr []string
 			permissions, err = models.GetPermissionsWithRiskLevel(permissionIds)
+			for _, permission := range permissions {
+				permissionNameArr = append(permissionNameArr, permission.Name)
+			}
+			permissionName = strings.Join(permissionNameArr, ",")
 			if err != nil {
 				utils.FileLog.Error("获取品种信息,无法确认风险等级", err.Error())
 				return
@@ -221,7 +228,7 @@ func GetRiskLevel(productType string, id int) (riskLevel string, productName str
 				}
 			}
 			if riskNum > 0 {
-				return fmt.Sprintf("R%d", riskNum), report.Title, nil
+				return fmt.Sprintf("R%d", riskNum), report.Title, permissionName, nil
 			}
 			return
 		}
@@ -239,7 +246,12 @@ func GetRiskLevel(productType string, id int) (riskLevel string, productName str
 			return
 		}
 		var permissions []models.Permission
+		var permissionNameArr []string
 		permissions, err = models.GetPermissionsWithRiskLevel(permissionsIds)
+		for _, permission := range permissions {
+			permissionNameArr = append(permissionNameArr, permission.Name)
+		}
+		permissionName = strings.Join(permissionNameArr, ",")
 		if err != nil {
 			utils.FileLog.Error("获取媒体信息,无法确认风险等级", err.Error())
 			return
@@ -260,7 +272,7 @@ func GetRiskLevel(productType string, id int) (riskLevel string, productName str
 			}
 		}
 		if riskNum > 0 {
-			return fmt.Sprintf("R%d", riskNum), media.MediaName, nil
+			return fmt.Sprintf("R%d", riskNum), media.MediaName, permissionName, nil
 		}
 		return
 	case "package":
@@ -271,9 +283,9 @@ func GetRiskLevel(productType string, id int) (riskLevel string, productName str
 			return
 		}
 		if permission.RiskLevel == "" {
-			return "", "", errors.New("当前品种未设置风测等级")
+			return "", "", "", errors.New("当前品种未设置风测等级")
 		}
-		return permission.RiskLevel, permission.Name, nil
+		return permission.RiskLevel, permission.Name, "", nil
 	default:
 		var media *models.Media
 		media, err = models.GetMediaById(models.MediaType(productType), id)
@@ -294,8 +306,9 @@ func GetRiskLevel(productType string, id int) (riskLevel string, productName str
 			return
 		}
 		var riskNum int
+		var permissionNameArr []string
 		for _, permission := range permissions {
-
+			permissionNameArr = append(permissionNameArr, permission.Name)
 			if permission.RiskLevel == "" {
 				continue
 			}
@@ -308,8 +321,9 @@ func GetRiskLevel(productType string, id int) (riskLevel string, productName str
 				riskNum = currentNum
 			}
 		}
+		permissionName = strings.Join(permissionNameArr, ",")
 		if riskNum > 0 {
-			return fmt.Sprintf("R%d", riskNum), media.MediaName, nil
+			return fmt.Sprintf("R%d", riskNum), media.MediaName, permissionName, nil
 		}
 		return
 	}