Browse Source

Merge remote-tracking branch 'origin/debug' into debug

Roc 1 year ago
parent
commit
77f092bc05

+ 141 - 0
controllers/data_manage/edb_classify.go

@@ -778,3 +778,144 @@ func (this *EdbClassifyController) ClassifyEdbInfoList() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// ItemsV3
+// @Title 分类列表
+// @Description 分类列表接口
+// @Success 200 {object} data_manage.EdbClassifyListResp
+// @router /classify/items/v3 [get]
+func (this *EdbClassifyController) ItemsV3() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	rootList, err := data_manage.GetEdbClassifyByParentId(0, 0)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+	rootTwoList, err := data_manage.GetEdbClassifyByParentIdTwo( 0)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+	classifyAll, err := data_manage.GetEdbClassifyAllV2()
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+	rootTwoMap := make(map[int][]*data_manage.EdbClassifyItems)
+	for _, v := range rootTwoList {
+		button := data.GetEdbClassifyOpButton(this.SysUser, v.SysUserId)
+		button.AddButton = false //不管有没有权限,指标都是没有添加按钮的
+		v.Button = button
+
+		rootTwoMap[v.ParentId] = append(rootTwoMap[v.ParentId], v)
+	}
+	rootTwoChildMap := make(map[int][]*data_manage.EdbClassifyItems)
+	for _, v := range classifyAll {
+		button := data.GetEdbClassifyOpButton(this.SysUser, v.SysUserId)
+		button.AddButton = false //不管有没有权限,指标都是没有添加按钮的
+		v.Button = button
+		if v.Level == 3 {
+			rootTwoChildMap[v.ParentId] = append(rootTwoChildMap[v.ParentId], v)
+		}
+	}
+
+	nodeAll := make([]*data_manage.EdbClassifyItems, 0)
+	for _, v := range rootList {
+		button := data.GetEdbClassifyOpButton(this.SysUser, v.SysUserId)
+		v.Button = button
+
+		if existItems, ok := rootTwoMap[v.ClassifyId]; ok {
+			v.Children = existItems
+			for _, item := range existItems {
+				button := data.GetEdbClassifyOpButton(this.SysUser, item.SysUserId)
+				item.Button = button
+
+				if existItems, ok := rootTwoChildMap[item.ClassifyId]; ok {
+					item.Children = existItems
+				} else {
+					items := make([]*data_manage.EdbClassifyItems, 0)
+					item.Children = items
+				}
+			}
+		} else {
+			items := make([]*data_manage.EdbClassifyItems, 0)
+			v.Children = items
+		}
+		nodeAll = append(nodeAll, v)
+	}
+	language := `CN`
+	// 指标显示的语言
+	{
+		configDetail, _ := system.GetConfigDetailByCode(this.SysUser.AdminId, system.EdbLanguageVar)
+		if configDetail != nil {
+			language = configDetail.ConfigValue
+		} else {
+			configDetail, _ = system.GetDefaultConfigDetailByCode(system.EdbLanguageVar)
+			if configDetail != nil {
+				language = configDetail.ConfigValue
+			}
+		}
+	}
+	resp := new(data_manage.EdbClassifyListResp)
+	resp.AllNodes = nodeAll
+	resp.Language = language
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+
+// @Title 新增分类
+// @Description 新增分类接口
+// @Param	request	body data_manage.AddEdbClassifyReq true "type json string"
+// @Success 200 Ret=200 保存成功
+// @router /classify/addv2 [post]
+func (this *EdbClassifyController) AddEdbClassifyV2() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req data_manage.AddEdbClassifyReqV2
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.ClassifyName == "" {
+		br.Msg = "请输入分类名称"
+		br.IsSendEmail = false
+		return
+	}
+	if req.ParentId < 0 {
+		br.Msg = "参数错误"
+		br.IsSendEmail = false
+		return
+	}
+
+	//添加指标
+	_, err, errMsg := data.AddEdbClassifyV2(req.ClassifyName, req.ParentId, req.Level, 0, this.SysUser.AdminId, this.SysUser.AdminName)
+	if errMsg != `` {
+		br.Msg = errMsg
+		br.ErrMsg = errMsg
+		if err != nil {
+			br.ErrMsg = errMsg + ";Err:" + err.Error()
+		} else {
+			br.IsSendEmail = false
+		}
+		return
+	}
+	br.Ret = 200
+	br.Msg = "保存成功"
+	br.Success = true
+	br.IsAddLog = true
+}

+ 18 - 0
controllers/sys_admin.go

@@ -489,6 +489,10 @@ func (this *SysAdminController) Add() {
 		br.ErrMsg = "新增失败,Err:" + err.Error()
 		return
 	}
+
+	// 同步用户缓存
+	_ = utils.Rc.LPush(utils.CACHE_SYNC_SYS_USER_FROM_ETA, admin.AdminName)
+
 	err = services.UpdateResearcherTagGroup(admin.AdminId, req.ResearchGroupIds)
 	if err != nil {
 		br.Msg = "新增失败"
@@ -684,6 +688,10 @@ func (this *SysAdminController) Edit() {
 		br.ErrMsg = "更新用户信息失败, Err:" + e.Error()
 		return
 	}
+
+	// 同步用户缓存
+	_ = utils.Rc.LPush(utils.CACHE_SYNC_SYS_USER_FROM_ETA, adminInfo.AdminName)
+
 	// 用户登出
 	logOutSystemUser(adminInfo.AdminId)
 
@@ -750,6 +758,9 @@ func (this *SysAdminController) EditEnabled() {
 		}
 	}
 
+	// 同步用户缓存
+	_ = utils.Rc.LPush(utils.CACHE_SYNC_SYS_USER_FROM_ETA, adminItem.AdminName)
+
 	//用户被禁用的情况下,需要将他对应的token给过期
 	if adminItem.Enabled == 1 && req.Enabled == 0 {
 		logOutSystemUser(adminItem.AdminId)
@@ -805,6 +816,10 @@ func (this *SysAdminController) Delete() {
 		br.ErrMsg = "删除失败,Err:" + err.Error()
 		return
 	}
+
+	// 同步用户缓存
+	_ = utils.Rc.LPush(utils.CACHE_SYNC_SYS_USER_FROM_ETA, adminInfo.AdminName)
+
 	// 删除手工数据关联用户
 	{
 		go data_manage.DeleteManualUser(req.AdminId)
@@ -1040,6 +1055,9 @@ func (this *SysAdminController) Move() {
 		}
 	}
 
+	// 同步用户缓存
+	_ = utils.Rc.LPush(utils.CACHE_SYNC_SYS_USER_FROM_ETA, adminInfo.AdminName)
+
 	// 清除系统用户列表缓存key
 	_ = utils.Rc.Delete(utils.CACHE_KEY_ADMIN)
 	_ = utils.Rc.Delete(utils.CACHE_KEY_ADMIN_ID)

+ 24 - 0
controllers/sys_role.go

@@ -61,6 +61,10 @@ func (this *SysRoleController) Add() {
 		br.ErrMsg = "新增失败,Err:" + err.Error()
 		return
 	}
+
+	// 同步角色缓存
+	_ = utils.Rc.LPush(utils.CACHE_SYNC_SYS_ROLE_FROM_ETA, item.RoleName)
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "新增成功"
@@ -112,6 +116,10 @@ func (this *SysRoleController) Edit() {
 		br.ErrMsg = "修改失败,Err:" + err.Error()
 		return
 	}
+
+	// 同步角色缓存
+	_ = utils.Rc.LPush(utils.CACHE_SYNC_SYS_ROLE_FROM_ETA, item.RoleName)
+
 	br.Ret = 200
 	br.Success = true
 	br.IsAddLog = true
@@ -141,12 +149,28 @@ func (this *SysRoleController) Delete() {
 		br.ErrMsg = "参数错误,GroupId 小于等于0 "
 		return
 	}
+
+	role, e := system.GetSysRoleById(req.RoleId)
+	if e != nil {
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "角色不存在, 请刷新页面"
+			return
+		}
+		br.Msg = "删除失败"
+		br.ErrMsg = "获取角色信息失败, Err: " + e.Error()
+		return
+	}
+
 	err = system.DeleteSysRole(req.RoleId)
 	if err != nil {
 		br.Msg = "删除失败"
 		br.ErrMsg = "删除失败,Err:" + err.Error()
 		return
 	}
+
+	// 同步角色缓存
+	_ = utils.Rc.LPush(utils.CACHE_SYNC_SYS_ROLE_FROM_ETA, role.RoleName)
+
 	br.Ret = 200
 	br.Success = true
 	br.IsAddLog = true

+ 69 - 0
controllers/sys_user.go

@@ -287,3 +287,72 @@ func (this *SysUserController) Uuid() {
 	br.Msg = "获取成功"
 	br.Data = uuid
 }
+
+// GetCrmAuthCode
+// @Title 免密登录-获取登录CRM系统的编码
+// @Description 免密登录-获取登录CRM系统的编码
+// @Success 200 Ret=200 获取成功
+// @router /get_crm_auth_code [get]
+func (this *SysUserAuthController) GetCrmAuthCode() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	code, e := services.GetAuthCodeFromMiddleServer(sysUser.AdminName)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取登录编码失败, Err: " + e.Error()
+		return
+	}
+
+	br.Data = code
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+}
+
+// GetCrmToken
+// @Title 免密登录-获取CRM系统Token
+// @Description 免密登录-获取CRM系统Token
+// @Success 200 Ret=200 操作成功
+// @router /get_crm_token [get]
+func (this *SysUserController) GetCrmToken() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	authCode := this.GetString("AuthCode", "")
+	if authCode == "" {
+		br.Msg = "参数有误"
+		br.ErrMsg = "参数缺失, AuthCode"
+		return
+	}
+
+	data, e := services.GetCrmTokenFromMiddleServer(authCode)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取登录Token失败, Err: " + e.Error()
+		return
+	}
+
+	br.Data = data
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+}

+ 30 - 0
models/data_manage/edb_classify.go

@@ -266,3 +266,33 @@ func GetEdbClassifyMaxSort(parentId int, classifyType uint8) (sort int, err erro
 type ClassifyEdbInfoListResp struct {
 	EdbInfoList []*EdbClassifyItems
 }
+
+// GetEdbClassifyAllV2 获取普通指标的分类列表
+func GetEdbClassifyAllV2() (items []*EdbClassifyItems, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM edb_classify WHERE parent_id <>0  AND classify_type = 0  order by sort asc,classify_id asc`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+func GetEdbClassifyByParentIdTwo(classifyType int8) (items []*EdbClassifyItems, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM edb_classify WHERE level=2 AND classify_type = ?  order by sort asc,classify_id asc`
+	_, err = o.Raw(sql, classifyType).QueryRows(&items)
+	return
+}
+
+type AddEdbClassifyReqV2 struct {
+	ClassifyName string `description:"分类名称"`
+	ParentId     int    `description:"父级id,第一级传0"`
+	Level        int    `description:"层级,第一级传0,其余传上一级的层级"`
+	ClassifyType uint8  `description:"分类类型,0:普通指标分类,1:预测指标分类"`
+}
+
+// GetEdbClassifyMaxSortV2 获取分类下最大的排序数
+func GetEdbClassifyMaxSortV2(parentId int, classifyType uint8) (sort int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT Max(sort) AS sort FROM edb_classify WHERE parent_id=? AND parent_id_two=? AND classify_type=? `
+	err = o.Raw(sql, parentId, classifyType).QueryRow(&sort)
+	return
+}

+ 36 - 0
routers/commentsRouter.go

@@ -1564,6 +1564,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:EdbClassifyController"] = append(beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:EdbClassifyController"],
+        beego.ControllerComments{
+            Method: "AddEdbClassifyV2",
+            Router: `/classify/addv2`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:EdbClassifyController"] = append(beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:EdbClassifyController"],
         beego.ControllerComments{
             Method: "DeleteEdbClassify",
@@ -1618,6 +1627,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:EdbClassifyController"] = append(beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:EdbClassifyController"],
+        beego.ControllerComments{
+            Method: "ItemsV3",
+            Router: `/classify/items/v3`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:EdbClassifyController"] = append(beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:EdbClassifyController"],
         beego.ControllerComments{
             Method: "ListV2",
@@ -5875,6 +5893,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_eta_api/controllers:SysUserAuthController"] = append(beego.GlobalControllerRouter["hongze/hz_eta_api/controllers:SysUserAuthController"],
+        beego.ControllerComments{
+            Method: "GetCrmAuthCode",
+            Router: `/get_crm_auth_code`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_eta_api/controllers:SysUserAuthController"] = append(beego.GlobalControllerRouter["hongze/hz_eta_api/controllers:SysUserAuthController"],
         beego.ControllerComments{
             Method: "ModifyPwd",
@@ -5884,6 +5911,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_eta_api/controllers:SysUserController"] = append(beego.GlobalControllerRouter["hongze/hz_eta_api/controllers:SysUserController"],
+        beego.ControllerComments{
+            Method: "GetCrmToken",
+            Router: `/get_crm_token`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_eta_api/controllers:SysUserController"] = append(beego.GlobalControllerRouter["hongze/hz_eta_api/controllers:SysUserController"],
         beego.ControllerComments{
             Method: "Login",

+ 166 - 0
services/crm_eta.go

@@ -0,0 +1,166 @@
+package services
+
+import (
+	"encoding/json"
+	"fmt"
+	"hongze/hz_eta_api/utils"
+	"io/ioutil"
+	"net/http"
+	"strings"
+)
+
+const (
+	LoginAuthCodeSource = 2
+)
+
+// MiddleServerResultData 中间服务响应体
+type MiddleServerResultData struct {
+	Code   int         `json:"code" description:"状态码"`
+	Msg    string      `json:"msg" description:"提示信息"`
+	Data   interface{} `json:"data" description:"返回数据"`
+	ErrMsg string      `json:"-" description:"错误信息,不用返回给前端,只是做日志记录"`
+}
+
+// GetLoginAuthCodeReq 获取登录编码请求体
+type GetLoginAuthCodeReq struct {
+	AdminName string `json:"admin_name" description:"用户名"`
+	Source    int    `json:"source" description:"来源: 1-CRM; 2-ETA"`
+}
+
+// GetAuthCodeFromMiddleServer CRM_ETA服务-获取登录编码
+func GetAuthCodeFromMiddleServer(adminName string) (authCode string, err error) {
+	url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/auth/auth_code")
+	param := GetLoginAuthCodeReq{
+		Source:    LoginAuthCodeSource,
+		AdminName: adminName,
+	}
+	data, e := json.Marshal(param)
+	if e != nil {
+		err = fmt.Errorf("data json marshal err: %s", e.Error())
+		return
+	}
+
+	body := ioutil.NopCloser(strings.NewReader(string(data)))
+	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)
+	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
+	}
+
+	result := new(MiddleServerResultData)
+	if e = json.Unmarshal(b, &result); e != nil {
+		err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
+		return
+	}
+	if result.Code != 200 {
+		err = fmt.Errorf("result: %s", string(b))
+		return
+	}
+
+	code, ok := result.Data.(string)
+	if !ok {
+		err = fmt.Errorf("auth code empty")
+		return
+	}
+	authCode = code
+	return
+}
+
+// GetCrmTokenReq 获取Token请求体
+type GetCrmTokenReq struct {
+	AuthCode string `json:"auth_code"`
+}
+
+// GetCrmTokenDataResp 获取Token信息响应体
+type GetCrmTokenDataResp struct {
+	Code int             `json:"code" description:"状态码"`
+	Msg  string          `json:"msg" description:"提示信息"`
+	Data GetCrmTokenData `json:"data" description:"返回数据"`
+}
+
+// GetCrmTokenData Token数据
+type GetCrmTokenData struct {
+	Authorization   string `description:"Auth Token"`
+	AdminName       string `description:"系统用户名称"`
+	RealName        string `description:"系统用户姓名"`
+	RoleName        string `description:"角色名称"`
+	RoleTypeCode    string `description:"角色类型编码"`
+	SysRoleTypeCode string `description:"角色类型编码"`
+	AdminId         int    `description:"系统用户id"`
+	ProductName     string `description:"产品名称:admin,ficc,权益"`
+	Authority       int    `description:"管理权限,0:无,1:部门负责人,2:小组负责人,或者ficc销售主管,4:ficc销售组长"`
+}
+
+// GetCrmTokenFromMiddleServer CRM_ETA服务-获取Token
+func GetCrmTokenFromMiddleServer(authCode string) (tokenResp GetCrmTokenData, err error) {
+	url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/auth/crm_token")
+	param := GetCrmTokenReq{
+		AuthCode: authCode,
+	}
+	data, e := json.Marshal(param)
+	if e != nil {
+		err = fmt.Errorf("data json marshal err: %s", e.Error())
+		return
+	}
+
+	body := ioutil.NopCloser(strings.NewReader(string(data)))
+	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)
+	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
+	}
+
+	result := new(GetCrmTokenDataResp)
+	if e = json.Unmarshal(b, &result); e != nil {
+		err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
+		return
+	}
+	if result.Code != 200 {
+		err = fmt.Errorf("result: %s", string(b))
+		return
+	}
+	tokenResp = result.Data
+	return
+}

+ 36 - 0
services/data/edb_classify.go

@@ -551,3 +551,39 @@ func GetPredictEdbClassifyOpButton(sysUser *system.Admin, belongUserId int) (but
 	}
 	return
 }
+
+// AddEdbClassifyV2 添加指标分类
+func AddEdbClassifyV2(classifyName string, parentId, level int, classifyType uint8, sysUserId int, sysUserName string) (classifyInfo *data_manage.EdbClassify, err error, errMsg string) {
+	count, err := data_manage.GetEdbClassifyCount(classifyName, parentId, classifyType)
+	if err != nil {
+		errMsg = `判断名称是否已存在失败`
+		return
+	}
+	if count > 0 {
+		errMsg = `分类名称已存在,请重新输入`
+		return
+	}
+	//获取该层级下最大的排序数
+	maxSort, err := data_manage.GetEdbClassifyMaxSortV2(parentId, classifyType)
+
+	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
+	classifyInfo = &data_manage.EdbClassify{
+		//ClassifyId:      0,
+		ClassifyType:    classifyType,
+		ClassifyName:    classifyName,
+		ParentId:        parentId,
+		HasData:         0,
+		CreateTime:      time.Now(),
+		ModifyTime:      time.Now(),
+		SysUserId:       sysUserId,
+		SysUserRealName: sysUserName,
+		Level:           level + 1,
+		UniqueCode:      utils.MD5(utils.DATA_PREFIX + "_" + timestamp),
+		Sort:            maxSort,
+	}
+	_, err = data_manage.AddEdbClassify(classifyInfo)
+	if err != nil {
+		errMsg = "保存分类失败"
+	}
+	return
+}

+ 4 - 0
utils/config.go

@@ -158,6 +158,9 @@ var (
 // LibreOfficePath LibreOfficePath的地址
 var LibreOfficePath string
 
+// CrmEtaServerUrl CRM-ETA服务地址
+var CrmEtaServerUrl string
+
 func init() {
 	tmpRunMode, err := web.AppConfig.String("run_mode")
 	if err != nil {
@@ -364,6 +367,7 @@ func init() {
 		EsSemanticAnalysisDocIndexName = config["es_semantic_analysis_doc_index_name"]
 	}
 
+	CrmEtaServerUrl = config["crm_eta_server_url"]
 	LibreOfficePath = config["libre_office_path"]
 	return
 }

+ 2 - 0
utils/constants.go

@@ -199,6 +199,8 @@ const (
 	CACHE_KEY_DAYNEW_REFRESH          = "admin:day_new:refresh"               //每日资讯拉取企业微信聊天记录
 	CACHE_KEY_DAYNEW_TRANSLATE        = "admin:day_new:translate"             //每日资讯中翻英
 	CACHE_KEY_ADMIN_OPERATE_RECORD    = "HZ_ADMIN_CACHE_ADMIN_OPERATE_RECORD" //系统用户操作日志队列
+	CACHE_SYNC_SYS_USER_FROM_ETA      = "hz_crm_eta:eta_admin_sync"           // 同步用户的缓存队列key
+	CACHE_SYNC_SYS_ROLE_FROM_ETA      = "hz_crm_eta:eta_role_sync"            // 同步角色的缓存队列key
 )
 
 // 模板消息推送类型