$crystalMeta['id'], 'pending' => 0, 'total' => array(), 'claimed' => 0, 'state' => self::NONE_STATE, ); $hashRateMeta = HashRate::findHash($crystalMeta['id']); $ownedNum = CrystalRecord::getCrystalNum($crystalMeta['id']); $crystalDto['claimed'] = intval($ownedNum); switch ($crystalMeta['sub_type']){ case 1 : { $param = explode('|',$hashRateMeta['parameter']); $killsNum = myself()->_getV(TN_TOTAL_KILLS_NUM,0); $killsNumEd = myself()->_getV(TN_TOTAL_KILLS_NUM,-1); $starNum = myself()->_getV(TN_TOTAL_STAR_NUM,0); $starNumEd = myself()->_getV(TN_TOTAL_STAR_NUM,-1); $killsNumEx = $killsNum - $killsNumEd; $starNumEx = $starNum - $starNumEd ; $crystalDto['total'] = array( 'param1' => floatval($killsNumEx), 'param2' => floatval($starNumEx), ); $paramKill = explode(':',$param[0]); $paramStar = explode(':',$param[1]); $totalNum = max(0,floor($killsNumEx / $paramKill[0]) * $paramKill[1] + floor($starNumEx / $paramStar[0]) * $paramStar[1] ); $crystalDto['pending'] = intval($totalNum); $crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE; } break; case 2 : { // 游戏内消费总价值 $param = explode(':',$hashRateMeta['parameter']); $consumeCost = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,0); $consumeCostEd = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,-1); $consumeCostEx = $consumeCost - $consumeCostEd ; $crystalDto['total'] = array( 'param1' => floatval($consumeCostEx / self::EXCHANGE_RATE), ); $totalNum = max(0,floor($consumeCostEx / self::EXCHANGE_RATE / $param[0]) * $param[1]); $crystalDto['pending'] = intval($totalNum); $crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE; } break; case 3 : { // Market交易总价值 $param = explode(':',$hashRateMeta['parameter']); $consumeCost = myself()->_getV(TN_TOTAL_CEG_CONSUME,0); $consumeCostEd = myself()->_getV(TN_TOTAL_CEG_CONSUME,-1); $consumeCostEx = $consumeCost - $consumeCostEd ; $crystalDto['total'] = array( 'param1' => floatval($consumeCostEx / self::EXCHANGE_RATE), ); $totalNum = max(0,floor($consumeCostEx / self::EXCHANGE_RATE / $param[0]) * $param[1]); $crystalDto['pending'] = intval($totalNum); $crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE; } break; case 4 : { // 质压总价值 $param = explode(':',$hashRateMeta['parameter']); // $rate = Parameter::getVal('cec_exchange_rate',10); $cecVal = Staking::getStakingTotalValue(); $crystalDto['total'] = array( 'param1' => floatval($cecVal ), ); $recordDb = CrystalRecord::getNewestRecordOne($crystalMeta['id']); if ($recordDb && myself()->_getNowDaySeconds() == myself()->_getDaySeconds($recordDb['createtime'])){ $crystalDto['pending'] = 0; }else{ $totalNum = max(0,floor($cecVal / $param[0]) * $param[1]); $crystalDto['pending'] = intval($totalNum); } $crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE; } break; } } }