xingzai пре 7 месеци
родитељ
комит
3ecd5189da

+ 71 - 7
controllers/cygx/rai_serve.go

@@ -8,6 +8,7 @@ import (
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/cygx"
 	"hongze/hz_crm_api/models/roadshow"
+	cygxService "hongze/hz_crm_api/services/cygx"
 	"hongze/hz_crm_api/utils"
 	"strconv"
 	"strings"
@@ -591,16 +592,16 @@ func (this *RaiServeCoAntroller) CoverageRate() {
 		br.ErrMsg = "获取用户信息失败-GetCygxRaiServeBillListWeek4!Err:" + err.Error()
 		return
 	}
-	mapWeek := make(map[int]float64)
+	mapWeek := make(map[int]string)
 	for k, v := range listWeekBill {
-		mapWeek[k] = v.ServeCount
+		mapWeek[k] = v.CoverageRate
 	}
 
 	resp := new(cygx.RaiServeCoverageRateResp)
-	resp.ThisWeekAmount = strconv.Itoa(int(mapWeek[0])) + "%"
-	resp.LastWeekAmount = strconv.Itoa(int(mapWeek[1])) + "%"
-	resp.TwoWeekAmount = strconv.Itoa(int(mapWeek[2])) + "%"
-	resp.ThreeWeekAmount = strconv.Itoa(int(mapWeek[3])) + "%"
+	resp.ThisWeekAmount = mapWeek[0] + "%"
+	resp.LastWeekAmount = mapWeek[1] + "%"
+	resp.TwoWeekAmount = mapWeek[2] + "%"
+	resp.ThreeWeekAmount = mapWeek[3] + "%"
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"
@@ -637,6 +638,7 @@ func (this *RaiServeCoAntroller) BillList() {
 	tagType, _ := this.GetInt("TagType")
 	tagId, _ := this.GetInt("TagId")
 	serveTypeId, _ := this.GetInt("ServeTypeId")
+	whatWeek, _ := this.GetInt("WhatWeek")
 
 	var startSize int
 	if pageSize <= 0 {
@@ -660,6 +662,13 @@ func (this *RaiServeCoAntroller) BillList() {
 		br.ErrMsg = "获取用户信息失败-getServeBillTag!Err:" + err.Error()
 		return
 	}
+	if whatWeek > 0 {
+		now := time.Now()
+		// 计算所选周的周一
+		monday := now.AddDate(0, 0, -int(now.Weekday()-time.Monday)-(whatWeek-1)*7)
+		condition += " AND  week_start_date = ? "
+		pars = append(pars, monday.Format(utils.FormatDate))
+	}
 
 	condition += " AND  company_id = ? "
 	pars = append(pars, companyId)
@@ -686,8 +695,63 @@ func (this *RaiServeCoAntroller) BillList() {
 	if len(list) == 0 {
 		resp.List = make([]*cygx.CygxRaiServeBillResp, 0)
 	} else {
+		var activityIds []int
+		var activitySpecialIds []int
+		var articleIds []int
+		var rsCalendarIds []int
 		for _, v := range list {
-			v.Tag = "云计算,阿里云,华为云,移动&联通"
+			switch v.Source {
+			case utils.CYGX_OBJ_ARTICLE:
+				articleIds = append(articleIds, v.SourceId)
+			case utils.CYGX_OBJ_ACTIVITY:
+				activityIds = append(activityIds, v.SourceId)
+			case utils.CYGX_OBJ_ACTIVITYSPECIAL:
+				activitySpecialIds = append(activitySpecialIds, v.SourceId)
+			case utils.CYGX_OBJ_RS_CALENDAR:
+				rsCalendarIds = append(rsCalendarIds, v.SourceId)
+			}
+		}
+
+		maparticleIndustrialLabel := make(map[int][]string) //文章产业标签
+		maparticleSubjectLabel := make(map[int][]string)    // 文章行业标签
+		if len(articleIds) > 0 {
+			maparticleIndustrialLabel = cygxService.GetArticleIndustrialLabelByArticleId(articleIds) // 关联产业
+			maparticleSubjectLabel = cygxService.GetArticleSubjectLabelByArticleId(articleIds)       // 关联标的
+		}
+
+		mapActivityIndustrialLabel := make(map[int][]string) //活动产业标签
+		mapActivitySubjectLabel := make(map[int][]string)    //活动标的标签
+		mapActivityIndustrialLabel = cygxService.GetActivityIndustrialLabelByActivityIds(activityIds, 1)
+		mapActivitySubjectLabel = cygxService.GetActivitySubjectLabelByActivityIds(activityIds, 1)
+
+		mapActivitySpeicalIndustrialLabel := make(map[int][]string) //活动产业标签
+		mapActivitySpeicalSubjectLabel := make(map[int][]string)    //活动标的标签
+		mapActivitySpeicalIndustrialLabel = cygxService.GetActivityIndustrialLabelByActivityIds(activityIds, 2)
+		mapActivitySpeicalSubjectLabel = cygxService.GetActivitySubjectLabelByActivityIds(activityIds, 2)
+
+		mapRsCalendarLabel := make(map[int][]string) //1v1 路演标签
+		mapRsCalendarLabel = cygxService.GetRsCalendarLabelByRsCalendarIds(rsCalendarIds)
+
+		for _, v := range list {
+			switch v.Source {
+			case utils.CYGX_OBJ_ARTICLE:
+				v.Tag = strings.Join(maparticleIndustrialLabel[v.SourceId], ",")
+				if len(maparticleSubjectLabel[v.SourceId]) > 0 {
+					v.Tag += "," + strings.Join(maparticleSubjectLabel[v.SourceId], ",")
+				}
+			case utils.CYGX_OBJ_ACTIVITY:
+				v.Tag = strings.Join(mapActivityIndustrialLabel[v.SourceId], ",")
+				if len(mapActivitySubjectLabel[v.SourceId]) > 0 {
+					v.Tag += "," + strings.Join(mapActivitySubjectLabel[v.SourceId], ",")
+				}
+			case utils.CYGX_OBJ_ACTIVITYSPECIAL:
+				v.Tag = strings.Join(mapActivitySpeicalIndustrialLabel[v.SourceId], ",")
+				if len(mapActivitySpeicalSubjectLabel[v.SourceId]) > 0 {
+					v.Tag += "," + strings.Join(mapActivitySpeicalSubjectLabel[v.SourceId], ",")
+				}
+			case utils.CYGX_OBJ_RS_CALENDAR:
+				v.Tag = strings.Join(mapRsCalendarLabel[v.SourceId], ",")
+			}
 		}
 		resp.List = list
 	}

+ 17 - 0
models/cygx/industrial_activity_group_management.go

@@ -2,6 +2,7 @@ package cygx
 
 import (
 	"github.com/beego/beego/v2/client/orm"
+	"hongze/hz_crm_api/utils"
 	"time"
 )
 
@@ -101,6 +102,22 @@ func GetIndustrialActivityGroupListByactivityIds(activityIds string) (items []*I
 	return
 }
 
+// 列表
+func GetIndustrialActivityGroupListByactivityIdsArr(activityIds []int, source int) (items []*IndustrialActivityGroupResp, err error) {
+	lenArr := len(activityIds)
+	if lenArr == 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT  mg.*,m.industry_name  FROM
+	        cygx_industrial_activity_group_management AS mg
+	      	 INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = mg.industrial_management_id 
+			WHERE 1 = 1 
+			AND mg.activity_id IN (` + utils.GetOrmInReplace(lenArr) + `) AND mg.source = ? GROUP BY  mg.activity_id,mg.industrial_management_id`
+	_, err = o.Raw(sql, activityIds, source).QueryRows(&items)
+	return
+}
+
 type IndustryActCountGroupByType struct {
 	ActivityType  string `json:"activity_type" description:"活动类型名称"`
 	ActivityCount int    `json:"activity_count" description:"关联的活动数"`

+ 21 - 0
models/cygx/industrial_activity_group_subject.go

@@ -2,6 +2,7 @@ package cygx
 
 import (
 	"github.com/beego/beego/v2/client/orm"
+	"hongze/hz_crm_api/utils"
 	"time"
 )
 
@@ -34,6 +35,26 @@ func GetSubjectActivityGroupManagementList(activityId, source int) (items []*Sub
 	return
 }
 
+// 列表
+func GetSubjectActivityGroupManagementListByActivityIdsArr(activityIds []int, source int) (items []*SubjectActivityGroupManagementRep, err error) {
+	lenArr := len(activityIds)
+	if lenArr == 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT
+    	    ag.activity_id,
+			s.subject_name,
+			s.industrial_subject_id 
+			FROM
+			cygx_industrial_activity_group_subject AS ag
+			INNER JOIN cygx_industrial_subject AS s ON s.industrial_subject_id = ag.industrial_subject_id 
+			WHERE
+				 ag.activity_id IN (` + utils.GetOrmInReplace(lenArr) + `) AND ag.source = ?`
+	_, err = o.Raw(sql, activityIds, source).QueryRows(&items)
+	return
+}
+
 // 列表
 func GetSubjectActivityGroupManagementListBySubjectId(subjectId, source int) (items []*SubjectActivityGroupManagementRep, err error) {
 	o := orm.NewOrmUsingDB("hz_cygx")

+ 2 - 0
models/cygx/rai_serve_bill.go

@@ -124,6 +124,8 @@ type CygxRaiServeBillResp struct {
 	ServeCount    float64 `comment:"服务量小计"`
 	Tag           string  `comment:"标签,多个用 , 隔开"`
 	IsKp          int     `comment:"是否是KP,1:是、0:否"`
+	SourceId      int     `comment:"来源ID"`
+	Source        string  `comment:"来源 "`
 	ViewTime      string  `comment:"浏览时间"`
 }
 

+ 2 - 2
models/cygx/rai_serve_week_bill.go

@@ -11,7 +11,7 @@ type CygxRaiServeWeekBill struct {
 	CompanyName     string    `comment:"公司名称"`
 	UserTotal       int       `comment:"用户数量"`
 	WeekServeCount  float64   `comment:"周度服务量总计"`
-	CoverageRate    float64   `comment:"覆盖率"`
+	CoverageRate    string    `comment:"覆盖率"`
 	WeekStartDate   string    `comment:"周一开始日期"`
 	WeekEndDate     string    `comment:"周日结束日期"`
 	CreateTime      time.Time `comment:"创建时间"`
@@ -19,7 +19,7 @@ type CygxRaiServeWeekBill struct {
 }
 
 // 最近四周覆盖率列表
-func GetCygxRaiServeBillListWeek4(companyId int) (items []*CygxRaiServeBill, err error) {
+func GetCygxRaiServeBillListWeek4(companyId int) (items []*CygxRaiServeWeekBill, err error) {
 	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT  * FROM cygx_rai_serve_week_bill WHERE company_id = ? ORDER BY week_start_date DESC  LIMIT  4  `
 	_, err = o.Raw(sql, companyId).QueryRows(&items)

+ 47 - 0
services/cygx/acitvity.go

@@ -1496,3 +1496,50 @@ func GetMicroRoadShowDefaultImgConfig() (audioMap, videoMap, audioShareMap, vide
 	}
 	return
 }
+
+// 根据活动ID获取活动关联的产业名称
+func GetActivityIndustrialLabelByActivityIds(activityids []int, source int) (respMap map[int][]string) {
+	if len(activityids) == 0 {
+		return
+	}
+	var err error
+	defer func() {
+		if err != nil {
+			go alarm_msg.SendAlarmMsg(fmt.Sprint("根据活动ID获取活动关联的产业名称 失败 GetActivityIndustrialLabelByActivityIds activityids: ", activityids, err.Error()), 2)
+		}
+	}()
+	list, e := cygx.GetIndustrialActivityGroupListByactivityIdsArr(activityids, source)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetIndustrialActivityGroupListByactivityIdsArr, Err: " + e.Error())
+		return
+	}
+	respMap = make(map[int][]string, 0)
+	for _, v := range list {
+		respMap[v.ActivityId] = append(respMap[v.ActivityId], v.IndustryName)
+	}
+	return
+}
+
+// 根据活动ID获取活动关联的标的名称
+func GetActivitySubjectLabelByActivityIds(activityids []int, source int) (respMap map[int][]string) {
+	if len(activityids) == 0 {
+		return
+	}
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go alarm_msg.SendAlarmMsg(fmt.Sprint("根据活动ID获取活动关联的标的名称 失败 GetActivitySubjectLabelByActivityIds activityids: ", activityids, err.Error()), 2)
+		}
+	}()
+	list, e := cygx.GetSubjectActivityGroupManagementListByActivityIdsArr(activityids, source)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetSubjectActivityGroupManagementListByActivityIdsArr, Err: " + e.Error())
+		return
+	}
+	respMap = make(map[int][]string, 0)
+	for _, v := range list {
+		respMap[v.ActivityId] = append(respMap[v.ActivityId], v.SubjectName)
+	}
+	return
+}

+ 80 - 0
services/cygx/user_label.go

@@ -370,3 +370,83 @@ func HandleListRsCalendar(list []*roadshow.RsCalendarMeetingUserByRai) (items []
 
 	return
 }
+
+// 获取1V1路演标签信息
+func GetRsCalendarLabelByRsCalendarIds(rsCalendarIds []int) (respMap map[int][]string) {
+	if len(rsCalendarIds) == 0 {
+		return
+	}
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go alarm_msg.SendAlarmMsg(fmt.Sprint("获取1V1路演标签信息 失败 GetRsCalendarLabelByRsCalendarIds rsCalendarIds: ", rsCalendarIds, err.Error()), 2)
+		}
+	}()
+	//获取研究员信息
+	researchers, err := roadshow.GetRsCalendarResearcherListByIds(rsCalendarIds)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return
+	}
+	mapResearcherName := make(map[int][]string)
+	for _, v := range researchers {
+		mapResearcherName[v.RsCalendarId] = append(mapResearcherName[v.RsCalendarId], v.ResearcherName)
+	}
+
+	listGroup, err := roadshow.GetRsCalendarMeetingLabelGroupDetailByRsCalendarIds(rsCalendarIds)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return
+	}
+
+	var industrialManagementIds []int
+	var industrialSubjectIds []int
+
+	mapindustrialManagementName := make(map[int]string)
+	mapindustrialSubjectName := make(map[int]string)
+	mapCelueName := make(map[int]string)
+	for _, v := range listGroup {
+		switch v.TagType {
+		case 1:
+			industrialManagementIds = append(industrialManagementIds, v.TagId)
+		case 2:
+			industrialSubjectIds = append(industrialSubjectIds, v.TagId)
+		case 3:
+			mapCelueName[v.RsCalendarId] = strings.Join(mapResearcherName[v.RsCalendarId], ",")
+		}
+	}
+
+	if len(industrialManagementIds) > 0 {
+		IndustryList, e := cygx.GetIndustryListByConditionByIds(industrialManagementIds)
+		if e != nil {
+			err = errors.New("GetIndustryListByConditionByIds" + e.Error())
+			return
+		}
+
+		for _, v := range IndustryList {
+			mapindustrialManagementName[v.IndustrialManagementId] = v.IndustryName
+		}
+	}
+
+	if len(industrialSubjectIds) > 0 {
+		SubjectList, e := cygx.GetIndustrialSubjectDetailByIds(industrialSubjectIds)
+		if e != nil {
+			err = errors.New("GetIndustryListByConditionByIds" + e.Error())
+			return
+		}
+		for _, v := range SubjectList {
+			mapindustrialSubjectName[v.IndustrialSubjectId] = v.SubjectName
+		}
+	}
+	respMap = make(map[int][]string, 0)
+	for _, v := range listGroup {
+		switch v.TagType {
+		case 1:
+			respMap[v.RsCalendarId] = append(respMap[v.RsCalendarId], mapindustrialManagementName[v.TagId])
+		case 2:
+			respMap[v.RsCalendarId] = append(respMap[v.RsCalendarId], mapindustrialSubjectName[v.TagId])
+		case 3:
+			respMap[v.RsCalendarId] = append(respMap[v.RsCalendarId], mapCelueName[v.RsCalendarId])
+		}
+	}
+	return
+}

+ 1 - 0
utils/constants.go

@@ -451,6 +451,7 @@ const (
 	CYGX_OBJ_MINUTESSUMMARY     string = "minutessummary"     // 对象类型:本周研究汇总
 	CYGX_OBJ_YANXUANSPECIAL     string = "yanxuanspecial"     // 对象类型:研选专栏
 	CYGX_OBJ_ASKSERIEVIDEO      string = "askserievideo"      // 对象类型:问答系列视频
+	CYGX_OBJ_RS_CALENDAR        string = "rscalendar"         // 对象类型:研究员日历安排
 )
 
 const (