|
@@ -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:"开始日期"`
|
|
|
+}
|
|
|
+
|
|
|
+// GetOverseasWeekDataV2 周度数据
|
|
|
+func GetOverseasWeekDataV2(adminType, dimensionType string, weekNum int) (adminDataList []OverseasAdminDataMap, firstDate time.Time, err error) {
|
|
|
+ nowWeekMonday := utils.GetNowWeekMonday() //本周周一
|
|
|
+ //fmt.Println(nowWeekMonday)
|
|
|
+ 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
|
|
|
+}
|
|
|
+
|
|
|
+// getOverseasSectionData 获取周期数据
|
|
|
+func getOverseasSectionData(startDate, endDate time.Time, adminType, dimensionType string, ch chan OverseasAdminDataMap) (adminDataMap OverseasAdminDataMap, err error) {
|
|
|
+ defer func() {
|
|
|
+ ch <- adminDataMap
|
|
|
+ }()
|
|
|
+ //adminType := `seller`
|
|
|
+ switch adminType {
|
|
|
+ case "researcher":
|
|
|
+ adminDataMap, err = getOverseasResearcherSectionData(startDate, endDate)
|
|
|
+ case "seller":
|
|
|
+ adminDataMap, err = getOverseasSellerSectionData(startDate, endDate, dimensionType)
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// getOverseasSellerSectionData 获取销售周期数据
|
|
|
+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)
|
|
|
+ //fmt.Println()
|
|
|
+ //客户状态维度
|
|
|
+ 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 {
|
|
|
+ //fmt.Println(v)
|
|
|
+ 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 {
|
|
|
+ //fmt.Println(v)
|
|
|
+ closeMap[v.AdminId] = v.Num
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //路演形式维度
|
|
|
+ //if dimensionType == "roadshow_type" {
|
|
|
+ // //线上路演
|
|
|
+ // {
|
|
|
+ // var condition string
|
|
|
+ // var pars []interface{}
|
|
|
+ // condition = ` and start_date >= ? and end_date <= ? and roadshow_type = ? and company_id IN (` + utils.GetOrmInReplace(len(idsArr)) + `)`
|
|
|
+ // pars = append(pars, startDate, endDate, "线上", idsArr)
|
|
|
+ // data, tmpErr := roadshow.GetOverseasGroupSellerRecordList(condition, pars)
|
|
|
+ // if tmpErr != nil {
|
|
|
+ // err = tmpErr
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ // for _, v := range data {
|
|
|
+ // //fmt.Println(v)
|
|
|
+ // onlineMap[v.AdminId] = v.Num
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // //线下路演
|
|
|
+ // {
|
|
|
+ // var condition string
|
|
|
+ // var pars []interface{}
|
|
|
+ // condition = ` and start_date >= ? and end_date <= ? and roadshow_type = ? and company_id IN (` + utils.GetOrmInReplace(len(idsArr)) + `)`
|
|
|
+ // pars = append(pars, startDate, endDate, "线下", idsArr)
|
|
|
+ // data, tmpErr := roadshow.GetOverseasGroupSellerRecordList(condition, pars)
|
|
|
+ // if tmpErr != nil {
|
|
|
+ // err = tmpErr
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ // for _, v := range data {
|
|
|
+ // //fmt.Println(v)
|
|
|
+ // offlineMap[v.AdminId] = v.Num
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+
|
|
|
+ ////销售专项路演统计
|
|
|
+ //if dimensionType == "seller_special" {
|
|
|
+ //
|
|
|
+ // detail, errdetail := company.GetConfigDetailByCode("choice_researcher_adminid")
|
|
|
+ // if errdetail != nil {
|
|
|
+ // err = errdetail
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ // //正式客户
|
|
|
+ // {
|
|
|
+ // var condition string
|
|
|
+ // var pars []interface{}
|
|
|
+ // condition = ` and start_date >= ? and end_date <= ? and company_status = ? ` + ` and researcher_id IN (` + detail.ConfigValue + `) `
|
|
|
+ // pars = append(pars, startDate, endDate, "正式")
|
|
|
+ // data, tmpErr := roadshow.GetOverseasGroupSellerRecordList(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 researcher_id IN (` + detail.ConfigValue + `) `
|
|
|
+ // pars = append(pars, startDate, endDate, "试用")
|
|
|
+ // data, tmpErr := roadshow.GetOverseasGroupSellerRecordList(condition, pars)
|
|
|
+ //
|
|
|
+ // if tmpErr != nil {
|
|
|
+ // err = tmpErr
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ // for _, v := range data {
|
|
|
+ // //fmt.Println(v)
|
|
|
+ // tryOutMap[v.AdminId] = v.Num
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // //公开会议
|
|
|
+ // {
|
|
|
+ // var condition string
|
|
|
+ // var pars []interface{}
|
|
|
+ // condition = ` and start_date >= ? and end_date <= ? and activity_type = ? ` + ` and researcher_id IN (` + detail.ConfigValue + `) `
|
|
|
+ // pars = append(pars, startDate, endDate, "公开会议")
|
|
|
+ // data, tmpErr := roadshow.GetOverseasGroupSellerRecordList(condition, pars)
|
|
|
+ // if tmpErr != nil {
|
|
|
+ // err = tmpErr
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ // for _, v := range data {
|
|
|
+ // //fmt.Println(v)
|
|
|
+ // meetingMap[v.AdminId] = v.Num
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ //} else {
|
|
|
+ // //公开会议
|
|
|
+ // {
|
|
|
+ // var condition string
|
|
|
+ // var pars []interface{}
|
|
|
+ // condition = ` and start_date >= ? and end_date <= ? and activity_type = ? `
|
|
|
+ // pars = append(pars, startDate, endDate, "公开会议")
|
|
|
+ // data, tmpErr := roadshow.GetOverseasGroupSellerRecordList(condition, pars)
|
|
|
+ // if tmpErr != nil {
|
|
|
+ // err = tmpErr
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ // for _, v := range data {
|
|
|
+ // //fmt.Println(v)
|
|
|
+ // meetingMap[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
|
|
|
+}
|
|
|
+
|
|
|
+// getOverseasResearcherSectionData 获取研究员周期数据
|
|
|
+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 {
|
|
|
+ //fmt.Println(v)
|
|
|
+ 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 {
|
|
|
+ //fmt.Println(v)
|
|
|
+ closemap[v.AdminId] = v.Num
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ adminDataMap = OverseasAdminDataMap{
|
|
|
+ TryOutMap: tryOutMap,
|
|
|
+ FormalMap: formalMap,
|
|
|
+ CloseMap: closemap,
|
|
|
+ StartDate: startDate.Format(utils.FormatDate),
|
|
|
+ EndDate: endDate.Format(utils.FormatDate),
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// GetOverseasMonthDataV2 月度数据
|
|
|
+func GetOverseasMonthDataV2(adminType, dimensionType string, dataNum int) (adminDataMapList []OverseasAdminDataMap, firstDate time.Time, err error) { //三个协程返回
|
|
|
+ nowMonthFirstDay := utils.GetNowMonthFirstDay() //本月第一天
|
|
|
+ //nowMonthLastDay := nowMonthFirstDay.AddDate(0, 1, 0).Add(-1 * time.Second) //本月最后一天
|
|
|
+
|
|
|
+ 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
|
|
|
+}
|
|
|
+
|
|
|
+// GetOverseasTimeIntervalData 区间数据
|
|
|
+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
|
|
|
+}
|
|
|
+
|
|
|
+// GetOverseasWeekData 周度数据
|
|
|
+func GetOverseasWeekData(adminType, dimensionType string) (adminDataList []OverseasAdminDataMap, firstDate time.Time, err error) {
|
|
|
+ nowWeekMonday := utils.GetNowWeekMonday() //本周周一
|
|
|
+ //fmt.Println(nowWeekMonday)
|
|
|
+ nowWeekSunday := nowWeekMonday.AddDate(0, 0, 7).Add(-1 * time.Second) //本周周日
|
|
|
+ //fmt.Println(nowWeekSunday)
|
|
|
+
|
|
|
+ //nowWeekMonday = nowWeekMonday.AddDate(0, 0, -30) //上周周一
|
|
|
+ //nowWeekSunday = nowWeekSunday.AddDate(0, 0, -30) //上周周日
|
|
|
+
|
|
|
+ //adminDataMap, err := getSectionData(nowWeekMonday, nowWeekSunday)
|
|
|
+ //if err != nil {
|
|
|
+ // fmt.Println(err)
|
|
|
+ // return
|
|
|
+ //}
|
|
|
+ //fmt.Println(adminDataMap)
|
|
|
+
|
|
|
+ lastWeekMonday := nowWeekMonday.AddDate(0, 0, -7) //上周周一
|
|
|
+ //fmt.Println(lastWeekMonday)
|
|
|
+ //最早的一天
|
|
|
+ firstDate = lastWeekMonday
|
|
|
+ lastWeekSunday := nowWeekSunday.AddDate(0, 0, -7) //上周周日
|
|
|
+ //fmt.Println(lastWeekSunday)
|
|
|
+
|
|
|
+ nextWeekMonday := nowWeekMonday.AddDate(0, 0, 7) //下周周一
|
|
|
+ //fmt.Println(nextWeekMonday)
|
|
|
+ nextWeekSunday := nowWeekSunday.AddDate(0, 0, 7) //下周周日
|
|
|
+ //fmt.Println(nextWeekSunday)
|
|
|
+
|
|
|
+ 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
|
|
|
+}
|
|
|
+
|
|
|
+// GetOverseasMonthData 月度数据
|
|
|
+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
|
|
|
+}
|