Procházet zdrojové kódy

Merge branch 'dev_v1.5.36.6_wh' of jianyu/datatools into hotfix/v1.5.36.6

王浩 před 1 měsícem
rodič
revize
2bb216c698
2 změnil soubory, kde provedl 57 přidání a 70 odebrání
  1. 32 57
      clueSync/everything.go
  2. 25 13
      clueSync/jobutil.go

+ 32 - 57
clueSync/everything.go

@@ -7,6 +7,8 @@ import (
 	"github.com/gogf/gf/util/gconv"
 	"log"
 	"net/url"
+	"os"
+	"path/filepath"
 	"strings"
 	"time"
 
@@ -671,6 +673,7 @@ func FindBatchData(moudle string) map[string]interface{} {
 	//数据提取
 	keyContent := fmt.Sprintf("data_%s_%s", now, moudle)
 	data := redis.Get("newother", keyContent)
+	return make(map[string]interface{})
 	if data == nil {
 		return make(map[string]interface{})
 	} else {
@@ -679,43 +682,6 @@ func FindBatchData(moudle string) map[string]interface{} {
 
 }
 
-// 咨询组线索
-func AdvisoryCommittee() {
-	/*if !isRunning() {
-		log.Println("不是工作日,任务暂停")
-		return
-	}
-	log.Println("咨询部线索定时任务开始")
-
-	sourceMap := buildSourceMap("咨询组")
-	nowTime := time.Now().Format(date.Date_Full_Layout)
-	startTime := getCommitteeTime(cfg.AdvisoryCommitteeTime)
-	dataArr, endtime := processLeads("zx", startTime, sourceMap, nowTime)
-
-	cfg.AdvisoryCommitteeTime = endtime
-	exportToExcel(dataArr, "咨询服务销售线索", "zx")
-	log.Println("咨询部线索定时任务结束")
-	common.WriteSysConfig(&cfg)*/
-}
-
-// 运营部线索
-/*func SelectionDepartment() {
-	if !isRunning() {
-		log.Println("不是工作日,任务暂停")
-		return
-	}
-	log.Println("运营部线索定时任务开始")
-
-	sourceMap := buildSourceMap("运营部")
-	nowTime := time.Now().Format(date.Date_Full_Layout)
-	startTime := getCommitteeTime(cfg.SelectionDepartmentTime)
-	dataArr, endtime := processLeads("yy", startTime, sourceMap, nowTime)
-	cfg.SelectionDepartmentTime = endtime
-	exportToExcel(dataArr, "运营部销售线索", "yy")
-	log.Println("运营部线索定时任务结束")
-	common.WriteSysConfig(&cfg)
-}
-*/
 // 特殊留资
 func SpecialSaleLeads() {
 	/*if !isRunning() {
@@ -730,6 +696,10 @@ func SpecialSaleLeads() {
 		log.Println(fmt.Sprintf("%s留资线索定时任务开始", gconv.String(v["groupName"])))
 		//留来源获取
 		sourceMap := buildSourceMap(gconv.String(v["groupName"]))
+		if len(sourceMap) == 0 {
+			log.Println(fmt.Sprintf("%s留资线索定时任务结束", gconv.String(v["groupName"])))
+			continue
+		}
 		dataArr, endtime := processLeads(v, sourceMap)
 		//最后一次数据修改
 		TiDb.Update("saleLeads_config", map[string]interface{}{
@@ -743,24 +713,6 @@ func SpecialSaleLeads() {
 	log.Println("特殊留资线索定时任务结束")
 }
 
-// 市场部线索
-func MarketCustomer() {
-	/*if !isRunning() {
-		log.Println("不是工作日,任务暂停")
-		return
-	}
-	log.Println("市场部线索定时任务开始")
-
-	sourceMap := buildSourceMap("市场组")
-	nowTime := time.Now().Format(date.Date_Full_Layout)
-	startTime := getCommitteeTime(cfg.MarketSaleTime)
-	dataArr, endtime := processLeads("sc", startTime, sourceMap, nowTime)
-	cfg.MarketSaleTime = endtime
-	exportToExcel(dataArr, "商务合作销售线索", "sc")
-	common.WriteSysConfig(&cfg)
-	log.Println("市场部线索定时任务结束")*/
-}
-
 // 判断是否在工作日
 func isRunning() bool {
 	return getRunOk()
@@ -940,6 +892,12 @@ func exportToExcel(dataArr []map[string]interface{}, title, batch, mails string)
 			row.AddCell().SetString(gconv.Time(gconv.Int64(v["createtime"])).Format(date.Date_Full_Layout))
 		}
 		dir := fmt.Sprintf("./xlsx/%s/%s.xlsx", batch, fileName)
+		// 确保目录存在(自动创建)
+		dirPath := filepath.Dir(dir) // 提取目录部分(如 "./xlsx/batch")
+		if err := os.MkdirAll(dirPath, 0755); err != nil {
+			log.Println("创建目录失败:", err)
+			return
+		}
 		if err := xf.Save(dir); err != nil {
 			log.Println("xls error", err, dir)
 			return
@@ -983,7 +941,7 @@ func EmailSelect(batch, mailStr string) (string, string) {
 					mailMap[personName] = arr[1]
 				}
 			}
-			for personName, mailStr := range mailMap {
+			for personName, mail := range mailMap {
 				isOk := false
 				for _, m := range *bigData {
 					tablePersonName := gconv.String(m["name"])
@@ -999,7 +957,7 @@ func EmailSelect(batch, mailStr string) (string, string) {
 					TiDb.Insert("dwd_f_crm_clue_big_autodraw_record", map[string]interface{}{
 						"name":  personName,
 						"count": common.Int64All((*rData)["count"]),
-						"email": mailStr,
+						"email": mail,
 						"type":  batch,
 					})
 					return minemail, name
@@ -1018,6 +976,23 @@ func EmailSelect(batch, mailStr string) (string, string) {
 				name = vName
 			}
 		}
+	} else {
+		for k, s := range strings.Split(mailStr, "|") {
+			if len(strings.Split(s, "-")) > 1 {
+				arr := strings.Split(s, "-")
+				if k == 0 {
+					minemail, name = arr[1], arr[0]
+				}
+				personName := arr[0]
+				TiDb.Insert("dwd_f_crm_clue_big_autodraw_record", map[string]interface{}{
+					"name":  personName,
+					"count": 0,
+					"email": arr[1],
+					"type":  batch,
+				})
+			}
+		}
+
 	}
 	TiDb.UpdateOrDeleteBySql(`update dwd_f_crm_clue_big_autodraw_record set count = count + 1 where name = ? and   type=?`, name, batch)
 	return minemail, name

+ 25 - 13
clueSync/jobutil.go

@@ -699,6 +699,31 @@ func saleLeads() {
 	log.Println("query :", query)
 	iter := session.DB(db.Mgo.DbName).C("saleLeads").Find(&query).Sort("_id").Iter()
 	thisData := map[string]interface{}{}
+	filterArr := []string{"-pc", "-app", "-wx", "-h5"}
+	sourceMap := map[string]string{}
+	saleLeadsConfig := TiDb.Find("saleLeads_config", map[string]interface{}{
+		"status": 0,
+	}, "groupName", "", -1, -1)
+	if saleLeadsConfig == nil || len(*saleLeadsConfig) == 0 {
+		log.Println("线索卡点", "缺少留资分类名称", "saleLeads", thisData, lastId)
+		return
+	}
+	sourceArr := []string{}
+	for _, v := range *saleLeadsConfig {
+		sourceArr = append(sourceArr, fmt.Sprintf(`department   LIKE '%%%s%%'`, gconv.String(v["groupName"])))
+	}
+	sql := fmt.Sprintf(`SELECT source,name FROM d_saleleads_code WHERE ( %s) AND is_delete = 1`, strings.Join(sourceArr, " or   "))
+	saleSource := TiDb.SelectBySql(sql)
+	if saleSource != nil && len(*saleSource) > 0 {
+		for _, v := range *saleSource {
+			source := common.ObjToString(v["source"])
+			name := common.ObjToString(v["name"])
+			for _, s := range filterArr {
+				name = strings.ReplaceAll(name, s, "")
+			}
+			sourceMap[source] = name
+		}
+	}
 	for {
 		if !iter.Next(&thisData) {
 			break
@@ -709,19 +734,6 @@ func saleLeads() {
 			continue
 		}
 		//
-		filterArr := []string{"-pc", "-app", "-wx", "-h5"}
-		sourceMap := map[string]string{}
-		saleSource := TiDb.SelectBySql(`SELECT source,name FROM d_saleleads_code WHERE (department LIKE '%大客户%' or department LIKE '%市场组%' or department LIKE '%咨询组%' or department LIKE '%运营部%') AND is_delete = 1`)
-		if saleSource != nil && len(*saleSource) > 0 {
-			for _, v := range *saleSource {
-				source := common.ObjToString(v["source"])
-				name := common.ObjToString(v["name"])
-				for _, s := range filterArr {
-					name = strings.ReplaceAll(name, s, "")
-				}
-				sourceMap[source] = name
-			}
-		}
 		if sourceMap[sourceCode] != "" {
 			continue
 		}