业务描述
在获取今日卡片时,如果打开了自动生成,则自动生成今天所需的卡片
会员最多生成
非会员最多生成100张
逻辑
- 获取设置的目标数 dailyTargetNum
- 获取当前词书总单词数 totalWordNum
- 获取今日已生成的卡片,及数量 hasGenerateCardNum
- 获取当前的词书进度 currentProgressIndex = currentProgress.getCurIndex()
- 获取当前词书剩余单词数 leftWordNum
leftWordNum = totalWordNum - currentProgress.getCurIndex()
- 计算需要生成的卡片数 needGenerateCardNum
needGenerateCardNum = MIN( (dailyTargetNum - hasGenerateCardNum*5), leftWordNum)/5
- 不是VIP
needGenerateCardNum = MIN(needGenerateCardNum, 20)
- 获取是否为VIP,如果是,
needGenerateCardNum = MIN(needGenerateCardNum, 80)
- 生成卡片
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)
- 返回新生成的卡片
- 联合已经生成的卡片,一同返回给前端