欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 开发个人Go-ChatGPT--4 用户管理

开发个人Go-ChatGPT--4 用户管理

2024/10/23 23:27:15 来源:https://blog.csdn.net/qq_36652517/article/details/140185613  浏览:    关键词:开发个人Go-ChatGPT--4 用户管理

开发个人Go-ChatGPT–4 用户管理

先看下我的目录结构,可以根据个人爱好,进行重构

|-- Dockerfile
|-- LICENSE
|-- common
|   |-- callmodel
|   |   |-- gemma.go
|   |   `-- models.go
|   |-- consts
|   |   |-- code.go
|   |   |-- common.go
|   |   |-- config.go
|   |   `-- consts.go
|   |-- cryptx
|   |   `-- crypt.go
|   |-- curlhttp
|   |   `-- curl.go
|   |-- database
|   |   |-- common.go
|   |   |-- connect.go
|   |   |-- dao.go
|   |   |-- ormLogx.go
|   |   |-- redisClient.go
|   |   `-- redisDao.go
|   |-- go.mod
|   |-- go.sum
|   |-- jwtx
|   |   `-- jwt.go
|   |-- middleware
|   |   `-- static.go
|   |-- model
|   |   |-- chat.sql
|   |   |-- chatmodel.go
|   |   |-- chatmodel_client.go
|   |   |-- prompt.sql
|   |   |-- promptmodel.go
|   |   |-- promptmodel_client.go
|   |   |-- readMe.md
|   |   |-- user.sql
|   |   |-- usermodel.go
|   |   `-- usermodel_client.go
|   `-- utils
|       `-- utils.go
|-- docker-compose.yaml
|-- nginx
|   `-- conf.d
|       `-- default.conf
|-- readme.md
`-- service|-- chat|   |-- api|   `-- rpc`-- user|-- api`-- rpc

4.1 生成 user model 模型

  • 创建 sql 文件 OpenUI 前端需要的字段,不可缺少。mysql服务需提前创建 openui库, user table

    CREATE TABLE `user` (`id` bigint unsigned NOT NULL AUTO_INCREMENT,`name` varchar(255)  NOT NULL DEFAULT '' COMMENT '用户姓名',`email` varchar(255)  NOT NULL DEFAULT '' COMMENT '用户电话',`password` varchar(255)  NOT NULL DEFAULT '' COMMENT '用户密码',`role` varchar(264)  NOT NULL DEFAULT '' COMMENT '用户角色',`profile_image_url` varchar(255)  NOT NULL DEFAULT '' COMMENT '用户头像',`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`id`),UNIQUE KEY `idx_email_unique` (`email`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4;
  • 运行模板生成命令 model文件放置在通用目录,和go-zero官方案例不同

    goctl model mysql ddl -src ./model/user.sql -dir ./model -c
    

4.2 生成 user api 服务

前缀,路由,传参,响应不可变,否则 openui调用失败

  • 创建 user.api 文件

    type (// 用户登录LoginRequest {Email    string `json:"email"`Password string `json:"password"`}LoginResponse {Id              int64  `json:"id"`Name            string `json:"name"`Role            string `json:"role"`ProfileImageUrl string `json:"profile_image_url"`Token           string `json:"token"`}// 用户登录// 用户注册RegisterRequest {Name            string `json:"name"`Email           string `json:"email"`Password        string `json:"password"`ProfileImageUrl string `json:"profile_image_url"`}RegisterResponse {Id    int64  `json:"id"`Name  string `json:"name"`Token string `json:"token"`}// 用户注册// 用户信息UserInfoResponse {Id              int64  `json:"id"`Name            string `json:"name"`Email           string `json:"email"`Role            string `json:"role"`ProfileImageUrl string `json:"
    profile_image_url"`}
    // 用户信息
    )@server (prefix: /api/v1
    )
    service User {@handler Loginpost /auths/signin (LoginRequest) returns (LoginResponse)@handler Registerpost /auths/signup (RegisterRequest) returns (RegisterResponse)
    }@server (jwt:    Authprefix: /api/v1
    )
    service User {@handler UserInfoget /auths returns (UserInfoResponse)
    }
  • 运行模板生成命令

    goctl api go -api ./api/user.api -dir ./api
    

4.3 生成 user rpc 服务

  • 创建 user.proto文件

    syntax = "proto3";package userclient;option go_package = "./user";// 用户登录
    message LoginRequest {string Email = 1;string Password = 2;
    }
    message LoginResponse {int64 Id = 1;string Name = 2;string Token = 3;string Role = 4;string ProfileImageUrl = 5;
    }
    // 用户登录// 用户注册
    message RegisterRequest {string Name = 1;string Email = 2;string Password = 3;string ProfileImageUrl = 4;
    }
    message RegisterResponse {int64 Id = 1;string Name = 2;string Token = 3;
    }
    // 用户注册// 用户信息
    message UserInfoRequest {int64 Id = 1;
    }
    message UserInfoResponse {int64 Id = 1;string Name = 2;string Email = 3;string Role = 4;string ProfileImageUrl = 5;
    }
    // 用户信息service User {rpc Login(LoginRequest) returns(LoginResponse);rpc Register(RegisterRequest) returns(RegisterResponse);rpc UserInfo(UserInfoRequest) returns(UserInfoResponse);
    }
  • 运行模板生成命令

    goctl rpc protoc ./rpc/user.proto --go_out=./rpc/types --go-grpc_out=./rpc/types --zrpc_out=./rpc
    

4.3 配置文件

  • rpc/etc

    Name: user.rpc
    ListenOn: 0.0.0.0:9001Etcd:Hosts:- xxxxxxxxxxxxxxxxxxxxxxxxx:2379Key: user.rpcTimeout: 0Mysql:Host: xxxxxxxxxxxxxxPort: 3306DbName: openuiUser: xxxxxxPassword: "xxxxxxxxxxxxxxxxxxxxxxxxx"DBZone: "TS"Charset: utf8mb4MaxIdle: 10MaxOpen: 100LogMode: trueLoc: Asia/ShanghaiDebug: trueTablePrefix: "v1_"MaxLifetime: 300# redis 支持选择db, 不使用go-zero官方库
    CacheRedis:Name: "openui"Nettype: "tcp"Address: "redis:6379"Auth: ""DB: 0Salt: ********************#日志配置
    LogConf:ServiceName: user.rpcMode: fileTimeFormat: 2006-01-02 15:04:05.000Path: logsLevel: infoCompress: trueStat: false # 不记录CPU、内存等信息KeepDays: 10MaxBackups: 2
  • api/etc

    Name: user.rpc
    ListenOn: 0.0.0.0:9001Etcd:Hosts:- xxxxxxxxxxxxxxxxxxxxxxxxx:2379Key: user.rpcTimeout: 0Mysql:Host: xxxxxxxxxxxxxxPort: 3306DbName: openuiUser: xxxxxxPassword: "xxxxxxxxxxxxxxxxxxxxxxxxx"DBZone: "TS"Charset: utf8mb4MaxIdle: 10MaxOpen: 100LogMode: trueLoc: Asia/ShanghaiDebug: trueTablePrefix: "v1_"MaxLifetime: 300
    # redis 支持选择db, 不使用go-zero官方库
    CacheRedis:Name: "openui"Nettype: "tcp"Address: "redis:6379"Auth: ""DB: 0Salt: *****************#日志配置
    LogConf:ServiceName: user.rpcMode: fileTimeFormat: 2006-01-02 15:04:05.000Path: logsLevel: infoCompress: trueStat: false # 不记录CPU、内存等信息KeepDays: 10MaxBackups: 2

4.4 业务处理

  • 业务处理就不过多描述了,具体处理流程可以看相应文件的实现

项目地址

jackwillsmith/openui-svelte-build (github.com)
GitHub - jackwillsmith/openui-backend-go: openui-backend-go

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com