基础功能大体上都实现