Browse Source

Merge branch 'master' of http://8.136.199.33:3000/hongze/hz_crm_api into crm/crm_16.5

zhangchuanxing 3 weeks ago
parent
commit
c04be37b0a

+ 2 - 1
controllers/cygx/activity_meet.go

@@ -1484,7 +1484,8 @@ func (this *ActivityMeetCoAntroller) AttendanceDetail() {
 				isBloneSell = true
 			}
 			//如果这个活动属于销售创建,而且不是这个销售自己查看的,并且查看的角色不属于管理员或者权益管理员,那么就做限制处理
-			if isBloneSell && sysUser.AdminId != adminInfoActivity.AdminId && (sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_ADMIN && sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_RAI_ADMIN) {
+			if isBloneSell && sysUser.AdminId != adminInfoActivity.AdminId && (sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_ADMIN && sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_RAI_ADMIN) && !strings.Contains(activityInfo.AdminName, "6") {
+				//销售的6账号建的会,也可以让所有销售看到 需求池1020 2025-01-21
 				isProhibit = true //限制又取消了。2023-06-14 ,2024.09.04又开启了
 			}
 		}

+ 2 - 2
controllers/cygx/contract_allocation.go

@@ -616,7 +616,7 @@ func (this *ContractAllocationController) CompanyContracDetail() {
 	} else {
 		resp.TotalPointsContent = fmt.Sprint(resp.Money, "W")
 	}
-	sysUserList, err := cygx.GetAskEmailList()
+	sysUserList, err := cygx.GetAskEmailListPoint()
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,GetAskEmailList Err: " + err.Error()
@@ -1035,7 +1035,7 @@ func (this *ContractAllocationController) CompanyContractStatistics() {
 		}
 	}
 
-	sysUserList, err := cygx.GetAskEmailList()
+	sysUserList, err := cygx.GetAskEmailListPoint()
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,GetAskEmailList Err: " + err.Error()

+ 1 - 1
controllers/cygx/enter_score.go

@@ -117,7 +117,7 @@ func (this *EnterScoreController) EnterScoreDetail() {
 	var itemsGroup []*cygx.EnterScoreGroupListResp                     //自定义分组
 	if enterScoreId == 0 {
 		//权益研究员
-		sysUserList, err := cygx.GetAskEmailList()
+		sysUserList, err := cygx.GetAskEmailListPoint()
 		if err != nil {
 			br.Msg = "获取失败"
 			br.ErrMsg = "获取失败,GetAskEmailList Err: " + err.Error()

+ 3 - 0
controllers/cygx/summary_manage.go

@@ -240,6 +240,9 @@ func (this *SummaryManage) PreserveAndPublish() {
 		br.Msg = "请选择研选行业"
 		return
 	}
+	//买方研选自定义
+	item.ChartPermissionId = 31
+	item.ChartPermissionName = utils.CHART_PERMISSION_NAME_MAI_FANG_YANXUAN
 	charInfo, err := cygx.GetCategoryInfoByName(utils.CHART_PERMISSION_NAME_MF_YANXUAN)
 	if err != nil {
 		br.Msg = "操作失败"

+ 8 - 0
controllers/cygx/user.go

@@ -5841,6 +5841,10 @@ func exportListRsCalendar(this *UserController, list []*cygx.UserInteraction, ex
 	cellF.SetStyle(style)
 	cellF.SetValue("路演形式")
 
+	cellThem := titleRow.AddCell()
+	cellThem.SetStyle(style)
+	cellThem.SetValue("路演主题")
+
 	cellG := titleRow.AddCell()
 	cellG.SetStyle(style)
 	cellG.SetValue("主题标签")
@@ -5881,6 +5885,10 @@ func exportListRsCalendar(this *UserController, list []*cygx.UserInteraction, ex
 			cellFData.Value = "线下"
 		}
 
+		cellThemData := dataRow.AddCell()
+		cellThemData.SetStyle(style)
+		cellThemData.Value = v.RoadShowTheme
+
 		cellGData := dataRow.AddCell()
 		cellGData.SetStyle(style)
 		cellGData.Value = v.LabelKeyWord

+ 3 - 32
controllers/roadshow/calendar.go

@@ -73,7 +73,7 @@ func (this *CalendarController) Add() {
 	var checkIsAdd []string
 
 	//获取所有自定义的权益研究员
-	sysUserList, err := cygx.GetAskEmailList()
+	sysUserList, err := cygx.GetAskEmailListResearcher()
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,GetAskEmailList Err: " + err.Error()
@@ -84,17 +84,6 @@ func (this *CalendarController) Add() {
 		raiAskadminMap[v.AdminId] = true
 	}
 
-	sysUserFwang, e := system.GetSysUserByAdminName("fwang") // 手动拼接王芳到权益的策略行业下 start
-	if e != nil {
-		if e.Error() == utils.ErrNoRow() {
-			br.Msg = "用户不存在, 请检查"
-			return
-		}
-		br.Msg = "账号错误, 请重新输入"
-		br.ErrMsg = "fwang 用户名获取用户失败, Err: " + e.Error()
-		return
-	}
-	raiAskadminMap[sysUserFwang.AdminId] = true // 手动拼接王芳到权益的策略行业下 end
 	//var tipMsg string
 	for _, v := range req.ResearcherList {
 		if v.ResearcherId <= 0 {
@@ -661,7 +650,7 @@ func (this *CalendarController) Edit() {
 	for _, ev := range existList {
 		existResearcherMap[ev.ResearcherId] = ev.ResearcherName
 	}
-	sysUserList, err := cygx.GetAskEmailList()
+	sysUserList, err := cygx.GetAskEmailListResearcher()
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,GetAskEmailList Err: " + err.Error()
@@ -1109,7 +1098,7 @@ func (this *CalendarController) ResearcherList() {
 	for _, v := range sysUserList {
 		adminMap[v.AdminId] = v
 	}
-	askUserList, err := cygx.GetAskEmailList()
+	askUserList, err := cygx.GetAskEmailListResearcher()
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,GetAskEmailList Err: " + err.Error()
@@ -1127,24 +1116,6 @@ func (this *CalendarController) ResearcherList() {
 		mapPermissionId[v.PermissionName] = v.ChartPermissionId
 	}
 
-	sysUserFwang, e := system.GetSysUserByAdminName("fwang") // 手动拼接王芳到权益的策略行业下 start
-	if e != nil {
-		if e.Error() == utils.ErrNoRow() {
-			br.Msg = "用户不存在, 请检查"
-			return
-		}
-		br.Msg = "账号错误, 请重新输入"
-		br.ErrMsg = "fwang 用户名获取用户失败, Err: " + e.Error()
-		return
-	}
-	itemFwang := new(roadshow.ResearcherGroup)
-	itemFwang.AdminId = sysUserFwang.AdminId
-	itemFwang.GroupId = sysUserFwang.GroupId
-	itemFwang.GroupName = sysUserFwang.GroupName
-	itemFwang.RealName = sysUserFwang.RealName
-	itemFwang.RoleTypeCode = sysUserFwang.RoleTypeCode
-	mapPermissionUser["策略"] = append(mapPermissionUser["策略"], itemFwang) // 手动拼接王芳到权益的策略行业下 end
-
 	for _, v := range askUserList {
 		if admin, ok := adminMap[v.AdminId]; ok {
 			item := &roadshow.ResearcherGroup{

+ 269 - 11
controllers/roadshow/company.go

@@ -1,11 +1,14 @@
 package roadshow
 
 import (
+	"fmt"
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/company"
 	"hongze/hz_crm_api/models/roadshow"
+	"hongze/hz_crm_api/models/system"
 	"hongze/hz_crm_api/services"
 	"hongze/hz_crm_api/utils"
+	"strconv"
 	"strings"
 )
 
@@ -60,6 +63,8 @@ func (this *CalendarController) CompanySearch() {
 // @Description 我的日历列表接口
 // @Param   CompanyId   query   int  true       "公司id"
 // @Param   EnglishCompany   query   int  true       "是否为英文客户"
+// @Param   CompanyType   query   string  true       "客户类型:'ficc','权益',传空默认为ficc,"
+// @Param   RsReportRecordId   query   int	  true       "路演统计Id"
 // @Success 200 {object} roadshow.CompanyDetailView
 // @router /company/detail [get]
 func (this *CalendarController) CompanyDetail() {
@@ -84,12 +89,21 @@ func (this *CalendarController) CompanyDetail() {
 		return
 	}
 	englishCompany, _ := this.GetInt("EnglishCompany")
+	companyType := this.GetString("CompanyType")
+	rsReportRecordId, _ := this.GetInt("RsReportRecordId")
 	productId := services.GetProductId(sysUser.RoleTypeCode)
 	if productId == 0 {
 		productId = 1
 	}
+
+	if companyType == utils.COMPANY_CLASSIFY_RAI {
+		productId = 2
+	}
 	detailView := new(roadshow.CompanyDetailView)
 	if englishCompany == 0 {
+		var companyStatus string
+		var permissionName string
+		var viewTotal int
 		companyProductItem, err := company.GetCompanyProductByCompanyIdAndProductId(companyId, productId)
 		if err != nil {
 			if err.Error() == utils.ErrNoRow() {
@@ -100,23 +114,44 @@ func (this *CalendarController) CompanyDetail() {
 			br.ErrMsg = "搜索客户失败!Err:" + err.Error()
 			return
 		}
-		permissionList, err := company.GetCompanyProductReportPermissionList(companyId, productId)
-		if err != nil {
-			br.Msg = "搜索客户权限失败!"
-			br.ErrMsg = "搜索客户权限失败!Err:" + err.Error()
-			return
-		}
-		var permissionArr []string
-		for _, v := range permissionList {
-			permissionArr = append(permissionArr, v.PermissionName)
+		if rsReportRecordId > 0 {
+			rsReportRecordItem, err := roadshow.GetRsReportRecordDetailByRsReportRecordId(rsReportRecordId)
+			if err != nil {
+				br.Msg = "路演信息不存在!"
+				br.ErrMsg = "路演信息不存在!Err:" + err.Error()
+				return
+			}
+			companyStatus = rsReportRecordItem.CompanyStatus
+			permissionName = rsReportRecordItem.PermissionName
+			viewTotal = rsReportRecordItem.InteractionNum
+		} else {
+			permissionList, err := company.GetCompanyProductReportPermissionList(companyId, productId)
+			if err != nil {
+				br.Msg = "搜索客户权限失败!"
+				br.ErrMsg = "搜索客户权限失败!Err:" + err.Error()
+				return
+			}
+			var permissionArr []string
+			for _, v := range permissionList {
+				permissionArr = append(permissionArr, v.PermissionName)
+			}
+			companyStatus = companyProductItem.Status
+			permissionName = strings.Join(permissionArr, "/")
 		}
+
 		detailView.CompanyId = companyProductItem.CompanyId
 		detailView.CompanyName = companyProductItem.CompanyName
-		detailView.Status = companyProductItem.Status
+		detailView.Status = companyStatus
 		detailView.IndustryId = companyProductItem.IndustryId
 		detailView.IndustryName = companyProductItem.IndustryName
-		detailView.PermissionName = strings.Join(permissionArr, "/")
+		//detailView.PermissionName = strings.Join(permissionArr, "/")
+		detailView.PermissionName = permissionName
 		detailView.ReportReadTotal = companyProductItem.ViewTotal //ficc报告-累计阅读次数
+
+		if companyType == utils.COMPANY_CLASSIFY_RAI { //权益互动统计
+			detailView.ReportReadTotal = viewTotal
+		}
+
 		br.Ret = 200
 		br.Success = true
 		br.Msg = "获取成功"
@@ -142,3 +177,226 @@ func (this *CalendarController) CompanyDetail() {
 	br.Msg = "获取成功"
 	br.Data = detailView
 }
+
+//func init() {
+//	init16_01()
+//}
+
+func init16_0() {
+	var condition string
+	var pars []interface{}
+	condition = ` AND a.company_id > 0   AND  a.start_date > '2025-01-01' `
+
+	list, err := roadshow.GetRsReportRecordList(condition, pars)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+
+	var companyIds []int
+	mapcompanyIds := make(map[int]bool)
+	for _, v := range list {
+		if mapcompanyIds[v.CompanyId] {
+			continue
+		}
+		companyIds = append(companyIds, v.CompanyId)
+		mapcompanyIds[v.CompanyId] = true
+	}
+
+	listCompanyProductFicc, err := company.GetCompanyProductListByCompanyIds(companyIds, 1)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+
+	listCompanyProductRai, err := company.GetCompanyProductListByCompanyIds(companyIds, 2)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+
+	companyMap := make(map[int]*company.CompanyProduct)
+	companyMapRai := make(map[int]*company.CompanyProduct)
+	for _, v := range listCompanyProductFicc {
+		companyMap[v.CompanyId] = v
+	}
+	for _, v := range listCompanyProductRai {
+		companyMapRai[v.CompanyId] = v
+	}
+
+	mapPermissionNameFicc := make(map[int][]string)
+	mapPermissionNameRai := make(map[int][]string)
+	mapPermissionFicc := make(map[int][]*roadshow.RsReportRecordPermission)
+	mapPermissionRai := make(map[int][]*roadshow.RsReportRecordPermission)
+	listPermissionNameFicc, errFicc := company.GetCompanyProductReportPermissionListInit16_0(companyIds, 1) // FICC权限信息
+	if errFicc != nil {
+		err = errFicc
+		return
+	}
+	mapPermissionArrFicc := make(map[string]bool)
+	for _, v := range listPermissionNameFicc {
+		if mapPermissionArrFicc[fmt.Sprint(v.CompanyId, v.PermissionName)] || v.PermissionName == "" {
+			continue
+		}
+		if companyMap[v.CompanyId].Status == "正式" && v.Status != "正式" {
+			continue // 正式客户只统计正式权限
+		}
+		mapPermissionNameFicc[v.CompanyId] = append(mapPermissionNameFicc[v.CompanyId], v.PermissionName)
+		mapPermissionArrFicc[fmt.Sprint(v.CompanyId, v.PermissionName)] = true
+	}
+
+	listPermissionNameRai, errRai := company.GetCompanyProductReportPermissionListInit16_0(companyIds, 2) // 权益权限信息
+	if errRai != nil {
+		err = errRai
+		return
+	}
+
+	mapPermissionArrRai := make(map[string]bool)
+	for _, v := range listPermissionNameRai {
+		if mapPermissionArrRai[fmt.Sprint(v.CompanyId, v.PermissionName)] || v.PermissionName == "" {
+			continue
+		}
+		if companyMapRai[v.CompanyId].Status == "正式" && v.Status != "正式" {
+			continue // 正式客户只统计正式权限
+		}
+		mapPermissionNameRai[v.CompanyId] = append(mapPermissionNameRai[v.CompanyId], v.PermissionName)
+		mapPermissionArrRai[fmt.Sprint(v.CompanyId, v.PermissionName)] = true
+	}
+
+	listPermissionFicc, errFicc := roadshow.GetCompanyProductReportPermissionList(companyIds, 1) // FICC权限信息
+	if errFicc != nil {
+		err = errFicc
+		return
+	}
+	for _, v := range listPermissionFicc {
+		if companyMap[v.CompanyId] == nil {
+			continue
+		}
+		mapPermissionFicc[v.CompanyId] = append(mapPermissionFicc[v.CompanyId], v)
+	}
+
+	listPermissionRai, errRai := roadshow.GetCompanyProductReportPermissionList(companyIds, 2) // 权益权限信息
+	if errRai != nil {
+		err = errRai
+		return
+	}
+	for _, v := range listPermissionRai {
+		if companyMapRai[v.CompanyId] == nil {
+			continue
+		}
+		mapPermissionRai[v.CompanyId] = append(mapPermissionRai[v.CompanyId], v)
+	}
+
+	adminAll, err := system.GetAdminList()
+	if err != nil {
+		return
+	}
+	//adminMap := make(map[int]*system.AdminView)
+	mapRaiSllerId := make(map[int]bool) // 是否为权益销售
+	for _, v := range adminAll {
+		//adminMap[v.AdminId] = v
+		if v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER || v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP || v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
+			mapRaiSllerId[v.AdminId] = true
+		}
+	}
+
+	var updateItems []*roadshow.RsReportRecord
+	var itemsRs []*roadshow.RsReportRecordPermission
+	mapRsReportRecordPermission := make(map[string]bool) // 一个公司的一场路演,添加了多个研究员只记录一次
+	for _, v := range list {
+		item := new(roadshow.RsReportRecord)
+		item.RsReportRecordId = v.RsReportRecordId
+		if mapRaiSllerId[v.SellerId] {
+			if len(mapPermissionNameRai[v.CompanyId]) > 0 {
+				item.PermissionName = strings.Join(mapPermissionNameRai[v.CompanyId], "/")
+			}
+		} else {
+			if len(mapPermissionNameFicc[v.CompanyId]) > 0 {
+				item.PermissionName = strings.Join(mapPermissionNameFicc[v.CompanyId], "/")
+			}
+		}
+		updateItems = append(updateItems, item)
+
+		if mapRaiSllerId[v.SellerId] {
+			for _, vP := range mapPermissionRai[v.CompanyId] {
+				pKey := strconv.Itoa(v.RsCalendarId) + "_" + strconv.Itoa(vP.ChartPermissionId)
+				if mapRsReportRecordPermission[pKey] {
+					continue
+				}
+				vP.RsCalendarId = v.RsCalendarId
+				itemsRs = append(itemsRs, vP)
+				mapRsReportRecordPermission[pKey] = true
+			}
+		} else {
+			for _, vP := range mapPermissionFicc[v.CompanyId] {
+				pKey := strconv.Itoa(v.RsCalendarId) + "_" + strconv.Itoa(vP.ChartPermissionId)
+				if mapRsReportRecordPermission[pKey] {
+					continue
+				}
+				vP.RsCalendarId = v.RsCalendarId
+				itemsRs = append(itemsRs, vP)
+				mapRsReportRecordPermission[pKey] = true
+			}
+		}
+	}
+	fmt.Println(len(updateItems))
+	err = roadshow.UpdateRsReportRecordPermissionMulti(updateItems)
+	fmt.Println(err)
+	if len(itemsRs) > 0 {
+		err = roadshow.MultiRsReportRecordPermission(itemsRs) // 添加公司当时对应的权限信息
+	}
+	return
+}
+
+func init16_01() {
+	var condition string
+	var pars []interface{}
+	condition = ` AND a.company_id > 0   AND  a.start_date > '2025-01-01' `
+
+	list, err := roadshow.GetRsReportRecordList(condition, pars)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	var companyIds []int
+	mapcompanyIds := make(map[int]bool)
+	for _, v := range list {
+		if mapcompanyIds[v.CompanyId] {
+			continue
+		}
+		companyIds = append(companyIds, v.CompanyId)
+		mapcompanyIds[v.CompanyId] = true
+	}
+	adminAll, err := system.GetAdminList()
+	if err != nil {
+		return
+	}
+	//adminMap := make(map[int]*system.AdminView)
+	mapRaiSllerId := make(map[int]bool) // 是否为权益销售
+	for _, v := range adminAll {
+		if v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER || v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP || v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
+			mapRaiSllerId[v.AdminId] = true
+		}
+	}
+	listerrCompanyInteractionNum, errCompany := company.GetCompanyListByCompanyId(companyIds) // 权益客户互动信息
+	if errCompany != nil {
+		err = errCompany
+		return
+	}
+	mapInteractionNum := make(map[int]int)
+	for _, v := range listerrCompanyInteractionNum {
+		mapInteractionNum[v.CompanyId] = v.InteractionNum
+	}
+	var updateItems []*roadshow.RsReportRecord
+	for _, v := range list {
+		if mapRaiSllerId[v.SellerId] == true {
+			item := new(roadshow.RsReportRecord)
+			item.RsReportRecordId = v.RsReportRecordId
+			item.InteractionNum = mapInteractionNum[v.CompanyId]
+			updateItems = append(updateItems, item)
+		}
+	}
+	err = roadshow.UpdateRsReportRecordInteractionNumnMulti(updateItems)
+
+	fmt.Println("end", err)
+}

+ 223 - 61
controllers/roadshow/report.go

@@ -5,6 +5,7 @@ import (
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/company"
+	"hongze/hz_crm_api/models/cygx"
 	"hongze/hz_crm_api/models/roadshow"
 	"hongze/hz_crm_api/models/system"
 	"hongze/hz_crm_api/services"
@@ -21,6 +22,7 @@ import (
 // @Param   DataType   query   string  true       "枚举值:week、month、time_interval"
 // @Param   StartDate   query   string  true       "开始日期,格式:2022-04-06"
 // @Param   EndDate   query   string  true       "结束日期,格式:2022-04-06"
+// @Param   CompanyType   query   string  true       "客户类型:'ficc','权益',传空默认为ficc,"
 // @Success 200 {object} roadshow.RsReportRecordResp
 // @router /report/researcher/list [get]
 func (this *CalendarController) ResearcherReportList() {
@@ -39,7 +41,7 @@ func (this *CalendarController) ResearcherReportList() {
 	dataType := this.GetString("DataType")
 	startDate := this.GetString("StartDate")
 	endDate := this.GetString("EndDate")
-
+	companyType := this.GetString("CompanyType", "ficc")
 	var adminDataList []roadshowService.AdminDataMap
 	var err error
 	//var firstDate time.Time
@@ -71,19 +73,82 @@ func (this *CalendarController) ResearcherReportList() {
 			br.ErrMsg = "数据异常,Err:" + err.Error()
 			return
 		}
-
-	}
-	group, err := roadshow.GetResearcherGroup()
-	if err != nil {
-		br.Msg = "获取信息失败!"
-		br.ErrMsg = "获取分组信息失败!Err:" + err.Error()
-		return
 	}
-	researcherList, err := roadshow.GetResearcherV2()
-	if err != nil {
-		br.Msg = "获取信息失败!"
-		br.ErrMsg = "获取分组信息失败!,GetResearcherV2 Err:" + err.Error()
-		return
+
+	var group []*roadshow.ResearcherGroup
+	var researcherList []*roadshow.ResearcherGroup
+
+	switch companyType {
+	case utils.COMPANY_CLASSIFY_FICC:
+		group, err = roadshow.GetResearcherGroup()
+		if err != nil {
+			br.Msg = "获取信息失败!"
+			br.ErrMsg = "获取分组信息失败!Err:" + err.Error()
+			return
+		}
+		researcherList, err = roadshow.GetResearcherV2()
+		if err != nil {
+			br.Msg = "获取信息失败!"
+			br.ErrMsg = "获取分组信息失败!,GetResearcherV2 Err:" + err.Error()
+			return
+		}
+	case utils.COMPANY_CLASSIFY_RAI:
+		mapPermissionUser := make(map[string][]*roadshow.ResearcherGroup)
+		listPermission, err := cygx.GetChartPermissionAll()
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+			return
+		}
+		mapPermissionId := make(map[string]int)
+		for _, v := range listPermission {
+			mapPermissionId[v.PermissionName] = v.ChartPermissionId
+		}
+		askUserList, err := cygx.GetAskEmailListResearcher()
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GetAskEmailListResearcher Err: " + err.Error()
+			return
+		}
+		sysUserList, err := system.GetAdminList()
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取admin列表失败, Err:" + err.Error()
+			return
+		}
+		adminMap := make(map[int]*system.Admin, 0)
+		for _, v := range sysUserList {
+			if v.Enabled == 0 {
+				continue // 被禁用的不展示
+			}
+			adminMap[v.AdminId] = v
+		}
+
+		for _, v := range askUserList {
+			if admin, ok := adminMap[v.AdminId]; ok {
+				item := &roadshow.ResearcherGroup{
+					AdminId:      v.AdminId,
+					RealName:     v.Name,
+					GroupId:      mapPermissionId[v.ChartPermissionName], //行业ID作为组别,进行关系映射
+					GroupName:    admin.GroupName,
+					RoleTypeCode: admin.RoleTypeCode,
+				}
+				mapPermissionUser[v.ChartPermissionName] = append(mapPermissionUser[v.ChartPermissionName], item)
+				researcherList = append(researcherList, item)
+			}
+		}
+		//for _, vP := range listPermission {
+		for k, v := range mapPermissionUser {
+			//if vP.PermissionName != k {
+			//	continue //统一排序顺序
+			//}
+			respItem := new(roadshow.ResearcherGroup)
+			respItem.GroupName = k + "组"
+			respItem.GroupId = mapPermissionId[k]
+			respItem.ResearcherList = v
+			group = append(group, respItem)
+		}
+		//}
 	}
 	groupMap := make(map[int][]*roadshow.ResearcherGroup)
 	for _, v := range researcherList {
@@ -120,24 +185,30 @@ func (this *CalendarController) ResearcherReportList() {
 	tmpAllTryOutNumMap := make(map[int]int)
 	tmpAllFormalNumMap := make(map[int]int)
 	tmpAllMeetingNumMap := make(map[int]int)
+	tmpAllRoadShowNumMap := make(map[int]int)
+	tmpAllSalonNumMap := make(map[int]int)
 	for _, v := range group {
 		v.ResearcherList = groupMap[v.GroupId]
 		tmpGroupAdminReportRecord := make([]roadshow.AdminReportRecord, 0)
 		tmpGroupRsReportRecordNumList := make([]roadshow.RsReportRecordNum, 0)
 
+		//roadShowMap := make(map[int]int) // 路演总次数
+		//salonMap := make(map[int]int)    //沙龙路演次数
+
 		tmpGroupTryOutNumMap := make(map[int]int)
 		tmpGroupFormalNumMap := make(map[int]int)
 		tmpGroupMeetingNumMap := make(map[int]int)
+		tmpGroupRoadShowNumMap := make(map[int]int)
+		tmpGroupSalonMapNumMap := make(map[int]int)
 		for _, researcher := range groupMap[v.GroupId] {
 			//组内研究员数据
-
 			//每个区间的数据
 			tmpAdminRsReportRecordNumList := make([]roadshow.RsReportRecordNum, 0)
 			for index, adminData := range adminDataList {
 				startDateIndexList[index] = adminData.StartDate
 				endDateIndexList[index] = adminData.EndDate
 
-				var tmpTryOutNum, tmpFormalNum, tmpMeetingNum int
+				var tmpTryOutNum, tmpFormalNum, tmpMeetingNum, tmpRoadShowNum, tmpSalonNum int
 				if num, ok := adminData.TryOutMap[researcher.AdminId]; ok {
 					tmpTryOutNum = num
 				}
@@ -147,12 +218,21 @@ func (this *CalendarController) ResearcherReportList() {
 				if num, ok := adminData.MeetingMap[researcher.AdminId]; ok {
 					tmpMeetingNum = num
 				}
+				if num, ok := adminData.RoadShowMap[researcher.AdminId]; ok { //路演总次数
+					tmpRoadShowNum = num
+				}
+				if num, ok := adminData.SalonMap[researcher.AdminId]; ok { //路演总次数
+					tmpSalonNum = num
+				}
+
 				tmpAdminRsReportRecordNum := roadshow.RsReportRecordNum{
-					TryOutNum:  tmpTryOutNum,
-					FormalNum:  tmpFormalNum,
-					MeetingNum: tmpMeetingNum,
-					StartDate:  adminData.StartDate,
-					EndDate:    adminData.EndDate,
+					TryOutNum:   tmpTryOutNum,
+					FormalNum:   tmpFormalNum,
+					MeetingNum:  tmpMeetingNum,
+					RoadShowNum: tmpRoadShowNum,
+					SalonNum:    tmpSalonNum,
+					StartDate:   adminData.StartDate,
+					EndDate:     adminData.EndDate,
 				}
 				tmpAdminRsReportRecordNumList = append(tmpAdminRsReportRecordNumList, tmpAdminRsReportRecordNum)
 
@@ -166,9 +246,17 @@ func (this *CalendarController) ResearcherReportList() {
 				if _, ok := tmpGroupMeetingNumMap[index]; !ok {
 					tmpGroupMeetingNumMap[index] = 0
 				}
+				if _, ok := tmpGroupRoadShowNumMap[index]; !ok {
+					tmpGroupRoadShowNumMap[index] = 0
+				}
+				if _, ok := tmpGroupSalonMapNumMap[index]; !ok {
+					tmpGroupSalonMapNumMap[index] = 0
+				}
 				tmpGroupTryOutNumMap[index] += tmpTryOutNum
 				tmpGroupFormalNumMap[index] += tmpFormalNum
 				tmpGroupMeetingNumMap[index] += tmpMeetingNum
+				tmpGroupRoadShowNumMap[index] += tmpRoadShowNum
+				tmpGroupSalonMapNumMap[index] += tmpSalonNum
 
 				//总数据汇总
 				if _, ok := tmpAllTryOutNumMap[index]; !ok {
@@ -180,9 +268,17 @@ func (this *CalendarController) ResearcherReportList() {
 				if _, ok := tmpAllMeetingNumMap[index]; !ok {
 					tmpAllMeetingNumMap[index] = 0
 				}
+				if _, ok := tmpGroupRoadShowNumMap[index]; !ok {
+					tmpGroupRoadShowNumMap[index] = 0
+				}
+				if _, ok := tmpGroupSalonMapNumMap[index]; !ok {
+					tmpGroupSalonMapNumMap[index] = 0
+				}
 				tmpAllTryOutNumMap[index] += tmpTryOutNum
 				tmpAllFormalNumMap[index] += tmpFormalNum
 				tmpAllMeetingNumMap[index] += tmpMeetingNum
+				tmpAllRoadShowNumMap[index] += tmpRoadShowNum
+				tmpAllSalonNumMap[index] += tmpSalonNum
 			}
 			tmpAdminReportRecord := roadshow.AdminReportRecord{
 				Name:                  researcher.RealName,
@@ -194,11 +290,13 @@ func (this *CalendarController) ResearcherReportList() {
 
 		for i := 0; i < len(tmpGroupMeetingNumMap); i++ {
 			tmpGroupRsReportRecordNum := roadshow.RsReportRecordNum{
-				TryOutNum:  tmpGroupTryOutNumMap[i],
-				FormalNum:  tmpGroupFormalNumMap[i],
-				MeetingNum: tmpGroupMeetingNumMap[i],
-				StartDate:  startDateIndexList[i],
-				EndDate:    endDateIndexList[i],
+				TryOutNum:   tmpGroupTryOutNumMap[i],
+				FormalNum:   tmpGroupFormalNumMap[i],
+				MeetingNum:  tmpGroupMeetingNumMap[i],
+				RoadShowNum: tmpGroupRoadShowNumMap[i],
+				SalonNum:    tmpGroupSalonMapNumMap[i],
+				StartDate:   startDateIndexList[i],
+				EndDate:     endDateIndexList[i],
 			}
 			tmpGroupRsReportRecordNumList = append(tmpGroupRsReportRecordNumList, tmpGroupRsReportRecordNum)
 		}
@@ -213,11 +311,13 @@ func (this *CalendarController) ResearcherReportList() {
 	//总体汇总数据
 	for i := 0; i < len(tmpAllFormalNumMap); i++ {
 		tmpGroupRsReportRecordNum := roadshow.RsReportRecordNum{
-			TryOutNum:  tmpAllTryOutNumMap[i],
-			FormalNum:  tmpAllFormalNumMap[i],
-			MeetingNum: tmpAllMeetingNumMap[i],
-			StartDate:  startDateIndexList[i],
-			EndDate:    endDateIndexList[i],
+			TryOutNum:   tmpAllTryOutNumMap[i],
+			FormalNum:   tmpAllFormalNumMap[i],
+			MeetingNum:  tmpAllMeetingNumMap[i],
+			RoadShowNum: tmpAllRoadShowNumMap[i],
+			SalonNum:    tmpAllSalonNumMap[i],
+			StartDate:   startDateIndexList[i],
+			EndDate:     endDateIndexList[i],
 		}
 		rsAllReportRecordNumList = append(rsAllReportRecordNumList, tmpGroupRsReportRecordNum)
 	}
@@ -237,6 +337,7 @@ func (this *CalendarController) ResearcherReportList() {
 // @Param   DimensionType   query   string  true       "维度枚举值:company_status、roadshow_type"
 // @Param   StartDate   query   string  true       "开始日期,格式:2022-04-06"
 // @Param   EndDate   query   string  true       "结束日期,格式:2022-04-06"
+// @Param   CompanyType   query   string  true       "客户类型:'ficc','权益',传空默认为ficc,"
 // @Success 200 {object} roadshow.RsReportRecordResp
 // @router /report/seller/list [get]
 func (this *CalendarController) SellerReportList() {
@@ -256,10 +357,13 @@ func (this *CalendarController) SellerReportList() {
 	dimensionType := this.GetString("DimensionType")
 	startDate := this.GetString("StartDate")
 	endDate := this.GetString("EndDate")
-
+	companyType := this.GetString("CompanyType", "ficc")
 	if dimensionType == "" {
 		dimensionType = "company_status"
 	}
+	if companyType == utils.COMPANY_CLASSIFY_RAI {
+		dimensionType = "roadshow_rai" // 类型传了权益,就强制查询权益的路演
+	}
 
 	var adminDataList []roadshowService.AdminDataMap
 	var err error
@@ -294,13 +398,34 @@ func (this *CalendarController) SellerReportList() {
 		}
 
 	}
-	group, groupIdRelationMap, err := services.GetFiccSystemGroup()
-	if err != nil {
-		br.Msg = "获取信息失败!"
-		br.ErrMsg = "获取分组信息失败!Err:" + err.Error()
-		return
+
+	var group []services.AdminGroup
+	var groupIdRelationMap map[int]int
+	var researcherList []*roadshow.Researcher
+	switch companyType {
+	case utils.COMPANY_CLASSIFY_FICC:
+		group, groupIdRelationMap, err = services.GetFiccSystemGroup()
+		if err != nil {
+			br.Msg = "获取信息失败!"
+			br.ErrMsg = "获取FICC销售信息失败!Err:" + err.Error()
+			return
+		}
+		researcherList, err = services.GetFiccSeller(firstDate, groupIdRelationMap)
+	case utils.COMPANY_CLASSIFY_RAI:
+		group, groupIdRelationMap, err = services.GetRaiSystemGroup()
+		if err != nil {
+			br.Msg = "获取信息失败!"
+			br.ErrMsg = "获取分组信息失败!Err:" + err.Error()
+			return
+		}
+		researcherList, err = services.GetRaiSeller(groupIdRelationMap)
+		if err != nil {
+			br.Msg = "获取信息失败!"
+			br.ErrMsg = "获取权益销售信息失败!Err:" + err.Error()
+			return
+		}
 	}
-	researcherList, err := services.GetFiccSeller(firstDate, groupIdRelationMap)
+
 	groupMap := make(map[int][]*roadshow.Researcher)
 	for _, v := range researcherList {
 		if v.RoleTypeCode == "ficc_admin" {
@@ -333,6 +458,8 @@ func (this *CalendarController) SellerReportList() {
 	tmpAllMeetingNumMap := make(map[int]int)
 	tmpAllOnlineNumMap := make(map[int]int)
 	tmpAllOfflineNumMap := make(map[int]int)
+	tmpAllRoadShowNumMap := make(map[int]int)
+	tmpAllSalonNumMap := make(map[int]int)
 	for _, v := range group {
 		v.ResearcherList = groupMap[v.GroupId]
 		tmpGroupAdminReportRecord := make([]roadshow.AdminReportRecord, 0)
@@ -343,16 +470,17 @@ func (this *CalendarController) SellerReportList() {
 		tmpGroupMeetingNumMap := make(map[int]int)
 		tmpGroupOnlineNumMap := make(map[int]int)
 		tmpGroupOfflineNumMap := make(map[int]int)
+		tmpGroupRoadShowNumMap := make(map[int]int)
+		tmpGroupSalonNumMap := make(map[int]int)
 		for _, researcher := range groupMap[v.GroupId] {
 			//组内研究员数据
-
 			//每个区间的数据
 			tmpAdminRsReportRecordNumList := make([]roadshow.RsReportRecordNum, 0)
 			for index, adminData := range adminDataList {
 				startDateIndexList[index] = adminData.StartDate
 				endDateIndexList[index] = adminData.EndDate
 
-				var tmpTryOutNum, tmpFormalNum, tmpMeetingNum, tmpOnlineNum, tmpOfflineNum int
+				var tmpTryOutNum, tmpFormalNum, tmpMeetingNum, tmpOnlineNum, tmpOfflineNum, tmpRoadShowNum, tmpSalonNum int
 				if num, ok := adminData.TryOutMap[researcher.AdminId]; ok {
 					tmpTryOutNum = num
 				}
@@ -368,14 +496,22 @@ func (this *CalendarController) SellerReportList() {
 				if num, ok := adminData.OfflineMap[researcher.AdminId]; ok {
 					tmpOfflineNum = num
 				}
+				if num, ok := adminData.RoadShowMap[researcher.AdminId]; ok {
+					tmpRoadShowNum = num
+				}
+				if num, ok := adminData.SalonMap[researcher.AdminId]; ok {
+					tmpSalonNum = num
+				}
 				tmpAdminRsReportRecordNum := roadshow.RsReportRecordNum{
-					TryOutNum:  tmpTryOutNum,
-					FormalNum:  tmpFormalNum,
-					MeetingNum: tmpMeetingNum,
-					OnlineNum:  tmpOnlineNum,
-					OfflineNum: tmpOfflineNum,
-					StartDate:  adminData.StartDate,
-					EndDate:    adminData.EndDate,
+					TryOutNum:   tmpTryOutNum,
+					FormalNum:   tmpFormalNum,
+					MeetingNum:  tmpMeetingNum,
+					OnlineNum:   tmpOnlineNum,
+					OfflineNum:  tmpOfflineNum,
+					RoadShowNum: tmpRoadShowNum,
+					SalonNum:    tmpSalonNum,
+					StartDate:   adminData.StartDate,
+					EndDate:     adminData.EndDate,
 				}
 				tmpAdminRsReportRecordNumList = append(tmpAdminRsReportRecordNumList, tmpAdminRsReportRecordNum)
 
@@ -395,11 +531,19 @@ func (this *CalendarController) SellerReportList() {
 				if _, ok := tmpGroupOfflineNumMap[index]; !ok {
 					tmpGroupOfflineNumMap[index] = 0
 				}
+				if _, ok := tmpGroupRoadShowNumMap[index]; !ok {
+					tmpGroupRoadShowNumMap[index] = 0
+				}
+				if _, ok := tmpGroupSalonNumMap[index]; !ok {
+					tmpGroupSalonNumMap[index] = 0
+				}
 				tmpGroupTryOutNumMap[index] += tmpTryOutNum
 				tmpGroupFormalNumMap[index] += tmpFormalNum
 				tmpGroupMeetingNumMap[index] += tmpMeetingNum
 				tmpGroupOnlineNumMap[index] += tmpOnlineNum
 				tmpGroupOfflineNumMap[index] += tmpOfflineNum
+				tmpGroupRoadShowNumMap[index] += tmpRoadShowNum
+				tmpGroupSalonNumMap[index] += tmpSalonNum
 
 				//总数据汇总
 				if _, ok := tmpAllTryOutNumMap[index]; !ok {
@@ -417,11 +561,19 @@ func (this *CalendarController) SellerReportList() {
 				if _, ok := tmpAllOfflineNumMap[index]; !ok {
 					tmpAllOfflineNumMap[index] = 0
 				}
+				if _, ok := tmpAllRoadShowNumMap[index]; !ok {
+					tmpAllRoadShowNumMap[index] = 0
+				}
+				if _, ok := tmpAllSalonNumMap[index]; !ok {
+					tmpAllSalonNumMap[index] = 0
+				}
 				tmpAllTryOutNumMap[index] += tmpTryOutNum
 				tmpAllFormalNumMap[index] += tmpFormalNum
 				tmpAllMeetingNumMap[index] += tmpMeetingNum
 				tmpAllOnlineNumMap[index] += tmpOnlineNum
 				tmpAllOfflineNumMap[index] += tmpOfflineNum
+				tmpAllRoadShowNumMap[index] += tmpRoadShowNum
+				tmpAllSalonNumMap[index] += tmpSalonNum
 			}
 			tmpAdminReportRecord := roadshow.AdminReportRecord{
 				Name:                  researcher.RealName,
@@ -433,13 +585,15 @@ func (this *CalendarController) SellerReportList() {
 
 		for i := 0; i < len(tmpGroupMeetingNumMap); i++ {
 			tmpGroupRsReportRecordNum := roadshow.RsReportRecordNum{
-				TryOutNum:  tmpGroupTryOutNumMap[i],
-				FormalNum:  tmpGroupFormalNumMap[i],
-				MeetingNum: tmpGroupMeetingNumMap[i],
-				OnlineNum:  tmpGroupOnlineNumMap[i],
-				OfflineNum: tmpGroupOfflineNumMap[i],
-				StartDate:  startDateIndexList[i],
-				EndDate:    endDateIndexList[i],
+				TryOutNum:   tmpGroupTryOutNumMap[i],
+				FormalNum:   tmpGroupFormalNumMap[i],
+				MeetingNum:  tmpGroupMeetingNumMap[i],
+				OnlineNum:   tmpGroupOnlineNumMap[i],
+				OfflineNum:  tmpGroupOfflineNumMap[i],
+				RoadShowNum: tmpGroupRoadShowNumMap[i],
+				SalonNum:    tmpGroupSalonNumMap[i],
+				StartDate:   startDateIndexList[i],
+				EndDate:     endDateIndexList[i],
 			}
 			tmpGroupRsReportRecordNumList = append(tmpGroupRsReportRecordNumList, tmpGroupRsReportRecordNum)
 		}
@@ -455,13 +609,15 @@ func (this *CalendarController) SellerReportList() {
 	//总体汇总数据
 	for i := 0; i < len(tmpAllFormalNumMap); i++ {
 		tmpGroupRsReportRecordNum := roadshow.RsReportRecordNum{
-			TryOutNum:  tmpAllTryOutNumMap[i],
-			FormalNum:  tmpAllFormalNumMap[i],
-			MeetingNum: tmpAllMeetingNumMap[i],
-			OnlineNum:  tmpAllOnlineNumMap[i],
-			OfflineNum: tmpAllOfflineNumMap[i],
-			StartDate:  startDateIndexList[i],
-			EndDate:    endDateIndexList[i],
+			TryOutNum:   tmpAllTryOutNumMap[i],
+			FormalNum:   tmpAllFormalNumMap[i],
+			MeetingNum:  tmpAllMeetingNumMap[i],
+			OnlineNum:   tmpAllOnlineNumMap[i],
+			OfflineNum:  tmpAllOfflineNumMap[i],
+			RoadShowNum: tmpAllRoadShowNumMap[i],
+			SalonNum:    tmpAllSalonNumMap[i],
+			StartDate:   startDateIndexList[i],
+			EndDate:     endDateIndexList[i],
 		}
 		rsAllReportRecordNumList = append(rsAllReportRecordNumList, tmpGroupRsReportRecordNum)
 	}
@@ -571,6 +727,12 @@ func (this *CalendarController) ReportCalendarList() {
 	case "offline":
 		condition += ` and a.roadshow_type = ? `
 		pars = append(pars, "线下")
+	case "road_show":
+		condition += ` and a.activity_type = ? `
+		pars = append(pars, "路演")
+	case "salon":
+		condition += ` and a.activity_type = ? `
+		pars = append(pars, "沙龙")
 	default:
 		br.Msg = "请传入类型"
 		br.ErrMsg = "请传入类型DataType"
@@ -1715,4 +1877,4 @@ func (this *CalendarController) OverseasCalendarList() {
 	br.Msg = "获取成功"
 	br.Data = list
 	return
-}
+}

+ 127 - 14
controllers/statistic_company_merge.go

@@ -44,6 +44,7 @@ type StatisticCompanyMergerController struct {
 // @Param   IsConfirm   query   int  false       "是否确认续约: -1-默认全部; 0-待确认; 1-已确认 ;2-到期合同"
 // @Param   CompanyAscribeId   query   int  false       "归因ID"
 // @Param   PackageDifference   query   string  false       "和上一份合同的区别,枚举值:`增加套餐`,`减少套餐`,`维持套餐`"
+// @Param   Operation   query   string  false       "新增类型 ,枚举值:`新建`,`领取`"
 // @Success 200 {object} response.IncrementalCompanyListResp
 // @router /merge_company_list [get]
 func (this *StatisticCompanyMergerController) MergeCompanyList() {
@@ -71,6 +72,7 @@ func (this *StatisticCompanyMergerController) MergeCompanyList() {
 	tryOutType := this.GetString("TryOutType")
 	keyword := this.GetString("Keyword")
 	packageDifference := this.GetString("PackageDifference")
+	operation := this.GetString("Operation")
 
 	startDate := this.GetString("StartDate")
 	endDate := this.GetString("EndDate")
@@ -214,19 +216,28 @@ func (this *StatisticCompanyMergerController) MergeCompanyList() {
 
 	//试用客户数
 	{
+		var operationSql string
+		if operation == "新建" {
+			operationSql = ` "add" `
+		} else if operation == "领取" {
+			operationSql = ` "receive","apply_receive"  `
+		} else {
+			operationSql = ` "add","receive","apply_receive"  `
+		}
 		condition1 := condition
 		pars1 := pars
 		//销售筛选条件
 		if adminId != "" {
-			condition1 += ` AND c.seller_id in  (` + adminId + `) `
+			condition1 += ` AND a.sys_user_id in  (` + adminId + `) `
 		} else {
 			condition1, pars1 = getQueryParams(condition1, pars1, sysUser, "c.")
 		}
-		condition1 += ` AND a.create_time >= ? AND a.create_time <= ? AND a.operation in ("add","receive")  	AND b.company_id  NOT IN  (	SELECT  company_id  FROM company_operation_record WHERE   product_id = 2 	AND  operation  ="loss"   GROUP BY company_id )  AND c.status = '试用' `
+		//condition1 += ` AND a.create_time >= ? AND a.create_time <= ? AND a.operation in (` + operationSql + `)  	AND b.company_id  NOT IN  (	SELECT  company_id  FROM company_operation_record WHERE   product_id = 2 	AND  operation  ="loss"   GROUP BY company_id ) 	AND a.sys_user_id IN ( SELECT  admin_id FROM admin  WHERE  role_type_code IN ( 'rai_seller', 'rai_group' , 'rai_admin') ) `
+		condition1 += ` AND a.create_time >= ? AND a.create_time <= ? AND a.operation in (` + operationSql + `)  AND a.sys_user_id IN ( SELECT  admin_id FROM admin  WHERE  role_type_code IN ( 'rai_seller', 'rai_group' , 'rai_admin') ) `
 		pars1 = append(pars1, startDate, endDate)
 
-		total, err := models.GetIncrementalCompanyCountByOperationRecord(condition1, pars1)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		total, err := models.GetIncrementalCompanyCountByOperationRecordRai(condition1, pars1)
+		if err != nil {
 			br.Msg = "获取失败"
 			br.ErrMsg = "获取失败,Err:" + err.Error()
 			return
@@ -235,25 +246,32 @@ func (this *StatisticCompanyMergerController) MergeCompanyList() {
 
 		if dataType == "新增试用" {
 			//列表数据数量
-			total, err := models.GetIncrementalCompanyProductCountByOperationRecord(condition1, pars1)
-			if err != nil && err.Error() != utils.ErrNoRow() {
-				br.Msg = "获取失败"
-				br.ErrMsg = "获取失败,Err:" + err.Error()
-				return
-			}
+			//total, err := models.GetIncrementalCompanyProductCountByOperationRecord(condition1, pars1)
+			//if err != nil {
+			//	br.Msg = "获取失败"
+			//	br.ErrMsg = "获取失败,Err:" + err.Error()
+			//	return
+			//}
+
+			//total = trialTotal
 
 			//列表页数据
-			tmpList, err := models.GetIncrementalCompanyListByOperationRecord(condition1, pars1, startSize, pageSize)
+			tmpList, err := models.GetIncrementalCompanyListByOperationRecordRai(condition1, pars1, startSize, pageSize)
 			if err != nil {
 				br.Msg = "获取失败"
 				br.ErrMsg = "获取失败,Err:" + err.Error()
 				return
 			}
 			for _, v := range tmpList {
-				v.SellerName = v.SellerNameInit
+				v.SellerName = v.SysRealName
+				if v.Operation == "add" {
+					v.Operation = "新建"
+				} else if v.Operation == "receive" || v.Operation == "apply_receive" {
+					v.Operation = "领取"
+				}
 			}
 			list = tmpList
-			dataTotal = total
+			dataTotal = trialTotal
 		}
 	}
 
@@ -534,7 +552,11 @@ func (this *StatisticCompanyMergerController) MergeCompanyList() {
 	//fmt.Println()
 	//导出excel
 	if isExport {
-		MergeCompanyListListExport(this, dataType, resp, br)
+		if dataType == "新增试用" {
+			MergeCompanyListListTrialExport(this, dataType, resp, br)
+		} else {
+			MergeCompanyListListExport(this, dataType, resp, br)
+		}
 		return
 	}
 	br.Ret = 200
@@ -719,6 +741,97 @@ func MergeCompanyListListExport(this *StatisticCompanyMergerController, dataType
 	br.Msg = "导出成功"
 }
 
+// MergeCompanyListListTrialExport 导出增量客户新增试用模块数据报表excel
+func MergeCompanyListListTrialExport(this *StatisticCompanyMergerController, dataType string, resp response.IncrementalCompanyListResp, br *models.BaseResponse) {
+	dir, err := os.Executable()
+	exPath := filepath.Dir(dir)
+	downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
+	xlsxFile := xlsx.NewFile()
+	if err != nil {
+		br.Msg = "生成文件失败"
+		br.ErrMsg = "生成文件失败"
+		return
+	}
+	style := xlsx.NewStyle()
+	alignment := xlsx.Alignment{
+		Horizontal: "center",
+		Vertical:   "center",
+		WrapText:   true,
+	}
+
+	style.Alignment = alignment
+	style.ApplyAlignment = true
+
+	sheel, err := xlsxFile.AddSheet("新增试用客户数据")
+	if err != nil {
+		br.Msg = "新增Sheet失败"
+		br.ErrMsg = "新增Sheet失败,Err:" + err.Error()
+		return
+	}
+	sheel.SetColWidth(0, 0, 30)
+	sheel.SetColWidth(1, 1, 15)
+	sheel.SetColWidth(2, 2, 15)
+	sheel.SetColWidth(3, 3, 18)
+	sheel.SetColWidth(4, 4, 40)
+	sheel.SetColWidth(5, 5, 18)
+
+	//统计数据
+	statisticRow := sheel.AddRow()
+
+	cell1 := statisticRow.AddCell()
+	cell1.SetStyle(style)
+	cell1.SetValue("客户名称")
+
+	cell2 := statisticRow.AddCell()
+	cell2.SetStyle(style)
+	cell2.SetValue("所属销售")
+
+	cell3 := statisticRow.AddCell()
+	cell3.SetStyle(style)
+	cell3.SetValue("新增类型")
+
+	cell4 := statisticRow.AddCell()
+	cell4.SetStyle(style)
+	cell4.SetValue("新增时间")
+	//表头
+
+	for _, v := range resp.List {
+		dataRow := sheel.AddRow()
+		dataRow.SetHeight(20)
+
+		cellDataName := dataRow.AddCell()
+		cellDataName.SetStyle(style)
+		cellDataName.SetValue(v.CompanyName)
+
+		cellDataSellerName := dataRow.AddCell()
+		cellDataSellerName.SetStyle(style)
+		cellDataSellerName.SetValue(v.SellerName)
+
+		cellDataOperation := dataRow.AddCell()
+		cellDataOperation.SetStyle(style)
+		cellDataOperation.SetValue(v.Operation)
+
+		cellDataTime := dataRow.AddCell()
+		cellDataTime.SetStyle(style)
+		cellDataTime.SetValue(v.CreateTime)
+	}
+	err = xlsxFile.Save(downLoadnFilePath)
+	if err != nil {
+		br.Msg = "保存文件失败"
+		br.ErrMsg = "保存文件失败"
+		return
+	}
+	randStr := time.Now().Format(utils.FormatDateTimeUnSpace)
+	downloadFileName := "新增试用客户数据_" + randStr + ".xlsx"
+	this.Ctx.Output.Download(downLoadnFilePath, downloadFileName)
+	defer func() {
+		os.Remove(downLoadnFilePath)
+	}()
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "导出成功"
+}
+
 // @Title 上一份合同详情
 // @Description 上一份合同详情接口
 // @Param   CompanyContractId   query   int  true       "合同ID"

+ 13 - 0
models/company/company.go

@@ -42,6 +42,7 @@ type Company struct {
 	IsHide          int       `description:"是否隐藏:0:不隐藏,1:隐藏"`
 	OverseasStatus  string    `description:"海外客户状态:'正式','试用','关闭'"`
 	ResetBtn        int       `description:"转正式和重置按钮:同步过来默认为0:显示转正式为1:显示重置为2"`
+	InteractionNum  int       `description:"用户总的互动量"`
 }
 
 // 新增客户
@@ -1981,3 +1982,15 @@ func GetOverseasCompanys() (items []*Company, err error) {
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
+
+// GetCompanyListByCompanyId 根据公司ID获取公司信息
+func GetCompanyListByCompanyId(companyId []int) (items []*Company, err error) {
+	lenArr := len(companyId)
+	if lenArr == 0 {
+		return
+	}
+	o := orm.NewOrm()
+	sql := `SELECT interaction_num , company_id  FROM  company AS a WHERE a.company_id IN (` + utils.GetOrmInReplace(lenArr) + `)   `
+	_, err = o.Raw(sql, companyId).QueryRows(&items)
+	return
+}

+ 9 - 1
models/company/company_permission.go

@@ -452,11 +452,19 @@ func GetChartPermissionListByIds(chartPermissionIds []int) (list []*ChartPermiss
 // 根据企业用户id和产品id获取所有正式的权限
 func GetCompanyProductReportPermissionList(companyId, productId int) (items []*CompanyReportPermissionAndName, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT a.*,b.permission_name,b.classify_name FROM company_report_permission a left join chart_permission b on a.chart_permission_id=b.chart_permission_id WHERE a.company_id = ? and a.product_id=? `
+	sql := `SELECT a.*,b.permission_name,b.classify_name FROM company_report_permission a left join chart_permission b on a.chart_permission_id=b.chart_permission_id WHERE a.company_id = ? and a.product_id=?  AND a.status IN ('正式','试用','永续')  `
 	_, err = o.Raw(sql, companyId, productId).QueryRows(&items)
 	return
 }
 
+// 根据企业用户id和产品id获取所有正式的权限
+func GetCompanyProductReportPermissionListInit16_0(companyIds []int, productId int) (items []*CompanyReportPermissionAndName, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT a.*,b.permission_name,b.classify_name FROM company_report_permission a left join chart_permission b on a.chart_permission_id=b.chart_permission_id WHERE a.company_id IN (` + utils.GetOrmInReplace(len(companyIds)) + `) and a.product_id=? AND a.status IN ('正式','试用','永续')   `
+	_, err = o.Raw(sql, companyIds, productId).QueryRows(&items)
+	return
+}
+
 // GetChartPermissionListById 根据权限id获取产品权限详情
 func GetChartPermissionListById(chartPermissionId int) (item *ChartPermission, err error) {
 	o := orm.NewOrm()

+ 16 - 0
models/cygx/activity_ask_email.go

@@ -42,6 +42,22 @@ func GetAskEmailList() (item []*AskEmailRep, err error) {
 	return
 }
 
+// 权益自定义派点信息
+func GetAskEmailListPoint() (item []*AskEmailRep, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT * FROM cygx_activity_ask_email WHERE  chart_permission_name != ''  AND enabled_point = 1 AND admin_id > 0    ORDER BY sort  DESC , id ASC  `
+	_, err = o.Raw(sql).QueryRows(&item)
+	return
+}
+
+// 权益自定义研究员信息
+func GetAskEmailListResearcher() (item []*AskEmailRep, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT * FROM cygx_activity_ask_email WHERE  chart_permission_name != ''  AND enabled_researcher = 1 AND admin_id > 0    ORDER BY sort  DESC , id ASC  `
+	_, err = o.Raw(sql).QueryRows(&item)
+	return
+}
+
 func UpdateAskEmail(item *AskEmailRep) (err error) {
 	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_activity_ask_email SET admin_id=? where mobile=?`

+ 2 - 0
models/cygx/summary_manage.go

@@ -93,6 +93,8 @@ type CygxArticle struct {
 	Annotation         string    `description:"核心观点"`
 	VisibleRange       int       `description:"设置可见范围1全部,0内部"`
 	//NickName           string    `description:"作者昵称"`
+	ChartPermissionId   int    `description:"行业id"`
+	ChartPermissionName string `description:"行业名称"`
 }
 
 type CygxArticleResp struct {

+ 1 - 0
models/db.go

@@ -388,6 +388,7 @@ func initRoadShow() {
 		new(roadshow.RsCalendarMeetingUser),       //路演参会名单表
 		new(roadshow.RsCalendarMeetingLabelGroup), //路演参会名单关联的标签表
 		new(roadshow.RsCalendarApiLog),            //上海路演三方接口请求记录日志表
+		new(roadshow.RsReportRecordPermission),    //路演公司权限记录
 	)
 }
 

+ 84 - 11
models/roadshow/report_record.go

@@ -32,6 +32,8 @@ type RsReportRecord struct {
 	EndWeek                    string    `description:"结束日期对应周"`
 	CreateTime                 time.Time `description:"记录创建时间"`
 	RsCalendarResearcherStatus int       `description:"路演活动状态"`
+	PermissionName             string    `description:"开通品种"`
+	InteractionNum             int       `description:"当时用户总的互动量"`
 }
 
 // RsReportRecordResp 总统计信息
@@ -57,14 +59,16 @@ type AdminReportRecord struct {
 
 // RsReportRecordNum 系统用户统计信息
 type RsReportRecordNum struct {
-	TryOutNum  int    `description:"试用路演次数"`
-	FormalNum  int    `description:"正式路演次数"`
-	MeetingNum int    `description:"会议次数"`
-	OnlineNum  int    `description:"线上路演次数"`
-	OfflineNum int    `description:"线上路演次数"`
-	StartDate  string `description:"开始日期"`
-	EndDate    string `description:"结束日期"`
-	IsLook     bool   `description:"是否可以查看详情"`
+	TryOutNum   int    `description:"试用路演次数"`
+	FormalNum   int    `description:"正式路演次数"`
+	MeetingNum  int    `description:"会议次数"`
+	OnlineNum   int    `description:"线上路演次数"`
+	OfflineNum  int    `description:"线上路演次数"`
+	RoadShowNum int    `description:"路演总次数"`
+	SalonNum    int    `description:"沙龙路演次数"`
+	StartDate   string `description:"开始日期"`
+	EndDate     string `description:"结束日期"`
+	IsLook      bool   `description:"是否可以查看详情"`
 }
 
 func DeleteRsReportRecord(rsCalendarId, rsCalendarResearcherId int) (err error) {
@@ -274,8 +278,6 @@ type RsOverseasReportRecordResp struct {
 	RsReportRecordNumList []RsOverseasReportRecordNum `description:"统计次数"`
 }
 
-
-
 func GetOverseasGroupResearcherRecordList(startDate, endDate, companyStatus string) (list []*RsReportRecordGroup, err error) {
 	var databaseName string
 	if utils.RunMode == "debug" {
@@ -404,9 +406,80 @@ func GetOverseasGroupSellerRecordList(startDate, endDate, companyStatus string)
 	sql := `SELECT m.*,SUM(m.num) AS num  FROM (` + sql1 + ` UNION ALL ` + sql2
 	sql += ` ) AS m  WHERE 1=1 `
 
-
 	sql += ` Group by admin_id `
 	_, err = o.Raw(sql, pars).QueryRows(&list)
 
 	return
 }
+
+// 根据ID获取详情
+func GetRsReportRecordDetailByRsReportRecordId(rsReportRecordId int) (item *RsReportRecord, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT * FROM rs_report_record WHERE rs_report_record_id=? `
+	err = o.Raw(sql, rsReportRecordId).QueryRow(&item)
+	return
+}
+
+// UpdateRsReportRecordPermissionMulti 批量修改
+func UpdateRsReportRecordPermissionMulti(items []*RsReportRecord) (err error) {
+	o, err := orm.NewOrm().Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+
+	//批量修改
+	p, err := o.Raw("UPDATE rs_report_record SET permission_name = ?  WHERE rs_report_record_id = ?").Prepare()
+	if err != nil {
+		return
+	}
+	defer func() {
+		_ = p.Close() // 别忘记关闭 statement
+	}()
+
+	for _, v := range items {
+		_, err = p.Exec(v.PermissionName, v.RsReportRecordId)
+		if err != nil {
+			return
+		}
+	}
+	return
+}
+
+// UpdateRsReportRecordInteractionNumnMulti 批量修改互动数量
+func UpdateRsReportRecordInteractionNumnMulti(items []*RsReportRecord) (err error) {
+	o, err := orm.NewOrm().Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+
+	//批量修改
+	p, err := o.Raw("UPDATE rs_report_record SET interaction_num = ?  WHERE rs_report_record_id = ?").Prepare()
+	if err != nil {
+		return
+	}
+	defer func() {
+		_ = p.Close() // 别忘记关闭 statement
+	}()
+
+	for _, v := range items {
+		_, err = p.Exec(v.InteractionNum, v.RsReportRecordId)
+		if err != nil {
+			return
+		}
+	}
+	return
+}

+ 40 - 0
models/roadshow/rs_report_record_permission.go

@@ -0,0 +1,40 @@
+package roadshow
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hz_crm_api/utils"
+	"time"
+)
+
+type RsReportRecordPermission struct {
+	RsReportRecordPermissionId int64     `orm:"column(rs_report_record_permission_id);pk"`
+	CompanyId                  int       `description:"公司id"`
+	ProductId                  int       `description:"产品id"`
+	ProductName                string    `description:"产品名称"`
+	ReportPermissionId         int       `description:"权限id(作废)"`
+	Status                     string    `description:"状态"`
+	CreatedTime                time.Time `description:"创建时间"`
+	ChartPermissionId          int       `description:"大分类ID"`
+	StartDate                  string    `description:"合同开始日期"`
+	EndDate                    string    `description:"合同结束日期"`
+	ModifyTime                 string    `description:"更新时间"`
+	IsUpgrade                  int       `description:"是否升级,1是,0否"`
+	ExpensiveYx                int       `description:"权益研选: 0-3w; 1-5w"`
+	RsCalendarId               int       `description:"路演活动id"`
+	time.Time
+}
+
+// 根据企业用户id和产品id获取所有正式的权限
+func GetCompanyProductReportPermissionList(companyId []int, productId int) (items []*RsReportRecordPermission, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM company_report_permission  WHERE company_id IN (` + utils.GetOrmInReplace(len(companyId)) + `) and product_id=?  `
+	_, err = o.Raw(sql, companyId, productId).QueryRows(&items)
+	return
+}
+
+func MultiRsReportRecordPermission(items []*RsReportRecordPermission) (err error) {
+	o := orm.NewOrm()
+	//批量插入
+	_, err = o.InsertMulti(len(items), items)
+	return
+}

+ 44 - 1
models/statistic_report.go

@@ -414,6 +414,8 @@ type IncrementalList struct {
 	SellerIdInit    int    `description:"权益初始化销售ID"`
 	SellerIdLast    int    `description:"合同到期之前最后所属销售ID"`
 	ShareSellerInit string `description:"共享销售员"`
+	SysRealName     string `description:"操作者名称"`
+	Operation       string `description:"操作"`
 }
 
 // GetIncrementalNewCompanyCount 获取增量客户报表列表统计数据(根据合同来展示)
@@ -748,6 +750,23 @@ a.product_id,a.product_name,b.region_type,c.renewal_reason FROM company_operatio
 	return
 }
 
+// 获取试用客户报表列表统计数据(根据新增客户时间来展示)
+func GetIncrementalCompanyCountByOperationRecordRai(condition string, pars []interface{}) (total int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT a.id,a.company_id,b.company_name,c.seller_id,c.seller_name,
+a.product_id,a.product_name,b.region_type,c.renewal_reason FROM company_operation_record a
+		RIGHT JOIN company b ON a.company_id = b.company_id 
+		 JOIN company_product c ON b.company_id = c.company_id and a.product_id=c.product_id WHERE 1 = 1 `
+
+	if condition != "" {
+		sql += condition
+	}
+	//sql += " order by a.start_date desc "
+	sql = `select count(1) count from (` + sql + ` group by a.id ) f `
+	err = o.Raw(sql, pars).QueryRow(&total)
+	return
+}
+
 // 获取试用客户报表列表统计数据(根据新增客户和对应的产品时间来展示)
 func GetIncrementalCompanyProductCountByOperationRecord(condition string, pars []interface{}) (total int, err error) {
 	o := orm.NewOrm()
@@ -802,7 +821,31 @@ func GetIncrementalCompanyListByOperationRecord(condition string, pars []interfa
 	sql1 += ` GROUP BY a.company_id, a.product_id `
 
 	//查询真正的数据
-	sql := `SELECT a.id, a.company_id, b.company_name, c.seller_id, c.seller_name, c.seller_name_init, a.product_id, a.product_name, a.create_time, b.region_type, c.renewal_reason, c.renewal_todo, c.status FROM company_operation_record a
+	sql := `SELECT a.id, a.company_id, b.company_name, c.seller_id, c.seller_name, c.seller_name_init, a.product_id, a.product_name, a.create_time, b.region_type, c.renewal_reason, c.renewal_todo, c.status , a.sys_real_name, a.operation FROM company_operation_record a
+		RIGHT JOIN company b ON a.company_id = b.company_id
+		JOIN company_product c ON b.company_id = c.company_id 
+		AND a.product_id = c.product_id
+where a.id in (` + sql1 + `) order by  create_time DESC,company_id DESC limit ?,?`
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+// GetIncrementalCompanyListByOperationRecord 获取试用客户报表列表数据(根据新增客户时间来展示)
+func GetIncrementalCompanyListByOperationRecordRai(condition string, pars []interface{}, startSize, pageSize int) (items []*IncrementalList, err error) {
+	o := orm.NewOrm()
+	//查询出最大id
+	sql1 := `SELECT max(id) id FROM company_operation_record a
+		RIGHT JOIN company b ON a.company_id = b.company_id
+		JOIN company_product c ON b.company_id = c.company_id 
+		AND a.product_id = c.product_id 
+	WHERE 1 = 1 `
+	if condition != "" {
+		sql1 += condition
+	}
+	sql1 += ` GROUP BY a.id `
+
+	//查询真正的数据
+	sql := `SELECT a.id, a.company_id, b.company_name, c.seller_id, c.seller_name, c.seller_name_init, a.product_id, a.product_name, a.create_time, b.region_type, c.renewal_reason, c.renewal_todo, c.status , a.sys_real_name, a.operation FROM company_operation_record a
 		RIGHT JOIN company b ON a.company_id = b.company_id
 		JOIN company_product c ON b.company_id = c.company_id 
 		AND a.product_id = c.product_id

+ 7 - 0
models/system/sys_user.go

@@ -130,6 +130,13 @@ func GetAdminList() (items []*Admin, err error) {
 	return
 }
 
+func GetAdminEnabledList() (items []*Admin, err error) {
+	sql := `SELECT * FROM admin  WHERE  enabled=1  `
+	o := orm.NewOrm()
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
 // GetSysUserByMobile 根据手机号获取管理信息
 //func GetSysUserByMobile(mobile string) (item *Admin, err error) {
 //	sql := `SELECT * FROM admin WHERE mobile = ? LIMIT 1`

+ 102 - 19
services/roadshow/report.go

@@ -190,13 +190,15 @@ func GetTimeIntervalData(startDate, endDate, adminType, dimensionType string) (a
 }
 
 type AdminDataMap struct {
-	TryOutMap  map[int]int `description:"试用路演次数"`
-	FormalMap  map[int]int `description:"正式路演次数"`
-	MeetingMap map[int]int `description:"会议次数"`
-	OnlineMap  map[int]int `description:"线上路演次数"`
-	OfflineMap map[int]int `description:"线上路演次数"`
-	StartDate  string      `description:"开始日期"`
-	EndDate    string      `description:"开始日期"`
+	TryOutMap   map[int]int `description:"试用路演次数"`
+	FormalMap   map[int]int `description:"正式路演次数"`
+	MeetingMap  map[int]int `description:"会议次数"`
+	OnlineMap   map[int]int `description:"线上路演次数"`
+	OfflineMap  map[int]int `description:"线上路演次数"`
+	RoadShowMap map[int]int `description:"路演总次数"`
+	SalonMap    map[int]int `description:"沙龙路演次数"`
+	StartDate   string      `description:"开始日期"`
+	EndDate     string      `description:"开始日期"`
 }
 
 // getSectionData 获取周期数据
@@ -219,6 +221,8 @@ func getResearcherSectionData(startDate, endDate time.Time) (adminDataMap AdminD
 	tryOutMap := make(map[int]int)
 	formalMap := make(map[int]int)
 	meetingMap := make(map[int]int)
+	roadShowMap := make(map[int]int) // 路演总次数
+	salonMap := make(map[int]int)    //沙龙路演次数
 	//正式客户
 	{
 		var condition string
@@ -269,12 +273,49 @@ func getResearcherSectionData(startDate, endDate time.Time) (adminDataMap AdminD
 			meetingMap[v.AdminId] = v.Num
 		}
 	}
+
+	//路演总次数
+	{
+		var condition string
+		var pars []interface{}
+		condition = ` and start_date >= ? and end_date <= ? and activity_type = ? `
+		pars = append(pars, startDate, endDate, "路演")
+		data, tmpErr := roadshow.GetGroupResearcherRecordList(condition, pars)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		for _, v := range data {
+			//fmt.Println(v)
+			roadShowMap[v.AdminId] = v.Num
+		}
+	}
+
+	//沙龙路演次数
+	{
+		var condition string
+		var pars []interface{}
+		condition = ` and start_date >= ? and end_date <= ? and activity_type = ? `
+		pars = append(pars, startDate, endDate, "沙龙")
+		data, tmpErr := roadshow.GetGroupResearcherRecordList(condition, pars)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		for _, v := range data {
+			//fmt.Println(v)
+			salonMap[v.AdminId] = v.Num
+		}
+	}
+
 	adminDataMap = AdminDataMap{
-		TryOutMap:  tryOutMap,
-		FormalMap:  formalMap,
-		MeetingMap: meetingMap,
-		StartDate:  startDate.Format(utils.FormatDate),
-		EndDate:    endDate.Format(utils.FormatDate),
+		TryOutMap:   tryOutMap,
+		FormalMap:   formalMap,
+		MeetingMap:  meetingMap,
+		RoadShowMap: roadShowMap,
+		SalonMap:    salonMap,
+		StartDate:   startDate.Format(utils.FormatDate),
+		EndDate:     endDate.Format(utils.FormatDate),
 	}
 	return
 }
@@ -286,6 +327,9 @@ func getSellerSectionData(startDate, endDate time.Time, dimensionType string) (a
 	meetingMap := make(map[int]int)
 	onlineMap := make(map[int]int)
 	offlineMap := make(map[int]int)
+	roadShowMap := make(map[int]int) // 路演总次数
+	salonMap := make(map[int]int)    //沙龙路演次数
+
 	//fmt.Println()
 	//客户状态维度
 	if dimensionType == "company_status" {
@@ -438,14 +482,53 @@ func getSellerSectionData(startDate, endDate time.Time, dimensionType string) (a
 		}
 	}
 
+	//权益路演
+	if dimensionType == "roadshow_rai" {
+		//路演总次数
+		{
+			var condition string
+			var pars []interface{}
+			condition = ` and start_date >= ? and end_date <= ? and activity_type = ? `
+			pars = append(pars, startDate, endDate, "路演")
+			data, tmpErr := roadshow.GetGroupSellerRecordList(condition, pars)
+			if tmpErr != nil {
+				err = tmpErr
+				return
+			}
+			for _, v := range data {
+				//fmt.Println(v)
+				roadShowMap[v.AdminId] = v.Num
+			}
+		}
+
+		//沙龙路演次数
+		{
+			var condition string
+			var pars []interface{}
+			condition = ` and start_date >= ? and end_date <= ? and activity_type = ? `
+			pars = append(pars, startDate, endDate, "沙龙")
+			data, tmpErr := roadshow.GetGroupSellerRecordList(condition, pars)
+			if tmpErr != nil {
+				err = tmpErr
+				return
+			}
+			for _, v := range data {
+				//fmt.Println(v)
+				salonMap[v.AdminId] = v.Num
+			}
+		}
+	}
+
 	adminDataMap = AdminDataMap{
-		TryOutMap:  tryOutMap,
-		FormalMap:  formalMap,
-		MeetingMap: meetingMap,
-		OfflineMap: offlineMap,
-		OnlineMap:  onlineMap,
-		StartDate:  startDate.Format(utils.FormatDate),
-		EndDate:    endDate.Format(utils.FormatDate),
+		TryOutMap:   tryOutMap,
+		FormalMap:   formalMap,
+		MeetingMap:  meetingMap,
+		OfflineMap:  offlineMap,
+		OnlineMap:   onlineMap,
+		RoadShowMap: roadShowMap,
+		SalonMap:    salonMap,
+		StartDate:   startDate.Format(utils.FormatDate),
+		EndDate:     endDate.Format(utils.FormatDate),
 	}
 	return
 }

+ 3 - 0
utils/config.go

@@ -354,6 +354,9 @@ ZwIDAQAB
 			ETA_FORUM_HUB_MD5_KEY = config["eta_forum_hub_md5_key"]
 		}
 	}
+	if config["hongze_open_api_host"] != "" {
+		HongzeOpenApiHost = config["hongze_open_api_host"]
+	}
 	tmpLibreOfficePath, err := web.AppConfig.String("libreOfficePath")
 	if err != nil {
 		panic(any("配置文件读取libreOfficePath错误 " + err.Error()))