72 lines
1.6 KiB
Go
72 lines
1.6 KiB
Go
package crontab
|
|
|
|
import (
|
|
"fmt"
|
|
"hepa-calc-api/api/dao"
|
|
"hepa-calc-api/api/model"
|
|
"hepa-calc-api/extend/rabbitMq"
|
|
"hepa-calc-api/utils"
|
|
"time"
|
|
)
|
|
|
|
// UserMemberExpire 用户会员过期
|
|
func UserMemberExpire() {
|
|
// 获取今日过期用户
|
|
users := getExecUserMember()
|
|
if len(users) == 0 {
|
|
return
|
|
}
|
|
|
|
for _, user := range users {
|
|
// 计算过期时间
|
|
validEndTime := time.Time(*user.MemberExpireDate)
|
|
|
|
delay := validEndTime.Sub(time.Now())
|
|
if delay < 5*time.Second {
|
|
delay = 5 * time.Second
|
|
}
|
|
|
|
// 添加处理用户会员过期队列
|
|
data := make(map[string]interface{})
|
|
data["user_id"] = fmt.Sprintf("%d", user.UserId)
|
|
|
|
p := rabbitMq.PublishS{
|
|
QueueName: "user.member.expired.delay.queue",
|
|
ExchangeName: "amqp.delay.direct",
|
|
RoutingKey: "UserMemberExpired",
|
|
Message: data,
|
|
Delay: delay,
|
|
}
|
|
err := p.PublishWithDelay()
|
|
if err != nil {
|
|
utils.LogJsonErr("添加处理用户会员过期队列失败:", err.Error())
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
// 获取可执行数据
|
|
func getExecUserMember() (users []*model.User) {
|
|
now := time.Now()
|
|
|
|
// 今天开始时间
|
|
year, month, day := now.Date()
|
|
location := now.Location()
|
|
startTime := time.Date(year, month, day, 00, 00, 00, 0, location).Format("2006-01-02 15:04:05")
|
|
|
|
// 今天结束时间
|
|
endTime := time.Date(year, month, day, 23, 59, 59, 0, location).Format("2006-01-02 15:04:05")
|
|
|
|
maps := make(map[string]interface{})
|
|
maps["is_member"] = 1
|
|
|
|
userDao := dao.UserDao{}
|
|
users, err := userDao.GetUserListByMemberValidTime(maps, startTime, endTime)
|
|
if err != nil {
|
|
utils.LogJsonErr("系统优惠卷过期:", err.Error())
|
|
return nil
|
|
}
|
|
|
|
return users
|
|
}
|