Add shopping cart model and fix some bug