micro-account/pkg/domain/msg_code.go
2025-02-20 16:18:23 +08:00

204 lines
4.7 KiB
Go

package domain
import (
"errors"
"fmt"
"github.com/fonchain_enterprise/micro-account/pkg/cache"
"github.com/fonchain_enterprise/micro-account/pkg/common/redis_key"
"github.com/fonchain_enterprise/micro-account/pkg/m"
"time"
)
func CheckMsg(key string) error {
n, err := cache.RedisClient.Exists(key).Result()
fmt.Println("n", n)
if err != nil {
return err
}
if n == 0 {
return nil
}
str := cache.RedisClient.Get(key)
num, err := str.Int()
if err != nil {
return err
}
if num > 30 {
return errors.New(m.Mobile_Send_Over)
}
return nil
}
// CheckMsgPre 检测短信发送限制
func CheckMsgPre(domain string, telNum string, scope string) error {
key := redis_key.GetAccountKeyCountTodayHour(domain, telNum, scope)
//一分钟最多发一条
minStr := cache.RedisClient.Get(redis_key.MinLimit(domain, telNum, scope))
if minStr.Val() != "" {
return errors.New(m.Mobile_Sended)
}
//一个小时最多10次
n, err := cache.RedisClient.Exists(key).Result()
fmt.Println("n", n)
if err != nil {
return err
}
if n == 0 {
return nil
}
str := cache.RedisClient.Get(key)
num, err := str.Int()
if err != nil {
return err
}
if num > 10 {
return errors.New(m.Mobile_Send_Over)
}
return nil
}
// SetOnlyRecordTelMsgCode 记录验证码
func SetOnlyRecordTelMsgCode(domain, tel, code, scope string) error {
//发送验证码
if merr := cache.RedisClient.Set(redis_key.GetOnlyAccountKey(domain, tel), code, 15*60*1000*time.Millisecond).Err(); merr != nil {
return merr
}
//发送验证码
if merr := cache.RedisClient.Set(redis_key.MinLimit(domain, tel, scope), code, 1*60*1000*time.Millisecond).Err(); merr != nil {
return merr
}
return SetTodayNum(domain, tel)
}
// InBlockList 黑名单
func InBlockList(domain string, tel string) bool {
isExist, err := cache.RedisClient.HExists(redis_key.BlackListKey(domain), tel).Result() //发送注册验证码 校验验证码时间限制
if err != nil {
panic(err)
return false
}
if isExist == true {
fmt.Println("黑名单")
return true
}
fmt.Println("白名单")
return false
}
// CodeLive 发送的验证码是否活着
func CodeLive(domain string, tel string) error {
str := cache.RedisClient.Get(redis_key.VerityCode(domain, tel)) //发送注册验证码 校验验证码时间限制
if str.Val() != "" {
return errors.New(m.Mobile_Sended)
}
return nil
}
// SetRecordTelMsgCode 发送短信成功之后记录部分信息
func SetRecordTelMsgCode(domain string, tel string, code string) error {
//发送验证码
if merr := cache.RedisClient.Set(redis_key.GetAccountKey(domain, tel), code, 15*60*1000*time.Millisecond).Err(); merr != nil {
return merr
}
//发送验证码
if merr := cache.RedisClient.Set(redis_key.VerityCode(domain, tel), code, 55*1000*time.Millisecond).Err(); merr != nil {
return merr
}
//注册的时候验证码
if merr := cache.RedisClient.Set(redis_key.GetAccountRegisterKey(domain, tel), code, 60*60*1000*time.Millisecond).Err(); merr != nil {
return merr
}
return SetTodayNum(domain, tel)
}
// SetRecordTelMsgCodeLogin 登录之后发送的短信
func SetRecordTelMsgCodeLogin(domain string, tel string, code string, id string) error {
//一分钟之内的
fmt.Println(redis_key.GetOneMinuteKey(domain, tel, id))
if merr := cache.RedisClient.Set(redis_key.GetOneMinuteKey(domain, tel, id), code, 1*60*1000*time.Millisecond).Err(); merr != nil {
return merr
}
//15分钟之内的
if merr := cache.RedisClient.Set(redis_key.GetChangeTelKey(domain, tel, id), code, 15*60*1000*time.Millisecond).Err(); merr != nil {
return merr
}
if merr := cache.RedisClient.Set(redis_key.GetNowNewTelById(domain, id), tel, 24*60*60*1000*time.Millisecond).Err(); merr != nil {
return merr
}
return SetTodayNum(domain, tel)
}
// DelRecordTelMsgCodeLogin 登录之后发送的短信
func DelRecordTelMsgCodeLogin(domain string, tel string, id string) error {
//15分钟之内的
if merr := cache.RedisClient.Del(redis_key.GetChangeTelKey(domain, tel, id), redis_key.GetOneMinuteKey(domain, tel, id)).Err(); merr != nil {
return merr
}
return SetTodayNum(domain, tel)
}
// SetTodayNum 当日记录发送记录
func SetTodayNum(domain string, tel string) error {
//当日记录发送记录
telTodayNum := redis_key.GetAccountKeyCountToday(domain, tel)
cache.RedisClient.Incr(telTodayNum)
cache.RedisClient.Expire(telTodayNum, 24*60*60*1000*time.Millisecond)
return nil
}
func CheckRegisterCode(domain string, tel string, code string) error {
str := cache.RedisClient.Get(redis_key.GetAccountRegisterKey(domain, tel))
cacheCode := str.Val()
if cacheCode == "" {
return errors.New("没有发送数据")
}
if code != cacheCode {
return errors.New("验证码错误")
}
return nil
}