浏览代码

Merge branch 'master' of http://8.136.199.33:3000/hongze/hz_crm_api into crm/crm_14.7.1

xingzai 10 月之前
父节点
当前提交
fbc7dda345

+ 6 - 6
controllers/company_seller.go

@@ -2634,12 +2634,12 @@ func (this *CompanySellerController) CheckListRai() {
 	}
 	roleCodeTypeStr := ``
 	productId := utils.COMPANY_PRODUCT_RAI_ID
-	roleCodeTypeStr = `"` + utils.ROLE_TYPE_CODE_RAI_SELLER + `","` + utils.ROLE_TYPE_CODE_RAI_GROUP + `"`
+	//roleCodeTypeStr = `"` + utils.ROLE_TYPE_CODE_RAI_SELLER + `","` + utils.ROLE_TYPE_CODE_RAI_GROUP + `"`
 
-	if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
-		// 权益管理员,查看所有权益的账号
-		roleCodeTypeStr = `"` + utils.ROLE_TYPE_CODE_RAI_SELLER + `","` + utils.ROLE_TYPE_CODE_RAI_GROUP + `","` + utils.ROLE_TYPE_CODE_RAI_RESEARCHR + `","` + utils.ROLE_TYPE_CODE_RAI_ADMIN + `"`
-	}
+	//if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
+	// 权益管理员,查看所有权益的账号
+	roleCodeTypeStr = `"` + utils.ROLE_TYPE_CODE_RAI_SELLER + `","` + utils.ROLE_TYPE_CODE_RAI_GROUP + `","` + utils.ROLE_TYPE_CODE_RAI_RESEARCHR + `","` + utils.ROLE_TYPE_CODE_RAI_ADMIN + `"`
+	//}
 
 	getAllSeller, _ := this.GetBool("AllSeller", false)
 	status, _ := this.GetInt("Status", 0)
@@ -5167,4 +5167,4 @@ func (this *CompanySellerController) ShareCheckList2() {
 	br.Data = company.DepartmentGroupSellersResp{
 		List: list,
 	}
-}
+}

+ 8 - 0
controllers/cygx/user_admin_share_history.go

@@ -22,6 +22,7 @@ type UserAdminShareHistoryController struct {
 // @Param   EndDate   query   string  false       "结束时间,列如2021-03-06 "
 // @Param   AdminId   query   string  false       "销售ID "
 // @Param   KeyWord   query   string  false       "搜索关键词"
+// @Param   Action   query   string	  false       "用户行为"
 // @Success Ret=200 {object} cygx.GetCygxUserAdminShareHistoryListResp
 // @router /mfyx/admin/share/list [get]
 func (this *UserAdminShareHistoryController) OrderList() {
@@ -44,6 +45,7 @@ func (this *UserAdminShareHistoryController) OrderList() {
 	endDate := this.GetString("EndDate")
 	adminId := this.GetString("AdminId")
 	keyWord := this.GetString("KeyWord")
+	action := this.GetString("Action")
 
 	var startSize int
 	if pageSize <= 0 {
@@ -67,6 +69,12 @@ func (this *UserAdminShareHistoryController) OrderList() {
 		condition += ` 	AND share_id IN (` + adminId + `) `
 	}
 
+	//用户行为搜索
+	if action == "查看专栏" || action == "查看报告" || action == "查看活动" || action == "注册" {
+		condition += " 	AND action = ? "
+		pars = append(pars, action)
+	}
+
 	//如果不是权益管理员和admin,就做可见权限限制
 	if sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_RAI_ADMIN && sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_ADMIN {
 		condition += ` 	AND share_id IN (` + strconv.Itoa(sysUser.AdminId) + `) `

+ 35 - 17
controllers/eta_business/eta_business.go

@@ -162,6 +162,14 @@ func (this *EtaBusinessController) PageList() {
 			cond += fmt.Sprintf(` AND %s = ?`, eta_business.EtaBusinessColumns.IndustryId)
 			pars = append(pars, industryId)
 		}
+
+		// 国家
+		nation := this.GetString("Nation", "")
+		nation = strings.TrimSpace(nation)
+		if nation != "" {
+			cond += ` AND nation = ? `
+			pars = append(pars, nation)
+		}
 	}
 
 	order := ``
@@ -228,6 +236,7 @@ func (this *EtaBusinessController) PageList() {
 		b.ExpiredTime = utils.TimeTransferString(utils.FormatDate, v.ExpiredTime)
 		b.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
 		b.ModifyTime = v.ModifyTime.Format(utils.FormatDateTime)
+		b.Nation = v.Nation
 		items = append(items, b)
 	}
 
@@ -291,15 +300,18 @@ func (this *EtaBusinessController) Add() {
 		return
 	}
 	req.Province = strings.TrimSpace(req.Province)
-	if req.Province == "" {
-		br.Msg = "省份不可为空"
-		return
-	}
-	req.City = strings.TrimSpace(req.City)
-	if req.City == "" {
-		br.Msg = "城市不可为空"
-		return
+	if req.Nation == "" {
+		if req.Province == "" {
+			br.Msg = "省份不可为空"
+			return
+		}
+		req.City = strings.TrimSpace(req.City)
+		if req.City == "" {
+			br.Msg = "城市不可为空"
+			return
+		}
 	}
+
 	req.Leader = strings.TrimSpace(req.Leader)
 	if req.Leader == "" {
 		br.Msg = "决策人不可为空"
@@ -431,6 +443,7 @@ func (this *EtaBusinessController) Add() {
 	businessItem.ExpiredTime = expiredTime
 	businessItem.CreateTime = now
 	businessItem.ModifyTime = now
+	businessItem.Nation = req.Nation
 	contractItem := new(eta_business.EtaBusinessContract)
 	if !signTime.IsZero() && !expiredTime.IsZero() {
 		contractItem.SigningTime = signTime
@@ -505,16 +518,19 @@ func (this *EtaBusinessController) Edit() {
 		br.ErrMsg = "参数有误, 商家ID为空"
 		return
 	}
-	req.Province = strings.TrimSpace(req.Province)
-	if req.Province == "" {
-		br.Msg = "省份不可为空"
-		return
-	}
-	req.City = strings.TrimSpace(req.City)
-	if req.City == "" {
-		br.Msg = "城市不可为空"
-		return
+	if req.Nation == "" {
+		req.Province = strings.TrimSpace(req.Province)
+		if req.Province == "" {
+			br.Msg = "省份不可为空"
+			return
+		}
+		req.City = strings.TrimSpace(req.City)
+		if req.City == "" {
+			br.Msg = "城市不可为空"
+			return
+		}
 	}
+
 	req.Leader = strings.TrimSpace(req.Leader)
 	if req.Leader == "" {
 		br.Msg = "决策人不可为空"
@@ -566,6 +582,7 @@ func (this *EtaBusinessController) Edit() {
 	item.CapitalScale = req.CapitalScale
 	item.ResearchTeamSize = req.ResearchTeamSize
 	item.UserMax = req.UserMax
+	item.Nation = req.Nation
 	item.ModifyTime = time.Now().Local()
 	cols := []string{
 		"Province", "City", "Address", "Leader", "IndustryId", "IndustryName", "CapitalScale", "ResearchTeamSize", "UserMax", "ModifyTime",
@@ -1039,6 +1056,7 @@ func (this *EtaBusinessController) Detail() {
 	resp.ExpiredTime = utils.TimeTransferString(utils.FormatDate, item.ExpiredTime)
 	resp.CreateTime = item.CreateTime.Format(utils.FormatDateTime)
 	resp.ModifyTime = item.ModifyTime.Format(utils.FormatDateTime)
+	resp.Nation = item.Nation
 
 	br.Data = resp
 	br.Ret = 200

+ 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 = "获取成功"
+}

+ 164 - 0
controllers/yb_research_signup_statistics.go

@@ -0,0 +1,164 @@
+package controllers
+
+import (
+	"hongze/hz_crm_api/models"
+)
+
+// @Title 调研报名统计列表
+// @Description 获取分类
+// @Success 200 {object} models.BannerListResp
+// @router /research_statistics/list [get]
+func (this *BannerController) StatisticsList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	list, err := models.GetYbResearchSignupStatisticsItems()
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	resp := new(models.YbResearchSignupStatisticsResp)
+
+	for _, v := range list {
+		if v.Enable == 1 {
+			resp.OngoingList = append(resp.OngoingList, v)
+		} else {
+			resp.OverList = append(resp.OverList, v)
+		}
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// @Title 调研报名统计列表
+// @Description 获取分类
+// @Param   BannerId   query   int  true       "图片id"
+// @Success 200 {object} models.BannerListResp
+// @router /research_statistics/item [get]
+func (this *BannerController) StatisticsItem() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	bannerId, _ := this.GetInt("BannerId")
+
+	if bannerId <= 0 {
+		br.Msg = "参数错误"
+		br.ErrMsg = "参数错误"
+		return
+	}
+	var resp models.YbResearchSignupStatisticsItemsResp
+
+
+	list, err := models.GetYbResearchSignupStatisticsItemsById(bannerId)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "GetYbResearchSignupStatisticsItemsById,Err:" + err.Error()
+		return
+	}
+	resp.List = list
+	for _, v := range list {
+		resp.Total += v.Count
+	}
+
+	amountList, err := models.GetYbResearchSignupStatisticsAmount(bannerId)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "GetYbResearchSignupStatisticsAmount,Err:" + err.Error()
+		return
+	}
+	for _, v := range amountList {
+		if v.Amount > 0 {
+			resp.HasPayed.Amount += v.Amount
+			resp.HasPayed.Count += 1
+		} else {
+			resp.NoPay.Count += 1
+		}
+	}
+	resp.HasPayed.Name = "已付款"
+	resp.NoPay.Name = "未付款"
+	resp.NoPay.Percentage = resp.NoPay.Count * 100 / resp.Total
+	resp.HasPayed.Percentage = resp.HasPayed.Count * 100 / resp.Total
+
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// @Title 调研报名统计列表
+// @Description 获取分类
+// @Param   Mobile   query   int  true       "分享人手机号"
+// @Success 200 {object} models.BannerListResp
+// @router /research_statistics/detail [get]
+func (this *BannerController) StatisticsDetail() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	mobile := this.GetString("Mobile")
+	bannerId, _ := this.GetInt("BannerId")
+
+	if mobile == "" {
+		br.Msg = "参数错误"
+		br.ErrMsg = "参数错误"
+		return
+	}
+	list, err := models.GetYbResearchSignupStatisticsItemsByMobile(mobile, bannerId)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = list
+}
+
+// @Title 调研报名统计列表
+// @Description 获取分类
+// @Param   Amount   query   float64  true       "付款金额"
+// @Param   YbResearchSignupStatisticsId   query   int  true       "报名id"
+// @Success 200 {object} models.BannerListResp
+// @router /research_statistics/amount [get]
+func (this *BannerController) Amount() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	ybResearchSignupStatisticsId, _ := this.GetInt("YbResearchSignupStatisticsId")
+	amount, _ := this.GetFloat("Amount")
+
+	if ybResearchSignupStatisticsId <= 0 {
+		br.Msg = "参数错误"
+		br.ErrMsg = "参数错误"
+		return
+	}
+
+	err := models.UpdateYbResearchSignupStatisticsAmountById(amount, ybResearchSignupStatisticsId)
+	if err != nil {
+		br.Msg = "更新付款金额失败"
+		br.ErrMsg = "UpdateYbResearchSignupStatisticsAmountById,Err:" + err.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "修改成功"
+}

+ 4 - 0
models/eta_business/eta_business.go

@@ -41,6 +41,7 @@ type EtaBusiness struct {
 	ExpiredTime      time.Time `description:"当前合约的到期时间"`
 	CreateTime       time.Time `description:"创建时间"`
 	ModifyTime       time.Time `description:"更新时间"`
+	Nation           string    `description:"所属国家"`
 }
 
 func (m *EtaBusiness) TableName() string {
@@ -247,6 +248,7 @@ type EtaBusinessAddReq struct {
 	SigningTime      string `description:"签约时间"`
 	ExpiredTime      string `description:"到期时间"`
 	IsCheck          bool   `description:"是否只做校验而不实际新增(业务操作上基础信息和签约时间分成两个步骤了)"`
+	Nation           string `description:"所属国家"`
 }
 
 // EtaBusinessEditReq 编辑商家请求体
@@ -260,6 +262,7 @@ type EtaBusinessEditReq struct {
 	CapitalScale     string `description:"资金规模"`
 	ResearchTeamSize string `description:"研究团队规模"`
 	UserMax          int    `description:"用户上限"`
+	Nation           string `description:"所属国家"`
 }
 
 // EtaBusinessSigningReq 商家签约请求体
@@ -325,4 +328,5 @@ type EtaBusinessItem struct {
 	ExpiredTime      string `description:"当前合约的到期时间"`
 	CreateTime       string `description:"创建时间"`
 	ModifyTime       string `description:"更新时间"`
+	Nation           string `description:"所属国家"`
 }

+ 140 - 0
models/yb_research_signup_statistics.go

@@ -0,0 +1,140 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// YbResearchSignupStatistics 调研报名统计结构体
+type YbResearchSignupStatistics struct {
+	YbResearchSignupStatisticsId int       // 主键ID
+	UserId                       int       // 分享人ID
+	RealName                     string    // 分享人姓名
+	Mobile                       string    // 分享人手机号
+	CompanyName                  string    // 公司名称
+	BannerId                     int       // 活动ID
+	CreateTime                   time.Time // 创建时间
+	Amount                       float64   // 付款金额
+	CustomName                   string    // 报名人姓名
+	CustomMobile                 string    // 报名人手机号
+	CustomCompanyName            string    // 报名人公司名称
+}
+
+type YbResearchSignupStatisticsListItem struct {
+	YbResearchSignupStatisticsId int     // 主键ID
+	BannerId                     int     // 活动ID
+	Amount                       float64 // 付款金额
+	Count                        int     // 报名人数
+	Remark                       string  // 备注-活动名称
+	StartDate                    string  // 活动开始时间
+	EndDate                      string  // 活动结束时间
+	Enable                       int     // 1:有效,0:禁用
+}
+
+func GetYbResearchSignupStatisticsItems() (items []*YbResearchSignupStatisticsListItem, err error) {
+	sql := ` SELECT
+	a.*,
+	b.start_date,
+	b.end_date,
+	b.remark,
+	b.enable,
+	COUNT( 1 ) AS count 
+FROM
+	yb_research_signup_statistics AS a
+	INNER JOIN banner AS b ON a.banner_id = b.id 
+WHERE
+	1 = 1 
+GROUP BY
+	a.banner_id 
+ORDER BY
+	start_date DESC `
+	o := orm.NewOrm()
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+type YbResearchSignupStatisticsResp struct {
+	OngoingList []*YbResearchSignupStatisticsListItem
+	OverList    []*YbResearchSignupStatisticsListItem
+}
+
+type YbResearchSignupStatisticsItem struct {
+	YbResearchSignupStatisticsId int     // 主键ID
+	UserId                       int     // 分享人ID
+	RealName                     string  // 分享人姓名
+	Mobile                       string  // 分享人手机号
+	CompanyName                  string  // 公司名称
+	BannerId                     int     // 活动ID
+	CreateTime                   string  // 创建时间
+	Amount                       float64 // 付款金额
+	CustomName                   string  // 报名人姓名
+	CustomMobile                 string  // 报名人手机号
+	CustomCompanyName            string  // 报名人公司名称
+	Count                        int     // 报名人数
+	Enable                       int     // 1:有效,0:禁用
+}
+
+type YbResearchSignupStatisticsItemsResp struct {
+	List     []*YbResearchSignupStatisticsItem
+	Total    int
+	HasPayed PayItem
+	NoPay    PayItem
+}
+type PayItem struct {
+	Name       string
+	Count      int
+	Amount     float64
+	Percentage int
+}
+
+func GetYbResearchSignupStatisticsItemsById(bannerId int) (items []*YbResearchSignupStatisticsItem, err error) {
+	sql := ` SELECT
+	*,count(1) as count
+FROM
+	yb_research_signup_statistics 
+WHERE
+	1 = 1 and banner_id = ?
+GROUP BY
+	mobile 
+ORDER BY
+	count DESC `
+	o := orm.NewOrm()
+	_, err = o.Raw(sql, bannerId).QueryRows(&items)
+	return
+}
+
+func GetYbResearchSignupStatisticsItemsByMobile(mobile string, bannerId int) (items []*YbResearchSignupStatisticsItem, err error) {
+	sql := `SELECT
+	a.*,b.enable
+FROM
+	yb_research_signup_statistics AS a
+	INNER JOIN banner AS b ON a.banner_id = b.id 
+WHERE
+	1 = 1 AND mobile = ? and banner_id = ? 
+ORDER BY
+	create_time DESC `
+	o := orm.NewOrm()
+	_, err = o.Raw(sql, mobile, bannerId).QueryRows(&items)
+	return
+}
+
+// UpdateYbResearchSignupStatistics 更新付款金额
+func UpdateYbResearchSignupStatisticsAmountById(amount float64, id int) (err error) {
+	o := orm.NewOrm()
+	sql := `UPDATE yb_research_signup_statistics SET amount=? WHERE yb_research_signup_statistics_id=?`
+	_, err = o.Raw(sql, amount, id).Exec()
+	return
+}
+
+func GetYbResearchSignupStatisticsAmount(bannerId int) (items []*YbResearchSignupStatisticsListItem, err error) {
+	sql := ` SELECT
+	a.*
+FROM
+	yb_research_signup_statistics AS a
+	INNER JOIN banner AS b ON a.banner_id = b.id 
+WHERE
+	1 = 1 AND a.banner_id = ? `
+	o := orm.NewOrm()
+	_, err = o.Raw(sql, bannerId).QueryRows(&items)
+	return
+}

+ 45 - 0
routers/commentsRouter.go

@@ -8899,6 +8899,42 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:BannerController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:BannerController"],
+        beego.ControllerComments{
+            Method: "Amount",
+            Router: `/research_statistics/amount`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:BannerController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:BannerController"],
+        beego.ControllerComments{
+            Method: "StatisticsDetail",
+            Router: `/research_statistics/detail`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:BannerController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:BannerController"],
+        beego.ControllerComments{
+            Method: "StatisticsItem",
+            Router: `/research_statistics/item`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:BannerController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:BannerController"],
+        beego.ControllerComments{
+            Method: "StatisticsList",
+            Router: `/research_statistics/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:BannerController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:BannerController"],
         beego.ControllerComments{
             Method: "BannerStatistic",
@@ -11284,6 +11320,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:SysUserAuthController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:SysUserAuthController"],
+        beego.ControllerComments{
+            Method: "GetEtaForumAdminAuthCode",
+            Router: `/forum_admin/auth_code`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:SysUserAuthController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:SysUserAuthController"],
         beego.ControllerComments{
             Method: "GetEtaAuthCode",

+ 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 `description:"用户名"`
+	Source    int    `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 {