|
@@ -16,7 +16,6 @@ import (
|
|
"html"
|
|
"html"
|
|
"strconv"
|
|
"strconv"
|
|
"strings"
|
|
"strings"
|
|
- "sync"
|
|
|
|
"time"
|
|
"time"
|
|
)
|
|
)
|
|
|
|
|
|
@@ -449,143 +448,70 @@ func (this *EnglishReportController) ListReport() {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- // 未群发邮件(包含推送邮件失败的)
|
|
|
|
- if emailState == 1 {
|
|
|
|
- failIds, e := models.GetHasFailEmailLogReportIds()
|
|
|
|
- if e != nil {
|
|
|
|
- br.Msg = "获取失败"
|
|
|
|
- br.ErrMsg = "获取存在邮件推送失败记录的英文报告IDs失败, Err:" + e.Error()
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- condition += ` AND email_state = 0`
|
|
|
|
- if len(failIds) > 0 {
|
|
|
|
- condition += ` OR id IN (` + utils.GetOrmInReplace(len(failIds)) + `)`
|
|
|
|
- pars = append(pars, failIds)
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- // 已群发邮件
|
|
|
|
- if emailState == 2 {
|
|
|
|
- successIds, e := models.GetSuccessEmailLogReportIds()
|
|
|
|
- if e != nil {
|
|
|
|
- br.Msg = "获取失败"
|
|
|
|
- br.ErrMsg = "获取邮件推送记录均为成功的英文报告IDs失败, Err:" + e.Error()
|
|
|
|
- return
|
|
|
|
|
|
+
|
|
|
|
+ // 群发邮件状态筛选
|
|
|
|
+ {
|
|
|
|
+ // 未群发邮件(包含推送邮件失败的)
|
|
|
|
+ if emailState == 1 {
|
|
|
|
+ condition += ` AND (email_state = 0 OR email_has_fail = 1) `
|
|
}
|
|
}
|
|
- condition += ` AND email_state = 1`
|
|
|
|
- if len(successIds) > 0 {
|
|
|
|
- condition += ` AND id IN (` + utils.GetOrmInReplace(len(successIds)) + `)`
|
|
|
|
- pars = append(pars, successIds)
|
|
|
|
|
|
+ // 已群发邮件
|
|
|
|
+ if emailState == 2 {
|
|
|
|
+ condition += ` AND email_state = 1 AND email_has_fail = 0 `
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- var total int
|
|
|
|
- var errCount, errList, errOther error
|
|
|
|
var authOk bool
|
|
var authOk bool
|
|
- list := make([]*models.EnglishReportList, 0)
|
|
|
|
- failMap := make(map[int]bool, 0) // 有群发失败记录的研报
|
|
|
|
adminMap := make(map[int]string, 0) // 编辑中的研究员姓名
|
|
adminMap := make(map[int]string, 0) // 编辑中的研究员姓名
|
|
|
|
+ total, e := models.GetEnglishReportListCount(condition, pars, companyType)
|
|
|
|
+ if e != nil {
|
|
|
|
+ br.Msg = "获取失败"
|
|
|
|
+ br.ErrMsg = "获取英文研报Count失败, Err: " + e.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
|
|
- wg := sync.WaitGroup{}
|
|
|
|
- wg.Add(3)
|
|
|
|
-
|
|
|
|
- // 列表总数
|
|
|
|
- go func() {
|
|
|
|
- defer func() {
|
|
|
|
- wg.Done()
|
|
|
|
- }()
|
|
|
|
-
|
|
|
|
- t, e := models.GetEnglishReportListCount(condition, pars, companyType)
|
|
|
|
- if e != nil {
|
|
|
|
- errCount = fmt.Errorf("获取英文研报Count失败, Err: %s", e.Error())
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- total = t
|
|
|
|
- }()
|
|
|
|
-
|
|
|
|
- // 列表数据
|
|
|
|
- go func() {
|
|
|
|
- defer func() {
|
|
|
|
- wg.Done()
|
|
|
|
- }()
|
|
|
|
-
|
|
|
|
- // 限制一下富文本字段, 列表用不到
|
|
|
|
- fieldArr := []string{
|
|
|
|
- "id", "add_type", "classify_id_first", "classify_name_first", "classify_id_second", "classify_name_second", "title", "abstract", "author",
|
|
|
|
- "frequency", "create_time", "modify_time", "state", "publish_time", "pre_publish_time", "stage", "msg_is_send", "report_code", "pv", "share_url",
|
|
|
|
- "pv_email", "email_state", "from_report_id", "key_takeaways", "admin_id", "admin_real_name", "approve_time", "detail_img_url", "detail_pdf_url",
|
|
|
|
- }
|
|
|
|
- items, e := models.GetEnglishReportList(condition, pars, companyType, startSize, pageSize, fieldArr)
|
|
|
|
- if e != nil {
|
|
|
|
- errList = fmt.Errorf("获取英文研报列表失败, Err: %s", e.Error())
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- list = items
|
|
|
|
- }()
|
|
|
|
-
|
|
|
|
- // 群发权限/失败记录
|
|
|
|
- go func() {
|
|
|
|
- defer func() {
|
|
|
|
- wg.Done()
|
|
|
|
- }()
|
|
|
|
-
|
|
|
|
- // 获取邮件配置-是否有权限群发
|
|
|
|
- conf := new(models.EnglishReportEmailConf)
|
|
|
|
- authKey := "english_report_email_conf"
|
|
|
|
- confAuth, e := company.GetConfigDetailByCode(authKey)
|
|
|
|
- if e != nil {
|
|
|
|
- errOther = fmt.Errorf("获取群发邮件权限失败, Err: %s", e.Error())
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- if confAuth.ConfigValue == "" {
|
|
|
|
- errOther = fmt.Errorf("群发邮件配置为空")
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- if e := json.Unmarshal([]byte(confAuth.ConfigValue), &conf); e != nil {
|
|
|
|
- errOther = fmt.Errorf("群发邮件配置有误")
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- authArr := strings.Split(conf.SendAuthGroup, ",")
|
|
|
|
- if utils.InArrayByStr(authArr, sysUser.RoleTypeCode) {
|
|
|
|
- authOk = true
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 是否有群发邮件失败的记录,标记红点
|
|
|
|
- failList, e := models.GetEnglishReportEmailLogFailList(0)
|
|
|
|
- if e != nil {
|
|
|
|
- errOther = fmt.Errorf("获取群发邮件记录失败, Err: %s", e.Error())
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- for i := range failList {
|
|
|
|
- failMap[failList[i].ReportId] = true
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 获取admin, 用于匹配编辑中的研究员姓名
|
|
|
|
- admins, e := system.GetSysAdminList("", make([]interface{}, 0), []string{"admin_id", "real_name"}, "")
|
|
|
|
- if e != nil {
|
|
|
|
- errOther = fmt.Errorf("获取系统用户列表失败, Err: %s", e.Error())
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- for _, a := range admins {
|
|
|
|
- adminMap[a.AdminId] = a.RealName
|
|
|
|
- }
|
|
|
|
- }()
|
|
|
|
- wg.Wait()
|
|
|
|
|
|
+ list, e := models.GetEnglishReportList(condition, pars, companyType, startSize, pageSize, []string{})
|
|
|
|
+ if e != nil {
|
|
|
|
+ br.Msg = "获取失败"
|
|
|
|
+ br.ErrMsg = "获取英文研报列表失败, Err: " + e.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
|
|
- if errCount != nil {
|
|
|
|
|
|
+ // 获取邮件配置-是否有权限群发
|
|
|
|
+ conf := new(models.EnglishReportEmailConf)
|
|
|
|
+ authKey := "english_report_email_conf"
|
|
|
|
+ confAuth, e := company.GetConfigDetailByCode(authKey)
|
|
|
|
+ if e != nil {
|
|
br.Msg = "获取失败"
|
|
br.Msg = "获取失败"
|
|
- br.ErrMsg = errCount.Error()
|
|
|
|
|
|
+ br.ErrMsg = "获取群发邮件权限失败, Err: " + e.Error()
|
|
return
|
|
return
|
|
}
|
|
}
|
|
- if errList != nil {
|
|
|
|
|
|
+ if confAuth.ConfigValue == "" {
|
|
br.Msg = "获取失败"
|
|
br.Msg = "获取失败"
|
|
- br.ErrMsg = errList.Error()
|
|
|
|
|
|
+ br.ErrMsg = "群发邮件配置为空"
|
|
return
|
|
return
|
|
}
|
|
}
|
|
- if errOther != nil {
|
|
|
|
|
|
+ if e = json.Unmarshal([]byte(confAuth.ConfigValue), &conf); e != nil {
|
|
br.Msg = "获取失败"
|
|
br.Msg = "获取失败"
|
|
- br.ErrMsg = errOther.Error()
|
|
|
|
|
|
+ br.ErrMsg = "群发邮件配置有误, Err: " + e.Error()
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
+ authArr := strings.Split(conf.SendAuthGroup, ",")
|
|
|
|
+ if utils.InArrayByStr(authArr, sysUser.RoleTypeCode) {
|
|
|
|
+ authOk = true
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 获取admin, 用于匹配编辑中的研究员姓名
|
|
|
|
+ admins, e := system.GetSysAdminList("", make([]interface{}, 0), []string{"admin_id", "real_name"}, "")
|
|
|
|
+ if e != nil {
|
|
|
|
+ br.Msg = "获取失败"
|
|
|
|
+ br.ErrMsg = "获取系统用户列表失败, Err: " + e.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ for _, a := range admins {
|
|
|
|
+ adminMap[a.AdminId] = a.RealName
|
|
|
|
+ }
|
|
|
|
+
|
|
// 查询分类信息
|
|
// 查询分类信息
|
|
var classifyIdSecondSlice []int
|
|
var classifyIdSecondSlice []int
|
|
for _, item := range list {
|
|
for _, item := range list {
|
|
@@ -603,21 +529,17 @@ func (this *EnglishReportController) ListReport() {
|
|
classifyNameMap[v.Id] = v
|
|
classifyNameMap[v.Id] = v
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- for _, item := range list {
|
|
|
|
- if item.State == 2 {
|
|
|
|
- item.ShareUrl = "https://share.hzinsights.com/reportEn?code=" + item.ReportCode
|
|
|
|
- }
|
|
|
|
- item.EmailAuth = authOk
|
|
|
|
- item.EmailHasFail = failMap[item.Id]
|
|
|
|
-
|
|
|
|
- // 邮箱PV大于0的时候, 不展示最初版本的PV
|
|
|
|
- if item.PvEmail > 0 {
|
|
|
|
- item.Pv = 0
|
|
|
|
|
|
+ respList := make([]*models.EnglishReportList, 0)
|
|
|
|
+ for _, v := range list {
|
|
|
|
+ t := models.FormatEnglishReport2ListItem(v)
|
|
|
|
+ if v.State == 2 {
|
|
|
|
+ t.ShareUrl = "https://share.hzinsights.com/reportEn?code=" + v.ReportCode
|
|
}
|
|
}
|
|
|
|
+ t.EmailAuth = authOk
|
|
|
|
|
|
// 报告是否正在编辑中
|
|
// 报告是否正在编辑中
|
|
var opUser models.MarkReportItem
|
|
var opUser models.MarkReportItem
|
|
- key := fmt.Sprint(`crm:enReport:edit:`, item.Id)
|
|
|
|
|
|
+ key := fmt.Sprint(`crm:enReport:edit:`, v.Id)
|
|
opUserId, e := utils.Rc.RedisInt(key)
|
|
opUserId, e := utils.Rc.RedisInt(key)
|
|
if e != nil {
|
|
if e != nil {
|
|
str, te := utils.Rc.RedisString(key)
|
|
str, te := utils.Rc.RedisString(key)
|
|
@@ -635,31 +557,36 @@ func (this *EnglishReportController) ListReport() {
|
|
editor = adminMap[opUserId]
|
|
editor = adminMap[opUserId]
|
|
}
|
|
}
|
|
ret.Status = 1
|
|
ret.Status = 1
|
|
- ret.Msg = fmt.Sprintf("当前%s正在编辑报告", editor)
|
|
|
|
|
|
+ if this.Lang == utils.EnLangVersion {
|
|
|
|
+ ret.Msg = fmt.Sprintf("%s is currently editing the report", editor)
|
|
|
|
+ } else {
|
|
|
|
+ ret.Msg = fmt.Sprintf("当前%s正在编辑报告", editor)
|
|
|
|
+ }
|
|
ret.Editor = editor
|
|
ret.Editor = editor
|
|
}
|
|
}
|
|
if ret.Status == 0 {
|
|
if ret.Status == 0 {
|
|
- item.CanEdit = true
|
|
|
|
|
|
+ t.CanEdit = true
|
|
} else {
|
|
} else {
|
|
- item.Editor = ret.Editor
|
|
|
|
|
|
+ t.Editor = ret.Editor
|
|
}
|
|
}
|
|
|
|
|
|
//处理分类名
|
|
//处理分类名
|
|
- if n, ok := classifyNameMap[item.ClassifyIdSecond]; ok {
|
|
|
|
|
|
+ if n, ok := classifyNameMap[v.ClassifyIdSecond]; ok {
|
|
if n.RootId == 0 {
|
|
if n.RootId == 0 {
|
|
- item.FullClassifyName = strings.Join([]string{n.ParentName, n.ClassifyName}, "/")
|
|
|
|
|
|
+ t.FullClassifyName = strings.Join([]string{n.ParentName, n.ClassifyName}, "/")
|
|
} else {
|
|
} else {
|
|
- item.FullClassifyName = strings.Join([]string{n.RootName, n.ParentName, n.ClassifyName}, "/")
|
|
|
|
|
|
+ t.FullClassifyName = strings.Join([]string{n.RootName, n.ParentName, n.ClassifyName}, "/")
|
|
}
|
|
}
|
|
- item.ClassifyIdRoot = n.RootId
|
|
|
|
- item.ClassifyNameRoot = n.RootName
|
|
|
|
|
|
+ t.ClassifyIdRoot = n.RootId
|
|
|
|
+ t.ClassifyNameRoot = n.RootName
|
|
}
|
|
}
|
|
|
|
+ respList = append(respList, t)
|
|
}
|
|
}
|
|
|
|
|
|
page := paging.GetPaging(currentIndex, pageSize, total)
|
|
page := paging.GetPaging(currentIndex, pageSize, total)
|
|
resp := new(models.EnglishReportListResp)
|
|
resp := new(models.EnglishReportListResp)
|
|
resp.Paging = page
|
|
resp.Paging = page
|
|
- resp.List = list
|
|
|
|
|
|
+ resp.List = respList
|
|
br.Ret = 200
|
|
br.Ret = 200
|
|
br.Success = true
|
|
br.Success = true
|
|
br.Msg = "获取成功"
|
|
br.Msg = "获取成功"
|