فهرست منبع

订单信息缓存

wangshan 2 ماه پیش
والد
کامیت
a68e2b748c
2فایلهای تغییر یافته به همراه16 افزوده شده و 4 حذف شده
  1. 15 4
      handler/activity/lotteryDrawTask.go
  2. 1 0
      model/sse.go

+ 15 - 4
handler/activity/lotteryDrawTask.go

@@ -5,6 +5,7 @@ import (
 	"app.yhyue.com/moapp/jybase/date"
 	"app.yhyue.com/moapp/jybase/encrypt"
 	"app.yhyue.com/moapp/jybase/go-logger/logger"
+	"app.yhyue.com/moapp/jybase/redis"
 	"app.yhyue.com/moapp/message/db"
 	"app.yhyue.com/moapp/message/model"
 	"app.yhyue.com/moapp/message/util"
@@ -47,6 +48,7 @@ type MsgBody struct {
 	TaskInfoId int64  `json:"taskInfoId"`
 	OrderCode  string `json:"orderCode"`
 	NickName   string `json:"nickName"`
+	State      int    `json:"state"` //购买超级订阅和大会员 0:购买;1:续费;2:升级
 }
 
 // LotteryDrawTask 抽奖任务
@@ -89,8 +91,9 @@ func LotteryDrawTask(msg *model.Message) {
 		return
 	}
 	var (
-		now       = time.Now()
-		timeRange = util.TimeRange{}
+		now        = time.Now()
+		timeRange  = util.TimeRange{}
+		emdTime, _ = time.ParseInLocation(date.Date_Full_Layout, taskInfo.ActivityEndTime, time.Local)
 	)
 	//判断任务有效期内,此次任务是否已完成
 	switch taskInfo.CycleUnit {
@@ -100,7 +103,6 @@ func LotteryDrawTask(msg *model.Message) {
 		timeRange = util.GetMonthRange(now)
 	case 3: //活动周期
 		startTime, _ := time.ParseInLocation(date.Date_Full_Layout, taskInfo.ActivityStartTime, time.Local)
-		emdTime, _ := time.ParseInLocation(date.Date_Full_Layout, taskInfo.ActivityEndTime, time.Local)
 		timeRange = util.TimeRange{
 			StartTime: startTime,
 			EndTime:   emdTime,
@@ -165,14 +167,23 @@ func LotteryDrawTask(msg *model.Message) {
 		}
 	case 3: //招标采购搜索任务
 	case 4: //购买/续费/升级超级订阅会员
+		cacheKey := fmt.Sprintf(model.PayCacheKey, msgBody.ActiveId, msgBody.UserId, "v", strconv.Itoa(msgBody.State))
+		if cacheBool := redis.Put(PowerCacheDb, cacheKey, msgBody.Phone, int(emdTime.Unix()-time.Now().Unix())); !cacheBool {
+			logger.Info(fmt.Sprintf("当前用户:%s,手机号: %s 超级订阅订单信息 %d redis存储失败,keys:%s", msgBody.UserId, msgBody.Phone, msgBody.State, cacheKey))
+		}
 	case 5: //购买/续费/升级大会员
-	// TODO  完成任务 赠送两次 抽奖机会
+		// TODO  完成任务 赠送两次 抽奖机会
+		cacheKey := fmt.Sprintf(model.PayCacheKey, msgBody.ActiveId, msgBody.UserId, "m", strconv.Itoa(msgBody.State))
+		if cacheBool := redis.Put(PowerCacheDb, cacheKey, msgBody.Phone, int(emdTime.Unix()-time.Now().Unix())); !cacheBool {
+			logger.Info(fmt.Sprintf("当前用户:%s,手机号: %s 大会员订单信息 %d redis存储失败,keys:%s", msgBody.UserId, msgBody.Phone, msgBody.State, cacheKey))
+		}
 	case 6: //给朋友分享活动
 	}
 	insertMap := map[string]interface{}{
 		"active_id":   msgBody.ActiveId,
 		"task_id":     msgBody.TaskInfoId,
 		"phone":       msgBody.Phone,
+		"user_id":     msgBody.UserId,
 		"position_id": msgBody.PositionId,
 		"mgo_user_id": msgBody.MgoUserId,
 		"order_code":  msgBody.OrderCode,

+ 1 - 0
model/sse.go

@@ -3,6 +3,7 @@ package model
 const (
 	WinningTarget = "winning"
 	TaskTarget    = "task"
+	PayCacheKey   = "lottery_pay_%d_%s_%s_%s" //1、活动id;2、userId;3、v|m;4、state
 )
 
 // 消息结构体,用于传递 中奖信息