You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.3 KiB
54 lines
1.3 KiB
package dao |
|
|
|
import ( |
|
"context" |
|
"fmt" |
|
"go-common/app/interface/bbq/app-bbq/model" |
|
"go-common/library/cache/redis" |
|
"go-common/library/log" |
|
) |
|
|
|
var ( |
|
_selectUserShareToken = "select token from user_share_token where mid = ?;" |
|
_insertUserShareToken = "insert into user_share_token (mid, token) values (?, ?);" |
|
) |
|
|
|
// GetUserShareToken . |
|
func (d *Dao) GetUserShareToken(ctx context.Context, mid int64) string { |
|
conn := d.redis.Get(ctx) |
|
defer conn.Close() |
|
|
|
raw, err := redis.Bytes(conn.Do("GET", fmt.Sprintf(model.CacheKeyUserShareToken, mid))) |
|
if err == redis.ErrNil || raw == nil { |
|
rows, err := d.db.Query(ctx, _selectUserShareToken, mid) |
|
if err != nil { |
|
log.Errorv(ctx, log.KV("GetUserShareToken", err)) |
|
return "" |
|
} |
|
|
|
var token string |
|
for rows.Next() { |
|
rows.Scan(&token) |
|
} |
|
return token |
|
} |
|
|
|
return string(raw) |
|
} |
|
|
|
// SetUserShareToken . |
|
func (d *Dao) SetUserShareToken(ctx context.Context, mid int64, token string) (int64, error) { |
|
result, err := d.db.Exec(ctx, _insertUserShareToken, mid, token) |
|
fmt.Println(result, err) |
|
if err != nil { |
|
return 0, err |
|
} |
|
|
|
if n, _ := result.RowsAffected(); n > 0 { |
|
conn := d.redis.Get(ctx) |
|
defer conn.Close() |
|
conn.Do("SET", fmt.Sprintf(model.CacheKeyUserShareToken, mid), token) |
|
} |
|
|
|
return result.LastInsertId() |
|
}
|
|
|