|
@@ -526,7 +526,7 @@ func bigCustomer() {
|
|
for _, v := range dataArr {
|
|
for _, v := range dataArr {
|
|
minemail := ""
|
|
minemail := ""
|
|
if gconv.String(v["appoint_email"]) == "" {
|
|
if gconv.String(v["appoint_email"]) == "" {
|
|
- minemail, _ = EmailSelect("dk")
|
|
|
|
|
|
+ minemail, _ = EmailSelect("dk", "")
|
|
} else {
|
|
} else {
|
|
minemail = gconv.String(v["appoint_email"])
|
|
minemail = gconv.String(v["appoint_email"])
|
|
}
|
|
}
|
|
@@ -681,7 +681,7 @@ func FindBatchData(moudle string) map[string]interface{} {
|
|
|
|
|
|
// 咨询组线索
|
|
// 咨询组线索
|
|
func AdvisoryCommittee() {
|
|
func AdvisoryCommittee() {
|
|
- if !isRunning() {
|
|
|
|
|
|
+ /*if !isRunning() {
|
|
log.Println("不是工作日,任务暂停")
|
|
log.Println("不是工作日,任务暂停")
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@@ -695,11 +695,11 @@ func AdvisoryCommittee() {
|
|
cfg.AdvisoryCommitteeTime = endtime
|
|
cfg.AdvisoryCommitteeTime = endtime
|
|
exportToExcel(dataArr, "咨询服务销售线索", "zx")
|
|
exportToExcel(dataArr, "咨询服务销售线索", "zx")
|
|
log.Println("咨询部线索定时任务结束")
|
|
log.Println("咨询部线索定时任务结束")
|
|
- common.WriteSysConfig(&cfg)
|
|
|
|
|
|
+ common.WriteSysConfig(&cfg)*/
|
|
}
|
|
}
|
|
|
|
|
|
// 运营部线索
|
|
// 运营部线索
|
|
-func SelectionDepartment() {
|
|
|
|
|
|
+/*func SelectionDepartment() {
|
|
if !isRunning() {
|
|
if !isRunning() {
|
|
log.Println("不是工作日,任务暂停")
|
|
log.Println("不是工作日,任务暂停")
|
|
return
|
|
return
|
|
@@ -715,10 +715,37 @@ func SelectionDepartment() {
|
|
log.Println("运营部线索定时任务结束")
|
|
log.Println("运营部线索定时任务结束")
|
|
common.WriteSysConfig(&cfg)
|
|
common.WriteSysConfig(&cfg)
|
|
}
|
|
}
|
|
|
|
+*/
|
|
|
|
+// 特殊留资
|
|
|
|
+func SpecialSaleLeads() {
|
|
|
|
+ /*if !isRunning() {
|
|
|
|
+ log.Println("不是工作日,任务暂停")
|
|
|
|
+ return
|
|
|
|
+ }*/
|
|
|
|
+ saleLeadsConfig := TiDb.Find("saleLeads_config", map[string]interface{}{
|
|
|
|
+ "status": 0,
|
|
|
|
+ }, "", "", -1, -1)
|
|
|
|
+ log.Println("特殊留资线索定时任务开始")
|
|
|
|
+ for _, v := range *saleLeadsConfig {
|
|
|
|
+ log.Println(fmt.Sprintf("%s留资线索定时任务开始", gconv.String(v["groupName"])))
|
|
|
|
+ //留来源获取
|
|
|
|
+ sourceMap := buildSourceMap(gconv.String(v["groupName"]))
|
|
|
|
+ dataArr, endtime := processLeads(v, sourceMap)
|
|
|
|
+ //最后一次数据修改
|
|
|
|
+ TiDb.Update("saleLeads_config", map[string]interface{}{
|
|
|
|
+ "id": gconv.Int64(v["id"]),
|
|
|
|
+ }, map[string]interface{}{
|
|
|
|
+ "lastTime": endtime,
|
|
|
|
+ })
|
|
|
|
+ exportToExcel(dataArr, gconv.String(v["title"]), gconv.String(v["groupCode"]), gconv.String(v["mail"]))
|
|
|
|
+ log.Println(fmt.Sprintf("%s留资线索定时任务结束", gconv.String(v["groupName"])))
|
|
|
|
+ }
|
|
|
|
+ log.Println("特殊留资线索定时任务结束")
|
|
|
|
+}
|
|
|
|
|
|
// 市场部线索
|
|
// 市场部线索
|
|
func MarketCustomer() {
|
|
func MarketCustomer() {
|
|
- if !isRunning() {
|
|
|
|
|
|
+ /*if !isRunning() {
|
|
log.Println("不是工作日,任务暂停")
|
|
log.Println("不是工作日,任务暂停")
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@@ -731,7 +758,7 @@ func MarketCustomer() {
|
|
cfg.MarketSaleTime = endtime
|
|
cfg.MarketSaleTime = endtime
|
|
exportToExcel(dataArr, "商务合作销售线索", "sc")
|
|
exportToExcel(dataArr, "商务合作销售线索", "sc")
|
|
common.WriteSysConfig(&cfg)
|
|
common.WriteSysConfig(&cfg)
|
|
- log.Println("市场部线索定时任务结束")
|
|
|
|
|
|
+ log.Println("市场部线索定时任务结束")*/
|
|
}
|
|
}
|
|
|
|
|
|
// 判断是否在工作日
|
|
// 判断是否在工作日
|
|
@@ -775,17 +802,18 @@ func getCommitteeTime(cfgTime int64) int64 {
|
|
return cfgTime
|
|
return cfgTime
|
|
}
|
|
}
|
|
|
|
|
|
-// 处理线索
|
|
|
|
-func processLeads(batch string, committeeTime int64, sourceMap map[string]map[string]interface{}, nowTime string) ([]map[string]interface{}, int64) {
|
|
|
|
|
|
+// 处理留资信息
|
|
|
|
+func processLeads(saleLeadsMap map[string]interface{}, sourceMap map[string]map[string]interface{}) ([]map[string]interface{}, int64) {
|
|
|
|
+ batch := gconv.String(saleLeadsMap["groupCode"])
|
|
|
|
+ lastTime := gconv.Int64(saleLeadsMap["lastTime"])
|
|
dataArr := []map[string]interface{}{}
|
|
dataArr := []map[string]interface{}{}
|
|
endtime := int64(0)
|
|
endtime := int64(0)
|
|
- saleleadsData, ok := Mgo.Find("saleLeads", map[string]interface{}{"createtime": map[string]interface{}{"$gt": 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)
|
|
|
|
|
|
+ saleleadsData, ok := Mgo.Find("saleLeads", map[string]interface{}{"createtime": map[string]interface{}{"$gt": lastTime}}, `{"phone":1,"createtime":1}`, nil, false, -1, -1)
|
|
if ok && saleleadsData != nil {
|
|
if ok && saleleadsData != nil {
|
|
data := FindBatchData(batch)
|
|
data := FindBatchData(batch)
|
|
for _, v := range *saleleadsData {
|
|
for _, v := range *saleleadsData {
|
|
lead := map[string]interface{}{}
|
|
lead := map[string]interface{}{}
|
|
- lead, endtime = processLead(v, sourceMap, nowTime, committeeTime, data)
|
|
|
|
|
|
+ lead, endtime = processLead(v, sourceMap, lastTime, data)
|
|
if lead != nil {
|
|
if lead != nil {
|
|
dataArr = append(dataArr, lead)
|
|
dataArr = append(dataArr, lead)
|
|
}
|
|
}
|
|
@@ -796,29 +824,30 @@ func processLeads(batch string, committeeTime int64, sourceMap map[string]map[st
|
|
return dataArr, endtime
|
|
return dataArr, endtime
|
|
}
|
|
}
|
|
|
|
|
|
-// 处理单个线索
|
|
|
|
-func processLead(v map[string]interface{}, sourceMap map[string]map[string]interface{}, nowTime string, committeeTime int64, data map[string]interface{}) (map[string]interface{}, int64) {
|
|
|
|
|
|
+// 处理单个留资信息
|
|
|
|
+func processLead(v map[string]interface{}, sourceMap map[string]map[string]interface{}, lastTime int64, data map[string]interface{}) (map[string]interface{}, int64) {
|
|
|
|
+ nowTime := time.Now().Format(date.Date_Full_Layout)
|
|
sources := common.ObjToString(v["source"])
|
|
sources := common.ObjToString(v["source"])
|
|
- // 更新委员会时间
|
|
|
|
- if gconv.Int64(v["createtime"]) > committeeTime {
|
|
|
|
- committeeTime = gconv.Int64(v["createtime"])
|
|
|
|
|
|
+ // 更新最后会时间
|
|
|
|
+ if gconv.Int64(v["createtime"]) > lastTime {
|
|
|
|
+ lastTime = gconv.Int64(v["createtime"])
|
|
}
|
|
}
|
|
sourceData, exist := sourceMap[sources]
|
|
sourceData, exist := sourceMap[sources]
|
|
if !exist {
|
|
if !exist {
|
|
- return nil, committeeTime
|
|
|
|
|
|
+ return nil, lastTime
|
|
}
|
|
}
|
|
phone := common.ObjToString(v["phone"])
|
|
phone := common.ObjToString(v["phone"])
|
|
if IsInternal(phone) {
|
|
if IsInternal(phone) {
|
|
- return nil, committeeTime
|
|
|
|
|
|
+ return nil, lastTime
|
|
}
|
|
}
|
|
// 获取用户信息
|
|
// 获取用户信息
|
|
userData := getUserData(v)
|
|
userData := getUserData(v)
|
|
if userData == nil || isUserInBlackList(userData) {
|
|
if userData == nil || isUserInBlackList(userData) {
|
|
- return nil, committeeTime
|
|
|
|
|
|
+ return nil, lastTime
|
|
}
|
|
}
|
|
key := fmt.Sprintf("%s_%s_%s", sourceMap[sources], phone, common.ObjToString(v["interest"]))
|
|
key := fmt.Sprintf("%s_%s_%s", sourceMap[sources], phone, common.ObjToString(v["interest"]))
|
|
if _, exists := data[key]; exists {
|
|
if _, exists := data[key]; exists {
|
|
- return nil, committeeTime
|
|
|
|
|
|
+ return nil, lastTime
|
|
}
|
|
}
|
|
data[key] = true
|
|
data[key] = true
|
|
|
|
|
|
@@ -829,14 +858,13 @@ func processLead(v map[string]interface{}, sourceMap map[string]map[string]inter
|
|
"company": common.ObjToString(v["company"]),
|
|
"company": common.ObjToString(v["company"]),
|
|
"phone": phone,
|
|
"phone": phone,
|
|
"source": gconv.String(sourceData["name"]),
|
|
"source": gconv.String(sourceData["name"]),
|
|
- "belongTo": "咨询组/市场组", // 根据需要修改
|
|
|
|
"interest": common.ObjToString(v["interest"]),
|
|
"interest": common.ObjToString(v["interest"]),
|
|
"data_requirement": common.ObjToString(v["data_requirement"]),
|
|
"data_requirement": common.ObjToString(v["data_requirement"]),
|
|
"branch": v["branch"],
|
|
"branch": v["branch"],
|
|
"job": v["position"],
|
|
"job": v["position"],
|
|
"email": common.ObjToString(v["mail"]),
|
|
"email": common.ObjToString(v["mail"]),
|
|
"appointEmail": gconv.String(sourceData["appointEmail"]),
|
|
"appointEmail": gconv.String(sourceData["appointEmail"]),
|
|
- }, committeeTime
|
|
|
|
|
|
+ }, lastTime
|
|
}
|
|
}
|
|
|
|
|
|
// 获取用户数据
|
|
// 获取用户数据
|
|
@@ -868,7 +896,7 @@ func isABHLead(lead map[string]interface{}) bool {
|
|
}
|
|
}
|
|
|
|
|
|
// 导出到 Excel
|
|
// 导出到 Excel
|
|
-func exportToExcel(dataArr []map[string]interface{}, title, batch string) {
|
|
|
|
|
|
+func exportToExcel(dataArr []map[string]interface{}, title, batch, mails string) {
|
|
if len(dataArr) == 0 {
|
|
if len(dataArr) == 0 {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@@ -876,7 +904,7 @@ func exportToExcel(dataArr []map[string]interface{}, title, batch string) {
|
|
for _, v := range dataArr {
|
|
for _, v := range dataArr {
|
|
appointEmail := gconv.String(v["appointEmail"])
|
|
appointEmail := gconv.String(v["appointEmail"])
|
|
if appointEmail == "" {
|
|
if appointEmail == "" {
|
|
- appointEmail, _ = EmailSelect(batch)
|
|
|
|
|
|
+ appointEmail, _ = EmailSelect(batch, mails)
|
|
}
|
|
}
|
|
bigArr[appointEmail] = append(bigArr[appointEmail], v)
|
|
bigArr[appointEmail] = append(bigArr[appointEmail], v)
|
|
}
|
|
}
|
|
@@ -940,11 +968,45 @@ func saveDataToRedis(data map[string]interface{}, batch string) {
|
|
}
|
|
}
|
|
|
|
|
|
// 邮箱选择处理
|
|
// 邮箱选择处理
|
|
-func EmailSelect(batch string) (string, string) {
|
|
|
|
|
|
+func EmailSelect(batch, mailStr string) (string, string) {
|
|
name := ""
|
|
name := ""
|
|
minemail := ""
|
|
minemail := ""
|
|
bigData := TiDb.SelectBySql("select * from dwd_f_crm_clue_big_autodraw_record where type =? ", batch)
|
|
bigData := TiDb.SelectBySql("select * from dwd_f_crm_clue_big_autodraw_record where type =? ", batch)
|
|
if bigData != nil && len(*bigData) > 0 {
|
|
if bigData != nil && len(*bigData) > 0 {
|
|
|
|
+ //查看有没有新增人员 人名-邮箱,邮箱|人名-邮箱,
|
|
|
|
+ mailMap := map[string]string{}
|
|
|
|
+ if mailStr != "" {
|
|
|
|
+ for _, s := range strings.Split(mailStr, "|") {
|
|
|
|
+ if len(strings.Split(s, "-")) > 1 {
|
|
|
|
+ arr := strings.Split(s, "-")
|
|
|
|
+ personName := arr[0]
|
|
|
|
+ mailMap[personName] = arr[1]
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ for personName, mailStr := range mailMap {
|
|
|
|
+ isOk := false
|
|
|
|
+ for _, m := range *bigData {
|
|
|
|
+ tablePersonName := gconv.String(m["name"])
|
|
|
|
+ if tablePersonName == personName {
|
|
|
|
+ isOk = true
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if !isOk {
|
|
|
|
+ rData := TiDb.FindOne("dwd_f_crm_clue_big_autodraw_record", map[string]interface{}{
|
|
|
|
+ "type": batch,
|
|
|
|
+ }, "", "count desc")
|
|
|
|
+ //这是一个新人
|
|
|
|
+ TiDb.Insert("dwd_f_crm_clue_big_autodraw_record", map[string]interface{}{
|
|
|
|
+ "name": personName,
|
|
|
|
+ "count": common.Int64All((*rData)["count"]),
|
|
|
|
+ "email": mailStr,
|
|
|
|
+ "type": batch,
|
|
|
|
+ })
|
|
|
|
+ return minemail, name
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
mincount := common.IntAll((*bigData)[0]["count"])
|
|
mincount := common.IntAll((*bigData)[0]["count"])
|
|
for _, vv := range *bigData {
|
|
for _, vv := range *bigData {
|
|
vcount := common.IntAll(vv["count"])
|
|
vcount := common.IntAll(vv["count"])
|