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
|
||||
|
||||
import (
|
||||
"customer/internal/biz"
|
||||
"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/google/wire"
|
||||
)
|
||||
|
||||
// ProviderSet is data providers.
|
||||
var ProviderSet = wire.NewSet(NewData, NewGreeterRepo)
|
||||
var ProviderSet = wire.NewSet(NewData, NewGreeterRepo, NewCustomerData)
|
||||
|
||||
// Data .
|
||||
type Data struct {
|
||||
// TODO wrapped database client
|
||||
Rdb *redis.Client
|
||||
Mdb *gorm.DB
|
||||
}
|
||||
|
||||
// NewData .
|
||||
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() {
|
||||
//清理redis连接
|
||||
_ = data.Rdb.Close()
|
||||
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