Эх сурвалжийг харах

Merge branch 'master' into feature/v1.5.29

yuelujie 3 сар өмнө
parent
commit
a9d5d49ee4
2 өөрчлөгдсөн 28 нэмэгдсэн , 259 устгасан
  1. 26 83
      clueSync/everything.go
  2. 2 176
      clueSync/jobutil.go

+ 26 - 83
clueSync/everything.go

@@ -366,7 +366,6 @@ func bigCustomer() {
 	if bigOrderTime == "" {
 		bigOrderTime = nowTime
 	}
-	abhList := []map[string]interface{}{}
 	data := FindBatchData("dk")
 	saleleadsData, ok := Mgo.Find("saleLeads", map[string]interface{}{"createtime": map[string]interface{}{"$gte": bigSaleTime}}, `{"phone":1,"createtime":1}`, nil, false, -1, -1)
 	if ok && saleleadsData != nil && len(*saleleadsData) > 0 {
@@ -412,30 +411,6 @@ func bigCustomer() {
 					if strings.HasPrefix(bt, "03") || bt == "0102" {
 						continue
 					}
-					/*s_sourceid := common.ObjToString((*userData)["s_sourceid"])
-					if s_sourceid == db.Sourceid {
-						//安博会数据
-						abhList = append(abhList, map[string]interface{}{
-							"createTime":       nowTime,
-							"lastUpdateTime":   nowTime,
-							"uid":              uid,
-							"userid":           userid,
-							"username":         username,
-							"usernickname":     usernickname,
-							"company":          company,
-							"job":              job,
-							"phone":            phone,
-							"email":            email,
-							"source":           source,
-							"belongTo":         belongTo,
-							"interest":         interest,
-							"data_requirement": data_requirement,
-						})
-						if gconv.Int64(v["createtime"]) > bigSaleTime {
-							bigSaleTime = gconv.Int64(v["createtime"])
-						}
-						continue
-					}*/
 				}
 
 				dataArr = append(dataArr, map[string]interface{}{
@@ -479,7 +454,7 @@ func bigCustomer() {
 				query["userid"] = orderUserId
 			}
 			userData := TiDb.FindOne("dwd_f_userbase_baseinfo", query, "", "")
-			username, usernickname, userid, uid, source, payorderinfo, unpayorderinfo, s_sourceid := "", "", "", "", "", "", "", ""
+			username, usernickname, userid, uid, source, payorderinfo, unpayorderinfo := "", "", "", "", "", "", ""
 			if userData != nil {
 				if phone == "" {
 					phone = common.ObjToString((*userData)["phone"])
@@ -491,7 +466,6 @@ func bigCustomer() {
 				usernickname = common.ObjToString((*userData)["nickname"])
 				uid = common.ObjToString((*userData)["uid"])
 				userid = common.ObjToString((*userData)["userid"])
-				s_sourceid = common.ObjToString((*userData)["s_sourceid"])
 				bt := common.ObjToString((*userData)["belong_to"])
 				if strings.HasPrefix(bt, "03") || bt == "0102" {
 					continue
@@ -519,26 +493,6 @@ func bigCustomer() {
 				continue
 			}
 			data[key] = true
-			if s_sourceid == db.Sourceid {
-				abhList = append(abhList, map[string]interface{}{
-					"createTime":     nowTime,
-					"lastUpdateTime": nowTime,
-					"phone":          phone,
-					"username":       username,
-					"usernickname":   usernickname,
-					"uid":            uid,
-					"userid":         userid,
-					"company":        v["company_name"],
-					"email":          v["user_mail"],
-					"belongTo":       "大客户",
-					"source":         source,
-					"data_count":     v["data_count"],
-					"unpayorderinfo": unpayorderinfo,
-					"payorderinfo":   payorderinfo, //增加客户需求
-				})
-				bigOrderTime = gconv.Time(gconv.String(v["create_time"])).Format(date.Date_Full_Layout)
-				continue
-			}
 			dataArr = append(dataArr, map[string]interface{}{
 				"createTime":     nowTime,
 				"lastUpdateTime": nowTime,
@@ -559,13 +513,7 @@ func bigCustomer() {
 		}
 		cfg.BigOrderTime = bigOrderTime
 	}
-	if len(abhList) > 0 {
-		ABHEmail("big", abhList)
-	}
-	if len(abhList) > 0 || len(dataArr) > 0 {
-		keyContent := fmt.Sprintf("data_%s_%s", time.Now().Format("2006-01-02"), "dk")
-		redis.Put("newother", keyContent, data, 86400)
-	}
+
 	xlsxArr := []string{"用户昵称", "姓名", "公司名称", "职位", "联系人电话", "购买条数", "用户邮箱", "已支付订单信息", "未支付订单类型", "销售线索来源", "具体来源", "数据需求"}
 	if len(dataArr) > 0 {
 		bigArr := map[string][]map[string]interface{}{}
@@ -731,10 +679,7 @@ func AdvisoryCommittee() {
 	sourceMap := buildSourceMap("咨询组")
 	nowTime := time.Now().Format(date.Date_Full_Layout)
 	startTime := getCommitteeTime(cfg.AdvisoryCommitteeTime)
-	dataArr, abhList, endtime := processLeads("zx", startTime, sourceMap, nowTime)
-	if len(abhList) > 0 {
-		ABHEmail("advisory", abhList)
-	}
+	dataArr, endtime := processLeads("zx", startTime, sourceMap, nowTime)
 
 	cfg.AdvisoryCommitteeTime = endtime
 	exportToExcel(dataArr, "咨询服务销售线索", "zx")
@@ -753,10 +698,7 @@ func SelectionDepartment() {
 	sourceMap := buildSourceMap("运营部")
 	nowTime := time.Now().Format(date.Date_Full_Layout)
 	startTime := getCommitteeTime(cfg.SelectionDepartmentTime)
-	dataArr, abhList, endtime := processLeads("yy", startTime, sourceMap, nowTime)
-	if len(abhList) > 0 {
-		ABHEmail("selection", abhList)
-	}
+	dataArr, endtime := processLeads("yy", startTime, sourceMap, nowTime)
 	cfg.SelectionDepartmentTime = endtime
 	exportToExcel(dataArr, "运营部销售线索", "yy")
 	log.Println("运营部线索定时任务结束")
@@ -774,10 +716,7 @@ func MarketCustomer() {
 	sourceMap := buildSourceMap("市场组")
 	nowTime := time.Now().Format(date.Date_Full_Layout)
 	startTime := getCommitteeTime(cfg.MarketSaleTime)
-	dataArr, abhList, endtime := processLeads("sc", startTime, sourceMap, nowTime)
-	if len(abhList) > 0 {
-		ABHEmail("market", abhList)
-	}
+	dataArr, endtime := processLeads("sc", startTime, sourceMap, nowTime)
 	cfg.MarketSaleTime = endtime
 	exportToExcel(dataArr, "商务合作销售线索", "sc")
 	common.WriteSysConfig(&cfg)
@@ -790,15 +729,19 @@ func isRunning() bool {
 }
 
 // 从数据库构建来源映射
-func buildSourceMap(department string) map[string]string {
-	sourceMap := map[string]string{}
-	saleSource := TiDb.SelectBySql(fmt.Sprintf(`SELECT source,name FROM d_saleleads_code WHERE department LIKE '%%%s%%' AND is_delete = 1`, department))
+func buildSourceMap(department string) map[string]map[string]interface{} {
+	sourceMap := map[string]map[string]interface{}{}
+	saleSource := TiDb.SelectBySql(fmt.Sprintf(`SELECT source,name,appoint_email FROM d_saleleads_code WHERE department LIKE '%%%s%%' AND is_delete = 1`, department))
 	if saleSource != nil {
 		for _, v := range *saleSource {
 			source := common.ObjToString(v["source"])
 			name := common.ObjToString(v["name"])
 			name = filterSourceName(name)
-			sourceMap[source] = name
+			appointEmail := common.ObjToString(v["appoint_email"])
+			sourceMap[source] = map[string]interface{}{
+				"name":         name,
+				"appointEmail": appointEmail,
+			}
 		}
 	}
 	return sourceMap
@@ -822,39 +765,35 @@ func getCommitteeTime(cfgTime int64) int64 {
 }
 
 // 处理线索
-func processLeads(batch string, committeeTime int64, sourceMap map[string]string, nowTime string) ([]map[string]interface{}, []map[string]interface{}, int64) {
+func processLeads(batch string, committeeTime int64, sourceMap map[string]map[string]interface{}, nowTime string) ([]map[string]interface{}, int64) {
 	dataArr := []map[string]interface{}{}
-	abhList := []map[string]interface{}{}
 	endtime := int64(0)
 	saleleadsData, ok := Mgo.Find("saleLeads", map[string]interface{}{"createtime": map[string]interface{}{"$gte": committeeTime}}, `{"phone":1,"createtime":1}`, nil, false, -1, -1)
+	//saleleadsData, ok := Mgo.Find("saleLeads", map[string]interface{}{"createtime": committeeTime}, `{"phone":1,"createtime":1}`, nil, false, -1, -1)
 	if ok && saleleadsData != nil {
 		data := FindBatchData(batch)
 		for _, v := range *saleleadsData {
 			lead := map[string]interface{}{}
 			lead, endtime = processLead(v, sourceMap, nowTime, committeeTime, data)
 			if lead != nil {
-				/*	if isABHLead(lead) {
-						abhList = append(abhList, lead)
-					} else {
-						dataArr = append(dataArr, lead)
-					}*/
 				dataArr = append(dataArr, lead)
 			}
 		}
 		saveDataToRedis(data, batch)
 	}
 
-	return dataArr, abhList, endtime
+	return dataArr, endtime
 }
 
 // 处理单个线索
-func processLead(v map[string]interface{}, sourceMap map[string]string, nowTime string, committeeTime int64, data map[string]interface{}) (map[string]interface{}, int64) {
+func processLead(v map[string]interface{}, sourceMap map[string]map[string]interface{}, nowTime string, committeeTime int64, data map[string]interface{}) (map[string]interface{}, int64) {
 	sources := common.ObjToString(v["source"])
 	// 更新委员会时间
 	if gconv.Int64(v["createtime"]) > committeeTime {
 		committeeTime = gconv.Int64(v["createtime"])
 	}
-	if sourceMap[sources] == "" {
+	sourceData, exist := sourceMap[sources]
+	if !exist {
 		return nil, committeeTime
 	}
 	phone := common.ObjToString(v["phone"])
@@ -878,13 +817,14 @@ func processLead(v map[string]interface{}, sourceMap map[string]string, nowTime
 		"username":         common.ObjToString(v["name"]),
 		"company":          common.ObjToString(v["company"]),
 		"phone":            phone,
-		"source":           sourceMap[sources],
+		"source":           gconv.String(sourceData["name"]),
 		"belongTo":         "咨询组/市场组", // 根据需要修改
 		"interest":         common.ObjToString(v["interest"]),
 		"data_requirement": common.ObjToString(v["data_requirement"]),
 		"branch":           v["branch"],
 		"job":              v["position"],
 		"email":            common.ObjToString(v["mail"]),
+		"appointEmail":     gconv.String(sourceData["appointEmail"]),
 	}, committeeTime
 }
 
@@ -923,8 +863,11 @@ func exportToExcel(dataArr []map[string]interface{}, title, batch string) {
 	}
 	bigArr := map[string][]map[string]interface{}{}
 	for _, v := range dataArr {
-		minemail, _ := EmailSelect(batch)
-		bigArr[minemail] = append(bigArr[minemail], v)
+		appointEmail := gconv.String(v["appointEmail"])
+		if appointEmail == "" {
+			appointEmail, _ = EmailSelect(batch)
+		}
+		bigArr[appointEmail] = append(bigArr[appointEmail], v)
 	}
 	for email, arr := range bigArr {
 		data := FindBatch(batch)

+ 2 - 176
clueSync/jobutil.go

@@ -566,18 +566,11 @@ func users() {
 	sql := fmt.Sprintf(`select * from dwd_f_userbase_baseinfo   where createtime > "%s" and (s_platform != 'xcx'   or  s_platform is  NULL)  and source = "0101" and status != 2  order by  createtime asc`, selectTimeEnd)
 	//sql := fmt.Sprintf(`select * from dwd_f_userbase_baseinfo   where id= 2259277`)
 	data := TiDb.SelectBySql(sql)
-	abhList := []map[string]interface{}{}
 	if data != nil && *data != nil && len(*data) > 0 {
 		for k, v := range *data {
 			//判断用户是否有小程序切使用过剑鱼其他产品
 			createtime := common.ObjToString(v["createtime"])
-			ok1, ok2, ok3 := FormatData(v, "users")
-			if !ok3 {
-				cfg.LastUserId = createtime
-				//安博会数据
-				abhList = append(abhList, v)
-				continue
-			}
+			ok1, ok2, _ := FormatData(v, "users")
 			if !ok1 {
 				log.Println("线索卡点", "users", v, selectTimeEnd)
 			} else {
@@ -589,10 +582,6 @@ func users() {
 				cfg.LastUserId = createtime
 			}
 		}
-		if len(abhList) > 0 {
-			//安博会发邮件高翔
-			ABHEmail("user", abhList)
-		}
 	}
 	common.WriteSysConfig(&cfg)
 	selectXcxTimeEnd := cfg.LastXcxUserId
@@ -700,7 +689,6 @@ func saleLeads() {
 	log.Println("用户留资定时任务开始")
 	session := Mgo.GetMgoConn()
 	lastId := cfg.LastId
-	abhList := []map[string]interface{}{}
 	defer func() {
 		Mgo.DestoryMongoConn(session)
 	}()
@@ -737,13 +725,7 @@ func saleLeads() {
 		if sourceMap[sourceCode] != "" {
 			continue
 		}
-		ok1, ok2, ok3 := FormatData(thisData, "saleLeads")
-		if !ok3 {
-			cfg.LastId = mongodb.BsonIdToSId(thisData["_id"])
-			//安博会数据
-			abhList = append(abhList, thisData)
-			continue
-		}
+		ok1, ok2, _ := FormatData(thisData, "saleLeads")
 		if !ok1 {
 			log.Println("线索卡点", "saleLeads", thisData, lastId)
 		} else {
@@ -753,10 +735,6 @@ func saleLeads() {
 		}
 		cfg.LastId = mongodb.BsonIdToSId(thisData["_id"])
 	}
-	if len(abhList) > 0 {
-		//安博会发邮件高翔
-		ABHEmail("saleLeads", abhList)
-	}
 	common.WriteSysConfig(&cfg)
 	log.Println("用户留资定时任务结束")
 }
@@ -1702,126 +1680,6 @@ func AFEmail(data []map[string]interface{}) {
 	}
 }
 
-func ABHEmail(source string, data []map[string]interface{}) {
-	var fileName, detailName, dir string
-	var err error
-
-	xlsxArr, detailName := getExcelHeaderAndDetail(source)
-	batch := FindBatch("abh")
-	fileName = fmt.Sprintf("%s %s-%s", getFileNamePrefix(source), time.Now().Format(date.Date_Short_Layout), batch)
-
-	xf := xlsx.NewFile()
-	style := createExcelStyle()
-	sh, _ := xf.AddSheet("线索数据")
-	addHeaderRow(sh, xlsxArr, style)
-
-	switch source {
-	case "user":
-		err = populateUserData(sh, data)
-	case "saleLeads", "big":
-		err = populateSaleLeadData(sh, data)
-	case "advisory":
-		err = populateAdvisoryData(sh, data)
-	case "market", "selection":
-		err = populateMarketData(sh, data)
-	}
-	if err == nil {
-		dir = fmt.Sprintf("./xlsx/abh/%s.xlsx", fileName)
-		err = xf.Save(dir)
-	}
-
-	sendEmailIfSuccessful(err, fileName, detailName, dir)
-}
-
-func getExcelHeaderAndDetail(source string) ([]string, string) {
-	switch source {
-	case "user":
-		return []string{"姓名", "联系方式", "邮箱", "公司名称", "咨询需求", "销售线索来源", "具体来源", "留资时间"}, "今日新增安博会销售线索,请查收附件,及时跟进。"
-	case "saleLeads":
-		return []string{"用户昵称", "姓名", "公司名称", "职位", "联系人电话", "购买条数", "用户邮箱", "已支付订单信息", "未支付订单类型", "销售线索来源", "具体来源", "数据需求"}, "今日新增安博会销售线索,请查收附件,及时跟进。"
-	case "big":
-		return []string{"用户昵称", "姓名", "公司名称", "职位", "联系人电话", "购买条数", "用户邮箱", "已支付订单信息", "未支付订单类型", "销售线索来源", "具体来源", "数据需求"}, "今日新增安博会销售线索,请查收附件,及时跟进。"
-	case "advisory":
-		return []string{"姓名", "联系方式", "邮箱", "公司名称", "咨询需求", "销售线索来源", "具体来源", "留资时间"}, "今日新增安博会销售线索,请查收附件,及时跟进。"
-	case "market":
-		return []string{"姓名", "联系人电话", "公司名称", "职位", "部门", "销售线索来源", "留资时间"}, "今日新增安博会销售线索,请查收附件,及时跟进。"
-	case "selection":
-		return []string{"姓名", "联系人电话", "公司名称", "职位", "部门", "销售线索来源", "留资时间"}, "今日新增安博会销售线索,请查收附件,及时跟进。"
-	default:
-		return nil, ""
-	}
-}
-
-func getFileNamePrefix(source string) string {
-	switch source {
-	case "user":
-		return "安博会用户注册销售线索"
-	case "saleLeads":
-		return "安博会电销销售线索"
-	case "big":
-		return "安博会大客户销售线索"
-	case "advisory":
-		return "安博会咨询服务销售线索"
-	case "market":
-		return "安博会商务合作销售线索"
-	default:
-		return "未知线索"
-	}
-}
-
-func createExcelStyle() *xlsx.Style {
-	style := xlsx.NewStyle()
-	style.Font.Size = 12
-	style.Font.Bold = true
-	style.Alignment.Vertical = "center"
-	style.Alignment.Horizontal = "center"
-	return style
-}
-
-func addHeaderRow(sh *xlsx.Sheet, headers []string, style *xlsx.Style) {
-	row := sh.AddRow()
-	for _, header := range headers {
-		cell := row.AddCell()
-		cell.SetString(header)
-		cell.SetStyle(style)
-	}
-}
-
-func populateUserData(sh *xlsx.Sheet, data []map[string]interface{}) error {
-	for _, v := range data {
-		row := sh.AddRow()
-		row.AddCell().SetString(common.ObjToString(v["name"]))
-		row.AddCell().SetString(common.ObjToString(v["phone"]))
-		row.AddCell().SetString(common.ObjToString(v["email"]))
-		row.AddCell().SetString(common.ObjToString(v["company_name"]))
-		row.AddCell().SetString("")
-		row.AddCell().SetString("")
-		row.AddCell().SetString("安博会用户注册")
-		row.AddCell().SetString(gconv.Time(gconv.Int64(v["createtime"])).Format(date.Date_Full_Layout))
-	}
-	return nil
-}
-
-func populateSaleLeadData(sh *xlsx.Sheet, data []map[string]interface{}) error {
-	sourceMap := buildSourceMap("运营部")
-	for _, v := range data {
-		row := sh.AddRow()
-		row.AddCell().SetString(common.ObjToString(v["usernickname"]))
-		row.AddCell().SetString(common.ObjToString(v["name"]))
-		row.AddCell().SetString(common.ObjToString(v["company"]))
-		row.AddCell().SetString(common.ObjToString(v["position"]))
-		row.AddCell().SetString(common.ObjToString(v["phone"]))
-		row.AddCell().SetValue(0)
-		row.AddCell().SetString(common.ObjToString(v["email"]))
-		row.AddCell().SetString("")
-		row.AddCell().SetString("")
-		row.AddCell().SetString(sourceMap[common.ObjToString(v["source"])])
-		row.AddCell().SetString(common.ObjToString(v["interest"]))
-		row.AddCell().SetString(common.ObjToString(v["data_requirement"]))
-	}
-	return nil
-}
-
 func populateAdvisoryData(sh *xlsx.Sheet, data []map[string]interface{}) error {
 	for _, v := range data {
 		row := sh.AddRow()
@@ -1837,38 +1695,6 @@ func populateAdvisoryData(sh *xlsx.Sheet, data []map[string]interface{}) error {
 	return nil
 }
 
-func populateMarketData(sh *xlsx.Sheet, data []map[string]interface{}) error {
-	for _, v := range data {
-		row := sh.AddRow()
-		row.AddCell().SetString(common.ObjToString(v["username"]))
-		row.AddCell().SetString(common.ObjToString(v["phone"]))
-		row.AddCell().SetString(common.ObjToString(v["company"]))
-		row.AddCell().SetString(common.ObjToString(v["job"]))
-		row.AddCell().SetString(common.ObjToString(v["branch"]))
-		row.AddCell().SetString(common.ObjToString(v["source"]))
-		row.AddCell().SetString(gconv.Time(gconv.Int64(v["createtime"])).Format(date.Date_Full_Layout))
-	}
-	return nil
-}
-
-func sendEmailIfSuccessful(err error, fileName, detailName, dir string) {
-	if err != nil {
-		log.Println("xls error", err, dir)
-		return
-	}
-	email := db.AbhEmail
-	gmail := &mail.GmailAuth{
-		SmtpHost: db.Mail.SmtpHost,
-		SmtpPort: db.Mail.SmtpPort,
-		User:     db.Mail.User,
-		Pwd:      db.Mail.Pwd,
-	}
-	status := mail.GSendMail_q("剑鱼标讯", email, "", "", fileName, detailName, dir, fileName+".xlsx", gmail)
-	if status {
-		log.Println("send mail success", fileName, email)
-	}
-}
-
 // 邀请用户处理
 func inviteUser() {
 	log.Println("邀请用户处理开始")