ziwen před 1 rokem
rodič
revize
6335dd8e0d

+ 1 - 1
controllers/help_doc/classify.go

@@ -315,7 +315,7 @@ func (this *HelpDocClassifyController) ClassifyMove() {
 
 	//判断上级id是否一致,如果不一致的话,那么需要移动该分类层级
 	if classifyInfo.ParentId != req.ParentClassifyId && req.ParentClassifyId != 0 {
-		parentClassifyInfo, err := help_doc.GetHelpDocClassifyById(req.ClassifyId)
+		parentClassifyInfo, err := help_doc.GetHelpDocClassifyById(req.ParentClassifyId)
 		if err != nil {
 			br.Msg = "移动失败"
 			br.ErrMsg = "获取上级分类信息失败,Err:" + err.Error()

+ 258 - 459
controllers/help_doc/doc.go

@@ -2,10 +2,13 @@ package help_doc
 
 import (
 	"encoding/json"
+	"github.com/rdlucklib/rdluck_tools/paging"
 	"hongze/hz_crm_api/controllers"
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/help_doc"
+	"hongze/hz_crm_api/utils"
 	"html"
+	"strconv"
 	"time"
 )
 
@@ -44,8 +47,17 @@ func (this *HelpDocController) Add() {
 		return
 	}
 	var anchor []byte
-	if req.AnchorData != nil{
-		anchor,err = json.Marshal(req.AnchorData)
+	if req.AnchorData != nil {
+		anchor, err = json.Marshal(req.AnchorData)
+		if err != nil {
+			br.Msg = "参数解析异常!"
+			br.ErrMsg = "参数解析失败,Err:" + err.Error()
+			return
+		}
+	}
+	var recommend []byte
+	if req.RecommendData != nil {
+		recommend, err = json.Marshal(req.RecommendData)
 		if err != nil {
 			br.Msg = "参数解析异常!"
 			br.ErrMsg = "参数解析失败,Err:" + err.Error()
@@ -64,18 +76,29 @@ func (this *HelpDocController) Add() {
 	item.AdminId = sysUser.AdminId
 	item.AdminRealName = sysUser.RealName
 	item.Anchor = string(anchor)
+	item.Recommend = string(recommend)
 	if req.Status == 2 {
 		item.PublishTime = time.Now()
 	}
-	_, err = help_doc.AddHelpDoc(item)
-	if err != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "保存失败,Err:" + err.Error()
-		return
+
+	if item.Id == 0 {
+		_, err = help_doc.AddHelpDoc(item)
+		if err != nil {
+			br.Msg = "新增失败"
+			br.ErrMsg = "保存失败,Err:" + err.Error()
+			return
+		}
+	} else {
+		err = help_doc.EditHelpDoc(item, int64(item.Id))
+		if err != nil {
+			br.Msg = "保存失败"
+			br.ErrMsg = "保存失败,Err:" + err.Error()
+			return
+		}
 	}
 
 	if req.Status == 1 {
-		br.Msg = "新增成功"
+		br.Msg = "保存成功"
 	} else {
 		br.Msg = "发布成功"
 	}
@@ -84,88 +107,6 @@ func (this *HelpDocController) Add() {
 
 }
 
-//// @Title 编辑报告接口
-//// @Description 编辑报告
-//// @Param	request	body models.EditEnglishReportReq true "type json string"
-//// @Success 200 {object} models.EditEnglishReportResp
-//// @router /edit [post]
-//func (this *HelpDocController) 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
-//	}
-//
-//	//var contentSub string
-//	//if req.Content != "" {
-//	//	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)
-//	//	}
-//	//}
-//
-//
-//	item := new(help_doc.HelpDoc)
-//	item.ClassifyId = req.ClassifyIdFirst
-//	item.ClassifyName = req.ClassifyNameFirst
-//	item.Title = req.Title
-//	item.Author = req.Author
-//	item.Content = html.EscapeString(req.Content)
-//	item.ModifyTime = time.Now()
-//	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"
@@ -199,7 +140,17 @@ func (this *HelpDocController) Detail() {
 
 	var anchor []help_doc.AnchorList
 	if item.Anchor != "" {
-		err = json.Unmarshal([]byte(item.Anchor),&anchor)
+		err = json.Unmarshal([]byte(item.Anchor), &anchor)
+		if err != nil {
+			br.Msg = "解析失败"
+			br.ErrMsg = "解析失败,Err:" + err.Error()
+			return
+		}
+	}
+
+	var recommend []help_doc.RecommendList
+	if item.Recommend != "" {
+		err = json.Unmarshal([]byte(item.Recommend), &anchor)
 		if err != nil {
 			br.Msg = "解析失败"
 			br.ErrMsg = "解析失败,Err:" + err.Error()
@@ -210,7 +161,6 @@ func (this *HelpDocController) Detail() {
 	resp := help_doc.HelpDocResp{
 		Id:            item.Id,
 		ClassifyId:    item.ClassifyId,
-		ClassifyName:  item.ClassifyName,
 		Title:         item.Title,
 		Author:        item.Author,
 		CreateTime:    item.CreateTime,
@@ -221,378 +171,227 @@ func (this *HelpDocController) Detail() {
 		AdminId:       item.AdminId,
 		AdminRealName: item.AdminRealName,
 		Anchor:        anchor,
+		Recommend:     recommend,
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// @Title 获取报告列表接口
+// @Description 获取报告列表
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Param   KeyWord   query   string  true       "搜索关键词"
+// @Success 200 {object} models.ReportListResp
+// @router /list [get]
+func (this *HelpDocController) 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")
+
+	classifyId := this.GetString("ClassifyId")
+	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 + `%' `
+	}
+
+	if classifyId != "" {
+		condition += ` AND classify_id= ? `
+		pars = append(pars, classifyId)
+	}
+
+	total, err := help_doc.GetHelpDocListCount(condition, pars)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	list, err := help_doc.GetHelpDocList(condition, pars, startSize, pageSize)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	resp := new(help_doc.HelpDocListResp)
+	for _, item := range list {
+		var anchor []help_doc.AnchorList
+		if item.Anchor != "" {
+			err = json.Unmarshal([]byte(item.Anchor), &anchor)
+			if err != nil {
+				br.Msg = "解析失败"
+				br.ErrMsg = "解析失败,Err:" + err.Error()
+				return
+			}
+		}
+
+		var recommend []help_doc.RecommendList
+		if item.Recommend != "" {
+			err = json.Unmarshal([]byte(item.Recommend), &anchor)
+			if err != nil {
+				br.Msg = "解析失败"
+				br.ErrMsg = "解析失败,Err:" + err.Error()
+				return
+			}
+		}
+		respItem := help_doc.HelpDocResp{
+			Id:            item.Id,
+			ClassifyId:    item.ClassifyId,
+			Title:         item.Title,
+			Author:        item.Author,
+			CreateTime:    item.CreateTime,
+			ModifyTime:    item.ModifyTime,
+			Status:        item.Status,
+			PublishTime:   item.PublishTime,
+			Content:       item.Content,
+			AdminId:       item.AdminId,
+			AdminRealName: item.AdminRealName,
+			Anchor:        anchor,
+			Recommend:     recommend,
+		}
+
+		resp.List = append(resp.List, &respItem)
 	}
 
+	page := paging.GetPaging(currentIndex, pageSize, total)
+	resp.Paging = page
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"
 	br.Data = resp
 }
 
-//// @Title 获取报告列表接口
-//// @Description 获取报告列表
-//// @Param   PageSize   query   int  true       "每页数据条数"
-//// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
-//// @Param   StartDate   query   string  true       "开始时间"
-//// @Param   EndDate   query   string  true       "结束时间"
-//// @Param   Frequency   query   string  true       "频度"
-//// @Param   ClassifyNameFirst   query   string  true       "一级分类名称"
-//// @Param   ClassifyNameSecond   query   string  true       "二级分类名称"
-//// @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 *HelpDocController) 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")
-//	frequency := this.GetString("Frequency")
-//	classifyNameFirst := this.GetString("ClassifyNameFirst")
-//	classifyNameSecond := this.GetString("ClassifyNameSecond")
-//	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 '%` + keyWord + `%' OR author LIKE '%` + keyWord + `%' ) `
-//	}
-//	if startDate != "" {
-//		condition += ` AND create_time >= ? `
-//		pars = append(pars, startDate)
-//	}
-//	if endDate != "" {
-//		condition += ` AND create_time <= ? `
-//		pars = append(pars, endDate)
-//	}
-//	if frequency != "" {
-//		condition += ` AND frequency = ? `
-//		pars = append(pars, frequency)
-//	}
-//	if classifyNameFirst != "" {
-//		condition += ` AND classify_name_first = ? `
-//		pars = append(pars, classifyNameFirst)
-//	}
-//
-//	if classifyNameSecond != "" {
-//		condition += ` AND classify_name_second = ? `
-//		pars = append(pars, classifyNameSecond)
-//	}
-//	if state > 0 {
-//		condition += ` AND state = ? `
-//		pars = append(pars, state)
-//	}
-//	// 未群发邮件(包含推送邮件失败的)
-//	if emailState == 1 {
-//		failIds, e := models.GetHasFailEmailLogReportIds()
-//		if e != nil {
-//			br.Msg = "获取失败"
-//			br.ErrMsg = "获取存在邮件推送失败记录的英文报告IDs失败, Err:" + e.Error()
-//			return
-//		}
-//		condition += ` AND email_state = 0`
-//		if len(failIds) > 0 {
-//			condition += ` OR id IN (` + utils.GetOrmInReplace(len(failIds)) + `)`
-//			pars = append(pars, failIds)
-//		}
-//	}
-//	// 已群发邮件
-//	if emailState == 2 {
-//		successIds, e := models.GetSuccessEmailLogReportIds()
-//		if e != nil {
-//			br.Msg = "获取失败"
-//			br.ErrMsg = "获取邮件推送记录均为成功的英文报告IDs失败, Err:" + e.Error()
-//			return
-//		}
-//		condition += ` AND email_state = 1`
-//		if len(successIds) > 0 {
-//			condition += ` AND id IN (` + utils.GetOrmInReplace(len(successIds)) + `)`
-//			pars = append(pars, successIds)
-//		}
-//	}
-//
-//	total, err := models.GetEnglishReportListCount(condition, pars, companyType)
-//	if err != nil {
-//		br.Msg = "获取失败"
-//		br.ErrMsg = "获取失败,Err:" + err.Error()
-//		return
-//	}
-//	list, err := models.GetEnglishReportList(condition, pars, companyType, startSize, pageSize)
-//	if err != nil {
-//		br.Msg = "获取失败"
-//		br.ErrMsg = "获取失败,Err:" + err.Error()
-//		return
-//	}
-//
-//	// 获取邮件配置-是否有权限群发
-//	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
-//	}
-//
-//	// 是否有群发邮件失败的记录,标记红点
-//	failList, e := models.GetEnglishReportEmailLogFailList(0)
-//	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
-//		item.EmailHasFail = failMap[item.Id]
-//		// 邮箱PV大于0的时候, 不展示最初版本的PV
-//		if item.PvEmail > 0 {
-//			item.Pv = 0
-//		}
-//
-//		/*key := fmt.Sprint(`crm:enReport:edit:`, item.Id)
-//		opUserId, _ := utils.Rc.RedisInt(key)
-//		//如果当前没有人操作,获取当前操作人是本人,那么编辑按钮可用
-//		if opUserId <= 0 || (opUserId == this.SysUser.AdminId) {
-//			item.CanEdit = true
-//		} else {
-//			adminInfo, errAdmin := system.GetSysUserById(opUserId)
-//			if errAdmin != nil {
-//				br.Msg = "获取失败"
-//				br.ErrMsg = "获取失败,Err:" + errAdmin.Error()
-//				return
-//			}
-//			item.Editor = adminInfo.RealName
-//		}*/
-//		markStatus, err := services.UpdateEnReportEditMark(item.Id, this.SysUser.AdminId, 2, this.SysUser.RealName)
-//		if err != nil {
-//			br.Msg = "查询标记状态失败"
-//			br.ErrMsg = "查询标记状态失败,Err:" + err.Error()
-//			return
-//		}
-//		if markStatus.Status == 0 {
-//			item.CanEdit = true
-//		} else {
-//			item.Editor = markStatus.Editor
-//		}
-//	}
-//	page := paging.GetPaging(currentIndex, pageSize, total)
-//	resp := new(models.EnglishReportListResp)
-//	resp.Paging = page
-//	resp.List = list
-//	br.Ret = 200
-//	br.Success = true
-//	br.Msg = "获取成功"
-//	br.Data = resp
-//}
-//
-//// @Title 发布报告接口
-//// @Description 发布报告
-//// @Param	request	body models.PublishReq true "type json string"
-//// @Success 200 Ret=200 发布成功
-//// @router /publish [post]
-//func (this *HelpDocController) 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
-//		}
-//
-//		var tmpErr error
-//
-//		if report.Content == "" {
-//			br.Msg = "报告内容为空,不可发布"
-//			br.ErrMsg = "报告内容为空,不需要生成,report_id:" + strconv.Itoa(report.Id)
-//			return
-//		}
-//		if tmpErr = models.PublishEnglishReportById(report.Id); tmpErr != nil {
-//			br.Msg = "报告发布失败"
-//			br.ErrMsg = "报告发布失败, Err:" + tmpErr.Error() + ", report_id:" + strconv.Itoa(report.Id)
-//			return
-//		}
-//		go func() {
-//			_ = services.UpdateEnglishReportEs(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 *HelpDocController) 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
-//	}
-//	err = models.PublishCancelEnglishReport(req.ReportIds)
-//	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 *HelpDocController) 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 err.Error() == utils.ErrNoRow() {
-//			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)
-//	}()
-//
-//	go func() {
-//		_ = services.EnglishPolicyReportSyncCancel(reportInfo)
-//	}()
-//	br.Ret = 200
-//	br.Success = true
-//	br.Msg = "删除成功"
-//}
+// @Title 发布报告接口
+// @Description 发布报告
+// @Param	request	body models.PublishReq true "type json string"
+// @Success 200 Ret=200 发布成功
+// @router /publish [post]
+func (this *HelpDocController) PublishReport() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req help_doc.PublishReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	docId := req.DocId
+	if docId <= 0 {
+		br.Msg = "参数错误"
+		br.ErrMsg = "参数错误,报告id不可为空"
+		return
+	}
+
+	doc, err := help_doc.GetHelpDocById(docId)
+	if err != nil {
+		br.Msg = "获取报告信息失败"
+		br.ErrMsg = "获取报告信息失败,Err:" + err.Error()
+		return
+	}
+	if doc == nil {
+		br.Msg = "报告不存在"
+		return
+	}
+
+	var tmpErr error
+
+	if doc.Content == "" {
+		br.Msg = "报告内容为空,不可发布"
+		br.ErrMsg = "报告内容为空,不需要生成,report_id:" + strconv.Itoa(doc.Id)
+		return
+	}
+	if tmpErr = help_doc.PublishHelpDocById(docId, req.Status); tmpErr != nil {
+		br.Msg = "报告发布失败"
+		br.ErrMsg = "报告发布失败, Err:" + tmpErr.Error() + ", doc_id:" + strconv.Itoa(docId)
+		return
+	}
+
+	if req.Status == 1 {
+		br.Msg = "取消发布成功"
+	} else {
+		br.Msg = "发布成功"
+	}
+
+	br.Ret = 200
+	br.Success = true
+
+}
+
+// @Title 删除报告接口
+// @Description 删除报告
+// @Param	request	body models.DeleteReq true "type json string"
+// @Success 200 Ret=200 删除成功
+// @router /delete [post]
+func (this *HelpDocController) Delete() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req help_doc.DeleteReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.DocId <= 0 {
+		br.Msg = "参数错误"
+		br.ErrMsg = "参数错误,报告id不可为空"
+		return
+	}
+	_, err = help_doc.GetHelpDocById(req.DocId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "报告不存在"
+			return
+		}
+		br.Msg = "查询报告信息失败"
+		br.ErrMsg = "查询报告信息失败, Err" + err.Error()
+		return
+	}
+
+	err = help_doc.DeleteHelpDoc(req.DocId)
+	if err != nil {
+		br.Msg = "删除报告失败"
+		br.ErrMsg = "删除报告失败, Err" + err.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "删除成功"
+}

+ 5 - 5
models/help_doc/classify.go

@@ -125,7 +125,7 @@ type HelpDocClassifyListResp struct {
 }
 
 type HelpDocClassifyDeleteCheckResp struct {
-	DeleteStatus int    `description:"检测状态:0:默认值,如果为0,继续走其他校验,1:该分类下关联图表不可删除,2:确认删除当前目录及包含的子目录吗"`
+	DeleteStatus int    `description:"检测状态:0:默认值,如果为0,继续走其他校验,1:该分类下关联不可删除,2:确认删除当前目录及包含的子目录吗"`
 	TipsMsg      string `description:"提示信息"`
 }
 
@@ -144,7 +144,7 @@ func GetHelpDocClassifyByCondition(condition string, pars []interface{}) (item *
 	return
 }
 
-// MoveHelpDocClassifyReq 移动图表分类请求参数
+// MoveHelpDocClassifyReq 移动分类请求参数
 type MoveHelpDocClassifyReq struct {
 	ClassifyId       int `description:"分类id"`
 	ParentClassifyId int `description:"父级分类id"`
@@ -152,7 +152,7 @@ type MoveHelpDocClassifyReq struct {
 	NextClassifyId   int `description:"下一个兄弟节点分类id"`
 }
 
-// GetFirstHelpDocClassifyByParentId 获取当前父级图表分类下的排序第一条的数据
+// GetFirstHelpDocClassifyByParentId 获取当前父级分类下的排序第一条的数据
 func GetFirstHelpDocClassifyByParentId(parentId int) (item *HelpDocClassify, err error) {
 	o := orm.NewOrm()
 	sql := ` SELECT * FROM help_doc_classify WHERE parent_id=? order by sort asc,classify_id asc limit 1`
@@ -160,7 +160,7 @@ func GetFirstHelpDocClassifyByParentId(parentId int) (item *HelpDocClassify, err
 	return
 }
 
-// UpdateHelpDocClassifySortByParentId 根据图表父类id更新排序
+// UpdateHelpDocClassifySortByParentId 根据父类id更新排序
 func UpdateHelpDocClassifySortByParentId(parentId, classifyId, nowSort int, updateSort string) (err error) {
 	o := orm.NewOrm()
 	sql := ` update help_doc_classify set sort = ` + updateSort + ` WHERE parent_id=? and sort > ? `
@@ -171,7 +171,7 @@ func UpdateHelpDocClassifySortByParentId(parentId, classifyId, nowSort int, upda
 	return
 }
 
-// Update 更新图表分类基础信息
+// Update 更新分类基础信息
 func (HelpDocClassify *HelpDocClassify) Update(cols []string) (err error) {
 	o := orm.NewOrm()
 	_, err = o.Update(HelpDocClassify, cols...)

+ 114 - 59
models/help_doc/help_doc.go

@@ -2,13 +2,13 @@ package help_doc
 
 import (
 	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
 	"time"
 )
 
 type HelpDoc struct {
 	Id            int       `orm:"column(id);pk"`
 	ClassifyId    int       // 分类id
-	ClassifyName  string    // 分类名称
 	Title         string    // 标题
 	Author        string    // 作者
 	CreateTime    time.Time // 创建时间
@@ -19,12 +19,12 @@ type HelpDoc struct {
 	AdminId       int       // 创建人
 	AdminRealName string    // 创建人姓名
 	Anchor        string    // 锚点
+	Recommend     string    // 推荐
 }
 
 type HelpDocItem struct {
 	Id            int    `orm:"column(id);pk"`
 	ClassifyId    int    // 分类id
-	ClassifyName  string // 分类名称
 	Title         string // 标题
 	Author        string // 作者
 	CreateTime    string // 创建时间
@@ -34,7 +34,8 @@ type HelpDocItem struct {
 	Content       string // 内容
 	AdminId       int    // 创建人
 	AdminRealName string // 创建人姓名
-	Anchor        string // 创建人姓名
+	Anchor        string // 锚点
+	Recommend     string // 推荐
 }
 
 func EditHelpDocClassifyId(classifyId int, classifyName string) (err error) {
@@ -45,12 +46,14 @@ func EditHelpDocClassifyId(classifyId int, classifyName string) (err error) {
 }
 
 type AddHelpDocReq struct {
-	ClassifyId int    `description:"分类id"`
-	Title      string `description:"标题"`
-	Author     string `description:"作者"`
-	Status     int    `description:"状态:1:未发布,2:已发布"`
-	Content    string `description:"内容"`
-	AnchorData []AnchorList
+	Id            int64  `description:"文章id"`
+	ClassifyId    int    `description:"分类id"`
+	Title         string `description:"标题"`
+	Author        string `description:"作者"`
+	Status        int    `description:"状态:1:未发布,2:已发布"`
+	Content       string `description:"内容"`
+	AnchorData    []AnchorList
+	RecommendData []RecommendList
 }
 
 type AnchorList struct {
@@ -59,6 +62,11 @@ type AnchorList struct {
 	Child    []AnchorList
 }
 
+type RecommendList struct {
+	Name string
+	Url  string
+}
+
 func AddHelpDoc(item *HelpDoc) (lastId int64, err error) {
 	o := orm.NewOrm()
 	lastId, err = o.Insert(item)
@@ -66,43 +74,34 @@ func AddHelpDoc(item *HelpDoc) (lastId int64, err error) {
 }
 
 type EditHelpDocReq struct {
-	Id           int64  `description:"文章id"`
-	ClassifyId   int    `description:"分类id"`
-	ClassifyName 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:"英文概述部分"`
-}
-
-//func EditHelpDoc(item *HelpDoc, reportId int64) (err error) {
-//	o := orm.NewOrmUsingDB("rddp")
-//	sql := `UPDATE help_doc
-//			SET
-//			  classify_id =?,
-//			  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
-//}
+	Id            int64  `description:"文章id"`
+	ClassifyId    int    `description:"分类id"`
+	Title         string `description:"标题"`
+	Author        string `description:"作者"`
+	Status        int    `description:"状态:1:未发布,2:已发布"`
+	Content       string `description:"内容"`
+	AnchorData    []AnchorList
+	RecommendData []RecommendList
+}
+
+func EditHelpDoc(item *HelpDoc, reportId int64) (err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `UPDATE help_doc
+			SET
+			  classify_id =?,
+			  title = ?,
+			  author = ?,
+			  content = ?,
+			  modify_time = ?,
+			  status = ?,
+			  publish_time = ?,
+			  anchor = ?,
+			  recommend = ? 
+			WHERE id = ? `
+	_, err = o.Raw(sql, item.ClassifyId, item.Title, item.Author, item.Content, item.ModifyTime,
+		item.Status, item.PublishTime, item.Anchor, item.Recommend, reportId).Exec()
+	return
+}
 
 func GetHelpDocById(docId int) (item *HelpDocItem, err error) {
 	o := orm.NewOrm()
@@ -112,17 +111,73 @@ func GetHelpDocById(docId int) (item *HelpDocItem, err error) {
 }
 
 type HelpDocResp struct {
-	Id            int          `orm:"column(id);pk"`
-	ClassifyId    int          // 分类id
-	ClassifyName  string       // 分类名称
-	Title         string       // 标题
-	Author        string       // 作者
-	CreateTime    string       // 创建时间
-	ModifyTime    string       // 修改时间
-	Status        int          // 1:未发布,2:已发布
-	PublishTime   string       // 发布时间
-	Content       string       // 内容
-	AdminId       int          // 创建人
-	AdminRealName string       // 创建人姓名
-	Anchor        []AnchorList // 锚点
+	Id            int             `orm:"column(id);pk"`
+	ClassifyId    int             // 分类id
+	Title         string          // 标题
+	Author        string          // 作者
+	CreateTime    string          // 创建时间
+	ModifyTime    string          // 修改时间
+	Status        int             // 1:未发布,2:已发布
+	PublishTime   string          // 发布时间
+	Content       string          // 内容
+	AdminId       int             // 创建人
+	AdminRealName string          // 创建人姓名
+	Anchor        []AnchorList    // 锚点
+	Recommend     []RecommendList // 推荐
+}
+
+func GetHelpDocListCount(condition string, pars []interface{}) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT COUNT(1) AS count FROM help_doc WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	err = o.Raw(sql, pars).QueryRow(&count)
+	return
+}
+
+func GetHelpDocList(condition string, pars []interface{}, startSize, pageSize int) (items []*HelpDocItem, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM help_doc WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	sql += `ORDER BY modify_time DESC LIMIT ?,?`
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+type HelpDocListResp struct {
+	List []*HelpDocResp
+	ClassifyName string
+	Paging *paging.PagingItem `description:"分页数据"`
+}
+
+type PublishReq struct {
+	DocId int
+	Status int  `description:"状态:1:未发布,2:已发布"`
+}
+
+// 发布报告
+func PublishHelpDocById(reportId, status int) (err error) {
+	o := orm.NewOrm()
+	sql := ``
+	if status == 1{
+		sql = `UPDATE help_doc SET status=1,publish_time=NULL,modify_time=NOW() WHERE id = ? `
+	} else {
+		sql = `UPDATE help_doc SET status=2,publish_time=now(),modify_time=NOW() WHERE id = ? `
+	}
+	_, err = o.Raw(sql, reportId).Exec()
+	return
+}
+
+type DeleteReq struct {
+	DocId int `description:"id"`
+}
+
+func DeleteHelpDoc(reportIds int) (err error) {
+	o := orm.NewOrm()
+	sql := ` DELETE FROM help_doc WHERE id =? `
+	_, err = o.Raw(sql, reportIds).Exec()
+	return
 }

+ 20 - 2
routers/commentsRouter.go

@@ -6604,6 +6604,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/help_doc:HelpDocController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/help_doc:HelpDocController"],
+        beego.ControllerComments{
+            Method: "Delete",
+            Router: `/delete`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/help_doc:HelpDocController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/help_doc:HelpDocController"],
         beego.ControllerComments{
             Method: "Detail",
@@ -6615,8 +6624,17 @@ func init() {
 
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/help_doc:HelpDocController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/help_doc:HelpDocController"],
         beego.ControllerComments{
-            Method: "Detail",
-            Router: `/edit`,
+            Method: "ListReport",
+            Router: `/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/help_doc:HelpDocController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/help_doc:HelpDocController"],
+        beego.ControllerComments{
+            Method: "PublishReport",
+            Router: `/publish`,
             AllowHTTPMethods: []string{"post"},
             MethodParams: param.Make(),
             Filters: nil,