Pārlūkot izejas kodu

Merge branch 'hotfix/v4.9.2.1_ws' of qmx/jy into hotfix/v4.9.2.1

wangshan 1 gadu atpakaļ
vecāks
revīzija
87803c1d8c

+ 1 - 0
src/jfw/modules/publicapply/src/activityday/consts/consts.go

@@ -22,6 +22,7 @@ var (
 	PointTypeConsume            int64 = 2008
 	PointTypeHarvest            int64 = 1019
 	RedisCode                         = "other"
+	RedisNewCode                      = "newother"
 	RafflePool                        = make(chan bool, 1)
 	PrizeKey                          = "activity_day_%s_%d_%d_%d" //奖品名称  活动id  奖品id 日期
 	RepeatKey                         = "activity_day_action_%d"

+ 15 - 1
src/jfw/modules/publicapply/src/activityday/dao/dao.go

@@ -4,6 +4,7 @@ import (
 	"app.yhyue.com/moapp/jybase/common"
 	"app.yhyue.com/moapp/jybase/date"
 	"app.yhyue.com/moapp/jybase/go-xweb/httpsession"
+	"app.yhyue.com/moapp/jybase/redis"
 	"fmt"
 	"jy/src/jfw/modules/publicapply/src/activityday/consts"
 	"jy/src/jfw/modules/publicapply/src/activityday/util"
@@ -29,12 +30,12 @@ type LotteryActiveInfoRes struct {
 
 // GetLotteryActiveInfo 获取活动信息
 func GetLotteryActiveInfo(activeId int64, sess map[string]interface{}, session *httpsession.Session, req *http.Request) (activeInfo LotteryActiveInfoRes) {
-	r := NewRaffleInfo(sess, activeId, util.UserLabel(session), req)
 	var (
 		err     error
 		prizeRs []map[string]interface{}
 		now     = time.Now()
 	)
+	r := NewRaffleInfo(sess, activeId, util.UserLabel(session), req)
 	activeInfo = LotteryActiveInfoRes{
 		Lai:     &Lai{},
 		NowUnix: now.Unix(),
@@ -43,6 +44,19 @@ func GetLotteryActiveInfo(activeId int64, sess map[string]interface{}, session *
 	if r.DLai == nil {
 		return
 	}
+	//活动期间
+	if r.DLai.ActiveStartTime <= now.Unix() && r.DLai.ActiveEndTime >= now.Unix() {
+		//首次访问活动页面 赠送剑鱼币100
+		onceKey := fmt.Sprintf("activity_day_once_%s", r.UserInfo.UserId)
+		if ok, err := redis.Exists(consts.RedisNewCode, onceKey); err == nil && !ok {
+			err = r.PointHarvest(r.DLai.Cost)
+			if err == nil {
+				redis.Put(consts.RedisNewCode, onceKey, now.Day(), 30*24*60*60)
+			} else {
+				log.Println("--首次 赠送--err -:", err.Error())
+			}
+		}
+	}
 	activeInfo.ActiveStartTime = r.DLai.ActiveStartTime   //活动开始时间
 	activeInfo.ActiveEndTime = r.DLai.ActiveEndTime       //活动结束时间
 	activeInfo.LotteryStartUnix = r.DLai.LotteryStartTime //抽奖开始时间

+ 6 - 6
src/jfw/modules/publicapply/src/activityday/dao/drawLottery.go

@@ -119,6 +119,11 @@ func (r *RaffleInfo) DistributePrize() (err error) {
 				now       = time.Now()
 				orderCode string
 			)
+			//TODO: 剑鱼币 消费---------------------先消费再奖励
+			if err = r.PointConsume(r.DLai.Cost); err != nil {
+				r.Steps = consts.Steps10
+				return
+			}
 			//TODO 更新奖品库存
 			updatePrizeInfo := fmt.Sprintf("UPDATE %s lpi SET lpi.inventory = lpi.inventory - 1 WHERE lpi.active_id = ? AND lpi.id = ?  AND lpi.state = 0;", consts.TablePrizeInfo)
 			if pi := db.BaseMysql.UpdateOrDeleteBySqlByTx(tx, updatePrizeInfo, r.Prize.ActiveId, r.Prize.Id); pi <= 0 {
@@ -135,7 +140,7 @@ func (r *RaffleInfo) DistributePrize() (err error) {
 					orderCode, err = r.InsertDataOrder(tx, jyPrize)
 				} else {
 					//TODO: 剑鱼币 奖励---------------------
-					if err = r.PointHarvest(); err != nil {
+					if err = r.PointHarvest(common.Int64All(r.Prize.JyPrize)); err != nil {
 						r.Steps = consts.Steps5
 					}
 				}
@@ -195,11 +200,6 @@ func (r *RaffleInfo) DistributePrize() (err error) {
 				r.Steps = consts.Steps9
 				return
 			}
-			//TODO: 剑鱼币 消费---------------------
-			if err = r.PointConsume(0); err != nil {
-				r.Steps = consts.Steps10
-				return
-			}
 			return
 		}()
 		return err == nil

+ 10 - 4
src/jfw/modules/publicapply/src/activityday/dao/jyPoint.go

@@ -17,7 +17,7 @@ func (r *RaffleInfo) PointConsume(cost int64) (err error) {
 		endData  = time.Now().AddDate(1, 0, 0).Format(date.Date_Short_Layout)
 		abstract = fmt.Sprintf("抽奖活动消费剑鱼币-%d", common.If(cost > 0, cost, r.DLai.Cost).(int64))
 	)
-	res, err_ := config.Middleground.JyPoints.PointConsume(r.UserInfo.UserId, consts.AppId, endData, strconv.FormatInt(consts.PointTypeConsume, 10), abstract, common.If(cost > 0, cost, r.DLai.Cost).(int64), consts.PointTypeConsume, false)
+	res, err_ := config.Middleground.JyPoints.PointConsume(r.UserInfo.UserId, consts.AppId, endData, strconv.FormatInt(consts.PointTypeConsume, 10), abstract, cost, consts.PointTypeConsume, false)
 	if err_ != nil {
 		err = err_
 		return
@@ -27,12 +27,18 @@ func (r *RaffleInfo) PointConsume(cost int64) (err error) {
 }
 
 // 积分新增
-func (r *RaffleInfo) PointHarvest() (err error) {
+func (r *RaffleInfo) PointHarvest(coin int64) (err error) {
+	if coin == 0 {
+		coin = common.Int64All(r.Prize.JyPrize)
+	}
 	var (
 		endData  = time.Now().AddDate(1, 0, 0).Format(date.Date_Short_Layout)
-		abstract = fmt.Sprintf("抽奖活动奖品剑鱼币+%r", r.DLai.Cost)
+		abstract = fmt.Sprintf("抽奖活动奖品剑鱼币+%d", coin)
 	)
-	res, err_ := config.Middleground.JyPoints.PointHarvest(r.UserInfo.UserId, consts.AppId, endData, strconv.FormatInt(consts.PointTypeHarvest, 10), abstract, common.Int64All(r.Prize.JyPrize), consts.PointTypeHarvest, false)
+	if coin == r.DLai.Cost {
+		abstract = fmt.Sprintf("抽奖活动+%d", coin)
+	}
+	res, err_ := config.Middleground.JyPoints.PointHarvest(r.UserInfo.UserId, consts.AppId, endData, strconv.FormatInt(consts.PointTypeHarvest, 10), abstract, coin, consts.PointTypeHarvest, false)
 	if err_ != nil {
 		err = err_
 		return

+ 5 - 5
src/jfw/modules/publicapply/src/activityday/dao/rollback.go

@@ -1,12 +1,12 @@
 package dao
 
 import (
+	"app.yhyue.com/moapp/jybase/common"
 	"fmt"
 	"go.mongodb.org/mongo-driver/bson"
 	"jy/src/jfw/modules/publicapply/src/activityday/consts"
 	au "jy/src/jfw/modules/publicapply/src/activityday/util"
 	"jy/src/jfw/modules/publicapply/src/config"
-	"strconv"
 	"strings"
 	"time"
 )
@@ -39,9 +39,9 @@ func (r *RaffleInfo) Roll() {
 	case consts.Steps10: //剑鱼币消费异常
 		//TODO 如果奖品是超级订阅,需要把用户已附加的权益移除 VIP状态:-2
 		//TODO 如果奖品是剑鱼币,需要把奖励给用户的剑鱼币撤回 剑鱼币:-120
-		r.RollEquityOrPoints()
+		//r.RollEquityOrPoints()
 		//TODO 回滚今日中奖缓存信息:-1
-		r.RollTodayResiduePrizeNum()
+		//r.RollTodayResiduePrizeNum()
 	}
 }
 
@@ -72,8 +72,8 @@ func (r *RaffleInfo) RollEquityOrPoints() {
 		r.ClearCache()
 	} else {
 		// 回收积分
-		cost, _ := strconv.ParseInt(r.Prize.JyPrize, 10, 64)
-		err = r.PointConsume(cost)
+		//cost, _ := strconv.ParseInt(r.Prize.JyPrize, 10, 64)
+		err = r.PointConsume(common.Int64All(r.Prize.JyPrize))
 	}
 	//TODO 企业微信告警通知
 	if err != nil {