Browse Source

移除英文报告相关代码

- 删除了 AliyunEmail 结构体中的 SendEmail 和 BatchSendEmail 方法
- 移除了与英文报告相关的数据库模型注册代码
- 删除了 elastic 服务中的 EsAddOrEditEnglishReport 方法
Roc 4 tháng trước cách đây
mục cha
commit
b2cc653bcc
47 tập tin đã thay đổi với 108 bổ sung15287 xóa
  1. 0 2247
      controllers/english_report/email.go
  2. 0 561
      controllers/english_report/en_permission.go
  3. 0 661
      controllers/english_report/english_auth.go
  4. 0 772
      controllers/english_report/english_classify.go
  5. 0 770
      controllers/english_report/english_company.go
  6. 0 680
      controllers/english_report/english_company_todo.go
  7. 0 552
      controllers/english_report/english_video.go
  8. 0 206
      controllers/english_report/policy_report.go
  9. 0 1442
      controllers/english_report/report.go
  10. 0 137
      controllers/eta_trial/questionnaire.go
  11. 0 68
      controllers/eta_trial/user.go
  12. 12 57
      controllers/report_approve/report_approve.go
  13. 24 83
      controllers/report_approve/report_approve_flow.go
  14. 2 10
      controllers/report_author.go
  15. 7 0
      models/data_manage/edb_info.go
  16. 0 24
      models/db2.go
  17. 0 165
      models/en_classify_permission.go
  18. 0 134
      models/en_company_permission.go
  19. 0 253
      models/en_permission.go
  20. 0 88
      models/en_video_cover.go
  21. 0 54
      models/english_classify.go
  22. 0 219
      models/english_company.go
  23. 0 38
      models/english_company_log.go
  24. 0 221
      models/english_company_todo.go
  25. 0 53
      models/english_company_todo_public.go
  26. 0 159
      models/english_policy_report.go
  27. 0 922
      models/english_report.go
  28. 0 258
      models/english_report_email.go
  29. 0 153
      models/english_report_email_log.go
  30. 0 46
      models/english_report_email_op_log.go
  31. 0 154
      models/english_report_email_pv.go
  32. 0 292
      models/english_video.go
  33. 0 738
      routers/commentsRouter.go
  34. 0 29
      routers/router.go
  35. 0 109
      services/aliyun_email.go
  36. 0 73
      services/elastic.go
  37. 0 169
      services/english_classify.go
  38. 0 119
      services/english_company_todo.go
  39. 0 170
      services/english_permission.go
  40. 0 239
      services/english_policy_report.go
  41. 0 990
      services/english_report.go
  42. 0 222
      services/english_video.go
  43. 38 218
      services/report_approve.go
  44. 16 61
      services/smart_report.go
  45. 0 497
      services/task.go
  46. 0 129
      services/tencent_yun.go
  47. 9 45
      services/user_login.go

+ 0 - 2247
controllers/english_report/email.go

@@ -1,2247 +0,0 @@
-package english_report
-
-import (
-	"encoding/json"
-	"eta_gn/eta_api/controllers"
-	"eta_gn/eta_api/models"
-	"eta_gn/eta_api/models/company"
-	"eta_gn/eta_api/services"
-	"eta_gn/eta_api/services/alarm_msg"
-	"eta_gn/eta_api/utils"
-	"fmt"
-	"os"
-	"path"
-	"strconv"
-	"strings"
-	"time"
-
-	"github.com/beego/beego/v2/server/web"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"github.com/tealeg/xlsx"
-)
-
-// EnglishReportEmailController 英文研报邮箱/英文客户联系人
-type EnglishReportEmailController struct {
-	controllers.BaseAuthController
-}
-
-type EnglishReportEmailCallBackController struct {
-	web.Controller
-}
-
-// List
-// @Title 英文研报邮箱列表
-// @Description 英文研报邮箱列表
-// @Param   CompanyId	query	int		false	"客户ID"
-// @Param   Keywords	query	string	false	"关键词:联系人名称/邮箱地址"
-// @Param   SortType	query	int		false	"点击量排序方式:1-倒序;2-正序"
-// @Param   SortParam	query	int		false	"排序字段:1-点击量;2-点击时间 3-用户状态"
-// @Param   ListParam   query   int  	false   "筛选字段参数,用来筛选的字段, 枚举值:1:正式 、 2:临时 、 3:终止 、4:正式+临时 "
-// @Success 200 {object} models.EnglishReportEmailPageListResp
-// @router /email/list [get]
-func (this *EnglishReportEmailController) List() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	companyId, _ := this.GetInt("CompanyId", 0)
-	keywords := this.GetString("Keywords", "")
-	sortType, _ := this.GetInt("SortType", 1)
-	sortParam, _ := this.GetInt("SortParam", 1)
-	listParam, _ := this.GetInt("ListParam", 1)
-
-	var cond, order string
-	var pars []interface{}
-	if companyId > 0 {
-		cond += ` AND a.company_id = ?`
-		pars = append(pars, companyId)
-	}
-	if keywords != "" {
-		k := "%" + keywords + "%"
-		cond += ` AND (a.name LIKE ? OR a.email LIKE ? OR a.mobile LIKE ?)`
-		pars = append(pars, k, k, k)
-	}
-
-	sortParamArr := []int{1, 2, 3}
-	sortTypeArr := []int{1, 2}
-	if utils.InArrayByInt(sortParamArr, sortParam) && utils.InArrayByInt(sortTypeArr, sortType) {
-		pMap := map[int]string{1: "a.view_total", 2: "a.last_view_time", 3: "a.enabled"}
-		tMap := map[int]string{1: "DESC", 2: "ASC"}
-		order = fmt.Sprintf(` ORDER BY %s %s`, pMap[sortParam], tMap[sortType])
-	}
-
-	if listParam == 1 {
-		cond += ` AND a.status = 1`
-	}
-	if listParam == 2 {
-		cond += ` AND a.status = 2`
-	}
-	if listParam == 3 {
-		cond += ` AND a.status = 3`
-	}
-	if listParam == 4 {
-		cond += ` AND (a.status = 1 OR a.status = 2)`
-	}
-	var startSize int
-	pageSize, _ := this.GetInt("PageSize")
-	currentIndex, _ := this.GetInt("CurrentIndex")
-	if pageSize <= 0 {
-		pageSize = utils.PageSize20
-	}
-	if currentIndex <= 0 {
-		currentIndex = 1
-	}
-	startSize = paging.StartIndex(currentIndex, pageSize)
-
-	total, list, e := models.GetEnglishReportEmailPageList(cond, pars, order, startSize, pageSize)
-	if e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取邮箱列表失败, Err: " + e.Error()
-		return
-	}
-
-	respList := make([]*models.EnglishReportEmailResp, 0)
-	for i := range list {
-		item := &models.EnglishReportEmailResp{
-			Id:                  list[i].Id,
-			Name:                list[i].Name,
-			Email:               list[i].Email,
-			Mobile:              list[i].Mobile,
-			CountryCode:         list[i].CountryCode,
-			BusinessCardUrl:     list[i].BusinessCardUrl,
-			AdminName:           list[i].AdminName,
-			CreateTime:          list[i].CreateTime.Format(utils.FormatDateTime),
-			ViewTotal:           list[i].ViewTotal,
-			Enabled:             list[i].Enabled,
-			CompanyName:         list[i].CompanyName,
-			RegisterCompanyName: list[i].RegisterCompanyName,
-			RegisterTime:        list[i].RegisterTime.Format(utils.FormatDateTime),
-		}
-		if item.RegisterTime == "0001-01-01 00:00:00" {
-			item.RegisterTime = ""
-		}
-		respList = append(respList, item)
-	}
-
-	page := paging.GetPaging(currentIndex, pageSize, total)
-	resp := &models.EnglishReportEmailPageListResp{
-		Paging: page,
-		List:   respList,
-	}
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
-}
-
-// Save
-// @Title 保存英文研报邮箱
-// @Description 保存英文研报邮箱
-// @Param	request  body  models.EnglishReportEmailSaveReq  true  "type json string"
-// @Success 200 string "操作成功"
-// @router /email/save [post]
-func (this *EnglishReportEmailController) Save() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var req models.EnglishReportEmailSaveReq
-	if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.Name == "" {
-		br.Msg = "请输入客户名称"
-		return
-	}
-	req.Email = strings.Replace(req.Email, " ", "", -1)
-	if req.Email == "" {
-		br.Msg = "请输入邮箱"
-		return
-	}
-	if !utils.ValidateEmailFormatat(req.Email) {
-		br.Msg = "邮箱格式有误"
-		return
-	}
-
-	// 英文客户以邮箱为主, 邮箱去重, 手机号非必填, 此处不做手机号去重
-	exist, e := models.GetEnglishReportEmailByEmail(req.Email)
-	if e != nil && !utils.IsErrNoRow(e) {
-		br.Msg = "保存失败"
-		br.ErrMsg = "获取同名邮箱失败, Err:" + e.Error()
-		return
-	}
-
-	opType := 0
-	now := time.Now().Local()
-	item := new(models.EnglishReportEmail)
-	if req.Id > 0 {
-		// 更新
-		if exist != nil && exist.Id != req.Id {
-			br.Msg = "该邮箱已存在"
-			return
-		}
-		if exist != nil {
-			createTime, _ := time.Parse(utils.FormatDateTime, exist.CreateTime)
-			modifyTime, _ := time.Parse(utils.FormatDateTime, exist.ModifyTime)
-			item = &models.EnglishReportEmail{
-				Id:              exist.Id,
-				CompanyId:       exist.CompanyId,
-				Name:            exist.Name,
-				Email:           exist.Email,
-				Mobile:          exist.Mobile,
-				CountryCode:     exist.CountryCode,
-				BusinessCardUrl: exist.BusinessCardUrl,
-				ViewTotal:       exist.ViewTotal,
-				LastViewTime:    exist.LastViewTime,
-				IsDeleted:       exist.IsDeleted,
-				Enabled:         exist.Enabled,
-				AdminId:         exist.AdminId,
-				AdminName:       exist.AdminName,
-				Status:          exist.Status,
-				CompanyName:     exist.CompanyName,
-				CreateTime:      createTime,
-				ModifyTime:      modifyTime,
-			}
-		} else {
-			em, e := models.GetEnglishReportEmailById(req.Id)
-			if e != nil {
-				br.Msg = "保存失败"
-				br.ErrMsg = "获取邮箱失败, Err:" + e.Error()
-				return
-			}
-			item = em
-		}
-		item.Name = req.Name
-		item.Email = req.Email
-		item.Mobile = req.Mobile
-		item.CountryCode = req.CountryCode
-		item.BusinessCardUrl = req.BusinessCardUrl
-		item.ModifyTime = now
-		item.Enabled = req.Enabled
-		updateCols := []string{"Name", "Email", "Mobile", "CountryCode", "BusinessCardUrl", "ModifyTime", "Enabled"}
-		if e = item.Update(updateCols); e != nil {
-			br.Msg = "保存失败"
-			br.ErrMsg = "更新邮箱失败, Err:" + e.Error()
-			return
-		}
-		opType = models.EnglishReportEmailOpLogTypeEdit
-	} else {
-		// 新增
-		if exist != nil {
-			respItem := &models.EnglishReportEmailResp{
-				Id:                  exist.Id,
-				Name:                exist.Name,
-				Email:               exist.Email,
-				Mobile:              exist.Mobile,
-				CountryCode:         exist.CountryCode,
-				BusinessCardUrl:     exist.BusinessCardUrl,
-				AdminName:           exist.AdminName,
-				CreateTime:          exist.CreateTime,
-				ViewTotal:           exist.ViewTotal,
-				Enabled:             exist.Enabled,
-				CompanyName:         exist.CompanyName,
-				Status:              exist.Status,
-				RegisterCompanyName: exist.RegisterCompanyName,
-				RegisterTime:        exist.RegisterTime,
-			}
-			if respItem.RegisterTime == "0001-01-01 00:00:00" {
-				respItem.RegisterCompanyName = ""
-			}
-			br.Data = respItem
-			br.Msg = "该邮箱已存在"
-			br.Ret = 1001
-			return
-		}
-		item = &models.EnglishReportEmail{
-			CompanyId:       req.CompanyId,
-			Name:            req.Name,
-			Email:           req.Email,
-			Mobile:          req.Mobile,
-			CountryCode:     req.CountryCode,
-			BusinessCardUrl: req.BusinessCardUrl,
-			AdminId:         sysUser.AdminId,
-			AdminName:       sysUser.AdminName,
-			CreateTime:      now,
-			ModifyTime:      now,
-			Enabled:         req.Enabled,
-			Status:          1,
-		}
-		if e = item.Create(); e != nil {
-			br.Msg = "保存失败"
-			br.ErrMsg = "新增邮箱失败, Err:" + e.Error()
-			return
-		}
-		opType = models.EnglishReportEmailOpLogTypeAdd
-	}
-
-	// 更新客户状态
-	go func() {
-		_ = services.UpdateEnglishCompanyEnabledByCompanyId(item.CompanyId)
-	}()
-
-	// 记录日志
-	go func() {
-		opByte, e := json.Marshal(req)
-		if e != nil {
-			return
-		}
-		opData := string(opByte)
-		opLog := &models.EnglishReportEmailOpLog{
-			CompanyId:  item.CompanyId,
-			EmailId:    item.Id,
-			AdminId:    sysUser.AdminId,
-			OptionData: opData,
-			OptionType: opType,
-			CreateTime: now,
-		}
-		if e = opLog.Create(); e != nil {
-			return
-		}
-	}()
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-	//br.Data = item
-}
-
-// Del
-// @Title 删除英文研报邮箱
-// @Description 删除英文研报邮箱
-// @Param	request  body  models.EnglishReportEmailDelReq  true  "type json string"
-// @Success 200 string "操作成功"
-// @router /email/del [post]
-func (this *EnglishReportEmailController) Del() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var req models.EnglishReportEmailDelReq
-	if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.EmailId <= 0 {
-		br.Msg = "参数有误"
-		return
-	}
-	item, e := models.GetEnglishReportEmailById(req.EmailId)
-	if e != nil {
-		br.Msg = "联系人已被删除, 请勿重复操作"
-		return
-	}
-
-	nowTime := time.Now().Local()
-	item.IsDeleted = 1
-	item.ModifyTime = nowTime
-	updateCols := []string{"IsDeleted", "ModifyTime"}
-	if e = item.Update(updateCols); e != nil {
-		br.Msg = "删除失败"
-		br.ErrMsg = "删除英文联系人失败, Err:" + e.Error()
-		return
-	}
-
-	// 更新客户状态
-	go func() {
-		_ = services.UpdateEnglishCompanyEnabledByCompanyId(item.CompanyId)
-	}()
-
-	// 记录日志
-	go func() {
-		opByte, e := json.Marshal(req)
-		if e != nil {
-			return
-		}
-		opData := string(opByte)
-		opLog := &models.EnglishReportEmailOpLog{
-			CompanyId:  item.CompanyId,
-			EmailId:    item.Id,
-			AdminId:    sysUser.AdminId,
-			OptionData: opData,
-			OptionType: models.EnglishReportEmailOpLogTypeDel,
-			CreateTime: nowTime,
-		}
-		if e = opLog.Create(); e != nil {
-			return
-		}
-	}()
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}
-
-// EditEnabled
-// @Title 启用/禁用英文研报邮箱
-// @Description 启用/禁用英文研报邮箱
-// @Param	request  body  models.EnglishReportEditEnabledReq  true  "type json string"
-// @Success 200 string "操作成功"
-// @router /email/editEnabled [post]
-func (this *EnglishReportEmailController) EditEnabled() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var req models.EnglishReportEditEnabledReq
-	if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.EmailId <= 0 {
-		br.Msg = "参数有误"
-		return
-	}
-	if req.Enabled != 0 && req.Enabled != 1 {
-		br.Msg = "参数有误"
-		return
-	}
-	item, e := models.GetEnglishReportEmailById(req.EmailId)
-	if e != nil {
-		br.Msg = "联系人已被删除, 请勿操作"
-		return
-	}
-	if item.Enabled == req.Enabled {
-		br.Ret = 200
-		br.Success = true
-		br.Msg = "操作成功"
-		return
-	}
-
-	// 更新联系人
-	nowTime := time.Now().Local()
-	item.Enabled = req.Enabled
-	item.ModifyTime = nowTime
-	updateCols := []string{"Enabled", "ModifyTime"}
-	if e = item.Update(updateCols); e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "更新英文联系人失败, Err:" + e.Error()
-		return
-	}
-
-	// 更新所属客户状态
-	go func() {
-		_ = services.UpdateEnglishCompanyEnabledByCompanyId(item.CompanyId)
-	}()
-
-	// 记录日志
-	go func() {
-		opByte, e := json.Marshal(req)
-		if e != nil {
-			return
-		}
-		opData := string(opByte)
-		opLog := &models.EnglishReportEmailOpLog{
-			CompanyId:  item.CompanyId,
-			EmailId:    item.Id,
-			AdminId:    sysUser.AdminId,
-			OptionData: opData,
-			OptionType: models.EnglishReportEmailOpLogTypeEditEnabled,
-			CreateTime: nowTime,
-		}
-		if e = opLog.Create(); e != nil {
-			return
-		}
-	}()
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}
-
-// Send
-// @Title 群发推送
-// @Description 群发推送
-// @Param	request  body  models.EnglishReportEmailSaveReq  true  "type json string"
-// @Success 200 string "操作成功"
-// @router /email/send [post]
-func (this *EnglishReportEmailController) Send() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var req models.EnglishReportEmailSendReq
-	if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.ReportId <= 0 {
-		br.Msg = "请选择报告"
-		return
-	}
-	if req.Theme == "" {
-		br.Msg = "请输入邮件主题"
-		return
-	}
-	//prefixTheme := "【HI China Macro and Commodity】"
-	//if !strings.Contains(req.Theme, prefixTheme) {
-	//	req.Theme = prefixTheme + req.Theme
-	//}
-	runeThe := []rune(req.Theme)
-	if len(runeThe) > 100 {
-		br.Msg = "邮件主题不可超过100字符"
-		return
-	}
-
-	// 获取报告信息
-	reportInfo, e := models.GetEnglishReportItemById(req.ReportId)
-	if e != nil {
-		br.Msg = "报告信息有误"
-		br.ErrMsg = "获取报告信息失败, Err: " + e.Error()
-		return
-	}
-	if reportInfo.EmailState != 0 {
-		br.Msg = "请勿重复发送"
-		br.ErrMsg = fmt.Sprintf("报告群发邮件状态有误, 当前状态: %d", reportInfo.EmailState)
-		return
-	}
-	if reportInfo.State != 2 {
-		br.Msg = "报告未发布"
-		br.ErrMsg = fmt.Sprintf("报告状态有误, 当前状态: %d", reportInfo.State)
-		return
-	}
-	if reportInfo.Title == "" {
-		br.Msg = "报告标题有误"
-		br.ErrMsg = "报告标题为空, 不可推送"
-		return
-	}
-	if reportInfo.Content == `` {
-		br.Msg = "报告内容有误"
-		br.ErrMsg = "报告内容为空, 不可推送"
-		return
-	}
-
-	// 获取邮件配置
-	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 == "" {
-		br.Msg = "无权操作"
-		br.ErrMsg = "群发邮件配置为空"
-		return
-	}
-	if e := json.Unmarshal([]byte(confAuth.ConfigValue), &conf); e != nil {
-		br.Msg = "无权操作"
-		br.ErrMsg = "群发邮件配置有误"
-		return
-	}
-	authArr := strings.Split(conf.SendAuthGroup, ",")
-	if !utils.InArrayByStr(authArr, sysUser.RoleTypeCode) {
-		br.Msg = "无权操作"
-		return
-	}
-	noCompanyIdsMap := make(map[int]struct{})
-	if len(req.NoCompanyIds) > 0 {
-		for _, v := range req.NoCompanyIds {
-			noCompanyIdsMap[v] = struct{}{}
-		}
-	}
-	// 指定品种的客户
-	sendCompanyIds := make([]int, 0)
-	if len(req.EnPermissions) > 0 {
-		companyIds, e := models.GetEnglishCompanyIdsByEnPermissionIds(req.EnPermissions)
-		if e != nil {
-			br.Msg = "推送失败"
-			br.ErrMsg = "获取指定品种的客户IDs失败, Err: " + e.Error()
-			return
-		}
-		for _, v := range companyIds {
-			if _, ok := noCompanyIdsMap[v]; !ok {
-				sendCompanyIds = append(sendCompanyIds, v)
-			}
-		}
-	}
-
-	// 指定收件人列表
-	sendEmailIds := make([]int, 0)
-	if req.EmailIds != "" {
-		emailIdArr := strings.Split(req.EmailIds, ",")
-		if len(emailIdArr) == 0 {
-			br.Msg = "指定收件人列表有误"
-			br.ErrMsg = fmt.Sprintf("收件人列表为空, 收件人IDs: %s", req.EmailIds)
-			return
-		}
-		for _, m := range emailIdArr {
-			v, _ := strconv.Atoi(m)
-			sendEmailIds = append(sendEmailIds, v)
-		}
-	}
-	if len(sendCompanyIds) == 0 && len(sendEmailIds) == 0 {
-		br.Msg = "收件人列表为空(或收件人账号被禁用)"
-		br.ErrMsg = "收件人列表为空, 不可推送"
-		return
-	}
-	// 往正式客户id里面插入0的 目的是为了把临时客户找出来
-	sendCompanyIds = append(sendCompanyIds, 0)
-
-	emailCond := " AND enabled = 1 AND status <> 3"
-	emailPars := make([]interface{}, 0)
-	if len(sendCompanyIds) > 0 && len(sendEmailIds) > 0 {
-		emailCond += ` AND (company_id IN (` + utils.GetOrmInReplace(len(sendCompanyIds)) + `) OR id IN (` + utils.GetOrmInReplace(len(sendEmailIds)) + `))`
-		emailPars = append(emailPars, sendCompanyIds)
-		emailPars = append(emailPars, sendEmailIds)
-	}
-	if len(sendCompanyIds) > 0 && len(sendEmailIds) == 0 {
-		emailCond += ` AND company_id IN (` + utils.GetOrmInReplace(len(sendCompanyIds)) + `)`
-		emailPars = append(emailPars, sendCompanyIds)
-	}
-
-	emails, e := models.GetEnglishReportEmailList(emailCond, emailPars, "")
-	if e != nil {
-		br.Msg = "获取收件人列表失败"
-		br.ErrMsg = "获取收件人列表失败, Err: " + e.Error()
-		return
-	}
-	if len(emails) == 0 {
-		br.Msg = "收件人列表为空(或收件人账号被禁用)"
-		br.ErrMsg = "收件人列表为空, 不可推送"
-		return
-	}
-
-	// 获取模板
-	confKey := "english_report_email_tmp"
-	confTmp, e := company.GetConfigDetailByCode(confKey)
-	if e != nil {
-		br.Msg = "获取邮件模板失败"
-		br.ErrMsg = "获取邮件模板失败, Err: " + e.Error()
-		return
-	}
-	if confTmp.ConfigValue == `` {
-		br.Msg = "邮件模板有误"
-		br.ErrMsg = "邮件模板为空, 不可推送"
-		return
-	}
-
-	// 同一篇报告避免重复推送给同一个邮件
-	var cond string
-	var pars []interface{}
-	cond += ` AND report_id = ? AND send_status = 1 AND report_type = 0`
-	pars = append(pars, req.ReportId)
-	logs, e := models.GetEnglishReportEmailLogList(cond, pars)
-	if e != nil {
-		br.Msg = "推送失败"
-		br.ErrMsg = "获取邮件发送日志列表失败, Err: " + e.Error()
-		return
-	}
-	repeatMap := make(map[int]bool, 0)
-	for i := range logs {
-		if logs[i].SendStatus == 1 {
-			repeatMap[logs[i].EmailId] = true
-		}
-	}
-
-	// 推送信息
-	nowTime := time.Now().Local()
-	sendData := make([]*services.EnglishReportSendEmailRequest, 0)
-	logData := make([]*models.EnglishReportEmailLog, 0)
-	for i := range emails {
-		if repeatMap[emails[i].Id] {
-			continue
-		}
-
-		r := new(services.EnglishReportSendEmailRequest)
-		r.ReportId = reportInfo.Id
-		r.EmailId = emails[i].Id
-		r.Email = strings.Replace(emails[i].Email, " ", "", -1)
-		r.Subject = req.Theme
-		r.FromAlias = conf.FromAlias
-
-		// 获取报告Overview部分
-		if reportInfo.Overview == "" {
-			br.Msg = "报告Overview部分不可为空"
-			return
-		}
-		overview := reportInfo.Overview
-
-		// 填充模板
-		t := reportInfo.PublishTime.Format("02/01/2006")
-		l := fmt.Sprintf(utils.EnglishShareUrl+"/report/detail?code=%s", reportInfo.ReportCode)
-		ct := confTmp.ConfigValue
-		ct = strings.Replace(ct, "{{REPORT_TITLE}}", reportInfo.Title, 1)
-		ct = strings.Replace(ct, "{{REPORT_ABSTRACT}}", reportInfo.Abstract, 1)
-		ct = strings.Replace(ct, "{{REPORT_CONTENT}}", overview, 1)
-		ct = strings.Replace(ct, "{{REPORT_SHARE_LINK}}", l, 1)
-		ct = strings.Replace(ct, "{{REPORT_TIME}}", t, 1)
-		r.HtmlBody = ct
-		r.ReportTitle = reportInfo.Title
-		r.ReportAbstract = reportInfo.Abstract
-		r.ReportContent = overview
-		r.ReportShareLink = l
-		r.ReportTime = t
-		logItem := &models.EnglishReportEmailLog{
-			ReportId:   reportInfo.Id,
-			EmailId:    emails[i].Id,
-			Email:      emails[i].Email,
-			Source:     models.EnglishReportEmailLogSourceAli,
-			SendStatus: models.EnglishReportEmailLogStatusIng,
-			CreateTime: nowTime,
-		}
-		r.EmailLog = logItem
-		sendData = append(sendData, r)
-
-		// 日志
-		logData = append(logData, logItem)
-	}
-	if len(sendData) == 0 {
-		br.Msg = "无邮件可推送"
-		return
-	}
-
-	// 写入日志
-	for _, v := range logData {
-		if e = v.Create(); e != nil {
-			br.Msg = "操作失败"
-			br.ErrMsg = "写入群发邮件日志失败, Err: " + e.Error()
-			return
-		}
-	}
-	//emailLog := new(models.EnglishReportEmailLog)
-	//if e = emailLog.InsertMulti(logData); e != nil {
-	//	br.Msg = "操作失败"
-	//	br.ErrMsg = "批量写入群发邮件日志失败, Err: " + e.Error()
-	//	return
-	//}
-
-	// 修改推送状态
-	updateCols := []string{"EmailState", "ModifyTime"}
-	reportInfo.EmailState = 1
-	reportInfo.ModifyTime = time.Now().Local()
-	if e = reportInfo.Update(updateCols); e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "更新推送状态失败, Err: " + e.Error()
-		return
-	}
-
-	// 群发邮件
-	go func() {
-		services.BatchSendAliEnglishReportEmail(sendData)
-	}()
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}
-
-// PvList
-// @Title 英文研报邮箱PV列表
-// @Description 英文研报邮箱PV列表
-// @Param   ReportId	query	int	false	"英文研报ID"
-// @Param   ReportType	query	int	false	"类型:0英文研报,1英文线上路演"
-// @Success 200 {object} models.EnglishReportEmailPvResp
-// @router /email/pv_list [get]
-func (this *EnglishReportEmailController) PvList() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	reportId, e := this.GetInt("ReportId", 0)
-	if reportId == 0 {
-		br.Msg = "参数有误"
-		return
-	}
-	reportType, e := this.GetInt("ReportType", 0)
-
-	var cond string
-	var pars []interface{}
-	cond += ` AND a.report_id = ? AND a.report_type= ?`
-	pars = append(pars, reportId, reportType)
-
-	var startSize int
-	pageSize, _ := this.GetInt("PageSize")
-	currentIndex, _ := this.GetInt("CurrentIndex")
-	if pageSize <= 0 {
-		pageSize = utils.PageSize20
-	}
-	if currentIndex <= 0 {
-		currentIndex = 1
-	}
-	startSize = paging.StartIndex(currentIndex, pageSize)
-
-	total, list, e := models.GetEnglishReportEmailPvPageList(cond, pars, startSize, pageSize)
-	if e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取英文研报邮箱pv列表失败, Err: " + e.Error()
-		return
-	}
-
-	page := paging.GetPaging(currentIndex, pageSize, total)
-	resp := &models.EnglishReportEmailPvPageListResp{
-		Paging: page,
-		List:   list,
-	}
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
-}
-
-// UvList
-// @Title 英文研报邮箱UV列表
-// @Description 英文研报邮箱UV列表
-// @Param   ReportId	query	int	false	"英文研报ID"
-// @Param   ReportType	query	int	false	"类型:0英文研报,1英文线上路演"
-// @Success 200 {object} models.EnglishReportEmailPvResp
-// @router /email/uv_list [get]
-func (this *EnglishReportEmailController) UvList() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	reportId, e := this.GetInt("ReportId", 0)
-	if reportId == 0 {
-		br.Msg = "参数有误"
-		return
-	}
-	reportType, e := this.GetInt("ReportType", 0)
-
-	var cond string
-	var pars []interface{}
-	cond += ` AND a.report_id = ? AND a.report_type= ?`
-	pars = append(pars, reportId, reportType)
-
-	var startSize int
-	pageSize, _ := this.GetInt("PageSize")
-	currentIndex, _ := this.GetInt("CurrentIndex")
-	if pageSize <= 0 {
-		pageSize = utils.PageSize20
-	}
-	if currentIndex <= 0 {
-		currentIndex = 1
-	}
-	startSize = paging.StartIndex(currentIndex, pageSize)
-
-	total, list, e := models.GetEnglishReportEmailUvPageList(cond, pars, startSize, pageSize)
-	if e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取英文研报邮箱uv列表失败, Err: " + e.Error()
-		return
-	}
-
-	page := paging.GetPaging(currentIndex, pageSize, total)
-	resp := &models.EnglishReportEmailUvPageListResp{
-		Paging: page,
-		List:   list,
-	}
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
-}
-
-// ImportListMatch
-// @Title 英文邮箱/联系人批量导入
-// @Description 英文邮箱/联系人批量导入
-// @Param   File  query  file  true  "文件"
-// @Param   CompanyId  query  int  true  "客户ID"
-// @Success 200 string "导入成功"
-// @router /email/import [post]
-func (this *EnglishReportEmailController) ImportListMatch() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请重新登录"
-		return
-	}
-
-	companyId, _ := this.GetInt("CompanyId")
-	if companyId <= 0 {
-		br.Msg = "请选择客户"
-		return
-	}
-	companyItem, e := models.GetEnglishCompanyById(companyId)
-	if e != nil {
-		if utils.IsErrNoRow(e) {
-			br.Msg = "客户已被删除, 请刷新页面"
-			return
-		}
-		br.Msg = "操作失败"
-		br.ErrMsg = "获取客户信息失败, Err: " + e.Error()
-		return
-	}
-
-	file, h, err := this.GetFile("File")
-	if err != nil {
-		br.Msg = "获取文件失败"
-		br.ErrMsg = "获取文件失败,Err:" + err.Error()
-		return
-	}
-	defer func() {
-		_ = file.Close()
-	}()
-	ext := path.Ext(h.Filename)
-	if ext != ".xlsx" && ext != ".xls" {
-		br.Msg = "请上传Excel文件"
-		return
-	}
-
-	uploadDir := "static/xls"
-	err = os.MkdirAll(uploadDir, utils.DIR_MOD)
-	if err != nil {
-		br.Msg = "存储目录创建失败"
-		br.ErrMsg = "存储目录创建失败,Err:" + err.Error()
-		return
-	}
-	uploadPath := uploadDir + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + h.Filename
-	err = this.SaveToFile("File", uploadPath)
-	if err != nil {
-		br.Msg = "文件保存失败"
-		br.ErrMsg = "文件保存失败,Err:" + err.Error()
-		return
-	}
-	defer func() {
-		_ = os.Remove(uploadPath)
-	}()
-	xlFile, err := xlsx.OpenFile(uploadPath)
-	if err != nil {
-		br.Msg = "文件导入失败"
-		br.ErrMsg = "文件导入失败,Err:" + err.Error()
-		return
-	}
-
-	// 重复邮箱校验
-	var cond string
-	var pars []interface{}
-	emails, e := models.GetEnglishReportEmailList(cond, pars, "")
-	if e != nil {
-		br.Msg = "导入失败"
-		br.ErrMsg = "获取邮箱列表失败, Err:" + e.Error()
-		return
-	}
-	emailArr := make([]string, 0)
-	for i := range emails {
-		emailArr = append(emailArr, emails[i].Email)
-	}
-
-	importList := make([]*models.EnglishReportEmailSaveReq, 0)
-	// 遍历sheet页读取
-	titleRow := []string{"联系人姓名", "国际区号", "手机号", "邮箱地址"}
-	for _, sheet := range xlFile.Sheets {
-		// 遍历行读取
-		maxRow := sheet.MaxRow
-		for i := 0; i < maxRow; i++ {
-			// 首行
-			if i == 0 {
-				row := sheet.Row(i)
-				cells := row.Cells
-				for k, cell := range cells {
-					text := cell.String()
-					for k2 := range titleRow {
-						if k > k2 {
-							break
-						}
-						if text != titleRow[k] && !strings.Contains(text, titleRow[k]) {
-							br.Msg = fmt.Sprintf("匹配失败, 请按模板导入(%s)", titleRow[k])
-							br.ErrMsg = "模板格式错误,title:" + text
-							return
-						}
-					}
-				}
-			}
-			// 数据行
-			if i >= 1 {
-				row := sheet.Row(i)
-				cells := row.Cells
-				var userName, userCountryCode, userMobile, userEmail string
-				for k, cell := range cells {
-					v := utils.TrimStr(cell.String())
-					if k == 0 {
-						userName = v
-						continue
-					}
-					if k == 1 {
-						userCountryCode = v
-						continue
-					}
-					if k == 2 {
-						userMobile = v
-						continue
-					}
-					if k == 3 {
-						userEmail = v
-					}
-				}
-				// 数据为空则读取下一行
-				if userName == "" || userEmail == "" {
-					continue
-				}
-				if !utils.ValidateEmailFormatat(userEmail) {
-					br.Msg = "存在错误的邮箱格式, 请检查后重新导入"
-					return
-				}
-				// 重复校验
-				if utils.InArrayByStr(emailArr, userEmail) {
-					continue
-				}
-				emailArr = append(emailArr, userEmail)
-				importList = append(importList, &models.EnglishReportEmailSaveReq{
-					CompanyId:   companyId,
-					Name:        userName,
-					Email:       userEmail,
-					Mobile:      userMobile,
-					CountryCode: userCountryCode,
-					Enabled:     1,
-				})
-			}
-		}
-	}
-	if len(importList) == 0 {
-		br.Msg = "无有效数据可导入"
-		return
-	}
-
-	nowTime := time.Now().Local()
-	newEmails := make([]*models.EnglishReportEmail, 0)
-	newLogs := make([]*models.EnglishReportEmailOpLog, 0)
-	for i := range importList {
-		v := &models.EnglishReportEmail{
-			CompanyId:   importList[i].CompanyId,
-			CompanyName: companyItem.CompanyName,
-			Name:        importList[i].Name,
-			Email:       importList[i].Email,
-			Mobile:      importList[i].Mobile,
-			CountryCode: importList[i].CountryCode,
-			Enabled:     importList[i].Enabled,
-			AdminId:     sysUser.AdminId,
-			AdminName:   sysUser.AdminName,
-			Status:      1,
-			CreateTime:  nowTime,
-			ModifyTime:  nowTime,
-		}
-		newEmails = append(newEmails, v)
-
-		newByte, e := json.Marshal(importList[i])
-		if e != nil {
-			br.Msg = "导入失败"
-			br.ErrMsg = "新邮箱/联系转JSON失败, Err: " + e.Error()
-			return
-		}
-		newLogs = append(newLogs, &models.EnglishReportEmailOpLog{
-			CompanyId:  importList[i].CompanyId,
-			AdminId:    sysUser.AdminId,
-			OptionData: string(newByte),
-			OptionType: models.EnglishReportEmailOpLogTypeImport,
-			CreateTime: nowTime,
-		})
-	}
-	if e = models.MultiCreateEnglishEmail(newEmails, newLogs); e != nil {
-		br.Msg = "导入失败"
-		br.ErrMsg = "批量新增英文邮箱/联系人失败, Err: " + e.Error()
-		return
-	}
-
-	br.Msg = "导入成功"
-	br.Ret = 200
-	br.Success = true
-}
-
-// ViewList
-// @Title 英文研报邮箱/联系人阅读列表
-// @Description 英文研报邮箱/联系人阅读列表
-// @Param   EmailId		query	int	false	"英文邮箱/联系人ID"
-// @Param   SortParam	query	int	false	"排序字段:1-点击量;2-点击时间"
-// @Param   SortType	query	int	false	"排序方式:1-倒序;2-正序"
-// @Param   EnPermissionIds		query	string		false	"品种权限IDs(字符串)"
-// @Success 200 {object} models.EnglishEmailViewPageListResp
-// @router /email/view_list [get]
-func (this *EnglishReportEmailController) ViewList() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	emailId, e := this.GetInt("EmailId", 0)
-	if emailId <= 0 {
-		br.Msg = "参数有误"
-		return
-	}
-	// 默认点击时间降序
-	sortParam, _ := this.GetInt("SortParam", 2)
-	sortType, _ := this.GetInt("SortType", 1)
-	clickType := this.GetString("ClickType", "")
-	strPermissionIds := this.GetString("EnPermissionIds", "")
-
-	var cond, order string
-	var pars []interface{}
-	cond += ` AND email_id = ? `
-	pars = append(pars, emailId)
-	if clickType != "" {
-		cond += ` AND report_type = ? `
-		pars = append(pars, clickType)
-	}
-
-	// 品种筛选
-	if strPermissionIds != "" {
-		permissionIdArr := strings.Split(strPermissionIds, ",")
-		permissionIds := make([]int, 0)
-		for _, s := range permissionIdArr {
-			p, e := strconv.Atoi(s)
-			if e != nil {
-				br.Msg = "品种权限有误"
-				br.ErrMsg = "品种权限筛选有误"
-				return
-			}
-			permissionIds = append(permissionIds, p)
-		}
-		if len(permissionIds) == 0 {
-			br.Msg = "品种权限有误"
-			br.ErrMsg = "品种权限筛选ID为空"
-			return
-		}
-
-		reportIds, e := models.GetEnglishReportIdsByEnPermissionIds(permissionIds)
-		if e != nil {
-			br.Msg = "获取失败"
-			br.ErrMsg = "获取报告IDs失败, Err: " + e.Error()
-			return
-		}
-		if len(reportIds) > 0 {
-			cond += fmt.Sprintf(` AND report_id IN (%s) `, utils.GetOrmInReplace(len(reportIds)))
-			pars = append(pars, reportIds)
-		} else {
-			cond += ` AND 1=2`
-		}
-	}
-
-	var startSize int
-	pageSize, _ := this.GetInt("PageSize")
-	currentIndex, _ := this.GetInt("CurrentIndex")
-	if pageSize <= 0 {
-		pageSize = utils.PageSize20
-	}
-	if currentIndex <= 0 {
-		currentIndex = 1
-	}
-	startSize = paging.StartIndex(currentIndex, pageSize)
-
-	sortArr := []int{1, 2}
-	if utils.InArrayByInt(sortArr, sortParam) && utils.InArrayByInt(sortArr, sortType) {
-		pMap := map[int]string{1: "view_total", 2: "last_view_time"}
-		tMap := map[int]string{1: "DESC", 2: "ASC"}
-		order = fmt.Sprintf(` ORDER BY %s %s`, pMap[sortParam], tMap[sortType])
-	}
-
-	total, list, e := models.GetEnglishEmailViewPageList(cond, pars, order, startSize, pageSize)
-	if e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "英文研报邮箱/联系人阅读列表失败, Err: " + e.Error()
-		return
-	}
-	// 报告标题,报告类型
-	reportMap := make(map[int]*models.EnglishReport, 0)
-	videoMap := make(map[int]*models.EnglishVideo, 0)
-	if len(list) > 0 {
-		reportIds := make([]int, 0)
-		videoIds := make([]int, 0)
-		for i := range list {
-			if list[i].ClickType == 0 {
-				reportIds = append(reportIds, list[i].ReportId)
-			} else if list[i].ClickType == 1 {
-				videoIds = append(videoIds, list[i].ReportId)
-			}
-		}
-		fields := []string{"id", "title", "classify_name_first", "classify_name_second"}
-		if len(reportIds) > 0 {
-			reports, e := models.GetEnglishReportByIds(reportIds, fields)
-			if e != nil {
-				br.Msg = "获取失败"
-				br.ErrMsg = "获取英文研报列表失败, Err: " + e.Error()
-				return
-			}
-			for i := range reports {
-				reportMap[reports[i].Id] = reports[i]
-			}
-		}
-
-		if len(videoIds) > 0 {
-			videos, e := models.GetEnglishVideoByIds(videoIds, fields)
-			if e != nil {
-				br.Msg = "获取失败"
-				br.ErrMsg = "获取英文研报列表失败, Err: " + e.Error()
-				return
-			}
-			for i := range videos {
-				videoMap[videos[i].Id] = videos[i]
-			}
-		}
-	}
-	for i := range list {
-		if r, ok := reportMap[list[i].ReportId]; ok {
-			list[i].ReportTitle = r.Title
-			list[i].ReportType = r.ClassifyNameFirst
-			if r.ClassifyNameSecond != "" {
-				list[i].ReportType += ` / ` + r.ClassifyNameSecond
-			}
-		} else if v, ok1 := videoMap[list[i].ReportId]; ok1 {
-			list[i].ReportTitle = v.Title
-			list[i].ReportType = v.ClassifyNameFirst
-			if v.ClassifyNameSecond != "" {
-				list[i].ReportType += ` / ` + v.ClassifyNameSecond
-			}
-		}
-	}
-
-	page := paging.GetPaging(currentIndex, pageSize, total)
-	resp := &models.EnglishEmailViewPageListResp{
-		Paging: page,
-		List:   list,
-	}
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
-}
-
-// LogList
-// @Title 邮件群发日志列表
-// @Description 邮件群发日志列表
-// @Param   ReportId  query  int  true  "报告ID"
-// @Param   ReportType  query  int  true  "类型:0英文研报,1英文线上路演"
-// @Param   SendStatus  query  int  false  "发送状态:-1-已发送;0-发送失败;1-发送成功"
-// @Param   Keywords	query	string	false	"关键词:邮箱"
-// @Success 200 {object} models.EnglishReportEmailLogPageListResp
-// @router /email/log_list [get]
-func (this *EnglishReportEmailController) LogList() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-	reportId, _ := this.GetInt("ReportId", 0)
-	if reportId <= 0 {
-		br.Msg = "参数有误"
-		return
-	}
-
-	reportType, _ := this.GetInt("ReportType", 0)
-	keywords := this.GetString("Keywords", "")
-
-	var startSize int
-	pageSize, _ := this.GetInt("PageSize")
-	currentIndex, _ := this.GetInt("CurrentIndex")
-	if pageSize <= 0 {
-		pageSize = utils.PageSize20
-	}
-	if currentIndex <= 0 {
-		currentIndex = 1
-	}
-	startSize = paging.StartIndex(currentIndex, pageSize)
-
-	var cond string
-	var pars []interface{}
-	cond += ` AND report_id = ? AND report_type = ?`
-	pars = append(pars, reportId, reportType)
-	// 推送状态
-	status := this.GetString("SendStatus", "")
-	if status != "" {
-		statusInt, e := strconv.Atoi(status)
-		if e != nil {
-			br.Msg = "状态类型有误"
-			return
-		}
-		cond += ` AND send_status = ?`
-		pars = append(pars, statusInt)
-	}
-	// 关键词
-	if keywords != "" {
-		k := fmt.Sprint("%", keywords, "%")
-		cond += ` AND email LIKE ? `
-		pars = append(pars, k)
-	}
-
-	total, list, e := models.GetEnglishReportEmailLogPageList(cond, pars, "", startSize, pageSize)
-	if e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取邮箱列表失败, Err: " + e.Error()
-		return
-	}
-
-	respList := make([]*models.EnglishReportEmailLogPageList, 0)
-	for i := range list {
-		v := new(models.EnglishReportEmailLogPageList)
-		// 推送结果
-		v.ResultMsg = "发送成功"
-		if list[i].ErrMsg != "" {
-			v.ResultMsg = list[i].ErrMsg
-		}
-		v.SendId = list[i].Id
-		v.ReportId = list[i].ReportId
-		v.EmailId = list[i].EmailId
-		v.Email = list[i].Email
-		v.SendStatus = list[i].SendStatus
-		v.Source = list[i].Source
-		v.CreateTime = list[i].CreateTime.Format(utils.FormatDateTime)
-		respList = append(respList, v)
-	}
-
-	page := paging.GetPaging(currentIndex, pageSize, total)
-	resp := &models.EnglishReportEmailLogPageListResp{
-		Paging: page,
-		List:   respList,
-	}
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
-}
-
-// Resend
-// @Title 重新推送
-// @Description 群发推送
-// @Param	request  body  models.EnglishReportEmailResendReq  true  "type json string"
-// @Success 200 string "操作成功"
-// @router /email/resend [post]
-func (this *EnglishReportEmailController) Resend() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var req models.EnglishReportEmailResendReq
-	if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.ReportId <= 0 {
-		br.Msg = "请选择报告"
-		return
-	}
-
-	// 获取报告信息
-	reportInfo, e := models.GetEnglishReportItemById(req.ReportId)
-	if e != nil {
-		br.Msg = "报告信息有误"
-		br.ErrMsg = "获取报告信息失败, Err: " + e.Error()
-		return
-	}
-	if reportInfo.State != 2 {
-		br.Msg = "报告未发布"
-		br.ErrMsg = fmt.Sprintf("报告状态有误, 当前状态: %d", reportInfo.State)
-		return
-	}
-	if reportInfo.Title == "" {
-		br.Msg = "报告标题有误"
-		br.ErrMsg = "报告标题为空, 不可推送"
-		return
-	}
-	if reportInfo.Content == `` {
-		br.Msg = "报告内容有误"
-		br.ErrMsg = "报告内容为空, 不可推送"
-		return
-	}
-	if reportInfo.Abstract == `` {
-		br.Msg = "报告摘要为空"
-		br.ErrMsg = "报告摘要为空, 不可推送"
-		return
-	}
-	if reportInfo.Overview == "" {
-		br.Msg = "报告Overview部分不可为空"
-		br.ErrMsg = "报告Overview为空, 不可推送"
-		return
-	}
-	// 重新发送超过100字符直接截取
-	theme := reportInfo.Abstract
-	runeAbs := []rune(reportInfo.Abstract)
-	runeThe := make([]rune, 0)
-	if len(runeAbs) > 100 {
-		runeThe = runeAbs[:100]
-		theme = string(runeThe)
-	}
-
-	// 获取邮件配置
-	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 == "" {
-		br.Msg = "无权操作"
-		br.ErrMsg = "群发邮件配置为空"
-		return
-	}
-	if e := json.Unmarshal([]byte(confAuth.ConfigValue), &conf); e != nil {
-		br.Msg = "无权操作"
-		br.ErrMsg = "群发邮件配置有误"
-		return
-	}
-	authArr := strings.Split(conf.SendAuthGroup, ",")
-	if !utils.InArrayByStr(authArr, sysUser.RoleTypeCode) {
-		br.Msg = "无权操作"
-		return
-	}
-
-	// 获取模板
-	confKey := "english_report_email_tmp"
-	confTmp, e := company.GetConfigDetailByCode(confKey)
-	if e != nil {
-		br.Msg = "获取邮件模板失败"
-		br.ErrMsg = "获取邮件模板失败, Err: " + e.Error()
-		return
-	}
-	if confTmp.ConfigValue == `` {
-		br.Msg = "邮件模板有误"
-		br.ErrMsg = "邮件模板为空, 不可推送"
-		return
-	}
-
-	// 获取发送失败的日志
-	emailIds := make([]int, 0)
-	emails := make([]*models.EnglishReportEmail, 0)
-	logIds := make([]int, 0)
-	if req.SendId > 0 {
-		logItem, e := models.GetEnglishReportEmailLogById(req.SendId)
-		if e != nil {
-			br.Msg = "发送失败"
-			br.ErrMsg = "获取原邮件推送日志失败, Err: " + e.Error()
-			return
-		}
-		emailIds = append(emailIds, logItem.EmailId)
-		logIds = append(logIds, logItem.Id)
-	} else {
-		var logCond string
-		var logPars []interface{}
-		logCond += ` AND report_id = ? AND send_status = 0 AND report_type=0`
-		logPars = append(logPars, req.ReportId)
-		logList, e := models.GetEnglishReportEmailLogList(logCond, logPars)
-		if e != nil {
-			br.Msg = "发送失败"
-			br.ErrMsg = "获取原邮件推送日志列表失败, Err: " + e.Error()
-			return
-		}
-		for i := range logList {
-			emailIds = append(emailIds, logList[i].EmailId)
-			logIds = append(logIds, logList[i].Id)
-		}
-	}
-
-	// 获取收件人列表
-	// 注: 此处不从失败日志中取email, 因为有可能是地址有误导致的推送失败
-	if len(emailIds) > 0 {
-		var emailCond string
-		var emailPars []interface{}
-		emailCond += ` AND id IN (` + utils.GetOrmInReplace(len(emailIds)) + `) and enabled = 1 `
-		emailPars = append(emailPars, emailIds)
-		em, e := models.GetEnglishReportEmailList(emailCond, emailPars, "")
-		if e != nil {
-			br.Msg = "获取收件人列表失败"
-			br.ErrMsg = "获取收件人列表失败, Err: " + e.Error()
-			return
-		}
-		emails = em
-	}
-	if len(emails) == 0 {
-		br.Msg = "无邮件可推送"
-		return
-	}
-
-	// 推送信息
-	nowTime := time.Now().Local()
-	sendData := make([]*services.EnglishReportSendEmailRequest, 0)
-	logData := make([]*models.EnglishReportEmailLog, 0)
-	for i := range emails {
-		r := new(services.EnglishReportSendEmailRequest)
-		r.ReportId = reportInfo.Id
-		r.EmailId = emails[i].Id
-		r.Email = strings.Replace(emails[i].Email, " ", "", -1)
-		r.Subject = theme
-		r.FromAlias = conf.FromAlias
-		// 填充模板
-		t := reportInfo.PublishTime.Format("02/01/2006")
-		l := fmt.Sprintf(utils.EnglishShareUrl+"/report/detail?code=%s", reportInfo.ReportCode)
-		ct := confTmp.ConfigValue
-		ct = strings.Replace(ct, "{{REPORT_TITLE}}", reportInfo.Title, 1)
-		ct = strings.Replace(ct, "{{REPORT_ABSTRACT}}", reportInfo.Abstract, 1)
-		ct = strings.Replace(ct, "{{REPORT_CONTENT}}", reportInfo.Overview, 1)
-		ct = strings.Replace(ct, "{{REPORT_SHARE_LINK}}", l, 1)
-		ct = strings.Replace(ct, "{{REPORT_TIME}}", t, 1)
-		r.HtmlBody = ct
-		r.ReportTitle = reportInfo.Title
-		r.ReportAbstract = reportInfo.Abstract
-		r.ReportContent = reportInfo.Overview
-		r.ReportShareLink = l
-		r.ReportTime = t
-		logItem := &models.EnglishReportEmailLog{
-			ReportId:   reportInfo.Id,
-			EmailId:    emails[i].Id,
-			Email:      emails[i].Email,
-			Source:     models.EnglishReportEmailLogSourceAli,
-			SendStatus: models.EnglishReportEmailLogStatusIng,
-			CreateTime: nowTime,
-		}
-		r.EmailLog = logItem
-		sendData = append(sendData, r)
-
-		// 日志
-		logData = append(logData, logItem)
-	}
-
-	// 标记原有日志为已删除
-	if len(logIds) > 0 {
-		if e = models.DeleteEnglishReportEmailLogByIds(logIds); e != nil {
-			br.Msg = "发送失败"
-			br.ErrMsg = "删除原邮件日志失败, Err: " + e.Error()
-			return
-		}
-	}
-
-	// 写入新的日志
-	for _, v := range logData {
-		if e = v.Create(); e != nil {
-			br.Msg = "操作失败"
-			br.ErrMsg = "写入群发邮件日志失败, Err: " + e.Error()
-			return
-		}
-	}
-
-	// 群发邮件
-	go func() {
-		services.BatchSendAliEnglishReportEmail(sendData)
-	}()
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}
-
-// SendCallBack
-// @Title 群发邮件回调
-// @Description 群发邮件回调
-// @Param	request  body  services.TencentEmailCallBack  true  "type json string"
-// @Success 200 string "操作成功"
-// @router /email/send/call_back [post]
-func (this *EnglishReportEmailCallBackController) SendCallBack() {
-	// 腾讯云后台同一个发信地址只能配置一个回调, 测试环境就不用了, 给正式环境用
-	if utils.RunMode != "release" {
-		return
-	}
-	var req services.TencentEmailCallBack
-	if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
-		return
-	}
-	// 仅预警失败的回调事件
-	alarmTypes := []string{"dropped", "bounce"}
-	if !utils.InArrayByStr(alarmTypes, req.Event) {
-		return
-	}
-	reqByte, e := json.Marshal(req)
-	if e != nil {
-		return
-	}
-	reqStr := string(reqByte)
-	alarm_msg.SendAlarmMsg("腾讯云邮件推送回调信息:"+reqStr, 1)
-
-	// 存在失败情况则更新日志
-	var cond string
-	var pars []interface{}
-	cond = ` AND is_deleted = 0 AND email = ? AND source = ? AND result LIKE ? `
-	pars = append(pars, req.Email, models.EnglishReportEmailLogSourceTencent, fmt.Sprint("%", req.BulkId, "%"))
-	logItem, e := models.GetEnglishReportEmailLog(cond, pars)
-	if e != nil {
-		return
-	}
-	updateCols := []string{"SendStatus", "CallbackData", "ErrMsg"}
-	logItem.SendStatus = models.EnglishReportEmailLogStatusFail
-	logItem.CallbackData = reqStr
-	logItem.ErrMsg = req.Reason
-	if e = logItem.Update(updateCols); e != nil {
-		return
-	}
-}
-
-// VideoSend
-// @Title 线上路演群发推送
-// @Description 线上路演群发推送
-// @Param	request  body  models.EnglishReportEmailSaveReq  true  "type json string"
-// @Success 200 string "操作成功"
-// @router /email/video/send [post]
-func (this *EnglishReportEmailController) VideoSend() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var req models.EnglishReportEmailSendReq
-	if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.ReportId <= 0 {
-		br.Msg = "请选择路演视频"
-		return
-	}
-	if req.Theme == "" {
-		br.Msg = "请输入邮件主题"
-		return
-	}
-	//prefixTheme := "【HI China Macro and Commodity】"
-	//if !strings.Contains(req.Theme, prefixTheme) {
-	//	req.Theme = prefixTheme + req.Theme
-	//}
-	runeThe := []rune(req.Theme)
-	if len(runeThe) > 100 {
-		br.Msg = "邮件主题不可超过100字符"
-		return
-	}
-
-	// 获取路演视频信息
-	videoInfo, e := models.GetEnglishVideoItemById(req.ReportId)
-	if e != nil {
-		br.Msg = "路演视频信息有误"
-		br.ErrMsg = "获取路演视频信息失败, Err: " + e.Error()
-		return
-	}
-	if videoInfo.EmailState != 0 {
-		br.Msg = "请勿重复发送"
-		br.ErrMsg = fmt.Sprintf("路演视频群发邮件状态有误, 当前状态: %d", videoInfo.EmailState)
-		return
-	}
-	if videoInfo.State != 2 {
-		br.Msg = "路演视频未发布"
-		br.ErrMsg = fmt.Sprintf("路演视频状态有误, 当前状态: %d", videoInfo.State)
-		return
-	}
-	if videoInfo.Title == "" {
-		br.Msg = "路演视频标题有误"
-		br.ErrMsg = "路演视频标题为空, 不可推送"
-		return
-	}
-	if videoInfo.VideoUrl == `` {
-		br.Msg = "路演视频地址为空, 不可推送"
-		br.ErrMsg = "路演视频内容为空, 不可推送"
-		return
-	}
-
-	// 获取路演视频Overview部分
-	if videoInfo.Overview == "" {
-		br.Msg = "路演视频Overview部分不可为空"
-		return
-	}
-
-	// 获取邮件配置
-	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 == "" {
-		br.Msg = "无权操作"
-		br.ErrMsg = "群发邮件配置为空"
-		return
-	}
-	if e := json.Unmarshal([]byte(confAuth.ConfigValue), &conf); e != nil {
-		br.Msg = "无权操作"
-		br.ErrMsg = "群发邮件配置有误"
-		return
-	}
-	authArr := strings.Split(conf.SendAuthGroup, ",")
-	if !utils.InArrayByStr(authArr, sysUser.RoleTypeCode) {
-		br.Msg = "无权操作"
-		return
-	}
-
-	// 指定品种的客户
-	sendCompanyIds := make([]int, 0)
-	if len(req.EnPermissions) > 0 {
-		companyIds, e := models.GetEnglishCompanyIdsByEnPermissionIds(req.EnPermissions)
-		if e != nil {
-			br.Msg = "推送失败"
-			br.ErrMsg = "获取指定品种的客户IDs失败, Err: " + e.Error()
-			return
-		}
-		sendCompanyIds = companyIds
-	}
-	// 指定收件人列表
-	sendEmailIds := make([]int, 0)
-	if req.EmailIds != "" {
-		emailIdArr := strings.Split(req.EmailIds, ",")
-		if len(emailIdArr) == 0 {
-			br.Msg = "指定收件人列表有误"
-			br.ErrMsg = fmt.Sprintf("收件人列表为空, 收件人IDs: %s", req.EmailIds)
-			return
-		}
-		for _, m := range emailIdArr {
-			v, _ := strconv.Atoi(m)
-			sendEmailIds = append(sendEmailIds, v)
-		}
-	}
-	if len(sendCompanyIds) == 0 && len(sendEmailIds) == 0 {
-		br.Msg = "收件人列表为空(或收件人账号被禁用)"
-		br.ErrMsg = "收件人列表为空, 不可推送"
-		return
-	}
-	// 往正式客户id里面插入0的 目的是为了把临时客户找出来
-	sendCompanyIds = append(sendCompanyIds, 0)
-
-	emailCond := " AND enabled = 1 AND status <> 3"
-	emailPars := make([]interface{}, 0)
-	if len(sendCompanyIds) > 0 && len(sendEmailIds) > 0 {
-		emailCond += ` AND (company_id IN (` + utils.GetOrmInReplace(len(sendCompanyIds)) + `) OR id IN (` + utils.GetOrmInReplace(len(sendEmailIds)) + `))`
-		emailPars = append(emailPars, sendCompanyIds)
-		emailPars = append(emailPars, sendEmailIds)
-	}
-	if len(sendCompanyIds) > 0 && len(sendEmailIds) == 0 {
-		emailCond += ` AND company_id IN (` + utils.GetOrmInReplace(len(sendCompanyIds)) + `)`
-		emailPars = append(emailPars, sendCompanyIds)
-	}
-
-	emails, e := models.GetEnglishReportEmailList(emailCond, emailPars, "")
-	if e != nil {
-		br.Msg = "获取收件人列表失败"
-		br.ErrMsg = "获取收件人列表失败, Err: " + e.Error()
-		return
-	}
-	if len(emails) == 0 {
-		br.Msg = "收件人列表为空(或收件人账号被禁用)"
-		br.ErrMsg = "收件人列表为空, 不可推送"
-		return
-	}
-
-	// 获取模板
-	confKey := "english_video_email_tmp"
-	confTmp, e := company.GetConfigDetailByCode(confKey)
-	if e != nil {
-		br.Msg = "获取邮件模板失败"
-		br.ErrMsg = "获取邮件模板失败, Err: " + e.Error()
-		return
-	}
-	if confTmp.ConfigValue == `` {
-		br.Msg = "邮件模板有误"
-		br.ErrMsg = "邮件模板为空, 不可推送"
-		return
-	}
-
-	// 同一篇路演视频避免重复推送给同一个邮件
-	var cond string
-	var pars []interface{}
-	cond += ` AND report_id = ? AND send_status = 1 AND report_type = 1`
-	pars = append(pars, req.ReportId)
-	logs, e := models.GetEnglishReportEmailLogList(cond, pars)
-	if e != nil {
-		br.Msg = "推送失败"
-		br.ErrMsg = "获取邮件发送日志列表失败, Err: " + e.Error()
-		return
-	}
-	repeatMap := make(map[int]bool, 0)
-	for i := range logs {
-		if logs[i].SendStatus == 1 {
-			repeatMap[logs[i].EmailId] = true
-		}
-	}
-
-	// 推送信息
-	nowTime := time.Now().Local()
-	sendData := make([]*services.EnglishReportSendEmailRequest, 0)
-	logData := make([]*models.EnglishReportEmailLog, 0)
-	for i := range emails {
-		if repeatMap[emails[i].Id] {
-			continue
-		}
-
-		r := new(services.EnglishReportSendEmailRequest)
-		r.ReportId = videoInfo.Id
-		r.EmailId = emails[i].Id
-		r.Email = strings.Replace(emails[i].Email, " ", "", -1)
-		r.Subject = req.Theme
-		r.FromAlias = conf.FromAlias
-
-		overview := videoInfo.Overview
-
-		// 填充模板
-		t := videoInfo.PublishTime.Format("02/01/2006")
-		l := fmt.Sprintf(utils.EnglishShareUrl+"/roadshow/detail?code=%s&ShareEmail=%d", videoInfo.VideoCode, emails[i].Id)
-		ct := confTmp.ConfigValue
-		ct = strings.Replace(ct, "{{REPORT_TITLE}}", videoInfo.Title, 1)
-		ct = strings.Replace(ct, "{{REPORT_ABSTRACT}}", videoInfo.Abstract, 1)
-		ct = strings.Replace(ct, "{{REPORT_CONTENT}}", overview, 1)
-		ct = strings.Replace(ct, "{{REPORT_SHARE_LINK}}", l, 1)
-		ct = strings.Replace(ct, "{{REPORT_TIME}}", t, 1)
-		r.HtmlBody = ct
-		r.ReportTitle = videoInfo.Title
-		r.ReportAbstract = videoInfo.Abstract
-		r.ReportContent = overview
-		r.ReportShareLink = l
-		r.ReportTime = t
-		logItem := &models.EnglishReportEmailLog{
-			ReportId:   videoInfo.Id,
-			ReportType: 1,
-			EmailId:    emails[i].Id,
-			Email:      emails[i].Email,
-			Source:     models.EnglishReportEmailLogSourceAli,
-			SendStatus: models.EnglishReportEmailLogStatusIng,
-			CreateTime: nowTime,
-		}
-		r.EmailLog = logItem
-		sendData = append(sendData, r)
-
-		// 日志
-		logData = append(logData, logItem)
-	}
-	if len(sendData) == 0 {
-		br.Msg = "无邮件可推送"
-		return
-	}
-
-	// 写入日志
-	for _, v := range logData {
-		if e = v.Create(); e != nil {
-			br.Msg = "操作失败"
-			br.ErrMsg = "写入群发邮件日志失败, Err: " + e.Error()
-			return
-		}
-	}
-
-	// 修改推送状态
-	updateCols := []string{"EmailState", "ModifyTime"}
-	videoInfo.EmailState = 1
-	videoInfo.ModifyTime = time.Now().Local()
-	if e = videoInfo.Update(updateCols); e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "更新推送状态失败, Err: " + e.Error()
-		return
-	}
-
-	// 群发邮件
-	go func() {
-		services.BatchSendAliEnglishReportEmail(sendData)
-	}()
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}
-
-// VideoResend
-// @Title 线上路演重新推送
-// @Description 线上路演重新推送
-// @Param	request  body  models.EnglishReportEmailResendReq  true  "type json string"
-// @Success 200 string "操作成功"
-// @router /email/video/resend [post]
-func (this *EnglishReportEmailController) VideoResend() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var req models.EnglishReportEmailResendReq
-	if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.ReportId <= 0 {
-		br.Msg = "请选择路演视频"
-		return
-	}
-
-	// 获取路演视频信息
-	reportInfo, e := models.GetEnglishVideoItemById(req.ReportId)
-	if e != nil {
-		br.Msg = "路演视频信息有误"
-		br.ErrMsg = "获取路演视频信息失败, Err: " + e.Error()
-		return
-	}
-	if reportInfo.State != 2 {
-		br.Msg = "路演视频未发布"
-		br.ErrMsg = fmt.Sprintf("路演视频状态有误, 当前状态: %d", reportInfo.State)
-		return
-	}
-	if reportInfo.Title == "" {
-		br.Msg = "路演视频标题有误"
-		br.ErrMsg = "路演视频标题为空, 不可推送"
-		return
-	}
-
-	if reportInfo.Abstract == `` {
-		br.Msg = "路演视频摘要为空"
-		br.ErrMsg = "路演视频摘要为空, 不可推送"
-		return
-	}
-	if reportInfo.Overview == "" {
-		br.Msg = "路演视频Overview部分不可为空"
-		br.ErrMsg = "路演视频Overview为空, 不可推送"
-		return
-	}
-	// 重新发送超过100字符直接截取
-	theme := reportInfo.Abstract
-	runeAbs := []rune(reportInfo.Abstract)
-	runeThe := make([]rune, 0)
-	if len(runeAbs) > 100 {
-		runeThe = runeAbs[:100]
-		theme = string(runeThe)
-	}
-
-	// 获取邮件配置
-	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 == "" {
-		br.Msg = "无权操作"
-		br.ErrMsg = "群发邮件配置为空"
-		return
-	}
-	if e := json.Unmarshal([]byte(confAuth.ConfigValue), &conf); e != nil {
-		br.Msg = "无权操作"
-		br.ErrMsg = "群发邮件配置有误"
-		return
-	}
-	authArr := strings.Split(conf.SendAuthGroup, ",")
-	if !utils.InArrayByStr(authArr, sysUser.RoleTypeCode) {
-		br.Msg = "无权操作"
-		return
-	}
-
-	// 获取模板
-	confKey := "english_video_email_tmp"
-	confTmp, e := company.GetConfigDetailByCode(confKey)
-	if e != nil {
-		br.Msg = "获取邮件模板失败"
-		br.ErrMsg = "获取邮件模板失败, Err: " + e.Error()
-		return
-	}
-	if confTmp.ConfigValue == `` {
-		br.Msg = "邮件模板有误"
-		br.ErrMsg = "邮件模板为空, 不可推送"
-		return
-	}
-
-	// 获取发送失败的日志
-	emailIds := make([]int, 0)
-	emails := make([]*models.EnglishReportEmail, 0)
-	logIds := make([]int, 0)
-	if req.SendId > 0 {
-		logItem, e := models.GetEnglishReportEmailLogById(req.SendId)
-		if e != nil {
-			br.Msg = "发送失败"
-			br.ErrMsg = "获取原邮件推送日志失败, Err: " + e.Error()
-			return
-		}
-		emailIds = append(emailIds, logItem.EmailId)
-		logIds = append(logIds, logItem.Id)
-	} else {
-		var logCond string
-		var logPars []interface{}
-		logCond += ` AND report_id = ? AND send_status = 0 AND report_type=1`
-		logPars = append(logPars, req.ReportId)
-		logList, e := models.GetEnglishReportEmailLogList(logCond, logPars)
-		if e != nil {
-			br.Msg = "发送失败"
-			br.ErrMsg = "获取原邮件推送日志列表失败, Err: " + e.Error()
-			return
-		}
-		for i := range logList {
-			emailIds = append(emailIds, logList[i].EmailId)
-			logIds = append(logIds, logList[i].Id)
-		}
-	}
-
-	// 获取收件人列表
-	// 注: 此处不从失败日志中取email, 因为有可能是地址有误导致的推送失败
-	if len(emailIds) > 0 {
-		var emailCond string
-		var emailPars []interface{}
-		emailCond += ` AND id IN (` + utils.GetOrmInReplace(len(emailIds)) + `) and enabled = 1 `
-		emailPars = append(emailPars, emailIds)
-		em, e := models.GetEnglishReportEmailList(emailCond, emailPars, "")
-		if e != nil {
-			br.Msg = "获取收件人列表失败"
-			br.ErrMsg = "获取收件人列表失败, Err: " + e.Error()
-			return
-		}
-		emails = em
-	}
-	if len(emails) == 0 {
-		br.Msg = "无邮件可推送"
-		return
-	}
-
-	// 推送信息
-	nowTime := time.Now().Local()
-	sendData := make([]*services.EnglishReportSendEmailRequest, 0)
-	logData := make([]*models.EnglishReportEmailLog, 0)
-	for i := range emails {
-		r := new(services.EnglishReportSendEmailRequest)
-		r.ReportId = reportInfo.Id
-		r.EmailId = emails[i].Id
-		r.Email = strings.Replace(emails[i].Email, " ", "", -1)
-		r.Subject = theme
-		r.FromAlias = conf.FromAlias
-		// 填充模板
-		t := reportInfo.PublishTime.Format("02/01/2006")
-		l := fmt.Sprintf(utils.EnglishShareUrl+"/roadshow/detail?code=%s&ShareEmail=%d", reportInfo.VideoCode, emails[i].Id)
-		ct := confTmp.ConfigValue
-		ct = strings.Replace(ct, "{{REPORT_TITLE}}", reportInfo.Title, 1)
-		ct = strings.Replace(ct, "{{REPORT_ABSTRACT}}", reportInfo.Abstract, 1)
-		ct = strings.Replace(ct, "{{REPORT_CONTENT}}", reportInfo.Overview, 1)
-		ct = strings.Replace(ct, "{{REPORT_SHARE_LINK}}", l, 1)
-		ct = strings.Replace(ct, "{{REPORT_TIME}}", t, 1)
-		r.HtmlBody = ct
-		r.ReportTitle = reportInfo.Title
-		r.ReportAbstract = reportInfo.Abstract
-		r.ReportContent = reportInfo.Overview
-		r.ReportShareLink = l
-		r.ReportTime = t
-		logItem := &models.EnglishReportEmailLog{
-			ReportId:   reportInfo.Id,
-			ReportType: 1,
-			EmailId:    emails[i].Id,
-			Email:      emails[i].Email,
-			Source:     models.EnglishReportEmailLogSourceAli,
-			SendStatus: models.EnglishReportEmailLogStatusIng,
-			CreateTime: nowTime,
-		}
-		r.EmailLog = logItem
-		sendData = append(sendData, r)
-
-		// 日志
-		logData = append(logData, logItem)
-	}
-
-	// 标记原有日志为已删除
-	if len(logIds) > 0 {
-		if e = models.DeleteEnglishReportEmailLogByIds(logIds); e != nil {
-			br.Msg = "发送失败"
-			br.ErrMsg = "删除原邮件日志失败, Err: " + e.Error()
-			return
-		}
-	}
-
-	// 写入新的日志
-	for _, v := range logData {
-		if e = v.Create(); e != nil {
-			br.Msg = "操作失败"
-			br.ErrMsg = "写入群发邮件日志失败, Err: " + e.Error()
-			return
-		}
-	}
-
-	// 群发邮件
-	go func() {
-		services.BatchSendAliEnglishReportEmail(sendData)
-	}()
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}
-
-// EditEnabled
-// @Title 移动至当前客户
-// @Description 移动至当前客户
-// @Param	request  body  models.EnglishReportEditEnabledReq  true  "type json string"
-// @Success 200 string "操作成功"
-// @router /email/moveToCurrent [post]
-func (this *EnglishReportEmailController) MoveToCurrent() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var req models.EnglishReportMoveReq
-	if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.EmailId <= 0 {
-		br.Msg = "参数有误"
-		return
-	}
-	if req.CompanyId <= 0 {
-		br.Msg = "参数有误"
-		return
-	}
-	item, e := models.GetEnglishReportEmailById(req.EmailId)
-	if e != nil {
-		br.Msg = "联系人已被删除, 请勿操作"
-		return
-	}
-
-	// 更新联系人
-	nowTime := time.Now().Local()
-	item.CompanyId = req.CompanyId
-	item.ModifyTime = nowTime
-	item.Status = 1
-	updateCols := []string{"CompanyId", "ModifyTime", "Status"}
-	if e = item.Update(updateCols); e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "更新英文联系人失败, Err:" + e.Error()
-		return
-	}
-
-	// 更新所属客户状态
-	//go func() {
-	//	_ = services.UpdateEnglishCompanyEnabledByCompanyId(item.CompanyId)
-	//}()
-
-	// 记录日志
-	go func() {
-		opByte, e := json.Marshal(req)
-		if e != nil {
-			return
-		}
-		opData := string(opByte)
-		opLog := &models.EnglishReportEmailOpLog{
-			CompanyId:  item.CompanyId,
-			EmailId:    item.Id,
-			AdminId:    sysUser.AdminId,
-			OptionData: opData,
-			OptionType: models.EnglishReportEmailOpLogTypeMoveToCurrent,
-			CreateTime: nowTime,
-		}
-		if e = opLog.Create(); e != nil {
-			return
-		}
-	}()
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}

+ 0 - 561
controllers/english_report/en_permission.go

@@ -1,561 +0,0 @@
-package english_report
-
-import (
-	"encoding/json"
-	"eta_gn/eta_api/controllers"
-	"eta_gn/eta_api/models"
-	"eta_gn/eta_api/services"
-	"eta_gn/eta_api/utils"
-	"fmt"
-	"strings"
-	"time"
-)
-
-// EnPermissionController 英文权限
-type EnPermissionController struct {
-	controllers.BaseAuthController
-}
-
-// Add
-// @Title 新增品种权限
-// @Description 新增品种权限
-// @Param	request	body models.EnPermissionAddReq true "type json string"
-// @Success 200 Ret=200 操作成功
-// @router /add [post]
-func (this *EnPermissionController) Add() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		if br.ErrMsg == "" {
-			br.IsSendEmail = false
-		}
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var req models.EnPermissionAddReq
-	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + e.Error()
-		return
-	}
-	req.PermissionName = strings.TrimSpace(req.PermissionName)
-	if req.PermissionName == "" {
-		br.Msg = "请输入品种名称"
-		return
-	}
-
-	if req.Enabled != 1 && req.Enabled != 0 {
-		br.Msg = "请设置正确的状态"
-		return
-	}
-
-	// 重名校验
-	existOB := new(models.EnPermission)
-	existCond := fmt.Sprintf(` AND %s = ? AND %s = ?`, models.EnPermissionColumns.EnPermissionName, models.EnPermissionColumns.ParentId)
-	existPars := make([]interface{}, 0)
-	existPars = append(existPars, req.PermissionName, req.ParentId)
-	exist, e := existOB.GetItemByCondition(existCond, existPars)
-	if e != nil && !utils.IsErrNoRow(e) {
-		br.Msg = "操作失败"
-		br.ErrMsg = "获取重名品种权限失败, Err: " + e.Error()
-		return
-	}
-	if exist != nil && exist.EnPermissionId > 0 {
-		br.Msg = "品种名称已存在"
-		return
-	}
-	// 获取最大的排序值
-	item := new(models.EnPermission)
-	maxSort, e := item.GetMaxSort()
-	if e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "查询品种排序失败, Err: " + e.Error()
-		return
-	}
-	// 新增
-	item.EnPermissionName = req.PermissionName
-	item.ParentId = req.ParentId
-	item.Sort = maxSort + 1
-	item.Enabled = req.Enabled
-	item.CreateTime = time.Now().Local()
-	item.ModifyTime = time.Now().Local()
-	if e = item.Create(); e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "新增品种权限失败, Err: " + e.Error()
-		return
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-	br.Data = item.EnPermissionId
-}
-
-// Edit
-// @Title 编辑品种权限
-// @Description 编辑品种权限
-// @Param	request	body models.EnPermissionAddReq true "type json string"
-// @Success 200 Ret=200 操作成功
-// @router /edit [post]
-func (this *EnPermissionController) Edit() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		if br.ErrMsg == "" {
-			br.IsSendEmail = false
-		}
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var req models.EnPermissionEditReq
-	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + e.Error()
-		return
-	}
-	if req.PermissionId <= 0 {
-		br.Msg = "参数有误"
-		return
-	}
-	req.PermissionName = strings.TrimSpace(req.PermissionName)
-	if req.PermissionName == "" {
-		br.Msg = "请输入品种名称"
-		return
-	}
-
-	// 重名校验
-	ob := new(models.EnPermission)
-	existCond := fmt.Sprintf(` AND %s = ? AND %s = ? AND %s <> ?`, models.EnPermissionColumns.EnPermissionName, models.EnPermissionColumns.ParentId, models.EnPermissionColumns.EnPermissionId)
-	existPars := make([]interface{}, 0)
-	existPars = append(existPars, req.PermissionName, req.ParentId, req.PermissionId)
-	exist, e := ob.GetItemByCondition(existCond, existPars)
-	if e != nil && !utils.IsErrNoRow(e) {
-		br.Msg = "操作失败"
-		br.ErrMsg = "获取重名品种权限失败, Err: " + e.Error()
-		return
-	}
-	if exist != nil && exist.EnPermissionId > 0 {
-		br.Msg = "品种名称已存在"
-		return
-	}
-
-	item, e := ob.GetItemById(req.PermissionId)
-	if e != nil {
-		if utils.IsErrNoRow(e) {
-			br.Msg = "品种不存在, 请刷新页面"
-			return
-		}
-		br.Msg = "操作失败"
-		br.ErrMsg = "获取品种权限失败, Err: " + e.Error()
-		return
-	}
-	originPid := item.ParentId
-	item.EnPermissionName = req.PermissionName
-	item.ParentId = req.ParentId
-	item.ModifyTime = time.Now().Local()
-	if e = item.Update([]string{"EnPermissionName", "ParentId", "ModifyTime"}); e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "更新品种权限失败, Err: " + e.Error()
-		return
-	}
-
-	// 若二级分类转为一级分类, 则清空对应客户、分类权限
-	if originPid > 0 && req.ParentId == 0 {
-		if e = models.ClearEnPermissionsByPermissionId(item.EnPermissionId); e != nil {
-			br.Msg = "操作失败"
-			br.ErrMsg = "清空英文分类权限失败, Err: " + e.Error()
-			return
-		}
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-	br.Data = item.EnPermissionId
-}
-
-// ParentList
-// @Title 父级品种列表
-// @Description 父级品种列表
-// @Success 200 Ret=200 操作成功
-// @router /parent/list [get]
-func (this *EnPermissionController) ParentList() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		if br.ErrMsg == "" {
-			br.IsSendEmail = false
-		}
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	cond := fmt.Sprintf(` AND %s = ?`, models.EnPermissionColumns.ParentId)
-	pars := make([]interface{}, 0)
-	pars = append(pars, 0)
-	ob := new(models.EnPermission)
-	list, e := ob.GetItemsByCondition(cond, pars, []string{}, "sort ASC, create_time ASC")
-	if e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取父级品种列表失败, Err: " + e.Error()
-		return
-	}
-
-	resp := make([]*models.EnPermissionItem, 0)
-	for _, v := range list {
-		t := new(models.EnPermissionItem)
-		t.PermissionId = v.EnPermissionId
-		t.PermissionName = v.EnPermissionName
-		t.CnPermissionName = v.CnPermissionName
-		t.ParentId = v.ParentId
-		t.Sort = v.Sort
-		t.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
-		t.Child = make([]*models.EnPermissionItem, 0)
-		resp = append(resp, t)
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
-}
-
-// List
-// @Title 品种列表
-// @Description 品种列表
-// @Param   Keyword  query  string  false  "关键词"
-// @Param   ReportId  query  int  false  "报告ID-用于邮件推送时过滤掉无权限的品种"
-// @Param   VideoId  query  int  false  "路演视频ID-用于邮件推送时过滤掉无权限的品种"
-// @Success 200 Ret=200 操作成功
-// @router /list [get]
-func (this *EnPermissionController) List() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		if br.ErrMsg == "" {
-			br.IsSendEmail = false
-		}
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-	keyword := this.GetString("Keyword", "")
-	keyword = strings.TrimSpace(keyword)
-
-	enabled, _ := this.GetInt("Enabled", -1)
-
-	// 禁用指定报告、指定路演无权限的品种
-	reportId, _ := this.GetInt("ReportId", 0)
-	videoId, _ := this.GetInt("VideoId", 0)
-	limitIds := make([]int, 0)
-	if reportId > 0 {
-		ps, e := models.GetEnPermissionIdsByEnglishReportId(reportId)
-		if e != nil {
-			br.Msg = "获取失败"
-			br.ErrMsg = "获取报告权限品种失败, Err: " + e.Error()
-			return
-		}
-		limitIds = ps
-	}
-	if videoId > 0 {
-		ps, e := models.GetEnPermissionIdsByEnglishVideoId(videoId)
-		if e != nil {
-			br.Msg = "获取失败"
-			br.ErrMsg = "获取视频权限品种失败, Err: " + e.Error()
-			return
-		}
-		limitIds = ps
-	}
-
-	cond := ``
-	pars := make([]interface{}, 0)
-	if keyword != "" {
-		k := fmt.Sprint("%", keyword, "%")
-		cond += fmt.Sprintf(` AND %s LIKE ?`, models.EnPermissionColumns.EnPermissionName)
-		pars = append(pars, k)
-	}
-	list, e := models.GetEnPermissionUnionList(cond, pars)
-	if e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取品种Union列表失败, Err: " + e.Error()
-		return
-	}
-
-	// 品种树
-	resp := make([]*models.EnPermissionItem, 0)
-	childMap := make(map[int][]*models.EnPermissionItem)
-	for _, v := range list {
-		t := new(models.EnPermissionItem)
-		t.PermissionId = v.EnPermissionId
-		t.PermissionName = v.EnPermissionName
-		t.CnPermissionName = v.CnPermissionName
-		t.Enabled = v.Enabled
-		t.ParentId = v.ParentId
-		t.Sort = v.Sort
-		t.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
-		t.Child = make([]*models.EnPermissionItem, 0)
-		if v.ParentId == 0 {
-			resp = append(resp, t)
-			continue
-		}
-		if v.ParentId > 0 {
-			if v.Enabled == 0 && enabled == 1 {
-				continue
-			}
-			if childMap[v.ParentId] == nil {
-				childMap[v.ParentId] = make([]*models.EnPermissionItem, 0)
-			}
-			// 无权限则隐藏
-			if (reportId > 0 || videoId > 0) && !utils.InArrayByInt(limitIds, t.PermissionId) {
-				continue
-			}
-			childMap[v.ParentId] = append(childMap[v.ParentId], t)
-		}
-	}
-	for _, r := range resp {
-		r.Child = childMap[r.PermissionId]
-	}
-
-	// todo 过滤禁用品种的一级分类,如果一级分类没有二级分类
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
-}
-
-// Remove
-// @Title 删除品种权限
-// @Description 删除品种权限
-// @Param	request	body models.EnPermissionRemoveReq true "type json string"
-// @Success 200 Ret=200 操作成功
-// @router /remove [post]
-func (this *EnPermissionController) Remove() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		if br.ErrMsg == "" {
-			br.IsSendEmail = false
-		}
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-	var req models.EnPermissionRemoveReq
-	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + e.Error()
-		return
-	}
-	if req.PermissionId <= 0 {
-		br.Msg = "参数有误"
-		return
-	}
-
-	ob := new(models.EnPermission)
-	item, e := ob.GetItemById(req.PermissionId)
-	if e != nil {
-		if utils.IsErrNoRow(e) {
-			br.Msg = "品种不存在, 请刷新页面"
-			return
-		}
-		br.Msg = "操作失败"
-		br.ErrMsg = "获取品种权限失败, Err: " + e.Error()
-		return
-	}
-
-	// 校验是否有子品种
-	childCond := fmt.Sprintf(` AND %s = ?`, models.EnPermissionColumns.ParentId)
-	childPars := make([]interface{}, 0)
-	childPars = append(childPars, req.PermissionId)
-	num, e := ob.GetCountByCondition(childCond, childPars)
-	if e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "获取品种子权限数量失败, Err: " + e.Error()
-		return
-	}
-	if num > 0 {
-		br.Msg = "请先删除该品种下关联品种"
-		return
-	}
-
-	// 校验是否关联客户
-	{
-		cond := fmt.Sprintf(` AND %s = ?`, models.EnCompanyPermissionColumns.EnPermissionId)
-		pars := make([]interface{}, 0)
-		pars = append(pars, item.EnPermissionId)
-		ob := new(models.EnCompanyPermission)
-		num, e := ob.GetCountByCondition(cond, pars)
-		if e != nil {
-			br.Msg = "操作失败"
-			br.ErrMsg = "获取品种关联客户数量失败, Err: " + e.Error()
-			return
-		}
-		if num > 0 {
-			br.Msg = "该品种有关联客户, 不允许删除"
-			return
-		}
-	}
-
-	// 删除品种
-	if e = item.Del(); e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "删除品种失败, Err: " + e.Error()
-		return
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}
-
-// Move
-// @Title 移动品种权限
-// @Description 移动品种权限
-// @Param	request	body models.EnPermissionMoveReq true "type json string"
-// @Success 200 Ret=200 操作成功
-// @router /move [post]
-func (this *EnPermissionController) Move() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		if br.ErrMsg == "" {
-			br.IsSendEmail = false
-		}
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-	var req models.EnPermissionMoveReq
-	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + e.Error()
-		return
-	}
-	if req.PermissionId <= 0 {
-		br.Msg = "参数有误"
-		return
-	}
-
-	e, msg := services.MoveEnPermission(req)
-	if e != nil {
-		br.Msg = msg
-		br.ErrMsg = "移动品种失败, Err: " + e.Error()
-		return
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}
-
-// SetEnabled
-// @Title 启用/禁用品种
-// @Description 启用/禁用品种
-// @Param	request	body models.EnPermissionEnabledReq true "type json string"
-// @Success 200 Ret=200 操作成功
-// @router /enabled/set [post]
-func (this *EnPermissionController) SetEnabled() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		if br.ErrMsg == "" {
-			br.IsSendEmail = false
-		}
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var req models.EnPermissionEnabledReq
-	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + e.Error()
-		return
-	}
-	if req.PermissionId <= 0 {
-		br.Msg = "参数有误"
-		return
-	}
-
-	// 重名校验
-	ob := new(models.EnPermission)
-
-	item, e := ob.GetItemById(req.PermissionId)
-	if e != nil {
-		if utils.IsErrNoRow(e) {
-			br.Msg = "品种不存在, 请刷新页面"
-			return
-		}
-		br.Msg = "操作失败"
-		br.ErrMsg = "获取品种权限失败, Err: " + e.Error()
-		return
-	}
-	item.Enabled = req.Enabled
-	item.ModifyTime = time.Now().Local()
-	if e = item.Update([]string{"Enabled", "ModifyTime"}); e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "更新品种权限失败, Err: " + e.Error()
-		return
-	}
-
-	// 如果是一级品种被启用,则所有二级设置成启用, 如果一级品种被禁用,则所有二级设置成禁用
-	if item.ParentId == 0 {
-		if e = item.SetEnabled(item.EnPermissionId, req.Enabled); e != nil {
-			br.Msg = "操作失败"
-			br.ErrMsg = "更新英文分类权限失败, Err: " + e.Error()
-			return
-		}
-	} else if item.ParentId > 0 && req.Enabled == 1 {
-		// 如果二级品种被启用,则他的上级品种设置成启用
-		if e = item.SetEnabledByPermissionId(item.ParentId, req.Enabled); e != nil {
-			br.Msg = "操作失败"
-			br.ErrMsg = "更新英文分类权限失败, Err: " + e.Error()
-			return
-		}
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-	br.Data = item.EnPermissionId
-}

+ 0 - 661
controllers/english_report/english_auth.go

@@ -1,661 +0,0 @@
-package english_report
-
-import (
-	"encoding/json"
-	"eta_gn/eta_api/controllers"
-	"eta_gn/eta_api/models"
-	"eta_gn/eta_api/models/company"
-	"eta_gn/eta_api/models/system"
-	"eta_gn/eta_api/models/system/request"
-	"eta_gn/eta_api/models/system/response"
-	"eta_gn/eta_api/utils"
-	"fmt"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"strconv"
-	"strings"
-	"time"
-)
-
-// EnglishAuthController 英文销售权限
-type EnglishAuthController struct {
-	controllers.BaseAuthController
-}
-
-// List
-// @Title 权限列表
-// @Description 权限列表
-// @Success 200 {object}  response.RoleAdminItemResp
-// @router /auth/list [get]
-func (this *EnglishAuthController) List() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		if br.ErrMsg == "" {
-			br.IsSendEmail = false
-		}
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser is Empty"
-		br.Ret = 408
-		return
-	}
-
-	pageSize, _ := this.GetInt("PageSize")
-	currentIndex, _ := this.GetInt("CurrentIndex")
-	var startSize int
-	if pageSize <= 0 {
-		pageSize = utils.PageSize20
-	}
-	if currentIndex <= 0 {
-		currentIndex = 1
-	}
-	startSize = paging.StartIndex(currentIndex, pageSize)
-
-	// 获取英文角色配置
-	confRoles := make([]company.ConfEnAuthRole, 0)
-	authKey := company.ConfEnAuthRoleKey
-	confAuth, e := company.GetConfigDetailByCode(authKey)
-	if e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取英文权限角色配置失败, Err: " + e.Error()
-		return
-	}
-	if confAuth.ConfigValue == "" {
-		br.Msg = "获取失败"
-		br.ErrMsg = "英文权限角色配置为空"
-		return
-	}
-	if e := json.Unmarshal([]byte(confAuth.ConfigValue), &confRoles); e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "英文权限角色配置有误"
-		return
-	}
-	roleCodes := make([]string, 0)
-	for _, v := range confRoles {
-		roleCodes = append(roleCodes, v.RoleCode)
-	}
-
-	// 获取权限列表
-	var cond string
-	var pars []interface{}
-	cond += ` AND r.role_type_code IN (` + utils.GetOrmInReplace(len(roleCodes)) + `)`
-	pars = append(pars, roleCodes)
-	total, adminList, err := system.GetEnglishAuthRoleAdminList(cond, pars, startSize, pageSize)
-	if err != nil {
-		br.Msg = "获取管理账号列表失败!"
-		br.ErrMsg = "获取管理账号列表失败,Err:" + err.Error()
-		return
-	}
-
-	// 查询分组信息
-	departmentGroupNameMap := make(map[int]string)
-	departmentNameMap := make(map[int]string)
-	groupList, err := system.GetFullGroup()
-	if err != nil {
-		br.Msg = "查询分组信息失败!"
-		br.ErrMsg = "查询分组信息失败,Err:" + err.Error()
-		return
-	}
-	departmentList, err := system.GetDepartmentList()
-	if err != nil {
-		br.Msg = "查询部门信息失败!"
-		br.ErrMsg = "查询部门信息失败,Err:" + err.Error()
-		return
-	}
-	for _, d := range departmentList {
-		departmentNameMap[d.DepartmentId] = d.DepartmentName
-	}
-	for _, g := range groupList {
-		if g.ParentGroupName != "" {
-			departmentGroupNameMap[g.GroupId] = g.DepartmentName + "/" + g.ParentGroupName + "/" + g.GroupName
-		} else {
-			departmentGroupNameMap[g.GroupId] = g.DepartmentName + "/" + g.GroupName
-		}
-	}
-
-	// 查询角色信息
-	roles, err := system.GetSysRoleAll(false)
-	if err != nil {
-		br.Msg = "查询角色信息失败!"
-		br.ErrMsg = "查询角色信息失败,Err:" + err.Error()
-		return
-	}
-	rolesNameMap := make(map[int]string)
-	for _, v := range roles {
-		rolesNameMap[v.RoleId] = v.RoleName
-	}
-	var list []*response.RoleAdminItemResp
-	for _, v := range adminList {
-		item := new(response.RoleAdminItemResp)
-		item.SysRoleAdminId = v.SysRoleAdminId
-		item.AdminId = v.AdminId
-		item.Mobile = v.Mobile
-		item.RealName = v.RealName
-		item.Enabled = v.Enabled
-		if v.GroupId > 0 {
-			if departmentGroup, ok := departmentGroupNameMap[v.GroupId]; ok {
-				item.DepartmentGroup = departmentGroup
-			}
-		} else {
-			if departmentName, ok := departmentNameMap[v.DepartmentId]; ok {
-				item.DepartmentGroup = departmentName
-			}
-		}
-
-		// 整理角色名称
-		item.RoleId = v.RoleId
-		if rolesName, ok := rolesNameMap[v.RoleId]; ok {
-			item.RoleName = rolesName
-		}
-		// 整理标签
-		if v.RoleTypeCode == utils.ROLE_TYPE_CODE_ADMIN {
-			item.LabelVal = 1
-		} else if v.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN ||
-			v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
-			item.LabelVal = 2
-		} else {
-			if v.Authority == 1 {
-				item.LabelVal = 3
-			} else if v.Authority == 2 && v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP {
-				item.LabelVal = 4
-			} else if v.Authority == 2 && v.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP {
-				item.LabelVal = 5
-			} else if v.Authority == 4 {
-				item.LabelVal = 4
-			}
-		}
-
-		list = append(list, item)
-	}
-
-	page := paging.GetPaging(currentIndex, pageSize, total)
-	resp := response.RoleAdminListResp{
-		List:   list,
-		Paging: page,
-	}
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
-}
-
-// BatchAdd
-// @Title 批量新增权限
-// @Description 批量新增权限
-// @Param	request  body  request.AddEnglishAuthRoleAdminReq  true  "type json string"
-// @Success Ret=200 操作成功
-// @router /auth/batch_add [post]
-func (this *EnglishAuthController) BatchAdd() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		if br.ErrMsg == "" {
-			br.IsSendEmail = false
-		}
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var req request.AddEnglishAuthRoleAdminReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.AdminIds == "" {
-		br.Msg = "请选择用户"
-		return
-	}
-
-	// 校验参数
-	adminIdArr := strings.Split(req.AdminIds, ",")
-	if len(adminIdArr) == 0 {
-		br.Msg = "请选择用户"
-		return
-	}
-	adminIds := make([]int, 0)
-	for i := range adminIdArr {
-		v, e := strconv.Atoi(adminIdArr[i])
-		if e != nil {
-			br.Msg = "请选择用户"
-			br.ErrMsg = "参数解析异常, Err:" + e.Error()
-			return
-		}
-		adminIds = append(adminIds, v)
-	}
-	if len(adminIds) == 0 {
-		br.Msg = "请选择有效用户"
-		return
-	}
-
-	// 获取英文角色配置
-	confRoles := make([]company.ConfEnAuthRole, 0)
-	authKey := company.ConfEnAuthRoleKey
-	confAuth, e := company.GetConfigDetailByCode(authKey)
-	if e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取英文权限角色配置失败, Err: " + e.Error()
-		return
-	}
-	if confAuth.ConfigValue == "" {
-		br.Msg = "获取失败"
-		br.ErrMsg = "英文权限角色配置为空"
-		return
-	}
-	if e := json.Unmarshal([]byte(confAuth.ConfigValue), &confRoles); e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "英文权限角色配置有误"
-		return
-	}
-	roleCodes := make([]string, 0)
-	for _, v := range confRoles {
-		roleCodes = append(roleCodes, v.RoleCode)
-	}
-
-	// 获取英文权限角色
-	roleItems, e := system.GetEnglishAuthRoleItems(roleCodes)
-	if e != nil {
-		br.Msg = "新增失败"
-		br.ErrMsg = "获取英文权限角色IDs失败, Err: " + e.Error()
-		return
-	}
-	if len(roleItems) == 0 || len(roleItems) != len(roleCodes) {
-		br.Msg = "英文权限角色信息有误"
-		return
-	}
-
-	// 查询已绑定的管理员账号
-	var noBindIds []int
-	bindMap := make(map[int]bool)
-	hasBindList, e := system.CheckEnglishAuthRoleAdminByAdminIds(adminIds, roleCodes)
-	if e != nil {
-		br.Msg = "新增失败"
-		br.ErrMsg = "查询已绑定英文权限的账号失败, Err:" + e.Error()
-		return
-	}
-	for i := range hasBindList {
-		bindMap[hasBindList[i].AdminId] = true
-	}
-	for i := range adminIds {
-		if !bindMap[adminIds[i]] {
-			noBindIds = append(noBindIds, adminIds[i])
-		}
-	}
-	if len(noBindIds) == 0 {
-		br.Msg = "账号已绑定,无需重复绑定"
-		br.ErrMsg = "账号已绑定,无需重复绑定"
-		return
-	}
-
-	// 获取未绑定的用户列表
-	unboundAdmins := make([]*system.Admin, 0)
-	{
-		cond := fmt.Sprintf(` AND admin_id IN (%s)`, utils.GetOrmInReplace(len(noBindIds)))
-		pars := make([]interface{}, 0)
-		pars = append(pars, noBindIds)
-		admins, e := system.GetSysAdminList(cond, pars, []string{}, "")
-		if e != nil {
-			br.Msg = "操作失败"
-			br.ErrMsg = "获取未绑定的用户列表失败, Err: " + e.Error()
-			return
-		}
-		unboundAdmins = admins
-	}
-
-	// 新增绑定关系
-	var syncRoles []system.SyncAdminEnRole
-	nowTime := time.Now().Local()
-	newBounds := make([]*system.SysRoleAdmin, 0)
-	for _, a := range unboundAdmins {
-		var d system.SyncAdminEnRole
-		d.AdminName = a.AdminName
-		for r := range roleItems {
-			v := &system.SysRoleAdmin{
-				AdminId:    a.AdminId,
-				RoleId:     roleItems[r].RoleId,
-				CreateTime: nowTime,
-			}
-			newBounds = append(newBounds, v)
-			d.RoleCodes = append(d.RoleCodes, roleItems[r].RoleTypeCode)
-		}
-		syncRoles = append(syncRoles, d)
-	}
-	if e = system.AddRoleAdminBatch(newBounds); e != nil {
-		br.Msg = "新增失败"
-		br.ErrMsg = "新增英文权限绑定关系失败, Err:" + e.Error()
-		return
-	}
-
-	// 写入同步缓存
-	for _, v := range syncRoles {
-		_ = utils.Rc.LPush(utils.CACHE_SYNC_USER_EN_ROLE, v)
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}
-
-// Detail
-// @Title 权限详情
-// @Description 权限详情
-// @Param   AdminId  query  string  int  "管理员ID"
-// @Success 200 {object}  response.EnglishAuthRoleDetailResp
-// @router /auth/detail [get]
-func (this *EnglishAuthController) Detail() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		if br.ErrMsg == "" {
-			br.IsSendEmail = false
-		}
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser is Empty"
-		br.Ret = 408
-		return
-	}
-	adminId, _ := this.GetInt("AdminId", 0)
-	if adminId <= 0 {
-		br.Msg = "参数有误"
-		return
-	}
-
-	// 获取英文角色配置
-	confRoles := make([]company.ConfEnAuthRole, 0)
-	authKey := company.ConfEnAuthRoleKey
-	confAuth, e := company.GetConfigDetailByCode(authKey)
-	if e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取英文权限角色配置失败, Err: " + e.Error()
-		return
-	}
-	if confAuth.ConfigValue == "" {
-		br.Msg = "获取失败"
-		br.ErrMsg = "英文权限角色配置为空"
-		return
-	}
-	if e := json.Unmarshal([]byte(confAuth.ConfigValue), &confRoles); e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "英文权限角色配置有误"
-		return
-	}
-	roleCodes := make([]string, 0)
-	for _, v := range confRoles {
-		roleCodes = append(roleCodes, v.RoleCode)
-	}
-
-	resp := make([]*response.EnglishAuthRoleDetailResp, 0)
-	authList, e := system.GetAdminEnglishAuthRoleDetail(adminId, roleCodes)
-	if e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取管理员英文权限详情失败, Err:" + e.Error()
-		return
-	}
-	authMap := make(map[string]bool, 0)
-	for i := range authList {
-		authMap[authList[i].RoleTypeCode] = true
-	}
-
-	for _, v := range confRoles {
-		resp = append(resp, &response.EnglishAuthRoleDetailResp{
-			AdminId:      adminId,
-			AuthName:     v.RoleName,
-			RoleTypeCode: v.RoleCode,
-			AuthOk:       authMap[v.RoleCode],
-		})
-	}
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
-}
-
-// Edit
-// @Title 编辑权限
-// @Description 编辑权限
-// @Param	request  body  request.EditEnglishAuthRoleAdminReq  true  "type json string"
-// @Success Ret=200 操作成功
-// @router /auth/edit [post]
-func (this *EnglishAuthController) Edit() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		if br.ErrMsg == "" {
-			br.IsSendEmail = false
-		}
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var req request.EditEnglishAuthRoleAdminReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.AdminId <= 0 {
-		br.Msg = "管理员ID有误"
-		return
-	}
-	if req.RoleTypeCodes == "" {
-		br.Msg = "请选择权限"
-		return
-	}
-	roleArr := strings.Split(req.RoleTypeCodes, ",")
-	if len(roleArr) == 0 {
-		br.Msg = "请选择权限"
-		return
-	}
-
-	// 若用户不存在, 则忽略
-	admin, e := system.GetSysAdminById(req.AdminId)
-	if e != nil {
-		br.Ret = 200
-		br.Success = true
-		br.Msg = "操作成功"
-		return
-	}
-
-	// 获取英文角色配置
-	confRoles := make([]company.ConfEnAuthRole, 0)
-	authKey := company.ConfEnAuthRoleKey
-	confAuth, e := company.GetConfigDetailByCode(authKey)
-	if e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取英文权限角色配置失败, Err: " + e.Error()
-		return
-	}
-	if confAuth.ConfigValue == "" {
-		br.Msg = "获取失败"
-		br.ErrMsg = "英文权限角色配置为空"
-		return
-	}
-	if e := json.Unmarshal([]byte(confAuth.ConfigValue), &confRoles); e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "英文权限角色配置有误"
-		return
-	}
-	roleCodes := make([]string, 0)
-	for _, v := range confRoles {
-		roleCodes = append(roleCodes, v.RoleCode)
-	}
-
-	for i := range roleArr {
-		if !utils.InArrayByStr(roleCodes, roleArr[i]) {
-			br.Msg = "权限信息有误"
-			return
-		}
-	}
-
-	// 获取英文权限角色IDs
-	roleIds, e := system.GetEnglishAuthRoleIds(roleCodes)
-	if e != nil {
-		br.Msg = "新增失败"
-		br.ErrMsg = "获取英文权限角色IDs失败, Err: " + e.Error()
-		return
-	}
-	if len(roleIds) == 0 {
-		br.Msg = "英文权限角色信息有误"
-		return
-	}
-
-	// 获取编辑的权限角色IDs
-	editRoles, e := system.GetEnglishAuthRoleItems(roleArr)
-	if e != nil {
-		br.Msg = "新增失败"
-		br.ErrMsg = "获取编辑英文权限角色IDs失败, Err: " + e.Error()
-		return
-	}
-	if len(editRoles) != len(roleArr) {
-		br.Msg = "权限角色信息有误"
-		return
-	}
-
-	// 同步缓存
-	var syncData system.SyncAdminEnRole
-	syncData.AdminName = admin.AdminName
-
-	// 编辑权限
-	nowTime := time.Now().Local()
-	newBinds := make([]*system.SysRoleAdmin, 0)
-	for _, r := range editRoles {
-		v := &system.SysRoleAdmin{
-			AdminId:    req.AdminId,
-			RoleId:     r.RoleId,
-			CreateTime: nowTime,
-		}
-		newBinds = append(newBinds, v)
-		syncData.RoleCodes = append(syncData.RoleCodes, r.RoleTypeCode)
-	}
-	if e = system.EditEnglishAuthRoleAdmin(req.AdminId, roleIds, newBinds); e != nil {
-		br.Msg = "编辑失败"
-		br.ErrMsg = "编辑管理员英文权限绑定关系失败, Err:" + e.Error()
-		return
-	}
-
-	// 写入同步缓存
-	_ = utils.Rc.LPush(utils.CACHE_SYNC_USER_EN_ROLE, syncData)
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}
-
-// Del
-// @Title 删除权限
-// @Description 删除权限
-// @Param	request  body  request.DelEnglishAuthRoleAdminReq  true  "type json string"
-// @Success Ret=200 操作成功
-// @router /auth/del [post]
-func (this *EnglishAuthController) Del() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		if br.ErrMsg == "" {
-			br.IsSendEmail = false
-		}
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var req request.DelEnglishAuthRoleAdminReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.AdminId <= 0 {
-		br.Msg = "参数有误"
-		return
-	}
-
-	// 若用户不存在, 则忽略
-	admin, e := system.GetSysAdminById(req.AdminId)
-	if e != nil {
-		br.Ret = 200
-		br.Success = true
-		br.Msg = "操作成功"
-		return
-	}
-
-	// 获取英文角色配置
-	confRoles := make([]company.ConfEnAuthRole, 0)
-	authKey := company.ConfEnAuthRoleKey
-	confAuth, e := company.GetConfigDetailByCode(authKey)
-	if e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取英文权限角色配置失败, Err: " + e.Error()
-		return
-	}
-	if confAuth.ConfigValue == "" {
-		br.Msg = "获取失败"
-		br.ErrMsg = "英文权限角色配置为空"
-		return
-	}
-	if e := json.Unmarshal([]byte(confAuth.ConfigValue), &confRoles); e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "英文权限角色配置有误"
-		return
-	}
-	roleCodes := make([]string, 0)
-	for _, v := range confRoles {
-		roleCodes = append(roleCodes, v.RoleCode)
-	}
-
-	// 获取英文权限角色IDs
-	roleIds, e := system.GetEnglishAuthRoleIds(roleCodes)
-	if e != nil {
-		br.Msg = "删除失败"
-		br.ErrMsg = "获取英文权限角色IDs失败, Err: " + e.Error()
-		return
-	}
-	if len(roleIds) == 0 {
-		br.Msg = "删除失败"
-		br.ErrMsg = "解除英文权限角色绑定关系失败, 角色信息有误"
-		return
-	}
-
-	// 解除绑定关系
-	if e = system.DeleteRoleAdminByAdminIdAndRoleIds(req.AdminId, roleIds); e != nil {
-		br.Msg = "删除失败"
-		br.ErrMsg = "解除英文权限角色绑定关系失败, Err:" + e.Error()
-		return
-	}
-
-	// 写入同步缓存
-	var syncData system.SyncAdminEnRole
-	syncData.AdminName = admin.AdminName
-	_ = utils.Rc.LPush(utils.CACHE_SYNC_USER_EN_ROLE, syncData)
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}

+ 0 - 772
controllers/english_report/english_classify.go

@@ -1,772 +0,0 @@
-package english_report
-
-import (
-	"encoding/json"
-	"eta_gn/eta_api/controllers"
-	"eta_gn/eta_api/models"
-	"eta_gn/eta_api/models/report_approve"
-	"eta_gn/eta_api/services"
-	"eta_gn/eta_api/utils"
-	"fmt"
-	"sort"
-	"time"
-)
-
-// EnglishClassifyController 英文分类
-type EnglishClassifyController struct {
-	controllers.BaseAuthController
-}
-
-// ListClassify
-// @Title 获取分类列表
-// @Description 获取分类列表
-// @Param   PageSize   query   int  true       "每页数据条数"
-// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
-// @Param   KeyWord   query   string  true       "检索关键词"
-// @Param   CompanyType   query   string  false       "产品类型,枚举值:'ficc','权益';不传默认返回全部"
-// @Success 200 {object} models.EnglishClassifyListResp
-// @router /classify/list [get]
-func (this *EnglishReportController) ListClassify() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-
-	keyWord := this.GetString("KeyWord")
-	reqEnabled, _ := this.GetInt("Enabled", -1)
-	enabled := -1
-	if reqEnabled == 1 {
-		enabled = reqEnabled
-	}
-	resp := new(models.EnglishClassifyListResp)
-
-	// 处理一级分类分页的情况
-	rootList, err := models.GetEnglishClassifyRootId(keyWord, enabled)
-	if err != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
-		return
-	}
-	if len(rootList) == 0 {
-		resp.List = make([]*models.EnglishClassifyList, 0)
-
-		br.Data = resp
-		br.Ret = 200
-		br.Success = true
-		br.Msg = "获取成功"
-		return
-	}
-	var ids []int
-	var rootIds []int
-	rootMap := make(map[int]struct{}, 0)
-	for _, v := range rootList {
-		rootIds = append(rootIds, v.Id)
-		rootMap[v.Id] = struct{}{}
-	}
-
-	//获取相关的分类ID
-	idList, err := models.GetEnglishClassifyListByRootId(rootIds, keyWord, enabled)
-	if err != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
-		return
-	}
-	secondListMap := make(map[int][]*models.EnglishClassifyList)
-	thirdListMap := make(map[int][]*models.EnglishClassifyList)
-	var thirdIds []int
-	var sortChildList models.RSChildClassifyList
-	// 三级分类-品种权限
-	permissionMap := make(map[int][]int)
-
-	if len(idList) > 0 {
-		childIdMap := make(map[int]struct{}, 0)
-		for _, v := range idList {
-			if _, ok := childIdMap[v.ParentId]; !ok {
-				ids = append(ids, v.ParentId)
-				childIdMap[v.ParentId] = struct{}{}
-			}
-			if _, ok := childIdMap[v.Id]; !ok {
-				ids = append(ids, v.Id)
-				childIdMap[v.Id] = struct{}{}
-			}
-		}
-		tmpList, err := models.GetEnglishClassifyChildByIds(ids)
-		if err != nil {
-			br.Msg = "获取二级分类失败"
-			br.ErrMsg = "获取二级分类失败,Err:" + err.Error()
-			return
-		}
-		for _, v := range tmpList {
-			if _, ok := rootMap[v.ParentId]; !ok {
-				thirdIds = append(thirdIds, v.Id)
-			}
-		}
-		{
-			classifyIds := thirdIds
-			if len(classifyIds) > 0 {
-				cond := fmt.Sprintf(` AND %s IN (%s)`, models.EnClassifyPermissionColumns.EnClassifyId, utils.GetOrmInReplace(len(classifyIds)))
-				pars := make([]interface{}, 0)
-				pars = append(pars, classifyIds)
-				ob := new(models.EnClassifyPermission)
-				items, e := ob.GetItemsByCondition(cond, pars, []string{}, "")
-				if e != nil {
-					br.Msg = "获取失败"
-					br.ErrMsg = "获取客户权限列表失败, Err: " + e.Error()
-					return
-				}
-				for _, v := range items {
-					if permissionMap[v.EnClassifyId] == nil {
-						permissionMap[v.EnClassifyId] = make([]int, 0)
-					}
-					permissionMap[v.EnClassifyId] = append(permissionMap[v.EnClassifyId], v.EnPermissionId)
-				}
-			}
-		}
-		// 处理三级分类
-		for _, v := range tmpList {
-			if _, ok := rootMap[v.ParentId]; !ok {
-				if p, ok1 := permissionMap[v.Id]; ok1 {
-					v.EnPermissions = p
-				}
-				thirdListMap[v.ParentId] = append(thirdListMap[v.ParentId], v)
-			}
-		}
-
-		//处理二级分类
-		for _, v := range tmpList {
-			if _, ok := rootMap[v.ParentId]; ok {
-				if child, ok1 := thirdListMap[v.Id]; ok1 {
-					sortChildList = child
-					sort.Sort(sortChildList)
-					v.Child = sortChildList
-				}
-				secondListMap[v.ParentId] = append(secondListMap[v.ParentId], v)
-			}
-		}
-	}
-
-	//处理一级分类
-	var sortList models.RSClassifyList
-	for _, v := range rootList {
-		if child, ok := secondListMap[v.Id]; ok {
-			sortChildList = child
-			sort.Sort(sortChildList)
-			v.Child = sortChildList
-		}
-		sortList = append(sortList, v)
-	}
-
-	sort.Sort(sortList)
-
-	resp.List = sortList
-
-	br.Data = resp
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-}
-
-// @Title 新增分类
-// @Description 新增分类接口
-// @Param   ClassifyName   int  true       "分类名称"
-// @Param   ParentId   query   int  true       "父级Id 添加父级时为0"
-// @Param   Sort   query   string  false       "排序"
-// @Success 200 新增成功
-// @router /classify/add [post]
-func (this *EnglishReportController) AddClassify() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	//classifyName := this.GetString("ClassifyName")
-	//parentId, _ := this.GetInt("ParentId")
-	var req models.EnClassifyAddReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	classifyName := req.ClassifyName
-	parentId := req.ParentId
-	ob := new(models.EnglishClassify)
-	// 查新父级分类是否存在
-	rootId := 0
-	if parentId > 0 {
-		parentClassify, err := models.GetEnglishReportClassifyById(parentId)
-		if err != nil {
-			if utils.IsErrNoRow(err) {
-				br.Msg = "上级分类不存在"
-				return
-			}
-			br.Msg = "查询上级分类信息失败"
-			br.ErrMsg = "查询上级分类信息失败,Err:" + err.Error()
-			return
-		}
-		if parentClassify.RootId == 0 {
-			rootId = parentClassify.Id
-		} else {
-			rootId = parentClassify.RootId
-		}
-	}
-	maxSort, e := ob.GetMaxSort()
-	if e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "查询品种排序失败, Err: " + e.Error()
-		return
-	}
-
-	nowTime := time.Now().Local()
-	item := &models.EnglishClassify{
-		ClassifyName: classifyName,
-		Sort:         maxSort + 1,
-		ParentId:     parentId,
-		RootId:       rootId,
-		CreateTime:   nowTime,
-		ModifyTime:   nowTime,
-		IsShow:       1,
-		Enabled:      1,
-	}
-	counts, err := models.GetEnglishClassifyCountsByName(classifyName, parentId)
-	if err != nil {
-		br.Msg = "查询失败"
-		br.ErrMsg = "查询失败,Err:" + err.Error()
-		return
-	}
-	if counts > 0 {
-		br.Msg = "该名称已存在"
-		br.ErrMsg = "该名称已存在!"
-		return
-	}
-	var newId int64
-	newId, err = models.AddEnglishClassify(item)
-	if err != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "保存失败,Err:" + err.Error()
-		return
-	}
-	item.Id = int(newId)
-	if parentId == 0 { //一级目录的rootId等于自己本身
-		item.RootId = int(newId)
-		err = item.UpdateEnglishClassify([]string{"RootId"})
-		if err != nil {
-			br.Msg = "保存失败"
-			br.ErrMsg = "保存失败,Err:" + err.Error()
-			return
-		}
-	}
-
-	if item.ParentId != item.RootId && item.ParentId > 0 { //三级分类才能绑定品种权限
-		permissions := make([]*models.EnClassifyPermission, 0)
-		for _, p := range req.EnPermissions {
-			v := new(models.EnClassifyPermission)
-			v.EnPermissionId = p
-			v.EnClassifyId = item.Id
-			v.CreateTime = nowTime
-			permissions = append(permissions, v)
-		}
-		if e = models.CreateEnClassifyPermissions(permissions); e != nil {
-			br.Msg = "保存失败"
-			br.ErrMsg = "更新分类品种权限失败, Err: " + e.Error()
-			return
-		}
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "新增成功"
-}
-
-// EditClassify
-// @Title 编辑分类
-// @Description 编辑分类接口
-// @Param   ClassifyId   int  true       "分类Id"
-// @Param   ClassifyName   string  true       "分类名称"
-// @Param   ParentId   query   int  true       "父级Id 添加父级时为0"
-// @Param   Sort   query   string  false       "排序"
-// @Success 200 保存成功
-// @router /classify/edit [post]
-func (this *EnglishReportController) EditClassify() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-
-	var req models.EnClassifyEditReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	classifyId := req.ClassifyId
-	classifyName := req.ClassifyName
-	parentId := req.ParentId
-	//ob := new(models.EnglishClassify)
-
-	if parentId == classifyId {
-		br.Msg = "上级分类不能选择自己"
-		return
-	}
-	if classifyId <= 0 {
-		br.Msg = "参数错误"
-		return
-	}
-	if classifyName == "" {
-		br.Msg = "分类名称不可为空"
-		return
-	}
-
-	oldItem, err := models.GetEnglishReportClassifyById(classifyId)
-	if err != nil {
-		if utils.IsErrNoRow(err) {
-			br.Msg = "当前分类不存在"
-			return
-		}
-		br.Msg = "获取信息失败"
-		br.ErrMsg = "获取信息失败,Err:" + err.Error()
-		return
-	}
-	if oldItem.ParentId == 0 && parentId > 0 {
-		// 一级分类变更为二级分类,禁止
-		br.Msg = "一级分类不允许更改为二级分类或三级分类"
-		return
-	}
-
-	var parent *models.EnglishClassify
-	rootId := 0
-	if parentId > 0 {
-		parent, err = models.GetEnglishReportClassifyById(parentId)
-		if err != nil {
-			if utils.IsErrNoRow(err) {
-				br.Msg = "上级分类不存在"
-				return
-			}
-			br.Msg = "获取信息失败"
-			br.ErrMsg = "获取信息失败,Err:" + err.Error()
-			return
-		}
-		//二级分类不允许改成三级分类
-		if oldItem.ParentId > 0 && oldItem.ParentId == oldItem.RootId {
-			if parent.ParentId > 0 {
-				//即将改为为三级分类
-				br.Msg = "二级分类不允许更改为三级分类"
-				return
-			}
-		}
-
-		if parent.RootId == 0 {
-			rootId = parent.Id
-		} else {
-			rootId = parent.RootId
-		}
-	}
-
-	//判断是否已存在同个名称的分类
-	existItem, e := models.GetEnglishClassifyByClassifyNameParentId(classifyName, parentId)
-	if e != nil {
-		if !utils.IsErrNoRow(e) {
-			br.Msg = "查询已存在的分类出错"
-			br.ErrMsg = "查询已存在的分类出错, Err:" + e.Error()
-			return
-		}
-	}
-	if e == nil && existItem.Id != oldItem.Id {
-		br.Msg = "分类名称:" + classifyName + "已存在"
-		return
-	}
-
-	if parentId == 0 { //一级分类的顶级分类为自己的ID
-		rootId = oldItem.Id
-	}
-
-	/*maxSort, e := ob.GetMaxSortByParentId(parentId)
-	if e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "查询品种排序失败, Err: " + e.Error()
-		return
-	}*/
-
-	nowTime := time.Now().Local()
-
-	item := &models.EnglishClassify{
-		Id:           oldItem.Id,
-		ClassifyName: classifyName,
-		//	Sort:         maxSort + 1,
-		ParentId:   parentId,
-		RootId:     rootId,
-		ModifyTime: nowTime,
-		IsShow:     1,
-	}
-	{
-		// 更新研报里的分类名称
-		err = services.UpdateEnglishReportClassifyId(oldItem, item, classifyId)
-		if err != nil {
-			br.Msg = err.Error()
-			return
-		}
-
-		//更新相关联的路演视频里的分类名称
-		err = services.UpdateEnglishVideoClassifyId(oldItem, item, classifyId)
-		if err != nil {
-			br.Msg = err.Error()
-			return
-		}
-	}
-	err = models.ModifyEnglishClassify(item)
-	if err != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "保存失败,Err:" + err.Error()
-		return
-	}
-	// 更新权限
-	if item.ParentId != item.RootId && item.ParentId > 0 { //三级分类才能编辑品种
-		permissions := make([]*models.EnClassifyPermission, 0)
-		for _, p := range req.EnPermissions {
-			v := new(models.EnClassifyPermission)
-			v.EnPermissionId = p
-			v.EnClassifyId = req.ClassifyId
-			v.CreateTime = nowTime
-			permissions = append(permissions, v)
-		}
-		if e = models.ClearAndCreateEnClassifyPermissions(req.ClassifyId, permissions); e != nil {
-			br.Msg = "保存失败"
-			br.ErrMsg = "更新分类品种权限失败, Err: " + e.Error()
-			return
-		}
-	}
-
-	err = models.UpdateEnglishReportClassifyByFirstSecondClassifyId(classifyId, parentId)
-	if err != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "保存失败,Err:" + err.Error()
-		return
-	}
-	err = models.UpdateEnglishVideoClassifyByFirstSecondClassifyId(classifyId, parentId)
-	if err != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "保存失败,Err:" + err.Error()
-		return
-	}
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "保存成功"
-}
-
-// @Title 删除分类列表
-// @Description 删除分类列表
-// @Param   ClassifyId   int  true       "分类名称"
-// @Param   ParentId   query   int  true   "父级Id"
-// @Success 200 保存成功
-// @router /classify/delete [get]
-func (this *EnglishReportController) DelClassify() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	classifyId, _ := this.GetInt("ClassifyId")
-	//parentId, _ := this.GetInt("ParentId")
-
-	classifyInfo, err := models.GetEnglishReportClassifyById(classifyId)
-	if err != nil {
-		if utils.IsErrNoRow(err) {
-			br.Msg = "当前分类不存在"
-			br.ErrMsg = "当前分类不存在"
-			return
-		}
-		br.Msg = "获取分类信息失败"
-		br.ErrMsg = "获取分类信息失败,Err:" + err.Error()
-		return
-	}
-
-	count, err := models.GetEnglishClassifyChildCounts(classifyId)
-	if err != nil && !utils.IsErrNoRow(err) {
-		br.Msg = "获取信息失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
-		return
-	}
-
-	if count > 0 {
-		br.Msg = "请先删除该分类下关联分类"
-		br.Ret = 403
-		return
-	}
-	reportCount, e := models.GetEnglishReportCounts(classifyId, classifyInfo.ParentId)
-	if e != nil && !utils.IsErrNoRow(e) {
-		br.Msg = "获取信息失败"
-		br.ErrMsg = "获取失败,Err:" + e.Error()
-		return
-	}
-
-	if reportCount > 0 {
-		br.Msg = "该分类有关联报告,不允许删除"
-		br.Ret = 403
-		return
-	}
-	videoCount, e := models.GetEnglishVideoCounts(classifyId, classifyInfo.ParentId)
-	if e != nil && !utils.IsErrNoRow(e) {
-		br.Msg = "获取信息失败"
-		br.ErrMsg = "获取失败,Err:" + e.Error()
-		return
-	}
-
-	if videoCount > 0 {
-		br.Msg = "该分类有关联的路演视频,不允许删除"
-		br.Ret = 403
-		return
-	}
-
-	// 查询该分类是否关联了审批流
-	flowOb := new(report_approve.ReportApproveFlow)
-	flowCond := fmt.Sprintf(` AND %s = ? AND (%s = ? Or %s = ?)`, report_approve.ReportApproveFlowCols.ReportType, report_approve.ReportApproveFlowCols.ClassifyFirstId, report_approve.ReportApproveFlowCols.ClassifySecondId)
-	flowPars := make([]interface{}, 0)
-	flowPars = append(flowPars, report_approve.FlowReportTypeEnglish, classifyId, classifyId)
-	flowCount, e := flowOb.GetCountByCondition(flowCond, flowPars)
-	if e != nil {
-		br.Msg = "检测失败"
-		br.ErrMsg = "获取关联审批流失败, Err: " + e.Error()
-		return
-	}
-	if flowCount > 0 {
-		br.Msg = "该分类关联审批流,不允许删除"
-		br.Ret = 403
-		return
-	}
-
-	if err = models.DeleteEnglishClassify(classifyId); err != nil {
-		br.Msg = "删除失败"
-		br.ErrMsg = "删除报告失败, Err: " + err.Error()
-		return
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "删除成功"
-}
-
-// @Title 获取一级分类列表
-// @Description 获取一级分类列表
-// @Param   PageSize   query   int  true       "每页数据条数"
-// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
-// @Param   CompanyType   query   string  false       "产品类型,枚举值:'ficc','权益';不传默认返回全部"
-// @Success 200 {object} models.EnglishClassifyListResp
-// @router /classify/first/list [get]
-func (this *EnglishReportController) FistListClassify() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-
-	rootList, err := models.GetEnglishFirstClassifyList()
-	if err != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
-		return
-	}
-	total, err := models.GetEnglishFirstClassifyListCount()
-	if err != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
-		return
-	}
-	resp := new(models.EnglishClassifyListResp)
-
-	if total == 0 {
-		resp.List = make([]*models.EnglishClassifyList, 0)
-
-		br.Data = resp
-		br.Ret = 200
-		br.Success = true
-		br.Msg = "获取成功"
-		return
-	}
-	rootMap := make(map[int]struct{}, 0)
-	var rootIds []int
-	for _, v := range rootList {
-		rootMap[v.Id] = struct{}{}
-		rootIds = append(rootIds, v.Id)
-	}
-	tmpList, err := models.GetEnglishSecondClassifyList(rootIds)
-	if err != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
-		return
-	}
-	secondListMap := make(map[int][]*models.EnglishClassifyList)
-	//处理二级分类
-	for _, v := range tmpList {
-		if _, ok := rootMap[v.ParentId]; ok {
-			secondListMap[v.ParentId] = append(secondListMap[v.ParentId], v)
-		}
-	}
-
-	//处理一级分类
-	var sortList models.RSClassifyList
-	var sortChildList models.RSChildClassifyList
-	for _, v := range rootList {
-		if child, ok := secondListMap[v.Id]; ok {
-			sortChildList = child
-			sort.Sort(sortChildList)
-			v.Child = sortChildList
-		}
-		sortList = append(sortList, v)
-	}
-
-	sort.Sort(sortList)
-
-	resp.List = sortList
-
-	br.Data = resp
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-}
-
-// PermissionEdit
-// @Title 编辑品种权限
-// @Description 编辑品种权限
-// @Param	request	body models.EnPermissionAddReq true "type json string"
-// @Success 200 Ret=200 操作成功
-// @router /permission/edit [post]
-func (this *EnglishClassifyController) PermissionEdit() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		if br.ErrMsg == "" {
-			br.IsSendEmail = false
-		}
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-	var req models.EnClassifyPermissionEditReq
-	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + e.Error()
-		return
-	}
-	if req.ClassifyId <= 0 {
-		br.Msg = "参数有误"
-		return
-	}
-
-	// 更新品种权限
-	nowTime := time.Now().Local()
-	permissions := make([]*models.EnClassifyPermission, 0)
-	for _, p := range req.EnPermissions {
-		v := new(models.EnClassifyPermission)
-		v.EnPermissionId = p
-		v.EnClassifyId = req.ClassifyId
-		v.CreateTime = nowTime
-		permissions = append(permissions, v)
-	}
-	if e := models.ClearAndCreateEnClassifyPermissions(req.ClassifyId, permissions); e != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "更新分类品种权限失败, Err: " + e.Error()
-		return
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}
-
-// MoveClassify
-// @Title 移动分类接口
-// @Description 移动分类
-// @Param	request	body models.EnglishClassifyMoveReq true "type json string"
-// @Success 200 新增成功
-// @router /classify/move [post]
-func (this *EnglishReportController) MoveClassify() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	var req models.EnglishClassifyMoveReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.ClassifyId <= 0 {
-		br.Msg = "请选择分类"
-		return
-	}
-	e, msg := services.MoveEnglishReportClassify(req)
-	if e != nil {
-		br.Msg = msg
-		br.ErrMsg = "移动分类失败, Err: " + e.Error()
-		return
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}
-
-// SetEnabled
-// @Title 启用/禁用分类接口
-// @Description 启用/禁用分类
-// @Param	request	body models.ClassifyMoveReq true "type json string"
-// @Success 200 新增成功
-// @router /classify/enabled/set [post]
-func (this *EnglishReportController) SetEnabled() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	var req models.EnglishClassifySetEnabledReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.ClassifyId <= 0 {
-		br.Msg = "请选择分类"
-		return
-	}
-	if req.Enabled != 0 && req.Enabled != 1 {
-		br.Msg = "请选择正确的启用禁用状态"
-		return
-	}
-	item, err := models.GetEnglishReportClassifyById(req.ClassifyId)
-	if err != nil {
-		if utils.IsErrNoRow(err) {
-			br.Msg = "分类不存在"
-			return
-		}
-		br.Msg = "获取信息失败"
-		br.ErrMsg = "获取信息失败,Err:" + err.Error()
-		return
-	}
-	if item == nil {
-		br.Msg = "分类不存在"
-		return
-	}
-	ob := new(models.EnglishClassify)
-	//设置分类启用、禁用状态
-	err = ob.SetEnabled(req.ClassifyId, req.Enabled)
-	if err != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "操作失败,Err:" + err.Error()
-		return
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}

+ 0 - 770
controllers/english_report/english_company.go

@@ -1,770 +0,0 @@
-package english_report
-
-import (
-	"encoding/json"
-	"eta_gn/eta_api/controllers"
-	"eta_gn/eta_api/models"
-	"eta_gn/eta_api/models/system"
-	"eta_gn/eta_api/services"
-	"eta_gn/eta_api/services/alarm_msg"
-	"eta_gn/eta_api/utils"
-	"fmt"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"strconv"
-	"strings"
-	"time"
-)
-
-// EnglishCompanyController 英文客户
-type EnglishCompanyController struct {
-	controllers.BaseAuthController
-}
-
-// List
-// @Title 英文客户列表
-// @Description 英文客户列表
-// @Param   Keywords	query	string	false	"关键词:客户名称/联系人邮箱/联系人手机号"
-// @Param   SortType	query	int		false	"点击量排序:1-降序; 2-升序"
-// @Param   EnPermissionIds		query	string		false	"品种权限IDs(字符串)"
-// @Success 200 {object} models.EnglishCompanyPageListResp
-// @router /company/list [get]
-func (this *EnglishCompanyController) List() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var startSize int
-	pageSize, _ := this.GetInt("PageSize")
-	currentIndex, _ := this.GetInt("CurrentIndex")
-	if pageSize <= 0 {
-		pageSize = utils.PageSize20
-	}
-	if currentIndex <= 0 {
-		currentIndex = 1
-	}
-	startSize = paging.StartIndex(currentIndex, pageSize)
-
-	keywords := this.GetString("Keywords", "")
-	sortType, _ := this.GetInt("SortType", 0)
-	sortParam := this.GetString("SortParam", "")
-	strPermissionIds := this.GetString("EnPermissionIds", "")
-
-	var cond, order string
-	var pars []interface{}
-	if keywords != "" {
-		companyIds, e := models.GetEnCompanyIdsByKeyword(keywords)
-		if e != nil {
-			br.Msg = "获取失败"
-			br.ErrMsg = "关键词获取英文客户IDs失败, Err: " + e.Error()
-			return
-		}
-		if len(companyIds) == 0 {
-			page := paging.GetPaging(currentIndex, pageSize, 0)
-			resp := &models.EnglishCompanyPageListResp{
-				Paging: page,
-				List:   make([]*models.EnglishCompanyResp, 0),
-			}
-			br.Ret = 200
-			br.Success = true
-			br.Msg = "获取成功"
-			br.Data = resp
-			return
-		}
-		cond += fmt.Sprintf(` AND c.company_id IN (%s) `, utils.GetOrmInReplace(len(companyIds)))
-		pars = append(pars, companyIds)
-	}
-	// 品种权限
-	if strPermissionIds != "" {
-		permissionIdArr := strings.Split(strPermissionIds, ",")
-		permissionIds := make([]int, 0)
-		for _, s := range permissionIdArr {
-			p, e := strconv.Atoi(s)
-			if e != nil {
-				br.Msg = "品种权限有误"
-				br.ErrMsg = "品种权限筛选有误"
-				return
-			}
-			permissionIds = append(permissionIds, p)
-		}
-		if len(permissionIds) == 0 {
-			br.Msg = "品种权限有误"
-			br.ErrMsg = "品种权限筛选ID为空"
-			return
-		}
-		queryCond := fmt.Sprintf(` AND %s IN (%s)`, models.EnCompanyPermissionColumns.EnPermissionId, utils.GetOrmInReplace(len(permissionIds)))
-		queryPars := make([]interface{}, 0)
-		queryPars = append(queryPars, permissionIds)
-		queryOB := new(models.EnCompanyPermission)
-		queryList, e := queryOB.GetItemsByCondition(queryCond, queryPars, []string{"DISTINCT en_company_id"}, "")
-		if e != nil {
-			br.Msg = "品种筛选有误"
-			br.ErrMsg = "品种筛选失败, Err: " + e.Error()
-			return
-		}
-		companyIds := make([]int, 0)
-		for _, q := range queryList {
-			companyIds = append(companyIds, q.EnCompanyId)
-		}
-		if len(companyIds) == 0 {
-			page := paging.GetPaging(currentIndex, pageSize, 0)
-			resp := &models.EnglishCompanyPageListResp{
-				Paging: page,
-				List:   make([]*models.EnglishCompanyResp, 0),
-			}
-			br.Ret = 200
-			br.Success = true
-			br.Msg = "获取成功"
-			br.Data = resp
-			return
-		}
-		cond += fmt.Sprintf(` AND c.company_id IN (%s) `, utils.GetOrmInReplace(len(companyIds)))
-		pars = append(pars, companyIds)
-	}
-
-	if sortParam == "" {
-		if sortType == 1 {
-			order = ` ORDER BY c.view_total DESC`
-		}
-		if sortType == 2 {
-			order = ` ORDER BY c.view_total ASC`
-		}
-	} else if sortParam == "deadLine" {
-		order = ` ORDER BY todo_end_time asc, c.view_total desc, c.company_id desc`
-	} else if sortParam == "todoStatusStr" {
-		order = ` ORDER BY FIELD (todo_status_str,'进行中','已完成','无任务'), c.view_total desc, c.company_id desc`
-	}
-
-	total, list, e := models.GetEnglishCompanyPageList(cond, pars, order, startSize, pageSize)
-	if e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取英文客户列表失败, Err: " + e.Error()
-		return
-	}
-	// 客户列表TODO信息
-	todoMap := services.GetEnglishCompanyListTodoMap(list, sysUser)
-
-	// 品种权限
-	permissionMap := make(map[int][]int)
-	{
-		companyIds := make([]int, 0)
-		for _, v := range list {
-			companyIds = append(companyIds, v.CompanyId)
-		}
-		if len(companyIds) > 0 {
-			cond := fmt.Sprintf(` AND %s IN (%s)`, models.EnCompanyPermissionColumns.EnCompanyId, utils.GetOrmInReplace(len(companyIds)))
-			pars := make([]interface{}, 0)
-			pars = append(pars, companyIds)
-			ob := new(models.EnCompanyPermission)
-			items, e := ob.GetItemsByCondition(cond, pars, []string{}, "")
-			if e != nil {
-				br.Msg = "获取失败"
-				br.ErrMsg = "获取客户权限列表失败, Err: " + e.Error()
-				return
-			}
-			for _, v := range items {
-				if permissionMap[v.EnCompanyId] == nil {
-					permissionMap[v.EnCompanyId] = make([]int, 0)
-				}
-				permissionMap[v.EnCompanyId] = append(permissionMap[v.EnCompanyId], v.EnPermissionId)
-			}
-		}
-	}
-
-	respList := make([]*models.EnglishCompanyResp, 0)
-	for i := range list {
-		respList = append(respList, &models.EnglishCompanyResp{
-			CompanyId:     list[i].CompanyId,
-			CompanyName:   list[i].CompanyName,
-			CountryCode:   list[i].CountryCode,
-			Country:       list[i].Country,
-			SellerId:      list[i].SellerId,
-			SellerName:    list[i].SellerName,
-			ViewTotal:     list[i].ViewTotal,
-			CreateTime:    list[i].CreateTime.Format(utils.FormatDateTime),
-			Enabled:       list[i].Enabled,
-			TodoInfo:      todoMap[list[i].CompanyId],
-			EnPermissions: permissionMap[list[i].CompanyId],
-		})
-	}
-
-	page := paging.GetPaging(currentIndex, pageSize, total)
-	resp := &models.EnglishCompanyPageListResp{
-		Paging: page,
-		List:   respList,
-	}
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
-}
-
-// Save
-// @Title 保存英文客户
-// @Description 保存英文客户
-// @Param	request  body  models.EnglishCompanySaveReq  true  "type json string"
-// @Success 200 string "操作成功"
-// @router /company/save [post]
-func (this *EnglishCompanyController) Save() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var req models.EnglishCompanySaveReq
-	if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	req.CompanyName = strings.TrimSpace(req.CompanyName)
-	if req.CompanyName == "" {
-		br.Msg = "请输入客户名称"
-		return
-	}
-	if req.CountryCode == "" || req.Country == "" {
-		br.Msg = "请选择国家"
-		return
-	}
-	if req.SellerId <= 0 {
-		br.Msg = "请选择销售"
-		return
-	}
-	if len(req.EnPermissions) <= 0 {
-		br.Msg = "请至少选择一个品种权限"
-		return
-	}
-
-	seller, e := system.GetSysAdminById(req.SellerId)
-	if e != nil {
-		br.Msg = "销售信息有误"
-		br.ErrMsg = "获取销售信息失败, Err:" + e.Error()
-		return
-	}
-	if seller.Enabled != 1 {
-		br.Msg = "该销售已被禁用"
-		return
-	}
-
-	// 重名校验
-	exist, e := models.GetEnglishCompanyByName(req.CompanyName)
-	if e != nil && !utils.IsErrNoRow(e) {
-		br.Msg = "保存失败"
-		br.ErrMsg = "获取客户信息失败, Err:" + e.Error()
-		return
-	}
-
-	item := new(models.EnglishCompany)
-	nowTime := time.Now().Local()
-	opType := 0
-	if req.CompanyId <= 0 {
-		if exist != nil {
-			br.Msg = "客户名称已存在"
-			return
-		}
-
-		opType = models.EnglishCompanyLogOptionTypeAdd
-		// 新增
-		item.CompanyName = req.CompanyName
-		item.CountryCode = req.CountryCode
-		item.Country = req.Country
-		item.SellerId = req.SellerId
-		item.SellerName = seller.RealName
-		item.CreateTime = nowTime
-		item.ModifyTime = nowTime
-		item.Status = 1
-		item.Enabled = 1
-		if e = item.Create(); e != nil {
-			br.Msg = "保存失败"
-			br.ErrMsg = "新增英文客户失败, Err:" + e.Error()
-			return
-		}
-	} else {
-		if exist != nil && exist.CompanyId != req.CompanyId {
-			br.Msg = "客户名称已存在"
-			return
-		}
-
-		opType = models.EnglishCompanyLogOptionTypeEdit
-		// 编辑
-		ec, e := models.GetEnglishCompanyById(req.CompanyId)
-		if e != nil {
-			br.Msg = "保存失败"
-			br.ErrMsg = "获取英文客户信息失败, Err:" + e.Error()
-			return
-		}
-		item = ec
-		item.CompanyName = req.CompanyName
-		item.CountryCode = req.CountryCode
-		item.Country = req.Country
-		item.SellerId = req.SellerId
-		item.SellerName = seller.RealName
-		item.ModifyTime = nowTime
-		updateCols := []string{"CompanyName", "CountryCode", "Country", "SellerId", "SellerName", "ModifyTime"}
-		if e = item.Update(updateCols); e != nil {
-			br.Msg = "保存失败"
-			br.ErrMsg = "更新英文客户信息失败, Err:" + e.Error()
-			return
-		}
-	}
-
-	// 品种权限
-	permissions := make([]*models.EnCompanyPermission, 0)
-	for _, p := range req.EnPermissions {
-		v := new(models.EnCompanyPermission)
-		v.EnPermissionId = p
-		v.EnCompanyId = item.CompanyId
-		v.CreateTime = nowTime
-		permissions = append(permissions, v)
-	}
-	if e = models.ClearAndCreateEnCompanyPermissions(item.CompanyId, permissions); e != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "更新客户品种权限失败, Err: " + e.Error()
-		return
-	}
-
-	// 记录日志
-	go func() {
-		opByte, e := json.Marshal(req)
-		if e != nil {
-			return
-		}
-		opData := string(opByte)
-		opLog := &models.EnglishCompanyLog{
-			CompanyId:  item.CompanyId,
-			AdminId:    sysUser.AdminId,
-			OptionData: opData,
-			OptionType: opType,
-			CreateTime: nowTime,
-		}
-		if e = opLog.Create(); e != nil {
-			return
-		}
-	}()
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}
-
-// Del
-// @Title 删除英文客户及联系人
-// @Description 删除英文客户及联系人
-// @Param	request  body  models.EnglishCompanyDelReq  true  "type json string"
-// @Success 200 string "操作成功"
-// @router /company/del [post]
-func (this *EnglishCompanyController) Del() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var req models.EnglishCompanyDelReq
-	if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.CompanyId <= 0 {
-		br.Msg = "参数有误"
-		return
-	}
-	item, e := models.GetEnglishCompanyById(req.CompanyId)
-	if e != nil {
-		br.Msg = "删除失败"
-		br.ErrMsg = "获取英文客户信息失败, Err:" + e.Error()
-		return
-	}
-	if e := models.DeleteEnglishCompanyAndEmails(req.CompanyId); e != nil {
-		br.Msg = "删除失败"
-		br.ErrMsg = "删除英文客户及联系人失败, Err: " + e.Error()
-		return
-	}
-	// 删除权限
-	if e = models.ClearAndCreateEnCompanyPermissions(item.CompanyId, make([]*models.EnCompanyPermission, 0)); e != nil {
-		br.Msg = "删除失败"
-		br.ErrMsg = "删除英文客户权限失败, Err: " + e.Error()
-		return
-	}
-
-	// 记录日志
-	go func() {
-		nowTime := time.Now().Local()
-		opByte, e := json.Marshal(req)
-		if e != nil {
-			return
-		}
-		opData := string(opByte)
-		opLog := &models.EnglishCompanyLog{
-			CompanyId:  item.CompanyId,
-			AdminId:    sysUser.AdminId,
-			OptionData: opData,
-			OptionType: models.EnglishCompanyLogOptionTypeDel,
-			CreateTime: nowTime,
-		}
-		if e = opLog.Create(); e != nil {
-			return
-		}
-	}()
-
-	// 同步删除客户TODO
-	go func() {
-		if e = models.DeleteEnglishCompanyTodoByCompanyId(req.CompanyId); e != nil {
-			alarm_msg.SendAlarmMsg("删除英文客户同步删除TODO失败, ErrMsg: "+e.Error(), 3)
-		}
-	}()
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}
-
-// Detail
-// @Title 英文客户详情
-// @Description 英文客户详情
-// @Param   CompanyId  query  int  true  "客户ID"
-// @Success 200 {object} models.EnglishCompanyResp
-// @router /company/detail [get]
-func (this *EnglishCompanyController) Detail() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	companyId, _ := this.GetInt("CompanyId", 0)
-	if companyId <= 0 {
-		br.Msg = "参数有误"
-		return
-	}
-
-	item, e := models.GetEnglishCompanyById(companyId)
-	if e != nil {
-		br.Msg = "获取失败, 客户或已被删除"
-		return
-	}
-
-	// 品种权限
-	permissions := make([]int, 0)
-	{
-		cond := fmt.Sprintf(` AND %s = ?`, models.EnCompanyPermissionColumns.EnCompanyId)
-		pars := make([]interface{}, 0)
-		pars = append(pars, item.CompanyId)
-		ob := new(models.EnCompanyPermission)
-		list, e := ob.GetItemsByCondition(cond, pars, []string{}, "")
-		if e != nil {
-			br.Msg = "获取失败"
-			br.ErrMsg = "获取英文客户权限失败, Err: " + e.Error()
-			return
-		}
-		for _, v := range list {
-			permissions = append(permissions, v.EnPermissionId)
-		}
-	}
-
-	resp := &models.EnglishCompanyResp{
-		CompanyId:     item.CompanyId,
-		CompanyName:   item.CompanyName,
-		CountryCode:   item.CountryCode,
-		Country:       item.Country,
-		SellerId:      item.SellerId,
-		SellerName:    item.SellerName,
-		ViewTotal:     item.ViewTotal,
-		CreateTime:    item.CreateTime.Format(utils.FormatDateTime),
-		EnPermissions: permissions,
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
-}
-
-// ViewList
-// @Title 英文客户-点击量详情列表
-// @Description 英文客户-点击量详情列表
-// @Param   CompanyId	query	int	false	"客户ID"
-// @Param   SortParam	query	int	false	"排序字段:1-点击量;2-点击时间"
-// @Param   SortType	query	int	false	"排序方式:1-倒序;2-正序"
-// @Success 200 {object} models.GetEnglishCompanyViewPageListResp
-// @router /company/view_list [get]
-func (this *EnglishCompanyController) ViewList() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	// 默认点击时间降序
-	companyId, _ := this.GetInt("CompanyId", 0)
-	sortParam, _ := this.GetInt("SortParam", 2)
-	sortType, _ := this.GetInt("SortType", 1)
-
-	var cond, order string
-	var pars []interface{}
-	if companyId > 0 {
-		cond += ` AND company_id = ?`
-		pars = append(pars, companyId)
-	}
-	sortArr := []int{1, 2}
-	if utils.InArrayByInt(sortArr, sortParam) && utils.InArrayByInt(sortArr, sortType) {
-		pMap := map[int]string{1: "view_total", 2: "last_view_time"}
-		tMap := map[int]string{1: "DESC", 2: "ASC"}
-		order = fmt.Sprintf(` ORDER BY %s %s`, pMap[sortParam], tMap[sortType])
-	}
-
-	var startSize int
-	pageSize, _ := this.GetInt("PageSize")
-	currentIndex, _ := this.GetInt("CurrentIndex")
-	if pageSize <= 0 {
-		pageSize = utils.PageSize20
-	}
-	if currentIndex <= 0 {
-		currentIndex = 1
-	}
-	startSize = paging.StartIndex(currentIndex, pageSize)
-
-	// 注:点击量列表是包含被删除的联系人的历史点击量
-	total, list, e := models.GetEnglishCompanyViewPageList(cond, pars, order, startSize, pageSize)
-	if e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取英文客户点击量详情列表失败, Err: " + e.Error()
-		return
-	}
-	respList := make([]*models.EnglishCompanyViewResp, 0)
-	for i := range list {
-		v := &models.EnglishCompanyViewResp{
-			EmailId:      list[i].Id,
-			UserName:     list[i].Name,
-			Email:        list[i].Email,
-			ViewTotal:    list[i].ViewTotal,
-			LastViewTime: list[i].LastViewTime.Format(utils.FormatDateTime),
-		}
-		if v.LastViewTime == "0001-01-01 00:00:00" {
-			v.LastViewTime = ""
-		}
-		respList = append(respList, v)
-	}
-
-	page := paging.GetPaging(currentIndex, pageSize, total)
-	resp := &models.GetEnglishCompanyViewPageListResp{
-		Paging: page,
-		List:   respList,
-	}
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
-}
-
-// EditEnabled
-// @Title 英文客户-启用/禁用
-// @Description 英文客户-启用/禁用
-// @Param	request  body  models.EnglishCompanyEditEnabledReq  true  "type json string"
-// @Success 200 string "操作成功"
-// @router /company/edit_enabled [post]
-func (this *EnglishCompanyController) EditEnabled() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-	var req models.EnglishCompanyEditEnabledReq
-	if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.CompanyId <= 0 {
-		br.Msg = "参数有误"
-		return
-	}
-	if req.Enabled != 0 && req.Enabled != 1 {
-		br.Msg = "参数有误"
-		return
-	}
-
-	item, e := models.GetEnglishCompanyById(req.CompanyId)
-	if e != nil {
-		br.Msg = "客户已被删除, 请刷新页面"
-		return
-	}
-	// 更新客户
-	nowTime := time.Now().Local()
-	item.Enabled = req.Enabled
-	item.ModifyTime = nowTime
-	updateCols := []string{"Enabled", "ModifyTime"}
-	if e = item.Update(updateCols); e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "更新英文客户状态失败, Err:" + e.Error()
-		return
-	}
-
-	// 更新其下联系人状态
-	if e = models.UpdateEnglishEmailEnabledByCompanyId(item.CompanyId, req.Enabled); e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "更新英文客户下的联系人状态失败, Err: " + e.Error()
-		return
-	}
-
-	// 记录日志
-	go func() {
-		opByte, e := json.Marshal(req)
-		if e != nil {
-			return
-		}
-		opData := string(opByte)
-		opLog := &models.EnglishCompanyLog{
-			CompanyId:  item.CompanyId,
-			AdminId:    sysUser.AdminId,
-			OptionData: opData,
-			OptionType: models.EnglishCompanyLogOptionTypeEditEnabled,
-			CreateTime: nowTime,
-		}
-		if e = opLog.Create(); e != nil {
-			return
-		}
-	}()
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}
-
-// SavePermission
-// @Title 英文客户-保存权限
-// @Description 英文客户-保存权限
-// @Param	request  body  models.EnglishCompanySaveReq  true  "type json string"
-// @Success 200 string "操作成功"
-// @router /company/save_permission [post]
-func (this *EnglishCompanyController) SavePermission() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-	var req models.EnglishCompanySaveReq
-	if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.CompanyId <= 0 {
-		br.Msg = "参数有误"
-		br.ErrMsg = "参数有误"
-		return
-	}
-	if len(req.EnPermissions) <= 0 {
-		br.Msg = "请至少选择一个品种权限"
-		return
-	}
-
-	nowTime := time.Now().Local()
-	item, e := models.GetEnglishCompanyById(req.CompanyId)
-	if e != nil {
-		if utils.IsErrNoRow(e) {
-			br.Msg = "客户已被删除, 请刷新页面"
-			return
-		}
-		br.Msg = "操作失败"
-		br.ErrMsg = "获取客户信息失败, Err: " + e.Error()
-		return
-	}
-
-	// 品种权限
-	permissions := make([]*models.EnCompanyPermission, 0)
-	for _, p := range req.EnPermissions {
-		v := new(models.EnCompanyPermission)
-		v.EnPermissionId = p
-		v.EnCompanyId = item.CompanyId
-		v.CreateTime = nowTime
-		permissions = append(permissions, v)
-	}
-	if e := models.ClearAndCreateEnCompanyPermissions(item.CompanyId, permissions); e != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "更新客户品种权限失败, Err: " + e.Error()
-		return
-	}
-
-	// 记录日志
-	go func() {
-		opByte, e := json.Marshal(req)
-		if e != nil {
-			return
-		}
-		opData := string(opByte)
-		opLog := &models.EnglishCompanyLog{
-			CompanyId:  item.CompanyId,
-			AdminId:    sysUser.AdminId,
-			OptionData: opData,
-			OptionType: models.EnglishCompanyLogOptionTypeSavePermission,
-			CreateTime: nowTime,
-		}
-		if e = opLog.Create(); e != nil {
-			return
-		}
-	}()
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}

+ 0 - 680
controllers/english_report/english_company_todo.go

@@ -1,680 +0,0 @@
-package english_report
-
-import (
-	"encoding/json"
-	"eta_gn/eta_api/controllers"
-	"eta_gn/eta_api/models"
-	"eta_gn/eta_api/models/system"
-	"eta_gn/eta_api/services"
-	"eta_gn/eta_api/utils"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"html"
-	"time"
-)
-
-// EnglishCompanyTodoController 英文客户-TODO任务
-type EnglishCompanyTodoController struct {
-	controllers.BaseAuthController
-}
-
-// List
-// @Title 任务列表
-// @Description 任务列表
-// @Param   CompanyId	query	int  true	"客户ID"
-// @Param   SortType	query	int  false	"创建时间排序:1-降序; 2-升序"
-// @Success 200 {object} []models.EnglishCompanyTodoListItem
-// @router /company_todo/list [get]
-func (this *EnglishCompanyTodoController) List() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	companyId, _ := this.GetInt("CompanyId")
-	if companyId <= 0 {
-		br.Msg = "请选择客户"
-		return
-	}
-	authList := services.GetEnglishCompanyTodoAuthRole()
-	if !utils.InArrayByStr(authList, sysUser.RoleTypeCode) {
-		br.Msg = "账号角色异常,不允许查看任务"
-		return
-	}
-
-	var startSize int
-	pageSize, _ := this.GetInt("PageSize")
-	currentIndex, _ := this.GetInt("CurrentIndex")
-	if pageSize <= 0 {
-		pageSize = utils.PageSize20
-	}
-	if currentIndex <= 0 {
-		currentIndex = 1
-	}
-	startSize = paging.StartIndex(currentIndex, pageSize)
-
-	var order string
-	sortType, _ := this.GetInt("SortType", 0)
-	if sortType == 2 {
-		order = ` ORDER BY a.create_time ASC `
-	}
-
-	// 获取任务列表
-	total, todoList, err := models.GetEnglishCompanyTodoList(companyId, startSize, pageSize, order)
-	if err != nil {
-		br.Msg = "获取任务列表失败"
-		br.ErrMsg = "获取英文客户任务列表失败,err:" + err.Error()
-		return
-	}
-
-	list := make([]*models.EnglishCompanyTodoResp, 0)
-	for _, v := range todoList {
-		td := &models.EnglishCompanyTodoResp{
-			Id:              v.Id,
-			CompanyId:       v.CompanyId,
-			Content:         v.Content,
-			SellerId:        v.SellerId,
-			SellerName:      v.SellerName,
-			CreateUserId:    v.CreateUserId,
-			CreateUserName:  v.CreateUserName,
-			ApproveUserId:   v.ApproveUserId,
-			ApproveUserName: v.ApproveUserName,
-			Status:          v.Status,
-			CreateTime:      v.CreateTime.Format(utils.FormatDateTime),
-			EndTime:         v.EndTime.Format(utils.FormatDateTime),
-			ApproveTime:     v.ApproveTime.Format(utils.FormatDateTime),
-			EndTimeStr:      v.EndTime.Format(utils.FormatDate),
-			Remark:          v.Remark,
-		}
-		if td.EndTimeStr == "0001-01-01" {
-			td.EndTimeStr = ""
-		}
-		if td.ApproveTime == "0001-01-01 00:00:00" {
-			td.ApproveTime = ""
-		}
-		list = append(list, td)
-	}
-
-	page := paging.GetPaging(currentIndex, pageSize, total)
-	resp := &models.GetEnglishCompanyTodoPageListResp{
-		Paging: page,
-		List:   list,
-	}
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
-}
-
-// Add
-// @Title 新增任务
-// @Description 新增任务接口
-// @Param	request  body  models.EnglishCompanyTodoAddReq  true  "type json string"
-// @Success 200 操作成功
-// @router /company_todo/add [post]
-func (this *EnglishCompanyTodoController) Add() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var req models.EnglishCompanyTodoAddReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.CompanyId <= 0 {
-		br.Msg = "请选择客户"
-		br.ErrMsg = "客户ID不能为空"
-		return
-	}
-	if req.Description == "" {
-		br.Msg = "任务描述不能为空"
-		return
-	}
-	if req.EndTime == "" {
-		br.Msg = "请选择截止日期"
-		return
-	}
-	endTime, e := time.ParseInLocation(utils.FormatDate, req.EndTime, time.Local)
-	if e != nil {
-		br.Msg = "截止日期格式错误"
-		return
-	}
-	description := utils.TrimStr(req.Description)
-
-	// 客户、销售信息
-	companyId := req.CompanyId
-	companyInfo, e := models.GetEnglishCompanyById(companyId)
-	if e != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "获取英文客户失败, Err: " + e.Error()
-		return
-	}
-	sellerInfo, e := system.GetSysUserById(companyInfo.SellerId)
-	if e != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "获取英文客户销售信息失败, Err: " + e.Error()
-		return
-	}
-
-	// 校验操作权限
-	ok, msg, e := services.CheckEnglishCompanyTodoAuth(sysUser, sellerInfo)
-	if e != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "校验英文客户TODO操作权限失败, Err: " + e.Error()
-		return
-	}
-	if !ok {
-		br.Msg = msg
-		return
-	}
-
-	// 获取处理中的任务数
-	ingCount, e := models.GetCountDoingEnglishCompanyTodo(companyId)
-	if e != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "获取处理中的任务数失败, Err: " + e.Error()
-		return
-	}
-	if ingCount > 0 {
-		br.Msg = "当前存在待处理的任务,不允许添加新的任务待办"
-		return
-	}
-
-	// 新增任务
-	nowTime := time.Now().Local()
-	newTodo := &models.EnglishCompanyTodo{
-		CompanyId:      companyId,
-		Content:        description,
-		SellerId:       companyInfo.SellerId,
-		SellerName:     companyInfo.SellerName,
-		CreateUserId:   sysUser.AdminId,
-		CreateUserName: sysUser.RealName,
-		Status:         models.EnglishCompanyTodoStatusDoing,
-		CreateTime:     nowTime,
-		ModifyTime:     nowTime,
-		EndTime:        endTime,
-	}
-	if e = newTodo.Create(); e != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "新增英文客户TODO待办失败, Err: " + e.Error()
-		return
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}
-
-// Edit
-// @Title 编辑任务
-// @Description  编辑任务
-// @Param	request  body  models.EnglishCompanyTodoEditReq  true  "type json string"
-// @Success 200 操作成功
-// @router /company_todo/edit [post]
-func (this *EnglishCompanyTodoController) Edit() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var req models.EnglishCompanyTodoEditReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.Id <= 0 {
-		br.Msg = "请选择待办任务"
-		br.ErrMsg = "待办任务ID不能为空"
-		return
-	}
-	if req.Description == "" {
-		br.Msg = "任务描述不能为空"
-		return
-	}
-	if req.EndTime == "" {
-		br.Msg = "请输入截止日期"
-		return
-	}
-	endTime, err := time.ParseInLocation(utils.FormatDate, req.EndTime, time.Local)
-	if err != nil {
-		br.Msg = "截止日期格式错误"
-		return
-	}
-
-	description := utils.TrimStr(req.Description)
-
-	// 客户、销售信息
-	companyId := req.CompanyId
-	companyInfo, e := models.GetEnglishCompanyById(companyId)
-	if e != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "获取英文客户失败, Err: " + e.Error()
-		return
-	}
-	sellerInfo, e := system.GetSysUserById(companyInfo.SellerId)
-	if e != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "获取英文客户销售信息失败, Err: " + e.Error()
-		return
-	}
-
-	// 校验操作权限
-	ok, msg, e := services.CheckEnglishCompanyTodoAuth(sysUser, sellerInfo)
-	if e != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "校验英文客户TODO操作权限失败, Err: " + e.Error()
-		return
-	}
-	if !ok {
-		br.Msg = msg
-		return
-	}
-
-	// 校验任务状态
-	todoInfo, e := models.GetEnglishCompanyTodoById(req.Id)
-	if e != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "获取英文客户TODO信息失败, Err: " + e.Error()
-		return
-	}
-	if todoInfo.Status != models.EnglishCompanyTodoStatusDoing {
-		br.Msg = `任务状态异常: ` + todoInfo.Status + `, 不允许编辑该任务待办`
-		return
-	}
-
-	// 编辑任务
-	todoInfo.Content = description
-	todoInfo.SellerId = sellerInfo.AdminId
-	todoInfo.SellerName = sellerInfo.RealName
-	todoInfo.ModifyTime = time.Now()
-	todoInfo.EndTime = endTime
-	updateCols := []string{"Content", "SellerId", "SellerName", "ModifyTime", "EndTime"}
-	if e = todoInfo.Update(updateCols); e != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "编辑英文客户TODO待办失败, Err: " + e.Error()
-		return
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}
-
-// Approve
-// @Title 审批任务
-// @Description 审批任务接口
-// @Param	request  body  models.EnglishCompanyTodoApproveReq  true  "type json string"
-// @Success 200 操作成功
-// @router /company_todo/approve [post]
-func (this *EnglishCompanyTodoController) Approve() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var req models.EnglishCompanyTodoApproveReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.Id <= 0 {
-		br.Msg = "参数错误"
-		br.ErrMsg = "参数错误,任务编号必传 "
-		return
-	}
-
-	// 校验任务状态
-	todoInfo, e := models.GetEnglishCompanyTodoById(req.Id)
-	if e != nil {
-		br.Msg = "审核失败"
-		br.ErrMsg = "获取英文客户TODO信息失败, Err: " + e.Error()
-		return
-	}
-	if todoInfo.Status != models.EnglishCompanyTodoStatusDoing {
-		br.Msg = `任务状态异常: ` + todoInfo.Status + `, 不允许审核该任务待办`
-		return
-	}
-
-	// 客户、销售信息
-	companyInfo, e := models.GetEnglishCompanyById(todoInfo.CompanyId)
-	if e != nil {
-		br.Msg = "审核失败"
-		br.ErrMsg = "获取英文客户失败, Err: " + e.Error()
-		return
-	}
-	sellerInfo, e := system.GetSysUserById(companyInfo.SellerId)
-	if e != nil {
-		br.Msg = "审核失败"
-		br.ErrMsg = "获取英文客户销售信息失败, Err: " + e.Error()
-		return
-	}
-
-	switch sysUser.RoleTypeCode {
-	case utils.ROLE_TYPE_CODE_ADMIN, utils.ROLE_TYPE_CODE_FICC_ADMIN, utils.ROLE_TYPE_CODE_FICC_DEPARTMENT, utils.ROLE_TYPE_CODE_FICC_RESEARCHR:
-		break
-	case utils.ROLE_TYPE_CODE_FICC_GROUP:
-		same, e := services.CheckAdminIsSameBigGroup(sysUser, sellerInfo)
-		if e != nil {
-			br.Msg = "审核失败"
-			br.ErrMsg = "判断主管与客户所属销售是否属于同一大组失败, Err: " + e.Error()
-			return
-		}
-		if !same {
-			br.Msg = "该客户销售不是当前账号所属组员,不允许审批任务"
-			return
-		}
-	case utils.ROLE_TYPE_CODE_FICC_TEAM:
-		if sellerInfo.GroupId != sysUser.GroupId {
-			br.Msg = "该客户销售不是当前账号所属组员,不允许审批任务"
-			return
-		}
-	default:
-		br.Msg = `操作人角色异常, 不允许审批任务: ` + sysUser.RoleName
-		return
-	}
-
-	todoInfo.Status = "已完成"
-	todoInfo.ApproveUserId = sysUser.AdminId
-	todoInfo.ApproveUserName = sysUser.RealName
-	todoInfo.ModifyTime = time.Now()
-	todoInfo.ApproveTime = time.Now()
-	todoInfo.ApprovedSellerId = sellerInfo.AdminId
-	todoInfo.ApprovedSellerName = sellerInfo.RealName
-	todoInfo.Remark = req.Remark
-	updateCols := []string{"Status", "ApproveUserId", "ApproveUserName", "ModifyTime", "ApproveTime", "ApprovedSellerId", "ApprovedSellerName", "Remark"}
-	if e = todoInfo.Update(updateCols); e != nil {
-		br.Msg = "审核失败"
-		br.ErrMsg = "更新英文客户TODO任务审核信息失败, Err: " + e.Error()
-		return
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}
-
-// EditList
-// @Title 进行中任务列表
-// @Description 进行中任务列表
-// @Param   CompanyId  query  int  true  "客户ID"
-// @Success 200 {object} []models.EnglishCompanyTodoListItem
-// @router /company_todo/edit_list [get]
-func (this *EnglishCompanyTodoController) EditList() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	companyId, _ := this.GetInt("CompanyId")
-	if companyId <= 0 {
-		br.Msg = "请选择客户"
-		return
-	}
-	authList := services.GetEnglishCompanyTodoAuthRole()
-	if !utils.InArrayByStr(authList, sysUser.RoleTypeCode) {
-		br.Msg = "账号角色异常,不允许查看任务"
-		return
-	}
-
-	// 获取进行中的任务信息
-	todoList, e := models.GetDoingEnglishCompanyTodoList(companyId)
-	if e != nil {
-		br.Msg = "获取任务信息失败"
-		br.ErrMsg = "获取任务信息失败,err:" + e.Error()
-		return
-	}
-
-	list := make([]*models.EnglishCompanyTodoResp, 0)
-	for _, v := range todoList {
-		td := &models.EnglishCompanyTodoResp{
-			Id:              v.Id,
-			CompanyId:       v.CompanyId,
-			Content:         v.Content,
-			SellerId:        v.SellerId,
-			SellerName:      v.SellerName,
-			CreateUserId:    v.CreateUserId,
-			CreateUserName:  v.CreateUserName,
-			ApproveUserId:   v.ApproveUserId,
-			ApproveUserName: v.ApproveUserName,
-			Status:          v.Status,
-			CreateTime:      v.CreateTime.Format(utils.FormatDateTime),
-			EndTime:         v.EndTime.Format(utils.FormatDateTime),
-			ApproveTime:     v.ApproveTime.Format(utils.FormatDateTime),
-			EndTimeStr:      v.EndTime.Format(utils.FormatDate),
-		}
-		if td.EndTimeStr == "0001-01-01" {
-			td.EndTimeStr = ""
-		}
-		if td.ApproveTime == "0001-01-01 00:00:00" {
-			td.ApproveTime = ""
-		}
-		list = append(list, td)
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = list
-}
-
-// LastPublicTodo
-// @Title 获取最新的公共TODO
-// @Description 获取最新的公共TODO
-// @Success 200 {object} models.GetEnglishCompanyTodoDoingPageListResp
-// @router /company_todo/last_public_todo [get]
-func (this *EnglishCompanyTodoController) LastPublicTodo() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	item, e := models.GetLastEnglishCompanyTodoPublic()
-	if e != nil && !utils.IsErrNoRow(e) {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取最新的公共TODO失败, Err: " + e.Error()
-		return
-	}
-	if item != nil {
-		resp := &models.EnglishCompanyTodoPublicResp{
-			Content:        html.UnescapeString(item.Content),
-			CreateUserId:   item.CreateUserId,
-			CreateUserName: item.CreateUserName,
-			ModifyTime:     item.ModifyTime.Format(utils.FormatDateTime),
-			CreateTime:     item.CreateTime.Format(utils.FormatDateTime),
-		}
-		br.Data = resp
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-}
-
-// AddPublic
-// @Title 新增公共任务
-// @Description 新增公共任务接口
-// @Param	request  body  models.EnglishCompanyTodoPublicAddReq  true  "type json string"
-// @Success 200 操作成功
-// @router /company_todo/add_public [post]
-func (this *EnglishCompanyTodoController) AddPublic() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var req models.EnglishCompanyTodoPublicAddReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-
-	// 新增公共任务
-	nowTime := time.Now().Local()
-	newTodo := &models.EnglishCompanyTodoPublic{
-		Content:        html.EscapeString(req.Description),
-		CreateUserId:   sysUser.AdminId,
-		CreateUserName: sysUser.RealName,
-		CreateTime:     nowTime,
-		ModifyTime:     nowTime,
-	}
-	if e := newTodo.Create(); e != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "新增英文客户公共TODO失败, Err: " + e.Error()
-		return
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}
-
-// DoingList
-// @Title 未完成的任务列表
-// @Description 未完成的任务列表
-// @Param   PageSize		query	int  true	"每页数据量"
-// @Param   CurrentIndex	query	int  true	"当前页码"
-// @Param   SortType		query	int  false	"截止日期排序: 0-默认(截止日期正序); 1-正序; 2-倒序"
-// @Success 200 {object} models.GetEnglishCompanyTodoDoingPageListResp
-// @router /company_todo/doing_list [get]
-func (this *EnglishCompanyTodoController) DoingList() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	var startSize int
-	pageSize, _ := this.GetInt("PageSize")
-	currentIndex, _ := this.GetInt("CurrentIndex")
-	if pageSize <= 0 {
-		pageSize = utils.PageSize20
-	}
-	if currentIndex <= 0 {
-		currentIndex = 1
-	}
-	startSize = paging.StartIndex(currentIndex, pageSize)
-
-	var order string
-	sortType, _ := this.GetInt("SortType", 0)
-	if sortType == 2 {
-		order = ` ORDER BY a.end_time DESC `
-	}
-
-	// 获取任务列表
-	total, todoList, err := models.GetEnglishCompanyTodoDoingList(startSize, pageSize, order)
-	if err != nil {
-		br.Msg = "获取任务列表失败"
-		br.ErrMsg = "获取英文客户任务列表失败,err:" + err.Error()
-		return
-	}
-
-	list := make([]*models.EnglishCompanyTodoDoingResp, 0)
-	for _, v := range todoList {
-		td := &models.EnglishCompanyTodoDoingResp{
-			Id:              v.Id,
-			CompanyId:       v.CompanyId,
-			CompanyName:     v.CompanyName,
-			Content:         v.Content,
-			SellerId:        v.SellerId,
-			SellerName:      v.SellerName,
-			CreateUserId:    v.CreateUserId,
-			CreateUserName:  v.CreateUserName,
-			ApproveUserId:   v.ApproveUserId,
-			ApproveUserName: v.ApproveUserName,
-			Status:          v.Status,
-			CreateTime:      v.CreateTime.Format(utils.FormatDateTime),
-			EndTime:         v.EndTime.Format(utils.FormatDate),
-			ApproveTime:     v.ApproveTime.Format(utils.FormatDateTime),
-			Remark:          v.Remark,
-		}
-		if td.EndTime == "0001-01-01" {
-			td.EndTime = ""
-		}
-		if td.ApproveTime == "0001-01-01 00:00:00" {
-			td.ApproveTime = ""
-		}
-		list = append(list, td)
-	}
-
-	page := paging.GetPaging(currentIndex, pageSize, total)
-	resp := &models.GetEnglishCompanyTodoDoingPageListResp{
-		Paging: page,
-		List:   list,
-	}
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
-}

+ 0 - 552
controllers/english_report/english_video.go

@@ -1,552 +0,0 @@
-package english_report
-
-import (
-	"encoding/json"
-	"eta_gn/eta_api/controllers"
-	"eta_gn/eta_api/models"
-	"eta_gn/eta_api/models/company"
-	"eta_gn/eta_api/services"
-	"eta_gn/eta_api/utils"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"strconv"
-	"strings"
-)
-
-// EnglishVideoController 英文研报-线上路演
-type EnglishVideoController struct {
-	controllers.BaseAuthController
-}
-
-// CoverList
-// @Title 封面库列表
-// @Description 封面库
-// @Param   PageSize		query  int  false  "每页数据量"
-// @Param   CurrentIndex	query  int  false  "页码"
-// @Success 200 {object} models.EnglishVideoCoverListResp
-// @router /video/cover/list [get]
-func (this *EnglishVideoController) CoverList() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	condition := ""
-	pars := make([]interface{}, 0)
-
-	var startSize int
-	pageSize, _ := this.GetInt("PageSize")
-	currentIndex, _ := this.GetInt("CurrentIndex")
-	if pageSize <= 0 {
-		pageSize = utils.PageSize20
-	}
-	if currentIndex <= 0 {
-		currentIndex = 1
-	}
-	startSize = paging.StartIndex(currentIndex, pageSize)
-	total, resp, err := services.GetEnglishVideoCoverList(condition, pars, "", startSize, pageSize)
-	if err != nil {
-		br.Msg = "获取封面库列表失败"
-		br.ErrMsg = "GetEnglishVideoCoverList ErrMsg:" + err.Error()
-		return
-	}
-
-	page := paging.GetPaging(currentIndex, pageSize, total)
-	resp.Paging = page
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
-}
-
-// CoverSave
-// @Title 保存封面图
-// @Description 保存封面图
-// @Param	request  body  request.EnglishVideoCoverSaveReq  true  "type json string"
-// @Success 200 string "操作成功"
-// @router /video/cover/save [post]
-func (this *EnglishVideoController) CoverSave() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-	var req models.EnglishVideoCoverSaveReq
-	if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.CoverName == "" {
-		br.Msg = "请输入封面名称"
-		return
-	}
-	if req.CoverUrl == "" {
-		br.Msg = "请上传封面图"
-		return
-	}
-
-	data, errMsg, err := services.SaveEnglishVideoCover(req.Id, req.CoverName, req.CoverUrl)
-	if err != nil {
-		br.Msg = errMsg
-		br.ErrMsg = "SaveEnglishVideoCover ErrMsg:" + err.Error()
-		return
-	}
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-	br.Data = data
-}
-
-// CoverDelete
-// @Title 删除封面图
-// @Description 删除封面图
-// @Param	request  body  models.EnglishVideoCoverOptionReq  true  "type json string"
-// @Success 200 string "操作成功"
-// @router /video/cover/delete [post]
-func (this *EnglishVideoController) CoverDelete() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-	var req models.EnglishVideoCoverOptionReq
-	if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.Id <= 0 {
-		br.Msg = "参数有误"
-		return
-	}
-	errMsg, err := services.SoftDeleteEnglishVideoCover(req.Id)
-	if err != nil {
-		br.Msg = errMsg
-		br.ErrMsg = "SoftDeleteEnglishVideoCover ErrMsg:" + err.Error()
-		return
-	}
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}
-
-// @Title 新增/编辑路演视频
-// @Description 新增/编辑路演视频
-// @Param	request	body models.SaveEnglishVideoReq true "type json string"
-// @Success 200 {object} models.SaveEnglishVideoResp
-// @router /video/save [post]
-func (this *EnglishVideoController) Save() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-	var req models.SaveEnglishVideoReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.Title == "" {
-		br.Msg = "请输入标题"
-		return
-	}
-	if req.ClassifyIdFirst <= 0 {
-		br.Msg = "请输入一级分类"
-		return
-	}
-	if req.ClassifyIdSecond <= 0 {
-		br.Msg = "请选择二级分类"
-		return
-	}
-	if req.VideoUrl == "" {
-		br.Msg = "请输入视频地址"
-		return
-	}
-	if req.VideoCoverUrl == "" {
-		br.Msg = "请输入视频封面地址"
-		return
-	}
-	if req.VideoSeconds == "" {
-		br.Msg = "请输入视频时长"
-		return
-	}
-	if req.Overview == "" {
-		br.Msg = "请输入overview"
-		return
-	}
-	if req.Abstract == "" {
-		br.Msg = "请输入摘要"
-		return
-	}
-	id, videoCode, err, errMsg := services.SaveEnglishVideo(req, sysUser)
-	if err != nil {
-		br.Msg = err.Error()
-		br.ErrMsg = errMsg
-		return
-	}
-	resp := new(models.SaveEnglishVideoResp)
-	resp.Id = id
-	resp.VideoCode = videoCode
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "保存成功"
-	br.Data = resp
-}
-
-// @Title 获取路演视频详情接口
-// @Description 获取路演视频详情接口
-// @Param	request	body models.ReportDetailReq true "type json string"
-// @Success 200 {object} models.EnglishVideoDetailView
-// @router /video/detail [get]
-func (this *EnglishVideoController) Detail() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-
-	id, err := this.GetInt("Id")
-	if err != nil {
-		br.Msg = "获取参数失败!"
-		br.ErrMsg = "获取参数失败,Err:" + err.Error()
-		return
-	}
-	if id <= 0 {
-		br.Msg = "请选择路演视频记录"
-		return
-	}
-	item, err := models.GetEnglishVideoById(id)
-	if err != nil {
-		if utils.IsErrNoRow(err) {
-			br.Msg = "路演视频不存在"
-			return
-		}
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
-		return
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = item
-}
-
-// @Title 获取报告列表接口
-// @Description 获取报告列表
-// @Param   PageSize   query   int  true       "每页数据条数"
-// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
-// @Param   KeyWord   query   string  true       "搜索关键词"
-// @Success 200 {object} models.ReportListResp
-// @router /video/list [get]
-func (this *EnglishVideoController) List() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	pageSize, _ := this.GetInt("PageSize")
-	currentIndex, _ := this.GetInt("CurrentIndex")
-
-	keyWord := this.GetString("KeyWord")
-
-	var startSize int
-	if pageSize <= 0 {
-		pageSize = utils.PageSize20
-	}
-	if currentIndex <= 0 {
-		currentIndex = 1
-	}
-	startSize = utils.StartIndex(currentIndex, pageSize)
-
-	var condition string
-	var pars []interface{}
-
-	if keyWord != "" {
-		condition += ` AND title LIKE '%` + keyWord + `%' `
-	}
-
-	total, err := models.GetEnglishVideoListCount(condition, pars)
-	if err != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
-		return
-	}
-	list, err := models.GetEnglishVideoList(condition, pars, startSize, pageSize)
-	if err != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
-		return
-	}
-
-	// todo 获取邮件配置-是否有权限群发
-	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 == "" {
-		br.Msg = "获取失败"
-		br.ErrMsg = "群发邮件配置为空"
-		return
-	}
-	if e := json.Unmarshal([]byte(confAuth.ConfigValue), &conf); e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "群发邮件配置有误"
-		return
-	}
-	authOk := false
-	authArr := strings.Split(conf.SendAuthGroup, ",")
-	if utils.InArrayByStr(authArr, sysUser.RoleTypeCode) {
-		authOk = true
-	}
-
-	// todo 是否有群发邮件失败的记录,标记红点
-	failList, e := models.GetEnglishReportEmailLogFailList(1)
-	if e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取群发邮件记录失败, Err: " + e.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 {
-			//列表中展示分享地址
-			//item.ShareUrl = "https://share.hzinsights.com/reportEn?code=" + item.ReportCode
-		}
-		item.EmailAuth = authOk
-		if c, ok := failMap[item.Id]; ok {
-			item.EmailHasFail = c
-		}
-
-		// 邮箱PV大于0的时候, 不展示最初版本的PV
-		if item.PvEmail > 0 {
-			item.Pv = 0
-		}
-	}
-	page := paging.GetPaging(currentIndex, pageSize, total)
-	resp := new(models.EnglishVideoListResp)
-	resp.Paging = page
-	resp.List = list
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
-}
-
-// @Title 发布报告接口
-// @Description 发布报告
-// @Param	request	body models.EnglishVideoReq true "type json string"
-// @Success 200 Ret=200 发布成功
-// @router /video/publish [post]
-func (this *EnglishVideoController) PublishVideo() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	var req models.EnglishVideoReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	id := req.Id
-	if id <= 0 {
-		br.Msg = "请选择要发布的路演视频"
-		return
-	}
-	videoInfo, err := models.GetEnglishVideoById(id)
-	if err != nil {
-		if utils.IsErrNoRow(err) {
-			br.Msg = "路演视频不存在"
-			return
-		}
-		br.Msg = "获取路演视频失败"
-		br.ErrMsg = "获取路演视频失败,Err:" + err.Error()
-		return
-	}
-
-	var tmpErr error
-
-	if videoInfo.VideoUrl == "" {
-		br.Msg = "视频地址为空,不可发布"
-		br.ErrMsg = "视频地址为空,不需要生成, id:" + strconv.Itoa(videoInfo.Id)
-		return
-	}
-
-	if videoInfo.Title == "" {
-		br.Msg = "标题为空,不可发布"
-		br.ErrMsg = "标题为空,不需要生成, id:" + strconv.Itoa(videoInfo.Id)
-		return
-	}
-	if videoInfo.State == 2 {
-		br.Msg = "已发布,无需重复发布"
-		return
-	}
-	if tmpErr = models.PublishEnglishVideoById(videoInfo.Id); tmpErr != nil {
-		br.Msg = "路演视频发布失败"
-		br.ErrMsg = "路演视频发布失败, Err:" + tmpErr.Error() + ", id:" + strconv.Itoa(videoInfo.Id)
-		return
-	}
-	// 路演视频搜索
-	go func() {
-		_ = services.UpdateEnglishVideoEs(videoInfo.Id, 2)
-	}()
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "发布成功"
-}
-
-// @Title 取消发布报告接口
-// @Description 取消发布报告
-// @Param	request	body models.EnglishVideoReq true "type json string"
-// @Success 200 Ret=200 取消发布成功
-// @router /video/publish/cancel [post]
-func (this *EnglishVideoController) PublishCancleVideo() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	var req models.EnglishVideoReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.Id <= 0 {
-		br.Msg = "参数错误"
-		br.ErrMsg = "参数错误,路演视频id不可为空"
-		return
-	}
-	videoInfo, err := models.GetEnglishVideoById(req.Id)
-	if err != nil {
-		if utils.IsErrNoRow(err) {
-			br.Msg = "路演视频不存在"
-			return
-		}
-		br.Msg = "获取路演视频失败"
-		br.ErrMsg = "获取路演视频失败,Err:" + err.Error()
-		return
-	}
-
-	if videoInfo.State == 1 {
-		br.Msg = "已取消发布,无需重复取消"
-		return
-	}
-	err = models.PublishCancelEnglishVideo(req.Id)
-	if err != nil {
-		br.Msg = "取消发布失败"
-		br.ErrMsg = "取消发布失败,Err:" + err.Error()
-		return
-	}
-	// 更新es里的报告状态
-	go func() {
-		_ = services.UpdateEnglishVideoEs(videoInfo.Id, 1)
-	}()
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "取消发布成功"
-}
-
-// @Title 删除路演视频接口
-// @Description 删除路演视频
-// @Param	request	body models.EnglishVideoReq true "type json string"
-// @Success 200 Ret=200 删除成功
-// @router /video/delete [post]
-func (this *EnglishVideoController) Delete() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	var req models.EnglishVideoReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.Id <= 0 {
-		br.Msg = "请选择要发布的路演视频"
-		return
-	}
-	videoInfo, err := models.GetEnglishVideoById(req.Id)
-	if err != nil {
-		if utils.IsErrNoRow(err) {
-			br.Msg = "路演视频不存在"
-			return
-		}
-		br.Msg = "获取路演视频失败"
-		br.ErrMsg = "获取路演视频失败,Err:" + err.Error()
-		return
-	}
-	// 更新es里的路演视频状态
-	_ = services.UpdateEnglishVideoEs(videoInfo.Id, 1)
-	if videoInfo.State == 2 {
-		br.Msg = "路演视频已发布,不可删除"
-		return
-	}
-	if err = models.DeleteEnglishVideo(req.Id); err != nil {
-		br.Msg = "删除失败"
-		br.ErrMsg = "删除路演视频失败, Err: " + err.Error()
-		return
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "删除成功"
-}

+ 0 - 206
controllers/english_report/policy_report.go

@@ -1,206 +0,0 @@
-package english_report
-
-import (
-	"encoding/json"
-	"eta_gn/eta_api/controllers"
-	"eta_gn/eta_api/models"
-	"eta_gn/eta_api/services"
-	"eta_gn/eta_api/utils"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"html"
-	"time"
-)
-
-// EnglishPolicyReportController 研报活动模块
-type EnglishPolicyReportController struct {
-	controllers.BaseAuthController
-}
-
-// @Title 获取策略报告详情接口
-// @Description 获取报告详情
-// @Param   Id   query   int  true       "报告ID"
-// @Success 200 {object} models.EnglishPolicyReportDetailView
-// @router /policy/detail [get]
-func (this *EnglishPolicyReportController) Detail() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	reportId, err := this.GetInt("Id")
-	if err != nil {
-		br.Msg = "获取参数失败!"
-		br.ErrMsg = "获取参数失败,Err:" + err.Error()
-		return
-	}
-	if reportId <= 0 {
-		br.Msg = "参数错误"
-		return
-	}
-	item, err := models.GetEnglishPolicyReportById(reportId)
-	if err != nil {
-		if utils.IsErrNoRow(err) {
-			br.Msg = "报告不存在!"
-			return
-		}
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
-		return
-	}
-
-	item.Content = html.UnescapeString(item.Content)
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = item
-}
-
-// @Title 获取报告列表接口
-// @Description 获取报告列表
-// @Param   PageSize   query   int  true       "每页数据条数"
-// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
-// @Param   StartDate   query   string  true       "开始时间"
-// @Param   EndDate   query   string  true       "结束时间"
-// @Param   State   query   int  true       "状态"
-// @Param   KeyWord   query   string  true       "搜索关键词"
-// @Success 200 {object} models.ReportListResp
-// @router /policy/list [get]
-func (this *EnglishPolicyReportController) ListReport() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	pageSize, _ := this.GetInt("PageSize")
-	currentIndex, _ := this.GetInt("CurrentIndex")
-
-	startDate := this.GetString("StartDate")
-	endDate := this.GetString("EndDate")
-	state, _ := this.GetInt("State")
-	keyWord := this.GetString("KeyWord")
-
-	var startSize int
-	if pageSize <= 0 {
-		pageSize = utils.PageSize20
-	}
-	if currentIndex <= 0 {
-		currentIndex = 1
-	}
-	startSize = utils.StartIndex(currentIndex, pageSize)
-
-	var condition string
-	var pars []interface{}
-
-	if keyWord != "" {
-		condition += ` AND (title LIKE '%` + keyWord + `%' OR author LIKE '%` + keyWord + `%' ) `
-	}
-	if startDate != "" {
-		condition += ` AND publish_time >= ? `
-		pars = append(pars, startDate)
-	}
-	if endDate != "" {
-		endTime, _ := time.ParseInLocation(utils.FormatDate, endDate, time.Local)
-		endTime = endTime.AddDate(0, 0, 1)
-		condition += ` AND publish_time <= ? `
-		pars = append(pars, endTime)
-	}
-
-	if state > 0 {
-		condition += ` AND state = ? `
-		pars = append(pars, state)
-	}
-	total, err := models.GetEnglishPolicyReportListCount(condition, pars)
-	if err != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
-		return
-	}
-	list, err := models.GetEnglishPolicyReportList(condition, pars, startSize, pageSize)
-	if err != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
-		return
-	}
-	page := paging.GetPaging(currentIndex, pageSize, total)
-	resp := new(models.EnglishPolicyReportListResp)
-	resp.Paging = page
-	resp.List = list
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
-}
-
-// @Title 同步报告接口
-// @Description 同步报告接口
-// @Param	request	body models.SyncEnglishPolicyReq true "type json string"
-// @Success 200 Ret=200 发布成功
-// @router /policy/sync [post]
-func (this *EnglishPolicyReportController) SyncReport() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-	var req models.SyncEnglishPolicyReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	reportId := req.Id
-	if reportId <= 0 {
-		br.Msg = "请选择策略报告"
-		return
-	}
-	err, errMsg := services.EnglishPolicyReportSync(reportId, sysUser)
-	if err != nil {
-		br.Msg = err.Error()
-		br.ErrMsg = errMsg
-		return
-	}
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "同步成功"
-}
-
-// @Title 获取最新的策略报告
-// @Description 获取最新的策略报告
-// @Param	request	body models.SyncEnglishPolicyReq true "type json string"
-// @Success 200 Ret=200 获取成功
-// @router /policy/pull [get]
-func (this *EnglishPolicyReportController) PullPolicyData() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-
-	data, err, msg := services.PullPolicyReport()
-	if err != nil {
-		br.Msg = msg
-		br.ErrMsg = err.Error()
-		return
-	}
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = data
-}

+ 0 - 1442
controllers/english_report/report.go

@@ -1,1442 +0,0 @@
-package english_report
-
-import (
-	"encoding/json"
-	"eta_gn/eta_api/controllers"
-	"eta_gn/eta_api/models"
-	"eta_gn/eta_api/models/company"
-	"eta_gn/eta_api/models/report_approve"
-	"eta_gn/eta_api/models/system"
-	"eta_gn/eta_api/services"
-	"eta_gn/eta_api/services/alarm_msg"
-	"eta_gn/eta_api/services/data"
-	"eta_gn/eta_api/utils"
-	"fmt"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"html"
-	"strconv"
-	"strings"
-	"time"
-)
-
-// EnglishReportController 研报活动模块
-type EnglishReportController struct {
-	controllers.BaseAuthController
-}
-
-// @Title 新增报告接口
-// @Description 新增报告
-// @Param	request	body models.AddEnglishReportReq true "type json string"
-// @Success 200 {object} models.AddEnglishReportResp
-// @router /add [post]
-func (this *EnglishReportController) Add() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-	var req models.AddEnglishReportReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.Content == "" {
-		br.Msg = "请输入内容"
-		return
-	}
-	if req.Overview == "" {
-		br.Msg = "请输入overview"
-		return
-	}
-	if req.Abstract == "" {
-		br.Msg = "请输入摘要"
-		return
-	}
-
-	var contentSub string
-	if req.Content != "" {
-		e := utils.ContentXssCheck(req.Content)
-		if e != nil {
-			br.Msg = "存在非法标签"
-			br.ErrMsg = "存在非法标签, Err: " + e.Error()
-			return
-		}
-		content, e := services.FilterReportContentBr(req.Content)
-		if e != nil {
-			br.Msg = "内容去除前后空格失败"
-			br.ErrMsg = "内容去除前后空格失败, Err: " + e.Error()
-			return
-		}
-		req.Content = content
-
-		contentSub, err = services.GetReportContentSub(req.Content)
-		if err != nil {
-			go alarm_msg.SendAlarmMsg("ContentSub 失败,Err:"+err.Error(), 3)
-			//utils.SendEmail(utils.APPNAME+"失败提醒", "解析 ContentSub 失败,Err:"+err.Error(), utils.EmailSendToUsers)
-		}
-	}
-	maxStage, err := models.GetEnglishReportStage(req.ClassifyIdFirst, req.ClassifyIdSecond)
-	if err != nil {
-		br.Msg = "期数获取失败!"
-		br.ErrMsg = "期数获取失败,Err:" + err.Error()
-		return
-	}
-
-	// 根据审批开关及审批流判断当前报告状态
-	state, e := services.CheckReportCurrState(report_approve.FlowReportTypeEnglish, req.ClassifyIdFirst, req.ClassifyIdSecond, req.ClassifyIdThird, models.ReportOperateAdd)
-	if e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "校验报告当前状态失败, Err: " + e.Error()
-		return
-	}
-
-	item := new(models.EnglishReport)
-	item.AddType = req.AddType
-	item.ClassifyIdFirst = req.ClassifyIdFirst
-	item.ClassifyNameFirst = req.ClassifyNameFirst
-	item.ClassifyIdSecond = req.ClassifyIdSecond
-	item.ClassifyNameSecond = req.ClassifyNameSecond
-	item.Title = req.Title
-	item.Abstract = req.Abstract
-	item.Author = req.Author
-	item.Frequency = req.Frequency
-	item.State = state
-	item.Content = html.EscapeString(req.Content)
-	item.Stage = maxStage + 1
-	item.ContentSub = html.EscapeString(contentSub)
-	item.CreateTime = req.CreateTime
-	item.ModifyTime = time.Now()
-	item.Overview = req.Overview
-	item.AdminId = sysUser.AdminId
-	item.AdminRealName = sysUser.RealName
-	newReportId, err := models.AddEnglishReport(item)
-	if err != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "保存失败,Err:" + err.Error()
-		return
-	}
-	reportCode := utils.MD5(strconv.Itoa(int(newReportId)))
-	//修改唯一编码
-	{
-		go models.ModifyEnglishReportCode(newReportId, reportCode)
-	}
-	resp := new(models.AddEnglishReportResp)
-	resp.ReportId = newReportId
-	resp.ReportCode = reportCode
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "保存成功"
-	br.Data = resp
-}
-
-// @Title 编辑报告接口
-// @Description 编辑报告
-// @Param	request	body models.EditEnglishReportReq true "type json string"
-// @Success 200 {object} models.EditEnglishReportResp
-// @router /edit [post]
-func (this *EnglishReportController) Edit() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-	var req models.EditEnglishReportReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.Content == "" {
-		br.Msg = "请输入内容"
-		return
-	}
-	if req.Overview == "" {
-		br.Msg = "请输入overview"
-		return
-	}
-	if req.Abstract == "" {
-		br.Msg = "请输入摘要"
-		return
-	}
-
-	markStatus, err := services.UpdateEnReportEditMark(int(req.ReportId), sysUser.AdminId, 1, sysUser.RealName, this.Lang)
-	if err != nil {
-		br.Msg = err.Error()
-		return
-	}
-	if markStatus.Status == 1 {
-		br.Msg = markStatus.Msg
-		return
-	}
-	var contentSub string
-	if req.Content != "" {
-		e := utils.ContentXssCheck(req.Content)
-		if e != nil {
-			br.Msg = "存在非法标签"
-			br.ErrMsg = "存在非法标签, Err: " + e.Error()
-			return
-		}
-		content, e := services.FilterReportContentBr(req.Content)
-		if e != nil {
-			br.Msg = "内容去除前后空格失败"
-			br.ErrMsg = "内容去除前后空格失败, Err: " + e.Error()
-			return
-		}
-		req.Content = content
-
-		contentSub, err = services.GetReportContentSub(req.Content)
-		if err != nil {
-			go alarm_msg.SendAlarmMsg("解析 ContentSub 失败,Err:"+err.Error(), 3)
-			//utils.SendEmail(utils.APPNAME+"失败提醒", "解析 ContentSub 失败,Err:"+err.Error(), utils.EmailSendToUsers)
-		}
-	}
-
-	var stage int
-	report, e := models.GetEnglishReportById(int(req.ReportId))
-	if e != nil {
-		if utils.IsErrNoRow(e) {
-			br.Msg = "报告已被删除, 请刷新页面"
-			return
-		}
-		br.Msg = "操作失败"
-		br.ErrMsg = "获取报告失败, Err: " + e.Error()
-		return
-	}
-	if report.State == models.ReportStatePublished || report.State == models.ReportStatePass {
-		br.Msg = "该报告已发布,不允许编辑"
-		br.ErrMsg = "该报告已发布,不允许编辑"
-		return
-	}
-	if report.ClassifyNameFirst != req.ClassifyNameFirst || report.ClassifyNameSecond != req.ClassifyNameSecond {
-		maxStage, _ := models.GetEnglishReportStageEdit(req.ClassifyIdFirst, req.ClassifyIdSecond, int(req.ReportId))
-		maxStage = maxStage + 1
-		stage = maxStage
-	} else {
-		stage = report.Stage
-	}
-
-	item := new(models.EnglishReport)
-	item.ClassifyIdFirst = req.ClassifyIdFirst
-	item.ClassifyNameFirst = req.ClassifyNameFirst
-	item.ClassifyIdSecond = req.ClassifyIdSecond
-	item.ClassifyNameSecond = req.ClassifyNameSecond
-	item.Title = req.Title
-	item.Abstract = req.Abstract
-	item.Author = req.Author
-	item.Frequency = req.Frequency
-	item.State = report.State // 编辑不变更状态
-	item.Stage = stage
-	item.Content = html.EscapeString(req.Content)
-	item.ContentSub = html.EscapeString(contentSub)
-	item.CreateTime = req.CreateTime
-	item.Overview = req.Overview
-	err = models.EditEnglishReport(item, req.ReportId)
-	if err != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "保存失败,Err:" + err.Error()
-		return
-	}
-
-	reportCode := utils.MD5(strconv.Itoa(int(req.ReportId)))
-	resp := new(models.EditEnglishReportResp)
-	resp.ReportId = req.ReportId
-	resp.ReportCode = reportCode
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "保存成功"
-	br.Data = resp
-}
-
-// @Title 获取报告详情接口
-// @Description 获取报告详情
-// @Param	request	body models.ReportDetailReq true "type json string"
-// @Success 200 {object} models.EnglishReportDetailView
-// @router /detail [get]
-func (this *EnglishReportController) Detail() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	/*var req models.ReportDetailReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.ReportId <= 0 {
-		br.Msg = "参数错误"
-		return
-	}*/
-	reportId, err := this.GetInt("ReportId")
-	if err != nil {
-		br.Msg = "获取参数失败!"
-		br.ErrMsg = "获取参数失败,Err:" + err.Error()
-		return
-	}
-	if reportId <= 0 {
-		br.Msg = "参数错误"
-		return
-	}
-	item, err := models.GetEnglishReportById(reportId)
-	if err != nil {
-		if utils.IsErrNoRow(err) {
-			br.Msg = "报告已被删除"
-			return
-		}
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
-		return
-	}
-
-	item.Content = html.UnescapeString(item.Content)
-	item.ContentSub = html.UnescapeString(item.ContentSub)
-
-	classifyNameMap := make(map[int]*models.EnglishClassifyFullName)
-	if item.ClassifyIdSecond > 0 {
-		nameList, tErr := models.GetEnglishClassifyFullNameByIds([]int{item.ClassifyIdSecond})
-		if tErr != nil {
-			br.Msg = "获取分类名称失败"
-			br.ErrMsg = "获取分类名称失败, ERR:" + tErr.Error()
-			return
-		}
-		for _, v := range nameList {
-			classifyNameMap[v.Id] = v
-		}
-		//处理分类名
-		if n, ok := classifyNameMap[item.ClassifyIdSecond]; ok {
-			item.ClassifyNameRoot = n.RootName
-			item.ClassifyIdRoot = n.RootId
-		}
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = item
-}
-
-// ListReport
-// @Title 获取报告列表接口
-// @Description 获取报告列表
-// @Param   PageSize   query   int  true       "每页数据条数"
-// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
-// @Param   TimeType     query string true  "筛选的时间类别:publish_time(发布时间),modify_time(更新时间);approve_time(审批时间)"
-// @Param   StartDate   query   string  true       "开始时间"
-// @Param   EndDate   query   string  true       "结束时间"
-// @Param   Frequency   query   string  true       "频度"
-// @Param   ClassifyIdFirst   query   string  true       "一级分类id"
-// @Param   ClassifyIdSecond   query   string  true       "二级分类id"
-// @Param   State   query   int  true       "状态"
-// @Param   KeyWord   query   string  true       "搜索关键词"
-// @Param   PublishSort   query   string  true       "desc:降序,asc 升序(预留)"
-// @Param   CompanyType   query   string  false       "产品类型,枚举值:'ficc','权益';不传默认返回全部"
-// @Success 200 {object} models.ReportListResp
-// @router /list [get]
-func (this *EnglishReportController) ListReport() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	pageSize, _ := this.GetInt("PageSize")
-	currentIndex, _ := this.GetInt("CurrentIndex")
-
-	timeType := this.GetString("TimeType")
-	startDate := this.GetString("StartDate")
-	endDate := this.GetString("EndDate")
-	frequency := this.GetString("Frequency")
-	classifyIdFirst, _ := this.GetInt("ClassifyIdFirst")
-	classifyIdSecond, _ := this.GetInt("ClassifyIdSecond")
-	classifyIdRoot, _ := this.GetInt("ClassifyIdRoot")
-	state, _ := this.GetInt("State")
-	keyWord := this.GetString("KeyWord")
-	companyType := this.GetString("CompanyType")
-	// 群发邮件状态筛选
-	emailState, _ := this.GetInt("EmailState")
-
-	var startSize int
-	if pageSize <= 0 {
-		pageSize = utils.PageSize20
-	}
-	if currentIndex <= 0 {
-		currentIndex = 1
-	}
-	startSize = utils.StartIndex(currentIndex, pageSize)
-
-	var condition string
-	var pars []interface{}
-
-	if keyWord != "" {
-		condition += ` AND (title LIKE ? OR admin_real_name LIKE ? ) `
-		pars = utils.GetLikeKeywordPars(pars, keyWord, 2)
-	}
-
-	if timeType == "" {
-		timeType = "publish_time"
-	}
-	if timeType != "publish_time" && timeType != "modify_time" && timeType != "approve_time" {
-		br.Msg = "请选择正确的时间"
-		br.ErrMsg = "请选择正确的时间"
-		return
-	}
-
-	if startDate != "" {
-		condition += ` AND ` + timeType + ` >= ? `
-		pars = append(pars, startDate)
-	}
-	if endDate != "" {
-		condition += ` AND ` + timeType + ` <= ? `
-		pars = append(pars, endDate)
-	}
-	if frequency != "" {
-		condition += ` AND frequency = ? `
-		pars = append(pars, frequency)
-	}
-	if classifyIdFirst != 0 {
-		condition += ` AND classify_id_first = ? `
-		pars = append(pars, classifyIdFirst)
-	}
-
-	if classifyIdSecond != 0 {
-		condition += ` AND classify_id_second = ? `
-		pars = append(pars, classifyIdSecond)
-	}
-	if state > 0 {
-		condition += ` AND state = ? `
-		pars = append(pars, state)
-	}
-	if classifyIdRoot > 0 && classifyIdFirst == 0 && classifyIdSecond == 0 {
-		//查询顶级分类下的所有二级分类ID
-		childClassify, err := models.GetEnglishSecondClassifyList([]int{classifyIdRoot})
-		if err != nil {
-			br.Msg = "查询子分类出错"
-			br.ErrMsg = "查询子分类出错, Err:" + err.Error()
-			return
-		}
-		var childClassifyIds []int
-		if len(childClassify) > 0 {
-			for _, v := range childClassify {
-				childClassifyIds = append(childClassifyIds, v.Id)
-			}
-			condition += ` AND classify_id_first IN (` + utils.GetOrmInReplace(len(childClassifyIds)) + `)`
-			pars = append(pars, childClassifyIds)
-		} else {
-			//一级分类下没有子分类,直接返回空列表
-			page := paging.GetPaging(currentIndex, pageSize, 0)
-			resp := new(models.EnglishReportListResp)
-			resp.Paging = page
-			resp.List = make([]*models.EnglishReportList, 0)
-			br.Ret = 200
-			br.Success = true
-			br.Msg = "获取成功"
-			br.Data = resp
-			return
-		}
-	}
-
-	// 群发邮件状态筛选
-	{
-		// 未群发邮件(包含推送邮件失败的)
-		if emailState == 1 {
-			condition += ` AND (email_state = 0 OR email_has_fail = 1) `
-		}
-		// 已群发邮件
-		if emailState == 2 {
-			condition += ` AND email_state = 1 AND email_has_fail = 0 `
-		}
-	}
-
-	var authOk bool
-	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
-	}
-
-	list, e := models.GetEnglishReportList(condition, pars, companyType, startSize, pageSize, []string{})
-	if e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取英文研报列表失败, Err: " + e.Error()
-		return
-	}
-
-	// 获取邮件配置-是否有权限群发
-	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 == "" {
-		br.Msg = "获取失败"
-		br.ErrMsg = "群发邮件配置为空"
-		return
-	}
-	if e = json.Unmarshal([]byte(confAuth.ConfigValue), &conf); e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "群发邮件配置有误, Err: " + e.Error()
-		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
-	for _, item := range list {
-		classifyIdSecondSlice = append(classifyIdSecondSlice, item.ClassifyIdSecond)
-	}
-	classifyNameMap := make(map[int]*models.EnglishClassifyFullName)
-	if len(classifyIdSecondSlice) > 0 {
-		nameList, err := models.GetEnglishClassifyFullNameByIds(classifyIdSecondSlice)
-		if err != nil {
-			br.Msg = "获取分类名称失败"
-			br.ErrMsg = "获取分类名称失败, ERR:" + err.Error()
-			return
-		}
-		for _, v := range nameList {
-			classifyNameMap[v.Id] = v
-		}
-	}
-	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
-		key := fmt.Sprint(`crm:enReport:edit:`, v.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
-				}
-			}
-		}
-		var ret models.MarkReportResp
-		if opUserId > 0 && opUserId != sysUser.AdminId {
-			editor := opUser.Editor
-			if editor == "" {
-				editor = adminMap[opUserId]
-			}
-			ret.Status = 1
-			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
-		}
-		if ret.Status == 0 {
-			t.CanEdit = true
-		} else {
-			t.Editor = ret.Editor
-		}
-
-		//处理分类名
-		if n, ok := classifyNameMap[v.ClassifyIdSecond]; ok {
-			if n.RootId == 0 {
-				t.FullClassifyName = strings.Join([]string{n.ParentName, n.ClassifyName}, "/")
-			} else {
-				t.FullClassifyName = strings.Join([]string{n.RootName, n.ParentName, n.ClassifyName}, "/")
-			}
-			t.ClassifyIdRoot = n.RootId
-			t.ClassifyNameRoot = n.RootName
-		}
-		respList = append(respList, t)
-	}
-
-	page := paging.GetPaging(currentIndex, pageSize, total)
-	resp := new(models.EnglishReportListResp)
-	resp.Paging = page
-	resp.List = respList
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
-}
-
-// PublishReport
-// @Title 发布报告接口
-// @Description 发布报告
-// @Param	request	body models.PublishReq true "type json string"
-// @Success 200 Ret=200 发布成功
-// @router /publish [post]
-func (this *EnglishReportController) PublishReport() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	var req models.PublishReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	reportIds := req.ReportIds
-	if reportIds == "" {
-		br.Msg = "参数错误"
-		br.ErrMsg = "参数错误,报告id不可为空"
-		return
-	}
-
-	reportArr := strings.Split(reportIds, ",")
-	for _, v := range reportArr {
-		vint, err := strconv.Atoi(v)
-		if err != nil {
-			br.Msg = "参数错误"
-			br.ErrMsg = "参数错误,Err:" + err.Error()
-			return
-		}
-		report, err := models.GetEnglishReportById(vint)
-		if err != nil {
-			br.Msg = "获取报告信息失败"
-			br.ErrMsg = "获取报告信息失败,Err:" + err.Error()
-			return
-		}
-		if report == nil {
-			br.Msg = "报告不存在"
-			return
-		}
-
-		// 图表刷新状态
-		refreshResult := data.CheckBatchChartRefreshResult("report", vint, 0)
-		if !refreshResult {
-			br.Msg = "图表刷新未完成,请稍后操作"
-			br.ErrMsg = "图表刷新未完成,请稍后操作"
-			br.IsSendEmail = false
-			return
-		}
-
-		var tmpErr error
-
-		if report.Content == "" {
-			br.Msg = "报告内容为空,不可发布"
-			br.ErrMsg = "报告内容为空,不需要生成,report_id:" + strconv.Itoa(report.Id)
-			return
-		}
-		var publishTime string
-		if report.PublishTime != "" {
-			// 发布时间固定为首次发布时间
-			publishTime = report.PublishTime
-		} else {
-			publishTime = time.Now().Format(utils.FormatDateTime)
-		}
-
-		// 根据审批开关及审批流判断当前报告状态
-		state, e := services.CheckReportCurrState(report_approve.FlowReportTypeEnglish, report.ClassifyIdFirst, report.ClassifyIdSecond, 0, models.ReportOperatePublish)
-		if e != nil {
-			br.Msg = "操作失败"
-			br.ErrMsg = "校验报告当前状态失败, Err: " + e.Error()
-			return
-		}
-
-		if state == models.ReportStatePublished {
-			// 发布报告
-			if tmpErr = models.PublishEnglishReportById(report.Id, publishTime); tmpErr != nil {
-				br.Msg = "报告发布失败"
-				br.ErrMsg = "报告发布失败, Err:" + tmpErr.Error() + ", report_id:" + strconv.Itoa(report.Id)
-				return
-			}
-			go func() {
-				_ = services.UpdateEnglishReportEs(report.Id, 2)
-			}()
-
-			// 生成报告pdf和长图
-			if req.ReportUrl != "" {
-				go services.Report2pdfAndJpeg(req.ReportUrl, report.Id, 2)
-			}
-		} else {
-			// 从无审批切换为有审批, 状态重置
-			if e = models.ResetEnglishReportById(report.Id, state); tmpErr != nil {
-				br.Msg = "操作失败"
-				br.ErrMsg = fmt.Sprintf("重置英文报告状态失败, Err: %s, ReportId: %d", e.Error(), report.Id)
-				return
-			}
-		}
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "发布成功"
-}
-
-// PrePublishReport
-// @Title 设置定时发布接口
-// @Description 设置定时发布接口
-// @Param	request	body models.PrePublishReq true "type json string"
-// @Success 200 Ret=200 发布成功
-// @router /pre_publish [post]
-func (this *EnglishReportController) PrePublishReport() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	var req models.PrePublishReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	reportId := req.ReportId
-	if reportId == 0 {
-		br.Msg = "参数错误"
-		br.ErrMsg = "参数错误,报告id不可为空"
-		return
-	}
-	if req.PrePublishTime == "" {
-		br.Msg = "发布时间不能为空"
-		return
-	}
-	prePublishTime, err := time.ParseInLocation(utils.FormatDateTime, req.PrePublishTime, time.Local)
-	if err != nil {
-		br.Msg = "发布时间格式错误"
-		br.ErrMsg = "发布时间格式错误,Err:" + err.Error()
-		return
-	}
-	if prePublishTime.Before(time.Now()) {
-		br.Msg = "发布时间不允许选择过去时间"
-		return
-	}
-	if prePublishTime.Before(time.Now().Add(2 * time.Minute)) {
-		br.Msg = "发布时间距离当前时间太近了"
-		return
-	}
-	report, err := models.GetEnglishReportById(reportId)
-	if err != nil {
-		br.Msg = "获取报告信息失败"
-		br.ErrMsg = "获取报告信息失败,Err:" + err.Error()
-		return
-	}
-	if report == nil {
-		br.Msg = "报告不存在"
-		return
-	}
-
-	if report.Content == "" {
-		br.Msg = "报告内容为空,不可发布"
-		br.ErrMsg = "报告内容为空,不需要生成,report_id:" + strconv.Itoa(report.Id)
-		return
-	}
-
-	if report.State == 2 {
-		br.Msg = "报告已发布,不可设置定时发布"
-		return
-	}
-
-	// 校验是否开启了审批流
-	opening, e := services.CheckReportOpenApprove(report_approve.FlowReportTypeEnglish, report.ClassifyIdFirst, report.ClassifyIdSecond, 0)
-	if e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "校验报告是否开启审批流失败, Err: " + e.Error()
-		return
-	}
-	if opening {
-		br.Msg = "报告已开启审批流, 不可设置定时发布"
-		return
-	}
-
-	var tmpErr error
-	if tmpErr = models.SetPrePublishEnglishReportById(report.Id, req.PrePublishTime); tmpErr != nil {
-		br.Msg = "设置定时发布失败"
-		br.ErrMsg = "设置定时发布失败, Err:" + tmpErr.Error() + ", report_id:" + strconv.Itoa(report.Id)
-		return
-	}
-
-	// 生成报告pdf和长图
-	if req.ReportUrl != "" {
-		go services.Report2pdfAndJpeg(req.ReportUrl, report.Id, 2)
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "定时发布成功"
-}
-
-// @Title 取消发布报告接口
-// @Description 取消发布报告
-// @Param	request	body models.PublishCancelReq true "type json string"
-// @Success 200 Ret=200 取消发布成功
-// @router /publish/cancel [post]
-func (this *EnglishReportController) PublishCancleReport() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	var req models.PublishCancelReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.ReportIds <= 0 {
-		br.Msg = "参数错误"
-		br.ErrMsg = "参数错误,报告id不可为空"
-		return
-	}
-	reportInfo, err := models.GetEnglishReportById(req.ReportIds)
-	if err != nil {
-		br.Msg = "获取报告信息失败"
-		br.ErrMsg = "获取报告信息失败,Err:" + err.Error()
-		return
-	}
-
-	// 根据审批开关及审批流判断当前报告状态
-	state, e := services.CheckReportCurrState(report_approve.FlowReportTypeEnglish, reportInfo.ClassifyIdFirst, reportInfo.ClassifyIdSecond, 0, models.ReportOperateCancelPublish)
-	if e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "校验报告当前状态失败, Err: " + e.Error()
-		return
-	}
-
-	err = models.PublishCancelEnglishReport(req.ReportIds, state)
-	if err != nil {
-		br.Msg = "取消发布失败"
-		br.ErrMsg = "取消发布失败,Err:" + err.Error()
-		return
-	}
-	// 更新es里的报告状态
-	go func() {
-		_ = services.UpdateEnglishReportEs(req.ReportIds, 1)
-	}()
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "取消发布成功"
-}
-
-// @Title 删除报告接口
-// @Description 删除报告
-// @Param	request	body models.DeleteReq true "type json string"
-// @Success 200 Ret=200 删除成功
-// @router /delete [post]
-func (this *EnglishReportController) Delete() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	var req models.DeleteReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.ReportIds <= 0 {
-		br.Msg = "参数错误"
-		br.ErrMsg = "参数错误,报告id不可为空"
-		return
-	}
-	reportInfo, err := models.GetEnglishReportById(req.ReportIds)
-	if err != nil {
-		if utils.IsErrNoRow(err) {
-			br.Msg = "报告不存在"
-			return
-		}
-		br.Msg = "查询报告信息失败"
-		br.ErrMsg = "查询报告信息失败, Err" + err.Error()
-		return
-	}
-
-	// 更新es里的报告状态
-	_ = services.UpdateEnglishReportEs(req.ReportIds, 1)
-	if err = models.DeleteEnglishReportAndChapter(reportInfo); err != nil {
-		br.Msg = "删除失败"
-		br.ErrMsg = "删除报告失败, Err: " + err.Error()
-		return
-	}
-
-	// 重置PPT关联报告
-	go func() {
-		_ = services.ResetPPTReport(req.ReportIds, true)
-	}()
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "删除成功"
-}
-
-// @Title 保存草稿
-// @Description 保存草稿
-// @Param	request	body models.SaveReportContent true "type json string"
-// @Success 200 {object} models.ReportAuthorResp
-// @router /saveReportContent [post]
-func (this *EnglishReportController) SaveReportContent() {
-	br := new(models.BaseResponse).Init()
-	br.IsSendEmail = false
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	var req models.SaveReportContent
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	reportId := req.ReportId
-	noChangeFlag := req.NoChange
-	fmt.Println("reportId:", reportId)
-	if reportId <= 0 {
-		br.Msg = "请输入报告ID"
-		return
-	}
-	markStatus, err := services.UpdateEnReportEditMark(int(req.ReportId), sysUser.AdminId, 1, sysUser.RealName, this.Lang)
-	if err != nil {
-		br.Msg = err.Error()
-		return
-	}
-	if markStatus.Status == 1 {
-		br.Msg = markStatus.Msg
-		return
-	}
-
-	if noChangeFlag != 1 {
-		content := req.Content
-		if content == "" {
-			content = this.GetString("Content")
-		}
-		if content != "" {
-			e := utils.ContentXssCheck(req.Content)
-			if e != nil {
-				br.Msg = "存在非法标签"
-				br.ErrMsg = "存在非法标签, Err: " + e.Error()
-				return
-			}
-			contentClean, e := services.FilterReportContentBr(req.Content)
-			if e != nil {
-				br.Msg = "内容去除前后空格失败"
-				br.ErrMsg = "内容去除前后空格失败, Err: " + e.Error()
-				return
-			}
-			content = contentClean
-
-			contentSub, err := services.GetReportContentSub(content)
-			if err != nil {
-				go alarm_msg.SendAlarmMsg("解析 ContentSub 失败,Err:"+err.Error(), 3)
-				//utils.SendEmail(utils.APPNAME+"失败提醒", "解析 ContentSub 失败,Err:"+err.Error(), utils.EmailSendToUsers)
-			}
-			content = html.EscapeString(content)
-			contentSub = html.EscapeString(contentSub)
-			err = models.EditEnglishReportContent(reportId, content, contentSub)
-			if err != nil {
-				br.Msg = "保存失败"
-				br.ErrMsg = "保存失败,Err:" + err.Error()
-				return
-			}
-			go models.AddEnglishReportSaveLog(reportId, this.SysUser.AdminId, content, contentSub, this.SysUser.AdminName)
-		}
-	}
-	resp := new(models.SaveReportContentResp)
-	resp.ReportId = reportId
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "保存成功成功"
-	br.Data = resp
-}
-
-// @Title 根据分类获取最近一次报告详情接口
-// @Description 根据分类获取最近一次报告详情
-// @Param	request	body models.ClassifyIdDetailReq true "type json string"
-// @Success 200 {object} models.Report
-// @router /classifyIdDetail [get]
-func (this *EnglishReportController) ClassifyIdDetail() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	//classify_id_first=34&classify_id_second=36
-
-	/*var req models.ClassifyIdDetailReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}*/
-	classifyIdFirst, _ := this.GetInt("classify_id_first")
-	if classifyIdFirst <= 0 {
-		classifyIdFirst, _ = this.GetInt("ClassifyIdFirst")
-	}
-	classifyIdSecond, _ := this.GetInt("classify_id_second")
-	if classifyIdSecond <= 0 {
-		classifyIdSecond, _ = this.GetInt("ClassifyIdSecond")
-	}
-	item, err := models.GetEnglishReportDetailByClassifyId(classifyIdFirst, classifyIdSecond)
-	if err != nil && !utils.IsErrNoRow(err) {
-		br.Msg = "获取失败!"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
-		return
-	}
-	if item != nil {
-		item.Content = html.UnescapeString(item.Content)
-		item.ContentSub = html.UnescapeString(item.ContentSub)
-
-		classifyNameMap := make(map[int]*models.EnglishClassifyFullName)
-		if item.ClassifyIdSecond > 0 {
-			nameList, tErr := models.GetEnglishClassifyFullNameByIds([]int{item.ClassifyIdSecond})
-			if tErr != nil {
-				br.Msg = "获取分类名称失败"
-				br.ErrMsg = "获取分类名称失败, ERR:" + tErr.Error()
-				return
-			}
-			for _, v := range nameList {
-				classifyNameMap[v.Id] = v
-			}
-			//处理分类名
-			if n, ok := classifyNameMap[item.ClassifyIdSecond]; ok {
-				item.ClassifyNameRoot = n.RootName
-				item.ClassifyIdRoot = n.RootId
-			}
-		}
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = item
-}
-
-// Author
-// @Title 获取报告作者接口
-// @Description 获取报告作者
-// @Param   AuthorType   query   int  true       "来源类型,1:中文,2:英文"
-// @Param   Keyword   query   string  true       "搜索关键词"
-// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
-// @Param   StartDate   query   string  true       "开始时间"
-// @Success 200 {object} models.ReportAuthorResp
-// @router /author [get]
-func (this *EnglishReportController) Author() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-
-	keyword := this.GetString("Keyword")
-
-	var condition string
-	var pars []interface{}
-	condition += ` AND author_type = 2 AND enable = 1`
-
-	if keyword != `` {
-		condition += ` AND report_author like ? `
-		pars = append(pars, utils.GetLikeKeyword(keyword))
-	}
-
-	_, items, err := models.GetReportAuthorList(condition, pars, 0, 10000)
-	if err != nil {
-		br.Msg = "获取失败!"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
-		return
-	}
-	resp := models.ReportAuthorResp{
-		List: items,
-	}
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
-}
-
-// MarkEditStatus
-// @Title 标记报告编辑状态
-// @Description 标记报告编辑状态接口
-// @Param	request	body request.MarkEditEnReport true "type json string"
-// @Success 200 标记成功 ;202 标记成功
-// @router /mark [post]
-func (this *EnglishReportController) MarkEditStatus() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-	var req models.MarkEditEnReport
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-
-	if req.ReportId <= 0 {
-		br.Msg = "缺少报告Id"
-		return
-	}
-	if req.Status <= 0 {
-		br.Msg = "标记状态异常"
-		return
-	}
-	//更新标记key
-	data, err := services.UpdateEnReportEditMark(req.ReportId, sysUser.AdminId, req.Status, sysUser.RealName, this.Lang)
-	if err != nil {
-		br.Msg = err.Error()
-		return
-	}
-
-	msg := "标记成功"
-	br.Ret = 200
-	br.Success = true
-	br.Msg = msg
-	br.Data = data
-}
-
-// @Title 编辑来自策略报告的报告
-// @Description 编辑来自策略报告的报告
-// @Param	request	body models.EditEnglishReportFromPolicyReq true "type json string"
-// @Success 200 {object} models.EditEnglishReportResp
-// @router /edit_policy [post]
-func (this *EnglishReportController) EditPolicy() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-	var req models.EditEnglishReportFromPolicyReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-	if req.ReportId <= 0 {
-		br.Msg = "请选择报告ID"
-		return
-	}
-	if req.Title == "" {
-		br.Msg = "请输入标题"
-		return
-	}
-	if req.Abstract == "" {
-		br.Msg = "请输入摘要"
-		return
-	}
-
-	if req.Frequency == "" {
-		br.Msg = "请输入频度"
-		return
-	}
-	if req.Author == "" {
-		br.Msg = "请输入作者"
-		return
-	}
-
-	if req.CreateTime == "" {
-		br.Msg = "请输入创建时间"
-		return
-	}
-	//查询报告是否存在
-	reportInfo, err := models.GetEnglishReportItemById(int(req.ReportId))
-	if err != nil {
-		if utils.IsErrNoRow(err) {
-			br.Msg = "报告不存在"
-			return
-		}
-		br.Msg = "查询报告信息失败"
-		br.ErrMsg = "查询报告信息失败, Err" + err.Error()
-		return
-	}
-	if reportInfo.State == 2 {
-		br.Msg = "报告已发布不允许编辑"
-		return
-	}
-	markStatus, err := services.UpdateEnReportEditMark(int(req.ReportId), sysUser.AdminId, 1, sysUser.RealName, this.Lang)
-	if err != nil {
-		br.Msg = err.Error()
-		return
-	}
-	if markStatus.Status == 1 {
-		br.Msg = markStatus.Msg
-		return
-	}
-
-	item := reportInfo
-	item.Title = req.Title
-	item.Abstract = req.Abstract
-	item.Author = req.Author
-	item.Frequency = req.Frequency
-	item.CreateTime = req.CreateTime
-	item.ModifyTime = time.Now()
-	err = item.Update([]string{"Title", "Abstract", "Author", "Frequency", "CreateTime", "ModifyTime"})
-	if err != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "保存失败,Err:" + err.Error()
-		return
-	}
-	reportCode := reportInfo.ReportCode
-	resp := new(models.EditEnglishReportResp)
-	resp.ReportId = req.ReportId
-	resp.ReportCode = reportCode
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "保存成功"
-	br.Data = resp
-}
-
-// SubmitApprove
-// @Title 提交审批
-// @Description 提交审批接口
-// @Param	request	body models.ReportSubmitApproveReq true "type json string"
-// @Success 200 Ret=200 操作成功
-// @router /approve/submit [post]
-func (this *EnglishReportController) SubmitApprove() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		if br.ErrMsg == "" {
-			br.IsSendEmail = false
-		}
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		return
-	}
-	var req models.ReportSubmitApproveReq
-	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
-		br.Msg = "参数有误"
-		br.ErrMsg = "参数解析失败, Err: " + e.Error()
-		return
-	}
-	reportId := req.ReportId
-	if reportId <= 0 {
-		br.Msg = "参数有误"
-		br.ErrMsg = fmt.Sprintf("参数有误, ReportId: %d", req.ReportId)
-		return
-	}
-
-	reportOb := new(models.EnglishReport)
-	reportItem, e := reportOb.GetItemById(reportId)
-	if e != nil {
-		if utils.IsErrNoRow(e) {
-			br.Msg = "报告已被删除, 请刷新页面"
-			return
-		}
-		br.Msg = "操作失败"
-		br.ErrMsg = "获取报告失败, Err: " + e.Error()
-		return
-	}
-
-	// 校验当前审批配置, 返回下一个状态
-	state, e := services.CheckReportCurrState(report_approve.FlowReportTypeEnglish, reportItem.ClassifyIdFirst, reportItem.ClassifyIdSecond, 0, models.ReportOperateSubmitApprove)
-	if e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "校验报告状态失败, Err: " + e.Error()
-		return
-	}
-
-	// 下一个状态不为待审批时, 仅更新状态
-	if state != models.ReportStateWaitApprove {
-		reportItem.State = state
-		e = reportItem.UpdateReport([]string{"State"})
-		if e != nil {
-			br.Msg = "操作失败"
-			br.ErrMsg = "更新报告状态失败, Err: " + e.Error()
-			return
-		}
-		br.Ret = 200
-		br.Success = true
-		br.Msg = "操作成功"
-		return
-	}
-
-	// 提交审批
-	approveId, e := services.SubmitReportApprove(report_approve.FlowReportTypeEnglish, reportItem.Id, reportItem.Title, reportItem.ClassifyIdFirst, reportItem.ClassifyIdSecond, 0, sysUser.AdminId, sysUser.RealName)
-	if e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "提交审批失败, Err: " + e.Error()
-		return
-	}
-	reportItem.ApproveId = approveId
-	reportItem.State = models.ReportStateWaitApprove
-	reportItem.ModifyTime = time.Now().Local()
-	e = reportItem.UpdateReport([]string{"ApproveId", "State", "ModifyTime"})
-	if e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "更新报告状态失败, Err: " + e.Error()
-		return
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}
-
-// CancelApprove
-// @Title 撤销审批
-// @Description 撤销审批
-// @Param	request	body models.ReportCancelApproveReq true "type json string"
-// @Success 200 Ret=200 操作成功
-// @router /approve/cancel [post]
-func (this *EnglishReportController) CancelApprove() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		if br.ErrMsg == "" {
-			br.IsSendEmail = false
-		}
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		return
-	}
-	var req models.ReportCancelApproveReq
-	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
-		br.Msg = "参数有误"
-		br.ErrMsg = "参数解析失败, Err: " + e.Error()
-		return
-	}
-	reportId := req.ReportId
-	if reportId <= 0 {
-		br.Msg = "参数有误"
-		br.ErrMsg = fmt.Sprintf("参数有误, ReportId: %d", req.ReportId)
-		return
-	}
-
-	reportOb := new(models.EnglishReport)
-	reportItem, e := reportOb.GetItemById(reportId)
-	if e != nil {
-		if utils.IsErrNoRow(e) {
-			br.Msg = "报告已被删除, 请刷新页面"
-			return
-		}
-		br.Msg = "操作失败"
-		br.ErrMsg = "获取报告失败, Err: " + e.Error()
-		return
-	}
-
-	// 校验当前审批配置, 返回下一个状态
-	state, e := services.CheckReportCurrState(report_approve.FlowReportTypeEnglish, reportItem.ClassifyIdFirst, reportItem.ClassifyIdSecond, 0, models.ReportOperateCancelApprove)
-	if e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "校验报告状态失败, Err: " + e.Error()
-		return
-	}
-
-	// 下一个状态不为待提交时, 仅更新状态
-	if state != models.ReportStateWaitSubmit {
-		reportItem.State = state
-		e = reportItem.UpdateReport([]string{"State"})
-		if e != nil {
-			br.Msg = "操作失败"
-			br.ErrMsg = "更新报告状态失败, Err: " + e.Error()
-			return
-		}
-		br.Ret = 200
-		br.Success = true
-		br.Msg = "操作成功"
-		return
-	}
-	//if reportItem.ApproveId <= 0 {
-	//	br.Msg = "报告审批不存在"
-	//	br.ErrMsg = fmt.Sprintf("报告审批不存在, ApproveId: %d", reportItem.ApproveId)
-	//	return
-	//}
-
-	// 撤销审批
-	e = services.CancelReportApprove(report_approve.FlowReportTypeEnglish, reportItem.Id, reportItem.ApproveId, sysUser.AdminId, sysUser.RealName)
-	if e != nil {
-		br.Msg = "操作失败"
-		br.ErrMsg = "撤销审批失败, Err: " + e.Error()
-		return
-	}
-	//reportItem.ApproveId = 0
-	//reportItem.State = models.ReportStateWaitSubmit
-	//reportItem.ModifyTime = time.Now().Local()
-	//e = reportItem.UpdateReport([]string{"ApproveId", "State", "ModifyTime"})
-	//if e != nil {
-	//	br.Msg = "操作失败"
-	//	br.ErrMsg = "更新报告状态失败, Err: " + e.Error()
-	//	return
-	//}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-}

+ 0 - 137
controllers/eta_trial/questionnaire.go

@@ -1,137 +0,0 @@
-package eta_trial
-
-import (
-	"eta_gn/eta_api/models"
-)
-
-// QuestionnairePopUp
-// @Title 获取问卷调查弹窗信息
-// @Description 获取问卷调查弹窗信息
-// @Success 200 {object} response.TryOutCompanyListResp
-// @router /questionnaire/popup [get]
-func (this *EtaTrialController) QuestionnairePopUp() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		if br.ErrMsg == "" {
-			br.IsSendEmail = false
-		}
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-}
-
-// QuestionnaireCommit
-// @Title 提交问卷
-// @Description 提交问卷
-// @Success 200 {object} response.TryOutCompanyListResp
-// @router /questionnaire/commit [post]
-func (this *EtaTrialController) QuestionnaireCommit() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	//var req eta_trial.EtaTrialQuestionnaireReq
-	//err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	//if err != nil {
-	//	br.Msg = "参数解析异常!"
-	//	br.ErrMsg = "参数解析失败,Err:" + err.Error()
-	//	return
-	//}
-	//
-	//var userReq etaTrialService.GetEtaTrialUserReq
-	//userReq.Mobile = sysUser.Mobile
-	//admin, e := etaTrialService.GetEtaTrialUser(userReq)
-	//if e != nil {
-	//	br.Msg = "操作失败"
-	//	br.ErrMsg = "获取ETA试用客户失败, GetEtaTrialUser Err:" + e.Error()
-	//	return
-	//}
-	//if admin.EtaTrialId <= 0 {
-	//	br.Ret = 200
-	//	br.Success = true
-	//	br.Msg = "操作成功"
-	//	return
-	//}
-	//
-	//if req.IsFill == 0 {
-	//	// 稍后再填
-	//	fillItem := &eta_trial.QuestionnaireFillRecord{
-	//		Mobile:     admin.Mobile,
-	//		IsFill:     1,
-	//		CreateTime: time.Now(),
-	//		ModifyTime: time.Now(),
-	//	}
-	//	err := eta_trial.AddQuestionnaireFillRecord(fillItem)
-	//	if err != nil {
-	//		br.Msg = "新增填写记录失败"
-	//		br.ErrMsg = "新增填写记录失败, Err:" + err.Error()
-	//		return
-	//	}
-	//} else {
-	//	// 已填写
-	//	list := make([]eta_trial.EtaTrialQuestionnaireRecord, 0)
-	//	for _, q := range req.List {
-	//		v := eta_trial.EtaTrialQuestionnaireRecord{
-	//			UserName:        admin.UserName,
-	//			CompanyName:     admin.CompanyName,
-	//			Position:        admin.Position,
-	//			Options:         q.Options,
-	//			Mobile:          admin.Mobile,
-	//			Type:            q.Type,
-	//			QuestionnaireId: q.QuestionnaireId,
-	//			CreateTime:      time.Now(),
-	//		}
-	//		list = append(list, v)
-	//	}
-	//
-	//	var commitReq etaTrialService.EtaTrialQuestionnaireCommitReq
-	//	commitReq.List = list
-	//	commitRes, e := etaTrialService.EtaTrialQuestionnaireCommit(commitReq)
-	//	if e != nil {
-	//		br.Msg = "操作失败"
-	//		br.ErrMsg = "新增问卷记录失败, EtaTrialQuestionnaireCommit Err: " + e.Error()
-	//		return
-	//	}
-	//	if !commitRes {
-	//		br.Msg = "操作失败"
-	//		br.ErrMsg = "新增问卷记录失败" + e.Error()
-	//		return
-	//	}
-	//
-	//	fillItem := &eta_trial.QuestionnaireFillRecord{
-	//		Mobile:     admin.Mobile,
-	//		IsFill:     2,
-	//		CreateTime: time.Now(),
-	//		ModifyTime: time.Now(),
-	//	}
-	//	err := eta_trial.AddQuestionnaireFillRecord(fillItem)
-	//	if err != nil {
-	//		br.Msg = "新增填写记录失败"
-	//		br.ErrMsg = "新增填写记录失败, Err:" + err.Error()
-	//		return
-	//	}
-	//}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "提交成功"
-}

+ 0 - 68
controllers/eta_trial/user.go

@@ -1,68 +0,0 @@
-package eta_trial
-
-import (
-	"eta_gn/eta_api/controllers"
-	"eta_gn/eta_api/models"
-)
-
-// EtaTrialController ETA试用
-type EtaTrialController struct {
-	controllers.BaseAuthController
-}
-
-// UpdateActiveTime
-// @Title 累计活跃时长
-// @Description 累计活跃时长
-// @Param   ActiveTime	query	int		true	"活跃时长"
-// @Param   Part		query	string	true	"活跃板块"
-// @Success 200 {object} models.ETATrialAddReq
-// @router /user/active [post]
-func (this *EtaTrialController) UpdateActiveTime() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		if br.ErrMsg == "" {
-			br.IsSendEmail = false
-		}
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-	return
-}
-
-// UpdateLoginDuration
-// @Title 更新用户登录时长
-// @Description 更新用户登录时长
-// @Param   ActiveTime	query	int		true	"活跃时长"
-// @Success 200 {object} models.ETATrialAddReq
-// @router /user/login_duration [post]
-func (this *EtaTrialController) UpdateLoginDuration() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		if br.ErrMsg == "" {
-			br.IsSendEmail = false
-		}
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "操作成功"
-	return
-}

+ 12 - 57
controllers/report_approve/report_approve.go

@@ -67,7 +67,7 @@ func (this *ReportApproveController) List() {
 	}
 	}
 
 
 	// 报告分类
 	// 报告分类
-	cnClassifyIdName, enClassifyIdName := make(map[int]string), make(map[int]string)
+	cnClassifyIdName := make(map[int]string)
 	cnClassify, e := models.GetAllClassify()
 	cnClassify, e := models.GetAllClassify()
 	if e != nil {
 	if e != nil {
 		br.Msg = "获取失败"
 		br.Msg = "获取失败"
@@ -77,17 +77,6 @@ func (this *ReportApproveController) List() {
 	for _, v := range cnClassify {
 	for _, v := range cnClassify {
 		cnClassifyIdName[v.Id] = v.ClassifyName
 		cnClassifyIdName[v.Id] = v.ClassifyName
 	}
 	}
-	enClassify, e := models.GetEnglishClassifies()
-	if e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取英文分类失败, Err: " + e.Error()
-		return
-	}
-	enRootIdMap := make(map[int]int) // 英文分类的一级分类ID
-	for _, v := range enClassify {
-		enClassifyIdName[v.Id] = v.ClassifyName
-		enRootIdMap[v.Id] = v.RootId
-	}
 
 
 	// 分页
 	// 分页
 	var startSize int
 	var startSize int
@@ -358,7 +347,7 @@ func (this *ReportApproveController) List() {
 	reportImg := make(map[string]string)
 	reportImg := make(map[string]string)
 	reportPdf := make(map[string]string)
 	reportPdf := make(map[string]string)
 	{
 	{
-		var reportIds, enReportIds []int
+		var reportIds []int
 		for _, v := range ormList {
 		for _, v := range ormList {
 			if v.State != report_approve.ReportApproveStatePass {
 			if v.State != report_approve.ReportApproveStatePass {
 				continue
 				continue
@@ -366,9 +355,6 @@ func (this *ReportApproveController) List() {
 			if v.ReportType == report_approve.FlowReportTypeChinese {
 			if v.ReportType == report_approve.FlowReportTypeChinese {
 				reportIds = append(reportIds, v.ReportId)
 				reportIds = append(reportIds, v.ReportId)
 			}
 			}
-			if v.ReportType == report_approve.FlowReportTypeEnglish {
-				enReportIds = append(enReportIds, v.ReportId)
-			}
 		}
 		}
 		if len(reportIds) > 0 {
 		if len(reportIds) > 0 {
 			reports, e := models.GetReportFieldsByIds(reportIds, []string{"id", "detail_img_url", "detail_pdf_url"})
 			reports, e := models.GetReportFieldsByIds(reportIds, []string{"id", "detail_img_url", "detail_pdf_url"})
@@ -383,37 +369,20 @@ func (this *ReportApproveController) List() {
 				reportPdf[k] = r.DetailPdfUrl
 				reportPdf[k] = r.DetailPdfUrl
 			}
 			}
 		}
 		}
-		if len(enReportIds) > 0 {
-			enReports, e := models.GetEnglishReportFieldsByIds(enReportIds, []string{"id", "detail_img_url", "detail_pdf_url"})
-			if e != nil {
-				br.Msg = "获取失败"
-				br.ErrMsg = fmt.Sprintf("GetEnglishReportFieldsByIds, %v", e)
-				return
-			}
-			for _, r := range enReports {
-				k := fmt.Sprintf("%d-%d", report_approve.FlowReportTypeEnglish, r.Id)
-				reportImg[k] = r.DetailImgUrl
-				reportPdf[k] = r.DetailPdfUrl
-			}
-		}
 	}
 	}
 
 
 	// 格式化列表
 	// 格式化列表
 	for _, v := range ormList {
 	for _, v := range ormList {
 		t := report_approve.FormatReportApproveOrm2Item(v)
 		t := report_approve.FormatReportApproveOrm2Item(v)
-		if v.ReportType == report_approve.FlowReportTypeEnglish {
-			t.ReportClassify = fmt.Sprintf("%s/%s/%s/%s", report_approve.FlowReportTypeMap[v.ReportType], enClassifyIdName[enRootIdMap[v.ClassifySecondId]], enClassifyIdName[v.ClassifyFirstId], enClassifyIdName[v.ClassifySecondId])
-		} else {
-			//t.ReportClassify = fmt.Sprintf("%s/%s/%s", report_approve.FlowReportTypeMap[v.ReportType], cnClassifyIdName[v.ClassifyFirstId], cnClassifyIdName[v.ClassifySecondId])
-			reportClassify := fmt.Sprintf("%s/%s", report_approve.FlowReportTypeMap[v.ReportType], cnClassifyIdName[v.ClassifyFirstId])
-			if v.ClassifySecondId > 0 {
-				reportClassify = fmt.Sprintf("%s/%s", reportClassify, cnClassifyIdName[v.ClassifySecondId])
-			}
-			if v.ClassifyThirdId > 0 {
-				reportClassify = fmt.Sprintf("%s/%s", reportClassify, cnClassifyIdName[v.ClassifyThirdId])
-			}
-			t.ReportClassify = reportClassify
+		//t.ReportClassify = fmt.Sprintf("%s/%s/%s", report_approve.FlowReportTypeMap[v.ReportType], cnClassifyIdName[v.ClassifyFirstId], cnClassifyIdName[v.ClassifySecondId])
+		reportClassify := fmt.Sprintf("%s/%s", report_approve.FlowReportTypeMap[v.ReportType], cnClassifyIdName[v.ClassifyFirstId])
+		if v.ClassifySecondId > 0 {
+			reportClassify = fmt.Sprintf("%s/%s", reportClassify, cnClassifyIdName[v.ClassifySecondId])
 		}
 		}
+		if v.ClassifyThirdId > 0 {
+			reportClassify = fmt.Sprintf("%s/%s", reportClassify, cnClassifyIdName[v.ClassifyThirdId])
+		}
+		t.ReportClassify = reportClassify
 
 
 		k := fmt.Sprintf("%d-%d", t.ReportType, t.ReportId)
 		k := fmt.Sprintf("%d-%d", t.ReportType, t.ReportId)
 		t.DetailImgUrl = reportImg[k]
 		t.DetailImgUrl = reportImg[k]
@@ -577,7 +546,7 @@ func (this *ReportApproveController) Detail() {
 	}
 	}
 
 
 	// 报告信息
 	// 报告信息
-	cnClassifyIdName, enClassifyIdName := make(map[int]string), make(map[int]string)
+	cnClassifyIdName := make(map[int]string)
 	cnClassify, e := models.GetAllClassify()
 	cnClassify, e := models.GetAllClassify()
 	if e != nil {
 	if e != nil {
 		br.Msg = "获取失败"
 		br.Msg = "获取失败"
@@ -587,17 +556,7 @@ func (this *ReportApproveController) Detail() {
 	for _, v := range cnClassify {
 	for _, v := range cnClassify {
 		cnClassifyIdName[v.Id] = v.ClassifyName
 		cnClassifyIdName[v.Id] = v.ClassifyName
 	}
 	}
-	enClassify, e := models.GetEnglishClassifies()
-	if e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取英文分类失败, Err: " + e.Error()
-		return
-	}
-	enRootIdMap := make(map[int]int) // 英文分类的一级分类ID
-	for _, v := range enClassify {
-		enClassifyIdName[v.Id] = v.ClassifyName
-		enRootIdMap[v.Id] = v.RootId
-	}
+
 	detail.Report = new(report_approve.ReportApproveDetailReport)
 	detail.Report = new(report_approve.ReportApproveDetailReport)
 	detail.Report.ReportType = approveItem.ReportType
 	detail.Report.ReportType = approveItem.ReportType
 	detail.Report.ReportId = approveItem.ReportId
 	detail.Report.ReportId = approveItem.ReportId
@@ -629,10 +588,6 @@ func (this *ReportApproveController) Detail() {
 		detail.Report.ReportClassify = strings.Join(reportClassify, "/")
 		detail.Report.ReportClassify = strings.Join(reportClassify, "/")
 		// detail.Report.ReportClassify = fmt.Sprintf("%s/%s/%s/%s", report_approve.FlowReportTypeMap[approveItem.ReportType], cnClassifyIdName[approveItem.ClassifyFirstId], cnClassifyIdName[approveItem.ClassifySecondId], cnClassifyIdName[approveItem.ClassifyThirdId])
 		// detail.Report.ReportClassify = fmt.Sprintf("%s/%s/%s/%s", report_approve.FlowReportTypeMap[approveItem.ReportType], cnClassifyIdName[approveItem.ClassifyFirstId], cnClassifyIdName[approveItem.ClassifySecondId], cnClassifyIdName[approveItem.ClassifyThirdId])
 	}
 	}
-	if approveItem.ReportType == report_approve.FlowReportTypeEnglish {
-		detail.Report.ReportCode = utils.MD5(strconv.Itoa(approveItem.ReportId))
-		detail.Report.ReportClassify = fmt.Sprintf("%s/%s/%s/%s", report_approve.FlowReportTypeMap[approveItem.ReportType], enClassifyIdName[enRootIdMap[approveItem.ClassifySecondId]], enClassifyIdName[approveItem.ClassifyFirstId], enClassifyIdName[approveItem.ClassifySecondId])
-	}
 	if approveItem.ReportType == report_approve.FlowReportTypeSmart {
 	if approveItem.ReportType == report_approve.FlowReportTypeSmart {
 		detail.Report.ReportLayout = 2
 		detail.Report.ReportLayout = 2
 		detail.Report.ReportCode = utils.MD5(fmt.Sprint("smart_", approveItem.ReportId))
 		detail.Report.ReportCode = utils.MD5(fmt.Sprint("smart_", approveItem.ReportId))

+ 24 - 83
controllers/report_approve/report_approve_flow.go

@@ -9,7 +9,6 @@ import (
 	"eta_gn/eta_api/utils"
 	"eta_gn/eta_api/utils"
 	"fmt"
 	"fmt"
 	"strings"
 	"strings"
-	"sync"
 	"time"
 	"time"
 
 
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"github.com/rdlucklib/rdluck_tools/paging"
@@ -125,7 +124,7 @@ func (this *ReportApproveFlowController) List() {
 	}
 	}
 
 
 	// 指标分类
 	// 指标分类
-	cnClassifyIdName, enClassifyIdName := make(map[int]string), make(map[int]string)
+	cnClassifyIdName := make(map[int]string)
 	cnClassify, e := models.GetAllClassify()
 	cnClassify, e := models.GetAllClassify()
 	if e != nil {
 	if e != nil {
 		br.Msg = "获取失败"
 		br.Msg = "获取失败"
@@ -135,32 +134,17 @@ func (this *ReportApproveFlowController) List() {
 	for _, v := range cnClassify {
 	for _, v := range cnClassify {
 		cnClassifyIdName[v.Id] = v.ClassifyName
 		cnClassifyIdName[v.Id] = v.ClassifyName
 	}
 	}
-	enClassify, e := models.GetEnglishClassifies()
-	if e != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取英文分类失败, Err: " + e.Error()
-		return
-	}
-	enRootIdMap := make(map[int]int) // 英文分类的一级分类ID
-	for _, v := range enClassify {
-		enClassifyIdName[v.Id] = v.ClassifyName
-		enRootIdMap[v.Id] = v.RootId
-	}
 
 
 	for _, v := range list {
 	for _, v := range list {
 		t := report_approve.FormatReportApproveFlow2Item(v)
 		t := report_approve.FormatReportApproveFlow2Item(v)
-		if v.ReportType == report_approve.FlowReportTypeEnglish {
-			t.ReportClassify = fmt.Sprintf("%s/%s/%s/%s", report_approve.FlowReportTypeMap[v.ReportType], enClassifyIdName[enRootIdMap[v.ClassifySecondId]], enClassifyIdName[v.ClassifyFirstId], enClassifyIdName[v.ClassifySecondId])
-		} else {
-			reportClassify := fmt.Sprintf("%s/%s", report_approve.FlowReportTypeMap[v.ReportType], cnClassifyIdName[v.ClassifyFirstId])
-			if v.ClassifySecondId > 0 {
-				reportClassify = fmt.Sprintf("%s/%s", reportClassify, cnClassifyIdName[v.ClassifySecondId])
-			}
-			if v.ClassifyThirdId > 0 {
-				reportClassify = fmt.Sprintf("%s/%s", reportClassify, cnClassifyIdName[v.ClassifyThirdId])
-			}
-			t.ReportClassify = reportClassify
+		reportClassify := fmt.Sprintf("%s/%s", report_approve.FlowReportTypeMap[v.ReportType], cnClassifyIdName[v.ClassifyFirstId])
+		if v.ClassifySecondId > 0 {
+			reportClassify = fmt.Sprintf("%s/%s", reportClassify, cnClassifyIdName[v.ClassifySecondId])
 		}
 		}
+		if v.ClassifyThirdId > 0 {
+			reportClassify = fmt.Sprintf("%s/%s", reportClassify, cnClassifyIdName[v.ClassifyThirdId])
+		}
+		t.ReportClassify = reportClassify
 		resp.List = append(resp.List, t)
 		resp.List = append(resp.List, t)
 	}
 	}
 
 
@@ -680,68 +664,25 @@ func (this *ReportApproveFlowController) ReportClassifyTree() {
 
 
 	resp, cnTree, enTree := make([]*report_approve.ReportClassifyTreeItem, 0), make([]*report_approve.ReportClassifyTreeItem, 0), make([]*report_approve.ReportClassifyTreeItem, 0)
 	resp, cnTree, enTree := make([]*report_approve.ReportClassifyTreeItem, 0), make([]*report_approve.ReportClassifyTreeItem, 0), make([]*report_approve.ReportClassifyTreeItem, 0)
 
 
-	var cnErr, enErr error
-	wg := sync.WaitGroup{}
-	wg.Add(2)
-
-	// 中文/智能研报分类
-	go func() {
-		defer func() {
-			wg.Done()
-		}()
-
-		classify, e := models.GetAllClassify()
-		if e != nil {
-			cnErr = fmt.Errorf("GetAllClassify err: %s", e.Error())
-			return
-		}
-		cnTree = services.GetReportClassifyTreeRecursive(classify, 0)
-		for _, v := range cnTree {
-			k1 := fmt.Sprintf("%d-%d-%d-%d", report_approve.FlowReportTypeChinese, v.ClassifyId, 0, 0)
-			v.HasFlow = hasFlowMap[k1]
-
-			for _, v2 := range v.Children {
-				k2 := fmt.Sprintf("%d-%d-%d-%d", report_approve.FlowReportTypeChinese, v.ClassifyId, v2.ClassifyId, 0)
-				v2.HasFlow = hasFlowMap[k2]
-				for _, v3 := range v2.Children {
-					k3 := fmt.Sprintf("%d-%d-%d-%d", report_approve.FlowReportTypeChinese, v.ClassifyId, v2.ClassifyId, v3.ClassifyId)
-					v3.HasFlow = hasFlowMap[k3]
-				}
-			}
-		}
-	}()
-
-	// 英文研报分类
-	go func() {
-		defer func() {
-			wg.Done()
-		}()
-
-		classify, e := models.GetAllEnglishClassify()
-		if e != nil {
-			enErr = fmt.Errorf("GetAllEnglishClassify err: %s", e.Error())
-			return
-		}
-		enTree = services.GetReportClassifyTreeRecursive(classify, 0)
-		for _, v := range enTree {
-			for _, v2 := range v.Children {
-				k := fmt.Sprintf("%d-%d-%d-%d", report_approve.FlowReportTypeEnglish, v.ClassifyId, v2.ClassifyId, 0)
-				v2.HasFlow = hasFlowMap[k]
-			}
-		}
-	}()
-
-	wg.Wait()
-
-	if cnErr != nil {
+	classify, e := models.GetAllClassify()
+	if e != nil {
 		br.Msg = "获取失败"
 		br.Msg = "获取失败"
-		br.ErrMsg = "获取中文分类失败, Err: " + cnErr.Error()
+		br.ErrMsg = "获取中文分类失败, Err: " + e.Error()
 		return
 		return
 	}
 	}
-	if enErr != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取英文分类失败, Err: " + enErr.Error()
-		return
+	cnTree = services.GetReportClassifyTreeRecursive(classify, 0)
+	for _, v := range cnTree {
+		k1 := fmt.Sprintf("%d-%d-%d-%d", report_approve.FlowReportTypeChinese, v.ClassifyId, 0, 0)
+		v.HasFlow = hasFlowMap[k1]
+
+		for _, v2 := range v.Children {
+			k2 := fmt.Sprintf("%d-%d-%d-%d", report_approve.FlowReportTypeChinese, v.ClassifyId, v2.ClassifyId, 0)
+			v2.HasFlow = hasFlowMap[k2]
+			for _, v3 := range v2.Children {
+				k3 := fmt.Sprintf("%d-%d-%d-%d", report_approve.FlowReportTypeChinese, v.ClassifyId, v2.ClassifyId, v3.ClassifyId)
+				v3.HasFlow = hasFlowMap[k3]
+			}
+		}
 	}
 	}
 
 
 	if this.Lang == utils.EnLangVersion {
 	if this.Lang == utils.EnLangVersion {

+ 2 - 10
controllers/report_author.go

@@ -213,11 +213,7 @@ func (this *ReportAuthorController) EditAuthor() {
 		var count int
 		var count int
 		condition = " AND author = ? "
 		condition = " AND author = ? "
 		pars = append(pars, oldAuthorName)
 		pars = append(pars, oldAuthorName)
-		if item.AuthorType == 1 {
-			count, err = models.ModifyReportAuthor(condition, pars, authorName)
-		} else {
-			count, err = models.ModifyEnglishReportAuthor(condition, pars, authorName)
-		}
+		count, err = models.ModifyReportAuthor(condition, pars, authorName)
 		if err != nil && !utils.IsErrNoRow(err) {
 		if err != nil && !utils.IsErrNoRow(err) {
 			br.Msg = "获取数据异常!"
 			br.Msg = "获取数据异常!"
 			br.ErrMsg = "获取是否存在该作者的报告数据异常,Err:" + err.Error()
 			br.ErrMsg = "获取是否存在该作者的报告数据异常,Err:" + err.Error()
@@ -365,11 +361,7 @@ func (this *ReportAuthorController) DeleteAuthor() {
 		var count int
 		var count int
 		condition = " AND author = ? "
 		condition = " AND author = ? "
 		pars = append(pars, item.ReportAuthor)
 		pars = append(pars, item.ReportAuthor)
-		if item.AuthorType == 1 {
-			count, err = models.GetReportListCount(condition, pars)
-		} else {
-			count, err = models.GetEnglishReportListCount(condition, pars, "")
-		}
+		count, err = models.GetReportListCount(condition, pars)
 		if err != nil && !utils.IsErrNoRow(err) {
 		if err != nil && !utils.IsErrNoRow(err) {
 			br.Msg = "获取数据异常!"
 			br.Msg = "获取数据异常!"
 			br.ErrMsg = "获取是否存在该作者的报告数据异常,Err:" + err.Error()
 			br.ErrMsg = "获取是否存在该作者的报告数据异常,Err:" + err.Error()

+ 7 - 0
models/data_manage/edb_info.go

@@ -1636,6 +1636,13 @@ type BaseRefreshEdbInfo struct {
 	RefreshTime     string `description:"刷新时间"`
 	RefreshTime     string `description:"刷新时间"`
 }
 }
 
 
+// RefreshBaseEdbInfoResp
+// @Description: 刷新数据源的数据返回
+type RefreshBaseEdbInfoResp struct {
+	Paging *paging.PagingItem
+	List   []*BaseRefreshEdbInfo
+}
+
 // GetEdbBaseInfoList
 // GetEdbBaseInfoList
 // @Description: 获取指标库数据列表
 // @Description: 获取指标库数据列表
 // @author: Roc
 // @author: Roc

+ 0 - 24
models/db2.go

@@ -60,8 +60,6 @@ func init() {
 
 
 	// 图表 数据表
 	// 图表 数据表
 	initChart()
 	initChart()
-	// 英文报告
-	initEnglishReport()
 
 
 	// 期货数据库
 	// 期货数据库
 	initFutureGood()
 	initFutureGood()
@@ -239,28 +237,6 @@ func initChart() {
 	)
 	)
 }
 }
 
 
-// initEnglishReport 英文报告
-func initEnglishReport() {
-	orm.RegisterModel(
-		new(EnglishReport),
-		new(EnglishPolicyReport),
-		new(EnglishReportEmail),
-		new(EnglishReportEmailPV),
-		new(EnglishReportEmailLog),
-		new(EnglishClassify),
-		new(EnglishCompany),           // 英文客户
-		new(EnglishCompanyLog),        // 英文客户操作日志
-		new(EnglishReportEmailOpLog),  // 英文联系人操作日志
-		new(EnglishCompanyTodo),       // 英文客户TODO任务
-		new(EnglishCompanyTodoPublic), // 英文客户公共TODO任务
-		new(EnglishVideoCover),        // 英文研报线上路演视频封面
-		new(EnglishVideo),             // 英文研报线上路演
-		new(EnPermission),             // 英文品种权限表
-		new(EnCompanyPermission),      // 英文客户品种权限关联表
-		new(EnClassifyPermission),     // 英文分类品种权限关联表
-	)
-}
-
 // initFutureGood 注册期货数据 数据表
 // initFutureGood 注册期货数据 数据表
 func initFutureGood() {
 func initFutureGood() {
 	//注册对象
 	//注册对象

+ 0 - 165
models/en_classify_permission.go

@@ -1,165 +0,0 @@
-package models
-
-import (
-	"eta_gn/eta_api/global"
-	"eta_gn/eta_api/utils"
-	"fmt"
-	"strings"
-	"time"
-)
-
-type EnClassifyPermission struct {
-	EnClassifyPermissionId int       `gorm:"column:en_classify_permission_id;primaryKey;autoIncrement" description:"英文品种权限ID"`
-	EnClassifyId           int       `gorm:"column:en_classify_id" description:"英文分类ID"`
-	EnPermissionId         int       `gorm:"column:en_permission_id" description:"英文品种ID"`
-	CreateTime             time.Time `gorm:"column:create_time;autoCreateTime" description:"创建时间"`
-}
-
-var EnClassifyPermissionColumns = struct {
-	EnClassifyPermissionId string
-	EnClassifyId           string
-	EnPermissionId         string
-	CreateTime             string
-}{
-	EnClassifyPermissionId: "en_classify_permission_id",
-	EnClassifyId:           "en_classify_id",
-	EnPermissionId:         "en_permission_id",
-	CreateTime:             "create_time",
-}
-
-func (m *EnClassifyPermission) TableName() string {
-	return "en_classify_permission"
-}
-
-func (m *EnClassifyPermission) Create() (err error) {
-	err = global.DmSQL["rddp"].Create(m).Error
-	return
-}
-
-func (m *EnClassifyPermission) Update(cols []string) (err error) {
-	err = global.DmSQL["rddp"].Select(cols).Updates(m).Error
-	return
-}
-
-func (m *EnClassifyPermission) Del() (err error) {
-	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), EnClassifyPermissionColumns.EnClassifyPermissionId)
-	err = global.DmSQL["rddp"].Exec(sql, m.EnClassifyPermissionId).Error
-	return
-}
-
-func (m *EnClassifyPermission) GetItemById(id int) (item *EnClassifyPermission, err error) {
-	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), EnClassifyPermissionColumns.EnClassifyPermissionId)
-	err = global.DmSQL["rddp"].Raw(sql, id).First(&item).Error
-	return
-}
-
-func (m *EnClassifyPermission) GetItemByCondition(condition string, pars []interface{}) (item *EnClassifyPermission, err error) {
-	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 `, m.TableName())
-	sql += condition
-	sql += ` LIMIT 1`
-	err = global.DmSQL["rddp"].Raw(sql, pars...).First(&item).Error
-	return
-}
-
-func (m *EnClassifyPermission) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Scan(&count).Error
-	return
-}
-
-func (m *EnClassifyPermission) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*EnClassifyPermission, err error) {
-	fields := strings.Join(fieldArr, ",")
-	if len(fieldArr) == 0 {
-		fields = `*`
-	}
-	order := `ORDER BY create_time DESC`
-	if orderRule != "" {
-		order = ` ORDER BY ` + orderRule
-	}
-	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
-	return
-}
-
-func (m *EnClassifyPermission) GetPageItemsByCondition(startSize, pageSize int, condition string, pars []interface{}, fieldArr []string, orderRule string) (total int, items []*EnClassifyPermission, err error) {
-	fields := strings.Join(fieldArr, ",")
-	if len(fieldArr) == 0 {
-		fields = `*`
-	}
-	order := `ORDER BY create_time DESC`
-	if orderRule != "" {
-		order = ` ORDER BY ` + orderRule
-	}
-	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z`
-	if err = global.DmSQL["rddp"].Raw(totalSql, pars...).Scan(&total).Error; err != nil {
-		return
-	}
-	sql += ` LIMIT ?,?`
-
-	pars = append(pars, startSize)
-	pars = append(pars, pageSize)
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
-
-	return
-}
-
-func ClearAndCreateEnClassifyPermissions(classifyId int, permissions []*EnClassifyPermission) (err error) {
-	sql := `DELETE FROM en_classify_permission WHERE en_classify_id = ?`
-	if e := global.DmSQL["rddp"].Exec(sql, classifyId).Error; e != nil {
-		err = fmt.Errorf("delete err: %s", e.Error())
-		return
-	}
-	if len(permissions) > 0 {
-		if e := global.DmSQL["rddp"].CreateInBatches(permissions, utils.MultiAddNum).Error; e != nil {
-			err = fmt.Errorf("insert multi err: %s", e.Error())
-			return
-		}
-	}
-	return
-}
-
-func CreateEnClassifyPermissions(permissions []*EnClassifyPermission) (err error) {
-	if len(permissions) > 0 {
-		if e := global.DmSQL["rddp"].CreateInBatches(permissions, utils.MultiAddNum).Error; e != nil {
-			err = fmt.Errorf("insert multi err: %s", e.Error())
-			return
-		}
-	}
-	return
-}
-
-type EnClassifyPermissionEditReq struct {
-	ClassifyId    int   `description:"分类ID"`
-	EnPermissions []int `description:"权限IDs"`
-}
-
-// GetEnglishReportIdsByEnPermissionIds 根据权限IDs获取报告IDs
-func GetEnglishReportIdsByEnPermissionIds(permissionIds []int) (reportIds []int, err error) {
-	if len(permissionIds) == 0 {
-		return
-	}
-	sql := `SELECT id FROM english_report WHERE classify_id_second IN (
-				SELECT DISTINCT en_classify_id FROM en_classify_permission WHERE en_permission_id IN (` + utils.GetOrmInReplace(len(permissionIds)) + `)
-			)`
-	err = global.DmSQL["rddp"].Raw(sql, permissionIds).Find(&reportIds).Error
-	return
-}
-
-// GetEnPermissionIdsByEnglishReportId 获取英文报告权限IDs
-func GetEnPermissionIdsByEnglishReportId(reportId int) (permissionIds []int, err error) {
-	sql := `SELECT en_permission_id FROM en_classify_permission WHERE en_classify_id = (
-				SELECT classify_id_second FROM english_report WHERE id = ?
-			)`
-	err = global.DmSQL["rddp"].Raw(sql, reportId).Find(&permissionIds).Error
-	return
-}
-
-// GetEnPermissionIdsByEnglishVideoId 获取英文视频权限IDs
-func GetEnPermissionIdsByEnglishVideoId(videoId int) (permissionIds []int, err error) {
-	sql := `SELECT en_permission_id FROM en_classify_permission WHERE en_classify_id = (
-				SELECT classify_id_second FROM english_video WHERE id = ?
-			)`
-	err = global.DmSQL["rddp"].Raw(sql, videoId).Find(&permissionIds).Error
-	return
-}

+ 0 - 134
models/en_company_permission.go

@@ -1,134 +0,0 @@
-package models
-
-import (
-	"eta_gn/eta_api/global"
-	"eta_gn/eta_api/utils"
-	"fmt"
-	"github.com/beego/beego/v2/client/orm"
-	"strings"
-	"time"
-)
-
-type EnCompanyPermission struct {
-	EnCompanyPermissionId int       `gorm:"column:en_company_permission_id;primaryKey;autoIncrement" description:"英文公司权限ID"`
-	EnCompanyId           int       `gorm:"column:en_company_id" description:"英文客户ID"`
-	EnPermissionId        int       `gorm:"column:en_permission_id" description:"英文权限ID"`
-	CreateTime            time.Time `gorm:"column:create_time;autoCreateTime" description:"创建时间"`
-}
-
-var EnCompanyPermissionColumns = struct {
-	EnCompanyPermissionId string
-	EnCompanyId           string
-	EnPermissionId        string
-	CreateTime            string
-}{
-	EnCompanyPermissionId: "en_company_permission_id",
-	EnCompanyId:           "en_company_id",
-	EnPermissionId:        "en_permission_id",
-	CreateTime:            "create_time",
-}
-
-func (m *EnCompanyPermission) TableName() string {
-	return "en_company_permission"
-}
-
-func (m *EnCompanyPermission) Create() (err error) {
-	err = global.DmSQL["rddp"].Create(m).Error
-	return
-}
-
-func (m *EnCompanyPermission) Update(cols []string) (err error) {
-	err = global.DmSQL["rddp"].Select(cols).Updates(m).Error
-	return
-}
-
-func (m *EnCompanyPermission) Del() (err error) {
-	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), EnCompanyPermissionColumns.EnCompanyPermissionId)
-	err = global.DmSQL["rddp"].Exec(sql, m.EnCompanyPermissionId).Error
-	return
-}
-
-func (m *EnCompanyPermission) GetItemById(id int) (item *EnCompanyPermission, err error) {
-	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), EnCompanyPermissionColumns.EnCompanyPermissionId)
-	err = global.DmSQL["rddp"].Raw(sql, id).First(&item).Error
-	return
-}
-
-func (m *EnCompanyPermission) GetItemByCondition(condition string, pars []interface{}) (item *EnCompanyPermission, err error) {
-	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 `, m.TableName())
-	sql += condition
-	sql += ` LIMIT 1`
-	err = global.DmSQL["rddp"].Raw(sql, pars...).First(&item).Error
-	return
-}
-
-func (m *EnCompanyPermission) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Scan(&count).Error
-	return
-}
-
-func (m *EnCompanyPermission) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*EnCompanyPermission, err error) {
-	fields := strings.Join(fieldArr, ",")
-	if len(fieldArr) == 0 {
-		fields = `*`
-	}
-	order := `ORDER BY create_time DESC`
-	if orderRule != "" {
-		order = ` ORDER BY ` + orderRule
-	}
-	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
-	return
-}
-
-func (m *EnCompanyPermission) GetPageItemsByCondition(startSize, pageSize int, condition string, pars []interface{}, fieldArr []string, orderRule string) (total int, items []*EnCompanyPermission, err error) {
-	fields := strings.Join(fieldArr, ",")
-	if len(fieldArr) == 0 {
-		fields = `*`
-	}
-	order := `ORDER BY create_time DESC`
-	if orderRule != "" {
-		order = ` ORDER BY ` + orderRule
-	}
-	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z`
-	if err = global.DmSQL["rddp"].Raw(totalSql, pars...).Scan(&total).Error; err != nil {
-		return
-	}
-	sql += ` LIMIT ?,?`
-
-	pars = append(pars, startSize)
-	pars = append(pars, pageSize)
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
-	return
-}
-
-func ClearAndCreateEnCompanyPermissions(companyId int, permissions []*EnCompanyPermission) (err error) {
-	sql := `DELETE FROM en_company_permission WHERE en_company_id = ?`
-	if e := global.DmSQL["rddp"].Exec(sql, companyId).Error; e != nil {
-		err = fmt.Errorf("delete err: %s", e.Error())
-		return
-	}
-	if len(permissions) > 0 {
-		if e := global.DmSQL["rddp"].CreateInBatches(permissions, utils.MultiAddNum).Error; e != nil {
-			err = fmt.Errorf("insert multi err: %s", e.Error())
-			return
-		}
-	}
-	return
-}
-
-// GetEnglishCompanyIdsByEnPermissionIds 根据权限IDs获取报告IDs
-func GetEnglishCompanyIdsByEnPermissionIds(permissionIds []int) (companyIds []int, err error) {
-	if len(permissionIds) == 0 {
-		return
-	}
-	o := orm.NewOrmUsingDB("rddp")
-	sql := `SELECT DISTINCT a.en_company_id FROM en_company_permission AS a
-			JOIN english_company AS b ON a.en_company_id = b.company_id
-			WHERE
-				a.en_permission_id IN (` + utils.GetOrmInReplace(len(permissionIds)) + `) AND b.status <> 3 AND b.enabled <> 0 AND b.is_deleted = 0`
-	_, err = o.Raw(sql, permissionIds).QueryRows(&companyIds)
-	return
-}

+ 0 - 253
models/en_permission.go

@@ -1,253 +0,0 @@
-package models
-
-import (
-	"eta_gn/eta_api/global"
-	"fmt"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"strings"
-	"time"
-)
-
-type EnPermission struct {
-	EnPermissionId   int       `gorm:"column:en_permission_id;primaryKey;autoIncrement" description:"英文权限ID"`
-	EnPermissionName string    `gorm:"column:en_permission_name" description:"英文权限名称"`
-	CnPermissionName string    `gorm:"column:cn_permission_name" description:"对应的中文权限名称"`
-	ParentId         int       `gorm:"column:parent_id" description:"父级ID"`
-	Sort             int       `gorm:"column:sort" description:"排序"`
-	CreateTime       time.Time `gorm:"column:create_time;autoCreateTime" description:"创建时间"`
-	ModifyTime       time.Time `gorm:"column:modify_time;autoUpdateTime" description:"修改时间"`
-	Enabled          int       `gorm:"column:enabled" description:"是否可用,1可用,0禁用"`
-}
-
-var EnPermissionColumns = struct {
-	EnPermissionId   string
-	EnPermissionName string
-	CnPermissionName string
-	ParentId         string
-	Sort             string
-	CreateTime       string
-	ModifyTime       string
-	Enabled          string
-}{
-	EnPermissionId:   "en_permission_id",
-	EnPermissionName: "en_permission_name",
-	CnPermissionName: "cn_permission_name",
-	ParentId:         "parent_id",
-	Sort:             "sort",
-	CreateTime:       "create_time",
-	ModifyTime:       "modify_time",
-	Enabled:          "enabled",
-}
-
-func (m *EnPermission) TableName() string {
-	return "en_permission"
-}
-
-func (m *EnPermission) Create() (err error) {
-	err = global.DmSQL["rddp"].Create(m).Error
-	return
-}
-
-func (m *EnPermission) Update(cols []string) (err error) {
-	err = global.DmSQL["rddp"].Select(cols).Updates(m).Error
-	return
-}
-
-func (m *EnPermission) Del() (err error) {
-	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), EnPermissionColumns.EnPermissionId)
-	err = global.DmSQL["rddp"].Exec(sql, m.EnPermissionId).Error
-	return
-}
-
-func (m *EnPermission) GetItemById(id int) (item *EnPermission, err error) {
-	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), EnPermissionColumns.EnPermissionId)
-	err = global.DmSQL["rddp"].Raw(sql, id).First(&item).Error
-	return
-}
-
-func (m *EnPermission) GetItemByCondition(condition string, pars []interface{}) (item *EnPermission, err error) {
-	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 `, m.TableName())
-	sql += condition
-	sql += ` LIMIT 1`
-	err = global.DmSQL["rddp"].Raw(sql, pars...).First(&item).Error
-	return
-}
-
-func (m *EnPermission) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Scan(&count).Error
-	return
-}
-
-func (m *EnPermission) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*EnPermission, err error) {
-	fields := strings.Join(fieldArr, ",")
-	if len(fieldArr) == 0 {
-		fields = `*`
-	}
-	order := `ORDER BY create_time DESC`
-	if orderRule != "" {
-		order = ` ORDER BY ` + orderRule
-	}
-	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
-	return
-}
-
-func (m *EnPermission) GetPageItemsByCondition(startSize, pageSize int, condition string, pars []interface{}, fieldArr []string, orderRule string) (total int, items []*EnPermission, err error) {
-	fields := strings.Join(fieldArr, ",")
-	if len(fieldArr) == 0 {
-		fields = `*`
-	}
-	order := `ORDER BY create_time DESC`
-	if orderRule != "" {
-		order = ` ORDER BY ` + orderRule
-	}
-	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z`
-	if err = global.DmSQL["rddp"].Raw(totalSql, pars...).Scan(&total).Error; err != nil {
-		return
-	}
-	sql += ` LIMIT ?,?`
-	pars = append(pars, startSize)
-	pars = append(pars, pageSize)
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
-	return
-}
-
-type EnPermissionAddReq struct {
-	PermissionName   string `description:"品种权限名称"`
-	CnPermissionName string `description:"对应的中文权限名称"`
-	ParentId         int    `description:"父级ID"`
-	Enabled          int    `description:"是否可用,1可用,0禁用"`
-}
-
-type EnPermissionEditReq struct {
-	PermissionId     int    `description:"英文品种权限ID"`
-	PermissionName   string `description:"品种权限名称"`
-	CnPermissionName string `description:"对应的中文权限名称"`
-	ParentId         int    `description:"父级ID"`
-}
-
-type EnPermissionEnabledReq struct {
-	PermissionId int `description:"英文品种权限ID"`
-	Enabled      int `description:"是否可用,1可用,0禁用"`
-}
-
-type EnPermissionRemoveReq struct {
-	PermissionId int `description:"英文品种权限ID"`
-}
-
-type EnPermissionPageListResp struct {
-	List   []*EnPermissionItem
-	Paging *paging.PagingItem `description:"分页数据"`
-}
-
-type EnPermissionItem struct {
-	PermissionId     int    `description:"英文品种权限ID"`
-	PermissionName   string `description:"品种权限名称"`
-	CnPermissionName string `description:"对应的中文权限名称"`
-	ParentId         int    `description:"父级ID"`
-	Sort             int    `description:"排序"`
-	CreateTime       string `description:"创建时间"`
-	Child            []*EnPermissionItem
-	Enabled          int `description:"是否可用,1可用,0禁用"`
-}
-
-type EnPermissionMoveReq struct {
-	PermissionId     int `description:"品种id"`
-	PrevPermissionId int `description:"上一个兄弟节点品种id"`
-	NextPermissionId int `description:"下一个兄弟节点品种id"`
-}
-
-func GetEnPermissionUnionList(condition string, pars []interface{}) (items []*EnPermission, err error) {
-	sql := fmt.Sprintf(`
-		SELECT
-			*
-		FROM
-			(
-				SELECT * FROM en_permission WHERE 1=1 %s
-				UNION
-				SELECT * FROM en_permission WHERE en_permission_id IN (
-					SELECT parent_id FROM en_permission WHERE parent_id > 0 %s
-				)
-			) AS t
-		ORDER BY
-			parent_id ASC,
-			sort ASC,
-			create_time ASC`, condition, condition)
-	pars = append(pars, pars...)
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
-	return
-}
-
-func ClearEnPermissionsByPermissionId(permissionId int) (err error) {
-	tx := global.DmSQL["rddp"].Begin()
-	defer func() {
-		if err != nil {
-			_ = tx.Rollback()
-			return
-		}
-		_ = tx.Commit()
-	}()
-
-	sql := `DELETE FROM en_classify_permission WHERE en_permission_id = ?`
-	//_, e = tx.Raw(sql, permissionId).Exec()
-	e := tx.Exec(sql, permissionId).Error
-	if e != nil {
-		err = fmt.Errorf("delete en_classify_permission err: %s", e.Error())
-		return
-	}
-
-	sql = `DELETE FROM en_company_permission WHERE en_permission_id = ?`
-	e = tx.Exec(sql, permissionId).Error
-	if e != nil {
-		err = fmt.Errorf("delete en_company_permission err: %s", e.Error())
-		return
-	}
-	return
-}
-
-// UpdateEnPermissionSortByParentId 根据父类id更新排序
-func UpdateEnPermissionSortByParentId(parentId, permissionId, nowSort int, updateSort string) (err error) {
-	sql := ` update en_permission set sort = ` + updateSort + ` WHERE parent_id=? AND sort > ? `
-	if permissionId > 0 {
-		sql += ` or ( en_permission_id > ` + fmt.Sprint(permissionId) + ` and sort = ` + fmt.Sprint(nowSort) + `)`
-	}
-	err = global.DmSQL["rddp"].Exec(sql, parentId, nowSort).Error
-	return
-}
-
-// GetMaxSortByParentId 获取最大的排序值
-func (m *EnPermission) GetMaxSortByParentId(parentId int) (maxSort int, err error) {
-	sql := fmt.Sprintf(`SELECT COALESCE(MAX(%s), 0) AS sort FROM %s WHERE %s = ? `, EnPermissionColumns.Sort, m.TableName(), EnPermissionColumns.ParentId)
-	err = global.DmSQL["rddp"].Raw(sql, parentId).Scan(&maxSort).Error
-	return
-}
-
-// GetMaxSort 获取最大的排序值
-func (m *EnPermission) GetMaxSort() (maxSort int, err error) {
-	sql := fmt.Sprintf(`SELECT COALESCE(MAX(%s), 0) AS sort FROM %s`, EnPermissionColumns.Sort, m.TableName())
-	err = global.DmSQL["rddp"].Raw(sql).Scan(&maxSort).Error
-	return
-}
-
-// GetFirstEnPermissionByParentId 获取当前父级分类下,且排序数相同 的排序第一条的数据
-func (m *EnPermission) GetFirstEnPermissionByParentId(parentId int) (item *EnPermission, err error) {
-	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? order by sort asc, en_permission_id asc limit 1`, m.TableName(), EnPermissionColumns.ParentId)
-	err = global.DmSQL["rddp"].Raw(sql, parentId).First(&item).Error
-	return
-}
-
-// SetEnabled 更新启动禁用
-func (m *EnPermission) SetEnabled(parentId, enabled int) (err error) {
-	sql := fmt.Sprintf(`UPDATE %s SET %s = ?  WHERE %s = ?`, m.TableName(), EnPermissionColumns.Enabled, EnPermissionColumns.ParentId)
-	err = global.DmSQL["rddp"].Exec(sql, enabled, parentId).Error
-	return
-}
-
-// SetEnabledByPermissionId 更新启动禁用
-func (m *EnPermission) SetEnabledByPermissionId(permissionId, enabled int) (err error) {
-	sql := fmt.Sprintf(`UPDATE %s SET %s = ?  WHERE %s = ?`, m.TableName(), EnPermissionColumns.Enabled, EnPermissionColumns.EnPermissionId)
-	err = global.DmSQL["rddp"].Exec(sql, enabled, permissionId).Error
-	return
-}

+ 0 - 88
models/en_video_cover.go

@@ -1,88 +0,0 @@
-package models
-
-import (
-	"eta_gn/eta_api/global"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"time"
-)
-
-// EnglishVideoCover 英文研报视频封面库
-type EnglishVideoCover struct {
-	Id         int       `gorm:"column:id;primaryKey;autoIncrement" description:"封面ID"`
-	CoverName  string    `gorm:"column:cover_name" description:"封面名称"`
-	CoverUrl   string    `gorm:"column:cover_url" description:"封面图地址"`
-	IsDeleted  int       `gorm:"column:is_deleted" description:"是否已删除 0-否 1-是"`
-	CreateTime time.Time `gorm:"column:create_time;autoCreateTime" description:"创建时间"`
-	ModifyTime time.Time `gorm:"column:modify_time;autoUpdateTime" description:"修改时间"`
-	DeleteTime time.Time `gorm:"column:delete_time" description:"删除时间"`
-}
-
-func (item *EnglishVideoCover) TableName() string {
-	return "english_video_cover"
-}
-
-func (item *EnglishVideoCover) Add() (err error) {
-	err = global.DmSQL["rddp"].Create(item).Error
-	return
-}
-
-func (item *EnglishVideoCover) Update(cols []string) (err error) {
-	err = global.DmSQL["rddp"].Select(cols).Updates(item).Error
-	return
-}
-
-// GetEnglishVideoCoverById 主键获取封面
-func GetEnglishVideoCoverById(coverId int) (item *EnglishVideoCover, err error) {
-	sql := `SELECT * FROM english_video_cover WHERE id = ? AND is_deleted = 0 LIMIT 1`
-	err = global.DmSQL["rddp"].Raw(sql, coverId).First(&item).Error
-	return
-}
-
-// GetEnglishVideoCoverPageList 获取封面库分页列表
-func GetEnglishVideoCoverPageList(condition string, pars []interface{}, orderRule string, startSize, pageSize int) (total int, list []*EnglishVideoCover, err error) {
-	sql := `SELECT * FROM english_video_cover WHERE is_deleted = 0 `
-	sql += condition
-	if orderRule == "" {
-		orderRule = ` ORDER BY modify_time DESC`
-	}
-	sql += orderRule
-	totalSQL := `SELECT COUNT(1) total FROM (` + sql + `) z`
-	if err = global.DmSQL["rddp"].Raw(totalSQL, pars...).Scan(&total).Error; err != nil {
-		return
-	}
-	sql += ` LIMIT ?,?`
-	pars = append(pars, startSize)
-	pars = append(pars, pageSize)
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&list).Error
-	return
-}
-
-// DeleteEnglishVideoCover 删除封面
-func DeleteEnglishVideoCover(coverId int) (err error) {
-	sql := `UPDATE english_video_cover SET is_deleted = 1, delete_time = NOW() WHERE id = ? LIMIT 1`
-	err = global.DmSQL["rddp"].Exec(sql, coverId).Error
-	return
-}
-
-type EnglishVideoCoverListResp struct {
-	Paging *paging.PagingItem
-	List   []*EnglishVideoCoverItem `description:"列表数据"`
-}
-
-type EnglishVideoCoverItem struct {
-	Id         int    `description:"封面ID"`
-	CoverName  string `description:"封面名称"`
-	CoverUrl   string `description:"封面图地址"`
-	CreateTime string `description:"提问时间"`
-	ModifyTime string `description:"修改时间"`
-}
-
-type EnglishVideoCoverSaveReq struct {
-	Id        int    `description:"封面ID"`
-	CoverName string `description:"封面名称"`
-	CoverUrl  string `description:"封面图地址"`
-}
-
-type EnglishVideoCoverOptionReq struct {
-	Id int `description:"封面图ID"`
-}

+ 0 - 54
models/english_classify.go

@@ -1,54 +0,0 @@
-package models
-
-import (
-	"eta_gn/eta_api/global"
-	"fmt"
-)
-
-// UpdateEnglishClassifySortByParentId 根据父类id更新排序
-func UpdateEnglishClassifySortByParentId(parentId, permissionId, nowSort int, updateSort string) (err error) {
-	sql := ` update english_classify set sort = ` + updateSort + ` WHERE parent_id=? AND sort > ? `
-	if permissionId > 0 {
-		sql += ` or ( id > ` + fmt.Sprint(permissionId) + ` and sort = ` + fmt.Sprint(nowSort) + `)`
-	}
-	err = global.DmSQL["rddp"].Exec(sql, parentId, nowSort).Error
-	return
-}
-
-// GetMaxSortByParentId 获取最大的排序值
-func (classifyInfo *EnglishClassify) GetMaxSortByParentId(parentId int) (maxSort int, err error) {
-	sql := `SELECT  COALESCE(MAX(sort), 0) AS sort FROM english_classify WHERE parent_id = ? `
-	err = global.DmSQL["rddp"].Raw(sql, parentId).Scan(&maxSort).Error
-	return
-}
-
-// GetMaxSort 获取最大的排序值
-func (classifyInfo *EnglishClassify) GetMaxSort() (maxSort int, err error) {
-	sql := `SELECT  COALESCE(Max(sort), 0) AS sort FROM english_classify`
-	err = global.DmSQL["rddp"].Raw(sql).Scan(&maxSort).Error
-	return
-}
-
-// GetFirstClassifyByParentId 获取当前父级分类下,且排序数相同 的排序第一条的数据
-func (classifyInfo *EnglishClassify) GetFirstClassifyByParentId(parentId int) (item *Classify, err error) {
-	sql := `SELECT * FROM english_classify WHERE parent_id = ? order by sort asc, id asc limit 1`
-	err = global.DmSQL["rddp"].Raw(sql, parentId).First(&item).Error
-	return
-}
-
-type EnglishClassifyMoveReq struct {
-	ClassifyId     int `description:"分类ID"`
-	PrevClassifyId int `description:"上一个兄弟节点分类id"`
-	NextClassifyId int `description:"下一个兄弟节点分类id"`
-}
-
-type EnClassifyAddReq struct {
-	EnPermissions []int  `description:"权限IDs"`
-	ClassifyName  string `description:"分类名称"`
-	ParentId      int    `description:"父级分类id"`
-}
-
-type EnClassifyEditReq struct {
-	ClassifyId int `description:"分类ID"`
-	EnClassifyAddReq
-}

+ 0 - 219
models/english_company.go

@@ -1,219 +0,0 @@
-package models
-
-import (
-	"eta_gn/eta_api/global"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"time"
-)
-
-const (
-	EnglishCompanyDisabled = iota
-	EnglishCompanyEnabled
-	EnglishCompanyHalfEnabled
-)
-
-// EnglishCompany 英文客户
-type EnglishCompany struct {
-	CompanyId   int       `gorm:"column:company_id;primaryKey" description:"英文客户ID"`
-	CompanyName string    `gorm:"column:company_name" description:"客户名称"`
-	CountryCode string    `gorm:"column:country_code" description:"国家Code"`
-	Country     string    `gorm:"column:country" description:"国家"`
-	SellerId    int       `gorm:"column:seller_id" description:"销售ID"`
-	SellerName  string    `gorm:"column:seller_name" description:"销售姓名"`
-	ViewTotal   int       `gorm:"column:view_total" description:"累计点击量/阅读量"`
-	IsDeleted   int       `gorm:"column:is_deleted" description:"删除状态:0-正常;1-已删除"`
-	CreateTime  time.Time `gorm:"column:create_time" description:"创建时间"`
-	ModifyTime  time.Time `gorm:"column:modify_time" description:"更新时间"`
-	Enabled     int       `gorm:"column:enabled" description:"0-禁用; 1-启用; 2-部分禁用"`
-	Status      int       `gorm:"column:status" description:"1:正式,2:临时,3:终止"`
-}
-
-type EnglishCompanyListItem struct {
-	EnglishCompany
-	TodoStatusStr string
-	TodoEndTime   time.Time
-	TodoSellerId  int
-}
-
-func (item *EnglishCompany) TableName() string {
-	return "english_company"
-}
-
-func (item *EnglishCompany) Create() (err error) {
-	err = global.DmSQL["rddp"].Create(item).Error
-	return
-}
-
-// EnglishCompanySaveReq 英文客户-保存请求体
-type EnglishCompanySaveReq struct {
-	CompanyId     int    `description:"客户ID"`
-	CompanyName   string `description:"客户名称"`
-	CountryCode   string `description:"国家代码"`
-	Country       string `description:"国家"`
-	SellerId      int    `description:"销售ID"`
-	EnPermissions []int  `description:"英文权限IDs"`
-}
-
-func (item *EnglishCompany) Update(cols []string) (err error) {
-	err = global.DmSQL["rddp"].Select(cols).Updates(item).Error
-	return
-}
-
-// GetEnglishCompanyById 主键获取客户
-func GetEnglishCompanyById(id int) (item *EnglishCompany, err error) {
-	sql := `SELECT * FROM english_company WHERE is_deleted = 0 AND company_id = ? LIMIT 1`
-	err = global.DmSQL["rddp"].Raw(sql, id).First(&item).Error
-	return
-}
-
-// GetEnglishCompanyByName 名称获取客户
-func GetEnglishCompanyByName(companyName string) (item *EnglishCompany, err error) {
-	sql := `SELECT * FROM english_company WHERE is_deleted = 0 AND company_name = ? LIMIT 1`
-	err = global.DmSQL["rddp"].Raw(sql, companyName).First(&item).Error
-	return
-}
-
-// EnglishCompanyDelReq 英文客户-删除请求体
-type EnglishCompanyDelReq struct {
-	CompanyId int `description:"客户ID"`
-}
-
-// DeleteEnglishCompanyAndEmails 删除英文客户及联系人
-func DeleteEnglishCompanyAndEmails(companyId int) (err error) {
-	tx := global.DmSQL["rddp"].Begin()
-	defer func() {
-		if err != nil {
-			_ = tx.Rollback()
-		} else {
-			_ = tx.Commit()
-		}
-	}()
-
-	// 删除客户
-	sql := `UPDATE english_company SET is_deleted = 1,modify_time = NOW() WHERE company_id = ? LIMIT 1`
-	err = tx.Exec(sql, companyId).Error
-	if err != nil {
-		return
-	}
-
-	// 删除联系人
-	sql = `UPDATE english_report_email SET is_deleted = 1,modify_time = NOW() WHERE company_id = ?`
-	err = tx.Exec(sql, companyId).Error
-	return
-}
-
-// EnglishCompanyPageListResp 英文客户-分页列表响应体
-type EnglishCompanyPageListResp struct {
-	List   []*EnglishCompanyResp
-	Paging *paging.PagingItem `description:"分页数据"`
-}
-
-// EnglishCompanyResp 英文客户-列表响应体
-type EnglishCompanyResp struct {
-	CompanyId     int                     `description:"客户ID"`
-	CompanyName   string                  `description:"客户名称"`
-	CountryCode   string                  `description:"国家代码"`
-	Country       string                  `description:"国家"`
-	SellerId      int                     `description:"销售ID"`
-	SellerName    string                  `description:"销售姓名"`
-	ViewTotal     int                     `description:"累计点击量"`
-	CreateTime    string                  `description:"创建时间"`
-	Enabled       int                     `description:"0-禁用; 1-启用; 2-部分禁用"`
-	TodoInfo      *EnglishCompanyListTodo `description:"TODO任务信息"`
-	EnPermissions []int                   `description:"英文权限"`
-}
-
-// EnglishCompanyListTodo 英文客户列表-TODO任务信息
-type EnglishCompanyListTodo struct {
-	Deadline        string `description:"未完成的todo任务的截止日期,截止目前还剩余的天数"`
-	TodoEndTimeStr  string `description:"未完成的todo任务的截止日期拼接格式"`
-	TodoStatus      bool   `description:"是否存在进行中任务"`
-	CanConfirm      bool   `description:"是否允许完成任务"`
-	HiddenConfirm   bool   `description:"是否隐藏完成任务按钮"`
-	HiddenCreate    bool   `description:"是否隐藏新增/编辑按钮"`
-	TodoButtonColor string `description:"任务按钮颜色: red; green; gray"`
-}
-
-// GetEnglishCompanyPageList 获取客户列表-分页
-func GetEnglishCompanyPageList(condition string, pars []interface{}, order string, startSize, pageSize int) (total int, list []*EnglishCompanyListItem, err error) {
-	sql := `SELECT
-	c.*,
-IF
-	( ct.status IS NULL, "无任务", ct.status ) AS todo_status_str,
-	ct.seller_id as todo_seller_id,
-IF
-	( ct.end_time IS NULL or ct.status !="进行中", "9999-01-01", ct.end_time) AS todo_end_time
-FROM
-	english_company AS c
-	LEFT JOIN (
-SELECT
-	b.* 
-FROM
-	(
-SELECT
-	company_id,
-	MAX( create_time ) AS ct 
-FROM
-	english_company_todo 
-WHERE
-	is_delete = 0 
-	AND STATUS != "已作废"
-GROUP BY
-	company_id 
-	) AS a
-	LEFT JOIN english_company_todo AS b ON b.company_id = a.company_id 
-	AND b.create_time = a.ct 
-	) AS ct ON c.company_id = ct.company_id 
-WHERE
-	c.is_deleted = 0 AND c.status = 1`
-	sql += condition
-	if order != "" {
-		sql += order
-	} else {
-		sql += ` ORDER BY c.create_time DESC, c.company_id DESC`
-	}
-	totalSQl := `SELECT COUNT(1) total FROM (` + sql + `) z`
-	if err = global.DmSQL["rddp"].Raw(totalSQl, pars...).Scan(&total).Error; err != nil {
-		return
-	}
-	sql += ` LIMIT ?,?`
-
-	pars = append(pars, startSize)
-	pars = append(pars, pageSize)
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&list).Error
-	return
-}
-
-// GetEnglishCompanyViewPageListResp 英文客户-点击量分页列表响应体
-type GetEnglishCompanyViewPageListResp struct {
-	List   []*EnglishCompanyViewResp
-	Paging *paging.PagingItem `description:"分页数据"`
-}
-
-// EnglishCompanyViewResp 英文客户-点击量响应体
-type EnglishCompanyViewResp struct {
-	EmailId      int    `description:"联系人ID"`
-	UserName     string `description:"联系人姓名"`
-	Email        string `description:"邮箱地址"`
-	ViewTotal    int    `description:"累计点击量"`
-	LastViewTime string `description:"创建时间"`
-}
-
-// GetEnglishCompanyList 获取英文客户列表
-func GetEnglishCompanyList(condition string, pars []interface{}, order string) (list []*EnglishCompany, err error) {
-	sql := `SELECT * FROM english_company WHERE is_deleted = 0 `
-	sql += condition
-	if order != "" {
-		sql += order
-	} else {
-		sql += ` ORDER BY create_time DESC`
-	}
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&list).Error
-	return
-}
-
-// EnglishCompanyEditEnabledReq 禁启用请求体
-type EnglishCompanyEditEnabledReq struct {
-	CompanyId int `description:"公司ID"`
-	Enabled   int `description:"1:有效,0:禁用"`
-}

+ 0 - 38
models/english_company_log.go

@@ -1,38 +0,0 @@
-package models
-
-import (
-	"eta_gn/eta_api/global"
-	"time"
-)
-
-const (
-	EnglishCompanyLogOptionTypeAdd = iota + 1
-	EnglishCompanyLogOptionTypeEdit
-	EnglishCompanyLogOptionTypeDel
-	EnglishCompanyLogOptionTypeEditEnabled
-	EnglishCompanyLogOptionTypeSavePermission
-)
-
-// EnglishCompanyLog 英文客户操作日志表
-type EnglishCompanyLog struct {
-	Id         int       `gorm:"column:id;primaryKey" description:"日志ID"`
-	CompanyId  int       `gorm:"column:company_id" description:"英文客户ID"`
-	AdminId    int       `gorm:"column:admin_id" description:"操作人ID"`
-	OptionData string    `gorm:"column:option_data" description:"操作数据-JSON"`
-	OptionType int       `gorm:"column:option_type" description:"操作类型:1-新增;2-编辑;3-删除"`
-	CreateTime time.Time `gorm:"column:create_time" description:"创建时间"`
-}
-
-func (item *EnglishCompanyLog) TableName() string {
-	return "english_company_log"
-}
-
-func (item *EnglishCompanyLog) Create() (err error) {
-	err = global.DmSQL["rddp"].Create(item).Error
-	return
-}
-
-func (item *EnglishCompanyLog) Update(cols []string) (err error) {
-	err = global.DmSQL["rddp"].Select(cols).Updates(item).Error
-	return
-}

+ 0 - 221
models/english_company_todo.go

@@ -1,221 +0,0 @@
-package models
-
-import (
-	"eta_gn/eta_api/global"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"time"
-)
-
-// 英文客户Todo状态枚举值
-const (
-	EnglishCompanyTodoStatusDoing     = "进行中"
-	EnglishCompanyTodoStatusCompleted = "已完成"
-	EnglishCompanyTodoStatusVoided    = "已作废"
-	EnglishCompanyTodoStatusNull      = "无任务"
-)
-
-// EnglishCompanyTodo 英文客户TODO任务
-type EnglishCompanyTodo struct {
-	Id                 int       `gorm:"column:id;primaryKey" description:"任务ID"`
-	CompanyId          int       `gorm:"column:company_id" description:"客户ID"`
-	Content            string    `gorm:"column:content" description:"任务描述"`
-	SellerId           int       `gorm:"column:seller_id" description:"客户所属销售ID"`
-	SellerName         string    `gorm:"column:seller_name" description:"客户所属销售名称"`
-	CreateUserId       int       `gorm:"column:create_user_id" description:"创建人用户ID"`
-	CreateUserName     string    `gorm:"column:create_user_name" description:"创建人用户姓名"`
-	ApproveUserId      int       `gorm:"column:approve_user_id" description:"审批人用户ID"`
-	ApproveUserName    string    `gorm:"column:approve_user_name" description:"审批人用户姓名"`
-	ApprovedSellerId   int       `gorm:"column:approved_seller_id" description:"审批时,客户所属销售ID"`
-	ApprovedSellerName string    `gorm:"column:approved_seller_name" description:"审批时,客户所属销售名称"`
-	Status             string    `gorm:"column:status" description:"任务状态: 枚举值:进行中,已完成,已作废"`
-	ModifyTime         time.Time `gorm:"column:modify_time" description:"修改时间"`
-	ApproveTime        time.Time `gorm:"column:approve_time" description:"审核时间"`
-	CreateTime         time.Time `gorm:"column:create_time" description:"创建时间"`
-	EndTime            time.Time `gorm:"column:end_time" description:"截止时间"`
-	IsDelete           int       `gorm:"column:is_delete" json:"-" description:"是否已经删除,0:未删除,1:已删除;默认:0"`
-	Remark             string    `gorm:"column:remark" description:"审批备注"`
-}
-
-// EnglishCompanyTodoResp 英文客户TODO响应体
-type EnglishCompanyTodoResp struct {
-	Id              int    `orm:"column(id);pk" gorm:"primaryKey" `
-	CompanyId       int    `description:"客户id"`
-	Content         string `description:"任务描述"`
-	SellerId        int    `description:"客户所属销售id"`
-	SellerName      string `description:"客户所属销售名称"`
-	CreateUserId    int    `description:"创建人用户id"`
-	CreateUserName  string `description:"创建人用户姓名"`
-	ApproveUserId   int    `description:"审批人用户id"`
-	ApproveUserName string `description:"审批人用户姓名"`
-	Status          string `description:"任务状态: 枚举值:进行中,已完成,已作废"`
-	CreateTime      string `description:"创建时间"`
-	EndTime         string `description:"截止时间"`
-	ApproveTime     string `description:"审核时间"`
-	EndTimeStr      string `description:"格式化后的截止时间"`
-	Remark          string `description:"审批备注"`
-}
-
-func (item *EnglishCompanyTodo) Create() (err error) {
-	err = global.DmSQL["rddp"].Create(item).Error
-	return
-}
-
-func (item *EnglishCompanyTodo) Update(cols []string) (err error) {
-	err = global.DmSQL["rddp"].Select(cols).Updates(item).Error
-	return
-}
-
-// EnglishCompanyTodoAddReq 新增任务请求
-type EnglishCompanyTodoAddReq struct {
-	CompanyId   int    `description:"客户id"`
-	Description string `description:"任务描述"`
-	EndTime     string `description:"截止时间"`
-}
-
-// EnglishCompanyTodoEditReq 编辑任务请求
-type EnglishCompanyTodoEditReq struct {
-	Id          int    `description:"客户任务记录id"`
-	CompanyId   int    `description:"客户id"`
-	Description string `description:"任务描述"`
-	EndTime     string `description:"截止时间"`
-}
-
-// EnglishCompanyTodoApproveReq 审批任务请求
-type EnglishCompanyTodoApproveReq struct {
-	Id     int    `description:"客户任务记录id"`
-	Remark string `description:"审批备注"`
-}
-
-// GetEnglishCompanyTodoById 根据任务ID获取客户任务
-func GetEnglishCompanyTodoById(id int) (item *EnglishCompanyTodo, err error) {
-	sql := `SELECT * FROM english_company_todo WHERE id = ? LIMIT 1 `
-	err = global.DmSQL["rddp"].Raw(sql, id).First(&item).Error
-	return
-}
-
-// GetCountDoingEnglishCompanyTodo 获取正在进行中的任务数量
-func GetCountDoingEnglishCompanyTodo(companyId int) (total int, err error) {
-	sql := `SELECT count(1) AS total FROM english_company_todo WHERE status = "进行中" AND company_id = ? AND is_delete = 0 `
-	err = global.DmSQL["rddp"].Raw(sql, companyId).Scan(&total).Error
-	return
-}
-
-// GetEnglishCompanyTodoPageListResp 英文客户TODO-分页列表
-type GetEnglishCompanyTodoPageListResp struct {
-	List   []*EnglishCompanyTodoResp
-	Paging *paging.PagingItem `description:"分页数据"`
-}
-
-// GetEnglishCompanyTodoList 获取客户任务列表
-func GetEnglishCompanyTodoList(companyId, startSize, pageSize int, order string) (total int, items []*EnglishCompanyTodo, err error) {
-	sql := `SELECT
-				a.*
-			FROM
-				english_company_todo a
-			JOIN english_company b ON a.company_id = b.company_id
-			WHERE
-				a.company_id = ? AND a.status != "已作废" AND a.is_delete = 0 `
-	totalSQl := `SELECT COUNT(1) total FROM (` + sql + `) z`
-	if err = global.DmSQL["rddp"].Raw(totalSQl, companyId).Scan(&total).Error; err != nil {
-		return
-	}
-	if order != `` {
-		sql += order
-	} else {
-		sql += ` ORDER BY a.create_time DESC`
-	}
-	sql += ` LIMIT ?,?`
-	err = global.DmSQL["rddp"].Raw(sql, companyId, startSize, pageSize).Find(&items).Error
-	return
-}
-
-// GetDoingEnglishCompanyTodoList 获取客户的进行中任务列表
-func GetDoingEnglishCompanyTodoList(companyId int) (items []*EnglishCompanyTodo, err error) {
-	sql := `SELECT
-				a.*
-			FROM
-				english_company_todo a
-			JOIN english_company b ON a.company_id = b.company_id
-			WHERE
-				a.company_id = ? AND a.status = "进行中" AND a.is_delete = 0
-			ORDER BY
-				a.create_time ASC`
-	err = global.DmSQL["rddp"].Raw(sql, companyId).Find(&items).Error
-	return
-}
-
-type EnglishCompanyTodoDoing struct {
-	Id                 int       `description:"待办ID"`
-	CompanyId          int       `description:"客户id"`
-	CompanyName        string    `description:"客户名称"`
-	Content            string    `description:"任务描述"`
-	SellerId           int       `description:"客户所属销售id"`
-	SellerName         string    `description:"客户所属销售名称"`
-	CreateUserId       int       `description:"创建人用户id"`
-	CreateUserName     string    `description:"创建人用户姓名"`
-	ApproveUserId      int       `description:"审批人用户id"`
-	ApproveUserName    string    `description:"审批人用户姓名"`
-	ApprovedSellerId   int       `description:"审批时,客户所属销售id"`
-	ApprovedSellerName string    `description:"审批时,客户所属销售名称"`
-	Status             string    `description:"任务状态: 枚举值:进行中,已完成,已作废"`
-	ModifyTime         time.Time `description:"修改时间"`
-	ApproveTime        time.Time `description:"审核时间"`
-	CreateTime         time.Time `description:"创建时间"`
-	EndTime            time.Time `description:"截止时间"`
-	Remark             string    `description:"审批备注"`
-}
-
-type EnglishCompanyTodoDoingResp struct {
-	Id              int    `description:"待办ID"`
-	CompanyId       int    `description:"客户id"`
-	CompanyName     string `description:"客户名称"`
-	Content         string `description:"任务描述"`
-	SellerId        int    `description:"客户所属销售id"`
-	SellerName      string `description:"客户所属销售名称"`
-	CreateUserId    int    `description:"创建人用户id"`
-	CreateUserName  string `description:"创建人用户姓名"`
-	ApproveUserId   int    `description:"审批人用户id"`
-	ApproveUserName string `description:"审批人用户姓名"`
-	Status          string `description:"任务状态: 枚举值:进行中,已完成,已作废"`
-	CreateTime      string `description:"创建时间"`
-	EndTime         string `description:"截止时间"`
-	ApproveTime     string `description:"审核时间"`
-	Remark          string `description:"审批备注"`
-}
-
-// GetEnglishCompanyTodoDoingPageListResp 英文客户未完成TODO-分页列表
-type GetEnglishCompanyTodoDoingPageListResp struct {
-	List   []*EnglishCompanyTodoDoingResp
-	Paging *paging.PagingItem `description:"分页数据"`
-}
-
-// GetEnglishCompanyTodoDoingList 获取客户任务未完成列表
-func GetEnglishCompanyTodoDoingList(startSize, pageSize int, order string) (total int, items []*EnglishCompanyTodoDoing, err error) {
-	sql := `SELECT
-				a.*,
-				b.company_name
-			FROM
-				english_company_todo a
-			JOIN english_company b ON a.company_id = b.company_id
-			WHERE
-				a.status = "进行中" AND a.is_delete = 0 `
-	totalSQl := `SELECT COUNT(1) total FROM (` + sql + `) z`
-	if err = global.DmSQL["rddp"].Raw(totalSQl).Scan(&total).Error; err != nil {
-		return
-	}
-	if order != `` {
-		sql += order
-	} else {
-		sql += ` ORDER BY a.end_time ASC`
-	}
-	sql += ` LIMIT ?,?`
-	err = global.DmSQL["rddp"].Raw(sql, startSize, pageSize).Find(&items).Error
-	return
-}
-
-// DeleteEnglishCompanyTodoByCompanyId (软)删除英文客户TODO
-func DeleteEnglishCompanyTodoByCompanyId(companyId int) (err error) {
-	sql := `UPDATE english_company_todo SET is_delete = 1 WHERE company_id = ?`
-	err = global.DmSQL["rddp"].Exec(sql, companyId).Error
-	return
-}

+ 0 - 53
models/english_company_todo_public.go

@@ -1,53 +0,0 @@
-package models
-
-import (
-	"eta_gn/eta_api/global"
-	"time"
-)
-
-// EnglishCompanyTodoPublic 英文客户公共TODO任务
-
-type EnglishCompanyTodoPublic struct {
-	Id             int       `gorm:"column:id;primaryKey" description:"任务ID"`
-	Content        string    `gorm:"column:content" description:"任务描述"`
-	CreateUserId   int       `gorm:"column:create_user_id" description:"创建人用户ID"`
-	CreateUserName string    `gorm:"column:create_user_name" description:"创建人用户姓名"`
-	ModifyTime     time.Time `gorm:"column:modify_time" description:"修改时间"`
-	CreateTime     time.Time `gorm:"column:create_time" description:"创建时间"`
-	IsDelete       int       `gorm:"column:is_delete;default:0" json:"-" description:"是否已经删除,0:未删除,1:已删除;默认:0"`
-}
-
-func (item *EnglishCompanyTodoPublic) TableName() string {
-	return "english_company_todo_public"
-}
-
-// EnglishCompanyTodoPublicResp 英文客户公共TODO响应体
-type EnglishCompanyTodoPublicResp struct {
-	Content        string `description:"任务描述"`
-	CreateUserId   int    `description:"创建人用户id"`
-	CreateUserName string `description:"创建人用户姓名"`
-	ModifyTime     string `description:"修改时间"`
-	CreateTime     string `description:"创建时间"`
-}
-
-func (item *EnglishCompanyTodoPublic) Create() (err error) {
-	err = global.DmSQL["rddp"].Create(item).Error
-	return
-}
-
-func (item *EnglishCompanyTodoPublic) Update(cols []string) (err error) {
-	err = global.DmSQL["rddp"].Select(cols).Updates(item).Error
-	return
-}
-
-// EnglishCompanyTodoPublicAddReq 新增公共任务请求
-type EnglishCompanyTodoPublicAddReq struct {
-	Description string `description:"任务描述"`
-}
-
-// GetLastEnglishCompanyTodoPublic 获取最新的公共任务TODO
-func GetLastEnglishCompanyTodoPublic() (item *EnglishCompanyTodoPublic, err error) {
-	sql := `SELECT * FROM english_company_todo_public ORDER BY create_time DESC LIMIT 1`
-	err = global.DmSQL["rddp"].Raw(sql).First(&item).Error
-	return
-}

+ 0 - 159
models/english_policy_report.go

@@ -1,159 +0,0 @@
-package models
-
-import (
-	"eta_gn/eta_api/global"
-	"eta_gn/eta_api/utils"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"time"
-)
-
-// 英文策略报告
-type EnglishPolicyReport struct {
-	Id                 int       `gorm:"column:id;primaryKey;auto_increment:true" description:"策略报告ID"`
-	ClassifyIdFirst    int       `gorm:"column:classify_id_first" description:"一级分类ID"`
-	ClassifyNameFirst  string    `gorm:"column:classify_name_first" description:"一级分类名称"`
-	ClassifyIdSecond   int       `gorm:"column:classify_id_second" description:"二级分类ID"`
-	ClassifyNameSecond string    `gorm:"column:classify_name_second" description:"二级分类名称"`
-	Title              string    `gorm:"column:title" description:"标题"`
-	Abstract           string    `gorm:"column:abstract" description:"摘要"`
-	Author             string    `gorm:"column:author" description:"作者"`
-	Frequency          string    `gorm:"column:frequency" description:"频度"`
-	CreateTime         time.Time `gorm:"column:create_time" description:"创建时间"`
-	ModifyTime         time.Time `gorm:"column:modify_time" description:"修改时间"`
-	State              int       `gorm:"column:state" description:"1:未同步,2:已同步"`
-	SyncTime           time.Time `gorm:"column:sync_time" description:"同步时间"`
-	PublishStatus      int       `gorm:"column:publish_status" description:"1:未发布,2:已发布"`
-	PublishTime        time.Time `gorm:"column:publish_time" description:"发布时间"`
-	Content            string    `gorm:"column:content" description:"内容"`
-	KeyTakeaways       string    `gorm:"column:key_takeaways" description:"关键点"`
-	AuthorMobile       string    `gorm:"column:author_mobile" description:"创建者手机号"`
-	SyncReportId       int       `gorm:"column:sync_report_id" description:"同步后的report_id为english_report的ID"`
-	SourceReportId     int       `gorm:"column:source_report_id" description:"原始报告ID"`
-	ReportCoverUrl     string    `gorm:"column:report_cover_url" description:"原始报告封面图"`
-}
-
-// AddEnglishPolicyReportMulti 批量新增report
-func AddEnglishPolicyReportMulti(list []*EnglishPolicyReport) (err error) {
-	err = global.DmSQL["rddp"].CreateInBatches(list, utils.MultiAddNum).Error
-	return
-}
-
-type EnglishPolicyReportDetail struct {
-	Id                 int    `description:"策略报告Id"`
-	ClassifyIdFirst    int    `description:"一级分类id"`
-	ClassifyNameFirst  string `description:"一级分类名称"`
-	ClassifyIdSecond   int    `description:"二级分类id"`
-	ClassifyNameSecond string `description:"二级分类名称"`
-	Title              string `description:"标题"`
-	Abstract           string `description:"摘要"`
-	Author             string `description:"作者"`
-	Frequency          string `description:"频度"`
-	PublishTime        string `description:"发布时间"`
-	ModifyTime         string `description:"修改时间"`
-	State              int    `description:"同步状态:1:未同步,2:已同步"`
-	SyncTime           string `description:"同步时间"`
-	Content            string `description:"内容"`
-	KeyTakeaways       string `description:"关键点"`
-	AuthorMobile       string `description:"创建者手机号"`
-	SyncReportId       int    `description:"同步后的report_id为english_report的ID"`
-	ReportCoverUrl     string `description:"原始报告封面图"`
-}
-
-func GetEnglishPolicyReportById(reportId int) (item *EnglishPolicyReportDetail, err error) {
-	sql := `SELECT * FROM english_policy_report WHERE id=?`
-	err = global.DmSQL["rddp"].Raw(sql, reportId).First(&item).Error
-	return
-}
-
-type EnglishPolicyReportList struct {
-	Id                 int    `orm:"column(id);pk;auto" description:"策略报告Id"`
-	ClassifyIdFirst    int    `description:"一级分类id"`
-	ClassifyNameFirst  string `description:"一级分类名称"`
-	ClassifyIdSecond   int    `description:"二级分类id"`
-	ClassifyNameSecond string `description:"二级分类名称"`
-	Title              string `description:"标题"`
-	Abstract           string `description:"摘要"`
-	Author             string `description:"作者"`
-	Frequency          string `description:"频度"`
-	PublishTime        string `description:"发布时间"`
-	ModifyTime         string `description:"修改时间"`
-	State              int    `description:"1:未同步,2:已同步"`
-	SyncTime           string `description:"同步时间"`
-	KeyTakeaways       string `description:"关键点"`
-	AuthorMobile       string `description:"创建者手机号"`
-	SyncReportId       int    `description:"同步后的report_id为english_report的ID"`
-	ReportCoverUrl     string `description:"原始报告封面图"`
-}
-
-type EnglishPolicyReportListResp struct {
-	List   []*EnglishPolicyReportList
-	Paging *paging.PagingItem `description:"分页数据"`
-}
-
-func GetEnglishPolicyReportListCount(condition string, pars []interface{}) (count int, err error) {
-	sql := `SELECT COUNT(1) AS count  FROM english_policy_report WHERE 1=1 `
-	if condition != "" {
-		sql += condition
-	}
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Scan(&count).Error
-	return
-}
-
-func GetEnglishPolicyReportList(condition string, pars []interface{}, startSize, pageSize int) (items []*EnglishPolicyReportList, err error) {
-	//产品权限
-	sql := `SELECT * 
-        FROM english_policy_report WHERE 1=1  `
-	if condition != "" {
-		sql += condition
-	}
-	sql += `ORDER BY  publish_time DESC LIMIT ?,?`
-	pars = append(pars, startSize)
-	pars = append(pars, pageSize)
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
-	return
-}
-
-func GetEnglishPolicyReportByCondition(condition string, pars []interface{}) (items []*EnglishPolicyReport, err error) {
-	sql := `SELECT * 
-        FROM english_policy_report WHERE 1=1  `
-	if condition != "" {
-		sql += condition
-	}
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
-	return
-}
-
-type SyncEnglishPolicyReq struct {
-	Id int `description:"策略报告id"`
-}
-
-type PullEnglishPolicyDataResp struct {
-	Num int `description:"成功获取的记录数"`
-}
-
-// 同步报告
-func SyncEnglishPolicyReportById(id, newReportId int) (err error) {
-	sql := `UPDATE english_policy_report SET state=2, sync_time=now(),modify_time=NOW(), sync_report_id=? WHERE id = ? `
-	err = global.DmSQL["rddp"].Exec(sql, newReportId, id).Error
-	return
-}
-
-// 设置策略报告内容
-func SetEnglishPolicyReportContentBySourceReportId(sourceReportId int, content string) (err error) {
-	sql := `UPDATE english_policy_report SET content=?, modify_time=NOW() WHERE source_report_id = ? `
-	err = global.DmSQL["rddp"].Exec(sql, content, sourceReportId).Error
-	return
-}
-
-// 取消发布报告
-func SyncCancelEnglishPolicyReport(reportId int) (err error) {
-	sql := ` UPDATE english_policy_report SET state=1,sync_time=null,modify_time=NOW(), sync_report_id=0 WHERE id =?  `
-	err = global.DmSQL["rddp"].Exec(sql, reportId).Error
-	return
-}
-
-// Update 更新
-func (item *EnglishPolicyReport) Update(cols []string) (err error) {
-	err = global.DmSQL["rddp"].Select(cols).Updates(item).Error
-	return
-}

+ 0 - 922
models/english_report.go

@@ -1,922 +0,0 @@
-package models
-
-import (
-	"errors"
-	"eta_gn/eta_api/global"
-	"eta_gn/eta_api/utils"
-	"fmt"
-	"strings"
-	"time"
-
-	"github.com/rdlucklib/rdluck_tools/paging"
-)
-
-type EnglishReport struct {
-	Id                 int       `gorm:"column:id;primaryKey;autoIncrement" description:"报告Id"`
-	AddType            int       `gorm:"column:add_type" description:"新增方式:1:新增报告,2:继承报告"`
-	ClassifyIdFirst    int       `gorm:"column:classify_id_first" description:"一级分类id"`
-	ClassifyNameFirst  string    `gorm:"column:classify_name_first" description:"一级分类名称"`
-	ClassifyIdSecond   int       `gorm:"column:classify_id_second" description:"二级分类id"`
-	ClassifyNameSecond string    `gorm:"column:classify_name_second" description:"二级分类名称"`
-	Title              string    `gorm:"column:title" description:"标题"`
-	Abstract           string    `gorm:"column:abstract" description:"摘要"`
-	Author             string    `gorm:"column:author" description:"作者"`
-	Frequency          string    `gorm:"column:frequency" description:"频度"`
-	CreateTime         string    `gorm:"column:create_time" description:"创建时间"`
-	ModifyTime         time.Time `gorm:"column:modify_time;autoUpdateTime" description:"修改时间"`
-	State              int       `gorm:"column:state" description:"1:未发布;2:已发布;3-待提交;4-待审批;5-已驳回;6-已通过"`
-	PublishTime        time.Time `gorm:"column:publish_time" description:"发布时间"`
-	PrePublishTime     time.Time `gorm:"column:pre_publish_time" description:"预发布时间"`
-	Stage              int       `gorm:"column:stage" description:"期数"`
-	Content            string    `gorm:"column:content" description:"内容"`
-	VideoUrl           string    `gorm:"column:video_url" description:"音频文件URL"`
-	VideoName          string    `gorm:"column:video_name" description:"音频文件名称"`
-	VideoPlaySeconds   string    `gorm:"column:video_play_seconds" description:"音频播放时长"`
-	VideoSize          string    `gorm:"column:video_size" description:"音频文件大小,单位M"`
-	ContentSub         string    `gorm:"column:content_sub" description:"内容前两个章节"`
-	ReportCode         string    `gorm:"column:report_code" description:"报告唯一编码"`
-	Pv                 int       `gorm:"column:pv" description:"Pv"`
-	PvEmail            int       `gorm:"column:pv_email" description:"邮箱PV"`
-	UvEmail            int       `gorm:"column:uv_email" description:"邮箱UV"`
-	EmailState         int       `gorm:"column:email_state" description:"群发邮件状态: 0-未发送; 1-已发送"`
-	Overview           string    `gorm:"column:overview" description:"英文概述部分"`
-	KeyTakeaways       string    `gorm:"column:key_takeaways" description:"关键点"`
-	FromReportId       int       `gorm:"column:from_report_id" description:"继承的报告ID(英文策略报告ID)"`
-	AdminId            int       `gorm:"column:admin_id" description:"创建者账号"`
-	AdminRealName      string    `gorm:"column:admin_real_name" description:"创建者姓名"`
-	ApproveTime        time.Time `gorm:"column:approve_time" description:"审批时间"`
-	ApproveId          int       `gorm:"column:approve_id" description:"审批ID"`
-	DetailImgUrl       string    `gorm:"column:detail_img_url" description:"报告详情长图地址"`
-	DetailPdfUrl       string    `gorm:"column:detail_pdf_url" description:"报告详情PDF地址"`
-	EmailHasFail       int       `gorm:"column:email_has_fail" description:"是否存在邮件发送失败的记录: 0-否; 1-是"`
-}
-
-func GetEnglishReportStage(classifyIdFirst, classifyIdSecond int) (count int, err error) {
-	sql := ``
-	if classifyIdSecond > 0 {
-		sql = "SELECT COALESCE(Max(stage), 0) AS max_stage FROM english_report WHERE classify_id_second=? "
-		err = global.DmSQL["rddp"].Raw(sql, classifyIdSecond).Scan(&count).Error
-	} else {
-		sql = "SELECT COALESCE(Max(stage), 0) AS max_stage FROM english_report WHERE classify_id_first=? "
-		err = global.DmSQL["rddp"].Raw(sql, classifyIdFirst).Scan(&count).Error
-	}
-	return
-}
-
-func GetEnglishReportStageEdit(classifyIdFirst, classifyIdSecond, reportId int) (count int, err error) {
-	sql := ``
-	if classifyIdSecond > 0 {
-		sql = "SELECT COALESCE(Max(stage), 0) AS max_stage FROM english_report WHERE classify_id_second=? AND id<>? "
-		err = global.DmSQL["rddp"].Raw(sql, classifyIdSecond, reportId).Scan(&count).Error
-	} else {
-		sql = "SELECT COALESCE(Max(stage), 0) AS max_stage FROM english_report WHERE classify_id_first=? AND id<>? "
-		err = global.DmSQL["rddp"].Raw(sql, classifyIdFirst, reportId).Scan(&count).Error
-	}
-	return
-}
-
-func AddEnglishReport(item *EnglishReport) (lastId int64, err error) {
-	err = global.DmSQL["rddp"].Create(item).Error
-	lastId = int64(item.Id)
-	return
-}
-
-func ModifyEnglishReportCode(reportId int64, reportCode string) (err error) {
-	sql := `UPDATE english_report SET report_code=? WHERE id=? `
-	err = global.DmSQL["rddp"].Exec(sql, reportCode, reportId).Error
-	return
-}
-
-type AddEnglishReportReq struct {
-	AddType            int    `description:"新增方式:1:新增报告,2:继承报告"`
-	ClassifyIdFirst    int    `description:"一级分类id"`
-	ClassifyNameFirst  string `description:"一级分类名称"`
-	ClassifyIdSecond   int    `description:"二级分类id"`
-	ClassifyNameSecond string `description:"二级分类名称"`
-	ClassifyIdThird    int    `description:"三级分类id"`
-	ClassifyNameThird  string `description:"三级分类名称"`
-	Title              string `description:"标题"`
-	Abstract           string `description:"摘要"`
-	Author             string `description:"作者"`
-	Frequency          string `description:"频度"`
-	State              int    `description:"状态:1:未发布,2:已发布"`
-	Content            string `description:"内容"`
-	CreateTime         string `description:"创建时间"`
-	Overview           string `description:"英文概述部分"`
-}
-
-type AddEnglishReportResp struct {
-	ReportId   int64  `description:"报告id"`
-	ReportCode string `description:"报告code"`
-}
-
-type EditEnglishReportReq struct {
-	ReportId           int64  `description:"报告id"`
-	ClassifyIdFirst    int    `description:"一级分类id"`
-	ClassifyNameFirst  string `description:"一级分类名称"`
-	ClassifyIdSecond   int    `description:"二级分类id"`
-	ClassifyNameSecond string `description:"二级分类名称"`
-	Title              string `description:"标题"`
-	Abstract           string `description:"摘要"`
-	Author             string `description:"作者"`
-	Frequency          string `description:"频度"`
-	State              int    `description:"状态:1:未发布,2:已发布"`
-	Content            string `description:"内容"`
-	CreateTime         string `description:"创建时间"`
-	Overview           string `description:"英文概述部分"`
-}
-
-type EditEnglishReportFromPolicyReq struct {
-	ReportId   int64  `description:"报告id"`
-	Title      string `description:"标题"`
-	Abstract   string `description:"摘要"`
-	Author     string `description:"作者"`
-	Frequency  string `description:"频度"`
-	CreateTime string `description:"创建时间"`
-}
-type EditEnglishReportResp struct {
-	ReportId   int64  `description:"报告id"`
-	ReportCode string `description:"报告code"`
-}
-
-type ElasticEnglishReportDetail struct {
-	Id                 string `description:"报告id或者线上路演Id"`
-	ReportId           int    `description:"报告id"`
-	VideoId            int    `description:"线上路演Id"`
-	ClassifyIdFirst    int    `description:"一级分类id"`
-	ClassifyNameFirst  string `description:"一级分类名称"`
-	ClassifyIdSecond   int    `description:"二级分类id"`
-	ClassifyNameSecond string `description:"二级分类名称"`
-	StageStr           string `description:"报告期数"`
-	Title              string `description:"标题"`
-	Abstract           string `description:"摘要"`
-	Author             string `description:"作者"`
-	Frequency          string `description:"频度"`
-	PublishState       int    `description:"状态:1:未发布,2:已发布"`
-	BodyContent        string `description:"内容"`
-	ContentSub         string `description:"前两段内容"`
-	CreateTime         string `description:"创建时间"`
-	PublishTime        string `description:"发布时间"`
-	ReportCode         string `description:"报告唯一编码"`
-	Overview           string `description:"英文概述部分"`
-}
-
-func EditEnglishReport(item *EnglishReport, reportId int64) (err error) {
-	sql := `UPDATE english_report
-			SET
-			  classify_id_first =?,
-			  classify_name_first = ?,
-			  classify_id_second = ?,
-			  classify_name_second = ?,
-			  title = ?,
-			  abstract = ?,
-			  author = ?,
-			  frequency = ?,
-			  state = ?,
-			  content = ?,
-			  content_sub = ?,
-			  stage =?,
-			  create_time = ?,
-			  modify_time = ?,
-			  overview = ?
-			WHERE id = ? `
-	err = global.DmSQL["rddp"].Exec(sql, item.ClassifyIdFirst, item.ClassifyNameFirst, item.ClassifyIdSecond, item.ClassifyNameSecond, item.Title,
-		item.Abstract, item.Author, item.Frequency, item.State, item.Content, item.ContentSub, item.Stage, item.CreateTime, time.Now(), item.Overview, reportId).Error
-	return
-}
-
-type EnglishReportDetail struct {
-	Id                 int    `orm:"column(id)" description:"报告Id"`
-	AddType            int    `description:"新增方式:1:新增报告,2:继承报告"`
-	ClassifyIdFirst    int    `description:"一级分类id"`
-	ClassifyNameFirst  string `description:"一级分类名称"`
-	ClassifyIdSecond   int    `description:"二级分类id"`
-	ClassifyNameSecond string `description:"二级分类名称"`
-	Title              string `description:"标题"`
-	Abstract           string `description:"摘要"`
-	Author             string `description:"作者"`
-	Frequency          string `description:"频度"`
-	CreateTime         string `description:"创建时间"`
-	ModifyTime         string `description:"修改时间"`
-	State              int    `description:"1:未发布,2:已发布"`
-	PublishTime        string `description:"发布时间"`
-	PrePublishTime     string `description:"预发布时间"`
-	Stage              int    `description:"期数"`
-	MsgIsSend          int    `description:"消息是否已发送,0:否,1:是"`
-	ReportCode         string `description:"报告唯一编码"`
-	Content            string `description:"内容"`
-	VideoUrl           string `description:"音频文件URL"`
-	VideoName          string `description:"音频文件名称"`
-	VideoPlaySeconds   string `description:"音频播放时长"`
-	ContentSub         string `description:"内容前两个章节"`
-	Pv                 int    `description:"Pv"`
-	Overview           string `description:"英文概述部分"`
-	FromReportId       int    `description:"继承的报告ID(英文策略报告ID)"`
-	KeyTakeaways       string `description:"关键点"`
-	ClassifyIdRoot     int    `description:"顶级分类id"`
-	ClassifyNameRoot   string `description:"顶级分类名称"`
-}
-
-func GetEnglishReportById(reportId int) (item *EnglishReportDetail, err error) {
-	sql := `SELECT * FROM english_report WHERE id=?`
-	err = global.DmSQL["rddp"].Raw(sql, reportId).First(&item).Error
-	return
-}
-
-func GetEnglishReportItemById(reportId int) (item *EnglishReport, err error) {
-	sql := `SELECT * FROM english_report WHERE id = ? LIMIT 1`
-	err = global.DmSQL["rddp"].Raw(sql, reportId).First(&item).Error
-	return
-}
-
-type EnglishReportList struct {
-	Id                 int       `description:"报告Id"`
-	AddType            int       `description:"新增方式:1:新增报告,2:继承报告"`
-	ClassifyIdFirst    int       `description:"一级分类id"`
-	ClassifyNameFirst  string    `description:"一级分类名称"`
-	ClassifyIdSecond   int       `description:"二级分类id"`
-	ClassifyNameSecond string    `description:"二级分类名称"`
-	Title              string    `description:"标题"`
-	Abstract           string    `description:"摘要"`
-	Author             string    `description:"作者"`
-	Frequency          string    `description:"频度"`
-	CreateTime         string    `description:"创建时间"`
-	ModifyTime         time.Time `description:"修改时间"`
-	State              int       `description:"1:未发布;2:已发布;3-待提交;4-待审批;5-已驳回;6-已通过"`
-	PublishTime        string    `description:"发布时间"`
-	PrePublishTime     string    `description:"预发布时间"`
-	Stage              int       `description:"期数"`
-	Content            string    `description:"内容"`
-	VideoUrl           string    `description:"音频文件URL"`
-	VideoName          string    `description:"音频文件名称"`
-	VideoPlaySeconds   string    `description:"音频播放时长"`
-	ContentSub         string    `description:"内容前两个章节"`
-	ReportCode         string    `description:"报告唯一编码"`
-	Pv                 int       `description:"Pv"`
-	ShareUrl           string    `description:"分享url"`
-	PvEmail            int       `description:"邮箱PV"`
-	UvEmail            int       `description:"邮箱UV"`
-	EmailState         int       `description:"群发邮件状态: 0-未发送; 1-已发送"`
-	EmailAuth          bool      `description:"是否有权限群发邮件"`
-	EmailHasFail       bool      `description:"是否存在邮件发送失败的记录"`
-	CanEdit            bool      `description:"是否可编辑"`
-	Editor             string    `description:"编辑人"`
-	FromReportId       int       `description:"继承的报告ID(英文策略报告ID)"`
-	AdminId            int       `description:"创建者账号"`
-	AdminRealName      string    `description:"创建者姓名"`
-	FullClassifyName   string    `description:"顶级分类名/父级分类名/当前分类名"`
-	ClassifyIdRoot     int       `description:"顶级分类id"`
-	ClassifyNameRoot   string    `description:"顶级分类名称"`
-	ApproveTime        string    `description:"审批时间"`
-	DetailImgUrl       string    `description:"报告详情长图地址"`
-	DetailPdfUrl       string    `description:"报告详情PDF地址"`
-}
-
-type EnglishReportListResp struct {
-	List   []*EnglishReportList
-	Paging *paging.PagingItem `description:"分页数据"`
-}
-
-func GetEnglishReportListCount(condition string, pars []interface{}, companyType string) (count int, err error) {
-	//产品权限
-	companyTypeSqlStr := ``
-	if companyType == "ficc" {
-		companyTypeSqlStr = " AND classify_id_first != 40 "
-	} else if companyType == "权益" {
-		companyTypeSqlStr = " AND classify_id_first = 40 "
-	}
-
-	sql := `SELECT COUNT(1) AS count  FROM english_report WHERE 1=1 ` + companyTypeSqlStr
-	if condition != "" {
-		sql += condition
-	}
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Scan(&count).Error
-	return
-}
-
-func GetEnglishReportList(condition string, pars []interface{}, companyType string, startSize, pageSize int, fieldArr []string) (items []*EnglishReport, err error) {
-	//产品权限
-	companyTypeSqlStr := ``
-	if companyType == "ficc" {
-		companyTypeSqlStr = " AND classify_id_first != 40 "
-	} else if companyType == "权益" {
-		companyTypeSqlStr = " AND classify_id_first = 40 "
-	}
-
-	fields := "*"
-	if len(fieldArr) > 0 {
-		fields = strings.Join(fieldArr, ",")
-	}
-
-	sql := fmt.Sprintf(`SELECT %s FROM english_report WHERE 1=1 %s `, fields, companyTypeSqlStr)
-	if condition != "" {
-		sql += condition
-	}
-	// 排序:1:未发布;2:已发布;3-待提交;4-待审批;5-已驳回;6-已通过
-	sql += ` ORDER BY FIELD(state,3,1,4,5,6,2), modify_time DESC LIMIT ?,?`
-
-	pars = append(pars, startSize)
-	pars = append(pars, pageSize)
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
-	return
-}
-
-func GetEnglishReportByCondition(condition string, pars []interface{}) (items []*EnglishReport, err error) {
-	sql := `SELECT * 
-        FROM english_report WHERE 1=1  `
-	if condition != "" {
-		sql += condition
-	}
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
-	return
-}
-
-func GetEnglishReportCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	sql := `SELECT count(*) 
-        FROM english_report WHERE 1=1  `
-	if condition != "" {
-		sql += condition
-	}
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Scan(&count).Error
-	return
-}
-
-// PublishEnglishReportById 发布报告
-func PublishEnglishReportById(reportId int, publishTime string) (err error) {
-	sql := `UPDATE english_report SET state=2,publish_time=?,pre_publish_time=null,modify_time=NOW() WHERE id = ? `
-	err = global.DmSQL["rddp"].Exec(sql, publishTime, reportId).Error
-	return
-}
-
-// ResetEnglishReportById 重置报告状态
-func ResetEnglishReportById(reportId, state int) (err error) {
-	sql := `UPDATE english_report SET state = ?, pre_publish_time = null, modify_time = NOW() WHERE id = ?`
-	err = global.DmSQL["rddp"].Exec(sql, state, reportId).Error
-	return
-}
-
-// PublishCancelEnglishReport 取消发布报告
-func PublishCancelEnglishReport(reportIds, state int) (err error) {
-	sql := ` UPDATE english_report SET state=?, pre_publish_time=null WHERE id =?  `
-	err = global.DmSQL["rddp"].Exec(sql, state, reportIds).Error
-	return
-}
-
-// SetPrePublishEnglishReportById 设置定时发布
-func SetPrePublishEnglishReportById(reportId int, prePublishTime string) (err error) {
-	sql := `UPDATE english_report SET pre_publish_time=? WHERE id = ? and state = 1 `
-	err = global.DmSQL["rddp"].Exec(sql, prePublishTime, reportId).Error
-	return
-}
-
-// DeleteEnglishReportAndChapter 删除报告及章节
-func DeleteEnglishReportAndChapter(reportInfo *EnglishReportDetail) (err error) {
-	reportId := reportInfo.Id
-	if reportInfo.State == 2 {
-		err = errors.New("报告已发布,不可删除")
-		return
-	}
-	err = DeleteEnglishReport(reportId)
-	if err != nil {
-		err = errors.New("删除失败, Err: " + err.Error())
-		return
-	}
-
-	return
-}
-
-// 删除报告
-func DeleteEnglishReport(reportIds int) (err error) {
-	sql := ` DELETE FROM english_report WHERE id =? `
-	err = global.DmSQL["rddp"].Exec(sql, reportIds).Error
-	return
-}
-
-func EditEnglishReportContent(reportId int, content, contentSub string) (err error) {
-	sql := ` UPDATE english_report SET content=?,content_sub=?,modify_time=NOW() WHERE id=? `
-	err = global.DmSQL["rddp"].Exec(sql, content, contentSub, reportId).Error
-	return
-}
-
-func AddEnglishReportSaveLog(reportId, adminId int, content, contentSub, adminName string) (err error) {
-	sql := ` INSERT INTO english_report_save_log(report_id, content,content_sub,admin_id,admin_name) VALUES (?,?,?,?,?) `
-	err = global.DmSQL["rddp"].Exec(sql, reportId, content, contentSub, adminId, adminName).Error
-	return
-}
-
-type EnglishClassifyList struct {
-	Id            int       `orm:"column(id);pk" gorm:"primaryKey" `
-	ClassifyName  string    `description:"分类名称"`
-	Sort          int       `description:"排序"`
-	ParentId      int       `description:"父级分类id"`
-	RootId        int       `description:"一级分类ID"`
-	CreateTime    time.Time `description:"创建时间"`
-	ModifyTime    time.Time `description:"修改时间"`
-	ClassifyLabel string    `description:"分类标签"`
-	ShowType      int       `description:"展示类型:1-列表 2-专栏"`
-	IsShow        int       `description:"是否在小程序显示:1-显示 0-隐藏"`
-	//ClassifyType  int       `description:"分类类型:0英文报告,1英文线上路演"`
-	EnPermissions []int `description:"英文权限IDs"`
-	Enabled       int   `description:"是否可用,1可用,0禁用"`
-	Child         []*EnglishClassifyList
-}
-
-type EnglishClassifyListResp struct {
-	List []*EnglishClassifyList
-}
-
-// GetEnglishClassifyRootId 获取一级分类列表
-func GetEnglishClassifyRootId(keyword string, enabled int) (items []*EnglishClassifyList, err error) {
-	sql := ``
-	cond := ""
-	if enabled == 1 {
-		cond = " AND enabled=1 "
-	}
-	if keyword != "" {
-		sql = `SELECT * FROM (
-			                   SELECT * FROM english_classify
-                   WHERE parent_id=0 ` + cond + ` AND classify_name LIKE ? 
-                   UNION
-                   SELECT * FROM english_classify
-                   WHERE id IN(SELECT parent_id FROM english_classify
-                   WHERE parent_id>0 ` + cond + ` AND classify_name LIKE ? )
-                   )AS t
-                   ORDER BY sort ASC,create_time ASC`
-		err = global.DmSQL["rddp"].Raw(sql, utils.GetLikeKeyword(keyword), utils.GetLikeKeyword(keyword)).Find(&items).Error
-	} else {
-		sql = `SELECT * FROM english_classify WHERE parent_id=0 ` + cond + ` ORDER BY sort ASC,create_time ASC `
-		err = global.DmSQL["rddp"].Raw(sql).Find(&items).Error
-	}
-	return
-}
-
-func GetEnglishClassifyListByRootId(rootIds []int, keyword string, enabled int) (items []*EnglishClassifyList, err error) {
-	sql := ``
-	pars := make([]interface{}, 0)
-
-	cond := ""
-	if enabled == 1 {
-		cond = " AND enabled=1 "
-	}
-	if keyword != "" {
-		sql = `SELECT
-	a.*
-FROM
-	english_classify a
-	LEFT JOIN english_classify b ON a.root_id = b.id
-	LEFT JOIN english_classify c ON a.parent_id = c.id
-	WHERE a.parent_id>0  ` + cond + ` and a.classify_name LIKE ? and a.root_id IN (` + utils.GetOrmInReplace(len(rootIds)) + `)`
-		pars = append(pars, utils.GetLikeKeyword(keyword))
-		pars = append(pars, rootIds)
-		err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
-	} else {
-		sql = `SELECT * FROM english_classify WHERE parent_id>0  ` + cond + ` and root_id IN (` + utils.GetOrmInReplace(len(rootIds)) + `) `
-		err = global.DmSQL["rddp"].Raw(sql, rootIds).Find(&items).Error
-	}
-	return
-}
-
-func GetEnglishClassifyChildByIds(ids []int) (items []*EnglishClassifyList, err error) {
-	sql := `SELECT * FROM english_classify WHERE id IN (` + utils.GetOrmInReplace(len(ids)) + `) ORDER BY create_time ASC `
-	err = global.DmSQL["rddp"].Raw(sql, ids).Find(&items).Error
-	return
-}
-
-func GetEnglishReportDetailByClassifyId(classifyIdFirst, classifyIdSecond int) (item *EnglishReportDetail, err error) {
-	sql := ` SELECT * FROM english_report WHERE 1=1 `
-	if classifyIdSecond > 0 {
-		sql = sql + ` AND classify_id_second=?   ORDER BY stage DESC LIMIT 1`
-		err = global.DmSQL["rddp"].Raw(sql, classifyIdSecond).First(&item).Error
-	} else {
-		sql = sql + ` AND classify_id_first=?   ORDER BY stage DESC LIMIT 1`
-		err = global.DmSQL["rddp"].Raw(sql, classifyIdFirst).First(&item).Error
-	}
-	return
-}
-
-// Update 更新
-func (item *EnglishReport) Update(cols []string) (err error) {
-	err = global.DmSQL["rddp"].Select(cols).Updates(item).Error
-	return
-}
-
-// ModifyEnglishReportAuthor 更改英文报告作者
-func ModifyEnglishReportAuthor(condition string, pars []interface{}, authorName string) (count int, err error) {
-	//产品权限
-	sql := `UPDATE english_report set author = ? WHERE 1=1 `
-	if condition != "" {
-		sql += condition
-	}
-	result := global.DmSQL["rddp"].Exec(sql, utils.ForwardPars(pars, authorName)...)
-	count = int(result.RowsAffected)
-	err = result.Error
-	return
-}
-
-type EnglishClassify struct {
-	Id            int       `gorm:"column:id;primaryKey;autoIncrement" description:"分类ID"`
-	ClassifyName  string    `gorm:"column:classify_name" description:"分类名称"`
-	Sort          int       `gorm:"column:sort" description:"排序"`
-	ParentId      int       `gorm:"column:parent_id" description:"父级分类ID"`
-	RootId        int       `gorm:"column:root_id" description:"一级分类ID"`
-	CreateTime    time.Time `gorm:"column:create_time;autoCreateTime" description:"创建时间"`
-	ModifyTime    time.Time `gorm:"column:modify_time;autoUpdateTime" description:"修改时间"`
-	ClassifyLabel string    `gorm:"column:classify_label" description:"分类标签"`
-	ShowType      int       `gorm:"column:show_type" description:"展示类型:1-列表 2-专栏"`
-	IsShow        int       `gorm:"column:is_show" description:"是否在小程序显示:1-显示 0-隐藏"`
-	Enabled       int       `gorm:"column:enabled" description:"是否可用,1可用,0禁用"`
-}
-
-func AddEnglishClassify(item *EnglishClassify) (lastId int64, err error) {
-	err = global.DmSQL["rddp"].Create(item).Error
-	lastId = int64(item.Id)
-	return
-}
-
-func ModifyEnglishClassify(item *EnglishClassify) (err error) {
-	sql := `UPDATE english_classify
-	SET
-	classify_name = ?,
-	sort = ?,
-	parent_id = ?,
-	root_id = ?,
-	modify_time = ? 
-	WHERE id = ? `
-	err = global.DmSQL["rddp"].Exec(sql, item.ClassifyName, item.Sort, item.ParentId, item.RootId, item.ModifyTime).Error
-	return
-}
-
-// UpdateClassify 更新分类
-func (classifyInfo *EnglishClassify) UpdateEnglishClassify(cols []string) (err error) {
-	err = global.DmSQL["rddp"].Select(cols).Updates(classifyInfo).Error
-	return
-}
-
-// DeleteEnglishClassify 删除英文分类
-func DeleteEnglishClassify(classifyId int) (err error) {
-	sql := ` DELETE FROM english_classify WHERE id =? `
-	err = global.DmSQL["rddp"].Exec(sql, classifyId).Error
-	return
-}
-
-func GetEnglishClassifyChildCounts(parentId int) (count int, err error) {
-	sql := `SELECT COUNT(1) AS count FROM english_classify WHERE parent_id=? `
-	err = global.DmSQL["rddp"].Raw(sql, parentId).Scan(&count).Error
-	return
-}
-
-func GetEnglishReportCounts(classifyId, parentId int) (count int, err error) {
-	sql := ``
-	if parentId == 0 {
-		sql = `SELECT COUNT(1) AS count FROM english_report WHERE classify_id_first=? `
-	} else {
-		sql = `SELECT COUNT(1) AS count FROM english_report WHERE classify_id_second=? `
-	}
-	err = global.DmSQL["rddp"].Raw(sql, classifyId).Scan(&count).Error
-	return
-}
-
-func GetEnglishClassifyCountsByName(name string, parentId int) (count int, err error) {
-	sql := `SELECT COUNT(1) AS count FROM english_classify WHERE classify_name=? AND parent_id = ? `
-	err = global.DmSQL["rddp"].Raw(sql, name, parentId).Scan(&count).Error
-	return
-}
-
-// GetEnglishFirstClassifyList 获取一级、二级分类列表
-func GetEnglishFirstClassifyList() (items []*EnglishClassifyList, err error) {
-	sql := `SELECT * FROM english_classify WHERE parent_id=0  ORDER BY sort ASC,create_time`
-	err = global.DmSQL["rddp"].Raw(sql).Find(&items).Error
-	return
-}
-
-// GetEnglishSecondClassifyList 获取一级、二级分类列表
-func GetEnglishSecondClassifyList(rootIds []int) (items []*EnglishClassifyList, err error) {
-	sql := `SELECT * FROM english_classify WHERE root_id IN (` + utils.GetOrmInReplace(len(rootIds)) + `) and parent_id>0 and root_id=parent_id ORDER BY sort ASC,create_time ASC`
-	err = global.DmSQL["rddp"].Raw(sql, rootIds).Find(&items).Error
-	return
-}
-
-func GetEnglishFirstClassifyListCount() (count int, err error) {
-	sqlCount := `SELECT COUNT(1) AS count FROM english_classify WHERE parent_id=0`
-	err = global.DmSQL["rddp"].Raw(sqlCount).Scan(&count).Error
-	return
-}
-
-func GetEnglishReportClassifyById(classifyId int) (item *EnglishClassify, err error) {
-	sql := `SELECT * FROM english_classify WHERE id=?`
-	err = global.DmSQL["rddp"].Raw(sql, classifyId).Find(&item).Error
-	return
-}
-
-func GetEnglishReportClassifyByIds(classifyIds []int) (list []*EnglishClassify, err error) {
-	sql := `SELECT * FROM english_classify WHERE id IN (` + utils.GetOrmInReplace(len(classifyIds)) + `)`
-	err = global.DmSQL["rddp"].Raw(sql, classifyIds).Find(&list).Error
-	return
-}
-
-func UpdateEnglishReportClassifyByFirstSecondClassifyId(classifyId, parentId int) (err error) {
-	// 更新相关联的二级分类的parentId,和classify_name_second
-	sql := `update english_report r
-LEFT JOIN english_classify c ON r.classify_id_second = c.id
-SET r.classify_id_first=c.parent_id, r.classify_name_second=c.classify_name
-where (r.classify_id_first != c.parent_id or r.classify_name_second != c.classify_name) and r.classify_id_second =?`
-	err = global.DmSQL["rddp"].Exec(sql, classifyId).Error
-	if err != nil {
-		return
-	}
-	//更新一级分类名
-	sql = `update english_report r
-    LEFT JOIN english_classify c ON r.classify_id_first = c.id
-    SET r.classify_name_first=c.classify_name
-where r.classify_name_first	!= c.classify_name and r.classify_id_first=?`
-	err = global.DmSQL["rddp"].Exec(sql, parentId).Error
-	if err != nil {
-		return
-	}
-	//更新一级分类名
-	sql = `update english_report r
-    LEFT JOIN english_classify c ON r.classify_id_first = c.id
-    SET r.classify_name_first=c.classify_name
-where r.classify_name_first	!= c.classify_name and r.classify_id_first=?`
-	err = global.DmSQL["rddp"].Exec(sql, classifyId).Error
-	return
-}
-
-// UpdateReport 更新英文报告
-func (reportInfo *EnglishReport) UpdateReport(cols []string) (err error) {
-	err = global.DmSQL["rddp"].Select(cols).Updates(reportInfo).Error
-	return
-}
-
-// GetAllEnglishClassify 获取所有英文分类
-func GetAllEnglishClassify() (list []*Classify, err error) {
-	sql := ` SELECT * FROM english_classify `
-	err = global.DmSQL["rddp"].Raw(sql).Find(&list).Error
-	return
-}
-
-// GetEnglishReportByIds 根据IDs获取英文报告列表
-func GetEnglishReportByIds(reportIds []int, fieldArr []string) (list []*EnglishReport, err error) {
-	listLen := len(reportIds)
-	if listLen == 0 {
-		return
-	}
-	fields := ` * `
-	if len(fieldArr) > 0 {
-		fields = strings.Join(fieldArr, ",")
-	}
-	sql := `SELECT ` + fields + ` FROM english_report WHERE id IN (` + utils.GetOrmInReplace(listLen) + `)`
-	err = global.DmSQL["rddp"].Raw(sql, reportIds).Find(&list).Error
-	return
-}
-
-// MarkEditEnReport 标记编辑英文研报的请求数据
-type MarkEditEnReport struct {
-	ReportId int `description:"研报id"`
-	Status   int `description:"标记状态,1:编辑中,2:编辑完成"`
-}
-
-type EnglishClassifyNameParentName struct {
-	Id                 int       `description:"分类ID"`
-	ClassifyName       string    `description:"分类名称"`
-	Sort               int       `description:"排序"`
-	ParentId           int       `description:"父级分类id"`
-	CreateTime         time.Time `description:"创建时间"`
-	ModifyTime         time.Time `description:"修改时间"`
-	ClassifyLabel      string    `description:"分类标签"`
-	ShowType           int       `description:"展示类型:1-列表 2-专栏"`
-	IsShow             int       `description:"是否在小程序显示:1-显示 0-隐藏"`
-	ParentClassifyName string    `description:"父级分类名称"`
-}
-
-func GetEnglishClassifyByClassifyNameAndParentName(parentClassiyName, classifyName string) (item EnglishClassifyNameParentName, err error) {
-	sql := "SELECT c1.*, c2.classify_name as parent_classify_name FROM english_classify c1 LEFT JOIN english_classify c2 on c1.parent_id = c2.id where c1.parent_id > 0 and c2.classify_name = ? and c1.classify_name= ?"
-	err = global.DmSQL["rddp"].Raw(sql, parentClassiyName, classifyName).First(&item).Error
-	return
-}
-
-type RSClassifyList []*EnglishClassifyList
-
-func (m RSClassifyList) Len() int {
-	return len(m)
-}
-
-func (m RSClassifyList) Less(i, j int) bool {
-	return m[i].Sort < m[j].Sort
-}
-
-func (m RSClassifyList) Swap(i, j int) {
-	m[i], m[j] = m[j], m[i]
-}
-
-type RSChildClassifyList []*EnglishClassifyList
-
-func (m RSChildClassifyList) Len() int {
-	return len(m)
-}
-
-func (m RSChildClassifyList) Less(i, j int) bool {
-	return m[i].Sort < m[j].Sort
-}
-
-func (m RSChildClassifyList) Swap(i, j int) {
-	m[i], m[j] = m[j], m[i]
-}
-
-// GetEnglishClassifyByClassifyNameParentId 获取英文分类
-func GetEnglishClassifyByClassifyNameParentId(classifyName string, parentId int) (item *Classify, err error) {
-	sql := ` SELECT * FROM english_classify where classify_name = ? and parent_id = ? `
-	err = global.DmSQL["rddp"].Raw(sql, classifyName, parentId).First(&item).Error
-	return
-}
-
-type EnglishClassifyFullName struct {
-	Id           int    `description:"分类ID"`
-	ParentId     int    `description:"父级分类id"`
-	RootId       int    `description:"一级分类ID"`
-	RootName     string `description:"一级分类名"`
-	ParentName   string `description:"二级分类名"`
-	ClassifyName string `description:"分类名称"`
-}
-
-// GetEnglishClassifyFullNameByIds 获取英文分类名一级/二级/三级
-func GetEnglishClassifyFullNameByIds(classifyIds []int) (list []*EnglishClassifyFullName, err error) {
-	sql := ` SELECT
-	a.id,
-	a.parent_id,
-	a.root_id,
-	a.classify_name,
-	b.classify_name AS root_name,
-	c.classify_name AS parent_name 
-FROM
-	english_classify a
-	LEFT JOIN english_classify b ON a.root_id = b.id
-	LEFT JOIN english_classify c ON a.parent_id = c.id 
-where a.id IN (` + utils.GetOrmInReplace(len(classifyIds)) + `)`
-	err = global.DmSQL["rddp"].Raw(sql, classifyIds).Find(&list).Error
-	return
-}
-
-func (m *EnglishReport) GetItemById(id int) (item *EnglishReport, err error) {
-	sql := `SELECT * FROM english_report WHERE id = ? LIMIT 1`
-	err = global.DmSQL["rddp"].Raw(sql, id).First(&item).Error
-	return
-}
-
-// GetEnglishClassifies 获取所有英文分类
-func GetEnglishClassifies() (list []*EnglishClassify, err error) {
-	sql := ` SELECT * FROM english_classify `
-	err = global.DmSQL["rddp"].Raw(sql).Find(&list).Error
-	return
-}
-
-// GetEnglishReportStateCount 获取指定状态的报告数量
-func GetEnglishReportStateCount(state int) (count int, err error) {
-	sql := `SELECT COUNT(1) AS count FROM english_report WHERE state = ?`
-	err = global.DmSQL["rddp"].Raw(sql, state).Scan(&count).Error
-	return
-}
-
-// UpdateEnglishReportsStateByCond 批量更新报告状态
-func UpdateEnglishReportsStateByCond(classifyFirstId, classifySecondId, oldState, newState int) (err error) {
-	cond := ``
-	if classifyFirstId > 0 {
-		cond += fmt.Sprintf(` AND classify_id_first = %d`, classifyFirstId)
-	}
-	if classifySecondId > 0 {
-		cond += fmt.Sprintf(` AND classify_id_second = %d`, classifySecondId)
-	}
-	sql := fmt.Sprintf(`UPDATE english_report SET state = ?, pre_publish_time = NULL WHERE state = ? %s`, cond)
-	err = global.DmSQL["rddp"].Exec(sql, newState, oldState).Error
-	return
-}
-
-// UpdateEnglishReportsStateBySecondIds 批量更新二级分类报告状态
-func UpdateEnglishReportsStateBySecondIds(oldState, newState int, secondIds []int) (err error) {
-	if len(secondIds) <= 0 {
-		return
-	}
-	// (有审批流的)未发布->待提交
-	sql := fmt.Sprintf(`UPDATE english_report SET state = ?, pre_publish_time = NULL WHERE state = ? AND classify_id_second IN (%s)`, utils.GetOrmInReplace(len(secondIds)))
-	err = global.DmSQL["rddp"].Exec(sql, newState, oldState, secondIds).Error
-	if err != nil {
-		return
-	}
-	// (无审批流的)待提交->未发布
-	sql = fmt.Sprintf(`UPDATE english_report SET state = ?, pre_publish_time = NULL WHERE state = ? AND classify_id_second NOT IN (%s)`, utils.GetOrmInReplace(len(secondIds)))
-	err = global.DmSQL["rddp"].Exec(sql, oldState, newState, secondIds).Error
-	return
-}
-
-type EnglishClassifySetEnabledReq struct {
-	ClassifyId int `description:"分类ID"`
-	Enabled    int `description:"是否可用,1可用,0禁用"`
-}
-
-func (classifyInfo *EnglishClassify) SetEnabled(id, enabled int) (err error) {
-	to := global.DmSQL["rddp"].Begin()
-	defer func() {
-		if err != nil {
-			_ = to.Rollback()
-		} else {
-			_ = to.Commit()
-		}
-	}()
-	sql := ` UPDATE english_classify SET enabled =?  WHERE id = ?`
-	err = to.Exec(sql, enabled, id).Error
-	if err != nil {
-		return
-	}
-	sql = ` UPDATE english_classify SET enabled =?  WHERE parent_id = ? or root_id = ?`
-	err = to.Exec(sql, enabled, id, id).Error
-	if err != nil {
-		return
-	}
-	return
-}
-
-func ModifyEnglishReportPdfUrl(reportId int, detailPdfUrl string) (err error) {
-	sql := `UPDATE english_report SET detail_pdf_url=? WHERE id=? `
-	err = global.DmSQL["rddp"].Exec(sql, detailPdfUrl, reportId).Error
-	return
-}
-
-func ModifyEnglishReportImgUrl(reportId int, detailImgUrl string) (err error) {
-	sql := `UPDATE english_report SET detail_img_url=? WHERE id=? `
-	err = global.DmSQL["rddp"].Exec(sql, detailImgUrl, reportId).Error
-	return
-}
-
-func FormatEnglishReport2ListItem(origin *EnglishReport) (item *EnglishReportList) {
-	if origin == nil {
-		return
-	}
-	item = new(EnglishReportList)
-	item.Id = origin.Id
-	item.AddType = origin.AddType
-	item.ClassifyIdFirst = origin.ClassifyIdFirst
-	item.ClassifyNameFirst = origin.ClassifyNameFirst
-	item.ClassifyIdSecond = origin.ClassifyIdSecond
-	item.ClassifyNameSecond = origin.ClassifyNameSecond
-	item.Title = origin.Title
-	item.Abstract = origin.Abstract
-	item.Author = origin.Author
-	item.Frequency = origin.Frequency
-	item.CreateTime = origin.CreateTime
-	item.ModifyTime = origin.ModifyTime
-	item.State = origin.State
-	item.PublishTime = utils.TimeTransferString(utils.FormatDateTime, origin.PublishTime)
-	item.PrePublishTime = utils.TimeTransferString(utils.FormatDateTime, origin.PrePublishTime)
-	item.Stage = origin.Stage
-	//item.Content = origin.Content
-	item.VideoUrl = origin.VideoUrl
-	item.VideoName = origin.VideoName
-	item.VideoPlaySeconds = origin.VideoPlaySeconds
-	item.ContentSub = origin.ContentSub
-	item.ReportCode = origin.ReportCode
-	item.Pv = origin.Pv
-	item.PvEmail = origin.PvEmail
-	item.UvEmail = origin.UvEmail
-	// 邮箱PV大于0的时候, 不展示最初版本的PV
-	if item.PvEmail > 0 {
-		item.Pv = 0
-	}
-	item.EmailState = origin.EmailState
-	if origin.EmailHasFail == 1 {
-		item.EmailHasFail = true
-	}
-	item.FromReportId = origin.FromReportId
-	item.AdminId = origin.AdminId
-	item.AdminRealName = origin.AdminRealName
-	item.ApproveTime = utils.TimeTransferString(utils.FormatDateTime, origin.ApproveTime)
-	item.DetailImgUrl = origin.DetailImgUrl
-	item.DetailPdfUrl = origin.DetailPdfUrl
-	return
-}
-
-// UpdateEnglishReportEmailHasFail 标记报告邮件发送失败
-func UpdateEnglishReportEmailHasFail(reportId int) (err error) {
-	sql := `UPDATE english_report SET email_has_fail = 1 WHERE id = ?`
-	err = global.DmSQL["rddp"].Exec(sql, reportId).Error
-	return
-}
-
-// UpdatePdfUrlEnglishReportById 清空pdf相关字段
-func UpdatePdfUrlEnglishReportById(reportId int) (err error) {
-	sql := `UPDATE english_report SET detail_img_url = '',detail_pdf_url='',modify_time=NOW() WHERE id = ? `
-	err = global.DmSQL["rddp"].Exec(sql, reportId).Error
-	return
-}
-
-func GetEnglishReportFieldsByIds(ids []int, fields []string) (items []*EnglishReport, err error) {
-	if len(ids) == 0 {
-		return
-	}
-	field := " * "
-	if len(fields) > 0 {
-		field = fmt.Sprintf(" %s ", strings.Join(fields, ","))
-	}
-	sql := fmt.Sprintf(`SELECT %s FROM english_report WHERE id IN (%s)`, field, utils.GetOrmInReplace(len(ids)))
-	err = global.DmSQL["rddp"].Raw(sql, ids).Find(&items).Error
-	return
-}

+ 0 - 258
models/english_report_email.go

@@ -1,258 +0,0 @@
-package models
-
-import (
-	"eta_gn/eta_api/global"
-	"eta_gn/eta_api/utils"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"time"
-)
-
-// EnglishReportEmail 英文研报-邮箱/客户联系人
-type EnglishReportEmail struct {
-	Id              int       `gorm:"column:id;primaryKey" description:"邮箱ID"`
-	CompanyId       int       `gorm:"column:company_id" description:"客户ID"`
-	Name            string    `gorm:"column:name" description:"联系人名称"`
-	Email           string    `gorm:"column:email" description:"邮箱地址"`
-	Mobile          string    `gorm:"column:mobile" description:"手机号"`
-	CountryCode     string    `gorm:"column:country_code" description:"区号,86、852、886等"`
-	BusinessCardUrl string    `gorm:"column:business_card_url" description:"名片"`
-	ViewTotal       int       `gorm:"column:view_total" description:"累计点击量/阅读量"`
-	LastViewTime    time.Time `gorm:"column:last_view_time" description:"最后阅读时间"`
-	IsDeleted       int       `gorm:"column:is_deleted" description:"删除状态:0-正常;1-已删除"`
-	Enabled         int       `gorm:"column:enabled" description:"邮箱状态:1:有效,0:禁用"`
-	AdminId         int       `gorm:"column:admin_id" description:"创建人ID"`
-	AdminName       string    `gorm:"column:admin_name" description:"创建人姓名"`
-	Status          int       `gorm:"column:status" description:"1:正式,2:临时,3:终止"`
-	CompanyName     string    `gorm:"column:company_name" description:"公司名称"`
-	CreateTime      time.Time `gorm:"column:create_time" description:"创建时间"`
-	ModifyTime      time.Time `gorm:"column:modify_time" description:"更新时间"`
-	RegisterTime    time.Time `gorm:"column:register_time" description:"注册时间"`
-}
-
-func (item *EnglishReportEmail) TableName() string {
-	return "english_report_email"
-}
-
-// EnglishReportEmailSaveReq 保存邮箱请求体
-type EnglishReportEmailSaveReq struct {
-	Id              int    `description:"邮箱ID, 大于0为编辑"`
-	CompanyId       int    `description:"客户ID"`
-	Name            string `description:"客户名称"`
-	Email           string `description:"邮箱地址"`
-	Mobile          string `description:"手机号"`
-	CountryCode     string `description:"区号,86、852、886等"`
-	BusinessCardUrl string `description:"名片"`
-	Enabled         int    `description:"邮箱状态:1:有效,0:禁用"`
-}
-
-func (item *EnglishReportEmail) Create() (err error) {
-	err = global.DmSQL["rddp"].Create(item).Error
-	return
-}
-
-func (item *EnglishReportEmail) Update(cols []string) (err error) {
-	err = global.DmSQL["rddp"].Select(cols).Updates(item).Error
-	return
-}
-
-// GetEnglishReportEmailById 主键获取邮箱
-func GetEnglishReportEmailById(id int) (item *EnglishReportEmail, err error) {
-	sql := `SELECT * FROM english_report_email WHERE is_deleted = 0 AND id = ? LIMIT 1`
-	err = global.DmSQL["rddp"].Raw(sql, id).First(&item).Error
-	return
-}
-
-// EnglishReportEmailPageListResp 分页列表响应体
-type EnglishReportEmailPageListResp struct {
-	List   []*EnglishReportEmailResp
-	Paging *paging.PagingItem `description:"分页数据"`
-}
-
-// EnglishReportEmailResp 邮箱响应体
-type EnglishReportEmailResp struct {
-	Id                  int       `description:"邮箱ID"`
-	CompanyId           int       `description:"客户ID"`
-	Name                string    `description:"客户名称"`
-	Email               string    `description:"邮箱地址"`
-	Mobile              string    `description:"手机号"`
-	CountryCode         string    `description:"区号,86、852、886等"`
-	BusinessCardUrl     string    `description:"名片"`
-	AdminName           string    `description:"创建人姓名"`
-	CreateTime          string    `description:"创建时间"`
-	ViewTotal           int       `description:"累计点击量"`
-	Enabled             int       `description:"邮箱状态:1:有效,0:禁用"`
-	CompanyName         string    `description:"公司名称"`
-	RegisterCompanyName string    `description:"注册公司名称"`
-	Status              int       `description:"1:正式,2:临时,3:终止"`
-	LastViewTime        time.Time `description:"最后阅读时间"`
-	IsDeleted           int       `description:"删除状态:0-正常;1-已删除"`
-	AdminId             int       `description:"创建人ID"`
-	ModifyTime          string    `description:"更新时间"`
-	RegisterTime        string    `description:"注册时间"`
-}
-
-// EnglishReportEmailRespItem 邮箱响应体
-type EnglishReportEmailRespItem struct {
-	Id                  int       `description:"邮箱ID"`
-	Name                string    `description:"客户名称"`
-	Email               string    `description:"邮箱地址"`
-	Mobile              string    `description:"手机号"`
-	CountryCode         string    `description:"区号,86、852、886等"`
-	BusinessCardUrl     string    `description:"名片"`
-	AdminName           string    `description:"创建人姓名"`
-	CreateTime          time.Time `description:"创建时间"`
-	ViewTotal           int       `description:"累计点击量"`
-	Enabled             int       `description:"邮箱状态:1:有效,0:禁用"`
-	CompanyName         string    `description:"公司名称"`
-	RegisterCompanyName string    `description:"注册公司名称"`
-	RegisterTime        time.Time `description:"注册时间"`
-}
-
-// GetEnglishReportEmailPageList 获取邮箱列表-分页
-func GetEnglishReportEmailPageList(condition string, pars []interface{}, order string, startSize, pageSize int) (total int, list []*EnglishReportEmailRespItem, err error) {
-	//o := orm.NewOrmUsingDB("rddp")
-	sql := `SELECT a.id,a.name,a.email,a.mobile,a.country_code,a.business_card_url,a.view_total,a.company_id,
-a.last_view_time,a.admin_id,a.admin_name,a.create_time,a.modify_time,a.enabled,a.status,a.is_deleted,a.register_time,
-b.company_name AS company_name,a.company_name AS register_company_name FROM english_report_email AS a LEFT JOIN 
-	english_company AS b ON a.company_id = b.company_id
-WHERE a.is_deleted = 0 `
-	sql += condition
-	if order != "" {
-		sql += order
-	} else {
-		sql += ` ORDER BY a.create_time DESC`
-	}
-	totalSQl := `SELECT COUNT(1) total FROM (` + sql + `) z`
-	if err = global.DmSQL["rddp"].Raw(totalSQl, pars...).Scan(&total).Error; err != nil {
-		return
-	}
-	sql += ` LIMIT ?,?`
-	pars = append(pars, startSize)
-	pars = append(pars, pageSize)
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&list).Error
-	return
-}
-
-// GetEnglishReportEmailList 获取邮箱列表
-func GetEnglishReportEmailList(condition string, pars []interface{}, order string) (list []*EnglishReportEmail, err error) {
-	sql := `SELECT * FROM english_report_email WHERE is_deleted = 0`
-	sql += condition
-	if order != "" {
-		sql += order
-	} else {
-		sql += ` ORDER BY create_time DESC`
-	}
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&list).Error
-	return
-}
-
-// GetEnglishReportEmailByEmail 地址获取邮箱
-func GetEnglishReportEmailByEmail(email string) (item *EnglishReportEmailResp, err error) {
-	sql := `SELECT a.id,a.name,a.email,a.mobile,a.country_code,a.business_card_url,a.view_total,
-a.last_view_time,a.admin_id,a.admin_name,a.create_time,a.modify_time,a.enabled,a.status,
-b.company_name AS company_name,a.company_name AS register_company_name FROM english_report_email AS a LEFT JOIN 
-	english_company AS b ON a.company_id = b.company_id WHERE a.is_deleted = 0 AND a.email = ? LIMIT 1`
-	err = global.DmSQL["rddp"].Raw(sql, email).First(&item).Error
-	return
-}
-
-// EnglishReportEmailDelReq 删除邮箱请求体
-type EnglishReportEmailDelReq struct {
-	EmailId int `description:"邮箱ID"`
-}
-
-// EnglishReportEmailDelReq 删除邮箱请求体
-type EnglishReportEditEnabledReq struct {
-	EmailId int `description:"邮箱ID"`
-	Enabled int `description:"1:有效,0:禁用"`
-}
-
-// EnglishReportEmailSendReq 群发邮件请求体
-type EnglishReportEmailSendReq struct {
-	ReportId      int    `description:"报告ID"`
-	EmailIds      string `description:"邮箱IDs"`
-	Theme         string `description:"邮件主题"`
-	EnPermissions []int  `description:"品种权限IDs"`
-	NoCompanyIds  []int  `description:"禁止接收邮件的英文客户IDs"`
-}
-
-// EnglishReportEmailConf 英文研报邮件配置
-type EnglishReportEmailConf struct {
-	FromAlias     string `description:"发信人昵称" json:"from_alias"`
-	SendAuthGroup string `description:"群发邮件权限组, 英文逗号分隔" json:"send_auth_group"`
-}
-
-// GetEnglishCompanyViewPageList 获取联系人点击量列表-分页
-func GetEnglishCompanyViewPageList(condition string, pars []interface{}, order string, startSize, pageSize int) (total int, list []*EnglishReportEmail, err error) {
-	sql := `SELECT * FROM english_report_email WHERE view_total > 0 `
-	sql += condition
-	if order != "" {
-		sql += order
-	} else {
-		sql += ` ORDER BY create_time DESC`
-	}
-
-	totalSQl := `SELECT COUNT(1) total FROM (` + sql + `) z`
-	if err = global.DmSQL["rddp"].Raw(totalSQl, pars...).Scan(&total).Error; err != nil {
-		return
-	}
-	sql += ` LIMIT ?,?`
-	pars = append(pars, startSize)
-	pars = append(pars, pageSize)
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&list).Error
-	return
-}
-
-// MultiCreateEnglishEmail 批量新增英文邮箱/联系人
-func MultiCreateEnglishEmail(items []*EnglishReportEmail, logs []*EnglishReportEmailOpLog) (err error) {
-	tx := global.DmSQL["rddp"].Begin()
-	defer func() {
-		if err != nil {
-			_ = tx.Rollback()
-		} else {
-			_ = tx.Commit()
-		}
-	}()
-
-	// 新增联系人
-	err = tx.CreateInBatches(items, utils.MultiAddNum).Error
-	if err != nil {
-		return
-	}
-
-	// 新增日志
-	err = tx.CreateInBatches(logs, utils.MultiAddNum).Error
-	return
-}
-
-// EnglishReportEmailResendReq 邮件重发请求体
-type EnglishReportEmailResendReq struct {
-	ReportId int `description:"报告ID"`
-	SendId   int `description:"发送ID, 0表示批量发送全部失败邮件"`
-}
-
-// UpdateEnglishEmailEnabledByCompanyId 更新客户下所有联系人状态
-func UpdateEnglishEmailEnabledByCompanyId(companyId, enabled int) (err error) {
-	sql := `UPDATE english_report_email SET enabled = ? WHERE company_id = ?`
-	err = global.DmSQL["rddp"].Exec(sql, enabled, companyId).Error
-	return
-}
-
-// EnglishReportMoveReq 移动至当前客户请求体
-type EnglishReportMoveReq struct {
-	EmailId   int `description:"邮箱ID"`
-	CompanyId int `description:"公司id"`
-}
-
-// GetEnCompanyIdsByKeyword 关键词获取英文客户IDs
-func GetEnCompanyIdsByKeyword(keyword string) (companyIds []int, err error) {
-	sql := `SELECT DISTINCT
-				a.company_id
-			FROM
-				english_report_email AS a
-			JOIN english_company AS b ON a.company_id = b.company_id AND b.is_deleted = 0
-			WHERE
-				a.is_deleted = 0 AND a.status = 1 AND (a.email LIKE ? OR a.mobile LIKE ? OR b.company_name LIKE ?)`
-	err = global.DmSQL["rddp"].Raw(sql, utils.GetLikeKeyword(keyword), utils.GetLikeKeyword(keyword), utils.GetLikeKeyword(keyword)).Find(&companyIds).Error
-	return
-}

+ 0 - 153
models/english_report_email_log.go

@@ -1,153 +0,0 @@
-package models
-
-import (
-	"eta_gn/eta_api/global"
-	"eta_gn/eta_api/utils"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"time"
-)
-
-const (
-	EnglishReportEmailLogSourceAli     = 1 // 来源-阿里云
-	EnglishReportEmailLogSourceTencent = 2 // 来源-腾讯云
-
-	EnglishReportEmailLogStatusIng     = -1 // 推送状态-已发送
-	EnglishReportEmailLogStatusFail    = 0  // 推送状态-发送失败
-	EnglishReportEmailLogStatusSuccess = 1  // 推送状态-发送成功
-)
-
-// EnglishReportEmailLog 英文研报-邮件推送记录
-type EnglishReportEmailLog struct {
-	Id           int       `gorm:"column:id;primaryKey;auto_increment:true" description:"邮箱日志ID"`
-	ReportId     int       `gorm:"column:report_id" description:"报告ID或者线上路演ID"`
-	ReportType   int       `gorm:"column:report_type" description:"类型:0英文研报,1英文线上路演"`
-	EmailId      int       `gorm:"column:email_id" description:"邮箱ID"`
-	Email        string    `gorm:"column:email" description:"邮箱地址"`
-	SendData     string    `gorm:"column:send_data" description:"请求信息"`
-	Result       string    `gorm:"column:result" description:"响应信息"`
-	SendStatus   int       `gorm:"column:send_status" description:"发送状态:-1-已发送(一个中间状态,重新推送时可能会产生这种状态);0-发送失败;1-发送成功"`
-	CreateTime   time.Time `gorm:"column:create_time" description:"请求时间"`
-	Source       int       `gorm:"column:source" description:"服务商:1-阿里云;2-腾讯云"`
-	IsDeleted    int       `gorm:"column:is_deleted" description:"是否已删除: 0-正常; 1-已删除"`
-	CallbackData string    `gorm:"column:callback_data" description:"回调信息"`
-	ErrMsg       string    `gorm:"column:err_msg" description:"错误信息"`
-}
-
-func (item *EnglishReportEmailLog) TableName() string {
-	return "english_report_email_log"
-}
-
-func (item *EnglishReportEmailLog) Create() (err error) {
-	err = global.DmSQL["rddp"].Create(item).Error
-	return
-}
-
-func (item *EnglishReportEmailLog) Update(cols []string) (err error) {
-	err = global.DmSQL["rddp"].Select(cols).Updates(item).Error
-	return
-}
-
-func (item *EnglishReportEmailLog) InsertMulti(items []*EnglishReportEmailLog) (err error) {
-	err = global.DmSQL["rddp"].CreateInBatches(items, utils.MultiAddNum).Error
-	return
-}
-
-// GetEnglishReportEmailLogList 获取日志列表
-func GetEnglishReportEmailLogList(condition string, pars []interface{}) (list []*EnglishReportEmailLog, err error) {
-	sql := `SELECT * FROM english_report_email_log WHERE is_deleted = 0 `
-	if condition != `` {
-		sql += condition
-	}
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&list).Error
-	return
-}
-
-// EnglishReportEmailLogPageListResp 英文研报-邮件推送记录分页列表响应体
-type EnglishReportEmailLogPageListResp struct {
-	List   []*EnglishReportEmailLogPageList `description:"列表数据"`
-	Paging *paging.PagingItem               `description:"分页数据"`
-}
-
-// EnglishReportEmailLogPageList 英文研报-邮件推送记录分页列表
-type EnglishReportEmailLogPageList struct {
-	SendId     int    `description:"推送ID"`
-	ReportId   int    `description:"报告ID"`
-	EmailId    int    `description:"邮箱ID"`
-	Email      string `description:"邮箱地址"`
-	ResultMsg  string `description:"结果详情"`
-	SendStatus int    `description:"发送状态:-1-已发送;0-发送失败;1-发送成功"`
-	Source     int    `description:"服务商:1-阿里云;2-腾讯云"`
-	CreateTime string `description:"创建时间"`
-}
-
-// GetEnglishReportEmailLogPageList 获取日志列表-分页
-func GetEnglishReportEmailLogPageList(condition string, pars []interface{}, order string, startSize, pageSize int) (total int, list []*EnglishReportEmailLog, err error) {
-	sql := `SELECT * FROM english_report_email_log WHERE is_deleted = 0 `
-	sql += condition
-	if order != "" {
-		sql += order
-	} else {
-		sql += ` ORDER BY send_status ASC, create_time DESC`
-	}
-	totalSQl := `SELECT COUNT(1) total FROM (` + sql + `) z`
-	if err = global.DmSQL["rddp"].Raw(totalSQl, pars...).Scan(&total).Error; err != nil {
-		return
-	}
-	sql += ` LIMIT ?,?`
-	pars = append(pars, startSize)
-	pars = append(pars, pageSize)
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&list).Error
-	return
-}
-
-// GetEnglishReportEmailLogById 主键获取日志
-func GetEnglishReportEmailLogById(id int) (item *EnglishReportEmailLog, err error) {
-	sql := `SELECT * FROM english_report_email_log WHERE is_deleted = 0 AND id = ? LIMIT 1`
-	err = global.DmSQL["rddp"].Raw(sql, id).First(&item).Error
-	return
-}
-
-// DeleteEnglishReportEmailLogByIds IDs删除日志
-func DeleteEnglishReportEmailLogByIds(logIds []int) (err error) {
-	if len(logIds) == 0 {
-		return
-	}
-	sql := `DELETE FROM english_report_email_log WHERE id IN (` + utils.GetOrmInReplace(len(logIds)) + `)`
-	err = global.DmSQL["rddp"].Raw(sql, logIds).Exec(sql, logIds).Error
-	return
-}
-
-// EnglishReportEmailLogFail 群发消息日志失败列表
-type EnglishReportEmailLogFail struct {
-	HasFail  int `description:"是否有失败记录: 0-无; 1-有"`
-	ReportId int `description:"报告ID"`
-}
-
-// GetEnglishReportEmailLogFailList 获取群发消息日志失败列表
-func GetEnglishReportEmailLogFailList(reportType int) (list []*EnglishReportEmailLogFail, err error) {
-	sql := `SELECT 1 AS has_fail, report_id FROM english_report_email_log WHERE report_type=? and is_deleted = 0 AND send_status = 0 GROUP BY report_id`
-	err = global.DmSQL["rddp"].Raw(sql, reportType).Find(&list).Error
-	return
-}
-
-// GetEnglishReportEmailLog 获取邮件推送日志
-func GetEnglishReportEmailLog(condition string, pars []interface{}) (item *EnglishReportEmailLog, err error) {
-	sql := `SELECT * FROM english_report_email_log WHERE 1 = 1 `
-	sql += condition
-	sql += ` ORDER BY id DESC LIMIT 1`
-	err = global.DmSQL["rddp"].Raw(sql, pars...).First(&item).Error
-	return
-}
-
-func (item *EnglishReportEmailLog) MultiUpdateResult(items []*EnglishReportEmailLog) (err error) {
-	tx := global.DmSQL["rddp"].Begin()
-	for _, v := range items {
-		err = tx.Exec("UPDATE english_report_email_log SET send_data = ?, result = ?, send_status = ?, err_msg = ? WHERE id = ?", v.SendData, v.Result, v.SendStatus, v.ErrMsg, v.Id).Error
-		if err != nil {
-			tx.Rollback()
-			return
-		}
-	}
-	tx.Commit()
-	return
-}

+ 0 - 46
models/english_report_email_op_log.go

@@ -1,46 +0,0 @@
-package models
-
-import (
-	"eta_gn/eta_api/global"
-	"eta_gn/eta_api/utils"
-	"time"
-)
-
-const (
-	EnglishReportEmailOpLogTypeAdd = iota + 1
-	EnglishReportEmailOpLogTypeEdit
-	EnglishReportEmailOpLogTypeDel
-	EnglishReportEmailOpLogTypeImport
-	EnglishReportEmailOpLogTypeEditEnabled
-	EnglishReportEmailOpLogTypeMoveToCurrent
-)
-
-// EnglishReportEmailOpLog 英文邮箱/联系人-操作日志表
-type EnglishReportEmailOpLog struct {
-	Id         int       `gorm:"column:id;primaryKey" description:"日志ID"`
-	CompanyId  int       `gorm:"column:company_id" description:"客户ID"`
-	EmailId    int       `gorm:"column:email_id" description:"联系人ID"`
-	AdminId    int       `gorm:"column:admin_id" description:"操作人ID"`
-	OptionData string    `gorm:"column:option_data" description:"操作数据-JSON"`
-	OptionType int       `gorm:"column:option_type" description:"操作类型:1-新增;2-编辑;3-删除;4-导入"`
-	CreateTime time.Time `gorm:"column:create_time" description:"创建时间"`
-}
-
-func (item *EnglishReportEmailOpLog) TableName() string {
-	return "english_report_email_op_log"
-}
-
-func (item *EnglishReportEmailOpLog) Create() (err error) {
-	err = global.DmSQL["rddp"].Create(item).Error
-	return
-}
-
-func (item *EnglishReportEmailOpLog) MultiCreate(items []*EnglishReportEmailOpLog) (err error) {
-	err = global.DmSQL["rddp"].CreateInBatches(items, utils.MultiAddNum).Error
-	return
-}
-
-func (item *EnglishReportEmailOpLog) Update(cols []string) (err error) {
-	err = global.DmSQL["rddp"].Select(cols).Updates(item).Error
-	return
-}

+ 0 - 154
models/english_report_email_pv.go

@@ -1,154 +0,0 @@
-package models
-
-import (
-	"eta_gn/eta_api/global"
-	"time"
-
-	"github.com/rdlucklib/rdluck_tools/paging"
-)
-
-// EnglishReportEmailPV 英文研报-邮箱pv
-
-type EnglishReportEmailPV struct {
-	Id         int       `gorm:"column:id;primaryKey;auto_increment:true" description:"日志ID"`
-	ReportId   int       `gorm:"column:report_id" description:"英文报告ID"`
-	EmailId    int       `gorm:"column:email_id" description:"邮箱ID"`
-	ReportType int       `gorm:"column:report_type" description:"类型:0英文研报,1英文线上路演"`
-	CreateTime time.Time `gorm:"column:create_time" description:"创建时间"`
-}
-
-func (item *EnglishReportEmailPV) TableName() string {
-	return "english_report_email_pv"
-}
-
-func (item *EnglishReportEmailPV) Create() (err error) {
-	err = global.DmSQL["rddp"].Create(item).Error
-	return
-}
-
-// EnglishReportEmailPvPageListResp 分页列表响应体
-type EnglishReportEmailPvPageListResp struct {
-	List   []*EnglishReportEmailPvResp
-	Paging *paging.PagingItem `description:"分页数据"`
-}
-type EnglishReportEmailUvPageListResp struct {
-	List   []*EnglishReportEmailUvResp
-	Paging *paging.PagingItem `description:"分页数据"`
-}
-
-// EnglishReportEmailPvResp 邮箱响应体
-type EnglishReportEmailPvResp struct {
-	Name            string `description:"客户名称"`
-	Email           string `description:"邮箱地址"`
-	ClickNum        int    `description:"点击量"`
-	RecentClickTime string `description:"最近一次点击时间"`
-}
-
-type EnglishReportEmailUvResp struct {
-	Name            string `description:"客户名称"`
-	Email           string `description:"邮箱地址"`
-	RecentClickTime string `description:"最近一次点击时间"`
-}
-
-// GetEnglishReportEmailPageList 获取邮箱pv列表-分页
-func GetEnglishReportEmailPvPageList(condition string, pars []interface{}, startSize, pageSize int) (total int, list []*EnglishReportEmailPvResp, err error) {
-	sql := `SELECT
-				b.name,
-				b.email,
-				COUNT(a.id) AS click_num,
-				MAX(a.create_time) AS recent_click_time
-			FROM
-				english_report_email_pv AS a
-			JOIN english_report_email AS b ON a.email_id = b.id
-			WHERE 1 = 1 `
-	if condition != `` {
-		sql += condition
-	}
-	sql += ` GROUP BY a.email_id `
-
-	totalSQl := `SELECT COUNT(1) total FROM (` + sql + `) z`
-	if err = global.DmSQL["rddp"].Raw(totalSQl, pars...).Scan(&total).Error; err != nil {
-		return
-	}
-	sql += ` ORDER BY recent_click_time DESC LIMIT ?,?`
-	pars = append(pars, startSize)
-	pars = append(pars, pageSize)
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&list).Error
-	//_, err = o.Raw(sql, pars...).QueryRows(&list)
-	return
-}
-
-// GetEnglishReportEmailUvPageList 获取邮箱uv列表-分页
-func GetEnglishReportEmailUvPageList(condition string, pars []interface{}, startSize, pageSize int) (total int, list []*EnglishReportEmailUvResp, err error) {
-	sql := `SELECT
-				b.name,
-				b.email,
-				MAX(a.create_time) AS recent_click_time
-			FROM
-				english_report_email_pv AS a
-			JOIN english_report_email AS b ON a.email_id = b.id
-			WHERE 1 = 1 `
-	if condition != `` {
-		sql += condition
-	}
-	sql += ` GROUP BY a.email_id `
-
-	totalSQl := `SELECT COUNT(1) total FROM (` + sql + `) z`
-	if err = global.DmSQL["rddp"].Raw(totalSQl, pars...).Scan(&total).Error; err != nil {
-		return
-	}
-	sql += ` ORDER BY recent_click_time DESC LIMIT ?,?`
-
-	pars = append(pars, startSize)
-	pars = append(pars, pageSize)
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&list).Error
-	return
-}
-
-// EnglishEmailViewPageListResp  邮箱/联系人阅读分页列表响应体
-type EnglishEmailViewPageListResp struct {
-	List   []*EnglishEmailViewResp
-	Paging *paging.PagingItem `description:"分页数据"`
-}
-
-// EnglishEmailViewResp 邮箱/联系人阅读数据响应体
-type EnglishEmailViewResp struct {
-	ReportId     int    `description:"英文研报ID"`
-	ClickType    int    `description:"类型:0英文研报,1英文线上路演"`
-	ReportTitle  string `description:"报告标题"`
-	ReportType   string `description:"报告类型"`
-	ViewTotal    int    `description:"点击量"`
-	LastViewTime string `description:"最近一次点击时间"`
-}
-
-// todo GetEnglishEmailPageList 获取英文邮箱/联系人阅读列表-分页
-func GetEnglishEmailViewPageList(condition string, pars []interface{}, orderRule string, startSize, pageSize int) (total int, list []*EnglishEmailViewResp, err error) {
-	sql := `SELECT
-				report_id,
-                report_type as click_type,
-				COUNT(1) AS view_total,
-				MAX(create_time) AS last_view_time
-			FROM
-				english_report_email_pv
-			WHERE
-				1 = 1 `
-	if condition != `` {
-		sql += condition
-	}
-	sql += ` GROUP BY report_id, report_type`
-
-	totalSQl := `SELECT COUNT(1) total FROM (` + sql + `) z`
-	if err = global.DmSQL["rddp"].Raw(totalSQl, pars...).Scan(&total).Error; err != nil {
-		return
-	}
-	if orderRule != `` {
-		sql += orderRule
-	}
-	sql += ` LIMIT ?,?`
-
-	pars = append(pars, startSize)
-	pars = append(pars, pageSize)
-
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&list).Error
-	return
-}

+ 0 - 292
models/english_video.go

@@ -1,292 +0,0 @@
-package models
-
-import (
-	"eta_gn/eta_api/global"
-	"eta_gn/eta_api/utils"
-	"strings"
-	"time"
-
-	"github.com/rdlucklib/rdluck_tools/paging"
-)
-
-type EnglishVideo struct {
-	Id                 int       `gorm:"column:id;primaryKey;auto_increment:true" description:"路演视频Id"`
-	ClassifyIdFirst    int       `gorm:"column:classify_id_first" description:"一级分类id"`
-	ClassifyNameFirst  string    `gorm:"column:classify_name_first" description:"一级分类名称"`
-	ClassifyIdSecond   int       `gorm:"column:classify_id_second" description:"二级分类id"`
-	ClassifyNameSecond string    `gorm:"column:classify_name_second" description:"二级分类名称"`
-	Title              string    `gorm:"column:title" description:"标题"`
-	Abstract           string    `gorm:"column:abstract" description:"摘要"`
-	Author             string    `gorm:"column:author" description:"作者"`
-	CreateTime         time.Time `gorm:"column:create_time" description:"创建时间"`
-	ModifyTime         time.Time `gorm:"column:modify_time" description:"修改时间"`
-	State              int       `gorm:"column:state" description:"1:未发布,2:已发布"`
-	PublishTime        time.Time `gorm:"column:publish_time" description:"发布时间"`
-	VideoUrl           string    `gorm:"column:video_url" description:"视频文件URL"`
-	VideoCoverUrl      string    `gorm:"column:video_cover_url" description:"视频文件封面地址"`
-	VideoSeconds       string    `gorm:"column:video_seconds" description:"视频时长"`
-	VideoCode          string    `gorm:"column:video_code" description:"报告唯一编码"`
-	Pv                 int       `gorm:"column:pv" description:"Pv"`
-	PvEmail            int       `gorm:"column:pv_email" description:"邮箱PV"`
-	UvEmail            int       `gorm:"column:uv_email" description:"邮箱UV"`
-	EmailState         int       `gorm:"column:email_state" description:"群发邮件状态: 0-未发送; 1-已发送"`
-	Overview           string    `gorm:"column:overview" description:"英文概述部分"`
-	AdminId            int       `gorm:"column:admin_id" description:"上传视频的管理员账号"`
-	AdminRealName      string    `gorm:"column:admin_real_name" description:"上传视频的管理员姓名"`
-}
-
-func AddEnglishVideo(item *EnglishVideo) (err error) {
-	err = global.DmSQL["rddp"].Create(item).Error
-	return
-}
-
-func ModifyEnglishVideoCode(id int, VideoCode string) (err error) {
-	sql := `UPDATE english_video SET video_code=? WHERE id=? `
-	err = global.DmSQL["rddp"].Exec(sql, VideoCode, id).Error
-	return
-}
-
-type SaveEnglishVideoReq struct {
-	Id               int    `description:"路演视频ID"`
-	ClassifyIdFirst  int    `description:"一级分类id"`
-	ClassifyIdSecond int    `description:"二级分类id"`
-	Title            string `description:"标题"`
-	Abstract         string `description:"摘要"`
-	Author           string `description:"作者"`
-	State            int    `description:"状态:1:未发布,2:已发布"`
-	VideoUrl         string `description:"视频文件URL"`
-	VideoCoverUrl    string `description:"视频文件封面地址"`
-	VideoSeconds     string `description:"视频时长"`
-	Overview         string `description:"英文概述部分"`
-}
-
-type SaveEnglishVideoResp struct {
-	Id        int    `description:"路演视频ID"`
-	VideoCode string `description:"报告code"`
-}
-
-type ElasticEnglishVideoDetail struct {
-	Id                 int    `description:"路演视频ID"`
-	ClassifyIdFirst    int    `description:"一级分类id"`
-	ClassifyNameFirst  string `description:"一级分类名称"`
-	ClassifyIdSecond   int    `description:"二级分类id"`
-	ClassifyNameSecond string `description:"二级分类名称"`
-	StageStr           string `description:"报告期数"`
-	Title              string `description:"标题"`
-	Abstract           string `description:"摘要"`
-	Author             string `description:"作者"`
-	Frequency          string `description:"频度"`
-	PublishState       int    `description:"状态:1:未发布,2:已发布"`
-	BodyContent        string `description:"内容"`
-	ContentSub         string `description:"前两段内容"`
-	CreateTime         string `description:"创建时间"`
-	PublishTime        string `description:"发布时间"`
-	VideoCode          string `description:"报告唯一编码"`
-	Overview           string `description:"英文概述部分"`
-}
-
-func EditEnglishVideo(item *EnglishVideo, Id int) (err error) {
-	sql := `UPDATE english_video
-			SET
-			  classify_id_first =?,
-			  classify_name_first = ?,
-			  classify_id_second = ?,
-			  classify_name_second = ?,
-			  title = ?,
-			  abstract = ?,
-			  state = ?,
-			  modify_time = ?,
-			  overview = ?,
-              video_url = ?,
-              video_cover_url = ?,
-              video_seconds = ?
-			WHERE id = ? `
-	err = global.DmSQL["rddp"].Exec(sql, item.ClassifyIdFirst, item.ClassifyNameFirst, item.ClassifyIdSecond, item.ClassifyNameSecond, item.Title,
-		item.Abstract, item.State, time.Now(), item.Overview, item.VideoUrl, item.VideoCoverUrl, item.VideoSeconds, Id).Error
-	return
-}
-
-type EnglishVideoDetail struct {
-	Id                 int    `description:"路演视频ID"`
-	ClassifyIdFirst    int    `description:"一级分类id"`
-	ClassifyNameFirst  string `description:"一级分类名称"`
-	ClassifyIdSecond   int    `description:"二级分类id"`
-	ClassifyNameSecond string `description:"二级分类名称"`
-	Title              string `description:"标题"`
-	Abstract           string `description:"摘要"`
-	Author             string `description:"作者"`
-	CreateTime         string `description:"创建时间"`
-	ModifyTime         string `description:"修改时间"`
-	State              int    `description:"1:未发布,2:已发布"`
-	PublishTime        string `description:"发布时间"`
-	MsgIsSend          int    `description:"消息是否已发送,0:否,1:是"`
-	VideoCode          string `description:"报告唯一编码"`
-	VideoUrl           string `description:"视频文件URL"`
-	VideoCoverUrl      string `description:"视频文件封面地址"`
-	VideoSeconds       string `description:"视频时长"`
-	Pv                 int    `description:"Pv"`
-	Overview           string `description:"英文概述部分"`
-}
-
-func GetEnglishVideoById(Id int) (item *EnglishVideoDetail, err error) {
-	sql := `SELECT * FROM english_video WHERE id=?`
-	err = global.DmSQL["rddp"].Raw(sql, Id).First(&item).Error
-	return
-}
-
-func GetEnglishVideoItemById(Id int) (item *EnglishVideo, err error) {
-	sql := `SELECT * FROM english_video WHERE id = ? LIMIT 1`
-	err = global.DmSQL["rddp"].Raw(sql, Id).First(&item).Error
-	return
-}
-
-type EnglishVideoList struct {
-	Id                 int    `description:"id"`
-	ClassifyIdFirst    int    `description:"一级分类id"`
-	ClassifyNameFirst  string `description:"一级分类名称"`
-	ClassifyIdSecond   int    `description:"二级分类id"`
-	ClassifyNameSecond string `description:"二级分类名称"`
-	Title              string `description:"标题"`
-	Abstract           string `description:"摘要"`
-	CreateTime         string `description:"创建时间"`
-	ModifyTime         string `description:"修改时间"`
-	State              int    `description:"1:未发布,2:已发布"`
-	PublishTime        string `description:"发布时间"`
-	VideoUrl           string `description:"视频文件URL"`
-	VideoCoverUrl      string `description:"视频文件封面地址"`
-	VideoSeconds       string `description:"视频时长"`
-	VideoCode          string `description:"报告唯一编码"`
-	Pv                 int    `description:"Pv"`
-	ShareUrl           string `description:"分享url"`
-	PvEmail            int    `description:"邮箱PV"`
-	UvEmail            int    `description:"邮箱UV"`
-	EmailState         int    `description:"群发邮件状态: 0-未发送; 1-已发送"`
-	EmailAuth          bool   `description:"是否有权限群发邮件"`
-	EmailHasFail       bool   `description:"是否存在邮件发送失败的记录"`
-	Overview           string `description:"英文概述部分"`
-	AdminId            int    `description:"上传视频的管理员账号"`
-	AdminRealName      string `description:"上传视频的管理员姓名"`
-}
-
-type EnglishVideoListResp struct {
-	List   []*EnglishVideoList
-	Paging *paging.PagingItem `description:"分页数据"`
-}
-
-type EnglishVideoReq struct {
-	Id int `description:"路演视频id"`
-}
-
-func GetEnglishVideoListCount(condition string, pars []interface{}) (count int, err error) {
-	//产品权限
-	sql := `SELECT COUNT(1) AS count  FROM english_video WHERE 1=1 `
-	if condition != "" {
-		sql += condition
-	}
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Scan(&count).Error
-	return
-}
-
-func GetEnglishVideoList(condition string, pars []interface{}, startSize, pageSize int) (items []*EnglishVideoList, err error) {
-	sql := `SELECT * 
-        FROM english_video WHERE 1=1  `
-	if condition != "" {
-		sql += condition
-	}
-	sql += `ORDER BY  modify_time DESC LIMIT ?,?`
-	pars = append(pars, startSize)
-	pars = append(pars, pageSize)
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
-	return
-}
-
-func GetEnglishVideoByCondition(condition string, pars []interface{}) (items []*EnglishVideo, err error) {
-	sql := `SELECT * 
-        FROM english_video WHERE 1=1  `
-	if condition != "" {
-		sql += condition
-	}
-	err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
-	return
-}
-
-// 发布报告
-func PublishEnglishVideoById(Id int) (err error) {
-	sql := `UPDATE english_video SET state=2,publish_time=now(),modify_time=NOW() WHERE id = ? `
-	err = global.DmSQL["rddp"].Exec(sql, Id).Error
-	return
-}
-
-// 取消发布报告
-func PublishCancelEnglishVideo(Ids int) (err error) {
-	sql := ` UPDATE english_video SET state=1,publish_time=null WHERE id =?  `
-	err = global.DmSQL["rddp"].Exec(sql, Ids).Error
-	return
-}
-
-// DeleteEnglishVideo 删除路演视频
-func DeleteEnglishVideo(Id int) (err error) {
-	sql := ` DELETE FROM english_video WHERE id=? `
-	err = global.DmSQL["rddp"].Exec(sql, Id).Error
-	return
-}
-
-func UpdateEnglishVideoClassifyByFirstSecondClassifyId(classifyId, parentId int) (err error) {
-	// 更新相关联的二级分类的parentId,和classify_name_second
-	sql := `update english_video r
-LEFT JOIN english_classify c ON r.classify_id_second = c.id
-SET r.classify_id_first=c.parent_id, r.classify_name_second=c.classify_name
-where (r.classify_id_first != c.parent_id or r.classify_name_second != c.classify_name) and r.classify_id_second =?`
-	err = global.DmSQL["rddp"].Exec(sql, classifyId).Error
-	if err != nil {
-		return
-	}
-	//更新一级分类名
-	sql = `update english_video r
-    LEFT JOIN english_classify c ON r.classify_id_first = c.id
-    SET r.classify_name_first=c.classify_name
-where r.classify_name_first	!= c.classify_name and r.classify_id_first=?`
-	err = global.DmSQL["rddp"].Exec(sql, parentId).Error
-	if err != nil {
-		return
-	}
-	//更新一级分类名
-	sql = `update english_video r
-    LEFT JOIN english_classify c ON r.classify_id_first = c.id
-    SET r.classify_name_first=c.classify_name
-where r.classify_name_first	!= c.classify_name and r.classify_id_first=?`
-	err = global.DmSQL["rddp"].Exec(sql, classifyId).Error
-	return
-}
-
-// Update 更新
-func (item *EnglishVideo) Update(cols []string) (err error) {
-	err = global.DmSQL["rddp"].Select(cols).Updates(item).Error
-	return
-}
-
-func GetEnglishVideoCounts(classifyId, parentId int) (count int, err error) {
-	sql := ``
-	if parentId == 0 {
-		sql = `SELECT COUNT(1) AS count FROM english_video WHERE classify_id_first=? `
-	} else {
-		sql = `SELECT COUNT(1) AS count FROM english_video WHERE classify_id_second=? `
-	}
-	err = global.DmSQL["rddp"].Raw(sql, classifyId).Scan(&count).Error
-	return
-}
-
-// GetEnglishVideoByIds 根据IDs获取英文报告列表
-func GetEnglishVideoByIds(Ids []int, fieldArr []string) (list []*EnglishVideo, err error) {
-	listLen := len(Ids)
-	if listLen == 0 {
-		return
-	}
-	fields := ` * `
-	if len(fieldArr) > 0 {
-		fields = strings.Join(fieldArr, ",")
-	}
-	sql := `SELECT ` + fields + ` FROM english_video WHERE id IN (` + utils.GetOrmInReplace(listLen) + `)`
-	err = global.DmSQL["rddp"].Raw(sql, Ids).Find(&list).Error
-	return
-}

+ 0 - 738
routers/commentsRouter.go

@@ -4894,744 +4894,6 @@ func init() {
 			Filters:          nil,
 			Filters:          nil,
 			Params:           nil})
 			Params:           nil})
 
 
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnPermissionController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnPermissionController"],
-		beego.ControllerComments{
-			Method:           "Add",
-			Router:           `/add`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnPermissionController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnPermissionController"],
-		beego.ControllerComments{
-			Method:           "Edit",
-			Router:           `/edit`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnPermissionController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnPermissionController"],
-		beego.ControllerComments{
-			Method:           "SetEnabled",
-			Router:           `/enabled/set`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnPermissionController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnPermissionController"],
-		beego.ControllerComments{
-			Method:           "List",
-			Router:           `/list`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnPermissionController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnPermissionController"],
-		beego.ControllerComments{
-			Method:           "Move",
-			Router:           `/move`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnPermissionController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnPermissionController"],
-		beego.ControllerComments{
-			Method:           "ParentList",
-			Router:           `/parent/list`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnPermissionController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnPermissionController"],
-		beego.ControllerComments{
-			Method:           "Remove",
-			Router:           `/remove`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishAuthController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishAuthController"],
-		beego.ControllerComments{
-			Method:           "BatchAdd",
-			Router:           `/auth/batch_add`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishAuthController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishAuthController"],
-		beego.ControllerComments{
-			Method:           "Del",
-			Router:           `/auth/del`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishAuthController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishAuthController"],
-		beego.ControllerComments{
-			Method:           "Detail",
-			Router:           `/auth/detail`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishAuthController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishAuthController"],
-		beego.ControllerComments{
-			Method:           "Edit",
-			Router:           `/auth/edit`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishAuthController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishAuthController"],
-		beego.ControllerComments{
-			Method:           "List",
-			Router:           `/auth/list`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishClassifyController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishClassifyController"],
-		beego.ControllerComments{
-			Method:           "PermissionEdit",
-			Router:           `/permission/edit`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyController"],
-		beego.ControllerComments{
-			Method:           "Del",
-			Router:           `/company/del`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyController"],
-		beego.ControllerComments{
-			Method:           "Detail",
-			Router:           `/company/detail`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyController"],
-		beego.ControllerComments{
-			Method:           "EditEnabled",
-			Router:           `/company/edit_enabled`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyController"],
-		beego.ControllerComments{
-			Method:           "List",
-			Router:           `/company/list`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyController"],
-		beego.ControllerComments{
-			Method:           "Save",
-			Router:           `/company/save`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyController"],
-		beego.ControllerComments{
-			Method:           "SavePermission",
-			Router:           `/company/save_permission`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyController"],
-		beego.ControllerComments{
-			Method:           "ViewList",
-			Router:           `/company/view_list`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyTodoController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyTodoController"],
-		beego.ControllerComments{
-			Method:           "Add",
-			Router:           `/company_todo/add`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyTodoController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyTodoController"],
-		beego.ControllerComments{
-			Method:           "AddPublic",
-			Router:           `/company_todo/add_public`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyTodoController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyTodoController"],
-		beego.ControllerComments{
-			Method:           "Approve",
-			Router:           `/company_todo/approve`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyTodoController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyTodoController"],
-		beego.ControllerComments{
-			Method:           "DoingList",
-			Router:           `/company_todo/doing_list`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyTodoController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyTodoController"],
-		beego.ControllerComments{
-			Method:           "Edit",
-			Router:           `/company_todo/edit`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyTodoController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyTodoController"],
-		beego.ControllerComments{
-			Method:           "EditList",
-			Router:           `/company_todo/edit_list`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyTodoController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyTodoController"],
-		beego.ControllerComments{
-			Method:           "LastPublicTodo",
-			Router:           `/company_todo/last_public_todo`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyTodoController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishCompanyTodoController"],
-		beego.ControllerComments{
-			Method:           "List",
-			Router:           `/company_todo/list`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishPolicyReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishPolicyReportController"],
-		beego.ControllerComments{
-			Method:           "Detail",
-			Router:           `/policy/detail`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishPolicyReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishPolicyReportController"],
-		beego.ControllerComments{
-			Method:           "ListReport",
-			Router:           `/policy/list`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishPolicyReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishPolicyReportController"],
-		beego.ControllerComments{
-			Method:           "PullPolicyData",
-			Router:           `/policy/pull`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishPolicyReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishPolicyReportController"],
-		beego.ControllerComments{
-			Method:           "SyncReport",
-			Router:           `/policy/sync`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "Add",
-			Router:           `/add`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "CancelApprove",
-			Router:           `/approve/cancel`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "SubmitApprove",
-			Router:           `/approve/submit`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "Author",
-			Router:           `/author`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "AddClassify",
-			Router:           `/classify/add`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "DelClassify",
-			Router:           `/classify/delete`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "EditClassify",
-			Router:           `/classify/edit`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "SetEnabled",
-			Router:           `/classify/enabled/set`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "FistListClassify",
-			Router:           `/classify/first/list`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "ListClassify",
-			Router:           `/classify/list`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "MoveClassify",
-			Router:           `/classify/move`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "ClassifyIdDetail",
-			Router:           `/classifyIdDetail`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "Delete",
-			Router:           `/delete`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "Detail",
-			Router:           `/detail`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "Edit",
-			Router:           `/edit`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "EditPolicy",
-			Router:           `/edit_policy`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "ListReport",
-			Router:           `/list`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "MarkEditStatus",
-			Router:           `/mark`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "PrePublishReport",
-			Router:           `/pre_publish`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "PublishReport",
-			Router:           `/publish`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "PublishCancleReport",
-			Router:           `/publish/cancel`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportController"],
-		beego.ControllerComments{
-			Method:           "SaveReportContent",
-			Router:           `/saveReportContent`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailCallBackController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailCallBackController"],
-		beego.ControllerComments{
-			Method:           "SendCallBack",
-			Router:           `/email/send/call_back`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"],
-		beego.ControllerComments{
-			Method:           "Del",
-			Router:           `/email/del`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"],
-		beego.ControllerComments{
-			Method:           "EditEnabled",
-			Router:           `/email/editEnabled`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"],
-		beego.ControllerComments{
-			Method:           "ImportListMatch",
-			Router:           `/email/import`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"],
-		beego.ControllerComments{
-			Method:           "List",
-			Router:           `/email/list`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"],
-		beego.ControllerComments{
-			Method:           "LogList",
-			Router:           `/email/log_list`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"],
-		beego.ControllerComments{
-			Method:           "MoveToCurrent",
-			Router:           `/email/moveToCurrent`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"],
-		beego.ControllerComments{
-			Method:           "PvList",
-			Router:           `/email/pv_list`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"],
-		beego.ControllerComments{
-			Method:           "Resend",
-			Router:           `/email/resend`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"],
-		beego.ControllerComments{
-			Method:           "Save",
-			Router:           `/email/save`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"],
-		beego.ControllerComments{
-			Method:           "Send",
-			Router:           `/email/send`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"],
-		beego.ControllerComments{
-			Method:           "UvList",
-			Router:           `/email/uv_list`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"],
-		beego.ControllerComments{
-			Method:           "VideoResend",
-			Router:           `/email/video/resend`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"],
-		beego.ControllerComments{
-			Method:           "VideoSend",
-			Router:           `/email/video/send`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishReportEmailController"],
-		beego.ControllerComments{
-			Method:           "ViewList",
-			Router:           `/email/view_list`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishVideoController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishVideoController"],
-		beego.ControllerComments{
-			Method:           "CoverDelete",
-			Router:           `/video/cover/delete`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishVideoController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishVideoController"],
-		beego.ControllerComments{
-			Method:           "CoverList",
-			Router:           `/video/cover/list`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishVideoController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishVideoController"],
-		beego.ControllerComments{
-			Method:           "CoverSave",
-			Router:           `/video/cover/save`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishVideoController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishVideoController"],
-		beego.ControllerComments{
-			Method:           "Delete",
-			Router:           `/video/delete`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishVideoController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishVideoController"],
-		beego.ControllerComments{
-			Method:           "Detail",
-			Router:           `/video/detail`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishVideoController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishVideoController"],
-		beego.ControllerComments{
-			Method:           "List",
-			Router:           `/video/list`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishVideoController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishVideoController"],
-		beego.ControllerComments{
-			Method:           "PublishVideo",
-			Router:           `/video/publish`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishVideoController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishVideoController"],
-		beego.ControllerComments{
-			Method:           "PublishCancleVideo",
-			Router:           `/video/publish/cancel`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishVideoController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/english_report:EnglishVideoController"],
-		beego.ControllerComments{
-			Method:           "Save",
-			Router:           `/video/save`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/eta_trial:EtaTrialController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/eta_trial:EtaTrialController"],
-		beego.ControllerComments{
-			Method:           "QuestionnaireCommit",
-			Router:           `/questionnaire/commit`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/eta_trial:EtaTrialController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/eta_trial:EtaTrialController"],
-		beego.ControllerComments{
-			Method:           "QuestionnairePopUp",
-			Router:           `/questionnaire/popup`,
-			AllowHTTPMethods: []string{"get"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/eta_trial:EtaTrialController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/eta_trial:EtaTrialController"],
-		beego.ControllerComments{
-			Method:           "UpdateActiveTime",
-			Router:           `/user/active`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
-	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/eta_trial:EtaTrialController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/eta_trial:EtaTrialController"],
-		beego.ControllerComments{
-			Method:           "UpdateLoginDuration",
-			Router:           `/user/login_duration`,
-			AllowHTTPMethods: []string{"post"},
-			MethodParams:     param.Make(),
-			Filters:          nil,
-			Params:           nil})
-
 	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/fe_calendar:FeCalendarMatterController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/fe_calendar:FeCalendarMatterController"],
 	beego.GlobalControllerRouter["eta_gn/eta_api/controllers/fe_calendar:FeCalendarMatterController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/fe_calendar:FeCalendarMatterController"],
 		beego.ControllerComments{
 		beego.ControllerComments{
 			Method:           "Detail",
 			Method:           "Detail",

+ 0 - 29
routers/router.go

@@ -22,8 +22,6 @@ import (
 	"eta_gn/eta_api/controllers/data_manage/range_analysis"
 	"eta_gn/eta_api/controllers/data_manage/range_analysis"
 	"eta_gn/eta_api/controllers/data_manage/supply_analysis"
 	"eta_gn/eta_api/controllers/data_manage/supply_analysis"
 	"eta_gn/eta_api/controllers/data_stat"
 	"eta_gn/eta_api/controllers/data_stat"
-	"eta_gn/eta_api/controllers/english_report"
-	"eta_gn/eta_api/controllers/eta_trial"
 	"eta_gn/eta_api/controllers/fe_calendar"
 	"eta_gn/eta_api/controllers/fe_calendar"
 	"eta_gn/eta_api/controllers/knowledge"
 	"eta_gn/eta_api/controllers/knowledge"
 	"eta_gn/eta_api/controllers/report_approve"
 	"eta_gn/eta_api/controllers/report_approve"
@@ -193,18 +191,6 @@ func init() {
 				&controllers.PdfToImgCommonController{},
 				&controllers.PdfToImgCommonController{},
 			),
 			),
 		),
 		),
-		web.NSNamespace("/english_report",
-			web.NSInclude(
-				&english_report.EnglishReportController{},
-				&english_report.EnglishPolicyReportController{},
-				&english_report.EnglishReportEmailController{},
-				&english_report.EnglishCompanyController{},
-				&english_report.EnglishCompanyTodoController{},
-				&english_report.EnglishAuthController{},
-				&english_report.EnglishReportEmailCallBackController{},
-				&english_report.EnglishVideoController{},
-			),
-		),
 		web.NSNamespace("/report_author",
 		web.NSNamespace("/report_author",
 			web.NSInclude(
 			web.NSInclude(
 				&controllers.ReportAuthorCommonController{},
 				&controllers.ReportAuthorCommonController{},
@@ -252,16 +238,6 @@ func init() {
 				&supply_analysis.VarietyController{},
 				&supply_analysis.VarietyController{},
 			),
 			),
 		),
 		),
-		web.NSNamespace("/en_permission",
-			web.NSInclude(
-				&english_report.EnPermissionController{},
-			),
-		),
-		web.NSNamespace("/english_classify",
-			web.NSInclude(
-				&english_report.EnglishClassifyController{},
-			),
-		),
 		web.NSNamespace("/business_conf",
 		web.NSNamespace("/business_conf",
 			web.NSInclude(
 			web.NSInclude(
 				&controllers.BusinessConfController{},
 				&controllers.BusinessConfController{},
@@ -283,11 +259,6 @@ func init() {
 				&controllers.OutLinkController{},
 				&controllers.OutLinkController{},
 			),
 			),
 		),
 		),
-		web.NSNamespace("/eta_trial",
-			web.NSInclude(
-				&eta_trial.EtaTrialController{},
-			),
-		),
 		web.NSNamespace("/user_login",
 		web.NSNamespace("/user_login",
 			web.NSInclude(
 			web.NSInclude(
 				&controllers.UserLoginController{},
 				&controllers.UserLoginController{},

+ 0 - 109
services/aliyun_email.go

@@ -1,13 +1,10 @@
 package services
 package services
 
 
 import (
 import (
-	"encoding/json"
 	"eta_gn/eta_api/utils"
 	"eta_gn/eta_api/utils"
 	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
 	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
 	dm "github.com/alibabacloud-go/dm-20151123/v2/client"
 	dm "github.com/alibabacloud-go/dm-20151123/v2/client"
-	util "github.com/alibabacloud-go/tea-utils/v2/service"
 	"github.com/alibabacloud-go/tea/tea"
 	"github.com/alibabacloud-go/tea/tea"
-	"time"
 )
 )
 
 
 // AliyunEmail 阿里云邮件
 // AliyunEmail 阿里云邮件
@@ -28,109 +25,3 @@ func (em *AliyunEmail) NewClient() (err error) {
 	err = _err
 	err = _err
 	return
 	return
 }
 }
-
-// AliyunEmailResult 邮件推送响应体
-type AliyunEmailResult struct {
-	Code        string `description:"错误码"`
-	StatusCode  int    `description:"状态码"`
-	Message     string `description:"响应信息"`
-	Data        string `description:"请求体"`
-	Description string `description:"描述"`
-	EnvId       string `description:"请求成功-事件ID"`
-	RequestId   string `description:"请求成功-请求ID"`
-}
-
-// AliyunEmailResultData 邮件推送响应内容
-type AliyunEmailResultData struct {
-	Code       string `description:"错误码"`
-	HostId     string `description:""`
-	Message    string `description:"响应信息"`
-	Recommend  string `description:""`
-	RequestId  string `description:"请求ID"`
-	StatusCode int    `description:"状态码"`
-}
-
-// SendEmail 邮件推送
-func (em *AliyunEmail) SendEmail(item *EnglishReportSendEmailRequest) (ok bool, result string, err error) {
-	if em.Client == nil {
-		if e := em.NewClient(); e != nil {
-			err = e
-			return
-		}
-	}
-	singleSendMailRequest := &dm.SingleSendMailRequest{}
-	singleSendMailRequest.SetAccountName(utils.AliyunEmailAccountName)
-	singleSendMailRequest.SetAddressType(1)
-	singleSendMailRequest.SetReplyToAddress(false)
-	singleSendMailRequest.SetSubject(item.Subject)
-	singleSendMailRequest.SetToAddress(item.Email)
-	singleSendMailRequest.SetHtmlBody(item.HtmlBody)
-	singleSendMailRequest.SetFromAlias(item.FromAlias)
-
-	runtime := &util.RuntimeOptions{}
-	tryErr := func() error {
-		res, e := em.Client.SingleSendMailWithOptions(singleSendMailRequest, runtime)
-		if e != nil {
-			return e
-		}
-		// 请求成功
-		if tea.Int32Value(res.StatusCode) == 200 {
-			ok = true
-		}
-		resByte, e := json.Marshal(res.Body)
-		if e != nil {
-			return e
-		}
-		result = string(resByte)
-		return nil
-	}()
-
-	if tryErr != nil {
-		var e = &tea.SDKError{}
-		if t, ok := tryErr.(*tea.SDKError); ok {
-			e = t
-		} else {
-			e.Message = tea.String(tryErr.Error())
-		}
-		err = e
-		errByte, _ := json.Marshal(err)
-		result = string(errByte)
-	}
-	return
-}
-
-// BatchSendEmail 批量推送邮件
-func (em *AliyunEmail) BatchSendEmail(list []*EnglishReportSendEmailRequest) (results []*EnglishReportSendEmailResult, err error) {
-	results = make([]*EnglishReportSendEmailResult, 0)
-	if len(list) == 0 {
-		return
-	}
-	if e := em.NewClient(); e != nil {
-		err = e
-		return
-	}
-
-	// sendSingleMail接口有QPS100的限制, 保险起见每秒只请求50次接口
-	secondMax := 50
-	c := 0
-	for i := range list {
-		if c >= secondMax {
-			time.Sleep(time.Second)
-			c = 0
-		}
-		c += 1
-
-		dataByte, _ := json.Marshal(list[i])
-		ok, result, _ := em.SendEmail(list[i])
-		results = append(results, &EnglishReportSendEmailResult{
-			ReportId:   list[i].ReportId,
-			EmailId:    list[i].EmailId,
-			Email:      list[i].Email,
-			Ok:         ok,
-			SendData:   string(dataByte),
-			ResultData: result,
-			Source:     1,
-		})
-	}
-	return
-}

+ 0 - 73
services/elastic.go

@@ -5,7 +5,6 @@ import (
 	"eta_gn/eta_api/models"
 	"eta_gn/eta_api/models"
 	saModel "eta_gn/eta_api/models/semantic_analysis"
 	saModel "eta_gn/eta_api/models/semantic_analysis"
 	"eta_gn/eta_api/models/smart_report"
 	"eta_gn/eta_api/models/smart_report"
-	"eta_gn/eta_api/services/alarm_msg"
 	"eta_gn/eta_api/utils"
 	"eta_gn/eta_api/utils"
 	"fmt"
 	"fmt"
 	"github.com/olivere/elastic/v7"
 	"github.com/olivere/elastic/v7"
@@ -127,78 +126,6 @@ func EsAddOrEditReport(indexName, docId string, item *models.ElasticReportDetail
 	return
 	return
 }
 }
 
 
-// EsAddOrEditEnglishReport 新增编辑es英文报告
-func EsAddOrEditEnglishReport(indexName, docId string, item *models.ElasticEnglishReportDetail) (err error) {
-	defer func() {
-		if err != nil {
-			fmt.Println("EsAddOrEditEnglishReport Err:", err.Error())
-			go alarm_msg.SendAlarmMsg("新增编辑es英文报告 EsAddOrEditEnglishReport,Err:"+err.Error(), 3)
-		}
-	}()
-	client, err := NewClient()
-	if err != nil {
-		return
-	}
-	// docId为报告ID
-	searchById, err := client.Get().Index(indexName).Id(docId).Do(context.Background())
-	if err != nil {
-		if strings.Contains(err.Error(), "404") {
-			err = nil
-		} else {
-			fmt.Println("Get Err" + err.Error())
-			return
-		}
-	}
-	if searchById != nil && searchById.Found {
-		resp, e := client.Update().Index(indexName).Id(docId).Doc(map[string]interface{}{
-			"Id":                 item.Id,
-			"ReportId":           item.ReportId,
-			"VideoId":            item.VideoId,
-			"Title":              item.Title,
-			"Abstract":           item.Abstract,
-			"BodyContent":        item.BodyContent,
-			"PublishTime":        item.PublishTime,
-			"PublishState":       item.PublishState,
-			"Author":             item.Author,
-			"ClassifyIdFirst":    item.ClassifyIdFirst,
-			"ClassifyNameFirst":  item.ClassifyNameFirst,
-			"ClassifyIdSecond":   item.ClassifyIdSecond,
-			"ClassifyNameSecond": item.ClassifyNameSecond,
-			"CreateTime":         item.CreateTime,
-			"Overview":           item.Overview,
-			"ReportCode":         item.ReportCode,
-			"Frequency":          item.Frequency,
-			"StageStr":           item.StageStr,
-			"ContentSub":         item.ContentSub,
-		}).Do(context.Background())
-		if e != nil {
-			err = e
-			return
-		}
-		//fmt.Println(resp.Status, resp.Result)
-		if resp.Status == 0 {
-			fmt.Println("修改成功" + docId)
-			err = nil
-		} else {
-			fmt.Println("EditData", resp.Status, resp.Result)
-		}
-	} else {
-		resp, e := client.Index().Index(indexName).Id(docId).BodyJson(item).Do(context.Background())
-		if e != nil {
-			err = e
-			fmt.Println("新增失败:", err.Error())
-			return
-		}
-		if resp.Status == 0 && resp.Result == "created" {
-			fmt.Println("新增成功" + docId)
-			return
-		} else {
-			fmt.Println("AddData", resp.Status, resp.Result)
-		}
-	}
-	return
-}
-
 // EsAddOrEditSaDoc 新增编辑语义分析文档
 // EsAddOrEditSaDoc 新增编辑语义分析文档
 func EsAddOrEditSaDoc(indexName, docId string, item *saModel.ElasticSaDoc) (err error) {
 func EsAddOrEditSaDoc(indexName, docId string, item *saModel.ElasticSaDoc) (err error) {
 	defer func() {
 	defer func() {

+ 0 - 169
services/english_classify.go

@@ -1,169 +0,0 @@
-package services
-
-import (
-	"eta_gn/eta_api/models"
-	"eta_gn/eta_api/utils"
-	"fmt"
-	"time"
-)
-
-// MoveEnglishReportClassify 移动分类
-func MoveEnglishReportClassify(req models.EnglishClassifyMoveReq) (err error, errMsg string) {
-	classifyId := req.ClassifyId
-	prevClassifyId := req.PrevClassifyId
-	nextClassifyId := req.NextClassifyId
-
-	//如果有传入 上一个兄弟节点分类id
-	var (
-		classifyInfo *models.EnglishClassify
-		prevClassify *models.EnglishClassify
-		nextClassify *models.EnglishClassify
-
-		prevSort int
-		nextSort int
-	)
-
-	// 移动对象为分类, 判断权限
-	classifyInfo, err = models.GetEnglishReportClassifyById(classifyId)
-	if err != nil {
-		if utils.IsErrNoRow(err) {
-			errMsg = "分类不存在, 请刷新页面"
-			err = fmt.Errorf("获取分类信息失败,Err:" + err.Error())
-			return
-		}
-		errMsg = "移动失败"
-		err = fmt.Errorf("获取分类信息失败,Err:" + err.Error())
-		return
-	} else if classifyInfo.Id == 0 {
-		errMsg = "分类不存在, 请刷新页面"
-		err = fmt.Errorf("获取分类信息失败,Err:" + err.Error())
-		return
-	}
-
-	parentClassifyId := classifyInfo.ParentId
-	if prevClassifyId > 0 {
-		prevClassify, err = models.GetEnglishReportClassifyById(prevClassifyId)
-		if err != nil {
-			if utils.IsErrNoRow(err) {
-				errMsg = "上一个分类不存在, 请刷新页面"
-				err = fmt.Errorf("获取分类信息失败,Err:" + err.Error())
-				return
-			}
-			errMsg = "移动失败"
-			err = fmt.Errorf("获取上一个兄弟节点分类信息失败,Err:" + err.Error())
-			return
-		}
-		prevSort = prevClassify.Sort
-	}
-
-	if nextClassifyId > 0 {
-		//下一个兄弟节点
-		nextClassify, err = models.GetEnglishReportClassifyById(nextClassifyId)
-		if err != nil {
-			if utils.IsErrNoRow(err) {
-				errMsg = "下一个分类不存在, 请刷新页面"
-				err = fmt.Errorf("获取分类信息失败,Err:" + err.Error())
-				return
-			}
-			errMsg = "移动失败"
-			err = fmt.Errorf("获取下一个兄弟节点分类信息失败,Err:" + err.Error())
-			return
-		}
-		nextSort = nextClassify.Sort
-	}
-
-	err, errMsg = moveEnglishReportClassify(classifyInfo, prevClassify, nextClassify, parentClassifyId, prevSort, nextSort)
-	return
-}
-
-// moveEnglishReportClassify 移动分类
-func moveEnglishReportClassify(classifyInfo, prevClassify, nextClassify *models.EnglishClassify, parentId, prevSort, nextSort int) (err error, errMsg string) {
-	ob := new(models.EnglishClassify)
-	updateCol := make([]string, 0)
-
-	//判断上级id是否一致,如果不一致的话,那么需要移动该分类层级
-	if classifyInfo.ParentId != parentId {
-		errMsg = "移动失败"
-		err = fmt.Errorf("不支持目录层级变更")
-		return
-	}
-
-	if prevSort > 0 {
-		//如果是移动在两个兄弟节点之间
-		if nextSort > 0 {
-			//下一个兄弟节点
-			//如果上一个兄弟与下一个兄弟的排序权重是一致的,那么需要将下一个兄弟(以及下个兄弟的同样排序权重)的排序权重+2,自己变成上一个兄弟的排序权重+1
-			if prevSort == nextSort || prevSort == classifyInfo.Sort {
-				//变更兄弟节点的排序
-				updateSortStr := `sort + 2`
-
-				//变更分类
-				if prevClassify != nil {
-					_ = models.UpdateEnglishClassifySortByParentId(parentId, prevClassify.Id, prevClassify.Sort, updateSortStr)
-				} else {
-					_ = models.UpdateEnglishClassifySortByParentId(parentId, 0, prevSort, updateSortStr)
-				}
-
-			} else {
-				//如果下一个兄弟的排序权重正好是上个兄弟节点的下一层,那么需要再加一层了
-				if nextSort-prevSort == 1 {
-					//变更兄弟节点的排序
-					updateSortStr := `sort + 1`
-
-					//变更分类
-					if prevClassify != nil {
-						_ = models.UpdateEnglishClassifySortByParentId(parentId, prevClassify.Id, prevSort, updateSortStr)
-					} else {
-						_ = models.UpdateEnglishClassifySortByParentId(parentId, 0, prevSort, updateSortStr)
-					}
-
-				}
-			}
-		}
-
-		classifyInfo.Sort = prevSort + 1
-		classifyInfo.ModifyTime = time.Now()
-		updateCol = append(updateCol, "Sort", "ModifyTime")
-	} else if prevClassify == nil && nextClassify == nil && parentId > 0 {
-		//处理只拖动到目录里,默认放到目录底部的情况
-		var maxSort int
-		maxSort, err = ob.GetMaxSortByParentId(parentId)
-		if err != nil {
-			errMsg = "移动失败"
-			err = fmt.Errorf("查询组内排序信息失败,Err:" + err.Error())
-			return
-		}
-		classifyInfo.Sort = maxSort + 1 //那就是排在组内最后一位
-		classifyInfo.ModifyTime = time.Now()
-		updateCol = append(updateCol, "Sort", "ModifyTime")
-	} else {
-		// 拖动到父级分类的第一位
-		firstPermission, tmpErr := ob.GetFirstClassifyByParentId(parentId)
-		if tmpErr != nil && !utils.IsErrNoRow(tmpErr) {
-			errMsg = "移动失败"
-			err = fmt.Errorf("获取获取当前父级分类下的排序第一条的分类信息失败,Err:" + tmpErr.Error())
-			return
-		}
-
-		//如果该分类下存在其他分类,且第一个其他分类的排序等于0,那么需要调整排序
-		if firstPermission != nil && firstPermission.Id != 0 && firstPermission.Sort == 0 {
-			updateSortStr := ` sort + 1 `
-			_ = models.UpdateEnglishClassifySortByParentId(parentId, firstPermission.Id-1, 0, updateSortStr)
-		}
-
-		classifyInfo.Sort = 0 //那就是排在第一位
-		classifyInfo.ModifyTime = time.Now()
-		updateCol = append(updateCol, "Sort", "ModifyTime")
-	}
-
-	//更新
-	if len(updateCol) > 0 {
-		err = classifyInfo.UpdateEnglishClassify(updateCol)
-		if err != nil {
-			errMsg = "移动失败"
-			err = fmt.Errorf("修改失败,Err:" + err.Error())
-			return
-		}
-	}
-	return
-}

+ 0 - 119
services/english_company_todo.go

@@ -1,119 +0,0 @@
-package services
-
-import (
-	"errors"
-	"eta_gn/eta_api/models"
-	"eta_gn/eta_api/models/system"
-	"eta_gn/eta_api/utils"
-	"strconv"
-	"time"
-)
-
-const (
-	TodoButtonColorDoing     = "red"
-	TodoButtonColorDefault   = "gray"
-	TodoButtonColorCompleted = "green"
-)
-
-// GetEnglishCompanyTodoAuthRole 获取可操作英文客户TODO的角色列表
-func GetEnglishCompanyTodoAuthRole() []string {
-	return []string{
-		utils.ROLE_TYPE_CODE_ADMIN,           // 管理员
-		utils.ROLE_TYPE_CODE_FICC_ADMIN,      // FICC管理员
-		utils.ROLE_TYPE_CODE_FICC_DEPARTMENT, // FICC部门经理
-		utils.ROLE_TYPE_CODE_FICC_GROUP,      // FICC销售主管
-		utils.ROLE_TYPE_CODE_FICC_TEAM,       // FICC销售组长
-		utils.ROLE_TYPE_CODE_FICC_SELLER,     // FICC销售
-		utils.ROLE_TYPE_CODE_FICC_RESEARCHR,  // ficc研究员
-	}
-}
-
-// CheckEnglishCompanyTodoAuth 校验当前用户对客户的操作(新增/编辑)权限
-func CheckEnglishCompanyTodoAuth(sysUser *system.Admin, sellerInfo *system.Admin) (ok bool, errMsg string, err error) {
-	// 是否有权限添加/编辑任务
-	roleCode := sysUser.RoleTypeCode
-	authList := GetEnglishCompanyTodoAuthRole()
-	if !utils.InArrayByStr(authList, roleCode) {
-		errMsg = "账号角色异常,不允许操作"
-		return
-	}
-
-	// 销售仅能操作自己的客户
-	if roleCode == utils.ROLE_TYPE_CODE_FICC_SELLER && sellerInfo.AdminId != sysUser.AdminId {
-		errMsg = "该客户不是当前账号所属,不允许操作"
-		return
-	}
-
-	// 判断销售主管、组长权限, 其余管理员角色不做限制
-	switch roleCode {
-	case utils.ROLE_TYPE_CODE_FICC_GROUP:
-		same, e := CheckAdminIsSameBigGroup(sysUser, sellerInfo)
-		if e != nil {
-			errMsg = "保存失败"
-			err = errors.New("判断主管与客户所属销售是否属于同一大组失败, Err: " + e.Error())
-			return
-		}
-		if !same {
-			errMsg = "该客户销售不是当前账号所属组员,不允许操作"
-			return
-		}
-	case utils.ROLE_TYPE_CODE_FICC_TEAM:
-		if sellerInfo.GroupId != sysUser.GroupId {
-			errMsg = "该客户销售不是当前账号所属组员,不允许操作"
-			return
-		}
-	}
-	ok = true
-	return
-}
-
-// GetEnglishCompanyListTodoMap 获取英文客户列表TODO相关信息
-func GetEnglishCompanyListTodoMap(companyList []*models.EnglishCompanyListItem, sysUser *system.Admin) (todoMap map[int]*models.EnglishCompanyListTodo) {
-	todoMap = make(map[int]*models.EnglishCompanyListTodo, 0)
-	if len(companyList) == 0 || sysUser == nil {
-		return
-	}
-	nowTime := time.Now().Local()
-	todayTime := time.Date(nowTime.Year(), nowTime.Month(), nowTime.Day(), 0, 0, 0, 0, time.Local)
-	for i := range companyList {
-		c := companyList[i]
-		v := new(models.EnglishCompanyListTodo)
-		v.TodoButtonColor = TodoButtonColorDefault
-		v.HiddenConfirm = true // 默认隐藏完成按钮
-		if c.TodoStatusStr != models.EnglishCompanyTodoStatusNull {
-			// 已完成
-			if c.TodoStatusStr == models.EnglishCompanyTodoStatusCompleted {
-				v.TodoButtonColor = TodoButtonColorCompleted
-			}
-			// 进行中
-			if c.TodoStatusStr == models.EnglishCompanyTodoStatusDoing {
-				v.TodoStatus = true
-				v.TodoButtonColor = TodoButtonColorDoing
-				//v.TodoEndTime = td.EndTime
-				v.TodoEndTimeStr = c.TodoEndTime.Format(utils.FormatDate)
-				// 截止目前还剩余的天数
-				todoEndTime := time.Date(c.TodoEndTime.Year(), c.TodoEndTime.Month(), c.TodoEndTime.Day(), 0, 0, 0, 0, time.Local)
-				deadline := int(todoEndTime.Sub(todayTime).Hours() / 24)
-				v.Deadline = strconv.Itoa(deadline)
-			}
-			// 根据当前角色判断按钮权限
-			switch sysUser.RoleTypeCode {
-			case utils.ROLE_TYPE_CODE_ADMIN, utils.ROLE_TYPE_CODE_FICC_ADMIN, utils.ROLE_TYPE_CODE_FICC_DEPARTMENT, utils.ROLE_TYPE_CODE_FICC_GROUP, utils.ROLE_TYPE_CODE_FICC_RESEARCHR:
-				v.HiddenConfirm = false
-				if c.TodoStatusStr == models.EnglishCompanyTodoStatusDoing {
-					v.CanConfirm = true
-				}
-			case utils.ROLE_TYPE_CODE_FICC_TEAM:
-				// 组长不是自己的客户则展示完成按钮
-				if c.SellerId != sysUser.AdminId {
-					v.HiddenConfirm = false
-				}
-				if c.TodoStatusStr == models.EnglishCompanyTodoStatusDoing {
-					v.CanConfirm = true
-				}
-			}
-		}
-		todoMap[c.CompanyId] = v
-	}
-	return
-}

+ 0 - 170
services/english_permission.go

@@ -1,170 +0,0 @@
-package services
-
-import (
-	"eta_gn/eta_api/models"
-	"eta_gn/eta_api/utils"
-	"fmt"
-	"time"
-)
-
-// MoveEnPermission 移动品种
-func MoveEnPermission(req models.EnPermissionMoveReq) (err error, errMsg string) {
-	ob := new(models.EnPermission)
-	permissionId := req.PermissionId
-	prevPermissionId := req.PrevPermissionId
-	nextPermissionId := req.NextPermissionId
-
-	//如果有传入 上一个兄弟节点分类id
-	var (
-		permissionInfo *models.EnPermission
-		prevPermission *models.EnPermission
-		nextPermission *models.EnPermission
-
-		prevSort int
-		nextSort int
-	)
-
-	// 移动对象为分类, 判断权限
-	permissionInfo, err = ob.GetItemById(permissionId)
-	if err != nil {
-		if utils.IsErrNoRow(err) {
-			errMsg = "品种不存在, 请刷新页面"
-			err = fmt.Errorf("获取品种信息失败,Err:" + err.Error())
-			return
-		}
-		errMsg = "移动失败"
-		err = fmt.Errorf("获取分类信息失败,Err:" + err.Error())
-		return
-	} else if permissionInfo.EnPermissionId == 0 {
-		errMsg = "品种不存在, 请刷新页面"
-		err = fmt.Errorf("获取品种信息失败,Err:" + err.Error())
-		return
-	}
-
-	parentPermissionId := permissionInfo.ParentId
-	if prevPermissionId > 0 {
-		prevPermission, err = ob.GetItemById(prevPermissionId)
-		if err != nil {
-			if utils.IsErrNoRow(err) {
-				errMsg = "上一个品种不存在, 请刷新页面"
-				err = fmt.Errorf("获取品种信息失败,Err:" + err.Error())
-				return
-			}
-			errMsg = "移动失败"
-			err = fmt.Errorf("获取上一个兄弟节点分类信息失败,Err:" + err.Error())
-			return
-		}
-		prevSort = prevPermission.Sort
-	}
-
-	if nextPermissionId > 0 {
-		//下一个兄弟节点
-		nextPermission, err = ob.GetItemById(nextPermissionId)
-		if err != nil {
-			if utils.IsErrNoRow(err) {
-				errMsg = "下一个品种不存在, 请刷新页面"
-				err = fmt.Errorf("获取品种信息失败,Err:" + err.Error())
-				return
-			}
-			errMsg = "移动失败"
-			err = fmt.Errorf("获取下一个兄弟节点分类信息失败,Err:" + err.Error())
-			return
-		}
-		nextSort = nextPermission.Sort
-	}
-
-	err, errMsg = moveEnPermission(permissionInfo, prevPermission, nextPermission, parentPermissionId, prevSort, nextSort)
-	return
-}
-
-// moveEnPermission 移动品种
-func moveEnPermission(permissionInfo, prevPermission, nextPermission *models.EnPermission, parentId, prevSort, nextSort int) (err error, errMsg string) {
-	ob := new(models.EnPermission)
-	updateCol := make([]string, 0)
-
-	//判断上级id是否一致,如果不一致的话,那么需要移动该分类层级
-	if permissionInfo.ParentId != parentId {
-		errMsg = "移动失败"
-		err = fmt.Errorf("不支持目录层级变更")
-		return
-	}
-
-	if prevSort > 0 {
-		//如果是移动在两个兄弟节点之间
-		if nextSort > 0 {
-			//下一个兄弟节点
-			//如果上一个兄弟与下一个兄弟的排序权重是一致的,那么需要将下一个兄弟(以及下个兄弟的同样排序权重)的排序权重+2,自己变成上一个兄弟的排序权重+1
-			if prevSort == nextSort || prevSort == permissionInfo.Sort {
-				//变更兄弟节点的排序
-				updateSortStr := `sort + 2`
-
-				//变更分类
-				if prevPermission != nil {
-					_ = models.UpdateEnPermissionSortByParentId(parentId, prevPermission.EnPermissionId, prevPermission.Sort, updateSortStr)
-				} else {
-					_ = models.UpdateEnPermissionSortByParentId(parentId, 0, prevSort, updateSortStr)
-				}
-
-			} else {
-				//如果下一个兄弟的排序权重正好是上个兄弟节点的下一层,那么需要再加一层了
-				if nextSort-prevSort == 1 {
-					//变更兄弟节点的排序
-					updateSortStr := `sort + 1`
-
-					//变更分类
-					if prevPermission != nil {
-						_ = models.UpdateEnPermissionSortByParentId(parentId, prevPermission.EnPermissionId, prevSort, updateSortStr)
-					} else {
-						_ = models.UpdateEnPermissionSortByParentId(parentId, 0, prevSort, updateSortStr)
-					}
-
-				}
-			}
-		}
-
-		permissionInfo.Sort = prevSort + 1
-		permissionInfo.ModifyTime = time.Now()
-		updateCol = append(updateCol, "Sort", "ModifyTime")
-	} else if prevPermission == nil && nextPermission == nil && parentId > 0 {
-		//处理只拖动到目录里,默认放到目录底部的情况
-		var maxSort int
-		maxSort, err = ob.GetMaxSortByParentId(parentId)
-		if err != nil {
-			errMsg = "移动失败"
-			err = fmt.Errorf("查询组内排序信息失败,Err:" + err.Error())
-			return
-		}
-		permissionInfo.Sort = maxSort + 1 //那就是排在组内最后一位
-		permissionInfo.ModifyTime = time.Now()
-		updateCol = append(updateCol, "Sort", "ModifyTime")
-	} else {
-		// 拖动到父级分类的第一位
-		firstPermission, tmpErr := ob.GetFirstEnPermissionByParentId(parentId)
-		if tmpErr != nil && !utils.IsErrNoRow(tmpErr) {
-			errMsg = "移动失败"
-			err = fmt.Errorf("获取获取当前父级分类下的排序第一条的分类信息失败,Err:" + tmpErr.Error())
-			return
-		}
-
-		//如果该分类下存在其他分类,且第一个其他分类的排序等于0,那么需要调整排序
-		if firstPermission != nil && firstPermission.EnPermissionId != 0 && firstPermission.Sort == 0 {
-			updateSortStr := ` sort + 1 `
-			_ = models.UpdateEnPermissionSortByParentId(parentId, firstPermission.EnPermissionId-1, 0, updateSortStr)
-		}
-
-		permissionInfo.Sort = 0 //那就是排在第一位
-		permissionInfo.ModifyTime = time.Now()
-		updateCol = append(updateCol, "Sort", "ModifyTime")
-	}
-
-	//更新
-	if len(updateCol) > 0 {
-		err = permissionInfo.Update(updateCol)
-		if err != nil {
-			errMsg = "移动失败"
-			err = fmt.Errorf("修改失败,Err:" + err.Error())
-			return
-		}
-	}
-	return
-}

+ 0 - 239
services/english_policy_report.go

@@ -1,239 +0,0 @@
-package services
-
-import (
-	"encoding/json"
-	"eta_gn/eta_api/models"
-	"eta_gn/eta_api/services/alarm_msg"
-	"eta_gn/eta_api/utils"
-	"fmt"
-	"github.com/rdlucklib/rdluck_tools/http"
-	"time"
-)
-
-// PullPolicyReport 策略报告拉取
-func PullPolicyReport() (ret models.PullEnglishPolicyDataResp, err error, msg string) {
-	//调用列表接口,批量插入数据
-	originData, err := getOriginPolicyReportList()
-	if err != nil {
-		msg = "调用英文策略报告列表接口失败"
-		return
-	}
-	condition := ""
-	var pars []interface{}
-	startDate := time.Now().AddDate(0, -1, 0).Format(utils.FormatDate)
-	condition += ` AND publish_time >= ? `
-	pars = append(pars, startDate)
-
-	//获取已插入的报告ID,避免重复插入
-	existData, err := models.GetEnglishPolicyReportByCondition(condition, pars)
-	if err != nil {
-		msg = "查询已存在的英文策略报告列表接口失败"
-		return
-	}
-	existIdsMap := make(map[int]struct{}, 0)
-	for _, v := range existData {
-		existIdsMap[v.SourceReportId] = struct{}{}
-	}
-	//组装数据,插入到policy_report表中
-	addItems := make([]*models.EnglishPolicyReport, 0)
-	addIds := make([]int, 0)
-	for _, v := range originData {
-		if _, ok := existIdsMap[v.Id]; ok {
-			continue
-		}
-		addIds = append(addIds, v.Id)
-		tmp := &models.EnglishPolicyReport{
-			ClassifyIdFirst:    v.Industry.Id,
-			ClassifyNameFirst:  v.Industry.Description,
-			ClassifyIdSecond:   v.FieldId,
-			ClassifyNameSecond: v.Field.Description,
-			Title:              v.TitleEn,
-			Abstract:           v.Content.Abstract,
-			Author:             v.Author.Name,
-			Frequency:          v.Frequency,
-			CreateTime:         time.Now(),
-			ModifyTime:         time.Now(),
-			State:              1,
-			PublishStatus:      v.PublishStatus,
-			PublishTime:        v.PublishDate,
-			KeyTakeaways:       v.Content.Annotation,
-			AuthorMobile:       v.Author.PhoneNumber,
-			SourceReportId:     v.Id,
-			ReportCoverUrl:     v.Cover,
-		}
-		addItems = append(addItems, tmp)
-	}
-	if len(addItems) > 0 {
-		err = models.AddEnglishPolicyReportMulti(addItems)
-		if err != nil {
-			msg = "批量新增英文策略报告信息失败"
-			return
-		}
-	}
-	//根据原始ID调用详情接口,更新数据
-	go setPolicyReportContentAndSync(addIds)
-	ret = models.PullEnglishPolicyDataResp{
-		Num: len(addItems),
-	}
-	return
-}
-
-type EnPolicyReportDataListResp struct {
-	Code       int                          `json:"code"`
-	Msg        string                       `json:"msg"`
-	Data       []EnPolicyReportDataListItem `json:"data"`
-	Pagination EnPolicyReportDataPage       `json:"pagination"`
-}
-
-type EnPolicyReportDataDetailResp struct {
-	Code int                        `json:"code"`
-	Msg  string                     `json:"msg"`
-	Data EnPolicyReportDataListItem `json:"data"`
-}
-
-type EnPolicyReportDataPage struct {
-	Total     int `json:"total"`
-	Page      int `json:"page"`
-	PageSize  int `json:"page_size"`
-	PageTotal int `json:"page_total"`
-}
-
-type EnPolicyReportDataListItem struct {
-	Id                int                                `json:"id"`
-	Title             string                             `json:"title"`
-	TitleEn           string                             `json:"title_en"`
-	Frequency         string                             `json:"frequency"`
-	CreateDate        time.Time                          `json:"create_date"`
-	UpdateDate        time.Time                          `json:"update_date"`
-	PublishDate       time.Time                          `json:"publish_date"`
-	PublishStatus     int                                `json:"publish_status"`
-	VerifyStatus      int                                `json:"verify_status"`
-	PublishArea       string                             `json:"publish_area"`
-	AccessLevel       int                                `json:"access_level"`
-	IsActive          bool                               `json:"is_active"`
-	AuthorPhoneNumber string                             `json:"author_phone_number"`
-	Cover             string                             `json:"cover"`
-	IndustryId        int                                `json:"industry_id"`
-	ContentId         int                                `json:"content_id"`
-	TypeId            int                                `json:"type_id"`
-	FieldId           int                                `json:"field_id"`
-	SeriesId          int                                `json:"series_id"`
-	File              interface{}                        `json:"file"`
-	Stock             []string                           `json:"stock"`
-	IsFocused         int                                `json:"is_focused"`
-	Content           EnPolicyReportDataListItemContent  `json:"content"`
-	Industry          EnPolicyReportDataListItemInfo     `json:"industry"`
-	Type              EnPolicyReportDataListItemInfo     `json:"type"`
-	Field             EnPolicyReportDataListItemInfoMore `json:"field"`
-	Series            EnPolicyReportDataListItemInfoMore `json:"series"`
-	Author            EnPolicyReportDataListItemAuthor   `json:"author"`
-}
-
-type EnPolicyReportDataListItemContent struct {
-	Id         int    `json:"id"`
-	Body       string `json:"body"`
-	Abstract   string `json:"abstract"`
-	Annotation string `json:"annotation"`
-}
-
-type EnPolicyReportDataListItemInfo struct {
-	Id          int    `json:"id"`
-	Name        string `json:"name"`
-	Description string `json:"description"`
-}
-
-type EnPolicyReportDataListItemInfoMore struct {
-	Id          int    `json:"id"`
-	Name        string `json:"name"`
-	Description string `json:"description"`
-	IndustryId  int    `json:"industry_id"`
-}
-
-type EnPolicyReportDataListItemAuthor struct {
-	PhoneNumber string `json:"phone_number"`
-	Name        string `json:"name"`
-}
-
-func getOriginPolicyReportList() (list []EnPolicyReportDataListItem, err error) {
-	//组装请求字段
-	typeId := 9
-	//field_id=1 表示 Daily Check-in
-	fieldId := 1
-	take := 1000
-	skip := 0
-	publishStatus := "1,2"
-	mode := "all"
-	startDt := ""
-	// 获取当天的报告
-	startDt = time.Now().AddDate(0, 0, -7).Format(utils.FormatDate)
-	//设置接口地址
-	//处理返回值
-	url := utils.EnPolicyReportUrl + `articles/index?type_id=%d&field_id=%d&take=%d&skip=%d&publish_status=%s&mode=%s&start_dt=%s`
-	url = fmt.Sprintf(url, typeId, fieldId, take, skip, publishStatus, mode, startDt)
-	utils.FileLog.Info("url:%s", url)
-	body, err := http.Get(url)
-	fmt.Println("getOriginPolicyReportList body:")
-	fmt.Println(string(body))
-	item := new(EnPolicyReportDataListResp)
-	err = json.Unmarshal(body, &item)
-	if err != nil {
-		return
-	}
-	if item.Code != 0 {
-		err = fmt.Errorf("getOriginPolicyReportDetail ErrCode: %d, ErrMsg: %s", item.Code, item.Msg)
-		return
-	}
-
-	list = item.Data
-	return
-}
-
-func getOriginPolicyReportDetail(id int) (detail EnPolicyReportDataListItem, err error) {
-	//设置接口地址
-	//处理返回值
-	url := utils.EnPolicyReportUrl + `articles/en/%d`
-	url = fmt.Sprintf(url, id)
-	utils.FileLog.Info("url:%s", url)
-	body, err := http.Get(url)
-	fmt.Println("getOriginPolicyReportDetail body:")
-	fmt.Println(string(body))
-	item := new(EnPolicyReportDataDetailResp)
-	err = json.Unmarshal(body, &item)
-	if err != nil {
-		return
-	}
-	if item.Code != 0 {
-		err = fmt.Errorf("getOriginPolicyReportDetail ErrCode: %d, ErrMsg: %s", item.Code, item.Msg)
-		return
-	}
-
-	detail = item.Data
-	return
-}
-
-func setPolicyReportContentAndSync(addIds []int) (err error, msg string) {
-	defer func() {
-		if err != nil {
-			go alarm_msg.SendAlarmMsg("设置英文策略报告内容失败,Err:"+err.Error()+";msg:"+msg, 3)
-			utils.FileLog.Info(fmt.Sprintf("设置英文策略报告内容失败 setPolicyReportContentAndSync,Err:%s,%s", err.Error(), msg))
-		}
-	}()
-	if len(addIds) > 0 {
-		for _, v := range addIds {
-			originDetail, e := getOriginPolicyReportDetail(v)
-			if e != nil {
-				msg = "拉取英文策略报告详情失败"
-				err = e
-				return
-			}
-			err = models.SetEnglishPolicyReportContentBySourceReportId(v, originDetail.Content.Body)
-			if err != nil {
-				msg = "更新英文策略报告内容失败"
-				return
-			}
-		}
-	}
-	//同步到英文研报
-	err, msg = MultiEnglishPolicyReportSync()
-	return
-}

+ 0 - 990
services/english_report.go

@@ -1,990 +0,0 @@
-package services
-
-import (
-	"encoding/json"
-	"errors"
-	"eta_gn/eta_api/models"
-	"eta_gn/eta_api/models/system"
-	"eta_gn/eta_api/services/alarm_msg"
-	"eta_gn/eta_api/utils"
-	"fmt"
-	"html"
-	"strconv"
-	"strings"
-	"time"
-)
-
-// CreateNewEnglishReport 生成英文研报
-func CreateNewEnglishReport(req models.AddEnglishReportReq, adminInfo *system.Admin) (newReportId int64, reportCode string, err error) {
-	var contentSub string
-	if req.Content != "" {
-		content, e := FilterReportContentBr(req.Content)
-		if e != nil {
-			err = errors.New("内容去除前后空格失败, Err: " + e.Error())
-			return
-		}
-		req.Content = content
-
-		contentSub, e = GetReportContentSub(req.Content)
-		if e != nil {
-			go alarm_msg.SendAlarmMsg("ContentSub 失败,Err:"+e.Error(), 3)
-			err = errors.New("获取报告内容前几段失败, Err: " + e.Error())
-			return
-		}
-	}
-	maxStage, e := models.GetEnglishReportStage(req.ClassifyIdFirst, req.ClassifyIdSecond)
-	if e != nil {
-		err = errors.New("期数获取失败, Err: " + e.Error())
-		return
-	}
-
-	item := new(models.EnglishReport)
-	item.AddType = req.AddType
-	item.ClassifyIdFirst = req.ClassifyIdFirst
-	item.ClassifyNameFirst = req.ClassifyNameFirst
-	item.ClassifyIdSecond = req.ClassifyIdSecond
-	item.ClassifyNameSecond = req.ClassifyNameSecond
-	item.Title = req.Title
-	item.Abstract = req.Abstract
-	item.Author = req.Author
-	item.Frequency = req.Frequency
-	item.State = req.State
-	item.Content = html.EscapeString(req.Content)
-	item.Stage = maxStage + 1
-	item.ContentSub = html.EscapeString(contentSub)
-	item.CreateTime = req.CreateTime
-	item.ModifyTime = time.Now()
-	item.AdminId = adminInfo.AdminId
-	item.AdminRealName = adminInfo.RealName
-	newReportId, e = models.AddEnglishReport(item)
-	if e != nil {
-		err = errors.New("新增报告失败, Err: " + e.Error())
-		return
-	}
-	reportCode = utils.MD5(strconv.Itoa(int(newReportId)))
-	//修改唯一编码
-	{
-		go models.ModifyEnglishReportCode(newReportId, reportCode)
-	}
-	return
-}
-
-// IEnglishEmailSend 英文研报-邮件推送接口
-type IEnglishEmailSend interface {
-	NewClient() (err error)
-	SendEmail(item *EnglishReportSendEmailRequest) (ok bool, result string, err error)
-	BatchSendEmail(list []*EnglishReportSendEmailRequest) (results []*EnglishReportSendEmailResult, err error)
-}
-
-// EnglishReportSendEmailRequest 英文研报-推送邮件请求体
-type EnglishReportSendEmailRequest struct {
-	ReportId        int                           `description:"英文报告ID"`
-	EmailId         int                           `description:"邮箱ID"`
-	Email           string                        `description:"邮箱地址"`
-	Subject         string                        `description:"邮件主题"`
-	FromAlias       string                        `description:"发信人昵称"`
-	ReportTitle     string                        `description:"报告标题"`
-	ReportAbstract  string                        `description:"报告摘要"`
-	ReportContent   string                        `description:"报告内容"`
-	ReportShareLink string                        `description:"报告分享链接"`
-	ReportTime      string                        `description:"报告时间"`
-	HtmlBody        string                        `description:"模板内容主体"`
-	EmailLog        *models.EnglishReportEmailLog `description:"日志记录"`
-}
-
-// EnglishReportSendEmailResult 英文研报-推送邮件响应体
-type EnglishReportSendEmailResult struct {
-	ReportId   int    `description:"英文报告ID"`
-	EmailId    int    `description:"邮箱ID"`
-	Email      string `description:"邮箱地址"`
-	Ok         bool   `description:"是否推送成功"`
-	SendData   string `description:"请求数据-JSON"`
-	ResultData string `description:"推送结果-JSON"`
-	Source     int    `description:"服务来源:1-阿里云;2-腾讯云"`
-}
-
-// BatchSendAliEnglishReportEmail 批量推送英文研报邮件
-func BatchSendAliEnglishReportEmail(list []*EnglishReportSendEmailRequest) (err error) {
-	defer func() {
-		if err != nil {
-			tips := fmt.Sprintf("阿里云群发英文研报邮件失败 err: %s\n", err.Error())
-			utils.FileLog.Info(tips)
-			fmt.Println(tips)
-			go alarm_msg.SendAlarmMsg(tips, 3)
-		}
-	}()
-	if len(list) == 0 {
-		return
-	}
-	requestMap := make(map[int]*EnglishReportSendEmailRequest, 0)
-	for _, v := range list {
-		requestMap[v.EmailId] = v
-	}
-
-	// 请求阿里云接口批量推送
-	aliEmail := new(AliyunEmail)
-	resultList, e := aliEmail.BatchSendEmail(list)
-	if e != nil {
-		err = e
-		return
-	}
-
-	// 返回的结果更新日志
-	resendList := make([]*EnglishReportSendEmailRequest, 0)
-	failLogIds := make([]int, 0)
-	updateLogs := make([]*models.EnglishReportEmailLog, 0)
-	for _, v := range resultList {
-		req := requestMap[v.EmailId]
-		if req == nil {
-			continue
-		}
-		l := req.EmailLog
-		if l == nil {
-			continue
-		}
-
-		//l.SendData = v.SendData
-		l.Result = v.ResultData
-		if v.Ok {
-			l.SendStatus = models.EnglishReportEmailLogStatusSuccess
-		} else {
-			l.SendStatus = models.EnglishReportEmailLogStatusFail
-			failLogIds = append(failLogIds, l.Id)
-			if requestMap[v.EmailId] != nil {
-				resendList = append(resendList, requestMap[v.EmailId])
-			}
-			// 取出错误信息
-			r := new(AliyunEmailResult)
-			if e = json.Unmarshal([]byte(v.ResultData), &r); e != nil {
-				continue
-			}
-			rd := new(AliyunEmailResultData)
-			res := strings.Replace(r.Data, `\`, ``, -1)
-			if e = json.Unmarshal([]byte(res), &rd); e != nil {
-				continue
-			}
-			l.ErrMsg = rd.Message
-		}
-		updateLogs = append(updateLogs, l)
-	}
-
-	// 更新日志
-	logOb := new(models.EnglishReportEmailLog)
-	if e = logOb.MultiUpdateResult(updateLogs); e != nil {
-		err = fmt.Errorf("批量更新日志信息失败, Err: " + e.Error())
-		return
-	}
-
-	// 推送失败的重新腾讯云, 若腾讯云也失败将不再自动重推, 用户手动去重推
-	if len(resendList) > 0 && len(failLogIds) > 0 {
-		hasFail, _ := ResendTencentEnglishReportEmail(resendList, failLogIds)
-		//fmt.Printf("hasFail: %v", hasFail)
-		// 存在发送失败则更新报告标识
-		if hasFail {
-			if e = models.UpdateEnglishReportEmailHasFail(list[0].ReportId); e != nil {
-				err = fmt.Errorf("UpdateEnglishReportEmailHasFail err: %s", e.Error())
-				return
-			}
-		}
-	}
-	return
-}
-
-// ResendTencentEnglishReportEmail 腾讯云邮件重新推送
-func ResendTencentEnglishReportEmail(resendList []*EnglishReportSendEmailRequest, failLogIds []int) (hasFail bool, err error) {
-	defer func() {
-		if err != nil {
-			hasFail = true
-			tips := fmt.Sprintf("腾讯云重发英文研报邮件失败 err: %s\n", err.Error())
-			utils.FileLog.Info(tips)
-			fmt.Println(tips)
-			go alarm_msg.SendAlarmMsg(tips, 3)
-		}
-	}()
-	if len(resendList) == 0 || len(failLogIds) == 0 {
-		return
-	}
-
-	// 标记原有日志为已删除
-	if len(failLogIds) > 0 {
-		if e := models.DeleteEnglishReportEmailLogByIds(failLogIds); e != nil {
-			err = errors.New("删除原邮件日志失败, Err: " + e.Error())
-			return
-		}
-	}
-
-	// 写入新的日志
-	nowTime := time.Now().Local()
-	logData := make([]*models.EnglishReportEmailLog, 0)
-	logMap := make(map[int]*models.EnglishReportEmailLog, 0)
-	for _, v := range resendList {
-		logItem := &models.EnglishReportEmailLog{
-			ReportId:   v.ReportId,
-			EmailId:    v.EmailId,
-			Email:      v.Email,
-			Source:     models.EnglishReportEmailLogSourceTencent,
-			SendStatus: models.EnglishReportEmailLogStatusIng,
-			CreateTime: nowTime,
-		}
-		logData = append(logData, logItem)
-		logMap[v.EmailId] = logItem
-	}
-	for _, v := range logData {
-		if e := v.Create(); e != nil {
-			err = fmt.Errorf("写入群发邮件日志失败, err: %s", e.Error())
-			return
-		}
-	}
-
-	// 请求腾讯云
-	tencentEmail := new(TencentEmail)
-	resultList, e := tencentEmail.BatchSendEmail(resendList)
-	if e != nil {
-		err = e
-		return
-	}
-	updateLogs := make([]*models.EnglishReportEmailLog, 0)
-	for _, v := range resultList {
-		l := logMap[v.EmailId]
-		if l == nil {
-			continue
-		}
-		l.Result = v.ResultData
-		if v.Ok {
-			l.SendStatus = models.EnglishReportEmailLogStatusSuccess
-		} else {
-			l.SendStatus = models.EnglishReportEmailLogStatusFail
-			r := new(TencentEmailResult)
-			if e = json.Unmarshal([]byte(v.ResultData), &r); e != nil {
-				continue
-			}
-			l.ErrMsg = r.Message
-			hasFail = true
-		}
-		updateLogs = append(updateLogs, l)
-	}
-
-	// 更新日志
-	logOb := new(models.EnglishReportEmailLog)
-	if e = logOb.MultiUpdateResult(updateLogs); e != nil {
-		err = fmt.Errorf("批量更新日志信息失败, Err: " + e.Error())
-		return
-	}
-	return
-}
-
-// UpdateEnglishReportEs 更新英文报告/章节Es
-func UpdateEnglishReportEs(reportId int, publishState int) (err error) {
-	if reportId <= 0 {
-		return
-	}
-	reportInfo, err := models.GetEnglishReportById(reportId)
-	if err != nil {
-		return
-	}
-	// 新增报告ES
-	esReport := &models.ElasticEnglishReportDetail{
-		Id:                 strconv.Itoa(reportInfo.Id),
-		ReportId:           reportInfo.Id,
-		Title:              reportInfo.Title,
-		Abstract:           reportInfo.Abstract,
-		BodyContent:        utils.TrimHtml(html.UnescapeString(reportInfo.Content)),
-		PublishTime:        reportInfo.PublishTime,
-		CreateTime:         reportInfo.CreateTime,
-		ReportCode:         reportInfo.ReportCode,
-		PublishState:       publishState,
-		Author:             reportInfo.Author,
-		Frequency:          reportInfo.Frequency,
-		ClassifyIdFirst:    reportInfo.ClassifyIdFirst,
-		ClassifyNameFirst:  reportInfo.ClassifyNameFirst,
-		ClassifyIdSecond:   reportInfo.ClassifyIdSecond,
-		ClassifyNameSecond: reportInfo.ClassifyNameSecond,
-		StageStr:           strconv.Itoa(reportInfo.Stage),
-		Overview:           utils.TrimHtml(html.UnescapeString(reportInfo.Overview)),
-		ContentSub:         utils.TrimHtml(html.UnescapeString(reportInfo.ContentSub)),
-	}
-	docId := fmt.Sprintf("%d", reportInfo.Id)
-	if err = EsAddOrEditEnglishReport(utils.EsEnglishReportIndexName, docId, esReport); err != nil {
-		return
-	}
-	return
-}
-
-// ModifyAllEsEnglishReportVideo 批量修改es里的英文研报信息和线上路演信息
-func ModifyAllEsEnglishReportVideo() (err error) {
-	reportList, err := models.GetEnglishReportByCondition("", []interface{}{})
-	if err != nil {
-		return
-	}
-	for _, reportInfo := range reportList {
-		// 新增报告ES
-		esReport := &models.ElasticEnglishReportDetail{
-			Id:                 strconv.Itoa(reportInfo.Id),
-			ReportId:           reportInfo.Id,
-			Title:              reportInfo.Title,
-			Abstract:           reportInfo.Abstract,
-			BodyContent:        utils.TrimHtml(html.UnescapeString(reportInfo.Content)),
-			PublishTime:        reportInfo.PublishTime.Format(utils.FormatDateTime),
-			CreateTime:         reportInfo.CreateTime,
-			ReportCode:         reportInfo.ReportCode,
-			PublishState:       reportInfo.State,
-			Author:             reportInfo.Author,
-			Frequency:          reportInfo.Frequency,
-			ClassifyIdFirst:    reportInfo.ClassifyIdFirst,
-			ClassifyNameFirst:  reportInfo.ClassifyNameFirst,
-			ClassifyIdSecond:   reportInfo.ClassifyIdSecond,
-			ClassifyNameSecond: reportInfo.ClassifyNameSecond,
-			StageStr:           strconv.Itoa(reportInfo.Stage),
-			Overview:           utils.TrimHtml(html.UnescapeString(reportInfo.Overview)),
-			ContentSub:         utils.TrimHtml(html.UnescapeString(reportInfo.ContentSub)),
-		}
-		docId := fmt.Sprintf("%d", reportInfo.Id)
-		if err = EsAddOrEditEnglishReport(utils.EsEnglishReportIndexName, docId, esReport); err != nil {
-			return
-		}
-	}
-
-	videoList, err := models.GetEnglishVideoByCondition("", []interface{}{})
-	if err != nil {
-		return
-	}
-	for _, videoInfo := range videoList {
-		// 新增报告ES
-		esReport := &models.ElasticEnglishReportDetail{
-			Id:                 "v" + strconv.Itoa(videoInfo.Id),
-			VideoId:            videoInfo.Id,
-			Title:              videoInfo.Title,
-			Abstract:           videoInfo.Abstract,
-			BodyContent:        "",
-			PublishTime:        videoInfo.PublishTime.Format(utils.FormatDateTime),
-			CreateTime:         videoInfo.CreateTime.Format(utils.FormatDateTime),
-			ReportCode:         videoInfo.VideoCode,
-			PublishState:       videoInfo.State,
-			Author:             videoInfo.Author,
-			Frequency:          "",
-			ClassifyIdFirst:    videoInfo.ClassifyIdFirst,
-			ClassifyNameFirst:  videoInfo.ClassifyNameFirst,
-			ClassifyIdSecond:   videoInfo.ClassifyIdSecond,
-			ClassifyNameSecond: videoInfo.ClassifyNameSecond,
-			StageStr:           "",
-			Overview:           utils.TrimHtml(html.UnescapeString(videoInfo.Overview)),
-			ContentSub:         "",
-		}
-		docId := fmt.Sprintf("v%d", videoInfo.Id)
-		if err = EsAddOrEditEnglishReport(utils.EsEnglishReportIndexName, docId, esReport); err != nil {
-			return
-		}
-	}
-	return
-}
-
-// UpdateEnglishVideoEs 更新英文线上路演Es
-func UpdateEnglishVideoEs(videoId int, publishState int) (err error) {
-	if videoId <= 0 {
-		return
-	}
-	videoInfo, err := models.GetEnglishVideoById(videoId)
-	if err != nil {
-		return
-	}
-	// 新增报告ES
-	esReport := &models.ElasticEnglishReportDetail{
-		Id:                 "v" + strconv.Itoa(videoInfo.Id),
-		VideoId:            videoInfo.Id,
-		Title:              videoInfo.Title,
-		Abstract:           videoInfo.Abstract,
-		BodyContent:        "",
-		PublishTime:        videoInfo.PublishTime,
-		CreateTime:         videoInfo.CreateTime,
-		ReportCode:         videoInfo.VideoCode,
-		PublishState:       publishState,
-		Author:             videoInfo.Author,
-		Frequency:          "",
-		ClassifyIdFirst:    videoInfo.ClassifyIdFirst,
-		ClassifyNameFirst:  videoInfo.ClassifyNameFirst,
-		ClassifyIdSecond:   videoInfo.ClassifyIdSecond,
-		ClassifyNameSecond: videoInfo.ClassifyNameSecond,
-		StageStr:           "",
-		Overview:           utils.TrimHtml(html.UnescapeString(videoInfo.Overview)),
-		ContentSub:         "",
-	}
-	docId := fmt.Sprintf("v%d", videoInfo.Id)
-	if err = EsAddOrEditEnglishReport(utils.EsEnglishReportIndexName, docId, esReport); err != nil {
-		return
-	}
-	return
-}
-
-func UpdateEnglishReportClassifyId(oldItem, newItem *models.EnglishClassify, classifyId int) (err error) {
-	defer func() {
-		if err != nil {
-			go alarm_msg.SendAlarmMsg("英文报告分类改名-同步更新报告表字段及权限表关键词失败3, Err:"+err.Error(), 3)
-		}
-	}()
-	//如果二级分类变更为一级分类
-	//如果二级分类更换了父级分类,则更新报告中的父级分类ID
-	//如果一级分类更换了名称,则更新所有报告中的一级分类名称
-	//如果二级分类更换了名称,则更新所有报告中的二级分类名称
-	if oldItem.ParentId > 0 && oldItem.ParentId != newItem.ParentId {
-		//二级分类下的三级分类如果有报告,则该二级分类不允许改成一级分类
-		if oldItem.ParentId > 0 && oldItem.ParentId == oldItem.RootId {
-			if newItem.ParentId == 0 {
-				// 更新报告表分类字段
-				var condition string
-				var pars []interface{}
-
-				condition += ` AND classify_id_first = ? `
-				pars = append(pars, classifyId)
-				count, e := models.GetEnglishReportCountByCondition(condition, pars)
-				if e != nil {
-					err = e
-					return
-				}
-				if count > 0 {
-					err = fmt.Errorf("该分类有关联的报告,不允许变更为一级分类")
-					return
-				}
-			}
-		} else if oldItem.ParentId > 0 && oldItem.ParentId != oldItem.RootId {
-			//三级分类下如果有报告,则该三级分类不允许改成二级或或者一级分类
-			if (newItem.ParentId > 0 && newItem.ParentId == newItem.RootId) || newItem.ParentId == 0 {
-				// 更新报告表分类字段
-				var condition string
-				var pars []interface{}
-
-				condition += ` AND classify_id_second = ? `
-				pars = append(pars, classifyId)
-				count, e := models.GetEnglishReportCountByCondition(condition, pars)
-				if e != nil {
-					err = e
-					return
-				}
-				if count > 0 {
-					err = fmt.Errorf("该分类有关联的报告,不允许变更为二级分类或者一级分类")
-					return
-				}
-			}
-		}
-	}
-	return
-}
-
-func UpdateEnglishVideoClassifyId(oldItem, newItem *models.EnglishClassify, classifyId int) (err error) {
-	//一级分类改为二级分类
-	defer func() {
-		if err != nil {
-			go alarm_msg.SendAlarmMsg("英文报告分类改名-同步更新报告表字段及权限表关键词失败3, Err:"+err.Error(), 3)
-		}
-	}()
-	//如果二级分类变更为一级分类
-	//如果二级分类更换了父级分类,则更新报告中的父级分类ID
-	//如果一级分类更换了名称,则更新所有报告中的一级分类名称
-	//如果二级分类更换了名称,则更新所有报告中的二级分类名称
-	if oldItem.ParentId > 0 && oldItem.ParentId != newItem.ParentId {
-		//二级分类下的三级分类如果有报告,则该二级分类不允许改成一级分类
-		if oldItem.ParentId > 0 && oldItem.ParentId == oldItem.RootId {
-			if newItem.ParentId == 0 {
-				// 更新报告表分类字段
-				var condition string
-				var pars []interface{}
-
-				condition += ` AND classify_id_first = ? `
-				pars = append(pars, classifyId)
-				count, e := models.GetEnglishVideoListCount(condition, pars)
-				if e != nil {
-					err = e
-					return
-				}
-				if count > 0 {
-					err = fmt.Errorf("该分类有关联的视频,不允许变更为一级分类")
-					return
-				}
-			}
-		} else if oldItem.ParentId > 0 && oldItem.ParentId != oldItem.RootId {
-			//三级分类下如果有报告,则该三级分类不允许改成二级或或者一级分类
-			if (newItem.ParentId > 0 && newItem.ParentId == newItem.RootId) || newItem.ParentId == 0 {
-				// 更新报告表分类字段
-				var condition string
-				var pars []interface{}
-
-				condition += ` AND classify_id_second = ? `
-				pars = append(pars, classifyId)
-				count, e := models.GetEnglishVideoListCount(condition, pars)
-				if e != nil {
-					err = e
-					return
-				}
-				if count > 0 {
-					err = fmt.Errorf("该分类有关联的视频,不允许变更为二级分类或者一级分类")
-					return
-				}
-			}
-		}
-	}
-	return
-}
-
-// UpdateAllPublishedEnglishReportToEs 更新所有已发布的报告ES
-func UpdateAllPublishedEnglishReportToEs() (err error) {
-	// 获取所有已发布的报告
-	var condition string
-	var pars []interface{}
-	condition = ` AND state IN (2, 6) `
-	reportList, err := models.GetEnglishReportByCondition(condition, pars)
-	count := 0
-	failCount := 0
-	for i := 0; i < len(reportList); i++ {
-		if err = UpdateEnglishReportEs(reportList[i].Id, 2); err != nil {
-			fmt.Printf("更新失败, report_id: %d, Err: %s\n", reportList[i].Id, err.Error())
-			failCount += 1
-		} else {
-			count += 1
-		}
-	}
-	fmt.Printf("报告总数:%d, 更新成功数: %d, 更新失败数: %d", len(reportList), count, failCount)
-
-	return
-}
-
-func CreateEnglishReportIndex() {
-	indexName := utils.EsEnglishReportIndexName
-	mappingJson := `{
-  "mappings": {
-    "dynamic": true,
-    "properties": {
-        "Frequency" : {
-          "type" : "text"
-        },
-        "ReportCode" : {
-          "type" : "text"
-        },
-        "Author" : {
-          "type" : "text",
-          "fields" : {
-            "keyword" : {
-              "type" : "keyword",
-              "ignore_above" : 256
-            }
-          }
-        },
-        "BodyContent" : {
-          "type" : "text",
-          "fields" : {
-            "keyword" : {
-              "type" : "keyword",
-              "ignore_above" : 256
-            }
-          }
-        },
-"Overview" : {
-          "type" : "text",
-          "fields" : {
-            "keyword" : {
-              "type" : "keyword",
-              "ignore_above" : 256
-            }
-          }
-        },
-        "Abstract" : {
-          "type" : "text",
-          "fields" : {
-            "keyword" : {
-              "type" : "keyword",
-              "ignore_above" : 256
-            }
-          }
-        },
-        "ClassifyIdFirst" : {
-          "type" : "long"
-        },
-        "ClassifyIdSecond" : {
-          "type" : "long"
-        },
-        "ClassifyNameFirst" : {
-          "type" : "text",
-          "fields" : {
-            "keyword" : {
-              "type" : "keyword",
-              "ignore_above" : 256
-            }
-          }
-        },
-        "ClassifyNameSecond" : {
-          "type" : "text",
-          "fields" : {
-            "keyword" : {
-              "type" : "keyword",
-              "ignore_above" : 256
-            }
-          }
-        },
-        "PublishState" : {
-          "type" : "long"
-        },
-        "PublishTime" : {
-          "type" : "text",
-          "fields" : {
-            "keyword" : {
-              "type" : "keyword",
-              "ignore_above" : 256
-            }
-          }
-        },
-       "CreateTime" : {
-          "type" : "text",
-          "fields" : {
-            "keyword" : {
-              "type" : "keyword",
-              "ignore_above" : 256
-            }
-          }
-        },
-        "ReportId" : {
-          "type" : "long"
-        },
-        "StageStr" : {
-          "type" : "text"
-        },
-        "Title" : {
-          "type" : "text",
-          "fields" : {
-            "keyword" : {
-              "type" : "keyword",
-              "ignore_above" : 256
-            }
-          }
-        }
-      }
-  }
-}`
-	EsCreateIndex(indexName, mappingJson)
-}
-
-// UpdateEnReportEditMark 更新英文研报当前更新状态
-// status 枚举值 1:编辑中,0:完成编辑, 2:只做查询
-func UpdateEnReportEditMark(reportId, nowUserId, status int, nowUserName, lang string) (ret models.MarkReportResp, err error) {
-	//更新标记key
-	key := fmt.Sprint(`crm:enReport:edit:`, reportId)
-	opUserId, e := utils.Rc.RedisInt(key)
-	var opUser models.MarkReportItem
-	if e != nil {
-		opUserInfoStr, tErr := utils.Rc.RedisString(key)
-		if tErr == nil {
-			tErr = json.Unmarshal([]byte(opUserInfoStr), &opUser)
-			if tErr == nil {
-				opUserId = opUser.AdminId
-			}
-		}
-	}
-	if opUserId > 0 && opUserId != nowUserId {
-		editor := opUser.Editor
-		if editor == "" {
-			//查询账号的用户姓名
-			otherInfo, e := system.GetSysAdminById(opUserId)
-			if e != nil {
-				err = fmt.Errorf("查询其他编辑者信息失败")
-				return
-			}
-			editor = otherInfo.RealName
-		}
-
-		ret.Status = 1
-		if lang == utils.EnLangVersion {
-			ret.Msg = fmt.Sprintf("%s is currently editing the report", editor)
-		} else {
-			ret.Msg = fmt.Sprintf("当前%s正在编辑报告", editor)
-		}
-		ret.Editor = editor
-		return
-	}
-	if status == 1 {
-		nowUser := &models.MarkReportItem{AdminId: nowUserId, Editor: nowUserName}
-		bt, e := json.Marshal(nowUser)
-		if e != nil {
-			err = fmt.Errorf("格式化编辑者信息失败")
-			return
-		}
-		if opUserId > 0 {
-			utils.Rc.Do("SETEX", key, int64(180), string(bt)) //3分钟缓存
-		} else {
-			utils.Rc.SetNX(key, string(bt), time.Second*60*3) //3分钟缓存
-		}
-	} else if status == 0 {
-		//清除编辑缓存
-		_ = utils.Rc.Delete(key)
-	}
-	return
-}
-
-// 英文策略报告一键同步功能
-func EnglishPolicyReportSync(id int, adminInfo *system.Admin) (err error, errMsg string) {
-	//查询报告是否存在
-	policyReport, err := models.GetEnglishPolicyReportById(id)
-	if err != nil {
-		if utils.IsErrNoRow(err) {
-			err = fmt.Errorf("报告不存在!")
-			return
-		}
-		errMsg = "获取报告信息失败,Err:" + err.Error()
-		err = fmt.Errorf("获取报告信息失败")
-		return
-	}
-	//判断报告是否已同步
-	if policyReport.State == 2 {
-		err = fmt.Errorf("报告已同步,无需重复同步")
-		return
-	}
-	//新增英文研报
-	classifyNameFirst := "Macro"
-	classifySecondName := "China A-share Daily Check-in"
-
-	// 根据分类名称查询分类ID
-	classifyInfo, err := models.GetEnglishClassifyByClassifyNameAndParentName(classifyNameFirst, classifySecondName)
-	if err != nil {
-		if utils.IsErrNoRow(err) {
-			err = fmt.Errorf("报告分类不存在!")
-			return
-		}
-		errMsg = "获取报告分类失败,Err:" + err.Error()
-		err = fmt.Errorf("获取报告分类失败")
-		return
-	}
-	// 获取期数
-	maxStage, err := models.GetEnglishReportStage(classifyInfo.ParentId, classifyInfo.Id)
-	if err != nil {
-		errMsg = "期数获取失败,Err:" + err.Error()
-		err = fmt.Errorf("期数获取失败")
-		return
-	}
-	var contentSub string
-	if policyReport.Content != "" {
-		contentSub, err = GetReportContentSub(policyReport.Content)
-		if err != nil {
-			go alarm_msg.SendAlarmMsg("策略报告 一键同步 ContentSub 失败,Err:"+err.Error(), 3)
-			//utils.SendEmail(utils.APPNAME+"失败提醒", "解析 ContentSub 失败,Err:"+err.Error(), utils.EmailSendToUsers)
-		}
-	}
-
-	item := new(models.EnglishReport)
-	item.AddType = 1
-	item.ClassifyIdFirst = classifyInfo.ParentId
-	item.ClassifyNameFirst = classifyInfo.ParentClassifyName
-	item.ClassifyIdSecond = classifyInfo.Id
-	item.ClassifyNameSecond = classifyInfo.ClassifyName
-	item.Title = "China A-share Daily Check-in"
-	item.Abstract = "China A-share market and economic data review"
-	item.Author = "Horizon Insights FICC Team"
-	item.Frequency = policyReport.Frequency
-	item.State = 1
-	item.Content = policyReport.Content
-	item.Stage = maxStage + 1
-	item.ContentSub = html.EscapeString(contentSub)
-	item.CreateTime = time.Now().Format(utils.FormatDateTime)
-	item.ModifyTime = time.Now()
-	item.Overview = policyReport.Abstract
-	item.KeyTakeaways = policyReport.KeyTakeaways
-	item.FromReportId = policyReport.Id
-	item.AdminId = adminInfo.AdminId
-	item.AdminRealName = adminInfo.RealName
-	newReportId, err := models.AddEnglishReport(item)
-	if err != nil {
-		errMsg = "保存研报失败,Err:" + err.Error()
-		err = fmt.Errorf("保存研报失败")
-		return
-	}
-	reportCode := utils.MD5(strconv.Itoa(int(newReportId)))
-	//修改唯一编码
-	{
-		go models.ModifyEnglishReportCode(newReportId, reportCode)
-	}
-	//更新策略报告状态为已同步
-	if err = models.SyncEnglishPolicyReportById(policyReport.Id, int(newReportId)); err != nil {
-		errMsg = "更新策略报告失败,Err:" + err.Error()
-		err = fmt.Errorf("更新策略报告失败")
-		return
-	}
-	return
-}
-
-// 英文策略报告批量同步功能
-func MultiEnglishPolicyReportSync() (err error, errMsg string) {
-	//查询发布时间是当天的所有未同步的报告,并更新到英文研报
-	condition := ""
-	var pars []interface{}
-	//startDate := time.Now().Format(utils.FormatDate)
-	startDate := time.Now().AddDate(0, -1, 0).Format(utils.FormatDate)
-	condition += ` AND publish_time >= ? AND state = 1 AND (content !='' AND content is not null)`
-	pars = append(pars, startDate)
-	policyReports, err := models.GetEnglishPolicyReportByCondition(condition, pars)
-	if err != nil {
-		errMsg = "查询英文策略报告列表接口失败"
-		return
-	}
-	if len(policyReports) == 0 {
-		return
-	}
-	//新增英文研报
-	classifyNameFirst := "Equity"
-	classifySecondName := "A-share Daily"
-
-	// 根据分类名称查询分类ID
-	classifyInfo, err := models.GetEnglishClassifyByClassifyNameAndParentName(classifyNameFirst, classifySecondName)
-	if err != nil {
-		if utils.IsErrNoRow(err) {
-			err = fmt.Errorf("报告分类不存在!")
-			return
-		}
-		errMsg = "获取报告分类失败,Err:" + err.Error()
-		err = fmt.Errorf("获取报告分类失败")
-		return
-	}
-	// 获取期数
-	maxStage, err := models.GetEnglishReportStage(classifyInfo.ParentId, classifyInfo.Id)
-	if err != nil {
-		errMsg = "期数获取失败,Err:" + err.Error()
-		err = fmt.Errorf("期数获取失败")
-		return
-	}
-	for _, policyReport := range policyReports {
-		contentSub := ""
-		maxStage += 1
-		if policyReport.Content != "" {
-			contentSub, err = GetReportContentSub(policyReport.Content)
-			if err != nil {
-				errMsg = "策略报告 批量同步 ContentSub 失败,Err:" + err.Error()
-				err = fmt.Errorf("截取内容失败")
-				return
-			}
-		}
-
-		item := new(models.EnglishReport)
-		item.AddType = 1
-		item.ClassifyIdFirst = classifyInfo.ParentId
-		item.ClassifyNameFirst = classifyInfo.ParentClassifyName
-		item.ClassifyIdSecond = classifyInfo.Id
-		item.ClassifyNameSecond = classifyInfo.ClassifyName
-		item.Title = "China A-share Daily Check-in"
-		item.Abstract = "China A-share market and economic data review"
-		item.Author = "Horizon Insights FICC Team"
-		item.Frequency = policyReport.Frequency
-		item.State = 1
-		item.Content = policyReport.Content
-		item.Stage = maxStage
-		item.ContentSub = html.EscapeString(contentSub)
-		item.CreateTime = time.Now().Format(utils.FormatDateTime)
-		item.ModifyTime = time.Now()
-		item.Overview = policyReport.Abstract
-		item.KeyTakeaways = policyReport.KeyTakeaways
-		item.FromReportId = policyReport.Id
-		newReportId, e := models.AddEnglishReport(item)
-		if e != nil {
-			errMsg = "保存研报失败,Err:" + e.Error()
-			err = fmt.Errorf("保存研报失败")
-			return
-		}
-		reportCode := utils.MD5(strconv.Itoa(int(newReportId)))
-		//修改唯一编码
-		err = models.ModifyEnglishReportCode(newReportId, reportCode)
-		if err != nil {
-			errMsg = "更新英文研报失败,Err:" + err.Error()
-			err = fmt.Errorf("更新英文研报失败")
-			return
-		}
-		//更新策略报告状态为已同步
-		if err = models.SyncEnglishPolicyReportById(policyReport.Id, int(newReportId)); err != nil {
-			errMsg = "更新策略报告失败,Err:" + err.Error()
-			err = fmt.Errorf("更新策略报告失败")
-			return
-		}
-	}
-	return
-}
-
-// 取消英文策略报告一键同步
-func EnglishPolicyReportSyncCancel(reportInfo *models.EnglishReportDetail) (err error) {
-	var policyReport *models.EnglishPolicyReportDetail
-	if reportInfo.FromReportId > 0 {
-		//查询报告是否存在
-		policyReport, err = models.GetEnglishPolicyReportById(reportInfo.FromReportId)
-		if err != nil {
-			if utils.IsErrNoRow(err) {
-				err = fmt.Errorf("报告不存在!")
-				return
-			}
-			err = fmt.Errorf("获取报告信息失败,Err:%v", err)
-			return
-		}
-		//判断报告是否已同步
-		if policyReport.State == 1 {
-			err = fmt.Errorf("报告已取消同步,无需重复取消")
-			return
-		}
-
-		if err = models.SyncCancelEnglishPolicyReport(policyReport.Id); err != nil {
-			err = fmt.Errorf("报告已取消同步失败 Err %v", err)
-			return
-		}
-	}
-	return
-}
-
-// UpdateEnglishCompanyEnabledByCompanyId 根据英文客户ID更新状态
-func UpdateEnglishCompanyEnabledByCompanyId(companyId int) (err error) {
-	defer func() {
-		if err != nil {
-			alarm_msg.SendAlarmMsg(fmt.Sprintf("更新英文客户状态失败, Err: %s", err.Error()), 3)
-		}
-	}()
-
-	// 获取客户
-	comp, e := models.GetEnglishCompanyById(companyId)
-	if e != nil {
-		err = fmt.Errorf("英文客户已被删除")
-		return
-	}
-
-	// 获取联系人
-	emailCond := ` AND company_id = ?`
-	emailPars := make([]interface{}, 0)
-	emailPars = append(emailPars, companyId)
-	emailList, e := models.GetEnglishReportEmailList(emailCond, emailPars, "")
-	if e != nil {
-		err = fmt.Errorf("获取英文联系人列表失败, Err: %s", e.Error())
-		return
-	}
-	// 无联系人, 保持原状态
-	total := len(emailList)
-	if total == 0 {
-		return
-	}
-
-	// 判断状态, 是否部分禁用
-	status := 0
-	enabledCount := 0
-	for _, v := range emailList {
-		if v.Enabled == 1 {
-			enabledCount += 1
-		}
-	}
-	if enabledCount == 0 {
-		status = models.EnglishCompanyDisabled
-	}
-	if total == enabledCount {
-		status = models.EnglishCompanyEnabled
-	}
-	if total > enabledCount && enabledCount != 0 {
-		status = models.EnglishCompanyHalfEnabled
-	}
-
-	// 是否需要更新
-	if comp.Enabled == status {
-		return
-	}
-	comp.Enabled = status
-	comp.ModifyTime = time.Now().Local()
-	if e = comp.Update([]string{"Enabled", "ModifyTime"}); e != nil {
-		err = fmt.Errorf("更新客户状态失败, Err: %s", e.Error())
-		return
-	}
-	return
-}

+ 0 - 222
services/english_video.go

@@ -1,222 +0,0 @@
-package services
-
-import (
-	"errors"
-	"eta_gn/eta_api/models"
-	"eta_gn/eta_api/models/system"
-	"eta_gn/eta_api/utils"
-	"fmt"
-	"strconv"
-	"strings"
-	"time"
-)
-
-// GetEnglishVideoCoverList 封面库列表
-func GetEnglishVideoCoverList(condition string, pars []interface{}, orderRule string, startSize, pageSize int) (total int, resp *models.EnglishVideoCoverListResp, err error) {
-	resp = new(models.EnglishVideoCoverListResp)
-	total, list, e := models.GetEnglishVideoCoverPageList(condition, pars, orderRule, startSize, pageSize)
-	if e != nil {
-		err = errors.New("获取封面库列表失败, Err:" + e.Error())
-		return
-	}
-	if len(list) == 0 {
-		return
-	}
-	respList := make([]*models.EnglishVideoCoverItem, 0)
-	for _, v := range list {
-		item := &models.EnglishVideoCoverItem{
-			Id:         v.Id,
-			CoverName:  v.CoverName,
-			CoverUrl:   v.CoverUrl,
-			CreateTime: v.CreateTime.Format(utils.FormatDateTime),
-			ModifyTime: v.ModifyTime.Format(utils.FormatDateTime),
-		}
-		respList = append(respList, item)
-	}
-	resp.List = respList
-	return
-}
-
-// SaveEnglishVideoCover 保存视频封面
-func SaveEnglishVideoCover(coverId int, coverName, coverUrl string) (resp *models.EnglishVideoCoverItem, errMsg string, err error) {
-	resp = new(models.EnglishVideoCoverItem)
-	nowTime := time.Now().Local()
-	// 更新
-	if coverId > 0 {
-		item, e := models.GetEnglishVideoCoverById(coverId)
-		if e != nil {
-			if utils.IsErrNoRow(e) {
-				errMsg = "封面不存在"
-				err = errors.New(errMsg)
-				return
-			}
-			errMsg = "封面信息有误"
-			err = errors.New("获取封面图失败, Err:" + e.Error())
-			return
-		}
-		updateCols := make([]string, 0)
-		updateCols = append(updateCols, "CoverName", "CoverUrl", "ModifyTime")
-		item.CoverName = coverName
-		item.CoverUrl = coverUrl
-		item.ModifyTime = nowTime
-		if e := item.Update(updateCols); e != nil {
-			errMsg = "更新失败"
-			err = errors.New("更新封面图失败, Err:" + e.Error())
-		}
-		resp = formatEnglishVideoCoverItem(item)
-		return
-	}
-	// 新增
-	newCover := &models.EnglishVideoCover{
-		CoverName:  coverName,
-		CoverUrl:   coverUrl,
-		CreateTime: nowTime,
-		ModifyTime: nowTime,
-	}
-	if e := newCover.Add(); e != nil {
-		errMsg = "新增失败"
-		err = errors.New("新增封面图失败, Err:" + e.Error())
-	}
-	resp = formatEnglishVideoCoverItem(newCover)
-	return
-}
-
-func formatEnglishVideoCoverItem(item *models.EnglishVideoCover) (resp *models.EnglishVideoCoverItem) {
-	resp = new(models.EnglishVideoCoverItem)
-	if item != nil {
-		resp.Id = item.Id
-		resp.CoverName = item.CoverName
-		resp.CoverUrl = item.CoverUrl
-		resp.CreateTime = item.CreateTime.Format(utils.FormatDateTime)
-		resp.ModifyTime = item.ModifyTime.Format(utils.FormatDateTime)
-	}
-	return
-}
-
-// SoftDeleteEnglishVideoCover 删除封面图
-func SoftDeleteEnglishVideoCover(coverId int) (errMsg string, err error) {
-	if _, e := models.GetEnglishVideoCoverById(coverId); e != nil {
-		errMsg = "封面图信息有误"
-		err = errors.New("获取封面图失败, Err:" + e.Error())
-		return
-	}
-	if e := models.DeleteEnglishVideoCover(coverId); e != nil {
-		errMsg = "删除失败"
-		err = errors.New("删除封面图失败, Err:" + e.Error())
-	}
-	return
-}
-
-// SaveEnglishVideo 创建线上路演
-func SaveEnglishVideo(req models.SaveEnglishVideoReq, adminInfo *system.Admin) (newReportId int, videoCode string, err error, errMsg string) {
-	// 查询分类是否存在
-	req.Overview = strings.Replace(req.Overview, "Powered by Froala Editor", "", -1)
-	var classifyIds []int
-	classifyIds = append(classifyIds, req.ClassifyIdFirst)
-	if req.ClassifyIdSecond > 0 {
-		classifyIds = append(classifyIds, req.ClassifyIdSecond)
-	}
-	classifyList, err := models.GetEnglishReportClassifyByIds(classifyIds)
-	if err != nil {
-		err = fmt.Errorf("查询线上路演分类出错")
-		errMsg = fmt.Sprintf("查询线上路演分类出错, Err: %v", err)
-		return
-	}
-	firstClassify := new(models.EnglishClassify)
-	secondClassify := new(models.EnglishClassify)
-	for _, v := range classifyList {
-		if v.ParentId == v.RootId {
-			firstClassify = v
-		} else if v.ParentId > 0 {
-			secondClassify = v
-		}
-	}
-	if firstClassify == nil {
-		err = fmt.Errorf("一级分类不存在")
-		return
-	}
-	if req.ClassifyIdSecond > 0 && secondClassify == nil {
-		err = fmt.Errorf("二级分类不存在")
-		return
-	}
-
-	if req.ClassifyIdSecond > 0 && secondClassify.ParentId != firstClassify.Id {
-		err = fmt.Errorf("二级分类错误")
-		return
-	}
-
-	if req.Id > 0 {
-		item, e := models.GetEnglishVideoItemById(req.Id)
-		if e != nil {
-			if utils.IsErrNoRow(e) {
-				err = fmt.Errorf("路演视频不存在")
-				return
-			}
-			err = fmt.Errorf("查询线上路演出错")
-			errMsg = fmt.Sprintf("查询线上路演出错, Err: %v", e)
-			return
-		}
-
-		item.ClassifyIdFirst = req.ClassifyIdFirst
-		item.ClassifyNameFirst = firstClassify.ClassifyName
-		item.ClassifyIdSecond = req.ClassifyIdSecond
-		if secondClassify != nil {
-			item.ClassifyNameSecond = secondClassify.ClassifyName
-		}
-		item.Title = req.Title
-		item.Abstract = req.Abstract
-		//item.Author = req.Author
-		item.State = req.State
-		item.VideoUrl = req.VideoUrl
-		item.VideoCoverUrl = req.VideoCoverUrl
-		item.VideoSeconds = req.VideoSeconds
-		item.Overview = req.Overview
-		e = models.EditEnglishVideo(item, req.Id)
-		if e != nil {
-			err = errors.New("更新报告失败")
-			errMsg = fmt.Sprintf("更新报告失败, Err: %v", e)
-			return
-		}
-		newReportId = item.Id
-		videoCode = item.VideoCode
-		return
-	}
-	item := new(models.EnglishVideo)
-	item.ClassifyIdFirst = req.ClassifyIdFirst
-	item.ClassifyNameFirst = firstClassify.ClassifyName
-	item.ClassifyIdSecond = req.ClassifyIdSecond
-	if secondClassify != nil {
-		item.ClassifyNameSecond = secondClassify.ClassifyName
-	}
-	item.VideoUrl = req.VideoUrl
-	item.VideoCoverUrl = req.VideoCoverUrl
-	item.VideoSeconds = req.VideoSeconds
-	item.Title = req.Title
-	item.Abstract = req.Abstract
-	//item.Author = req.Author
-	item.State = req.State
-	if req.State == 2 {
-		item.PublishTime = time.Now()
-	}
-	item.Overview = req.Overview
-	item.AdminId = adminInfo.AdminId
-	item.AdminRealName = adminInfo.RealName
-	item.CreateTime = time.Now()
-	item.ModifyTime = time.Now()
-	e := models.AddEnglishVideo(item)
-	if e != nil {
-		err = errors.New("新增路演视频失败")
-		errMsg = fmt.Sprintf("新增路演视频失败, Err: %v", e)
-		return
-	}
-	newReportId = item.Id
-	videoCode = utils.MD5(strconv.Itoa(item.Id))
-	//修改唯一编码
-	{
-		go models.ModifyEnglishVideoCode(item.Id, videoCode)
-	}
-	if req.State == 2 {
-		go UpdateEnglishVideoEs(newReportId, 2)
-	}
-	return
-}

+ 38 - 218
services/report_approve.go

@@ -3,7 +3,6 @@ package services
 import (
 import (
 	"eta_gn/eta_api/models"
 	"eta_gn/eta_api/models"
 	"eta_gn/eta_api/models/report_approve"
 	"eta_gn/eta_api/models/report_approve"
-	"eta_gn/eta_api/models/smart_report"
 	"eta_gn/eta_api/services/alarm_msg"
 	"eta_gn/eta_api/services/alarm_msg"
 	"eta_gn/eta_api/utils"
 	"eta_gn/eta_api/utils"
 	"fmt"
 	"fmt"
@@ -43,21 +42,6 @@ func CheckReportApproveFlowChange(reportType, classifyFirstId, classifySecondId,
 			return
 			return
 		}
 		}
 		count = ct
 		count = ct
-	case report_approve.FlowReportTypeEnglish:
-		ct, e := models.GetEnglishReportListCount(cond, pars, "")
-		if e != nil {
-			err = fmt.Errorf("GetEnglishReportListCount err: %s", e.Error())
-			return
-		}
-		count = ct
-	case report_approve.FlowReportTypeSmart:
-		ob := new(smart_report.SmartReport)
-		ct, e := ob.GetCountByCondition(cond, pars)
-		if e != nil {
-			err = fmt.Errorf("SmartReport GetCountByCondition err: %s", e.Error())
-			return
-		}
-		count = ct
 	default:
 	default:
 		err = fmt.Errorf("报告类型有误")
 		err = fmt.Errorf("报告类型有误")
 		return
 		return
@@ -342,81 +326,31 @@ func CancelReportApprove(reportType, reportId, approveId, sysAdminId int, sysAdm
 // updateReportApproveState 更新报告审批状态
 // updateReportApproveState 更新报告审批状态
 func updateReportApproveState(reportType, reportId, approveId, state int) (err error) {
 func updateReportApproveState(reportType, reportId, approveId, state int) (err error) {
 	updateCols := []string{"ApproveId", "State", "ModifyTime"}
 	updateCols := []string{"ApproveId", "State", "ModifyTime"}
-	if reportType == report_approve.FlowReportTypeChinese {
-		reportOb := new(models.Report)
-		reportItem, e := reportOb.GetItemById(reportId)
-		// 报告可能会被删除, 这里查不到就忽略掉
-		if e != nil && !utils.IsErrNoRow(e) {
-			err = fmt.Errorf("获取中文研报失败, Err: %s", e.Error())
-			return
-		}
-		if reportItem != nil {
-			reportItem.ApproveId = approveId
-			reportItem.State = state
-			reportItem.ModifyTime = time.Now().Local()
-			if state == models.ReportStatePass || state == models.ReportStateRefused {
-				updateCols = append(updateCols, "ApproveTime")
-				reportItem.ApproveTime = time.Now().Local()
-			}
-			if state == models.ReportStatePass {
-				updateCols = append(updateCols, "PublishTime")
-				reportItem.PublishTime = time.Now().Local()
-			}
-			if e = reportItem.UpdateReport(updateCols); e != nil {
-				err = fmt.Errorf("更新中文研报审批状态失败, Err: %s", e.Error())
-				return
-			}
-		}
+	reportOb := new(models.Report)
+	reportItem, e := reportOb.GetItemById(reportId)
+	// 报告可能会被删除, 这里查不到就忽略掉
+	if e != nil && !utils.IsErrNoRow(e) {
+		err = fmt.Errorf("获取中文研报失败, Err: %s", e.Error())
+		return
 	}
 	}
-	if reportType == report_approve.FlowReportTypeEnglish {
-		reportItem, e := models.GetEnglishReportItemById(reportId)
-		if e != nil && !utils.IsErrNoRow(e) {
-			err = fmt.Errorf("获取英文研报失败, Err: %s", e.Error())
-			return
+	if reportItem != nil {
+		reportItem.ApproveId = approveId
+		reportItem.State = state
+		reportItem.ModifyTime = time.Now().Local()
+		if state == models.ReportStatePass || state == models.ReportStateRefused {
+			updateCols = append(updateCols, "ApproveTime")
+			reportItem.ApproveTime = time.Now().Local()
 		}
 		}
-		if reportItem != nil {
-			reportItem.ApproveId = approveId
-			reportItem.State = state
-			reportItem.ModifyTime = time.Now().Local()
-			if state == models.ReportStatePass || state == models.ReportStateRefused {
-				updateCols = append(updateCols, "ApproveTime")
-				reportItem.ApproveTime = time.Now().Local()
-			}
-			if state == models.ReportStatePass {
-				updateCols = append(updateCols, "PublishTime")
-				reportItem.PublishTime = time.Now().Local()
-			}
-			if e = reportItem.UpdateReport(updateCols); e != nil {
-				err = fmt.Errorf("更新英文研报审批状态失败, Err: %s", e.Error())
-				return
-			}
+		if state == models.ReportStatePass {
+			updateCols = append(updateCols, "PublishTime")
+			reportItem.PublishTime = time.Now().Local()
 		}
 		}
-	}
-	if reportType == report_approve.FlowReportTypeSmart {
-		reportOb := new(smart_report.SmartReport)
-		reportItem, e := reportOb.GetItemById(reportId)
-		if e != nil && !utils.IsErrNoRow(e) {
-			err = fmt.Errorf("获取智能研报失败, Err: %s", e.Error())
+		if e = reportItem.UpdateReport(updateCols); e != nil {
+			err = fmt.Errorf("更新中文研报审批状态失败, Err: %s", e.Error())
 			return
 			return
 		}
 		}
-		if reportItem != nil {
-			reportItem.ApproveId = approveId
-			reportItem.State = state
-			reportItem.ModifyTime = time.Now().Local()
-			if state == models.ReportStatePass || state == models.ReportStateRefused {
-				updateCols = append(updateCols, "ApproveTime")
-				reportItem.ApproveTime = time.Now().Local()
-			}
-			if state == models.ReportStatePass {
-				updateCols = append(updateCols, "PublishTime")
-				reportItem.PublishTime = time.Now().Local()
-			}
-			if e = reportItem.Update(updateCols); e != nil {
-				err = fmt.Errorf("更新智能研报审批状态失败, Err: %s", e.Error())
-				return
-			}
-		}
 	}
 	}
+
 	return
 	return
 }
 }
 
 
@@ -838,62 +772,26 @@ func BuildNextNodeRecordAndMsg(approveNodeItem *report_approve.ReportApproveNode
 // AfterReportApprovePass 报告审批通过后的处理
 // AfterReportApprovePass 报告审批通过后的处理
 func AfterReportApprovePass(reportType, reportId int) (err error) {
 func AfterReportApprovePass(reportType, reportId int) (err error) {
 	// 中文研报
 	// 中文研报
-	if reportType == report_approve.FlowReportTypeChinese {
-		reportInfo, e := models.GetReportByReportId(reportId)
-		if e != nil {
-			if utils.IsErrNoRow(e) {
-				return
-			}
-			err = fmt.Errorf("获取研报信息失败, Err: %s", e.Error())
+	reportInfo, e := models.GetReportByReportId(reportId)
+	if e != nil {
+		if utils.IsErrNoRow(e) {
 			return
 			return
 		}
 		}
-		// 重新生成音频,里面还涉及到章节类型的报告
-		go UpdateReportVideo(reportInfo)
-
-		// 生成报告pdf和长图
-		{
-			reportPdfUrl := GetGeneralPdfUrl(reportInfo.ReportCode, reportInfo.ClassifyNameFirst, reportInfo.ReportLayout)
-			go Report2pdfAndJpeg(reportPdfUrl, reportId, 1)
-		}
-
-		//_ = CreateVideo(reportInfo)
-		_ = UpdateReportEs(reportInfo.Id, models.ReportStatePublished)
-
+		err = fmt.Errorf("获取研报信息失败, Err: %s", e.Error())
 		return
 		return
 	}
 	}
+	// 重新生成音频,里面还涉及到章节类型的报告
+	go UpdateReportVideo(reportInfo)
 
 
-	// 英文研报
-	if reportType == report_approve.FlowReportTypeEnglish {
-		_ = UpdateEnglishReportEs(reportId, models.ReportStatePublished)
-		return
+	// 生成报告pdf和长图
+	{
+		reportPdfUrl := GetGeneralPdfUrl(reportInfo.ReportCode, reportInfo.ClassifyNameFirst, reportInfo.ReportLayout)
+		go Report2pdfAndJpeg(reportPdfUrl, reportId, 1)
 	}
 	}
 
 
-	// 智能研报
-	if reportType == report_approve.FlowReportTypeSmart {
-		ob := new(smart_report.SmartReport)
-		item, e := ob.GetItemById(reportId)
-		if e != nil {
-			if utils.IsErrNoRow(e) {
-				return
-			}
-			err = fmt.Errorf("获取智能研报信息失败, Err: %s", e.Error())
-			return
-		}
-
-		// 写入队列
-		//var queue smart_report.Report2ImgQueueReq
-		//queue.ReportType = 2
-		//queue.ReportCode = item.ReportCode
-		//_ = utils.Rc.LPush(utils.CACHE_CREATE_REPORT_IMGPDF_QUEUE, queue)
+	//_ = CreateVideo(reportInfo)
+	_ = UpdateReportEs(reportInfo.Id, models.ReportStatePublished)
 
 
-		// 生成音频
-		if item.VideoUrl == "" {
-			SmartReportBuildVideoAndUpdate(item)
-		}
-
-		// ES更新报告
-		_ = SmartReportElasticUpsert(item.SmartReportId, models.ReportStatePublished)
-	}
 	return
 	return
 }
 }
 
 
@@ -908,27 +806,8 @@ func CheckCloseReportApproveConf() (yes bool, err error) {
 	if count > 0 {
 	if count > 0 {
 		return
 		return
 	}
 	}
-	count, e = models.GetEnglishReportStateCount(models.ReportStateWaitApprove)
-	if e != nil {
-		err = fmt.Errorf("查询审批中的英文报告数量失败, Err: %s", e.Error())
-		return
-	}
-	if count > 0 {
-		return
-	}
-	smartOb := new(smart_report.SmartReport)
-	cond := ` AND state = ?`
-	pars := make([]interface{}, 0)
-	pars = append(pars, models.ReportStateWaitApprove)
-	count, e = smartOb.GetCountByCondition(cond, pars)
-	if e != nil {
-		err = fmt.Errorf("查询审批中的智能报告数量失败, Err: %s", e.Error())
-		return
-	}
-	if count > 0 {
-		return
-	}
 	yes = true
 	yes = true
+
 	return
 	return
 }
 }
 
 
@@ -943,31 +822,11 @@ func FlowOperateResetReportState(reportType, classifyFirstId, classifySecondId,
 	}()
 	}()
 
 
 	// 中文研报
 	// 中文研报
-	if reportType == report_approve.FlowReportTypeChinese {
-		e := models.UpdateReportsStateByCond(classifyFirstId, classifySecondId, classifyThirdId, oldState, State)
-		if e != nil {
-			err = fmt.Errorf("UpdateReportsStateByCond err: %s", e.Error())
-		}
-		return
-	}
-
-	// 英文研报
-	if reportType == report_approve.FlowReportTypeEnglish {
-		e := models.UpdateEnglishReportsStateByCond(classifyFirstId, classifySecondId, oldState, State)
-		if e != nil {
-			err = fmt.Errorf("UpdateEnglishReportsStateByCond err: %s", e.Error())
-		}
-		return
+	e := models.UpdateReportsStateByCond(classifyFirstId, classifySecondId, classifyThirdId, oldState, State)
+	if e != nil {
+		err = fmt.Errorf("UpdateReportsStateByCond err: %s", e.Error())
 	}
 	}
 
 
-	// 智能研报
-	if reportType == report_approve.FlowReportTypeSmart {
-		e := smart_report.UpdateSmartReportsStateByCond(classifyFirstId, classifySecondId, oldState, State)
-		if e != nil {
-			err = fmt.Errorf("UpdateSmartReportsStateByCond err: %s", e.Error())
-		}
-		return
-	}
 	return
 	return
 }
 }
 
 
@@ -987,14 +846,6 @@ func ConfigChangeResetReportState(changeType string) (err error) {
 		if e != nil {
 		if e != nil {
 			err = fmt.Errorf("UpdateReportsStateByCond err: %s", e.Error())
 			err = fmt.Errorf("UpdateReportsStateByCond err: %s", e.Error())
 		}
 		}
-		e = models.UpdateEnglishReportsStateByCond(0, 0, models.ReportStateWaitSubmit, models.ReportStateUnpublished)
-		if e != nil {
-			err = fmt.Errorf("UpdateEnglishReportsStateByCond err: %s", e.Error())
-		}
-		e = smart_report.UpdateSmartReportsStateByCond(0, 0, models.ReportStateWaitSubmit, models.ReportStateUnpublished)
-		if e != nil {
-			err = fmt.Errorf("UpdateSmartReportsStateByCond err: %s", e.Error())
-		}
 		return
 		return
 	}
 	}
 
 
@@ -1006,19 +857,9 @@ func ConfigChangeResetReportState(changeType string) (err error) {
 			err = fmt.Errorf("GetApproveFlows err: %s", e.Error())
 			err = fmt.Errorf("GetApproveFlows err: %s", e.Error())
 			return
 			return
 		}
 		}
-		reportSecondIds, englishSecondIds, smartSecondIds := make([]int, 0), make([]int, 0), make([]int, 0)
+		reportSecondIds := make([]int, 0)
 		for _, v := range flows {
 		for _, v := range flows {
-			if v.ReportType == report_approve.FlowReportTypeChinese {
-				reportSecondIds = append(reportSecondIds, v.ClassifySecondId)
-				continue
-			}
-			if v.ReportType == report_approve.FlowReportTypeEnglish {
-				englishSecondIds = append(englishSecondIds, v.ClassifySecondId)
-				continue
-			}
-			if v.ReportType == report_approve.FlowReportTypeSmart {
-				smartSecondIds = append(smartSecondIds, v.ClassifySecondId)
-			}
+			reportSecondIds = append(reportSecondIds, v.ClassifySecondId)
 		}
 		}
 		if len(reportSecondIds) > 0 {
 		if len(reportSecondIds) > 0 {
 			e = models.UpdateReportsStateBySecondIds(models.ReportStateUnpublished, models.ReportStateWaitSubmit, reportSecondIds)
 			e = models.UpdateReportsStateBySecondIds(models.ReportStateUnpublished, models.ReportStateWaitSubmit, reportSecondIds)
@@ -1027,20 +868,7 @@ func ConfigChangeResetReportState(changeType string) (err error) {
 				return
 				return
 			}
 			}
 		}
 		}
-		if len(englishSecondIds) > 0 {
-			e = models.UpdateEnglishReportsStateBySecondIds(models.ReportStateUnpublished, models.ReportStateWaitSubmit, englishSecondIds)
-			if e != nil {
-				err = fmt.Errorf("UpdateEnglishReportsStateBySecondIds err: %s", e.Error())
-				return
-			}
-		}
-		if len(smartSecondIds) > 0 {
-			e = smart_report.UpdateSmartReportsStateBySecondIds(models.ReportStateUnpublished, models.ReportStateWaitSubmit, smartSecondIds)
-			if e != nil {
-				err = fmt.Errorf("UpdateSmartReportsStateBySecondIds err: %s", e.Error())
-				return
-			}
-		}
+
 		return
 		return
 	}
 	}
 
 
@@ -1050,14 +878,6 @@ func ConfigChangeResetReportState(changeType string) (err error) {
 		if e != nil {
 		if e != nil {
 			err = fmt.Errorf("UpdateReportsStateByCond err: %s", e.Error())
 			err = fmt.Errorf("UpdateReportsStateByCond err: %s", e.Error())
 		}
 		}
-		e = models.UpdateEnglishReportsStateByCond(0, 0, models.ReportStateUnpublished, models.ReportStateWaitSubmit)
-		if e != nil {
-			err = fmt.Errorf("UpdateEnglishReportsStateByCond err: %s", e.Error())
-		}
-		e = smart_report.UpdateSmartReportsStateByCond(0, 0, models.ReportStateUnpublished, models.ReportStateWaitSubmit)
-		if e != nil {
-			err = fmt.Errorf("UpdateSmartReportsStateByCond err: %s", e.Error())
-		}
 		return
 		return
 	}
 	}
 	return
 	return

+ 16 - 61
services/smart_report.go

@@ -303,25 +303,11 @@ func Report2pdfAndJpeg(reportUrl string, reportId, reportType int) {
 		return
 		return
 	}
 	}
 
 
-	// 先清空字段
-	if reportType == 1 {
-		err = models.UpdatePdfUrlReportById(reportId)
-		if err != nil {
-			utils.FileLog.Info("清空pdf长图字段失败, Err: \n" + err.Error())
-			return
-		}
-	} else if reportType == 2 {
-		err = models.UpdatePdfUrlEnglishReportById(reportId)
-		if err != nil {
-			utils.FileLog.Info("清空pdf长图字段失败, Err: \n" + err.Error())
-			return
-		}
-	} else if reportType == 3 {
-		err = smart_report.UpdatePdfUrlSmartReportById(reportId)
-		if err != nil {
-			utils.FileLog.Info("清空pdf长图字段失败, Err: \n" + err.Error())
-			return
-		}
+	// 先清空报告字段
+	err = models.UpdatePdfUrlReportById(reportId)
+	if err != nil {
+		utils.FileLog.Info("清空pdf长图字段失败, Err: \n" + err.Error())
+		return
 	}
 	}
 
 
 	reportCode := utils.MD5(strconv.Itoa(reportId))
 	reportCode := utils.MD5(strconv.Itoa(reportId))
@@ -368,27 +354,11 @@ func Report2pdfAndJpeg(reportUrl string, reportId, reportType int) {
 		_ = os.Remove(pdfPath)
 		_ = os.Remove(pdfPath)
 	}()
 	}()
 
 
-	if reportType == 3 {
-		// 更新pdf url
-		ob := new(smart_report.SmartReport)
-		ob.SmartReportId = reportId
-		ob.DetailPdfUrl = resourceUrl
-		if err = ob.Update([]string{"DetailPdfUrl"}); err != nil {
-			utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
-			return
-		}
-	} else if reportType == 2 {
-		err = models.ModifyEnglishReportPdfUrl(reportId, resourceUrl)
-		if err != nil {
-			utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
-			return
-		}
-	} else if reportType == 1 {
-		err = models.ModifyReportPdfUrl(reportId, resourceUrl)
-		if err != nil {
-			utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
-			return
-		}
+	// 更新pdf url
+	err = models.ModifyReportPdfUrl(reportId, resourceUrl)
+	if err != nil {
+		utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
+		return
 	}
 	}
 
 
 	time.Sleep(1 * time.Minute)
 	time.Sleep(1 * time.Minute)
@@ -424,26 +394,11 @@ func Report2pdfAndJpeg(reportUrl string, reportId, reportType int) {
 		_ = os.Remove(jpegPath)
 		_ = os.Remove(jpegPath)
 	}()
 	}()
 
 
-	if reportType == 3 {
-		// 更新jpeg url
-		ob := new(smart_report.SmartReport)
-		ob.SmartReportId = reportId
-		ob.DetailImgUrl = resourceUrl
-		if err = ob.Update([]string{"DetailImgUrl"}); err != nil {
-			utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
-			return
-		}
-	} else if reportType == 2 {
-		err = models.ModifyEnglishReportImgUrl(reportId, resourceUrl)
-		if err != nil {
-			utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
-			return
-		}
-	} else if reportType == 1 {
-		err = models.ModifyReportImgUrl(reportId, resourceUrl)
-		if err != nil {
-			utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
-			return
-		}
+	err = models.ModifyReportImgUrl(reportId, resourceUrl)
+	if err != nil {
+		utils.FileLog.Info("更新研报失败, Err: \n" + err.Error())
+		return
 	}
 	}
+
+	return
 }
 }

+ 0 - 497
services/task.go

@@ -1,78 +1,27 @@
 package services
 package services
 
 
 import (
 import (
-	"eta_gn/eta_api/models"
 	"eta_gn/eta_api/services/data"
 	"eta_gn/eta_api/services/data"
 	"eta_gn/eta_api/utils"
 	"eta_gn/eta_api/utils"
 	"fmt"
 	"fmt"
 	"strings"
 	"strings"
-	"time"
 )
 )
 
 
 func Task() {
 func Task() {
 	fmt.Println("task start")
 	fmt.Println("task start")
 
 
-	{
-		// 修复客户试用数据
-		//FixCompanyUpdateData()
-		//FixCompanyTryDay()
-		//FixCompanyTryDay()
-		//StaticCompanyTryDay()
-		//return
-	}
-
-	//FixPermissionStatus()
-	//GetCompanyInfo()
-	//ReportCount()
-	//windSourceUrl:=`http://47.100.166.55:7002/edbInfo/wind/?EdbCode=M0001427&StartDate=2020-11-01&EndDate=2021-03-01`
-	//data.AddAllArticle()
-
-	//data.GetSmmIndex()
-	//data.GetSmmIndexData()
-
-	//go AutoInsertLogToDB()
-
 	//手工数据表格导入后的指标库刷新
 	//手工数据表格导入后的指标库刷新
 	go ImportManualDataRefresh()
 	go ImportManualDataRefresh()
 
 
-	//修复用户关注标识
-	//GetWxUsersSubscribe()
-
-	//go AutoInsertAdminOperateRecordToDB()
-
 	// 指标刷新
 	// 指标刷新
 	go data.HandleEdbRefreshQueue()
 	go data.HandleEdbRefreshQueue()
 
 
 	// 进行指标替换操作
 	// 进行指标替换操作
 	go DealReplaceEdbCache()
 	go DealReplaceEdbCache()
 
 
-	// TODO:修复权限
-	//FixEnCompanyPermission()
 	fmt.Println("task end")
 	fmt.Println("task end")
 }
 }
 
 
-//// 每日发布晨报
-//func AutoPublishDayReport() {
-//	defer func() {
-//		if err := recover(); err != nil {
-//			fmt.Println("[AutoPublishDayReport]", err)
-//		}
-//	}()
-//
-//	// 每日8:42发布晨报
-//	ticker := time.Tick(50 * time.Second)
-//	for range ticker {
-//		nowTime := time.Now()
-//		clock := nowTime.Format("1504")
-//		if clock == "0842" {
-//			if err := PublishTodayDayReport(); err != nil {
-//				go alarm_msg.SendAlarmMsg(fmt.Sprint("每日晨报自动发送 AutoPublishDayReport ERR:", err), 3)
-//				//utils.SendEmail(utils.APPNAME+" "+utils.RunMode+" 失败提醒", fmt.Sprint("AutoPublishDayReport ERR:", err), utils.EmailSendToUsers)
-//			}
-//		}
-//	}
-//}
-
 // ImportManualDataRefresh 导入手工数据后的刷新
 // ImportManualDataRefresh 导入手工数据后的刷新
 func ImportManualDataRefresh() {
 func ImportManualDataRefresh() {
 	defer func() {
 	defer func() {
@@ -90,449 +39,3 @@ func ImportManualDataRefresh() {
 		})
 		})
 	}
 	}
 }
 }
-
-//func init()  {
-//	fmt.Println("start task init")
-//	UpdateEnglishEmailLogErrMsg()
-//	fmt.Println("end task init")
-//}
-//
-//// UpdateEnglishEmailLogErrMsg 更新英文邮件日志的ErrMsg(研报后台4.2上线后执行, 仅一次)
-//func UpdateEnglishEmailLogErrMsg() {
-//	var cond string
-//	var pars []interface{}
-//	list, e := models.GetEnglishReportEmailLogList(cond, pars)
-//	if e != nil {
-//		fmt.Println("获取日志列表失败")
-//		return
-//	}
-//	for _, v := range list {
-//		if v.SendStatus != 0 || v.Source != 1 || v.Result == "" || v.ErrMsg != "" {
-//			continue
-//		}
-//		// 取出错误信息
-//		fmt.Printf("正在更新%d\n", v.Id)
-//		r := new(AliyunEmailResult)
-//		if e = json.Unmarshal([]byte(v.Result), &r); e != nil {
-//			fmt.Println("JSON解析报错了1" + e.Error())
-//			continue
-//		}
-//		rd := new(AliyunEmailResultData)
-//		res := strings.Replace(r.Data, `\`, ``, -1)
-//		if e = json.Unmarshal([]byte(res), &rd); e != nil {
-//			fmt.Println("JSON解析报错了2" + e.Error())
-//			continue
-//		}
-//		v.ErrMsg = rd.Message
-//		if e = v.Update([]string{"ErrMsg"}); e != nil {
-//			fmt.Println("更新失败了" + e.Error())
-//			continue
-//		}
-//	}
-//	fmt.Println("更新成功")
-//}
-
-//func FixCompanyUpdateData1() {
-//	list, err := company.GetCompanyProductUpdateLogList()
-//	if err != nil {
-//		fmt.Println("获取客户变更数据失败:", err)
-//		return
-//	}
-//
-//	nowTime := time.Now()
-//	for _, v := range list {
-//		//item, tmpErr := company.GetCompanyProductLogItem(v.CompanyId, v.ProductId, v.CreateTime)
-//		//if tmpErr != nil {
-//		//	fmt.Println(v.Id, "找数据,", tmpErr)
-//		//	continue
-//		//}
-//
-//		//permissionList := make([]*company.CompanyReportPermission, 0)
-//		//switch v.Source {
-//		//case "add", "receive", "thaw", "delay", "apply_receive":
-//		//
-//		//}
-//		permissionList, err := company.GetCompanyReportPermission(v.CompanyId, v.ProductId)
-//		if err != nil {
-//			fmt.Println("err:", err)
-//			continue
-//		}
-//
-//		startDate := v.CreateTime
-//		endDate := v.CreateTime.AddDate(0, 2, 0)
-//		isStop := 1
-//		realEndDate := endDate
-//		if realEndDate.After(nowTime) {
-//			realEndDate = nowTime
-//			isStop = 0
-//		}
-//		for _, permission := range permissionList {
-//			permission.StartDate = startDate.Format(utils.FormatDate)
-//			permission.EndDate = v.CreateTime.Format(utils.FormatDate)
-//		}
-//		companyProductTryOutUpdateLogItem := &company.CompanyProductTryOutUpdateLog{
-//			Id:          0,
-//			CompanyId:   v.CompanyId,
-//			ProductId:   v.ProductId,
-//			SellerId:    v.SellerId,
-//			SellerName:  v.SellerName,
-//			Source:      v.Source,
-//			StartDate:   startDate,
-//			EndDate:     endDate,
-//			RealEndDate: realEndDate,
-//			IsStop:      isStop,
-//			CreateTime:  v.CreateTime,
-//		}
-//		err = company.AddCompanyProductTryOutUpdateLog(companyProductTryOutUpdateLogItem, permissionList)
-//	}
-//	//fmt.Println("结束")
-//}
-
-//func FixCompanyUpdateData2() {
-//	list, err := company.GetTryOutCompanyOperationRecordList()
-//	if err != nil {
-//		fmt.Println("获取客户变更数据失败:", err)
-//		return
-//	}
-//
-//	nowTime := time.Now()
-//	for _, v := range list {
-//		//item, tmpErr := company.GetCompanyProductLogItem(v.CompanyId, v.ProductId, v.CreateTime)
-//		//if tmpErr != nil {
-//		//	fmt.Println(v.Id, "找数据,", tmpErr)
-//		//	continue
-//		//}
-//
-//		//permissionList := make([]*company.CompanyReportPermission, 0)
-//		//switch v.Source {
-//		//case "add", "receive", "thaw", "delay", "apply_receive":
-//		//
-//		//}
-//		permissionList, err := company.GetCompanyReportPermission(v.CompanyId, v.ProductId)
-//		if err != nil {
-//			fmt.Println("err:", err)
-//			continue
-//		}
-//
-//		startDate := v.CreateTime
-//		endDate := v.CreateTime.AddDate(0, 2, 0)
-//		isStop := 1
-//		realEndDate := endDate
-//		if realEndDate.After(nowTime) {
-//			realEndDate = nowTime
-//			isStop = 0
-//		}
-//		for _, permission := range permissionList {
-//			permission.StartDate = startDate.Format(utils.FormatDate)
-//			permission.EndDate = v.CreateTime.Format(utils.FormatDate)
-//		}
-//		sellerName := ``
-//		{
-//			sysUser, _ := system.GetSysAdminById(v.SellerId)
-//			if sysUser != nil {
-//				sellerName = sysUser.RealName
-//			}
-//		}
-//		companyProductTryOutUpdateLogItem := &company.CompanyProductTryOutUpdateLog{
-//			Id:          0,
-//			CompanyId:   v.CompanyId,
-//			ProductId:   v.ProductId,
-//			SellerId:    v.SellerId,
-//			SellerName:  sellerName,
-//			Source:      "formal_to_try_out",
-//			StartDate:   startDate,
-//			EndDate:     endDate,
-//			RealEndDate: realEndDate,
-//			IsStop:      isStop,
-//			CreateTime:  v.CreateTime,
-//		}
-//		err = company.AddCompanyProductTryOutUpdateLog(companyProductTryOutUpdateLogItem, permissionList)
-//	}
-//	fmt.Println("结束")
-//}
-
-// FixCompanyTryDay 修复试用天数
-//func FixCompanyTryDay() {
-//	list, err := company.GetCompanyProductTryOutUpdateGroup()
-//	if err != nil {
-//		fmt.Println("获取客户变更数据失败:", err)
-//		return
-//	}
-//
-//	lenList := len(list)
-//	for k, v := range list {
-//		fmt.Println("剩余", lenList-k-1, "条数据修复")
-//		companyProduct, tmpErr := company.GetCompanyProductByCompanyIdAndProductId(v.CompanyId, v.ProductId)
-//		if tmpErr != nil {
-//			fmt.Println("company_id:", v.CompanyId, ";product_id:", v.ProductId, ";找不到对应的客户,Err:", tmpErr)
-//			continue
-//		}
-//
-//		logList, err := company.GetCompanyProductTryOutUpdateList(v.CompanyId, v.ProductId)
-//		if err != nil {
-//			fmt.Println("查找客户日志失败,err:", err)
-//			continue
-//		}
-//
-//		//lenLog := len(logList)
-//		var day int //实际试用天数
-//		var endDate time.Time
-//		for _, log := range logList {
-//			startDate := log.StartDate
-//			if endDate.IsZero() {
-//				endDate = log.RealEndDate
-//				day = utils.GetTimeSubDay(startDate, log.RealEndDate) + 1
-//			} else {
-//				if log.RealEndDate.After(endDate) {
-//					if endDate.After(startDate) {
-//						startDate = endDate
-//					}
-//					if startDate.Equal(log.EndDate) {
-//						day += utils.GetTimeSubDay(startDate, log.RealEndDate)
-//					} else {
-//						day += utils.GetTimeSubDay(startDate, log.RealEndDate) + 1
-//					}
-//					endDate = log.RealEndDate
-//				}
-//			}
-//		}
-//		companyProduct.TryOutDayTotal = day
-//		companyProduct.Update([]string{"TryOutDayTotal"})
-//	}
-//	fmt.Println("结束")
-//}
-
-// StaticCompanyTryDay 定时任务每天更新试用天数
-//func StaticCompanyTryDay() {
-//	list, err := company.GetCompanyProductTryOutUpdateNoStopGroup()
-//	if err != nil {
-//		fmt.Println("获取客户变更数据失败:", err)
-//		return
-//	}
-//
-//	lenList := len(list)
-//	for k, v := range list {
-//		isAdd := false //是否要增加一天,默认不加
-//		fmt.Println("剩余", lenList-k-1, "条数据修复")
-//		permissionList, tmpErr := company.GetCompanyReportPermissionByStatus(v.CompanyId, v.ProductId, "试用")
-//		if tmpErr == nil {
-//			fmt.Println("company_id:", v.CompanyId, ";product_id:", v.ProductId, ";寻找对应的试用品种失败,Err:", tmpErr)
-//			continue
-//		}
-//		currPermissionIdList := make([]int, 0) //当前试用的品种
-//		for _, permission := range permissionList {
-//			currPermissionIdList = append(currPermissionIdList, permission.ChartPermissionId)
-//		}
-//
-//		//获取所有未停止的记录列表
-//		logList, err := company.GetCompanyProductTryOutUpdateNoStopListByEndDate(v.CompanyId, v.ProductId)
-//		if err != nil {
-//			fmt.Println("查找客户日志失败,err:", err)
-//			continue
-//		}
-//
-//		logPermissionIdList := make([]int, 0) //当前日志中的试用的品种
-//		for _, log := range logList {
-//			//获取所有未停止的品种试用记录列表
-//			logPermissionList, tmpErr := company.GetCompanyProductTryOutPermissionUpdateNoStopListByEndDate(log.Id)
-//			if tmpErr != nil {
-//				fmt.Println("查找客户品种变更日志失败,err:", tmpErr)
-//				continue
-//			}
-//			lenLogPermissionList := len(logPermissionList) //当前日志存在试用的品种数量
-//			stopPermission := 0                            //当前日志需要停止的品种数量
-//
-//			currTime := time.Now() //当前时间
-//			for _, logPermission := range logPermissionList {
-//				if utils.InArrayByInt(logPermissionIdList, logPermission.ChartPermissionId) {
-//					// 如果已经被其他记录使用了,那么就将当前记录给标记停止
-//					logPermission.IsStop = 1
-//
-//					// 如果当前时间晚于结束日期,那么实际结束日期就是今天之前一天,否则就是当天
-//					if currTime.After(logPermission.EndDate) {
-//						logPermission.RealEndDate = currTime.AddDate(0, 0, -1)
-//					} else {
-//						logPermission.RealEndDate = time.Now()
-//					}
-//					logPermission.Update([]string{"IsStop", "RealEndDate"})
-//					stopPermission++
-//					continue
-//				} else if !utils.InArrayByInt(currPermissionIdList, logPermission.ChartPermissionId) {
-//					// 如果该品种不在当前客户的品种里面,那么也要将当前记录给标记停止
-//					logPermission.IsStop = 1
-//					// 如果当前时间晚于结束日期,那么实际结束日期就是今天之前一天,否则就是当天
-//					if currTime.After(logPermission.EndDate) {
-//						logPermission.RealEndDate = currTime.AddDate(0, 0, -1)
-//					} else {
-//						logPermission.RealEndDate = time.Now()
-//					}
-//					logPermission.Update([]string{"IsStop", "RealEndDate"})
-//					stopPermission++
-//					continue
-//				}
-//
-//				// 剩下的说明还处于试用状态,需要添加1天试用期,且需要把该品种加入到当前日志中的试用的品种列表
-//				isAdd = true
-//				logPermissionIdList = append(logPermissionIdList, logPermission.ChartPermissionId)
-//			}
-//
-//			//如果当前日志存在试用的品种数量 == 当前日志需要停止的品种数量
-//			// 那么当前日志也是处于停用状态
-//			if lenLogPermissionList == stopPermission {
-//				log.IsStop = 1
-//				// 如果当前时间晚于结束日期,那么实际结束日期就是今天之前一天,否则就是当天
-//				if currTime.After(log.EndDate) {
-//					log.RealEndDate = currTime.AddDate(0, 0, -1)
-//				} else {
-//					log.RealEndDate = time.Now()
-//				}
-//				log.Update([]string{"IsStop", "RealEndDate"})
-//			}
-//
-//		}
-//
-//		// 如果需要添加,那么将该客户品种添加1天
-//		if isAdd {
-//
-//		}
-//		// 更新客户产品的试用天数
-//		tmpErr = company.AddCompanyProductTryOutDayTotal(v.CompanyId, v.ProductId)
-//		if tmpErr != nil {
-//			fmt.Println("company_id:", v.CompanyId, ";product_id:", v.ProductId, ";更新客户产品的试用天数,Err:", tmpErr)
-//			continue
-//		}
-//	}
-//	fmt.Println("结束")
-//}
-
-//func Task2() {
-//	fmt.Println("task start")
-//
-//	//_, _ = maycur.GetPublicOfferingSaleLeader()
-//	//_ = maycur.TestSyncCompanyProfile()
-//	//_ = maycur.SyncCompanyProfile()
-//	//_ = maycur.ImportExcelEmployeeId()
-//	//_ = maycur.ApiTest()
-//	//_ = maycur.ApiTest2()
-//	fmt.Println("task end")
-//}
-
-// FixEnCompanyPermission 英文权限上线时修复英文客户拥有所有权限(一次性)
-func FixEnCompanyPermission() {
-	var err error
-	defer func() {
-		if err != nil {
-			fmt.Println("FixEnCompanyPermission Err: ", err.Error())
-		}
-	}()
-
-	// 获取正式客户
-	companies := make([]*models.EnglishCompany, 0)
-	{
-		cond := ` AND status = ?`
-		pars := make([]interface{}, 0)
-		pars = append(pars, 1)
-		list, e := models.GetEnglishCompanyList(cond, pars, "")
-		if e != nil {
-			err = fmt.Errorf("GetEnglishCompanyList err: %s", e.Error())
-			return
-		}
-		companies = list
-	}
-
-	// 获取所有权限
-	permissions := make([]*models.EnPermission, 0)
-	{
-		cond := ` AND parent_id > ?`
-		pars := make([]interface{}, 0)
-		pars = append(pars, 0)
-		ob := new(models.EnPermission)
-		list, e := ob.GetItemsByCondition(cond, pars, []string{}, "")
-		if e != nil {
-			err = fmt.Errorf("GetPermissionItemsByCondition err: %s", e.Error())
-			return
-		}
-		permissions = list
-	}
-
-	for _, c := range companies {
-		ps := make([]*models.EnCompanyPermission, 0)
-		for _, p := range permissions {
-			ps = append(ps, &models.EnCompanyPermission{
-				EnCompanyId:    c.CompanyId,
-				EnPermissionId: p.EnPermissionId,
-				CreateTime:     time.Now().Local(),
-			})
-		}
-		if e := models.ClearAndCreateEnCompanyPermissions(c.CompanyId, ps); e != nil {
-			err = fmt.Errorf("ClearAndCreateEnCompanyPermissions err: %s", e.Error())
-			return
-		}
-	}
-	fmt.Println("修复完成")
-}
-
-// ModifyEsEnglishReport 批量修改es里的英文研报信息和线上路演信息
-func ModifyEsEnglishReport() {
-	fmt.Println("开始")
-	err := ModifyAllEsEnglishReportVideo()
-	if err != nil {
-		err = fmt.Errorf("重置es中的英文研报信息失败:ModifyAllEnglishReportInEs err: %s", err.Error())
-		return
-	}
-	fmt.Println("结束")
-}
-
-//func InsertBloombergIndex() {
-//	fmt.Println("开始写入")
-//
-//	start := 100000
-//	now := time.Now()
-//	for i := 1; i <= 100; i++ {
-//		fmt.Printf("写入第%d个\n", i)
-//
-//		start += 1
-//		index := new(data_manage.BaseFromBloombergIndex)
-//		index.IndexCode = fmt.Sprintf("BLID%d", start)
-//		index.IndexName = fmt.Sprintf("模拟Bloomberg-%s", index.IndexCode)
-//		index.Unit = "无"
-//		index.Source = utils.DATA_SOURCE_BLOOMBERG
-//		index.Frequency = "日度"
-//		index.StartDate = now.AddDate(0, 0, -i)
-//		index.EndDate = now
-//		index.CreateTime = time.Now().Local()
-//		index.ModifyTime = time.Now().Local()
-//		if e := index.Create(); e != nil {
-//			fmt.Printf("新增指标失败, IndexCode: %s, err: %s", index.IndexCode, e.Error())
-//			return
-//		}
-//
-//		insertData := make([]*data_manage.BaseFromBloombergData, 0)
-//		for ii := 0; ii <= 50; ii++ {
-//			indexData := new(data_manage.BaseFromBloombergData)
-//			indexData.BaseFromBloombergIndexId = index.BaseFromBloombergIndexId
-//			indexData.IndexCode = index.IndexCode
-//			indexData.DataTime = now.AddDate(0, 0, -ii)
-//			va := GenerateRandomFloat64InRange()
-//			va += float64(ii)
-//			indexData.Value = va
-//			indexData.CreateTime = time.Now().Local()
-//			indexData.ModifyTime = time.Now().Local()
-//			indexData.DataTimestamp = int(indexData.DataTime.UnixNano() / 1e6)
-//			insertData = append(insertData, indexData)
-//		}
-//		ob := new(data_manage.BaseFromBloombergData)
-//		if e := ob.CreateMulti(insertData); e != nil {
-//			fmt.Printf("新增指标数据失败, IndexCode: %s, err: %s", index.IndexCode, e.Error())
-//			return
-//		}
-//	}
-//
-//	fmt.Println("结束写入")
-//}
-//
-//func GenerateRandomFloat64InRange() float64 {
-//	var rnd = rand.New(rand.NewSource(time.Now().UnixNano())) // 设置随机数种子
-//
-//	return rnd.Float64()*11000 - 1000
-//}

+ 0 - 129
services/tencent_yun.go

@@ -1,14 +1,11 @@
 package services
 package services
 
 
 import (
 import (
-	"encoding/json"
 	"errors"
 	"errors"
 	"eta_gn/eta_api/utils"
 	"eta_gn/eta_api/utils"
 	"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
 	"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
-	tencentErr "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
 	"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
 	"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
 	ses "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses/v20201002"
 	ses "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses/v20201002"
-	"time"
 )
 )
 
 
 // TencentEmail 腾讯云邮件
 // TencentEmail 腾讯云邮件
@@ -38,107 +35,6 @@ func (te *TencentEmail) NewClient() (err error) {
 	return
 	return
 }
 }
 
 
-// TencentEmailTemplateData 邮箱模板替换数据
-type TencentEmailTemplateData struct {
-	REPORT_TITLE      string `description:"报告标题"`
-	REPORT_ABSTRACT   string `description:"报告摘要"`
-	REPORT_CONTENT    string `description:"报告内容"`
-	REPORT_SHARE_LINK string `description:"报告分享链接"`
-	REPORT_TIME       string `description:"报告时间"`
-}
-
-// TencentEmailResult 邮件推送响应体
-type TencentEmailResult struct {
-	Code      string `description:"错误码"`
-	Message   string `description:"响应信息"`
-	RequestId string `description:"请求成功-请求ID"`
-}
-
-// SendEmail 推送模板邮件
-func (te *TencentEmail) SendEmail(req *EnglishReportSendEmailRequest) (ok bool, result string, err error) {
-	if te.Client == nil {
-		if e := te.NewClient(); e != nil {
-			err = e
-			return
-		}
-	}
-	// 实例化一个请求对象,每个接口都会对应一个request对象
-	request := ses.NewSendEmailRequest()
-
-	// 模板数据替换
-	tmpData := &TencentEmailTemplateData{
-		REPORT_TITLE:      req.ReportTitle,
-		REPORT_ABSTRACT:   req.ReportAbstract,
-		REPORT_CONTENT:    req.ReportContent,
-		REPORT_SHARE_LINK: req.ReportShareLink,
-		REPORT_TIME:       req.ReportTime,
-	}
-	tmpDataByte, e := json.Marshal(tmpData)
-	if e != nil {
-		err = e
-		return
-	}
-	tmpDataStr := string(tmpDataByte)
-	request.Template = &ses.Template{
-		TemplateID:   common.Uint64Ptr(utils.TencentEmailTemplateID),
-		TemplateData: common.StringPtr(tmpDataStr),
-	}
-	request.FromEmailAddress = common.StringPtr(utils.TencentEmailFromEmailAddress)
-	request.Destination = common.StringPtrs([]string{req.Email})
-	request.Subject = common.StringPtr(req.Subject)
-
-	// 返回的resp是一个SendEmailResponse的实例,与请求对象对应
-	response, e := te.Client.SendEmail(request)
-	if _, o := e.(*tencentErr.TencentCloudSDKError); o {
-		errByte, _ := json.Marshal(e)
-		result = string(errByte)
-		return
-	}
-	if e != nil {
-		err = e
-		return
-	}
-	ok = true
-	result = response.ToJsonString()
-	return
-}
-
-// BatchSendEmail 批量推送邮件
-func (te *TencentEmail) BatchSendEmail(list []*EnglishReportSendEmailRequest) (results []*EnglishReportSendEmailResult, err error) {
-	results = make([]*EnglishReportSendEmailResult, 0)
-	if len(list) == 0 {
-		return
-	}
-	if e := te.NewClient(); e != nil {
-		err = e
-		return
-	}
-
-	// SendEmail接口有QPS20的限制, 保险起见每秒只请求10次接口
-	max := 10
-	c := 0
-	for i := range list {
-		if c >= max {
-			time.Sleep(time.Second)
-			c = 0
-		}
-		c += 1
-
-		dataByte, _ := json.Marshal(list[i])
-		ok, result, _ := te.SendEmail(list[i])
-		results = append(results, &EnglishReportSendEmailResult{
-			ReportId:   list[i].ReportId,
-			EmailId:    list[i].EmailId,
-			Email:      list[i].Email,
-			Ok:         ok,
-			SendData:   string(dataByte),
-			ResultData: result,
-			Source:     1,
-		})
-	}
-	return
-}
-
 // TencentEmailCallBack 回调请求体
 // TencentEmailCallBack 回调请求体
 type TencentEmailCallBack struct {
 type TencentEmailCallBack struct {
 	Event      string `description:"事件类型"`
 	Event      string `description:"事件类型"`
@@ -153,28 +49,3 @@ type TencentEmailCallBack struct {
 	FromDomain string `description:"发信域名"`
 	FromDomain string `description:"发信域名"`
 	TemplateId int    `description:"模板 Id"`
 	TemplateId int    `description:"模板 Id"`
 }
 }
-
-//func init() {
-//	fmt.Println("start email init")
-//
-//	te := new(TencentEmail)
-//	te.NewClient()
-//	req := new(EnglishReportSendEmailRequest)
-//	req.Subject = "这是一封邮件的主题"
-//	req.Email = ""
-//	req.ReportTitle = "Report Hello World"
-//	req.ReportAbstract = "This is abstract"
-//	req.ReportContent = "This is content"
-//	req.ReportShareLink = "https://share.hzinsights.com/reportEn?code=a226e450e214f350856e2980b6e55ac9"
-//	req.ReportTime = "2022/11/23"
-//
-//	ok, result, e := te.SendEmail(req)
-//	fmt.Println(ok)
-//	if e != nil {
-//		fmt.Println("出错了: ", e)
-//	} else {
-//		fmt.Println("没出错: ", result)
-//	}
-//
-//	fmt.Println("end email init")
-//}

+ 9 - 45
services/user_login.go

@@ -4,7 +4,6 @@ import (
 	"encoding/json"
 	"encoding/json"
 	"errors"
 	"errors"
 	"eta_gn/eta_api/models"
 	"eta_gn/eta_api/models"
-	"eta_gn/eta_api/models/company"
 	"eta_gn/eta_api/models/system"
 	"eta_gn/eta_api/models/system"
 	"eta_gn/eta_api/utils"
 	"eta_gn/eta_api/utils"
 	"fmt"
 	"fmt"
@@ -115,50 +114,15 @@ func SendAdminEmailVerifyCode(source int, email string) (ok bool, err error) {
 	}
 	}
 
 
 	var result string
 	var result string
-	if confMap[models.BusinessConfEmailClient] == models.BusinessConfEmailClientSmtp {
-		// 普通邮箱
-		var emailReq SendEmailReq
-		emailReq.Title = subjectConf
-		emailReq.Content = emailContent
-		emailReq.ToUser = append(emailReq.ToUser, email)
-		ok, e = SendEmail(emailReq)
-		if e != nil {
-			err = fmt.Errorf("邮箱推送失败, Err: %s", e.Error())
-			return
-		}
-	} else {
-		// 默认阿里云邮箱
-		// 读取发信人昵称配置...后面可以优化一下
-		authKey := "english_report_email_conf"
-		emailConf, e := company.GetConfigDetailByCode(authKey)
-		if e != nil {
-			err = fmt.Errorf("获取群发邮件权限失败, Err: %s", e.Error())
-			return
-		}
-		if emailConf.ConfigValue == "" {
-			err = fmt.Errorf("邮件配置为空, 不可推送")
-			return
-		}
-		conf := new(models.EnglishReportEmailConf)
-		if e = json.Unmarshal([]byte(emailConf.ConfigValue), &conf); e != nil {
-			err = fmt.Errorf("邮件配置有误, 不可推送")
-			return
-		}
-
-		req := new(EnglishReportSendEmailRequest)
-		req.Subject = subjectConf
-		req.Email = email
-		req.FromAlias = conf.FromAlias // 发信人昵称
-		req.HtmlBody = emailContent
-
-		aliEmail := new(AliyunEmail)
-		o, r, e := aliEmail.SendEmail(req)
-		if e != nil {
-			err = fmt.Errorf("阿里云邮箱推送失败, Err: %s", e.Error())
-			return
-		}
-		ok = o
-		result = r
+	// 普通邮箱
+	var emailReq SendEmailReq
+	emailReq.Title = subjectConf
+	emailReq.Content = emailContent
+	emailReq.ToUser = append(emailReq.ToUser, email)
+	ok, e = SendEmail(emailReq)
+	if e != nil {
+		err = fmt.Errorf("邮箱推送失败, Err: %s", e.Error())
+		return
 	}
 	}
 
 
 	record.SendStatus = system.AdminVerifyCodeRecordStatusSuccess
 	record.SendStatus = system.AdminVerifyCodeRecordStatusSuccess