网站建设最基础是什么,优惠网站如何做,网站建设最简单的教程,像聚美网站建设费用简介
用户留言、收藏、修改收货地址等#xff0c;统一放在用户操作微服务这里按照业务类型划分微服务表设计#xff0c;三张表// 用户收藏
type UserFav struct {BaseModel// 联合索引 idx_user_goods#xff0c;且唯一User int32 gorm:type:int;index:idx_user_goo…简介
用户留言、收藏、修改收货地址等统一放在用户操作微服务这里按照业务类型划分微服务表设计三张表// 用户收藏
type UserFav struct {BaseModel// 联合索引 idx_user_goods且唯一User int32 gorm:type:int;index:idx_user_goods,uniqueGoods int32 gorm:type:int;index:idx_user_goods,unique
}建库生成表设计 proto 文件生成 stub这里没放在一起生成三个 stub 之前有多个 stub 是因为服务间调用 更改配置启动服务并注册 更改 nacos 即可config 不需要增加配置项type ServerConfig struct{Name string mapstructure:name json:nameHost string mapstructure:host json:hostTags []string mapstructure:tags json:tagsMysqlInfo MysqlConfig mapstructure:mysql json:mysqlConsulInfo ConsulConfig mapstructure:consul json:consul
}这里 grpc 需要注册三个 handler 到 server再注册服务到 consul这就是多个 stub 不一样的地方
handler
srv 层实现handler/贴一个接口实现吧没什么新东西func (*UserOpServer) GetFavList(ctx context.Context, req *proto.UserFavRequest) (*proto.UserFavListResponse, error) {var rsp proto.UserFavListResponsevar userFavs []model.UserFavvar userFavList []*proto.UserFavResponse//查询用户的收藏记录//这里还定义了goodsId为参数可以查询某件商品被哪些用户收藏了此时不传userId即可result : global.DB.Where(model.UserFav{User: req.UserId, Goods: req.GoodsId}).Find(userFavs)rsp.Total int32(result.RowsAffected)for _, userFav : range userFavs {userFavList append(userFavList, proto.UserFavResponse{UserId: userFav.User,GoodsId: userFav.Goods,})}rsp.Data userFavListreturn rsp, nil
}web
API 层实现api/要调用多个 srv 层把 stub 拿过来定义 form 表单接收 POST 参数更改 nacos 配置启动注册没什么特殊的地方有个 TODO 收藏商品时应该先去判断这个商品是否存在 没啥好说的看代码
小结
准备前后端联调接口打通为多机部署做准备