Browse Source

Merge branch 'mfyx_3.4' of http://8.136.199.33:3000/hongze/hongze_cygx

xingzai 6 tháng trước cách đây
mục cha
commit
d9acac6f5e

+ 46 - 35
models/cygx_yanxuan_special.go

@@ -71,41 +71,43 @@ type CygxYanxuanSpecialResp struct {
 }
 
 type CygxYanxuanSpecialCenterResp struct {
-	Id              int    `orm:"column(id);pk"`
-	UserId          int    // 用户ID
-	CreateTime      string // 创建时间
-	ModifyTime      string // 修改时间
-	PublishTime     string // 提审过审或驳回时间
-	Content         string // 内容
-	Tags            string // 标签
-	Status          int    // 1:未发布,2:审核中 3:已发布 4:驳回
-	ImgUrl          string // 图片链接
-	DocUrl          string // 文档链接
-	SpecialName     string // 专栏名称
-	Introduction    string // 介绍
-	Label           string // 标签
-	NickName        string // 昵称
-	RealName        string // 姓名
-	Mobile          string // 手机号
-	HeadImg         string // 头像
-	BgImg           string // 背景图
-	Reason          string // 理由
-	Title           string // 标题
-	Type            int    // 类型1:笔记,2:观点
-	CollectNum      int
-	MyCollectNum    int
-	IsCollect       int
-	CompanyTags     string
-	IndustryTags    string
-	ContentHasImg   int  //正文是否包含图片 1包含 0不包含
-	ContentHasStyle bool //正文是否包含格式
-	Docs            []Doc
-	Annotation      string   `description:"核心观点"`
-	Source          string   `description:"来源"`
-	Pv              int      `description:"Pv"`
-	Uv              int      `description:"Uv"`
-	PublishDate     string   // 提审过审或驳回时间      string `description:"核心观点"`
-	BodyHighlight   []string `description:"搜索高亮展示结果"`
+	Id               int    `orm:"column(id);pk"`
+	UserId           int    // 用户ID
+	CreateTime       string // 创建时间
+	ModifyTime       string // 修改时间
+	PublishTime      string // 提审过审或驳回时间
+	Content          string // 内容
+	Tags             string // 标签
+	Status           int    // 1:未发布,2:审核中 3:已发布 4:驳回
+	ImgUrl           string // 图片链接
+	DocUrl           string // 文档链接
+	SpecialName      string // 专栏名称
+	Introduction     string // 介绍
+	Label            string // 标签
+	NickName         string // 昵称
+	RealName         string // 姓名
+	Mobile           string // 手机号
+	HeadImg          string // 头像
+	BgImg            string // 背景图
+	Reason           string // 理由
+	Title            string // 标题
+	Type             int    // 类型1:笔记,2:观点
+	CollectNum       int
+	MyCollectNum     int
+	IsCollect        int
+	CompanyTags      string
+	IndustryTags     string
+	ContentHasImg    int  //正文是否包含图片 1包含 0不包含
+	ContentHasStyle  bool //正文是否包含格式
+	Docs             []Doc
+	Annotation       string   `description:"核心观点"`
+	Source           string   `description:"来源"`
+	Pv               int      `description:"Pv"`
+	Uv               int      `description:"Uv"`
+	PublishDate      string   // 提审过审或驳回时间      string `description:"核心观点"`
+	BodyHighlight    []string `description:"搜索高亮展示结果"`
+	LikeCount        int      `description:"点赞数量"`
+	LikeCountHistory int      `description:"一个小时前的点赞数量"`
 }
 
 type Doc struct {
@@ -366,3 +368,12 @@ func UpdateYanxuanSpecialMomentsImg(momentsImg string, id int) (err error) {
 	_, err = o.Raw(sql, momentsImg, id).Exec()
 	return
 }
+
+// 更新历史点赞数量
+func UpdateYanxuanSpecialLikeCountHistory() (err error) {
+	o := orm.NewOrm()
+	sql := ``
+	sql = `UPDATE cygx_yanxuan_special SET like_count_history=like_count WHERE like_count > like_count_history `
+	_, err = o.Raw(sql).Exec()
+	return
+}

+ 12 - 0
models/wx_user.go

@@ -613,6 +613,18 @@ func GetWxUserByOutboundMobiles(mobiles []string) (items []*WxUser, err error) {
 	return
 }
 
+// GetWxUserByMobiles 根据用户手机号获取用户详情
+func GetWxUserByUserIds(userIds []int) (items []*WxUser, err error) {
+	lenArr := len(userIds)
+	if lenArr == 0 {
+		return
+	}
+	sql := `SELECT * FROM wx_user  WHERE user_id  in (` + utils.GetOrmInReplace(lenArr) + `)  `
+	o := orm.NewOrmUsingDB("weekly_report")
+	_, err = o.Raw(sql, userIds).QueryRows(&items)
+	return
+}
+
 func UserSubscribe(subscribeTime string, userId int) (err error) {
 	o := orm.NewOrmUsingDB("weekly_report")
 	sql := `UPDATE wx_user SET cygx_subscribe=1,cygx_subscribe_time=? WHERE user_id = ? `

+ 52 - 0
services/cygx_yanxuan_special.go

@@ -565,3 +565,55 @@ func GetYanxuanSpecialDetailUserPower(user *models.WxUserItem) (havePower bool,
 	}
 	return
 }
+
+// 专栏文章获得点赞时,模板消息通知作者(每个整点发送,不同文章分多条发送)
+func GetYanxuanSpecialLikeCountDifferent(cont context.Context) (err error) {
+	//var err error
+	defer func() {
+		if err != nil {
+			fmt.Println("err:", err)
+			go utils.SendAlarmMsg(" 专栏文章获得点赞时,模板消息通知作者(每个整点发送,不同文章分多条发送)失败,GetYanxuanSpecialLikeCountDifferent Err:"+err.Error(), 3)
+		}
+	}()
+	var condition string
+	var pars []interface{}
+	condition += ` AND  like_count > like_count_history  `
+	list, e := models.GetYanxuanSpecialListBycondition(condition, pars, 0, 0)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetYanxuanSpecialListBycondition, Err: " + e.Error())
+		return
+	}
+	if len(list) == 0 {
+		return
+	}
+
+	var userIds []int
+	for _, v := range list {
+		fmt.Println(v.Id)
+		userIds = append(userIds, v.UserId)
+	}
+
+	listUser, e := models.GetWxUserByUserIds(userIds)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetWxUserByUserIds, Err: " + e.Error())
+		return
+	}
+
+	mapUserMobile := make(map[int]string)
+	var mobiles []string
+	for _, v := range listUser {
+		mobiles = append(mobiles, v.Mobile)
+		mapUserMobile[v.UserId] = v.Mobile
+	}
+	for _, v := range list {
+		if mapUserMobile[v.UserId] == "" {
+			continue
+		}
+		go SendCategoryTemplateMsgLikeCountDifferentByYxCategory(v.LikeCount-v.LikeCountHistory, v.Id, mapUserMobile[v.UserId], v.Title)
+		time.Sleep(time.Second * 1) // 延迟1秒处理
+	}
+
+	err = models.UpdateYanxuanSpecialLikeCountHistory()
+
+	return
+}

+ 4 - 0
services/task.go

@@ -157,6 +157,10 @@ func Task() {
 
 		updateRaiServeBillDate := task.NewTask("updateRaiServeBillDate", "0 */10 * * * *", UpdateRaiServeBillDate)
 		task.AddTask("定时任务处理权益服务记录明细", updateRaiServeBillDate) //定时任务处理权益服务记录明细
+
+		getYanxuanSpecialLikeCountDifferent := task.NewTask("getYanxuanSpecialLikeCountDifferent", "0 0 */1 * * *", GetYanxuanSpecialLikeCountDifferent)
+		task.AddTask("定时任务处理退款回调", getYanxuanSpecialLikeCountDifferent) // 专栏文章获得点赞时,模板消息通知作者(每个整点发送,不同文章分多条发送)
+
 	}
 
 	//UpdateRaiServeBillDate()

+ 42 - 0
services/wx_category_template_msg.go

@@ -1033,4 +1033,46 @@ func checkSpecialNameString(s string) string {
 	return trimmedString
 }
 
+func SendCategoryTemplateMsgLikeCountDifferentByYxCategory(likeCount, yanxuanSpecialId int, mobile, title string) {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println("err:", err)
+			go utils.SendAlarmMsg(" 专栏文章获得点赞时,模板消息通知作者(每个整点发送,不同文章分多条发送)失败,SendCategoryTemplateMsgLikeCountDifferentByYxCategory Err:"+err.Error(), 3)
+		}
+	}()
+	openIdList, e := models.GetMfyxWxOpenIdByMobileList(mobile)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetMfyxWxOpenIdByMobileList, Err: " + e.Error())
+		return
+	}
+	if len(openIdList) == 0 {
+		err = nil
+		return
+	}
+	openIdArr := make([]string, 0)
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+
+	var keyword1 string
+	var keyword2 string
+	var redirectUrl string
+	redirectUrl = utils.WX_MSG_PATH_YX_SPECIAL_DETAIL + strconv.Itoa(yanxuanSpecialId)
+	keyword1 = fmt.Sprint("有", likeCount, "人点赞了您的文章")
+	keyword2 = title
+	keyword1 = utils.TruncateActivityNameString(keyword1)
+	keywords := []string{keyword1, keyword2}
+
+	sendInfo := new(SendWxCategoryTemplate)
+	sendInfo.Keywords = keywords
+	sendInfo.TemplateId = utils.WxMsgCategoryTemplateIdAddMessage
+	sendInfo.RedirectTarget = 4
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
+	sendInfo.OpenIdArr = openIdArr
+	sendInfo.RedirectUrl = redirectUrl
+	err = SendCategoryTemplateMsg(sendInfo)
+	return
+}
+
 //专栏模块END

+ 3 - 0
utils/config.go

@@ -54,6 +54,7 @@ var (
 	WxMsgCategoryTemplateIdCompanyApprovalMessageRai string //权益销售签约成功通知买方研选类目模版消息通知-类目模板ID
 	WxMsgCategoryTemplateIdActivityPublishApply      string //买方研选关注的产业下,单个活动/研选报告发布通知-类目模板ID
 	WxMsgCategoryTemplateIdArticleUserRemind         string //用户阅读报告通知-类目模板ID
+	WxMsgCategoryTemplateIdAddMessage                string //专栏文章留言-类目模板ID
 
 	//权益内容组手机号
 	RAI_MOBILE_GAO_YI_WEN string // 权益高亦文手机号
@@ -269,6 +270,7 @@ func init() {
 		WxMsgCategoryTemplateIdCompanyApprovalMessageRai = "wU4x_c5XruwuA44VZelyklRNOfq4XrU9ILckTtDs6hg" //权益销售签约成功通知买方研选类目模版消息通知-类目模板ID
 		WxMsgCategoryTemplateIdActivityPublishApply = "wLeV7tVK4ZJBoAvsmfXkHveVW8yefGAkwnVKQWRi8uQ"
 		WxMsgCategoryTemplateIdArticleUserRemind = "4fwzgJ-2xUiyQqNkFCPd8vsGpOnNWWE2inZO4BXjfio"
+		WxMsgCategoryTemplateIdAddMessage = "Ery3Y-cBtPqdpXJd07jKqbZdxkcTpK_74wAQNWYDOvY"
 
 		//权益内容组手机号测试环境没什么用,配合测试切换他们的手机号
 		RAI_MOBILE_GAO_YI_WEN = "17706316791" //权益高亦文手机号
@@ -294,6 +296,7 @@ func init() {
 		WxMsgCategoryTemplateIdCompanyApprovalMessageRai = "t1CcxcOkoZkWZrDRs6zYUlceBGYMV3mhkBYUa8a6Mx0" //权益销售签约成功通知买方研选类目模版消息通知-类目模板ID
 		WxMsgCategoryTemplateIdActivityPublishApply = "IBMqiE61lVgUfFM4rsH0XCH57R_G3PbWvRbnzg9JHPI"
 		WxMsgCategoryTemplateIdArticleUserRemind = "4fwzgJ-YQndzH5OJWLkd0grvftgqhvP285t_oXUboi7DaaIhMI"
+		WxMsgCategoryTemplateIdAddMessage = "_SzJRvXmlIp4Uh7Xbyem9G2pOqMDsHRsL0BQkCPFslk"
 
 		//权益内容组手机号
 		RAI_MOBILE_GAO_YI_WEN = "15000123056" //权益高亦文手机号