package orchard

////购买祈福
//func OrchardPayBlessing(c *gin.Context) {
//	rsp := &OrchardRsp{Status: constant.STATUSOK, Msg: "done"}
//	defer func() {
//		c.JSON(200, rsp)
//	}()
//	user := ctx.GetUser(c)
//	req := &OrchardParam{}
//	if err := c.ShouldBind(req); err != nil {
//		log.Printf("userid: %v ,type不能为空 \n", user.ID)
//		rsp.Status = constant.STATUS99
//		rsp.Msg = "type不能为空"
//		return
//	}
//RETRY:
//	unix := time.Now().Unix()
//	lockRedisKey := fmt.Sprintf("orchard_%v_lock", user.ID)
//	lock := rds.Redis.SetNX(lockRedisKey, unix, 0).Val()
//	if lock {
//		if req.BlessingId < 0 || req.BlessingId > 3 {
//			log.Printf("userid: %v ,type不能为空 \n", user.ID)
//			rsp.Status = constant.STATUS99
//			rds.Redis.Del(lockRedisKey)
//			rsp.Msg = "type不能为空"
//			return
//		}
//		userId := fmt.Sprintf("%v", user.ID)
//		orchardTree := &orchard.OrchardTree{}
//		orchardTree.FindOne(userId)
//		awards := make(map[int32]int64)
//		awards[17] = -orchard.OrchardConf.BlessingList[req.BlessingId-1].CostDiamond
//		if !propsrv.OpDataXX(user, "task", awards, []string{"orchard_blessing", fmt.Sprintf("%v", req.BlessingId)}, 1) {
//			rsp.Status = constant.STATUS99
//			rsp.Msg = "购买失败"
//			rds.Redis.Del(lockRedisKey)
//			return
//		}
//
//		switch req.BlessingId {
//		case 1:
//			orchardTree.WealthGod = addOrchardDurationTime(orchardTree.WealthGod)
//		case 2:
//			orchardTree.Laojun = addOrchardDurationTime(orchardTree.Laojun)
//		case 3:
//			orchardTree.LuckyCat = addOrchardDurationTime(orchardTree.LuckyCat)
//
//		}
//		db := tools.NewConn(orchard.MysqlExtDb).Begin()
//		defer db.Rollback()
//		timeNow := time.Now().Unix()
//		dbFruit := tools.NewConn(orchard.MysqlExtDb)
//		if req.BlessingId == 2 {
//			var openTimes int64 = 0
//			orchardFruitList := []orchard.OrchardFruit{}
//			dbFruit.Where("is_accelerate = 0 and open_time > ? ", timeNow).Order("open_time asc").Find(&orchardFruitList)
//			for i := range orchardFruitList {
//				orchardFruitList[i].OpenTime = timeNow + (orchardFruitList[i].OpenTime-timeNow)/100*orchard.OrchardConf.BlessingList[1].UpdatedRate
//				orchardFruitList[i].IsAccelerate = 1
//				openTimes = orchardFruitList[i].OpenTime
//				if err := db.Save(orchardFruitList[i]).Error; err != nil {
//					log.Println(err, userId)
//					rsp.Status = constant.STATUS99
//					rsp.Msg = "购买失败"
//					rds.Redis.Del(lockRedisKey)
//					return
//				}
//			}
//			orchardTree.OpenTime = openTimes
//
//			//} else if req.BlessingId == 1 {
//			//	orchardFruitList := []orchard.OrchardFruit{}
//			//	dbFruit.Where("is_increase = 0 and open_time > ? ", timeNow).Order("open_time asc").Find(&orchardFruitList)
//			//	for i := range orchardFruitList {
//			//		orchardFruitList[i].Number = orchardFruitList[i].Number / 100 * orchard.OrchardConf.BlessingList[0].UpdatedRate
//			//		orchardFruitList[i].IsIncrease = 1
//			//		dbFruit.Save(orchardFruitList[i])
//			//	}
//		}
//		if req.BlessingId == 1 {
//			orchardFruitList := []orchard.OrchardFruit{}
//			dbFruit.Where("is_increase = 0 and create_time <= ? and open_time > ? ", orchardTree.WealthGod, timeNow).Find(&orchardFruitList)
//			for i := range orchardFruitList {
//				orchardFruitList[i].Number = orchardFruitList[i].Number / 100 * orchard.OrchardConf.BlessingList[0].UpdatedRate
//				orchardFruitList[i].IsIncrease = 1
//				if err := db.Save(orchardFruitList[i]).Error; err != nil {
//					log.Println(err, userId)
//					rsp.Status = constant.STATUS99
//					rsp.Msg = "购买失败"
//					rds.Redis.Del(lockRedisKey)
//					return
//				}
//			}
//		}
//		if err := db.Save(&orchardTree).Error; err != nil {
//			log.Println(err, userId)
//			rsp.Status = constant.STATUS99
//			rsp.Msg = "购买失败"
//			rds.Redis.Del(lockRedisKey)
//			return
//		}
//		var wealthGod, laojun, luckyCat int64
//		if orchardTree.WealthGod > timeNow {
//			wealthGod = orchardTree.WealthGod - timeNow
//		}
//		if orchardTree.Laojun > timeNow {
//			laojun = orchardTree.Laojun - timeNow
//		}
//		if orchardTree.LuckyCat > timeNow {
//			luckyCat = orchardTree.LuckyCat - timeNow
//		}
//
//		rds.Redis.Del(lockRedisKey)
//		db.Commit()
//		orchard.ReloadDataOrchardUserInfo(userId)
//		userInfo := &orchard.OrchardUserInfo{}
//		if req.WaterId == 2 {
//			userInfo.GetData(userId)
//			rsp.Data = struct {
//				WealthGod int64 `json:"wealth_god"`
//				Laojun    int64 `json:"laojun"`
//				LuckyCat  int64 `json:"lucky_cat"`
//				orchard.OrchardUserInfo
//			}{
//				wealthGod,
//				laojun,
//				luckyCat,
//				*userInfo,
//			}
//		} else {
//			rsp.Data = struct {
//				WealthGod int64 `json:"wealth_god"`
//				Laojun    int64 `json:"laojun"`
//				LuckyCat  int64 `json:"lucky_cat"`
//				orchard.OrchardUserInfo
//			}{
//				WealthGod: wealthGod,
//				Laojun:    laojun,
//				LuckyCat:  luckyCat,
//			}
//		}
//
//	} else {
//		nxValue := rds.Redis.Get(lockRedisKey).Val()
//		nxUnixValue, _ := strconv.ParseInt(nxValue, 10, 64)
//		if time.Now().Unix()-nxUnixValue > 5 {
//			rds.Redis.Del(lockRedisKey)
//			goto RETRY
//		}
//		rsp.Msg = "请勿重新请求"
//		rsp.Status = constant.STATUS99
//	}
//}
