refactor: reorganize modules and add Linux build tooling
This commit is contained in:
87
module/base/feedback/internal/logic/method/list.go
Normal file
87
module/base/feedback/internal/logic/method/list.go
Normal file
@@ -0,0 +1,87 @@
|
||||
// Package method 业务逻辑方法包,实现反馈相关的业务操作
|
||||
package method
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"bsm/full/module/base/feedback/internal/impl"
|
||||
"bsm/full/module/base/feedback/internal/models"
|
||||
pb "bsm/full/module/base/feedback/pb"
|
||||
"git.apinb.com/bsm-sdk/core/service"
|
||||
)
|
||||
|
||||
// List 获取反馈记录列表
|
||||
// ctx: 上下文,包含用户认证信息
|
||||
// in: 查询请求参数,包含分页、筛选条件等
|
||||
// 返回: 反馈记录列表和总数
|
||||
func List(ctx context.Context, in *pb.ListRequest) (reply *pb.ListReply, err error) {
|
||||
// 解析用户认证信息
|
||||
auth, err := service.ParseMetaCtx(ctx, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 分页参数校验和设置
|
||||
if in.GetPage() < 1 {
|
||||
in.Page = 1
|
||||
}
|
||||
size := in.GetSize()
|
||||
if size < 1 || size > 50 {
|
||||
in.Size = 10
|
||||
}
|
||||
offset := (in.Page - 1) * in.GetSize()
|
||||
|
||||
// 构建查询会话,预加载图片信息
|
||||
sess := impl.DBService.Preload("Images")
|
||||
|
||||
// 根据机构筛选或用户身份筛选
|
||||
if in.GetAgency() != "" {
|
||||
sess = sess.Where("agency = ?", in.GetAgency())
|
||||
} else {
|
||||
userIdentity := auth.Identity
|
||||
if userIdentity != "" {
|
||||
sess = sess.Where("passport_identity = ?", userIdentity)
|
||||
}
|
||||
}
|
||||
|
||||
// 用户名筛选
|
||||
username := in.GetUserName()
|
||||
if username != "" {
|
||||
sess = sess.Where("username = ?", username)
|
||||
}
|
||||
|
||||
// 状态筛选
|
||||
status := in.GetStatus()
|
||||
if status != 0 {
|
||||
sess = sess.Where("status = ?", status)
|
||||
}
|
||||
|
||||
// 分类筛选
|
||||
category := in.GetCategory()
|
||||
if category != "" {
|
||||
sess = sess.Where("category = ?", category)
|
||||
}
|
||||
|
||||
var (
|
||||
list []models.FeedbackItem
|
||||
count int64
|
||||
)
|
||||
|
||||
// 执行查询,按创建时间倒序排列
|
||||
if err := sess.Limit(int(in.GetSize())).Offset(int(offset)).Order("created_at desc").Find(&list).Count(&count).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 构建响应结果
|
||||
out := &pb.ListReply{
|
||||
Count: count,
|
||||
List: make([]*pb.FeedbackItem, 0, len(list)),
|
||||
}
|
||||
|
||||
// 转换数据格式
|
||||
for _, v := range list {
|
||||
item := convert(v)
|
||||
out.List = append(out.List, item)
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
Reference in New Issue
Block a user