|
@@ -383,6 +383,9 @@ func bigCustomer() {
|
|
if sourceMap[sources] != "" {
|
|
if sourceMap[sources] != "" {
|
|
source := sourceMap[sources]
|
|
source := sourceMap[sources]
|
|
phone := common.ObjToString(v["phone"])
|
|
phone := common.ObjToString(v["phone"])
|
|
|
|
+ if IsInternal(phone) {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
key := fmt.Sprintf("%s_%s", source, phone)
|
|
key := fmt.Sprintf("%s_%s", source, phone)
|
|
if _, ok := data[key]; ok {
|
|
if _, ok := data[key]; ok {
|
|
continue
|
|
continue
|
|
@@ -447,6 +450,9 @@ func bigCustomer() {
|
|
if phone == "" {
|
|
if phone == "" {
|
|
phone = common.ObjToString((*userData)["phone"])
|
|
phone = common.ObjToString((*userData)["phone"])
|
|
}
|
|
}
|
|
|
|
+ if IsInternal(phone) {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
username = common.ObjToString((*userData)["name"])
|
|
username = common.ObjToString((*userData)["name"])
|
|
usernickname = common.ObjToString((*userData)["nickname"])
|
|
usernickname = common.ObjToString((*userData)["nickname"])
|
|
uid = common.ObjToString((*userData)["uid"])
|
|
uid = common.ObjToString((*userData)["uid"])
|
|
@@ -559,7 +565,7 @@ func bigCustomer() {
|
|
}
|
|
}
|
|
email := k
|
|
email := k
|
|
//email = "wanghao@jianyu360.com"
|
|
//email = "wanghao@jianyu360.com"
|
|
- dir := "./xlsx/" + fileName + ".xlsx"
|
|
|
|
|
|
+ dir := "./xlsx/dk/" + fileName + ".xlsx"
|
|
err := xf.Save(dir)
|
|
err := xf.Save(dir)
|
|
if err != nil {
|
|
if err != nil {
|
|
log.Println("xls error", err, dir)
|
|
log.Println("xls error", err, dir)
|
|
@@ -583,6 +589,158 @@ func bigCustomer() {
|
|
log.Println("大客户线索定时任务结束")
|
|
log.Println("大客户线索定时任务结束")
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+func IsInternal(phone string) bool {
|
|
|
|
+ if DataAnalysisService.Count("dwd_f_userbase_insider", map[string]interface{}{
|
|
|
|
+ "mobile": phone,
|
|
|
|
+ }) > 0 {
|
|
|
|
+ return true
|
|
|
|
+ }
|
|
|
|
+ return false
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 咨询组线索
|
|
|
|
+func AdvisoryCommittee() {
|
|
|
|
+ runOk := getRunOk()
|
|
|
|
+ if !runOk {
|
|
|
|
+ log.Println("不是工作日,任务暂停")
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ log.Println("资询部线索定时任务开始")
|
|
|
|
+ dataArr := []map[string]interface{}{}
|
|
|
|
+ filterArr := []string{"-pc", "-app", "-wx", "-h5"}
|
|
|
|
+ sourceMap := map[string]string{} //根据留资维表:tidb/Jianyu_subjectdb/d_saleleads_code
|
|
|
|
+ saleSource := TiDb.SelectBySql(`SELECT source,name FROM d_saleleads_code WHERE 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
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ nowTime := time.Now().Format(date.Date_Full_Layout)
|
|
|
|
+ advisoryCommitteeTime := cfg.AdvisoryCommitteeTime
|
|
|
|
+ if advisoryCommitteeTime == 0 {
|
|
|
|
+ advisoryCommitteeTime = time.Now().Unix()
|
|
|
|
+ }
|
|
|
|
+ saleleadsData, ok := Mgo.Find("saleLeads", map[string]interface{}{"createtime": map[string]interface{}{"$gte": advisoryCommitteeTime}}, "phone,createtime", nil, false, -1, -1)
|
|
|
|
+ if ok && saleleadsData != nil && len(*saleleadsData) > 0 {
|
|
|
|
+ data := FindBatchData("sc")
|
|
|
|
+ for _, v := range *saleleadsData {
|
|
|
|
+ sources := common.ObjToString(v["source"])
|
|
|
|
+ userid := common.ObjToString(v["userid"])
|
|
|
|
+ uid := ""
|
|
|
|
+ if !mongodb.IsObjectIdHex(userid) {
|
|
|
|
+ userMapping := TiDb.FindOne("dwd_f_userbase_id_mapping", map[string]interface{}{"position_id": userid}, "", "")
|
|
|
|
+ if userMapping != nil && len(*userMapping) > 0 {
|
|
|
|
+ userid = common.ObjToString((*userMapping)["userid"])
|
|
|
|
+ uid = common.ObjToString((*userMapping)["uid"])
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if sourceMap[sources] != "" {
|
|
|
|
+ company := common.ObjToString(v["company"])
|
|
|
|
+ phone := common.ObjToString(v["phone"])
|
|
|
|
+ if IsInternal(phone) {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ username := common.ObjToString(v["name"])
|
|
|
|
+ email := common.ObjToString(v["mail"])
|
|
|
|
+ interest := common.ObjToString(v["interest"])
|
|
|
|
+ data_requirement := common.ObjToString(v["data_requirement"])
|
|
|
|
+ source := sourceMap[sources]
|
|
|
|
+ belongTo := "资询组"
|
|
|
|
+ userData := TiDb.FindOne("dwd_f_userbase_baseinfo", map[string]interface{}{"uid": uid}, "", "")
|
|
|
|
+ if userData != nil {
|
|
|
|
+ bt := common.ObjToString((*userData)["belong_to"])
|
|
|
|
+ if strings.HasPrefix(bt, "03") || bt == "0102" {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ key := fmt.Sprintf("%s_%s", source, phone)
|
|
|
|
+ if _, ok := data[key]; ok {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ data[key] = true
|
|
|
|
+ dataArr = append(dataArr, map[string]interface{}{
|
|
|
|
+ "createTime": nowTime,
|
|
|
|
+ "createtime": v["createtime"],
|
|
|
|
+ "username": username,
|
|
|
|
+ "company": company,
|
|
|
|
+ "phone": phone,
|
|
|
|
+ "source": source,
|
|
|
|
+ "belongTo": belongTo,
|
|
|
|
+ "interest": interest,
|
|
|
|
+ "data_requirement": data_requirement,
|
|
|
|
+ "branch": v["branch"],
|
|
|
|
+ "email": email,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ advisoryCommitteeTime = gconv.Int64(v["createtime"])
|
|
|
|
+ }
|
|
|
|
+ keyContent := fmt.Sprintf("data_%s_%s", time.Now().Format("2006-01-02"), "zx")
|
|
|
|
+ redis.Put("newother", keyContent, data, 86400)
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ cfg.AdvisoryCommitteeTime = advisoryCommitteeTime
|
|
|
|
+ xlsxArr := []string{"姓名", "联系方式", "邮箱", "公司名称", "咨询需求", "销售线索来源", "具体来源", "留资时间"}
|
|
|
|
+ if len(dataArr) > 0 {
|
|
|
|
+ //排序:首先按照“联系方式”排序,即同1个用户的留资放在一起,其次按照留资时间正序排序。
|
|
|
|
+ batch := FindBatch("zx")
|
|
|
|
+ fileName, detailName := "咨询服务销售线索 "+time.Now().Format(date.Date_Short_Layout)+"-"+batch, ""
|
|
|
|
+ xf := xlsx.NewFile()
|
|
|
|
+ style := xlsx.NewStyle()
|
|
|
|
+ style.Font.Size = 12
|
|
|
|
+ style.Font.Bold = true
|
|
|
|
+ style.Alignment.Vertical = "center"
|
|
|
|
+ style.Alignment.Horizontal = "center"
|
|
|
|
+ detailName = "今日新增商务合作销售线索,请查收附件,及时跟进。"
|
|
|
|
+ sh, _ := xf.AddSheet("线索数据")
|
|
|
|
+ row1 := sh.AddRow()
|
|
|
|
+ for _, x := range xlsxArr {
|
|
|
|
+ cell := row1.AddCell()
|
|
|
|
+ cell.SetString(x)
|
|
|
|
+ cell.SetStyle(style)
|
|
|
|
+ }
|
|
|
|
+ for _, v := range dataArr {
|
|
|
|
+
|
|
|
|
+ row := sh.AddRow()
|
|
|
|
+ row.AddCell().SetString(common.ObjToString(v["username"]))
|
|
|
|
+ row.AddCell().SetString(common.ObjToString(v["phone"]))
|
|
|
|
+ row.AddCell().SetString(common.ObjToString(v["email"]))
|
|
|
|
+ row.AddCell().SetString(common.ObjToString(v["company"]))
|
|
|
|
+ row.AddCell().SetString(common.ObjToString(v["data_requirement"]))
|
|
|
|
+ row.AddCell().SetString(common.ObjToString(v["source"]))
|
|
|
|
+ row.AddCell().SetString(common.ObjToString(v["interest"]))
|
|
|
|
+ row.AddCell().SetString(gconv.Time(gconv.Int64(v["createtime"])).Format(date.Date_Full_Layout))
|
|
|
|
+ //增加客户需求
|
|
|
|
+ }
|
|
|
|
+ email := db.MarketSaleMail
|
|
|
|
+ dir := "./xlsx/zx/" + fileName + ".xlsx"
|
|
|
|
+ xf.
|
|
|
|
+ err := xf.Save(dir)
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Println("xls error", err, dir)
|
|
|
|
+ } else {
|
|
|
|
+ gmail := &mail.GmailAuth{
|
|
|
|
+ SmtpHost: "smtp.exmail.qq.com",
|
|
|
|
+ SmtpPort: 465,
|
|
|
|
+ User: "public03@topnet.net.cn",
|
|
|
|
+ Pwd: "ue9Rg9Sf4CVtdm5a",
|
|
|
|
+ }
|
|
|
|
+ status := mail.GSendMail_q("剑鱼标讯", email, "", "", fileName, detailName, dir, fileName+".xlsx", gmail)
|
|
|
|
+ if status {
|
|
|
|
+ log.Println("send mail success", fileName, email)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ common.WriteSysConfig(&cfg)
|
|
|
|
+ log.Println("大客户线索定时任务结束")
|
|
|
|
+}
|
|
|
|
+
|
|
// 市场部线索
|
|
// 市场部线索
|
|
func marketCustomer() {
|
|
func marketCustomer() {
|
|
runOk := getRunOk()
|
|
runOk := getRunOk()
|
|
@@ -627,6 +785,9 @@ func marketCustomer() {
|
|
if sourceMap[sources] != "" {
|
|
if sourceMap[sources] != "" {
|
|
company := common.ObjToString(v["company"])
|
|
company := common.ObjToString(v["company"])
|
|
phone := common.ObjToString(v["phone"])
|
|
phone := common.ObjToString(v["phone"])
|
|
|
|
+ if IsInternal(phone) {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
job := common.ObjToString(v["position"])
|
|
job := common.ObjToString(v["position"])
|
|
username := common.ObjToString(v["name"])
|
|
username := common.ObjToString(v["name"])
|
|
email := common.ObjToString(v["mail"])
|
|
email := common.ObjToString(v["mail"])
|
|
@@ -707,7 +868,7 @@ func marketCustomer() {
|
|
//增加客户需求
|
|
//增加客户需求
|
|
}
|
|
}
|
|
email := db.MarketSaleMail
|
|
email := db.MarketSaleMail
|
|
- dir := "./xlsx/" + fileName + ".xlsx"
|
|
|
|
|
|
+ dir := "./xlsx/sc/" + fileName + ".xlsx"
|
|
err := xf.Save(dir)
|
|
err := xf.Save(dir)
|
|
if err != nil {
|
|
if err != nil {
|
|
log.Println("xls error", err, dir)
|
|
log.Println("xls error", err, dir)
|