A4 - 批量新增卡片的算法优化

A4 - 批量新增卡片的算法优化

黄鹏宇 702 2022-12-10

业务描述

在获取今日卡片时,如果打开了自动生成,则自动生成今天所需的卡片
会员最多生成
非会员最多生成100张

逻辑

  1. 获取设置的目标数 dailyTargetNum
  2. 获取当前词书总单词数 totalWordNum
  3. 获取今日已生成的卡片,及数量 hasGenerateCardNum
  4. 获取当前的词书进度 currentProgressIndex = currentProgress.getCurIndex()
  5. 获取当前词书剩余单词数 leftWordNum
    leftWordNum = totalWordNum - currentProgress.getCurIndex()
  6. 计算需要生成的卡片数 needGenerateCardNum
    1. needGenerateCardNum = MIN( (dailyTargetNum - hasGenerateCardNum*5), leftWordNum)/5
    2. 不是VIP needGenerateCardNum = MIN(needGenerateCardNum, 20)
    3. 获取是否为VIP,如果是,needGenerateCardNum = MIN(needGenerateCardNum, 80)
  7. 生成卡片
1. currentProgressIndex = currentProgressIndex + needGenerateCardNum*5
2. 获取单词List 
nextWordList = wordBookService.getNextWord(needGenerateCardNum*5)
3. 生成卡片
List<WordCard>cardList  //数量为needGenerateCardNum
4. 保存至数据库中CardMapper.saveNewCardList(cardList),得到cardID
5. 将单词list分组切割成needGenerateCardNum份,并放入WordCard中
6. 保存至数据库中,CardMapper.saveCardWordList(cardList)
  1. 返回新生成的卡片
  2. 联合已经生成的卡片,一同返回给前端