功能实现，待细节优化及代码梳理