浏览代码

微路演收藏留言

xingzai 2 年之前
父节点
当前提交
51222493a9
共有 9 个文件被更改,包括 617 次插入13 次删除
  1. 279 0
      controllers/micro_roadshow.go
  2. 102 0
      controllers/report.go
  3. 39 0
      models/article_collect.go
  4. 1 0
      models/db.go
  5. 11 0
      models/micro_roadshow.go
  6. 27 0
      routers/commentsRouter.go
  7. 141 2
      services/wx_template_msg.go
  8. 12 9
      utils/config.go
  9. 5 2
      utils/constants.go

+ 279 - 0
controllers/micro_roadshow.go

@@ -308,3 +308,282 @@ func (this *MicroRoadShowController) VideoHistoryAdd() {
 	br.Msg = "操作成功"
 	br.Msg = "操作成功"
 	return
 	return
 }
 }
+
+// @Title 微路演新增留言
+// @Description 微路演新增留言接口
+// @Param	request	body models.AddVideoCommnetReq true "type json string"
+// @Success Ret=200 {object} models.AppointmentResp
+// @router /comment/add [post]
+func (this *MicroRoadShowController) CommentAdd() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	user := this.User
+	if user == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,用户信息为空"
+		br.Ret = 408
+		return
+	}
+	uid := user.UserId
+	var req models.AddVideoCommnetReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	sourceType := req.SourceType
+
+	if sourceType == 0 {
+		sourceType = 1
+	}
+	item := models.CygxArticleComment{
+		UserId:      uid,
+		CreateTime:  time.Now(),
+		RealName:    user.RealName,
+		Mobile:      user.Mobile,
+		Email:       user.Email,
+		CompanyId:   user.CompanyId,
+		CompanyName: user.CompanyName,
+		Content:     req.Content,
+		Title:       req.Title,
+	}
+	var resourceId int
+	if sourceType == 1 {
+		activityVoiceInfo, _ := models.GetCygxActivityVoiceByActivityId(req.Id)
+		if activityVoiceInfo == nil {
+			br.Msg = "操作失败"
+			br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(req.Id)
+			return
+		}
+		item.ActivityId = req.Id
+		item.ActivityVoiceId = activityVoiceInfo.ActivityVoiceId
+		resourceId = activityVoiceInfo.ActivityId
+	} else if sourceType == 2 {
+		activityInfo, _ := models.GetCygxActivityVideoByActivityId(req.Id)
+		if activityInfo == nil {
+			br.Msg = "操作失败"
+			br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(req.Id)
+			return
+		}
+		item.VideoId = activityInfo.VideoId
+		item.ActivityId = req.Id
+		resourceId = activityInfo.ActivityId
+	} else if sourceType == 3 {
+		item.VideoId = req.Id
+		microVideo, e := models.GetMicroRoadshowVideoById(req.Id)
+		if e != nil {
+			br.Msg = "操作失败"
+			br.ErrMsg = "微路演视频信息有误, 不存在的VideoId: " + strconv.Itoa(req.Id)
+			return
+		}
+		item.IndustryId = microVideo.IndustryId
+		resourceId = microVideo.IndustryId
+	}
+	_, err = models.AddArticleComment(&item)
+	if err != nil {
+		br.Msg = "提交失败"
+		br.ErrMsg = "提交留言失败,Err:" + err.Error()
+		return
+	}
+	services.SendWxMsgWithMicroRoadshowAsk(req, user, resourceId)
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+	return
+}
+
+// @Title 微路演收藏
+// @Description 微路演收藏
+// @Param	request	body models.MicroRoadshowCollectReq true "type json string"
+// @Success 200 {object} models.FontsCollectResp
+// @router /collect [post]
+func (this *MicroRoadShowController) Collect() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	user := this.User
+	if user == nil {
+		br.Msg = "请重新登录"
+		br.Ret = 408
+		return
+	}
+	uid := user.UserId
+	var req models.MicroRoadshowCollectReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	if req.SourceType == 1 {
+		_, err := models.GetCygxActivityVoiceById(req.Id)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取信息失败,Err:" + err.Error()
+			return
+		}
+		count, err := models.GetVoiceCollectCount(uid, req.Id)
+		if err != nil {
+			br.Msg = "获取数据失败!"
+			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+			return
+		}
+		resp := new(models.ArticleCollectResp)
+		if count <= 0 {
+			item := new(models.CygxArticleCollect)
+			item.ActivityVoiceId = req.Id
+			item.UserId = uid
+			item.CreateTime = time.Now()
+			item.Mobile = user.Mobile
+			item.Email = user.Email
+			item.CompanyId = user.CompanyId
+			item.CompanyName = user.CompanyName
+			item.RealName = user.RealName
+			_, err = models.AddCygxArticleCollect(item)
+			if err != nil {
+				br.Msg = "收藏失败"
+				br.ErrMsg = "收藏失败,Err:" + err.Error()
+				return
+			}
+			br.Msg = "收藏成功"
+			resp.Status = 1
+			// 文章收藏消息发送
+			//go services.ArticleUserRemind(user, detail, 2)
+		} else {
+			err = models.RemoveVoiceCollect(uid, req.Id)
+			if err != nil {
+				br.Msg = "取消收藏失败"
+				br.ErrMsg = "取消收藏失败,Err:" + err.Error()
+				return
+			}
+			br.Msg = "已取消收藏"
+			resp.Status = 2
+		}
+		collectTotal, err := models.GetVoiceCollectUsersCount(req.Id)
+		if err != nil {
+			br.Msg = "获取数据失败"
+			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+			return
+		}
+		resp.CollectCount = collectTotal
+		br.Ret = 200
+		br.Success = true
+		br.Data = resp
+	} else if req.SourceType == 2 {
+		_, err := models.GetCygxActivityVideoById(req.Id)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取信息失败,Err:" + err.Error()
+			return
+		}
+		count, err := models.GetActivityVideoCollectCount(uid, req.Id)
+		if err != nil {
+			br.Msg = "获取数据失败!"
+			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+			return
+		}
+		resp := new(models.ArticleCollectResp)
+		if count <= 0 {
+			item := new(models.CygxArticleCollect)
+			item.ActivityVideoId = req.Id
+			item.UserId = uid
+			item.CreateTime = time.Now()
+			item.Mobile = user.Mobile
+			item.Email = user.Email
+			item.CompanyId = user.CompanyId
+			item.CompanyName = user.CompanyName
+			item.RealName = user.RealName
+			_, err = models.AddCygxArticleCollect(item)
+			if err != nil {
+				br.Msg = "收藏失败"
+				br.ErrMsg = "收藏失败,Err:" + err.Error()
+				return
+			}
+			br.Msg = "收藏成功"
+			resp.Status = 1
+			// 文章收藏消息发送
+			//go services.ArticleUserRemind(user, detail, 2)
+		} else {
+			err = models.RemoveActivityVideoCollect(uid, req.Id)
+			if err != nil {
+				br.Msg = "取消收藏失败"
+				br.ErrMsg = "取消收藏失败,Err:" + err.Error()
+				return
+			}
+			br.Msg = "已取消收藏"
+			resp.Status = 2
+		}
+		collectTotal, err := models.GetActivityVideoCollectUsersCount(req.Id)
+		if err != nil {
+			br.Msg = "获取数据失败"
+			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+			return
+		}
+		resp.CollectCount = collectTotal
+		br.Ret = 200
+		br.Success = true
+		br.Data = resp
+	} else if req.SourceType == 3 {
+		_, err := models.GetMicroRoadshowVideoById(req.Id)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取信息失败,Err:" + err.Error()
+			return
+		}
+		count, err := models.GetVideoCollectCount(uid, req.Id)
+		if err != nil {
+			br.Msg = "获取数据失败!"
+			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+			return
+		}
+		resp := new(models.ArticleCollectResp)
+		if count <= 0 {
+			item := new(models.CygxArticleCollect)
+			item.VideoId = req.Id
+			item.UserId = uid
+			item.CreateTime = time.Now()
+			item.Mobile = user.Mobile
+			item.Email = user.Email
+			item.CompanyId = user.CompanyId
+			item.CompanyName = user.CompanyName
+			item.RealName = user.RealName
+			_, err = models.AddCygxArticleCollect(item)
+			if err != nil {
+				br.Msg = "收藏失败"
+				br.ErrMsg = "收藏失败,Err:" + err.Error()
+				return
+			}
+			br.Msg = "收藏成功"
+			resp.Status = 1
+			// 文章收藏消息发送
+			//go services.ArticleUserRemind(user, detail, 2)
+		} else {
+			err = models.RemoveVideoCollect(uid, req.Id)
+			if err != nil {
+				br.Msg = "取消收藏失败"
+				br.ErrMsg = "取消收藏失败,Err:" + err.Error()
+				return
+			}
+			br.Msg = "已取消收藏"
+			resp.Status = 2
+		}
+		collectTotal, err := models.GetVideoCollectUsersCount(req.Id)
+		if err != nil {
+			br.Msg = "获取数据失败"
+			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+			return
+		}
+		resp.CollectCount = collectTotal
+		br.Ret = 200
+		br.Success = true
+		br.Data = resp
+	}
+}

+ 102 - 0
controllers/report.go

@@ -1304,3 +1304,105 @@ func (this *ReportCommonController) Timeline() {
 	br.Msg = "获取成功"
 	br.Msg = "获取成功"
 	br.Data = resp
 	br.Data = resp
 }
 }
+
+// @Title 文章留言接口
+// @Description 文章留言接口
+// @Param	request	body models.AddCygxActivityHelpAsk true "type json string"
+// @Success 200 {object} models.TacticsListResp
+// @router /commentAdd [post]
+func (this *ReportController) CommentAdd() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	user := this.User
+	if user == nil {
+		br.Msg = "请重新登录"
+		br.Ret = 408
+		return
+	}
+	var req models.AddCygxArticleCommentReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.ArticleId <= 0 {
+		br.Msg = "文章不存在"
+		br.ErrMsg = "文章不存在,文章ID错误"
+		return
+	}
+	if req.Content == "" {
+		br.Msg = "建议内容不可为空"
+		return
+	}
+	content := req.Content
+	//itemToken, err := services.WxGetToken()
+	//if err != nil {
+	//	br.Msg = "GetWxAccessToken Err:" + err.Error()
+	//	return
+	//}
+	//if itemToken.AccessToken == "" {
+	//	br.Msg = "accessToken is empty"
+	//	return
+	//}
+	//commerr, err := weapp.MSGSecCheck(itemToken.AccessToken, content)
+	//if err != nil {
+	//	br.Msg = "内容校验失败!"
+	//	br.ErrMsg = "内容校验失败,Err:" + err.Error()
+	//	return
+	//}
+	//if commerr.ErrCode != 0 {
+	//	br.Msg = "内容违规,请重新提交!"
+	//	br.ErrMsg = "内容违规,Err:" + commerr.ErrMSG
+	//	return
+	//}
+
+	articleId := req.ArticleId
+	articleInfo, errInfo := models.GetArticleDetailById(articleId)
+	if articleInfo == nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "文章ID错误,不存在articleId:" + strconv.Itoa(articleId)
+		return
+	}
+	if errInfo != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "操作失败,Err:" + errInfo.Error()
+		return
+	}
+
+	companyDetail, err := models.GetCompanyDetailById(user.CompanyId)
+	if err != nil {
+		br.Msg = "提交失败!"
+		br.ErrMsg = "获取客户详情失败,Err:" + err.Error()
+		return
+	}
+	if companyDetail == nil {
+		br.Msg = "提交失败!"
+		br.ErrMsg = "客户不存在,uid:" + strconv.Itoa(user.UserId)
+		return
+	}
+	item := models.CygxArticleComment{
+		UserId:      user.UserId,
+		ArticleId:   req.ArticleId,
+		CreateTime:  time.Now(),
+		Mobile:      user.Mobile,
+		Email:       user.Email,
+		CompanyId:   user.CompanyId,
+		CompanyName: companyDetail.CompanyName,
+		Content:     content,
+		Title:       articleInfo.Title,
+	}
+	_, err = models.AddArticleComment(&item)
+	if err != nil {
+		br.Msg = "提交失败"
+		br.ErrMsg = "提交留言失败,Err:" + err.Error()
+		return
+	}
+	services.SendCommentWxTemplateMsg(req, user, articleInfo)
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "提交成功"
+}

+ 39 - 0
models/article_collect.go

@@ -177,3 +177,42 @@ func GetVideoCollectCount(userId, videoId int) (count int, err error) {
 	err = orm.NewOrm().Raw(sql, userId, videoId).QueryRow(&count)
 	err = orm.NewOrm().Raw(sql, userId, videoId).QueryRow(&count)
 	return
 	return
 }
 }
+
+func RemoveVoiceCollect(userId, voiceId int) (err error) {
+	o := orm.NewOrm()
+	sql := `DELETE FROM cygx_article_collect WHERE user_id=? AND activity_voice_id=? `
+	_, err = o.Raw(sql, userId, voiceId).Exec()
+	return
+}
+
+func RemoveActivityVideoCollect(userId, activityVideoId int) (err error) {
+	o := orm.NewOrm()
+	sql := `DELETE FROM cygx_article_collect WHERE user_id=? AND activity_video_id=? `
+	_, err = o.Raw(sql, userId, activityVideoId).Exec()
+	return
+}
+
+func GetActivityVideoCollectUsersCount(videoId int) (count int, err error) {
+	sql := `SELECT COUNT(user_id) AS count FROM cygx_article_collect WHERE activity_video_id=? `
+	err = orm.NewOrm().Raw(sql, videoId).QueryRow(&count)
+	return
+}
+
+func GetVoiceCollectUsersCount(voiceId int) (count int, err error) {
+	sql := `SELECT COUNT(user_id) AS count FROM cygx_article_collect WHERE activity_voice_id=? `
+	err = orm.NewOrm().Raw(sql, voiceId).QueryRow(&count)
+	return
+}
+
+func RemoveVideoCollect(userId, videoId int) (err error) {
+	o := orm.NewOrm()
+	sql := `DELETE FROM cygx_article_collect WHERE user_id=? AND video_id=? `
+	_, err = o.Raw(sql, userId, videoId).Exec()
+	return
+}
+
+func GetVideoCollectUsersCount(videoId int) (count int, err error) {
+	sql := `SELECT COUNT(user_id) AS count FROM cygx_article_collect WHERE video_id=? `
+	err = orm.NewOrm().Raw(sql, videoId).QueryRow(&count)
+	return
+}

+ 1 - 0
models/db.go

@@ -56,6 +56,7 @@ func init() {
 		new(CygxAdvice),
 		new(CygxAdvice),
 		new(CygxPageHistoryRecord),
 		new(CygxPageHistoryRecord),
 		new(CygxArticleDepartmentFollow),
 		new(CygxArticleDepartmentFollow),
+		new(CygxArticleComment),
 	)
 	)
 	// 记录ORM查询日志
 	// 记录ORM查询日志
 	orm.Debug = true
 	orm.Debug = true

+ 11 - 0
models/micro_roadshow.go

@@ -462,3 +462,14 @@ func GetMicroRoadShowVideoPageListIkWord(startSize, pageSize int, condition stri
 	_, err = o.Raw(sql, pars, parsAct, parsAudio, startSize, pageSize).QueryRows(&list)
 	_, err = o.Raw(sql, pars, parsAct, parsAudio, startSize, pageSize).QueryRows(&list)
 	return
 	return
 }
 }
+
+type AddVideoCommnetReq struct {
+	Id         int    `description:"活动或产业ID"`
+	SourceType int    `description:"视频来源: 1-音频; 2-活动视频; 3-微路演视频 (不传默认为1)"`
+	Content    string `description:"内容"`
+	Title      string `description:"标题"`
+}
+type MicroRoadshowCollectReq struct {
+	Id         int `description:"音频或视频ID"`
+	SourceType int `description:"视频来源: 1-音频; 2-活动视频; 3-微路演视频 (不传默认为1)"`
+}

+ 27 - 0
routers/commentsRouter.go

@@ -259,6 +259,24 @@ func init() {
             Filters: nil,
             Filters: nil,
             Params: nil})
             Params: nil})
 
 
+    beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:MicroRoadShowController"] = append(beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:MicroRoadShowController"],
+        beego.ControllerComments{
+            Method: "Collect",
+            Router: `/collect`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:MicroRoadShowController"] = append(beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:MicroRoadShowController"],
+        beego.ControllerComments{
+            Method: "CommentAdd",
+            Router: `/comment/add`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:MicroRoadShowController"] = append(beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:MicroRoadShowController"],
     beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:MicroRoadShowController"] = append(beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:MicroRoadShowController"],
         beego.ControllerComments{
         beego.ControllerComments{
             Method: "Detail",
             Method: "Detail",
@@ -511,6 +529,15 @@ func init() {
             Filters: nil,
             Filters: nil,
             Params: nil})
             Params: nil})
 
 
+    beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:ReportController"] = append(beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:ReportController"],
+        beego.ControllerComments{
+            Method: "CommentAdd",
+            Router: `/commentAdd`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:ReportController"] = append(beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:ReportController"],
     beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:ReportController"] = append(beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:ReportController"],
         beego.ControllerComments{
         beego.ControllerComments{
             Method: "IndustrialFllow",
             Method: "IndustrialFllow",

+ 141 - 2
services/wx_template_msg.go

@@ -3,6 +3,7 @@ package services
 import (
 import (
 	"bytes"
 	"bytes"
 	"encoding/json"
 	"encoding/json"
+	"errors"
 	"fmt"
 	"fmt"
 	"hongze/hongze_clpt/models"
 	"hongze/hongze_clpt/models"
 	"hongze/hongze_clpt/utils"
 	"hongze/hongze_clpt/utils"
@@ -12,7 +13,7 @@ import (
 	"time"
 	"time"
 )
 )
 
 
-//发送报告提问消息提醒
+// 发送报告提问消息提醒
 func SendWxMsgWithAsk(name, askTime, askMsg, title string, openIdList []*models.OpenIdList, articleId int) (err error) {
 func SendWxMsgWithAsk(name, askTime, askMsg, title string, openIdList []*models.OpenIdList, articleId int) (err error) {
 	var msg string
 	var msg string
 	defer func() {
 	defer func() {
@@ -125,7 +126,7 @@ func SendTemplateMsg(sendUrl string, data []byte, resource string, sendType int,
 	return
 	return
 }
 }
 
 
-//活动带问提醒
+// 活动带问提醒
 func SendActivityAskApplyTemplateMsgV2(keyword1, keyword2, keyword3, keyword4, remark string, itemOpenid *models.OpenIdList, itemAct *models.ActivityDetail) (err error) {
 func SendActivityAskApplyTemplateMsgV2(keyword1, keyword2, keyword3, keyword4, remark string, itemOpenid *models.OpenIdList, itemAct *models.ActivityDetail) (err error) {
 	var msg string
 	var msg string
 	defer func() {
 	defer func() {
@@ -181,3 +182,141 @@ func SendActivityAskApplyTemplateMsgV2(keyword1, keyword2, keyword3, keyword4, r
 	fmt.Println("send end")
 	fmt.Println("send end")
 	return
 	return
 }
 }
+
+// 微路演新增留言提问消息提醒
+func SendWxMsgWithMicroRoadshowAsk(req models.AddVideoCommnetReq, user *models.WxUserItem, resourceId int) (err error) {
+	var msg string
+	defer func() {
+		if err != nil || msg != "" {
+			go utils.SendEmail("发送模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
+			go utils.SendAlarmMsg(fmt.Sprint("发送微路演新增留言提问消息提醒失败,用户名", req.Title, "ID:", req.Id), 2)
+			utils.FileLog.Info("发送模版消息失败,Err:%s", err.Error())
+		}
+	}()
+
+	companyItem, e := models.GetSellerDetailAllByCompanyId(user.CompanyId)
+	if e != nil {
+		return
+	}
+	if companyItem == nil {
+		msg = "获取客户所属销售信息失败,UserID:" + strconv.Itoa(user.UserId)
+	}
+	var first string
+	var keyword1 string
+	var keyword2 string
+	var keyword3 string
+	var keyword4 string
+	var remark string
+	first = req.Title + "有新的留言,请及时处理"
+	keyword1 = user.CompanyName + "——" + user.RealName + "(" + companyItem.SellerName + ")"
+	keyword3 = time.Now().Format(utils.FormatDateTime)
+	keyword2 = ""
+	keyword4 = req.Content
+
+	mobile := companyItem.Mobile + "," + utils.WxMsgTemplateIdAskMsgMobilePublic
+	openIdList, e := models.GetWxOpenIdByMobileList(mobile)
+	if e != nil {
+		err = errors.New("GetWxOpenIdByMobileList, Err: " + e.Error())
+		return
+	}
+	openIdArr := make([]string, 0)
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+
+	//SourceType int    `description:"视频来源: 1-音频; 2-活动视频; 3-微路演视频 (不传默认为1)"`
+	redirectUrl := ""
+	if req.SourceType == 3 {
+		redirectUrl = utils.WX_MSG_PATH_ACTIVITY_INDUSTRYR_EPORT + strconv.Itoa(resourceId)
+		remark = "点击进入产业资源包详情页"
+	} else {
+		redirectUrl = utils.WX_MSG_PATH_ACTIVITY_DETAIL + strconv.Itoa(resourceId)
+		remark = "点击查看活动详情"
+	}
+	sendInfo := new(SendWxTemplate)
+	sendInfo.First = first
+	sendInfo.Keyword1 = keyword1
+	sendInfo.Keyword2 = keyword2
+	sendInfo.Keyword3 = keyword3
+	sendInfo.Keyword4 = keyword4
+	sendInfo.Remark = remark
+	sendInfo.TemplateId = utils.WxMsgTemplateIdAskMsgXzs
+	sendInfo.RedirectUrl = redirectUrl
+	sendInfo.RedirectTarget = 3
+	sendInfo.Resource = strconv.Itoa(req.Id)
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_COMMENT
+	sendInfo.OpenIdArr = openIdArr
+	err = PublicSendTemplateMsg(sendInfo)
+	if err != nil {
+		return
+	}
+	return
+}
+
+func SendCommentWxTemplateMsg(req models.AddCygxArticleCommentReq, user *models.WxUserItem, articleInfo *models.ArticleDetail) (err error) {
+	var msg string
+	defer func() {
+		if err != nil {
+			go utils.SendEmail("发送模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
+			go utils.SendAlarmMsg(fmt.Sprint("发送用户用户留言提醒失败,文章ID:", req.ArticleId), 2)
+			utils.FileLog.Info("发送模版消息失败,Err:%s", err.Error())
+		}
+	}()
+
+	companyItem, e := models.GetSellerDetailAllByCompanyId(user.CompanyId)
+	if e != nil {
+		return
+	}
+	if companyItem == nil {
+		msg = "获取客户所属销售信息失败,UserID:" + strconv.Itoa(user.UserId)
+	}
+	var first string
+	var keyword1 string
+	var keyword2 string
+	var keyword3 string
+	var keyword4 string
+	var remark string
+	var redirectUrl string
+	var mobile string
+
+	first = "【" + articleInfo.Title + "】有新的留言,请及时处理"
+	keyword1 = user.CompanyName + "——" + user.RealName + "(" + companyItem.SellerName + ")"
+	keyword2 = "-"
+	keyword3 = time.Now().Format(utils.FormatDateTime)
+	keyword4 = req.Content
+	remark = "点击查看报告详情"
+	if articleInfo.ArticleId >= utils.SummaryArticleId {
+		//研选报告添加汪洋
+		mobile = companyItem.Mobile + "," + utils.WxMsgTemplateIdAskMsgMobilePublic + "," + utils.ActSendMsgMobile
+	} else {
+		mobile = companyItem.Mobile + "," + utils.WxMsgTemplateIdAskMsgMobilePublic
+	}
+	openIdList, e := models.GetWxOpenIdByMobileList(mobile)
+	if e != nil {
+		err = errors.New("GetWxOpenIdByMobileList, Err: " + e.Error())
+		return
+	}
+	openIdArr := make([]string, 0)
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+	redirectUrl = utils.WX_MSG_PATH_ARTICLE_DETAIL + strconv.Itoa(articleInfo.ArticleId)
+	sendInfo := new(SendWxTemplate)
+	sendInfo.First = first
+	sendInfo.Keyword1 = keyword1
+	sendInfo.Keyword2 = keyword2
+	sendInfo.Keyword3 = keyword3
+	sendInfo.Keyword4 = keyword4
+	sendInfo.Remark = remark
+	sendInfo.TemplateId = utils.WxMsgTemplateIdAskMsgXzs
+	sendInfo.RedirectUrl = redirectUrl
+	sendInfo.RedirectTarget = 3
+	sendInfo.Resource = strconv.Itoa(req.ArticleId)
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_COMMENT
+	sendInfo.OpenIdArr = openIdArr
+	err = PublicSendTemplateMsg(sendInfo)
+	if err != nil {
+		return
+	}
+	return
+}

+ 12 - 9
utils/config.go

@@ -26,15 +26,16 @@ var (
 	WxPublicAppId     string //查研观向小助手公众号
 	WxPublicAppId     string //查研观向小助手公众号
 	WxPublicAppSecret string //查研观向小助手公众号
 	WxPublicAppSecret string //查研观向小助手公众号
 
 
-	WxOpenAppId                   string //公众平台AppId
-	WxOpenAppSecret               string //公众平台AppSecret
-	HeadimgurlDefault             string //默认头像
-	WxMsgTemplateIdApplyXzs       string //申请待处理(小助手)
-	WxMsgTemplateIdApplyCancelXzs string //预约取消提醒(小助手)
-	WxMsgTemplateIdApply          string //申请待处理
-	WxMsgTemplateIdAskMsgMobile   string //手机号用户【XXX】发送模板消息
-	WxMsgTemplateIdAskMsgXzs      string //手机号用户【XXX】发送模板消息模板ID(小助手)
-	IndexName                     string
+	WxOpenAppId                       string //公众平台AppId
+	WxOpenAppSecret                   string //公众平台AppSecret
+	HeadimgurlDefault                 string //默认头像
+	WxMsgTemplateIdApplyXzs           string //申请待处理(小助手)
+	WxMsgTemplateIdApplyCancelXzs     string //预约取消提醒(小助手)
+	WxMsgTemplateIdApply              string //申请待处理
+	WxMsgTemplateIdAskMsgMobile       string //手机号用户【XXX】发送模板消息
+	WxMsgTemplateIdAskMsgXzs          string //手机号用户【XXX】发送模板消息模板ID(小助手)
+	IndexName                         string
+	WxMsgTemplateIdAskMsgMobilePublic string //手机号用户【XXX】发送模板消rm --
 
 
 	ActSendMsgMobile string //活动带问发送模板消息接收者的手机号
 	ActSendMsgMobile string //活动带问发送模板消息接收者的手机号
 
 
@@ -43,6 +44,7 @@ var (
 	YiDongZhengTongYunSecret string //易董 证通云请求secret
 	YiDongZhengTongYunSecret string //易董 证通云请求secret
 	YiDongHuaWeiYunUrl       string //易董 华为云请求域名
 	YiDongHuaWeiYunUrl       string //易董 华为云请求域名
 	YiDonggetOriginalLink    string //易董 短连接转为长链接
 	YiDonggetOriginalLink    string //易董 短连接转为长链接
+
 )
 )
 
 
 // 模板消息推送
 // 模板消息推送
@@ -87,6 +89,7 @@ func init() {
 		fmt.Println(Re)
 		fmt.Println(Re)
 		panic(Re)
 		panic(Re)
 	}
 	}
+	WxMsgTemplateIdAskMsgMobilePublic = "15557270714,18767183922,18621268829"
 	if RunMode == "release" {
 	if RunMode == "release" {
 		WxPublicAppId = "wxb7cb8a15abad5b8e"                                          //查研观向小助手
 		WxPublicAppId = "wxb7cb8a15abad5b8e"                                          //查研观向小助手
 		WxPublicAppSecret = "f425ba2863084249722af1e2a5cfffd3"                        //查研观向小助手
 		WxPublicAppSecret = "f425ba2863084249722af1e2a5cfffd3"                        //查研观向小助手

+ 5 - 2
utils/constants.go

@@ -92,6 +92,7 @@ const (
 	TEMPLATE_MSG_CYGX_ACTIVITY_ADD = 12 //查研观向小程序活动更新推送 12
 	TEMPLATE_MSG_CYGX_ACTIVITY_ADD = 12 //查研观向小程序活动更新推送 12
 	TEMPLATE_MSG_CYGX_ARTICLE_ADD  = 13 //查研观向报告更新推送  13
 	TEMPLATE_MSG_CYGX_ARTICLE_ADD  = 13 //查研观向报告更新推送  13
 	TEMPLATE_MSG_CYGX_APPLY        = 14 //查研观向审批通知
 	TEMPLATE_MSG_CYGX_APPLY        = 14 //查研观向审批通知
+	TEMPLATE_MSG_CYGX_COMMENT      = 15 //查研观向留言通知
 )
 )
 
 
 const (
 const (
@@ -143,8 +144,10 @@ const (
 
 
 // 模板消息地址路由
 // 模板消息地址路由
 const (
 const (
-	WX_MSG_PATH_ARTICLE_DETAIL          = "pageMy/reportDetail/reportDetail?id="          //文章详情模板消息地址
-	WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL = "activityPages/specialDetail/specialDetail?id=" //专项调研活动模板消息地址
+	WX_MSG_PATH_ARTICLE_DETAIL           = "pageMy/reportDetail/reportDetail?id="            //文章详情模板消息地址
+	WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL  = "activityPages/specialDetail/specialDetail?id="   //专项调研活动模板消息地址
+	WX_MSG_PATH_ACTIVITY_INDUSTRYR_EPORT = "reportPages/IndustryReport/IndustryReport?id="   //产业文章列表模板消息地址
+	WX_MSG_PATH_ACTIVITY_DETAIL          = "activityPages/activityDetail/activityDetail?id=" //活动模板消息地址
 )
 )
 
 
 // 微信模板消息推送公共接口的秘钥
 // 微信模板消息推送公共接口的秘钥