304 lines
6.7 KiB
Go
304 lines
6.7 KiB
Go
package controller
|
|
|
|
import (
|
|
"case-admin-api/api/dao"
|
|
"case-admin-api/api/dto"
|
|
"case-admin-api/api/requests"
|
|
"case-admin-api/api/responses"
|
|
"case-admin-api/api/service"
|
|
"case-admin-api/global"
|
|
"case-admin-api/utils"
|
|
"github.com/gin-gonic/gin"
|
|
"strconv"
|
|
)
|
|
|
|
type CaseComment struct {
|
|
}
|
|
|
|
// GetCaseCommentPage 获取列表-分页
|
|
func (b *CaseComment) GetCaseCommentPage(c *gin.Context) {
|
|
caseCommentRequest := requests.CaseCommentRequest{}
|
|
req := caseCommentRequest.GetCaseCommentPage
|
|
if err := c.ShouldBind(&req); err != nil {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
// 参数验证
|
|
if err := global.Validate.Struct(req); err != nil {
|
|
responses.FailWithMessage(utils.Translate(err), c)
|
|
return
|
|
}
|
|
|
|
if req.Page == 0 {
|
|
req.Page = 1
|
|
}
|
|
|
|
if req.PageSize == 0 {
|
|
req.PageSize = 20
|
|
}
|
|
|
|
// 获取数据
|
|
caseCommentDao := dao.CaseCommentDao{}
|
|
caseComments, total, err := caseCommentDao.GetCaseCommentPageSearch(req, req.Page, req.PageSize)
|
|
if err != nil {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
// 处理返回值
|
|
g := dto.GetCaseCommentListDto(caseComments)
|
|
|
|
result := make(map[string]interface{})
|
|
result["page"] = req.Page
|
|
result["page_size"] = req.PageSize
|
|
result["total"] = total
|
|
result["data"] = g
|
|
responses.OkWithData(result, c)
|
|
}
|
|
|
|
// PutCaseCommentStatus 操作状态
|
|
func (b *CaseComment) PutCaseCommentStatus(c *gin.Context) {
|
|
caseCommentRequest := requests.CaseCommentRequest{}
|
|
req := caseCommentRequest.PutCaseCommentStatus
|
|
if err := c.ShouldBind(&req); err != nil {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
// 参数验证
|
|
if err := global.Validate.Struct(req); err != nil {
|
|
responses.FailWithMessage(utils.Translate(err), c)
|
|
return
|
|
}
|
|
|
|
id := c.Param("comment_id")
|
|
if id == "" {
|
|
responses.FailWithMessage("缺少参数", c)
|
|
return
|
|
}
|
|
|
|
// 将 id 转换为 int64 类型
|
|
commentId, err := strconv.ParseInt(id, 10, 64)
|
|
if err != nil {
|
|
responses.Fail(c)
|
|
return
|
|
}
|
|
|
|
caseCommentDao := dao.CaseCommentDao{}
|
|
caseComment, err := caseCommentDao.GetCaseCommentById(commentId)
|
|
if err != nil {
|
|
responses.FailWithMessage("数据异常", c)
|
|
return
|
|
}
|
|
|
|
// 检测状态
|
|
if caseComment.Status == req.Status {
|
|
responses.Ok(c)
|
|
return
|
|
}
|
|
|
|
// 开始事务
|
|
tx := global.Db.Begin()
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
tx.Rollback()
|
|
}
|
|
}()
|
|
|
|
caseCommentData := make(map[string]interface{})
|
|
caseCommentData["status"] = req.Status
|
|
err = caseCommentDao.EditCaseCommentById(tx, commentId, caseCommentData)
|
|
if err != nil {
|
|
tx.Rollback()
|
|
responses.FailWithMessage("操作失败", c)
|
|
return
|
|
}
|
|
|
|
tx.Commit()
|
|
responses.Ok(c)
|
|
}
|
|
|
|
// PutCaseCommentContent 修改评论内容
|
|
func (b *CaseComment) PutCaseCommentContent(c *gin.Context) {
|
|
caseCommentRequest := requests.CaseCommentRequest{}
|
|
req := caseCommentRequest.PutCaseCommentContent
|
|
if err := c.ShouldBind(&req); err != nil {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
// 参数验证
|
|
if err := global.Validate.Struct(req); err != nil {
|
|
responses.FailWithMessage(utils.Translate(err), c)
|
|
return
|
|
}
|
|
|
|
id := c.Param("comment_id")
|
|
if id == "" {
|
|
responses.FailWithMessage("缺少参数", c)
|
|
return
|
|
}
|
|
|
|
// 将 id 转换为 int64 类型
|
|
commentId, err := strconv.ParseInt(id, 10, 64)
|
|
if err != nil {
|
|
responses.Fail(c)
|
|
return
|
|
}
|
|
|
|
caseCommentDao := dao.CaseCommentDao{}
|
|
caseComment, err := caseCommentDao.GetCaseCommentById(commentId)
|
|
if err != nil {
|
|
responses.FailWithMessage("数据异常", c)
|
|
return
|
|
}
|
|
|
|
if caseComment.Content == req.Content {
|
|
responses.Ok(c)
|
|
return
|
|
}
|
|
|
|
// 开始事务
|
|
tx := global.Db.Begin()
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
tx.Rollback()
|
|
}
|
|
}()
|
|
|
|
caseCommentData := make(map[string]interface{})
|
|
caseCommentData["content"] = req.Content
|
|
err = caseCommentDao.EditCaseCommentById(tx, commentId, caseCommentData)
|
|
if err != nil {
|
|
tx.Rollback()
|
|
responses.FailWithMessage("操作失败", c)
|
|
return
|
|
}
|
|
|
|
tx.Commit()
|
|
responses.Ok(c)
|
|
}
|
|
|
|
// AddCaseCommentHighQuality 设置优质评论
|
|
func (b *CaseComment) AddCaseCommentHighQuality(c *gin.Context) {
|
|
caseCommentRequest := requests.CaseCommentRequest{}
|
|
req := caseCommentRequest.AddCaseCommentHighQuality
|
|
if err := c.ShouldBind(&req); err != nil {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
// 参数验证
|
|
if err := global.Validate.Struct(req); err != nil {
|
|
responses.FailWithMessage(utils.Translate(err), c)
|
|
return
|
|
}
|
|
|
|
id := c.Param("comment_id")
|
|
if id == "" {
|
|
responses.FailWithMessage("缺少参数", c)
|
|
return
|
|
}
|
|
|
|
// 将 id 转换为 int64 类型
|
|
commentId, err := strconv.ParseInt(id, 10, 64)
|
|
if err != nil {
|
|
responses.Fail(c)
|
|
return
|
|
}
|
|
|
|
caseCommentDao := dao.CaseCommentDao{}
|
|
caseComment, err := caseCommentDao.GetCaseCommentById(commentId)
|
|
if err != nil {
|
|
responses.FailWithMessage("数据异常", c)
|
|
return
|
|
}
|
|
|
|
if caseComment.IsHighQuality == req.IsHighQuality {
|
|
responses.Ok(c)
|
|
return
|
|
}
|
|
|
|
// 获取病例数据
|
|
caseDao := dao.CaseDao{}
|
|
result, err := caseDao.GetCaseById(caseComment.CaseId)
|
|
if err != nil {
|
|
responses.Fail(c)
|
|
return
|
|
}
|
|
|
|
// 获取用户数据
|
|
userDao := dao.UserDao{}
|
|
user, err := userDao.GetUserById(caseComment.UserId)
|
|
if err != nil {
|
|
responses.Fail(c)
|
|
return
|
|
}
|
|
|
|
// 处理积分类型
|
|
scoreType := 3
|
|
|
|
// 检测是否已经获取过优质留言
|
|
recordScoreDao := dao.RecordScoreDao{}
|
|
maps := make(map[string]interface{})
|
|
maps["project_id"] = result.ProjectId
|
|
maps["case_id"] = result.CaseId
|
|
maps["platform_id"] = caseComment.PlatformId
|
|
maps["user_id"] = user.UserId
|
|
recordScores, _ := recordScoreDao.GetRecordScoreList(maps)
|
|
if len(recordScores) > 0 {
|
|
for _, score := range recordScores {
|
|
if score.Type == 3 {
|
|
scoreType = 4
|
|
}
|
|
|
|
if score.Type == 4 {
|
|
// 优质留言已经发放过
|
|
responses.Ok(c)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
// 开始事务
|
|
tx := global.Db.Begin()
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
tx.Rollback()
|
|
}
|
|
}()
|
|
|
|
// 发放积分-优质留言-1010 修改
|
|
userService := service.UserService{}
|
|
err = userService.ReportUserScore(tx, result.ProjectId, caseComment.CaseId, caseComment.PlatformId, scoreType, user)
|
|
if err != nil {
|
|
tx.Rollback()
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
// 上报用户参与情况-只上报优质留言-佳动力
|
|
if caseComment.PlatformId == 2 {
|
|
err = userService.ReportCaseRecord(tx, result.ProjectId, caseComment.CaseId, user)
|
|
if err != nil {
|
|
tx.Rollback()
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
}
|
|
|
|
caseCommentData := make(map[string]interface{})
|
|
caseCommentData["is_high_quality"] = req.IsHighQuality
|
|
caseCommentData["is_grant_high_quality"] = 1
|
|
err = caseCommentDao.EditCaseCommentById(tx, commentId, caseCommentData)
|
|
if err != nil {
|
|
tx.Rollback()
|
|
responses.FailWithMessage("操作失败", c)
|
|
return
|
|
}
|
|
|
|
tx.Commit()
|
|
responses.Ok(c)
|
|
}
|