answer/internal/service/answer_common/answer.go

96 lines
3.3 KiB
Go
Raw Normal View History

2022-09-27 17:59:05 +08:00
package answercommon
import (
"context"
"github.com/answerdev/answer/internal/entity"
"github.com/answerdev/answer/internal/schema"
2022-11-09 16:24:25 +08:00
"github.com/answerdev/answer/pkg/htmltext"
2022-09-27 17:59:05 +08:00
)
type AnswerRepo interface {
AddAnswer(ctx context.Context, answer *entity.Answer) (err error)
RemoveAnswer(ctx context.Context, id string) (err error)
UpdateAnswer(ctx context.Context, answer *entity.Answer, Colar []string) (err error)
GetAnswer(ctx context.Context, id string) (answer *entity.Answer, exist bool, err error)
GetAnswerList(ctx context.Context, answer *entity.Answer) (answerList []*entity.Answer, err error)
GetAnswerPage(ctx context.Context, page, pageSize int, answer *entity.Answer) (answerList []*entity.Answer, total int64, err error)
2022-12-22 11:04:19 +08:00
UpdateAccepted(ctx context.Context, id string, questionID string) error
2022-09-27 17:59:05 +08:00
GetByID(ctx context.Context, id string) (*entity.Answer, bool, error)
GetByUserIDQuestionID(ctx context.Context, userID string, questionID string) (*entity.Answer, bool, error)
2022-09-27 17:59:05 +08:00
SearchList(ctx context.Context, search *entity.AnswerSearch) ([]*entity.Answer, int64, error)
2022-12-21 16:55:16 +08:00
AdminSearchList(ctx context.Context, search *entity.AdminAnswerSearch) ([]*entity.Answer, int64, error)
2022-09-27 17:59:05 +08:00
UpdateAnswerStatus(ctx context.Context, answer *entity.Answer) (err error)
2022-11-02 15:50:32 +08:00
GetAnswerCount(ctx context.Context) (count int64, err error)
2022-09-27 17:59:05 +08:00
}
// AnswerCommon user service
type AnswerCommon struct {
answerRepo AnswerRepo
}
func NewAnswerCommon(answerRepo AnswerRepo) *AnswerCommon {
return &AnswerCommon{
answerRepo: answerRepo,
}
}
func (as *AnswerCommon) SearchAnswered(ctx context.Context, userID, questionID string) (bool, error) {
_, has, err := as.answerRepo.GetByUserIDQuestionID(ctx, userID, questionID)
2022-09-27 17:59:05 +08:00
if err != nil {
return has, err
}
return has, nil
}
2022-12-21 16:55:16 +08:00
func (as *AnswerCommon) AdminSearchList(ctx context.Context, search *entity.AdminAnswerSearch) ([]*entity.Answer, int64, error) {
if search.Status == 0 {
search.Status = 1
}
2022-12-21 16:55:16 +08:00
return as.answerRepo.AdminSearchList(ctx, search)
2022-09-27 17:59:05 +08:00
}
func (as *AnswerCommon) Search(ctx context.Context, search *entity.AnswerSearch) ([]*entity.Answer, int64, error) {
list, count, err := as.answerRepo.SearchList(ctx, search)
if err != nil {
return list, count, err
}
return list, count, err
}
func (as *AnswerCommon) ShowFormat(ctx context.Context, data *entity.Answer) *schema.AnswerInfo {
info := schema.AnswerInfo{}
info.ID = data.ID
info.QuestionID = data.QuestionID
2022-09-27 17:59:05 +08:00
info.Content = data.OriginalText
info.HTML = data.ParsedText
2022-12-22 11:04:19 +08:00
info.Accepted = data.Accepted
2022-09-27 17:59:05 +08:00
info.VoteCount = data.VoteCount
info.CreateTime = data.CreatedAt.Unix()
info.UpdateTime = data.UpdatedAt.Unix()
2022-12-01 14:37:17 +08:00
if data.UpdatedAt.Unix() < 1 {
info.UpdateTime = 0
}
info.UserID = data.UserID
2022-12-01 15:26:20 +08:00
info.UpdateUserID = data.LastEditUserID
info.Status = data.Status
2022-09-27 17:59:05 +08:00
return &info
}
func (as *AnswerCommon) AdminShowFormat(ctx context.Context, data *entity.Answer) *schema.AdminAnswerInfo {
info := schema.AdminAnswerInfo{}
info.ID = data.ID
info.QuestionID = data.QuestionID
2022-12-22 11:04:19 +08:00
info.Accepted = data.Accepted
2022-09-27 17:59:05 +08:00
info.VoteCount = data.VoteCount
info.CreateTime = data.CreatedAt.Unix()
info.UpdateTime = data.UpdatedAt.Unix()
2022-12-01 14:37:17 +08:00
if data.UpdatedAt.Unix() < 1 {
info.UpdateTime = 0
}
info.UserID = data.UserID
2022-12-01 15:26:20 +08:00
info.UpdateUserID = data.LastEditUserID
2022-11-09 16:24:25 +08:00
info.Description = htmltext.FetchExcerpt(data.ParsedText, "...", 240)
2022-09-27 17:59:05 +08:00
return &info
}