123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- package cygx
- import (
- "errors"
- "fmt"
- "hongze/hz_crm_api/models"
- "hongze/hz_crm_api/models/cygx"
- "hongze/hz_crm_api/services/alarm_msg"
- "hongze/hz_crm_api/utils"
- "strconv"
- "time"
- )
- //func init() {
- // AddUserFllowCompanyLossToTryOut(12841)
- //}
- // 流失客户转试用给下面的用户自动添加产业关注
- 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
- }
- if len(userList) == 0 {
- return
- }
- var condition string
- var pars []interface{}
- //所有的产业
- industrNamelist, e := cygx.GetTopOneMonthArtReadNumIndustryAll(condition, pars)
- if e != nil {
- err = errors.New("GetTopOneMonthArtReadNumIndustryAll, Err: " + e.Error())
- return
- }
- var userIds []int
- for _, v := range userList {
- userIds = append(userIds, v.UserId)
- }
- condition = " AND user_id IN (" + utils.GetOrmInReplace(len(userIds)) + ") "
- pars = append(pars, userIds)
- 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)
- }
- }
- //fmt.Println("Items", len(Items))
- //如果小于五千条就直接插入,大于五千条就批量插入
- 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
- }
- }
- }
- //fmt.Println("AddUserFllowCompanyLossToTryOut end")
- return
- }
|