zwxi 11 月之前
父节点
当前提交
e245a15835
共有 4 个文件被更改,包括 186 次插入11 次删除
  1. 3 0
      controllers/cygx/yanxuan_special.go
  2. 23 0
      models/user_record.go
  3. 10 0
      models/wx_user.go
  4. 150 11
      services/wechat_send_category_template_msg.go

+ 3 - 0
controllers/cygx/yanxuan_special.go

@@ -9,6 +9,7 @@ import (
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/company"
 	"hongze/hz_crm_api/models/cygx"
+	"hongze/hz_crm_api/services"
 	cygxService "hongze/hz_crm_api/services/cygx"
 	"hongze/hz_crm_api/services/elastic"
 	"hongze/hz_crm_api/utils"
@@ -516,8 +517,10 @@ func (this *YanxuanSpecialController) Enable() {
 	}
 	if req.Status == 1 {
 		go cygxService.SendWxMsgSpecialFollow(req.Id)
+		go services.SendWxCategoryMsgSpecialFollow(req.Id)
 	}
 	go cygxService.SendWxMsgSpecialAuthor(req.Id, req.Status) // 研选专栏审核完成时,给提交人发送模板消息
+	go services.SendWxCategoryMsgSpecialAuthor(req.Id, req.Status) // 研选专栏审核完成时,给提交人发送模板消息
 	go cygxService.UpdateYanxuanSpecialResourceData(req.Id)   //  写入首页最新  cygx_resource_data 表
 	go elastic.EsAddYanxuanSpecial(req.Id)                    //  写入es 综合搜索
 	br.Msg = "审批成功"

+ 23 - 0
models/user_record.go

@@ -106,3 +106,26 @@ func GetUserRecordRegisterByUserIdsMyfx(userIds string) (items []*UserRecordRegi
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
+
+// 根据手机号获取用户的openid
+func GeCygxtUserRecordListByMobile(bindAccount string) (items []*OpenIdList, err error) {
+	var sql string
+	o := orm.NewOrmUsingDB("cygx")
+	sql = `SELECT
+			cr.open_id,
+			cr.cygx_user_id as  user_id 
+		FROM
+		  cygx_user_record  as cr 
+		WHERE 1= 1	AND cygx_bind_account IN (` + bindAccount + `)`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+func GetWxOpenIdByMobileList(mobile string) (items []*OpenIdList, err error) {
+	sql := ` SELECT
+				union_id,open_id,
+				cygx_user_id AS user_id
+				FROM cygx_user_record	WHERE	1 = 1	AND cygx_bind_account IN (` + mobile + `)`
+	_, err = orm.NewOrm().Raw(sql).QueryRows(&items)
+	return
+}

+ 10 - 0
models/wx_user.go

@@ -625,3 +625,13 @@ func GetCompanyFollowCount(companyId int) (count int, err error) {
 	err = o.Raw(sql, companyId).QueryRow(&count)
 	return
 }
+
+// 根据用户ID获取相关信息
+func GetWxUserItemByUserId(userId int) (item *WxUserItem, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT a.*,b.company_name FROM wx_user AS a
+			LEFT JOIN company AS b on a.company_id=b.company_id
+			WHERE a.user_id=? `
+	err = o.Raw(sql, userId).QueryRow(&item)
+	return
+}

+ 150 - 11
services/wechat_send_category_template_msg.go

@@ -21,7 +21,7 @@ type SendWxCategoryTemplate struct {
 	Keywords       []string `description:"模板消息keyword字段"`
 	TemplateId     string   `description:"模板id"`
 	RedirectUrl    string   `description:"跳转地址"`
-	RedirectTarget int      `description:"小程序跳转目标:1:弘则研报小程序,2:随手办公小程序,3:查研观向"`
+	RedirectTarget int      `description:"小程序跳转目标:1:弘则研报小程序,2:随手办公小程序,3:查研观向,4:买方研选"`
 	Resource       string   `description:"资源唯一标识"`
 	SendType       int      `description:"发送的消息类型:1:报告,2:指标更新提醒,3:审批通知,4:销售领取客户通知,5:活动取消通知,6活动更改时间通知,7:关注的作者发布报告通知,8:发送日报(周报、双周报、月报)模板消息,9:活动预约/报名时间通知"`
 	OpenIdArr      []string `description:"消息接收者openid"`
@@ -183,10 +183,10 @@ func SendWxCategoryMsgWithCygxActivityUpdateTime(activityId int, oldStr, newStr,
 	redirectUrl = utils.WX_MSG_PATH_ACTIVITY_DETAIL + strconv.Itoa(activityId) + "&IsSendWx=1"
 	sendInfo := new(SendWxCategoryTemplate)
 	//sendInfo.WxAppId = utils.WxAppId
-	sendInfo.Keywords  = []string{keyword1, keyword2, keyword3}
+	sendInfo.Keywords = []string{keyword1, keyword2, keyword3}
 	sendInfo.TemplateId = utils.WxMsgCategoryTemplateIdActivityChangeApply
 	sendInfo.RedirectUrl = redirectUrl
-	sendInfo.RedirectTarget = 3
+	sendInfo.RedirectTarget = 4
 	sendInfo.Resource = strconv.Itoa(activityId)
 	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ACTIVITY_UPDATE
 	sendInfo.OpenIdArr = openIdArr
@@ -279,7 +279,7 @@ func SendWxCategoryMsgWithCygxActivity(activityId int) (err error) {
 	sendInfo.Keywords = append(sendInfo.Keywords, keyword1, keyword2, keyword3)
 	sendInfo.TemplateId = utils.WxMsgCategoryTemplateIdActivityCancleApply
 	sendInfo.RedirectUrl = redirectUrl
-	sendInfo.RedirectTarget = 3
+	sendInfo.RedirectTarget = 4
 	sendInfo.Resource = strconv.Itoa(activityId)
 	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ACTIVITY_CACLE
 	sendInfo.OpenIdArr = openIdArr
@@ -365,7 +365,7 @@ func SendWxCategoryMsgWithCygxActivityUpdateLimitPeople(activityId int) (err err
 
 	sendInfo.TemplateId = utils.WxMsgCategoryTemplateIdActivityChangeApply
 	sendInfo.RedirectUrl = redirectUrl
-	sendInfo.RedirectTarget = 3
+	sendInfo.RedirectTarget = 4
 	sendInfo.Resource = strconv.Itoa(activityId)
 	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ACTIVITY_LIMIT_PEOPLE
 	sendInfo.OpenIdArr = openIdArr
@@ -402,7 +402,7 @@ func SendWxCategoryMsgWithCygxActivityAppointmentNew(keyword1, keyword2, keyword
 
 	sendInfo.TemplateId = utils.WxMsgCategoryTemplateIdActivityPublishApply
 	sendInfo.RedirectUrl = utils.WX_MSG_PATH_ARTICLE_DETAIL + strconv.Itoa(articleId)
-	sendInfo.RedirectTarget = 3
+	sendInfo.RedirectTarget = 4
 	sendInfo.Resource = strconv.Itoa(articleId)
 	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE
 	sendInfo.OpenIdArr = openIdArr
@@ -410,7 +410,6 @@ func SendWxCategoryMsgWithCygxActivityAppointmentNew(keyword1, keyword2, keyword
 	return
 }
 
-
 // SendWxCategoryMsgWithRaiSell 权益销售客户申请转正后,消息群发给所有销售
 func SendWxCategoryMsgWithRaiSell(keyword1, keyword2, keyword3, keyword4 string, openIdList []*cygx.OpenIdList) (err error) {
 	var msg string
@@ -431,7 +430,7 @@ func SendWxCategoryMsgWithRaiSell(keyword1, keyword2, keyword3, keyword4 string,
 	sendInfo.Keywords = []string{keyword1, keyword2, keyword3, keyword4}
 	sendInfo.TemplateId = utils.WxMsgCategoryTemplateIdCompanyApprovalMessageRai
 	sendInfo.RedirectUrl = ""
-	sendInfo.RedirectTarget = 3
+	sendInfo.RedirectTarget = 4
 	sendInfo.SendType = utils.TEMPLATE_MSG_APPLY
 	sendInfo.OpenIdArr = openIdArr
 	fmt.Println(sendInfo)
@@ -459,7 +458,7 @@ func SendWxCategoryMsgWithRaiWangYang(keyword1, keyword2, keyword3, keyword4 str
 	sendInfo.Keywords = []string{keyword1, keyword2, keyword3, keyword4}
 	sendInfo.TemplateId = utils.WxMsgCategoryTemplateIdCompanyApprovalMessageRai
 	sendInfo.RedirectUrl = ""
-	sendInfo.RedirectTarget = 3
+	sendInfo.RedirectTarget = 4
 	sendInfo.SendType = utils.TEMPLATE_MSG_APPLY
 	sendInfo.OpenIdArr = openIdArr
 	err = SendCategoryTemplateMsg(sendInfo)
@@ -492,7 +491,7 @@ func SendWxCategoryMsgWithCygxActivitySignUpBySell(items []*cygx.CygxSignupUser)
 			return
 		}
 		//只发研选的
-		if activityInfo.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN{
+		if activityInfo.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN {
 			continue
 		}
 		if activityInfo == nil {
@@ -537,7 +536,7 @@ func SendWxCategoryMsgWithCygxActivitySignUpBySell(items []*cygx.CygxSignupUser)
 		sendInfo.Keywords = []string{keyword1, keyword2, keyword3, keyword4}
 		sendInfo.TemplateId = utils.WxMsgCategoryTemplateIdActivityPublishApply
 		sendInfo.RedirectUrl = utils.WX_MSG_PATH_ACTIVITY_DETAIL + strconv.Itoa(activityId)
-		sendInfo.RedirectTarget = 3
+		sendInfo.RedirectTarget = 4
 		sendInfo.SendType = utils.TEMPLATE_MSG_APPLY
 		sendInfo.OpenIdArr = openIdArr
 		err = SendCategoryTemplateMsg(sendInfo)
@@ -547,4 +546,144 @@ func SendWxCategoryMsgWithCygxActivitySignUpBySell(items []*cygx.CygxSignupUser)
 		}
 	}
 	return
+}
+
+// 研选专栏审核完成时,给提交人发送类目模板消息
+func SendWxCategoryMsgSpecialAuthor(specialId, status int) (err error) {
+	defer func() {
+		if err != nil {
+			go alarm_msg.SendAlarmMsg(fmt.Sprint("研选专栏审核完成时,给提交人发送类目模板消息 specialId:", specialId, err.Error()), 2)
+		}
+	}()
+	var keyword1 string
+	var keyword2 string
+	var keyword3 string
+	var keyword4 string
+	var redirectUrl string
+
+	specialItem, e := cygx.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.GeCygxtUserRecordListByMobile(user.Mobile)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return err
+	}
+
+	keyword1 = 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 alarm_msg.SendAlarmMsg(fmt.Sprint("研选专栏审核完成时,给提交人发送类目模板消息 specialId:", specialId, err.Error()), 2)
+		}
+	}()
+	var keyword1 string
+	var keyword2 string
+	var keyword3 string
+	var keyword4 string
+
+	followers, e := cygx.GetYanxuanSpecialFollowUserById(specialId)
+	if e != nil {
+		err = errors.New("GetYanxuanSpecialFollowUserById, Err: " + e.Error())
+		return
+	}
+	if len(followers) == 0 {
+		return
+	}
+	specialItem, e := cygx.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
+	}
+
+	mobile := ``
+
+	for _, v := range userList {
+		mobile += v.Mobile + ","
+	}
+
+	mobile = strings.TrimRight(mobile, ",")
+
+	openIdList, e := models.GetWxOpenIdByMobileList(mobile)
+	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
 }