Parcourir la source

Merge branch 'master' of http://8.136.199.33:3000/hongze/hz_crm_api into crm/crm_16_9_rai

zhangchuanxing il y a 4 jours
Parent
commit
e9099fa74e

+ 8 - 39
controllers/cygx/activity.go

@@ -683,18 +683,7 @@ func (this *ActivityCoAntroller) PreserveAndPublish() {
 					itemVideo.CreateTime = time.Now().Format(utils.FormatDateTime)
 					sourceVivo = utils.CYGX_OBJ_ACTIVITYVIDEO
 				}
-				//删除原有的视频数据
-				//if itemVideo.VideoUrl != "" {
-				//videoDetail, err := cygx.GetCygxActivityVideoReqDetail(activityId)
-				//if err != nil && err.Error() != utils.ErrNoRow() {
-				//	br.Msg = "获取信息失败"
-				//	br.ErrMsg = "GetCygxActivityVideoReqDetail,Err:" + err.Error() + "activityId:" + strconv.Itoa(activityId)
-				//	return
-				//}
-				//if videoDetail != nil {
-				//	go cygxService.UpdateResourceData(videoDetail.VideoId, "activityvideo", "delete", time.Now().Format(utils.FormatDateTime))
-				//}
-				//}
+
 				//处理音视频上传
 				err = cygxService.UpdateActivityVideoAndVoice(activityInfo, itemVoice, itemVideo)
 				if err != nil && err.Error() != utils.ErrNoRow() {
@@ -709,19 +698,7 @@ func (this *ActivityCoAntroller) PreserveAndPublish() {
 					br.ErrMsg = "UpdateActivityVideoAndVoice,Err:" + err.Error() + "activityId:" + strconv.Itoa(activityId)
 					return
 				}
-				//if itemVoice.VoiceUrl != "" {
-				//voiceReqList, err := cygx.GetCygxActivityVoiceReqList(activityId)
-				//if err != nil && err.Error() != utils.ErrNoRow() {
-				//	br.Msg = "获取信息失败"
-				//	br.ErrMsg = "GetCygxActivityVoiceReqList,Err:" + err.Error() + "activityId:" + strconv.Itoa(activityId)
-				//	return
-				//}
-				//if len(voiceReqList) > 0 {
-				//	for _, voice := range voiceReqList {
-				//		go cygxService.UpdateResourceData(voice.ActivityVoiceId, "activityvoice", "delete", time.Now().Format(utils.FormatDateTime))
-				//	}
-				//}
-				//}
+
 				//如果活动信息有如下变更则做消息推送
 				err = cygx.EditActivity(item, activityInfo.PublishStatus, industrialActivityItemsList, subjectActivityItemsList, itemPointsSet)
 				if err != nil {
@@ -729,18 +706,10 @@ func (this *ActivityCoAntroller) PreserveAndPublish() {
 					br.ErrMsg = "操作失败,Err:" + err.Error()
 					return
 				}
-				////更新活动音频
-				//if int(voiceIdNew) > 0 {
-				//	go cygxService.UpdateResourceData(int(voiceIdNew), "activityvoice", "add", activityInfo.ActivityTime)
-				//}
-				////更新活动视频
-				//if int(videoIdNew) > 0 {
-				//	go cygxService.UpdateResourceData(int(videoIdNew), "activityvideo", "add", activityInfo.ActivityTime)
-				//}
 
 				errAct = err
 				if activityInfo.PublishStatus == 1 && activityInfo.ActivityTimeText != item.ActivityTimeText {
-					go services.SendWxMsgWithCygxActivityUpdateTime(req.ActivityId, activityInfo.ActivityTimeText, item.ActivityTimeText, "timeType")
+					go cygxService.SendWxMsgWithCygxActivityUpdateTime(req.ActivityId, activityInfo.ActivityTimeText, item.ActivityTimeText, "timeType")
 					if activityInfo.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
 						activityTime, err := time.Parse(utils.FormatDateTime, item.ActivityTime)
 						if err != nil {
@@ -755,26 +724,26 @@ func (this *ActivityCoAntroller) PreserveAndPublish() {
 				oldExpert, _ := cygx.GetReportContentTextSub(activityInfo.Expert)
 				newExpert, _ := cygx.GetReportContentTextSub(item.Expert)
 				if activityInfo.PublishStatus == 1 && oldExpert != newExpert {
-					go services.SendWxMsgWithCygxActivityUpdateTime(req.ActivityId, oldExpert, newExpert, "expertType")
+					go cygxService.SendWxMsgWithCygxActivityUpdateTime(req.ActivityId, oldExpert, newExpert, "expertType")
 					if activityInfo.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
 						go services.SendWxCategoryMsgWithCygxActivityUpdateTime(req.ActivityId, activityInfo.ActivityTimeText, newExpert, "expertType")
 					}
 				}
 				if activityInfo.PublishStatus == 1 && activityInfo.Address != item.Address {
-					go services.SendWxMsgWithCygxActivityUpdateTime(req.ActivityId, activityInfo.Address, item.Address, "addressType")
+					go cygxService.SendWxMsgWithCygxActivityUpdateTime(req.ActivityId, activityInfo.Address, item.Address, "addressType")
 					if activityInfo.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
 						go services.SendWxCategoryMsgWithCygxActivityUpdateTime(req.ActivityId, activityInfo.ActivityTimeText, item.Address, "addressType")
 					}
 				}
 				if activityInfo.PublishStatus == 1 && activityInfo.ParticipationCode != item.ParticipationCode {
-					go services.SendWxMsgWithCygxActivityUpdateTime(req.ActivityId, activityInfo.ParticipationCode, item.ParticipationCode, "participationCode")
+					go cygxService.SendWxMsgWithCygxActivityUpdateTime(req.ActivityId, activityInfo.ParticipationCode, item.ParticipationCode, "participationCode")
 					if activityInfo.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
 						go services.SendWxCategoryMsgWithCygxActivityUpdateTime(req.ActivityId, activityInfo.ActivityTimeText, item.ParticipationCode, "participationCode")
 					}
 				}
 
 				if activityInfo.PublishStatus == 1 && activityInfo.Theme != item.Theme {
-					go services.SendWxMsgWithCygxActivityUpdateTime(req.ActivityId, activityInfo.Theme, item.Theme, "Theme")
+					go cygxService.SendWxMsgWithCygxActivityUpdateTime(req.ActivityId, activityInfo.Theme, item.Theme, "Theme")
 					if activityInfo.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
 						go services.SendWxCategoryMsgWithCygxActivityUpdateTime(req.ActivityId, activityInfo.ActivityTimeText, item.Theme, "Theme")
 					}
@@ -1344,7 +1313,7 @@ func (this *ActivityCoAntroller) PublishAndCancel() {
 		item.IsCancel = 1
 	}
 	if activityInfo.PublishStatus == 1 {
-		go services.SendWxMsgWithCygxActivity(req.ActivityId)
+		go cygxService.SendWxMsgWithCygxActivity(req.ActivityId)
 		//同步活动到最新数据表
 		//go cygxService.UpdateResourceData(req.ActivityId, "activity", "delete", "")
 		if activityInfo.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {

+ 2 - 3
controllers/cygx/activity_special.go

@@ -8,7 +8,6 @@ import (
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/cygx"
 	"hongze/hz_crm_api/models/system"
-	"hongze/hz_crm_api/services"
 	cygxService "hongze/hz_crm_api/services/cygx"
 	"hongze/hz_crm_api/services/elastic"
 	"hongze/hz_crm_api/utils"
@@ -274,7 +273,7 @@ func (this *ActivitySpecialCoAntroller) PreserveAndPublish() {
 	}
 	//模板消息推送
 	if req.DoType == 1 {
-		go services.SendWxMsgWithCygxActivitySpecial(activityId)
+		go cygxService.SendWxMsgWithCygxActivitySpecial(activityId)
 		//go cygxService.UpdateResourceData(activityId, "activityspecial", "add", time.Now().Format(utils.FormatDateTime))
 	}
 	go cygxService.UpdateActivitySpecialResourceData(activityId) //写入首页最新  cygx_resource_data 表
@@ -535,7 +534,7 @@ func (this *ActivitySpecialCoAntroller) PublishAndCancel() {
 	}
 	//模板消息推送
 	if item.PublishStatus == 1 {
-		go services.SendWxMsgWithCygxActivitySpecial(activityId)
+		go cygxService.SendWxMsgWithCygxActivitySpecial(activityId)
 		//go cygxService.UpdateResourceData(activityId, "activityspecial", "add", time.Now().Format(utils.FormatDateTime))
 	} else {
 		go cygxService.DetermineTripCancel(activityId)

+ 42 - 39
models/cygx/cygx_user_record.go

@@ -27,9 +27,10 @@ type OpenIdList struct {
 }
 
 type OpenIdMobileList struct {
-	OpenId string
-	UserId int
-	Mobile string `description:"手机号"`
+	OpenId    string
+	UserId    int
+	Mobile    string `description:"手机号"`
+	CompanyId int    `description:"公司ID"`
 }
 
 func GetCygxUserRecord() (items []*CygxUserRecord, err error) {
@@ -41,30 +42,39 @@ func GetCygxUserRecord() (items []*CygxUserRecord, err error) {
 
 // 获取所有有权限的用户的opid
 func GetCygxUserRecordPower(chartPermissionIds string) (items []*OpenIdList, err error) {
-	//o := orm.NewOrm()
-	//sql := `SELECT
-	//		cr.open_id,
-	//		u.user_id,
-	//		u.company_id,
-	//		u.real_name,
-	//		u.mobile
-	//	FROM
-	//		company_report_permission AS p
-	//		INNER JOIN wx_user AS u ON u.company_id = p.company_id
-	//		INNER JOIN user_record AS r ON r.user_id = u.user_id
-	//		INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id
-	//	WHERE
-	//		p.chart_permission_id IN (` + chartPermissionIds + `)
-	//		AND r.create_platform = 4
-	//		AND p.STATUS IN ('正式','试用','永续')   GROUP BY cr.open_id `
-	//_, err = o.Raw(sql).QueryRows(&items)
+	listMobile, err := GetCygxUserRecordPowerMobileList(chartPermissionIds)
+	if err != nil {
+		return
+	}
+	var mobileArr []string
+	for _, v := range listMobile {
+		if v.Mobile != "" {
+			mobileArr = append(mobileArr, v.Mobile)
+		}
+	}
+	mobileLen := len(mobileArr)
+	if mobileLen == 0 {
+		return
+	}
+	openIdList, err := GetUserRecordListByMobileArr(mobileArr)
+	if err != nil {
+		return
+	}
+	items = openIdList
+	return
+}
 
+// 获取所有有权限的用户的opid
+func GetCygxUserRecordPowerArticle(chartPermissionIds string) (items []*OpenIdList, err error) {
 	listMobile, err := GetCygxUserRecordPowerMobileList(chartPermissionIds)
 	if err != nil {
 		return
 	}
 	var mobileArr []string
 	for _, v := range listMobile {
+		if v.CompanyId == utils.JMCJ_COMPANY_ID {
+			continue //需求池 1043:深圳进门财经科技股份有限公司下所有的账号,所有活动的新增修改都做推送,所有的报告的新增修改都不做推送。
+		}
 		if v.Mobile != "" {
 			mobileArr = append(mobileArr, v.Mobile)
 		}
@@ -231,31 +241,24 @@ func GetCygxActiviyUserFllowOpenid(activityId int) (items []*OpenIdList, err err
 //}
 
 // GetCygxUserRecordPowerByActivitySet 根据活动设置,获取所有有权限的用户的opid
-func GetCygxUserRecordPowerByActivitySet(chartPermissionIds, condition string) (items []*OpenIdList, itemsYx []*OpenIdList, err error) {
-	//o := orm.NewOrm()
-	//sql := `SELECT
-	//		cr.open_id,
-	//		u.user_id,
-	//		u.company_id,
-	//		u.real_name,
-	//		u.mobile
-	//	FROM
-	//		company_report_permission AS p
-	//		INNER JOIN wx_user AS u ON u.company_id = p.company_id
-	//		INNER JOIN user_record AS r ON r.user_id = u.user_id
-	//		INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id
-	//	WHERE
-	//		p.chart_permission_id IN (` + chartPermissionIds + `) ` + condition + ` AND r.create_platform = 4
-	//		AND p.STATUS IN ('正式','试用','永续')   GROUP BY cr.open_id `
-	//_, err = o.Raw(sql).QueryRows(&items)
-
+func GetCygxUserRecordPowerByActivitySet(chartPermissionIds, condition string, mobileArrJmcj []string) (items []*OpenIdList, itemsYx []*OpenIdList, err error) {
 	listMobile, err := GetCygxUserRecordPowerByActivitySetListMobile(chartPermissionIds, condition)
 	if err != nil {
 		return
 	}
 	var mobileArr []string
+	var mobileArrYx []string
+	//需求池 1043:深圳进门财经科技股份有限公司下所有的账号,所有活动的新增修改都做推送,所有的报告的新增修改都不做推送。
+	for _, v := range mobileArrJmcj {
+		if v != "" {
+			mobileArr = append(mobileArr, v)
+		}
+	}
 	for _, v := range listMobile {
 		if v.Mobile != "" {
+			if !utils.InArrayByStr(mobileArrJmcj, v.Mobile) {
+				mobileArrYx = append(mobileArrYx, v.Mobile)
+			}
 			mobileArr = append(mobileArr, v.Mobile)
 		}
 	}
@@ -269,7 +272,7 @@ func GetCygxUserRecordPowerByActivitySet(chartPermissionIds, condition string) (
 	}
 	items = openIdList
 
-	openIdListYx, err := GetMfyxUserRecordListByMobileArr(mobileArr)
+	openIdListYx, err := GetMfyxUserRecordListByMobileArr(mobileArrYx)
 	if err != nil {
 		return
 	}

+ 26 - 35
services/cygx/acitvity.go

@@ -920,24 +920,6 @@ func DoActivityOnenIdWxTemplateMsg(activityId int) (err error) {
 	//conditionPer = ` AND p.chart_permission_id IN (` + utils.GetOrmInReplace(len(chartPermissionIdArr)) + `) `
 	parsPer = append(parsPer, chartPermissionIdArr)
 
-	//if len(chartPermissionStarus) > 0 {
-	//	conditionPer += ` AND p.STATUS IN (` + utils.GetOrmInReplace(len(chartPermissionStarus)) + `) `
-	//	parsPer = append(parsPer, chartPermissionStarus)
-	//}
-
-	//先获取有对应权限的所有用户
-	//openidPowerList, e := cygx.GetCygxUserRecordPowerOpenid(conditionPer, parsPer)
-	//if e != nil && e.Error() != utils.ErrNoRow() {
-	//	err = errors.New("GetCygxUserRecordPowerOpenid, Err: " + e.Error())
-	//	return
-	//}
-	//fmt.Println(len(openidPowerList))
-	// 获取所有有权的用户的 openid
-	//openidPowerList, err := cygx.GetCygxUserRecordPower(chartPermissionIds)
-	//if err != nil {
-	//	return
-	//}
-
 	var havePowerCompanyid string
 	//如果活动限制人数就做可见区分判断
 	if activityInfo.IsLimitPeople > 0 {
@@ -1242,26 +1224,35 @@ func DoActivityOnenIdWxTemplateMsg(activityId int) (err error) {
 		mapOpenidFllow[v.UserId] = v.OpenId
 	}
 
+	var mobileArrJmcj []string
+	listUserJmcj, err := models.GetWxUserListCompanyId(utils.JMCJ_COMPANY_ID)
+	if err != nil {
+		return
+	}
+	for _, v := range listUserJmcj {
+		mobileArrJmcj = append(mobileArrJmcj, v.Mobile)
+	}
+
 	//fmt.Println(mapOpenidFllow)
-	openidPowerByActivitySetList, openidPowerByActivitySetListYx, err := cygx.GetCygxUserRecordPowerByActivitySet(chartPermissionIds, condition)
+	openidPowerByActivitySetList, openidPowerByActivitySetListYx, err := cygx.GetCygxUserRecordPowerByActivitySet(chartPermissionIds, condition, mobileArrJmcj)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		return err
 	}
 	//已经推送过的不做二次推送
-	listSendOpendId, err := cygx.GeCygxActivityUserTemplateRecordListByActivityId(activityId, utils.TEMPLATE_MSG_CYGX_ACTIVITY_ADD)
-	if err != nil && err.Error() != utils.ErrNoRow() {
-		return err
-	}
-	mapSendOpenid := make(map[string]int)
-	for _, v := range listSendOpendId {
-		mapSendOpenid[v.OpenId] = v.UserId
-	}
+	//listSendOpendId, err := cygx.GeCygxActivityUserTemplateRecordListByActivityId(activityId, utils.TEMPLATE_MSG_CYGX_ACTIVITY_ADD)
+	//if err != nil && err.Error() != utils.ErrNoRow() {
+	//	return err
+	//}
+	//mapSendOpenid := make(map[string]int)
+	//for _, v := range listSendOpendId {
+	//	mapSendOpenid[v.OpenId] = v.UserId
+	//}
 	var OpenIdList []*models.OpenIdList
 	for _, v := range openidPowerByActivitySetList {
-		if mapSendOpenid[v.OpenId] > 0 {
-			//fmt.Println("已经推过了")
-			continue
-		}
+		//if mapSendOpenid[v.OpenId] > 0 {
+		//	//fmt.Println("已经推过了")
+		//	continue
+		//}
 		item := new(models.OpenIdList)
 		item.UserId = v.UserId
 		item.OpenId = v.OpenId
@@ -1294,10 +1285,10 @@ func DoActivityOnenIdWxTemplateMsg(activityId int) (err error) {
 
 	var OpenIdListYx []*models.OpenIdList
 	for _, v := range openidPowerByActivitySetListYx {
-		if mapSendOpenid[v.OpenId] > 0 {
-			//fmt.Println("已经推过了")
-			continue
-		}
+		//if mapSendOpenid[v.OpenId] > 0 {
+		//	//fmt.Println("已经推过了")
+		//	continue
+		//}
 		item := new(models.OpenIdList)
 		item.UserId = v.UserId
 		item.OpenId = v.OpenId

+ 264 - 11
services/cygx/activity_wx_msg.go

@@ -9,7 +9,9 @@ import (
 	"hongze/hz_crm_api/services"
 	"hongze/hz_crm_api/services/alarm_msg"
 	"hongze/hz_crm_api/utils"
+	"html"
 	"strconv"
+	"strings"
 	"time"
 )
 
@@ -35,17 +37,17 @@ func SendWxMsgWithCygxActivityUpdateLimitPeople(activityId int) (err error) {
 	//listSendOpendId, err := models.GeUserTemplateRecordListBysendType(utils.TEMPLATE_MSG_CYGX_ACTIVITY_LIMIT_PEOPLE, strconv.Itoa(activityId))
 
 	//已经推送过的不做二次推送
-	listSendOpendId, err := cygx.GeCygxActivityUserTemplateRecordListByActivityId(activityId, utils.TEMPLATE_MSG_CYGX_ACTIVITY_LIMIT_PEOPLE)
-	if err != nil && err.Error() != utils.ErrNoRow() {
-		return err
-	}
-	if err != nil && err.Error() != utils.ErrNoRow() {
-		return err
-	}
-	mapSendOpenid := make(map[string]int)
-	for _, v := range listSendOpendId {
-		mapSendOpenid[v.OpenId] = v.UserId
-	}
+	//listSendOpendId, err := cygx.GeCygxActivityUserTemplateRecordListByActivityId(activityId, utils.TEMPLATE_MSG_CYGX_ACTIVITY_LIMIT_PEOPLE)
+	//if err != nil && err.Error() != utils.ErrNoRow() {
+	//	return err
+	//}
+	//if err != nil && err.Error() != utils.ErrNoRow() {
+	//	return err
+	//}
+	//mapSendOpenid := make(map[string]int)
+	//for _, v := range listSendOpendId {
+	//	mapSendOpenid[v.OpenId] = v.UserId
+	//}
 
 	var condition string
 	var pars []interface{}
@@ -101,6 +103,16 @@ func SendWxMsgWithCygxActivityUpdateLimitPeople(activityId int) (err error) {
 		openiditems = append(openiditems, openiditem)
 	}
 
+	if activityInfo.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN {
+		//需求池 1043:深圳进门财经科技股份有限公司下所有的账号,所有活动的新增修改都做推送,所有的报告的新增修改都不做推送。
+		jmcjOpenId := GetUserOpenidByComapnyIdRai(utils.JMCJ_COMPANY_ID)
+		for _, v := range jmcjOpenId {
+			if !utils.InArrayByStr(openIdArr, v) {
+				openIdArr = append(openIdArr, v)
+			}
+		}
+	}
+
 	first := "您好,本场活动已增加活动名额至" + activityInfo.LimitPeopleNum + "人,欢迎报名"
 	keyword1 := activityInfo.ActivityName
 	keyword2 := "已增加活动名额至" + activityInfo.LimitPeopleNum + "人,欢迎报名"
@@ -336,3 +348,244 @@ func SendWxMsgWithUpdateActivityVideoAndVoice(activityId int, fileName string) (
 	}
 	return
 }
+
+// 活动更改时间消息通知
+func SendWxMsgWithCygxActivityUpdateTime(activityId int, oldStr, newStr, strType string) (err error) {
+	var msg string
+	defer func() {
+		if err != nil {
+			go alarm_msg.SendAlarmMsg("发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
+			utils.FileLogCygx.Info(fmt.Sprintf("发送模版消息失败,Err:%s,%s", err.Error(), msg))
+		}
+		if msg != "" {
+			utils.FileLogCygx.Info("发送模版消息失败,msg:%s", msg)
+		}
+	}()
+
+	activityInfo, err := cygx.GetAddActivityInfoById(activityId)
+	if err != nil {
+		msg = "GetReportInfo Err:" + err.Error()
+		return
+	}
+	if activityInfo == nil {
+		utils.FileLogCygx.Info("活动信息不存在")
+		return
+	}
+
+	var openIdList []*cygx.OpenIdList
+
+	openIdList, err = cygx.GetActivityOpenIdList(activityId)
+	if err != nil {
+		msg = "get openIdList err:" + err.Error()
+		return
+	}
+
+	mapOpenid := make(map[int]string)
+	for _, v := range openIdList {
+		mapOpenid[v.UserId] = v.OpenId
+	}
+	//添加预约纪要的openid
+	openIdListAppointment, err := cygx.GetActivityAppointmentOpenIdList(activityId)
+	if err != nil {
+		msg = "GetActivityAppointmentOpenIdList err:" + err.Error()
+		return
+	}
+	if len(openIdListAppointment) > 0 {
+		for _, v := range openIdListAppointment {
+			if _, ok := mapOpenid[v.UserId]; !ok {
+				item := new(cygx.OpenIdList)
+				item.UserId = v.UserId
+				item.OpenId = v.OpenId
+				openIdList = append(openIdList, item)
+			}
+			mapOpenid[v.UserId] = v.OpenId
+
+		}
+	}
+
+	//添加带问的openid
+	openIdListActivityHelpAsk, err := cygx.GetActivityHelpAskOpenIdList(activityId)
+	if err != nil {
+		msg = "openIdListActivityHelpAsk err:" + err.Error()
+		return
+	}
+	if len(openIdListActivityHelpAsk) > 0 {
+		for _, v := range openIdListActivityHelpAsk {
+			if _, ok := mapOpenid[v.UserId]; !ok {
+				item := new(cygx.OpenIdList)
+				item.UserId = v.UserId
+				item.OpenId = v.OpenId
+				openIdList = append(openIdList, item)
+			}
+			mapOpenid[v.UserId] = v.OpenId
+		}
+	}
+
+	if len(openIdList) == 0 {
+		return err
+	}
+	//sendMap := make(map[string]interface{})
+	//sendData := make(map[string]interface{})
+	var first string
+	var keyword1, keyword2, keyword3, keyword4, redirectUrl string
+
+	activityInfo.ActivityTypeName = strings.Replace(activityInfo.ActivityTypeName, "(C类)", "", -1)
+	if strType == "timeType" {
+		//first = "您有一场【" + activityInfo.ActivityTypeName + "】发生了时间变更"
+		keyword2 = "时间变更为:【 " + newStr + "】"
+	} else if strType == "expertType" {
+		//first = "您有一场【" + activityInfo.ActivityTypeName + "】发生了专家变更"
+		keyword2 = "专家变更为:【" + newStr + "】"
+	} else if strType == "addressType" {
+		//first = "您有一场【" + activityInfo.ActivityTypeName + "】发生了地址变更"
+		keyword2 = "地点变更为:【" + newStr + "】"
+	} else if strType == "participationCode" {
+		//first = "您有一场【" + activityInfo.ActivityTypeName + "】公布了拨入密码"
+		keyword2 = "拨入密码为: " + newStr
+	} else if strType == "Theme" {
+		//first = "您有一场【" + activityInfo.ActivityTypeName + "】更新了活动主题"
+		newStr = strings.Replace(newStr, "</p><p>", "\n", -1)
+		newStr = html.EscapeString(newStr)
+		newStrHtml, _ := cygx.GetReportContentTextSub(newStr)
+		newStr = newStrHtml
+		keyword2 = "主题变更为: " + newStr
+	}
+
+	keyword1 = activityInfo.ActivityName
+	var openIdArr []string
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+	if activityInfo.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN {
+		//需求池 1043:深圳进门财经科技股份有限公司下所有的账号,所有活动的新增修改都做推送,所有的报告的新增修改都不做推送。
+		jmcjOpenId := GetUserOpenidByComapnyIdRai(utils.JMCJ_COMPANY_ID)
+		for _, v := range jmcjOpenId {
+			if !utils.InArrayByStr(openIdArr, v) {
+				openIdArr = append(openIdArr, v)
+			}
+		}
+	}
+	redirectUrl = utils.WX_MSG_PATH_ACTIVITY_DETAIL + strconv.Itoa(activityId) + "&IsSendWx=1"
+	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
+	e := services.SendTemplateMsg(sendInfo)
+	if e != nil {
+		err = errors.New("推送模板消息失败" + e.Error())
+		return
+	}
+	return
+}
+
+// 活动取消消息通知
+func SendWxMsgWithCygxActivity(activityId int) (err error) {
+	var msg string
+	defer func() {
+		if err != nil {
+			go alarm_msg.SendAlarmMsg("发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
+			utils.FileLogCygx.Info(fmt.Sprintf("发送模版消息失败,Err:%s,%s", err.Error(), msg))
+		}
+		if msg != "" {
+			utils.FileLogCygx.Info("发送模版消息失败,msg:%s", msg)
+		}
+	}()
+	activityInfo, err := cygx.GetAddActivityInfoById(activityId)
+	if err != nil {
+		msg = "GetReportInfo Err:" + err.Error()
+		return
+	}
+	var openIdList []*cygx.OpenIdList
+	openIdList, err = cygx.GetActivityOpenIdList(activityId)
+	if err != nil {
+		msg = "get GetActivityOpenIdList err:" + err.Error()
+		return
+	}
+	mapOpenid := make(map[int]string)
+	for _, v := range openIdList {
+		mapOpenid[v.UserId] = v.OpenId
+	}
+	//添加预约纪要的openid
+	openIdListAppointment, err := cygx.GetActivityAppointmentOpenIdList(activityId)
+	if err != nil {
+		msg = "GetActivityAppointmentOpenIdList err:" + err.Error()
+		return
+	}
+	if len(openIdListAppointment) > 0 {
+		for _, v := range openIdListAppointment {
+			if _, ok := mapOpenid[v.UserId]; !ok {
+				item := new(cygx.OpenIdList)
+				item.UserId = v.UserId
+				item.OpenId = v.OpenId
+				openIdList = append(openIdList, item)
+			}
+			mapOpenid[v.UserId] = v.OpenId
+
+		}
+	}
+
+	//添加带问的openid
+	openIdListActivityHelpAsk, err := cygx.GetActivityHelpAskOpenIdList(activityId)
+	if err != nil {
+		msg = "openIdListActivityHelpAsk err:" + err.Error()
+		return
+	}
+	if len(openIdListActivityHelpAsk) > 0 {
+		for _, v := range openIdListActivityHelpAsk {
+			if _, ok := mapOpenid[v.UserId]; !ok {
+				item := new(cygx.OpenIdList)
+				item.UserId = v.UserId
+				item.OpenId = v.OpenId
+				openIdList = append(openIdList, item)
+			}
+			mapOpenid[v.UserId] = v.OpenId
+		}
+	}
+	activityInfo.ActivityTypeName = strings.Replace(activityInfo.ActivityTypeName, "(C类)", "", -1)
+	if len(openIdList) == 0 {
+		return err
+	}
+	var keyword1, keyword2, keyword3, keyword4, redirectUrl string
+	keyword1 = activityInfo.ActivityName
+	keyword2 = "活动已取消"
+
+	var openIdArr []string
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+	if activityInfo.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN {
+		//需求池 1043:深圳进门财经科技股份有限公司下所有的账号,所有活动的新增修改都做推送,所有的报告的新增修改都不做推送。
+		jmcjOpenId := GetUserOpenidByComapnyIdRai(utils.JMCJ_COMPANY_ID)
+		for _, v := range jmcjOpenId {
+			if !utils.InArrayByStr(openIdArr, v) {
+				openIdArr = append(openIdArr, v)
+			}
+		}
+	}
+
+	redirectUrl = utils.WX_MSG_PATH_ACTIVITY_DETAIL + strconv.Itoa(activityId) + "&IsSendWx=1"
+	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_CACLE
+	sendInfo.OpenIdArr = openIdArr
+	err = services.SendTemplateMsg(sendInfo)
+	return
+}

+ 1 - 1
services/cygx/article.go

@@ -370,7 +370,7 @@ func SendWxMsgWithroadshowEssence(articleId int) (err error) {
 		return
 	}
 	// 获取所有有权的用户的 openid
-	openidPowerList, e := cygx.GetCygxUserRecordPower(permissionStr)
+	openidPowerList, e := cygx.GetCygxUserRecordPowerArticle(permissionStr)
 	if e != nil {
 		err = errors.New("获取所有有权的用户的 openid失败" + e.Error())
 		return

+ 1 - 1
services/cygx/research_summary.go

@@ -279,7 +279,7 @@ func DoArticleOnenIdWxTemplateMsg(articleId int, source int) (err error) {
 	//utils.Rc.Put(cacheKey, articleId, time.Minute*30)
 	// 获取所有有权的用户的 openid
 	mapOpenidPower := make(map[int]string)
-	openidPowerList, err := cygx.GetCygxUserRecordPower(strconv.Itoa(chartPermissionId))
+	openidPowerList, err := cygx.GetCygxUserRecordPowerArticle(strconv.Itoa(chartPermissionId))
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		return err
 	}

+ 125 - 49
services/cygx/special_wx_msg.go

@@ -63,13 +63,18 @@ func DetermineTripBeInterested(activityId int) (err error) {
 		fmt.Println(e)
 		return
 	}
-
-	if len(openIdList) == 0 {
-		return
-	}
-	openIdArr := make([]string, len(openIdList))
-	for i, v := range openIdList {
-		openIdArr[i] = v.OpenId
+	var openIdArr []string
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+	if activityInfo.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN {
+		//需求池 1043:深圳进门财经科技股份有限公司下所有的账号,所有活动的新增修改都做推送,所有的报告的新增修改都不做推送。
+		jmcjOpenId := GetUserOpenidByComapnyIdRai(utils.JMCJ_COMPANY_ID)
+		for _, v := range jmcjOpenId {
+			if !utils.InArrayByStr(openIdArr, v) {
+				openIdArr = append(openIdArr, v)
+			}
+		}
 	}
 	var first, keyword1, keyword2, keyword3, keyword4, remark, redirectUrl string
 	keyword1 = "专项调研【" + activityInfo.ResearchTheme + "】"
@@ -132,12 +137,18 @@ func DetermineTripCancel(activityId int) (err error) {
 		return
 	}
 
-	if len(openIdList) == 0 {
-		return
-	}
-	openIdArr := make([]string, len(openIdList))
-	for i, v := range openIdList {
-		openIdArr[i] = v.OpenId
+	var openIdArr []string
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+	if activityInfo.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN {
+		//需求池 1043:深圳进门财经科技股份有限公司下所有的账号,所有活动的新增修改都做推送,所有的报告的新增修改都不做推送。
+		jmcjOpenId := GetUserOpenidByComapnyIdRai(utils.JMCJ_COMPANY_ID)
+		for _, v := range jmcjOpenId {
+			if !utils.InArrayByStr(openIdArr, v) {
+				openIdArr = append(openIdArr, v)
+			}
+		}
 	}
 	var first, keyword1, keyword2, keyword3, keyword4, remark, redirectUrl string
 	keyword1 = "专项调研【" + activityInfo.ResearchTheme + "】"
@@ -201,13 +212,18 @@ func DetermineTripChange(activityId int, changeType, changeMsg string) (err erro
 		fmt.Println(e)
 		return
 	}
-
-	if len(openIdList) == 0 {
-		return
-	}
-	openIdArr := make([]string, len(openIdList))
-	for i, v := range openIdList {
-		openIdArr[i] = v.OpenId
+	var openIdArr []string
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+	if activityInfo.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN {
+		//需求池 1043:深圳进门财经科技股份有限公司下所有的账号,所有活动的新增修改都做推送,所有的报告的新增修改都不做推送。
+		jmcjOpenId := GetUserOpenidByComapnyIdRai(utils.JMCJ_COMPANY_ID)
+		for _, v := range jmcjOpenId {
+			if !utils.InArrayByStr(openIdArr, v) {
+				openIdArr = append(openIdArr, v)
+			}
+		}
 	}
 	var first, keyword1, keyword2, keyword3, keyword4, remark, redirectUrl string
 	if changeType == "City" {
@@ -324,12 +340,20 @@ func SendWxMsgWithCygxActivitySpecialSubscribeNoInterested(activityId int) (err
 	for _, v := range arrOpenId {
 		mapOpenid[v] = v
 	}
-	openIdArr := make([]string, len(mapOpenid))
-	var i int
+
+	var openIdArr []string
 	for _, v := range mapOpenid {
-		openIdArr[i] = v
-		i++
+		openIdArr = append(openIdArr, v)
 	}
+
+	//需求池 1043:深圳进门财经科技股份有限公司下所有的账号,所有活动的新增修改都做推送,所有的报告的新增修改都不做推送。
+	jmcjOpenId := GetUserOpenidByComapnyIdRai(utils.JMCJ_COMPANY_ID)
+	for _, v := range jmcjOpenId {
+		if !utils.InArrayByStr(openIdArr, v) {
+			openIdArr = append(openIdArr, v)
+		}
+	}
+
 	var first string
 	var keyword1 string
 	var keyword2 string
@@ -400,26 +424,6 @@ func SendWxMsgWithCygxActivitySpecialArticle(articleId int) (err error) {
 
 	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)
@@ -462,13 +466,19 @@ func SendWxMsgWithCygxActivitySpecialArticle(articleId int) (err error) {
 		err = errors.New("GetWxOpenIdByMobileList, Err: " + e.Error())
 		return
 	}
-	if len(openIdList) == 0 {
-		return
+	var openIdArr []string
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
 	}
-	openIdArr := make([]string, len(openIdList))
-	for i, vO := range openIdList {
-		openIdArr[i] = vO.OpenId
+
+	//需求池 1043:深圳进门财经科技股份有限公司下所有的账号,所有活动的新增修改都做推送,所有的报告的新增修改都不做推送。
+	jmcjOpenId := GetUserOpenidByComapnyIdRai(utils.JMCJ_COMPANY_ID)
+	for _, v := range jmcjOpenId {
+		if !utils.InArrayByStr(openIdArr, v) {
+			openIdArr = append(openIdArr, v)
+		}
 	}
+
 	var keyword1 string
 	first := ""
 	if industrialName != "" {
@@ -507,3 +517,69 @@ func SendWxMsgWithCygxActivitySpecialArticle(articleId int) (err error) {
 	}
 	return
 }
+
+// 专项调研活动模板消息通知
+func SendWxMsgWithCygxActivitySpecial(activityId int) (err error) {
+	var msg string
+	defer func() {
+		if err != nil {
+			go alarm_msg.SendAlarmMsg("发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
+			//go utils.SendEmail("发送模版消息失败"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
+			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
+	}
+
+	var openIdList []*cygx.OpenIdList
+	openIdList, err = cygx.GetActivitySpecialOpenIdList()
+	if err != nil {
+		msg = "get openIdList err:" + err.Error()
+		return
+	}
+
+	var openIdArr []string
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+	if activityInfo.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN {
+		//需求池 1043:深圳进门财经科技股份有限公司下所有的账号,所有活动的新增修改都做推送,所有的报告的新增修改都不做推送。
+		jmcjOpenId := GetUserOpenidByComapnyIdRai(utils.JMCJ_COMPANY_ID)
+		for _, v := range jmcjOpenId {
+			if !utils.InArrayByStr(openIdArr, v) {
+				openIdArr = append(openIdArr, v)
+			}
+		}
+	}
+	var first, keyword1, keyword2, keyword3, keyword4, remark, redirectUrl string
+	keyword1 = "专项调研【" + activityInfo.ResearchTheme + "】"
+	keyword2 = "已开启预报名"
+	//if activityInfo.SpecialType == 1 {
+	//	keyword2 += "线上 预期时间:" + activityInfo.ActivityTimeText
+	//} else {
+	//	keyword2 += "线下 " + "(" + activityInfo.City + ") 预期时间:" + activityInfo.ActivityTimeText
+	//}
+	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
+}

+ 31 - 0
services/cygx/user_remind.go

@@ -3,6 +3,7 @@ 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"
@@ -38,3 +39,33 @@ func GetCygxUserRemindListMap(userIds []int) (mapResp map[int]bool) {
 	}
 	return
 }
+
+// 获取某一个公司下所有OpenId (查研观向主体)
+func GetUserOpenidByComapnyIdRai(comppanyId int) (openIdArr []string) {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go alarm_msg.SendAlarmMsg(fmt.Sprint("获取某一个公司下所有用户的手机号 失败 comppanyId", comppanyId, "err", err.Error()), 2)
+		}
+	}()
+	listUser, e := models.GetWxUserListCompanyId(comppanyId)
+	if e != nil {
+		err = errors.New("GetWxUserListCompanyId" + e.Error())
+		return
+	}
+	var mobileArr []string
+	openIdArr = make([]string, 0)
+	for _, v := range listUser {
+		mobileArr = append(mobileArr, v.Mobile)
+	}
+	openIdListJmcj, e := cygx.GetUserRecordListByMobileArr(mobileArr)
+	if e != nil {
+		err = errors.New("GetUserRecordListByMobileArr" + e.Error())
+		return
+	}
+	for _, v := range openIdListJmcj {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+	return
+}

+ 8 - 8
services/wechat_send_category_template_msg.go

@@ -308,14 +308,14 @@ func SendWxCategoryMsgWithCygxActivityUpdateLimitPeople(activityId int) (err err
 	//已经推送过的不做二次推送
 	//listSendOpendId, err := models.GeUserTemplateRecordListBysendType(utils.TEMPLATE_MSG_CYGX_ACTIVITY_LIMIT_PEOPLE, strconv.Itoa(activityId))
 	//已经推送过的不做二次推送
-	listSendOpendId, err := cygx.GeCygxActivityUserTemplateRecordListByActivityId(activityId, utils.TEMPLATE_MSG_CYGX_ACTIVITY_LIMIT_PEOPLE)
-	if err != nil && err.Error() != utils.ErrNoRow() {
-		return err
-	}
-	mapSendOpenid := make(map[string]int)
-	for _, v := range listSendOpendId {
-		mapSendOpenid[v.OpenId] = v.UserId
-	}
+	//listSendOpendId, err := cygx.GeCygxActivityUserTemplateRecordListByActivityId(activityId, utils.TEMPLATE_MSG_CYGX_ACTIVITY_LIMIT_PEOPLE)
+	//if err != nil && err.Error() != utils.ErrNoRow() {
+	//	return err
+	//}
+	//mapSendOpenid := make(map[string]int)
+	//for _, v := range listSendOpendId {
+	//	mapSendOpenid[v.OpenId] = v.UserId
+	//}
 
 	var condition string
 	var pars []interface{}

+ 28 - 353
services/wechat_send_msg.go

@@ -10,7 +10,6 @@ import (
 	"hongze/hz_crm_api/models/system"
 	"hongze/hz_crm_api/services/alarm_msg"
 	"hongze/hz_crm_api/utils"
-	"html"
 	"io/ioutil"
 	"net/http"
 	"strconv"
@@ -418,250 +417,6 @@ func SendCompanyReceiveWxTemplateMsg(companyName, productName, sellerName, other
 	return
 }
 
-// 活动取消消息通知
-func SendWxMsgWithCygxActivity(activityId int) (err error) {
-	var msg string
-	defer func() {
-		if err != nil {
-			go alarm_msg.SendAlarmMsg("发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
-			utils.FileLogCygx.Info(fmt.Sprintf("发送模版消息失败,Err:%s,%s", err.Error(), msg))
-		}
-		if msg != "" {
-			utils.FileLogCygx.Info("发送模版消息失败,msg:%s", msg)
-		}
-	}()
-	activityInfo, err := cygx.GetAddActivityInfoById(activityId)
-	if err != nil {
-		msg = "GetReportInfo Err:" + err.Error()
-		return
-	}
-	var openIdList []*cygx.OpenIdList
-	openIdList, err = cygx.GetActivityOpenIdList(activityId)
-	if err != nil {
-		msg = "get GetActivityOpenIdList err:" + err.Error()
-		return
-	}
-	mapOpenid := make(map[int]string)
-	for _, v := range openIdList {
-		mapOpenid[v.UserId] = v.OpenId
-	}
-	//添加预约纪要的openid
-	openIdListAppointment, err := cygx.GetActivityAppointmentOpenIdList(activityId)
-	if err != nil {
-		msg = "GetActivityAppointmentOpenIdList err:" + err.Error()
-		return
-	}
-	if len(openIdListAppointment) > 0 {
-		for _, v := range openIdListAppointment {
-			if _, ok := mapOpenid[v.UserId]; !ok {
-				item := new(cygx.OpenIdList)
-				item.UserId = v.UserId
-				item.OpenId = v.OpenId
-				openIdList = append(openIdList, item)
-			}
-			mapOpenid[v.UserId] = v.OpenId
-
-		}
-	}
-
-	//添加带问的openid
-	openIdListActivityHelpAsk, err := cygx.GetActivityHelpAskOpenIdList(activityId)
-	if err != nil {
-		msg = "openIdListActivityHelpAsk err:" + err.Error()
-		return
-	}
-	if len(openIdListActivityHelpAsk) > 0 {
-		for _, v := range openIdListActivityHelpAsk {
-			if _, ok := mapOpenid[v.UserId]; !ok {
-				item := new(cygx.OpenIdList)
-				item.UserId = v.UserId
-				item.OpenId = v.OpenId
-				openIdList = append(openIdList, item)
-			}
-			mapOpenid[v.UserId] = v.OpenId
-		}
-	}
-	activityInfo.ActivityTypeName = strings.Replace(activityInfo.ActivityTypeName, "(C类)", "", -1)
-	if len(openIdList) == 0 {
-		return err
-	}
-	var keyword1, keyword2, keyword3, keyword4, redirectUrl string
-	keyword1 = activityInfo.ActivityName
-	keyword2 = "活动已取消"
-	openIdArr := make([]string, len(openIdList))
-	for i, v := range openIdList {
-		openIdArr[i] = v.OpenId
-	}
-	redirectUrl = utils.WX_MSG_PATH_ACTIVITY_DETAIL + strconv.Itoa(activityId) + "&IsSendWx=1"
-	sendInfo := new(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_CACLE
-	sendInfo.OpenIdArr = openIdArr
-	err = SendTemplateMsg(sendInfo)
-	return
-}
-
-// 活动更改时间消息通知
-func SendWxMsgWithCygxActivityUpdateTime(activityId int, oldStr, newStr, strType string) (err error) {
-	var msg string
-	defer func() {
-		if err != nil {
-			go alarm_msg.SendAlarmMsg("发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
-			utils.FileLogCygx.Info(fmt.Sprintf("发送模版消息失败,Err:%s,%s", err.Error(), msg))
-		}
-		if msg != "" {
-			utils.FileLogCygx.Info("发送模版消息失败,msg:%s", msg)
-		}
-	}()
-
-	activityInfo, err := cygx.GetAddActivityInfoById(activityId)
-	if err != nil {
-		msg = "GetReportInfo Err:" + err.Error()
-		return
-	}
-	if activityInfo == nil {
-		utils.FileLogCygx.Info("活动信息不存在")
-		return
-	}
-
-	//var accessToken string
-	//if utils.RunMode == "release" {
-	//	accessToken, err = models.GetWxAccessTokenByXzs()
-	//	if err != nil {
-	//		msg = "GetWxAccessToken Err:" + err.Error()
-	//		return
-	//	}
-	//	if accessToken == "" {
-	//		msg = "accessToken is empty"
-	//		return
-	//	}
-	//} else {
-	//	accessToken, err = models.GetWxAccessToken()
-	//	if err != nil {
-	//		msg = "GetWxAccessToken Err:" + err.Error()
-	//		return
-	//	}
-	//	if accessToken == "" {
-	//		msg = "accessToken is empty"
-	//		return
-	//	}
-	//}
-	var openIdList []*cygx.OpenIdList
-
-	openIdList, err = cygx.GetActivityOpenIdList(activityId)
-	if err != nil {
-		msg = "get openIdList err:" + err.Error()
-		return
-	}
-
-	mapOpenid := make(map[int]string)
-	for _, v := range openIdList {
-		mapOpenid[v.UserId] = v.OpenId
-	}
-	//添加预约纪要的openid
-	openIdListAppointment, err := cygx.GetActivityAppointmentOpenIdList(activityId)
-	if err != nil {
-		msg = "GetActivityAppointmentOpenIdList err:" + err.Error()
-		return
-	}
-	if len(openIdListAppointment) > 0 {
-		for _, v := range openIdListAppointment {
-			if _, ok := mapOpenid[v.UserId]; !ok {
-				item := new(cygx.OpenIdList)
-				item.UserId = v.UserId
-				item.OpenId = v.OpenId
-				openIdList = append(openIdList, item)
-			}
-			mapOpenid[v.UserId] = v.OpenId
-
-		}
-	}
-
-	//添加带问的openid
-	openIdListActivityHelpAsk, err := cygx.GetActivityHelpAskOpenIdList(activityId)
-	if err != nil {
-		msg = "openIdListActivityHelpAsk err:" + err.Error()
-		return
-	}
-	if len(openIdListActivityHelpAsk) > 0 {
-		for _, v := range openIdListActivityHelpAsk {
-			if _, ok := mapOpenid[v.UserId]; !ok {
-				item := new(cygx.OpenIdList)
-				item.UserId = v.UserId
-				item.OpenId = v.OpenId
-				openIdList = append(openIdList, item)
-			}
-			mapOpenid[v.UserId] = v.OpenId
-		}
-	}
-
-	if len(openIdList) == 0 {
-		return err
-	}
-	//sendMap := make(map[string]interface{})
-	//sendData := make(map[string]interface{})
-	var first string
-	var keyword1, keyword2, keyword3, keyword4, redirectUrl string
-
-	activityInfo.ActivityTypeName = strings.Replace(activityInfo.ActivityTypeName, "(C类)", "", -1)
-	if strType == "timeType" {
-		//first = "您有一场【" + activityInfo.ActivityTypeName + "】发生了时间变更"
-		keyword2 = "时间变更为:【 " + newStr + "】"
-	} else if strType == "expertType" {
-		//first = "您有一场【" + activityInfo.ActivityTypeName + "】发生了专家变更"
-		keyword2 = "专家变更为:【" + newStr + "】"
-	} else if strType == "addressType" {
-		//first = "您有一场【" + activityInfo.ActivityTypeName + "】发生了地址变更"
-		keyword2 = "地点变更为:【" + newStr + "】"
-	} else if strType == "participationCode" {
-		//first = "您有一场【" + activityInfo.ActivityTypeName + "】公布了拨入密码"
-		keyword2 = "拨入密码为: " + newStr
-	} else if strType == "Theme" {
-		//first = "您有一场【" + activityInfo.ActivityTypeName + "】更新了活动主题"
-		newStr = strings.Replace(newStr, "</p><p>", "\n", -1)
-		newStr = html.EscapeString(newStr)
-		newStrHtml, _ := cygx.GetReportContentTextSub(newStr)
-		newStr = newStrHtml
-		keyword2 = "主题变更为: " + newStr
-	}
-
-	keyword1 = activityInfo.ActivityName
-	openIdArr := make([]string, len(openIdList))
-	for i, v := range openIdList {
-		openIdArr[i] = v.OpenId
-	}
-
-	redirectUrl = utils.WX_MSG_PATH_ACTIVITY_DETAIL + strconv.Itoa(activityId) + "&IsSendWx=1"
-	sendInfo := new(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
-	e := SendTemplateMsg(sendInfo)
-	if e != nil {
-		err = errors.New("推送模板消息失败" + e.Error())
-		return
-	}
-	return
-}
-
 func SendArticleWxTemplateMsg(nickName, aticleTiele, publishDate, abstract, industryName, msgType string, articleId, departmentId, industrialManagementId int, isResearch bool) (err error) {
 	var msg string
 	defer func() {
@@ -675,31 +430,7 @@ func SendArticleWxTemplateMsg(nickName, aticleTiele, publishDate, abstract, indu
 			utils.FileLog.Info("发送模版消息失败,msg:%s", msg)
 		}
 	}()
-	//var accessToken string
-	//if utils.RunMode == "release" {
-	//	accessToken, err = models.GetWxAccessTokenByXzs()
-	//	if err != nil {
-	//		msg = "GetWxAccessToken Err:" + err.Error()
-	//		return
-	//	}
-	//	if accessToken == "" {
-	//		msg = "accessToken is empty"
-	//		return
-	//	}
-	//} else {
-	//	accessToken, err = models.GetWxAccessToken()
-	//	if err != nil {
-	//		msg = "GetWxAccessToken Err:" + err.Error()
-	//		return
-	//	}
-	//	if accessToken == "" {
-	//		msg = "accessToken is empty"
-	//		return
-	//	}
-	//}
 	var openIdList []*cygx.OpenIdList
-	//utils.FileLog.Info("mobile:%s", otherSellerMobile)
-	//openIdList, err = models.GetOpenIdListByMobile(otherSellerMobile)
 	var resource string
 
 	if msgType == "Department" {
@@ -1260,87 +991,6 @@ func CheckTwoWeekOrMonthReport(classifyId int, classifyName string) (ok bool) {
 	return
 }
 
-// 专项调研活动模板消息通知
-func SendWxMsgWithCygxActivitySpecial(activityId int) (err error) {
-	var msg string
-	defer func() {
-		if err != nil {
-			go alarm_msg.SendAlarmMsg("发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
-			//go utils.SendEmail("发送模版消息失败"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
-			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
-	}
-
-	var openIdList []*cygx.OpenIdList
-	openIdList, err = cygx.GetActivitySpecialOpenIdList()
-	if err != nil {
-		msg = "get openIdList err:" + err.Error()
-		return
-	}
-	if len(openIdList) == 0 {
-		return err
-	}
-	//sendMap := make(map[string]interface{})
-	//sendData := make(map[string]interface{})
-	//var first string
-	//var keyword1 string
-	//var keyword2 string
-	//first = "专项调研【" + activityInfo.ResearchTheme + "】已开启预报名"
-	//
-	//redirectUrl := ""
-	//sendData["first"] = map[string]interface{}{"value": first, "color": "#173177"}
-	//sendData["keyword1"] = map[string]interface{}{"value": keyword1, "color": "#173177"}
-	//sendData["keyword2"] = map[string]interface{}{"value": keyword2, "color": "#173177"}
-	//sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
-	//if utils.RunMode == "release" {
-	//	sendMap["template_id"] = utils.WxMsgTemplateIdActivityChangeApplyXzs
-	//} else {
-	//	sendMap["template_id"] = utils.WxMsgTemplateIdActivityChangeApply
-	//}
-	//sendMap["url"] = redirectUrl
-	//sendMap["data"] = sendData
-	//sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxCygxAppId, "pagepath": "activityPages/specialDetail/specialDetail?id=" + strconv.Itoa(activityId)}
-	//sendTemplateMsg(sendUrl, sendMap, openIdList, strconv.Itoa(activityId), utils.TEMPLATE_MSG_CYGX_ACTIVITY_UPDATE)
-
-	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 = "已开启预报名"
-	//if activityInfo.SpecialType == 1 {
-	//	keyword2 += "线上 预期时间:" + activityInfo.ActivityTimeText
-	//} else {
-	//	keyword2 += "线下 " + "(" + activityInfo.City + ") 预期时间:" + activityInfo.ActivityTimeText
-	//}
-	redirectUrl = utils.WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL + strconv.Itoa(activityId)
-	sendInfo := new(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 = SendTemplateMsg(sendInfo)
-	if err != nil {
-		err = errors.New("SendTemplateMsg, Err: " + err.Error())
-		return
-	}
-	return
-}
-
 // SendYbQuestionDistributeWxMsg 推送研报小程序模板消息-问答社区分配
 func SendYbQuestionDistributeWxMsg(questionId, adminId int, openid, questionTitle, remark string) (err error) {
 	var errMsg string
@@ -1996,9 +1646,34 @@ func SendWxMsgWithCygxMorningMeeting(meetingId, industryId int, industryName str
 	}
 	meetingTime := reviewInfo.MeetingTime.Format(utils.FormatDate)
 	openIdList, err := models.GetCygxUserIndustryFllowOpneid(industryId)
-	openIdArr := make([]string, len(openIdList))
-	for i, v := range openIdList {
-		openIdArr[i] = v.OpenId
+	if err != nil {
+		err = errors.New("GetCygxUserIndustryFllowOpneid, Err: " + err.Error())
+		return
+	}
+
+	listUser, e := models.GetWxUserListCompanyId(utils.JMCJ_COMPANY_ID)
+	if e != nil {
+		err = errors.New("GetWxUserListCompanyId" + e.Error())
+		return
+	}
+	var mobileArr []string
+	for _, v := range listUser {
+		mobileArr = append(mobileArr, v.Mobile)
+	}
+	openIdListJmcj, e := cygx.GetUserRecordListByMobileArr(mobileArr)
+	if e != nil {
+		err = errors.New("GetUserRecordListByMobileArr" + e.Error())
+		return
+	}
+	mapOpneiIdJmcj := make(map[string]bool)
+	for _, v := range openIdListJmcj {
+		mapOpneiIdJmcj[v.OpenId] = true
+	}
+	var openIdArr []string
+	for _, v := range openIdList {
+		if !mapOpneiIdJmcj[v.OpenId] {
+			openIdArr = append(openIdArr, v.OpenId)
+		}
 	}
 
 	//保留回撤,去掉空行

+ 1 - 0
utils/constants.go

@@ -476,6 +476,7 @@ const (
 
 const (
 	HZ_COMPANY_ID        = 16
+	JMCJ_COMPANY_ID      = 19642 // 深圳进门财经科技股份有限公司ID
 	DEFAULT_COUNTRY_CODE = "86"
 )