ziwen 1 year ago
parent
commit
18462ef81d
3 changed files with 118 additions and 71 deletions
  1. 25 2
      models/cygx_yanxuan_special.go
  2. 2 7
      models/cygx_yanxuan_special_user.go
  3. 91 62
      services/cygx_yanxuan_special.go

+ 25 - 2
models/cygx_yanxuan_special.go

@@ -104,7 +104,7 @@ func GetYanxuanSpecialList(userId int, condition string, pars []interface{}) (it
 	o := orm.NewOrm()
 	sql := ``
 	sql = `SELECT a.*,b.bg_img,b.head_img,b.introduction,b.label,b.mobile,b.nick_name,b.real_name,b.special_name,
-( SELECT count( 1 ) FROM cygx_yanxuan_special_collect AS ac INNER JOIN wx_user as u ON  u.user_id = ac.user_id  WHERE ac.yanxuan_special_id = a.id  ) AS collect_num,
+( SELECT count( 1 ) FROM cygx_yanxuan_special_collect AS ac WHERE ac.yanxuan_special_id = a.id  ) AS collect_num,
 ( SELECT count( 1 ) FROM cygx_yanxuan_special_collect AS ac WHERE ac.yanxuan_special_id = a.id  AND user_id = ? ) AS my_collect_num 
 FROM cygx_yanxuan_special AS a
 JOIN cygx_yanxuan_special_author AS b ON a.user_id = b.user_id 
@@ -141,7 +141,7 @@ func GetYanxuanSpecialById(specialId, userId int) (item *CygxYanxuanSpecialItem,
 	sql := ``
 	sql = `SELECT a.*,b.bg_img,b.head_img,b.introduction,b.label,b.mobile,
 b.nick_name,b.real_name,b.special_name,
-( SELECT count( 1 ) FROM cygx_yanxuan_special_collect AS ac INNER JOIN wx_user as u ON  u.user_id = ac.user_id  WHERE ac.yanxuan_special_id = a.id  ) AS collect_num,
+( SELECT count( 1 ) FROM cygx_yanxuan_special_collect AS ac WHERE ac.yanxuan_special_id = a.id  ) AS collect_num,
 ( SELECT count( 1 ) FROM cygx_yanxuan_special_collect AS ac WHERE ac.yanxuan_special_id = a.id  AND user_id = ? ) AS my_collect_num
 FROM cygx_yanxuan_special AS a
 JOIN cygx_yanxuan_special_author AS b ON a.user_id = b.user_id 
@@ -218,3 +218,26 @@ type CygxYanxuanSpecialCheckReq struct {
 	Content string   // 内容
 	ImgUrl  []string // 图片
 }
+
+func GetYanxuanSpecialFollowUserById(specialId int) (items []int, err error) {
+	o := orm.NewOrm()
+	sql := ``
+	sql = `SELECT b.user_id
+FROM cygx_yanxuan_special AS a
+JOIN cygx_yanxuan_special_follow AS b ON a.user_id = b.follow_user_id
+ WHERE a.id=? `
+	_, err = o.Raw(sql, specialId).QueryRows(&items)
+	return
+}
+
+func GetYanxuanSpecialItemById(specialId int) (item *CygxYanxuanSpecialItem, err error) {
+	o := orm.NewOrm()
+	sql := ``
+	sql = `SELECT a.*,b.bg_img,b.head_img,b.introduction,b.label,b.mobile,
+b.nick_name,b.real_name,b.special_name
+FROM cygx_yanxuan_special AS a
+JOIN cygx_yanxuan_special_author AS b ON a.user_id = b.user_id 
+ WHERE a.id=? `
+	err = o.Raw(sql, specialId).QueryRow(&item)
+	return
+}

+ 2 - 7
models/cygx_yanxuan_special_user.go

@@ -70,15 +70,13 @@ func GetYanxuanSpecialAuthor(reqUserId, sysUserId int,cond string) (item *CygxYa
 	o := orm.NewOrm()
 	sql := ``
 	sql = `SELECT
-	a.*,c.company_name,
+	a.*,
 	( SELECT count( 1 ) FROM cygx_yanxuan_special_collect AS ac  INNER JOIN cygx_yanxuan_special as cs ON  ac.yanxuan_special_id = cs.id  WHERE cs.user_id = a.user_id  ) AS collect_num,
 	( SELECT count( 1 ) FROM cygx_yanxuan_special_follow AS cf  WHERE cf.follow_user_id = a.user_id  ) AS follow_num,
 	( SELECT count( 1 ) FROM cygx_yanxuan_special AS ca  WHERE ca.user_id = a.user_id AND ca.status = 3 ) AS special_article_num,
 	( SELECT count( 1 ) FROM cygx_yanxuan_special_follow AS cf  WHERE cf.follow_user_id =? AND cf.user_id = ?  ) AS is_follow 
 FROM
-	cygx_yanxuan_special_author as a
-	LEFT JOIN wx_user AS u ON u.user_id = a.user_id
-	LEFT JOIN company AS c ON c.company_id = u.company_id WHERE a.user_id=? `
+	cygx_yanxuan_special_author as a WHERE a.user_id=? `
 	if cond != "" {
 		sql += cond
 	}
@@ -109,12 +107,9 @@ func GetYanxuanSpecialAuthorList() (items []*CygxYanxuanSpecialAuthorItem, err e
 	sql := ``
 	sql = `SELECT
 	a.*,
-	c.company_name,
 	IFNULL(( SELECT publish_time FROM cygx_yanxuan_special WHERE user_id = a.user_id AND STATUS = 3 ORDER BY publish_time DESC LIMIT 1 ), a.modify_time) AS latest_publish_time
 FROM
 	cygx_yanxuan_special_author AS a
-	INNER JOIN wx_user AS u ON u.user_id = a.user_id
-	INNER JOIN company AS c ON c.company_id = u.company_id 
 WHERE
 	a.nick_name <> ''
 ORDER BY

+ 91 - 62
services/cygx_yanxuan_special.go

@@ -1,69 +1,98 @@
 package services
 
-// 选专栏有新内容审核通过时,给关注此专栏的客户发送模板消息
+import (
+	"errors"
+	"fmt"
+	"hongze/hongze_cygx/models"
+	"hongze/hongze_cygx/utils"
+	"strconv"
+	"strings"
+	"time"
+)
+
+// 研选专栏有新内容审核通过时,给关注此专栏的客户发送模板消息
 func SendWxMsgSpecialFollow(specialId 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("预报名活动,感兴趣人数满10人时,推送给活动负责人和王芳消息发送失败", activityInfo.ResearchTheme, ", activityId"), 2)
-	//		utils.FileLog.Info("发送模版消息失败,Err:%s", err.Error())
-	//	}
-	//}()
-	//var first string
-	//var keyword1 string
-	//var keyword2 string
-	//var keyword3 string
-	//var keyword4 string
-	//var remark string
-	//
-	//adminUser, e := models.GetSellerByAdminId(activityInfo.AdminId)
-	//if e != nil {
-	//	err = errors.New("GetSellerByAdminId, Err: " + e.Error())
-	//	return
-	//}
-	//cnf, _ := models.GetConfigByCode("tpl_msg")
-	//mobile := adminUser.Mobile + "," + cnf.ConfigValue
-	//
-	//specialSignupList, e := models.GetActivityListSpecialByActivityId(activityId)
-	//if e != nil {
-	//	err = errors.New("GetActivityListSpecialAll, Err: " + e.Error())
-	//	return
-	//}
-	//for _, v := range specialSignupList {
-	//	keyword1 += "【" + v.RealName + "--" + v.CompanyName + "】"
-	//}
-	//openIdList, e := models.GetWxOpenIdByMobileList(mobile)
-	//if e != nil {
-	//	err = errors.New("GetSellerByAdminId, Err: " + e.Error())
-	//	return
-	//}
-	//first = "【" + activityInfo.ResearchTheme + "】已有10人预报名"
-	//keyword3 = "-"
-	//keyword2 = "-"
+	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("研选专栏有新内容审核通过时,给关注此专栏的客户发送模板消息失败", specialId, ", specialId"), 2)
+			utils.FileLog.Info("发送模版消息失败,Err:%s", err.Error())
+		}
+	}()
+	var first string
+	var keyword1 string
+	var keyword2 string
+	var keyword3 string
+	var keyword4 string
+	var remark string
+
+	followers, e := models.GetYanxuanSpecialFollowUserById(specialId)
+	if e != nil {
+		err = errors.New("GetYanxuanSpecialFollowUserById, Err: " + e.Error())
+		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
+	}
+
+	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
+	}
+
+
+	//first =
+	keyword1 = "研选专栏:" + specialItem.SpecialName
+	keyword2 = "发布了新内容,点击查看详情"
+	keyword3 = "-"
 	//keyword4 = "【" + activityInfo.ResearchTheme + "】已有10人预报名"
-	//openIdArr := make([]string, 0)
-	//for _, v := range openIdList {
-	//	openIdArr = append(openIdArr, v.OpenId)
-	//}
-	//redirectUrl := utils.WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL + strconv.Itoa(activityId)
-	//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(activityId)
-	//sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
-	//sendInfo.OpenIdArr = openIdArr
-	//err = PublicSendTemplateMsg(sendInfo)
-	//if err != nil {
-	//	return
-	//}
+	openIdArr := make([]string, 0)
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+	redirectUrl := utils.WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL + strconv.Itoa(specialId)
+	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(specialId)
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
+	sendInfo.OpenIdArr = openIdArr
+	err = PublicSendTemplateMsg(sendInfo)
+	if err != nil {
+		return
+	}
 	return
 }