123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509 |
- package cygx
- import (
- "errors"
- "fmt"
- "hongze/hz_crm_api/models/company"
- "hongze/hz_crm_api/models/cygx"
- "hongze/hz_crm_api/services"
- "hongze/hz_crm_api/services/alarm_msg"
- "hongze/hz_crm_api/utils"
- "strconv"
- "strings"
- "time"
- )
- //预报名改为行程确定的活动时,通知预报名阶段感兴趣的客户
- // func init() {
- // DetermineTripCancel(55)
- // }
- func DetermineTripBeInterested(activityId int) (err error) {
- var msg string
- defer func() {
- if err != nil {
- fmt.Println(msg)
- fmt.Println(err)
- go alarm_msg.SendAlarmMsg("发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
- }
- }()
- activityInfo, e := cygx.GetAddActivityInfoSpecialById(activityId)
- if e != nil {
- err = e
- return
- }
- listSignup, e := cygx.GetCygxActivitySpecialSignupList(activityId)
- if e != nil {
- err = e
- fmt.Println(e)
- return
- }
- if len(listSignup) == 0 {
- return
- }
- var mobileArr []string
- for _, v := range listSignup {
- if v.Mobile != "" {
- mobileArr = append(mobileArr, v.Mobile)
- }
- }
- mobileLen := len(mobileArr)
- if mobileLen == 0 {
- return
- }
- //var condition string
- //var pars []interface{}
- //if mobileLen > 0 {
- // condition += ` AND u.mobile IN (` + utils.GetOrmInReplace(mobileLen) + `)`
- // pars = append(pars, mobileArr)
- //}
- openIdList, e := cygx.GetUserRecordListByMobileArr(mobileArr)
- if e != nil {
- fmt.Println(e)
- return
- }
- if len(openIdList) == 0 {
- return
- }
- openIdArr := make([]string, len(openIdList))
- for i, v := range openIdList {
- openIdArr[i] = v.OpenId
- }
- var first, keyword1, keyword2, keyword3, keyword4, remark, redirectUrl string
- keyword1 = "专项调研【" + activityInfo.ResearchTheme + "】"
- keyword2 = "已确定行程,请点击查看并报名以锁定席位"
- redirectUrl = utils.WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL + strconv.Itoa(activityId)
- sendInfo := new(services.SendWxTemplate)
- sendInfo.First = first
- sendInfo.Keyword1 = keyword1
- sendInfo.Keyword2 = keyword2
- sendInfo.Keyword3 = keyword3
- sendInfo.Keyword4 = keyword4
- sendInfo.Remark = remark
- sendInfo.TemplateId = utils.WxMsgTemplateIdActivityChangeApplyXzs
- sendInfo.RedirectUrl = redirectUrl
- sendInfo.RedirectTarget = 3
- sendInfo.Resource = strconv.Itoa(activityId)
- sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ACTIVITY_UPDATE
- sendInfo.OpenIdArr = openIdArr
- err = services.SendTemplateMsg(sendInfo)
- if err != nil {
- err = errors.New("SendTemplateMsg, Err: " + err.Error())
- return
- }
- return
- }
- // 取消发布
- func DetermineTripCancel(activityId int) (err error) {
- var msg string
- defer func() {
- if err != nil {
- fmt.Println(msg)
- fmt.Println(err)
- go alarm_msg.SendAlarmMsg("发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
- }
- }()
- activityInfo, e := cygx.GetAddActivityInfoSpecialById(activityId)
- if e != nil {
- err = e
- return
- }
- listSignup, e := cygx.GetCygxActivitySpecialTripListByActivityId(activityId)
- if e != nil {
- err = e
- return
- }
- var mobileArr []string
- for _, v := range listSignup {
- if v.Mobile != "" {
- mobileArr = append(mobileArr, v.Mobile)
- }
- }
- mobileLen := len(mobileArr)
- if mobileLen == 0 {
- return
- }
- openIdList, e := cygx.GetUserRecordListByMobileArr(mobileArr)
- if e != nil {
- fmt.Println(e)
- return
- }
- if len(openIdList) == 0 {
- return
- }
- openIdArr := make([]string, len(openIdList))
- for i, v := range openIdList {
- openIdArr[i] = v.OpenId
- }
- var first, keyword1, keyword2, keyword3, keyword4, remark, redirectUrl string
- keyword1 = "专项调研【" + activityInfo.ResearchTheme + "】"
- keyword2 = "因专家安排变动,本次调研活动延期举办,具体时间另行通知"
- redirectUrl = utils.WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL + strconv.Itoa(activityId)
- sendInfo := new(services.SendWxTemplate)
- sendInfo.First = first
- sendInfo.Keyword1 = keyword1
- sendInfo.Keyword2 = keyword2
- sendInfo.Keyword3 = keyword3
- sendInfo.Keyword4 = keyword4
- sendInfo.Remark = remark
- sendInfo.TemplateId = utils.WxMsgTemplateIdActivityChangeApplyXzs
- sendInfo.RedirectUrl = redirectUrl
- sendInfo.RedirectTarget = 3
- sendInfo.Resource = strconv.Itoa(activityId)
- sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ACTIVITY_UPDATE
- sendInfo.OpenIdArr = openIdArr
- err = services.SendTemplateMsg(sendInfo)
- if err != nil {
- err = errors.New("SendTemplateMsg, Err: " + err.Error())
- return
- }
- return
- }
- // 内容变更发布
- func DetermineTripChange(activityId int, changeType, changeMsg string) (err error) {
- var msg string
- defer func() {
- if err != nil {
- fmt.Println(msg)
- fmt.Println(err)
- go alarm_msg.SendAlarmMsg("发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
- }
- }()
- activityInfo, e := cygx.GetAddActivityInfoSpecialById(activityId)
- if e != nil {
- err = e
- return
- }
- listSignup, e := cygx.GetCygxActivitySpecialTripListByActivityId(activityId)
- if e != nil {
- err = e
- fmt.Println(e)
- return
- }
- var mobileArr []string
- for _, v := range listSignup {
- if v.Mobile != "" {
- mobileArr = append(mobileArr, v.Mobile)
- }
- }
- mobileLen := len(mobileArr)
- if mobileLen == 0 {
- return
- }
- openIdList, e := cygx.GetUserRecordListByMobileArr(mobileArr)
- if e != nil {
- fmt.Println(e)
- return
- }
- if len(openIdList) == 0 {
- return
- }
- openIdArr := make([]string, len(openIdList))
- for i, v := range openIdList {
- openIdArr[i] = v.OpenId
- }
- var first, keyword1, keyword2, keyword3, keyword4, remark, redirectUrl string
- if changeType == "City" {
- keyword1 = "【" + activityInfo.ResearchTheme + "】专项调研发生了城市变更"
- } else if changeType == "dateList" {
- keyword1 = "【" + activityInfo.ResearchTheme + "】专项调研发生了时间变更"
- } else {
- keyword1 = "【" + activityInfo.ResearchTheme + "】专项调研发生了调研形式变更"
- }
- keyword2 = changeMsg
- redirectUrl = utils.WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL + strconv.Itoa(activityId)
- sendInfo := new(services.SendWxTemplate)
- sendInfo.First = first
- sendInfo.Keyword1 = keyword1
- sendInfo.Keyword2 = keyword2
- sendInfo.Keyword3 = keyword3
- sendInfo.Keyword4 = keyword4
- sendInfo.Remark = remark
- sendInfo.TemplateId = utils.WxMsgTemplateIdActivityChangeApplyXzs
- sendInfo.RedirectUrl = redirectUrl
- sendInfo.RedirectTarget = 3
- sendInfo.Resource = strconv.Itoa(activityId)
- sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ACTIVITY_UPDATE
- sendInfo.OpenIdArr = openIdArr
- err = services.SendTemplateMsg(sendInfo)
- if err != nil {
- err = errors.New("SendTemplateMsg, Err: " + err.Error())
- return
- }
- return
- }
- //func init() {
- // SendWxMsgWithCygxActivitySpecialSubscribeNoInterested(7)
- //}
- // SendWxMsgWithCygxActivitySpecialSubscribeNoInterested 确定行程的活动通知,推送给订阅了调研活动通知且该场活动预报名阶段未点击感兴趣的客户和销售
- func SendWxMsgWithCygxActivitySpecialSubscribeNoInterested(activityId int) (err error) {
- var msg string
- defer func() {
- if err != nil {
- fmt.Println(err)
- go alarm_msg.SendAlarmMsg("发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
- utils.FileLogCygx.Info(fmt.Sprintf("发送模版消息失败,Err:%s,%s", err.Error(), msg))
- }
- }()
- activityInfo, err := cygx.GetAddActivityInfoSpecialById(activityId)
- if err != nil {
- msg = "GetReportInfo Err:" + err.Error()
- return
- }
- openIdList, err := cygx.GeFollowSpecialOpenIdList()
- if err != nil {
- msg = "get openIdList err:" + err.Error()
- return
- }
- listSignup, e := cygx.GetCygxActivitySpecialSignupList(activityId)
- if e != nil {
- err = e
- fmt.Println(e)
- return
- }
- var companyIds []int
- mapSignup := make(map[int]int)
- var arrOpenId []string
- for _, v := range listSignup {
- mapSignup[v.UserId] = v.UserId
- }
- for _, v := range openIdList {
- if _, ok := mapSignup[v.UserId]; !ok {
- arrOpenId = append(arrOpenId, v.OpenId)
- companyIds = append(companyIds, v.CompanyId)
- }
- }
- var condition string
- var pars []interface{}
- companyIdsLen := len(companyIds)
- condition = ` AND p.company_id IN (` + utils.GetOrmInReplace(companyIdsLen) + `) GROUP BY p.company_id `
- pars = append(pars, companyIds)
- listMobile, e := cygx.GetAdminMobileByCompany(condition, pars)
- if e != nil && e.Error() != utils.ErrNoRow() {
- err = errors.New("GetAdminOpendidByCompany, Err: " + e.Error())
- return
- }
- if len(listMobile) == 0 {
- return
- }
- var mobiles []string
- for _, vOpenid := range listMobile {
- mobiles = append(mobiles, vOpenid.Mobile)
- }
- listSeller, e := cygx.GetUserRecordListByMobileArr(mobiles)
- if e != nil && e.Error() != utils.ErrNoRow() {
- err = errors.New("GetUserRecordListByMobileArr, Err: " + e.Error())
- return
- }
- if len(listSeller) == 0 {
- return
- }
- for _, vOpenid := range listSeller {
- arrOpenId = append(arrOpenId, vOpenid.OpenId)
- }
- if len(arrOpenId) == 0 {
- return
- }
- mapOpenid := make(map[string]string)
- for _, v := range arrOpenId {
- mapOpenid[v] = v
- }
- openIdArr := make([]string, len(mapOpenid))
- var i int
- for _, v := range mapOpenid {
- openIdArr[i] = v
- i++
- }
- var first string
- var keyword1 string
- var keyword2 string
- //keyword1 = activityInfo.ResearchTheme
- keyword1 = "【" + activityInfo.ResearchTheme + "】专项调研已确定行程"
- //keyword2 = "活动形式:"
- if activityInfo.SpecialType == 1 {
- keyword2 += "线上 开始时间:" + activityInfo.ActivityTimeTextByDay
- } else {
- keyword2 += "线下 " + "(" + activityInfo.City + ") 开始时间:" + activityInfo.ActivityTimeTextByDay
- }
- remark := "点击查看活动详情"
- redirectUrl := utils.WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL + strconv.Itoa(activityId)
- sendInfo := new(services.SendWxTemplate)
- sendInfo.First = first
- sendInfo.Keyword1 = keyword1
- sendInfo.Keyword2 = keyword2
- sendInfo.Remark = remark
- sendInfo.TemplateId = utils.WxMsgTemplateIdActivityChangeApplyXzs
- sendInfo.RedirectUrl = redirectUrl
- sendInfo.RedirectTarget = 3
- sendInfo.Resource = strconv.Itoa(activityId)
- sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ACTIVITY_UPDATE
- sendInfo.OpenIdArr = openIdArr
- err = services.SendTemplateMsg(sendInfo)
- return
- }
- //func init() {
- // SendWxMsgWithCygxActivitySpecialArticle(1000570)
- //}
- // 发布后,对7天内,相同产业名称的专项调研活动的报名和空降客户,推送模板消息
- func SendWxMsgWithCygxActivitySpecialArticle(articleId int) (err error) {
- var msg string
- defer func() {
- if err != nil {
- fmt.Println(err)
- go alarm_msg.SendAlarmMsg("发布后,对7天内,相同产业名称的专项调研活动的报名和空降客户,发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
- utils.FileLogCygx.Info(fmt.Sprintf("发送模版消息失败,Err:%s,%s", err.Error(), msg))
- }
- }()
- articleInfo, e := cygx.GetArticleIdInfoByArticleId(articleId)
- if e != nil {
- msg = "获取文章信息失败!articleId:" + strconv.Itoa(articleId)
- err = errors.New("GetArticleIdInfoByArticleId, Err: " + e.Error())
- return
- }
- industrialList, e := cygx.GetIndustrialArticleGroupManagementList(articleInfo.ArticleId)
- if e != nil && err.Error() != utils.ErrNoRow() {
- err = errors.New("获取活动关联的产业列表信息失败,GetIndustrialArticleGroupManagementList Err: " + e.Error())
- return
- }
- var industrialName string
- if len(industrialList) == 0 {
- for _, v := range industrialList {
- industrialName += v.IndustryName + ","
- }
- }
- industrialName = strings.TrimRight(industrialName, ",")
- //10分钟之内的二次编辑不重复推送
- cacheKey := fmt.Sprint("Source:ADMIN", "_ArticleId:", articleInfo.ArticleId)
- isExist := utils.Rc.IsExist(cacheKey)
- if isExist {
- return err
- }
- var condition string
- var pars []interface{}
- //condition = ` AND m.industrial_management_id IN (` + utils.GetOrmInReplace(len(industryIds)) + `)`
- //pars = append(pars, industryIds)
- //condition += ` AND a.activity_time > ? `
- //pars = append(pars, time.Now().AddDate(0, 0, -7))
- //activityList, err := cygx.GetActivitySpecialByIndustryIds(condition, pars)
- //if err != nil {
- // return
- //}
- //if len(activityList) == 0 {
- // return
- //}
- //for _, v := range activityList {
- //activityInfo, e := cygx.GetAddActivityInfoSpecialById(v.ActivityId)
- //if e != nil {
- // err = errors.New("GetAddActivityInfoSpecialById, Err: " + e.Error())
- // return
- //}
- condition = ` AND category_id = ? AND sub_category_name = '专项调研' `
- pars = append(pars, articleInfo.CategoryId)
- charInfo, e := cygx.GetReportMappingDetail(condition, pars)
- if e != nil {
- err = errors.New("GetReportMappingDetail, Err: " + e.Error())
- return
- }
- //获取有权限的相关公司
- companyList, e := company.GetCompanyReportPermissionUpgradeByChartPermissionId(charInfo.ChartPermissionId)
- if e != nil {
- err = errors.New("GetCompanyReportPermissionUpgradeByChartPermissionId, Err: " + e.Error())
- return
- }
- if len(companyList) == 0 {
- return
- }
- var companyIdArr []int
- for _, v := range companyList {
- companyIdArr = append(companyIdArr, v.CompanyId)
- }
- pars = make([]interface{}, 0)
- condition = ` AND u.company_id IN (` + utils.GetOrmInReplace(len(companyIdArr)) + `)`
- pars = append(pars, companyIdArr)
- listMobile, e := cygx.GetAdminMobileByCompany(condition, pars)
- if e != nil {
- err = errors.New("GetWxOpenIdByMobileList, Err: " + e.Error())
- return
- }
- var mobiles []string
- for _, vOpenid := range listMobile {
- mobiles = append(mobiles, vOpenid.Mobile)
- }
- openIdList, e := cygx.GetUserRecordListByMobileArr(mobiles)
- if e != nil {
- err = errors.New("GetWxOpenIdByMobileList, Err: " + e.Error())
- return
- }
- if len(openIdList) == 0 {
- return
- }
- openIdArr := make([]string, len(openIdList))
- for i, vO := range openIdList {
- openIdArr[i] = vO.OpenId
- }
- var keyword1 string
- first := ""
- if industrialName != "" {
- keyword1 = "【" + industrialName + "】有报告发布/更新"
- } else {
- keyword1 = articleInfo.Title + "已发布"
- }
- keyword2 := articleInfo.Title
- keyword3 := articleInfo.PublishDate.Format(utils.FormatDate)
- keyword4 := "--"
- remark := "点击查看报告详情"
- redirectUrl := utils.WX_MSG_PATH_ARTICLE_DETAIL + strconv.Itoa(articleInfo.ArticleId)
- sendInfo := new(services.SendWxTemplate)
- sendInfo.First = first
- sendInfo.Keyword1 = keyword1
- sendInfo.Keyword2 = keyword2
- sendInfo.Keyword3 = keyword3
- sendInfo.Keyword4 = keyword4
- sendInfo.Remark = remark
- sendInfo.TemplateId = utils.TemplateIdByProductXzs
- sendInfo.RedirectUrl = redirectUrl
- sendInfo.RedirectTarget = 3
- sendInfo.Resource = strconv.Itoa(articleInfo.ArticleId)
- sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
- sendInfo.OpenIdArr = openIdArr
- //fmt.Println(sendInfo)
- e = services.SendTemplateMsg(sendInfo)
- if e != nil {
- err = errors.New("SendTemplateMsg, Err: " + e.Error())
- return
- }
- setNX := utils.Rc.SetNX(cacheKey, articleInfo.ArticleId, time.Minute*10)
- if !setNX {
- go alarm_msg.SendAlarmMsg("发送模版消息失败,10分钟之内的活动二次编辑不重复推送,设置Redis Key 过期时间失败:key"+cacheKey, 3)
- return err
- }
- return
- }
|