基于go-micro微服务的实战-实现用户服务的注册和登录(四)

本文介绍如何使用Go微服务框架go-micro实现用户服务的注册与登录功能,包括编写proto文件、数据库表设计、业务逻辑处理及网关路由设置。
基于go-micro微服务的实战-实现用户服务的注册和登录(四)

文章最后附带完整代码

基于go-micro实现用户服务实的注册和登录

工程目录上,每个往后的小节都是基于前一个小节的基础,环环相扣。所以这节就是基于第3节的工程目录扩展。

这节主要就是如何去实现用户的注册登录,依赖的第三方库的相关使用以及业务逻辑。

第三方库

  • gorm.io/gorm
  • github.com/astaxie/beego/validation
第一步:编写proto文件,新增grpc接口,编译生成

user.proto上继续新增接口和对应参数内容

service UserService{
    rpc UserReg(RegReq) returns(RegResp){}
    rpc UserLogin(LoginReq) returns(LoginResp){}
}

message RegReq{
    string name = 1;
    string phone =2;
    string email =3;
    string pwd = 4;
    string confir_pwd = 5;
}

message RegResp{
    int32 status = 1;
    string msg = 2;
}

message LoginReq{
    string phone =1;
    string pwd = 2;
}

message LoginResp{
    int32 status = 1;
    string user_id = 2;
    string msg = 3;
}


执行pb.bat或者pb.sh快速编译生成,grpc_gateway和grpc_user的proto都要同步添加和执行

第二步:新增user数据表和对应结构体定义

创建用户表,sql语句在user.sql

CREATE TABLE `user` (
  `user_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户id',
  `name` varchar(50) NOT NULL COMMENT '名字',
  `phone` varchar(50) NOT NULL COMMENT '手机号',
  `pwd` varchar(50) NOT NULL COMMENT '密码',
  `reg_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '注册时间',
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8 COMMENT='用户表';

user结构体定义,在models下新建user_model.go。其中的tag标识中,

  • gorm:"column:user_id;primaryKey",代表指定user_id为主键,并且User.Id对应的是user_id字段。
  • gorm:"-",代表写入db时候忽略该字段,gorm的语法规则
  • valid:"Required;MinSize(4);MaxSize(12)",valid标识的则是使用beego的validtion验证规则。
//用户
type User struct {
   
   
	Id int32 `gorm:"column:user_id;primaryKey"`
	Name string `valid:"Required;MinSize(4);MaxSize(12)"`
	Phone string `valid:"Mobile;Required"`
	Email string `valid:"Email;MaxSize(50)"`
	Pwd string `valid:"Required;MinSize(4);MaxSize(6)"`
	ConfirePwd string `gorm:"-" valid:"Required;MinSize(4);MaxSize(6)"`
	RegTime int64
}
第三步:用户服务的逻辑处理器实现新增的注册和登录接口

注册接口

func (u *UserHandler) UserReg(ctx context.Context, req *pb.RegReq, resp *pb.RegResp) error

请求数据的基础验证,使用github.com/astaxie/beego/validation验证非空,手机号,邮箱格式等等

	user := models.User{
   
   
		Name: req.Name,
		Phone: req.Phone,
		Email
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值