xingzai 9 mesiacov pred
rodič
commit
c1ccc5ed02

+ 8 - 2
controllers/yanxuan_special.go

@@ -453,11 +453,15 @@ func (this *YanxuanSpecialController) Save() {
 		go services.SendWxMsgSpecialAuthor(req.Id, 1)                  //研选专栏审核完成时,给提交人发送模板消息
 		go services.UdpateYanxuanSpecialauthorArticleNum(authorUserId) //  更新作者发布文章的数量
 		go services.MakeYanxuanSpecialMomentsImg(specialId)            //  生成研选专栏分享到朋友圈的图片
+
+		go services.SendWxCategoryMsgSpecialAuthor(req.Id, 1) //研选专栏审核完成时,给提交人发送类目模板消息
+		go services.SendWxCategoryMsgSpecialFollow(req.Id)    // 研选专栏有新内容审核通过时,给关注此专栏的客户发送模板消息
 	} else {
 		if req.DoType == 2 {
 			go services.SendReviewTemplateMsgAdmin(specialId)
-			go services.UpdateYanxuanSpecialResourceData(specialId) //  写入首页最新  cygx_resource_data 表
-			go services.EsAddYanxuanSpecial(specialId)              //  写入es 综合搜索
+			go services.SendReviewCategoryTemplateMsgAdmin(specialId) //买方研选类目消息
+			go services.UpdateYanxuanSpecialResourceData(specialId)   //  写入首页最新  cygx_resource_data 表
+			go services.EsAddYanxuanSpecial(specialId)                //  写入es 综合搜索
 		}
 	}
 
@@ -558,8 +562,10 @@ func (this *YanxuanSpecialController) Enable() {
 	}
 	if req.Status == 1 {
 		go services.SendWxMsgSpecialFollow(req.Id)
+		go services.SendWxCategoryMsgSpecialFollow(req.Id) // 研选专栏有新内容审核通过时,给关注此专栏的客户发送模板消息
 	}
 	go services.SendWxMsgSpecialAuthor(req.Id, req.Status)
+	go services.SendWxCategoryMsgSpecialAuthor(req.Id, req.Status)
 	go services.UpdateYanxuanSpecialResourceData(req.Id)                                  //  写入首页最新  cygx_resource_data 表
 	go services.EsAddYanxuanSpecial(req.Id)                                               //  写入es 综合搜索
 	go services.AddAddCygxYanxuanSpecialApprovalLog(user, req.Id, req.Status, req.Reason) //  添加审核记录日志

+ 28 - 2
models/user_record.go

@@ -3,6 +3,7 @@ package models
 import (
 	"github.com/beego/beego/v2/client/orm"
 	"hongze/hongze_cygx/utils"
+	"strings"
 	"time"
 )
 
@@ -198,7 +199,6 @@ func GetMfyxUserRecordByMobile(platform int, bindAccount string) (item *OpenIdLi
 	return
 }
 
-
 // 根据手机号获取mfyx用户的openid
 func GetMfyxUserRecordListByMobileArr(mobiles []string) (items []*OpenIdList, err error) {
 	o := orm.NewOrm()
@@ -219,4 +219,30 @@ func GetMfyxUserRecordListByMobileArr(mobiles []string) (items []*OpenIdList, er
 			1 = 1  ` + condition
 	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
-}
+}
+
+func GetMfyxWxOpenIdByMobileList(mobile string) (items []*OpenIdList, err error) {
+	sliceMobile := strings.Split(mobile, ",")
+	var mobiles []string
+	for _, v := range sliceMobile {
+		mobiles = append(mobiles, v)
+	}
+	o := orm.NewOrm()
+	lenarr := len(mobiles)
+	if lenarr == 0 {
+		return
+	}
+	var condition string
+	var pars []interface{}
+	condition = ` AND u.cygx_bind_account IN (` + utils.GetOrmInReplace(lenarr) + `)`
+	pars = append(pars, mobiles)
+	sql := `SELECT
+			u.open_id,
+			u.cygx_user_id AS user_id 
+		FROM
+			cygx_mfyx_gzh_user_record AS u 
+		WHERE
+			1 = 1  ` + condition
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}

+ 206 - 6
services/wx_category_template_msg.go

@@ -68,7 +68,6 @@ func SendCategoryTemplateMsg(sendInfo *SendWxCategoryTemplate) (err error) {
 	return
 }
 
-
 // 帮我带问的问题,会前1小时发送
 func SendMfyxEmailFileForAskMsgResearch(cont context.Context) (err error) {
 	var msg string
@@ -127,7 +126,7 @@ func SendMfyxEmailFileForAskMsgResearch(cont context.Context) (err error) {
 			//给所属销售推送消息
 			if sellerItem != nil && user != nil {
 				openIpItem, _ := models.GetMfyxUserRecordByMobile(12, sellerItem.Mobile)
-				openIdList := make([]*models.OpenIdList,0)
+				openIdList := make([]*models.OpenIdList, 0)
 				openIdList = append(openIdList, openIpItem)
 				SendWxCategoryMsgWithActivityAsk(user.CompanyName, user.RealName, sellerItem.RealName, time.Now().Format(utils.FormatDateTimeMinute2), v2.Content, openIdList, v.ActivityId)
 			}
@@ -251,7 +250,6 @@ func SendMfyxActivityBeginMsg(cont context.Context) (err error) {
 	return
 }
 
-
 // 推送会议开始消息提醒15分钟前
 func SendMfyxActivityBeginMsgMeeting(cont context.Context) (err error) {
 	//func SendActivityBeginMsgMeeting() (err error) {
@@ -342,13 +340,11 @@ func SendMfyxActivityBeginMsgMeeting(cont context.Context) (err error) {
 	return
 }
 
-
-
 // 线下调研活动扫码签到给对应销售发类目模班消息
 func SendActivitieSignCategoryTemplateMsg(user *models.WxUserItem, activityDetail *models.ActivityDetail) (err error) {
 	defer func() {
 		if err != nil {
-			go utils.SendAlarmMsg(fmt.Sprint("线下调研活动扫码签到给对应销售发模班消息推送失败Err:", err.Error(), "活动ID:", activityDetail.ActivityId, "手机号:", user.Mobile), 2)
+			go utils.SendAlarmMsg(fmt.Sprint("线下调研活动扫码签到给对应销售发模班消息推送失败 SendActivitieSignCategoryTemplateMsg Err:", err.Error(), "活动ID:", activityDetail.ActivityId, "手机号:", user.Mobile), 2)
 		}
 	}()
 	var mobiles []string
@@ -401,3 +397,207 @@ func SendActivitieSignCategoryTemplateMsg(user *models.WxUserItem, activityDetai
 	}
 	return
 }
+
+// 研选专栏审核完成时,给提交人发送类目模板消息
+func SendWxCategoryMsgSpecialAuthor(specialId, status int) (err error) {
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg(fmt.Sprint("研选专栏审核完成时,给提交人发送模板消息 SendWxCategoryMsgSpecialAuthor ", specialId, ", specialId", err.Error()), 2)
+		}
+	}()
+	var keyword1 string
+	var keyword2 string
+	var keyword3 string
+	var keyword4 string
+	var redirectUrl string
+
+	specialItem, e := models.GetYanxuanSpecialItemById(specialId)
+	if e != nil {
+		err = errors.New("GetYanxuanSpecialFollowUserById, Err: " + e.Error())
+		return
+	}
+	user, e := models.GetWxUserItemByUserId(specialItem.UserId)
+	if e != nil {
+		err = errors.New("GetWxUserItemByUserId, Err: " + e.Error())
+		return err
+	}
+
+	openIdList, err := models.GetMfyxWxOpenIdByMobileList(user.Mobile)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return err
+	}
+
+	if len(openIdList) == 0 {
+		return
+	}
+
+	keyword1 = utils.TruncateActivityNameString(specialItem.Title)
+	keyword2 = specialItem.NickName
+	if status == 1 {
+		keyword3 = "文章已通过审核,点击查看详情"
+		redirectUrl = utils.WX_MSG_PATH_YX_SPECIAL_DETAIL + strconv.Itoa(specialId)
+	} else {
+		keyword3 = "文章未通过审核,点击查看驳回原因"
+		redirectUrl = utils.WX_MSG_PATH_YX_SPECIAL_CENTER
+	}
+	keyword4 = time.Now().Format(utils.FormatDateTimeMinute2)
+	openIdArr := make([]string, 0)
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+
+	keywords := []string{keyword1, keyword2, keyword3, keyword4}
+
+	sendInfo := new(SendWxCategoryTemplate)
+	sendInfo.Keywords = keywords
+	sendInfo.TemplateId = utils.WxMsgCategoryTemplateIdCompanyApprovalMessageRai
+	sendInfo.RedirectTarget = 4
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
+	sendInfo.OpenIdArr = openIdArr
+	sendInfo.RedirectUrl = redirectUrl
+	err = SendCategoryTemplateMsg(sendInfo)
+	if err != nil {
+		return
+	}
+	return
+}
+
+// 研选专栏有新内容审核通过时,给关注此专栏的客户发送模板消息
+func SendWxCategoryMsgSpecialFollow(specialId int) (err error) {
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg(fmt.Sprint("研选专栏有新内容审核通过时,给关注此专栏的客户发送类目模板消息失败", specialId, ", specialId", err.Error()), 2)
+		}
+	}()
+	var keyword1 string
+	var keyword2 string
+	var keyword3 string
+	var keyword4 string
+
+	followers, e := models.GetYanxuanSpecialFollowUserById(specialId)
+	if e != nil {
+		err = errors.New("GetYanxuanSpecialFollowUserById, Err: " + e.Error())
+		return
+	}
+	if len(followers) == 0 {
+		return
+	}
+	specialItem, e := models.GetYanxuanSpecialItemById(specialId)
+	if e != nil {
+		err = errors.New("GetYanxuanSpecialFollowUserById, Err: " + e.Error())
+		return
+	}
+	var allInUserId string
+	for _, v := range followers {
+		allInUserId += strconv.Itoa(v) + ","
+	}
+
+	allInUserId = strings.TrimRight(allInUserId, ",")
+
+	userList, err := models.GetWxUserListByUserIds(allInUserId)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return err
+	}
+
+	var mobiles []string
+	for _, v := range userList {
+		if v.Mobile != "" {
+			mobiles = append(mobiles, v.Mobile)
+		}
+	}
+
+	openIdList, e := models.GetMfyxUserRecordListByMobileArr(mobiles)
+	if e != nil {
+		err = errors.New("GetSellerByAdminId, Err: " + e.Error())
+		return
+	}
+	if len(openIdList) == 0 {
+		return
+	}
+
+	keyword1 = specialItem.SpecialName
+	keyword2 = "发布了新报告"
+	keyword3 = specialItem.Title
+	keyword4 = time.Now().Format(utils.FormatDateTimeMinute2)
+	openIdArr := make([]string, 0)
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+	redirectUrl := ""
+	redirectUrl = utils.WX_MSG_PATH_YX_SPECIAL_DETAIL + strconv.Itoa(specialId)
+	keywords := []string{keyword1, keyword2, keyword3, keyword4}
+
+	sendInfo := new(SendWxCategoryTemplate)
+	sendInfo.Keywords = keywords
+	sendInfo.TemplateId = utils.WxMsgCategoryTemplateIdActivityPublishApply
+	sendInfo.RedirectTarget = 4
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
+	sendInfo.OpenIdArr = openIdArr
+	sendInfo.RedirectUrl = redirectUrl
+	err = SendCategoryTemplateMsg(sendInfo)
+	if err != nil {
+		return
+	}
+	return
+}
+
+// SendReviewCategoryTemplateMsgAdmin 提交审核时给王芳、葛琳和沈涛发研选类目模板消息
+func SendReviewCategoryTemplateMsgAdmin(specialId int) (err error) {
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg(fmt.Sprint("处理试用申请给王芳,汪洋发消息失败, specialId:", specialId, "ErrMsg", err.Error()), 2)
+		}
+	}()
+	//王芳、葛琳和沈涛
+	mobile := utils.WxMsgTemplateIdAskMsgMobilePublic + utils.RAI_MOBILE_GE_LIN_WEN
+	openIdList, e := models.GetMfyxWxOpenIdByMobileList(mobile)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetUserRecordListByMobile, Err: " + e.Error())
+		return err
+	}
+	if len(openIdList) == 0 {
+		return
+	}
+
+	specialItem, e := models.GetYanxuanSpecialItemById(specialId)
+	if e != nil {
+		err = errors.New("GetYanxuanSpecialFollowUserById, Err: " + e.Error())
+		return
+	}
+	user, e := models.GetWxUserItemByUserId(specialItem.UserId)
+	if e != nil {
+		err = errors.New("GetWxUserItemByUserId, Err: " + e.Error())
+		return err
+	}
+	var keyword1 string
+	var keyword2 string
+	var keyword3 string
+	var keyword4 string
+	var keyword5 string
+	keyword1 = specialItem.NickName
+	keyword2 = specialItem.RealName + "-" + user.CompanyName
+	keyword2 = utils.TruncateActivityNameString(keyword2)
+	keyword3 = specialItem.SpecialName
+	keyword4 = time.Now().Format(utils.FormatDateTimeMinute2)
+	keyword5 = "研选专栏提交了内容待审核"
+	openIdArr := make([]string, 0)
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+	redirectUrl := utils.WX_MSG_PATH_YX_SPECIAL_ENABLE_DETAIL + strconv.Itoa(specialId)
+
+	keywords := []string{keyword1, keyword2, keyword3, keyword4, keyword5}
+
+	sendInfo := new(SendWxCategoryTemplate)
+	sendInfo.Keywords = keywords
+	sendInfo.TemplateId = utils.WxCategoryMsgTemplateIdApplyXzs
+	sendInfo.RedirectTarget = 4
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
+	sendInfo.OpenIdArr = openIdArr
+	sendInfo.RedirectUrl = redirectUrl
+	err = SendCategoryTemplateMsg(sendInfo)
+	if err != nil {
+		return
+	}
+	return
+}

+ 14 - 1
utils/config.go

@@ -54,6 +54,12 @@ var (
 	WxMsgCategoryTemplateIdCompanyApprovalMessageRai string //权益销售签约成功通知买方研选类目模版消息通知-类目模板ID
 	WxMsgCategoryTemplateIdActivityPublishApply      string //买方研选关注的产业下,单个活动/研选报告发布通知-类目模板ID
 	WxMsgCategoryTemplateIdArticleUserRemind         string //用户阅读报告通知-类目模板ID
+
+	//权益内容组手机号
+	RAI_MOBILE_GAO_YI_WEN    string // 权益高亦文手机号
+	RAI_MOBILE_DONG_HENG     string // 权益董衡手机号
+	RAI_MOBILE_WU_ANG_DI_WEN string // 权益吴昂迪手机号
+	RAI_MOBILE_GE_LIN_WEN    string // 权益葛琳手机号
 )
 
 // 微信公众号配置信息
@@ -155,7 +161,8 @@ func init() {
 	YanxSummaryPermissionId = 1001     //研选纪要分类ID
 	YanxViewpointPermissionId = 1002   //研选观点分类ID
 	WxMsgTemplateIdAskMsgMobileAll = "15557270714,18767183922,18621268829"
-	WxMsgTemplateIdAskMsgMobilePublic = "15557270714,18767183922,18621268829"
+	WxMsgTemplateIdAskMsgMobilePublic = "15557270714,18767183922,18621268829" // 王芳沈涛张传星
+
 	HtgjDefaultSaleName = "王芳"
 	HtgjSalt = "HTGJ&HZ"
 	HtgjName = "海通国际"
@@ -274,6 +281,12 @@ func init() {
 		WxMsgCategoryTemplateIdCompanyApprovalMessageRai = "t1CcxcOkoZkWZrDRs6zYUlceBGYMV3mhkBYUa8a6Mx0" //权益销售签约成功通知买方研选类目模版消息通知-类目模板ID
 		WxMsgCategoryTemplateIdActivityPublishApply = "IBMqiE61lVgUfFM4rsH0XCH57R_G3PbWvRbnzg9JHPI"
 		WxMsgCategoryTemplateIdArticleUserRemind = "4fwzgJ-YQndzH5OJWLkd0grvftgqhvP285t_oXUboi7DaaIhMI"
+
+		//权益内容组手机号测试环境没什么用,配合测试切换他们的手机号
+		RAI_MOBILE_GAO_YI_WEN = "17706316791"    //权益高亦文手机号
+		RAI_MOBILE_DONG_HENG = "15557270714"     // 权益董衡手机号
+		RAI_MOBILE_WU_ANG_DI_WEN = "15557270714" // 权益吴昂迪手机号
+		RAI_MOBILE_GE_LIN_WEN = "15557270714"    // 权益葛琳手机号
 	}
 
 	//易董开放api配置