go从0到1项目实战体系三十四:演示案列实例三
2023-12-25 14:30:54
1. 知识点1:
(1). model文件中:
type BookMetas struct {
...
}
func NewBookMeta(key string,value string,itemid int) *BookMetas {
return &BookMetas{MetaKey:key,MetaValue:value,ItemId:itemid}
}
func(this *BookMetas) Save() error {
// 当主键冲突时,插入已存在主键的记录时,将插入操作变为修改
return AppInit.GetDB().Set("gorm:insert_option",
"ON DUPLICATE KEY UPDATE meta_value=meta_value+1").Create(this).Error
}
(2). service文件中:
Models.NewBookMeta("click","1",prods.BookID).Save()
注:
①. NewBookMeta()返回的是一个*BookMetas.
2. service方法可自定义扩展返回值:
(1). endpoint文件:
type BookResponse struct {
Result interface{} `json:"result"`
Metas interface{} `json:"metas"` // 追加一个值
}
// 图书详细
func BookDetailEndPoint(book *BookService) App.Endpoint {
return func(ctx context.Context, request interface{}) (response interface{}, err error) {
req:=request.(*BookDetailRequest)
result, metas, err := book.LoadBookDetail(req) // 接收3个值
return &BookResponse{Result:result, Metas:metas}, err
}
}
(2). service文件:
// 返回3个值
func(this *BookService) LoadBookDetail(req *BookDetailRequest) (*Models.Books, []*Models.BookMetas, error) {
prods:=&Models.Books{}
if AppInit.GetDB().Find(prods,req.BookID).RowsAffected!=1{
return nil, nil, fmt.Errorf("no book")
}
Models.NewBookMeta("click","1",prods.BookID).Save()
metas:=[]*Models.BookMetas{}
AppInit.GetDB().Where("item_id=?",prods.BookID).Find(&metas)
return prods, metas, nil
}
文章来源:https://blog.csdn.net/m0_68635815/article/details/135198414
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!