|
@@ -7,12 +7,14 @@ import (
|
|
|
"hongze/hz_eta_api/controllers"
|
|
|
"hongze/hz_eta_api/models"
|
|
|
"hongze/hz_eta_api/models/company"
|
|
|
+ "hongze/hz_eta_api/models/system"
|
|
|
"hongze/hz_eta_api/services"
|
|
|
"hongze/hz_eta_api/services/alarm_msg"
|
|
|
"hongze/hz_eta_api/utils"
|
|
|
"html"
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
+ "sync"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
@@ -389,55 +391,114 @@ func (this *EnglishReportController) ListReport() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- total, err := models.GetEnglishReportListCount(condition, pars, companyType)
|
|
|
- if err != nil {
|
|
|
- br.Msg = "获取失败"
|
|
|
- br.ErrMsg = "获取失败,Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
- list, err := models.GetEnglishReportList(condition, pars, companyType, startSize, pageSize)
|
|
|
- if err != nil {
|
|
|
- br.Msg = "获取失败"
|
|
|
- br.ErrMsg = "获取失败,Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
+ var total int
|
|
|
+ var errCount, errList, errOther error
|
|
|
+ var authOk bool
|
|
|
+ list := make([]*models.EnglishReportList, 0)
|
|
|
+ failMap := make(map[int]bool, 0)
|
|
|
+ adminMap := make(map[int]string, 0)
|
|
|
|
|
|
-
|
|
|
- conf := new(models.EnglishReportEmailConf)
|
|
|
- authKey := "english_report_email_conf"
|
|
|
- confAuth, e := company.GetConfigDetailByCode(authKey)
|
|
|
- if e != nil {
|
|
|
- br.Msg = "获取失败"
|
|
|
- br.ErrMsg = "获取群发邮件权限失败, Err: " + e.Error()
|
|
|
- return
|
|
|
- }
|
|
|
- if confAuth.ConfigValue == "" {
|
|
|
+ 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", "stage", "msg_is_send", "report_code", "pv", "share_url",
|
|
|
+ "pv_email", "email_state", "from_report_id", "key_takeaways", "admin_id", "admin_real_name",
|
|
|
+ }
|
|
|
+ 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
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ 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()
|
|
|
+
|
|
|
+ if errCount != nil {
|
|
|
br.Msg = "获取失败"
|
|
|
- br.ErrMsg = "群发邮件配置为空"
|
|
|
+ br.ErrMsg = errCount.Error()
|
|
|
return
|
|
|
}
|
|
|
- if e := json.Unmarshal([]byte(confAuth.ConfigValue), &conf); e != nil {
|
|
|
+ if errList != nil {
|
|
|
br.Msg = "获取失败"
|
|
|
- br.ErrMsg = "群发邮件配置有误"
|
|
|
+ br.ErrMsg = errList.Error()
|
|
|
return
|
|
|
}
|
|
|
- authOk := false
|
|
|
- authArr := strings.Split(conf.SendAuthGroup, ",")
|
|
|
- if utils.InArrayByStr(authArr, sysUser.RoleTypeCode) {
|
|
|
- authOk = true
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- failList, e := models.GetEnglishReportEmailLogFailList(0)
|
|
|
- if e != nil {
|
|
|
+ if errOther != nil {
|
|
|
br.Msg = "获取失败"
|
|
|
- br.ErrMsg = "获取群发邮件记录失败, Err: " + e.Error()
|
|
|
+ br.ErrMsg = errOther.Error()
|
|
|
return
|
|
|
}
|
|
|
- failMap := make(map[int]bool, 0)
|
|
|
- for i := range failList {
|
|
|
- failMap[failList[i].ReportId] = true
|
|
|
- }
|
|
|
|
|
|
for _, item := range list {
|
|
|
if item.State == 2 {
|
|
@@ -445,37 +506,42 @@ func (this *EnglishReportController) ListReport() {
|
|
|
}
|
|
|
item.EmailAuth = authOk
|
|
|
item.EmailHasFail = failMap[item.Id]
|
|
|
+
|
|
|
|
|
|
if item.PvEmail > 0 {
|
|
|
item.Pv = 0
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- opUserId, _ := utils.Rc.RedisInt(key)
|
|
|
-
|
|
|
- if opUserId <= 0 || (opUserId == this.SysUser.AdminId) {
|
|
|
- item.CanEdit = true
|
|
|
- } else {
|
|
|
- adminInfo, errAdmin := system.GetSysUserById(opUserId)
|
|
|
- if errAdmin != nil {
|
|
|
- br.Msg = "获取失败"
|
|
|
- br.ErrMsg = "获取失败,Err:" + errAdmin.Error()
|
|
|
- return
|
|
|
+
|
|
|
+ var opUser models.MarkReportItem
|
|
|
+ key := fmt.Sprint(`crm:enReport:edit:`, item.Id)
|
|
|
+ opUserId, e := utils.Rc.RedisInt(key)
|
|
|
+ if e != nil {
|
|
|
+ str, te := utils.Rc.RedisString(key)
|
|
|
+ if te == nil {
|
|
|
+ te = json.Unmarshal([]byte(str), &opUser)
|
|
|
+ if te == nil {
|
|
|
+ opUserId = opUser.AdminId
|
|
|
+ }
|
|
|
}
|
|
|
- item.Editor = adminInfo.RealName
|
|
|
- }*/
|
|
|
- markStatus, err := services.UpdateEnReportEditMark(item.Id, this.SysUser.AdminId, 2, this.SysUser.RealName)
|
|
|
- if err != nil {
|
|
|
- br.Msg = "查询标记状态失败"
|
|
|
- br.ErrMsg = "查询标记状态失败,Err:" + err.Error()
|
|
|
- return
|
|
|
}
|
|
|
- if markStatus.Status == 0 {
|
|
|
+ var ret models.MarkReportResp
|
|
|
+ if opUserId > 0 && opUserId != sysUser.AdminId {
|
|
|
+ editor := opUser.Editor
|
|
|
+ if editor == "" {
|
|
|
+ editor = adminMap[opUserId]
|
|
|
+ }
|
|
|
+ ret.Status = 1
|
|
|
+ ret.Msg = fmt.Sprintf("当前%s正在编辑报告", editor)
|
|
|
+ ret.Editor = editor
|
|
|
+ }
|
|
|
+ if ret.Status == 0 {
|
|
|
item.CanEdit = true
|
|
|
} else {
|
|
|
- item.Editor = markStatus.Editor
|
|
|
+ item.Editor = ret.Editor
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
page := paging.GetPaging(currentIndex, pageSize, total)
|
|
|
resp := new(models.EnglishReportListResp)
|
|
|
resp.Paging = page
|