zhangchuanxing пре 1 недеља
родитељ
комит
3f8ccb4aab

+ 192 - 0
controllers/morning_meeting.go

@@ -168,6 +168,7 @@ func (this *MorningMeetingController) GatherDetail() {
 		if err != nil {
 			br.Msg = "获取失败"
 			br.ErrMsg = "获取失败,Err:" + err.Error()
+
 		}
 
 		var meetingreviewchaptIds []int
@@ -226,3 +227,194 @@ func (this *MorningMeetingController) SpecialMsg() {
 	br.Success = true
 	br.Msg = "操作成功!"
 }
+
+// @Title 晨会精华汇总日志详情
+// @Description 晨会精华汇总日志详情接口
+// @Param   LogId   query   int  true       "Id"
+// @Success Ret=200 {object} cygx.CygxMorningMeetingReviewLogDetailResp
+// @router /log/detail [get]
+func (this *MorningMeetingController) LogDetail() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	user := this.User
+	if user == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,用户信息为空"
+		br.Ret = 408
+		return
+	}
+	logId, _ := this.GetInt("LogId")
+	logDetail, err := models.GetCygxMorningMeetingReviewLogByLogId(logId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取日志信息失败,Err:" + err.Error()
+		return
+	}
+	meetingId := logDetail.MeetingId
+	reviewDetail, err := models.GetMorningMeetingReviewById(meetingId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取晨会信息失败,Err:" + err.Error()
+		return
+	}
+	resp := new(models.CygxMorningMeetingReviewLogDetailResp)
+	meetDetail, err := models.GetCygxMorningMeetingReviewChapterDetailByMeetingId(meetingId)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+
+	var meetingreviewchaptIds []int
+	meetingreviewchaptIds = append(meetingreviewchaptIds, meetDetail.Id)
+
+	respList, err := services.GetCygxMorningMeetingReviewChapterListByIds2(meetingreviewchaptIds)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "GetCygxMorningMeetingReviewChapterListByIds,Err:" + err.Error()
+		return
+	}
+
+	detailResp := new(models.CygxMorningMeetingReviewLogResp)
+	for _, v := range respList {
+		detailResp = v
+	}
+	detailResp.LogId = logId
+	detailResp.Status = reviewDetail.Status
+	detailResp.RejectContent = logDetail.Remark
+	resp.Detail = detailResp
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// @Title 晨会精华汇总审核(通过与驳回)
+// @Description 晨会精华汇总审核(通过与驳回)接口
+// @Param	request	body models.ReviewLogApproveReq true "type json string"
+// @Success 200
+// @router /log/approve [post]
+func (this *MorningMeetingController) LogApprove() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	user := this.User
+	if user == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,用户信息为空"
+		br.Ret = 408
+		return
+	}
+
+	var req models.ReviewLogApproveReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	logId := req.LogId
+	status := req.Status
+	rejectContent := req.RejectContent
+	logDetail, err := models.GetCygxMorningMeetingReviewLogByLogId(logId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取日志信息失败,Err:" + err.Error()
+		return
+	}
+	meetingId := logDetail.MeetingId
+	if status != 1 && status != 3 {
+		br.Msg = "操作失败"
+		br.ErrMsg = "发布状态错误"
+		return
+	}
+	var operate string
+	if status == 1 {
+		operate = "已通过"
+	} else {
+		operate = "已驳回"
+		if rejectContent == "" {
+			br.Msg = "请输入驳回理由"
+			return
+		}
+		logDetail.Remark = rejectContent
+	}
+	err = models.PublishMorningMeetingReviewById(status, meetingId)
+	if err != nil {
+		br.Msg = "审核失败"
+		br.ErrMsg = "审核失败,Err:" + err.Error()
+		return
+	}
+	go services.AddCygxMorningMeetingReviewLog(logDetail, operate, user.RealName, user.UserId) //添加晨会精华日志信息,并发送模版消息
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}
+
+// @Title 晨会精华汇总审核编辑后提交审核,或通过审核
+// @Description 晨会精华汇总审核编辑后提交审核,或通过审核接口
+// @Param	request	body models.ReviewLogApproveEditReq true "type json string"
+// @Success 200
+// @router /log/approve_edit [post]
+func (this *MorningMeetingController) LogApproveEdit() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	user := this.User
+	if user == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,用户信息为空"
+		br.Ret = 408
+		return
+	}
+	var req models.ReviewLogApproveEditReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	logId := req.LogId
+	status := req.Status
+	content := req.Content
+	if content == "" {
+		br.Msg = "内容不能为空"
+		return
+	}
+	if status != 1 && status != 2 {
+		br.Msg = "操作失败"
+		br.ErrMsg = "发布状态错误"
+		return
+	}
+	logDetail, err := models.GetCygxMorningMeetingReviewLogByLogId(logId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取日志信息失败,Err:" + err.Error()
+		return
+	}
+	meetingId := logDetail.MeetingId
+	logDetail.Content = content
+	var operate string
+	if status == 1 {
+		operate = "保存并通过"
+	} else {
+		operate = "提交审核"
+	}
+	err = models.UpdateMorningMeetingReviewById(status, meetingId, content)
+	if err != nil {
+		br.Msg = "审核失败"
+		br.ErrMsg = "审核失败,Err:" + err.Error()
+		return
+	}
+	go services.AddCygxMorningMeetingReviewLog(logDetail, operate, user.RealName, user.UserId) //添加晨会精华日志信息,并发送模版消息
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}

+ 21 - 0
models/cygx_morning_meeting_review_chapter.go

@@ -28,6 +28,14 @@ func GetCygxMorningMeetingReviewChapterDetail(id int) (item *CygxMorningMeetingR
 	return
 }
 
+// 通过ID获取详情
+func GetCygxMorningMeetingReviewChapterDetailByMeetingId(meetingId int) (item *CygxMorningMeetingReviewChapter, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_morning_meeting_review_chapter  WHERE meeting_id =? LIMIT  1 `
+	err = o.Raw(sql, meetingId).QueryRow(&item)
+	return
+}
+
 // 列表
 func GetCygxMorningMeetingReviewChapterList(condition string, pars []interface{}) (items []*CygxMorningMeetingGatherDetailListResp, err error) {
 	o := orm.NewOrm()
@@ -41,6 +49,19 @@ func GetCygxMorningMeetingReviewChapterList(condition string, pars []interface{}
 	return
 }
 
+// 列表
+func GetCygxMorningMeetingReviewChapterList2(condition string, pars []interface{}) (items []*CygxMorningMeetingReviewLogResp, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT c.*,r.publish_time
+			FROM cygx_morning_meeting_review_chapter  as  c 
+			INNER JOIN cygx_morning_meeting_reviews as r ON  r.id = c.meeting_id   WHERE 1 = 1  `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
 type IndustrialSubjectItem struct {
 	IndustrialSubjectId int    `orm:"column(industrial_subject_id);pk" description:"标的id"`
 	SubjectName         string `description:"标的名称"`

+ 74 - 0
models/cygx_morning_meeting_review_log.go

@@ -0,0 +1,74 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CygxMorningMeetingReviewLog struct {
+	LogId                int       `orm:"column(log_id);pk"`
+	MeetingTime          time.Time `description:"晨会日期"`
+	CreateTime           time.Time `description:"创建时间"`
+	ModifyTime           time.Time `description:"修改时间"`
+	IndustryId           int       `description:"产业ID"`
+	IndustryName         string    `description:"产业名称"`
+	ChartPermissionName  string    `description:"行业名称"`
+	ChartPermissionId    int       `description:"行业ID"`
+	IndustrialSubjectIds string    `description:"标的ID"`
+	MeetingId            int       `description:"主表ID"`
+	Content              string    `description:"内容"`
+	ReportLink           string    `description:"报告链接"`
+	LinkArticleId        int       `description:"跳转的文章ID"`
+	Title                string    `description:"标题"`
+	Remark               string    `description:"备注说明"`
+	Operate              string    `description:"操作内容"`
+	OpUserId             int       `description:"操作人编号"`
+	OpUserName           string    `description:"操作人名称"`
+}
+
+// 添加晨报点评章节日志信息
+func AddCygxMorningMeetingReviewLog(item *CygxMorningMeetingReviewLog) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Insert(item)
+	return
+}
+
+func GetCygxMorningMeetingReviewLogByLogId(logId int) (item *CygxMorningMeetingReviewLog, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_morning_meeting_review_log WHERE  log_id =  ? `
+	err = o.Raw(sql, logId).QueryRow(&item)
+	return
+}
+
+type CygxMorningMeetingReviewLogDetailResp struct {
+	Detail *CygxMorningMeetingReviewLogResp
+}
+
+type CygxMorningMeetingReviewLogResp struct {
+	RejectContent        string                   `description:"驳回内容"` // 驳回内容
+	LogId                int                      `orm:"column(log_id);pk"`
+	Status               int                      `description:"0:未发布,1:已发布,2:待审核、3:已驳回、4:已撤回、5:未提交"`
+	IndustryId           int                      `description:"产业id"` // 产业id
+	IndustryName         string                   `description:"产业名称"` // 产业名称
+	ChartPermissionName  string                   `description:"行业名称"` // 行业名称
+	ChartPermissionId    int                      `description:"行业id"` // 行业id
+	MeetingId            int                      `description:"主表id"` // 主表id
+	Content              string                   `description:"内容"`   // 内容
+	ReportLink           string                   `description:"报告链接"`
+	LinkArticleId        int                      `description:"报告ID链接"`
+	Title                string                   `description:"标题"`
+	IndustrialSubjectIds string                   `description:"标的id"`
+	ListSubject          []*CygxIndustrialSubject `description:"标的列表"`
+}
+
+type ReviewLogApproveReq struct {
+	LogId         int    `description:"日志ID"`
+	Status        int    `description:"1:审核通过,3:驳回"`
+	RejectContent string `description:"驳回内容"` // 驳回内容
+}
+
+type ReviewLogApproveEditReq struct {
+	LogId   int    `description:"日志ID"`
+	Status  int    `description:"1:审核通过,3:驳回"`
+	Content string `description:"修改过的内容"`
+}

+ 35 - 9
models/cygx_morning_meeting_reviews.go

@@ -1,6 +1,7 @@
 package models
 
 import (
+	"fmt"
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"time"
@@ -18,14 +19,14 @@ type CygxMorningMeetingReviews struct {
 	IndustryNames string    `json:"industryName"` // 产业名称
 }
 
-//添加晨报点评
+// 添加晨报点评
 func AddCygxMorningMeetingReviews(item *CygxMorningMeetingReviews) (id int64, err error) {
 	o := orm.NewOrm()
 	id, err = o.Insert(item)
 	return
 }
 
-//列表
+// 列表
 func GetCygxMorningMeetingReviewsList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxMorningMeetingReviews, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT * FROM cygx_morning_meeting_reviews WHERE 1=1 `
@@ -71,10 +72,36 @@ func GetMorningMeetingReviewById(reviewId int) (item *CygxMorningMeetingReviews,
 }
 
 // 发布报告
-func PublishMorningMeetingReviewById(reviewId int) (err error) {
+func PublishMorningMeetingReviewById(status, reviewId int) (err error) {
 	o := orm.NewOrm()
-	sql := `UPDATE cygx_morning_meeting_reviews SET status=1,publish_time=now(),modify_time=NOW() WHERE id = ? `
-	_, err = o.Raw(sql, reviewId).Exec()
+	sql := `UPDATE cygx_morning_meeting_reviews SET status=?,publish_time=now(),modify_time=NOW() WHERE id = ? `
+	_, err = o.Raw(sql, status, reviewId).Exec()
+	return
+}
+
+// 发布报告
+func UpdateMorningMeetingReviewById(status, reviewId int, content string) (err error) {
+	o, err := orm.NewOrm().Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		fmt.Println(err)
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+	sql := `UPDATE cygx_morning_meeting_reviews SET status=?,publish_time=now(),modify_time=NOW() WHERE id = ? `
+	_, err = o.Raw(sql, status, reviewId).Exec()
+	if err != nil {
+		return
+	}
+
+	sql = `UPDATE cygx_morning_meeting_review_chapter SET content = ?  WHERE meeting_id = ? `
+	_, err = o.Raw(sql, content, reviewId).Exec()
+
 	return
 }
 
@@ -86,7 +113,7 @@ type MorningReviewPublishCancelReq struct {
 	ReviewId int `description:"晨会id"`
 }
 
-//取消发布报告
+// 取消发布报告
 func PublishCancelMorningMeetingReview(reviewId int) (err error) {
 	o := orm.NewOrm()
 	sql := ` UPDATE cygx_morning_meeting_reviews SET status=0,publish_time=null WHERE id =?  `
@@ -98,8 +125,7 @@ type MorningReviewDeleteReq struct {
 	ReviewId int `description:"晨会id"`
 }
 
-
-//删除晨会点评
+// 删除晨会点评
 func DeleteMorningMeeting(reviewId int) (err error) {
 	o := orm.NewOrm()
 	sql := ` DELETE FROM cygx_morning_meeting_reviews WHERE id =? `
@@ -107,7 +133,7 @@ func DeleteMorningMeeting(reviewId int) (err error) {
 	return
 }
 
-//更新晨报点评
+// 更新晨报点评
 func UpdateCygxMorningMeetingReviews(item *CygxMorningMeetingReviews) (err error) {
 	o := orm.NewOrm()
 	sql := `UPDATE cygx_morning_meeting_reviews

+ 1 - 0
models/db.go

@@ -154,6 +154,7 @@ func init() {
 		new(CygxActivityOfflineMeetingDetail),
 		new(CygxProductInteriorHistory),
 		new(CygxMorningMeetingGather),
+		new(CygxMorningMeetingReviewLog), //晨会操作日志
 		new(CygxArticleCategoryMapping),
 		new(CygxReportMappingCygx),
 		new(CygxReportMappingGroup),

+ 27 - 0
routers/commentsRouter.go

@@ -952,6 +952,33 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:MorningMeetingController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:MorningMeetingController"],
+        beego.ControllerComments{
+            Method: "LogApprove",
+            Router: `/log/approve`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:MorningMeetingController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:MorningMeetingController"],
+        beego.ControllerComments{
+            Method: "LogApproveEdit",
+            Router: `/log/approve_edit`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:MorningMeetingController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:MorningMeetingController"],
+        beego.ControllerComments{
+            Method: "LogDetail",
+            Router: `/log/detail`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ProductInteriorController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ProductInteriorController"],
         beego.ControllerComments{
             Method: "Detail",

+ 102 - 0
services/morning_meeting.go

@@ -181,3 +181,105 @@ func GetCygxMorningMeetingReviewChapterListByIds(meetingreviewchaptIds []int) (i
 	items = listrMeet
 	return
 }
+
+func GetCygxMorningMeetingReviewChapterListByIds2(meetingreviewchaptIds []int) (items []*models.CygxMorningMeetingReviewLogResp, err error) {
+	lenArr := len(meetingreviewchaptIds)
+	if lenArr == 0 {
+		return
+	}
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg(fmt.Sprint("通过晨会精华子ID,获取出参列表详情失败 ,GetCygxMorningMeetingReviewChapterListByIds err"+err.Error(), "meetingreviewchaptIds:", meetingreviewchaptIds), 2)
+		}
+	}()
+	var condition string
+	var pars []interface{}
+
+	pars = make([]interface{}, 0)
+	condition = ` AND c.id IN (` + utils.GetOrmInReplace(lenArr) + `)`
+	pars = append(pars, meetingreviewchaptIds)
+
+	//查询晨会
+	listrMeet, e := models.GetCygxMorningMeetingReviewChapterList2(condition, pars)
+	if e != nil {
+		err = errors.New("GetCygxMorningMeetingReviewChapterList, Err: " + e.Error())
+		return
+	}
+
+	//获取晨会相关的标的
+	var subjectIds []string
+	for _, v := range listrMeet {
+		if v.IndustrialSubjectIds != "" {
+			slice := strings.Split(v.IndustrialSubjectIds, ",")
+			for _, vS := range slice {
+				subjectIds = append(subjectIds, vS)
+			}
+		}
+	}
+
+	lensubjectIds := len(subjectIds)
+	if lensubjectIds > 0 {
+		//获取标的信息
+		pars = make([]interface{}, 0)
+		condition = ` AND industrial_subject_id  IN (` + utils.GetOrmInReplace(lensubjectIds) + `)`
+		pars = append(pars, subjectIds)
+		listsubject, e := models.GetCygxIndustrialSubjectListCondition(condition, pars)
+		if e != nil {
+			err = errors.New("GetCygxIndustrialSubjectListCondition, Err: " + e.Error())
+			return
+		}
+
+		var meetSubjectItems = make(map[string]*models.CygxIndustrialSubject)
+		for _, v := range listsubject {
+			meetSubjectItems[strconv.Itoa(v.IndustrialSubjectId)] = v
+		}
+
+		//建立标的与晨会的映射关系
+		for _, v := range listrMeet {
+			if v.IndustrialSubjectIds != "" {
+				slice := strings.Split(v.IndustrialSubjectIds, ",")
+				for _, vS := range slice {
+					if meetSubjectItems[vS] != nil {
+						v.ListSubject = append(v.ListSubject, meetSubjectItems[vS])
+					}
+				}
+			}
+		}
+	}
+	items = listrMeet
+	return
+}
+
+// 添加晨会精华操作日志
+func AddCygxMorningMeetingReviewLog(itemReq *models.CygxMorningMeetingReviewLog, operate, opUserName string, opUserId int) (mapPvResp, mapUvResp map[int]int) {
+
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg("添加晨会精华操作日志 失败,AddCygxMorningMeetingReviewLog Err:"+err.Error(), 3)
+		}
+	}()
+	itemReq.LogId = 0
+	//item := new(models.CygxMorningMeetingReviewLog)
+	//item.MeetingTime = itemReq.MeetingTime
+	//item.CreateTime = time.Now()
+	//item.ModifyTime = time.Now()
+	//item.IndustryId = itemReq.IndustryId
+	//item.IndustryName = itemReq.IndustryName
+	//item.ChartPermissionName = itemReq.ChartPermissionName
+	//item.ChartPermissionId = itemReq.ChartPermissionId
+	//item.IndustrialSubjectIds = itemReq.IndustrialSubjectIds
+	//item.MeetingId = int(itemReq.MeetingId)
+	//item.Content = itemReq.Content
+	//item.ReportLink = itemReq.ReportLink
+	//item.LinkArticleId = itemReq.LinkArticleId
+	//item.Title = itemReq.Title
+	//itemReq.Remark = remark
+	itemReq.Operate = operate
+	itemReq.OpUserName = opUserName
+	itemReq.OpUserId = opUserId
+
+	err = models.AddCygxMorningMeetingReviewLog(itemReq)
+	return
+}