Kaynağa Gözat

新增报告时添加报告权限

xyxie 11 ay önce
ebeveyn
işleme
be423381bf

+ 35 - 31
controllers/report.go

@@ -565,22 +565,24 @@ func (this *ReportController) Add() {
 	}
 
 	//处理权限
-	if utils.BusinessCode == utils.BusinessCodeRelease || utils.BusinessCode == utils.BusinessCodeSandbox {
-		go func() {
-			permissionItems, e := models.GetPermission(req.ClassifyNameSecond)
+	//if utils.BusinessCode == utils.BusinessCodeRelease || utils.BusinessCode == utils.BusinessCodeSandbox {
+	go func() {
+		permissionItems, e := models.GetPermission(req.ClassifyNameSecond)
+		if e != nil {
+			alarm_msg.SendAlarmMsg("获取权限失败,Err:"+e.Error(), 3)
+			return
+		}
+		for _, v := range permissionItems {
+			e = models.AddChartPermissionChapterMapping(v.ChartPermissionId, newReportId)
 			if e != nil {
-				alarm_msg.SendAlarmMsg("获取权限失败,Err:"+e.Error(), 3)
+				alarm_msg.SendAlarmMsg("新增权限失败,Err:"+e.Error(), 3)
 				return
 			}
-			for _, v := range permissionItems {
-				e = models.AddChartPermissionChapterMapping(v.ChartPermissionId, newReportId)
-				if e != nil {
-					alarm_msg.SendAlarmMsg("新增权限失败,Err:"+e.Error(), 3)
-					return
-				}
-			}
-		}()
-	}
+		}
+		// 同步crm权限
+		_ = services.EditReportPermissionSync(newReportId, req.ClassifyNameSecond)
+	}()
+	//}
 
 	recordItem := &models.ReportStateRecord{
 		ReportId:   int(newReportId),
@@ -722,27 +724,29 @@ func (this *ReportController) Edit() {
 	}
 
 	//处理权限
-	if utils.BusinessCode == utils.BusinessCodeRelease || utils.BusinessCode == utils.BusinessCodeSandbox {
-		go func() {
-			e := models.RemoveChartPermissionChapterMapping(req.ReportId)
-			if e != nil {
-				alarm_msg.SendAlarmMsg("修改删除报告权限失败,Err:"+e.Error(), 3)
-				return
-			}
-			permissionItems, e := models.GetPermission(req.ClassifyNameSecond)
+	//if utils.BusinessCode == utils.BusinessCodeRelease || utils.BusinessCode == utils.BusinessCodeSandbox {
+	go func() {
+		e := models.RemoveChartPermissionChapterMapping(req.ReportId)
+		if e != nil {
+			alarm_msg.SendAlarmMsg("修改删除报告权限失败,Err:"+e.Error(), 3)
+			return
+		}
+		permissionItems, e := models.GetPermission(req.ClassifyNameSecond)
+		if e != nil {
+			alarm_msg.SendAlarmMsg("获取权限失败,Err:"+e.Error(), 3)
+			return
+		}
+		for _, v := range permissionItems {
+			e = models.AddChartPermissionChapterMapping(v.ChartPermissionId, req.ReportId)
 			if e != nil {
-				alarm_msg.SendAlarmMsg("获取权限失败,Err:"+e.Error(), 3)
+				alarm_msg.SendAlarmMsg("新增权限失败,Err:"+e.Error(), 3)
 				return
 			}
-			for _, v := range permissionItems {
-				e = models.AddChartPermissionChapterMapping(v.ChartPermissionId, req.ReportId)
-				if e != nil {
-					alarm_msg.SendAlarmMsg("新增权限失败,Err:"+e.Error(), 3)
-					return
-				}
-			}
-		}()
-	}
+		}
+		// 同步crm权限
+		_ = services.EditReportPermissionSync(req.ReportId, req.ClassifyNameSecond)
+	}()
+	//}
 
 	reportCode := utils.MD5(strconv.Itoa(int(req.ReportId)))
 	resp := new(models.EditResp)

+ 3 - 3
models/company/company_permission.go

@@ -55,7 +55,7 @@ type PermissionSetResp struct {
 }
 
 func GetPermissionSetItems(productId int, classifyName string) (items []*PermissionSetItem, err error) {
-	o := orm.NewOrmUsingDB("weekly")
+	o := orm.NewOrmUsingDB("rddp")
 	sql := ` SELECT * FROM chart_permission WHERE enabled=1 AND product_id=? AND classify_name=?  AND permission_type=0 ORDER BY sort ASC `
 	_, err = o.Raw(sql, productId, classifyName).QueryRows(&items)
 	return
@@ -95,7 +95,7 @@ type PermissionVarietyList struct {
 }
 
 func GetPermissionVarietyItems(productId int, classifyName string) (items []*PermissionVarietyItem, err error) {
-	o := orm.NewOrmUsingDB("weekly")
+	o := orm.NewOrmUsingDB("rddp")
 	sql := ` SELECT * FROM chart_permission WHERE enabled=1 AND product_id=? AND classify_name=? GROUP BY permission_name ORDER BY sort ASC `
 	_, err = o.Raw(sql, productId, classifyName).QueryRows(&items)
 	return
@@ -103,7 +103,7 @@ func GetPermissionVarietyItems(productId int, classifyName string) (items []*Per
 
 // GetChartPermissionListById 根据权限id获取产品权限详情
 func GetChartPermissionListById(chartPermissionId int) (item *ChartPermission, err error) {
-	o := orm.NewOrmUsingDB("weekly")
+	o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT * FROM chart_permission WHERE chart_permission_id =? `
 	err = o.Raw(sql, chartPermissionId).QueryRow(&item)
 	return

+ 4 - 4
models/permission.go

@@ -13,7 +13,7 @@ type ChartPermissionSearchKeyWordMapping struct {
 }
 
 func GetPermission(classifyNameSecond string) (items []*ChartPermissionSearchKeyWordMapping, err error) {
-	o := orm.NewOrmUsingDB("weekly")
+	o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT * FROM chart_permission_search_key_word_mapping AS a WHERE a.from='rddp' AND a.key_word=? `
 	_, err = o.Raw(sql, classifyNameSecond).QueryRows(&items)
 	return
@@ -22,14 +22,14 @@ func GetPermission(classifyNameSecond string) (items []*ChartPermissionSearchKey
 func AddChartPermissionChapterMapping(chartPermissionId int, reportId int64) (err error) {
 	sql := `INSERT INTO chart_permission_chapter_mapping (chart_permission_id, report_chapter_type_id,research_type)
            VALUES(?,?,?)`
-	o := orm.NewOrmUsingDB("weekly")
+	o := orm.NewOrmUsingDB("rddp")
 	_, err = o.Raw(sql, chartPermissionId, reportId, "rddp").Exec()
 	return
 }
 
 func RemoveChartPermissionChapterMapping(reportId int64) (err error) {
 	sql := ` DELETE FROM chart_permission_chapter_mapping WHERE research_type=? AND report_chapter_type_id=? `
-	o := orm.NewOrmUsingDB("weekly")
+	o := orm.NewOrmUsingDB("rddp")
 	_, err = o.Raw(sql, "rddp", reportId).Exec()
 	return
 }
@@ -40,7 +40,7 @@ type ChartPermissionMappingIdName struct {
 }
 
 func GetChartPermissionNameFromMappingByKeyword(keyword string, source string) (list []*ChartPermissionMappingIdName, err error) {
-	o := orm.NewOrmUsingDB("weekly")
+	o := orm.NewOrmUsingDB("rddp")
 	sql := " SELECT b.chart_permission_id AS permission_id,b.permission_name FROM chart_permission_search_key_word_mapping AS a INNER JOIN chart_permission AS b ON a.chart_permission_id = b.chart_permission_id WHERE a.`from` = ? AND a.key_word = ? "
 	_, err = o.Raw(sql, source, keyword).QueryRows(&list)
 

+ 7 - 7
models/report_chapter_type.go

@@ -33,7 +33,7 @@ type ReportChapterType struct {
 
 // GetReportChapterTypeById 获取章节类型
 func GetReportChapterTypeById(reportChapterTypeId int) (item *ReportChapterType, err error) {
-	o := orm.NewOrmUsingDB("weekly")
+	o := orm.NewOrmUsingDB("rddp")
 	sql := ` SELECT * FROM report_chapter_type WHERE report_chapter_type_id = ? `
 	err = o.Raw(sql, reportChapterTypeId).QueryRow(&item)
 	return
@@ -41,7 +41,7 @@ func GetReportChapterTypeById(reportChapterTypeId int) (item *ReportChapterType,
 
 // GetReportChapterTypeList 获取章节类型列表
 func GetReportChapterTypeList() (list []*ReportChapterType, err error) {
-	o := orm.NewOrmUsingDB("weekly")
+	o := orm.NewOrmUsingDB("rddp")
 	sql := ` SELECT * FROM report_chapter_type WHERE enabled = 1 `
 	_, err = o.Raw(sql).QueryRows(&list)
 	return
@@ -49,7 +49,7 @@ func GetReportChapterTypeList() (list []*ReportChapterType, err error) {
 
 // GetReportChapterTypeListByResearchType 通过报告类型获取章节类型列表
 func GetReportChapterTypeListByResearchType(researchType string) (list []*ReportChapterType, err error) {
-	o := orm.NewOrmUsingDB("weekly")
+	o := orm.NewOrmUsingDB("rddp")
 	sql := ` SELECT * FROM report_chapter_type WHERE research_type = ? AND enabled = 1`
 	_, err = o.Raw(sql, researchType).QueryRows(&list)
 	return
@@ -57,7 +57,7 @@ func GetReportChapterTypeListByResearchType(researchType string) (list []*Report
 
 // GetAllReportChapterTypeListByResearchType 通过报告类型获取章节类型列表
 func GetAllReportChapterTypeListByResearchType(researchType string) (list []*ReportChapterType, err error) {
-	o := orm.NewOrmUsingDB("weekly")
+	o := orm.NewOrmUsingDB("rddp")
 	sql := ` SELECT * FROM report_chapter_type WHERE research_type = ?`
 	_, err = o.Raw(sql, researchType).QueryRows(&list)
 	return
@@ -65,7 +65,7 @@ func GetAllReportChapterTypeListByResearchType(researchType string) (list []*Rep
 
 // GetEnableReportChapterTypeList 获取未暂停的章节类型列表
 func GetEnableReportChapterTypeList(researchType string) (list []*ReportChapterType, err error) {
-	o := orm.NewOrmUsingDB("weekly")
+	o := orm.NewOrmUsingDB("rddp")
 	sql := ` SELECT
 				*
 			FROM
@@ -95,7 +95,7 @@ type StopUpdateReportChapterTypeResp struct {
 
 // GetStopUpdateReportChapterTypeListByResearchType 获取暂停更新章节类型列表
 func GetStopUpdateReportChapterTypeListByResearchType() (list []*ReportChapterType, err error) {
-	o := orm.NewOrmUsingDB("weekly")
+	o := orm.NewOrmUsingDB("rddp")
 	sql := ` SELECT * FROM report_chapter_type WHERE is_set = 1 AND pause_end_time >= ? AND enabled = 1 `
 	_, err = o.Raw(sql, time.Now().Format(utils.FormatDate)).QueryRows(&list)
 	return
@@ -103,7 +103,7 @@ func GetStopUpdateReportChapterTypeListByResearchType() (list []*ReportChapterTy
 
 // GetDisableUpdateReportChapterTypeListByResearchType 获取停止更新的章节类型列表
 func GetDisableUpdateReportChapterTypeListByResearchType() (list []*ReportChapterType, err error) {
-	o := orm.NewOrmUsingDB("weekly")
+	o := orm.NewOrmUsingDB("rddp")
 	sql := ` SELECT * FROM report_chapter_type WHERE enabled = 0`
 	_, err = o.Raw(sql).QueryRows(&list)
 	return

+ 1 - 1
models/report_chapter_type_permission.go

@@ -17,7 +17,7 @@ type ReportChapterTypePermission struct {
 
 // GetChapterTypePermissionByTypeIdAndResearchType 根据章节类型ID及研报类型获取章节类型权限列表
 func GetChapterTypePermissionByTypeIdAndResearchType(typeId int, researchType string) (list []*ReportChapterTypePermission, err error) {
-	o := orm.NewOrmUsingDB("weekly")
+	o := orm.NewOrmUsingDB("rddp")
 	sql := ` SELECT * FROM report_chapter_type_permission WHERE report_chapter_type_id = ? AND research_type = ? ORDER BY chart_permission_id ASC `
 	_, err = o.Raw(sql, typeId, researchType).QueryRows(&list)
 	return

+ 206 - 0
services/chart_permission_sync.go

@@ -0,0 +1,206 @@
+package services
+
+import (
+	"encoding/json"
+	"eta/eta_mobile/services/alarm_msg"
+	"eta/eta_mobile/utils"
+	"fmt"
+	"io/ioutil"
+	"net/http"
+	"strings"
+)
+
+type ChartPermissionResp struct {
+	Code   int    `json:"code" description:"状态码"`
+	Msg    string `json:"msg" description:"提示信息"`
+	ErrMsg string `json:"-" description:"错误信息,不用返回给前端,只是做日志记录"`
+}
+
+func crmEtaPost(url string, pars interface{}) (respBody []byte, err error) {
+	params, e := json.Marshal(pars)
+	if e != nil {
+		err = fmt.Errorf("data json marshal err: %s", e.Error())
+		return
+	}
+
+	body := ioutil.NopCloser(strings.NewReader(string(params)))
+	client := &http.Client{}
+	req, e := http.NewRequest("POST", url, body)
+	if e != nil {
+		err = fmt.Errorf("http create request err: %s", e.Error())
+		return
+	}
+
+	contentType := "application/json;charset=utf-8"
+	req.Header.Set("Content-Type", contentType)
+	req.Header.Set("Authorization", utils.CrmEtaAuthorization)
+	resp, e := client.Do(req)
+	if e != nil {
+		err = fmt.Errorf("http client do err: %s", e.Error())
+		return
+	}
+	defer func() {
+		_ = resp.Body.Close()
+	}()
+	b, e := ioutil.ReadAll(resp.Body)
+	if e != nil {
+		err = fmt.Errorf("resp body read err: %s", e.Error())
+		return
+	}
+	if len(b) == 0 {
+		err = fmt.Errorf("resp body is empty")
+		return
+	}
+	// 生产环境解密, 注意有个坑前后的双引号
+	if utils.RunMode == "release" {
+		str := string(b)
+		str = strings.Trim(str, `"`)
+		b = utils.DesBase64Decrypt([]byte(str), utils.CrmEtaServerDes3Key)
+	}
+	respBody = b
+	return
+}
+
+func ChartFiccPermissionSync() (err error, errMsg string) {
+	defer func() {
+		if err != nil {
+			utils.FileLog.Info("同步品种权限数据失败, Err: " + err.Error() + errMsg)
+			alarm_msg.SendAlarmMsg("同步品种权限数据失败,Err:"+err.Error(), 3)
+		}
+	}()
+	if utils.CrmEtaServerUrl == "" {
+		return
+	}
+	url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/crm/chart_permission/sync")
+	pars := make(map[string]interface{})
+	b, err := crmEtaPost(url, pars)
+	if err != nil {
+		errMsg = "同步品种失败"
+		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 {
+		errMsg = "同步品种失败"
+		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, err: %s", string(b), result.ErrMsg)
+		errMsg = result.Msg
+		return
+	}
+	return
+}
+
+type EditClassifyPermissionReq struct {
+	Keyword string
+}
+
+// EditClassifyChartPermissionSync 设置报告分类权限
+func EditClassifyChartPermissionSync(keyword string) (err error) {
+	defer func() {
+		if err != nil {
+			utils.FileLog.Info("同步设置报告分类权限失败, Err: " + err.Error())
+			alarm_msg.SendAlarmMsg("同步设置报告分类权限失败,Err:"+err.Error(), 3)
+		}
+	}()
+	if utils.CrmEtaServerUrl == "" {
+		return
+	}
+	req := &EditClassifyPermissionReq{Keyword: keyword}
+	url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/crm/chart_permission/classify/sync")
+	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
+}
+
+type EditReportPermissionSyncReq struct {
+	ReportId           int64  `description:"报告id"`
+	ClassifyNameSecond string `description:"二级分类名称"`
+}
+
+// EditReportPermissionSync 设置报告权限
+func EditReportPermissionSync(reportId int64, classifyNameSecond string) (err error) {
+	defer func() {
+		if err != nil {
+			utils.FileLog.Info("同步设置报告权限失败, Err: " + err.Error())
+			alarm_msg.SendAlarmMsg("同步设置报告权限失败,Err:"+err.Error(), 3)
+		}
+	}()
+	if utils.CrmEtaServerUrl == "" {
+		return
+	}
+	req := &EditReportPermissionSyncReq{ReportId: reportId, ClassifyNameSecond: classifyNameSecond}
+	url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/crm/chart_permission/report/sync")
+	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
+}
+
+type EditKeywordPermissionSyncReq struct {
+	NewKeyword string
+	Keyword    string
+}
+
+// EditKeywordPermissionSync 设置报告权限分类名称
+func EditKeywordPermissionSync(newKeyword, keyword string) (err error) {
+	defer func() {
+		if err != nil {
+			utils.FileLog.Info("同步设置报告权限分类名称失败, Err: " + err.Error())
+			alarm_msg.SendAlarmMsg("同步设置报告权限分类名称失败,Err:"+err.Error(), 3)
+		}
+	}()
+	if utils.CrmEtaServerUrl == "" {
+		return
+	}
+	req := &EditKeywordPermissionSyncReq{NewKeyword: newKeyword, Keyword: keyword}
+	url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/crm/chart_permission/keyword/sync")
+	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
+}

+ 11 - 11
services/report.go

@@ -230,18 +230,18 @@ func UpdateReportEs(reportId int, publishState int) (err error) {
 			}
 		}
 	} else {
-		if utils.BusinessCode == utils.BusinessCodeRelease || utils.BusinessCode == utils.BusinessCodeSandbox {
-			permissionList, tmpErr := models.GetChartPermissionNameFromMappingByKeyword(reportInfo.ClassifyNameSecond, "rddp")
-			if tmpErr != nil {
-				return
-			}
-			categoryArr := make([]string, 0)
-			for i := 0; i < len(permissionList); i++ {
-				categoryArr = append(categoryArr, permissionList[i].PermissionName)
-			}
-			aliasArr, _ := addCategoryAliasToArr(categoryArr)
-			categories = strings.Join(aliasArr, ",")
+		//if utils.BusinessCode == utils.BusinessCodeRelease || utils.BusinessCode == utils.BusinessCodeSandbox {
+		permissionList, tmpErr := models.GetChartPermissionNameFromMappingByKeyword(reportInfo.ClassifyNameSecond, "rddp")
+		if tmpErr != nil {
+			return
+		}
+		categoryArr := make([]string, 0)
+		for i := 0; i < len(permissionList); i++ {
+			categoryArr = append(categoryArr, permissionList[i].PermissionName)
 		}
+		aliasArr, _ := addCategoryAliasToArr(categoryArr)
+		categories = strings.Join(aliasArr, ",")
+		//}
 	}
 
 	// 新增报告ES

+ 10 - 0
utils/config.go

@@ -141,6 +141,12 @@ var (
 	LogMaxDays  int //日志最大保留天数
 )
 
+// CrmEtaServerUrl CRM-ETA服务地址
+var (
+	CrmEtaServerUrl     string
+	CrmEtaServerDes3Key string
+)
+
 // BusinessCode 商家编码
 var BusinessCode string
 
@@ -294,6 +300,10 @@ func init() {
 		LogMaxDays, _ = strconv.Atoi(logMaxDaysStr)
 	}
 
+	{
+		CrmEtaServerUrl = config["crm_eta_server_url"]
+		CrmEtaServerDes3Key = config["crm_eta_server_des3_key"]
+	}
 	// ES配置
 	{
 		ES_URL = config["es_url"]

+ 2 - 0
utils/constants.go

@@ -372,6 +372,8 @@ const (
 // BusinessCodeSalt 商家编码盐值
 const BusinessCodeSalt = "dr7WY0OZgGR7upw1"
 
+const CrmEtaAuthorization = "NIi1RbEmH0C2rksXtPGDPBBgRgTZY87Q"
+
 // 对象存储客户端
 const (
 	STORAGESOURCE_OSS   = 1 //阿里云OSS