parent
59230d6e39
commit
014e617372
@ -0,0 +1,15 @@
|
|||||||
|
server:
|
||||||
|
http:
|
||||||
|
addr: 0.0.0.0:8100
|
||||||
|
timeout: 1s
|
||||||
|
grpc:
|
||||||
|
addr: 0.0.0.0:9100
|
||||||
|
timeout: 1s
|
||||||
|
data:
|
||||||
|
database:
|
||||||
|
driver: mysql
|
||||||
|
source: dsn := "root:123456@tcp(localhost:3306)/mydatabase?charset=utf8mb4&parseTime=True&loc=Local&maxConnLifetime=60s&maxIdleConns=10&maxOpenConns=100"
|
||||||
|
redis:
|
||||||
|
addr: 127.0.0.1:6379
|
||||||
|
read_timeout: 0.2s
|
||||||
|
write_timeout: 0.2s
|
@ -0,0 +1,30 @@
|
|||||||
|
package biz
|
||||||
|
|
||||||
|
import (
|
||||||
|
"database/sql"
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 模型
|
||||||
|
type Customer struct {
|
||||||
|
//业务逻辑
|
||||||
|
CustomerWork
|
||||||
|
//token部分
|
||||||
|
CustoerToken
|
||||||
|
gorm.Model
|
||||||
|
}
|
||||||
|
|
||||||
|
//业务逻辑部分
|
||||||
|
|
||||||
|
type CustomerWork struct {
|
||||||
|
Telephone string `gorm:"type:varchar(15);uniqueIndex;" json:"telephone"`
|
||||||
|
Name string `gorm:"type:varchar(255);uniqueIndex;" json:"name"`
|
||||||
|
Email string `gorm:"type:varchar(255);uniqueIndex;" json:"email"`
|
||||||
|
Wechat string `gorm:"type:varchar(255);uniqueIndex;" json:"wechat"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// token简介
|
||||||
|
type CustoerToken struct {
|
||||||
|
Token string `gorm:"type:varchar(4095);" json:"token"`
|
||||||
|
TokenCreatAt sql.NullTime `gorm:"" json:"token_created_at"`
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package data
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// customer 中与数据操作相关的代码
|
||||||
|
type CustomerData struct {
|
||||||
|
data *Data
|
||||||
|
}
|
||||||
|
|
||||||
|
// New 方法
|
||||||
|
func NewCustomerData(data *Data) *CustomerData {
|
||||||
|
return &CustomerData{data: data}
|
||||||
|
}
|
||||||
|
|
||||||
|
// redis存储验证码
|
||||||
|
func (cd CustomerData) SetVerifyCode(telephone, code string, ex int64) error {
|
||||||
|
|
||||||
|
status := cd.data.Rdb.Set(context.Background(), "CVC"+telephone, code, time.Duration(ex)*time.Second)
|
||||||
|
if _, err := status.Result(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
@ -1,24 +1,60 @@
|
|||||||
package data
|
package data
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"customer/internal/biz"
|
||||||
"customer/internal/conf"
|
"customer/internal/conf"
|
||||||
|
"fmt"
|
||||||
|
"github.com/redis/go-redis/v9"
|
||||||
|
"gorm.io/driver/mysql"
|
||||||
|
"gorm.io/gorm"
|
||||||
|
|
||||||
"github.com/go-kratos/kratos/v2/log"
|
"github.com/go-kratos/kratos/v2/log"
|
||||||
"github.com/google/wire"
|
"github.com/google/wire"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ProviderSet is data providers.
|
// ProviderSet is data providers.
|
||||||
var ProviderSet = wire.NewSet(NewData, NewGreeterRepo)
|
var ProviderSet = wire.NewSet(NewData, NewGreeterRepo, NewCustomerData)
|
||||||
|
|
||||||
// Data .
|
// Data .
|
||||||
type Data struct {
|
type Data struct {
|
||||||
// TODO wrapped database client
|
// TODO wrapped database client
|
||||||
|
Rdb *redis.Client
|
||||||
|
Mdb *gorm.DB
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewData .
|
// NewData .
|
||||||
func NewData(c *conf.Data, logger log.Logger) (*Data, func(), error) {
|
func NewData(c *conf.Data, logger log.Logger) (*Data, func(), error) {
|
||||||
|
//初始化redis
|
||||||
|
//连接redis
|
||||||
|
data := &Data{}
|
||||||
|
redisURL := fmt.Sprintf("redis://%s/1?dial_timeout=%s", c.Redis.Addr, 1)
|
||||||
|
options, err := redis.ParseURL(redisURL)
|
||||||
|
if err != nil {
|
||||||
|
data.Rdb = nil
|
||||||
|
fmt.Println("初始化rdb失败")
|
||||||
|
}
|
||||||
|
data.Rdb = redis.NewClient(options)
|
||||||
cleanup := func() {
|
cleanup := func() {
|
||||||
|
//清理redis连接
|
||||||
|
_ = data.Rdb.Close()
|
||||||
log.NewHelper(logger).Info("closing the data resources")
|
log.NewHelper(logger).Info("closing the data resources")
|
||||||
}
|
}
|
||||||
return &Data{}, cleanup, nil
|
//连接mysql
|
||||||
|
//用户名:密码啊@tcp(ip:端口)/数据库的名字
|
||||||
|
dsn := c.Database.Source
|
||||||
|
//连接数据集
|
||||||
|
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) //open不会检验用户名和密码
|
||||||
|
if err != nil {
|
||||||
|
data.Mdb = nil
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
data.Mdb = db
|
||||||
|
migrateTable(data.Mdb)
|
||||||
|
return data, cleanup, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func migrateTable(db *gorm.DB) {
|
||||||
|
if err := db.AutoMigrate(&biz.Customer{}); err != nil {
|
||||||
|
log.Info("customer table migrate error, err:", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in new issue