|
@@ -1,7 +1,9 @@
|
|
|
package roadshow
|
|
|
|
|
|
import (
|
|
|
+ "fmt"
|
|
|
"hongze/hz_crm_api/models/company"
|
|
|
+ "hongze/hz_crm_api/models/overseas_custom"
|
|
|
"hongze/hz_crm_api/models/roadshow"
|
|
|
"hongze/hz_crm_api/utils"
|
|
|
"time"
|
|
@@ -447,3 +449,497 @@ func getSellerSectionData(startDate, endDate time.Time, dimensionType string) (a
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+type OverseasAdminDataMap struct {
|
|
|
+ TryOutMap map[int]int `description:"试用路演次数"`
|
|
|
+ FormalMap map[int]int `description:"正式路演次数"`
|
|
|
+ CloseMap map[int]int `description:"关闭客户次数"`
|
|
|
+ OnlineMap map[int]int `description:"线上路演次数"`
|
|
|
+ OfflineMap map[int]int `description:"线上路演次数"`
|
|
|
+ StartDate string `description:"开始日期"`
|
|
|
+ EndDate string `description:"开始日期"`
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func GetOverseasWeekDataV2(adminType, dimensionType string, weekNum int) (adminDataList []OverseasAdminDataMap, firstDate time.Time, err error) {
|
|
|
+ nowWeekMonday := utils.GetNowWeekMonday()
|
|
|
+
|
|
|
+ nowWeekSunday := nowWeekMonday.AddDate(0, 0, 7).Add(-1 * time.Second)
|
|
|
+ chanList := make([]chan OverseasAdminDataMap, 0)
|
|
|
+ for i := 0; i < weekNum; i++ {
|
|
|
+ tmpCh := make(chan OverseasAdminDataMap, 0)
|
|
|
+ chanList = append(chanList, tmpCh)
|
|
|
+
|
|
|
+ lastWeekMonday := nowWeekMonday.AddDate(0, 0, -7*i)
|
|
|
+ lastWeekSunday := nowWeekSunday.AddDate(0, 0, -7*i)
|
|
|
+
|
|
|
+
|
|
|
+ firstDate = lastWeekMonday
|
|
|
+ go getOverseasSectionData(lastWeekMonday, lastWeekSunday, adminType, dimensionType, tmpCh)
|
|
|
+ }
|
|
|
+
|
|
|
+ adminDataList = make([]OverseasAdminDataMap, 0)
|
|
|
+ for _, vChan := range chanList {
|
|
|
+ var weekAdminDataMap OverseasAdminDataMap
|
|
|
+ weekAdminDataMap = <-vChan
|
|
|
+ close(vChan)
|
|
|
+ adminDataList = append(adminDataList, weekAdminDataMap)
|
|
|
+ }
|
|
|
+
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func getOverseasSectionData(startDate, endDate time.Time, adminType, dimensionType string, ch chan OverseasAdminDataMap) (adminDataMap OverseasAdminDataMap, err error) {
|
|
|
+ defer func() {
|
|
|
+ ch <- adminDataMap
|
|
|
+ }()
|
|
|
+
|
|
|
+ switch adminType {
|
|
|
+ case "researcher":
|
|
|
+ adminDataMap, err = getOverseasResearcherSectionData(startDate, endDate)
|
|
|
+ case "seller":
|
|
|
+ adminDataMap, err = getOverseasSellerSectionData(startDate, endDate, dimensionType)
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func getOverseasSellerSectionData(startDate, endDate time.Time, dimensionType string) (adminDataMap OverseasAdminDataMap, err error) {
|
|
|
+ tryOutMap := make(map[int]int)
|
|
|
+ formalMap := make(map[int]int)
|
|
|
+ closeMap := make(map[int]int)
|
|
|
+ onlineMap := make(map[int]int)
|
|
|
+ offlineMap := make(map[int]int)
|
|
|
+
|
|
|
+
|
|
|
+ companylist, err := overseas_custom.GetOverseasCustomList("", nil)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ formalIdsArr := make([]int, 0)
|
|
|
+ tryoutIdsArr := make([]int, 0)
|
|
|
+ closeIdsArr := make([]int, 0)
|
|
|
+ for _, v := range companylist {
|
|
|
+ if v.OverseasStatus == "正式" {
|
|
|
+ formalIdsArr = append(formalIdsArr, v.CompanyId)
|
|
|
+ } else if v.OverseasStatus == "试用" {
|
|
|
+ tryoutIdsArr = append(tryoutIdsArr, v.CompanyId)
|
|
|
+ } else if v.OverseasStatus == "关闭" {
|
|
|
+ closeIdsArr = append(closeIdsArr, v.CompanyId)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if dimensionType == "company_status" {
|
|
|
+
|
|
|
+ {
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+ condition = ` and start_date >= ? and end_date <= ? and company_status = ? and company_id IN (` + utils.GetOrmInReplace(len(formalIdsArr)) + `)`
|
|
|
+ pars = append(pars, startDate, endDate, "正式", formalIdsArr)
|
|
|
+ data, tmpErr := roadshow.GetOverseasGroupSellerRecordList(condition, pars)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range data {
|
|
|
+ fmt.Println(v)
|
|
|
+ formalMap[v.AdminId] = v.Num
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ {
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+ condition = ` and start_date >= ? and end_date <= ? and company_status = ? and company_id IN (` + utils.GetOrmInReplace(len(tryoutIdsArr)) + `)`
|
|
|
+ pars = append(pars, startDate, endDate, "试用", tryoutIdsArr)
|
|
|
+ data, tmpErr := roadshow.GetOverseasGroupSellerRecordList(condition, pars)
|
|
|
+
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range data {
|
|
|
+
|
|
|
+ tryOutMap[v.AdminId] = v.Num
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ {
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+ condition = ` and start_date >= ? and end_date <= ? and company_status = ? and company_id IN (` + utils.GetOrmInReplace(len(closeIdsArr)) + `)`
|
|
|
+ pars = append(pars, startDate, endDate, "关闭", closeIdsArr)
|
|
|
+ data, tmpErr := roadshow.GetOverseasGroupSellerRecordList(condition, pars)
|
|
|
+
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range data {
|
|
|
+
|
|
|
+ closeMap[v.AdminId] = v.Num
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ adminDataMap = OverseasAdminDataMap{
|
|
|
+ TryOutMap: tryOutMap,
|
|
|
+ FormalMap: formalMap,
|
|
|
+ CloseMap: closeMap,
|
|
|
+ OfflineMap: offlineMap,
|
|
|
+ OnlineMap: onlineMap,
|
|
|
+ StartDate: startDate.Format(utils.FormatDate),
|
|
|
+ EndDate: endDate.Format(utils.FormatDate),
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func getOverseasResearcherSectionData(startDate, endDate time.Time) (adminDataMap OverseasAdminDataMap, err error) {
|
|
|
+ tryOutMap := make(map[int]int)
|
|
|
+ formalMap := make(map[int]int)
|
|
|
+ closemap := make(map[int]int)
|
|
|
+
|
|
|
+ companylist, err := overseas_custom.GetOverseasCustomList("", nil)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ formalIdsArr := make([]int, 0)
|
|
|
+ tryoutIdsArr := make([]int, 0)
|
|
|
+ closeIdsArr := make([]int, 0)
|
|
|
+ for _, v := range companylist {
|
|
|
+ if v.OverseasStatus == "正式" {
|
|
|
+ formalIdsArr = append(formalIdsArr, v.CompanyId)
|
|
|
+ } else if v.OverseasStatus == "试用" {
|
|
|
+ tryoutIdsArr = append(tryoutIdsArr, v.CompanyId)
|
|
|
+ } else if v.OverseasStatus == "关闭" {
|
|
|
+ closeIdsArr = append(closeIdsArr, v.CompanyId)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ {
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+ condition = ` and start_date >= ? and end_date <= ? and company_status = ? and company_id IN (` + utils.GetOrmInReplace(len(formalIdsArr)) + `)`
|
|
|
+ pars = append(pars, startDate, endDate, "正式", formalIdsArr)
|
|
|
+ data, tmpErr := roadshow.GetGroupResearcherRecordList(condition, pars)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range data {
|
|
|
+ formalMap[v.AdminId] = v.Num
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ {
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+ condition = ` and start_date >= ? and end_date <= ? and company_status = ? and company_id IN (` + utils.GetOrmInReplace(len(tryoutIdsArr)) + `)`
|
|
|
+ pars = append(pars, startDate, endDate, "试用", tryoutIdsArr)
|
|
|
+ data, tmpErr := roadshow.GetGroupResearcherRecordList(condition, pars)
|
|
|
+
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range data {
|
|
|
+
|
|
|
+ tryOutMap[v.AdminId] = v.Num
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ {
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+ condition = ` and start_date >= ? and end_date <= ? and company_status = ? and company_id IN (` + utils.GetOrmInReplace(len(closeIdsArr)) + `)`
|
|
|
+ pars = append(pars, startDate, endDate, "关闭", closeIdsArr)
|
|
|
+ data, tmpErr := roadshow.GetGroupResearcherRecordList(condition, pars)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range data {
|
|
|
+
|
|
|
+ closemap[v.AdminId] = v.Num
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ adminDataMap = OverseasAdminDataMap{
|
|
|
+ TryOutMap: tryOutMap,
|
|
|
+ FormalMap: formalMap,
|
|
|
+ CloseMap: closemap,
|
|
|
+ StartDate: startDate.Format(utils.FormatDate),
|
|
|
+ EndDate: endDate.Format(utils.FormatDate),
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func GetOverseasMonthDataV2(adminType, dimensionType string, dataNum int) (adminDataMapList []OverseasAdminDataMap, firstDate time.Time, err error) {
|
|
|
+ nowMonthFirstDay := utils.GetNowMonthFirstDay()
|
|
|
+
|
|
|
+
|
|
|
+ chanList := make([]chan OverseasAdminDataMap, 0)
|
|
|
+ for i := 0; i < dataNum; i++ {
|
|
|
+ tmpCh := make(chan OverseasAdminDataMap, 0)
|
|
|
+ chanList = append(chanList, tmpCh)
|
|
|
+
|
|
|
+ lastMonthFirstDay := nowMonthFirstDay.AddDate(0, -1*i, 0)
|
|
|
+ lastMonthLastDay := nowMonthFirstDay.AddDate(0, -1*(i-1), 0).Add(-1 * time.Second)
|
|
|
+
|
|
|
+
|
|
|
+ firstDate = lastMonthFirstDay
|
|
|
+ go getOverseasSectionData(lastMonthFirstDay, lastMonthLastDay, adminType, dimensionType, tmpCh)
|
|
|
+ }
|
|
|
+
|
|
|
+ adminDataMapList = make([]OverseasAdminDataMap, 0)
|
|
|
+ for _, vChan := range chanList {
|
|
|
+ var monthAdminDataMap OverseasAdminDataMap
|
|
|
+ monthAdminDataMap = <-vChan
|
|
|
+ close(vChan)
|
|
|
+ adminDataMapList = append(adminDataMapList, monthAdminDataMap)
|
|
|
+ }
|
|
|
+
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func GetOverseasTimeIntervalData(startDate, endDate, adminType, dimensionType string) (adminDataMapList []OverseasAdminDataMap, firstDate time.Time, err error) {
|
|
|
+ startDateTimer, _ := time.ParseInLocation(utils.FormatDate, startDate, time.Local)
|
|
|
+ endDateTimer, _ := time.ParseInLocation(utils.FormatDate, endDate, time.Local)
|
|
|
+ endDateTimer = endDateTimer.AddDate(0, 0, 1).Add(-1 * time.Second)
|
|
|
+
|
|
|
+
|
|
|
+ firstDate = startDateTimer
|
|
|
+
|
|
|
+ ch1 := make(chan OverseasAdminDataMap, 0)
|
|
|
+
|
|
|
+ go getOverseasSectionData(startDateTimer, endDateTimer, adminType, dimensionType, ch1)
|
|
|
+
|
|
|
+ var adminDataMap OverseasAdminDataMap
|
|
|
+
|
|
|
+ adminDataMap = <-ch1
|
|
|
+ close(ch1)
|
|
|
+
|
|
|
+ adminDataMapList = make([]OverseasAdminDataMap, 0)
|
|
|
+ adminDataMapList = append(adminDataMapList, adminDataMap)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func GetOverseasWeekData(adminType, dimensionType string) (adminDataList []OverseasAdminDataMap, firstDate time.Time, err error) {
|
|
|
+ nowWeekMonday := utils.GetNowWeekMonday()
|
|
|
+
|
|
|
+ nowWeekSunday := nowWeekMonday.AddDate(0, 0, 7).Add(-1 * time.Second)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ lastWeekMonday := nowWeekMonday.AddDate(0, 0, -7)
|
|
|
+
|
|
|
+
|
|
|
+ firstDate = lastWeekMonday
|
|
|
+ lastWeekSunday := nowWeekSunday.AddDate(0, 0, -7)
|
|
|
+
|
|
|
+
|
|
|
+ nextWeekMonday := nowWeekMonday.AddDate(0, 0, 7)
|
|
|
+
|
|
|
+ nextWeekSunday := nowWeekSunday.AddDate(0, 0, 7)
|
|
|
+
|
|
|
+
|
|
|
+ ch1 := make(chan OverseasAdminDataMap, 0)
|
|
|
+ ch2 := make(chan OverseasAdminDataMap, 0)
|
|
|
+ ch3 := make(chan OverseasAdminDataMap, 0)
|
|
|
+
|
|
|
+ go getOverseasSectionData(lastWeekMonday, lastWeekSunday, adminType, dimensionType, ch1)
|
|
|
+ go getOverseasSectionData(nowWeekMonday, nowWeekSunday, adminType, dimensionType, ch2)
|
|
|
+ go getOverseasSectionData(nextWeekMonday, nextWeekSunday, adminType, dimensionType, ch3)
|
|
|
+
|
|
|
+ var nowWeekAdminDataMap, lastWeekAdminDataMap, nextWeekAdminDataMap OverseasAdminDataMap
|
|
|
+
|
|
|
+ lastWeekAdminDataMap = <-ch1
|
|
|
+ close(ch1)
|
|
|
+
|
|
|
+ nowWeekAdminDataMap = <-ch2
|
|
|
+ close(ch2)
|
|
|
+
|
|
|
+ nextWeekAdminDataMap = <-ch3
|
|
|
+ close(ch3)
|
|
|
+
|
|
|
+ adminDataList = make([]OverseasAdminDataMap, 0)
|
|
|
+ adminDataList = append(adminDataList, lastWeekAdminDataMap, nowWeekAdminDataMap, nextWeekAdminDataMap)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func GetOverseasMonthData(adminType, dimensionType string) (adminDataMapList []OverseasAdminDataMap, firstDate time.Time, err error) {
|
|
|
+ nowMonthFirstDay := utils.GetNowMonthFirstDay()
|
|
|
+ nowMonthLastDay := nowMonthFirstDay.AddDate(0, 1, 0).Add(-1 * time.Second)
|
|
|
+
|
|
|
+ lastMonthFirstDay1 := nowMonthFirstDay.AddDate(0, -1, 0)
|
|
|
+ lastMonthLastDay1 := lastMonthFirstDay1.AddDate(0, 1, 0).Add(-1 * time.Second)
|
|
|
+
|
|
|
+ lastMonthFirstDay2 := nowMonthFirstDay.AddDate(0, -2, 0)
|
|
|
+ lastMonthLastDay2 := lastMonthFirstDay2.AddDate(0, 1, 0).Add(-1 * time.Second)
|
|
|
+
|
|
|
+ lastMonthFirstDay3 := nowMonthFirstDay.AddDate(0, -3, 0)
|
|
|
+ lastMonthLastDay3 := lastMonthFirstDay3.AddDate(0, 1, 0).Add(-1 * time.Second)
|
|
|
+
|
|
|
+
|
|
|
+ firstDate = lastMonthFirstDay3
|
|
|
+
|
|
|
+ ch1 := make(chan OverseasAdminDataMap, 0)
|
|
|
+ ch2 := make(chan OverseasAdminDataMap, 0)
|
|
|
+ ch3 := make(chan OverseasAdminDataMap, 0)
|
|
|
+ ch4 := make(chan OverseasAdminDataMap, 0)
|
|
|
+
|
|
|
+ go getOverseasSectionData(nowMonthFirstDay, nowMonthLastDay, adminType, dimensionType, ch1)
|
|
|
+ go getOverseasSectionData(lastMonthFirstDay1, lastMonthLastDay1, adminType, dimensionType, ch2)
|
|
|
+ go getOverseasSectionData(lastMonthFirstDay2, lastMonthLastDay2, adminType, dimensionType, ch3)
|
|
|
+ go getOverseasSectionData(lastMonthFirstDay3, lastMonthLastDay3, adminType, dimensionType, ch4)
|
|
|
+
|
|
|
+ var nowMonthAdminDataMap, lastMonthAdminDataMap1, lastMonthAdminDataMap2, lastMonthAdminDataMap3 OverseasAdminDataMap
|
|
|
+
|
|
|
+ nowMonthAdminDataMap = <-ch1
|
|
|
+ close(ch1)
|
|
|
+
|
|
|
+ lastMonthAdminDataMap1 = <-ch2
|
|
|
+ close(ch2)
|
|
|
+
|
|
|
+ lastMonthAdminDataMap2 = <-ch3
|
|
|
+ close(ch3)
|
|
|
+
|
|
|
+ lastMonthAdminDataMap3 = <-ch4
|
|
|
+ close(ch4)
|
|
|
+
|
|
|
+ adminDataMapList = make([]OverseasAdminDataMap, 0)
|
|
|
+ adminDataMapList = append(adminDataMapList, nowMonthAdminDataMap, lastMonthAdminDataMap1, lastMonthAdminDataMap2, lastMonthAdminDataMap3)
|
|
|
+ return
|
|
|
+}
|