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.
73 lines
2.0 KiB
73 lines
2.0 KiB
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 |
|
}
|
|
|