|
@@ -0,0 +1,556 @@
|
|
|
|
+package controllers
|
|
|
|
+
|
|
|
|
+import (
|
|
|
|
+ "encoding/json"
|
|
|
|
+ "eta_gn/eta_api/models"
|
|
|
|
+ "eta_gn/eta_api/models/system"
|
|
|
|
+ "eta_gn/eta_api/services"
|
|
|
|
+ "eta_gn/eta_api/services/ice_message"
|
|
|
|
+ "eta_gn/eta_api/utils"
|
|
|
|
+ "fmt"
|
|
|
|
+ "strconv"
|
|
|
|
+ "strings"
|
|
|
|
+ "time"
|
|
|
|
+
|
|
|
|
+ "github.com/rdlucklib/rdluck_tools/paging"
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+type ReportIceMessageController struct {
|
|
|
|
+ BaseAuthController
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// MsgConfig
|
|
|
|
+// @Title 消息推送配置
|
|
|
|
+// @Description 消息推送配置
|
|
|
|
+// @Param Id query int true "版本ID"
|
|
|
|
+// @Success 200 {object} models.ReportIceMsgConfigReq
|
|
|
|
+// @router /ice_msg/config [post]
|
|
|
|
+func (c *ReportIceMessageController) IceMsgConfig() {
|
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
|
+ defer func() {
|
|
|
|
+ c.Data["json"] = br
|
|
|
|
+ c.ServeJSON()
|
|
|
|
+ }()
|
|
|
|
+
|
|
|
|
+ var req models.ReportIceMsgConfigReq
|
|
|
|
+ err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
|
|
|
|
+ if err != nil {
|
|
|
|
+ br.Msg = "参数解析异常!"
|
|
|
|
+ br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if req.ClassifyId <= 0 {
|
|
|
|
+ br.Msg = "分类ID不能为空"
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if len(req.NotifyUsers) == 0 {
|
|
|
|
+ br.Msg = "通知用户列表不能为空"
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ configObj := new(models.ReportMessageConfig)
|
|
|
|
+ // 获取配置
|
|
|
|
+ config, err := configObj.GetItemByClassifyId(req.ClassifyId)
|
|
|
|
+ if err != nil && !utils.IsErrNoRow(err) {
|
|
|
|
+ br.Msg = "获取配置失败"
|
|
|
|
+ br.ErrMsg = "获取配置失败,Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if config == nil || config.ConfigId <= 0 {
|
|
|
|
+ notifyUsers := make([]string, 0)
|
|
|
|
+ for _, id := range req.NotifyUsers {
|
|
|
|
+ uid := strconv.Itoa(id)
|
|
|
|
+ notifyUsers = append(notifyUsers, uid)
|
|
|
|
+ }
|
|
|
|
+ // 新增配置
|
|
|
|
+ config = &models.ReportMessageConfig{
|
|
|
|
+ ClassifyId: req.ClassifyId,
|
|
|
|
+ NotifyUsers: strings.Join(notifyUsers, ","),
|
|
|
|
+ CreateTime: time.Now(),
|
|
|
|
+ ModifyTime: time.Now(),
|
|
|
|
+ }
|
|
|
|
+ err = config.Create()
|
|
|
|
+ if err != nil {
|
|
|
|
+ br.Msg = "新增配置失败"
|
|
|
|
+ br.ErrMsg = "新增配置失败,Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ // 更新配置
|
|
|
|
+ notifyUsers := make([]string, 0)
|
|
|
|
+ for _, id := range req.NotifyUsers {
|
|
|
|
+ uid := strconv.Itoa(id)
|
|
|
|
+ notifyUsers = append(notifyUsers, uid)
|
|
|
|
+ }
|
|
|
|
+ config.NotifyUsers = strings.Join(notifyUsers, ",")
|
|
|
|
+ config.ModifyTime = time.Now()
|
|
|
|
+ err = config.Update([]string{"notify_users", "modify_time"})
|
|
|
|
+ if err != nil {
|
|
|
|
+ br.Msg = "更新配置失败"
|
|
|
|
+ br.ErrMsg = "更新配置失败,Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ br.Msg = "操作成功"
|
|
|
|
+ br.Ret = 200
|
|
|
|
+ br.Success = true
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// MsgRecord
|
|
|
|
+// @Title 消息推送记录
|
|
|
|
+// @Description 消息推送记录
|
|
|
|
+// @Param Id query int true "版本ID"
|
|
|
|
+// @Success 200 {object} models.ReportIceMsgConfigReq
|
|
|
|
+// @router /ice_msg/record [get]
|
|
|
|
+func (c *ReportIceMessageController) IceMsgRecord() {
|
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
|
+ defer func() {
|
|
|
|
+ c.Data["json"] = br
|
|
|
|
+ c.ServeJSON()
|
|
|
|
+ }()
|
|
|
|
+ // 根据分类ID,分类类型,推送状态,推送时间,分页查询
|
|
|
|
+ pageSize, _ := c.GetInt("PageSize")
|
|
|
|
+ currentIndex, _ := c.GetInt("CurrentIndex")
|
|
|
|
+ classifyId, _ := c.GetInt("ClassifyId")
|
|
|
|
+ classifyType, _ := c.GetInt("ClassifyType")
|
|
|
|
+ sendStatus, _ := c.GetInt("Status")
|
|
|
|
+ sendTime := c.GetString("SendTime")
|
|
|
|
+ reportTitle := c.GetString("ReportTitle")
|
|
|
|
+
|
|
|
|
+ if pageSize <= 0 {
|
|
|
|
+ pageSize = utils.PageSize20
|
|
|
|
+ }
|
|
|
|
+ if currentIndex <= 0 {
|
|
|
|
+ currentIndex = 1
|
|
|
|
+ }
|
|
|
|
+ startSize := utils.StartIndex(currentIndex, pageSize)
|
|
|
|
+ condition := ""
|
|
|
|
+ pars := make([]interface{}, 0)
|
|
|
|
+
|
|
|
|
+ if sendTime != "" {
|
|
|
|
+ // 校验时间格式
|
|
|
|
+ _, err := time.Parse(utils.FormatDate, sendTime)
|
|
|
|
+ if err != nil {
|
|
|
|
+ br.Msg = "时间格式错误"
|
|
|
|
+ br.ErrMsg = "时间格式错误,Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ startTime, _ := time.Parse(utils.FormatDate, sendTime)
|
|
|
|
+ endTime := startTime.AddDate(0, 0, 1)
|
|
|
|
+ condition += " AND send_time >= ? and send_time < ?"
|
|
|
|
+ pars = append(pars, startTime)
|
|
|
|
+ pars = append(pars, endTime)
|
|
|
|
+ }
|
|
|
|
+ if classifyId > 0 {
|
|
|
|
+ condition += " AND classify_id = ?"
|
|
|
|
+ pars = append(pars, classifyId)
|
|
|
|
+ }
|
|
|
|
+ if classifyType > 0 {
|
|
|
|
+ condition += " AND classify_type = ?"
|
|
|
|
+ pars = append(pars, classifyType)
|
|
|
|
+ }
|
|
|
|
+ if sendStatus > 0 {
|
|
|
|
+ condition += " AND status = ?"
|
|
|
|
+ pars = append(pars, sendStatus)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if reportTitle != "" {
|
|
|
|
+ condition += " AND report_title like ?"
|
|
|
|
+ pars = append(pars, "%"+reportTitle+"%")
|
|
|
|
+ }
|
|
|
|
+ recordObj := new(models.ReportMessageRecord)
|
|
|
|
+ total, err := recordObj.GetListCount(condition, pars)
|
|
|
|
+ if err != nil {
|
|
|
|
+ br.Msg = "查询失败"
|
|
|
|
+ br.ErrMsg = "查询失败,Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ tmpList, err := recordObj.GetList(condition, pars, startSize, pageSize)
|
|
|
|
+ if err != nil {
|
|
|
|
+ br.Msg = "查询失败"
|
|
|
|
+ br.ErrMsg = "查询失败,Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ // 获取分类名称
|
|
|
|
+ classifyFullNameMap := make(map[int]string)
|
|
|
|
+ // 有三级分类,想要获取全称,一级/二级/三级
|
|
|
|
+ classifyList, err := models.GetAllClassifyOrderByLevel()
|
|
|
|
+ if err != nil {
|
|
|
|
+ br.Msg = "查询失败"
|
|
|
|
+ br.ErrMsg = "查询失败,Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ for _, item := range classifyList {
|
|
|
|
+ if item.ParentId == 0 {
|
|
|
|
+ classifyFullNameMap[item.Id] = item.ClassifyName
|
|
|
|
+ }else if item.ParentId >0 {
|
|
|
|
+ parentClassifyName, ok := classifyFullNameMap[item.ParentId]
|
|
|
|
+ if ok {
|
|
|
|
+ classifyFullNameMap[item.Id] = parentClassifyName + "/" + item.ClassifyName
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 查找账号名称
|
|
|
|
+ adminIds := make([]int, 0)
|
|
|
|
+ adminNameMap := make(map[int]string)
|
|
|
|
+ for _, item := range tmpList {
|
|
|
|
+ adminIds = append(adminIds, int(item.SendAdminId), int(item.ReceiveAdminId))
|
|
|
|
+ }
|
|
|
|
+ adminList, err := system.GetAdminListByIdList(adminIds)
|
|
|
|
+ if err != nil {
|
|
|
|
+ br.Msg = "查询失败"
|
|
|
|
+ br.ErrMsg = "查询失败,Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ for _, item := range adminList {
|
|
|
|
+ adminNameMap[int(item.AdminId)] = item.RealName
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ list := make([]*models.ReportIceMsgRecordListItem, 0)
|
|
|
|
+ for _, item := range tmpList {
|
|
|
|
+ list = append(list, &models.ReportIceMsgRecordListItem{
|
|
|
|
+ MessageId: item.MessageId,
|
|
|
|
+ ReportId: item.ReportId,
|
|
|
|
+ ReportTitle: item.ReportTitle,
|
|
|
|
+ PptId: item.PptId,
|
|
|
|
+ ClassifyId: item.ClassifyId,
|
|
|
|
+ ClassifyFullName: classifyFullNameMap[item.ClassifyId],
|
|
|
|
+ SendAdminId: item.SendAdminId,
|
|
|
|
+ SendAdminName: adminNameMap[int(item.SendAdminId)],
|
|
|
|
+ ReceiveAdminId: item.ReceiveAdminId,
|
|
|
|
+ ReceiveAdminName: adminNameMap[int(item.ReceiveAdminId)],
|
|
|
|
+ ClassifyType: item.ClassifyType,
|
|
|
|
+ SendTime: item.SendTime.Format(utils.FormatDateTime),
|
|
|
|
+ Status: item.Status,
|
|
|
|
+ CreateTime: item.CreateTime.Format(utils.FormatDateTime),
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ page := paging.GetPaging(currentIndex, pageSize, total)
|
|
|
|
+ resp := new(models.ReportIceMsgRecordListResp)
|
|
|
|
+ resp.Paging = page
|
|
|
|
+ resp.List = list
|
|
|
|
+ br.Ret = 200
|
|
|
|
+ br.Success = true
|
|
|
|
+ br.Msg = "获取成功"
|
|
|
|
+ br.Data = resp
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 消息推送
|
|
|
|
+// @Title 消息推送
|
|
|
|
+// @Description 消息推送
|
|
|
|
+// @Param Id query int true "版本ID"
|
|
|
|
+// @Success 200 {object} models.ReportIceMsgConfigReq
|
|
|
|
+// @router /ice_msg/push [post]
|
|
|
|
+func (c *ReportIceMessageController) IceMsgPush() {
|
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
|
+ defer func() {
|
|
|
|
+ c.Data["json"] = br
|
|
|
|
+ c.ServeJSON()
|
|
|
|
+ }()
|
|
|
|
+ sysUser := c.SysUser
|
|
|
|
+ if sysUser == nil {
|
|
|
|
+ br.Msg = "请登录"
|
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
|
+ br.Ret = 408
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var req models.ReportIceMsgPushReq
|
|
|
|
+ err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
|
|
|
|
+ if err != nil {
|
|
|
|
+ br.Msg = "参数解析异常!"
|
|
|
|
+ br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ sendClassifyId := 0
|
|
|
|
+ classifyType := 1
|
|
|
|
+ if req.ReportId > 0 {
|
|
|
|
+ classifyType = 1
|
|
|
|
+ }else if req.PptId > 0 {
|
|
|
|
+ classifyType = 2
|
|
|
|
+ }
|
|
|
|
+ // 新增缓存判断消息还在处理中
|
|
|
|
+ cacheKey := fmt.Sprintf("%s_%d_%d", utils.CACHE_REPORT_ICE_MSG_PUSH, req.ReportId, req.PptId)
|
|
|
|
+ if !utils.Rc.SetNX(cacheKey, 1, 30*time.Second) {
|
|
|
|
+ br.Msg = "系统处理中,请稍后重试!"
|
|
|
|
+ br.ErrMsg = "系统处理中,请稍后重试!" + sysUser.RealName + ";data:" + string(c.Ctx.Input.RequestBody)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ defer func() {
|
|
|
|
+ _ = utils.Rc.Delete(cacheKey)
|
|
|
|
+ }()
|
|
|
|
+ var title, summary, content string
|
|
|
|
+ var reportInfo *models.Report
|
|
|
|
+ var pptInfo *models.PptV2
|
|
|
|
+ var classifyName string
|
|
|
|
+ var url string
|
|
|
|
+ // 根据类型判断
|
|
|
|
+ if classifyType == 1 {// 推送研报
|
|
|
|
+ if req.ReportId <= 0 {
|
|
|
|
+ br.Msg = "研报ID不能为空"
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ //查询研报
|
|
|
|
+ reportInfo, err = models.GetBaseReportInfoByReportId(int(req.ReportId))
|
|
|
|
+ if err != nil {
|
|
|
|
+ if !utils.IsErrNoRow(err) {
|
|
|
|
+ br.Msg = "查询失败"
|
|
|
|
+ br.ErrMsg = "查询失败,Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }else{
|
|
|
|
+ br.Msg = "研报不存在"
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //判断研报状态,只有已发布的研报和已审核的研报才能推动
|
|
|
|
+ if reportInfo.State != 2 && reportInfo.State != 6 {
|
|
|
|
+ br.Msg = "该研报未发布,请发布后重试"
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ sendClassifyId = reportInfo.ClassifyIdThird
|
|
|
|
+ if sendClassifyId <= 0 {
|
|
|
|
+ sendClassifyId = reportInfo.ClassifyIdSecond
|
|
|
|
+ }
|
|
|
|
+ if sendClassifyId <= 0 {
|
|
|
|
+ sendClassifyId = reportInfo.ClassifyIdFirst
|
|
|
|
+ }
|
|
|
|
+ title = reportInfo.Title
|
|
|
|
+ content = reportInfo.Title
|
|
|
|
+ url = reportInfo.DetailPdfUrl
|
|
|
|
+ } else if classifyType == 2 {// 推送PPT
|
|
|
|
+ if req.PptId <= 0 {
|
|
|
|
+ br.Msg = "PPTID不能为空"
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ // PPT
|
|
|
|
+ pptInfo, err = models.GetBasePptV2ByPptId(int(req.PptId))
|
|
|
|
+ if err != nil {
|
|
|
|
+ br.Msg = "PPT不存在"
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if pptInfo.State != 2 && pptInfo.State != 6 {
|
|
|
|
+ br.Msg = "该PPT未发布,请发布后重试"
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ sendClassifyId = pptInfo.ClassifyId
|
|
|
|
+ title = pptInfo.Title
|
|
|
|
+ content = pptInfo.Title
|
|
|
|
+ url = pptInfo.PptxUrl
|
|
|
|
+ }
|
|
|
|
+ // 获取分类名称
|
|
|
|
+ classify, err := models.GetClassifyById(sendClassifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ if !utils.IsErrNoRow(err) {
|
|
|
|
+ br.Msg = "查询失败"
|
|
|
|
+ br.ErrMsg = "查询失败,Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }else{
|
|
|
|
+ br.Msg = "分类不存在"
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ classifyName = classify.ClassifyName
|
|
|
|
+
|
|
|
|
+ // 判断该分类是否设置了消息推送配置
|
|
|
|
+ configObj := new(models.ReportMessageConfig)
|
|
|
|
+ config, err := configObj.GetItemByClassifyId(sendClassifyId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ if !utils.IsErrNoRow(err) {
|
|
|
|
+ br.Msg = "查询失败"
|
|
|
|
+ br.ErrMsg = "查询失败,Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }else{
|
|
|
|
+ br.Msg = "该报告分类未设置接收人,请配置后重试"
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if config == nil || config.ConfigId <= 0 {
|
|
|
|
+ br.Msg = "该报告分类未设置接收人,请配置后重试"
|
|
|
|
+ return
|
|
|
|
+ }else if config.NotifyUsers == "" {
|
|
|
|
+ br.Msg = "该报告分类未设置接收人,请配置后重试"
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 获取推送人的工号
|
|
|
|
+ adminids := strings.Split(config.NotifyUsers, ",")
|
|
|
|
+
|
|
|
|
+ adminList, err := system.GetSysAdminByIdSlice(adminids)
|
|
|
|
+ if err != nil {
|
|
|
|
+ br.Msg = "查询失败"
|
|
|
|
+ br.ErrMsg = "查询失败,Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if len(adminList) == 0 {
|
|
|
|
+ br.Msg = "该报告分类未设置接收人,请配置后重试"
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ // 生成推送记录
|
|
|
|
+ recordList := make([]*models.ReportMessageRecord, 0)
|
|
|
|
+ successCount := 0
|
|
|
|
+ for _, item := range adminList {
|
|
|
|
+ if item.EmployeeId != "" {
|
|
|
|
+ // 推送模版消息
|
|
|
|
+ sendStatus := 1
|
|
|
|
+ // 生成taskId
|
|
|
|
+ taskId := utils.MD5(fmt.Sprintf("%d_%d_%d_%s", req.ReportId, req.PptId, item.AdminId, time.Now().Format("20060102150405")))
|
|
|
|
+
|
|
|
|
+ err = ice_message.PushIceMessage(title, summary, content, item.EmployeeId, taskId, req.ReportId, req.PptId, url, classifyName)
|
|
|
|
+ if err != nil {
|
|
|
|
+ sendStatus = 2
|
|
|
|
+ }else{
|
|
|
|
+ successCount++
|
|
|
|
+ }
|
|
|
|
+ pushRecord := &models.ReportMessageRecord{
|
|
|
|
+ ReportId: int64(req.ReportId),
|
|
|
|
+ PptId: int64(req.PptId),
|
|
|
|
+ ReportTitle: title,
|
|
|
|
+ ClassifyId: sendClassifyId,
|
|
|
|
+ ClassifyType: int8(classifyType),
|
|
|
|
+ SendAdminId: int64(sysUser.AdminId),
|
|
|
|
+ SendTime: time.Now(),
|
|
|
|
+ ReceiveAdminId: int64(item.AdminId),
|
|
|
|
+ ReceiveAdminCode: item.EmployeeId,
|
|
|
|
+ Status: int8(sendStatus),
|
|
|
|
+ CreateTime: time.Now(),
|
|
|
|
+ ModifyTime: time.Now(),
|
|
|
|
+ TaskId: taskId,
|
|
|
|
+ }
|
|
|
|
+ recordList = append(recordList, pushRecord)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ recordObj := new(models.ReportMessageRecord)
|
|
|
|
+ err = recordObj.BatchAdd(recordList)
|
|
|
|
+ if err != nil {
|
|
|
|
+ br.Msg = "推送失败"
|
|
|
|
+ br.ErrMsg = "推送失败,Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if successCount > 0 {
|
|
|
|
+ sendTime := time.Now()
|
|
|
|
+ // 更新报告表的推送记录
|
|
|
|
+ if classifyType == 1 {
|
|
|
|
+ reportInfo.MsgIsSend = 1
|
|
|
|
+ reportInfo.MsgSendTime = sendTime
|
|
|
|
+ err = reportInfo.Update([]string{"MsgIsSend", "MsgSendTime"})
|
|
|
|
+ if err != nil {
|
|
|
|
+ br.Msg = "更新推送记录失败"
|
|
|
|
+ br.ErrMsg = "更新推送记录失败,Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ }else if classifyType == 2 {
|
|
|
|
+ pptInfo.MsgIsSend = 1
|
|
|
|
+ pptInfo.MsgSendTime = sendTime
|
|
|
|
+ err = pptInfo.Update([]string{"MsgIsSend", "MsgSendTime"})
|
|
|
|
+ if err != nil {
|
|
|
|
+ br.Msg = "更新推送记录失败"
|
|
|
|
+ br.ErrMsg = "更新推送记录失败,Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ br.Msg = "推送成功"
|
|
|
|
+ br.Success = true
|
|
|
|
+ br.Ret = 200
|
|
|
|
+ br.Data = &models.ReportIceMsgPushResp{
|
|
|
|
+ MsgSendTime: sendTime,
|
|
|
|
+ }
|
|
|
|
+ }else{
|
|
|
|
+ br.Msg = "推送失败"
|
|
|
|
+ br.ErrMsg = "推送失败,Err:" + err.Error()
|
|
|
|
+ br.Ret = 408
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// ListClassify
|
|
|
|
+// @Title 获取分类列表
|
|
|
|
+// @Description 获取分类列表
|
|
|
|
+// @Param KeyWord query string true "检索关键词"
|
|
|
|
+// @Param ClassifyType query int false "分类类型:0-全部(默认);1-研报;2-PPT"
|
|
|
|
+// @Param Enabled query int false "启用状态:-1-全部(默认);0-禁用;1-启用"
|
|
|
|
+// @Success 200 {object} models.Classify
|
|
|
|
+// @router /ice_msg/classify [get]
|
|
|
|
+func (c *ReportIceMessageController) ListClassify() {
|
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
|
+ defer func() {
|
|
|
|
+ c.Data["json"] = br
|
|
|
|
+ c.ServeJSON()
|
|
|
|
+ }()
|
|
|
|
+
|
|
|
|
+ classifyNames := make([]string, 0)
|
|
|
|
+ classifyNames = append(classifyNames, utils.REPORT_ICE_MSG_CLASSIFY_NAMES...)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 获取所有分类
|
|
|
|
+ originList, err := models.GetClassifyListByClassifyNameList(classifyNames)
|
|
|
|
+ if err != nil {
|
|
|
|
+ br.Msg = "获取失败"
|
|
|
|
+ br.ErrMsg = "获取失败,Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ //查找所有的父级分类
|
|
|
|
+ parentIds := make([]int, 0)
|
|
|
|
+ for _, v := range originList {
|
|
|
|
+ // 解析levelpath
|
|
|
|
+ levelPath := strings.Split(v.LevelPath, ",")
|
|
|
|
+ for _, i := range levelPath {
|
|
|
|
+ if i != "" {
|
|
|
|
+ parentId, _ := strconv.Atoi(i)
|
|
|
|
+ parentIds = append(parentIds, parentId)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ originList, err = models.GetClassifyListByParentIdList(parentIds)
|
|
|
|
+ if err != nil {
|
|
|
|
+ br.Msg = "获取失败"
|
|
|
|
+ br.ErrMsg = "获取失败,Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ list := originList
|
|
|
|
+ classifyIds := make([]int, 0)
|
|
|
|
+ for _, v := range list {
|
|
|
|
+ classifyIds = append(classifyIds, v.Id)
|
|
|
|
+ }
|
|
|
|
+ // 指定分类类型(上级中的分类类型可能与最下层的不一致,但是要把上级也一起取出来, 这需求...=_=!)'
|
|
|
|
+ reportMsgConfigMap := make(map[int][]int)
|
|
|
|
+ // 根据分类ID获取配置项
|
|
|
|
+ reportMsgObj := new(models.ReportMessageConfig)
|
|
|
|
+ configList, err := reportMsgObj.GetListByClassifyIdList(classifyIds)
|
|
|
|
+ if err != nil {
|
|
|
|
+ br.Msg = "获取失败"
|
|
|
|
+ br.ErrMsg = "获取失败,Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for _, v := range configList {
|
|
|
|
+ if v.NotifyUsers != "" {
|
|
|
|
+ notifyUsers := strings.Split(v.NotifyUsers, ",")
|
|
|
|
+ for _, user := range notifyUsers {
|
|
|
|
+ userInt, _ := strconv.Atoi(user)
|
|
|
|
+ reportMsgConfigMap[v.ClassifyId] = append(reportMsgConfigMap[v.ClassifyId], userInt)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ for _, v := range list {
|
|
|
|
+ if iceMessageUsers, ok := reportMsgConfigMap[v.Id]; ok {
|
|
|
|
+ v.IceMsgUsers = iceMessageUsers
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 先将分类列表排序
|
|
|
|
+ services.SortClassifyListBySortAndCreateTime(list)
|
|
|
|
+ // 接着转换结构
|
|
|
|
+ list = services.GetClassifyListTreeRecursive(list, 0)
|
|
|
|
+ // 过滤掉没有子目录的分类
|
|
|
|
+ list = services.RecursiveFilterNoChildTreeClassify(list)
|
|
|
|
+
|
|
|
|
+ resp := new(models.ClassifyListResp)
|
|
|
|
+ resp.List = list
|
|
|
|
+ br.Data = resp
|
|
|
|
+ br.Ret = 200
|
|
|
|
+ br.Success = true
|
|
|
|
+ br.Msg = "获取成功"
|
|
|
|
+}
|