Переглянути джерело

一键登录至eta社区管理后台

xyxie 10 місяців тому
батько
коміт
544713cd0c

+ 36 - 0
controllers/sys_user.go

@@ -6,6 +6,7 @@ import (
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/system"
 	"hongze/hz_crm_api/services"
+	"hongze/hz_crm_api/services/eta_forum"
 	"hongze/hz_crm_api/utils"
 	"time"
 )
@@ -356,3 +357,38 @@ func (this *SysUserController) AuthCodeLogin() {
 	br.Success = true
 	br.Msg = "获取成功"
 }
+
+// GetEtaForumAdminAuthCode
+// @Title 免密登录-获取登录ETA社区管理后台系统的编码
+// @Description 免密登录-获取登录ETA社区管理后台系统的编码
+// @Success 200 Ret=200 获取成功
+// @router /forum_admin/auth_code [get]
+func (this *SysUserAuthController) GetEtaForumAdminAuthCode() {
+	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 := eta_forum.GetForumAdminAuthCode(sysUser.AdminName)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取登录编码失败, Err: " + e.Error()
+		return
+	}
+
+	br.Data = code
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+}

+ 54 - 0
services/eta_forum/eta_forum_hub.go

@@ -0,0 +1,54 @@
+package eta_forum
+
+import (
+	"encoding/json"
+	"fmt"
+)
+
+type GetForumAdminAuthCodeResp struct {
+	Ret         int
+	Msg         string
+	ErrMsg      string
+	ErrCode     string
+	Data        *LoginAuthCode
+	Success     bool `description:"true 执行成功,false 执行失败"`
+	IsSendEmail bool `json:"-" description:"true 发送邮件,false 不发送邮件"`
+	IsAddLog    bool `json:"-" description:"true 新增操作日志,false 不新增操作日志" `
+}
+type LoginAuthCode struct {
+	AuthCode string `json:"auth_code" description:"登录凭证"`
+}
+
+// GetLoginAuthCodeReq 获取登录编码请求体
+type GetLoginAuthCodeReq struct {
+	AdminName string `json:"admin_name" description:"用户名"`
+	Source    int    `json:"source" description:"来源: 1-CRM; 2-ETA"`
+}
+
+// GetForumAdminAuthCode 获取登录凭证
+func GetForumAdminAuthCode(adminName string) (authCode string, err error) {
+	// 查询图表信息
+	param := GetLoginAuthCodeReq{
+		Source:    1,
+		AdminName: adminName,
+	}
+	reqJson, e := json.Marshal(param)
+	if e != nil {
+		err = fmt.Errorf("data json marshal err: %s", e.Error())
+		return
+	}
+	respItem, err := GetForumAdminAuthCodeLib(string(reqJson))
+	if err != nil {
+		err = fmt.Errorf("获取登录凭证,Err:" + err.Error())
+		return
+	}
+	if respItem.Ret != 200 {
+		err = fmt.Errorf("获取登录凭证,Err:" + respItem.ErrMsg)
+		return
+	}
+
+	if respItem.Data != nil {
+		authCode = respItem.Data.AuthCode
+	}
+	return
+}

+ 65 - 0
services/eta_forum/eta_forum_hub_lib.go

@@ -0,0 +1,65 @@
+package eta_forum
+
+import (
+	"encoding/json"
+	"fmt"
+	"hongze/hz_crm_api/models"
+	"hongze/hz_crm_api/utils"
+
+	"io/ioutil"
+	"net/http"
+	"strings"
+)
+
+// GetForumAdminAuthCodeLib 获取登录凭证
+func GetForumAdminAuthCodeLib(req string) (resp *GetForumAdminAuthCodeResp, err error) {
+	_, resultByte, err := post(req, "/v1/auth/auth_code")
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
+		return
+	}
+	return
+}
+
+// post
+func post(paramStr string, urlStr string) (resp *models.BaseResponse, result []byte, err error) {
+	if utils.ETA_FORUM_HUB_URL == "" {
+		err = fmt.Errorf("ETA社区桥接服务地址为空")
+		return
+	}
+	postUrl := utils.ETA_FORUM_HUB_URL + urlStr
+	result, err = HttpPost(postUrl, paramStr, "application/json")
+	if err != nil {
+		err = fmt.Errorf("调用ETA社区桥接服务接口失败 error:%s", err.Error())
+		return
+	}
+	err = json.Unmarshal(result, &resp)
+	if err != nil {
+		return
+	}
+
+	return
+}
+
+func HttpPost(url, postData string, params ...string) ([]byte, error) {
+	body := ioutil.NopCloser(strings.NewReader(postData))
+	client := &http.Client{}
+	req, err := http.NewRequest("POST", url, body)
+	if err != nil {
+		return nil, err
+	}
+	contentType := "application/x-www-form-urlencoded;charset=utf-8"
+	if len(params) > 0 && params[0] != "" {
+		contentType = params[0]
+	}
+	req.Header.Set("Content-Type", contentType)
+	req.Header.Set("authorization", utils.MD5(utils.ETA_FORUM_HUB_NAME_EN+utils.ETA_FORUM_HUB_MD5_KEY))
+	resp, err := client.Do(req)
+	if err != nil {
+		return nil, err
+	}
+	defer resp.Body.Close()
+	b, err := ioutil.ReadAll(resp.Body)
+	utils.FileLog.Debug("HttpPost:" + string(b))
+	return b, err
+}

+ 21 - 0
utils/config.go

@@ -159,6 +159,13 @@ var MayCurBaseUrl string
 // CrmEtaServerUrl CRM-ETA服务地址
 var CrmEtaServerUrl string
 
+// eta_forum_hub ETA社区桥接服务地址
+var (
+	ETA_FORUM_HUB_URL     string
+	ETA_FORUM_HUB_NAME_EN string
+	ETA_FORUM_HUB_MD5_KEY string
+)
+
 func init() {
 	tmpRunMode, err := web.AppConfig.String("run_mode")
 	if err != nil {
@@ -275,6 +282,13 @@ ZwIDAQAB
 
 		// CRM-ETA服务地址
 		CrmEtaServerUrl = "http://127.0.0.1:8708"
+
+		// eta_forum_hub ETA社区桥接服务地址
+		{
+			ETA_FORUM_HUB_URL = config["eta_forum_hub_url"]
+			ETA_FORUM_HUB_NAME_EN = config["eta_forum_hub_name_en"]
+			ETA_FORUM_HUB_MD5_KEY = config["eta_forum_hub_md5_key"]
+		}
 	} else {
 
 		TemplateRedirectUrl = "http://rddpweb.brilliantstart.cn/reportdtl?id="
@@ -316,6 +330,13 @@ ZwIDAQAB
 
 		// CRM-ETA服务地址
 		CrmEtaServerUrl = "http://127.0.0.1:8702"
+
+		// eta_forum_hub ETA社区桥接服务地址
+		{
+			ETA_FORUM_HUB_URL = config["eta_forum_hub_url"]
+			ETA_FORUM_HUB_NAME_EN = config["eta_forum_hub_name_en"]
+			ETA_FORUM_HUB_MD5_KEY = config["eta_forum_hub_md5_key"]
+		}
 	}
 	tmpLibreOfficePath, err := web.AppConfig.String("libreOfficePath")
 	if err != nil {