Go项目(用户操作微服务)

简介

  • 用户留言、收藏、修改收货地址等,统一放在用户操作微服务
  • 这里按照业务类型划分微服务
  • 表设计,三张表
    // 用户收藏
    type UserFav struct {
    	BaseModel
    	// 联合索引 idx_user_goods,且唯一
    	User  int32 `gorm:"type:int;index:idx_user_goods,unique"`
    	Goods int32 `gorm:"type:int;index:idx_user_goods,unique"`
    }
    
  • 建库生成表
  • 设计 proto 文件,生成 stub,这里没放在一起,生成三个 stub
    • 之前有多个 stub 是因为服务间调用
  • 更改配置,启动服务并注册
    • 更改 nacos 即可,config 不需要增加配置项
      type ServerConfig struct{
      	Name string `mapstructure:"name" json:"name"`
      	Host string `mapstructure:"host" json:"host"`
      	Tags []string `mapstructure:"tags" json:"tags"`
      	MysqlInfo MysqlConfig `mapstructure:"mysql" json:"mysql"`
      	ConsulInfo 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.UserFavListResponse
    	var userFavs []model.UserFav
    	var 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 = userFavList
    	return &rsp, nil
    }
    

web

  • API 层实现,api/
  • 要调用多个 srv 层,把 stub 拿过来
  • 定义 form 表单,接收 POST 参数;更改 nacos 配置,启动,注册
  • 没什么特殊的地方,有个 TODO
    • 收藏商品时,应该先去判断这个商品是否存在
  • 没啥好说的,看代码

小结

  • 到此,各微服务基本开发完毕,接下来将 es 搜索集成到商品服务
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑞士_R

修行不易...

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值