浏览代码

Merge branch 'feature/eta2.3.4_business_user' into debug

xyxie 3 月之前
父节点
当前提交
fa62bf79f1
共有 3 个文件被更改,包括 500 次插入383 次删除
  1. 295 0
      services/eta_forum/eta_trial.go
  2. 189 382
      services/eta_trial/user.go
  3. 16 1
      services/ppt.go

+ 295 - 0
services/eta_forum/eta_trial.go

@@ -0,0 +1,295 @@
+package eta_forum
+
+import (
+	"encoding/json"
+	"eta/eta_api/models"
+	"eta/eta_api/models/eta_trial"
+	"eta/eta_api/services/alarm_msg"
+	"fmt"
+)
+
+// EtaTrialUserReq 更新试用客户最后登录时间和次数请求体
+type EtaTrialUserReq struct {
+	Mobile string `description:"手机号"`
+}
+
+// UpdateEtaTrialUserLogin eta_forum_hub服务-更新试用客户最后登录时间和次数
+func UpdateEtaTrialUserLogin(pars EtaTrialUserReq) (res bool, err error) {
+	defer func() {
+		if err != nil {
+			alarm_msg.SendAlarmMsg(fmt.Sprintf("GetEtaTrialMobileCount, 新增试用客户手工录入权限失败, ErrMsg: %s", err.Error()), 3)
+		}
+	}()
+
+	reqJson, e := json.Marshal(pars)
+	if e != nil {
+		err = fmt.Errorf("data json marshal err: %s", e.Error())
+		return
+	}
+
+	_, resultByte, err := post(string(reqJson), "/v1/eta_trial/user/update_login")
+	resp := new(models.BaseResponse)
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
+		return
+	}
+	if resp.Ret != 200 {
+		err = fmt.Errorf("result: %s, errmsg: %s", resp.Msg, resp.ErrMsg)
+		return
+	}
+	res = true
+	return
+}
+
+// GetEtaTrialUserReq 获取试用客户请求体
+type GetEtaTrialUserReq struct {
+	Mobile string `description:"手机号"`
+}
+
+type EtaTrialUserResp struct {
+	Ret     int
+	Msg     string
+	ErrMsg  string
+	ErrCode string
+	Data    eta_trial.EtaTrialUserItem
+	Success bool `description:"true 执行成功,false 执行失败"`
+}
+
+// GetEtaTrialUser eta_forum_hub服务-获取试用客户信息
+func GetEtaTrialUser(pars GetEtaTrialUserReq) (res eta_trial.EtaTrialUserItem, err error) {
+	defer func() {
+		if err != nil {
+			alarm_msg.SendAlarmMsg(fmt.Sprintf("GetEtaTrialUser, 获取试用客户信息, ErrMsg: %s", err.Error()), 3)
+		}
+	}()
+	reqJson, e := json.Marshal(pars)
+	if e != nil {
+		err = fmt.Errorf("data json marshal err: %s", e.Error())
+		return
+	}
+
+	_, resultByte, err := post(string(reqJson), "/v1/eta_trial/user/mobile_fetch")
+	resp := new(EtaTrialUserResp)
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
+		return
+	}
+	if resp.Ret != 200 {
+		err = fmt.Errorf("result: %s, errmsg: %s", resp.Msg, resp.ErrMsg)
+		return
+	}
+	res = resp.Data
+	return
+}
+
+// DisableEtaTrialUser eta_forum_hub服务-禁用试用客户
+func DisableEtaTrialUser(pars EtaTrialUserReq) (res bool, err error) {
+	defer func() {
+		if err != nil {
+			alarm_msg.SendAlarmMsg(fmt.Sprintf("DisableEtaTrialUser eta_forum_hub服务-禁用试用客户, ErrMsg: %s", err.Error()), 3)
+		}
+	}()
+	reqJson, e := json.Marshal(pars)
+	if e != nil {
+		err = fmt.Errorf("data json marshal err: %s", e.Error())
+		return
+	}
+
+	_, resultByte, err := post(string(reqJson), "/v1/eta_trial/user/disable")
+	resp := new(models.BaseResponse)
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
+		return
+	}
+	if resp.Ret != 200 {
+		err = fmt.Errorf("result: %s, errmsg: %s", resp.Msg, resp.ErrMsg)
+		return
+	}
+	res = true
+	return
+}
+
+// RemoveEtaTrialUser eta_forum_hub服务-删除试用客户
+func RemoveEtaTrialUser(pars EtaTrialUserReq) (res bool, err error) {
+	defer func() {
+		if err != nil {
+			alarm_msg.SendAlarmMsg(fmt.Sprintf("RemoveEtaTrialUser eta_forum_hub服务-删除试用客户失败, ErrMsg: %s", err.Error()), 3)
+		}
+	}()
+	reqJson, e := json.Marshal(pars)
+	if e != nil {
+		err = fmt.Errorf("data json marshal err: %s", e.Error())
+		return
+	}
+
+	_, resultByte, err := post(string(reqJson), "/v1/eta_trial/user/remove")
+	resp := new(models.BaseResponse)
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
+		return
+	}
+	if resp.Ret != 200 {
+		err = fmt.Errorf("result: %s, errmsg: %s", resp.Msg, resp.ErrMsg)
+		return
+	}
+	res = true
+	return
+}
+
+// EtaTrialUserEditReq 更新用户信息请求体
+type EtaTrialUserEditReq struct {
+	RealName string `description:"姓名"`
+	Position string `description:"职务"`
+	Mobile   string `description:"手机号"`
+	Enabled  int    `description:"禁启用"`
+}
+
+// EditEtaTrialUser eta_forum_hub服务-编辑试用客户
+func EditEtaTrialUser(pars EtaTrialUserEditReq) (res bool, err error) {
+	defer func() {
+		if err != nil {
+			alarm_msg.SendAlarmMsg(fmt.Sprintf("EditEtaTrialUser eta_forum_hub服务-编辑试用客户失败, ErrMsg: %s", err.Error()), 3)
+		}
+	}()
+	reqJson, e := json.Marshal(pars)
+	if e != nil {
+		err = fmt.Errorf("data json marshal err: %s", e.Error())
+		return
+	}
+
+	_, resultByte, err := post(string(reqJson), "/v1/eta_trial/user/edit")
+	resp := new(models.BaseResponse)
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
+		return
+	}
+	if resp.Ret != 200 {
+		err = fmt.Errorf("result: %s, errmsg: %s", resp.Msg, resp.ErrMsg)
+		return
+	}
+	res = true
+	return
+}
+
+// UpdateUserIndexNum eta_forum_hub服务-更新用户累计新增指标数
+func UpdateUserIndexNum(pars EtaTrialUserReq) (res bool, err error) {
+	defer func() {
+		if err != nil {
+			alarm_msg.SendAlarmMsg(fmt.Sprintf(" UpdateUserIndexNum eta_forum_hub服务-更新用户累计新增指标数失败, ErrMsg: %s", err.Error()), 3)
+		}
+	}()
+	reqJson, e := json.Marshal(pars)
+	if e != nil {
+		err = fmt.Errorf("data json marshal err: %s", e.Error())
+		return
+	}
+
+	_, resultByte, err := post(string(reqJson), "/v1/eta_trial/user/update_index_num")
+	resp := new(models.BaseResponse)
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
+		return
+	}
+	if resp.Ret != 200 {
+		err = fmt.Errorf("result: %s, errmsg: %s", resp.Msg, resp.ErrMsg)
+		return
+	}
+	res = true
+	return
+}
+
+// UpdateUserChartNum eta_forum_hub服务-更新用户累计新增图表数
+func UpdateUserChartNum(pars EtaTrialUserReq) (res bool, err error) {
+	defer func() {
+		if err != nil {
+			alarm_msg.SendAlarmMsg(fmt.Sprintf("UpdateUserChartNum eta_forum_hub服务-更新用户累计新增图表数失败, ErrMsg: %s", err.Error()), 3)
+		}
+	}()
+	reqJson, e := json.Marshal(pars)
+	if e != nil {
+		err = fmt.Errorf("data json marshal err: %s", e.Error())
+		return
+	}
+
+	_, resultByte, err := post(string(reqJson), "/v1/eta_trial/user/update_chart_num")
+	resp := new(models.BaseResponse)
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
+		return
+	}
+	if resp.Ret != 200 {
+		err = fmt.Errorf("result: %s, errmsg: %s", resp.Msg, resp.ErrMsg)
+		return
+	}
+	res = true
+	return
+}
+
+// UpdateEtaTrialUserActiveTimeReq 更新试用客户活跃时长请求体
+type UpdateEtaTrialUserActiveTimeReq struct {
+	Mobile     string `description:"手机号"`
+	UserName   string `description:"用户姓名"`
+	ActiveTime int    `description:"活跃时长, 单位秒"`
+	Part       string `description:"活跃板块"`
+}
+
+// UpdateEtaTrialUserActiveTime eta_forum_hub服务-更新试用客户活跃时长
+func UpdateEtaTrialUserActiveTime(pars UpdateEtaTrialUserActiveTimeReq) (res bool, err error) {
+	defer func() {
+		if err != nil {
+			alarm_msg.SendAlarmMsg(fmt.Sprintf("UpdateEtaTrialUserActiveTime eta_forum_hub服务-更新试用客户活跃时长失败, ErrMsg: %s", err.Error()), 3)
+		}
+	}()
+	reqJson, e := json.Marshal(pars)
+	if e != nil {
+		err = fmt.Errorf("data json marshal err: %s", e.Error())
+		return
+	}
+
+	_, resultByte, err := post(string(reqJson), "/v1/eta_trial/user/update_active_time")
+	resp := new(models.BaseResponse)
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
+		return
+	}
+	if resp.Ret != 200 {
+		err = fmt.Errorf("result: %s, errmsg: %s", resp.Msg, resp.ErrMsg)
+		return
+	}
+	res = true
+	return
+}
+
+// UpdateEtaTrialUserLoginDurationReq 更新试用客户登录时长请求体
+type UpdateEtaTrialUserLoginDurationReq struct {
+	Mobile     string `description:"手机号"`
+	UserName   string `description:"用户姓名"`
+	ActiveTime int    `description:"活跃时长, 单位秒"`
+}
+
+// UpdateEtaTrialUserLoginDuration eta_forum_hub服务-更新试用客户登录时长
+func UpdateEtaTrialUserLoginDuration(pars UpdateEtaTrialUserLoginDurationReq) (res bool, err error) {
+	defer func() {
+		if err != nil {
+			alarm_msg.SendAlarmMsg(fmt.Sprintf("UpdateEtaTrialUserLoginDuration eta_forum_hub服务-更新试用客户登录时长失败, ErrMsg: %s", err.Error()), 3)
+		}
+	}()
+	reqJson, e := json.Marshal(pars)
+	if e != nil {
+		err = fmt.Errorf("data json marshal err: %s", e.Error())
+		return
+	}
+
+	_, resultByte, err := post(string(reqJson), "/v1/eta_trial/user/update_login_duration")
+	resp := new(models.BaseResponse)
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
+		return
+	}
+	if resp.Ret != 200 {
+		err = fmt.Errorf("result: %s, errmsg: %s", resp.Msg, resp.ErrMsg)
+		return
+	}
+	res = true
+	return
+}

+ 189 - 382
services/eta_trial/user.go

@@ -4,6 +4,7 @@ import (
 	"encoding/json"
 	"eta/eta_api/models"
 	"eta/eta_api/models/eta_trial"
+	"eta/eta_api/services/alarm_msg"
 	"eta/eta_api/utils"
 	"fmt"
 	"io/ioutil"
@@ -16,57 +17,28 @@ type EtaTrialUserReq struct {
 	Mobile string `description:"手机号"`
 }
 
-// UpdateEtaTrialUserLogin CRM_ETA服务-更新试用客户最后登录时间和次数
+// UpdateEtaTrialUserLogin eta_forum_hub服务-更新试用客户最后登录时间和次数
 func UpdateEtaTrialUserLogin(pars EtaTrialUserReq) (res bool, err error) {
-	url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/eta_trial/user/update_login")
-	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()
+		if err != nil {
+			alarm_msg.SendAlarmMsg(fmt.Sprintf("GetEtaTrialMobileCount, 新增试用客户手工录入权限失败, ErrMsg: %s", err.Error()), 3)
+		}
 	}()
-	b, e := ioutil.ReadAll(resp.Body)
+
+	reqJson, e := json.Marshal(pars)
 	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")
+		err = fmt.Errorf("data json marshal err: %s", e.Error())
 		return
 	}
-	// 生产环境解密, 注意有个坑前后的双引号
-	if utils.RunMode == "release" {
-		str := string(b)
-		str = strings.Trim(str, `"`)
-		b = utils.DesBase64Decrypt([]byte(str), utils.CrmEtaServerDes3Key)
-	}
 
-	result := new(models.ResultData)
-	if e = json.Unmarshal(b, &result); e != nil {
-		err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
+	_, resultByte, err := post(string(reqJson), "/v1/eta_trial/user/update_login")
+	resp := new(models.BaseResponse)
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
 		return
 	}
-	if result.Code != 200 {
-		err = fmt.Errorf("result: %s", string(b))
+	if resp.Ret != 200 {
+		err = fmt.Errorf("result: %s, errmsg: %s", resp.Msg, resp.ErrMsg)
 		return
 	}
 	res = true
@@ -79,185 +51,89 @@ type GetEtaTrialUserReq struct {
 }
 
 type EtaTrialUserResp struct {
-	Code   int                        `json:"code" description:"状态码"`
-	Msg    string                     `json:"msg" description:"提示信息"`
-	Data   eta_trial.EtaTrialUserItem `json:"data" description:"返回数据"`
-	ErrMsg string                     `json:"-" description:"错误信息,不用返回给前端,只是做日志记录"`
+	Ret     int
+	Msg     string
+	ErrMsg  string
+	ErrCode string
+	Data    eta_trial.EtaTrialUserItem
+	Success bool `description:"true 执行成功,false 执行失败"`
 }
 
-// GetEtaTrialUser CRM_ETA服务-获取试用客户信息
+// GetEtaTrialUser eta_forum_hub服务-获取试用客户信息
 func GetEtaTrialUser(pars GetEtaTrialUserReq) (res eta_trial.EtaTrialUserItem, err error) {
-	url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/eta_trial/user/mobile_fetch")
-	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()
+		if err != nil {
+			alarm_msg.SendAlarmMsg(fmt.Sprintf("GetEtaTrialUser, 获取试用客户信息, ErrMsg: %s", err.Error()), 3)
+		}
 	}()
-	b, e := ioutil.ReadAll(resp.Body)
+	reqJson, e := json.Marshal(pars)
 	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")
+		err = fmt.Errorf("data json marshal err: %s", e.Error())
 		return
 	}
-	// 生产环境解密, 注意有个坑前后的双引号
-	if utils.RunMode == "release" {
-		str := string(b)
-		str = strings.Trim(str, `"`)
-		b = utils.DesBase64Decrypt([]byte(str), utils.CrmEtaServerDes3Key)
-	}
 
-	//result := new(models.ResultData)
-	result := new(EtaTrialUserResp)
-	if e = json.Unmarshal(b, &result); e != nil {
-		err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
+	_, resultByte, err := post(string(reqJson), "/v1/eta_trial/user/mobile_fetch")
+	resp := new(EtaTrialUserResp)
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
 		return
 	}
-	utils.FileLog.Info("%s", string(b))
-	if result.Code != 200 {
-		err = fmt.Errorf("result: %s", string(b))
+	if resp.Ret != 200 {
+		err = fmt.Errorf("result: %s, errmsg: %s", resp.Msg, resp.ErrMsg)
 		return
 	}
-	res = result.Data
-	//r, ok := result.Data.(eta_trial.EtaTrialUserResp)
-	//if !ok {
-	//	err = fmt.Errorf("result data err")
-	//	return
-	//}
-	//res = r
+	res = resp.Data
 	return
 }
 
-// DisableEtaTrialUser CRM_ETA服务-禁用试用客户
+// DisableEtaTrialUser eta_forum_hub服务-禁用试用客户
 func DisableEtaTrialUser(pars EtaTrialUserReq) (res bool, err error) {
-	url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/eta_trial/user/disable")
-	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()
+		if err != nil {
+			alarm_msg.SendAlarmMsg(fmt.Sprintf("DisableEtaTrialUser eta_forum_hub服务-禁用试用客户, ErrMsg: %s", err.Error()), 3)
+		}
 	}()
-	b, e := ioutil.ReadAll(resp.Body)
+	reqJson, e := json.Marshal(pars)
 	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")
+		err = fmt.Errorf("data json marshal err: %s", e.Error())
 		return
 	}
-	// 生产环境解密, 注意有个坑前后的双引号
-	if utils.RunMode == "release" {
-		str := string(b)
-		str = strings.Trim(str, `"`)
-		b = utils.DesBase64Decrypt([]byte(str), utils.CrmEtaServerDes3Key)
-	}
 
-	result := new(models.ResultData)
-	if e = json.Unmarshal(b, &result); e != nil {
-		err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
+	_, resultByte, err := post(string(reqJson), "/v1/eta_trial/user/disable")
+	resp := new(models.BaseResponse)
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
 		return
 	}
-	if result.Code != 200 {
-		err = fmt.Errorf("result: %s", string(b))
+	if resp.Ret != 200 {
+		err = fmt.Errorf("result: %s, errmsg: %s", resp.Msg, resp.ErrMsg)
 		return
 	}
 	res = true
 	return
 }
 
-// RemoveEtaTrialUser CRM_ETA服务-删除试用客户
+// RemoveEtaTrialUser eta_forum_hub服务-删除试用客户
 func RemoveEtaTrialUser(pars EtaTrialUserReq) (res bool, err error) {
-	url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/eta_trial/user/remove")
-	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()
+		if err != nil {
+			alarm_msg.SendAlarmMsg(fmt.Sprintf("RemoveEtaTrialUser eta_forum_hub服务-删除试用客户失败, ErrMsg: %s", err.Error()), 3)
+		}
 	}()
-	b, e := ioutil.ReadAll(resp.Body)
+	reqJson, e := json.Marshal(pars)
 	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")
+		err = fmt.Errorf("data json marshal err: %s", e.Error())
 		return
 	}
-	// 生产环境解密, 注意有个坑前后的双引号
-	if utils.RunMode == "release" {
-		str := string(b)
-		str = strings.Trim(str, `"`)
-		b = utils.DesBase64Decrypt([]byte(str), utils.CrmEtaServerDes3Key)
-	}
 
-	result := new(models.ResultData)
-	if e = json.Unmarshal(b, &result); e != nil {
-		err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
+	_, resultByte, err := post(string(reqJson), "/v1/eta_trial/user/remove")
+	resp := new(models.BaseResponse)
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
 		return
 	}
-	if result.Code != 200 {
-		err = fmt.Errorf("result: %s", string(b))
+	if resp.Ret != 200 {
+		err = fmt.Errorf("result: %s, errmsg: %s", resp.Msg, resp.ErrMsg)
 		return
 	}
 	res = true
@@ -272,171 +148,81 @@ type EtaTrialUserEditReq struct {
 	Enabled  int    `description:"禁启用"`
 }
 
-// EditEtaTrialUser CRM_ETA服务-编辑试用客户
+// EditEtaTrialUser eta_forum_hub服务-编辑试用客户
 func EditEtaTrialUser(pars EtaTrialUserEditReq) (res bool, err error) {
-	url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/eta_trial/user/edit")
-	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()
+		if err != nil {
+			alarm_msg.SendAlarmMsg(fmt.Sprintf("EditEtaTrialUser eta_forum_hub服务-编辑试用客户失败, ErrMsg: %s", err.Error()), 3)
+		}
 	}()
-	b, e := ioutil.ReadAll(resp.Body)
+	reqJson, e := json.Marshal(pars)
 	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")
+		err = fmt.Errorf("data json marshal err: %s", e.Error())
 		return
 	}
-	// 生产环境解密, 注意有个坑前后的双引号
-	if utils.RunMode == "release" {
-		str := string(b)
-		str = strings.Trim(str, `"`)
-		b = utils.DesBase64Decrypt([]byte(str), utils.CrmEtaServerDes3Key)
-	}
 
-	result := new(models.ResultData)
-	if e = json.Unmarshal(b, &result); e != nil {
-		err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
+	_, resultByte, err := post(string(reqJson), "/v1/eta_trial/user/edit")
+	resp := new(models.BaseResponse)
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
 		return
 	}
-	if result.Code != 200 {
-		err = fmt.Errorf("result: %s", string(b))
+	if resp.Ret != 200 {
+		err = fmt.Errorf("result: %s, errmsg: %s", resp.Msg, resp.ErrMsg)
 		return
 	}
 	res = true
 	return
 }
 
-// UpdateUserIndexNum CRM_ETA服务-更新用户累计新增指标数
+// UpdateUserIndexNum eta_forum_hub服务-更新用户累计新增指标数
 func UpdateUserIndexNum(pars EtaTrialUserReq) (res bool, err error) {
-	url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/eta_trial/user/update_index_num")
-	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()
+		if err != nil {
+			alarm_msg.SendAlarmMsg(fmt.Sprintf(" UpdateUserIndexNum eta_forum_hub服务-更新用户累计新增指标数失败, ErrMsg: %s", err.Error()), 3)
+		}
 	}()
-	b, e := ioutil.ReadAll(resp.Body)
+	reqJson, e := json.Marshal(pars)
 	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")
+		err = fmt.Errorf("data json marshal err: %s", e.Error())
 		return
 	}
-	// 生产环境解密, 注意有个坑前后的双引号
-	if utils.RunMode == "release" {
-		str := string(b)
-		str = strings.Trim(str, `"`)
-		b = utils.DesBase64Decrypt([]byte(str), utils.CrmEtaServerDes3Key)
-	}
 
-	result := new(models.ResultData)
-	if e = json.Unmarshal(b, &result); e != nil {
-		err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
+	_, resultByte, err := post(string(reqJson), "/v1/eta_trial/user/update_index_num")
+	resp := new(models.BaseResponse)
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
 		return
 	}
-	if result.Code != 200 {
-		err = fmt.Errorf("result: %s", string(b))
+	if resp.Ret != 200 {
+		err = fmt.Errorf("result: %s, errmsg: %s", resp.Msg, resp.ErrMsg)
 		return
 	}
 	res = true
 	return
 }
 
-// UpdateUserChartNum CRM_ETA服务-更新用户累计新增图表数
+// UpdateUserChartNum eta_forum_hub服务-更新用户累计新增图表数
 func UpdateUserChartNum(pars EtaTrialUserReq) (res bool, err error) {
-	url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/eta_trial/user/update_chart_num")
-	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()
+		if err != nil {
+			alarm_msg.SendAlarmMsg(fmt.Sprintf("UpdateUserChartNum eta_forum_hub服务-更新用户累计新增图表数失败, ErrMsg: %s", err.Error()), 3)
+		}
 	}()
-	b, e := ioutil.ReadAll(resp.Body)
+	reqJson, e := json.Marshal(pars)
 	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")
+		err = fmt.Errorf("data json marshal err: %s", e.Error())
 		return
 	}
-	// 生产环境解密, 注意有个坑前后的双引号
-	if utils.RunMode == "release" {
-		str := string(b)
-		str = strings.Trim(str, `"`)
-		b = utils.DesBase64Decrypt([]byte(str), utils.CrmEtaServerDes3Key)
-	}
 
-	result := new(models.ResultData)
-	if e = json.Unmarshal(b, &result); e != nil {
-		err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
+	_, resultByte, err := post(string(reqJson), "/v1/eta_trial/user/update_chart_num")
+	resp := new(models.BaseResponse)
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
 		return
 	}
-	if result.Code != 200 {
-		err = fmt.Errorf("result: %s", string(b))
+	if resp.Ret != 200 {
+		err = fmt.Errorf("result: %s, errmsg: %s", resp.Msg, resp.ErrMsg)
 		return
 	}
 	res = true
@@ -451,57 +237,27 @@ type UpdateEtaTrialUserActiveTimeReq struct {
 	Part       string `description:"活跃板块"`
 }
 
-// UpdateEtaTrialUserActiveTime CRM_ETA服务-更新试用客户活跃时长
+// UpdateEtaTrialUserActiveTime eta_forum_hub服务-更新试用客户活跃时长
 func UpdateEtaTrialUserActiveTime(pars UpdateEtaTrialUserActiveTimeReq) (res bool, err error) {
-	url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/eta_trial/user/update_active_time")
-	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()
+		if err != nil {
+			alarm_msg.SendAlarmMsg(fmt.Sprintf("UpdateEtaTrialUserActiveTime eta_forum_hub服务-更新试用客户活跃时长失败, ErrMsg: %s", err.Error()), 3)
+		}
 	}()
-	b, e := ioutil.ReadAll(resp.Body)
+	reqJson, e := json.Marshal(pars)
 	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")
+		err = fmt.Errorf("data json marshal err: %s", e.Error())
 		return
 	}
-	// 生产环境解密, 注意有个坑前后的双引号
-	if utils.RunMode == "release" {
-		str := string(b)
-		str = strings.Trim(str, `"`)
-		b = utils.DesBase64Decrypt([]byte(str), utils.CrmEtaServerDes3Key)
-	}
 
-	result := new(models.ResultData)
-	if e = json.Unmarshal(b, &result); e != nil {
-		err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
+	_, resultByte, err := post(string(reqJson), "/v1/eta_trial/user/update_active_time")
+	resp := new(models.BaseResponse)
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
 		return
 	}
-	if result.Code != 200 {
-		err = fmt.Errorf("result: %s", string(b))
+	if resp.Ret != 200 {
+		err = fmt.Errorf("result: %s, errmsg: %s", resp.Msg, resp.ErrMsg)
 		return
 	}
 	res = true
@@ -515,59 +271,110 @@ type UpdateEtaTrialUserLoginDurationReq struct {
 	ActiveTime int    `description:"活跃时长, 单位秒"`
 }
 
-// UpdateEtaTrialUserLoginDuration CRM_ETA服务-更新试用客户登录时长
+// UpdateEtaTrialUserLoginDuration eta_forum_hub服务-更新试用客户登录时长
 func UpdateEtaTrialUserLoginDuration(pars UpdateEtaTrialUserLoginDurationReq) (res bool, err error) {
-	url := fmt.Sprint(utils.CrmEtaServerUrl, "/api/eta_trial/user/update_login_duration")
-	params, e := json.Marshal(pars)
+	defer func() {
+		if err != nil {
+			alarm_msg.SendAlarmMsg(fmt.Sprintf("UpdateEtaTrialUserLoginDuration eta_forum_hub服务-更新试用客户登录时长失败, ErrMsg: %s", err.Error()), 3)
+		}
+	}()
+	reqJson, 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())
+	_, resultByte, err := post(string(reqJson), "/v1/eta_trial/user/update_login_duration")
+	resp := new(models.BaseResponse)
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
+		return
+	}
+	if resp.Ret != 200 {
+		err = fmt.Errorf("result: %s, errmsg: %s", resp.Msg, resp.ErrMsg)
 		return
 	}
+	res = true
+	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())
+// 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
 	}
-	defer func() {
-		_ = resp.Body.Close()
-	}()
-	b, e := ioutil.ReadAll(resp.Body)
-	if e != nil {
-		err = fmt.Errorf("resp body read err: %s", e.Error())
+	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
 	}
-	if len(b) == 0 {
-		err = fmt.Errorf("resp body is empty")
+	err = json.Unmarshal(result, &resp)
+	if err != nil {
 		return
 	}
-	// 生产环境解密, 注意有个坑前后的双引号
-	if utils.RunMode == "release" {
-		str := string(b)
-		str = strings.Trim(str, `"`)
-		b = utils.DesBase64Decrypt([]byte(str), utils.CrmEtaServerDes3Key)
+
+	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
+}
 
-	result := new(models.ResultData)
-	if e = json.Unmarshal(b, &result); e != nil {
-		err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
+// get
+func get(paramStr string, urlStr string) (resp *models.BaseResponse, result []byte, err error) {
+	if utils.ETA_FORUM_HUB_URL == "" {
+		err = fmt.Errorf("ETA社区桥接服务地址为空")
 		return
 	}
-	if result.Code != 200 {
-		err = fmt.Errorf("result: %s", string(b))
+	urlStr = urlStr + "?" + paramStr
+	getUrl := utils.ETA_FORUM_HUB_URL + urlStr
+	result, err = HttpGet(getUrl)
+	if err != nil {
+		err = fmt.Errorf("调用ETA社区桥接服务接口失败 error:%s", err.Error())
 		return
 	}
-	res = true
+	err = json.Unmarshal(result, &resp)
+	if err != nil {
+		return
+	}
+
 	return
 }
+
+func HttpGet(url string) ([]byte, error) {
+	client := &http.Client{}
+	req, err := http.NewRequest("GET", url, nil)
+	if err != nil {
+		return nil, err
+	}
+	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
+}

+ 16 - 1
services/ppt.go

@@ -11,6 +11,7 @@ import (
 	"eta/eta_api/utils"
 	"fmt"
 	"sort"
+	"strings"
 	"time"
 )
 
@@ -236,7 +237,21 @@ func pptContent2Html(content string, isEnglish bool) (htm string, err error) {
 				case ElementsTypeChart:
 					if isEnglish {
 						// 英文研报图表src多加一个fromPage=en, 表格暂时没有区分
-						htmlContent += fmt.Sprintf(`<iframe src="%s/chartshow?code=%s&fromPage=en" width="100%%" height="350" style="border-width:0px; min-height:350px;"></iframe>`, chartRoot, v.ChartId)
+						if strings.HasPrefix(v.ChartId, "isETAForumChart_") {
+							chartIdInfo := strings.Split(v.ChartId, "_")
+							if len(chartIdInfo) == 2 {
+								v.ChartId = chartIdInfo[1]
+							}
+							htmlContent += fmt.Sprintf(`<iframe src="%s/chartshow?code=%s&fromPage=en&isETAForumChart=true" width="100%%" height="350" style="border-width:0px; min-height:350px;"></iframe>`, chartRoot, v.ChartId)
+							break
+						}
+					}
+					if strings.HasPrefix(v.ChartId, "isETAForumChart_") {
+						chartIdInfo := strings.Split(v.ChartId, "_")
+						if len(chartIdInfo) == 2 {
+							v.ChartId = chartIdInfo[1]
+						}
+						htmlContent += fmt.Sprintf(`<iframe src="%s/chartshow?code=%s&isETAForumChart=true" width="100%%" height="350" style="border-width:0px; min-height:350px;"></iframe>`, chartRoot, v.ChartId)
 						break
 					}
 					htmlContent += fmt.Sprintf(`<iframe src="%s/chartshow?code=%s" width="100%%" height="350" style="border-width:0px; min-height:350px;"></iframe>`, chartRoot, v.ChartId)