「这是我参与2022首次更文挑战的第14天,活动详情查看:2022首次更文挑战」。
B站视频讲解地址
Github源码
2. 备忘录其他操作
构造一个服务
type TaskService struct {
}
2.1 获取备忘录列表
传入的参数:上下文信息,请求参数,响应参数。
func (*TaskService) GetTasksList(ctx context.Context, req *services.TaskRequest, res *services.TaskListResponse) error {
if req.Limit == 0 {
req.Limit = 6
}
//在数据库查找值
var productData []model.Task
var count uint32
err := model.DB.Offset(req.Start).Limit(req.Limit).Where("uid=?", req.Uid).Find(&productData).Error
if err != nil {
err = errors.New("mysql err:" + err.Error())
return err
}
err = model.DB.Model(&model.Task{}).Where("uid=?", req.Uid).Count(&count).Error
if err != nil {
err = errors.New("mysql err:" + err.Error())
return err
}
//序类化备忘录列表
var taskRes []*services.TaskModel
for _, item := range productData {
taskRes = append(taskRes, BuildTask(item))
}
//序列化后的结果赋给response
res.TaskList = taskRes
res.Count = count
return nil
}
2.2 获取备忘录详情
func (*TaskService) GetTask(ctx context.Context, req *services.TaskRequest, res *services.TaskDetailResponse) error {
//在数据库查找值
productData := model.Task{}
err := model.DB.First(&productData, req.Id).Error
if err != nil {
err = errors.New("mysql err:" + err.Error())
return err
}
//序类化商品
productRes := BuildTask(productData)
//序列化后的结果赋给response
res.TaskDetail = productRes
return nil
}
2.3 更新备忘录
func (*TaskService) UpdateTask(ctx context.Context, req *services.TaskRequest, res *services.TaskDetailResponse) error {
//在数据库查找值
taskData := model.Task{}
err := model.DB.Model(model.Task{}).Where("id = ? AND uid = ?",req.Id,req.Uid).First(&taskData).Error
if err != nil {
err = errors.New("mysql err:" + err.Error())
return err
}
//将要更新的数据赋值给结构体
taskData.Title = req.Title
taskData.Status = int(req.Status)
taskData.Content = req.Content
//update
err = model.DB.Save(&taskData).Error
if err != nil {
err = errors.New("mysql err:" + err.Error())
return err
}
//序列化后的结果赋给response
res.TaskDetail = BuildTask(taskData)
return nil
}
2.4 注册到etcd中
- 注册etcd
etcdReg := etcd.NewRegistry(
registry.Addrs("127.0.0.1:2379"),
)
- 得到微服务实例
// 1. 得到微服务实例
microService := micro.NewService(
micro.Name("rpcTaskService"), // 设置微服务名字,用来访问的
micro.Address("127.0.0.1:8083"),
micro.Registry(etcdReg),
)
- 初始化
microService.Init()
- 服务注册 将用户服务注册到etcd中
_ = services.RegisterTaskServiceHandler(microService.Server(), new(core.TaskService))
- 启动微服务
_ = microService.Run()
查看etcd中http://localhost:8080/etcdkeeper/是否有该模块的注册信息