Browse Source

no message

zhangchuanxing 1 tháng trước cách đây
mục cha
commit
253895ae51

+ 139 - 9
controllers/roadshow/company.go

@@ -8,6 +8,7 @@ import (
 	"hongze/hz_crm_api/models/system"
 	"hongze/hz_crm_api/services"
 	"hongze/hz_crm_api/utils"
+	"strconv"
 	"strings"
 )
 
@@ -102,6 +103,7 @@ func (this *CalendarController) CompanyDetail() {
 	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() {
@@ -121,6 +123,7 @@ func (this *CalendarController) CompanyDetail() {
 			}
 			companyStatus = rsReportRecordItem.CompanyStatus
 			permissionName = rsReportRecordItem.PermissionName
+			viewTotal = rsReportRecordItem.InteractionNum
 		} else {
 			permissionList, err := company.GetCompanyProductReportPermissionList(companyId, productId)
 			if err != nil {
@@ -146,13 +149,7 @@ func (this *CalendarController) CompanyDetail() {
 		detailView.ReportReadTotal = companyProductItem.ViewTotal //ficc报告-累计阅读次数
 
 		if companyType == utils.COMPANY_CLASSIFY_RAI { //权益互动统计
-			companyItem, err := company.GetCompanyById(companyId)
-			if err != nil {
-				br.Msg = "查找客户失败"
-				br.ErrMsg = "查找客户失败,Err:" + err.Error()
-				return
-			}
-			detailView.ReportReadTotal = companyItem.InteractionNum
+			detailView.ReportReadTotal = viewTotal
 		}
 
 		br.Ret = 200
@@ -182,13 +179,13 @@ func (this *CalendarController) CompanyDetail() {
 }
 
 //func init() {
-//	init16_0()
+//	init16_01()
 //}
 
 func init16_0() {
 	var condition string
 	var pars []interface{}
-	condition = ` AND a.company_id > 0  `
+	condition = ` AND a.company_id > 0   AND  a.start_date > '2025-01-01' `
 
 	list, err := roadshow.GetRsReportRecordList(condition, pars)
 	if err != nil {
@@ -206,8 +203,31 @@ func init16_0() {
 		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
@@ -218,6 +238,9 @@ func init16_0() {
 		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
 	}
@@ -233,10 +256,37 @@ func init16_0() {
 		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
@@ -251,6 +301,8 @@ func init16_0() {
 	}
 
 	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
@@ -264,9 +316,87 @@ func init16_0() {
 			}
 		}
 		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)
+}

+ 12 - 0
models/company/company.go

@@ -1982,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
+}

+ 1 - 0
models/db.go

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

+ 33 - 0
models/roadshow/report_record.go

@@ -33,6 +33,7 @@ type RsReportRecord struct {
 	CreateTime                 time.Time `description:"记录创建时间"`
 	RsCalendarResearcherStatus int       `description:"路演活动状态"`
 	PermissionName             string    `description:"开通品种"`
+	InteractionNum             int       `description:"当时用户总的互动量"`
 }
 
 // RsReportRecordResp 总统计信息
@@ -450,3 +451,35 @@ func UpdateRsReportRecordPermissionMulti(items []*RsReportRecord) (err error) {
 	}
 	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
+}