用户反馈信息基本CRUD
This commit is contained in:
172
internal/logic/feedback/feedback.go
Normal file
172
internal/logic/feedback/feedback.go
Normal file
@ -0,0 +1,172 @@
|
||||
package feedback
|
||||
|
||||
import (
|
||||
"context"
|
||||
"server/internal/consts"
|
||||
"server/internal/dao"
|
||||
"server/internal/model"
|
||||
"server/internal/model/do"
|
||||
"server/internal/service"
|
||||
"server/utility/ecode"
|
||||
)
|
||||
|
||||
type sFeedback struct {
|
||||
}
|
||||
|
||||
func New() service.IFeedback {
|
||||
return &sFeedback{}
|
||||
}
|
||||
|
||||
func init() {
|
||||
service.RegisterFeedback(New())
|
||||
}
|
||||
|
||||
func (s *sFeedback) List(ctx context.Context, in *model.FeedbackIn) (out *model.FeedbackOut, err error) {
|
||||
m := dao.Feedbacks.Ctx(ctx)
|
||||
|
||||
// 默认分页
|
||||
if in.Page == 0 {
|
||||
in.Page = 1
|
||||
}
|
||||
if in.Size == 0 {
|
||||
in.Size = 10
|
||||
}
|
||||
|
||||
// 判断角色
|
||||
if in.Role == consts.MerchantRoleCode {
|
||||
m = m.Where(do.Feedbacks{
|
||||
MerchatId: in.OperatorId,
|
||||
})
|
||||
} else if in.Role == consts.StoreRoleCode {
|
||||
m = m.Where(do.Feedbacks{
|
||||
StoreId: in.OperatorId,
|
||||
})
|
||||
} else if in.Role == consts.UserRoleCode {
|
||||
m = m.Where(do.Feedbacks{
|
||||
UserId: in.OperatorId,
|
||||
})
|
||||
}
|
||||
|
||||
// 构建查询条件
|
||||
if in.Keyword != "" {
|
||||
m = m.WhereLike(dao.Feedbacks.Columns().Title, "%"+in.Keyword+"%")
|
||||
}
|
||||
|
||||
if in.FeedbackType > 0 {
|
||||
m = m.Where(do.Feedbacks{
|
||||
FeedbackType: in.FeedbackType,
|
||||
})
|
||||
}
|
||||
|
||||
if in.Status > 0 {
|
||||
m = m.Where(do.Feedbacks{
|
||||
Status: in.Status,
|
||||
})
|
||||
}
|
||||
|
||||
// 分页查询
|
||||
list := make([]model.Feedback, 0)
|
||||
var total int
|
||||
err = m.Page(in.Page, in.Size).OrderDesc(dao.Feedbacks.Columns().CreatedAt).OrderDesc(dao.Feedbacks.Columns().Id).ScanAndCount(&list, &total, false)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &model.FeedbackOut{
|
||||
List: list,
|
||||
Total: total,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *sFeedback) Create(ctx context.Context, in *model.FeedbackCreateIn) (out *model.FeedbackCreateOut, err error) {
|
||||
|
||||
// 暂定只能用户提交反馈信息
|
||||
_, err = dao.Feedbacks.Ctx(ctx).Insert(do.Feedbacks{
|
||||
Title: in.Title,
|
||||
Content: in.Content,
|
||||
FeedbackType: in.FeedbackType,
|
||||
UserId: in.OperatorId,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &model.FeedbackCreateOut{
|
||||
Success: true,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *sFeedback) Update(ctx context.Context, in *model.FeedbackUpdateIn) (out *model.FeedbackUpdateOut, err error) {
|
||||
|
||||
// 暂定用户修改反馈信息
|
||||
|
||||
// 是否存在该信息
|
||||
var feedback *model.Feedback
|
||||
err = dao.Feedbacks.Ctx(ctx).Where(do.Feedbacks{Id: in.Id}).Scan(&feedback)
|
||||
if err != nil || feedback == nil {
|
||||
return nil, ecode.Fail.Sub("未查询到该反馈信息")
|
||||
}
|
||||
|
||||
// 该反馈信息是否未处理
|
||||
if feedback.Status != consts.Unprocess {
|
||||
return nil, ecode.Fail.Sub("该反馈信息已处理")
|
||||
}
|
||||
|
||||
_, err = dao.Feedbacks.Ctx(ctx).Where(do.Feedbacks{Id: in.Id}).Update(do.Feedbacks{
|
||||
Title: in.Title,
|
||||
Content: in.Content,
|
||||
FeedbackType: in.FeedbackType,
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("更新反馈信息出现异常")
|
||||
}
|
||||
|
||||
return &model.FeedbackUpdateOut{
|
||||
Success: true,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *sFeedback) UpdateReply(ctx context.Context, in *model.FeedbackUpdateReplyIn) (out *model.FeedbackUpdateReplyOut, err error) {
|
||||
|
||||
var feedback *model.Feedback
|
||||
err = dao.Feedbacks.Ctx(ctx).Where(do.Feedbacks{Id: in.Id}).Scan(&feedback)
|
||||
|
||||
if err != nil || feedback == nil {
|
||||
return nil, ecode.Fail.Sub("该反馈信息不存在")
|
||||
}
|
||||
|
||||
if feedback.Status == consts.Processed || feedback.Status == consts.Rejected {
|
||||
return nil, ecode.Fail.Sub("该反馈信息已处理")
|
||||
}
|
||||
|
||||
_, err = dao.Feedbacks.Ctx(ctx).Where(do.Feedbacks{Id: in.Id}).Update(do.Feedbacks{
|
||||
Reply: in.Reply,
|
||||
Status: in.Status,
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &model.FeedbackUpdateReplyOut{
|
||||
Success: true,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *sFeedback) InfoFeedback(ctx context.Context, in *model.FeedbackInfoIn) (out *model.FeedbackInfoOut, err error) {
|
||||
|
||||
exist, err := dao.Feedbacks.Ctx(ctx).Where(do.Feedbacks{Id: in.Id}).Exist()
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("查询该反馈信息失败")
|
||||
}
|
||||
|
||||
if !exist {
|
||||
return nil, ecode.Params.Sub("该反馈信息不存在")
|
||||
}
|
||||
|
||||
err = dao.Feedbacks.Ctx(ctx).Where(do.Feedbacks{Id: in.Id}).Scan(&out)
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("查询该反馈信息失败")
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
@ -6,6 +6,7 @@ package logic
|
||||
|
||||
import (
|
||||
_ "server/internal/logic/admin"
|
||||
_ "server/internal/logic/feedback"
|
||||
_ "server/internal/logic/merchant"
|
||||
_ "server/internal/logic/merchantAdmin"
|
||||
_ "server/internal/logic/rewardType"
|
||||
|
||||
Reference in New Issue
Block a user