0.0.70 • Published 1 year ago

@aagames-fe/sports-hooks v0.0.70

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

前置操作

前置操作有两步,必须做完这两步才能进行其他操作。

  1. 设置全局request:
import request from '@/utils/request'; // 路径取决项目的request

// 设置全局 request
setRequest(request)
  1. 获取token
import {useSportToken} from '@aagames-fe/sports-hooks';

const {
  // 未登录之前获取通用token
  getCommonToken,
  // 离开页面停止刷新token
  stopCommonTokenInterval,
  // 获取登录后的token,只有登录后才能调用,并且调用后才能进行投注
  getLoginToken
  // 停止ws, 在页面离开的时候调用,停止游戏
  stopWS
} = useSportToken(VITE_APP_WS_URL); // 传递游戏ws 域名,可以从 import.meta.env.VITE_APP_WS_URL 获取

await getCommonToken(); // 获取token后就可以进行其他请求, 比如useEventData的getEventList

hooks说明

useEventStat

这个hooks是按照原生体育获取当天的赛事统计数据

import {useSportState} from '@aagames-fe/sports-hooks';

const {
  // 统计的数据
  statData,
  // loading属性,reactive
  statLoading,
  // 设置关注的eventId,以进行关注的统计
  setFavList,
  // 手动获取state
  getStat,
} = useSportState();

useEventData

这个hooks是获取赛事数据和market盘口数据

import {useEventData} from '@aagames-fe/sports-hooks';

const {
  // 传入联赛筛选,为空则不筛选, reactive, 修改后自动刷新
  selectedLeagues,
  // 对应原生体育的统计范围: 今日 早盘 串关  'early' 'today' 'parlay'
  targetTimeRange,
  // 直播对象,是一个对象,key名字是赛事id,可以使用 streaming[eventId] 取,没有就是这场赛事没有直播
  streaming,
  // 手动出发请求获取赛事
  getEvents,
  // 刷新,分页重置为零
  refresh,
  // 滚动加载
  loadMore,
  // 加载中
  loading,
  // 赛事数据,用于列表和
  eventList,
  // 是否以及加载完,用在滚动加载
  finished,
  // 体育类型,reactive,修改后自动刷新
  sportType,
  // 排序,取值 ‘time' || 'leagueName', 根据 时间 | 联赛名称 排序
  sort,
  // 推流的更新数据,reactive,watch根据数据更新
  marketES,
  /*
    将赛事的相同market聚合到一个一个数组,用于展示, 参数:
    markets: Array,赛事的markets数组
    betType: Number, 可选,根据投注类型筛选

    返回的数据为:
    {
      name: String 投注名称,
      betType: Number 投注类型,
      teams: String[] 比赛队伍名字, 只有让球类型有数据,
      markets: market[] 投注数据,
    }[]
  */
  transformMarketByBetType,
  /*
    使用event_id数组批量获取赛事
    参数: number[]
    return: Event[]
  */
  getEventListByEventIds,
  // 用户的越
  userBalance,
  // 刷新余额
  refreshBalance,
} = useEventData();

首页的列表有需要显示两个投注,分别是赛事列表中的firstMarket和secondMarket字段。

赔率显示是盘口的selections数组,title是赔率信息,赔率是oddsPrice对象,根据盘口选择数据。

详情页的显示有三种,一行两个赔率,一行三个赔率,是根据赔率类型取展示,具体展示是根据赔率类型来展示,具体可以长到原生体育BetItem组件的逻辑

赔率判断在constants.js文件有个方法getBetTypeName,可以根据投注类型betType获取到对应的投注大类型

/*
  {
    name: String 投注名称,
    betType: Number 投注类型,
    teams: String[] 比赛队伍名字, 只有让球类型有数据,
    markets: market[] 投注数据,
  }[]
 */

每个赛事下面有一个数据是 transformMarkets 这个数据用于详情页的数据聚合展示。对应字段截图如下

详情页数据展示

useBetRecord

用来请求历史注单的hooks

import {useBetRecord} from '@aagames-fe/sports-hooks';

const {
  // 数据, reactive
  recordData,
  /* 获取数据 传参:
  is_settled: boolean 已结算 未结算
  start: yyyy-MM-DDThh:mm:ss 开始时间,
  end: yyyy-MM-DDThh:mm:ss 结束时间,
  */
  getRecord,
  // loading
  loading,
  // 注单的状态表
  betStatus,
} = useBetRecord();

useFavList

获取关注数据的hooks,其返回的数组可以传递给 useEventStat 去作为关注赛事的请求,也可以自行根据第三方文档请求对应数据

import {useFavList} from '@aagames-fe/sports-hooks';

const {
  // 关注列表,赛事id组成的数组 reactive
  favList,
  // 添加到关注列表 传参
  /*
    {
      id, // 赛事id
      sportType // 体育类型
    }
   */
  addFavList,
  // 删除关注列表 传参:
  /*
    {
      id, // 赛事id
      sportType // 体育类型
    }
   */

  removeFavList,
  // 获取关注列表 
  getFavList,
} = useFavList();

usePlaceBet

这个hooks用于投注,投注又分为单注和串关投注

import {usePlaceBet} from '@aagames-fe/sports-hooks';

const {
  // 切换串关赔率,已存在就删除,不存在就添加,参数如下: odds = market
  /*
    {
    ...JSON.parse(JSON.stringify(event)), // 深拷贝整个赛事
    odds: { // 投注的market,这里方便理解做成odds
      ...odds,
      selected: odds?.selections[index] ? { ...odds.selections[index] } : {}, // 这个index就是点击的赔率在market的selections数组的哪个下标
    },
  }
   */
  toggleMultipleOdds,
  // 切换单个投注, 参数跟上面multipleOdds一致
  toggleSingleOdds,
  // 获取单注ticket
  getSingleTicket,
  // 提交单注投注
  submitSingleBet,
  // 对应单注赔率 reactive
  singleOdds,
  // 对应串关赔率 reactive 数组, 会保存到localeStorage,刷新页面会重新导入
  multipleOdds,
  // 获取串关赔率
  getParlayTicket,
  // 串关判断所有赔率是否正常
  allRunning,
  // 手动根据marketId更新串关数组的赔率
  updateMarket,
  // 提交串关投注
  submitParlay,
  // 串关的最少 combo
  maxCombo,
  // 串关的总投注字段
  totalStack,
  // 串关赔率列表是否存在先同一个
  hasSameEvent,
  // 单注的投注金额,reactive
  singleAmount,
  // 串关ticket返回的数据,串关投注必须使用这个进行色值金额来投注,金额是数据里面的 amount
  parlayTicketData,
} = usePlaceBet();

/src/apis.js

所有请求的文件,可以单独import进来,比如:

import {GetEvents} from '@aagames-fe/sports-hooks/src/apis.js';

```所有请求

## /src/constants.js

一些静态的配置的文件,可以单独import进来,比如:

javascript import {getBetTypeName} from '@aagames-fe/sports-hooks/src/constants.js';

0.0.40

2 years ago

0.0.41

2 years ago

0.0.42

2 years ago

0.0.43

2 years ago

0.0.44

2 years ago

0.0.46

2 years ago

0.0.47

2 years ago

0.0.37

2 years ago

0.0.38

2 years ago

0.0.39

2 years ago

0.0.30

2 years ago

0.0.31

2 years ago

0.0.32

2 years ago

0.0.33

2 years ago

0.0.34

2 years ago

0.0.35

2 years ago

0.0.36

2 years ago

0.0.70

1 year ago

0.0.26

2 years ago

0.0.27

2 years ago

0.0.28

2 years ago

0.0.29

2 years ago

0.0.62

1 year ago

0.0.63

1 year ago

0.0.64

1 year ago

0.0.65

1 year ago

0.0.66

1 year ago

0.0.22

2 years ago

0.0.67

1 year ago

0.0.23

2 years ago

0.0.68

1 year ago

0.0.24

2 years ago

0.0.25

2 years ago

0.0.60

1 year ago

0.0.61

1 year ago

0.0.59

1 year ago

0.0.51

2 years ago

0.0.52

2 years ago

0.0.53

2 years ago

0.0.54

2 years ago

0.0.55

2 years ago

0.0.56

2 years ago

0.0.57

1 year ago

0.0.58

1 year ago

0.0.50

2 years ago

0.0.48

2 years ago

0.0.49

2 years ago

0.0.20

2 years ago

0.0.21

2 years ago

0.0.10

2 years ago

0.0.11

2 years ago

0.0.12

2 years ago

0.0.13

2 years ago

0.0.14

2 years ago

0.0.15

2 years ago

0.0.9

2 years ago

0.0.16

2 years ago

0.0.8

2 years ago

0.0.17

2 years ago

0.0.18

2 years ago

0.0.19

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago