hsun 1 year ago
parent
commit
4cccf3ea79

+ 133 - 125
controllers/english_report/english_classify.go

@@ -1,133 +1,141 @@
 package english_report
 
-//// EnglishClassifyController 英文分类
+import (
+	"fmt"
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"hongze/hz_crm_api/models"
+	"hongze/hz_crm_api/utils"
+	"sort"
+)
+
+// 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()
-//	}()
-//	pageSize, _ := this.GetInt("PageSize")
-//	currentIndex, _ := this.GetInt("CurrentIndex")
-//	keyWord := this.GetString("KeyWord")
-//	classifyType, _ := this.GetInt("ClassifyType", 0)
-//
-//	var startSize int
-//	if pageSize <= 0 {
-//		pageSize = utils.PageSize20
-//	}
-//	if currentIndex <= 0 {
-//		currentIndex = 1
-//	}
-//
-//	startSize = utils.StartIndex(currentIndex, pageSize)
-//
-//	page := paging.GetPaging(currentIndex, pageSize, 0)
-//	resp := new(models.EnglishClassifyListResp)
-//
-//	list, err := models.GetEnglishClassifyList(startSize, pageSize, keyWord, classifyType)
-//	if err != nil {
-//		br.Msg = "获取失败"
-//		br.ErrMsg = "获取失败,Err:" + err.Error()
-//		return
-//	}
-//	total, err := models.GetEnglishClassifyListCount(keyWord, classifyType)
-//	if err != nil {
-//		br.Msg = "获取失败"
-//		br.ErrMsg = "获取失败,Err:" + err.Error()
-//		return
-//	}
-//	if total == 0 {
-//		resp.List = make([]*models.EnglishClassifyList, 0)
-//		resp.Paging = page
-//
-//		br.Data = resp
-//		br.Ret = 200
-//		br.Success = true
-//		br.Msg = "获取成功"
-//		return
-//	}
-//	var parentIds []int
-//	for _, v := range list {
-//		parentIds = append(parentIds, v.Id)
-//	}
-//
-//	childMap := make(map[int][]*models.EnglishClassifyList)
-//	tmpList, err := models.GetEnglishClassifyChildByParentIds(parentIds, keyWord, classifyType)
-//	if err != nil {
-//		br.Msg = "获取二级分类失败"
-//		br.ErrMsg = "获取二级分类失败,Err:" + err.Error()
-//		return
-//	}
-//
-//	// 二级分类-品种权限
-//	permissionMap := make(map[int][]int)
-//	{
-//		classifyIds := make([]int, 0)
-//		for _, v := range tmpList {
-//			classifyIds = append(classifyIds, v.Id)
-//		}
-//		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 {
-//		v.EnPermissions = permissionMap[v.Id]
-//		childMap[v.ParentId] = append(childMap[v.ParentId], v)
-//	}
-//	for _, v := range list {
-//		if child, ok := childMap[v.Id]; ok {
-//			v.Child = child
-//		}
-//	}
-//	var sortList models.RSClassifyList
-//	sortList = list
-//	sort.Sort(sortList)
-//
-//	for _, item := range sortList {
-//		var sortChildList models.RSChildClassifyList
-//		sortChildList = item.Child
-//		sort.Sort(sortChildList)
-//		item.Child = sortChildList
-//	}
-//	resp.List = sortList
-//	resp.Paging = page
-//
-//	br.Data = resp
-//	br.Ret = 200
-//	br.Success = true
-//	br.Msg = "获取成功"
-//}
-//
+
+// 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()
+	}()
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	keyWord := this.GetString("KeyWord")
+	classifyType, _ := this.GetInt("ClassifyType", 0)
+
+	var startSize int
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+
+	startSize = utils.StartIndex(currentIndex, pageSize)
+
+	page := paging.GetPaging(currentIndex, pageSize, 0)
+	resp := new(models.EnglishClassifyListResp)
+
+	list, err := models.GetEnglishClassifyList(startSize, pageSize, keyWord, classifyType)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	total, err := models.GetEnglishClassifyListCount(keyWord, classifyType)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	if total == 0 {
+		resp.List = make([]*models.EnglishClassifyList, 0)
+		resp.Paging = page
+
+		br.Data = resp
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+		return
+	}
+	var parentIds []int
+	for _, v := range list {
+		parentIds = append(parentIds, v.Id)
+	}
+
+	childMap := make(map[int][]*models.EnglishClassifyList)
+	tmpList, err := models.GetEnglishClassifyChildByParentIds(parentIds, keyWord, classifyType)
+	if err != nil {
+		br.Msg = "获取二级分类失败"
+		br.ErrMsg = "获取二级分类失败,Err:" + err.Error()
+		return
+	}
+
+	// 二级分类-品种权限
+	permissionMap := make(map[int][]int)
+	{
+		classifyIds := make([]int, 0)
+		for _, v := range tmpList {
+			classifyIds = append(classifyIds, v.Id)
+		}
+		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 {
+		v.EnPermissions = permissionMap[v.Id]
+		childMap[v.ParentId] = append(childMap[v.ParentId], v)
+	}
+	for _, v := range list {
+		if child, ok := childMap[v.Id]; ok {
+			v.Child = child
+		}
+	}
+	var sortList models.RSClassifyList
+	sortList = list
+	sort.Sort(sortList)
+
+	for _, item := range sortList {
+		var sortChildList models.RSChildClassifyList
+		sortChildList = item.Child
+		sort.Sort(sortChildList)
+		item.Child = sortChildList
+	}
+	resp.List = sortList
+	resp.Paging = page
+
+	br.Data = resp
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+}
+
 //// @Title 新增分类
 //// @Description 新增分类接口
 //// @Param   ClassifyName   int  true       "分类名称"

+ 7 - 6
controllers/english_report/report.go

@@ -1,11 +1,12 @@
 package english_report
 
-//
-//// EnglishReportController 研报活动模块
-//type EnglishReportController struct {
-//	controllers.BaseAuthController
-//}
-//
+import "hongze/hz_crm_api/controllers"
+
+// EnglishReportController 研报活动模块
+type EnglishReportController struct {
+	controllers.BaseAuthController
+}
+
 //// @Title 新增报告接口
 //// @Description 新增报告
 //// @Param	request	body models.AddEnglishReportReq true "type json string"

+ 66 - 0
controllers/report.go

@@ -245,3 +245,69 @@ func (this *ReportController) SetDayWeekReportEnableRule() {
 	br.Success = true
 	br.Msg = "操作成功"
 }
+
+// GetStopDayWeekReportChapterTypeList
+// @Title 获取暂停更新的晨报周报章节类型列表
+// @Description 获取暂停更新的晨报周报章节类型列表
+// @Success 200 {object} models.ReportListResp
+// @router /getStopDayWeekReportChapterTypeList [get]
+func (this *ReportController) GetStopDayWeekReportChapterTypeList() {
+	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
+	}
+
+	stopDay := make([]*models.ReportChapterType, 0)
+	stopWeek := make([]*models.ReportChapterType, 0)
+	disableDay := make([]*models.ReportChapterType, 0)
+	disableWeek := make([]*models.ReportChapterType, 0)
+
+	stopList, err := models.GetStopUpdateReportChapterTypeListByResearchType()
+	if err != nil {
+		br.Msg = "获取暂停更新报告章节类型列表失败"
+		br.ErrMsg = "获取暂停更新报告章节类型列表失败, Err: " + err.Error()
+		return
+	}
+
+	for _, v := range stopList {
+		if v.ResearchType == "day" {
+			stopDay = append(stopDay, v)
+		} else {
+			stopWeek = append(stopWeek, v)
+		}
+	}
+
+	disableList, err := models.GetDisableUpdateReportChapterTypeListByResearchType()
+	if err != nil {
+		br.Msg = "获取停止更新报告章节类型列表失败"
+		br.ErrMsg = "获取停止更新报告章节类型列表失败, Err: " + err.Error()
+		return
+	}
+	for _, v := range disableList {
+		if v.ResearchType == "day" {
+			disableDay = append(disableDay, v)
+		} else {
+			disableWeek = append(disableWeek, v)
+		}
+	}
+
+	resp := models.StopUpdateReportChapterTypeResp{
+		StopDay:     stopDay,
+		StopWeek:    stopWeek,
+		DisableDay:  disableDay,
+		DisableWeek: disableWeek,
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 579 - 0
models/english_report.go

@@ -2,6 +2,7 @@ package models
 
 import (
 	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
 	"hongze/hz_crm_api/utils"
 	"strings"
 	"time"
@@ -53,6 +54,19 @@ func GetEnglishReportStage(classifyIdFirst, classifyIdSecond int) (count int, er
 	return
 }
 
+func GetEnglishReportStageEdit(classifyIdFirst, classifyIdSecond, reportId int) (count int, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := ``
+	if classifyIdSecond > 0 {
+		sql = "SELECT MAX(stage) AS max_stage FROM english_report WHERE classify_id_second=? AND id<>? "
+		o.Raw(sql, classifyIdSecond, reportId).QueryRow(&count)
+	} else {
+		sql = "SELECT MAX(stage) AS max_stage FROM english_report WHERE classify_id_first=? AND id<>? "
+		o.Raw(sql, classifyIdFirst, reportId).QueryRow(&count)
+	}
+	return
+}
+
 func AddEnglishReport(item *EnglishReport) (lastId int64, err error) {
 	o := orm.NewOrmUsingDB("rddp")
 	lastId, err = o.Insert(item)
@@ -66,6 +80,57 @@ func ModifyEnglishReportCode(reportId int64, reportCode string) (err error) {
 	return
 }
 
+type AddEnglishReportReq struct {
+	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:"频度"`
+	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:"创建时间"`
+	//Overview           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"`
@@ -88,6 +153,217 @@ type ElasticEnglishReportDetail struct {
 	Overview           string `description:"英文概述部分"`
 }
 
+func EditEnglishReport(item *EnglishReport, reportId int64) (err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	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 = o.Raw(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).Exec()
+	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:"发布时间"`
+	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:"关键点"`
+}
+
+func GetEnglishReportById(reportId int) (item *EnglishReportDetail, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `SELECT * FROM english_report WHERE id=?`
+	err = o.Raw(sql, reportId).QueryRow(&item)
+	return
+}
+
+func GetEnglishReportItemById(reportId int) (item *EnglishReport, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `SELECT * FROM english_report WHERE id = ? LIMIT 1`
+	err = o.Raw(sql, reportId).QueryRow(&item)
+	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:已发布"`
+	PublishTime        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"`
+	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:"创建者姓名"`
+}
+
+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 "
+	}
+
+	oRddp := orm.NewOrmUsingDB("rddp")
+	sql := `SELECT COUNT(1) AS count  FROM english_report WHERE 1=1 ` + companyTypeSqlStr
+	if condition != "" {
+		sql += condition
+	}
+	err = oRddp.Raw(sql, pars).QueryRow(&count)
+	return
+}
+
+func GetEnglishReportList(condition string, pars []interface{}, companyType string, startSize, pageSize int) (items []*EnglishReportList, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	//产品权限
+	companyTypeSqlStr := ``
+	if companyType == "ficc" {
+		companyTypeSqlStr = " AND classify_id_first != 40 "
+	} else if companyType == "权益" {
+		companyTypeSqlStr = " AND classify_id_first = 40 "
+	}
+
+	sql := `SELECT * 
+        FROM english_report WHERE 1=1  ` + companyTypeSqlStr
+	if condition != "" {
+		sql += condition
+	}
+	sql += `ORDER BY state ASC, modify_time DESC LIMIT ?,?`
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+func GetEnglishReportByCondition(condition string, pars []interface{}) (items []*EnglishReport, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `SELECT * 
+        FROM english_report WHERE 1=1  `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+// 发布报告
+func PublishEnglishReportById(reportId int) (err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `UPDATE english_report SET state=2,publish_time=now(),modify_time=NOW() WHERE id = ? `
+	_, err = o.Raw(sql, reportId).Exec()
+	return
+}
+
+// 取消发布报告
+func PublishCancelEnglishReport(reportIds int) (err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := ` UPDATE english_report SET state=1,publish_time=null WHERE id =?  `
+	_, err = o.Raw(sql, reportIds).Exec()
+	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) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := ` DELETE FROM english_report WHERE id =? `
+	_, err = o.Raw(sql, reportIds).Exec()
+	return
+}
+
+func EditEnglishReportContent(reportId int, content, contentSub string) (err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := ` UPDATE english_report SET content=?,content_sub=?,modify_time=NOW() WHERE id=? `
+	_, err = o.Raw(sql, content, contentSub, reportId).Exec()
+	return
+}
+
+func AddEnglishReportSaveLog(reportId, adminId int, content, contentSub, adminName string) (err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := ` INSERT INTO english_report_save_log(report_id, content,content_sub,admin_id,admin_name) VALUES (?,?,?,?,?) `
+	_, err = o.Raw(sql, reportId, content, contentSub, adminId, adminName).Exec()
+	return
+}
+
 type EnglishClassifyList struct {
 	Id            int       `orm:"column(id);pk"`
 	ClassifyName  string    `description:"分类名称"`
@@ -103,6 +379,111 @@ type EnglishClassifyList struct {
 	Child         []*EnglishClassifyList
 }
 
+type EnglishClassifyListResp struct {
+	List   []*EnglishClassifyList
+	Paging *paging.PagingItem `description:"分页数据"`
+}
+
+// 获取分类列表
+func GetEnglishClassifyList(startSize, pageSize int, keyWord string, classifyType int) (items []*EnglishClassifyList, err error) {
+	sql := ``
+	o := orm.NewOrmUsingDB("rddp")
+	if keyWord != "" {
+		sql = `SELECT * FROM (
+                   SELECT * FROM english_classify
+                   WHERE parent_id=0 AND classify_name LIKE '%` + keyWord + `%' AND classify_type = ?
+                   UNION
+                   SELECT * FROM english_classify
+                   WHERE id IN(SELECT parent_id FROM english_classify
+                   WHERE parent_id>0 AND classify_name LIKE '%` + keyWord + `%') AND classify_type = ?
+                   )AS t
+                   ORDER BY sort ASC,create_time ASC
+                   LIMIT ?,? `
+		_, err = o.Raw(sql, classifyType, classifyType, startSize, pageSize).QueryRows(&items)
+	} else {
+		sql = `SELECT * FROM english_classify WHERE parent_id=0 AND classify_type = ? ORDER BY sort ASC,create_time ASC LIMIT ?,? `
+		_, err = o.Raw(sql, classifyType, startSize, pageSize).QueryRows(&items)
+	}
+	return
+}
+
+func GetEnglishClassifyListCount(keyWord string, classifyType int) (count int, err error) {
+	sqlCount := ``
+	o := orm.NewOrmUsingDB("rddp")
+	if keyWord != "" {
+		sqlCount = `SELECT  COUNT(1) AS count FROM (
+               SELECT * FROM english_classify
+               WHERE parent_id=0 AND classify_name LIKE '%` + keyWord + `%' AND classify_type = ?
+               UNION
+               SELECT * FROM english_classify
+               WHERE id IN(SELECT parent_id FROM english_classify
+               WHERE parent_id>0 AND classify_name LIKE '%` + keyWord + `%' AND classify_type = ?)
+               )AS t `
+		err = o.Raw(sqlCount, classifyType, classifyType).QueryRow(&count)
+	} else {
+		sqlCount = `SELECT COUNT(1) AS count FROM english_classify WHERE parent_id=0 AND classify_type = ?`
+		err = o.Raw(sqlCount, classifyType).QueryRow(&count)
+	}
+
+	return
+}
+
+func GetEnglishClassifyChild(parentId int, keyWord string, classifyType int) (items []*EnglishClassify, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := ``
+	if keyWord != "" {
+		sql = `SELECT * FROM english_classify WHERE parent_id=? AND classify_type = ? AND classify_name LIKE '%` + keyWord + `%' ORDER BY create_time ASC `
+	} else {
+		sql = `SELECT * FROM english_classify WHERE parent_id=? AND classify_type = ? ORDER BY create_time ASC `
+	}
+	_, err = o.Raw(sql, parentId, classifyType).QueryRows(&items)
+	return
+}
+
+func GetEnglishClassifyChildByParentIds(parentIds []int, keyWord string, classifyType int) (items []*EnglishClassifyList, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := ``
+	if keyWord != "" {
+		sql = `SELECT * FROM english_classify WHERE parent_id IN (` + utils.GetOrmInReplace(len(parentIds)) + `) AND classify_type = ? AND classify_name LIKE '%` + keyWord + `%' ORDER BY create_time ASC `
+	} else {
+		sql = `SELECT * FROM english_classify WHERE parent_id IN (` + utils.GetOrmInReplace(len(parentIds)) + `) AND classify_type = ? ORDER BY create_time ASC `
+	}
+	_, err = o.Raw(sql, parentIds, classifyType).QueryRows(&items)
+	return
+}
+
+func GetEnglishReportDetailByClassifyId(classifyIdFirst, classifyIdSecond int) (item *EnglishReport, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := ` SELECT * FROM english_report WHERE 1=1 `
+	if classifyIdSecond > 0 {
+		sql = sql + ` AND classify_id_second=?   ORDER BY stage DESC LIMIT 1`
+		err = o.Raw(sql, classifyIdSecond).QueryRow(&item)
+	} else {
+		sql = sql + ` AND classify_id_first=?   ORDER BY stage DESC LIMIT 1`
+		err = o.Raw(sql, classifyIdFirst).QueryRow(&item)
+	}
+	return
+}
+
+// Update 更新
+func (item *EnglishReport) Update(cols []string) (err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	_, err = o.Update(item, cols...)
+	return
+}
+
+// ModifyEnglishReportAuthor 更改英文报告作者
+func ModifyEnglishReportAuthor(condition string, pars []interface{}, authorName string) (count int, err error) {
+	//产品权限
+	oRddp := orm.NewOrmUsingDB("rddp")
+	sql := `UPDATE english_report set author = ? WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	err = oRddp.Raw(sql, authorName, pars).QueryRow(&count)
+	return
+}
+
 type EnglishClassify struct {
 	Id            int       `orm:"column(id);pk"`
 	ClassifyName  string    `description:"分类名称"`
@@ -116,6 +497,94 @@ type EnglishClassify struct {
 	ClassifyType  int       `description:"分类类型:0英文报告,1英文线上路演"`
 }
 
+func AddEnglishClassify(item *EnglishClassify) (lastId int64, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	lastId, err = o.Insert(item)
+	return
+}
+
+func ModifyEnglishClassify(item *EnglishClassify) (err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `UPDATE english_classify
+	SET
+	classify_name = ?,
+	sort = ?,
+	parent_id = ?,
+	modify_time = ? 
+	WHERE id = ? `
+	_, err = o.Raw(sql, item.ClassifyName, item.Sort, item.ParentId, item.ModifyTime, item.Id).Exec()
+	return
+}
+
+// UpdateClassify 更新分类
+func (classifyInfo *EnglishClassify) UpdateEnglishClassify(cols []string) (err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	_, err = o.Update(classifyInfo, cols...)
+
+	return
+}
+
+// DeleteEnglishClassify 删除英文分类
+func DeleteEnglishClassify(classifyId int) (err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := ` DELETE FROM english_classify WHERE id =? `
+	_, err = o.Raw(sql, classifyId).Exec()
+	return
+}
+
+func GetEnglishClassifyChildCounts(parentId int) (count int, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `SELECT COUNT(1) AS count FROM english_classify WHERE parent_id=? `
+	err = o.Raw(sql, parentId).QueryRow(&count)
+	return
+}
+
+func GetEnglishReportCounts(classifyId, parentId int) (count int, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	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 = o.Raw(sql, classifyId).QueryRow(&count)
+	return
+}
+
+func GetEnglishClassifyCountsByName(name string, parentId int, classifyType int) (count int, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `SELECT COUNT(1) AS count FROM english_classify WHERE classify_name=? AND parent_id = ? AND classify_type = ? `
+	err = o.Raw(sql, name, parentId, classifyType).QueryRow(&count)
+	return
+}
+
+// 获取分类列表
+func GetEnglishFirstClassifyList(classifyType, startSize, pageSize int) (items []*EnglishClassifyList, err error) {
+	sql := ``
+
+	sql = `SELECT * FROM english_classify WHERE parent_id=0 AND classify_type = ?  ORDER BY sort ASC,create_time ASC LIMIT ?,? `
+
+	o := orm.NewOrmUsingDB("rddp")
+	_, err = o.Raw(sql, classifyType, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+func GetEnglishFirstClassifyListCount(classifyType int) (count int, err error) {
+	sqlCount := ``
+	sqlCount = `SELECT COUNT(1) AS count FROM english_classify WHERE parent_id=0 AND classify_type = ? `
+
+	o := orm.NewOrmUsingDB("rddp")
+	err = o.Raw(sqlCount, classifyType).QueryRow(&count)
+	return
+}
+
+func GetEnglishReportClassifyById(classifyId int) (item *EnglishClassify, err error) {
+	sql := `SELECT * FROM english_classify WHERE id=?`
+	o := orm.NewOrmUsingDB("rddp")
+	err = o.Raw(sql, classifyId).QueryRow(&item)
+	return
+}
+
 func GetEnglishReportClassifyByIds(classifyIds []int) (list []*EnglishClassify, err error) {
 	o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT * FROM english_classify WHERE id IN (` + utils.GetOrmInReplace(len(classifyIds)) + `)`
@@ -123,6 +592,54 @@ func GetEnglishReportClassifyByIds(classifyIds []int) (list []*EnglishClassify,
 	return
 }
 
+// UpdateEnglishReportSecondClassifyNameByClassifyId 更新报告分类名称字段
+func UpdateEnglishReportSecondClassifyNameByClassifyId(classifyId int, classifyName string) (err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := " UPDATE english_report SET classify_name_second = ? WHERE classify_id_second = ? "
+	_, err = o.Raw(sql, classifyName, classifyId).Exec()
+	return
+}
+
+// UpdateEnglishReportFirstClassifyNameByClassifyId 更新报告分类名称字段
+func UpdateEnglishReportFirstClassifyNameByClassifyId(classifyId int, classifyName string) (err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := " UPDATE english_report SET classify_name_first = ? WHERE classify_id_first = ? "
+	_, err = o.Raw(sql, classifyName, classifyId).Exec()
+	return
+}
+
+// UpdateEnglishReportFirstClassifyNameByClassifyId 更新报告分类名称字段
+func UpdateEnglishReportByClassifyId(classifyFirstName, classifySecondName string, firstClassifyId, secondClassifyId int, ids string) (err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := " UPDATE english_report SET classify_name_first = ?,classify_name_second = ?,classify_id_first=?, classify_id_second =?  WHERE id IN (" + ids + ") "
+	_, err = o.Raw(sql, classifyFirstName, classifySecondName, firstClassifyId, secondClassifyId).Exec()
+	return
+}
+
+// FetchEnglishReportById 主键获取英文报告
+func FetchEnglishReportById(reportId int) (item *EnglishReport, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `SELECT * FROM english_report WHERE id=?`
+	err = o.Raw(sql, reportId).QueryRow(&item)
+	return
+}
+
+// UpdateReport 更新英文报告
+func (reportInfo *EnglishReport) UpdateReport(cols []string) (err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	_, err = o.Update(reportInfo, cols...)
+
+	return
+}
+
+// GetAllEnglishClassify 获取所有英文分类
+func GetAllEnglishClassify(classifyType int) (list []*Classify, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := ` SELECT * FROM english_classify where classify_type = ? `
+	_, err = o.Raw(sql, classifyType).QueryRows(&list)
+	return
+}
+
 // GetEnglishReportByIds 根据IDs获取英文报告列表
 func GetEnglishReportByIds(reportIds []int, fieldArr []string) (list []*EnglishReport, err error) {
 	listLen := len(reportIds)
@@ -138,3 +655,65 @@ func GetEnglishReportByIds(reportIds []int, fieldArr []string) (list []*EnglishR
 	_, err = o.Raw(sql, reportIds).QueryRows(&list)
 	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) {
+	o := orm.NewOrmUsingDB("rddp")
+	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 = o.Raw(sql, parentClassiyName, classifyName).QueryRow(&item)
+	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, classifyType int) (item *Classify, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := ` SELECT * FROM english_classify where classify_name = ? and parent_id = ? and classify_type = ? `
+	err = o.Raw(sql, classifyName, parentId, classifyType).QueryRow(&item)
+	return
+}

+ 18 - 0
routers/commentsRouter.go

@@ -6172,6 +6172,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/english_report:EnglishReportController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/english_report:EnglishReportController"],
+        beego.ControllerComments{
+            Method: "ListClassify",
+            Router: `/classify/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/english_report:EnglishReportEmailCallBackController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/english_report:EnglishReportEmailCallBackController"],
         beego.ControllerComments{
             Method: "SendCallBack",
@@ -9268,6 +9277,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:ReportController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:ReportController"],
+        beego.ControllerComments{
+            Method: "GetStopDayWeekReportChapterTypeList",
+            Router: `/getStopDayWeekReportChapterTypeList`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:ReportController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:ReportController"],
         beego.ControllerComments{
             Method: "SetDayWeekReportEnableRule",

+ 1 - 1
routers/router.go

@@ -308,7 +308,7 @@ func init() {
 		),
 		web.NSNamespace("/english_report",
 			web.NSInclude(
-				//&english_report.EnglishReportController{},
+				&english_report.EnglishReportController{},
 				//&english_report.EnglishPolicyReportController{},
 				&english_report.EnglishReportEmailController{},
 				&english_report.EnglishCompanyController{},