xingzai 1 год назад
Родитель
Сommit
93ebd88cd6
5 измененных файлов с 203 добавлено и 5 удалено
  1. 104 0
      controllers/report.go
  2. 10 2
      controllers/user.go
  3. 3 3
      models/user.go
  4. 9 0
      routers/commentsRouter.go
  5. 77 0
      services/wx_template_msg.go

+ 104 - 0
controllers/report.go

@@ -2,6 +2,7 @@ package controllers
 
 import (
 	"encoding/json"
+	"github.com/medivhzhan/weapp/v2"
 	"hongze/hongze_mfyx/models"
 	"hongze/hongze_mfyx/services"
 	"hongze/hongze_mfyx/utils"
@@ -240,3 +241,106 @@ func (this *ReportController) FllowDepartment() {
 	br.Success = true
 	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,
+	}
+	msgId, err := models.AddArticleComment(&item)
+	if err != nil {
+		br.Msg = "提交失败"
+		br.ErrMsg = "提交留言失败,Err:" + err.Error()
+		return
+	}
+
+	services.SendCommentWxTemplateMsg(req, user, articleInfo, int(msgId))
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "提交成功"
+}

+ 10 - 2
controllers/user.go

@@ -246,13 +246,21 @@ func (this *UserController) Detail() {
 			return
 		}
 
-		totalHistory, err := models.GetArticleUserHistoryNum(uid) // 足迹数量
+		endDate := time.Now().AddDate(0, -1, 0).Format(utils.FormatDate)
+		totalHistory, err := models.GetArticleUserBrowseHistoryCount(uid, endDate) //足迹数量
 		if err != nil {
 			br.Msg = "获取数据失败"
-			br.ErrMsg = "GetArticleUserHistoryNum,Err:" + err.Error()
+			br.ErrMsg = "获取数据失败,Err:" + err.Error()
 			return
 		}
 
+		//totalHistory, err := models.GetArticleUserHistoryNum(uid) // 足迹数量
+		//if err != nil {
+		//	br.Msg = "获取数据失败"
+		//	br.ErrMsg = "GetArticleUserHistoryNum,Err:" + err.Error()
+		//	return
+		//}
+
 		totalSchedule, err := models.GetArticleUserScheduleNum(uid) // 我的日程数量
 		if err != nil {
 			br.Msg = "获取数据失败"

+ 3 - 3
models/user.go

@@ -167,7 +167,7 @@ func GetArticleUserCollectCount(userId int) (count int, err error) {
 	sql := `SELECT SUM(count) AS count FROM (
 			SELECT COUNT(1) AS count FROM cygx_article_collect AS a 
 			INNER JOIN cygx_article as art ON art.article_id = a.article_id 
-			WHERE a.user_id=? AND art.publish_status = 1  
+			WHERE a.user_id=? AND art.publish_status = 1    AND  art.article_type_id  > 0 
 			UNION ALL
 			SELECT COUNT(1) AS count FROM cygx_yanxuan_special_collect AS a
 			INNER JOIN cygx_yanxuan_special as b ON b.id = a.yanxuan_special_id 
@@ -253,13 +253,13 @@ type ArticleInterviewApplyListResp struct {
 func GetArticleUserBrowseHistoryCount(userId int, endDate string) (count int, err error) {
 	sql := `SELECT COUNT( 1 ) as count
 			FROM
-			( SELECT count(*) FROM cygx_article_history_record AS a WHERE a.user_id = ? AND a.create_time >= ? GROUP BY a.article_id ) b  `
+			( SELECT count(*) FROM cygx_article as art INNER JOIN  cygx_article_history_record_newpv AS a     ON  art.article_id = a.article_id AND  article_type_id  > 0   WHERE a.user_id = ? AND a.create_time >= ? GROUP BY a.article_id ) b  `
 	err = orm.NewOrm().Raw(sql, userId, endDate).QueryRow(&count)
 	return
 }
 
 func GetArticleUserBrowseHistoryList(startSize, pageSize, userId int, endDate string) (items []*ArticleReportBillboardResp, err error) {
-	sql := `SELECT a.* ,	MAX( a.id ) AS mid   FROM cygx_article_history_record AS a
+	sql := `SELECT a.* ,	MAX( a.id ) AS mid   FROM  cygx_article as art INNER JOIN  cygx_article_history_record_newpv AS a     ON  art.article_id = a.article_id AND  article_type_id  > 0 
 			WHERE a.user_id=? AND a.create_time>=?  GROUP BY a.article_id
            ORDER BY mid  DESC LIMIT ?,? `
 	_, err = orm.NewOrm().Raw(sql, userId, endDate, startSize, pageSize).QueryRows(&items)

+ 9 - 0
routers/commentsRouter.go

@@ -304,6 +304,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_mfyx/controllers:ReportController"] = append(beego.GlobalControllerRouter["hongze/hongze_mfyx/controllers:ReportController"],
+        beego.ControllerComments{
+            Method: "CommentAdd",
+            Router: `/commentAdd`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_mfyx/controllers:ReportController"] = append(beego.GlobalControllerRouter["hongze/hongze_mfyx/controllers:ReportController"],
         beego.ControllerComments{
             Method: "Fllow",

+ 77 - 0
services/wx_template_msg.go

@@ -3,6 +3,7 @@ package services
 import (
 	"bytes"
 	"encoding/json"
+	"errors"
 	"fmt"
 	"hongze/hongze_mfyx/models"
 	"hongze/hongze_mfyx/utils"
@@ -205,3 +206,79 @@ func SendTemplateMsg(sendUrl string, data []byte, resource string, sendType int,
 	}
 	return
 }
+
+// 发送用户留言提醒
+// func SendCommentWxTemplateMsg(title, companyName, userName, sellerName, createTime, content string, openIdList []*models.OpenIdList, articleId int) (err error) {
+func SendCommentWxTemplateMsg(req models.AddCygxArticleCommentReq, user *models.WxUserItem, articleInfo *models.ArticleDetail, msgId int) (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 = "留言:" + articleInfo.Title
+	keyword3 = time.Now().Format(utils.FormatDateTime)
+	keyword4 = req.Content
+	remark = "点击查看报告详情"
+	if articleInfo.ArticleTypeId > 0 {
+		//研选报告添加汪洋
+		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)
+	}
+	//mapSource留言跳转类型,1:文章、2:活动、3:微路演视频、4:活动视频、5:活动音频
+	if utils.RunMode != "release" {
+		redirectUrl = utils.WX_MSG_PATH_ARTICLE_DETAIL + strconv.Itoa(articleInfo.ArticleId)
+	} else {
+		redirectUrl = utils.WX_MSG_PATH_TEMPLATE_MSG + "SourceId=" + strconv.Itoa(msgId) + "&SourceType=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.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
+}