Browse Source

我的日程排序,带问模板消息推送

xingzai 3 years ago
parent
commit
dde04b98e0
6 changed files with 142 additions and 21 deletions
  1. 55 7
      controllers/activity.go
  2. 14 0
      controllers/article.go
  3. 10 8
      models/activity.go
  4. 10 1
      models/wx_template_msg.go
  5. 47 0
      services/wx_template_msg.go
  6. 6 5
      utils/config.go

+ 55 - 7
controllers/activity.go

@@ -358,21 +358,70 @@ func (this *ActivityCoAntroller) ScheduleList() {
 	}
 	startSize = utils.StartIndex(currentIndex, pageSize)
 	var condition string
+	var conditionCount string
 	var pars []interface{}
-	//condition += ` AND art.publish_status = 1  AND art.active_state IN(1,2)	 AND s.is_cancel = 0  AND s.fail_type = 0  `
-	condition += ` AND art.publish_status = 1  AND art.active_state IN(1,2)	  `
-	total, err := models.GetScheduleCount(uid)
+	condition += ` AND art.publish_status = 1    `
+	total, err := models.GetScheduleCount(conditionCount, uid)
+	page := paging.GetPaging(currentIndex, pageSize, total)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
-	list, errList := models.GetScheduleList(condition, pars, uid, startSize, pageSize)
-	if errList != nil {
+	conditionCount = ` 	AND art.active_state = 2 `
+	totalCount, err := models.GetScheduleCount(conditionCount, uid) //获取正在进行中的活动数量
+	if err != nil {
 		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + errList.Error()
+		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
+	var list []*models.CygxActivityList
+	fmt.Println(totalCount)
+	//全部都是进行中的活动
+	if totalCount > currentIndex*pageSize {
+		condition += ` AND art.active_state IN(2) `
+		listHave, errList := models.GetScheduleList(condition, pars, uid, startSize, pageSize)
+		list = listHave
+		if errList != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + errList.Error()
+			return
+		}
+		fmt.Println("22222")
+	} else if totalCount > currentIndex-1*pageSize && totalCount < currentIndex*pageSize { //部分是进行中的活动
+		condition = `  AND art.publish_status = 1 AND art.active_state IN(2) `
+		listHave, errList := models.GetScheduleList(condition, pars, uid, startSize, pageSize)
+		list = listHave
+		if errList != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + errList.Error()
+			return
+		}
+		fmt.Println("33333")
+		pageSize = pageSize - len(listHave)
+		condition = ` AND art.publish_status = 1 AND art.active_state IN(1,3) `
+		listOther, errList := models.GetScheduleList(condition, pars, uid, startSize, pageSize)
+		if errList != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + errList.Error()
+			return
+		}
+		fmt.Println("长度", len(listOther))
+		if len(listOther) > 0 {
+			for _, v := range listOther {
+				list = append(list, v)
+			}
+		}
+	} else {
+		condition += ` AND art.active_state IN(1,3)` //全部都不是进行中的活动
+		listOther, errList := models.GetScheduleList(condition, pars, uid, startSize, pageSize)
+		list = listOther
+		if errList != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + errList.Error()
+			return
+		}
+	}
 	for k, v := range list {
 		if strings.Contains(v.ActivityName, "【") {
 			list[k].IsBrackets = 1
@@ -385,7 +434,6 @@ func (this *ActivityCoAntroller) ScheduleList() {
 			list[k].IsShowSustainable = true
 		}
 	}
-	page := paging.GetPaging(currentIndex, pageSize, total)
 	resp := new(models.GetCygxActivityListRep)
 	resp.List = list
 	resp.Paging = page

+ 14 - 0
controllers/article.go

@@ -669,6 +669,20 @@ func (this *ArticleController) AskAdd() {
 		br.ErrMsg = "提交失败,Err:" + err.Error()
 		return
 	}
+	openIdList, err := models.GetWxOpenIdByMobileList()
+	if err != nil {
+		br.Msg = "提交失败"
+		br.ErrMsg = "提交失败,Err:" + err.Error()
+		return
+	}
+	detail, err := models.GetArticleDetailById(articleId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取信息失败,Err:" + err.Error()
+		return
+	}
+	companyName := user.CompanyName + "-" + user.RealName + "(王芳)"
+	go services.SendWxMsgWithAsk(companyName, time.Now().Format(utils.FormatDateTime), content, detail.Title, openIdList, req.ArticleId)
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "提交成功"

+ 10 - 8
models/activity.go

@@ -184,14 +184,16 @@ func GetActivityCount(condition string, pars []interface{}) (count int, err erro
 }
 
 //获取我的日程数量
-func GetScheduleCount(uid int) (count int, err error) {
+func GetScheduleCount(condition string, uid int) (count int, err error) {
 	o := orm.NewOrm()
-	//sqlCount := ` SELECT COUNT( 1 ) AS count  FROM cygx_activity AS art  INNER JOIN cygx_activity_signup as s ON s.activity_id = art.activity_id
-	//				WHERE  	s.user_id = ?  AND s.is_cancel = 0 `
-	//if condition != "" {
-	//	sqlCount += condition
-	//}
-	sqlCount := ` SELECT COUNT( 1 ) AS count  FROM cygx_my_schedule WHERE user_id = ?`
+	sqlCount := `SELECT COUNT( 1 ) AS count 
+				FROM cygx_my_schedule AS m
+				INNER JOIN cygx_activity AS art ON art.activity_id = m.activity_id 
+				WHERE
+				user_id = ?`
+	if condition != "" {
+		sqlCount += condition
+	}
 	err = o.Raw(sqlCount, uid).QueryRow(&count)
 	return
 }
@@ -208,7 +210,7 @@ func GetScheduleList(condition string, pars []interface{}, uid, startSize, pageS
 	if condition != "" {
 		sql += condition
 	}
-	sql += ` ORDER BY art.active_state DESC,art.activity_time ASC  LIMIT ?,?`
+	sql += ` ORDER BY art.active_state ASC,art.activity_time ASC  LIMIT ?,?`
 	_, err = o.Raw(sql, pars, uid, uid, uid, startSize, pageSize).QueryRows(&items)
 	return
 }

+ 10 - 1
models/wx_template_msg.go

@@ -1,6 +1,9 @@
 package models
 
-import "rdluck_tools/orm"
+import (
+	"hongze/hongze_cygx/utils"
+	"rdluck_tools/orm"
+)
 
 type SendTemplateResponse struct {
 	Errcode int    `json:"errcode"`
@@ -32,3 +35,9 @@ func GetWxOpenIdList() (items []*OpenIdList, err error) {
 	_, err = orm.NewOrm().Raw(sql, openId).QueryRows(&items)
 	return
 }
+
+func GetWxOpenIdByMobileList() (items []*OpenIdList, err error) {
+	sql := `SELECT * FROM user_record WHERE bind_account IN (` + utils.WxMsgTemplateIdAskMsgMobile + `) AND create_platform = 1`
+	_, err = orm.NewOrm().Raw(sql).QueryRows(&items)
+	return
+}

+ 47 - 0
services/wx_template_msg.go

@@ -46,7 +46,54 @@ func SendWxMsgWithFrequency(first, activityName, reserveResults, activityTime, a
 	sendData["activity_address"] = map[string]interface{}{"value": activityAddress, "color": "#173177"}
 	sendData["remark"] = map[string]interface{}{"value": remark, "color": "#173177"}
 	sendMap["data"] = sendData
+	WxSendTemplateMsg(sendUrl, sendMap, openIdList)
+	return
+}
 
+//发送报告提问消息提醒
+func SendWxMsgWithAsk(name, askTime, askMsg, title string, openIdList []*models.OpenIdList, articleId 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)
+			utils.FileLog.Info("发送模版消息失败,Err:%s", err.Error())
+		}
+		fmt.Println("line 21", err, msg)
+	}()
+	utils.FileLog.Info("%s", "services SendMsg")
+	accessToken, err := models.GetWxAccessToken()
+	if err != nil {
+		msg = "GetWxAccessToken Err:" + err.Error()
+		return
+	}
+	if accessToken == "" {
+		msg = "accessToken is empty"
+		return
+	}
+	var first string
+	var keyword1 string
+	var keyword3 string
+	var keyword4 string
+	var remark string
+	first = "研选报告有新的提问,请及时处理"
+	keyword1 = name
+	keyword3 = askTime
+	keyword4 = askMsg
+	remark = title
+	sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
+	templateId := utils.WxMsgTemplateIdAskMsg
+	sendMap := make(map[string]interface{})
+	sendData := make(map[string]interface{})
+	sendMap["template_id"] = templateId
+	//sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId, "pagepath": "activityPages/activityDetail/activityDetail?id=" + strconv.Itoa(activityId)}
+	sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxAppId, "path": "pages/index/index"}
+	sendData["first"] = map[string]interface{}{"value": first, "color": "#173177"}
+	sendData["keyword1"] = map[string]interface{}{"value": keyword1, "color": "#173177"}
+	sendData["keyword2"] = map[string]interface{}{"value": "", "color": "#173177"}
+	sendData["keyword3"] = map[string]interface{}{"value": keyword3, "color": "#173177"}
+	sendData["keyword4"] = map[string]interface{}{"value": keyword4, "color": "#173177"}
+	sendData["remark"] = map[string]interface{}{"value": remark, "color": "#173177"}
+	sendMap["data"] = sendData
 	WxSendTemplateMsg(sendUrl, sendMap, openIdList)
 	return
 }

+ 6 - 5
utils/config.go

@@ -28,6 +28,8 @@ var (
 	WxMsgTemplateIdPermissionApply string //预约取消提醒
 	WxMsgTemplateIdActivityApply   string //活动预约消息提醒
 	WxMsgTemplateIdActivityChange  string //活动预约变更提醒
+	WxMsgTemplateIdAskMsg          string //手机号用户【XXX】发送模板消息模板ID
+	WxMsgTemplateIdAskMsgMobile    string //手机号用户【XXX】发送模板消息
 )
 
 //微信公众号配置信息
@@ -93,12 +95,9 @@ func init() {
 		EmailZhizao = "xfma@hzinsights.com;agne@hzinsights.com;tshen@hzinsights.com;cxzhang@hzinsights.com;jhwang@hzinsights.com"                         //智造行业专家邮箱
 		EmailStrategy = "xfma@hzinsights.com;tshen@hzinsights.com;cxzhang@hzinsights.com;jhwang@hzinsights.com"                                           //策略行业专家邮箱
 		EmaiWhiteUserList = "tshen@hzinsights.com;cxzhang@hzinsights.com;yyli@hzinsights.com"                                                             //白名单邮箱
+		WxMsgTemplateIdAskMsg = "PaoDanHGlt1kFw5q-4_ipJSwO3FyZpxSSNg4rwB7YCk"
+		WxMsgTemplateIdAskMsgMobile = "15557270714"
 
-		//EmailTechnology = "jhwang@hzinsights.com;cxzhang@hzinsights.com" //科技行业专家邮箱
-		//EmailMedicine = "jhwang@hzinsights.com"                          //医药行业专家邮箱
-		//EmailConsumption = "jhwang104@163.com;cxzhang@hzinsights.com"    //消费行业专家邮箱
-		//EmailZhizao = "jhwang104@163.com"                                //智造行业专家邮箱
-		//EmailStrategy = "jhwang104@163.com;cxzhang@hzinsights.com"       //策略行业专家邮箱
 	} else {
 		WxAppId = "wxcc32b61f96720d2f"
 		WxAppSecret = "06894933fafb24dafead7eaae09c08e0"
@@ -122,6 +121,8 @@ func init() {
 		EmailZhizao = "jhwang@hzinsights.com;cxzhang@hzinsights.com"      //智造行业专家邮箱
 		EmailStrategy = "jhwang@hzinsights.com;cxzhang@hzinsights.com"    //策略行业专家邮箱
 		EmaiWhiteUserList = "cxzhang@hzinsights.com"
+		WxMsgTemplateIdAskMsg = "qfNuops-sKrfIkbA7U97A7gSrX03mUpoEpJksRUdloo"
+		WxMsgTemplateIdAskMsgMobile = "15557270714"
 	}
 }