74 lines
2.0 KiB
Go
74 lines
2.0 KiB
Go
package telecom
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"go-common/library/cache/redis"
|
|
"go-common/library/ecode"
|
|
"go-common/library/log"
|
|
)
|
|
|
|
const (
|
|
_phoneKey = "phone_%d"
|
|
_payKey = "pay_%d"
|
|
)
|
|
|
|
// AddPhoneCode
|
|
func (d *Dao) AddPhoneCode(c context.Context, phone int, captcha string) (res int, err error) {
|
|
conn := d.phoneRds.Get(c)
|
|
defer conn.Close()
|
|
key := fmt.Sprintf(_phoneKey, phone)
|
|
if _, err = redis.String(conn.Do("SET", key, captcha)); err != nil {
|
|
log.Error("telecom_AddPhoneCode add conn.Do SET error(%v)", err)
|
|
return
|
|
}
|
|
if res, err = redis.Int(conn.Do("EXPIRE", key, d.phoneKeyExpired)); err != nil {
|
|
log.Error("telecom_AddPhoneCode add conn.Do EXPIRE error(%v)", err)
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
// PhoneCode
|
|
func (d *Dao) PhoneCode(c context.Context, phone int) (captcha string, err error) {
|
|
conn := d.phoneRds.Get(c)
|
|
defer conn.Close()
|
|
key := fmt.Sprintf(_phoneKey, phone)
|
|
if captcha, err = redis.String(conn.Do("GET", key)); err != nil {
|
|
log.Error("telecom_get conn.Do GET error(%v)", err)
|
|
err = ecode.NotModified
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
// AddPayPhone add phone and requestNo
|
|
func (d *Dao) AddPayPhone(c context.Context, requestNo int64, phone string) (res int, err error) {
|
|
conn := d.phoneRds.Get(c)
|
|
defer conn.Close()
|
|
key := fmt.Sprintf(_payKey, requestNo)
|
|
if _, err = redis.String(conn.Do("SET", key, phone)); err != nil {
|
|
log.Error("telecom_AddPhoneCode add conn.Do SET error(%v)", err)
|
|
return
|
|
}
|
|
if res, err = redis.Int(conn.Do("EXPIRE", key, d.payKeyExpired)); err != nil {
|
|
log.Error("telecom_AddPhoneCode add conn.Do EXPIRE error(%v)", err)
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
// PayPhone requestNo by phone
|
|
func (d *Dao) PayPhone(c context.Context, requestNo int64) (phone string, err error) {
|
|
conn := d.phoneRds.Get(c)
|
|
defer conn.Close()
|
|
key := fmt.Sprintf(_payKey, requestNo)
|
|
if phone, err = redis.String(conn.Do("GET", key)); err != nil {
|
|
log.Error("telecom_get conn.Do GET requestNo(%v) error(%v)", requestNo, err)
|
|
err = ecode.NothingFound
|
|
return
|
|
}
|
|
return
|
|
}
|