修改整理了一下逻辑，貌似可以试跑了

no test