add complain model, controller. use promise Q to handle parallel query