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" ) // @Title 我的日历列表 // @Description 我的日历列表接口 // @Param KeyWord query string true "搜索关键词" // @Success 200 {object} roadshow.CalendarListResp // @router /company/search [get] func (this *CalendarController) CompanySearch() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } KeyWord := this.GetString("KeyWord") if KeyWord == "" { br.Msg = "请输入搜索词!" return } KeyWord = "%" + KeyWord + "%" var groupId int if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP { groupId = sysUser.GroupId } else { groupId = -1 } list, err := roadshow.CompanySearchV2(sysUser.AdminId, groupId, KeyWord, sysUser.RoleTypeCode) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "搜索客户失败!" br.ErrMsg = "搜索客户失败!Err:" + err.Error() return } if list == nil { list = make([]*roadshow.CompanySearchView, 0) } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = list } // CompanyDetail // @Title 我的日历列表 // @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() { br := new(models.BaseResponse).Init() defer func() { if br.ErrMsg == "" { br.IsSendEmail = false } this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } companyId, _ := this.GetInt("CompanyId") if companyId <= 0 { br.Msg = "参数错误!" 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() { br.Msg = "该客户已被删除" return } br.Msg = "搜索客户失败!" br.ErrMsg = "搜索客户失败!Err:" + err.Error() return } 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 = companyStatus detailView.IndustryId = companyProductItem.IndustryId detailView.IndustryName = companyProductItem.IndustryName //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 = "获取成功" br.Data = detailView return } // 英文客户 enItem, e := models.GetEnglishCompanyById(companyId) if e != nil { br.Msg = "搜索英文客户失败!" br.ErrMsg = "获取英文客户详情失败!Err:" + e.Error() return } detailView.CompanyId = enItem.CompanyId detailView.CompanyName = enItem.CompanyName detailView.Status = "正常" detailView.EnglishCompany = 1 detailView.EnglishCountry = enItem.Country detailView.EnglishViewTotal = enItem.ViewTotal br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = detailView } //func init() { // init16_0() //} 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) fmt.Println("----", len(itemsRs)) if len(itemsRs) > 0 { err = roadshow.MultiRsReportRecordPermission(itemsRs) // 添加公司当时对应的权限信息 fmt.Println(err) } 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) }