准备把这段逻辑抽出来，模型有点大了