|
@@ -1,9 +1,13 @@
|
|
|
package controllers
|
|
|
|
|
|
import (
|
|
|
+ "encoding/json"
|
|
|
"eta/eta_mini_crm_ht/models"
|
|
|
+ "eta/eta_mini_crm_ht/models/request"
|
|
|
"eta/eta_mini_crm_ht/models/response"
|
|
|
+ "eta/eta_mini_crm_ht/services"
|
|
|
"eta/eta_mini_crm_ht/utils"
|
|
|
+ "fmt"
|
|
|
"github.com/rdlucklib/rdluck_tools/paging"
|
|
|
"strconv"
|
|
|
"strings"
|
|
@@ -307,6 +311,12 @@ func (this *MessageController) VideoList() {
|
|
|
br.Msg = "获取成功"
|
|
|
}
|
|
|
|
|
|
+const (
|
|
|
+ Report string = "report"
|
|
|
+ Audio string = "audio"
|
|
|
+ Video string = "video"
|
|
|
+)
|
|
|
+
|
|
|
// SendTemplateMsg
|
|
|
// @Title 研报列表
|
|
|
// @Description pdf研报列表
|
|
@@ -316,86 +326,100 @@ func (this *MessageController) VideoList() {
|
|
|
// @Param KeyWord query string true "报告标题/创建人"
|
|
|
// @Param SortType query string true "排序方式"
|
|
|
// @Success 200 {object} models.ReportAuthorResp
|
|
|
-// @router /sendTemplateMsg [get]
|
|
|
+// @router /sendTemplateMsg [post]
|
|
|
func (this *MessageController) SendTemplateMsg() {
|
|
|
br := new(models.BaseResponse).Init()
|
|
|
defer func() {
|
|
|
this.Data["json"] = br
|
|
|
this.ServeJSON()
|
|
|
}()
|
|
|
- pageSize, _ := this.GetInt("PageSize")
|
|
|
- currentIndex, _ := this.GetInt("CurrentIndex")
|
|
|
- permissionIds := this.GetString("PermissionIds")
|
|
|
- analystIds := this.GetString("AnalystIds")
|
|
|
- sortType := this.GetString("SortType")
|
|
|
- KeyWord := this.GetString("KeyWord")
|
|
|
- var permissionCondition string
|
|
|
- var condition string
|
|
|
- var pars []interface{}
|
|
|
-
|
|
|
- if pageSize <= 0 {
|
|
|
- pageSize = utils.PageSize20
|
|
|
- }
|
|
|
- if currentIndex <= 0 {
|
|
|
- currentIndex = 1
|
|
|
+ var req request.WxMessageReq
|
|
|
+ err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
|
|
|
+ if req.DataId <= 0 {
|
|
|
+ br.Msg = "DataId为空"
|
|
|
+ return
|
|
|
}
|
|
|
- if KeyWord != "" {
|
|
|
- condition += " AND media_name like '%" + KeyWord + "%'"
|
|
|
+ if req.DataType == "" {
|
|
|
+ br.Msg = "DataType为空"
|
|
|
+ return
|
|
|
}
|
|
|
- var permissionPars []interface{}
|
|
|
- if permissionIds != "" {
|
|
|
- permissionArr := strings.Split(permissionIds, ",")
|
|
|
- for _, permissionId := range permissionArr {
|
|
|
- perId, _ := strconv.Atoi(permissionId)
|
|
|
- permissionPars = append(permissionPars, perId)
|
|
|
+ sendData := make(map[string]interface{})
|
|
|
+ if req.DataType == Report {
|
|
|
+ var report *models.Report
|
|
|
+ report, err = models.GetReportById(req.DataId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "发送模版消息失败"
|
|
|
+ br.ErrMsg = "获取报告失败"
|
|
|
+ return
|
|
|
}
|
|
|
- permissionCondition += " AND permission_id in (" + utils.GetOrmReplaceHolder(len(permissionPars)) + ")"
|
|
|
- ids, err := models.GetMappingsByCondition(permissionCondition, permissionPars)
|
|
|
+ err = report.UpdateSendStatus()
|
|
|
if err != nil {
|
|
|
- condition += " AND id in (" + utils.GetOrmReplaceHolder(len(ids)) + ")"
|
|
|
- pars = append(pars, ids)
|
|
|
+ br.Msg = "发送模版消息失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("更新发送状态失败,Err:%v", err)
|
|
|
+ return
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- if analystIds != "" {
|
|
|
- analystIdArr := strings.Split(analystIds, ",")
|
|
|
- var authorIds []int
|
|
|
- for _, analystId := range analystIdArr {
|
|
|
- id, _ := strconv.Atoi(analystId)
|
|
|
- authorIds = append(authorIds, id)
|
|
|
+ models.
|
|
|
+ sendData["keyword1"] = map[string]interface{}{"value": report., "color": "#173177"}
|
|
|
+ sendData["keyword2"] = map[string]interface{}{"value": report.Title, "color": "#173177"}
|
|
|
+ sendData["keyword3"] = map[string]interface{}{"value": report.PublishedTime, "color": "#173177"}
|
|
|
+ sendData["keyword4"] = map[string]interface{}{"value": report.Abstract, "color": "#173177"}
|
|
|
+ }
|
|
|
+ if req.DataType == Audio {
|
|
|
+ var media *models.Media
|
|
|
+ media, err = models.GetMediaById(models.Audio, req.DataId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "发送模版消息失败"
|
|
|
+ br.ErrMsg = "获取音频失败"
|
|
|
+ return
|
|
|
}
|
|
|
- condition += " AND author_id in (" + utils.GetOrmReplaceHolder(len(authorIds)) + ")"
|
|
|
- pars = append(pars, authorIds)
|
|
|
+ err = media.UpdateSendStatus()
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "发送模版消息失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("更新发送状态失败,Err:%v", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ sendData["keyword1"] = map[string]interface{}{"value": "线上音频", "color": "#173177"}
|
|
|
+ sendData["keyword2"] = map[string]interface{}{"value": media.MediaName, "color": "#173177"}
|
|
|
+ sendData["keyword3"] = map[string]interface{}{"value": media.CreatedTime, "color": "#173177"}
|
|
|
}
|
|
|
- sortCondition := " ORDER BY published_time "
|
|
|
- if sortType == "" {
|
|
|
- sortType = "DESC"
|
|
|
+ if req.DataType == Video {
|
|
|
+ var media *models.Media
|
|
|
+ media, err = models.GetMediaById(models.Video, req.DataId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "发送模版消息失败"
|
|
|
+ br.ErrMsg = "获取音频失败"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ err = media.UpdateSendStatus()
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "发送模版消息失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("更新发送状态失败,Err:%v", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ sendData["keyword1"] = map[string]interface{}{"value": "线上视频", "color": "#173177"}
|
|
|
+ sendData["keyword2"] = map[string]interface{}{"value": media.MediaName, "color": "#173177"}
|
|
|
+ sendData["keyword3"] = map[string]interface{}{"value": media.CreatedTime, "color": "#173177"}
|
|
|
}
|
|
|
- sortCondition = sortCondition + sortType
|
|
|
- total, err := models.GetMediaCountByCondition(models.Video, condition, pars)
|
|
|
+ users, err := models.GetTemplateUserList()
|
|
|
if err != nil {
|
|
|
- br.Msg = "获取视频列表失败"
|
|
|
- br.ErrMsg = "获取视频列表统计失败,Err:" + err.Error()
|
|
|
+ br.Msg = "发送模版消息失败"
|
|
|
+ br.ErrMsg = "获取用户OPENID失败,Err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
- startSize := utils.StartIndex(currentIndex, pageSize)
|
|
|
- List, err := models.GetMediaByCondition(models.Video, condition, sortCondition, pars, startSize, pageSize)
|
|
|
+ var openIds []*services.OpenIdList
|
|
|
+ for _, user := range users {
|
|
|
+ openId := &services.OpenIdList{
|
|
|
+ OpenId: user.OpenId,
|
|
|
+ UserId: user.Id,
|
|
|
+ }
|
|
|
+ openIds = append(openIds, openId)
|
|
|
+ }
|
|
|
+ services.SendMultiTemplateMsg(sendData, openIds, req.DataId, req.DataType)
|
|
|
if err != nil {
|
|
|
br.Msg = "获取视频列表失败"
|
|
|
- br.ErrMsg = "获取视频列表失败,Err:" + err.Error()
|
|
|
+ br.ErrMsg = "获取视频列表统计失败,Err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
- var reportViewList []*models.MessageMedia
|
|
|
- for _, report := range List {
|
|
|
- reportView := report.ToMessageView()
|
|
|
- reportViewList = append(reportViewList, reportView)
|
|
|
- }
|
|
|
- page := paging.GetPaging(currentIndex, pageSize, total)
|
|
|
- resp := new(response.MessageMediaListResp)
|
|
|
- resp.List = reportViewList
|
|
|
- resp.Paging = page
|
|
|
-
|
|
|
br.Ret = 200
|
|
|
br.Success = true
|
|
|
br.Data = resp
|