Browse Source

no message

zhangchuanxing 2 months ago
parent
commit
0b8567fb54
3 changed files with 126 additions and 10 deletions
  1. 2 1
      models/db.go
  2. 47 0
      models/roadshow/report_record_permission.go
  3. 77 9
      services/roadshow/report.go

+ 2 - 1
models/db.go

@@ -88,7 +88,8 @@ func init() {
 		new(ReportSendThsDetail),
 		new(Report),
 		new(UserViewStatistics),
-		new(roadshow.RsReportRecord), //路演记录
+		new(roadshow.RsReportRecord),           //路演记录
+		new(roadshow.RsReportRecordPermission), //路演公司权限记录
 		new(CompanyReportRecord),
 		new(ChartPermission), // 权限表
 		new(ComeinWhiteUser), // 进门财经白名单

+ 47 - 0
models/roadshow/report_record_permission.go

@@ -0,0 +1,47 @@
+package roadshow
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_task/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"`
+}
+
+// 根据企业用户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
+}
+
+// 根据路演ID获取已经存在的路演信息
+func GetCompanyProductReportPermissionrsCalendarIdList(rsCalendarId []int) (items []*RsReportRecordPermission, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT rs_calendar_id FROM rs_report_record_permission  WHERE  rs_calendar_id IN (` + utils.GetOrmInReplace(len(rsCalendarId)) + `) `
+	_, err = o.Raw(sql, rsCalendarId).QueryRows(&items)
+	return
+}
+
+func MultiRsReportRecordPermission(items []*RsReportRecordPermission) (err error) {
+	o := orm.NewOrm()
+	//批量插入
+	_, err = o.InsertMulti(len(items), items)
+	return
+}

+ 77 - 9
services/roadshow/report.go

@@ -57,17 +57,27 @@ func AddReportRecord(cont context.Context) (err error) {
 		return
 	}
 	existMap := make(map[string]*roadshow.RsReportRecord)
-	var companyIds []int
+
 	for _, v := range existList {
 		key := strconv.Itoa(v.RsCalendarId) + "_" + strconv.Itoa(v.RsCalendarResearcherId)
 		existMap[key] = v
-		if v.CompanyId > 0 {
-			companyIds = append(companyIds, v.CompanyId)
-		}
 	}
 	mapPermissionNameFicc := make(map[int][]string)
 	mapPermissionNameRai := make(map[int][]string)
+	mapPermissionFicc := make(map[int][]*roadshow.RsReportRecordPermission)
+	mapPermissionRai := make(map[int][]*roadshow.RsReportRecordPermission)
 
+	var itemsRs []*roadshow.RsReportRecordPermission
+	list, err := roadshow.GetRsCalendarDetail(endDate)
+	if err != nil {
+		return
+	}
+	var companyIds []int
+	for _, v := range list {
+		if v.CompanyId > 0 {
+			companyIds = append(companyIds, v.CompanyId)
+		}
+	}
 	if len(companyIds) > 0 {
 		listPermissionNameFicc, errFicc := models.GetCompanyProductReportPermissionList(companyIds, 1) // FICC权限信息
 		if errFicc != nil {
@@ -76,9 +86,15 @@ func AddReportRecord(cont context.Context) (err error) {
 		}
 		mapPermissionArrFicc := make(map[string]bool)
 		for _, v := range listPermissionNameFicc {
+			if companyMap[v.CompanyId] == nil {
+				continue
+			}
 			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
 		}
@@ -91,18 +107,45 @@ func AddReportRecord(cont context.Context) (err error) {
 
 		mapPermissionArrRai := make(map[string]bool)
 		for _, v := range listPermissionNameRai {
+			if companyMapRai[v.CompanyId] == nil {
+				continue
+			}
 			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
 		}
-	}
 
-	list, err := roadshow.GetRsCalendarDetail(endDate)
-	if err != nil {
-		return
+		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)
+		}
 	}
+
+	mapRsReportRecordPermission := make(map[string]bool) // 一个公司的一场路演,添加了多个研究员只记录一次
 	for _, v := range list {
 		company := new(roadshow.CompanySearchView)
 		if v.CompanyId > 0 {
@@ -143,7 +186,7 @@ func AddReportRecord(cont context.Context) (err error) {
 				reportUpdateParams["company_id"] = company.CompanyId
 				reportUpdateParams["company_name"] = company.CompanyName
 				reportUpdateParams["credit_code"] = company.CreditCode
-				reportUpdateParams["company_status"] = company.Status
+				reportUpdateParams["company_status"] = company.Status //记录当时的状态
 				reportUpdateParams["permission_name"] = company.PermissionName
 			}
 			reportUpdateParams["activity_type"] = v.ActivityType
@@ -229,6 +272,31 @@ func AddReportRecord(cont context.Context) (err error) {
 			if err != nil {
 				return
 			}
+
+			if mapRaiSllerId[v.SysUserId] {
+				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
+				}
+			}
+		}
+		if len(itemsRs) > 0 {
+			err = roadshow.MultiRsReportRecordPermission(itemsRs) // 添加公司当时对应的权限信息
 		}
 	}
 	return err