Files
full/module/base/feedback/internal/logic/method/add.go

76 lines
2.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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"
"git.apinb.com/bsm-sdk/core/types"
"git.apinb.com/bsm-sdk/core/utils"
)
// Add 添加新的反馈记录
// ctx: 上下文,包含用户认证信息
// in: 添加请求参数
// 返回: 添加结果包含新创建的记录ID
func Add(ctx context.Context, in *pb.AddRequest) (reply *pb.AddReply, err error) {
// 解析用户认证信息
auth, err := service.ParseMetaCtx(ctx, nil)
if err != nil {
return nil, err
}
// 构建反馈记录
record := &models.FeedbackItem{
Std_IICUDS: types.Std_IICUDS{
Identity: utils.UUID(), // 生成唯一标识
},
Std_Passport: types.Std_Passport{
PassportID: auth.ID, // 用户ID
PassportIdentity: auth.Identity, // 用户身份标识
},
UserName: in.GetUserName(), // 用户名
Status: in.GetStatus(), // 状态
Email: in.GetEmail(), // 邮箱
Phone: in.GetPhone(), // 手机号
Title: in.GetTitle(), // 标题
Content: in.GetContent(), // 内容
Images: make([]models.FeedbackImage, 0, len(in.GetImages())), // 图片列表
Accessories: make([]models.FeedbackAccessory, 0, len(in.GetAccessories())), // 附件列表
}
// 处理图片信息
for _, v := range in.GetImages() {
record.Images = append(record.Images, models.FeedbackImage{
Std_IICUDS: types.Std_IICUDS{
Identity: utils.UUID(), // 生成图片唯一标识
},
ItemIdentity: record.Identity, // 关联的反馈记录ID
URL: v.GetUrl(), // 图片URL
})
}
// 处理附件信息
for _, v := range in.GetAccessories() {
record.Accessories = append(record.Accessories, models.FeedbackAccessory{
Std_IICUDS: types.Std_IICUDS{
Identity: utils.UUID(), // 生成附件唯一标识
},
ItemIdentity: record.Identity, // 关联的反馈记录ID
Title: v.Title, // 附件标题
FilePath: v.FilePath, // 附件文件路径
})
}
// 保存到数据库
err = impl.DBService.Create(record).Error
if err != nil {
return nil, err
}
return &pb.AddReply{Identity: record.Identity}, nil
}