部分代码转移到helper里面