|
@@ -0,0 +1,122 @@
|
|
|
+package cygx
|
|
|
+
|
|
|
+import (
|
|
|
+ "errors"
|
|
|
+ "fmt"
|
|
|
+ "hongze/hz_crm_api/models"
|
|
|
+ "hongze/hz_crm_api/models/cygx"
|
|
|
+ "hongze/hz_crm_api/services/alarm_msg"
|
|
|
+ "strconv"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+//func init() {
|
|
|
+// AddUserFllowCompanyLossToTryOut(1431)
|
|
|
+//}
|
|
|
+
|
|
|
+// 流失客户转试用给下面的用户自动添加产业关注
|
|
|
+func AddUserFllowCompanyLossToTryOut(companyId int) {
|
|
|
+ var err error
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ go alarm_msg.SendAlarmMsg("流失客户转试用给下面的用户自动添加产业关注。失败 ErrMsg:"+err.Error()+"companyId :"+strconv.Itoa(companyId), 2)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ //获取机构下所有的用户
|
|
|
+ userList, e := models.GetWxUserListCompanyId(companyId)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetWxUserListByUserMobileHaveCompany" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+ //所有的产业
|
|
|
+ industrNamelist, e := cygx.GetTopOneMonthArtReadNumIndustryAll(condition, pars)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetTopOneMonthArtReadNumIndustryAll, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ condition = " AND company_id = ? "
|
|
|
+ pars = append(pars, companyId)
|
|
|
+ userFllowList, e := cygx.GetCygxIndustryFllowList(condition, pars, 0, 0)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetCygxIndustryFllowList, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ mapUserFllow := make(map[string]bool) // 用户已经关注了某些产业
|
|
|
+
|
|
|
+ for _, v := range userFllowList {
|
|
|
+ mapUserFllow[fmt.Sprint("Uid_", v.UserId, "IndustrialManagementId_", v.IndustrialManagementId)] = true //用户ID与产业ID组成唯一索引Map
|
|
|
+ }
|
|
|
+
|
|
|
+ var numk int
|
|
|
+ var industryFllowItems []*cygx.CygxIndustryFllow
|
|
|
+ var Items []*cygx.CygxIndustryFllow
|
|
|
+
|
|
|
+ for _, vUser := range userList {
|
|
|
+ for _, vIndustry := range industrNamelist {
|
|
|
+ if mapUserFllow[fmt.Sprint("Uid_", vUser.UserId, "IndustrialManagementId_", vIndustry.IndustrialManagementId)] {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ item := new(cygx.CygxIndustryFllow)
|
|
|
+ item.IndustrialManagementId = vIndustry.IndustrialManagementId
|
|
|
+ item.UserId = vUser.UserId
|
|
|
+ item.Email = vUser.Email
|
|
|
+ item.Mobile = vUser.Mobile
|
|
|
+ item.RealName = vUser.RealName
|
|
|
+ item.CompanyId = vUser.CompanyId
|
|
|
+ item.CompanyName = vUser.CompanyName
|
|
|
+ item.Source = 3 // 通过程序或者管理员手动添加的关注
|
|
|
+ item.Type = 1
|
|
|
+ item.CreateTime = time.Now()
|
|
|
+ item.ModifyTime = time.Now()
|
|
|
+ Items = append(Items, item)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //如果小于五千条就直接插入,大于五千条就批量插入
|
|
|
+ if len(Items) < 5000 {
|
|
|
+ e = cygx.AddCygxIndustryFllowMulti(Items)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("AddCygxIndustryFllowMulti , Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for _, vUser := range Items {
|
|
|
+ numk++
|
|
|
+ item := new(cygx.CygxIndustryFllow)
|
|
|
+ item.IndustrialManagementId = vUser.IndustrialManagementId
|
|
|
+ item.UserId = vUser.UserId
|
|
|
+ item.Email = vUser.Email
|
|
|
+ item.Mobile = vUser.Mobile
|
|
|
+ item.RealName = vUser.RealName
|
|
|
+ item.CompanyId = vUser.CompanyId
|
|
|
+ item.CompanyName = vUser.CompanyName
|
|
|
+ item.Source = 3 // 通过程序或者管理员手动添加的关注
|
|
|
+ item.Type = 1
|
|
|
+ item.CreateTime = time.Now()
|
|
|
+ item.ModifyTime = time.Now()
|
|
|
+ industryFllowItems = append(industryFllowItems, item)
|
|
|
+ //一次插入五千条
|
|
|
+ if numk%5000 == 0 {
|
|
|
+ e = cygx.AddCygxIndustryFllowMulti(industryFllowItems)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("AddCygxIndustryFllowMulti , Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ industryFllowItems = make([]*cygx.CygxIndustryFllow, 0)
|
|
|
+ numk = 0
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if len(industryFllowItems) > 0 {
|
|
|
+ e = cygx.AddCygxIndustryFllowMulti(industryFllowItems)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("AddCygxIndustryFllowMulti , Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|