123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314 |
- package roadshow
- import (
- "context"
- "errors"
- "fmt"
- "hongze/hongze_task/models"
- "hongze/hongze_task/models/roadshow"
- "hongze/hongze_task/utils"
- "strconv"
- "strings"
- "time"
- )
- func AddReportRecord(cont context.Context) (err error) {
- defer func() {
- if err != nil {
- fmt.Println("AddReportRecord Err:" + err.Error())
- }
- }()
- adminAll, err := models.GetAdminList()
- if err != nil {
- return
- }
- adminMap := make(map[int]*models.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
- }
- }
- companyList, err := roadshow.RsCompanyList()
- if err != nil {
- return
- }
- companyListRai, err := roadshow.RsCompanyListRai() //权益客户信息
- if err != nil {
- return
- }
- companyMap := make(map[int]*roadshow.CompanySearchView)
- companyMapRai := make(map[int]*roadshow.CompanySearchView)
- for _, v := range companyList {
- companyMap[v.CompanyId] = v
- }
- for _, v := range companyListRai {
- companyMapRai[v.CompanyId] = v
- }
- endDate := time.Now().AddDate(-0, 0, -3).Format(utils.FormatDate)
- existList, err := roadshow.GetExistRsReportRecord(endDate)
- if err != nil {
- return
- }
- existMap := make(map[string]*roadshow.RsReportRecord)
- for _, v := range existList {
- key := strconv.Itoa(v.RsCalendarId) + "_" + strconv.Itoa(v.RsCalendarResearcherId)
- existMap[key] = v
- }
- mapInteractionNum := make(map[int]int)
- 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 {
- err = errFicc
- return
- }
- 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
- }
- listPermissionNameRai, errRai := models.GetCompanyProductReportPermissionList(companyIds, 2) // 权益权限信息
- if errRai != nil {
- err = errRai
- return
- }
- 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
- }
- 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)
- }
- listerrCompanyInteractionNum, errCompany := models.GetCompanyListByCompanyId(companyIds) // 权益客户互动信息
- if errCompany != nil {
- err = errCompany
- return
- }
- for _, v := range listerrCompanyInteractionNum {
- mapInteractionNum[v.CompanyId] = v.InteractionNum
- }
- }
- mapRsReportRecordPermission := make(map[string]bool) // 一个公司的一场路演,添加了多个研究员只记录一次
- for _, v := range list {
- company := new(roadshow.CompanySearchView)
- if v.CompanyId > 0 {
- if mapRaiSllerId[v.SysUserId] {
- company, _ = companyMapRai[v.CompanyId] // 如果是权益销售添加的信息,就用权益相关的客户信息
- if len(mapPermissionNameRai[v.CompanyId]) > 0 {
- company.PermissionName = strings.Join(mapPermissionNameRai[v.CompanyId], "/")
- }
- } else {
- company, _ = companyMap[v.CompanyId]
- if len(mapPermissionNameFicc[v.CompanyId]) > 0 {
- company.PermissionName = strings.Join(mapPermissionNameFicc[v.CompanyId], "/")
- }
- }
- }
- researcher, ok := adminMap[v.ResearcherId]
- if !ok {
- err = errors.New("研究员信息不存在:" + strconv.Itoa(v.ResearcherId))
- //continue
- }
- seller, ok := adminMap[v.SysUserId]
- if !ok {
- err = errors.New("销售信息不存在:" + strconv.Itoa(v.SysUserId))
- //return
- //continue
- }
- key := strconv.Itoa(v.RsCalendarId) + "_" + strconv.Itoa(v.RsCalendarResearcherId)
- if _, ok := existMap[key]; ok { //修改
- utils.FileLog.Info("update:" + strconv.Itoa(v.RsCalendarId))
- reportWhereParams := make(map[string]interface{})
- reportWhereParams["rs_calendar_id"] = v.RsCalendarId
- reportWhereParams["rs_calendar_researcher_id"] = v.RsCalendarResearcherId
- reportUpdateParams := make(map[string]interface{})
- if company != nil {
- reportUpdateParams["company_id"] = company.CompanyId
- reportUpdateParams["company_name"] = company.CompanyName
- reportUpdateParams["credit_code"] = company.CreditCode
- reportUpdateParams["company_status"] = company.Status //记录当时的状态
- reportUpdateParams["permission_name"] = company.PermissionName
- }
- reportUpdateParams["activity_type"] = v.ActivityType
- if researcher != nil {
- reportUpdateParams["researcher_id"] = researcher.AdminId
- reportUpdateParams["researcher_name"] = researcher.RealName
- reportUpdateParams["researcher_group_id"] = researcher.GroupId
- reportUpdateParams["researcher_group_name"] = researcher.GroupName
- } else {
- reportUpdateParams["researcher_id"] = v.ResearcherId
- reportUpdateParams["researcher_name"] = v.ResearcherName
- reportUpdateParams["researcher_group_id"] = 0
- reportUpdateParams["researcher_group_name"] = ""
- }
- if seller != nil {
- reportUpdateParams["seller_id"] = seller.AdminId
- reportUpdateParams["seller_name"] = seller.RealName
- reportUpdateParams["seller_group_id"] = seller.GroupId
- reportUpdateParams["seller_group_name"] = seller.GroupName
- } else {
- reportUpdateParams["seller_id"] = v.SysUserId
- reportUpdateParams["seller_name"] = v.SysUserRealName
- reportUpdateParams["seller_group_id"] = 0
- reportUpdateParams["seller_group_name"] = ""
- }
- reportUpdateParams["start_date"] = v.StartDate
- reportUpdateParams["end_date"] = v.EndDate
- reportUpdateParams["start_time"] = v.StartTime
- reportUpdateParams["end_time"] = v.EndTime
- reportUpdateParams["start_week"] = v.StartWeek
- reportUpdateParams["end_week"] = v.EndWeek
- reportUpdateParams["rs_calendar_researcher_status"] = v.Status
- reportUpdateParams["activity_type"] = v.ActivityType
- reportUpdateParams["roadshow_type"] = v.RoadshowType
- reportUpdateParams["modify_time"] = time.Now()
- err = roadshow.UpdateRsReportRecord(reportWhereParams, reportUpdateParams)
- } else { //新增
- item := new(roadshow.RsReportRecord)
- if company != nil {
- item.CompanyId = company.CompanyId
- item.CompanyName = company.CompanyName
- item.CreditCode = company.CreditCode
- item.CompanyStatus = company.Status
- item.PermissionName = company.PermissionName
- }
- item.ActivityType = v.ActivityType
- item.ResearcherId = v.ResearcherId
- item.ResearcherName = v.ResearcherName
- if researcher != nil {
- item.ResearcherGroupId = researcher.GroupId
- item.ResearcherGroupName = researcher.GroupName
- } else {
- item.ResearcherGroupId = 0
- item.ResearcherGroupName = ""
- }
- if seller != nil {
- item.SellerId = seller.AdminId
- item.SellerName = seller.RealName
- item.SellerGroupId = seller.GroupId
- item.SellerGroupName = seller.GroupName
- } else {
- item.SellerId = v.SysUserId
- item.SellerName = v.SysUserRealName
- item.SellerGroupId = 0
- item.SellerGroupName = ""
- }
- utils.FileLog.Info("add:" + strconv.Itoa(v.RsCalendarId))
- item.RsCalendarId = v.RsCalendarId
- item.RsCalendarResearcherId = v.RsCalendarResearcherId
- item.StartDate = v.StartDate
- item.EndDate = v.EndDate
- item.StartTime = v.StartTime
- item.EndTime = v.EndTime
- item.StartWeek = v.StartWeek
- item.EndWeek = v.EndWeek
- item.CreateTime = time.Now()
- item.ModifyTime = time.Now()
- item.RsCalendarResearcherStatus = v.Status
- item.RoadshowType = v.RoadshowType
- item.InteractionNum = mapInteractionNum[v.CompanyId]
- _, err = roadshow.AddRsReportRecord(item)
- 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
- }
|