Przeglądaj źródła

英文报告权限

xyxie 1 rok temu
rodzic
commit
d599ea33d1

+ 49 - 6
controllers/classify.go

@@ -199,7 +199,18 @@ func (this *ClassifyController) Add() {
 			return
 		}
 	}
-
+	//获取报告分类权限列表
+	req2 := services.EditClassifyPermissionReq{
+		Keyword:               item.ClassifyName,
+		ChartPermissionIdList: req.ChartPermissionIdList,
+		NewKeyword:            item.ClassifyName,
+	}
+	err = services.EditClassifyChartPermission(req2)
+	if err != nil {
+		br.Msg = "修改分类权限失败"
+		br.ErrMsg = "修改分类权限失败,Err:" + err.Error()
+		return
+	}
 	// 新增关联了电话会的二级分类时, 同步FICC活动分类
 	//if req.ParentId > 0 && req.RelateTel == 1 {
 	//	go func() {
@@ -454,7 +465,7 @@ func (this *ClassifyController) Edit() {
 		br.Msg = "分类名称:" + req.ClassifyName + "已存在"
 		return
 	}
-
+	oldClassifyName := item.ClassifyName
 	item.ClassifyName = req.ClassifyName
 	item.Abstract = req.Abstract
 	item.ParentId = req.ParentId
@@ -502,6 +513,19 @@ func (this *ClassifyController) Edit() {
 		}
 	}
 
+	//获取报告分类权限列表
+	req2 := services.EditClassifyPermissionReq{
+		Keyword:               oldClassifyName,
+		ChartPermissionIdList: req.ChartPermissionIdList,
+		NewKeyword:            item.ClassifyName,
+	}
+	err = services.EditClassifyChartPermission(req2)
+	if err != nil {
+		br.Msg = "修改分类权限失败"
+		br.ErrMsg = "修改分类权限失败,Err:" + err.Error()
+		return
+	}
+
 	// 为二级分类时, 更新父级分类是否含电话会字段
 	if req.ParentId > 0 {
 		go func() {
@@ -795,16 +819,29 @@ func (this *ClassifyController) ListClassify() {
 		}
 	}
 
+	// 查询分类绑定的权限
+	permissionList, _ := services.GetClassifyChartPermission("")
+	classifyPermissionMap := make(map[string][]int, 0)
+	if len(permissionList) > 0 {
+		for _, v := range permissionList {
+			classifyPermissionMap[v.KeyWord] = append(classifyPermissionMap[v.KeyWord], v.ChartPermissionId)
+		}
+	}
 	// 二级分类
 	childrenMap := make(map[int][]*models.ClassifyItem, 0)
 	for i := range children {
+
 		if childrenMap[children[i].ParentId] == nil {
 			childrenMap[children[i].ParentId] = make([]*models.ClassifyItem, 0)
 		}
-		childrenMap[children[i].ParentId] = append(childrenMap[children[i].ParentId], &models.ClassifyItem{
+		tmp := &models.ClassifyItem{
 			Classify:       *children[i],
 			ClassifyMenuId: relateMap[children[i].Id],
-		})
+		}
+		if permissionIds, ok := classifyPermissionMap[children[i].ClassifyName]; ok {
+			tmp.ChartPermissionIdList = permissionIds
+		}
+		childrenMap[children[i].ParentId] = append(childrenMap[children[i].ParentId], tmp)
 	}
 
 	// 一级分类
@@ -851,7 +888,8 @@ func (this *ClassifyController) ClassifyPermission() {
 	}
 
 	//获取报告分类权限列表
-	list, err := models.GetPermission(classifyInfo.ClassifyName)
+	//list, err := models.GetPermission(classifyInfo.ClassifyName)
+	list, err := services.GetClassifyChartPermission(classifyInfo.ClassifyName)
 	if err != nil {
 		br.Msg = "获取分类信息失败"
 		br.ErrMsg = "获取失败,Err:" + err.Error()
@@ -902,7 +940,12 @@ func (this *ClassifyController) EditClassifyPermission() {
 	}
 
 	//获取报告分类权限列表
-	err = models.EditChartPermissionSearchKeyWordMappingMulti(classifyInfo.ClassifyName, req.ChartPermissionIdList)
+	req2 := services.EditClassifyPermissionReq{
+		Keyword:               classifyInfo.ClassifyName,
+		ChartPermissionIdList: req.ChartPermissionIdList,
+		NewKeyword:            classifyInfo.ClassifyName,
+	}
+	err = services.EditClassifyChartPermission(req2)
 	if err != nil {
 		br.Msg = "修改分类权限失败"
 		br.ErrMsg = "修改分类权限失败,Err:" + err.Error()

+ 19 - 7
controllers/english_report/english_classify.go

@@ -191,17 +191,24 @@ func (this *EnglishReportController) ListClassify() {
 // @Param   ParentId   query   int  true       "父级Id 添加父级时为0"
 // @Param   Sort   query   string  false       "排序"
 // @Success 200 新增成功
-// @router /classify/add [get]
+// @router /classify/add [post]
 func (this *EnglishReportController) AddClassify() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
-	classifyName := this.GetString("ClassifyName")
-	parentId, _ := this.GetInt("ParentId")
-	sort, _ := this.GetInt("Sort")
-
+	//classifyName := this.GetString("ClassifyName")
+	//parentId, _ := this.GetInt("ParentId")
+	var req models.EnClassifyAddReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	classifyName := req.ClassifyName
+	parentId := req.ParentId
 	// 查新父级分类是否存在
 	rootId := 0
 	if parentId > 0 {
@@ -221,10 +228,15 @@ func (this *EnglishReportController) AddClassify() {
 			rootId = parentClassify.RootId
 		}
 	}
-
+	maxSort, e := classify.GetMaxSort()
+	if e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "查询品种排序失败, Err: " + e.Error()
+		return
+	}
 	item := &models.EnglishClassify{
 		ClassifyName: classifyName,
-		Sort:         sort,
+		Sort:         maxSort + 1,
 		ParentId:     parentId,
 		RootId:       rootId,
 		CreateTime:   time.Now(),

+ 33 - 32
models/classify.go

@@ -44,35 +44,36 @@ type Classify struct {
 }
 
 type ClassifyAddReq struct {
-	ClassifyName      string                 `description:"分类名称"`
-	ParentId          int                    `description:"父级分类id,没有父级分类传0"`
-	Abstract          string                 `description:"栏目简介"`
-	Descript          string                 `description:"分享描述"`
-	ReportAuthor      string                 `description:"栏目作者"`
-	AuthorDescript    string                 `description:"作者简介"`
-	ColumnImgUrl      string                 `description:"栏目配图"`
-	ReportImgUrl      string                 `description:"报告配图"`
-	HeadImgUrl        string                 `description:"头部banner"`
-	AvatarImgUrl      string                 `description:"头像"`
-	HomeImgUrl        string                 `description:"首页配图"`
-	ClassifyLabel     string                 `description:"分类标签"`
-	ShowType          int                    `description:"展示类型:1-列表 2-专栏"`
-	HasTeleconference int                    `description:"是否有电话会:0-否 1-是"`
-	VipTitle          string                 `description:"研究员头衔"`
-	Sort              int                    `description:"后台排序"`
-	IsShow            int                    `description:"是否在小程序显示:1-显示 0-隐藏"`
-	YbFiccSort        int                    `description:"小程序FICC页排序"`
-	YbFiccIcon        string                 `description:"小程序FICC页icon"`
-	YbFiccPcIcon      string                 `description:"小程序PC端FICC页背景图"`
-	YbIconUrl         string                 `description:"小程序已购页icon"`
-	YbBgUrl           string                 `description:"小程序已购详情背景图"`
-	YbListImg         string                 `description:"小程序研报列表封面图"`
-	YbShareBgImg      string                 `description:"小程序研报详情分享背景图"`
-	YbRightBanner     string                 `description:"Pc端详情页,右侧,报告合集背景图"`
-	MenuList          []*ClassifyMenuSaveReq `description:"子目录列表"`
-	ClassifyMenuId    int                    `description:"二级分类-子目录ID"`
-	RelateTel         int                    `description:"是否在电话会中可选: 0-否; 1-是"`
-	RelateVideo       int                    `description:"是否在路演视频中可选: 0-否; 1-是"`
+	ClassifyName          string                 `description:"分类名称"`
+	ParentId              int                    `description:"父级分类id,没有父级分类传0"`
+	ChartPermissionIdList []int                  `description:"权限id数组"`
+	Abstract              string                 `description:"栏目简介"`
+	Descript              string                 `description:"分享描述"`
+	ReportAuthor          string                 `description:"栏目作者"`
+	AuthorDescript        string                 `description:"作者简介"`
+	ColumnImgUrl          string                 `description:"栏目配图"`
+	ReportImgUrl          string                 `description:"报告配图"`
+	HeadImgUrl            string                 `description:"头部banner"`
+	AvatarImgUrl          string                 `description:"头像"`
+	HomeImgUrl            string                 `description:"首页配图"`
+	ClassifyLabel         string                 `description:"分类标签"`
+	ShowType              int                    `description:"展示类型:1-列表 2-专栏"`
+	HasTeleconference     int                    `description:"是否有电话会:0-否 1-是"`
+	VipTitle              string                 `description:"研究员头衔"`
+	Sort                  int                    `description:"后台排序"`
+	IsShow                int                    `description:"是否在小程序显示:1-显示 0-隐藏"`
+	YbFiccSort            int                    `description:"小程序FICC页排序"`
+	YbFiccIcon            string                 `description:"小程序FICC页icon"`
+	YbFiccPcIcon          string                 `description:"小程序PC端FICC页背景图"`
+	YbIconUrl             string                 `description:"小程序已购页icon"`
+	YbBgUrl               string                 `description:"小程序已购详情背景图"`
+	YbListImg             string                 `description:"小程序研报列表封面图"`
+	YbShareBgImg          string                 `description:"小程序研报详情分享背景图"`
+	YbRightBanner         string                 `description:"Pc端详情页,右侧,报告合集背景图"`
+	MenuList              []*ClassifyMenuSaveReq `description:"子目录列表"`
+	ClassifyMenuId        int                    `description:"二级分类-子目录ID"`
+	RelateTel             int                    `description:"是否在电话会中可选: 0-否; 1-是"`
+	RelateVideo           int                    `description:"是否在路演视频中可选: 0-否; 1-是"`
 }
 
 func GetClassifyByName(classifyName string, parentId int) (item *Classify, err error) {
@@ -190,13 +191,13 @@ type ClassifyList struct {
 	Enabled           int       `description:"是否可用,1可用,0禁用"`
 	Child             []*ClassifyItem
 	ClassifyMenuList  []*ClassifyMenu
-	Permissions       []int `description:"绑定的权限ID"`
 }
 
 type ClassifyItem struct {
 	Classify
-	ClassifyMenuId   int `description:"二级分类-子目录ID"`
-	ClassifyMenuList []*ClassifyMenu
+	ClassifyMenuId        int `description:"二级分类-子目录ID"`
+	ClassifyMenuList      []*ClassifyMenu
+	ChartPermissionIdList []int `description:"绑定的权限ID"`
 }
 
 type ClassifyListResp struct {

+ 14 - 0
models/english_classify.go

@@ -45,3 +45,17 @@ type EnglishClassifyMoveReq struct {
 	PrevClassifyId int `description:"上一个兄弟节点分类id"`
 	NextClassifyId int `description:"下一个兄弟节点分类id"`
 }
+
+type EnClassifyAddReq struct {
+	EnPermissions []int  `description:"权限IDs"`
+	ClassifyName  string `description:"分类名称"`
+	ParentId      int    `description:"父级分类id"`
+}
+
+// GetMaxSort 获取最大的排序值
+func (classifyInfo *EnglishClassify) GetMaxSort() (maxSort int, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `SELECT max(sort) AS sort FROM english_classify`
+	err = o.Raw(sql).QueryRow(&maxSort)
+	return
+}

+ 87 - 0
services/chart_permission.go

@@ -37,6 +37,9 @@ type GetChartPermissionResp struct {
 }
 
 func getChartPermission(pars GetChartPermissionReq) (res GetChartPermissionItem, err error) {
+	if utils.CrmEtaServerUrl == "" {
+		return
+	}
 	url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/crm/chart_permission/list")
 	if pars.ProductId == 0 {
 		pars.ProductId = 1 //默认查ficc的品种
@@ -136,6 +139,9 @@ func crmEtaPost(url string, pars interface{}) (respBody []byte, err error) {
 }
 
 func AddChartPermission(pars *ChartPermissionAddReq) (err error, errMsg string) {
+	if utils.CrmEtaServerUrl == "" {
+		return
+	}
 	url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/crm/chart_permission/add")
 	if pars.ProductId == 0 {
 		pars.ProductId = 1 //默认新增ficc的品种
@@ -163,6 +169,9 @@ func AddChartPermission(pars *ChartPermissionAddReq) (err error, errMsg string)
 }
 
 func EditChartPermission(pars *ChartPermissionEditReq) (err error, errMsg string) {
+	if utils.CrmEtaServerUrl == "" {
+		return
+	}
 	url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/crm/chart_permission/edit")
 	b, err := crmEtaPost(url, pars)
 	if err != nil {
@@ -187,6 +196,9 @@ func EditChartPermission(pars *ChartPermissionEditReq) (err error, errMsg string
 }
 
 func MoveChartPermission(pars *ChartPermissionMoveReq) (err error, errMsg string) {
+	if utils.CrmEtaServerUrl == "" {
+		return
+	}
 	url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/crm/chart_permission/move")
 	b, err := crmEtaPost(url, pars)
 	if err != nil {
@@ -210,6 +222,7 @@ func MoveChartPermission(pars *ChartPermissionMoveReq) (err error, errMsg string
 	return
 }
 
+// GetChartPermissionEnabledList 查询已启用的FICC权限列表
 func GetChartPermissionEnabledList() (list []*company.PermissionSetList, err error) {
 	var req GetChartPermissionReq
 	data, err := getChartPermission(req)
@@ -254,3 +267,77 @@ func GetChartPermissionEnabledList() (list []*company.PermissionSetList, err err
 	}
 	return
 }
+
+type EditClassifyPermissionReq struct {
+	Keyword               string
+	ChartPermissionIdList []int `description:"权限id数组"`
+	NewKeyword            string
+}
+
+// GetClassifyChartPermission 获取报告分类已绑定的权限
+func GetClassifyChartPermission(classifyName string) (list []*models.ChartPermissionSearchKeyWordMapping, err error) {
+	if utils.CrmEtaServerUrl == "" {
+		return
+	}
+	url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/crm/chart_permission/classify")
+	var req ClassifyPermissionReq
+	req.Keyword = classifyName
+	b, err := crmEtaPost(url, req)
+	if err != nil {
+		err = fmt.Errorf("url:%s err: %s", url, err.Error())
+		return
+	}
+	//result := new(models.ResultData)
+	result := new(GetClassifyChartPermissionResp)
+	if e := json.Unmarshal(b, &result); e != nil {
+		err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
+		return
+	}
+	utils.FileLog.Info("%s", string(b))
+	if result.Code != 200 {
+		err = fmt.Errorf("result: %s", string(b))
+		return
+	}
+	list = result.Data.List
+	return
+}
+
+type ClassifyPermissionReq struct {
+	Keyword string
+}
+
+type ClassifyPermissionList struct {
+	List []*models.ChartPermissionSearchKeyWordMapping
+}
+
+type GetClassifyChartPermissionResp struct {
+	Code   int                    `json:"code" description:"状态码"`
+	Msg    string                 `json:"msg" description:"提示信息"`
+	Data   ClassifyPermissionList `json:"data" description:"返回数据"`
+	ErrMsg string                 `json:"-" description:"错误信息,不用返回给前端,只是做日志记录"`
+}
+
+// EditClassifyChartPermission 设置报告分类权限
+func EditClassifyChartPermission(req EditClassifyPermissionReq) (err error) {
+	if utils.CrmEtaServerUrl == "" {
+		return
+	}
+	url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/crm/chart_permission/classify/edit")
+	b, err := crmEtaPost(url, req)
+	if err != nil {
+		err = fmt.Errorf("url:%s err: %s", url, err.Error())
+		return
+	}
+	//result := new(models.ResultData)
+	result := new(ChartPermissionResp)
+	if e := json.Unmarshal(b, &result); e != nil {
+		err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
+		return
+	}
+	utils.FileLog.Info("%s", string(b))
+	if result.Code != 200 {
+		err = fmt.Errorf("result: %s", string(b))
+		return
+	}
+	return
+}