buddyModel = new UserBuddy(); $this->userModel = new User(); } public function index(){ $data = decode($this->request->post()); $user = $data['u']; $res = $this->buddyModel->findUserBuddy($user); return json(['l'=>$res]); } public function blist(){ $data = decode($this->request->post()); $user = $data['u']; $res = $this->buddyModel->findUserBuddy($user, UserBuddy::Apply); return json(['l'=>$res]); } public function recommend(){ $data = decode($this->request->post()); $user = $data['u']; $res = $this->userModel->recommendUser($user); return json(['l'=>$res]); } public function apply(){ $data = decode($this->request->post()); $buddy = $data['b']; $user = $data['u']; $this->checkBuddyNum($user, $buddy); $info = $this->buddyModel->getBuddy($user, $buddy); if(empty($info)){ $this->buddyModel->addAndSave(['user_id'=>$user, 'buddy_id'=>$buddy, 'status'=>UserBuddy::Wait]); } $res = $this->buddyModel->getBuddy($buddy, $user); if(empty($res)){ $this->buddyModel->addAndSave(['user_id'=>$buddy, 'buddy_id'=>$user]); } return json(['error'=>0]); } public function find(){ } public function agree(){ $data = decode($this->request->post()); $buddy = $data['b']; $user = $data['u']; $this->checkBuddyNum($user, $buddy); $info = $this->buddyModel->getBuddy($user, $buddy); if($info){ $this->buddyModel->update(['status'=>UserBuddy::Friend, 'updatetime'=>getCurrentTime()], ['id'=>$info['id']]); }else{ $this->buddyModel->save(['user_id'=>$user, 'buddy_id'=>$buddy, 'status'=>UserBuddy::Friend, 'inputtime'=>getCurrentTime(), 'updatetime'=>getCurrentTime()]); } $res = $this->buddyModel->getBuddy($buddy, $user); if($res){ $this->buddyModel->update(['status'=>UserBuddy::Friend, 'updatetime'=>getCurrentTime()], ['id'=>$res['id']]); }else{ $this->buddyModel->save(['user_id'=>$buddy, 'buddy_id'=>$user, 'status'=>UserBuddy::Friend, 'inputtime'=>getCurrentTime(), 'updatetime'=>getCurrentTime()]); } return json(['error'=>0]); } public function remove(){ $data = decode($this->request->post()); $buddy = $data['b']; $user = $data['u']; $info = $this->buddyModel->getBuddy($user, $buddy); if($info){ $this->buddyModel->remove($info->toArray()); } $res = $this->buddyModel->getBuddy($buddy, $user); if($res){ $this->buddyModel->remove($res->toArray()); } return json(['error'=>0]); } public function like(){ $data = decode($this->request->post()); $user = $data['u']; $nick = $data['n']; $res = $this->userModel->likeUserByNick($user, $nick); return json(['l'=>$res]); } private function checkBuddyNum($user, $buddy){ if($user == $buddy) exit(json_encode(['error'=>1020])); $info = $this->userModel->getUserById($user); if(empty($info)) exit(json_encode(['error'=>1023])); $count = $this->buddyModel->getBuddyCount($user); // 个人超出好友指定数量则返回错误 if($count >= $info['buddy']) exit(json_encode(['error'=>1011])); $buddy_info = $this->userModel->getUserById($buddy); if(empty($buddy_info)) exit(json_encode(['error'=>1023])); $buddy_count = $this->buddyModel->getBuddyCount($buddy); // 好友数量超出指定数量则返回错误 if($buddy_count >= $buddy_info['buddy']) exit(json_encode(['error'=>1012])); } }